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
TCP, request size=1448, iteration time=100000 | ||||||||||||||
Drop Rate | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th | AVG | Var | Var/AVG | Throughput(B/s) |
No Dropper | 12.38 | 12.39 | 12.34 | 12.35 | 12.37 | 12.35 | 12.42 | 12.35 | 12.41 | 12.35 | 12.37 | 0.02 | 0.18% | 12335300.299 |
0% | 27.95 | 27.94 | 27.96 | 27.93 | 27.93 | 28.01 | 28.00 | 27.90 | 27.95 | 27.92 | 27.95 | 0.02 | 0.09% | 5459944.900 |
0.005% | 27.93 | 27.89 | 27.87 | 27.95 | 27.90 | 27.90 | 27.90 | 27.91 | 27.89 | 27.87 | 27.90 | 0.02 | 0.06% | 5469338.017 |
0.01% | 27.89 | 27.84 | 27.84 | 27.88 | 27.87 | 27.89 | 27.90 | 27.88 | 27.87 | 27.88 | 27.87 | 0.01 | 0.05% | 5474635.861 |
0.02% | 27.88 | 27.87 | 27.89 | 27.87 | 27.90 | 27.87 | 27.90 | 27.88 | 27.94 | 27.86 | 27.89 | 0.02 | 0.06% | 5472279.997 |
0.04% | 27.86 | 27.87 | 28.05 | 27.87 | 27.91 | 27.90 | 27.88 | 27.91 | 27.90 | 27.88 | 27.90 | 0.03 | 0.11% | 5468945.991 |
0.06% | 27.90 | 27.86 | 27.98 | 27.96 | 27.91 | 27.88 | 27.90 | 27.91 | 27.98 | 27.92 | 27.92 | 0.03 | 0.11% | 5465616.046 |
0.08% | 27.93 | 27.93 | 28.01 | 27.99 | 27.93 | 27.92 | 27.90 | 27.89 | 27.90 | 27.87 | 27.93 | 0.03 | 0.11% | 5464246.070 |
The experiment raw data is : no dropper, drop0, drop0.00005, drop0.0001, drop0.0002, drop0.0004, drop0.0006, drop0.0008
Here we see that the throughput drops significantly even when we set the dropping rate to 0%. And when the dropping is low, the performance doesn't change much as compared to dropping rate = 0%.
Do it in UDP way we found that the introduction of packet_dropper causes about 59% of packet poss. And the loss is caused by the inefficiency of the kernel space random function. get_random_bytes
Although we set the dropping rate to 0
UDP experiment results shows 59000 out of 100000 udp packets are lost when running get_random_bytes() in here of the packet_dropper.c
UDP experiment results shows 62938 out of 100000 udp packets are lost when running get_random_bytes() and printk() in here of the packet_dropper.c
UDP experiment results shows 0 out of 100000 udp packets are lost when running printk() alone in here of the packet_dropper.c
UDP experiment results shows 0 out of 100000 udp packets are lost when packet_dropper module is not loaded