免責事項:これは英文の記事「HTTP Communication Latency and TCP Spurious Retransmission in NSX Environments.」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
tshark -r server.pcapng -o tcp.check_checksum:TRUE -T fields -e frame.number -e frame.time_relative -e eth.trailer -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e frame.len -e _ws.col.Info<frame.number> <frame.time_relative> <SERVER_IP> <CLIENT_IP> TCP 54 80 → 23433 [ACK] Seq=26 Ack=890 Win=262656 [TCP CHECKSUM INCORRECT] Len=0<frame.number> <frame.time_relative> <SERVER_IP> <CLIENT_IP> HTTP 4065 HTTP/1.1 200 OK [Unreassembled Packet [incorrect TCP checksum]]<frame.number> <frame.time_relative> fefefefefefe <CLIENT_IP> <SERVER_IP> TCP 60 23433 → 80 [ACK] Seq=890 Ack=4037 Win=8047 [TCP CHECKSUM INCORRECT] Len=0 <=== this packet is ignored by the server.<frame.number> <frame.time_relative> <SERVER_IP> <CLIENT_IP> HTTP 1391 [TCP Spurious Retransmission] HTTP/1.1 200 OK [Unreassembled Packet [incorrect TCP checksum]]<frame.number> <frame.time_relative> <CLIENT_IP> <SERVER_IP> TCP 60 [TCP Dup ACK 280#1] 23433 → 80 [ACK] Seq=890 Ack=4037 Win=8047 Len=0
注:イーサネットトレーラーがゼロ以外の場合、「fefefefefefe」などの実際のeth.trailer値が表示されます。
この例では、サーバーによって無視された行のみeth.trailerが表示されています。
イーサネットトレーラーがゼロの場合、コマンド出力は空になります。
NSX 4.2.1.1
ESX 8.0 U3
この問題は、特定のNICハードウェア/ファームウェアと、ESXがGeneveカプセル化パケットを処理する方法との間の競合によって発生します。
パケットにゼロ以外のイーサネットトレーラーが含まれている場合、ハードウェアベースのチェックサムオフロード(CSO)は、Geneveトンネルの内部パケットの正しいTCPチェックサムを計算できない可能性があります。受信側は誤ったチェックサムを識別してACKを無視するため、送信側はパケットが失われたと誤認し、誤った再送信が発生します。
この例では:
ESX でこの問題を解決するには、影響を受ける物理アダプタ (vmnic) のハードウェア オフロードに頼るのではなく、ソフトウェアを介して IPv4 チェックサム計算を実行するように ESX ホストを構成します。
esxcli network nic software listesxcli network nic software set --ipv4cso=1 -n vmnicX