Archive for June, 2014

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.