ブラック ホール ルーターの診断と問題解決

Microsoft Windows XP については、次の資料を参照してください。314825

概要

WAN (Wide Area Network) の TCP/IP では、中間のネットワーク セグメントのパケット サイズが通信ホストより小さく、ルーターがこの状況に対して適切な ICMP 応答を送信しない場合、複数のルートを介した通信が失敗することがあります。また、パス上のファイアウォールによって ICMP 応答が破棄されることもあります。この状況を引き起こすルーターは "ブラック ホール" ルーターとして知られています。Microsoft Windows の TCP/IP プロトコルと共にインストールされる標準ユーティリティである Ping をブラック ホール ルーターを検出するために使用することができます。この資料では、ブラック ホール ルーターの問題を回避または解決するためのいくつかの方法について説明します。

詳細

ネットワーク ルーターが次のネットワーク セグメントの最大転送ユニット (MTU) を超えるパケットを受信し、そのパケットの IP 層に断片化を禁じる "Don't Fragment" ビットのフラグが設定されている場合、そのルーターは "ICMP Destination Unreachable" のメッセージを送信ホストに返す必要があります。このメッセージが返されない場合、パケットが廃棄される可能性があり、その結果さまざまなエラーが発生します。発生するエラーは、そのリンクで通信しているアプリケーションによって異なります。これらのエラーは、アプリケーションがローカル サブネット上のコンピュータに接続している場合には発生しません。エラーは断続的に発生しているように見えますが、詳しく調べると、クライアントにリモート ホストから大容量のファイルを読み込ませることなどにより再現可能です。


Ping ユーティリティで -f (断片化の禁止) および -l (バッファ サイズ) パラメータを使用して、ブラック ホール ルーターを検出することができます。-f パラメータを設定すると、Ping ユーティリティは IP の "Do not Fragment" ビットを設定した ICMP エコー パケットを送信します。-l パラメータは ICMP エコー パケットのバッファ、つまりペイロードのサイズを設定します。断片化せずに送信できるバッファの最大値は、ルートにおける最小 MTU から IP および ICMP ヘッダを引いた値 (MTU-28) です。たとえば、イーサネットの MTU は 1,500 バイトのため、最良の環境の場合、Ping は 1,472 バイトの ICMP バッファが設定された非断片化パケットをエコーできます。この場合 Ping の構文は以下のとおりです。


Ping <コンピュータ名または IP アドレス> -f -l 1472

この構文は、どのローカル IP アドレスでも機能します。接続されているすべてのセグメントの MTU が 1,500 バイトを超えている場合にも同様のパケットが返されます。中間のセグメントの MTU が 1,500 バイト未満で、ルーターが適切な ICMP Dstination Unreachable パケットを返す場合、Ping ユーティリティに "Packet needs to be fragmented but DF set." と表示されます。MTU の値が小さなセグメントがルートに存在する場合、適切な ICMP パケットが返されず、Ping に "Request timed out." と表示されます。一般的なネットワーク媒体におけるデフォルトの MTU については、「サポート技術情報」 (Microsoft Knowledge Base) の資料 140375 を参照してください。


-l パラメータの値を変更しながら、連続して Ping を実行することにより、特定のルートで断片化せずに伝送可能な最大のパケットを検出することができます。通常使用される最小の MTU は 576 バイトです。したがって、安全のため ICMP バッファを 548 バイトから開始し、その値を上げていくことをお勧めします。たとえば、Ping <ホスト名またはアドレス> -f -l 972 でパケットが返り、Ping <ホスト名またはアドレス> -f -l 973 が失敗した場合、そのルートで使用可能な最大の MTU は 1,000 (972+28) バイトです。


ブラック ホール ルーターの問題を解決または回避するには、次の 4 つの方法があります。
  1. 136970 Windows NT 3.51 の PMTU ブラック ホール検出アルゴリズムの変更
  2. 中間のルーターが ICMP タイプ 3 コード 4 (送信先に到達不可能、断片化が必要だが DF ビットが設定されている) のメッセージを送信するように設定します。この操作には、ルーターのソフトウェアまたはファームウェアのアップグレード、ルーターの設定、またはルーターの交換が必要になる場合があります。

  3. 障害のあるルートを介して通信する Windows ホストの PMTU 検出を無効にします。これで、デフォルトの MTU が 576 バイトに設定されます。これが原因で、ネットワークのパフォーマンスが大幅に劣化する可能性があります。

  4. ホスト インターフェイスの MTU を、ブラック ホール ルーターが処理できる最大の値に設定します。これにより、できる限り大きなサイズのパケットがその接続を介して送信されることが保証されますが、ローカルのトラフィックおよび問題のない接続ルートを介するトラフィックでは、可能なサイズより小さなパケットが使用されます。この回避策では、問題のホストで使用される可能性のあるすべてのリンクについて、それらの MTU および状態が調査済みであることが前提となります。
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
120642 Windows NT および Windows 2000 での TCP/IP および NBT の設定
128797 DEC 250 または DEC 500 ルーターを介してファイルを転送できない
136970 Windows NT 3.51 の PMTU ブラック ホール検出アルゴリズムの変更
138575 イーサネット セグメントを介した FDDI リング間の通信が失敗する
140375 各種ネットワーク トポロジのデフォルトの MTU サイズ
詳細については、Internet RFC 1191 および RFC 1435 を参照してください。これを行うには、次の Web サイトにアクセスします。
Windows NT Server リソース キットの第 6 章『TCP/IP Implementation Details』を参照してください。これを行うには、次のマイクロソフト Web サイトにアクセスします。
プロパティ

文書番号:159211 - 最終更新日: 2008/01/13 - リビジョン: 1

フィードバック