[LARTC] Diffserv Test bed problems

Linux Advanced Routing and Traffic Control

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

 



Hi,

 

I’m trying to set up a Diffserv test bed and having a few problems. Bellow is the summary

 

Experiment: 

Diffserv Test Bed.

Aim: 

To validate that expedited forwarding per-hop-behaviors is able to provide a guaranteed bandwidth together with a very small delay and jitter even in a highly congested network.

 

Environment:

5 Work stations

Fore ground and background and receiver workstation: PIII

Core and Edge routers: PII, 128 Megs

 

All installed with Red Hat8, kernel 2.4.18.-14

QoS modules are configured as modules

 

Network layout: 

 

Please see attached diagram

 

Traffic generation using Iperf sending to 2 different ports on the receiver work station, 5001 and 4000. Priority traffic is marked with the value of 0xb8 using Iperf

 

Scripts:

 

Following scripts are running on the Core and Edge router.

 

#!/bin/sh

#

# Diffserv Core device: EF using CBQ

 

# Clear the existing qdisc configuration

tc qdisc del dev eth1 root

 

# Attach DSMARK qdisc to root and copy TOS byte into skb->tc_index

tc qdisc add dev eth1 handle 1:0 root dsmark indices 64 set_tc_index

 

# Add filter to root to mask out ECN bits and

# Extract the DSCP field by shifting to the right two bits

#           ________

# TOS      /       /\

# 0xb8 ->  | 10111000

#          | ||||||

#          \/vvvvvv      DSCP

#          00101110   -> 0x2e

#

tc filter add dev eth1 parent 1:0 \

    protocol ip prio 1 tcindex mask 0xfc shift 2

 

# Attach classful CBQ qdisc to 2:0 (2:0 is a child of root node 1:0)

tc qdisc add dev eth1 parent 1:0 handle 2:0 cbq \

    bandwidth 10Mbit cell 8 avpkt 1000 mpu 64

 

# -------------------------

# EF Class (2:1)

# -------------------------

# CBQ bounded and isolated at EF Rate

tc class add dev eth1 parent 2:0 classid 2:1 cbq \

    bandwidth 10Mbit rate 2000Kbit avpkt 1000 prio 1 \

    bounded isolated allot 1514 weight 1 maxburst 10

# PFIFO buffer management scheme

tc qdisc add dev eth1 parent 2:1 pfifo limit 5

tc filter add dev eth1 parent 2:0 protocol ip prio 1 \

   handle 0x2e tcindex classid 2:1 pass_on

 

# -------------------------

# BE class (2:2) 

# -------------------------

# CBQ with borrow

tc class add dev eth1 parent 2:0 classid 2:2 cbq \

    bandwidth 10Mbit rate 4Mbit avpkt 1000 prio 7 \

    allot 1514 weight 1 maxburst 21 borrow split 2:0 defmap 0xffff 

# RED buffer management scheme

tc qdisc add dev eth1 parent 2:2 red limit 60KB min 15KB max 45KB \

    burst 20 avpkt 1000 bandwidth 10Mbit probability 0.4

tc filter add dev eth1 parent 2:0 protocol ip prio 2 \

    handle 0 tcindex mask 0 classid 2:2 pass_on

 

 
-----------------------------------------------------------------------
 Script running on the Edge device

# Diffserv Edge device: EF using CBQ

 

tc qdisc del dev eth1 root

tc qdisc add dev eth1 handle 1:0 root cbq \

   bandwidth 10Mbit cell 8 avpkt 1000 mpu 64

 

tc class add dev eth1 parent 1:0 classid 1:1 cbq \

   bandwidth 10Mbit rate 3000Kbit avpkt 1000 prio 1 \

   bounded isolated allot 1514 weight 1 maxburst 10

tc class add dev eth1 parent 1:0 classid 1:2 cbq \

   bandwidth 10Mbit rate 5Mbit avpkt 1000 prio 7 \

   allot 1514 weight 1 maxburst 21 borrow split 1:0 defmap 0xffff

 

tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 \

   match ip src 192.168.1.0/24 \

   match ip dport 5001 16 \

   police rate 3Mbit burst 20K drop \

   flowid 1:1

tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 \

   match ip src 192.168.1.0/24 \

   flowid 1:2

 

tc qdisc add dev eth1 parent 1:2 handle 70:0 dsmark indices 64

tc qdisc add dev eth1 parent 1:1 handle 50:0 dsmark indices 64

 

tc class change dev eth1 classid 50:0 dsmark mask 0x3 value 0xb8

tc class change dev eth1 classid 70:0 dsmark mask 0x3 value 0x00

 

tc qdisc add dev eth1 parent 50:0 pfifo limit 5

tc qdisc add dev eth1 parent 70:0 red \

   limit 60KB min 15KB max 45KB burst 20 \

   avpkt 1000 bandwidth 10Mbit probability 0.4

 

 

 

Problem:

 

When enable the Diffserv by running the corresponding tc scripts on Edge and Core router, it appeared that there was very high packet lost and no bandwidth guarantee has taken place.

 

Checked:

 

Compiled tc with Diffserv enabled

Used the kernel with  #define PSCHED_CLOCK_SOURCE PSCHED_CPU in linux/include/net/sched/pkt_sched.h

Used the kernel with #define Hz 1500 in linux/include/asm/param.h

 

Your help is greatly appreciated.

 

Vince

 

 

 

 

 

 

 

 

 

 

 

 

 

 



UTS CRICOS Provider Code:  00099F

DISCLAIMER
========================================================================
This email message and any accompanying attachments may contain
confidential information.  If you are not the intended recipient, do not
read, use, disseminate, distribute or copy this message or attachments.
If you have received this message in error, please notify the sender
immediately and delete this message. Any views expressed in this message
are those of the individual sender, except where the sender expressly,
and with authority, states them to be the views the University of
Technology Sydney. Before opening any attachments, please check them for
viruses and defects.
========================================================================

Attachment: Network diagram.gif
Description: GIF image


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