ESXi 上的 iperf3 錯誤和重新傳輸

ESXi 上的 iperf3 錯誤和重新傳輸

當執行 iperf3 測試 VMware ESXi 盒子和 TrueNAS Core 盒子之間的 100G 連線時,我在 ESXi 盒子上看到以下內容:

  1. 每個時間間隔都會出現訊息“iperf3: getsockopt - 功能未實現”
  2. 在第一個和最後一個間隔報告大量重傳,但匯總統計數據中未報告

這兩個都可以忽略嗎?或者它們表明了實際問題?

詳細資訊如下.....

伺服器設定:

Supermicro H12SSL-NT, EPYC 7262, 128GB RAM
TrueNAS 13.0 U3
Mellanox ConnectX-5 100G
iperf3 v3.10.1

客戶端設定:

Supermicro X9SRE-F, E5-1650 v2, 16GB RAM
ESXi 6.7.0 P08
Mellanox ConnectX-5 100G
iperf3 v3.1.6

伺服器命令:

iperf3 -s -B 192.168.25.5 -p 5101

客戶端命令和輸出:

[root@esxi:/usr/lib/vmware/vsan/bin] ./iperf3.copy -B 192.168.25.6 -c 192.168.25.5 -i 1 -p 5101 -f g -t 10
Connecting to host 192.168.25.5, port 5101
[  4] local 192.168.25.6 port 27617 connected to 192.168.25.5 port 5101
iperf3: getsockopt - Function not implemented
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  3.08 GBytes  26.4 Gbits/sec  8638800   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   1.00-2.00   sec  3.03 GBytes  26.0 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   2.00-3.00   sec  3.11 GBytes  26.7 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   3.00-4.00   sec  2.91 GBytes  25.0 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   4.00-5.00   sec  3.01 GBytes  25.9 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   5.00-6.00   sec  3.04 GBytes  26.1 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   6.00-7.00   sec   883 MBytes  7.41 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   7.00-8.00   sec  2.99 GBytes  25.7 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   8.00-9.00   sec  1.27 GBytes  10.9 Gbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Function not implemented
[  4]   9.00-10.00  sec  2.75 GBytes  23.7 Gbits/sec  4286328496   0.00 Bytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  26.0 GBytes  22.4 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  26.0 GBytes  22.4 Gbits/sec                  receiver

iperf Done.

答案1

產生此錯誤訊息的原因是 TCP 統計資訊不在「ESXi 的 Linux」上的預期結構中。

iperf 中的功能檢查只是「是 Linux 嗎」(https://github.com/esnet/iperf/blob/a2ce47a97acfad3acee91a6cb4da28f9f50c19df/src/tcp_info.c#L63),並期望透過對特定結構中的 TCP_INFO 的 getsockopt 呼叫來找到資料。

測試運行的總體統計數據仍然有效,因為它不依賴間隔比較功能。

例如,FreeBSD 就存在差異,與 Linux 核心相比,它傳回的資料結構不同。看https://github.com/esnet/iperf/pull/244了解詳情。

save_tcpinfo 被呼叫來保存每個間隔週期的信息,但似乎 iperf 和 ESXi 的 Linux 版本在間隔統計方面不能很好地協同工作。

戴爾在主線生產中也遇到此問題的範例如下: https://www.dell.com/support/kbdoc/en-uk/000187640/dell-emc-vxrail-vsan-hosts-network-performance-test-does-not-exceed-10-000mb-s-bandwidth- 25gb 或更高網路基礎設施上

上述戴爾文章也可能為您提供一些有關如何操縱 iperf 以獲得您可能一直期望的頻寬的指導...

相關內容