test result of D40302


The testbed used here is from Emulab.net.

On a 10Gbps link between a FreeBSD-14-current node and a Ubuntu20.04 (Linux) node.
FreeBSD node is the traffic sender (s1) using iperf, and the Linux node (r1) is the traffic receiver.

root@s1:~ # sysctl net.inet.siftr.port_filter=5001
net.inet.siftr.port_filter: 0 -> 5001
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -c r1 -n 1k -P 2
------------------------------------------------------------
Client connecting to r1, TCP port 5001
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.1.2 port 58544 connected with 10.1.1.3 port 5001
[  2] local 10.1.1.2 port 32291 connected with 10.1.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  2] 0.00-0.01 sec  1000 Bytes   579 Kbits/sec
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-0.01 sec  1000 Bytes   579 Kbits/sec
[SUM] 0.00-0.00 sec  1.95 KBytes  0.000 bits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -Vc fd00::3 -n 1K -P 2
------------------------------------------------------------
Client connecting to fd00::3, TCP port 5001
TCP window size: 32.3 KByte (default)
------------------------------------------------------------
[  2] local fd00::2 port 47852 connected with fd00::3 port 5001
[  1] local fd00::2 port 64057 connected with fd00::3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-0.01 sec  1.00 KBytes   592 Kbits/sec
[ ID] Interval       Transfer     Bandwidth
[  2] 0.00-0.01 sec  1.00 KBytes   594 Kbits/sec
[SUM] 0.00-0.00 sec  2.00 KBytes  0.000 bits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0
root@s1:~ # cat /var/log/siftr.log
enable_time_secs=1685191807     enable_time_usecs=160752        siftrver=1.3.0  sysname=FreeBSD sysver=1400089  ipmode=6
o,1685191814.185109,10.1.1.2,32291,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,4,1460,1000,1,16778209,230000,33580,0,65700,0,0,0,86707916,130
o,1685191814.185212,10.1.1.2,58544,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,4,1460,1000,1,16778209,230000,33580,0,65700,0,0,0,857676142,130
o,1685191814.186054,10.1.1.2,32291,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,4,1460,1000,1,16778208,230000,33580,60,65700,0,0,0,86707916,130
o,1685191814.186072,10.1.1.2,58544,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,4,1460,1000,1,16778208,230000,33580,60,65700,0,0,0,857676142,130
o,1685191814.186103,10.1.1.2,32291,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,6,1460,1000,1,16778208,230000,33580,1000,65700,0,60,0,86707916,130
o,1685191814.186107,10.1.1.2,58544,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,6,1460,1000,1,16778208,230000,33580,1000,65700,0,60,0,857676142,130
i,1685191814.186199,10.1.1.2,32291,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,6,1460,1000,1,16778224,230000,33580,1000,65700,0,1001,0,86707916,130
i,1685191814.186204,10.1.1.2,32291,10.1.1.3,5001,1073725440,14540,2,65152,66048,7,9,6,1460,875,1,1008,230000,33580,940,65700,0,941,0,86707916,130
i,1685191814.186218,10.1.1.2,58544,10.1.1.3,5001,1073725440,14480,2,65160,65700,7,9,6,1460,1000,1,16778224,230000,33580,1000,65700,0,1001,0,857676142,130
i,1685191814.186325,10.1.1.2,32291,10.1.1.3,5001,1073725440,15481,2,64256,66048,7,9,9,1460,781,1,1008,230000,33580,0,65700,0,0,0,86707916,130
i,1685191814.186348,10.1.1.2,58544,10.1.1.3,5001,1073725440,14540,2,65152,66048,7,9,6,1460,875,1,1008,230000,33580,940,65700,0,941,0,857676142,130
i,1685191814.186473,10.1.1.2,58544,10.1.1.3,5001,1073725440,15481,2,64256,66048,7,9,9,1460,906,1,1008,230000,33580,0,65700,0,0,0,857676142,130
i,1685191814.199863,10.1.1.2,32291,10.1.1.3,5001,1073725440,15481,1026,64256,66048,7,9,9,1460,781,1,1008,230000,33580,0,65700,0,0,0,86707916,130
o,1685191814.199871,10.1.1.2,32291,10.1.1.3,5001,1073725440,15481,1026,64256,66020,7,9,10,1460,781,1,1009,230000,33580,0,65700,0,0,0,86707916,130
i,1685191814.199884,10.1.1.2,58544,10.1.1.3,5001,1073725440,15481,1026,64256,66048,7,9,9,1460,906,1,1008,230000,33580,0,65700,0,0,0,857676142,130
o,1685191814.199892,10.1.1.2,58544,10.1.1.3,5001,1073725440,15481,1026,64256,66020,7,9,10,1460,906,1,1009,230000,33580,0,65700,0,0,0,857676142,130
disable_time_secs=1685191816    disable_time_usecs=629397       num_inbound_tcp_pkts=10 num_outbound_tcp_pkts=10        total_tcp_pkts=20       num_inbound_skipped_pkts_malloc=0       num_outbound_skipped_pkts_malloc=0      num_inbound_skipped_pkts_tcpcb=2        num_outbound_skipped_pkts_tcpcb=2       num_inbound_skipped_pkts_inpcb=0        num_outbound_skipped_pkts_inpcb=0       total_skipped_tcp_pkts=4        flow_list=10.1.1.2;32291-10.1.1.3;5001,10.1.1.2;58544-10.1.1.3;5001,
enable_time_secs=1685191819     enable_time_usecs=576664        siftrver=1.3.0  sysname=FreeBSD sysver=1400089  ipmode=6
o,1685191823.569643,fd00::2,47852,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,4,1440,1000,1,16778209,230000,33120,0,66240,0,0,0,3915584443,132
o,1685191823.569748,fd00::2,64057,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,4,1440,1000,1,16778209,230000,33120,0,66240,0,0,0,3198253612,132
o,1685191823.570479,fd00::2,64057,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,4,1440,1000,1,16778208,230000,33120,60,66240,0,0,0,3198253612,132
o,1685191823.570502,fd00::2,47852,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,4,1440,1000,1,16778208,230000,33120,60,66240,0,0,0,3915584443,132
o,1685191823.570522,fd00::2,64057,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,6,1440,1000,1,16778208,230000,33120,1024,66240,0,60,0,3198253612,132
o,1685191823.570539,fd00::2,47852,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,6,1440,1000,1,16778208,230000,33120,1024,66240,0,60,0,3915584443,132
i,1685191823.570626,fd00::2,64057,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,6,1440,1000,1,16778224,230000,33120,1024,66240,0,1025,0,3198253612,132
i,1685191823.570649,fd00::2,47852,fd00::3,5001,1073725440,14280,2,64260,66240,7,9,6,1440,1000,1,16778224,230000,33120,1024,66240,0,1025,0,3915584443,132
i,1685191823.570769,fd00::2,47852,fd00::3,5001,1073725440,14340,2,64256,66560,7,9,6,1440,875,1,1008,230000,33120,964,66240,0,965,0,3915584443,132
i,1685191823.570772,fd00::2,47852,fd00::3,5001,1073725440,15305,2,64128,66560,7,9,9,1440,781,1,1008,230000,33120,0,66240,0,0,0,3915584443,132
i,1685191823.570802,fd00::2,64057,fd00::3,5001,1073725440,14340,2,64256,66560,7,9,6,1440,875,1,1008,230000,33120,964,66240,0,965,0,3198253612,132
i,1685191823.570926,fd00::2,64057,fd00::3,5001,1073725440,15305,2,64128,66560,7,9,9,1440,781,1,1008,230000,33120,0,66240,0,0,0,3198253612,132
i,1685191823.584284,fd00::2,47852,fd00::3,5001,1073725440,15305,1026,64128,66560,7,9,9,1440,781,1,1008,230000,33120,0,66240,0,0,0,3915584443,132
o,1685191823.584294,fd00::2,47852,fd00::3,5001,1073725440,15305,1026,64128,66532,7,9,10,1440,781,1,1009,230000,33120,0,66240,0,0,0,3915584443,132
i,1685191823.584308,fd00::2,64057,fd00::3,5001,1073725440,15305,1026,64128,66560,7,9,9,1440,781,1,1008,230000,33120,0,66240,0,0,0,3198253612,132
o,1685191823.584316,fd00::2,64057,fd00::3,5001,1073725440,15305,1026,64128,66532,7,9,10,1440,781,1,1009,230000,33120,0,66240,0,0,0,3198253612,132
disable_time_secs=1685191826    disable_time_usecs=173397       num_inbound_tcp_pkts=10 num_outbound_tcp_pkts=10        total_tcp_pkts=20       num_inbound_skipped_pkts_malloc=0       num_outbound_skipped_pkts_malloc=0      num_inbound_skipped_pkts_tcpcb=2        num_outbound_skipped_pkts_tcpcb=2       num_inbound_skipped_pkts_inpcb=0        num_outbound_skipped_pkts_inpcb=0       total_skipped_tcp_pkts=4        flow_list=fd00::2;47852-fd00::3;5001,fd00::2;64057-fd00::3;5001,

performance test of base vs. D40302

Using an Emulab testbed with two PC3000 nodes on a single 1Gb/s link, the CPU is the bottleneck with only one core (One Intel Xeon single-core CPU at 3.0 GHz (Nocona) with HyperThreading).

test IPv4 traffic

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.398 ms
64 bytes from 10.1.1.3: icmp_seq=1 ttl=64 time=0.349 ms
64 bytes from 10.1.1.3: icmp_seq=2 ttl=64 time=0.253 ms
64 bytes from 10.1.1.3: icmp_seq=3 ttl=64 time=0.333 ms
64 bytes from 10.1.1.3: icmp_seq=4 ttl=64 time=0.289 ms

--- r1-link1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.253/0.325/0.398/0.050 ms

base performance:

root@s1:~ # sysctl net.inet.siftr.port_filter=5001
net.inet.siftr.port_filter: 0 -> 5001
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -c r1 -t 10 -i 1
------------------------------------------------------------
Client connecting to r1, TCP port 5001
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.1.2 port 64666 connected with 10.1.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-1.00 sec  68.3 MBytes   573 Mbits/sec
[  1] 1.00-2.00 sec  68.1 MBytes   571 Mbits/sec
[  1] 2.00-3.00 sec  69.2 MBytes   581 Mbits/sec
[  1] 3.00-4.00 sec  67.2 MBytes   564 Mbits/sec
[  1] 4.00-5.00 sec  67.8 MBytes   568 Mbits/sec
[  1] 5.00-6.00 sec  67.4 MBytes   565 Mbits/sec
[  1] 6.00-7.00 sec  69.9 MBytes   586 Mbits/sec
[  1] 7.00-8.00 sec  66.0 MBytes   554 Mbits/sec
[  1] 8.00-9.00 sec  67.6 MBytes   567 Mbits/sec
[  1] 9.00-10.00 sec  68.2 MBytes   573 Mbits/sec
[  1] 0.00-10.02 sec   680 MBytes   569 Mbits/sec
root@s1:~ # iperf -c r1 -t 60 -i 10
------------------------------------------------------------
Client connecting to r1, TCP port 5001
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.1.2 port 21674 connected with 10.1.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.00 sec   651 MBytes   546 Mbits/sec
[  1] 10.00-20.00 sec   670 MBytes   562 Mbits/sec
[  1] 20.00-30.00 sec   672 MBytes   563 Mbits/sec
[  1] 30.00-40.00 sec   665 MBytes   558 Mbits/sec
[  1] 40.00-50.00 sec   668 MBytes   561 Mbits/sec
[  1] 50.00-60.00 sec   672 MBytes   563 Mbits/sec
[  1] 0.00-60.02 sec  3.90 GBytes   559 Mbits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0

after change:

root@s1:/usr/obj/usr/src/amd64.amd64/sys/modules/siftr # kldload ./siftr.ko 

Statistical Information For TCP Research (SIFTR) 1.3.0
          http://caia.swin.edu.au/urp/newtcp

root@s1:/usr/obj/usr/src/amd64.amd64/sys/modules/siftr # cd ~
root@s1:~ # 
root@s1:~ # 
root@s1:~ # 
root@s1:~ # sysctl net.inet.siftr.port_filter=5001
net.inet.siftr.port_filter: 0 -> 5001
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -c r1 -t 10 -i 1
------------------------------------------------------------
Client connecting to r1, TCP port 5001
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.1.2 port 52571 connected with 10.1.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-1.00 sec  72.0 MBytes   604 Mbits/sec
[  1] 1.00-2.00 sec  71.2 MBytes   598 Mbits/sec
[  1] 2.00-3.00 sec  71.2 MBytes   598 Mbits/sec
[  1] 3.00-4.00 sec  71.5 MBytes   600 Mbits/sec
[  1] 4.00-5.00 sec  73.1 MBytes   613 Mbits/sec
[  1] 5.00-6.00 sec  71.6 MBytes   601 Mbits/sec
[  1] 6.00-7.00 sec  70.8 MBytes   593 Mbits/sec
[  1] 7.00-8.00 sec  73.4 MBytes   616 Mbits/sec
[  1] 8.00-9.00 sec  72.2 MBytes   606 Mbits/sec
[  1] 9.00-10.00 sec  73.1 MBytes   613 Mbits/sec
[  1] 0.00-10.02 sec   720 MBytes   603 Mbits/sec
root@s1:~ # iperf -c r1 -t 60 -i 10
------------------------------------------------------------
Client connecting to r1, TCP port 5001
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.1.2 port 23221 connected with 10.1.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.00 sec   695 MBytes   583 Mbits/sec
[  1] 10.00-20.00 sec   723 MBytes   606 Mbits/sec
[  1] 20.00-30.00 sec   722 MBytes   605 Mbits/sec
[  1] 30.00-40.00 sec   713 MBytes   598 Mbits/sec
[  1] 40.00-50.00 sec   723 MBytes   606 Mbits/sec
[  1] 50.00-60.00 sec   721 MBytes   605 Mbits/sec
[  1] 0.00-60.02 sec  4.20 GBytes   601 Mbits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0

This patch brings about +6% ~ +8% better performance for the IPv4 traffic.

test IPv6 traffic

root@s1:~ # ping6 -c 5 fd00::3
PING6(56=40+8+8 bytes) fd00::2 --> fd00::3
16 bytes from fd00::3, icmp_seq=0 hlim=64 time=0.336 ms
16 bytes from fd00::3, icmp_seq=1 hlim=64 time=0.262 ms
16 bytes from fd00::3, icmp_seq=2 hlim=64 time=0.269 ms
16 bytes from fd00::3, icmp_seq=3 hlim=64 time=0.257 ms
16 bytes from fd00::3, icmp_seq=4 hlim=64 time=0.270 ms

--- fd00::3 ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.257/0.279/0.336/0.029 ms

base performance:

root@s1:~ # sysctl net.inet.siftr.port_filter=5001
net.inet.siftr.port_filter: 0 -> 5001
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -Vc fd00::3 -t 10 -i 1
------------------------------------------------------------
Client connecting to fd00::3, TCP port 5001
TCP window size: 32.3 KByte (default)
------------------------------------------------------------
[  1] local fd00::2 port 64695 connected with fd00::3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-1.00 sec  77.1 MBytes   647 Mbits/sec
[  1] 1.00-2.00 sec  49.8 MBytes   417 Mbits/sec
[  1] 2.00-3.00 sec  79.8 MBytes   669 Mbits/sec
[  1] 3.00-4.00 sec  79.0 MBytes   663 Mbits/sec
[  1] 4.00-5.00 sec  38.2 MBytes   321 Mbits/sec
[  1] 5.00-6.00 sec  74.4 MBytes   624 Mbits/sec
[  1] 6.00-7.00 sec  51.0 MBytes   428 Mbits/sec
[  1] 7.00-8.00 sec  62.0 MBytes   520 Mbits/sec
[  1] 8.00-9.00 sec  81.8 MBytes   686 Mbits/sec
[  1] 9.00-10.00 sec  55.0 MBytes   461 Mbits/sec
[  1] 0.00-10.02 sec   648 MBytes   543 Mbits/sec
root@s1:~ # iperf -Vc fd00::3 -t 60 -i 10
------------------------------------------------------------
Client connecting to fd00::3, TCP port 5001
TCP window size: 32.3 KByte (default)
------------------------------------------------------------
[  1] local fd00::2 port 56627 connected with fd00::3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.00 sec   671 MBytes   563 Mbits/sec
[  1] 10.00-20.00 sec   568 MBytes   476 Mbits/sec
[  1] 20.00-30.00 sec   624 MBytes   523 Mbits/sec
[  1] 30.00-40.00 sec   607 MBytes   509 Mbits/sec
[  1] 40.00-50.00 sec   602 MBytes   505 Mbits/sec
[  1] 50.00-60.00 sec   622 MBytes   522 Mbits/sec
[  1] 0.00-60.03 sec  3.61 GBytes   516 Mbits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0
root@s1:~ # ll /var/log/siftr.log
-rw-r--r--  1 root  wheel   825M May 29 05:04 /var/log/siftr.log

after change:

root@s1:~ # sysctl net.inet.siftr.port_filter=5001
net.inet.siftr.port_filter: 0 -> 5001
root@s1:~ # rm /var/log/siftr.log
root@s1:~ # sysctl net.inet.siftr.enabled=1
net.inet.siftr.enabled: 0 -> 1
root@s1:~ # iperf -Vc fd00::3 -t 10 -i 1
------------------------------------------------------------
Client connecting to fd00::3, TCP port 5001
TCP window size: 32.3 KByte (default)
------------------------------------------------------------
[  1] local fd00::2 port 25448 connected with fd00::3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-1.00 sec  70.3 MBytes   589 Mbits/sec
[  1] 1.00-2.00 sec  81.6 MBytes   685 Mbits/sec
[  1] 2.00-3.00 sec  67.8 MBytes   568 Mbits/sec
[  1] 3.00-4.00 sec  73.8 MBytes   619 Mbits/sec
[  1] 4.00-5.00 sec  72.6 MBytes   609 Mbits/sec
[  1] 5.00-6.00 sec  70.8 MBytes   593 Mbits/sec
[  1] 6.00-7.00 sec  78.1 MBytes   655 Mbits/sec
[  1] 7.00-8.00 sec  67.9 MBytes   569 Mbits/sec
[  1] 8.00-9.00 sec  75.4 MBytes   632 Mbits/sec
[  1] 9.00-10.00 sec  71.4 MBytes   599 Mbits/sec
[  1] 0.00-10.01 sec   730 MBytes   611 Mbits/sec
root@s1:~ # iperf -Vc fd00::3 -t 60 -i 10
------------------------------------------------------------
Client connecting to fd00::3, TCP port 5001
TCP window size: 32.3 KByte (default)
------------------------------------------------------------
[  1] local fd00::2 port 28364 connected with fd00::3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.00 sec   732 MBytes   614 Mbits/sec
[  1] 10.00-20.00 sec   700 MBytes   588 Mbits/sec
[  1] 20.00-30.00 sec   732 MBytes   614 Mbits/sec
[  1] 30.00-40.00 sec   731 MBytes   614 Mbits/sec
[  1] 40.00-50.00 sec   699 MBytes   586 Mbits/sec
[  1] 50.00-60.00 sec   724 MBytes   607 Mbits/sec
[  1] 0.00-60.01 sec  4.22 GBytes   604 Mbits/sec
root@s1:~ # sysctl net.inet.siftr.enabled=0
net.inet.siftr.enabled: 1 -> 0
root@s1:~ # ll /var/log/siftr.log
-rw-r--r--  1 root  wheel   842M May 29 05:09 /var/log/siftr.log

This patch brings about +12% ~ +17% better performance for the IPv6 traffic.

chengcui/testD40302 (last edited 2023-05-29T11:13:45+0000 by chengcui)