test result of D40302
Contents
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.