速度低下の原因と対策



※下記のサイトで確認できれば、下記の操作は必要ありませんが、参考のために記載しておきます。

  SpeedGuide.net TCP/IP Analyzer ←現在の動作環境が表示できます。

※最適化のコメントは、日本のブロードバンド環境を前提としていないので、必ずしも適切ではありません。

5、MTU値のコマンドによるMTU値の確認方法

◆ ソフトでの読み出しやレジトリで確認する方法もあるが、実際の通信状況で確認するのが確実なので、その方法を説明する。

※ 基本的な考え方(参考)

・ネットワークの通信試験でもっともポピュラーなコマンドが、ping(Paket InterNet Groper)コマンドである。読み方はピングというのが一般的に浸透しているようだ。本来は、ping-pongをピンポンと呼ぶように、ピンと呼ぶのが正しいのだろうが・・・

・ネットワーク機器は、pignコマンドに対して、ICMP(Internet Control Message Protocol)エコーを返すのがルールだが、多量のpingコマンドを送りつけ、応答処理のためにサーバの機能を麻痺させるping爆弾といういたずら防止のために、一部のサーバではソフト的に応答を停止している場合もあるので、下記のコマンドで、確認するには、まず、応答を返してくれるサーバであることを確認してから行う。

・ping コマンドをオプションを省略して行うと、MTU値がどうなっていてもフラングメント処理により、サーバが応答すれば正常に結果が表示される。

・ping コマンドでは、送信するデータサイズの指定は実際のデータ部のサイズで行うが、実際には処理には、IPヘッダ部(20バイト)とTCP(ICMP)ヘッダ部(8バイト)が必要なので、MTU値が、1500バイトで設定されている場合にフラグメント(データサイズが指定した入れ物より大きいため、分割して通信する処理)の発生なしに通信できるサイズを指定するためには、MTU値から28バイトを引いた値を設定する。

なお、TCPヘッダは通常は40バイトで計算するので、IPヘッダとの合計は40バイトだが、PingコマンドではTCP(ICMP)ヘッダ部が8バイトなので、合計28バイトで計算する。

※ ヒント

下記の操作で、設定した値でうまく動作していることも確認できます(最後の「参考」を参照)。

■ MTU値が、1500バイトとなっていることを確認する場合の操作例

・pingコマンドに、分割処理禁止の指定(オプション -f) と データサイズ指定(オプション -l 1472)、1500-28=1472、フレッツADSLでは、1454-28=1426

・指定はすべて半角で、コマンドは半角の空白で区切ります。例 データサイズ指定 -l (1ではなくLである)の後に半角にスペースを入れて、データサイズを指定する)

@ コマンドプロンプトを呼び出す(スタートメニューの中から呼び出してもよいがここでは直接呼び出している)。

A Windows2000では、CMDでも構わない(commandではよい)。

・他のWindows

B サーバが応答するかどうかを確認している。ここでは、www.ocn.ne.jp を指定しているが、www.yahoo.co.jp でもIPアドレスを直接指定してもよい。

・下図では、www.ocn.ne.jpをDNSサーバへ問い合わせて、実際のネットワーク上のアドレス(IPアドレス)210.190.142.135 のサーバに対して、レスポンス要求を4回返すように処理が行われ、結果として、32バイトのデータを送り、210.190.142.135から40ms(msは、1/1000秒の単位)のReply(返事) があったということである。

・最後のTTL(Time To Live)は、このコマンド(パケット)の有効期間を表すもので最初は255の値がセットされて送りだされる。ネットワークではルータやサーバなどの機器がバケツリレーのようにデータ(パケット)を中継して通信する。この中継毎にTTLの値は減っていく仕組みになっており、下図では240にまで減算されている。つまり、それだけ、経由して応答が返ってきたということだ。万が一、ネットワークがループ上になっていつまでも、パケットがネットワーク上をさ迷うな状態になっても、TTL値が減っていくので、値が0になった時点でパケットは消滅する仕組みになっている。この仕組みのおかげでネットワーク上を無駄なパケットが延々とさ迷うことを防げるが、距離が遠くて中継が255を超えるような相手にはパケットが到達できない恐れもある。このような特殊な場合には、-i オプションでTTL値を多く設定も可能である。

 

C www.ocn.ne.jpサーバに対して、データサイズを超えても分割処理を行わないで、指定したデータサイズで試験を行った結果である。

・1500-8-20=1472 を指定して、正常に応答が返っているため、MTU値は1500以上で動作していることが確認できた。

 

D こんどは、データサイズを1バイト増やして、1473 で試験してみると、「パケットは分割する必要がありますが、分割禁止の指定がされています」というメッセージが表示されて、4回送信した結果、受信できなかったことを示してします。

・すなわち、MTU値は、1500で動作していることが確認できました。

・フレッツADSLでは、-f -l 1426で正常で、-f -l 1427でエラーになれば、MTU値は正常な1454に設定されていることが確認できます。

参考

MTU値を1500に設定した場合は、1500-28=1472で正常に応答が返るはずですが、結果がDの様に「分割が必要」との結果が出た場合は、MTU値が1500ではうまく動作しないと言うことです。

この場合は、試験するデータサイズの指定を1472より少なくして、試験して、「分割が必要」とのメッセージが表示されない値を見つけます。
この見つけた値に、28を加えた数値がMTU値の最大です。前項の手順で、再度MTU値を設定しなおして、Windowsを再起動した後、再度、Pingコマンドで設定した値で正しく動作していることを確認してください。

また、MTU値を最大の1500に設定してから、「分割が必要」と表示されない値まで、試験するデータサイズを減らしていき、設定可能なMTU値の最大値を求める方法も考えられます。

6、ルータの不具合による速度低下へ


7、ウィルス検出ソフトの不具合

8、フレッツADSLの定石

9、些細な対策(ブラウザの設定を含む)