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 がうまく連携しないようです。

Dell がメインライン生産でこの問題を抱えている例を次に示します。 https://www.dell.com/support/kbdoc/en-uk/000187640/dell-emc-vxrail-vsan-hosts-network-performance-test-does-not-exceed-10-000mb-s-bandwidth-on-25gb-or-higher-network-infrastructure

上記の Dell の記事には、iperf を操作して期待どおりの帯域幅を得る方法についてのヒントも記載されています...

関連情報