[Asterisk-Users] Can you comment on this Qos script? How does
one shape RTP?
cmisip
cmisip at mchsi.com
Sun Apr 10 07:27:16 MST 2005
I initially used that script without modification. However, I noticed
that all traffic was going through class 1:102 regardless. Seems as if
all the children of 1:20 are set with a prio of 0 by default even if
1:20 is specifically set to prio of 2. I used
/sbin/tc -s -d class show dev eth0
to verify where the packets are going through. So I decided to set 1:10
manually to prio 0 and 1:100 and 1:101 to prio 1. I set 1:102 to prio
4(since all the rest of the traffic should be low priority).
If I run asterisk alone and make a voip iax2 call, I could see 1:1
packets incrementing as well as 1:10 which I think should be expected.
If I kill asterisk (asterisk seems to send small packets here and there
when there are no active calls) , and start a download, I see 1:1
packets incrementing, 1:20 packets incrementing and then 1:102 packets
incrementing. So I think the packets are finding their right classes.
However, there is no traffic on 1:100 and 1:101.
Like I said, I am not sure what the expected behaviour should be but I
thought all asterisk communicatios should go through 1:10.
Have you tested to see if the packets in your server are going where
they should be with the original script?
Thanks
On Sun, 2005-04-10 at 07:29, Doug Lytle wrote:
> cmisip wrote:
>
> >far asterisk seems to use 1:10 while all other traffic uses 1:102. How
> >does one packet shape RTP?
> >
> >Thanks for any help.
> >
> >
> >
> >
> ># +---------+
> ># | root 1: |
> ># +---------+
> ># |
> ># +----------------------------+
> ># | class 1:1 |
> ># +----------------------------+
> ># | | |
> ># +----+ +----+ +----+
> ># |1:10| |1:20| |1:30|
> ># +----+ +----+ +----+
> ># |
> ># +--------+--------+
> ># | | |
> ># +-----+ +-----+ +-----+
> ># |1:100| |1:101| |1:102|
> ># +-----+ +-----+ +-----+
> >
> >
> >
>
> I'm using the same script, but I found it searching Google. Yours seems
> to be incomplete. My script follows:
>
> #!/bin/sh
>
> TCOP="add"
> IPTOP="-A"
>
> if [ "$1" == "stop" ]; then
> echo "Stopping..."
> TCOP="del"
> IPTOP="-D"
> fi
>
> # +---------+
> # | root 1: |
> # +---------+
> # |
> # +----------------------------+
> # | class 1:1 |
> # +----------------------------+
> # | | |
> # +----+ +----+ +----+
> # |1:10| |1:20| |1:30|
> # +----+ +----+ +----+
> # |
> # +--------+--------+
> # | | |
> # +-----+ +-----+ +-----+
> # |1:100| |1:101| |1:102|
> # +-----+ +-----+ +-----+
>
> # 1:10 is the class for VOIP traffic, pfifo qdisc
> # 1:20 is for bulk traffic (htb, leaves use sfq)
> # 1:30 is the class that interactive and TCP SYN/ACK traffic (sfq qdisc)
>
> # 1:20 is further split up into different kinds of bulk traffic: web,
> mail and
> # everything else. 1:100-102 fight amongst themselves for their slice
> of excess
> # bandwidth, and in turn 1:10,20 and 30 then fight for any excess above
> their
> # minimum rates.
>
> # which interface to throw all this on (DSL)
> IF=eth2
>
> # ceil is 75% of max rate (768kbps)
> # rate is 65% of max rate
> # we don't let it go to 100% because we don't want the DSL modem
> (Pairgain MegaBit Modem 300S)
> # to have a ton of packets in their buffers. *we* want to do the buffering.
> RATE=576
> CEIL=640
> #RATE=450
> #CEIL=500
>
> tc qdisc ${TCOP} dev ${IF} root handle 1: htb default 102
> tc class ${TCOP} dev ${IF} parent 1: classid 1:1 htb rate ${RATE}kbit
> ceil ${CEIL}kbit
>
> tc class ${TCOP} dev ${IF} parent 1:1 classid 1:10 htb rate 64kbit ceil
> ${RATE}kbit prio 1
> tc class ${TCOP} dev ${IF} parent 1:1 classid 1:20 htb rate 64kbit ceil
> ${RATE}kbit prio 2
>
> tc class ${TCOP} dev ${IF} parent 1:20 classid 1:100 htb rate ${RATE}kbit
> tc class ${TCOP} dev ${IF} parent 1:20 classid 1:101 htb rate ${RATE}kbit
> tc class ${TCOP} dev ${IF} parent 1:20 classid 1:102 htb rate ${RATE}kbit
>
> tc qdisc ${TCOP} dev ${IF} parent 1:10 handle 10: pfifo
> tc qdisc ${TCOP} dev ${IF} parent 1:100 handle 100: sfq perturb 10
> tc qdisc ${TCOP} dev ${IF} parent 1:101 handle 101: sfq perturb 10
> tc qdisc ${TCOP} dev ${IF} parent 1:102 handle 102: sfq perturb 10
>
> tc filter ${TCOP} dev ${IF} parent 1:0 protocol ip prio 1 handle 1 fw
> classid 1:10
> tc filter ${TCOP} dev ${IF} parent 1:0 protocol ip prio 4 handle 4 fw
> classid 1:100
>
> # IAX2 prio 0.
> iptables -t mangle ${IPTOP} PREROUTING -p udp -m udp --dport 4569 -j
> MARK --set-mark 0x1
> iptables -t mangle ${IPTOP} PREROUTING -p udp -m udp --dport 4569 -j RETURN
>
> # everything else goes into lowest priority (best effort).
> iptables -t mangle ${IPTOP} PREROUTING -j MARK --set-mark 0x4
> iptables -t mangle ${IPTOP} OUTPUT -j MARK --set-mark 0x4
>
> Doug
>
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
More information about the asterisk-users
mailing list