通信量が多いと不安定

パケットサイズが小さいpingは安定しているものの、Webやftp等データ量が多くなると通信出来なくて不安定な場合に考えられるトラブルについて説明します。

現象

 Webやftpサーバー等データ量が多いと通信出来ない。他の通信は問題なかったり、ping -t 相手サーバーで1日確認しても安定して応答が返ってきている。

ping安定で通信量が多いと不安定1

 パソコン、サーバーは共に正常に動作しているとします。

切り分け方法

 コマンドプロンプトでping -l 1472 -f 通信相手 を実行します。又、フレッツからインターネット先に接続されているサーバーとの通信の場合はping -l 1426 -f 通信相手 を実行します。

 1472はデータ部分のbyte数を示すため、ICMPヘッダーの8byteとIPヘッダーの20byteを足して1500byteになり、MTUの最大値でpingを送信します。フレッツの場合も同様でMTUの最大値である1454byteでpingを送信します。

原因

 ping -l 1472 -f 通信相手、又はping -l 1426 -f 通信相手で応答がない場合、応用編の「フラグメント」で示したPath MTU Discoveryが正常に動作していない可能性があります。

 例えばルーターBとルーターCの間のMTUが1000byteだった場合、ルーターBはICMPのコード4であるfragmentation needed and DF setを返信しますが、ルーターAでICMPをフィルタリングされているとパソコンまで届きません。このため、パソコンではPath MTU Discoveryを正常に行えず、フラグメント不可ビットを有効にしたまま最大MTUで再送し、ルーターBにより破棄されて通信が出来ません。

ping安定で通信量が多いと不安定2

 又、ICMP自体を返信せずにパケットの破棄だけ行うルーターもあります。このようなルーターはブラックホールルーターと呼ばれます。図のルーターBがICMPを返信せずにパケットの破棄だけするとブラックホールルーターになります。ブラックホールルーターが途中にある場合はPath MTU Discoveryを正常に行えず、通信が出来ません。

対処

 自身が管理しているネットワークの場合、ルーターAでICMPを遮断しているのであれば透過するようにします。又、ルーターBがブラックホールルーターの場合はICMPを返信するようにします。これでPath MTU Discoveryが正常に動作して通信出来るようになります。

ping安定で通信量が多いと不安定3

 又、可能であればルーターBとCの間のMTUを1500byteに変更すると通信が速くなります。

パソコンでの対処

 フレッツでインターネットに接続されている先のルーターでICMPを遮断していたりブラックホールルーターがいる場合、パソコン側で対処が必要になります。

 この場合、パソコン側でICMPの遮断やブラックホールルーターを検出し、フラグメント不可ビットを無効にして送信する事が可能です。

 フラグメント不可ビットを無効にして送信すると応用編の「フラグメント」で示した通り、ルーターでフラグメント化してくれます。

 ICMPの遮断やブラックホールルーターの検出は通信を開始してもAckが受信出来ない場合に行われます。これはWindowsXPや7ではレジストリを変更する事で可能です。

 タスクバーの一番左のWindowsマークで「プログラムとファイルの検索」でregeditと入力します。そこで「HKEY_LOCAL_MACHINE」→「SYSTEM」→「CurrentControlSet」→「Services」→「Tcpip」→「Parameters」と順番に選択します。

 そこで右の欄で「新規」→「DWORD」を選択し、名前を「EnablePMTUBHDetect」と入力して値を「1」にします。その後、パソコンを再起動すると有効になり、ICMPの遮断やブラックホールルーターを検出し、フラグメント不可ビットを無効にして通信出来るようになります。

 この方法はパソコンからの送信パケットが途中のMTUサイズより大きい場合に有効ですが、サーバーからの送信パケットが大きい場合は有効ではありません。

 例えばルーターCがブラックホールルーターでICMPを返信しない場合、サーバー側での対処が必要です。

 又、稀にサーバー側でICMPを遮断している事があり、この場合もパソコン側で対処が出来ません。

ping安定で通信量が多いと不安定4

サイト関連1

応用編「フラグメント
  • このエントリーをはてなブックマークに追加