Hi,

I have a question regarding the token bucket filter queuing in the TC
package.
I'm trying to shape a bursty traffic to make it conferment to the EF
requirements in terms of rate
and burst size.
The traffic, as I said, is bursty and its burst size is 11 packets
(Video server output running on microsoft platform) and it has
an average rate of 1Mbit per sec. The catch is , the microsoft
application sends very large datagram size >1500B to
the ip stack to be fragmented and what I see on the wire is 10 fragments
plus the first packet. I
want to shape this stream using TC to an output of an ave. rate of 1MB
and burst size of 2 packets (without any dropping)

I have tried several ways of doing that the script shown below does the
shaping ok but for packet less than the Ethernet MTU. if I start to have
fragments everything is missed up. I tried it with pings givinig
different packet size in the command line.

ANy help is very much appreciated.

#! /bin/sh

TC=tc
IP=ip
DEVICE=eth0
BANDWIDTH="bandwidth 10Mbit"
#Delete all QDISC

$TC qdisc del dev $DEVICE parent 1:2
$TC qdisc del dev $DEVICE root
# Attach CBQ on $DEVICE. It will have handle 1:.
#   $BANDWIDTH is real $DEVICE bandwidth (10Mbit).
#   avpkt is average packet size.
#   mpu is minimal packet size.

$TC qdisc add dev $DEVICE  root  handle 1:  cbq cell 8 \
$BANDWIDTH avpkt 1500 mpu 64

# Create root class with classid 1:1. This step is not necessary.
#   bandwidth is the same as on CBQ itself.
#   rate == all the bandwidth
#   allot is MTU + MAC header
#   maxburst measure allowed class burstiness (please,read S.Floyd and
VJ papers
#   est 1sec 8sec means, that kernel will evaluate average rate
#                 on this class with period 1sec and time constant 8sec.

#                 This rate is viewed with "tc -s class ls dev $DEVICE"

$TC class add dev $DEVICE parent 1:0 classid 1:1 est 1sec 8sec cbq \
$BANDWIDTH rate 10Mbit allot 1514 maxburst 11 avpkt 1500
$TC class add dev eth0 parent 1:1 classid 1:2 cbq $BANDWIDTH rate
1.1Mbit allot 1514 maxburst 11 avpkt 1500 weight 1 prio 1 isolated

$TC qdisc add dev $DEVICE parent 1:2 est 1sec 8sec tbf limit 1mb burst
30Kb rate 1.1Mbit peakrate 1200mbps mtu 150
$TC filter add dev $DEVICE parent 1:0 prio 1 handle 1: protocol ip u32
divisor 1

$TC filter add dev $DEVICE parent 1:0 prio 1 u32 match ip  dst
158.130.20.0/24  flowid 1:2


The problem is when I have the MTU with this size all packets with
fragments (datagrams with size
>1500) are not sent and dropped, but when I make it larger (15000) the
packets are sent but the
rate is veery slow.

Any Idea is welcome...

Thanks
Wael


Reply via email to