Я пытаюсь ограничить пропускную способность между простым сервером iperf и клиентом, используя третью пассивную машину, выступающую в качестве моста. При отсутствии помех iperf возвращает полосу пропускания ~ 90 Мбит / сек. Моя цель - создать корневой qdisc, который отправляет весь неклассифицированный трафик (все) в дочерний класс HTB, где установлена моя полоса пропускания, который затем направляется на листовой qdisc, где будут установлены дополнительные параметры tc, как только я заработаю. Моя реализация краткая:
sudo tc qdisc add dev $interface root handle 1: htb default 10
sudo tc class add dev $interface parent 1:0 classid 1:10 htb rate $bandwidth burst $burst
sudo tc qdisc add dev $interface parent 1:10 handle 10:0 netem #other stuff goes here
Когда этот сценарий bash реализован на мосту с $interface = eth1
, $bandwidth = 500kbps
, $burst = 15k
, Я вижу уменьшение пропускной способности iperf, но не почти до требуемого значения (обычно ~ 5 Мбит / с).
В моем скрипте есть ошибка? Я неправильно использую пакетную переменную? Пожалуйста помоги.
ОБНОВЛЕНИЕ: после дальнейшего исследования я обнаружил, что этот контроль трафика работает нормально при применении к карте Ethernet, которая взаимодействует с СЕРВЕРОМ, но проблема возникает, когда те же команды применяются к стороне КЛИЕНТА. Это верно, когда вся установка полностью изменена.
Контроль пропускной способности HTB в tc только формы исходящий трафик, поэтому для ограничения пропускной способности между сервером и клиентом TCP-соединение, формирование должно применяться к обоим интерфейсам моста. (Спасибо 0x534B41)