Diffserv using HTB or PRIO qdiscs as basis for EF phb

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Im experimenting with using a Linux machine with 3 interfaces to operate
as a core router. All links and network interfaces are 100mbit. Below is
a ascii diagram of the network. 


(network A) edge router ------>core router---->edge router (network C)
			            ^
			            |
			            |
		               edge router
                               (network B) 


I have tried two setups to support the Expedited forwarding PHB on the
core router using the HTB qdisc and PRIO qdisc. The core router is a P4
2.8ghz, 512mb RAM running fedora core 3 with the 2.6 kernel. The Voip
traffic is marked with the EF codepoint. Im using a local stratum 1 ntp
server to synchronise time. The config I used for each setup is included
at the bottom.

When there is just voice traffic passing through (350 kbit) the delay of
the voice traffic in travelling between network A and network C is
0.25ms (milliseconds) for both setups (using htb and PRIO).

When TCP Traffic + VoIP traffic( 350 Kbit ) are sent from network A to
network C. TCP traffic from network B is sent to network C. A bottleneck
is created at the 3rd interface of the core network. Between the two
network interfaces from network A and network B TCP traffic is coming in
at a rate faster than 100 Mbit. As a result the delay is 30ms for both
setups (using htb and PRIO) There is 0% loss of EF traffic.

When i used a plain first in first out queue and saturated the link with
tcp traffic the delay of the voice traffic was 160ms with 5% loss of
voip traffic.

Why is this delay so high when the link is saturated and Im using either
PRIO or HTB to apply the EF PHB to VoIP traffic ???? Is it operating
system ? Has anyone else had similar experiences ?



Jonathan





----------------------------------------------------------------------------
The following are the configurations I have used for the core router

Config 1 using htb

tc qdisc add dev $1 handle 1:0 root dsmark indices 64 set_tc_index
tc filter add dev $1 parent 1:0 protocol ip prio 1 tcindex mask 0xfc
shift 2

Main htb qdisc & class
tc qdisc add dev $1 parent 1:0 handle 2:0 htb
tc class add dev $1 parent 2:0 classid 2:1 htb rate 100Mbit ceil 100Mbit

EF Class (2:10)
tc class add dev $1 parent 2:1 classid 2:10 htb rate 1500Kbit ceil
100Mbit
tc qdisc add dev $1 parent 2:10 pfifo limit 5
tc filter add dev $1 parent 2:0 protocol ip prio 1 handle 0x2e tcindex
classid 2:10 pass_on

BE Class (2:20)
tc class add dev $1 parent 2:1 classid 2:20 htb rate 5Mbit ceil 100Mbit
tc qdisc add dev $1 parent 2:20 red limit 60KB min 15KB max 45KB burst
20 avpkt 1000 bandwidth 100Mbit probability 0.4
tc filter add dev $1 parent 2:0 protocol ip prio 2 handle 0 tcindex mask
0 classid 2:20 pass_on



Config 2 using PRIO

Main dsmark & classifier
tc qdisc add dev $1 handle 1:0 root dsmark indices 64 set_tc_index
tc filter add dev $1 parent 1:0 protocol ip prio 1 tcindex mask 0xfc
shift 2

Main prio queue
tc qdisc add dev $1 parent 1:0 handle 2:0 prio
tc qdisc add dev $1 parent 2:1 tbf rate 1.5Mbit burst 1.5kB limit 1.6kB
tc filter add dev $1 parent 2:0 protocol ip prio 1 handle 0x2e tcindex
classid 2:1 pass_on

BE class(2:2)
tc qdisc add dev $1 parent 2:2 red limit 60KB min 15KB max 45KB burst 20
avpkt 1000 bandwidth 100Mbit probability 0.4
tc filter add dev $1 parent 2:0 protocol ip prio 2 handle 0 tcindex mask
0 classid 2:2 pass_on





_______________________________________________
LARTC mailing list
LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux