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 KB224829 - Windows 2000 および Windows Server 2003 の TCP 機能について
- MSDN - TCP Receive Window Size and Window Scaling
Microsoftのサポート情報(Vista時代のものも含む)
- KB932170 - Windows Vista ベースのコンピューターとそれ以前のオペレーティング システムの間で、サイズの大きいファイルをコピーすると、予想よりもコピー操作に時間がかかることがある
似たような事例。
書籍では、TCPについては、ウィンドウサイズ計算式なども記載されている以下が参考に。絶版?が残念。
- 作者: 尾家祐二,村山公保,西田佳史
- 出版社/メーカー: 岩波書店
- 発売日: 2001/04/06
- メディア: 単行本
- 購入: 1人 クリック: 6回
- この商品を含むブログ (3件) を見る