Findings: Behaviour of Default Class with Class Based Shaping

From: Pierre-Alex (paguanel@hotmail.com)
Date: Wed Jun 14 2006 - 07:05:26 ART


Hi Group,

Some interesting finding that have I believe have some huge repercusions ..

If you are told to reserve on a subinterface or dlci : 50% for class1, 20 %
for class2 and the rest for the default-class, you HAVE to set the reservation
for the default-class in HARD, because it won't take the 30% by itself.

It is a suprising behaviour. Have any of you noticed the same thing?

I have enclosed the experiment and results below:

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

DIAGRAM

R1----fastethernet -- R2 ---ser 0/0.204 (pt2pt) ----frame-relay--- ---ser
0/0.402 (pt2pt)---R4---loopback0

R1 is sending pings to R4 loopback 0 .

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

Configuration on R2

! r2
int ser 0/0
encaps frame
no shut

no frame inverse-arp

int ser 0/0.204 point
frame int 204
ip addr 10.2.4.2 255.255.255.0
class 204
!

map-class frame-relay 204
service-policy out WRED

policy-map WRED
class class-default
shape average 128000 12000 0
 service-policy CBWQF

policy-map CBWQF
  class class1
     bandw percent 50
  class class2
     band percent 20
  class class-default

class-map class1
match access-group 101

class-map class2
match access-group 102

access-list 101 permit ip any any prec 5
access-list 102 permit ip any any prec 3

=========

Experiment 1:

From R1 ping R4 loopback at line rate with default precendence.

Result1:

       Class-map: class-default (match-any)
          36523 packets, 54748732 bytes
          30 second offered rate 1169000 bps, drop rate 1042000 bps
          Match: any

1169000 - 1042000 = 127000 bps of traffic is transmitted.

Finding 1:

All of the bandwith is used by Class 1.

Experiment 2:

From R1 ping R4 loopback at line rate with default precendence.
From R1 ping R4 loopback at line rate with precendence 5.

Normally R1 should use half of the bandwidth and the rest should be used by
the default-class

Result 2:

Service-policy : CBWQF

        Class-map: class1 (match-all)
          20648 packets, 31054592 bytes
          30 second offered rate 1162000 bps, drop rate 1036000 bps
          Match: access-group 101
          Queueing
            Output Queue: Conversation 25
            Bandwidth 50 (%)
            Bandwidth 64 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 20707/31143328
        (depth/total drops/no-buffer drops) 63/18349/0

        Class-map: class2 (match-all)
          0 packets, 0 bytes
          30 second offered rate 0 bps, drop rate 0 bps
          Match: access-group 102
          Queueing
            Output Queue: Conversation 26
            Bandwidth 20 (%)
            Bandwidth 25 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 0/0
        (depth/total drops/no-buffer drops) 0/0/0

        Class-map: class-default (match-any)
          78392 packets, 117650535 bytes
          30 second offered rate 1172000 bps, drop rate 1168000 bps
          Match: any

Class1: 1162000 - 1036000 = 126 000 bps
Class-default: 1172000 - 1168000 = 4 bps

Finding 2:

Class-default get basically nothing even though Class 2 is not using its share
of bandwidth !!!

The unused 50% is not realocated to the default class.

Experiment 3:

From R1 ping R4 loopback at line rate with default precendence.
From R1 ping R4 loopback at line rate with precendence 5.
From R1 ping R4 loopback at line rate with precendence 3

Results 3:

        Class-map: class1 (match-all)
          75760 packets, 113943040 bytes
          30 second offered rate 1157000 bps, drop rate 1063000 bps
          Match: access-group 101
          Queueing
            Output Queue: Conversation 25
            Bandwidth 50 (%)
            Bandwidth 64 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 75800/114003200
        (depth/total drops/no-buffer drops) 64/67650/0

        Class-map: class2 (match-all)
          10154 packets, 15271616 bytes
          30 second offered rate 1132000 bps, drop rate 1095000 bps
          Match: access-group 102
          Queueing
            Output Queue: Conversation 26
            Bandwidth 20 (%)
            Bandwidth 25 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 10312/15509248
        (depth/total drops/no-buffer drops) 64/9922/0

        Class-map: class-default (match-any)
          134013 packets, 201213148 bytes
          30 second offered rate 1167000 bps, drop rate 1167000 bps
          Match: any

Class1: 94 000 bps

Class2: 37 000 bps

Class default 0 bps

Findings 3:

When class2 traffic kicks in it takes 20% of the reserved bandwidth (25600
bps) + a proportion of the bandwidth that the class-default should logically
have but does not get as discovered in Finding 2.

Class 1 takes 50% of the reserved bandwidth (64000) + a proportion of the
bandwidth that the class-default should logically have but does not get as
discovered in Finding 2.

Experiment 4:

Setting bandwidth in HARD for default class:

policy-map CBWQF
  class class1
     bandw percent 50
  class class2
     band percent 20
  class class-default
     band percent 30

Result4:

         Class-map: class1 (match-all)
          231594 packets, 348317376 bytes
          30 second offered rate 1158000 bps, drop rate 1094000 bps
          Match: access-group 101
          Queueing
            Output Queue: Conversation 25
            Bandwidth 50 (%)
            Bandwidth 64 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 231657/348412128
        (depth/total drops/no-buffer drops) 64/211023/0

        Class-map: class2 (match-all)
          165866 packets, 249462464 bytes
          30 second offered rate 1153000 bps, drop rate 1128000 bps
          Match: access-group 102
          Queueing
            Output Queue: Conversation 26
            Bandwidth 20 (%)
            Bandwidth 25 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 165936/249567744
        (depth/total drops/no-buffer drops) 64/160960/0

        Class-map: class-default (match-any)
          291588 packets, 437818250 bytes
          30 second offered rate 1167000 bps, drop rate 1129000 bps
          Match: any
          Queueing
            Output Queue: Conversation 27
            Bandwidth 30 (%)
            Bandwidth 38 (kbps) Max Threshold 64 (packets)
            (pkts matched/bytes matched) 25013/37614916
        (depth/total drops/no-buffer drops) 64/24080/0

Class1: 1158000 - 1094000 = 64000 (50%)

Class2: 1153000 - 1128000 = 25 000 (19,53%)

Class default: = 38 000 ( = 29,6%)

This works as required : "Assign 50% for class1, 20 % for class2 and the rest
for the default-class"



This archive was generated by hypermail 2.1.4 : Sat Jul 01 2006 - 07:57:32 ART