[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

XSA-332 kernel patch - huge network performance on pfSense VMs



Hi list,

Another "popular" thread on XCP-ng forum [1], started in october 2020,
allowed us to detect that patch 12 from the XSA-332 advisory [2] had a
very significant impact on network performance in the case of pfSense VMs.

We reproduced the issue internally (well, we reproduced "something". The
user setups in this thread are diverse) and our findings seem to confirm
what the users reported. Running iperf3 from the pfSense VM to a debian
VM gives results around 5 times slower than before. Reverting this
single patch brings the performance back. On the debian to pfSense
direction, the drop is about 25%.

Testing environment:

Host
* XCP-ng 8.2
* kernel 4.19.19 + backports and sec fixes [3]
* Xen 4.13.1 + backports and sec fixes [4]

VM 1 - pfSense, HVM
VM 2 - debian, HVM
VM 3 - debian, HVM

All VMs running on the same host.

I can provide more details if needed.

Note: a user reported a performance drop between two windows VMs [5] and
another when accessing DBF files across the network [6]. They didn't
specify what the network setup was though. At least the second one
confirmed reverting patch 12 solved his issues.


*** Test results, without reverting patch 12 ***

Debian to pfSense: ~1,20 Gbit/s, stable

root@samtest:~# iperf3 -c 10.0.90.1
Connecting to host 10.0.90.1, port 5201
[  5] local 10.0.90.2 port 58036 connected to 10.0.90.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   100 MBytes   842 Mbits/sec    0   1.22 MBytes
[  5]   1.00-2.00   sec   148 MBytes  1.24 Gbits/sec    0   2.00 MBytes
[  5]   2.00-3.00   sec   145 MBytes  1.22 Gbits/sec    0   2.11 MBytes
[  5]   3.00-4.00   sec   144 MBytes  1.21 Gbits/sec    0   2.11 MBytes
[  5]   4.00-5.00   sec   141 MBytes  1.18 Gbits/sec    0   2.11 MBytes
[  5]   5.00-6.00   sec   150 MBytes  1.26 Gbits/sec    0   2.11 MBytes
[  5]   6.00-7.00   sec   144 MBytes  1.21 Gbits/sec    0   2.11 MBytes
[  5]   7.00-8.00   sec   132 MBytes  1.11 Gbits/sec    0   2.11 MBytes
[  5]   8.00-9.00   sec   140 MBytes  1.17 Gbits/sec    0   2.11 MBytes
[  5]   9.00-10.00  sec   142 MBytes  1.20 Gbits/sec    0   2.11 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.35 GBytes  1.16 Gbits/sec 0             sender
[  5]   0.00-10.00  sec  1.35 GBytes  1.16 Gbits/sec                 
receiver

pfSense to Debian: catastrophic and not stable. We should have 2,2
Gbit/s here.

root@samtest:~# iperf3 -c 10.0.90.1 -R
Connecting to host 10.0.90.1, port 5201
Reverse mode, remote host 10.0.90.1 is sending
[  5] local 10.0.90.2 port 58052 connected to 10.0.90.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  30.2 MBytes   254 Mbits/sec
[  5]   1.00-2.00   sec  28.5 MBytes   239 Mbits/sec
[  5]   2.00-3.00   sec  47.3 MBytes   397 Mbits/sec
[  5]   3.00-4.00   sec  96.4 MBytes   809 Mbits/sec
[  5]   4.00-5.00   sec  43.3 MBytes   363 Mbits/sec
[  5]   5.00-6.00   sec  36.9 MBytes   310 Mbits/sec
[  5]   6.00-7.00   sec  25.2 MBytes   211 Mbits/sec
[  5]   7.00-8.00   sec  43.8 MBytes   368 Mbits/sec
[  5]   8.00-9.00   sec  23.0 MBytes   193 Mbits/sec
[  5]   9.00-10.00  sec  17.0 MBytes   143 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   392 MBytes   329 Mbits/sec 112             sender
[  5]   0.00-10.00  sec   392 MBytes   329 Mbits/sec                 
receiver

Debian to debian: 8,5 Gbit/s

root@samtest:~# iperf3 -c 10.0.90.3
Connecting to host 10.0.90.3, port 5201
[  5] local 10.0.90.2 port 39928 connected to 10.0.90.3 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   963 MBytes  8.07 Gbits/sec    0    878 KBytes
[  5]   1.00-2.00   sec   994 MBytes  8.34 Gbits/sec    0   1014 KBytes
[  5]   2.00-3.00   sec   969 MBytes  8.13 Gbits/sec    0   1.10 MBytes
[  5]   3.00-4.00   sec  1.02 GBytes  8.80 Gbits/sec    0   1.15 MBytes
[  5]   4.00-5.00   sec  1022 MBytes  8.58 Gbits/sec    0   1.21 MBytes
[  5]   5.00-6.00   sec  1012 MBytes  8.49 Gbits/sec    0   1.33 MBytes
[  5]   6.00-7.00   sec  1.01 GBytes  8.71 Gbits/sec    0   1.33 MBytes
[  5]   7.00-8.00   sec  1.05 GBytes  9.06 Gbits/sec    0   1.33 MBytes
[  5]   8.00-9.00   sec  1.02 GBytes  8.74 Gbits/sec    0   1.40 MBytes
[  5]   9.00-10.00  sec  1018 MBytes  8.54 Gbits/sec    0   1.54 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  9.95 GBytes  8.54 Gbits/sec 0             sender
[  5]   0.00-10.04  sec  9.94 GBytes  8.51 Gbits/sec                 
receiver


*** Test results, after reverting patch 12 (only) ***

Debian to pfSense: better average perf, but there are big drops so it
does not manage to stay at 2,2 Gbit/s.

root@samtest:~# iperf3 -c 10.0.90.1
Connecting to host 10.0.90.1, port 5201
[  5] local 10.0.90.2 port 46946 connected to 10.0.90.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   237 MBytes  1.98 Gbits/sec    0   1.44 MBytes
[  5]   1.00-2.00   sec   240 MBytes  2.01 Gbits/sec    0   1.52 MBytes
[  5]   2.00-3.00   sec   260 MBytes  2.18 Gbits/sec    0   1.68 MBytes
[  5]   3.00-4.00   sec  36.2 MBytes   304 Mbits/sec    0   1.68 MBytes
[  5]   4.00-5.00   sec   115 MBytes   965 Mbits/sec    0   1.68 MBytes
[  5]   5.00-6.00   sec   255 MBytes  2.14 Gbits/sec    0   1.78 MBytes
[  5]   6.00-7.00   sec   181 MBytes  1.52 Gbits/sec    0   1.78 MBytes
[  5]   7.00-8.00   sec  76.2 MBytes   640 Mbits/sec    0   1.78 MBytes
[  5]   8.00-9.00   sec   261 MBytes  2.19 Gbits/sec    0   1.78 MBytes
[  5]   9.00-10.00  sec   251 MBytes  2.11 Gbits/sec    0   1.88 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.87 GBytes  1.60 Gbits/sec 0             sender
[  5]   0.00-10.00  sec  1.87 GBytes  1.60 Gbits/sec                 
receiver

pfSense to Debian: back to stable 2,2 Gbit/s

root@samtest:~# iperf3 -c 10.0.90.1 -R
Connecting to host 10.0.90.1, port 5201
Reverse mode, remote host 10.0.90.1 is sending
[  5] local 10.0.90.2 port 46954 connected to 10.0.90.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   238 MBytes  2.00 Gbits/sec
[  5]   1.00-2.00   sec   239 MBytes  2.01 Gbits/sec
[  5]   2.00-3.00   sec   252 MBytes  2.11 Gbits/sec
[  5]   3.00-4.00   sec   256 MBytes  2.15 Gbits/sec
[  5]   4.00-5.00   sec   263 MBytes  2.20 Gbits/sec
[  5]   5.00-6.00   sec   255 MBytes  2.14 Gbits/sec
[  5]   6.00-7.00   sec   265 MBytes  2.22 Gbits/sec
[  5]   7.00-8.00   sec   266 MBytes  2.23 Gbits/sec
[  5]   8.00-9.00   sec   262 MBytes  2.20 Gbits/sec
[  5]   9.00-10.00  sec   273 MBytes  2.29 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.51 GBytes  2.16 Gbits/sec 123             sender
[  5]   0.00-10.00  sec  2.51 GBytes  2.16 Gbits/sec                 
receiver

Debian to debian : no differences.

root@samtest:~# iperf3 -c 10.0.90.3
iperf3: error - unable to connect to server: Connection refused
root@samtest:~# iperf3 -c 10.0.90.3
Connecting to host 10.0.90.3, port 5201
[  5] local 10.0.90.2 port 59498 connected to 10.0.90.3 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   982 MBytes  8.23 Gbits/sec    0    779 KBytes
[  5]   1.00-2.00   sec   982 MBytes  8.24 Gbits/sec    0    904 KBytes
[  5]   2.00-3.00   sec  1.01 GBytes  8.65 Gbits/sec    0    904 KBytes
[  5]   3.00-4.00   sec  1.03 GBytes  8.85 Gbits/sec    0   1.07 MBytes
[  5]   4.00-5.00   sec  1022 MBytes  8.58 Gbits/sec    0   1.13 MBytes
[  5]   5.00-6.00   sec  1.01 GBytes  8.69 Gbits/sec    0   1.13 MBytes
[  5]   6.00-7.00   sec   988 MBytes  8.28 Gbits/sec    0   1.31 MBytes
[  5]   7.00-8.00   sec  1.01 GBytes  8.64 Gbits/sec    0   1.31 MBytes
[  5]   8.00-9.00   sec  1.01 GBytes  8.70 Gbits/sec    0   1.38 MBytes
[  5]   9.00-10.00  sec  1000 MBytes  8.39 Gbits/sec    0   1.52 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  9.93 GBytes  8.53 Gbits/sec 0             sender
[  5]   0.00-10.04  sec  9.92 GBytes  8.49 Gbits/sec                 
receiver


Best regards,

Samuel Verschelde

[1]
https://xcp-ng.org/forum/topic/3774/poor-pfsense-wan-speeds-after-xcp-ng-updates
[2] http://xenbits.xen.org/xsa/xsa332-linux-12.patch
[3] https://github.com/xcp-ng-rpms/kernel/tree/8.2
[4] https://github.com/xcp-ng-rpms/xen/tree/8.2
[5] https://xcp-ng.org/forum/post/33264
[6] https://xcp-ng.org/forum/post/33268




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.