Я использую эти команды для настройки регулирования полосы пропускания:
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 который
позволяет прикреплять очереди к входящим пакетам.