.png)
問題
注: まず、なぜこのようなことが起きているのかを理解したいと思います。もちろん、解決策があればなお良いです。:)
HTTP 経由で大容量のファイルを高速でダウンロードすると、ワイヤレス トラフィックが基本的に停止します。Web ページを開くことができず、ダウンロード自体が一時停止します。ダウンロードは開始直後に停止します。800 KB のときもあれば、数 MB のときもあります。しばらくすると、ダウンロード (およびその他のトラフィック) が再開されますが、同じダウンロード中に問題が繰り返し発生します。
同じルーター(Linskys WRT120N)を介して有線接続を使用する場合、問題は発生しません。また、接続がないこれが起こると、ドロップされます。トラフィックが停止し、Web ページなどを閲覧できなくなります (SYN パケットは送信されますが、何も受信されません)。
Wireshark で検査すると、次のことが起こることがわかります。
- サーバーはデータパケットを送信し、クライアントによって確認される
- サーバーはパケットを送信しますが、SEQ は一部のパケットが失われたことを示します (1 回の発生で 6 つのパケット)。
- サーバーはさらにいくつかのパケットを送信し、クライアントは「選択的確認応答」を使用してこれらを確認します。
- サーバーはしばらくデータの送信を停止します(失われたパケットが確認されなかったため)またはルータは転送を停止しますか?
- 最終的に、サーバーは「再送信」を実行し、トラフィックは通常どおり再開されます。
パケット損失が発生した場合、これはすべて正常な動作であるように思われます。私を困惑させるのは、大容量の高速ダウンロード中に一貫してパケット損失が発生することです。
何が原因でしょうか?
私の考えは次のとおりです。私のインターネットはかなり高速 (100 mbps) なので、大きなファイルのダウンロードを開始すると、ルーターは受信データをバッファリングします (ワイヤレスでは、他のネットワークの影響で若干の遅延や低速化が発生するため)。ただし、バッファがオーバーフローし、ルーターはトラフィックを制御するためにパケットをドロップします (他に選択肢がないためです)。
しかし、どうしてそんなことが起こるのでしょうか? TCP ウィンドウ サイズは、確認応答されないデータの量を制限しませんか? では、確認応答を待つデータが 64 KB 程度しかない場合、ルーターのバッファ オーバーフローはどうして起こるのでしょうか?
注記:これを修正するために、オプションで TCP ウィンドウ スケーリングと動的ウィンドウ サイズを無効にしましたnetsh
が、問題はないようです。
また、Wiresharkは、サーバーが2つのパケット(1514バイト)を送信し、クライアントがACKを送信するパターンを示しています。バッファオーバーフローの可能性は排除されますか?さらにいくつかの後続パケットは受け取った...
困惑しています。何かご意見がありましたら、よろしくお願いします。
(おそらく)原因ではないもの / 私が実験したもの
- ブラウザ
- Windows 7 のさまざまな TCP オプション (
netsh
など) - MTU、ビーコン間隔、UPnP などのルーター設定...
答え1
ソリューション
解決策は単純にWMMサポートを無効にするルーターの設定で。どうやら、Linksys WRT120N WMM サポートは、何らかの理由で Windows 7 ワイヤレスとうまく連携しないようです。
さらに詳しい情報
多くの場合、問題が発生すると、パケットがルータによってしばらくキューに入れられたかのように、トラフィックは最終的に再開されます (同じ接続に対して)。これらの一時停止は通常 40 秒以上続きます。正直なところ、いまだに不思議に思っています。
この間、他の(TCP)接続は確立できませんでした。Webページなどを閲覧しようとすると、ラップトップはSYNパケットを送信しますが、応答はありません。ただし、DNSとARP要求はだった正常に処理されました。