Hi Patrick

I have implement voice and data on a linux machine with the assistance of
tc. I have found limited success with tc to this end.

I am using an ADSL link of 1.5Mb/256Kb. I previously had a 64Kb ISDN link
which I could not really get top quality out of with data and voice. (So I
just throw lots of bandwidth at the problem!!)

I experimented with cbq and sfq but did not go with this solution as they
try to be fair about the data it is handling. Voice does not want fairness
as voice is a beast that demands attention and it wants it now!! Instead I
have implemented PRIO with tbf on the upstream and have tinkered with tbf on
an ingress filter on the downstream. I have no direct experience with imq or
htb but I have a feeling they may not assist with the immediacy voice
requires. If someone can help us with that point it would be most
appreciated.

The biggest difference I found was changing the mtu to 300.

I have assigned voice to TOS 0x10 and used iptables to mark the traffic
appropriately.

heres is my tc script:
tc qdisc del dev eth0 root > /dev/null 2>&1
tc qdisc del dev eth0 ingress > /dev/null 2>&1

tc qdisc add dev eth0 root handle 1: prio bands 4 priomap 1 3 2 3 3 3 0 3 3
3 3 3 3 3 3 3

tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 208kbit buffer 4kb
limit 12kb mpu 50
tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 208kbit buffer 4kb
limit 12kb mpu 50
tc qdisc add dev eth0 parent 1:4 handle 40: tbf rate 208kbit buffer 4kb
limit 12kb mpu 50

tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 2 u32 match ip protocol
17 0xff match ip dport 1101 0xffff police rate 1536kbit burst 10k drop
flowid :1
tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 match ip src
0.0.0.0/0 police rate 1312kbit burst 10k drop flowid :1

I have also played with the priomap, this modification is not necessary.

All voice (tos 0x10) goes through the highest priority which I am not rate
limiting. The rest of the bands I am rate limiting to 208Kb.

On the ingress side I have identified my voice packets and let them have
full bandwidth, the rest of the traffic I am rate limiting to 1312Kb. I
don't know whether this helps the voice. If someone can comment on this it
would be helpful.

With this implementation I can have good quality voice conversations whilst
downloading (or loading)

My assumptions I have made about tc and voice and data are by no means
authoritive, so any input on this subject from the group are welcome.

Regards
Rod Blennerhassett


>Hi,
>
>Below is the explanation of priority queueing
>http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/qos.htm#xtocid22
>
>I am developing a linux router.
>There is both data and voice traffic passed thru it.
>
>When I use priority queueing on Cisco router,
>the voice quality is good, evening downloading a large file.
>
>But I use the following tc config, the voice quality is not smooth
>when downloading a large file:
>
>tc qdisc add dev ppp0 root handle 10: cbq bandwidth 112Kbit avpkt 1000
>tc class add dev ppp0 parent 10:0 classid 10:100 cbq bandwidth 112Kbit rate
>57Kb
>it allot 1514 weight 5Kbit prio 2 maxburst 20 avpkt 1000 isolated
>tc class add dev ppp0 parent 10:0 classid 10:200 cbq bandwidth 112Kbit rate
>55Kb
>it allot 1514 weight 5Kbit prio 8 maxburst 20 avpkt 1000 bounded
>tc qdisc add dev ppp0 parent 10:100 sfq quantum 1514b perturb 15
>tc qdisc add dev ppp0 parent 10:200 sfq quantum 1514b perturb 15
>tc filter add dev ppp0 parent 10:0 protocol ip prio 2 u32 match ip tos 0x8
>0xff
>flowid 10:100
>tc filter add dev ppp0 parent 10:0 protocol ip prio 8 u32 match ip tos 0x00
>0xff
> flowid 10:200

>voice packet is tagged with 0x8 in TOS field.
>Voice traffic only uses 34K bandwidth. So the bandwidth allocated
>to voice is enough.
>Is there any better tc config?



_______________________________________________
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

Reply via email to