JANIS 

MTUとRWINの調整方法

最終更新日 2001年08月03日

 ネットワークのプロトコルには『TCP/IP』と呼ばれるものがあります。このTCP/TPの設定、とりわけMTUとRWINについての設定を変更し、ADSL環境に最適化することによって、データ転送スピードが向上されます。これは、非常に効果的な方法ですのでぜひお読みください。なお、このページはWindowsユーザー向けに記述しておりますが、Macでもこの設定を変更することは可能です。

 ただし、この方法はコンピュータのシステム自体の設定を変更すると言う、リスクを伴った方法です。万が一システムが破壊された場合でもJANISネットは責任を負えません。あくまでもお客様の自己責任で行うようにしてください。

● MTU、RWINとは?
● MTUとRWINの最適値を求める
● レジストリを変更して設定を変える
● フリーソフトを用いての設定法


 * MTU、RWINとは? *

1. TCP/IPの基礎知識

 通常、LANやインターネットなどのネットワークを構築する際にはTCP/IP(Transmission Control Protocol/Internet Protocol)と呼ばれるプロトコル(コンピューター同士がデータをやり取りするときに必要な約束事の集まり)が用いられます。TCP/IPは1本の回線の中を、多数の利用者の通信データをパケットという単位に分割して通信する方式です。パケットには通信を正しく行うために決まった量のヘッダやフッタ(通信制御用の情報)が付加されるため、実際のデータ量よりも大きくなってしまいます。パケットごとにヘッダやフッタが付加されるということは、パケット数が増えるほど、実際のデータ以外の情報が増えることを意味しています。つまり、簡単に言ってしまえば、同じデータを伝送するならパケット数はなるべく少ない方が良いのです。さて、このプロトコルの中身にはいろいろな種類があるのですが、そのなかにMTUとRWINと呼ばれるものがあります。これらはパケットをやりとりする際に重要な役割を果たしています。これらをADSLのデータ転送に最適な状態に設定しなおしてやることにより、パケット数を減らし、無駄の無いスムーズなやりとりが可能になるのです。

2. MTUについて

 MTUとはMax Transfer Unitの略で、パケットサイズの上限を決めるパラメータのことです。上の説明だけでは、一見パケットサイズは大きいほど無駄が減って良いようにも思えますが、あまり大きくしすぎてしまうと、細かなデータをたくさんやりとりする場合(たとえば、細かな画像がたくさんあるホームページを閲覧する場合など)に効率が悪くなるという結果を招いてしまいます。MTUの大きさは、利用するネットワーク環境に応じて最も適切なものを設定してあげることによって、データの転送がスムーズに行われるようになるのです。しかし残念ながら、WindowsはデフォルトではこのMTU値の設定がADSL環境に最適な設定とは言えない状態になっています。そこで、このMTUの値を調整して単位パケットあたりのサイズをADSL環境に最適化し、データ転送の効率を高めてやることが速度向上のポイントとなるのです。

3. RWINについて

 MTUと並んで重要となるものに、RWIN(Receive Window Size)と呼ばれるものがあります。これはデータのやり取りを行う相手先への応答なしに、無条件にデータを受け取ることができるバッファの量を表しています。データを送信する側は、送信先のRWINがいっぱいになるまでは、受信側の応答を待たずに一気に送信する事ができます。バッファがいっぱいになると受信側は、データを容量分受信し終わったことを送信側に伝えるという動作を行います。つまり、RWIN値を増やすとデータのやりとりのための、コンピュータ同士の応答が頻繁に発生しなくなり、送信側で応答を待つ機会が減るので、送受完了までの時間が短くなるのです。特に、インターネットのように反応の遅延時間が長い場合は、このRWINの値を大きめにした方が連続のデータ転送を行う場合に有利となります。このRWINの値は、MTUの値から計算で求めることができます。詳しくは後述します。

このページのトップへ


 * MTUとRWINの最適値を求める *

1. 最適なMTU値の求め方

 MTU値は、MS-DOSプロンプト(Windows2000の場合はコマンドプロンプト)からpingコマンドを用いて行います。Windows98SEの画面を用いて説明をしますが、基本的には他のバージョンをお使いの場合でも同じです。

 それでは、まず最初にMS-DOSプロンプトを起動します。Win98、Win95をお使いの方は「スタートメニュー」-「プログラム(P)」-「MS-DOSプロンプト」を選択して起動してください。(WinMeの方は「スタートメニュー」-「プログラム(P)」-「アクセサリ」-「MS-DOSプロンプト」、Win2000の方は「スタートメニュー」-「プログラム(P)」-「アクセサリ」-「コマンドプロンプト」となります。)

 起動したMS-DOSプロンプトに『ping -f -l 1450 172.16.1.10』と入力してみてください。次の様な画面が現れます。(環境によって画面に現れる数値は異なります。また、表示されない場合は1450とした数字の部分を1400や1350など、適当な小さい値に変えて試してみてください。)


 ここで使用したpingコマンドの内容は、『ping -f(パケットの断片化を認めないようにするオプション) -l(パケットサイズを指定するオプション) [パケットサイズ] [相手のアドレス]』というようになっています。この例では、1450バイトのパケットを172.16.1.10というアドレスに向けて送り、その相手先から帰ってきた同じ1450バイトのパケットを受信するまでの時間を測定しています。次に、サイズが1500バイトのパケットを送信してみましょう。

 このような画面が表示されたでしょうか?(表示されない場合はパケットサイズを1550や1600など、表示されるまで適当にパケットサイズを大きくして試してみてください。)応答時間の変わりに何かメッセージが表示されていますね?これはパケットサイズを大きくしすぎた為にパケットが断片化してしまった例です。

 実は、MTUの最適値はこの『パケットが断片化するパケットサイズの直前の値+28』の値なのです。つまり言いかえれば、『パケットが断片化しない最大のパケットサイズ+28』ということですね。少々面倒ですが、ここで説明したpingコマンドを使って送信するパケットのサイズをいろいろと変化させながら、パケットが断片化しない最大の値を探してください。ちなみに、28というサイズはpingコマンドを実行する際にパケットに付け加えられるヘッダのサイズです。したがって、実際に送信されているデータはコマンドで指定した値に28を足したものであるのです。

 値が求まりましたでしょうか?28を加算することをくれぐれも忘れないようにしてください。それでは、次に進みます。

2. RWINの最適値を計算しよう

 ADSLインターネットに最適なRWINの値は、先ほど求めたMTUの値から計算で求めることができます。(ここでは、仮にMTU値が1500と求められた場合について説明しますが、もちろんこれは説明の都合上ですので、実際にはお客様がご自分で求められた値を使って進めてください。)

 最適なRWINを求める為の計算式は、次の様になります。

最適RWIN値 = (MTU値 - 40) × 10〜200

 つまり、MTU値から40を引いたものに、10から200くらいまでの適当な値を掛けたものが最適なRWIN値として求められるのです。『10〜200の間で適当な数値』というのは非常にあやふやなのですが、これはお使いのパソコン環境に応じて最適なものが変わってしまうからです。RWIN値の設定をいろいろと変化させながらリンク速度の測定などを行って、お客様ご自身で最適なRWIN値を見つけてられてください。(この先は、例としてRWIN値をMTU値の16倍の24000として設定する場合について説明します。)

このページのトップへ


 * レジストリを変更して設定を変える *

1. 作業を行う前に

 いよいよ実際にシステムを最適化する作業を行います。この作業では、Windowsの『レジストリ』と呼ばれる、システムに関する設定ファイルを操作して行います。この作業は一つ間違えるとコンピュータが起動しなくなったり、システムやデータが破壊されてしまう恐れがありますので、十分注意し、確認しながら作業するようにしてください。なお、万が一のためにレジストリのバックアップを取っておくことをお勧めします。

2. MTU値設定作業の手順

 この作業には『レジストリエディタ』と呼ばれるアプリケーションを利用します。Windowsに標準で備わっているものですので、新たにインストールするなどの作業はいりません。それでは、早速レジストリエディタを起動してみましょう。まず「スタートメニュー」から「ファイル名を指定して実行(R)」を指定します。


 次に「ファイル名を指定して実行」というウィンドウが開きますので、「名前(O)」の欄に『regedit』と入力してください。

 OKボタンをクリックすると、レジストリエディタが起動します。エクスプローラ等と同じ要領で操作して、『HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans¥000x』というフォルダに移動します(000xのxは任意の数字のことです。また、Windows2000の場合は『HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<アダプタ名>\Parameters\Tcpip』としてください。)この000xというフォルダにMTUの最大値の設定を書きこんで行きます。まず、0000から行います。『HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans¥0000』に現在いることを確認して、右側のウインドウにマウスポインタを移動させてから、右クリックをします。すると「新規(N)」というメニューが出るので、その中から「文字列(S)」という項目を選んでください。

 すると次の様に『新規値 #1』という項目が追加されます。

 この『新規値 #1』というものを『MaxMTU』に書き直してください。Win2000の場合は単に『MTU』とします。必ず半角文字で入力してください。

 Enterキーを押して確定します。次に、この『MaxMTU』という項目に値を設定します。「MaxMTU」のところを選択して右クリックしてください。メニューが現れるので、「変更(M)」を選択します。

 すると次の様な画面になります。「値のデータ(V)」のところに先ほど求めたMTUの値を書きこみます(例では1500としてあります)。

 OKボタンを押して設定を完了してください。この作業を『000x』の全てに対して行います。

3. RWIN値設定作業の手順

 MTUの次はRWINについての設定を行います。レジストリエディタの基本的な操作方法は上と同じような感じになりますので、スクリーンショットを交えた説明は省略します。

 まず、『HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP』に移動してください。ここに、先ほど同様に「新規(N)」メニューから「文字列(S)」を選択して項目を追加してください。名前は『DefaultRcvWindow』と変更します。これを右クリックして「変更(M)」を選択し、「値のデータ(V)」のところに、今度はRWINの値をいれてください。


 OKボタンを押して設定を完了します。それでは、レジストリエディタも終了してください。Windowsを再起動させると作業終了となります。

 Windows2000で設定を行う際には、『HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters』に『TcpWindowSize』という項目を追加して、値を書きこみます。ただし、この場合は10進数で書きこまないように注意してください。この場合、RWINのデータを16進数に変換して書きこんでやらなければなりません。変換にはアクセサリの電卓を関数電卓にしてお使いになると良いと思います。

このページのトップへ


 * フリーソフトを用いての設定法 *

1. 便利なツール類を利用する方法

 前の項目では、Windowsのレジストリエディターを利用して設定を行う方法についてご説明しました。このレジストリエディタを利用して設定を行う以外に、オンラインソフトを用いて設定を行う方法があります。この項目では、その方法についてご説明します。

2. NetTune (ダウンロード:http://www.forest.impress.co.jp/lib/index.html

 みー氏作成のソフトで、MTUやRWINの設定を簡単に行うことができます。特に、このソフトはメニューが日本語なので一番使いやすいソフトなのではないかと思います。それでは、このソフトを利用した設定法を見てみましょう。

 まず、上記のサイトからソフトをダウンロードして解凍、インストールを行ってください。インストールを行うには、解凍したファイルの「setup.exe」を実行します。インストールが終わったら、早速NetTuneを起動してください。下のような画面が起動すると思います。


 画面の下の方に「簡単な設定」という項目があり、そこにチェックがついた状態になっていると思います。これをクリックしてチェックをはずしてください。すると次の様にメニューが設定可能になった画面に変わります。

 次に「Path MTU Discovery」というタブが画面の上の方にあるので、これをクリックしてください。画面が変わります。ラジオボタンが2つありますが、このうち「Disable」の方をクリックして、ボタンをオンにしてください。その後、その下のボタンが3つ並んでいるところから「設定」ボタンをクリックします。

 それでは、次はMTU値の設定を行います。上のメニューから「MTU」タブをクリックしてください。すると、先ほどの起動時の画面に戻りますね?さて、ここで「カスタム」というラジオボタンを選択してください。すると、右側にある文字ボックスが入力可能になると思います。ここに、先ほど求めたMTUの値を入力します(例では1500です)。入力し終わったら「設定」ボタンをクリックします。

 今度はRWINの設定です。上のタブから「TCP Window Size」を選択してクリックします。「TCP Window Size (RWIN)」という項目と文字ボックスがありますね?数値が入力されていますが、これを消して設定値を入力しなおします(例では24000)。入力し終わったら、「設定」ボタンをクリックしてください。

 以上で設定は終わりです。「ファイル(F)」メニューから「終了(Q)」を選択してNetTuneを終了してください。Windowsを再起動して、設定を完了します。

3. そのほかのソフト紹介

 NetTUNEの他にも、MTU関連の設定を変更するソフトがありますので参考になさってください。

 Dr.TCP (ダウンロード:http://www.dslreports.com/front/drtcp.html
  英語版のソフトです。こちらもNetTune同様の設定が行えます。

 IPNetTuner (ダウンロード:http://www.sustworks.com/
  Macをお使いの方はこのソフト使うことによってTCP関連の設定ができます。

このページのトップへ