top of page

Measuring throughput

This article describes a practical methodology for measuring end-to-end TCP Throughput in a managed IP network.  The goal is to
 provide a better indication in regard to user experience.  TCP and IP parameters are specified to optimize TCP Throughput.

You can use the Test TCP utility (TTCP) to measure TCP throughput through an IP path. In order to use it, start the receiver on one side of the path, then start the transmitter on the other side. The transmitting side sends a specified number of TCP packets to the receiving side. At the end of the test, the two sides display the number of bytes transmitted and the time elapsed for the packets to pass from one end to the other. You can then use these figures to calculate the actual throughput on the link.

​

I took readings using TTCP on cisco 2851 (routers at both sites, from router to router) to test the link and here are the results.


Note: i did change the addresses and used only the default configs while performing the tests. I was the transmitter at first then on second test i was the receiver(used the default settings).


In the example below I used the results of my transmitted document with the results of the received document from the other end in order to perform the calculations.

London-ISR#ttcp
transmit or receive [receive]:
trans
Target IP address: 11.3.255.90
perform tcp half close [n]:
send buflen [8192]:
*****USE THIS NUMBER MULTIPLIED BY THE BUFFER NUMBER*** -----------|2048 BUFFERS X 8192 BYTES
send nbuf [2048]:   *****USE THIS NUMBER FOR BUFFER NUMBER CALCULATION***CORRECT?------|= 16,777,216 BYTES
bufalign [16384]:                                                                    
bufoffset [0]:
port [5001]:
sinkmode [y]:
buffering on writes [y]:
show tcp information at end [n]:

ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp  -> 11.3.255.90
ttcp-t: connect (mss 1460, sndwnd 4128, rcvwnd 4128)
ttcp-t: 16777216 bytes in 21460 ms (21.460 real seconds) (~762 kB/s) +++
ttcp-t: 2048 I/O calls
ttcp-t: 0 sleeps (0 ms total) (0 ms average)


Milan-ISR#ttcp
transmit or receive [receive]:
perform tcp half close [n]:
receive buflen [8192]:
bufalign [16384]:
bufoffset [0]:
port [5001]:
sinkmode [y]:
rcvwndsize [4128]:
delayed ACK [y]:
show tcp information at end [n]:

ttcp-r: buflen=8192, align=16384/0, port=5001
rcvwndsize=4128, delayedack=yes  tcp
ttcp-r: accept from 10.3.255.89 (mss 1460, sndwnd 4128, rcvwnd 4128)
ttcp-r: 16777216 bytes in 21460 ms (21.460 real seconds) (~762 kB/s) +++  
***USE THE REAL SECONDS FOR THE CALCULATIONS
ttcp-r: 8548 I/O calls    ****USE THIS NUMBER FOR THE IP PACKETS IN THE CALCULATIONS
ttcp-r: 0 sleeps (0 ms total) (0 ms average)                                          

2048 buffers * 8192 bytes = 16,777,216 bytes
8548 IP packets * 40 bytes of header = 341,920 bytes
Total data transmitted = 17,114,816 bytes 
**NOW ADD BOTH FOR A TOTAL**  16,777,216 BYTES + 341,920 bytes  = 17,119,136 BYTES  
17,119,136 BYTES  * 8 bits/byte = 136,953,088 bits  
136,953,088 bits  / 21.460 seconds =   6,381,784.157 bits/second

6,381,784.157 bits/second / 1024 = Kbps
6,232.21 Kbps
6,232.21 Kbps / 1024 = Mbps
6.09 Mbps
 ****THIS SHOULD BE A 100Mbps link but the speed on the interface is set at:       duplex full, speed 10
 

​

Lets Connect The World

Subscribe to CCIE topics

Mohammed Anwarul Islam

bottom of page