>А как это будет выглядеть если понадобится не тупой шейпинг, а развитая
>иерархическия классов трафика ? В которой например один класс с выделенной
>полосой пропускания и несколько классов, разделяющих общую полосу. Сложнее будет выглядеть, но по прежнему легче, чем в tc. В dummynet есть FIFO, WF2Q+, RR и QFQ: http://www.freebsd.org/cgi/man.cgi?query=ipfw&sektion=8&apro..., с их помощью как раз можно сделать несколько классов. Более того, в вышеприведённом мною примере шейпы как раз сделаны именно с возможностью дальнейшего добавления классов с разными весами. Пример одного пайпа в шейпере:
---
# ipfw pipe 10275 show
10275: 7.884 Mbit/s 1 ms 50 sl. 0 queues (1024 buckets) droptail
q10275: weight 1 pipe 10275 50 sl. 2 queues (1024 buckets) droptail
mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
178 ip 10.54.51.66/0 0.0.0.0/0 1052254 144341461 0 0 0
190 ip 10.54.51.68/0 0.0.0.0/0 552531 82171179 0 0 0
---
Здесь пропускная способность пайпа 10275 используется полностью queue 10275 с весом 1, внутри которого канал делится между всеми ip-адресами, которые передаются в пайп соотвествующими аргументами ipfw tablearg:
---
# ipfw table 5 list | grep 10275
10.54.51.64/29 10275
# ipfw list | grep tablearg
03000 queue tablearg ip from any to table(4) xmit vlan3050 // Incoming traffic shaping
03000 queue tablearg ip from table(5) to any xmit em0 // Outgoing traffic shaping
#
---
Захотелось добавить другой класс - не вопрос, добавляете новый queue в этот же пайп.