MTUとRWINの調整方法ぢゃん (・_・ヾペペーン
ネットワークのプロトコルには『TCP/IP』ってのがあるんやわ。 このTCP/TPの設定、なかでも「MTUとRWIN」の設定を変更して、ADSL環境を最適にすることでデータ転送スピードが向上されるで。 これは結構効果的な方法やさかい、読んでみて貰ぉて試してみてもえぇかなぁと思うで。
注:この方法はコンピュータの「システム自体の設定を変更する」ってリスクを伴った方法なんで。万が一システムが破壊された場合でも、うちは責任は負えへんで。あくまでも「自己責任で」やってみてな。
MTU・・・?RWIN・・・?
・TCP/IPの基礎知識
LANやインターネットとかのネットワークを構築するんにはTCP/IP(Transmission Control Protocol/Internet Protocol)って言われるプロトコル(コンピュータ同士がデータをやり取りするときに必要な約束事の集まり)が使われてるんや。 TCP/IPは1本の回線の中を、多数の利用者の通信データをパケットっていう単位に分割して通信する方式やで。 パケットは通信をちゃんとやるため、決まった量のヘッダやフッタ(通信制御用の情報)が付加されて、実際のデータ量よりも大きくなってまうんや。 パケットごとにヘッダやフッタが付加されるってゆ〜ことは・・・パケット数が増えるほど、実際のデータ以外の情報が増えるってことやろ。 簡単にゆ〜と「同じデータを伝送するならパケット数はなるべく少ない方が良い」ってことやん。 このプロトコルの中身はいろんな種類があるんやけど、そのなかに「MTU」と「RWIN」ってのがあるんや。 これらはパケットをやりとりするんに重要な役割をもってるんや。 これらをADSLのデータ転送に最適な状態に設定し直したることで、パケット数を減らして無駄の無いスムーズなやりとりができるってことや。
・MTUについて
MTU=Max Transfer Unitの略で、パケットサイズの上限を決めるパラメータのこと。 一見パケットサイズは大きいほど無駄が減ってえぇようにも思えるんやけど、あんまり大きぃし過ぎてまうと、細かいデータをたくさんやりとりする場合(細かい画像がぎょうさんあるHPを見る場合とか)に効率が悪ぅなるって結果になってまうんや。 MTUの大きさは、利用するネットワーク環境に応じて適切なものを設定することで、データの転送がスムーズにできることになるんやわ。 WindowsはデフォルトではこのMTU値の設定がADSL環境に最適な設定にはなってないんやわ。 そやから、このMTUの値を調整して単位パケットあたりのサイズをADSL環境に最適化して、データ転送の効率を高めてやると速度向上になるゆ〜ことやね。
・RWINについて
MTUと同じよ〜に重要なもんに、RWIN(Receive Window Size)ってのがあるんやわ。 これはデータのやり取りをする相手先への応答なしに、無条件にデータを受け取ることができるバッファ量を表してるんや。 データを送信する側は、送信先のRWINがいっぱいになるまで、受信側の応答を待たずに一気に送信する事ができるんやわ。 バッファがいっぱいになると受信側は、データを容量分受信し終わったことを送信側に伝えるって動作をするんや。 つまり、RWIN値を増やすと、データのやりとりのコンピュータ同士の応答が頻繁やのぉなって、送信側で応答を待つ機会が減るさかいに送受完了までの時間が短ぁなるってことや。 インターネットみたいに反応の遅延時間が長い場合、このRWINの値を大きぃした方が連続のデータ転送をする場合に有利になるんよ。
(RWINの値は、MTUの値から計算できるで)
MTUとRWINの最適値を計算
・最適なMTU値の出し方
MTU値は、MS-DOSプロンプト(Windows2000はコマンドプロンプト)からpingコマンドを使ぉて出すんやわ。 Windows98SEで説明すると、(基本的には他のバージョンでも同じ)
1.先ずは「MS-DOSプロンプト」を起動。
2.Win98、Win95では「スタートメニュー」-「プログラム」-「MS-DOSプロンプト」を選択して起動。(WindowsMeは「スタートメニュー」-「プログラム」-「アクセサリ」-「MS-DOSプロンプト」、Win2000は「スタートメニュー」-「プログラム」-「アクセサリ」-「コマンドプロンプト」)
3.起動したMS-DOSプロンプトに「ping -f -l 1450 XXX.XXX.XXX.XXX」って入れてみ。環境によって画面に出る数値は違うんやけど・・・(表示されへん場合、1450とした数字の部分を「1400」「1350」とか、小さい値に変えて試してみてな。)
ここで使ぉたpingコマンドは、『ping -f(パケットの断片化を認めへんようにするオプション) -l(パケットサイズを指定するオプション)「パケットサイズ」 「相手のアドレス」』ってゆ〜感じになってるんよ。 1450バイトのパケットをXXX.XXX.XXX.XXXってアドレスに送って、相手先から帰ってきた同じ1450バイトのパケットを受信するまでの時間を測定してるんやわ。 ちなみに、サイズが1500バイトのパケットを送信してみ(表示されへん場合はパケットサイズを「1550」や「1600」、表示されるまで適当にパケットサイズを大きくして試してみて。)、応答時間の変わりに何かメッセージが表示されてるやろ?これはパケットサイズを大きぃし過ぎたさかいにパケットが断片化してしもぉてんねん。
MTUの最適値はこの『パケットが断片化するパケットサイズの直前の値+28』の値なんやわ。 言いかえたら、『パケットが断片化しない最大のパケットサイズ+28』ってことなんやわ。 少々面倒やけど、説明したpingコマンドを使って送信するパケットのサイズを変化させながら、パケットが断片化せぇへん最大の値を探してみて。(28ってサイズはpingコマンドを実行するときにパケットに付け加えられるヘッダのサイズ)=「実際に送信されているデータはコマンドで指定した値に28を足したもの」ってことやで。
・RWINの最適値を計算する
ADSLインターネットに最適なRWINの値は、上で出たMTUの値から計算できるんやで。
最適なRWINを求める為の計算式は、
MTU値から40を引いたもんに、10〜200くらいまでの適当な値を掛けたもんが最適なRWIN値として出るんやで。 『10〜200の間の適当な数値』ってのもごっつい「あやふや」やけど、これは使ぉてるパソコン環境に応じて最適なもんが変わってまうからやねんな。 RWIN値の設定をいろいろ変化させながらリンク速度の測定とかして、自身の最適なRWIN値を見つけんと仕方あらへんね。
レジストリの変更で設定変更
・作業を行う前に、くどいよ〜やけど・・・
実際にシステムを最適化する作業をするんやけど、この作業はWindowsの『レジストリ』って言うシステムに関する設定ファイルを操作するんや。
この作業は一つ間違えるとコンピュータが起動せんよ〜なったり、システムやデータが破壊されてまう恐れがあさかいに充分注意して、確認しながらせんとあかんし、万が一のためにレジストリのバックアップを取っておいたほうがえぇで。
・MTU値設定の手順
1.「スタートメニュー」から「ファイル名を指定して実行」をクリック。
2.「ファイル名を指定して実行」というウィンドウが開さかいに、「名前」の欄に「regedit」と入力。OKボタンをクリックすると、レジストリエディタが起動。
3.エクスプローラ等と同じ要領で操作して、「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans¥000x」っていうフォルダに移動(000xのxは任意の数字。(Windows2000の場合は「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<アダプタ名>\Parameters\Tcpip」)この000xというフォルダにMTUの最大値の設定を入れるんや。
4.まず、0000から「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans¥0000」にいるのを確認、右側のウインドウにマウスを移動させて、右クリック。
5.「新規」ってメニューが出るんで、「文字列」という項目を選択すると『新規値 #1』という項目が追加されるやろ、この「新規値 #1」ってのを「MaxMTU」に書き直して。
Win2000の場合は単に「MTU」。Enterキーを押して確定。
6.次に、「MaxMTU」のところを選択して右クリック。メニューが現れるんで、「変更」を選択。「値のデータ」のところにさっき計算したMTUの値を入れるんや。
7.OKボタンを押して設定を完了。(この作業は「000x」全てに対してするんやで)
・RWIN値設定の手順
レジストリエディタの基本的な操作方法は上と同じ。
1.「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP」に移動。
2.ここに、上記同様に「新規」メニューから「文字列」を選択して項目を追加。名前は「DefaultRcvWindow」と変更。
3.これを右クリックして「変更」を選択して、「値のデータ」のとこに、RWINの値をいれてや。
4.OKボタンを押して設定を完了。レジストリエディタも終了。Windowsを再起動させて作業終了。
Windows2000での設定は、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters」に「TcpWindowSize」って項目を追加して、値を書きこむで。
(ただし、この場合は10進数で入れたらあかんで。RWINのデータを16進数に変換して入れんとあかんねん。アクセサリの電卓を関数電卓にして使うと便利かなぁ?)
フリーソフト使ぉて設定する?
便利なツール類を利用する
上では、Windowsのレジストリエディタを利用して設定する方法についての説明。それ以外に、ソフトを使ぉて設定する方法もあるで。(実は、その方がごっつう楽やねん(・ε・)ノ おっー!)
・NetTune (ダウンロード:http://www.forest.impress.co.jp/library/nettune.html)
みー氏作成のソフト、MTUやRWINの設定を簡単に行うことができるんやわ。特にこのソフトはメニューが日本語なんで一番使いやすいソフトやないかと思うわ。
上記のサイトからソフトをダウンロードして解凍、インストール。 インストールするには、解凍したファイルの「setup.exe」を実行。インストールが終わったら、早速NetTuneを起動して。
1.下の方に「簡単な設定」という項目があって、そこにチェックがついた状態になっていると思うんやけど、クリックしてチェックをはずして。
2.そしたらメニューが設定可能になった画面に変わるやろ。「Path TCP Discovery」というタブが画面の上の方にあるんで、これをクリック。
3.ボタンが2つあるさかいに、このうち「Disable」の方をクリック、ボタンをオンにしてや。
4.その下のボタンが3つ並んでいるとこから「設定」ボタンをクリック。
次はMTU値の設定。
5.上のメニューから「MTU」タブをクリック。先ほどの起動時の画面に戻ったやろ?
6.ここで「カスタムってボタンを選択。そしたら、右側にある文字ボックスが入力可能になったやろ。ここに、さっき探したMTUの値を入力。
7.「設定」ボタンをクリック。
今度はRWINの設定。
8.上のタブから「TCP Window Size」を選択してクリック。「TCP Window Size (RWIN)」って項目と文字ボックスがあるやろ?数値が入力されてるけど、消して設定値を入れなおすんよ。
9.終わったら、「設定」ボタンをクリック。
以上で設定は終わり。
10.「ファイル」メニューから「終了」を選択してNetTuneを終了。
Windowsを再起動して、設定を完了。
・そのほかのソフト
「NetTUNE」の他にも、MTU関連の設定を変更するソフトがあるさかいに参考にしてや。
例 「Dr.TCP」 (ダウンロード:http://www.dslreports.com/front/drtcp.html)
英語版のソフト。これも「NetTune」同様の設定ができるで。 他にもあるさかいに「検索」してみて。