Archive for the ‘QoS’ Category

topology

Does the VOICE Priority Class borrow bandwidth from the non priority classes like the default-Class , does it !!!!!!

Scenario

-QoS is configured on SITE_A
-Will monitor the voice traffic as it leaves SITE_A
-Fa 0/1 is the INPUT(traffic entering the SITE_A router from the LAN ) interface
-Fa 0/0 is the OUTPUT(traffic existing the SITE_A router into the WAN ) interface
-The bandwidth on Fa0/0 and Fa0/1 is 10Mbps
-The Voice class is assigned 8kbps bandwidth
-The rest of the bandwidth is assigned to the default-class

Configs ;

INPUT

interface Fast Ethernet0/1
service-policy input CE-INPUT

policy-map CE-INPUT
class CE-INPUT-VOICE
set dscp ef
class class-default
set dscp default
class-map match-any CE-INPUT-VOICE
match access-group name VOICE

ip access-list extended VOICE
permit ip 10.80.80.0 0.0.0.255 any

OUTPUT

interface FastEthernet0/0

service-policy output CE-OUTPUT

policy-map CE-OUTPUT
class CE-OUTPUT-VOICE
priority 8
class class-default
bandwidth 9992
random-detect dscp-based

class-map match-any CE-OUTPUT-VOICE
match ip dscp ef

Results

-Phone call is made between SITE_A and SITE_B , see below QoS stats  on Site_A’s  router.

SiteA#sh policy-map int fa 0/0
FastEthernet0/0

Service-policy output: CE-OUTPUT
Class-map: CE-OUTPUT-VOICE (match-any)
36100 packets, 3035978 bytes
30 second offered rate 22000 bps, drop rate 0 bps
Match: ip dscp ef
36100 packets, 3035978 bytes
30 second rate 22000 bps
Queueing
Strict Priority
Output Queue: Conversation 264
Bandwidth 8 (kbps) Burst 200 (Bytes)
(pkts matched/bytes matched) 1/84
(total drops/bytes drops) 0/0

Class-map: class-default (match-any)
360 packets, 30117 bytes
30 second offered rate 0 bps, drop rate 0 bps
Match: any
Queueing
Output Queue: Conversation 265
Bandwidth 9992 (kbps)
(pkts matched/bytes matched) 0/0
(depth/total drops/no-buffer drops) 0/0/0
exponential weight: 9
mean queue depth: 0

dscp Transmitted Random drop Tail drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob

cs6 235/17390 0/0 0/0 32 40 1/10
default 128/12935 0/0 0/0 20 40 1/10

-If you look at the VOICE class the offered rate is 22kbps , this means the voice class requires 22Kbps bandwidth.
-But we have 8kbps allocated clearly that’s not enough bandwidth but we don’t see any voice drops.

Conclusion:
Does the VOICE Priority Class borrow bandwidth from the non priority classes like the default-Class : YES it does
The priority queue can burst into other non-priority classes but not vise versa.

pic2

 

 

We all know that TCP is the preferred communication protocol when it comes to large file transfers and we have a lot of theory to support that. Is UDP really that bad, maybe the following scenario will shed some light?
So we have the above MPLS 10Mbps topology with no QoS configured. For this demonstration we are going to use a tool called Jperf 2.0.2 Network Performance Measurement graphical tool – it’s a good tool generating TCP / UDP network traffic.

Scenario 1

Communication protocol: TCP
File size: 2 Gig
TCP Window Size: 64KB (65535 bytes)
Concurrent Connections: 10
Test interface: Site A Router interface fa0/0 (OUTPUT Direction)
Tranfer time : 1 min

 

 

pic 3

SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 4399000 bits/sec, 422 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 369
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 5298000 bits/sec, 507 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 425
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 6051000 bits/sec, 579 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 450
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 6051000 bits/sec, 579 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 457
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 6051000 bits/sec, 579 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 472
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 6677000 bits/sec, 639 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 484
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 6677000 bits/sec, 639 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 499
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 7203000 bits/sec, 689 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 521
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 7203000 bits/sec, 689 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 535
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 7630000 bits/sec, 730 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 567
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 7630000 bits/sec, 730 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 579
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 7630000 bits/sec, 730 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 595
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 8001000 bits/sec, 765 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 613
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 8001000 bits/sec, 765 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 636
SiteA#sh int fa 0/0 | include 30 second output rate
30 second output rate 8303000 bits/sec, 794 packets/sec
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 645
SiteA#sh int fa 0/0 | include 30 second output rate

We are seeing output drops but  TCP has build in congestion mechanisms  that would allow to  retransmit  all the drops packets.Now lets look at UDP.

Scenario 2

Communication protocol: UDP
File  size: 2 Gig
UDP Bandwidth: 10Mbps
Concurrent Connections: 10
Test interface: Site A Router interface fa0/0 (OUTPUT Direction)

 

fff

 

 

SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 99420
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 137630
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 150228
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 163272
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 184229
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 193800
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 203931
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 214711
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 226193
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 240455
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 249488
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 263135
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 272929
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 304902
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 315586
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 328975
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 341022
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 350631
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 360781
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 371331
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 410869
SiteA#sh int fa 0/0 | include Total output drops
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 420460

Look at that !!!! look at those output drops :  why ?

Conclusion :UDP has no congestion control mechanisms like TCP  because of that you will find that  high bandwidth applications can trigger congestion collapse, unless they implement congestion control measures at the application level.