tests in LAN

Linux VM receiver

One data sender and one data receiver and both are Virtual Machines (VMs).
Each VM is hosted by Bhyve in a separate physical box (Beelink SER5 AMD Mini PC) that is using FreeBSD 14.1 release OS.
The physical boxes (Beelink SER5 AMD Mini PCs) are connected through a 1Gbps hub, which is connected to a 1Gbps router.

test config

sender kernel info

FreeBSD 15.0-CURRENT (GENERIC) #135 main-n270731-62cb671705eb-dirty

receiver kernel info

Linux n2linuxvm 5.15.0-101-generic #111-Ubuntu SMP

root@n1fbsd:~ # ifconfig vtnet0
vtnet0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
        ether 58:9c:fc:0e:8c:fb
        inet 192.168.50.37 netmask 0xffffff00 broadcast 192.168.50.255
        inet6 fe80::5a9c:fcff:fe0e:8cfb%vtnet0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (10Gbase-T <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
root@n1fbsd:~ # ping -c 5 -S 192.168.50.37 192.168.50.89
PING 192.168.50.89 (192.168.50.89) from 192.168.50.37: 56 data bytes
64 bytes from 192.168.50.89: icmp_seq=0 ttl=64 time=0.485 ms
64 bytes from 192.168.50.89: icmp_seq=1 ttl=64 time=0.649 ms
64 bytes from 192.168.50.89: icmp_seq=2 ttl=64 time=0.778 ms
64 bytes from 192.168.50.89: icmp_seq=3 ttl=64 time=0.711 ms
64 bytes from 192.168.50.89: icmp_seq=4 ttl=64 time=0.799 ms

--- 192.168.50.89 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.485/0.685/0.799/0.113 ms

root@n2linuxvm:~ # ip addr show enp0s5
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 58:9c:fc:0d:d6:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.89/24 metric 100 brd 192.168.50.255 scope global dynamic enp0s5
       valid_lft 84995sec preferred_lft 84995sec
    inet6 fe80::5a9c:fcff:fe0d:d64e/64 scope link 
       valid_lft forever preferred_lft forever

iperf -B 192.168.50.37 -c 192.168.50.89 -l 1M -t 10 -i 1 -e

test result

version

throughput

congestions count

data pkt retransmission

RTO count

base

940 Mbits/sec

3

415 data packets (599508 bytes) retransmitted

0

patch

940 Mbits/sec

1

380 data packets (548828 bytes) retransmitted

0

newreno

940 Mbits/sec

4

264 data packets (382272 bytes) retransmitted

0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 1244 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 64036 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 16:00:09.453 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 1.00-2.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 2.00-3.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 3.00-4.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 4.00-5.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 5.00-6.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 6.00-7.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 7.00-8.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 8.00-9.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 9.00-10.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 0.00-10.03 sec  1.10 GBytes   940 Mbits/sec  1124/0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 1178 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 58453 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 12:47:14.333 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 1.00-2.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 2.00-3.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 3.00-4.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 4.00-5.00 sec   111 MBytes   931 Mbits/sec  111/0
[  1] 5.00-6.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 6.00-7.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 7.00-8.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 8.00-9.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 9.00-10.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 0.00-10.02 sec  1.10 GBytes   940 Mbits/sec  1123/0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 1208 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 64082 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 15:57:54.557 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 1.00-2.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 2.00-3.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 3.00-4.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 4.00-5.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 5.00-6.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 6.00-7.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 7.00-8.00 sec   112 MBytes   940 Mbits/sec  112/0
[  1] 8.00-9.00 sec   111 MBytes   931 Mbits/sec  111/0
[  1] 9.00-10.00 sec   113 MBytes   948 Mbits/sec  113/0
[  1] 0.00-10.03 sec  1.10 GBytes   940 Mbits/sec  1124/0

1% drop rate test in Linux VM receiver

test config

I added 1% packet drop rate in the Linux VM, so this test uses the same test method in testD40185.

sender kernel info

FreeBSD 15.0-CURRENT #0 main-0667538b88-dirty: Thu Jun 20 08:45:01 MDT 2024

receiver kernel info

Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-112-generic x86_64) Thu May 23 07:48:21 UTC 2024

root@n1fbsd:~ # ifconfig vtnet0
vtnet0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
        ether 58:9c:fc:0e:8c:fb
        inet 192.168.50.37 netmask 0xffffff00 broadcast 192.168.50.255
        inet6 fe80::5a9c:fcff:fe0e:8cfb%vtnet0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (10Gbase-T <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
root@n1fbsd:~ # ping -c 5 -S 192.168.50.37 192.168.50.89
PING 192.168.50.89 (192.168.50.89) from 192.168.50.37: 56 data bytes
64 bytes from 192.168.50.89: icmp_seq=0 ttl=64 time=0.444 ms
64 bytes from 192.168.50.89: icmp_seq=1 ttl=64 time=0.804 ms
64 bytes from 192.168.50.89: icmp_seq=2 ttl=64 time=0.692 ms
64 bytes from 192.168.50.89: icmp_seq=3 ttl=64 time=0.815 ms
64 bytes from 192.168.50.89: icmp_seq=4 ttl=64 time=0.689 ms

--- 192.168.50.89 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.444/0.689/0.815/0.133 ms

root@n2linuxvm:~ # ip addr show enp0s5
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 58:9c:fc:0d:d6:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.89/24 metric 100 brd 192.168.50.255 scope global dynamic enp0s5
       valid_lft 86122sec preferred_lft 86122sec
    inet6 fe80::5a9c:fcff:fe0d:d64e/64 scope link 
       valid_lft forever preferred_lft forever
root@n2linuxvm:~ # iptables -A INPUT -p tcp --dport 5001 -m statistic --mode nth --every 100 --packet 0 -j DROP
root@n2linuxvm:~ #

iperf -B 192.168.50.37 -c 192.168.50.89 -l 1M -t 10 -i 1 -e

test result

version

throughput

congestions count

data pkt retransmission

RTO count

base

193 Mbits/sec

484

1895 data packets (2743960 bytes) retransmitted

0

patch

23.8 Mbits/sec

191

208 data packets (301184 bytes) retransmitted

0

newreno

918 Mbits/sec

1298

8222 data packets (11905456 bytes) retransmitted

0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 1006 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 57874 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 11:59:58.366 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec  27.0 MBytes   226 Mbits/sec  27/0
[  1] 1.00-2.00 sec  21.0 MBytes   176 Mbits/sec  21/0
[  1] 2.00-3.00 sec  24.0 MBytes   201 Mbits/sec  24/0
[  1] 3.00-4.00 sec  23.0 MBytes   193 Mbits/sec  23/0
[  1] 4.00-5.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 5.00-6.00 sec  24.0 MBytes   201 Mbits/sec  24/0
[  1] 6.00-7.00 sec  23.0 MBytes   193 Mbits/sec  23/0
[  1] 7.00-8.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 8.00-9.00 sec  23.0 MBytes   193 Mbits/sec  23/0
[  1] 9.00-10.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 0.00-10.07 sec   232 MBytes   193 Mbits/sec  232/0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 1088 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 19749 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 12:23:03.058 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec  6.00 MBytes  50.3 Mbits/sec  6/0
[  1] 1.00-2.00 sec  3.00 MBytes  25.2 Mbits/sec  3/0
[  1] 2.00-3.00 sec  2.00 MBytes  16.8 Mbits/sec  2/0
[  1] 3.00-4.00 sec  2.00 MBytes  16.8 Mbits/sec  2/0
[  1] 4.00-5.00 sec  3.00 MBytes  25.2 Mbits/sec  3/0
[  1] 5.00-6.00 sec  2.00 MBytes  16.8 Mbits/sec  2/0
[  1] 6.00-7.00 sec  3.00 MBytes  25.2 Mbits/sec  3/0
[  1] 7.00-8.00 sec  2.00 MBytes  16.8 Mbits/sec  2/0
[  1] 8.00-9.00 sec  3.00 MBytes  25.2 Mbits/sec  3/0
[  1] 9.00-10.00 sec  2.00 MBytes  16.8 Mbits/sec  2/0
[  1] 0.00-10.24 sec  29.0 MBytes  23.8 Mbits/sec  29/0

------------------------------------------------------------
Client connecting to 192.168.50.89, TCP port 5001 with pid 987 (1 flows)
Write buffer size: 1048576 Byte
TOS set to 0x0 (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.50.37%vtnet0 port 19490 connected with 192.168.50.89 port 5001 (sock=3) on 2024-06-21 11:58:49.535 (EDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec   109 MBytes   914 Mbits/sec  109/0
[  1] 1.00-2.00 sec   110 MBytes   923 Mbits/sec  110/0
[  1] 2.00-3.00 sec   109 MBytes   914 Mbits/sec  109/0
[  1] 3.00-4.00 sec   110 MBytes   923 Mbits/sec  110/0
[  1] 4.00-5.00 sec   109 MBytes   914 Mbits/sec  109/0
[  1] 5.00-6.00 sec   110 MBytes   923 Mbits/sec  110/0
[  1] 6.00-7.00 sec   108 MBytes   906 Mbits/sec  108/0
[  1] 7.00-8.00 sec   110 MBytes   923 Mbits/sec  110/0
[  1] 8.00-9.00 sec   109 MBytes   914 Mbits/sec  109/0
[  1] 9.00-10.00 sec   110 MBytes   923 Mbits/sec  110/0
[  1] 0.00-10.01 sec  1.07 GBytes   918 Mbits/sec  1095/0

TCP CUBIC cwnd in base: attachment:1pc_lx_base_cwnd_chart.png TCP CUBIC cwnd in patch: attachment:1pc_lx_patch_cwnd_chart.png TCP newreno cwnd: attachment:1pc_lx_newreno_cwnd_chart.png

TCP srtt in base: attachment:1pc_lx_base_srtt_chart.png TCP srtt in patch: attachment:1pc_lx_patch_srtt_chart.png TCP newreno srtt: attachment:1pc_lx_newreno_srtt_chart.png

1% drop rate test in Emulab Emulation over 1Gbps

test config

On a 1Gbps link between a FreeBSD-15-current node and a Ubuntu22.04 (Linux) node, this test uses the same test method in testD40185.
FreeBSD node is the traffic sender (s1) using iperf, and the Linux node (r1) is the traffic receiver.

sender kernel info

FreeBSD 15.0-CURRENT #0 main-0667538b88-dirty: Thu Jun 20 08:45:01 MDT 2024

receiver kernel info

Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-112-generic x86_64) Thu May 23 07:48:21 UTC 2024

cc@s1:~ % ifconfig bce3
bce3: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether 00:24:e8:79:33:c8
        inet 10.1.2.2 netmask 0xffffff00 broadcast 10.1.2.255
        media: Ethernet 1000baseT <full-duplex>
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
cc@s1:~ % ping -c 5 r1
PING r1-link1 (10.1.2.3): 56 data bytes
64 bytes from 10.1.2.3: icmp_seq=0 ttl=64 time=0.172 ms
64 bytes from 10.1.2.3: icmp_seq=1 ttl=64 time=0.156 ms
64 bytes from 10.1.2.3: icmp_seq=2 ttl=64 time=0.163 ms
64 bytes from 10.1.2.3: icmp_seq=3 ttl=64 time=0.159 ms
64 bytes from 10.1.2.3: icmp_seq=4 ttl=64 time=0.153 ms

--- r1-link1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.153/0.161/0.172/0.007 ms

cc@r1:~ % ip addr show eno4
5: eno4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:24:e8:79:19:e6 brd ff:ff:ff:ff:ff:ff
    altname enp2s0f1
    inet 10.1.2.3/24 brd 10.1.2.255 scope global eno4
       valid_lft forever preferred_lft forever
    inet6 fe80::224:e8ff:fe79:19e6/64 scope link 
       valid_lft forever preferred_lft forever
cc@r1:~ % sudo iptables -A INPUT -p tcp --dport 5001 -m statistic --mode nth --every 100 --packet 0 -j DROP
cc@r1:~ %

iperf -B 10.1.2.2 -c 10.1.2.3 -l 1M -t 10 -i 1 -e

test result

version

throughput

base

712 Mbits/sec

patch

180 Mbits/sec

newreno

783 Mbits/sec

------------------------------------------------------------
Client connecting to 10.1.2.3, TCP port 5001 with pid 1910 (1/0 flows/load)
Write buffer size: 1048576 Byte
TCP congestion control using cubic
TOS defaults to 0x0 (dscp=0,ecn=0) (Nagle on)
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.2.2%bce3 port 19899 connected with 10.1.2.3 port 5001 (sock=3) on 2024-06-20 09:18:48.877 (MDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec  86.0 MBytes   721 Mbits/sec  86/0
[  1] 1.00-2.00 sec  84.0 MBytes   705 Mbits/sec  84/0
[  1] 2.00-3.00 sec  81.0 MBytes   679 Mbits/sec  81/0
[  1] 3.00-4.00 sec  81.0 MBytes   679 Mbits/sec  81/0
[  1] 4.00-5.00 sec  83.0 MBytes   696 Mbits/sec  83/0
[  1] 5.00-6.00 sec  83.0 MBytes   696 Mbits/sec  83/0
[  1] 6.00-7.00 sec  87.0 MBytes   730 Mbits/sec  87/0
[  1] 7.00-8.00 sec  88.0 MBytes   738 Mbits/sec  88/0
[  1] 8.00-9.00 sec  88.0 MBytes   738 Mbits/sec  88/0
[  1] 9.00-10.00 sec  89.0 MBytes   747 Mbits/sec  89/0
[  1] 0.00-10.02 sec   851 MBytes   712 Mbits/sec  851/0

------------------------------------------------------------
Client connecting to 10.1.2.3, TCP port 5001 with pid 1721 (1/0 flows/load)
Write buffer size: 1048576 Byte
TCP congestion control using cubic
TOS defaults to 0x0 (dscp=0,ecn=0) (Nagle on)
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 10.1.2.2%bce3 port 53960 connected with 10.1.2.3 port 5001 (sock=3) on 2024-06-20 09:29:53.549 (MDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec  15.0 MBytes   126 Mbits/sec  15/0
[  1] 1.00-2.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 2.00-3.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 3.00-4.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 4.00-5.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 5.00-6.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 6.00-7.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 7.00-8.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 8.00-9.00 sec  22.0 MBytes   185 Mbits/sec  22/0
[  1] 9.00-10.00 sec  23.0 MBytes   193 Mbits/sec  23/0
[  1] 0.00-10.04 sec   215 MBytes   180 Mbits/sec  215/0

------------------------------------------------------------
Client connecting to 10.1.2.3, TCP port 5001 with pid 1883 (1/0 flows/load)
Write buffer size: 1048576 Byte
TCP congestion control using newreno
TOS defaults to 0x0 (dscp=0,ecn=0) (Nagle on)
TCP window size: 32.8 KByte (default)
------------------------------------------------------------
[  1] local 10.1.2.2%bce3 port 16278 connected with 10.1.2.3 port 5001 (sock=3) on 2024-06-20 09:13:48.960 (MDT)
[ ID] Interval        Transfer    Bandwidth       Write/Err
[  1] 0.00-1.00 sec  96.0 MBytes   805 Mbits/sec  96/0
[  1] 1.00-2.00 sec  97.0 MBytes   814 Mbits/sec  97/0
[  1] 2.00-3.00 sec  96.0 MBytes   805 Mbits/sec  96/0
[  1] 3.00-4.00 sec  94.0 MBytes   789 Mbits/sec  94/0
[  1] 4.00-5.00 sec  94.0 MBytes   789 Mbits/sec  94/0
[  1] 5.00-6.00 sec  93.0 MBytes   780 Mbits/sec  93/0
[  1] 6.00-7.00 sec  89.0 MBytes   747 Mbits/sec  89/0
[  1] 7.00-8.00 sec  93.0 MBytes   780 Mbits/sec  93/0
[  1] 8.00-9.00 sec  90.0 MBytes   755 Mbits/sec  90/0
[  1] 9.00-10.00 sec  91.0 MBytes   763 Mbits/sec  91/0
[  1] 0.00-10.01 sec   934 MBytes   783 Mbits/sec  934/0

1% drop rate test in Emulab Emulation over 10Gbps

tests in WAN

chengcui/testD41715 (last edited 2024-07-10T18:37:58+0000 by chengcui)