Experiments of the packet dropper module( by Glen )

Test Script file for the test

Network infrastructure diagram

Packet Flow:  Madrid:eth1==>Dublin:eth2==>Dublin:eth1==>Prague:eth2

Packet dropper is running on the Static Router (Dublin).

Packet Dropper Module code    Makefile

TCP connection. Request Size is optimal size 1448Bytes.

Kernel file modified:  /usr/src/linux/net/core/dev.c        /usr/src/linux/net/netsyms.c

Optimal Request Size 1448 (TCP blast test) iteration times=100000
drop rate Time elapse (sec) var/avg Throughput
1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th AVG Var
0 12.33 12.34 12.41 12.37 12.35 12.44 12.34 12.40 12.35 12.38 12.371 0.0292 0% 12335300.30
0.1% 27.88 27.87 27.87 27.92 27.92 27.87 27.87 27.90 27.90 27.85 27.885 0.02 0% 5472476.24
0.5% 28.41 28.43 28.63 28.44 28.30 28.80 28.79 28.48 28.60 28.76 28.564 0.152 1% 5342389.02
1% 30.43 30.40 31.38 30.47 31.25 31.05 30.21 31.32 31.27 31.46 30.924 0.4372 1% 4934678.57
2% 37.09 38.62 41.73 38.07 38.59 36.74 39.40 38.67 39.88 40.32 38.911 1.1372 3% 3921770.19
5% 86.16 86.17 92.66 88.77 89.84 90.15 87.78 87.51 87.00 86.59 88.263 1.6736 2% 1728923.78
10% 293.59 288.31 301.46 283.20 289.61 288.89 292.89 306.97 291.82 267.83 290.457 6.889 2% 525378.97
20% 1579.44 1612.92 1835.97 1858.58 1909.68 1709.72 1799.82 1777.15 1823.33 1737.23 1764.384 83.6452 5% 86489.11

Note: The data in 0% dropping rate is the case when Packet_dropper module is not installed

A PS version of the chart is available here

The throughput is calculated in this way: 

Throughput = 1526 * 100000/(Average elapse time )

Although the request size is 1448. There are overheads (TCP header/ IP header/ Ethernet Wrapper). The actual data sent is 1526 bytes each time

The Original experiment data:  NoDrop, drop0.1drope0.5drop1drop2drop5drop10drop20

Explanation of the chart:

The throughput drops significantly even when the dropping rate is very low ( 0.1% ). This might help to explain the TCP exponential back off: When the sender finds packet is lost, it reduces the sending speed in half.