IFB (аналог IMQ ) - основные команды для управления трафиком

Считается что 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 -------------------------------------------------------------
закачивайте большой файла на хх.хх.хх.хх оцените скорость и т.д. 

Источник статьи