Experiments on Nov23.
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
Module to change the dropping rate and destination address via manipulating the /proc file system: change_kernel code, user-space code Makefile
To use module "change", use "make install" after
installing "packet_dropper" module,
then use user space program
"input rate ip_address" it will
change the rate and destination address in
packet_dropper module dynamically.
To check the rate and destination ip address, use "cat /proc/linTry/foo", you will get information like:
Dropping Rate shows only the first 6 digits after '.'
Dropping Rate is: 0.000499
Destination IP is: 192.168.2.2
TCP connection. Request Size is optimal size 1448Bytes.
Kernel file modified: /usr/src/linux/net/core/dev.c /usr/src/linux/net/netsyms.c
The packet_dropper code has been changed to drop packets randomly. The random number is selected according to the CPU clock. Some bit operations are done after selecting the CPU cycle.
NOTE: It's almost impossible to find an algorithm that drops the packet RANDOMLY at the EXACT rate we specified. The actual rate of packets being dropped may be a little bit different from the rate we specify in the packet_dropper.
See the UDP packet loss experiments
drop0 drop0.0001 drop0.0005 drop0.001 drop0.002 drop0.004 drop0.006 drop0.008 drop0.01 drop0.02 drop0.03 drop0.04 drop0.05 drop0.06 drop0.07 drop0.08 drop0.09 drop0.1 drop0.11 drop0.12 drop0.13 drop0.14
(The above files are stored in 132.177.67.158 because I ran out disk space on pubpages.unh.edu)
Time Elapse( sec ) (Randomly dropping packets) | |||||||||||||
DropRate | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th | AVG | Var | Throughput (Bytes/Sec) |
0.0000 | 12.32 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 12.31 | 0.00 | 12395418.73 |
0.0001 | 12.33 | 12.32 | 12.32 | 12.32 | 12.32 | 12.32 | 12.32 | 12.32 | 12.32 | 12.31 | 12.32 | 0.00 | 12386363.64 |
0.0005 | 12.34 | 12.33 | 12.32 | 12.33 | 12.33 | 12.33 | 12.33 | 12.33 | 12.33 | 12.33 | 12.33 | 0.00 | 12376317.92 |
0.0010 | 12.36 | 12.35 | 12.35 | 12.35 | 12.34 | 12.35 | 12.35 | 12.34 | 12.35 | 12.34 | 12.35 | 0.00 | 12358276.64 |
0.0020 | 12.38 | 12.37 | 12.76 | 12.38 | 12.37 | 12.57 | 12.56 | 12.56 | 12.37 | 12.37 | 12.47 | 0.11 | 12238351.11 |
0.0040 | 13.19 | 12.98 | 12.60 | 12.60 | 12.80 | 12.79 | 12.60 | 13.17 | 13.18 | 12.79 | 12.87 | 0.21 | 11857031.86 |
0.0060 | 12.82 | 12.42 | 13.00 | 13.38 | 12.81 | 12.81 | 13.39 | 13.20 | 13.38 | 13.00 | 13.02 | 0.25 | 11719529.99 |
0.0080 | 14.21 | 13.22 | 14.18 | 13.03 | 14.29 | 13.22 | 13.60 | 13.41 | 13.79 | 13.42 | 13.64 | 0.38 | 11190144.46 |
0.0100 | 14.40 | 14.60 | 14.79 | 15.39 | 13.64 | 13.62 | 14.44 | 15.58 | 14.89 | 14.77 | 14.61 | 0.47 | 10443471.12 |
0.0200 | 23.18 | 23.26 | 20.27 | 21.83 | 18.21 | 19.73 | 22.54 | 18.77 | 19.50 | 18.99 | 20.63 | 1.66 | 7397711.85 |
0.0300 | 30.14 | 29.67 | 30.83 | 29.00 | 30.16 | 32.27 | 38.19 | 31.65 | 27.80 | 28.94 | 30.87 | 1.90 | 4944111.45 |
0.0400 | 45.17 | 39.52 | 50.48 | 42.35 | 42.62 | 47.54 | 46.42 | 44.65 | 45.90 | 50.44 | 45.51 | 2.65 | 3353182.89 |
0.0500 | 68.78 | 65.78 | 70.92 | 62.93 | 59.25 | 65.20 | 68.24 | 72.56 | 72.21 | 57.98 | 66.39 | 4.16 | 2298712.06 |
0.0600 | 81.74 | 96.67 | 107.26 | 83.44 | 95.42 | 92.58 | 93.66 | 95.56 | 96.27 | 88.57 | 93.12 | 5.23 | 1638798.50 |
0.0700 | 115.56 | 119.23 | 117.34 | 122.33 | 117.69 | 125.01 | 136.47 | 134.89 | 110.31 | 125.99 | 122.48 | 6.49 | 1245897.36 |
0.0800 | 152.77 | 159.41 | 152.10 | 151.19 | 150.76 | 172.83 | 161.07 | 153.58 | 156.04 | 154.08 | 156.38 | 4.83 | 975809.39 |
0.0900 | 189.42 | 213.50 | 191.52 | 211.65 | 178.59 | 192.32 | 182.10 | 183.13 | 213.83 | 183.22 | 193.93 | 11.44 | 786889.98 |
0.1000 | 238.04 | 246.07 | 271.07 | 274.35 | 234.52 | 227.36 | 252.14 | 233.99 | 245.32 | 231.08 | 245.39 | 12.41 | 621857.10 |
0.1100 | 285.11 | 299.36 | 344.97 | 274.29 | 292.41 | 295.05 | 308.04 | 306.71 | 288.01 | 303.28 | 299.72 | 12.82 | 509136.77 |
0.1200 | 361.30 | 340.43 | 368.80 | 366.94 | 330.97 | 322.50 | 326.55 | 336.29 | 353.63 | 345.89 | 345.33 | 13.98 | 441896.16 |
0.1300 | 417.23 | 437.84 | 369.94 | 417.01 | 371.42 | 395.34 | 409.48 | 420.01 | 384.71 | 386.91 | 400.99 | 19.33 | 380559.07 |
0.1400 | 435.03 | 476.66 | 477.05 | 500.55 | 502.79 | 480.83 | 481.06 | 482.92 | 473.48 | 469.59 | 478 | 11.63 | 319249.53 |
PS version gnuplot script Data file stat23 tcp.txt
The data for the red curve is the experiment data from "regularly dropping packet", See here
The Raw experiment data for green curve
are: drop0 drop0.0001
drop0.0005
drop0.001 drop0.002
drop0.004
drop0.006 drop0.008
drop0.01 drop0.02
drop0.03 drop0.04
drop0.05 drop0.06
drop0.07 drop0.08
drop0.09 drop0.1
drop0.11 drop0.12
drop0.13
drop0.14
The detailed curves between 0 and 0.01 is:
PS version gnuplot script Data file partTcp startPart
The Linux TCP specification here