Я пытаюсь ограничить пропускную способность при входе беспроводного интерфейса с помощью виртуального интерфейса IFB. Я следовал инструкциям Вот
Краткое изложение шагов:
sudo modprobe ifb numifbs=1
ip link set dev ifb0 up
sudo tc qdisc add dev wlp3s0 handle ffff: ingress
sudo tc filter add dev wlp3s0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
sudo tc qdisc add dev ifb0 root handle 1: htb default 10
sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 1mbit
Я протестировал настройку с помощью iperf, однако я могу получать данные на физическом интерфейсе со скоростью 4 Мбит / с (что превышает установленный мной предел в 1 Мбит / с).
Есть идеи, что я здесь делаю не так? Как я могу это исправить?
Вы определяете HTB по умолчанию для использования classid 1:10, а затем определяете только 1: 1. 1: 1 никогда не используется, поэтому ограничений нет.
Либо определите значение по умолчанию 1, чтобы достичь classid 1: 1, либо добавьте фильтр, чтобы выборочно выбирать, когда достичь 1: 1.
Так что либо перепишите его как:
sudo tc qdisc add dev ifb0 root handle 1: htb default 1
sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 1mbit
или иначе сохранить default 10
, но добавьте специальный фильтр, указывающий на 1: 1, например, для фильтрации только (входящего) порта назначения 5001, который повлияет только на iperf -s
запустить в этой системе, например:
sudo tc filter add dev ifb0 parent 1: protocol ip u32 match ip dport 5001 0xffff flowid 1:1