Как правильно замедлить трафик на Raspberry?
Привет.
Подскажите как правильно замедлять трафик на Raspbian?
Использую только проводное соединение.
Делаю так (Raspbian on Raspberry Pi):
0. Проверил скорость записи-чтения до эксперимента:
1. Установил iptables, iproute2 (с пакетом tc)
2. Установил tcconfig
curl -sSL https://raw.githubusercontent.com/thombashi/tcconfig/master/scripts/installer.sh | sudo bash |
curl -sSL https://raw.githubusercontent.com/thombashi/tcconfig/master/scripts/installer.sh | sudo bash
3. Установил ограничение трафика на eth0 командой из примера:
sudo tcset eth0 --rate 100Kbps
4. Проверил эту установку командой из примера:
{ "eth0": { "outgoing": { "protocol=ip": { "filter_id": "800::800", "rate": "100Kbps" } }, "incoming": {} } } |
{ "eth0": { "outgoing": { "protocol=ip": { "filter_id": "800::800", "rate": "100Kbps" } }, "incoming": {} } }
5. Проверяю скорость записи-чтения через FTP:
Ничего не изменилось...
Вопрос к знатокам: что я делаю не так?
Может есть другие рабочие средства для замедления трафика?
Может для Raspberry Pi нужно иное решение?
Спасибо за ответы.
Дополнительно:
Этот трафик для RPi входящий или исходящий?
Входящий трафик нельзя ограничить. Он уже прилетел. Единственное что можно - дропать пакеты, чтобы другая сторона тормозила отправку, пока в пределах TCP-окна пакеты не будут подтверждены. И всё равно это не особо эффективно работает. Искать по словам типа tc ingress policy.
Судя по тому, что слово ingress в доке не нашлось, tcset, скорее всего, умеет шейпить только исходящий.
Ps поробуйте указать dst своего хоста получателя или 0.0.0.0/0 если для всех
Ответы:
можно перевести сетевую карту в более медленное соединение, скорость будет на аппаратном уровне занижена
ethtool enp3s0 -s autoneg on speed 1000 duplex full |
ethtool enp3s0 -s autoneg on speed 1000 duplex full
вместо enp3s0 поставь нужное сетевое устройство (список ip ad), вместо 1000 подставь 10 станет 10мбит
список доступных режимов:
ethtool enp3s0
- Это решение не работает. Скорость сети остается 100 Мбит.
Скорость чтения-записи - около 8,5Мбайт в сек. - Vova316, странно, у меня работает, возможно косяк в железе? так как эта команда буквально говорит на какой скорости и как работать с сетью.
что пишет после этой команды в терминал?
что пишет эта команда ethtool enp3s0 а точнее в строке Speed:?
последние строчки в dmesg?p.s. еще вариант, можно понизить скорость линии на принимающей стороне, в win например это делается в свойствах сетевого адаптера
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос




Для замедления трафика на Raspberry Pi можно воспользоваться утилитой tc (Traffic Control), которая позволяет управлять трафиком на сетевом интерфейсе. Вот как это можно сделать:
1. Установите пакет iproute2, в котором содержится утилита tc:
sudo apt-get update sudo apt-get install iproute2
2. Создайте скрипт с помощью любого текстового редактора (например, nano) и добавьте следующий код, чтобы замедлить весь трафик на интерфейсе eth0 до 1mbit/s входящего и исходящего трафика:
#!/bin/bash tc qdisc add dev eth0 root handle 1: htb default 12 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbit tc class add dev eth0 parent 1:1 classid 1:12 htb rate 1000kbit tc qdisc add dev eth0 parent 1:12 netem delay 50ms
3. Сохраните скрипт (например, с названием slow_traffic.sh) и сделайте его исполняемым:
chmod +x slow_traffic.shchmod +x slow_traffic.sh
4. Запустите скрипт:
sudo ./slow_traffic.sh
Теперь весь трафик на интерфейсе eth0 будет замедлен до 1mbit/s с задержкой в 50ms. Вы можете настроить скрипт по своему усмотрению, изменяя параметры tc (например, скорость и задержку) или применяя к другим сетевым интерфейсам.
Помните, что эти настройки будут действовать до перезагрузки Raspberry Pi. Если вам нужно, чтобы они сохранялись после перезагрузки, вы можете добавить запуск скрипта в автозагрузку или использовать другие методы настройки трафика.