test siftr 2.0
Contents
The latest performance improvement to the stock FreeBSD/siftr is commit fafb03ab4254 based on test result testD41715.
I am trying to see any performance improvement on my siftr 2.0 siftr2 when compared with the latest stock siftr code.
The testbed used here is from Emulab.net.
Two FreeBSD nodes are connected by a 1Gbps link. Each node has a dual-core CPU running at 3.00GHz. This testbed is CPU bound.
The traffic sender (s1) is using iperf, and the other FreeBSD node (r1) is the traffic receiver.
test IPv4 traffic
before loading siftr kernel module
cc@s1:~ % ping -c 5 r1 PING r1-link1 (10.1.1.3): 56 data bytes 64 bytes from 10.1.1.3: icmp_seq=0 ttl=64 time=0.394 ms 64 bytes from 10.1.1.3: icmp_seq=1 ttl=64 time=0.293 ms 64 bytes from 10.1.1.3: icmp_seq=2 ttl=64 time=0.296 ms 64 bytes from 10.1.1.3: icmp_seq=3 ttl=64 time=0.252 ms 64 bytes from 10.1.1.3: icmp_seq=4 ttl=64 time=0.359 ms --- r1-link1 ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.252/0.319/0.394/0.051 ms cc@s1:~ % root@s1:~ # iperf -c r1 -l 1M -t 10 -i 2 ------------------------------------------------------------ Client connecting to r1, TCP port 5001 TCP window size: 32.8 KByte (default) ------------------------------------------------------------ [ 1] local 10.1.1.2 port 25500 connected with 10.1.1.3 port 5001 [ ID] Interval Transfer Bandwidth [ 1] 0.00-2.00 sec 224 MBytes 940 Mbits/sec [ 1] 2.00-4.00 sec 224 MBytes 940 Mbits/sec [ 1] 4.00-6.00 sec 225 MBytes 944 Mbits/sec [ 1] 6.00-8.00 sec 224 MBytes 940 Mbits/sec [ 1] 8.00-10.00 sec 225 MBytes 944 Mbits/sec [ 1] 0.00-10.01 sec 1.10 GBytes 941 Mbits/sec root@s1:~ #
base test after loading the stock siftr kernel module
root@s1:~ # kldload siftr Statistical Information For TCP Research (SIFTR) 1.3.0 http://caia.swin.edu.au/urp/newtcp root@s1:~ # sysctl net.inet.siftr.port_filter=5001 net.inet.siftr.port_filter: 0 -> 5001 root@s1:~ # sysctl net.inet.siftr.enabled=1 ; iperf -c r1 -l 1M -t 10 -i 2 ; sysctl net.inet.siftr.enabled=0 ; net.inet.siftr.enabled: 0 -> 1 ------------------------------------------------------------ Client connecting to r1, TCP port 5001 TCP window size: 32.8 KByte (default) ------------------------------------------------------------ [ 1] local 10.1.1.2 port 29820 connected with 10.1.1.3 port 5001 [ ID] Interval Transfer Bandwidth [ 1] 0.00-2.00 sec 136 MBytes 570 Mbits/sec [ 1] 2.00-4.00 sec 138 MBytes 579 Mbits/sec [ 1] 4.00-6.00 sec 136 MBytes 570 Mbits/sec [ 1] 6.00-8.00 sec 135 MBytes 566 Mbits/sec [ 1] 8.00-10.00 sec 138 MBytes 579 Mbits/sec [ 1] 0.00-10.04 sec 684 MBytes 572 Mbits/sec net.inet.siftr.enabled: 1 -> 0 root@s1:~ #
compare test after loading my siftr2 kernel module
root@s1:~/siftr_git # kldload ./siftr2.ko Statistical Information For TCP Research (SIFTR) 2.0 root@s1:~/siftr_git # sysctl net.inet.siftr2.port_filter=5001 root@s1:~/siftr_git # sysctl net.inet.siftr2.enabled=1 ; iperf -c r1 -l 1M -t 10 -i 2 ; sysctl net.inet.siftr2.enabled=0 ; net.inet.siftr2.enabled: 0 -> 1 ------------------------------------------------------------ Client connecting to r1, TCP port 5001 TCP window size: 32.8 KByte (default) ------------------------------------------------------------ [ 1] local 10.1.1.2 port 65286 connected with 10.1.1.3 port 5001 [ ID] Interval Transfer Bandwidth [ 1] 0.00-2.00 sec 160 MBytes 671 Mbits/sec [ 1] 2.00-4.00 sec 161 MBytes 675 Mbits/sec [ 1] 4.00-6.00 sec 156 MBytes 654 Mbits/sec [ 1] 6.00-8.00 sec 159 MBytes 667 Mbits/sec [ 1] 8.00-10.00 sec 160 MBytes 671 Mbits/sec [ 1] 0.00-10.03 sec 797 MBytes 667 Mbits/sec net.inet.siftr2.enabled: 1 -> 0 root@s1:~/siftr_git #
summary
version |
iperf result |
stock siftr |
572 Mbits/sec |
my siftr 2.0 |
667 Mbits/sec (+16.6%) |
Compared with the stock FreeBSD/siftr, this customized siftr 2.0 has +16.6% better performance in IPv4 traffic.