1

私は奇妙な問題に直面しています。RFC を介して通信する 2 つのシステムがありますが、この通信は次の問題で毎回中断されます。

クライアントは、SLE=2734286 および SLR=2777173 で TCP ACK を受信します クライアントは、「欠落している」パッケージの再送信を開始します 次に、SACK で TCP DUP ACK を受信します: 2777089-2777173 2734286-2777173

これは奇妙ですね。SACK パラメータが重複しています。その後、クライアントは不足しているパッケージを再度送信しますが、常に TCP DUP ACK を受信します。5 回試行した後、クライアントはあきらめます。

その Windows 2003 から Linux 2.6.32 へ。

あなたの誰かがそのような問題を知っていますか?ネットワーク接続自体は問題なく動作しています (たとえば、SSH 経由でデータをコピーする場合、SACK プロトコルは正しく動作しているようです)。

4

1 に答える 1

1

RFC(http://tools.ietf.org/html/rfc2018)によると、これらのSACKには何の問題もありません。データレシーバーは2番目のSACKをトリミングすることになっていますが、これは確固たる要件ではありません(セクション4から)。

SACKオプションは、構築中のSACKオプションにすでに含まれているSACKブロックのサブセットではない、以前のSACKオプションの最初のSACKブロックに基づいて最近報告されたSACKブロックを繰り返すことによって入力する必要があります。

データレシーバーの実装(これはあなたの例ではサーバーです)は、セグメントが到着するたびにSACKエントリを生成し、それをリストにプッシュするだけで構成されていると思います。リストを毎回折りたたむことはありません。

于 2012-11-07T20:14:32.967 に答える