Считается что IFB идеологически более правильная реализация псевдо-устройства, чем IMQ. IFB по умолчанию доступна в дистре Fedora Core 6. IMQ требует патчить ядро, по умолчанию не доступна. Насколько я понял идеологически IFB - это скорее для iproute2 IMQ - iptables Документация по IFB в исходниках iproute doc/actions/ или по адресу: http://linux-net.osdl.org/index.php?title=IFB Отличные картинки с местоположением IMQ: http://www.abclinuxu.cz/clanky/site/traffic-shaping-2-imq-a-uvod-do-shapingu # СБРОС ПРАВИЛ ----------------------------- tc qdisc del dev eth0 root tc qdisc del dev eth0 ingress tc qdisc del dev ifb0 root tc qdisc del dev ifb0 ingress modprobe ifb ip link set dev ifb0 up service iptables restart # ------------------------------------------ # IFB включение ---------------------------- modprobe ifb ip link set dev ifb0 up # ------------------------------------------ ## ПОЛЕЗНЫЕ КОМАНДЫ------------------------- tc -s filter show parent ffff: dev eth0 tc -s qdisc ifconfig ifb0 tc -s filter show dev ifb0 parent 1: tc -s qdisc show dev ifb0 ###################################################### # ПРИМЕР ограничения входящего трафика # маркировка IPTABLES недоступна ###################################################### ### IFB -------------------------------------------------------------- tc qdisc add dev ifb0 root handle 1: prio tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000 ## выделили закачку исходников ядра ## wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz tc filter add dev ifb0 parent 1: protocol ip prio 1 u32 match ip src 204.152.191.37/32 flowid 1:1 ## выделили закачку исходников fedora core 6 ## wget ftp://ftp.muug.mb.ca/pub/fedora/linux/core/6/i386/iso/FC-6-i386-DVD.iso tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip src 130.179.31.46/32 flowid 1:2 ### eth0 -------------------------------------------------------------- # перенаправлять входящие пакеты с eth0 в ifb0 tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol ip \ u32 match u32 0 0 action mirred egress redirect dev ifb0 ## TESTING ------------------------------------------------------------- оцените скорость и т.д. wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz ###################################################### # ПРИМЕР ограничения исходящего трафика # маркировка IPTABLES доступна но # filter работает на уровне iproute2 match ip dst ###################################################### Выполните СБРОС ПРАВИЛ и включите IFB (если выкл.) ### IFB -------------------------------------------------------------- tc qdisc add dev ifb0 root handle 1: prio tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000 # закачка большого файла с хх.хх.хх.хх tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip dst хх.хх.хх.хх/32 flowid 1:2 ### eth0 -------------------------------------------------------------- # перенаправлять выходящие пакеты с eth0 в ifb0 tc qdisc add dev eth0 root handle 2: prio tc filter add dev eth0 parent 2: protocol ip \ u32 match u32 0 0 action mirred egress redirect dev ifb0 ## TESTING ------------------------------------------------------------- закачивайте большой файла на хх.хх.хх.хх оцените скорость и т.д. tc -s filter show parent ffff: dev eth0 tc -s qdisc ifconfig ifb0 tc -s filter show dev ifb0 parent 1: tc -s qdisc show dev ifb0 ###################################################### # ПРИМЕР ограничения исходящего трафика # маркировка IPTABLES доступна # filter работает на уровне маркировке пакетов в IPTABLES ###################################################### Выполните СБРОС ПРАВИЛ и включите IFB (если выкл.) ### IFB -------------------------------------------------------------- tc qdisc add dev ifb0 root handle 1: prio tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000 tc filter add dev ifb0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:1 tc filter add dev ifb0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:2 ### eth0 -------------------------------------------------------------- # перенаправлять выходящие пакеты с eth0 в ifb0 tc qdisc add dev eth0 root handle 2: prio tc filter add dev eth0 parent 2: protocol ip \ u32 match u32 0 0 action mirred egress redirect dev ifb0 tc qdisc add dev eth0 root handle 2: prio tc filter add dev eth0 parent 2: protocol ip \ u32 match u32 0 0 action mirred egress redirect dev ifb0 # поставить в IPTABLES метку iptables -t mangle -A OUTPUT -p tcp -d 85.254.228.6/32 -j MARK --set-mark 10 ## TESTING ------------------------------------------------------------- закачивайте большой файла на хх.хх.хх.хх оцените скорость и т.д.
Источник http://asmodeus.com.ua/library/os/linux/shaper_tc.html