BR450ルーターの下にWindows7を接続すると、接続スピードが遅くなる

Windows7のネットワーク接続スピードが遅いことに気づいたため、対応したときのメモ。

環境

 

現象

ブラウジングをする程度なら問題はないものの、数十MB単位でのダウンロードを行うと、途中から速度がKB単位に低下する。
(正直、ハングしている状態に近い)


調査と検証

ルーターファームウェアのバージョンについて

BR450の最新バージョンアップ情報 を確認すると、2006/7/31が最新版であり、ルーターのバージョンも同じであったため、これ以上の対応は難しいと判断。

WindowsVista以降のネットワーク仕様について

The Cable Guy - TCP 受信ウィンドウ自動チューニングによると、Vista以降はTCP受信ウィンドウ自動チューニングがなされている模様。


自動チューニングレベルの内訳は、以下。

説明 シフトカウント
disable 受信ウィンドウを既定値に修正します 0
highlyrestricted 受信ウィンドウの既定値を少しだけ超えて拡大できるようにします 2
restricted いくつかのシナリオで制限されますが、受信ウィンドウの既定値を越えて拡大できるようにします 4
normal (既定) 受信ウィンドウをほとんどすべてのシナリオに合わせて拡大できるようにします 8
experimental 受信ウィンドウを極端なシナリオにも合わせて拡大できるようにします 14

参考:光と酒の誘惑2 - Win7/Vista対応、MTU,RWIN確認サイト

なお、シフトカウントから実際のウィンドウサイズへの変換は、
@IT - 基礎から学ぶWindowsネットワーク 1.TCPオプション が詳しい。


実際に自分がTCP Tweak testで計測したスクリーンショットは以下。

  • disable

  • highlyrestricted

  • restricted

  • normal

  • experimental

 

WindowsXPでの検証

WindowsXPでは、受信ウィンドウサイズを手動で設定できることから、Dr.TCPを利用して変更・テスト。結果は以下。

判定 シフトカウント 最大受信ウィンドウサイズ(byte)
OK 1 65535
OK 2 131070
NG 3 262140


WindowsXPでも発生したことから、Windowsの制限ではなく、BR450の問題と判断。

Microsoft KB947239 - Windows Vista ベースのコンピューターにおける HTTP トラフィックの受信ウィンドウ自動チューニング機能についてでも、以下のような記載あり。

HTTP トラフィックに対して受信ウィンドウ自動チューニング機能が有効である場合、受信ウィンドウ自動チューニング機能と互換性のない古いルーター、古いファイアウォール、および古いオペレーティング システムではデータ転送が遅くなったり、接続が失われたりすることがあります。この場合、ユーザー側でパフォーマンスが低下することがあります。または、アプリケーションがクラッシュする場合があります。これらの古いデバイスは RFC 1323 標準に準拠していません。ハードウェアの制限を回避するソフトウェアを提供しているデバイスの製造元もあります。デバイスの製造元に問い合わせて、このようなソフトウェアが入手可能かどうかを確認してください。


ルーターの一例は、以下のKBにて記載。
KB934430 - Network connectivity fails when you try to use Windows Vista behind a firewall device


これらより、BR450が問題ない受信ウィンドウサイズは131070byte、つまり、約128KBではないかと推測。


また、途中から極端に遅くなる点については、TCP周りがスロースタートになったせいと推測。
メカAG - VistaのTCPの自動RWIN



対応

自動チューニングレベルのうち、シフトカウントが「1」となるものは存在しないため、自動チューニング自体を切ることに。


管理者用のコマンドプロンプトを立ち上げて、以下の太字部分を入力。

C:\Windows\system32>netsh interface tcp set global autotuninglevel=disable


内容確認は、以下の太字部分を入力。

C:\Windows\system32>netsh interface tcp show global
アクティブ状態を照会しています...

TCP グローバル パラメーター
----------------------------------------------
Receive-Side Scaling 状態 : enabled
Chimney オフロード状態 : automatic
NetDMA 状態 : enabled
Direct Cache Acess (DCA) : disabled
受信ウィンドウ自動チューニング レベル : disabled
アドオン輻輳制御プロバイダー : none
ECN 機能 : disabled
RFC 1323 タイムスタンプ : disabled


これにより、数十MB単位のファイルも問題なくダウンロードすることができるようになった。



参考

TCPの構造については、以下が詳しい。
@IT - 基礎から学ぶWindowsネットワーク 1.1.TCPパケットの構造


WindowsXP時代のウィンドウスケーリングに関する記載


Microsoftのサポート情報(Vista時代のものも含む)


似たような事例。


書籍では、TCPについては、ウィンドウサイズ計算式なども記載されている以下が参考に。絶版?が残念。

岩波講座 インターネット〈3〉トランスポートプロトコル

岩波講座 インターネット〈3〉トランスポートプロトコル