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