0

2 台の Linux マシン間に UDP 接続があります。約 40 ~ 50 ミリ秒に一度、サイド A は番号付きのリクエストを送信し、サイド B からの応答を待ちます。2 秒のタイムアウトを除いて、応答が到着するまで何も送信できません。B が応答を準備して送信するのに約 10 ~ 15 ミリ秒かかります。接続はポイントツーポイントです。

問題は、300 ~ 400 回の交換に一度、A 側が B から応答を受信しないことです。

テストと調査の目的で、すべてをハブに接続し、接続された PC で Wireshark を実行しました。私が見ているのは、サイド A が応答を見ていない場合、wireshark もそれを見ていないということです。それでも、sendto(...) の直後に存在するログ出力は常に「失われた」パケット番号を出力するため、サイド B はパケットが送信されたと考えます。

問題は、アプリケーション (sendto(...)) からネットワークへの途中でパケットが失われた原因は何なのかということです。まったく負荷がないことを考慮すると、CPU は B 側で 95% 空いており、リンクはポイントツーポイントです。

4

2 に答える 2