Назад | Перейти на главную страницу

Ограничение пропускной способности канала с помощью tc

Я начинающий сетевой инженер.

Я пытаюсь понять команду Linux tc.

Я сделал простую сеть, состоящую из двух хостов H1, H2 и коммутатора S1, соединяющего их с помощью Mininet.

Затем я заставил H1 отправлять UDP-пакеты в H2 через коммутатор S1, используя iPerf2.

#H1
iperf -s -p 1212 -f m -i 1

#H2
iperf -c 10.0.0.1 -p 1212 -t 10000 -f m -b 70M -u

Чтобы ограничить пропускную способность канала, я сделал простой сценарий bash ниже.

#!/bin/bash

#s1-eth1 is outgoing port from H1 to H2
#its orginal bandwidth 100Mbit/s

sudo tc qdisc del dev s1-eth1 root 
sudo tc qdisc add dev s1-eth1 root handle 1:0 htb default 12
sudo tc qdisc add dev s1-eth1 parent 1:0 classid 1:1 htb rate 50Mbit
sudo tc filter add deb s1-eth1 protocol ip parent 1:0 prio 1 u32 match ip dport 1212 0xffff flowid 1:1


Я ожидал, что скорость приема S1 станет 50 Мбит / с, но этого не произошло.

Показал около 40Мбит / с.

Когда я изменил настройки этого эксперимента, он показал меньшее значение, чем я установил с помощью tc команда.

Почему это произошло? Я просмотрел код ядра Linux tc но я не могу этого понять.

Не могли бы вы мне немного намекнуть?

Подсказки и устранение неисправностей.

  1. Вы должны понимать разницу между постановкой в ​​очередь, формированием и контролем.
  2. Вы должны понимать разницу между направлениями входа и выхода.
  3. Проверить классификатор (tc -p filter show dev <iface>)
  4. Проверить статистику классификатора (tc -s -s -d f ls dev <iface>) - 1-й шаг устранения неполадок.
  5. Проверить статистику дисциплины очереди (tc -s -s -d qdisc list dev <iface> и tc -s -s -d c ls dev <iface>) - 2-й шаг устранения неполадок.
  6. Используйте оценщики для отслеживания фактической скорости с точки зрения qdisc. Вы должны указать это во вложении qdisc. Некоторые планировщики могут создавать оценки по умолчанию, когда модуль ядра загружен с соответствующей опцией (см. modinfo sch_htb).
  7. Вы указали класс по умолчанию 1:12, но не определяйте это.
  8. Прочтите сагу о HTB и примерах настройки.
  9. QoS - непростая вещь.
  10. Вы также можете захватывать трафик и анализировать его с помощью wirehark. Изучите изменение размера окна TCP-соединений, чтобы отследить работу формирователя. Но для UDP этот способ не очень подходит.