VOIP QOS

Bartosz Wegrzyn blwegrzyn na leoxn.ws
Úterý Červen 22 21:27:44 CEST 2004


I wrote this script for my QOS traffic.
I only care about my VOIP service.
Rest will fight for the bandwidth.

my script:

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#this is my max upload speed
CEIL=200 

if [ "$1" = "stop" ]; then

TCOP="del"
IPTOP="-D"

else 

TCOP="add"
IPTOP="-A"

fi


#I give 90 for VOIP streams and 110kbits for rest
tc qdisc ${TCOP} dev eth0 root handle 1: htb default 20
tc class ${TCOP} dev eth0 parent 1:   classid 1:1 htb rate 200kbit ceil ${CEIL}kbit

tc class ${TCOP} dev eth0 parent 1:1  classid 1:10 htb rate 90kbit ceil ${CEIL}kbit prio 1
tc class ${TCOP} dev eth0 parent 1:1  classid 1:20 htb rate 110kbit ceil ${CEIL}kbit prio 2

tc qdisc ${TCOP} dev eth0 parent 1:10  handle 10:  pfifo

#this works instead of next line
#tc filter ${TCOP} dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 4569 0xffff flowid 1:10
tc filter ${TCOP} dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter ${TCOP} dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:20

# 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 lowest priority
iptables -t mangle ${IPTOP} PREROUTING -j MARK --set-mark 0x4
iptables -t mangle ${IPTOP} OUTPUT -j MARK --set-mark 0x4 

My problem is that the packets which are supposed to be marked as 0x1
do not go to the 1:10 class. They go to 1:20 which is the default.
Is it possibble that the packets are not marked.
Also, when I change this line
tc filter ${TCOP} dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
for this
tc filter ${TCOP} dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 4569 0xffff flowid 1:10

everything works fine.

Please help.
Looks like I dont do the packet marking correctly.

Thanks

Bart,





Další informace o konferenci Linux