文書番号: 314825 - 最終更新日: 2003年2月3日 - リビジョン: 1.0

ブラック ホール ルーターの問題をトラブルシュートする方法

Windows 2000 については、次の資料を参照してください。159211  (http://support.microsoft.com/kb/159211/JA/ )

重要 : この資料には、レジストリの編集に関する情報が含まれています。レジストリを編集する前に、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。レジストリのバックアップ、復元、および編集方法の詳細については、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986  (http://support.microsoft.com/kb/256986/EN-US/ ) Description of the Microsoft Windows Registry
256986   (http://support.microsoft.com/kb/256986/JA/ ) Microsoft Windows レジストリの説明

目次

すべて展開する | すべて折りたたむ

概要

この資料では、"ブラック ホール" ルーターという用語を定義し、ブラック ホール ルーターを検出する方法について説明します。また、ブラック ホール ルーターにより発生する可能性のあるデータ損失を回避する方法を 3 つ提案します。

詳細

TCP/IP ベースの WAN (ワイド エリア ネットワーク) では、ネットワークの中間にあるセグメントの最大パケット サイズが両端の通信ホストの最大パケット サイズより小さく、ルーターがこの状況に対する適切な ICMP (Internet Control Message Protocol) 応答を送信できない場合、複数のルートを経由した通信が失敗する場合があります。このようなルーターは "ブラック ホール" ルーターとして知られています。

Microsoft Windows の TCP/IP プロトコルと共にインストールされる標準ユーティリティの Ping を使用して、ブラック ホール ルーターを検出することができます。また、ブラック ホール ルーターの問題を修正または回避すために、3 つの方法のいずれかを使用できます。

ネットワーク ルーターが次の通信ネットワーク セグメントの最大転送ユニット (MTU) を超えるパケットを受信し、そのパケットの IP 層に断片化を禁じる "don't fragment" ビットのフラグが設定されている場合、そのルーターは ICMP "destination unreachable" メッセージを送信ホストに返送することを期待されています。

ルーターがこのメッセージを返送しない場合、パケットが破棄される可能性があり、その結果さまざまなエラーが発生します。どのようなエラーが発生するかは、失敗したリンクを経由して通信しているプログラムによって異なります (これらのエラーはプログラムがローカル サブネット上のコンピュータに接続している場合には発生しません)。この現象は断続的に発生しているように見えますが、詳しく調べると、現象が再現可能であることがわかります。 たとえば、リモート ホストから大容量ファイルを送信してクライアントに読み込ませることにより、現象が再現します。

ブラック ホール ルーターを検出する

Ping ユーティリティを使用してブラック ホール ルーターを検出することができます。そのためには、ping コマンドを入力するときに、-f および -l パラメータを設定します。
  • -f パラメータを設定すると、Ping ユーティリティは IP の "do not fragment" ビット セットを設定した ICMP エコー パケットを送信します。
  • -l パラメータは、ICMP エコー パケットのバッファ (またはペイロード) サイズを設定します。-l パラメータの後に数字を入力することにより、サイズを指定できます。
断片化せずに送信できるバッファの最大値は、ルートにおける最小 MTU から IP および ICMP ヘッダーを差し引いた数値 (最小 MTU - 28) となります。たとえば イーサネットの MTU は 1,500 バイト なので、最適な環境にある場合、Ping ユーティリティは 1,472 (1,500 - 28) バイトの断片化されないパケット (ICMP バッファ) をエコーすることができます。この場合の ping 構文を以下に示します。
ping コンピュータ名または IP アドレス -f -l 1472
すべてのローカル IP アドレスで、次のような結果が予想されます。
  • 接続されているすべてのセグメントの MTU が 1,500 バイト以上の場合、パケットが正常に返送される。
  • 中間のセグメントの MTU が 1,500 バイト未満で、ルーターが適切な ICMP "destination unreachable" パケットを返送する場合、Ping ユーティリティに "Packet needs to be fragmented but DF set." というメッセージが表示される。
  • 中間のセグメントの MTU が 1,500 バイト未満で、ルーターが適切な ICMP "destination unreachable" パケットを返送しない場合、Ping ユーティリティに "Request timed out." というメッセージが表示される。
-l パラメータの値を増やしながら続けて Ping を実行することにより、特定のルートで伝送される断片化されないパケットの最大値を検出することができます。通常使用される MTU の最小値は 576 バイトなので、安全に作業を進めるには ICMP バッファを 548 バイトから開始し、徐々にその値を上げていきます。たとえば、Ping コンピュータ名または IP アドレス -f -l 972 コマンドではパケットが返送されるが、Ping コンピュータ名または IP アドレス -f -l 973 ではパケットが返送されない場合、そのルートの最大 MTU は 1,000 (972 + 28) バイトになります。一般的なネットワーク媒体におけるデフォルトの MTU については、「サポート技術情報」 (Microsoft Knowledge Base) の以下の資料を参照してください。
314496  (http://support.microsoft.com/kb/314496/EN-US/ ) Default MTU Size for Different Network Topology
314496   (http://support.microsoft.com/kb/314496/JA/ ) 各種ネットワーク トポロジの既定の MTU サイズ

ブラック ホール ルーターの問題を修正または回避する

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

ブラック ホール ルーターの問題を修正または回避するには、次の 3 つの方法があります。

方法 1

WAN 接続経由で通信している Windows ベースのホストで PMTU ブラック ホール検出を有効にします。次の手順を実行します。
  1. レジストリ エディタ (Regedit.exe) を起動します。
  2. 次のレジストリ キーに移動します。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters
  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックして、次のレジストリ値を追加します。
    値の名前 : EnablePMTUBHDetect
    データ型 : REG_DWORD
    値 : 1
  4. レジストリ エディタを終了して、コンピュータを再起動します。

方法 2

中間のルーターが ICMP タイプ 3 コード 4 ("destination unreachable, don't fragment (DF) bit sent and fragmentation required") のメッセージを送信するように構成します。これには、ルーターのソフトウェアまたはファームウェアの更新、ルーターの再構成、またはルーターの交換が必要になる可能性があります。

方法 3

ホスト インターフェイスの MTU を、ブラック ホール ルーターが処理できる最大サイズに設定し、最大サイズのパケットがその接続を経由して送信されることを保証します。ただし、ローカルのトラフィックや問題のない中継接続のトラフィックにも、必要なサイズより小さなパケットが使用されます。

この回避方法では、ホストで使用する可能性のあるすべてリンクの MTU および状態を確認済みであることが前提となります。サポートされている最大 MTU サイズの確認後、MTU を手動で設定します。次の手順を実行します。
  1. [スタート] ボタン、[コントロール パネル] の順にクリックします。
  2. [ネットワークとインターネット接続]をクリックし、[ネットワーク接続] をクリックして開きます。
  3. 複数のネットワーク接続が表示された場合は、各接続をダブルクリックし、表示された [状態] インターフェイスの [サポート] タブをクリックします。[デフォルト ゲートウェイ] エントリが表示された場合、その接続がインターネット接続に使用されているネットワーク接続であると考えられます。接続名 ("ローカル エリア接続 2" など) をメモします。
  4. レジストリ エディタ (Regedit.exe) を起動します。
  5. HKEY_LOCAL_MACHINE ツリーの下にある次のレジストリ キーに移動します。
    SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\
  6. このキーの下に、数字の識別子を持ついくつかのキーがあります。各キーには Connection サブキーが設定されています。次のようなキーをすべて調べます。
    アダプタの ID\Connection
    Connection サブキーの [Name] 値には、ネットワーク接続フォルダに使用されるネットワーク接続名が設定されています。ステップ 3 でメモした名前と一致するものが見つかったら、そのネットワーク接続名の アダプタの ID をメモします。
  7. HKEY_LOCAL_MACHINE に戻り、次のレジストリ キーに移動します。
    SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\アダプタの ID
    アダプタの ID は、ステップ 6 でメモした番号です。このキーを強調表示すると、画面の右側にいくつかの値が表示され、その中に [DefaultGateway] および [EnableDHCP] が含まれています。
  8. 画面の右側を右クリックし、[新規] をクリックして、[DWORD 値] をクリックします。この値に [MTU] という名前を付けます。
  9. その値をダブルクリックして編集します。[表記] を [10 進数] に変更し、Ping テストで確認した MTU の最大許容サイズを入力します。
  10. レジストリ エディタを終了します。
一部のサーバーで依然として問題が発生する場合は、その特定の経路の他のルーターに問題があるため、Ping テストの結果よりも小さい値を MTU に設定する必要があります。これらのサイトに正常にアクセスできるようになるまで、MTU の値を繰り返し 10 ずつ下げます。

MTU 設定の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
314053  (http://support.microsoft.com/kb/314053/EN-US/ ) TCP/IP and NBT Configuration Parameters for Windows XP
314053   (http://support.microsoft.com/kb/314053/JA/ ) Windows XP での TCP/IP と NBT の構成パラメータ

詳細については、次の Internic Web サイトで Internet RFC 1191 および RFC 1435 を参照してください。
http://www.internic.net/ (http://www.internic.net/)

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 314825  (http://support.microsoft.com/kb/314825/EN-US/ ) (最終更新日 2002-08-06) をもとに作成したものです。

この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
キーワード: 
kbinfo kbenv kbnetwork KB314825
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"