News 2001年3月16日 11:59 PM 更新

わが家のブロードバンド化計画(2)──速度が出ないのはなぜ?(1)

ADSLを導入したのにスピードが出ない。そんな悩みにお答えする連載第2回。「MTU」や「RWIN」の設定ってなんだ?

 ADSLの導入時,(ネットワーク設定以外で)もっとも多いのがこの質問だそうだ。せっかくADSLを導入したのに速度が出ない。なぜ出ないのか? その原因は複数ある。単に速度が遅いというだけでなく,さまざまな対策を行いながら,その原因を探ってみることが,解決策を探す最良の方法だろう。

Windows 9xに多い“最高速が出ない病”

 わが家の場合,実験用は別として,ほぼ100%のマシンがWindows 2000のため,ADSLモデムのリンク速度さえ速ければ,きちんとブロードバンドを楽しむことができる。しかし,Windows 9xユーザーの多くは,速度計測のテストで思ったような速度が出ず,悩んでいる人が多いようだ。

 もっとも,速度が遅いとはいえ,ほとんどの場合は「電話局から近いはずなのに,800Kbpsぐらいしか速度が出ない」という贅沢な悩みである。そんな人の悩みの原因は,Windows 9xのTCP/IPスタックが28.8Kbpsモデムに合わせて設定されていることにある。

 TCP/IPは,パケットと呼ばれる特定の長さのデータ単位で通信を行う。パケットには通信を正しく行うために決まった量のヘッダやフッタ(通信制御用の情報)が付加されるため,実際のデータ量よりも大きくなる。パケットごとにヘッダやフッタが付加されるということは,パケット数が増えるほど,実際のデータ以外の情報が増えることを意味している。

 つまり,平たくいえば,同じデータを伝送するなら,パケット数はなるべく少ない方がいいわけだ。特にADSLでISPとの接続に使われるPPPoE(PPP over Ethernet)では,ISPのゲートウェイとPC(もしくはルータ)との間をトネリングさせ,PPPで接続するため,さらに多くのヘッダが付加されてしまう。

 そこで注目すべき値がMTU(Max Transfer Unit)だ。MTUはパケットサイズの上限を決めるパラメータで,ダイヤルアップ先ごと,ネットワークボードごとに設定することが可能。つまり,MTUを大きくすることで,パケット数を減らし,通信の無駄を少なくすることが可能になる。

MTUの最適化にチャレンジしてみよう

 もっとも,MTUは,むやみやたらと増やすべきではない。MTUが大きすぎると,細かなデータを多数やりとりするようなとき(小さな画像をたくさん使っているWebページなど)に効率が悪くなる。最後のパケットに発生する,余分なデータ領域が増えてしまう。また,経路中のネットワークに設定されているMTUよりも大きなパケットを送ると,途中でデータが分割されてしまうこともあるという。

 さらに,ダウンロード速度を高速化する場合には,RWIN(Receive Window Size)も重要だ。RWINは,相手先への応答なしに,無条件にデータを受け取ることができるバッファの量を表している。送信側は,送信先のRWINがいっぱいになるまでは,受信側の応答を待たずに一気に送信できるわけだ。特に,インターネットのように反応の遅延時間が長い場合は,大きめにした方が連続のデータ転送で有利になる。

 RWINの最適値は,“パケットのデータ部分×10以上”に設定するのがいいようだ。ちなみにパケットのデータ部分はMSS(Max Segment Size)と呼ばれており,MTUから40を引いた値になる。従って,RWINの最適値は(MTU-40)×10以上ということになる。

 実は,Windows 9xでは,インターネットへ低速回線で接続することを前提にチューニングされており,MTUが576,RWINが2144とかなり小さく設定されている。NTT東日本が公開している技術資料によると,フレッツ・ADSLではMTUを1454,RWINを16384に設定すると良いとされている。

 これらのTCP/IPパラメータは自分でレジストリを書き換えることでも行えるが,僕の場合は値をさまざまに変えながら実験してみたかったため,「Dr.TCP」というツールを用いて実験してみた。


「Dr.TCP」の画面

 わが家の場合,モデムリンク速度が長時間維持できないという問題を抱えているため,モデムをリセットしながら実験したが,確かにWindows 98SEのデフォルト状態では,最大でも800〜900Kbps程度の速度しか出ない。そこでMTUを1454,RWINを16384に設定したところ,速度は約1Mbpsにまで上昇した(なお,複数のネットワークアダプタが登録されているPCでは,Adapter SettingsでPPPoEアダプタを選択して設定する必要がある)。

Windows 2000でも効果がある

 最初に,この問題がWindows 9xユーザーに多いと書いたのは,Windows 2000の場合は最高速が出ないという文句がほとんど出ないためだ。Windows 2000のデフォルト値はMTU1024,RWIN16384で,1Mbpsそこそこの速度であればそれほど不効率というわけではない。実際,先週報告したように「フレッツスクエア」からのダウンロード速度は,何の工夫もなしに約1.2Mbpsを記録した。

 だが,MTUを増やすことで,さらに効率は良くなるものと思われる。わが家の場合,MTUを1454まで増やすと逆に速度が落ちてしまったのだが,少しずつ値を変え,1414まで減らしたときに最高速の約1.3Mbpsを記録した。

 また,フレッツスクエアなどレスポンスの良いサーバ(つまり遅延時間が少ない,近い場所にあるサーバ)との通信時にはRWINも16384でいいが,海外サーバとの通信時には2倍の32768を設定した方が高速になるようだ。これらの値は,利用しているPCの性能や物理的なDSLモデムのリンク速度,インターネット経路の混み具合によっても異なるため,さまざまな値を試してみるといいだろう。

 約1.3Mbpsという速度は1.5Mbpsというリンク速度を考えると,ほとんど最高速に近い数値だと思われる。前述したように,実際の通信時はパケットごとに無駄なデータが付加され,PPPoEを用いることで,さらにその無駄が大きくなる。厳密に計算したわけではないが,これ以上のチューニングは不要だろう。

前のページ1 2次のページ