Vistaの通信速度を上げよう

Windows7が発売されているのにVistaの記事を扱うのは今更感があるのですが・・・
Bフレッツ光プレミアムを使って相手先と通信を行う」事を前提にした話なので、LAN上の相手なんかだと最適な数値は異なります。


TCP/IPの通信速度にかかるパラメータは、

  • MTU・・・1パケット(通信の最小単位)のサイズ
    • Bフレッツだと1454byte以上だとパフォーマンスが低下する。
    • 光プレミアムだと1438byte以下にしなければならない。
    • ちなみにフレッツADSLだと1454byte以下なら良いのだけれど1448byteが最適。
  • MSS・・・1パケット中で実際に自由に使えるデータサイズ。MTUから40byte引いた数字になる。
  • RWIN・・・相手の応答を待たずに送りつける事が出来るデータ量の最大値。
    • 相手先からの応答時間により最適値が異なる。大きければ何でもいい、という訳ではない。
    • Vistaはこれを任意の数値に設定することは基本的にはできない。というか、普通に設定しても無視される。
    • まぁ、RWIN分のパケットをガンガン送りつけるスタイルのXPが行儀悪いだけだがzzz
    • 自動で設定されるとはいえ、ある程度は触れるのでチューニング出来なくもない。
    • 具体的には「netsh interface tcp set global autotuninglevel=〜」でオートチューニングの設定が出来る
      • 設定値としては「disabled」「normal」「restricted」「highlyrestricted」「experimental」がある。
      • disableだとRWINは65536固定。
      • normalだと0〜16MBで可変。この最大16MBというのが問題で、ここをうまく処理できない通信機器が経路にいるとRWINが本来の1/256になってしまう
      • highlyrestrictedは0〜256KBの範囲に制限。↑の症状を緩和するのかな
      • restrictedとexperimentalについては資料不足
    • ちなみにこれを固定値にする「Mz Vista Force」というソフトもあるようだ
  • CTCP・・・VistaやWindows2008で実装されたTCP通信を更に速くする手順。
    • internet等の細くて長い経路だと影響なさそうだけど、LAN上の通信なんかだと凄まじい速さになるようだ
    • 相手が対応してないと使えなさそう

最近の通信速度のボトルネックはwinsock(アプリが通信する時使うもの)のバッファにあるようなので、そっちも弄らねば。

  • DefaultReceiveWindow・・・一度に受信するサイズ。Vistaでは設定しても意味がない。
    • ここをいくら大きくしてもRWINが十分大きくないと速度が速くなる事は無い。
    • ここを小さくしても通信経路の機器がWindowScalingを正しく処理しなければ意味は無い。
  • DefaultSendWindow・・・一度に送信するサイズ。Vistaはここを指定してやらないと通信速度が遅くなる
    • デフォルトの数字は8192らしいので、ここをRWINと同程度に大きくすると上り方向の通信速度が劇的に変化する。
  • LargeBufferSize・・・「AFDに使用されるラージバッファのサイズ」とあるけれど、具体的に何が変わるのか?
    • デフォルトは4kしかないので、パフォーマンスを上げるためにもっと大きくしても良さそう(64kくらい?)
    • 他にも似たものに「MediumBufferSize」「SmallBufferSize」がある

他にも弄れそうな項目はあるけど、効果がありそうなのはこんなところか。