Hi, All, I did some work on QoS with CBQ. Basically, I wanted to separate VoIP traffic from other traffics and give it guarantied bandwidth. I used the following scripts to do the work, #!/bin/sh OPTION="allot 1514 maxburst 20 avpkt 1000" tc qdisc del dev eth0 root tc qdisc add dev eth0 root handle 10: cbq bandwidth 10mbit avpkt 1000 tc class add dev eth0 parent 10: classid 10:2 cbq bandwidth 10mbit rate 34kbit $OPTION prio 3 bounded tc class add dev eth0 parent 10:2 classid 10:10 cbq bandwidth 10mbit rate 30kbit $OPTION prio 3 tc class add dev eth0 parent 10:2 classid 10:20 cbq bandwidth 10mbit rate 4kbit $OPTION prio3 tc filter add dev eth0 parent 10: protocol ip prio 3 u32 match ip tos 0x20 0xf0 flowid 10:2 tc filter add dev eth0 parent 10: protocol ip prio 3 u32 match ip dst 0/0 flowid 10:2 tc filter add dev eth0 parent 10:2 protocol ip prio 3 u32 match ip tos 0x20 0xf0 flowid 10:10 tc filter add dev eth0 parent 10:2 protocol ip prio 3 u32 match ip dst 0/0 flowid 10:20 It seemed working -- when there was no VoIP traffic, a ftp link was using all 34kbit rate. When there was VoIP traffic, the ftp rate dropped to 17kbit (which was correct because the voice traffic was using 17kbit). Unfortunately, the voice quality was not good. Even if without ftp traffic, there were packets loss for voice traffic (if you count from 1 to 20 with one handset, you miss certain figures on the other end, they are 4, 5, 8, 9, 12, 13 etc). Any one had the same problem before? Any one can explain it? Any parameter I should adjust to better suit this application? Another thing I noticed was, when I changed the parameters for "allot" (ex 300) and "avpkt" (ex 500) in order to seek better setting for this application, the CBQ stopped doing anything, so the rate was the NIC rate instead of 34kbit. I could change "maxburst" but it didn''t improve the voice quality. Could any one tell me how to use these parameters? Thanks, James
On Wednesday 18 December 2002 21:51, James Ma wrote:> Hi, All, > > I did some work on QoS with CBQ. Basically, I wanted to separate VoIP > traffic from other traffics and give it guarantied bandwidth. I used the > following scripts to do the work, > > #!/bin/sh > > > OPTION="allot 1514 maxburst 20 avpkt 1000" > > > tc qdisc del dev eth0 root > > > tc qdisc add dev eth0 root handle 10: cbq bandwidth 10mbit avpkt 1000 > > tc class add dev eth0 parent 10: classid 10:2 cbq bandwidth 10mbit rate > 34kbit $OPTION prio 3 bounded > > tc class add dev eth0 parent 10:2 classid 10:10 cbq bandwidth 10mbit rate > 30kbit $OPTION prio 3 > > tc class add dev eth0 parent 10:2 classid 10:20 cbq bandwidth 10mbit rate > 4kbit $OPTION prio3 > > tc filter add dev eth0 parent 10: protocol ip prio 3 u32 match ip tos 0x20 > 0xf0 flowid 10:2 > > tc filter add dev eth0 parent 10: protocol ip prio 3 u32 match ip dst 0/0 > flowid 10:2 > > tc filter add dev eth0 parent 10:2 protocol ip prio 3 u32 match ip tos 0x20 > 0xf0 flowid 10:10 > > tc filter add dev eth0 parent 10:2 protocol ip prio 3 u32 match ip dst 0/0 > flowid 10:20 > > > > > It seemed working -- when there was no VoIP traffic, a ftp link was using > all 34kbit rate. When there was VoIP traffic, the ftp rate dropped to > 17kbit (which was correct because the voice traffic was using 17kbit). > Unfortunately, the voice quality was not good. Even if without ftp traffic, > there were packets loss for voice traffic (if you count from 1 to 20 with > one handset, you miss certain figures on the other end, they are 4, 5, 8, > 9, 12, 13 etc). Any one had the same problem before? Any one can explain > it? Any parameter I should adjust to better suit this application?What if you add a small prio qdisc to class 10:10 and 10:20 ?? tc qdisc add dev eth0 parent 10:10 pfifo limit 10 This is a short pfifo that can hold 10 packets. Stef -- stef.coene@docum.org "Using Linux as bandwidth manager" http://www.docum.org/ #lartc @ irc.oftc.net _______________________________________________ LARTC mailing list / LARTC@mailman.ds9a.nl http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/