2009-08-24 8 views
3

Netgear 24ポートギガビットスイッチを使用しているローカルLAN上に8台のコンピュータしか接続されていないため、ネットワーク負荷が低く、 16MBに設定されています。また、トラフィックを監視するために各ノードでtcpdumpを実行しています。tcpdumpでトラフィックを監視しているときにUDPフラグメントが見つからない

送信側ノードが10044byteの大量のUDPパケットを送信します。これは、受信側のアプリケーションでは多くの場合(3/4回)終了しません。これらの場合、最初のx個のフラグメントが見つからないことがわかります(tcpdumpを使用)。最後の3つ(オフセットが0以上、順番にすべて)がtcpdumpによって捕捉されます。フラグメント化されたUDPパッケージは再構成することができず、廃棄される可能性が非常に高いです。

同じサイズの10000 UDPメッセージを破棄する簡単な負荷テストを試みたので、不足しているフラグメントが見つかったので、受信側のアプリケーションから応答が送信され、これまでのすべてのテストで100%の応答が返されます。

手がかりやヒントはありますか?

+0

どのようにしてどのホスト上でtcpdumpを起動していますか? – p00ya

+0

断片化されたUDPモニタリングの場合、送信側で。 tcpdump -vv src atonceおよびdst athena。 – Kristofer

+0

更新:受信側でwiresharkを実行し、送信時にtcpdumpを実行します。ブースでは、最後の3つのフラグメントのみが表示されます。 – Kristofer

答えて

1

更新!

上記のソフトウェアのテストを再開した後、私はエラーを再現する再現可能な方法を見つけました。

送信側のWindowsマシンでwindumpを使用し、受信側のマシンでtcpdumpを使用して、アプリケーションを一定時間(約5分間)アイドル状態にした後、udpメッセージを送信しようとしましたが、 windumpとtcpdumpを実行すると、残りの3つのフラグメントが失われます。もう一度同じメッセージを送信すると、うまく動作し、ブースのwindumpとtcpdumpが4つのフラグメントすべてをキャッチし、受信側のアプリケーションがメッセージを取得します。パターンは繰り返し可能です。

検索を開始して次の情報を見つけましたが、私にはまだ明確な答えはありません。再私は今、ARP要求は/上記のリンクで与えられたアイデアの一つと一致する、送信されて返信気づくログを調べる

http://www.eggheadcafe.com/software/aspnet/32856705/first-udp-message-to-a-sp.aspx

注記! 、最初のUDPメッセージを失敗した4つの断片

14:52:45.342266 arp who-has receivernode tell sendernode 
14:52:45.342599 IP sendernode> receivernode : udp 

キャプチャ長いWinDumpのからする必要があります:「DSTホストreceivernode」WinDumpのから

キャプチャ:私が使用して送信側でWinDumpのフィルタリング二UDPメッセージを、まったく同じ内容、4つの断片がすべてキャッチ

14:52:54.132383 IP sendernode.10104 > receivernode .10113: UDP, length 6019 
14:52:54.132397 IP sendernode> receivernode : udp 
14:52:54.132406 IP sendernode> receivernode : udp 
14:52:54.132414 IP sendernode> receivernode : udp 
14:52:54.132422 IP sendernode> receivernode : udp 
14:52:56.142421 arp reply sendernode is-at 00:11:11:XX:XX:fd (oui unknown) 

何が起きているのか良いアイデアを持っている人は誰ですか?詳しく教えてください!

+0

これ以上の調査では、ARPキャッシュエントリがなく、UDPサイズがMTUを超えた場合、最後のフラグメントが宛先に送信され、残りのフラグメントは黙って破棄されます。 http://support.microsoft.com/kb/233401 http://www.keil.com/support/man/docs/rlarm/rlarm_tn_using_udp_arpemptyhtm 回避策は、chacheタイムアウトを延長するか、キープアライブメッセージを追加するか、または動的ではなく静的エントリを追加することです。 まだ、このようなことが通知される方法はありますか? – Kristofer

+0

WindowsマシンでArpCacheLifeパラメータを変更すると、問題が修正されました。 対応するLinuxは/ proc/sys/net/ipv4/neigh/$ DEV/gc_stale_timeです。 – Kristofer

+0

Windowsマシンでは、送信側のマシンまたは宛先を参照していますか? –

関連する問題