traffic shapping problem with fragmented packets

From: Wael Ashmawi (washmawi@ee.upenn.edu)
Date: Fri Sep 22 2000 - 15:56:55 EST


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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:27 EST