What am I doing wrong that it can be this huge of a performance gap?
OK, back to basics here. I couldn't leave well enough alone and I did more testing tonight because I just couldn't believe that my CPU couldn't even do single threaded gigabit. Here's my test scenario:
Test Scenario 1:
- Physical Linux Server (CentOS 7) on VLAN 2 (iperf3 client)
- Virtual Linux Server (CentOS 7) on VLAN 24 (iperf3 server)
- Dell PowerEdge R430 w/Intel X520-SR2 and HardenedBSD 12-STABLE (BUILD-LATEST 2020-08-31)
Single Threaded:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.00 GBytes 863 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.00 GBytes 860 Mbits/sec receiver
6 Parallel Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 2.23 GBytes 1.91 Gbits/sec 938 sender
[SUM] 0.00-10.00 sec 2.22 GBytes 1.90 Gbits/sec receiver
Notice a common theme here with the ~850 Mbps single threaded test. It's pretty close to what I get with OPNsense. Note this is THROUGH the firewall and not from the firewall. Also note my system did have IPv6 addresses from my ISP on each of the interfaces, though, I was only testing IPv4 traffic.
Test Scenario 2:
- Physical Linux Server (CentOS 7) on VLAN 2 (iperf3 client)
- Virtual Linux Server (CentOS 7) on VLAN 24 (iperf3 server)
- Dell PowerEdge R430 w/Intel X520-SR2 and FreeBSD 12.1-RELEASE
Single Threaded:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 9.75 GBytes 8.38 Gbits/sec 573 sender
[ 4] 0.00-10.00 sec 9.75 GBytes 8.38 Gbits/sec receiver
6 Parallel Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 10.5 GBytes 9.05 Gbits/sec 3607 sender
[SUM] 0.00-10.00 sec 10.5 GBytes 9.04 Gbits/sec receiver
I couldn't believe my eyes as I had to do a triple check that it was in fact pushing 8.38 Gbps THROUGH the FreeBSD 12.1 server and it wasn't taking some magical alternate path somehow. It was, in fact, going through the FreeBSD router. As you can see, parallel test is about 1 Gbps less than wire speed. Excellent! Also note my system did have IPv6 addresses from my ISP on each of the interfaces, though, I was only testing IPv4 traffic.
I thought I would enable pfctl on the FreeBSD 12.1 router to see how that affected performance. Not sure how much adding rules impacts throughput but I did notice a measurable drop in the single thread test (6.23 Gbps) but the parallel thread test was negligible (8.94 Gbps).
As of right now, it seems so so so strange to me that HardenedBSD exhibits the same exact single threaded throughput and likewise low parallel thread throughput over FreeBSD.
I am willing to accept that I am not accounting for something here; however, near wire speed throughput on the same exact hardware on FreeBSD versus HardenedBSD, it seems to me something is very different with HardenedBSD.
What are your thoughts?
@minimugmailOK, back to basics here. I couldn't leave well enough alone and I did more testing tonight because I just couldn't believe that my CPU couldn't even do single threaded gigabit. Here's my test scenario:
Test Scenario 1:
- Physical Linux Server (CentOS 7) on VLAN 2 (iperf3 client)
- Virtual Linux Server (CentOS 7) on VLAN 24 (iperf3 server)
- Dell PowerEdge R430 w/Intel X520-SR2 and HardenedBSD 12-STABLE (BUILD-LATEST 2020-08-31)
Single Threaded:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.00 GBytes 863 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.00 GBytes 860 Mbits/sec receiver
6 Parallel Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 2.23 GBytes 1.91 Gbits/sec 938 sender
[SUM] 0.00-10.00 sec 2.22 GBytes 1.90 Gbits/sec receiver
Notice a common theme here with the ~850 Mbps single threaded test. It's pretty close to what I get with OPNsense. Note this is THROUGH the firewall and not from the firewall. Also note my system did have IPv6 addresses from my ISP on each of the interfaces, though, I was only testing IPv4 traffic.
Test Scenario 2:
- Physical Linux Server (CentOS 7) on VLAN 2 (iperf3 client)
- Virtual Linux Server (CentOS 7) on VLAN 24 (iperf3 server)
- Dell PowerEdge R430 w/Intel X520-SR2 and FreeBSD 12.1-RELEASE
Single Threaded:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 9.75 GBytes 8.38 Gbits/sec 573 sender
[ 4] 0.00-10.00 sec 9.75 GBytes 8.38 Gbits/sec receiver
6 Parallel Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 10.5 GBytes 9.05 Gbits/sec 3607 sender
[SUM] 0.00-10.00 sec 10.5 GBytes 9.04 Gbits/sec receiver
I couldn't believe my eyes as I had to do a triple check that it was in fact pushing 8.38 Gbps THROUGH the FreeBSD 12.1 server and it wasn't taking some magical alternate path somehow. It was, in fact, going through the FreeBSD router. As you can see, parallel test is about 1 Gbps less than wire speed. Excellent! Also note my system did have IPv6 addresses from my ISP on each of the interfaces, though, I was only testing IPv4 traffic.
I thought I would enable pfctl on the FreeBSD 12.1 router to see how that affected performance. Not sure how much adding rules impacts throughput but I did notice a measurable drop in the single thread test (6.23 Gbps) but the parallel thread test was negligible (8.94 Gbps).
As of right now, it seems so so so strange to me that HardenedBSD exhibits the same exact single threaded throughput and likewise low parallel thread throughput over FreeBSD.
I am willing to accept that I am not accounting for something here; however, near wire speed throughput on the same exact hardware on FreeBSD versus HardenedBSD, it seems to me something is very different with HardenedBSD.
What are your thoughts?
pfSense 2.4.5p1 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 31.5 GBytes 4.50 Gbits/sec 11715 sender
[ 5] 0.00-60.00 sec 31.5 GBytes 4.50 Gbits/sec receiver
OpenWRT 19.07.3 1500MTU receiving from WAN, vmx3 NICs, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 47.5 GBytes 6.81 Gbits/sec 44252 sender
[ 5] 0.00-60.00 sec 47.5 GBytes 6.81 Gbits/sec receiver
OPNsense 20.7.2 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 6.83 GBytes 977 Mbits/sec 459 sender
[ 5] 0.00-60.00 sec 6.82 GBytes 977 Mbits/sec receiver
PS E:\Util> .\iperf3.exe -c 192.168.10.8 -p 26574
Connecting to host 192.168.10.8, port 26574
[ 4] local 192.168.12.4 port 50173 connected to 192.168.10.8 port 26574
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 49.1 MBytes 412 Mbits/sec
[ 4] 1.00-2.00 sec 52.5 MBytes 440 Mbits/sec
[ 4] 2.00-3.00 sec 51.8 MBytes 434 Mbits/sec
[ 4] 3.00-4.00 sec 52.4 MBytes 439 Mbits/sec
[ 4] 4.00-5.00 sec 52.1 MBytes 438 Mbits/sec
[ 4] 5.00-6.00 sec 52.6 MBytes 441 Mbits/sec
[ 4] 6.00-7.00 sec 52.4 MBytes 440 Mbits/sec
[ 4] 7.00-8.00 sec 46.4 MBytes 389 Mbits/sec
[ 4] 8.00-9.00 sec 49.0 MBytes 411 Mbits/sec
[ 4] 9.00-10.00 sec 51.6 MBytes 433 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 510 MBytes 428 Mbits/sec sender
[ 4] 0.00-10.00 sec 510 MBytes 428 Mbits/sec receiver
OK here are the test results as you requested:
FreeBSD 12.1 (pf enabled):
[root@fbsd1 ~]# uname -rv
12.1-RELEASE FreeBSD 12.1-RELEASE r354233 GENERIC
[root@fbsd1 ~]# top -aSH
last pid: 2954; load averages: 0.44, 0.42, 0.41 up 0+01:38:55 20:13:46
132 threads: 10 running, 104 sleeping, 18 waiting
CPU: 0.0% user, 0.0% nice, 19.7% system, 5.2% interrupt, 75.1% idle
Mem: 10M Active, 6100K Inact, 271M Wired, 21M Buf, 39G Free
Swap: 3968M Total, 3968M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 155 ki31 0 96K RUN 5 94:58 95.25% [idle{idle: cpu5}]
11 root 155 ki31 0 96K CPU1 1 93:26 83.69% [idle{idle: cpu1}]
11 root 155 ki31 0 96K RUN 0 94:44 73.68% [idle{idle: cpu0}]
11 root 155 ki31 0 96K CPU4 4 93:15 72.51% [idle{idle: cpu4}]
11 root 155 ki31 0 96K CPU3 3 93:36 64.80% [idle{idle: cpu3}]
11 root 155 ki31 0 96K RUN 2 92:55 62.29% [idle{idle: cpu2}]
0 root -76 - 0 480K CPU2 2 0:05 34.76% [kernel{if_io_tqg_2}]
0 root -76 - 0 480K CPU3 3 0:14 33.49% [kernel{if_io_tqg_3}]
12 root -52 - 0 304K CPU0 0 26:23 29.62% [intr{swi6: task queue}]
0 root -76 - 0 480K - 4 0:05 23.31% [kernel{if_io_tqg_4}]
0 root -76 - 0 480K - 0 0:05 12.31% [kernel{if_io_tqg_0}]
0 root -76 - 0 480K - 1 0:04 10.01% [kernel{if_io_tqg_1}]
12 root -88 - 0 304K WAIT 5 3:55 2.28% [intr{irq264: mfi0}]
0 root -76 - 0 480K - 5 0:06 1.88% [kernel{if_io_tqg_5}]
2954 root 20 0 13M 3676K CPU5 5 0:00 0.02% top -aSH
12 root -60 - 0 304K WAIT 0 0:01 0.01% [intr{swi4: clock (0)}]
0 root -76 - 0 480K - 4 0:02 0.01% [kernel{if_config_tqg_0}]
Single Thread:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 8.45 GBytes 7.26 Gbits/sec 802 sender
[ 4] 0.00-10.00 sec 8.45 GBytes 7.26 Gbits/sec receiver
10 Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 9.85 GBytes 8.46 Gbits/sec 2991 sender
[SUM] 0.00-10.00 sec 9.83 GBytes 8.45 Gbits/sec receiver
FreeBSD 12.1 with OPNsense Kernel (pf enabled):
[root@fbsd1 ~]# uname -rv
12.1-RELEASE FreeBSD 12.1-RELEASE r354233 GENERIC
[root@fbsd1 ~]# fetch https://pkg.opnsense.org/FreeBSD:12:amd64/20.7/sets/kernel-20.7.2-amd64.txz
[root@fbsd1 ~]# mv /boot/kernel /boot/kernel.old
[root@fbsd1 ~]# tar -C / -xf kernel-20.7.2-amd64.txz
[root@fbsd1 ~]# kldxref /boot/kernel
[root@fbsd1 ~]# reboot
[root@fbsd1 ~]# uname -rv
12.1-RELEASE-p8-HBSD FreeBSD 12.1-RELEASE-p8-HBSD #0 b3665671c4d(stable/20.7)-dirty: Thu Aug 27 05:58:53 CEST 2020 root@sensey64:/usr/obj/usr/src/amd64.amd64/sys/SMP
[root@fbsd1 ~]# top -aSH
last pid: 43891; load averages: 0.99, 0.49, 0.20 up 0+00:04:28 20:29:24
131 threads: 13 running, 100 sleeping, 18 waiting
CPU: 0.0% user, 0.0% nice, 62.5% system, 3.5% interrupt, 33.9% idle
Mem: 14M Active, 1184K Inact, 270M Wired, 21M Buf, 39G Free
Swap: 3968M Total, 3968M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
0 root -76 - 0 480K CPU3 3 0:08 81.27% [kernel{if_io_tqg_3}]
0 root -76 - 0 480K CPU1 1 0:09 74.39% [kernel{if_io_tqg_1}]
0 root -76 - 0 480K CPU5 5 0:08 73.20% [kernel{if_io_tqg_5}]
0 root -76 - 0 480K CPU0 0 0:21 71.79% [kernel{if_io_tqg_0}]
11 root 155 ki31 0 96K RUN 4 4:09 54.15% [idle{idle: cpu4}]
11 root 155 ki31 0 96K RUN 2 4:09 51.30% [idle{idle: cpu2}]
0 root -76 - 0 480K CPU2 2 0:05 40.10% [kernel{if_io_tqg_2}]
0 root -76 - 0 480K - 4 0:09 37.60% [kernel{if_io_tqg_4}]
11 root 155 ki31 0 96K RUN 0 4:03 26.48% [idle{idle: cpu0}]
11 root 155 ki31 0 96K RUN 5 4:14 25.87% [idle{idle: cpu5}]
11 root 155 ki31 0 96K RUN 1 4:09 24.32% [idle{idle: cpu1}]
12 root -52 - 0 304K RUN 2 1:12 20.63% [intr{swi6: task queue}]
11 root 155 ki31 0 96K CPU3 3 4:00 17.30% [idle{idle: cpu3}]
12 root -88 - 0 304K WAIT 5 0:10 1.47% [intr{irq264: mfi0}]
43891 root 20 0 13M 3660K CPU4 4 0:00 0.03% top -aSH
21 root -16 - 0 16K - 4 0:00 0.02% [rand_harvestq]
12 root -60 - 0 304K WAIT 1 0:00 0.02% [intr{swi4: clock (0)}]
Single Thread:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 2.89 GBytes 2.48 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 2.89 GBytes 2.48 Gbits/sec receiver
10 Threads:
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-10.00 sec 8.16 GBytes 7.01 Gbits/sec 4260 sender
[SUM] 0.00-10.00 sec 8.13 GBytes 6.98 Gbits/sec receiver
I included the "top -aSH" output again because my general observation between OPNsense kernel and FreeBSD 12.1 stock kernel is the "[kernel{if_io_tqg_X}]" process usage. Even on an actual OPNsense 20.7.2 installation I notice the exact same behavior of the "[kernel{if_io_tqg_X}]" being consistently higher and throughput significantly slower, specifically on single threaded tests. Note that both of the top outputs were only from the 10 thread count tests only as I did not think to capture them during the single threaded test.
I can't help but think that whatever high "[kernel{if_io_tqg_X}]" on the OPNsense kernel means is starving the system of throughput potential.
Thoughts? Next steps I can run and provide results from?
My first thought was maybe shared forwarding, but you have this with pfsense 2.5 too, correct?
Ok, iflib, so it's related to 12.X-only, but strange it doesn't happen to vanilla 12.1
https://forums.freebsd.org/threads/what-is-kernel-if_io_tqg-100-load-of-core.70642/
Do you still test with this hardware?
Dell T20 (Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz (4 cores))
My first thought was maybe shared forwarding, but you have this with pfsense 2.5 too, correct?I tried this with the recent build of pfSense 2.5 Development (built 9/2/2020) and was able to get around 2.0gbits/sec using the same test scenario that I posted about yesterday. So it is still lower throughput than pfSense 2.4.x running on FreeBSD 11.2 in the same test scenario, however it's still higher than what we're seeing with the OPNsense 20.7 series running the 12.x kernel.
Overall usage core wise when loading the FW.
16 cores but only few are used. Its like multicore usage in either IDS or PF is limited.
opnsense-update -kr 20.7.3-netmap
reboot
pfSense 2.5.0Build_10-16-20 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 14.8 GBytes 2.12 Gbits/sec 550 sender
[ 5] 0.00-60.00 sec 14.8 GBytes 2.12 Gbits/sec receiver
pfSense 2.4.5p1 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 29.4 GBytes 4.21 Gbits/sec 12054 sender
[ 5] 0.00-60.00 sec 29.4 GBytes 4.21 Gbits/sec receiver
OpenWRT 19.07.3 1500MTU receiving from WAN, vmx3 NICs, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 44.1 GBytes 6.31 Gbits/sec 40490 sender
[ 5] 0.00-60.00 sec 44.1 GBytes 6.31 Gbits/sec receiver
OPNsense 20.7.3 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 5.39 GBytes 771 Mbits/sec 362 sender
[ 5] 0.00-60.00 sec 5.39 GBytes 771 Mbits/sec receiver
OPNsense 20.7.3(netflow disabled) 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 6.66 GBytes 953 Mbits/sec 561 sender
[ 5] 0.00-60.00 sec 6.66 GBytes 953 Mbits/sec receiver
OPNsense 20.7.3(netmap kernel) 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 5.35 GBytes 766 Mbits/sec 434 sender
[ 5] 0.00-60.00 sec 5.35 GBytes 766 Mbits/sec receiver
OPNsense 20.7.3(netmap kernel, netflow disabled) 1500MTU receiving from WAN, vmx3 NICs, all hardware offloading disabled, default ruleset
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 6.55 GBytes 937 Mbits/sec 399 sender
[ 5] 0.00-60.00 sec 6.55 GBytes 937 Mbits/sec receiver
Lenovo 10T700AHMH desktop
6 CPUs x Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz
8GB Memory
|- OPNsense vm, 2 vcores
|- kali1, 1 vcore
|- kali2, 1 vcore
ethernetX.virtualDev = "vmxnet3"
[kali1, client] --- vswitch1 --- [OPNsense] --- vswitch2 --- [kali2, server]
192.168.1.100/24 - 192.168.1.1/24,192.168.2.1/24 - 192.168.2.100/24
# iperf3 -c 192.168.2.100 -t 10000
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.2.101 port 55240 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.34 GBytes 28.7 Gbits/sec 0 1.91 MBytes
[ 5] 1.00-2.00 sec 5.03 GBytes 43.2 Gbits/sec 0 2.93 MBytes
[ 5] 2.00-3.00 sec 5.24 GBytes 45.0 Gbits/sec 0 3.08 MBytes
[ 5] 3.00-4.00 sec 5.18 GBytes 44.5 Gbits/sec 0 3.08 MBytes
[ 5] 4.00-5.00 sec 5.23 GBytes 45.0 Gbits/sec 0 3.08 MBytes
# ethtool -K eth0 lro off
# ethtool -K eth0 tso off
# ethtool -K eth0 rx off
# ethtool -K eth0 tx off
# ethtool -K eth0 sg off
# iperf3 -c 192.168.2.100 -t 10000
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.2.101 port 55274 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.20 GBytes 10.3 Gbits/sec 0 458 KBytes
[ 5] 1.00-2.00 sec 1.30 GBytes 11.2 Gbits/sec 0 1007 KBytes
[ 5] 2.00-3.00 sec 1.30 GBytes 11.1 Gbits/sec 0 1.18 MBytes
[ 5] 3.00-4.00 sec 1.29 GBytes 11.1 Gbits/sec 0 1.24 MBytes
[ 5] 4.00-5.00 sec 1.30 GBytes 11.2 Gbits/sec 0 1.37 MBytes
[ 5] 5.00-6.00 sec 1.31 GBytes 11.2 Gbits/sec 0 1.43 MBytes
[ 5] 6.00-7.00 sec 1.30 GBytes 11.2 Gbits/sec 0 1.51 MBytes
# iperf3 -c 192.168.2.100 -t 10000
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.1.100 port 54870 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 280 MBytes 2.35 Gbits/sec 59 393 KBytes
[ 5] 1.00-2.00 sec 281 MBytes 2.35 Gbits/sec 33 383 KBytes
[ 5] 2.00-3.00 sec 279 MBytes 2.34 Gbits/sec 60 379 KBytes
[ 5] 3.00-4.00 sec 275 MBytes 2.31 Gbits/sec 46 380 KBytes
[ 5] 4.00-5.00 sec 276 MBytes 2.32 Gbits/sec 31 387 KBytes
The vmx driver supports multiple transmit and receive queues. Multiple
queues are only supported by certain VMware products, such as ESXi. The
number of queues allocated depends on the presence of MSI-X, the number
of configured CPUs, and the tunables listed below. FreeBSD does not
enable MSI-X support on VMware by default. The
hw.pci.honor_msi_blacklist tunable must be disabled to enable MSI-X
support.
# iperf3 -c 192.168.2.100
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.1.100 port 54878 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 350 MBytes 2.93 Gbits/sec 589 304 KBytes
[ 5] 1.00-2.00 sec 342 MBytes 2.87 Gbits/sec 378 337 KBytes
[ 5] 2.00-3.00 sec 342 MBytes 2.87 Gbits/sec 324 298 KBytes
[ 5] 3.00-4.00 sec 343 MBytes 2.88 Gbits/sec 292 301 KBytes
[ 5] 4.00-5.00 sec 345 MBytes 2.89 Gbits/sec 337 307 KBytes
[ 5] 5.00-6.00 sec 341 MBytes 2.86 Gbits/sec 266 301 KBytes
[ 5] 6.00-7.00 sec 341 MBytes 2.86 Gbits/sec 301 311 KBytes
# iperf3 -c 192.168.2.100 -P 2 -t 10000
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.1.100 port 54952 connected to 192.168.2.100 port 5201
[ 7] local 192.168.1.100 port 54954 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 261 MBytes 2.19 Gbits/sec 176 281 KBytes
[ 7] 0.00-1.00 sec 245 MBytes 2.05 Gbits/sec 136 342 KBytes
[SUM] 0.00-1.00 sec 506 MBytes 4.24 Gbits/sec 312
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 1.00-2.00 sec 302 MBytes 2.54 Gbits/sec 57 281 KBytes
[ 7] 1.00-2.00 sec 208 MBytes 1.74 Gbits/sec 25 375 KBytes
[SUM] 1.00-2.00 sec 510 MBytes 4.28 Gbits/sec 82
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 2.00-3.00 sec 304 MBytes 2.55 Gbits/sec 45 284 KBytes
[ 7] 2.00-3.00 sec 210 MBytes 1.76 Gbits/sec 9 392 KBytes
[SUM] 2.00-3.00 sec 514 MBytes 4.31 Gbits/sec 54
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 3.00-4.00 sec 304 MBytes 2.55 Gbits/sec 39 386 KBytes
[ 7] 3.00-4.00 sec 209 MBytes 1.75 Gbits/sec 15 331 KBytes
[SUM] 3.00-4.00 sec 512 MBytes 4.30 Gbits/sec 54
^C- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 4.00-4.95 sec 288 MBytes 2.54 Gbits/sec 39 287 KBytes
[ 7] 4.00-4.95 sec 198 MBytes 1.74 Gbits/sec 23 325 KBytes
[SUM] 4.00-4.95 sec 485 MBytes 4.28 Gbits/sec 62
Which is already way better, more sessions don't seem to impact my setup as far as I could see, but that could also
be caused by the number of queues confiure (2, see dmesg | grep vmx). In the new iflib world I wasn't able to
increase that number, so I'll leave it at that.
Just for fun, I disabled pf (pfctl -d) to get a bit of insights about how the firewall impacts our performance,
the details of that test are shown below (just for reference)
[code]
# iperf3 -c 192.168.2.100 -P 2 -t 10000
Connecting to host 192.168.2.100, port 5201
[ 5] local 192.168.1.100 port 55038 connected to 192.168.2.100 port 5201
[ 7] local 192.168.1.100 port 55040 connected to 192.168.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 300 MBytes 2.51 Gbits/sec 0 888 KBytes
[ 7] 0.00-1.00 sec 302 MBytes 2.53 Gbits/sec 69 2.18 MBytes
[SUM] 0.00-1.00 sec 601 MBytes 5.04 Gbits/sec 69
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 1.00-2.00 sec 335 MBytes 2.81 Gbits/sec 167 904 KBytes
[ 7] 1.00-2.00 sec 342 MBytes 2.87 Gbits/sec 536 1.67 MBytes
[SUM] 1.00-2.00 sec 678 MBytes 5.68 Gbits/sec 703
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 2.00-3.00 sec 335 MBytes 2.81 Gbits/sec 0 1.12 MBytes
[ 7] 2.00-3.00 sec 342 MBytes 2.87 Gbits/sec 0 1.81 MBytes
[SUM] 2.00-3.00 sec 678 MBytes 5.68 Gbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 3.00-4.00 sec 332 MBytes 2.79 Gbits/sec 280 1.04 MBytes
[ 7] 3.00-4.00 sec 344 MBytes 2.88 Gbits/sec 482 1.44 MBytes
[SUM] 3.00-4.00 sec 676 MBytes 5.67 Gbits/sec 762
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 4.00-5.00 sec 332 MBytes 2.79 Gbits/sec 206 1017 KBytes
[ 7] 4.00-5.00 sec 338 MBytes 2.83 Gbits/sec 292 1.22 MBytes
[SUM] 4.00-5.00 sec 670 MBytes 5.62 Gbits/sec 498
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 5.00-6.00 sec 331 MBytes 2.78 Gbits/sec 0 1.21 MBytes
[ 7] 5.00-6.00 sec 339 MBytes 2.84 Gbits/sec 0 1.40 MBytes
[SUM] 5.00-6.00 sec 670 MBytes 5.62 Gbits/sec 0
^C- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 6.00-6.60 sec 199 MBytes 2.78 Gbits/sec 0 1.32 MBytes
[ 7] 6.00-6.60 sec 202 MBytes 2.83 Gbits/sec 0 1.50 MBytes
[SUM] 6.00-6.60 sec 401 MBytes 5.61 Gbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
But 45 gbit/s???
The clients atached are simple kali linux installs, both using their own vSwitch, so traffic is measured from kali 1 to kali 2
But 45 gbit/s???The clients atached are simple kali linux installs, both using their own vSwitch, so traffic is measured from kali 1 to kali 2
:)
How did you set your NIC to do that?
It's under investigation, 20.7.4 May bring an already fixed kernel
iperf3 -c 10.254.win.ip -P 8 -w 128k 5201
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.02 sec 118 MBytes 98.8 Mbits/sec 0 sender
[ 5] 0.00-10.02 sec 118 MBytes 98.8 Mbits/sec receiver
[ 7] 0.00-10.02 sec 116 MBytes 96.8 Mbits/sec 0 sender
[ 7] 0.00-10.02 sec 116 MBytes 96.8 Mbits/sec receiver
[ 9] 0.00-10.02 sec 113 MBytes 94.5 Mbits/sec 0 sender
[ 9] 0.00-10.02 sec 113 MBytes 94.5 Mbits/sec receiver
[ 11] 0.00-10.02 sec 109 MBytes 91.5 Mbits/sec 0 sender
[ 11] 0.00-10.02 sec 109 MBytes 91.5 Mbits/sec receiver
[ 13] 0.00-10.02 sec 107 MBytes 89.7 Mbits/sec 0 sender
[ 13] 0.00-10.02 sec 107 MBytes 89.7 Mbits/sec receiver
[ 15] 0.00-10.02 sec 99.8 MBytes 83.5 Mbits/sec 0 sender
[ 15] 0.00-10.02 sec 99.8 MBytes 83.5 Mbits/sec receiver
[ 17] 0.00-10.02 sec 82.0 MBytes 68.7 Mbits/sec 0 sender
[ 17] 0.00-10.02 sec 82.0 MBytes 68.7 Mbits/sec receiver
[ 19] 0.00-10.02 sec 71.2 MBytes 59.6 Mbits/sec 0 sender
[ 19] 0.00-10.02 sec 71.2 MBytes 59.6 Mbits/sec receiver
[SUM] 0.00-10.02 sec 816 MBytes 683 Mbits/sec 0 sender
[SUM] 0.00-10.02 sec 816 MBytes 683 Mbits/sec receiver
iperf3 -c 10.254.win.ip -P 8 -R -w 128k 5201
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 88.4 MBytes 74.1 Mbits/sec sender
[ 5] 0.00-10.00 sec 88.2 MBytes 74.0 Mbits/sec receiver
[ 7] 0.00-10.00 sec 118 MBytes 98.7 Mbits/sec sender
[ 7] 0.00-10.00 sec 117 MBytes 98.5 Mbits/sec receiver
[ 9] 0.00-10.00 sec 91.9 MBytes 77.1 Mbits/sec sender
[ 9] 0.00-10.00 sec 91.7 MBytes 76.9 Mbits/sec receiver
[ 11] 0.00-10.00 sec 91.6 MBytes 76.9 Mbits/sec sender
[ 11] 0.00-10.00 sec 91.5 MBytes 76.7 Mbits/sec receiver
[ 13] 0.00-10.00 sec 92.6 MBytes 77.7 Mbits/sec sender
[ 13] 0.00-10.00 sec 92.4 MBytes 77.5 Mbits/sec receiver
[ 15] 0.00-10.00 sec 94.4 MBytes 79.2 Mbits/sec sender
[ 15] 0.00-10.00 sec 94.2 MBytes 79.0 Mbits/sec receiver
[ 17] 0.00-10.00 sec 100 MBytes 84.3 Mbits/sec sender
[ 17] 0.00-10.00 sec 100 MBytes 84.1 Mbits/sec receiver
[ 19] 0.00-10.00 sec 99.9 MBytes 83.8 Mbits/sec sender
[ 19] 0.00-10.00 sec 99.6 MBytes 83.6 Mbits/sec receiver
[SUM] 0.00-10.00 sec 777 MBytes 652 Mbits/sec sender
[SUM] 0.00-10.00 sec 775 MBytes 650 Mbits/sec receiver
iperf3 -c 10.254.win.ip -P 8 -w 128k 5201
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.17 GBytes 1.00 Gbits/sec 128 sender
[ 4] 0.00-10.00 sec 1.17 GBytes 1.00 Gbits/sec receiver
[ 6] 0.00-10.00 sec 275 MBytes 231 Mbits/sec 69 sender
[ 6] 0.00-10.00 sec 275 MBytes 231 Mbits/sec receiver
[ 8] 0.00-10.00 sec 1.12 GBytes 961 Mbits/sec 150 sender
[ 8] 0.00-10.00 sec 1.12 GBytes 961 Mbits/sec receiver
[ 10] 0.00-10.00 sec 1.13 GBytes 972 Mbits/sec 98 sender
[ 10] 0.00-10.00 sec 1.13 GBytes 972 Mbits/sec receiver
[ 12] 0.00-10.00 sec 264 MBytes 222 Mbits/sec 37 sender
[ 12] 0.00-10.00 sec 264 MBytes 222 Mbits/sec receiver
[ 14] 0.00-10.00 sec 1.13 GBytes 973 Mbits/sec 109 sender
[ 14] 0.00-10.00 sec 1.13 GBytes 973 Mbits/sec receiver
[ 16] 0.00-10.00 sec 280 MBytes 235 Mbits/sec 34 sender
[ 16] 0.00-10.00 sec 280 MBytes 235 Mbits/sec receiver
[ 18] 0.00-10.00 sec 246 MBytes 206 Mbits/sec 64 sender
[ 18] 0.00-10.00 sec 246 MBytes 206 Mbits/sec receiver
[SUM] 0.00-10.00 sec 5.59 GBytes 4.81 Gbits/sec 689 sender
[SUM] 0.00-10.00 sec 5.59 GBytes 4.80 Gbits/sec receiver
iperf3 -c 10.254.win.ip -P 8 -R -w 128k 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 3.17 GBytes 2.72 Gbits/sec sender
[ 4] 0.00-10.00 sec 3.17 GBytes 2.72 Gbits/sec receiver
[ 6] 0.00-10.00 sec 3.10 GBytes 2.66 Gbits/sec sender
[ 6] 0.00-10.00 sec 3.10 GBytes 2.66 Gbits/sec receiver
[ 8] 0.00-10.00 sec 2.91 GBytes 2.50 Gbits/sec sender
[ 8] 0.00-10.00 sec 2.91 GBytes 2.50 Gbits/sec receiver
[ 10] 0.00-10.00 sec 3.00 GBytes 2.58 Gbits/sec sender
[ 10] 0.00-10.00 sec 3.00 GBytes 2.58 Gbits/sec receiver
[ 12] 0.00-10.00 sec 2.78 GBytes 2.39 Gbits/sec sender
[ 12] 0.00-10.00 sec 2.78 GBytes 2.39 Gbits/sec receiver
[ 14] 0.00-10.00 sec 2.85 GBytes 2.45 Gbits/sec sender
[ 14] 0.00-10.00 sec 2.85 GBytes 2.45 Gbits/sec receiver
[ 16] 0.00-10.00 sec 2.68 GBytes 2.31 Gbits/sec sender
[ 16] 0.00-10.00 sec 2.68 GBytes 2.31 Gbits/sec receiver
[ 18] 0.00-10.00 sec 2.63 GBytes 2.26 Gbits/sec sender
[ 18] 0.00-10.00 sec 2.63 GBytes 2.26 Gbits/sec receiver
[SUM] 0.00-10.00 sec 23.1 GBytes 19.9 Gbits/sec sender
[SUM] 0.00-10.00 sec 23.1 GBytes 19.9 Gbits/sec receiver
I have customers pushing 6Gbit over vmxnet driver.
I have customers pushing 6Gbit over vmxnet driver.
OK. And what i'm supposed to do with this information? Not trying to be rude, but there is plenty of reports on this topic that goes against your scenario.
Do you have any idea what i could tune to achieve better performance then?
What about this idea?
https://xenomorph.net/freebsd/performance-esxi/
Where do you manually edit the rc.conf??
What about this idea?
https://xenomorph.net/freebsd/performance-esxi/
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.17 sec 118 MBytes 97.5 Mbits/sec 0 sender
[ 5] 0.00-10.17 sec 118 MBytes 97.5 Mbits/sec receiver
[ 7] 0.00-10.17 sec 120 MBytes 98.9 Mbits/sec 0 sender
[ 7] 0.00-10.17 sec 120 MBytes 98.9 Mbits/sec receiver
[ 9] 0.00-10.17 sec 120 MBytes 98.8 Mbits/sec 0 sender
[ 9] 0.00-10.17 sec 120 MBytes 98.8 Mbits/sec receiver
[ 11] 0.00-10.17 sec 117 MBytes 96.8 Mbits/sec 0 sender
[ 11] 0.00-10.17 sec 117 MBytes 96.8 Mbits/sec receiver
[ 13] 0.00-10.17 sec 118 MBytes 97.4 Mbits/sec 0 sender
[ 13] 0.00-10.17 sec 118 MBytes 97.4 Mbits/sec receiver
[ 15] 0.00-10.17 sec 119 MBytes 98.0 Mbits/sec 0 sender
[ 15] 0.00-10.17 sec 119 MBytes 98.0 Mbits/sec receiver
[ 17] 0.00-10.17 sec 90.8 MBytes 74.9 Mbits/sec 0 sender
[ 17] 0.00-10.17 sec 90.8 MBytes 74.9 Mbits/sec receiver
[ 19] 0.00-10.17 sec 72.2 MBytes 59.6 Mbits/sec 0 sender
[ 19] 0.00-10.17 sec 72.2 MBytes 59.6 Mbits/sec receiver
[SUM] 0.00-10.17 sec 875 MBytes 722 Mbits/sec 0 sender
[SUM] 0.00-10.17 sec 875 MBytes 722 Mbits/sec receiver
iperf Done.
vmx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=800428<VLAN_MTU,JUMBO_MTU,LRO>
ether 00:50:56:a5:d3:68
inet6 fe80::250:56ff:fea5:d368%vmx0 prefixlen 64 scopeid 0x1
media: Ethernet autoselect
status: active
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 1.08 GBytes 929 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 1.08 GBytes 929 Mbits/sec receiver
[ 7] 0.00-10.01 sec 510 MBytes 427 Mbits/sec 0 sender
[ 7] 0.00-10.01 sec 510 MBytes 427 Mbits/sec receiver
[ 9] 0.00-10.01 sec 1.05 GBytes 903 Mbits/sec 0 sender
[ 9] 0.00-10.01 sec 1.05 GBytes 903 Mbits/sec receiver
[ 11] 0.00-10.01 sec 953 MBytes 799 Mbits/sec 0 sender
[ 11] 0.00-10.01 sec 953 MBytes 799 Mbits/sec receiver
[ 13] 0.00-10.01 sec 447 MBytes 375 Mbits/sec 0 sender
[ 13] 0.00-10.01 sec 447 MBytes 375 Mbits/sec receiver
[ 15] 0.00-10.01 sec 409 MBytes 342 Mbits/sec 0 sender
[ 15] 0.00-10.01 sec 409 MBytes 342 Mbits/sec receiver
[ 17] 0.00-10.01 sec 379 MBytes 318 Mbits/sec 0 sender
[ 17] 0.00-10.01 sec 379 MBytes 318 Mbits/sec receiver
[ 19] 0.00-10.01 sec 825 MBytes 691 Mbits/sec 0 sender
[ 19] 0.00-10.01 sec 825 MBytes 691 Mbits/sec receiver
[SUM] 0.00-10.01 sec 5.57 GBytes 4.78 Gbits/sec 0 sender
[SUM] 0.00-10.01 sec 5.57 GBytes 4.78 Gbits/sec receiver
iperf Done.
root@fw01adb:~ # ifconfig vmx0
vmx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8507b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWFILTER,VLAN_HWTSO>
ether 00:50:56:a5:d3:68
inet6 fe80::250:56ff:fea5:d368%vmx0 prefixlen 64 scopeid 0x1
media: Ethernet autoselect
status: active
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
I have customers pushing 6Gbit over vmxnet driver.
OK. And what i'm supposed to do with this information? Not trying to be rude, but there is plenty of reports on this topic that goes against your scenario.
Do you have any idea what i could tune to achieve better performance then?
You wrote vmxnet cant handle more than one gb which is not true. Now when someone googles for similar problem they might think it's a general limitation. I have no idea about hyperviaors, but I dont want that wrong facts are going wild
@nwilder: would you be so kind not to keep spreading inaccurate / false information around. We don't use any modifications on the vmx driver, which can do more than 1Gbps at ease on a stock FreeBSD 12.1. LRO shouldn't be used on a router for obvious reasons (also pointed at in my earlier post https://forum.opnsense.org/index.php?topic=18754.msg90576#msg90576).
iperf3 -c 10.254.117.ip -B 10.254.110.ip -P 8 -w 128k 5201
[SUM] 0.00-10.00 sec 8.86 GBytes 7.61 Gbits/sec 0 sender
[SUM] 0.00-10.16 sec 8.86 GBytes 7.49 Gbits/sec receiver
vmx0: <VMware VMXNET3 Ethernet Adapter> port 0x5000-0x500f mem 0xfd4fc000-0xfd4fcfff,0xfd4fd000-0xfd4fdfff,0xfd4fe000-0xfd4fffff irq 19 at device 0.0 on pci4
vmx0: Using 4096 TX descriptors and 2048 RX descriptors
vmx0: Using 4 RX queues 4 TX queues
vmx0: failed to allocate 5 MSI-X vectors, err: 6
vmx0: Using an MSI interrupt
vmx0: Ethernet address: 00:50:56:a5:d3:68
vmx0: netmap queues/slots: TX 1/4096, RX 1/4096
vmx0: <VMware VMXNET3 Ethernet Adapter> port 0x5000-0x500f mem 0xfd4fc000-0xfd4fcfff,0xfd4fd000-0xfd4fdfff,0xfd4fe000-0xfd4fffff irq 19 at device 0.0 on pci4
vmx0: Using 4096 TX descriptors and 2048 RX descriptors
vmx0: Using 4 RX queues 4 TX queues
vmx0: Using MSI-X interrupts with 5 vectors
vmx0: Ethernet address: 00:50:56:a5:d3:68
vmx0: netmap queues/slots: TX 4/4096, RX 4/4096
root@fw01adb:~ # sysctl -a | grep blacklis
vm.page_blacklist:
hw.pci.honor_msi_blacklist: 0
[ ID] Interval Transfer Bandwidth Retr
[ 5] 0.00-10.23 sec 2.34 GBytes 1.96 Gbits/sec 0 sender
[ 5] 0.00-10.23 sec 2.34 GBytes 1.96 Gbits/sec receiver
[ 7] 0.00-10.23 sec 2.09 GBytes 1.75 Gbits/sec 0 sender
[ 7] 0.00-10.23 sec 2.09 GBytes 1.75 Gbits/sec receiver
[ 9] 0.00-10.23 sec 1.67 GBytes 1.40 Gbits/sec 0 sender
[ 9] 0.00-10.23 sec 1.67 GBytes 1.40 Gbits/sec receiver
[ 11] 0.00-10.23 sec 1.65 GBytes 1.39 Gbits/sec 0 sender
[ 11] 0.00-10.23 sec 1.65 GBytes 1.39 Gbits/sec receiver
[SUM] 0.00-10.23 sec 7.75 GBytes 6.50 Gbits/sec 0 sender
[SUM] 0.00-10.23 sec 7.75 GBytes 6.50 Gbits/sec receiver
Maybe this is some regression on 12.1.root@gateway:/ # uname -a
FreeBSD gateway.webtool.space 12.1-RELEASE-p10-HBSD FreeBSD 12.1-RELEASE-p10-HBSD #0 517e44a00df(stable/20.7)-dirty: Mon Sep 21 16:21:17 CEST 2020 root@sensey64:/usr/obj/usr/src/amd64.amd64/sys/SMP amd64
root@gateway:/ # iperf3 -c 192.168.1.56
Connecting to host 192.168.1.56, port 5201
[ 5] local 192.168.1.1 port 13640 connected to 192.168.1.56 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 125 MBytes 1.05 Gbits/sec 0 2.00 MBytes
[ 5] 1.00-2.00 sec 126 MBytes 1.06 Gbits/sec 0 2.00 MBytes
[ 5] 2.00-3.00 sec 132 MBytes 1.11 Gbits/sec 0 2.00 MBytes
[ 5] 3.00-4.00 sec 131 MBytes 1.10 Gbits/sec 0 2.00 MBytes
[ 5] 4.00-5.00 sec 132 MBytes 1.11 Gbits/sec 0 2.00 MBytes
[ 5] 5.00-6.00 sec 135 MBytes 1.13 Gbits/sec 0 2.00 MBytes
[ 5] 6.00-7.00 sec 138 MBytes 1.16 Gbits/sec 0 2.00 MBytes
[ 5] 7.00-8.00 sec 137 MBytes 1.15 Gbits/sec 0 2.00 MBytes
[ 5] 8.00-9.00 sec 133 MBytes 1.12 Gbits/sec 0 2.00 MBytes
[ 5] 9.00-10.00 sec 131 MBytes 1.10 Gbits/sec 0 2.00 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.29 GBytes 1.11 Gbits/sec 0 sender
[ 5] 0.00-10.00 sec 1.29 GBytes 1.11 Gbits/sec receiver
iperf Done.
avery@debbox:~$ uname -a
Linux debbox 5.4.0-4-amd64 #1 SMP Debian 5.4.19-1 (2020-02-13) x86_64 GNU/Linux
avery@debbox:~$ iperf3 -c 192.168.1.56
Connecting to host 192.168.1.56, port 5201
[ 5] local 192.168.1.39 port 58064 connected to 192.168.1.56 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 688 MBytes 5.77 Gbits/sec 0 2.00 MBytes
[ 5] 1.00-2.00 sec 852 MBytes 7.15 Gbits/sec 0 2.00 MBytes
[ 5] 2.00-3.00 sec 801 MBytes 6.72 Gbits/sec 1825 730 KBytes
[ 5] 3.00-4.00 sec 779 MBytes 6.53 Gbits/sec 33 1.13 MBytes
[ 5] 4.00-5.00 sec 788 MBytes 6.61 Gbits/sec 266 1.33 MBytes
[ 5] 5.00-6.00 sec 828 MBytes 6.94 Gbits/sec 392 1.43 MBytes
[ 5] 6.00-7.00 sec 830 MBytes 6.96 Gbits/sec 477 1.49 MBytes
[ 5] 7.00-8.00 sec 826 MBytes 6.93 Gbits/sec 1286 749 KBytes
[ 5] 8.00-9.00 sec 826 MBytes 6.93 Gbits/sec 0 1.26 MBytes
[ 5] 9.00-10.00 sec 775 MBytes 6.50 Gbits/sec 278 1.38 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 7.81 GBytes 6.71 Gbits/sec 4557 sender
[ 5] 0.00-10.00 sec 7.80 GBytes 6.70 Gbits/sec receiver
iperf Done.
It is odd that so many of us seem to find an artificial ~1gbps limit when testing OPNsense 20.7 on VMware ESXi and vmxnet3 adapters. It looks like there's at least 3 of us that are able to re-produce these results now?
I've disable the hardware blacklist and did not see a difference in my test results from what I had posted here prior. The only way I can get a little bit better throughput is to add more vCPU to the OPNsense VM, however this does not scale well. For instance, if I go from 2vCPU to 4vCPU, I can start to get between 1.5gbps and 2.2gbps depending on how much parallelism I select on my iperf clients.
It is odd that so many of us seem to find an artificial ~1gbps limit when testing OPNsense 20.7 on VMware ESXi and vmxnet3 adapters. It looks like there's at least 3 of us that are able to re-produce these results now?
I've disable the hardware blacklist and did not see a difference in my test results from what I had posted here prior. The only way I can get a little bit better throughput is to add more vCPU to the OPNsense VM, however this does not scale well. For instance, if I go from 2vCPU to 4vCPU, I can start to get between 1.5gbps and 2.2gbps depending on how much parallelism I select on my iperf clients.
Be honest to yourself, would you buy a piece of hardware with only 2 cores if you have to requirement for 10G? The smallest hardware with 10 interfaces has 4 core minimum.I think we may be talking past each other here. I'm not talking about purchasing hardware. I'm discussing a lack of throughput that now exists after an upgrade on hardware that performs at a much higher rate with just a software change. That's why we're running tests on multiple VMs, all with the same specs. There's obviously some bottleneck occurring here that isn't just explained away by core count (or lack thereof).
I have customers pushing 6Gbit over vmxnet driver.I'm more interested in trying to understand what is different in my environment that is causing these issues on VMs? Is this claimed 6Gbit going through a virtualized OPNsense install?. Do you have any additional details that we can check? I've even tried to change CPU core assignment (change number of sockets to 1, and add cores) to see if there was some weird NUMA scaling issue impacting OPNsense. So far everything I have tried to do has had no impact on throughput, even switching to the beta netmap kernel that is supposed to resolve some of this did not seem to work yet?
You guys got me interested in this subject. I have tested plenty of iperf3 against my VMs in my little 3-host homelab, my 10GbE is just a couple DACs connected between the 10Gbe "backbone" IFs of my Dell Powerconnect 7048P, which is really more of a gigabit switch.
Be honest to yourself, would you buy a piece of hardware with only 2 cores if you have to requirement for 10G? The smallest hardware with 10 interfaces has 4 core minimum.
With proxmox using vnet adapter the speed is fine, but using pfsense based on freebsd 11 works fine with vmxnet3 too.
So the issue is with the HBSD and the vmxnet adapter. I dont understand why opnsense based on a half dead OS. HBSD is abandoned most of the devs. Just drop it and use the standard freebsd again.
With proxmox using vnet adapter the speed is fine, but using pfsense based on freebsd 11 works fine with vmxnet3 too.
So the issue is with the HBSD and the vmxnet adapter. I dont understand why opnsense based on a half dead OS. HBSD is abandoned most of the devs. Just drop it and use the standard freebsd again.
FreeBSD 12.1 has the same issues ..
Just keep using 20.1 with all the security related caveats and missing features. I really don't see the point in complaining about user choices.
Cheers,
Franco
Would it be possible to install a stock FreeBSD 13 kernel? Maybe they fixed the regressions. I'm wondering if it has something to do with HBSD compile flags for security.
Would it be possible to install a stock FreeBSD 13 kernel? Maybe they fixed the regressions. I'm wondering if it has something to do with HBSD compile flags for security.
Unfortunatelly this is not so easy. You cant use a precompiled kernel from an another system. It wouldn't boot.
You have to compile from source, but newer kernel means newer headers and libraries in dependency. The compilation process could failed at some point. The only solution what could work is cherry pick the fix only and implement to the original kernel source tree and compile. But this needs work too.
I was an android kernel developer many years back so i know experiencing with the kernel is always risky.
Would it be possible to install a stock FreeBSD 13 kernel? Maybe they fixed the regressions. I'm wondering if it has something to do with HBSD compile flags for security.
Unfortunatelly this is not so easy. You cant use a precompiled kernel from an another system. It wouldn't boot.
You have to compile from source, but newer kernel means newer headers and libraries in dependency. The compilation process could failed at some point. The only solution what could work is cherry pick the fix only and implement to the original kernel source tree and compile. But this needs work too.
I was an android kernel developer many years back so i know experiencing with the kernel is always risky.
Wouldnt it be easier to do it the other way round?
Make OS work with FBSD13? To eliminate any remnance of bad plugin code?
Routing device | Client --> Server | Server --> Client |
a) OPNsense | 67,3 | 71,2 |
b) Ubuntu | 108,7 | 113,8 |
Routing device | Client --> Server | Server --> Client | ||||
a) OPNsense |
|
| ||||
b) Ubuntu |
|
| ||||
Routing device | Client --> Server | Server --> Client |
OPNsense 20.1 | 109,3 | 102,6 |
Routing device | Client --> Server | Server --> Client | ||||
OPNsense 20.1 |
|
|
Would it be possible to install a stock FreeBSD 13 kernel? Maybe they fixed the regressions. I'm wondering if it has something to do with HBSD compile flags for security.
Unfortunatelly this is not so easy. You cant use a precompiled kernel from an another system. It wouldn't boot.
You have to compile from source, but newer kernel means newer headers and libraries in dependency. The compilation process could failed at some point. The only solution what could work is cherry pick the fix only and implement to the original kernel source tree and compile. But this needs work too.
I was an android kernel developer many years back so i know experiencing with the kernel is always risky.
Wouldnt it be easier to do it the other way round?
Make OS work with FBSD13? To eliminate any remnance of bad plugin code?
OPNsense 21.1.1 (netflow disabled) 1500MTU receiving from WAN, vmx3 NICs, all hardware offload disabled, single thread (p1)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 8.10 GBytes 1.16 Gbits/sec 219 sender
[ 5] 0.00-60.00 sec 8.10 GBytes 1.16 Gbits/sec receiver
OPNsense 21.1.1 (netflow disabled) 1500MTU receiving from WAN, vmx3 NICs, all hardware offload disabled, four thread (p4)
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-60.00 sec 13.4 GBytes 1.91 Gbits/sec 2752 sender
[SUM] 0.00-60.00 sec 13.3 GBytes 1.91 Gbits/sec receiver
OPNsense 21.1.1 (netflow disabled) 1500MTU receiving from WAN, vmx3 NICs, all hardware offload enabled, single thread (p1)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 251 MBytes 35.0 Mbits/sec 56410 sender
[ 5] 0.00-60.00 sec 250 MBytes 35.0 Mbits/sec receiver
pfSense 2.5.0-RC 1500MTU receiving from WAN, vmx3 NICs, all hardware offload disabled, single thread (p1)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 15.1 GBytes 2.15 Gbits/sec 1029 sender
[ 5] 0.00-60.00 sec 15.0 GBytes 2.15 Gbits/sec receiver
pfSense 2.5.0-RC 1500MTU receiving from WAN, vmx3 NICs, all hardware offload disabled, four thread (p4)
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-60.00 sec 15.3 GBytes 2.19 Gbits/sec 12807 sender
[SUM] 0.00-60.00 sec 15.3 GBytes 2.18 Gbits/sec receiver
pfSense 2.5.0-RC 1500MTU receiving from WAN, vmx3 NICs, all hardware offload enabled, single thread (p1)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 316 MBytes 44.2 Mbits/sec 48082 sender
[ 5] 0.00-60.00 sec 316 MBytes 44.2 Mbits/sec receiver
OpenWRT v19.07.6 1500MTU receiving from WAN, vmx3 NICs, no UI offload settings (using defaults), single thread (p1)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 34.1 GBytes 4.88 Gbits/sec 21455 sender
[ 5] 0.00-60.00 sec 34.1 GBytes 4.88 Gbits/sec receiver
OpenWRT v19.07.6 1500MTU receiving from WAN, vmx3 NICs, no UI offload settings (using defaults), four thread (p4)
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-60.00 sec 43.2 GBytes 6.18 Gbits/sec 79765 sender
[SUM] 0.00-60.00 sec 43.2 GBytes 6.18 Gbits/sec receiver
I am curious if I am seeing this kernel problem on my bare-metal install. I have a passively cooled mini PC with 4 Intel NICs and a J1900 CPU at 2.00GHz and 4 GB of RAM. I know this CPU is fairly old, but the hardware sizing guide says I should be able to do 350-750 Mbit/s throughput. When I have no firewall rules enabled and the default IPS settings I get about 370-380 Mbit/s of my 400 Mbit/s inbound speed. If I enable firewall rules to set up fq_codel, then it drops my throughput to 320-340 Mbit/s. In both of these scenarios I see my CPU going up to 90+% on one thread. I do understand that my throughput will go down with different options like IPS and firewall rules, but I would think that with no other options running this hardware should be able to do better than 380 Mbit/s tops.Using FQ_Codel or IPS are more secondary to the overall discussion here. Both of these will consume a large amount of CPU cycles and won't illustrate the true throughput capabilities of the firewall due to their own inherent overhead.
I am curious if I am seeing this kernel problem on my bare-metal install. I have a passively cooled mini PC with 4 Intel NICs and a J1900 CPU at 2.00GHz and 4 GB of RAM. I know this CPU is fairly old, but the hardware sizing guide says I should be able to do 350-750 Mbit/s throughput. When I have no firewall rules enabled and the default IPS settings I get about 370-380 Mbit/s of my 400 Mbit/s inbound speed. If I enable firewall rules to set up fq_codel, then it drops my throughput to 320-340 Mbit/s. In both of these scenarios I see my CPU going up to 90+% on one thread. I do understand that my throughput will go down with different options like IPS and firewall rules, but I would think that with no other options running this hardware should be able to do better than 380 Mbit/s tops.Using FQ_Codel or IPS are more secondary to the overall discussion here. Both of these will consume a large amount of CPU cycles and won't illustrate the true throughput capabilities of the firewall due to their own inherent overhead.
I run a J3455 with a quad port Intel I340 NIC, and can easily push 1gigabit with the stock ruleset and have plenty of CPU overhead remaining. This unit can also enable FQ_Codel on WAN and still push 1gigabit, although CPU usage does increase around 20% at 1gigabit speeds.
I don't personally run any of the IPS components so I don't have any direct feedback on that. It's worth noting that both of these tests are done on a traditional DHCP WAN connection. If you're using PPPoE, that will be single thread bound and will limit your throughput to the maximum speed of a single core.
What most of the transfer speed tests are illustrating here are that FreeBSD seems to have very poor scaling when using 10gbit virtualized NICs and forwarding packets. This isn't an OPNsense induced issue, more of an issue that OPNsense gets stuck with due to the poor upstream support from FreeBSD. For the vast majority of users on 1gigabit or lower connections, this won't be a cause for concern in the near future.
I am curious if I am seeing this kernel problem on my bare-metal install. I have a passively cooled mini PC with 4 Intel NICs and a J1900 CPU at 2.00GHz and 4 GB of RAM. I know this CPU is fairly old, but the hardware sizing guide says I should be able to do 350-750 Mbit/s throughput. When I have no firewall rules enabled and the default IPS settings I get about 370-380 Mbit/s of my 400 Mbit/s inbound speed. If I enable firewall rules to set up fq_codel, then it drops my throughput to 320-340 Mbit/s. In both of these scenarios I see my CPU going up to 90+% on one thread. I do understand that my throughput will go down with different options like IPS and firewall rules, but I would think that with no other options running this hardware should be able to do better than 380 Mbit/s tops.
I am curious if I am seeing this kernel problem on my bare-metal install. I have a passively cooled mini PC with 4 Intel NICs and a J1900 CPU at 2.00GHz and 4 GB of RAM. I know this CPU is fairly old, but the hardware sizing guide says I should be able to do 350-750 Mbit/s throughput. When I have no firewall rules enabled and the default IPS settings I get about 370-380 Mbit/s of my 400 Mbit/s inbound speed. If I enable firewall rules to set up fq_codel, then it drops my throughput to 320-340 Mbit/s. In both of these scenarios I see my CPU going up to 90+% on one thread. I do understand that my throughput will go down with different options like IPS and firewall rules, but I would think that with no other options running this hardware should be able to do better than 380 Mbit/s tops.
I wonder what throughput you would receive with a Linux based fw just to see what the hardware is capable of. I made the experience with the current opnsense 21.1 release that it gives me only ~50% throughput after performance tuning in a virtualized environment. A quick test with virtualized openwrt gave me full gigabit wire speed without any optimization needed. I know that's comparing apples and oranges but it's difficult to say what a hardware platform is capable of if you don't try different things.
I am going to try this in a day or two. IPfire is my choice right now, unless someone has a different suggestion. I will probably come back to OPNsense either way as I like this community and the project.
So I put OPNsense on a PC that has an Intel PRO/1000 4 port NIC and an i7 2600, and with a default install I get my 450 mibt/s. Once I put a firewall rule in to enable fq_codel, then it drops to 360-380 mbit/s. I don't believe that an i7 at 3.4 GHz with an Intel NIC cannot handle these rules at full speed. What is wrong/what can I look at/how can I help make this better?
I have exactly the same problem. Apparently there are problems with vmxnet3 vNIC here. It's sad but I can't get higher than 1.4 Gbps. Please don't come to me with hardware. Sorry folks, it's 2021. 10gbps is what every FW should be able to do by default. Opnsense is a wonderful product. But I think you are betting on a dead horse. Why not use Linux as OS? FreeBSD slept through the virtual world (see the s... vmxnet3 support and bugs). Now I'm out of my frustration and go back to work :).
I can try to; we're on production environment so I can on earliest try it on weekend.
I guess that's not the "Stable Business Branch" release, can I easily roll back to the last stable one after checking that version out?
I'll report back regardless whether I could test it or not.
EDIT: Realized it's indeed a business release. I'll test it at latest on weekend and report back.
iperf3 -c192.168.178.8 -R -P3 -t30
through the firewalls.[SUM] 0.00-30.00 sec 10.5 GBytes 3.00 Gbits/sec 3117 sender
[SUM] 0.00-30.00 sec 10.5 GBytes 3.00 Gbits/sec receiver
[SUM] 0.00-30.00 sec 23.8 GBytes 6.82 Gbits/sec 514 sender
[SUM] 0.00-30.00 sec 23.8 GBytes 6.82 Gbits/sec receiver
[SUM] 0.00-30.00 sec 29.3 GBytes 8.40 Gbits/sec 0 sender
[SUM] 0.00-30.00 sec 29.3 GBytes 8.40 Gbits/sec receiver
@athurdent
Do you think SR-IOV also helps if host (virtualized env. platform) uses vSwitches ?
I work with ESXi hosts where a NIC goes directly to vSwitch and so the NIC seems not to be "sliced" for VM guests.
Thanks for the benchmarks btw.
T.
@athurdent
Do you think SR-IOV also helps if host (virtualized env. platform) uses vSwitches ?
I work with ESXi hosts where a NIC goes directly to vSwitch and so the NIC seems not to be "sliced" for VM guests.
Thanks for the benchmarks btw.
T.
Hi, not sure about the ESXi implementation, they seem to have documentation on it though. https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.networking.doc/GUID-CC021803-30EA-444D-BCBE-618E0D836B9F.html
The card itself definitely has integrated switching capabilities. If I use a VLAN only on the card for 2 VMs to communicate (VLAN is not configured or allowed on the hardware switch the card is connected to), then I get around 18G throughput, which is done on the card internally.
When IPsec is active - even if the relevant traffic is not part of the IPsec policy - throughput is decreased by nearly 1/3. This seems like a real performance issue / bug in the FreeBSD/HardenedBSD kernel. I will need to try with VTI based IPsec routing to see if the in-kernel policy matching is a problem.
I'm chiming in to say I have seen similar issues. Running on proxmox, I can only route about 600 mbps in opnsense using virtio/vtnet. A related kernel process in opnsense shows 100% cpu usage and the underlying vhost process on the proxmox host is pegged as well.
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 97.0 MBytes 814 Mbits/sec
[ 5] 1.00-2.00 sec 109 MBytes 911 Mbits/sec
[ 5] 2.00-3.00 sec 111 MBytes 934 Mbits/sec
[ 5] 3.00-4.00 sec 103 MBytes 867 Mbits/sec
[ 5] 4.00-5.00 sec 100 MBytes 843 Mbits/sec
[ 5] 5.00-6.00 sec 112 MBytes 937 Mbits/sec
[ 5] 6.00-7.00 sec 109 MBytes 911 Mbits/sec
[ 5] 7.00-8.00 sec 75.7 MBytes 635 Mbits/sec
[ 5] 8.00-9.00 sec 68.9 MBytes 578 Mbits/sec
[ 5] 9.00-10.00 sec 96.6 MBytes 810 Mbits/sec
[ 5] 10.00-11.00 sec 112 MBytes 936 Mbits/sec
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
12 root -92 - 0B 400K CPU0 0 21:42 94.37% [intr{irq29: virtio_pci1}]
51666 root 4 0 17M 6600K RUN 1 0:18 68.65% iperf3 -s
11 root 155 ki31 0B 32K RUN 1 20.4H 13.40% [idle{idle: cpu1}]
11 root 155 ki31 0B 32K RUN 0 20.5H 3.61% [idle{idle: cpu0}]
[ 5] 166.00-167.00 sec 112 MBytes 941 Mbits/sec
[ 5] 167.00-168.00 sec 112 MBytes 941 Mbits/sec
[ 5] 168.00-169.00 sec 112 MBytes 941 Mbits/sec
[ 5] 169.00-170.00 sec 112 MBytes 941 Mbits/sec
[\code]
And NIC processing load dropped to just 25% or so:
[code]
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 155 ki31 0B 32K RUN 1 3:14 77.39% [idle{idle: cpu1}]
11 root 155 ki31 0B 32K RUN 0 3:06 71.26% [idle{idle: cpu0}]
12 root -92 - 0B 400K WAIT 0 0:55 28.35% [intr{irq29: virtio_pci1}]
91430 root 4 0 17M 6008K RUN 0 0:43 21.94% iperf3 -s
https://www.mayrhofer.eu.org/post/firewall-throughput-opnsense-openwrt/QuoteWhen IPsec is active - even if the relevant traffic is not part of the IPsec policy - throughput is decreased by nearly 1/3. This seems like a real performance issue / bug in the FreeBSD/HardenedBSD kernel. I will need to try with VTI based IPsec routing to see if the in-kernel policy matching is a problem.
Direction | IPsec enabled | IPsec disabled |
Server -> OPnsense -> Client | 48.1 MB/s | 74.2 MB/s |
Server <- OPnsense <- Client | 49.9 MB/s | 61.1 MB/s |
dev.ix.2.queue3.rx_packets: 2959840
dev.ix.2.queue2.rx_packets: 2158082
dev.ix.2.queue1.rx_packets: 9861
dev.ix.2.queue0.rx_packets: 4387
dev.ix.2.queue3.tx_packets: 2967255
dev.ix.2.queue2.tx_packets: 2160888
dev.ix.2.queue1.tx_packets: 15955
dev.ix.2.queue0.tx_packets: 8725
interrupt | total | rate |
irq51: ix2:rxq0 | 5136 | 11 |
irq52: ix2:rxq1 | 2176474 | 4708 |
irq53: ix2:rxq2 | 7203 | 16 |
irq54: ix2:rxq3 | 3299471 | 7138 |
irq55: ix2:aq | 1 | 0 |
@Kirk: How to set these tweaks? I can't find these options in the Web GUI, except of the first mentioned.
# speedtest --server-id=47746
Speedtest by Ookla
Server: AT&T - Miami, FL (id: 47746)
ISP: AT&T Internet
Idle Latency: 3.53 ms (jitter: 0.50ms, low: 3.06ms, high: 4.12ms)
Download: 2327.36 Mbps (data used: 2.6 GB)
5.18 ms (jitter: 1.65ms, low: 2.79ms, high: 26.40ms)
Upload: 378.54 Mbps (data used: 685.6 MB)
3.01 ms (jitter: 1.79ms, low: 2.03ms, high: 55.43ms)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/bbd0ee99-ad99-4e32-b3c9-ad05daf8bd84
# speedtest --server-id=47746
Speedtest by Ookla
Server: AT&T - Miami, FL (id: 47746)
ISP: AT&T Internet
Idle Latency: 4.17 ms (jitter: 0.94ms, low: 3.06ms, high: 6.49ms)
Download: 2295.81 Mbps (data used: 1.5 GB)
5.08 ms (jitter: 2.15ms, low: 2.79ms, high: 53.90ms)
Upload: 329.78 Mbps (data used: 362.9 MB)
4.05 ms (jitter: 1.37ms, low: 3.12ms, high: 16.97ms)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/2f29bb86-def6-4379-ad30-7292ad3e1926
root@dev:/ # iperf3 -c gw
Connecting to host gw, port 5201
[ 5] local 10.27.3.230 port 31205 connected to 10.27.3.254 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 272 MBytes 2.28 Gbits/sec 413 472 KBytes
[ 5] 1.00-2.00 sec 287 MBytes 2.41 Gbits/sec 2 614 KBytes
[ 5] 2.00-3.00 sec 255 MBytes 2.14 Gbits/sec 61 593 KBytes
[ 5] 3.00-4.00 sec 280 MBytes 2.35 Gbits/sec 23 17.0 KBytes
[ 5] 4.00-5.00 sec 261 MBytes 2.19 Gbits/sec 82 257 KBytes
[ 5] 5.00-6.00 sec 257 MBytes 2.15 Gbits/sec 14 133 KBytes
[ 5] 6.00-7.00 sec 254 MBytes 2.13 Gbits/sec 20 737 KBytes
[ 5] 7.00-8.00 sec 260 MBytes 2.18 Gbits/sec 70 512 KBytes
[ 5] 8.00-9.00 sec 268 MBytes 2.25 Gbits/sec 140 737 KBytes
[ 5] 9.00-10.00 sec 266 MBytes 2.23 Gbits/sec 116 714 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 2.60 GBytes 2.23 Gbits/sec 941 sender
[ 5] 0.00-10.00 sec 2.60 GBytes 2.23 Gbits/sec receiver
iperf Done.
root@dev:/ # iperf3 -R -c gw
Connecting to host gw, port 5201
Reverse mode, remote host gw is sending
[ 5] local 10.27.3.230 port 12997 connected to 10.27.3.254 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 254 MBytes 2.13 Gbits/sec
[ 5] 1.00-2.02 sec 262 MBytes 2.16 Gbits/sec
[ 5] 2.02-3.00 sec 257 MBytes 2.19 Gbits/sec
[ 5] 3.00-4.00 sec 250 MBytes 2.10 Gbits/sec
[ 5] 4.00-5.00 sec 234 MBytes 1.97 Gbits/sec
[ 5] 5.00-6.00 sec 244 MBytes 2.05 Gbits/sec
[ 5] 6.00-7.00 sec 251 MBytes 2.11 Gbits/sec
[ 5] 7.00-8.00 sec 229 MBytes 1.92 Gbits/sec
[ 5] 8.00-9.00 sec 248 MBytes 2.08 Gbits/sec
[ 5] 9.00-10.00 sec 238 MBytes 1.99 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 2.41 GBytes 2.07 Gbits/sec 14 sender
[ 5] 0.00-10.00 sec 2.41 GBytes 2.07 Gbits/sec receiver
iperf Done.
[SUM] 0.00-10.00 sec 788 MBytes 661 Mbits/sec sender
[SUM] 0.00-10.00 sec 785 MBytes 659 Mbits/sec receiver
[SUM] 0.00-10.00 sec 1.02 GBytes 878 Mbits/sec sender
[SUM] 0.00-10.00 sec 1.02 GBytes 877 Mbits/sec receiver
[SUM] 0.00-300.00 sec 31.4 GBytes 899 Mbits/sec sender
[SUM] 0.00-300.00 sec 31.4 GBytes 899 Mbits/sec receiver