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

троттлинг трафика с tc, но пропускная способность неправильная

Я использую эти команды для настройки регулирования полосы пропускания:

tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 100Mbit
tc class add dev eth1 parent 1: classid 1:1 cbq rate 1Mbit allot 1500 prio 3 bounded isolated
tc filter add dev eth1 parent 1: protocol ip u32 match ip protocol 6 0xff flowid 1:1

Это

Я понимаю, что эти команды должны ограничивать мой сетевой трафик до 1 МБит / 125 КБайт в секунду, но это не так.

Фактическая скорость передачи данных составляет примерно 5 МБ в секунду. Я измерил это, передав большой файл по NFS. Если я изменю параметр «скорость 1 Мбит» на «скорость 512 Кбит», скорость передачи составит всего 2,5 МБ в секунду, поэтому команда tc фактически ограничивает трафик, но не до того, что указано в параметре.

Этот сервер работает под управлением Debian Linux 6.0.7 как виртуальная машина Citrix XenServer.

Что я делаю не так? Пожалуйста, порекомендуйте.

Ваш tc правила применяются только к исходящему трафику.

Проверьте этот страница:

Теперь имейте в виду, что мы обычно будем формировать только исходящий трафик, потому что это то, что мы контролируем, в отличие от входящего трафика.

Если вы маршрутизируете два интерфейса, вы можете установить одинаковые правила для каждого устройства и маршрутизировать / мост между ними. Таким образом, то, что передается входящей цепочке одного устройства, передается исходящей цепочке другого, эффективно ограничивая полосу пропускания в обоих направлениях.

другая альтернатива - использование Псевдоустройство IFB который

позволяет прикреплять очереди к входящим пакетам.