(57)【要約】【課題】送信元デバイスから宛先デバイスへの通信障害の原因を判断するシステム、方法およびプログラムを提供する。【解決手段】送信元デバイスから宛先デバイスへの好適ルートは、正順序のルータの列を含む。第１プログラム命令が、送信元デバイスから宛先デバイスへ向かって正順序の列の最初となるルータ群を１つ以上判断する。この最初のルータ群の最後のルータは、宛先デバイスへ向かって正順序の列中の次ルータを指定しない。第２プログラム命令が、宛先デバイスから送信元デバイスへ向かって逆順序で、ルータの列を判断する。第３プログラム命令が、第２プログラム命令によって判断された逆順序のルータの列から、最初のルータ群の最後のルータが宛先デバイスへ向かって正順序でその次にくる次ルータとしてどのルータを指定すべきかを判断し、さらに、最初のルータ群の最後のルータが宛先デバイスへ向かって正順序でその次にくる次ルータとしてどのルータを指定すべきかについて通知を送信する。【選択図】図１
2011522477.tif 000002
【特許請求の範囲】
【請求項１】
送信元デバイスから宛先デバイスへの通信障害の原因を判断する、コンピュータ実装される方法であって、前記発信元デバイスから前記宛先デバイスへのルートは、正順序のルータの列を含み、前記方法は、
前記送信元デバイスから前記宛先デバイスへ向かって前記正順序の前記ルータの列の最初となるルータ群を１つ以上判断するステップであって、前記最初のルータ群のうちの最後のルータは、前記宛先デバイスへ向かって前記正順序の前記列中の次ルータを指定しない、判断するステップと、
前記宛先デバイスから前記発信元デバイスへ向かって逆順序に、前記ルータの列を判断するステップと、
前記逆順序のルータの列から、前記最初のルータ群の前記最後のルータが前記宛先デバイスへ向かって前記正順序でその次にくる次ルータとしてどのルータを指定すべきかを判断し、前記最初のルータ群の前記最後のルータが前記宛先デバイスへ向かって前記正順序でその次にくる次ルータとしてどのルータを指定すべきかについて通知を送信するステップと、
を含む、コンピュータ実装される方法。
【請求項２】
正順序の前記列の前記１つ以上の最初のルータ群を判断する前記ステップは、一部分として、前記送信元デバイスに対し、前記宛先デバイスへ向かって次の次ルータについて問い合わせるステップと、前記送信元デバイスの前記次ルータに対し、前記送信元デバイスの前記次ルータの、前記宛先デバイスへ向かって次の次ルータについて問い合わせるステップとを含み、
前記宛先デバイスから前記送信元デバイスへ向かって前記逆順序で前記ルータの列を判断する前記ステップは、一部分として、前記宛先デバイスに対し、前記送信元デバイスへ向かって次の次ルータについて問い合わせるステップと、前記宛先デバイスの前記次ルータに対し、前記宛先デバイスの前記次ルータの、前記送信元デバイスへ向かって次の次ルータについて問い合わせるステップとを含む、
請求項１に記載のコンピュータ実装される方法。
【請求項３】
前記好適ルートにおけるファイアウォールを判断し、前記送信元デバイスから前記宛先デバイスへの前記メッセージのフローが前記ファイアウォールを通過することを許可するルールを前記ファイアウォールが含むかどうかを判断し、許可するルールを含まない場合には、前記送信元デバイスから前記宛先デバイスへの前記メッセージのフローが前記ファイアウォールを通過することを許可するルールを前記ファイアウォールが含まないという通知を生成するステップをさらに含む、
請求項１に記載のコンピュータ実装される方法。
【請求項４】
方法請求項１乃至３のいずれかによる前記方法の前記ステップ全てを実行するようになっている手段を含む、システム。
【請求項５】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがデータ処理デバイスにて実行されると、方法請求項１乃至３のいずれかによる前記方法の前記ステップを実行するように特になっている命令を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、コンピュータ・システムおよびネットワークに関し、特に、ネットワーク通信における障害をトラブルシュートすることに関する。
【背景技術】
【０００２】
現在では、インターネットなどのコンピュータ・ネットワークは周知のものとなっている。そうしたネットワークは、通信媒体、ファイアウォール、ルータ、ネットワーク・スイッチおよびハブを備えている。（通常、ファイアウォール、ネットワーク・スイッチおよびハブは、ルータを含む。）多くの場合ネットワークは、クライアント・コンピュータとサーバ、あるいはその他の送信元デバイスと宛先デバイスを、相互に接続する。宛先「デバイス」とは、宛先のコンピュータ、またはサブネットへのゲートウェイとすることができる。インターネットを介した通信の場合、通常、送信元コンピュータと宛先デバイスとの間に多数のルータおよび多数の実現可能なルーティング・パスが存在する。メッセージがルータに到着すると、ルータは、宛先デバイスへのパスにおける次のルータすなわち「ホップ」について決定する。この決定を行うために、ＯＳＰＦ、ＲＩＰ、ＩＧＲＰ、ＥＩＧＲＰ、ＩＳＩＳまたはＢＧＰなどといった多数の既知のアルゴリズムがある。ＲＩＰ、ＯＳＰＦおよびＩＳＩＳの各プロトコルを用いたルータは、最短のパス、言い換えれば最少数の介在ルータを介して、メッセージ・パケットを宛先デバイスまでルーティングしようとする。ＯＳＰＦプロトコルを用いたルータはさらに、メッセージ・パケットを次ホップへ転送するのに使用されるインターフェースに基づいて、次ホップまでのパスの帯域幅を判断することができる。ＩＧＲＰおよびＥＩＧＲＰの各プロトコルを用いたルータは、最大の帯域幅、最短の遅延および最短のパス要素に基づいて、メッセージ・パケットをルーティングしようとする。ＢＧＰプロトコルを用いたルータは、最短の自律システム・パス（言い換えれば、１つの管理制御の範囲内における最少数のルータ）あるいは最小のＭＥＤ（ｍｕｌｔｉ−ｅｘｉｔ  ｄｉｓｃｒｉｍｉｎａｔｏｒ）属性（言い換えれば、或る１つのルートの、別のルートに対する優先であって、隣接ルータなどにアドバタイズされる）に基づいて、メッセージ・パケットをルーティングしようとする。ＯＳＰＦ、ＩＧＲＰ、ＥＩＧＲＰおよびＢＧＰルーティグ機能は、大多数の宛先デバイスに向けて１つより多いルートを特定および記録し、それらを、適用可能なルーティング方針に基づく順序で利用しようとする。
【０００３】
一般的なシナリオでは、送信元コンピュータが、ＴＣＰ／ＩＰアダプタ・カードへ渡すメッセージを作成する。ＴＣＰ／ＩＰアダプタ・カードは、そのメッセージをパケットに分割し、各パケットにヘッダを付加する。ヘッダは、送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポート、ならびにプロトコルを指定する。送信元コンピュータは、メッセージ・パケットを、その送信元コンピュータのファイアウォールまたはゲートウェイ・デバイス（ゲートウェイ・ルータなど）へ転送する。通常、ファイアウォールは、許可メッセージ・フロー（「ルール」）のリスト、すなわち、いずれかの方向にファイアウォールを通過することが許可されているメッセージ・パケットに関する送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポートならびにプロトコルの組み合わせのリストを、有している。通常、ファイアウォールは、ルータも備えている。そのメッセージ・パケットが送信元ネットワークのファイアウォールを通過することが認められていれば、ルータは、宛先デバイスへ向かう途中の「次ホップ」ルータを判断する。ルータは、先に説明したように、既知のルーティング・プロトコルに基づいて「次ホップ」を判断する。メッセージ・パケットはその後、ルータからルータへと宛先ネットワークまで進められ、宛先ネットワークでは、その宛先ネットワークのファイアウォールまたはゲートウェイ・デバイスが、（宛先ネットワークにて当該パケットのメッセージ・フローをファイアウォールが許可することを前提として）メッセージ・パケットを宛先コンピュータまたはその他の宛先システムへと転送する。
【０００４】
ときとして、メッセージが宛先デバイスまで届かないことがある。このことは、通信パスにおけるルータの障害、通信パスにおけるルータ相互間の通信リンクの障害、通信パスにおけるファイアウォールによる適切または不適切な遮断、あるいはその他の理由が原因であり得る。
【０００５】
管理者が上述のような障害を知ることのできるいくつかの方法がある。例えば、送信元デバイスが宛先デバイスからしかるべき応答を受信しなかった場合、送信元デバイスのユーザが、ヘルプ・デスクを呼び出すか、あるいはその他の方法で管理者に通知するとよい。別の例として、パス内のルータが宛先デバイスへの「ルート」を持っていない場合、あるいは次ホップへの通信リンクがダウンしている場合に、そのルータが、送信元デバイスへエラー・メッセージを戻すことができる。
【０００６】
ネットワークにおける障害が検出され次第、管理者は、障害の原因を特定して障害を修正しようとする。パス内のルータが宛先デバイスへの「ルート」を持っていない場合あるいは次ホップへの通信リンクがダウンしている場合には、エラー・メッセージによって問題のタイプが示されることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ネットワーク通信における障害のトラブルシューティングを向上させることである。
【課題を解決するための手段】
【０００８】
本発明は、送信元デバイスから宛先デバイスへの通信の障害の原因を判断するシステム、方法およびプログラムに属する。送信元デバイスから宛先デバイスへの好適ルートには、正順序のルータの列が含まれる。第１プログラム命令が、送信元デバイスから宛先デバイスへ向かって正順序の列の最初となるルータ群を１つ以上判断する。この最初のルータ群の最後のルータは、宛先デバイスへ向かって正順序の列中の次ルータを指定しない。第２プログラム命令が、宛先デバイスから送信元デバイスへ向かって逆順序で、ルータの列を判断する。第３プログラム命令が、第２プログラム命令によって判断された逆順序のルータの列から、最初のルータ群の最後のルータが宛先デバイスへ向かって正順序でその次にくる次ルータとしてどのルータを指定すべきかを判断し、さらに、最初のルータ群の最後のルータが宛先デバイスへ向かって正順序でその次にくる次ルータとしてどのルータを指定すべきかについて通知を送信する。
【０００９】
本発明の特徴によれば、第１プログラム命令は、一部分として、送信元デバイスに対し、宛先デバイスへ向って次の次ルータについて問い合わせることと、送信元デバイスの当該次ルータに対し、送信元デバイスの当該次ルータの、宛先デバイスへ向かって次の次ルータについて問い合わせることとによって、正順序の列の最初のルータ群を１つ以上判断する。第２プログラム命令は、宛先デバイスに対し、送信元デバイスへ向かって次の次ルータについて問い合わせることと、宛先デバイスの当該次ルータに対し、宛先デバイスの当該次ルータの、送信元デバイスへ向かって次の次ルータについて問い合わせることとによって、宛先デバイスから送信元デバイスへ向かって逆順序でルータの列を判断する。
【００１０】
本発明の別の特徴によれば、第４プログラム命令が、好適ルートにおけるファイアウォールを判断し、このファイアウォールには送信元デバイスから宛先デバイスへの当該メッセージのフローがファイアウォールを通過することを許可するルールが含まれているかどうかを判断し、そのようなルールが含まれていない場合には、当該ファイアウォールには送信元デバイスから宛先デバイスへのメッセージのフローがファイアウォールを通過することを許可するルールが含まれないという通知を、生成する。
【図面の簡単な説明】
【００１１】
【図１】本発明を組み込んだネットワーク管理サーバ、ならびに、このネットワーク管理サーバによりネットワーク通信障害をトラブルシュートすることが可能な通信の送信元コンピュータ、ゲートウェイ・デバイス、ルータおよび宛先デバイスの、ブロック図である。
【図２】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【図３】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【図４】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【図５】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【図６】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【図７】本発明による、ネットワーク管理サーバ内のネットワーク通信トラブルシューティング・プログラムのフロー・チャートを構成する図である。
【発明を実施するための形態】
【００１２】
ここで、図面に関連して本発明を詳細に説明する。図１は、概括的に示された分散コンピュータ・システム１０を示し、ここで本発明が具現化される。システム１０は、サブネット３０上の送信元コンピュータ２０と、サブネット３０をプライベートあるいはパブリックのネットワーク３４（パブリック・インターネットなど）へインターフェース接続するゲートウェイ・デバイス（ゲートウェイ・コンピュータなど）４０とを含む。ネットワーク３４は、ネットワーク・ルータ３６−１、３６−２、３６−３・・・３６−Ｎといった多種多様なルータを含み、ゲートウェイ・デバイス４０からのメッセージ・パケット（送信元コンピュータ２０が発信元である）を宛先サブネット２３０のゲートウェイ・デバイス２４０へ転送する。ルータは、ＷＡＮルータ、顧客アクセス・ルータ、顧客の内部ルータ、インターネット・アクセス・ルータ、インターネット内のルータなどとすることができる。宛先コンピュータ２２０はサブネット２３０上にあり、送信元コンピュータ２０によって送信されたメッセージを処理する。宛先コンピュータ２２０も同様に、ゲートウェイ・デバイス２４０、ネットワーク・ルータ３６−１、３６−２、３６−３・・・３６−Ｎおよびゲートウェイ・デバイス４０を介して送信元コンピュータ２０へ（応答のオリジナル）メッセージを送信し、送信元コンピュータ２０がそれらのメッセージを処理する。
【００１３】
送信元コンピュータ２０は、ワークステーション、サーバまたはその他のタイプのコンピュータとすることができ、共通バス２５上の既知のＣＰＵ２１、オペレーティング・システム２２、ＲＡＭ２３およびＲＯＭ２４と、ストレージ２６と、ＴＣＰ／ＩＰアダプタ・カード２７とを含む。送信元コンピュータ２０にはさらに、宛先コンピュータ２２０（ならびにその他の宛先コンピュータ）に対する送出メッセージを生成し着信メッセージも処理する、アプリケーション２８などの既知のコンピュータ・プログラムが含まれる。
【００１４】
ゲートウェイ・デバイス４０は、共通バス４５上の既知のＣＰＵ４１、オペレーティング・システム４２、ＲＡＭ４３およびＲＯＭ４４と、ストレージ４６と、ＴＣＰ／ＩＰアダプタ・カード１２７とを含む。ゲートウェイ・デバイス４０はさらに、ＯＳＰＦ、ＲＩＰ、ＩＳＩＳ、ＩＧＲＰ、ＥＩＧＲＰまたはＢＧＰルーティング機能などといった、既知のルータまたはルーティング機能４７（ハードウェアまたはソフトウェアあるいはその両方に具現化される）を含む。これらの既知のルーティング機能は、例えばノード（すなわち、ルータ、ファイアウォールなど）から宛先デバイス（例えば、宛先サブネットまたは宛先コンピュータ）までなどといった、１つ以上のルーティング・パスまたは「ルート」を特定し記録する。宛先デバイスへの１つ以上のルーティング・パスを特定し記録するその他のルーティング機能も、同様にルーティング機能４７に使用することができる。既知のＲＩＰ、ＯＳＰＦおよびＩＳＩＳルーティング機能は、最短のパス、言い換えれば最少数の介在ルータを介して、メッセージ・パケットを宛先デバイスまでルーティングしようとする。既知のＯＳＰＦルーティング機能はさらに、メッセージ・パケットを次ホップへ転送するのに使用されるインターフェースに基づいて、次ホップまでのパスの帯域幅を判断することができる。既知のＩＧＲＰおよびＥＩＧＲＰルーティング機能は、最大の帯域幅、最短の遅延および最短のパス要素に基づいて、メッセージ・パケットをルーティングしようとする。既知のＢＧＰルーティング機能は、最短の自律システム・パス（言い換えれば、１つの管理制御の範囲内における最少数のルータ）あるいは最小のＭＥＤ属性（言い換えれば、１つのルートの、別のルートに対する優先であって、隣接ルータなどにアドバタイズされる）に基づいて、メッセージ・パケットをルーティングしようとする。ＯＳＰＦ、ＩＧＲＰ、ＥＩＧＲＰおよびＢＧＰルーティグ機能は、大多数のデバイスに向けて１つより多いルートを特定および記録し、それらを、適用可能なルーティング方針に基づく順序で利用しようとする。
【００１５】
ゲートウェイ・デバイス４０はさらに、既知のファイアウォール４８と、ＴＣＰ／ＩＰアダプタ・カード１２７とを含む。ファイアウォール４８は、許可メッセージ・フロー（「ルール」）のリスト５２、すなわち、ファイアウォール４８を各方向に通過することが許可されているメッセージ・パケットに関する送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポート、ならびにプロトコルの組み合わせのリストを備えている。
【００１６】
宛先コンピュータ２２０は、ワークステーション、サーバまたはその他のタイプのコンピュータとすることができ、共通バス２２５上の既知のＣＰＵ２２１、オペレーティング・システム２２２、ＲＡＭ２２３およびＲＯＭ２２４と、ストレージ２２６と、ＴＣＰ／ＩＰアダプタ・カード２２７とを含む。宛先コンピュータ２２０にはさらに、送信元コンピュータ２０（ならびにその他の宛先コンピュータ）に対する送出メッセージを生成し、送信元コンピュータ２０（ならびにその他の送信元コンピュータ）からの着信メッセージも処理する、既知のコンピュータ・プログラム２２８が含まれる。
【００１７】
ゲートウェイ・デバイス２４０は、共通バス２４５上の既知のＣＰＵ２４１、オペレーティング・システム２４２、ＲＡＭ２４３およびＲＯＭ２４４と、ストレージ２４６とを含む。ゲートウェイ・デバイス２４０はさらに、ＯＳＰＦ、ＲＩＰ、ＩＳＩＳ、ＩＧＲＰ、ＥＩＧＲＰまたはＢＧＰルーティング機能などといった、既知のルータまたはルーティング機能２４７（ハードウェアまたはソフトウェアあるいはその両方に具現化される）を含む。これらの既知のルーティング機能は、宛先デバイスへの１つ以上のルーティング・パスを特定し記録する。宛先デバイスへの１つ以上のルーティング・パスを特定し記録するその他のルーティング機能も、同様にルーティング機能２４７に使用することができる。先に説明したように、既知のＲＩＰ、ＯＳＰＦおよびＩＳＩＳルーティング機能は、最短のパス、言い換えれば最少数の介在ルータを介して、メッセージ・パケットを宛先デバイスまでルーティングしようとする。既知のＯＳＰＦルーティング機能はさらに、メッセージ・パケットを次ホップへ転送するのに使用されるインターフェースに基づいて、次ホップまでのパスの帯域幅を判断することができる。既知のＩＧＲＰおよびＥＩＧＲＰルーティング機能は、最大の帯域幅、最短の遅延および最短のパス要素に基づいて、メッセージ・パケットをルーティングしようとする。既知のＢＧＰルーティング機能は、最短の自律システム・パス（言い換えれば、１つの管理制御の範囲内における最少数のルータ）、最小のＭＥＤ属性（言い換えれば、１つのルートの、別のルートに対する優先であって、隣接ルータなどにアドバタイズされる）に基づいて、メッセージ・パケットをルーティングしようとする。ＯＳＰＦ、ＩＧＲＰ、ＥＩＧＲＰおよびＢＧＰルーティグ機能は、宛先デバイスへの１つ以上のルートを特定および記録し、適用可能なルーティング方針の順序でそれらを利用しようとする。
【００１８】
ゲートウェイ・デバイス２４０はさらに、既知のファイアウォール２４８を含む。ファイアウォール２４８は、許可メッセージ・フロー（「ルール」）のリスト２５２、すなわち、ファイアウォールを各方向に通過することが許可されているメッセージ・パケットに関する送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポート、ならびにプロトコルの組み合わせのリストを備えている。
【００１９】
図１はさらに、ネットワーク管理サーバ３００を示しており、これには、共通バス３２５上の既知のＣＰＵ３２１、オペレーティング・システム３２２、ＲＡＭ３２３およびＲＯＭ３２４と、ストレージ３２６とが含まれる。ネットワーク管理サーバ３００にはさらに、失敗したネットワーク通信の原因を判断し修正処置を行う、本発明によるネットワーク通信トラブルシューティング・プログラム３３０が含まれる。プログラム３３０は、ルータ３６−１乃至３６−Ｎおよびゲートウェイ・デバイス４０および２４０（ならびに、ネットワーク内のその他のゲートウェイ・デバイス、ルータおよびファイアウォール）の各々に関するログイン／認証情報を備えたテーブル３４０を含む。通信が失敗したために管理者がプログラム３３０を起動すると（または、プログラム３３０に直接送られてくる通信失敗のメッセージを受けて）、プログラム３３０は、上記のログイン／認証情報を用いて、好適なパス内のルータ３６−１乃至３６−Ｎならびにゲートウェイ・デバイス４０および２４０の各々にログオンする。プログラム３３０は、送信元デバイスあるいは失敗した通信を報告したデバイスから始めて、各デバイスのルーティング・テーブルを次ホップについて調べながら、順次、好適なパス内のルータ３６−１乃至３６−Ｎならびにゲートウェイ・デバイス４０および２４０を特定する。その後プログラム３３０は、次ホップにログオンしてルーティング・テーブルを調べ、その次のホップを判断することなどを行なう。次に、プログラム３３０は、以下を読み取って記録する：（ａ）各自の保存ルーティング・テーブルであって、各ルーティング・テーブル内の各宛先デバイスに関し、宛先デバイス名、宛先ネットワーク、宛先サブネット、よく「宛先ゲートウェイ」と称される次ホップ・デバイス（言い換えれば、次ホップ・ルータ、次ホップのファイアウォールまたは宛先サブネットのゲートウェイ・デバイス）の名前を含む、保存ルーティング・テーブル；（ｂ）各自のタスク・ルーティング・テーブルであって、各タスク・ルーティング・テーブル内の各宛先デバイスに関し、ジョブ名（言い換えれば、そのタスク・ルーティング・テーブルに現在アクセスしている人の名）、宛先デバイス名、宛先ネットワーク名、宛先サブネット名、よく「宛先ゲートウェイ」と称される次ホップ（言い換えれば、次ホップ・ルータ、次ホップのファイアウォールまたは宛先サブネットのゲートウェイ・デバイス）の名前を含む、タスク・ルーティング・テーブル；（ｃ）各自の保存インターフェース・テーブルであって、現在アクセスされているルータまたはゲートウェイ・デバイス名、当該ルータまたはゲートウェイ・デバイス向けのインターフェース名（例えば、ＥＴＨ０、ＥＴＨ１、ＦａｓｔＥＴＨ０、ＦａｓｔＥＴＨ１など）、当該ルータまたはゲートウェイ・デバイス向けのインターフェースＩＰアドレス、および当該ルータまたはゲートウェイ・デバイス向けのインターフェース・サブネット・マスク（同じサブネットにある他のＩＰアドレスを特定する）を含む、保存インターフェース・テーブル；（ｄ）各自のタスク・インターフェース・テーブルであって、カレント・ジョブのＩＤ（すなわち、そのタスク・ルーティング・テーブルに現在アクセスしている人の名）、宛先デバイス名、宛先ネットワーク名、宛先サブネット名、および、宛先デバイスに向けての、よく「宛先ゲートウェイ」と称される次ホップ（すなわち、次ホップ・ルータ、次ホップのファイアウォールまたは宛先サブネットのゲートウェイ・デバイス）の名前を含む、タスク・インターフェース・テーブル。さらにプログラム３３０は、好適なパスにおける各ファイアウォールに関し、ファイアウォール４８および２４８それぞれの通過が許可されるメッセージ・フローに関するルールのリスト５２および２５２を読み取って記録するが、これには、各方向の送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポート、およびプロトコルの許可される組み合わせが含まれる。
【００２０】
通信が失敗したのは、ルータがこの通信を受信したものの宛先デバイスに向けての適切な次ホップを記載しておらず（そしてこの通信を適切な次ホップ・ルータへ転送しない）、好適なパス内に誤設定されていたことが原因であったような場合、プログラム３３０は、その誤設定されたルータを含んだ上述の順方向の分析を中止する。その後プログラム３３０は、宛先デバイスから始めてホップごとに、元の送信元デバイスへ向かって進みながら、上述の分析を逆方向に繰り返す。通常、少なくとも一方向（この場合は逆方向）については、全ルータが、好適ルートにおける各自の次ホップ群を全てリストアップするように適切に設定される。逆順序の次ホップ群のリストが好適ルートに適合すると仮定すると、プログラム３３０は、この逆順序の次ホップ群のリストと、正順序の次ホップ群のリストとを比較すれば、誤設定されたルータのルーティング・テーブルにおける誤りに気付く。例を挙げると、（ａ）ルータ３６−１乃至３６−Ｎ（この場合Ｎ＝５）がこの順序で、送信元デバイス２０から宛先デバイス２２０への好適な／唯一のルートであり；（ｂ）ルータ３６−２が、（順方向に）宛先デバイス２２０へ向かう次ホップとして、ルータ３６−３ではなくルータ３７を記載しており、そのためデバイス２０からデバイス２２０へ向かう通信がルータ３６−２にて失敗し；（ｃ）ルータ３６−３は、（逆方向に）送信元デバイス２０へ向かう次ホップとしてルータ３６−２を記載しており、デバイス２２０からデバイス２０へ向かう通信は成功したと仮定すると、その結果、プログラム３３０は、反対方向で成功したルートに一致／適合させるには、ルータ３６−２にあって宛先デバイス２２０に向けてのルーティング・テーブル・エントリをルータ３６−３に変更する必要があると判断する。
【００２１】
こうしてプログラム３３０は、失敗した通信の原因として、ルーティング・テーブルが宛先デバイスへの好適ルート内の次ホップを指定していなかったルータを特定する。次にプログラム３３０は、既存ルーティング・テーブルが宛先デバイスへの好適ルート内の次ホップを指定していなかったルータに関し、「テスト」ルーティング・テーブルを生成する。「テスト」ルーティング・テーブルは、宛先デバイスへの好適ルート内の次ホップを記載している。その後プログラム３３０は、既存ルーティング・テーブルの代わりに「テスト」ルーティング・テーブルを用いて、好適ルート内の全ルータに関し上述の分析を両方向に繰り返し、ルータの全てが各自の次ホップとして好適ルート内の次ルータを記載しているかどうかを判断する。記載していない場合には、プログラム３３０は、宛先デバイスへの好適ルート内の次ホップを記載していないルータに関し、上述の説明と同様に、さらなる「テスト」ルーティング・テーブルを生成して使用する。「テスト」ルーティング・テーブルがない場合には既存ルーティング・テーブルに基づいて、またはプログラム３３０が「テスト」ルーティング・テーブルを生成した場合には「テスト」ルーティング・テーブルに基づいて、好適ルート内の全ルータがその好適ルート内の次ホップを記載したら、プログラム３３０は、好適ルートを実現するのにそれぞれの「テスト」ルーティング・テーブルを必要とする各ルータと、好適ルートを実現するのにそれぞれのルーティング・テーブルに追加する必要のある「次ホップ」とについて、管理者に通知する。それに応えて管理者は、そのようなルータのルーティング・テーブルを手動で更新して、あるいはルーティング・テーブルを更新するようプログラム３３０に指示して、既存ルーティング・テーブルを「テスト」ルーティング・テーブルに置き換えることができる。あるいはプログラム３３０は、「テスト」ルーティング・テーブルがない場合には既存ルーティング・テーブルに基づいて、またはプログラム３３０によって「テスト」ルーティング・テーブルが生成された場合には「テスト」ルーティング・テーブルに基づいて、好適ルート内の全ルータがその好適ルート内の次ホップを記載したら、ルーティング・テーブルを自動的に更新して既存ルーティング・テーブルを「テスト」ルーティング・テーブルに置き換えることもできる。
【００２２】
宛先デバイスへの好適ルート内のルータのルーティング・テーブルから得られる次ホップ情報には、好適ルート内の１つ以上のファイアウォールが含まれるとよい。上記の情報を用いて、プログラム３３０は、もしあれば送信元コンピュータのファイアウォール、ならびにもしあれば宛先コンピュータのファイアウォールを含めた、好適ルート内の全てのファイアウォールを、特定する。次にプログラム３３０は、これらのファイアウォールにログオンし、これらのファイアウォールの、許可メッセージ・フローに関するルールを取得して、これらのファイアウォールが、失敗した通信のメッセージ・パケットのメッセージを許可するかどうか、言い換えれば、失敗した通信の送信元ＩＰアドレスおよびポート、宛先ＩＰアドレスおよびポートならびにプロトコルについて許可されるメッセージ・フローを含むかどうかを判断する。そうでない場合には、プログラム３３０は、失敗した通信のメッセージ・パケットのフローを許可しないファイアウォールを、潜在的に問題のあるものとして特定する。さらに、プログラム３３０は、失敗した通信を許可メッセージ・フローに関する既存ルールが許可しなかったファイアウォールについて、許可メッセージ・フローに関するルールの新たな「テスト」リストを生成する。この「テスト」リストは、失敗した通信を許可メッセージ・フローに関する既存ルールが許可しなかったファイアウォールにある、許可メッセージ・フローに関するルールの既存リストのコピーであり、追加として「テスト」ルールを含めたものである。「テスト」ルールは、失敗した通信のフローがファイアウォールを通過することを許可する。その後プログラム３３０は、好適ルート内の全ファイアウォールについて上述の分析を繰り返し、失敗した通信のフローを許可するルールをファイアウォール全てが含むかどうかを判断するのであるが、この繰り返し分析では、既存リストの代わりに「テスト」リストを使用する。プログラム３３０はさらに、失敗した通信を許可するルールを含まなかったどのファイアウォールについても管理者に通知し、このファイアウォールが、失敗した通信を許可するようなルールを備える必要があるかどうかを管理者に問い合わせる。当該ファイアウォールがこのメッセージ・フローを許可する必要がなければ、そのファイアウォールは適切であって、変更される必要はない。許可する必要がある場合には、管理者は、ルールの既存リストをルールの「テスト」リストに置き換えるようにファイアウォールを再設定すること、あるいは既存リストを「テスト」リストに置き換えるようプログラム３３０に要求することができる。
【００２３】
図２乃至７は、プログラム３３０の機能および動作をさらに詳しく示す。ステップ４００にて、プログラム３３０は、管理者から、失敗した通信の送信元ＩＰアドレスおよび宛先ＩＰアドレスのＩＤを受信する（あるいは、送信元デバイスまたは通信失敗のメッセージを生成したルータから送信される通信失敗のメッセージから、この情報を自動的に受け取ることもできる）。これに応えて、プログラム３３０は、送信元デバイスのアイデンティティ（例えば送信元コンピュータ２０）と宛先デバイスのアイデンティティ（例えば、宛先コンピュータ２２０）とをサーバ（図示せず）から判断する（ステップ４０２）。次にプログラム３３０は、送信元デバイスおよび宛先デバイスに接続しようとする（判断４１０）。プログラム３３０が接続することのできる送信元デバイスおよび宛先デバイスの各々について（判断４１０、はいの分岐）、プログラム３３０は、デバイスのルーティングおよびインターフェース設定をフェッチする（ステップ４１４）。次に、プログラム３３０が送信元デバイスに接続することができた場合には、プログラム３３０は、送信元デバイスに関するルーティングおよびインターフェース設定情報と送信元デバイスのデータベースとが一致するかどうかを判断し、プログラム３３０が宛先デバイスに接続することができた場合には、プログラム３３０は、宛先デバイスに関するルーティングおよび設定情報と宛先デバイスのデータベースとが一致するかどうかを判断する（判断４２０）。一致する場合（判断４２０、はいの分岐）、次いでプログラム３３０は、インターフェースおよびルーティング情報がデバイスと一致した（プログラム３３０が接続し取り出すことができた）送信元デバイスおよび宛先デバイスの各々のルーティングおよび設定情報を構文解析する（ステップ４３０）。送信元デバイスのルーティングおよびインターフェース設定情報が送信元デバイスのデータベースと一致しない場合（判断４２０、いいえの分岐）、次いでプログラム３３０は、送信元または宛先あるいはその両方のデバイスのデータベースを更新してルーティングおよびインターフェース情報と一致するようにし（ステップ４２４）、その後ステップ４３０へ進んでルーティングおよびインターフェース情報を構文解析する。
【００２４】
再び判断４１０のいいえの分岐を参照すると、この場合プログラム３３０は、送信元デバイスおよび宛先デバイスのいずれかあるいは両方に対し、接続してルーティングおよびインターフェース設定情報を取り出すことができなかった。そのような場合（判断４１０、いいえの分岐）、プログラム３３０は、送信元デバイスおよび宛先デバイスから入手可能な範囲で、ルーティングおよびインターフェース情報を取り出す（ステップ４５０）。次に、プログラム３３０は、送信元デバイスおよび宛先デバイスから全てのルーティングおよびインターフェース情報を取り出せたかどうかを判断する（判断４６０）。プログラム３３０が送信元デバイスおよび宛先デバイスからルーティングおよびインターフェース情報を何ら取り出すことができなければ（判断４６０、いいえの分岐）、プログラム３３０は、ルーティングおよびインターフェース情報を手動で入力するように管理者に問い合わせる（ステップ４６４）。これに応えて、管理者は、ルーティングおよびインターフェース情報を手動で入力する。再び判断４６０を参照すると、はいの分岐となるのは、プログラム３３０が、全てのルーティングおよびインターフェース情報を送信元デバイスおよび宛先デバイスから取り出すことができた場合である。そのような場合、プログラム３３０は、取り出したルーティングおよびインターフェース情報を表示し（ステップ４７０）、このルーティングおよびインターフェース情報を使用したいかどうか管理者に問い合わせる（判断４７４）。否定応答であった場合、プログラム３３０は、ステップ４６４へ進み、管理者に対し、管理者が使用したい他の何らかのルーティングおよびインターフェース情報を入力するよう要求する。再び判断４７４のはいの分岐、またはステップ４６４の終了後を参照すると、この場合管理者は、送信元デバイスおよび宛先デバイスに関する当該ルーティングおよびインターフェース情報に満足している。そのような場合、プログラム３３０はステップ４３０へ進み、ルーティングおよびインターフェース設定情報を構文解析する。
【００２５】
判断５００にて、プログラム３３０は、「カレント・デバイス」の分析を開始する。ステップ５００乃至５２４の最初のイテレーション中、カレント・デバイスとは送信元デバイスである。（ステップ５００乃至５２４の次のイテレーション中は、「カレント」デバイスは、ステップ５００乃至５２４の前のイテレーションにとっての次ホップ・デバイスになる。）カレント・デバイスが送信元デバイスである場合（判断５００、いいえの分岐）、次いでプログラム３３０はその送信元デバイスのルーティング・テーブルを調べて、宛先デバイスへの特定の好適ルートがあるかどうかを判断する（判断５１０）。特定の好適ルートがない場合（判断５１０、いいえの分岐）、次いでプログラム３３０は、送信元デバイスが、宛先デバイスへのデフォルト好適ルートを有しているかどうかを判断する（判断５１４）。デフォルト好適ルートは、宛先デバイスへ向かう次ホップを含む。カレント・デバイスが宛先デバイスであるため、あるいはデフォルト好適ルートを誤って除外してしまったために、送信元デバイスがデフォルト好適ルートを有していない場合（判断５１４、いいえの分岐）、その後プログラム３３０は、以下に記載するように、カレント・デバイスから始まる逆向きのパス分析を開始する。送信元デバイスがデフォルト好適ルートを有している場合（判断５１４、はいの分岐）、または送信元デバイスが宛先デバイスへの特定のルートを有しているという判断５１０の後、次にプログラム３３０は、次ホップの特定、好適ルートおよび送信元デバイスのインターフェース情報を、タスク・データベースへ挿入する（ステップ５２０）。次にプログラム３３０は、（カレント・デバイスにとっての）次ホップ・デバイスを、カレント・デバイスとして設定する（ステップ５２４）。次にプログラム３３０は、判断４１０およびステップ４１４乃至４３０へと進み、先に説明したように、今のカレント・デバイスに関するルーティングおよびインターフェース情報を取り出そうとし、その後、今のカレント・デバイスついてステップ５００乃至５２４を繰り返す。好適ルート内のルータ数にほぼ相当する数のステップ５００乃至５２４のイテレーションが実行されたら、「カレント」デバイスが宛先デバイスになる（判断５００、はいの分岐）。その時点で、プログラム３３０は好適なパス内のルータ分析を終わりにして（ステップ５０２）、ステップ６００へ進む。
【００２６】
カレント・デバイスが宛先デバイスであるステップ５０２のイテレーションの後、あるいはカレント・デバイスから宛先デバイスへの特定ルートもしくはデフォルト・ルートがない場合には、プログラム３３０は、カレント・デバイスから元の送信元デバイスに向けて逆方向にルータの判断を開始する（ステップ６００）。次にプログラム３３０は、元の送信元デバイスを新たな宛先デバイスとして設定する（ステップ６０２）。次にプログラム３３０は、好適なパス内の各デバイスについて、カレント・デバイスから始めて逆順序に、上述のステップ４１０’乃至４７４’および５００’乃至５２４’を（上述の正順序でのステップ４１０乃至４７４のイテレーションにおいて定められたように）実施する。ステップ４１０’乃至４７４’の分析において「カレント」デバイスの順序が逆になる点を除き、ステップ４１０’乃至４７４’はステップ４１０乃至４７４の各々と同じものである。ステップ５００’乃至５２４’の分析において「カレント」デバイスの順序が逆になる点を除き、ステップ５００’乃至５２４’はステップ５００乃至５２４の各々と同じものである。従って判断５００’において、プログラム３３０が、カレント・デバイスは元の送信元デバイスであるかどうかを判断し、そうである場合には、逆順序でのパスの分析が（正順序において最後に分析されたデバイスから）元の送信元デバイスまで完了されていることになる。
【００２７】
次に、プログラム３３０は、元の送信元デバイスから元の宛先デバイスまで（正順序の）ルータの完全なパスが存在するかどうか、言い換えれば、そのパス内の全ルータが、好適ルートに従って宛先デバイスまで至る次ホップを記載したルーティング・テーブルを有しているかどうかを判断する（判断８００）。次にプログラム３３０は、逆順序の、すなわち元の宛先デバイスから元の送信元デバイスへの完全なパスが存在するかどうかを判断する（判断８１０）。存在すれば（判断８１０、はいの分岐）、その後プログラム３３０は、正順序のパスと逆順序のパスとが、方向を除いて、同じであるかどうかを判断する（判断８１４）。同じであれば（判断８１４、はいの分岐）、そのときルーティング・テーブルは適正であって、更新する必要はない（ステップ８１６）。同じでない場合（判断８１４、いいえの分岐）、次いでプログラム３３０は、順方向のルータ群のリストを表示し、さらに逆方向のルータ群のリストを表示する（ステップ８１８）。プログラム３３０は、この２つのリストの差異、すなわち順方向のパスにはあって逆方向のパスにはないルータ、およびその反対のルータを、強調表示する（ステップ８２０）。プログラム３３０はさらに、いずれの方向についても、１つ以上のルータのルーティング・テーブルに対する変更を記載／特定して、順方向ルートおよび逆方向ルートを同じものとし、送信元ゲートウェイ・デバイス４０にてあるいは送信元デバイスから宛先デバイスへのパス内の最初のルータにて示される好適ルートに対応させるようにする。
【００２８】
再び判断８００のいいえの分岐を参照すると、この場合、正順序の、すなわち元の送信元デバイスから元の宛先デバイスへの完全なパスは存在しない。そのような場合、プログラム３３０は、正順序の次ホップのＩＤと元の宛先ＩＰアドレスである宛先ＩＰアドレスとを各々が備えているルータ群のリストを、送信元デバイスから、元の宛先デバイスへ向かう途中でステップ５２４にて特定された最も下流のルータまで、コンパイルする（ステップ８０２）。
【００２９】
再び判断８１０のいいえの分岐を参照すると、この場合、逆順序の、すなわち元の宛先デバイスから元の送信元デバイスへの完全なパスはない（判断８１０、いいえの分岐）。そのような場合、次いでプログラム３３０は、逆順序の次ホップのＩＤと元の送信元ＩＰアドレスである宛先ＩＰアドレスとを各々が備えているルータ群のリストを、ステップ５２４にて特定された最も下流のデバイスから元の送信元デバイスまで、コンパイルする（ステップ８２２）。
【００３０】
ステップ８０２またはステップ８２２のいずれかを終えると、プログラム３３０は、ルータ群のリストにあるルータを逆向き／反対順にし（ステップ８４０）、タスク・データベース内のリストにある（判断８４４の最初のイテレーション中はパス内の最初のルータの）名称および宛先ゲートウェイ／次ホップ・ルータと、上記反対順のルータ群のリストにあるカレント・ルータの名称および宛先ゲートウェイ／次ホップ・ルータとが一致するかどうかを判断する（判断８４４）。一致する場合（判断８４４、はいの分岐）、次いでプログラム３３０は、カレント・ルータの名称を、表示するルータのリストへ追加する（ステップ８４６）。次に、プログラム３３０は、反対順のリストにさらなるルータがあるかどうかを判断する（判断８４８）。さらなるルータがある場合（判断８４８、はいの分岐）、次いでプログラム３３０は、反対順のリスト内の次ルータをカレント・ルータとし（ステップ８５０）、折り返して判断８４４に戻り上述のステップ８４４、８４６および８４８を繰り返す。再び判断８４４のいいえの分岐を参照すると、この場合、タスク・リストから得られる名称および宛先ゲートウェイ／次ホップ・ルータと、反対順のルータのリストにあるカレント・ルータの名称および宛先ゲートウェイ／次ホップ・ルータとが一致しない。そのような場合、プログラム３３０は、表示するルータのリストに、タスク・データベースから得られる次ホップ・ルータの名称を追加し、その次ホップ・ルータは欠落しているものとしてマークする（ステップ８５４）。その後プログラム３３０は、反対順のリスト内の次ルータをカレント・ルータとし（ステップ８５０）、折り返して判断８４４に戻り上述のステップ８４４、８４６および８４８を今のカレント・ルータに関して繰り返す。プログラム３３０は、上述のステップ８４４乃至８５４を、反対順のリスト内の各ルータについて繰り返し（判断８４８、いいえの分岐）、その時点で、プログラム３３０は、表示するルータのリストにある各ルータを表示する（ステップ８６０）。
【００３１】
宛先デバイスへのルートにあるルータ群のルーティング・テーブルから得られる次ホップ情報には、好適ルートにおける１つ以上のファイアウォールが含まれることがある（判断９００）。プログラム３３０は、もしあれば送信元コンピュータのファイアウォールと、もしあれば宛先コンピュータのファイアウォールとを含めた、好適ルート内の全ファイアウォールを特定する（ステップ９０２）。次にプログラム３３０は、これらのファイアウォールにログオンし、これらのファイアウォールについて許可メッセージ・フローのルールを入手し（ステップ９０８）、これらのファイアウォールが、失敗した通信のメッセージ・パケットの通過を許可するかどうかを判断する（判断９１０）。許可しない場合（判断９１０、いいえの分岐）、次いでプログラム３３０は、失敗した通信のメッセージ・パケットのフローを許可しないファイアウォールを、潜在的に問題のあるものとして特定し、この潜在的な問題について通知を作成する（ステップ９１６）。さらに、プログラム３３０は、失敗した通信を許可メッセージ・フローに関する既存ルールが許可しなかったファイアウォールについて、許可メッセージ・フローに関するルールの新たな「テスト」リストを生成する（ステップ９２０）。「テスト」リストは、失敗した通信を許可メッセージ・フローに関する既存ルールが許可しなかったファイアウォールにある、許可メッセージ・フローに関するルールの既存リストのコピーであり、追加として「テスト」ルールを含めたものである。「テスト」ルールは、失敗した通信のフローがファイアウォールを通過することを許可する。その後、プログラム３３０は、好適ルート内の全ファイアウォールについて上述の分析を繰り返し（ステップ９０２、９０８、判断９１０、ステップ９１６およびステップ９２０）、失敗した通信のフローを許可するルールをファイアウォール全てが含むかどうかを判断するのであるが、この繰り返し分析では、既存リストの代わりに「テスト」リストを使用する。ステップ９１６にて、プログラム３３０はさらに、失敗した通信を許可するルールを含まなかったどのファイアウォールについても管理者に通知し、このファイアウォールが、失敗した通信を許可するようなルールを備える必要があるかどうかを管理者に問い合わせる。当該ファイアウォールがこのメッセージ・フローを許可する必要がなければ、そのファイアウォールは適切であって、変更される必要はない。許可する必要がある場合には、管理者は、そのファイアウォールを設定するか、またはファイアウォールを設定するようプログラム３３０に通知して、ルールの既存リストをルールの「テスト」リストに置き換えること、あるいは既存リストを「テスト」リストに置き換えるようプログラム３３０に要求することができる（ステップ９３０）。
【００３２】
プログラム３３０は、磁気テープまたはディスク、光媒体、ＤＶＤ、半導体メモリ、メモリ・スティックなどのコンピュータ可読媒体３５０からサーバ３００へロードすることができ、あるいはＴＣＰ／ＩＰアダプタ・カード３６０を介してインターネットからダウンロードすることができる。
【００３３】
上記に基づき、ネットワーク通信における障害を判断するシステム、方法およびプログラムを開示してきた。一方、本発明の範囲から逸脱することなく、数々の変更および代替を行なうことが可能である。従って本発明は、限定ではなく例示として開示されてきたものであって、本発明の範囲を判断するには、以下の請求項を参照する必要がある。
【図１】
2011522477.tif 000003
【図２】
2011522477.tif 000004
【図３】
2011522477.tif 000005
【図４】
2011522477.tif 000006
【図５】
2011522477.tif 000007
【図６】
2011522477.tif 000008
【図７】
2011522477.tif 000009
【国際調査報告】
2011522477.tif 000010
2011522477.tif 000011
2011522477.tif 000012