在 Linux 虛擬機器之間執行 Wireguard 時出現效能問題。實體主機上的相同設定工作正常

在 Linux 虛擬機器之間執行 Wireguard 時出現效能問題。實體主機上的相同設定工作正常

我遇到了在同一虛擬機器管理程式(在 Qemu/KVM 下運行)上的兩個虛擬機之間運行 Wireguard 隧道的效能問題,我將非常感謝任何有關此問題的見解/建議。我遇到的問題是,各種基準測試顯示wireguard 連接/隧道的速度比wireguard 運行的「正常」網路連線的速度慢約80-90%。 Wireguard 配置是一個簡單的點對點配置。

兩台實體電腦之間的相同 Wireguard 配置運作良好,只會導致效能損失約 4-5%。這讓我相信問題出在虛擬化層的某個地方。我已經嘗試了很多事情,但沒有取得正面的結果:

  • 增加虛擬機器的 CPU 和 RAM 沒有任何效果。
  • 在這些虛擬機器上測試加密/解密任務的效能顯示沒有顯著的效能影響。因此,這些虛擬機器的 CPU 效能似乎不錯。
  • 在虛擬機器管理程式 BIOS 中啟用了對 CPU 的虛擬化支持
  • 我嘗試了一些不同的 MTU 大小,沒有真正的區別。
  • Qemu/KVM 內的 CPU 固定和各種 CPU 設定沒有差別。
  • Wireguard 正在核心模式下運行
  • 我在不同的機器/虛擬機管理程式組合(例如 VirtualBox)上使用相同的設定遇到了相同的問題,這讓我相信我在某種程度上做了一些錯誤的配置。所有在虛擬機器上運行的東西似乎都有這個問題。
  • 不同的Linux發行版似乎也沒有什麼差別

這是有關我的設置和基準的更多資訊。這兩台虛擬機器稱為wireguard-client-01和wireguard-server:

wireguard-client-01 網路資訊:

[root@wireguard-client-01 ~]# ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:d4:fa:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.41/24 brd 192.168.2.255 scope global dynamic noprefixroute enp1s0
       valid_lft 863813sec preferred_lft 863813sec
    inet6 fd00::5054:ff:fed4:fa89/64 scope global dynamic noprefixroute 
       valid_lft 7021sec preferred_lft 3421sec
    inet6 fe80::5054:ff:fed4:fa89/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.2/24 scope global wg0
       valid_lft forever preferred_lft forever

wireguard-伺服器網路資訊:

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:73:c2:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.40/24 brd 192.168.2.255 scope global dynamic noprefixroute enp1s0
       valid_lft 863677sec preferred_lft 863677sec
    inet6 fd00::5054:ff:fe73:c26d/64 scope global dynamic noprefixroute 
       valid_lft 6880sec preferred_lft 3280sec
    inet6 fe80::5054:ff:fe73:c26d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

wireguard 伺服器 wg0 設定:

[Interface]
Address = 10.8.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <my_private_key>

[Peer]
PublicKey = E0eS7oBffTDg8Qj4ZeIUhxA0GUC3HrSfacrjP54hFQI=
AllowedIPs = 10.8.0.2/32
Endpoint = 192.168.2.41:48671

Wireguard-client-01 wg0 設定:

[Interface]
PrivateKey = <my_private_key>
Address = 10.8.0.2/24

[Peer]
PublicKey = h+kDKK/2Y+WXRiO9lSQ0RT3HsRi0m6OckOkEJep/2jM=
AllowedIPs = 10.8.0.0/24
Endpoint = 192.168.2.40:51820

iperf3 對「普通」網路介面的基準測試:

[root@wireguard-client-01 ~]# iperf3 --client 192.168.2.40                                                                                                                                                         
Connecting to host 192.168.2.40, port 5201                                                                                                                                                                         
[  5] local 192.168.2.41 port 57836 connected to 192.168.2.40 port 5201                                                                                                                                            
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd                                                                                                                                                   
[  5]   0.00-1.00   sec   913 MBytes  7.66 Gbits/sec    2   3.11 MBytes                                                                                                                                            
[  5]   1.00-2.00   sec   956 MBytes  8.00 Gbits/sec    2   3.11 MBytes                                                                                                                                            
[  5]   2.00-3.00   sec   958 MBytes  8.05 Gbits/sec    5   3.11 MBytes                                                                                                                                            
[  5]   3.00-4.00   sec  1.05 GBytes  9.00 Gbits/sec    3   3.11 MBytes                                                                                                                                            
[  5]   4.00-5.00   sec   998 MBytes  8.37 Gbits/sec    5   3.11 MBytes                                                                                                                                            
[  5]   5.00-6.00   sec  1014 MBytes  8.50 Gbits/sec    4   3.11 MBytes                                                                                                                                            
[  5]   6.00-7.00   sec  1.02 GBytes  8.75 Gbits/sec    4   3.11 MBytes                                                                                                                                            
[  5]   7.00-8.00   sec   960 MBytes  8.06 Gbits/sec    5   3.11 MBytes                                                                                                                                            
[  5]   8.00-9.00   sec  1.17 GBytes  10.0 Gbits/sec    2   3.11 MBytes                                                                                                                                            
[  5]   9.00-10.00  sec  1022 MBytes  8.58 Gbits/sec    3   3.11 MBytes                                                                                                                                            
- - - - - - - - - - - - - - - - - - - - - - - - -                                                                                                                                                                  
[ ID] Interval           Transfer     Bitrate         Retr                                                                                                                                                         
[  5]   0.00-10.00  sec  9.90 GBytes  8.50 Gbits/sec   35             sender                                                                                                                                       
[  5]   0.00-10.03  sec  9.89 GBytes  8.47 Gbits/sec                  receiver                                                                                                                                     
                                                                                                                                                                                                                   
iperf Done. 

與wireguard隧道相比的iperf3基準(請注意比特率的差異下降了約80%):

[root@wireguard-client-01 ~]# iperf3 --client 10.8.0.1
Connecting to host 10.8.0.1, port 5201
[  5] local 10.8.0.2 port 39384 connected to 10.8.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   125 MBytes  1.05 Gbits/sec  106   1.59 MBytes       
[  5]   1.00-2.00   sec   120 MBytes  1.01 Gbits/sec    0   1.74 MBytes       
[  5]   2.00-3.00   sec   132 MBytes  1.11 Gbits/sec    0   1.83 MBytes       
[  5]   3.00-4.00   sec   176 MBytes  1.48 Gbits/sec   22   1.40 MBytes       
[  5]   4.00-5.00   sec   221 MBytes  1.85 Gbits/sec    0   1.50 MBytes       
[  5]   5.00-6.00   sec   191 MBytes  1.61 Gbits/sec    0   1.58 MBytes       
[  5]   6.00-7.00   sec  42.5 MBytes   357 Mbits/sec    0   1.58 MBytes       
[  5]   7.00-8.00   sec   191 MBytes  1.60 Gbits/sec    0   1.65 MBytes       
[  5]   8.00-9.00   sec   194 MBytes  1.63 Gbits/sec  169   1.21 MBytes       
[  5]   9.00-10.00  sec   214 MBytes  1.79 Gbits/sec    0   1.36 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.57 GBytes  1.35 Gbits/sec  297             sender
[  5]   0.00-10.04  sec  1.57 GBytes  1.34 Gbits/sec                  receiver

iperf Done.

我非常感謝有關此問題的任何建議,並提前感謝您的幫助!

相關內容