Strange behaviour of EF and BE traffic in DiffServ

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

 



 
Hello All,

We are generating TCP traffic using our own version of  ttcp ( the only modification we
have done is to use the setsockopt( ) with IP_TOS option to set the TOS byte
in the IP header before doing a connect( ) call from the sender's side )

We set the TOS byte to 0xB8--for EF traffic We used tcpdump to verify the value of the TOS
byte for EF traffic.We run two TTCP connections simultaneously
one for EF traffic and another for BE traffic.

We use a modified version of "EFCBQ" -  to provision the EF and BE queues .
I assign both EF and BE  4 Mbit of rate ( out of total b/w of 10Mbit )
and make both the queues "bounded and isolated" ...so they can neither
borrow nor lend b/w. The weight assigned to each is 1.  (Script attached
below)

When I send both EF and BE packets simultaneously from machine A to machine
B , I get EF  b/w about 467 Kbyte/sec
and BE bandwidth about 340Kbyte/sec---which is  what we expected
since the EF and BE queues are hard-limited to 4Mbit rate

Then we ran EF and BE traffic separately.(in isolation)
When we send only EF packets from A to B the b/w is reduced to
around 260 Kbyte/sec
When we send only BE packets the b/w we get is around 336 Kbyte/sec ?

We expected the throughput to remain the same ( since the queues are "bounded
and isolated")  or increase slightly when we run EF or BE traffic in isolation.
But the throughput actually decreases .--more markedly in case of EF traffic.
We are totally confused ?? ...and don't seem to be able to
explain it.CAN ANYBODY OUT THERE HELP.........

We ran the same test a  number of  times(about 20) today also......
and results were the same CONSISTENTLY.
 

ANY EXPLANATIONS.... ?   or CAN SOMEBODY POINT OUT WHAT WE
AER DOING WRONG.

Any input will be sincerely appreciated.
Thanks in advance.
Aditya

My Test-Setup:--

There are 2 linux machines with kernel version 2.2.14 having IP addresses
192.9.201.25 (sender m/c which is diffserv enabled) and
192.9.201.26(reciever m/c --ordinary Linux Kernel ).
These m/c s are both 500MHz m/c s and are connected to the Local LAN.
(not back to back)

======================================================

The script I used:--- (Modified version of EFCBQ )

#!/usr/bin/perl
#
$TC = "/usr/local/iproute2/tc/tc" ;
$DEV = "dev eth0";
print "$TC qdisc add $DEV handle 1:0 root dsmark indices 64
set_tc_index\n";
print "$TC filter add $DEV parent 1:0 protocol ip prio 1 tcindex ".
  "mask 0xfc shift 2\n";
print "$TC qdisc add $DEV parent 1:0 handle 2:0 cbq bandwidth ".
 "10Mbit cell 8 avpkt 1000 mpu 64\n";
#
# EF class
#
print "$TC class add $DEV parent 2:0 classid 2:1 cbq bandwidth ".
 "10Mbit rate 4Mbit avpkt 1000 prio 1 bounded isolated ".
 "allot 1514 weight 1 maxburst 4 \n";
# packet fifo for EF?
print "$TC qdisc add $DEV parent 2:1 pfifo limit 4\n";
print "$TC filter add $DEV parent 2:0 protocol ip prio 1 ".
   "handle 0x2e tcindex classid 2:1 pass_on\n";
#
# BE class
#
print "#BE class(2:2) \n";
print "$TC class add $DEV parent 2:0 classid 2:2 cbq bandwidth ".
 "10Mbit rate 4Mbit avpkt 1000 prio 7 bounded isolated allot 1514 weight 1 ".
 "maxburst 4  split 2:0 defmap 0xffff \n";
print "$TC qdisc add $DEV parent 2:2 red limit 4KB ".
   "min 20kBit max 4KB burst 4 avpkt 1000 bandwidth 10Mbit ".
   "probability 0.02\n";
print "$TC filter add $DEV parent 2:0 protocol ip prio 2 ".
   "handle 0 tcindex mask 0 classid 2:2 pass_on\n";
 
 
 
 
 


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux