test siftr 2.0


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.

chengcui/testMySiftr2 (last edited 2024-11-19T13:59:38+0000 by chengcui)