(57)【特許請求の範囲】
【請求項１】
複数のネットワーク機器を介して複数の端末が接続されるネットワークの通信コストを算出するネットワーク調査装置であって、
前記複数の端末へ調査パケットを送信する送信部と、
前記調査パケットに対応する応答パケットを受信する受信部と、
前記受信部による前記応答パケットの受信結果に基づいて、前記複数の端末の中で前記調査パケットを受信していない端末が属する端末グループを検出する検出部と、
前記送信部が前記調査パケットを繰り返し送信したときに前記検出部により検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する算出部、
を有するネットワーク調査装置。
【請求項２】
請求項１に記載のネットワーク調査装置であって、
前記複数の端末グループの検出頻度をそれぞれ記録するグループ情報リストをさらに備え、
前記算出部は、検出頻度の高い順に抽出した２以上の端末グループ間の包含関係を利用して、端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
【請求項３】
請求項２に記載のネットワーク調査装置であって、
前記算出部は、予め決められた閾値よりも高い検出頻度の端末グループ間の包含関係を利用して、端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
【請求項４】
請求項１に記載のネットワーク調査装置であって、
前記算出部は、前記複数の端末グループ間の包含関係に基づいて前記ネットワークのトポロジを表すトポロジ情報を生成し、前記トポロジ情報に基づいて端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
【請求項５】
複数のネットワーク機器を介して複数の端末が接続されるネットワークにおいてネットワーク調査装置により実行されるネットワーク調査方法であって、
前記複数の端末へ調査パケットを送信し、
前記調査パケットに対応する応答パケットを受信し、
前記応答パケットの受信結果に基づいて、前記複数の端末の中で前記調査パケットを受信していない端末が属する端末グループを検出し、
前記調査パケットを繰り返し送信したときに検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する、
ことを特徴とするネットワーク調査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の端末が接続されたネットワークを調査する方法および装置に係わる。
【背景技術】
【０００２】
クライアント・サーバ型のデータ配信システムでは、データ受信端末の数の増加に応じて、配信サーバの負荷も大きくなる。このため、大規模な配信システムにおいては、アクセスが集中する配信サーバまたはネットワークインフラのキャパシティを大きくする必要があり、配信コストが増加してしまう。このような背景もあり、近年では、ピア・ツー・ピア（Ｐ２Ｐ：peer-to-peer）技術を応用したデータ配信方法が注目されている。
【０００３】
Ｐ２Ｐを利用したストリーミング配信方法では、例えば、データを受信した端末が、そのデータを他の端末へ転送する。この場合、各端末がそれぞれ中継装置として動作し、大規模な同報配信が実現される。この方法によれば、端末の数が増加しても、配信サーバの負荷はさほど増加することはない。
【０００４】
Ｐ２Ｐデータ配信は、物理的なネットワーク環境を意識する必要はなく、端末間の論理リンクで形成される論理ネットワーク（或いは、オーバーレイネットワーク）上でのデータ配信とみなすことができる。また、Ｐ２Ｐデータ配信においては、論理ネットワーク上の端末同士の接続方法により、物理的なネットワーク上を流れるデータトラフィック量が決まる。
【０００５】
図１は、Ｐ２Ｐデータ配信について説明する図である。図１に示すネットワークでは、３台の端末ｎ１〜ｎ３がルータＡ〜Ｄを介して接続されている。このようなネットワークにおいて、端末ｎ１から端末ｎ２、ｎ３へＰ２Ｐ方式でデータを配信するものとする。この場合、端末ｎ１から端末ｎ２、ｎ３へのデータ配信は、例えば、下記の手順Ａまたは手順Ｂにより実現される。
（手順Ａ）端末ｎ１は端末ｎ２へデータを送信し、端末ｎ２はそのデータを端末ｎ３へ転送する
（手順Ｂ）端末ｎ１は端末ｎ３へデータを送信し、端末ｎ３はそのデータを端末ｎ２へ転送する
【０００６】
ここで、データ配信のネットワーク距離がより短い手順を適切に選択すれば、データ配信の効率が高くなる。ネットワーク距離は、例えば、通信経路上のルータの台数によって表わされる。例えば、手順１においては、端末ｎ１から端末ｎ２への経路上に３台のルータＣ、Ｂ、Ａが存在し、端末ｎ２から端末ｎ３への経路上に２台のルータＡ、Ｄが存在する。すなわち、手順１の総ネットワーク距離は「５」である。一方、手順２においては、端末ｎ１から端末ｎ３への経路上に４台のルータＣ、Ｂ、Ａ、Ｄが存在し、端末ｎ３から端末ｎ２への経路上に２台のルータＤ、Ａが存在する。すなわち、手順２の総ネットワーク距離は「６」である。この場合、手順２ではなく手順１を選択することにより、データ配信の効率が高くなる。なお、通信経路上のルータの台数は、例えば、tracerouteコマンドまたはtracertコマンドにより検出することができる。
【０００７】
図２は、複数のスイッチングハブを備えるサブネットワークの一例を示す図である。図２に示す例では、サブネットワークは、５台のスイッチングハブＳＷ１〜ＳＷ５を備え、ルータの配下に構築されている。そして、端末Ｎ１〜Ｎ６は、スイッチングハブＳＷ１〜ＳＷ５を介してデータを送受信することができる。
【０００８】
以下の例では、ネットワークトポロジ（ネットワーク距離）が図１のルータで構成されるネットワーク同様に把握できていることを前提に動作について説明する。
本例では、端末Ｎ１から端末Ｎ２〜Ｎ６へＰ２Ｐ方式でデータが配信されるものとする。この場合、端末Ｎ１は、ネットワーク距離が最も短い宛先端末へデータを送信する。図２に示す構成では、端末Ｎ１から端末Ｎ２へデータが送信される。続いて、端末Ｎ２は、受信データを、ネットワーク距離が最も短い他の宛先端末へ転送する。図２に示す構成では、端末Ｎ２から端末Ｎ３へデータが転送される。以下同様に、各端末は、ネットワーク距離に基づいて、受信データを他の端末へ転送する。これにより、端末Ｎ１から端末Ｎ２〜Ｎ６への効率的なデータ配信が実現される。
【０００９】
関連する技術として、特許文献１には、異なるプロトコルを用いてネットワークに接続している管理対象デバイスについても認識が可能なネットワーク構成調査方法が記載されている。このネットワーク構成調査方法は、使用可能なプロトコルの種別を取得し、全てのプロトコルを用いてネットワークに接続された機器へ応答を要請する探索要求を発行する。そして、機器からの応答を集計し、集計結果に基づき機器の管理に用いるデバイスリストを表示する。
【００１０】
他の関連する技術として、特許文献２には、宅内ネットワークの構成調査を行う通信装置が記載されている。この通信装置は以下の構成を備える。ＴＴＬを変化させたルータ調査用パケットを生成し、前記ルータ調査用パケットの送信先を切り替える調査用パケット作成部。前記ルータ調査用パケットに対応してルータから返信されるＩＣＭＰパケットから前記ルータのアドレスを取得する受信パケット解析部。前記受信パケット解析部から情報を取得し、前記ルータ調査用パケット作成部を制御し、ネットワークの調査を施す制御部。前記ルータ調査用パケットおよびＩＣＭＰパケットを送受信するパケット送受信部。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０００−１７２６００号公報
【特許文献２】特開２００６−３４５３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述のように、Ｐ２Ｐ方式で複数の端末にデータを配信する場合、各端末がそれぞれネットワーク距離の短い宛先端末へデータを転送することにより、効率的なデータ配信が実現される。ところが、ネットワークがＬ２スイッチ（あるいは、スイッチングハブ）で構築されている場合は、以下の理由により、効率的にデータを配信できないことがある。なお、「Ｌ２」は、ＯＳＩ参照モデルのレイヤ２を表す。
【００１３】
Ｌ２スイッチは、データの宛先情報に基づいてそのデータを転送するが、ＩＰレイヤまたはＩＰレイヤよりも上位レイヤのコマンド（例えば、tracerouteコマンド）を処理することはできない。このため、Ｌ２スイッチで構築されるネットワークにおいては、通信装置（端末、Ｌ２スイッチ、ネットワーク管理装置など）は、ＩＰレイヤまたはそれよりも上位のレイヤからＬ２スイッチの存在を検出することはできず、通信経路上のＬ２スイッチの台数を測定することはできない。すなわち、端末間のネットワーク距離を予め測定しておくことは困難である。したがって、このようなネットワークでは、各端末は、ネットワーク距離の短い宛先端末を適切に選択することはできず、効率の悪いデータ配信が行われることがあった。
【００１４】
なお、この問題は、ネットワークがＬ２スイッチで構築されている場合に限らず、ネットワークが１台以上のＬ２スイッチを含んでいる場合に発生し得る。また、この問題は、Ｌ２スイッチに限定されるものではなく、ＩＰコマンドを処理できない機器を含むネットワークにおいて発生し得る。
【００１５】
本発明の課題は、複数の端末が接続されるネットワークにおいて、端末間の通信効率を向上させるための通信コストを推定することである。
【課題を解決するための手段】
【００１６】
本発明の１つの態様のネットワーク調査装置は、複数のネットワーク機器を介して複数の端末が接続されるネットワークにおいて使用され、前記複数の端末へ調査パケットを送信する送信部と、前記調査パケットに対応する応答パケットを受信する受信部と、前記受信部による前記応答パケットの受信結果に基づいて、前記複数の端末の中で前記調査パケットを受信していない端末が属する端末グループを検出する検出部と、前記送信部が前記調査パケットを繰り返し送信したときに前記検出部により検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する算出部、を有する。
【発明の効果】
【００１７】
本出願において開示される方法または構成によれば、複数の端末が接続されるネットワークにおいて、端末間の通信効率を向上させるための通信コストを推定することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】図１は、Ｐ２Ｐデータ配信について説明する図である。
【図２】図２は、複数のスイッチングハブを備えるサブネットワークの一例を示す図である。
【図３】図３は、実施形態のネットワーク調査方法が使用されるネットワークの構成の一例を示す図である。
【図４】図４は、ネットワーク調査装置の構成を示す図である。
【図５】図５（ａ）は、調査パケットの実施例であり、図５（ｂ）は、応答パケットの実施例である。
【図６】図６（ａ）は、一時リストの実施例であり、図６（ｂ）は、端末リストの実施例である。
【図７】図７は、端末グループの検出方法を説明する図である。
【図８】図８は、グループ情報リストの実施例である。
【図９】図９は、グループ情報リストを作成する処理を示すフローチャートである。
【図１０】図１０は、端末グループの集約化処理を示すフローチャートである。
【図１１】図１１は、端末グループ間の包含関係に矛盾が生じるケースについて説明する図である。
【図１２】図１２は、通信コストを算出する処理を示すフローチャートである。
【図１３】図１３は、通信コストテーブルの実施例である。
【図１４】図１４は、他の実施形態のネットワーク調査方法が使用されるネットワークの構成の一例を示す図である。
【図１５】図１５は、他の実施形態において作成された通信コストテーブルの実施例である。
【図１６】図１６は、ネットワーク調査装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１９】
図３は、実施形態のネットワーク調査方法が使用されるネットワークの構成の一例を示す図である。この例では、ルータ１に接続されるサブネットワーク２において実施形態のネットワーク調査方法が使用される。なお、ルータ１は、外部ネットワーク３とサブネットワーク２とを接続する。また、ルータ１は、この例では、ＯＳＩ参照モデルのレイヤ３以上の機能を実装し、例えば、tracerouteコマンド等に応答する機能を備える。
【００２０】
サブネットワーク２は、複数のネットワーク機器（この実施例では、スイッチングハブＳＷ１〜ＳＷ５）により構築されている。スイッチングハブＳＷ１は、ルータ１に接続されている。また、スイッチングハブＳＷ１には、スイッチングハブＳＷ２、ＳＷ４が接続されている。さらに、スイッチングハブＳＷ２にはスイッチングハブＳＷ３が接続され、スイッチングハブＳＷ４には、スイッチングハブＳＷ５が接続されている。スイッチングハブＳＷ１〜ＳＷ５は、例えば、Ｌ２スイッチである。すなわち、スイッチングハブＳＷ１〜ＳＷ５は、この例では、ＩＰコマンドおよびレイヤ３以上のプロトコルのコマンドを実行できないものとする。
【００２１】
サブネットワーク２には、６台の端末Ｎ１〜Ｎ６が接続されている。端末Ｎ１、Ｎ２はスイッチングハブＳＷ３に収容され、端末Ｎ３はスイッチングハブＳＷ２に収容され、端末Ｎ４はスイッチングハブＳＷ４に収容され、端末Ｎ５、Ｎ６はスイッチングハブＳＷ５に収容されている。
【００２２】
各端末Ｎ１〜Ｎ６は、Ｐ２Ｐ（peer-to-peer）で他の端末とデータを送受信する機能を備えている。また、各端末Ｎ１〜Ｎ６には、Ｐ２Ｐで同報配信を実現するための宛先情報が設定されている。例えば、端末Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６には、宛先情報としてそれぞれ自身を除く端末Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６が設定されている。この場合、ルータ１は、外部ネットワーク３から受信した端末Ｎ１宛の同報データをＳＷ１→ＳＷ２→ＳＷ３経由で端末Ｎ１へ転送する。そうすると、端末Ｎ１は、宛先情報を参照し、外部ネットワーク３から受信した同報データをＳＷ３経由で端末Ｎ２へ転送する。続いて、端末Ｎ２は、宛先情報を参照し、端末Ｎ１から受信した同報データをＳＷ３→ＳＷ２経由で端末Ｎ３へ転送する。同様に、端末Ｎ３、Ｎ４、Ｎ５は、それぞれ、宛先情報に従って同報データをＳＷ経由で端末Ｎ４、Ｎ５、Ｎ６へ転送する。これにより、端末Ｎ１〜Ｎ６は同報データを受信する。なお、端末Ｎ６は、受信した同報データを、さらに他のサブネットワークに収容されている端末へ転送するようにしてもよい。
【００２３】
ネットワーク調査装置１０は、サーバコンピュータであり、サブネットワーク２のトポロジを検出し、端末Ｎ１〜Ｎ６間の通信コストを算出する。通信コストは、後で詳しく説明するが、例えば、端末間の通信経路上に存在するスイッチングハブの台数に相当する。また、ネットワーク調査装置１０は、端末Ｎ１〜Ｎ６間の通信コストに基づいて、上述した宛先情報を生成するようにしてもよい。この場合、宛先情報は、例えば、上述した同報配信の通信効率が最適化されるように決定される。なお、ネットワーク調査装置１０は、端末Ｎ１〜Ｎ６に宛先情報を配布するようにしてもよい。或いは、端末Ｎ１〜Ｎ６は、ネットワーク調査装置１０に対応する宛先情報を要求するようにしてもよい。
【００２４】
ネットワーク調査装置１０は、図３に示す例ではスイッチングハブＳＷ１に接続されているが、他の任意のスイッチングハブＳＷ２〜ＳＷ５に接続されるようにしてもよい。また、ネットワーク調査装置１０は、ルータ１に接続されていてもよいし、外部ネットワーク３上に設けられていてもよい。
【００２５】
図４は、ネットワーク調査装置１０の構成を示す図である。ネットワーク調査装置１０は、この実施例では、送信部１１、受信部１２、検出部１３、算出部１４を備える。
送信部１１は、調査対象のネットワークに接続されているすべての端末へ調査パケットを送信する。図３に示す例では、送信部１１は、サブネットワーク２に接続されている端末Ｎ１〜Ｎ６それぞれに対して調査パケットを送信する。
【００２６】
送信部１１は、特に限定されるものではないが、ＩＰマルチキャストまたはブロードキャストにより調査パケットを送信する。例えば、ＩＰマルチキャストが実行される場合には、ＩＰヘッダには予め決められたＩＰマルチキャストアドレス（例：224.0.0.1）が設定され、端末Ｎ１〜Ｎ６は、同ＩＰマルチキャストアドレスの調査パケットを受信するよう設定される。この場合、図３に示すスイッチングハブＳＷ１〜ＳＷ５は、ＩＰマルチキャストアドレスに従って、ネットワーク調査装置１０から送信された調査パケットを端末Ｎ１〜Ｎ６へ転送する。
【００２７】
このとき、ネットワーク調査装置１０から送信される調査パケットは、ルータ１にも転送される。ただし、ルータ１は、特に限定されるものではないが、受信した調査パケットを外部ネットワーク２に送出しないように設定されている。もしくは、外部ネットワーク２に上述のＩＰマルチキャストアドレスを受信する端末がなく、外部に転送されないものとする。
【００２８】
送信部１１は、特に限定されるものではないが、再送機能を有していないプロトコルで調査パケットを送信する。すなわち、送信部１１は、例えば、ＵＤＰで調査パケットを送信する。
【００２９】
調査パケットには、図５（ａ）に示すように、ＩＤ、調査番号、返送アドレス、返送ポートが設定される。ＩＤは、パケットタイプを表す情報である。したがって、調査パケットのＩＤフィールドには、調査パケットを表す予め決められた値が設定される。調査番号は、ネットワーク調査装置１０が端末Ｎ１〜Ｎ６へ調査パケットを送信する手順を繰り返し実行する際に、各送信手順を識別するシーケンス番号に相当する。したがって、１回のマルチキャストまたはブロードキャストで端末Ｎ１〜Ｎ６へ送信される各調査パケットには、同じ調査番号が割り当てられている。返送アドレスおよび返送ポートは、調査パケットを受信した端末が応答パケットを返送する宛先を指示するアドレスおよびＴＣＰ／ＩＰポート番号を表す。この実施例では、返送アドレスには、ネットワーク調査装置１０のＩＰアドレスが設定される。また、返送ポートには、ネットワーク調査装置１０において応答パケットを受信するために予め予約されたポート番号が設定される。
【００３０】
各端末Ｎ１〜Ｎ６は、上述の調査パケットを受信すると、図５（ｂ）に示す応答パケットを作成してネットワーク調査装置１０へ返送する。このとき、各端末Ｎ１〜Ｎ６は、特に限定されるものではないが、再送機能を有しているプロトコルで応答パケットを送信する。すなわち、各端末Ｎ１〜Ｎ６は、例えば、ＴＣＰで応答パケットを送信する。
【００３１】
応答パケットのＩＰヘッダの宛先ＩＰアドレスには、調査パケットで通知される「返送アドレス」が設定される。すなわち、応答パケットの宛先ＩＰアドレスは、ネットワーク調査装置１０のＩＰアドレスである。また、応答パケットのＴＣＰヘッダの宛先ポート番号には、調査パケットにより通知される「返送ポート」が設定される。さらに、応答パケットのＩＤフィールドには、応答パケットを表す予め決められた値が設定される。なお、応答パケットに設定される調査番号は、受信した調査パケットの調査番号がそのまま使用される。
【００３２】
各端末Ｎ１〜Ｎ６は、調査パケットを受信すると、上述の応答パケットをネットワーク調査装置１０に送信する。そうすると、スイッチングハブＳＷ１〜ＳＷ５は、端末Ｎ１〜Ｎ６から送信された応答パケットをネットワーク調査装置１０へ転送する。このとき、応答パケットには、応答パケットの送信元端末を識別する情報を含んでいる。応答パケットの送信元端末を識別する情報は、例えば、ＩＰヘッダに設定される送信元ＩＰアドレスである。よって、ネットワーク調査装置１０は、応答パケットの送信元端末を検出することができる。
【００３３】
受信部１２は、送信部１１から送信された調査パケットに対応する応答パケットを受信する。この実施例では、受信部１２は、上述した「返送ポート」により指示されるＴＣＰポートで、端末Ｎ１〜Ｎ６から送信される応答パケットを待ち受ける。そして、受信部１２は、端末Ｎ１〜Ｎ６から受信した応答パケットを検出部１３に渡す。ただし、受信部１２は、送信部１１が調査パケットを送信したときから、所定時間ΔＴが経過するまでの期間だけ、その調査パケットに対応する応答パケットを待ち受ける。例えば、送信部１１が時刻Ｔ１に調査番号００１が設定された調査パケットを送信した場合、受信部１２は、調査番号００１が設定されている応答パケットを、時刻Ｔ１＋ΔＴまで待ち受ける。つづいて、送信部１１が時刻Ｔ２に調査番号００２が設定された調査パケットを送信した場合、受信部１２は、調査番号００２が設定されている応答パケットを、時刻Ｔ２＋ΔＴまで待ち受ける。
【００３４】
なお、調査パケットに設定される調査番号および調査パケットの送信時刻は、例えば、送信部１１から受信部１２に通知される。或いは、検出部１３が調査番号を管理するようにしてもよい。この場合、検出部１３から送信部１１および受信部１２へ調査番号が通知される。
【００３５】
検出部１３は、受信部１２による応答パケットの受信結果に基づいて、調査対象のネットワークに接続されている全ての端末の中で、調査パケットを受信していない端末が属する端末グループを検出する。すなわち、検出部１３は、端末Ｎ１〜Ｎ６の中で、調査パケットを受信していない端末が属する端末グループを検出する。ここで、検出部１３は、一時リスト１５および端末リスト１６を利用して端末グループを検出する。一時リスト１５および端末リスト１６は、検出部１３の内部に設けられてもよいし、検出部１３の外部に設けられてもよい。また、検出部１３は、調査番号ごとに（すなわち、マルチキャストまたはブロードキャストで端末Ｎ１〜Ｎ６へ調査パケットを送信するごとに）、端末グループを検出する。
【００３６】
図６（ａ）は、一時リスト１５の実施例である。一時リスト１５には、調査番号ごとに、応答パケットの送信元端末が登録される。すなわち、検出部１３は、受信部１２が受信した応答パケットの調査番号および送信元端末をチェックする。ここで、応答パケットの送信元端末は、例えば、ＩＰヘッダに設定されている送信元ＩＰアドレスにより識別される。そして、検出部１３は、受信部１２により応答パケットが受信される毎に、その受信応答パケットの送信元端末を一時リスト１５に登録する。図６（ａ）に示す例は、送信部１１が調査番号１００の調査パケットを端末Ｎ１〜Ｎ６へ送信し、受信部１２がその調査パケットに対応する応答パケットを端末Ｎ３、Ｎ４、Ｎ５、Ｎ６から受信したときの、一時リスト１５の状態を表している。
【００３７】
図６（ｂ）は、端末リスト１６の実施例である。端末リスト１６には、調査対象のネットワークに接続されている端末が登録される。したがって、この実施例では、端末リスト１６には、サブネットワーク２に接続されている端末Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６が登録されている。ここで、調査対象のネットワークに接続される端末が予め決められている場合には、端末リスト１６は予め作成される。一方、調査対象のネットワークに接続される端末が既知でない場合には、端末リスト１６は、例えば、以下の手順Ａにより作成される。
（ａ１）調査パケットをマルチキャストまたはブロードキャストで送信する。
（ａ２）上記（ａ１）で送信した調査パケットに対応する応答パケットの送信元端末を一時リスト１５に登録する。
（ａ３）一時リスト１５および端末リスト１６を対比し、一時リスト１５のみに登録されている端末があれば、その端末を端末リスト１６に追加する。
（ａ４）一時リスト１５をリセットする。
（ａ５）上記（ａ１）〜（ａ４）を所定回数繰り返し実行する。
【００３８】
なお、検出部１３は、上記手順（ａ１）〜（ａ５）で端末リスト１６を作成しながら、端末グループを検出するようにしてもよい。或いは、検出部１３は、上記手順（ａ１）〜（ａ５）で端末リスト１６を作成した後に、端末グループを検出するようにしてもよい。
【００３９】
検出部１３は、以下の手順Ｂで端末グループを検出する。
（ｂ１）送信部１１に調査パケットの送信を指示する。これにより、送信部１１は、調査番号ｉの調査パケットを、マルチキャストまたはブロードキャストで、端末Ｎ１〜Ｎ６へ送信する。このとき、調査パケットは、基本的に、端末リスト１６に登録されているすべての端末へ送信される。
（ｂ２）上記（ｂ１）で送信した調査パケットに対応する応答パケット（すなわち、調査番号ｉの応答パケット）の送信元端末を、一時リスト１５に登録する。
（ｂ３）一時リスト１５および端末リスト１６を参照し、端末リスト１６に登録されているが、一時リスト１５には登録されていない端末を検出する。これにより検出される１または複数の端末は「応答パケットの送信元端末以外の端末」である。
（ｂ４）上記（ｂ３）で検出された１または複数の端末を要素とする端末グループを、調査番号ｉに対して得られる端末グループとして出力する。
（ｂ５）一時リスト１５をリセットする。
【００４０】
このように、検出部１３は、調査番号ｉに対して「応答パケットの送信元端末以外の端末」を要素とする端末グループを検出する。例えば、図６に示す例では、端末リスト１６に端末Ｎ１〜Ｎ６が登録され、調査番号１００に対して一時リスト１５に端末Ｎ３〜Ｎ６が登録されている。すなわち、端末Ｎ１、Ｎ２は、端末リスト１６に登録されているが、一時リスト１５には登録されていない。この場合、検出部１３は、調査番号１００に対して「端末グループ＝Ｎ１、Ｎ２」を出力する。
【００４１】
検出部１３は、調査番号ｉをカウントアップしながら上記手順（ｂ１）〜（ｂ５）を繰り返し実行する。なお、一時リスト１５および端末リスト１６に登録されている端末が互いにすべて一致する場合は、端末グループは検出されない。すなわち、「端末グループ＝該当なし」が出力される。
【００４２】
図７は、端末グループの検出方法を説明する図である。ここでは、ネットワーク調査装置１０から端末Ｎ１〜Ｎ６へマルチキャストまたはブロードキャストで調査パケットが送信されるものとする。このとき、調査パケットは、基本的には、すべての端末Ｎ１〜Ｎ６に到達する。ただし、ネットワークを介して伝送されるパケットは、例えばネットワークの輻輳時には、廃棄されることがある。すなわち、ネットワーク調査装置１０から端末Ｎ１〜Ｎ６へ送信される調査パケットは、ネットワーク上でパケットロスが発生することがある。
【００４３】
図７（ａ）に示す例では、スイッチングハブＳＷ３において輻輳が発生し、調査パケットがスイッチングハブＳＷ３において廃棄されている。この場合、ネットワーク調査装置１０から送信される調査パケットは、端末Ｎ３〜Ｎ６には到達するが、端末Ｎ１、Ｎ２には到達しない。なお、調査パケットは、この実施例では、再送機能を有していないプロトコルで送信される。したがって、スイッチングハブＳＷ３においてパケットロスが発生すると、上記調査パケットは、端末Ｎ１、Ｎ２により受信されることはない。
【００４４】
端末Ｎ３〜Ｎ６は、調査パケットを受信すると、それぞれ、対応する応答パケットを作成してネットワーク調査装置１０へ返送する。このとき、応答パケットは、この実施例では、再送機能を有するプロトコルで送信される。したがって、端末Ｎ３〜Ｎ６から送信される応答パケットは、サブネットワーク２が輻輳している場合であっても、確実に、ネットワーク調査装置１０へ到達する。すなわち、ネットワーク調査装置１０は、端末Ｎ３〜Ｎ６から応答パケットを受信する。
【００４５】
一方、端末Ｎ１、Ｎ２は、この例では、調査パケットを受信しないので、いずれも応答パケットを送信しない。よって、ネットワーク調査装置１０は、端末Ｎ１、Ｎ２から応答パケットを受信することはない。
【００４６】
ネットワーク調査装置１０の検出部１３は、所定時間内に端末Ｎ１、Ｎ２から応答パケットを受信できなかったときは、端末Ｎ１、Ｎ２をグループ化する。すなわち、端末グループ「Ｎ１、Ｎ２」が検出される。
【００４７】
このように、調査パケットを受信した端末は、ネットワーク調査装置１０へ応答パケットを返送する。このとき、端末から送信される応答パケットは、上述したように、確実にネットワーク調査装置１０へ到達する。よって、ネットワーク調査装置１０が端末Ｎ１、Ｎ２から応答パケットを受信できない原因は、調査パケットが端末Ｎ１、Ｎ２へ到達しなかったことであると考えられる。すなわち、応答パケットの送信元端末以外の端末は、調査パケットを受信していないと考えられ、端末Ｎ１、Ｎ２は、「調査パケットを受信できなかった端末」としてグループ化される。また、調査パケットが端末Ｎ１、Ｎ２へ到達しなかった原因は、端末Ｎ１、Ｎ２に共通して係わるネットワーク機器（この実施例では、スイッチングハブＳＷ３）において、調査パケットが廃棄された可能性が高いと考えられる。
【００４８】
したがって、上述のようにして検出される端末グループは、ネットワークトポロジを表す情報として利用することができる。例えば、端末グループ「Ｎ１、Ｎ２」が検出されたときは、端末Ｎ１、Ｎ２が同じスイッチングハブに接続されているか、あるいは、端末Ｎ１、Ｎ２がネットワーク機器１０から見て同じスイッチングハブの先に設けられていると考えられる。図７（ａ）に示す例では、端末１、Ｎ２は、いずれもスイッチングハブＳＷ３に接続されている。
【００４９】
図７（ｂ）に示す例では、スイッチングハブＳＷ４において輻輳が発生し、調査パケットがスイッチングハブＳＷ４において廃棄されている。この場合、ネットワーク調査装置１０から送信される調査パケットは、端末Ｎ１〜Ｎ３には到達するが、端末Ｎ４〜Ｎ６には到達しない。
【００５０】
この場合、ネットワーク調査装置１０は、端末Ｎ１〜Ｎ３から応答パケットを受信するが、端末Ｎ４〜Ｎ６からは応答パケットを受信することはない。そうすると、検出部１３は、端末Ｎ４、Ｎ５、Ｎ６をグループ化する。すなわち、端末グループ「Ｎ４、Ｎ５、Ｎ６」が検出される。
【００５１】
端末グループ「Ｎ４、Ｎ５、Ｎ６」が検出されたときは、端末Ｎ４、Ｎ５、Ｎ６に共通して係わるネットワーク機器（この実施例では、スイッチングハブＳＷ４）において、調査パケットが廃棄された可能性が高いと考えられる。この場合、端末Ｎ４、Ｎ５、Ｎ６が同じスイッチングハブに接続されているか、あるいは、端末Ｎ４、Ｎ５、Ｎ６がネットワーク機器１０から見て同じスイッチングハブの先に設けられていると考えられる。図７（ｂ）に示す例では、端末４、Ｎ５、Ｎ６は、いずれもネットワーク機器１０から見てスイッチングハブＳＷ４の先に接続されている。
【００５２】
ネットワーク調査装置１０は、上記調査を繰り返し実行する。「調査」は、サブネットワーク２に接続されているすべての端末へ調査パケットを送信して応答をモニタする手順に相当する。そして、検出部１３は、各調査において、各端末から対応する応答パケットを受信できるか否かに応じて、複数の端末グループを検出する。なお、検出部１３により検出された端末グループは、算出部１４に通知される。
【００５３】
算出部１４は、検出部１３により検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する。このとき、算出部１４は、グループ情報リスト１７を更新および参照しながら、端末間の通信コストを算出する。
【００５４】
図８は、グループ情報リスト１７の実施例を示す。グループ情報リスト１７には、検出部１３により検出された端末グループが登録される。図８に示す例では、６つの端末グループ「Ｎ１、Ｎ２」「Ｎ４、Ｎ５、Ｎ６」「Ｎ１、Ｎ２、Ｎ３」「Ｎ５、Ｎ６」「Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６」「Ｎ１、Ｎ２、Ｎ５、Ｎ６」がグループ情報リスト１７に登録されている。なお、例えば、端末グループ「Ｎ１、Ｎ２」は、ネットワーク調査装置１０が端末Ｎ１、Ｎ２から応答パケットを受信できなかったときに登録される。また、例えば、端末グループ「Ｎ４、Ｎ５、Ｎ６」は、ネットワーク調査装置１０が端末Ｎ４、Ｎ５、Ｎ６から応答パケットを受信できなかったときに登録される。
【００５５】
また、グループ情報リスト１７は、各端末グループについて検出頻度（図８では、頻度カウンタ）を管理する。検出頻度は、この例では、検出部１３により端末グループが検出された回数を表す。すなわち、算出部１４は、検出部１３によりある端末グループが検出されると、その端末グループの頻度カウンタをカウントアップする。なお、図８に示す例では、例えば、端末グループ「Ｎ１、Ｎ２」が１５回検出され、端末グループ「Ｎ４、Ｎ５、Ｎ６」が１２回検出された状態を示している。さらに、算出部１４は、グループ情報リスト１７において、登録されている端末グループを検出頻度に応じてソートする。
【００５６】
図９は、グループ情報リスト１７を作成する処理を示すフローチャートである。この処理は、送信部１１、受信部１２、検出部１３、算出部１４により実行される。また、この処理は、例えば、定期的に繰り返し実行される。
【００５７】
ステップＳ１において、検出部１３は、調査番号を設定する。調査番号は、例えばシーケンス番号であり、各「調査」に対して異なる値が使用される。「調査」は、上述したように、サブネットワーク２に接続されているすべての端末へ調査パケットを送信して応答を検出する手順に相当する。そして、検出部１３は、調査番号を送信部１１および受信部１２に通知する。なお、この例では、調査番号は検出部１３により生成されるが、他の回路要素により生成されるようにしてもよい。
【００５８】
ステップＳ２において、送信部１１は、調査パケットを作成してサブネットワーク２に接続されているすべての端末へ送信する。このとき、調査パケットには、検出部１３から通知された調査番号が設定される。また、調査パケットは、マルチキャストまたはブロードキャストにより送信される。
【００５９】
ステップＳ３において、受信部１２および検出部１３は、調査結果を収集する。すなわち、まず、受信部１２は、送信部１１が調査パケットを送信したときから所定の期間が経過するまで、検出部１３から通知された調査番号が設定されている応答パケットを待ち受ける。そして、検出部１３は、受信部１２が受信した各応答パケットの送信元端末と、端末リスト１６に登録されている端末とを比較する。ここで、応答パケットの送信元端末は調査パケットを受信しており、他の端末は調査パケットを受信していないと考えられる。すなわち、調査パケットを受信していない端末が検出される。
【００６０】
ステップＳ４において、検出部１３は、応答パケットの受信状況に基づいて、調査パケットを受信していない端末があるか否かを判定する。そして、調査パケットを受信していない端末があれば、処理はステップＳ５に移る。なお、受信部１２がすべての端末から応答パケットを受信したときは、処理は終了する。
【００６１】
ステップＳ５において、検出部１３は、調査パケットを受信していない端末をグループ化する。そして、算出部１４は、グループ情報リスト１７において、検出部１３により検出された端末グループの頻度カウンタをインクリメント（カウント値を「１」だけカウントアップ）する。そして、ステップＳ６において、算出部１４は、更新されたグループ情報リスト１７を、頻度カウンタの値に従ってソートする。
【００６２】
このように、ネットワーク調査装置１０は、図９に示すフローチャートの処理を繰り返し実行することによりグループ情報リスト１７を作成する。ここで、ステップＳ５〜Ｓ６の処理は、基本的に、ネットワーク調査装置１０から送信された調査パケットが、サブネットワーク２内のいずれかのスイッチングハブで廃棄されたときに実行される。即ち、グループ情報リスト１７は、基本的に、調査パケットが廃棄されたときに更新される。
【００６３】
算出部１４は、上述のようにして作成したグループ情報リスト１７を利用して、端末グループの集約化を実行する。なお、端末グループの集約化は、調査対象のネットワークのトポロジを検出する処理に相当する。
【００６４】
図１０は、端末グループの集約化処理を示すフローチャートである。このフローチャートの処理は、例えば、グループ情報リスト１７が作成された後に、算出部１４によって実行される。
【００６５】
ステップＳ１１において、算出部１４は、トポロジ情報を初期化する。ここで、トポロジ情報は、特に図示しないが、ネットワーク調査装置１０が有する所定のメモリ領域に作成される。
【００６６】
ステップＳ１２において、算出部１４は、グループ情報リスト１７から、頻度カウンタの値が最大の端末グループを選択する。なお、グループ情報リスト１７は、頻度カウンタの値に従って端末グループがソートされているものとする。
【００６７】
ステップＳ１３において、算出部１４は、処理対象のグループ情報とトポロジ情報との間に、共通の要素が存在するか否かを判定する。処理対象のグループ情報は、ステップＳ１２またはＳ１９において選択された端末グループに属する１または複数の端末を表す。トポロジ情報は、後で実施例を参照しながら説明するが、端末間の関係を表す。なお、トポロジ情報は、ステップＳ１１で初期化された時点では、１つの要素も含んでいない。また、トポロジ情報は、ステップＳ１４またはＳ１６において更新される。そして、処理対象のグループ情報とトポロジ情報との間に共通の要素（すなわち、端末ＩＤ）が存在するときは、処理はステップＳ１４へ移行する。一方、それらの間に共通の要素が存在しないときは、処理はステップＳ１７へ移行する。
【００６８】
ステップＳ１４において、算出部１４は、処理対象のグループ情報とトポロジ情報内の各部分リストとの間の包含関係の有無を検出する。ここで、各部分リストは、後で実施例を参照しながら説明するが、１または複数の端末ＩＤを含んでいる。例えば、処理対象のグループ情報が「Ｎ１、Ｎ２」であり、トポロジ情報内の部分リストが「（Ｎ１、Ｎ２、Ｎ３）」であるものとする。この場合、この部分リストが処理対象のグループ情報を包含していると判定される。また、処理対象のグループ情報が「Ｎ１、Ｎ２」であり、トポロジ情報内の部分リストが「（Ｎ２、Ｎ３）」であるものとする。この場合、処理対象のグループ情報に属する「Ｎ１」は部分リストの要素ではなく、部分リストに属する「Ｎ３」は処理対象のグループ情報の要素ではない。したがって、処理対象のグループ情報とトポロジ情報との間に包含関係は存在しないと判定される。
【００６９】
処理対象のグループ情報とトポロジ情報内の部分リストとの間に包含関係が存在するときは（ステップＳ１４：Ｙｅｓ）、ステップＳ１５において、算出部１４は、トポロジ情報を更新する。このとき、処理対象のグループ情報との間に包含関係を有する部分リストが、処理対象のグループ情報とトポロジ情報との間の包含関係を表す包含リストに置き換えられる。
【００７０】
処理対象のグループ情報とトポロジ情報内の部分リストとの間に包含関係が存在しないときは（ステップＳ１４：Ｎｏ）、ステップＳ１６において、算出部１４は、処理対象のグループ情報がエラーを含んでいると判定する。この場合、ステップＳ１５の処理はスキップされる。また、処理対象のグループ情報は廃棄される。
【００７１】
なお、処理対象のグループ情報とトポロジ情報との間に共通の要素が存在しないときには（ステップＳ１３：Ｎｏ）、算出部１４は、ステップＳ１７において、処理対象のグループ情報により表わされる端末リストを、新たな部分リストとしてトポロジ情報に追加する。この場合も、ステップＳ１５の処理はスキップされる。
【００７２】
ステップＳ１８〜Ｓ１９において、算出部１４は、グループ情報リスト１７に登録されているすべての端末グループを選択したか否かをチェックする。そして、グループ情報リスト１７に未選択の端末グループが存在する場合には、算出部１４は、次の端末グループを選択してステップＳ１３に戻る。すなわち、算出部１４は、グループ情報リスト１７から頻度カウンタに応じて端末グループを１つずつ順番に選択してステップＳ１３〜Ｓ１９の処理をそれぞれ実行する。これにより、端末グループが集約化され、トポロジ情報が生成される。
【００７３】
次に、図１０に示す端末グループの集約化処理の実施例を説明する。ここでは、図８に示すグループ情報リスト１７が先に作成されているものとする。
まず、ステップＳ１２において、図８に示すグループ情報リスト１７から、頻度カウンタの値が最大の端末グループが選択される。すなわち、端末グループ「Ｎ１、Ｎ２」が選択される。このとき、トポロジ情報は初期化されているので、処理対象のグループ情報とトポロジ情報との間に共通の要素は存在せず、ステップＳ１３において「Ｎｏ」と判定される。したがって、ステップＳ１７において、端末グループ「Ｎ１、Ｎ２」が、１つの部分リストとしてトポロジ情報に追加される。この結果、トポロジ情報は、下記のように更新される。
トポロジ情報１＝（Ｎ１、Ｎ２）
【００７４】
なお、トポロジ情報ｉ（ｉ＝１，２，３，．．．）は、ｉ番目の端末グループに対する集約化処理が実行されたときのトポロジ情報を表すものとする。また、トポロジ情報の表記において、括弧記号は、端末グループを表す。すなわち、１つの括弧内に記載されている複数の端末は、同じ端末グループに属していることを表す。
【００７５】
続いて、２番目に高い頻度の端末グループが選択される。すなわち、端末グループ「Ｎ４、Ｎ５、Ｎ６」が選択される。ここで、選択された端末グループ「Ｎ４、Ｎ５、Ｎ６」とトポロジ情報１「（Ｎ１、Ｎ２）」との間には、共通の要素は存在しない。この場合、処理対象のグループ情報に属する端末、およびトポロジ情報１に含まれている端末は、互いに並列に配置されていると判定される。そして、ステップＳ１７において、端末グループ「Ｎ４、Ｎ５、Ｎ６」は、新たな部分リストとしてトポロジ情報に追加される。この結果、トポロジ情報は、下記のように更新される。
トポロジ情報２＝（Ｎ１、Ｎ２）（Ｎ４、Ｎ５、Ｎ６）
なお、トポロジ情報の表記において、異なる括弧に属する端末は、異なる端末グループに属する。
【００７６】
続いて、３番目の端末グループ「Ｎ１、Ｎ２、Ｎ３」が選択される。ここで、選択された端末グループ「Ｎ１、Ｎ２、Ｎ３」とトポロジ情報２「（Ｎ１、Ｎ２）（Ｎ４、Ｎ５、Ｎ６）」との間には、共通の要素が存在する。また、選択された端末グループ「Ｎ１、Ｎ２、Ｎ３」とトポロジ情報２の部分リスト「（Ｎ１、Ｎ２）」との間には、包含関係が存在する。すなわち、部分リスト「（Ｎ１、Ｎ２）」の各要素は、全て、端末グループ「Ｎ１、Ｎ２、Ｎ３」の要素に含まれている。したがって、この場合、ステップＳ１５において、この包含関係を表す包含リスト「（（Ｎ１、Ｎ２）Ｎ３）」が作成される。さらに、処理対象のグループ情報との間に包含関係を有する部分リスト「（Ｎ１、Ｎ２）」が、処理対象のグループ情報とトポロジ情報との間の包含関係を表す包含リスト「（（Ｎ１、Ｎ２）Ｎ３）」に置き換えられる。この結果、トポロジ情報は、下記のように更新される。
トポロジ情報３＝（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４、Ｎ５、Ｎ６）
【００７７】
なお、トポロジ情報および包含リストの表記において、多重括弧は、端末グループが親子関係を有していることを表す。例えば、「（（Ｎ１、Ｎ２）Ｎ３）」は、端末グループ「Ｎ１、Ｎ２、Ｎ３」の中に、子端末グループ「Ｎ１、Ｎ２」が存在していることを表している。
【００７８】
続いて、４番目の端末グループ「Ｎ５、Ｎ６」が選択される。ここで、選択された端末グループ「Ｎ５、Ｎ６」とトポロジ情報３「（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４、Ｎ５、Ｎ６）」との間には、共通の要素が存在する。また、選択された端末グループ「Ｎ５、Ｎ６」とトポロジ情報３の部分リスト「（Ｎ４、Ｎ５、Ｎ６）」との間には、包含関係が存在する。すなわち、端末グループ「Ｎ５、Ｎ６」の各要素は、全て、部分リスト「（Ｎ４、Ｎ５、Ｎ６）」の要素に含まれている。したがって、ステップＳ１５において、この包含関係を表す包含リスト「（Ｎ４（Ｎ５、Ｎ６））」が作成される。そして、トポロジ情報３の部分リスト「（Ｎ４、Ｎ５、Ｎ６）」が、この包含リスト「（Ｎ４（Ｎ５、Ｎ６））」に置き換えられる。この結果、トポロジ情報は、下記のように更新される。
トポロジ情報４＝（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６））
【００７９】
続いて、５番目の端末グループ「Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６」が選択されると、同様に、トポロジ情報は下記のように更新される。
トポロジ情報５＝（（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６）））
【００８０】
さらに、６番目の端末グループ「Ｎ１、Ｎ２、Ｎ５、Ｎ６」が選択される。ここで、この端末グループ「Ｎ１、Ｎ２、Ｎ５、Ｎ６」とトポロジ情報５「（（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６）））」との間には、共通の要素が存在する。ところが、この端末グループ「Ｎ１、Ｎ２、Ｎ５、Ｎ６」とトポロジ情報５の各部分リストとの間には、包含関係は存在しない。トポロジ情報５は、部分リスト１「（（Ｎ１、Ｎ２）Ｎ３）」および部分リスト２「（Ｎ４（Ｎ５、Ｎ６））」を有する。しかしながら、部分リスト１に属する「Ｎ３」は上記端末グループに属しておらず、且つ、上記端末リストに属する「Ｎ５」「Ｎ６」は部分リスト１に属していない。すなわち、６番目の端末リストと部分リスト１との間に包含関係は存在しない。同様に、６番目の端末リストと部分リスト２との間にも包含関係は存在しない。よって、ステップＳ１４において「Ｎｏ」と判定され、ステップＳ１６においてエラーが検出される。
【００８１】
上述のようにしてグループ情報リスト１７に登録されているすべての端末グループについてステップＳ１３〜Ｓ１７の処理を実行すると、算出部１４は、作成したトポロジ情報を出力する。上述の例では、トポロジ情報５が出力される。
【００８２】
このように、算出部１４は、グループ情報リスト１７に登録されている各端末グループについてステップＳ１３〜Ｓ１７の処理を実行することにより、トポロジ情報を作成して出力する。ただし、算出部１４は、グループ情報リスト１７に登録されている一部の端末グループについてステップＳ１３〜Ｓ１７の処理を実行することでトポロジ情報を作成してもよい。
【００８３】
例えば、グループ情報リスト１７において、頻度カウンタの値が所定の閾値を超えている端末グループについてステップＳ１３〜Ｓ１７が実行されるようにしてもよい。この場合、閾値は、例えば、調査対象のネットワークに接続される端末の数、および／または、調査の実行回数に応じて決定される。一例として、図８に示す例において、閾値が「６」であるものとする。そうすると、上位４つの端末グループについてステップＳ１３〜Ｓ１７の処理が実行され、上述したトポロジ情報４が出力される。
【００８４】
或いは、算出部１４は、ステップＳ１４で「Ｎｏ」と判定されてエラーが検出されたときに、端末グループの集約化処理を終了するようにしてもよい。すなわち、先に選択されている端末グループと、新たに選択された端末グループとの間の包含関係が矛盾するときに、端末グループの集約化処理を終了するようにしてもよい。
【００８５】
ここで、端末グループ間の包含関係が矛盾し、ステップＳ１６のエラーが検出されるケースについて説明する。一例として、２つの端末グループ「Ｎ１、Ｎ２」「Ｎ２、Ｎ３」が検出されてグループ情報リスト１７に登録されているものとする。このとき、端末グループ「Ｎ１、Ｎ２」は、「端末Ｎ３は調査パケットを受信したが、端末Ｎ１、Ｎ２は調査パケットを受信していない」ときに検出される。すなわち、端末グループ「Ｎ１、Ｎ２」は、例えば、図１１（ａ）に示すネットワークトポロジにおいて、スイッチングハブＳＷ−Ｘで調査パケットのロスが発生したときに検出されると考えられる。
【００８６】
一方、端末グループ「Ｎ２、Ｎ３」は、「端末Ｎ１は調査パケットを受信したが、端末Ｎ２、Ｎ３は調査パケットを受信していない」ときに検出される。すなわち、端末グループ「Ｎ２、Ｎ３」は、例えば、図１１（ｂ）に示すネットワークトポロジにおいて、スイッチングハブＳＷ−Ｙで調査パケットのロスが発生したときに検出されると考えられる。
【００８７】
このように、互いに矛盾する端末グループ「Ｎ１、Ｎ２」「Ｎ２、Ｎ３」が検出されると、図１１（ａ）〜図１１（ｂ）に示すように、互いに異なるネットワークトポロジが推定される。すなわち、互いに矛盾する端末グループが検出されると、ネットワークトポロジを推定することはできない。そこで、実施形態のネットワーク調査方法では、互いに矛盾する端末グループが検出されたときは、検出頻度の高い端末グループに基づいてネットワークトポロジを推定する。具体的には、頻度カウンタの値の大きい端末グループから順番に図１０に示すフローチャートの処理が実行される。そして、先に選択されている端末グループと、新たに選択された端末グループとの間の包含関係が矛盾するときには、図１０に示すフローチャートにおいて、後に選択される端末グループのグループ情報は無視される。
【００８８】
例えば、端末グループ「Ｎ２、Ｎ３」よりも端末グループ「Ｎ１、Ｎ２」の検出頻度の方が高いものとすると、図１１（ａ）に示すネットワークトポロジが推定される。なお、図１１（ａ）に示すネットワークトポロジにおいて、端末グループ「Ｎ２、Ｎ３」が検出される状況は、図１１（ｃ）に示すように、２地点でパケットロスが発生するときである。すなわち、端末グループ「Ｎ２、Ｎ３」は、スイッチングハブＳＷ−Ｘと端末Ｎ２との間に設けられたスイッチングハブＳＷ−Ｗで調査パケットのパケットロスが発生すると共に、スイッチングハブＳＷ−Ｙと端末Ｎ３との間に設けられたスイッチングハブＳＷ−Ｚでも調査パケットのパケットロスが発生するときに検出される。しかし、１回の調査においてほぼ同時に２地点でパケットロスが発生する確率は非常に低い。すなわち、例えば、図１１（ａ）に示すネットワークトポロジにおいては、端末グループ「Ｎ２、Ｎ３」が検出される頻度は非常に低くなると見込まれる。したがって、端末グループの集約化処理において、頻度カウンタの値が所定の閾値以下の端末グループを使用しないことにより、不適切なネットワークトポロジが推定されることが回避される。
【００８９】
算出部１４は、上述のようにして作成したトポロジ情報に基づいて、調査対象のネットワークに接続される端末間の通信コストを算出する。この実施例では、トポロジ情報から通信コストテーブルへの変換が行われる。
【００９０】
図１２は、通信コストを算出する処理を示すフローチャートである。このフローチャートの処理は、例えば、基準端末が指定されたときに実行される。基準端末は、特に限定されるものではないが、例えば、調査対象のネットワークに新たに接続される端末である。すなわち、例えば、端末Ｎ１〜Ｎ５がＰ２Ｐネットワークを構築しており、このＰ２Ｐネットワークに新たに端末Ｎ６が接続される際には、端末Ｎ６が基準端末である。この場合、ネットワーク調査装置１０は、端末Ｎ６からの問合せに応じて、端末Ｎ６から他の端末Ｎ１〜Ｎ５への通信コストをそれぞれ計算する。
【００９１】
ステップＳ２１において、算出部１４は、ネットワークに接続されている複数の端末の中から計算対象端末を選択する。計算対象端末は、例えば、端末リスト１６に登録されている端末であって、基準端末以外の端末の中から選択される。
【００９２】
ステップＳ２２において、算出部１４は、トポロジ情報から、基準端末または計算対象端末のいずれも含まない部分リストを削除する。これにより、注目トポロジ情報が得られる。なお、注目トポロジ情報は、基準端末と計算対象端末を含む最小限のネットワークトポロジを表す。
【００９３】
ステップＳ２３において、算出部１４は、ステップＳ２２で得られる注目トポロジ情報において、基準端末と計算対象端末とを区切る括弧の数を計算する。そして、この括弧の数が、基準端末と計算対象端末との間の通信コストとして出力される。
【００９４】
ステップＳ２４〜Ｓ２５において、算出部１４は、計算対象端末として選択されていない端末をサーチする。そして、計算対象端末として選択されていない端末が残っているときは、その中から次の計算対象端末を選択してステップＳ２２に戻る。すなわち、各端末についてそれぞれステップＳ２２〜Ｓ２３の処理が実行される。この結果、基準端末と他の各端末との間の通信コストがそれぞれ算出される。
【００９５】
次に、通信コストの計算方法についての実施例を説明する。以下の説明では、図１０に示すフローチャートの処理を実行することにより、下記のトポロジ情報が得られているものとする。
トポロジ情報＝（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６））
なお、このトポロジ情報は、以下の４つの部分リストを有する
（Ｎ１、Ｎ２）
（Ｎ１、Ｎ２、Ｎ３）
（Ｎ５、Ｎ６）
（Ｎ４、Ｎ５、Ｎ６）
【００９６】
ここで、基準端末＝Ｎ６であるものとする。そうすると、通信コストは以下のようにして計算される。
計算対象端末＝Ｎ５である場合、トポロジ情報から「（（Ｎ１、Ｎ２）Ｎ３）」が削除され、注目トポロジ情報「（Ｎ４（Ｎ５、Ｎ６））」が生成される。そして、「Ｎ６」と「Ｎ５」との間を区切る括弧の数がカウントされる。この場合、「Ｎ６」および「Ｎ５」は、同じ括弧内に配置されている。したがって、端末Ｎ６から端末Ｎ５への通信コストは「０」である。
【００９７】
計算対象端末＝Ｎ４である場合も、注目トポロジ情報「（Ｎ４（Ｎ５、Ｎ６））」が生成される。ただし、「Ｎ４」は、「（Ｎ５、Ｎ６）」の外に配置されている。すなわち、「Ｎ６」および「Ｎ４」は、互いに１つの括弧により区切られている。したがって、端末Ｎ６から端末Ｎ４への通信コストは「１」である。
【００９８】
計算対象端末＝Ｎ３である場合は、注目トポロジ情報「（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６））」が生成される。ここで、「Ｎ６」から「Ｎ３」に到達するためには、下記の３つの括弧ａ〜ｃを超える必要がある。
括弧ａ：（Ｎ５、Ｎ６）
括弧ｂ：（Ｎ４、Ｎ５、Ｎ６）
括弧ｃ：（Ｎ１、Ｎ２、Ｎ３）
すなわち、「Ｎ６」から「Ｎ３」に到達するためには、括弧ａの内側から外側へ移行し、括弧ｂの内側から外側へ移行し、括弧ｃの外側から内側へ移行する必要がある。換言すれば、「Ｎ６」および「Ｎ３」は、互いに３つの括弧により区切られている。したがって、端末Ｎ６から端末Ｎ３への通信コストは「３」である。
【００９９】
計算対象端末＝Ｎ２である場合は、注目トポロジ情報「（（Ｎ１、Ｎ２）Ｎ３）（Ｎ４（Ｎ５、Ｎ６））」が生成される。ここで、「Ｎ６」から「Ｎ２」に到達するためには、下記の４つの括弧ａ〜ｄを超える必要がある。
括弧ａ：（Ｎ５、Ｎ６）
括弧ｂ：（Ｎ４、Ｎ５、Ｎ６）
括弧ｃ：（Ｎ１、Ｎ２、Ｎ３）
括弧ｄ：（Ｎ１、Ｎ２）
すなわち、「Ｎ６」および「Ｎ２」は、互いに４つの括弧により区切られている。したがって、端末Ｎ６から端末Ｎ２への通信コストは「４」である。同様に、端末Ｎ６から端末Ｎ１への通信コストも「４」である。
【０１００】
上記計算により、通信コストテーブル１８が作成される。端末Ｎ６が基準端末であるときの通信コストテーブル１８の実施例を図１３に示す。なお、この実施例では、スイッチングハブＳＷ１に対応するコストはカウントされていない。ただし、上述の計算においては、各端末に対して共通してスイッチングハブＳＷ１に対応するコストが除去されているので、相対的な通信コストを比較する際には問題は生じない。また、スイッチングハブＳＷ１に直接的に接続される端末が追加されると、さらに調査を繰り返すことによってスイッチングハブＳＷ１の存在が認識または推定されるようになり、スイッチングハブＳＷ１に対応するコストが計算結果に反映されるようになる。
【０１０１】
上述のようにして端末Ｎ６を基準とする通信コストテーブル１８を作成すると、ネットワーク調査装置１０は、端末Ｎ６に対して、端末Ｎ６からの通信コストが最も低い相手端末を通知する。図１３に示す例では、ネットワーク調査装置１０から端末Ｎ６に対して「Ｎ５」が通知される。そうすると、端末Ｎ６は、端末Ｎ５に対して、Ｐ２Ｐ通信データの転送先として端末Ｎ６を設定する旨を依頼する。また、この依頼を受けた端末Ｎ５は、他の端末（ここでは、端末Ｎ１〜Ｎ４の中の１つ）から受信したＰ２Ｐ通信データを、端末Ｎ６へ転送する。これにより、通信コストの低い経路でＰ２Ｐデータ配信が実現され、端末間の通信効率が向上する。
【０１０２】
ネットワーク調査装置１０は、２以上の端末への通信コストが同じ場合には、例えば、調査パケットのロスの発生確率が低い方の端末を、Ｐ２Ｐ通信の相手端末として選択してもよい。また、ネットワーク調査装置１０は、新たに追加された端末以外の端末を基準として通信コストを計算してもよい。すなわち、ネットワーク調査装置１０は、任意の端末を基準として通信コストを計算できる。
【０１０３】
なお、ネットワーク調査装置１０は、例えば、定期的に調査を繰り返し実行し、グループ情報リスト１７を更新してゆく。この場合、時間経過に伴って調査パケットのロスの発生回数が増えてゆき、調査結果の信頼性が向上する。
【０１０４】
また、実施形態のネットワーク調査方法は、スイッチングハブ等において調査パケットのロスが発生することを利用する。このため、実施形態のネットワーク調査方法は、例えば、端末間で通常のＰ２Ｐデータ通信が行われているときに実行されるようにしてもよい。この場合、通常のＰ２Ｐデータ通信による輻輳に起因して調査パケットのロスが発生する確率が高くなる。この結果、グループ情報リスト１７を作成するためのサンプル数が増加して調査の信頼性が向上する。或いは、グループ情報リスト１７を作成するために要する時間が短くなる。
【０１０５】
さらに、ネットワーク調査装置１０は、調査パケットのパケットロスを起こりやすくするために、調査実行時に調査パケットに加えてダミーパケットを送信するようにしてもよい。この場合、例えば、調査パケットおよびダミーパケットは、時間分割多重で送信される。
【０１０６】
＜他の実施形態＞
図３に示す実施形態では、通信コストを計算するためにネットワーク調査装置１０が設けられている。これに対して、他の実施形態では、調査対象のネットワークに接続される複数の端末の中の任意の端末が、ネットワーク調査装置として端末間の通信コストを計算する。
【０１０７】
図１４は、他の実施形態のネットワーク調査方法が使用されるネットワークの構成の一例を示す図である。ここでは、端末Ｎ１〜Ｎ６の中で、端末Ｎ１が通信コストを計算する機能を備えている。この場合、端末Ｎ１は、図４に示す送信部１１、受信部１２、検出部１３、算出部１４、一時リスト１５、端末リスト１６、グループ情報リスト１７、通信コストテーブル１８を備える。なお、端末Ｎ１〜Ｎ６の中の２以上の端末が通信コスト計算機能を備えてもよいし、各端末がそれぞれ通信コスト計算機能を備えてもよい。
【０１０８】
図１４に示すシステムにおいて、端末Ｎ１がグループ情報リスト１７を作成する手順、および各端末との間の通信コストを計算する手順は、基本的に、図３に示すネットワーク調査装置１０により実行される手順と同じである。端末Ｎ１が作成した通信コストテーブル１８の実施例を図１５に示す。
【０１０９】
端末Ｎ１は、定期的に上述の調査を実行し、グループ情報リスト１７および通信コストテーブル１８を更新するようにしてもよい。この構成によれば、端末Ｎ１は、常に、通信コストの低い相手端末を利用してＰ２Ｐデータ配信を行うことができる。例えば、端末Ｎ１のＰ２Ｐ通信の相手端末として端末Ｎ３が指定されているものとする。その後、図１５に示す通信コストテーブル１８が得られたものとする。ここで、図１５に示す例では、端末Ｎ１から端末Ｎ３への通信コストよりも、端末Ｎ１から端末Ｎ２への通信コストの方が低い。したがって、この場合、端末Ｎ１は、通信コストテーブル１８を参照し、Ｐ２Ｐ通信の相手端末を、端末Ｎ３から端末Ｎ２に切り替える。これにより、Ｐ２Ｐ通信のデータ転送効率が改善する。なお、このような状況は、例えば、スイッチングハブＳＷ３に端末Ｎ２が新たに接続されたときに発生し得る。
【０１１０】
＜ハードウェア構成＞
図１６は、ネットワーク調査装置１０のハードウェア構成を示す図である。なお、実施形態のネットワーク調査方法を実行する端末装置も、基本的に、図１６に示す構成を有している。
【０１１１】
図１６において、ＣＰＵ１０１は、メモリ１０３を利用してネットワーク調査プログラムを実行することにより、実施形態のネットワーク調査方法を提供する。記憶装置１０２は、ネットワーク調査プログラムを格納する。なお、記憶装置１０２は、外部記憶装置であってもよい。メモリ１０３は、例えば半導体メモリであり、ＲＡＭ領域およびＲＯＭ領域を含んで構成される。このように、実施形態のネットワーク調査装置は、ＣＰＵおよびメモリを備えるコンピュータにより実現される。
【０１１２】
読み取り装置１０４は、ＣＰＵ１０１の指示に従って可搬型記録媒体１０５にアクセスする。可搬型記録媒体１０５は、例えば、半導体デバイス、磁気的作用により情報が入出力される媒体、光学的作用により情報が入出力される媒体を含むものとする。通信インタフェース１０６は、ＣＰＵ１０１の指示に従って、ネットワークを介してデータを送受信する。入出力装置１０７は、例えば、ユーザからの指示を受け付けるデバイス等に相当する。
【０１１３】
実施形態に係わるネットワーク調査プログラムは、上述したフローチャートの手順を記述しており、例えば、下記の形態で提供される。
（１）記憶装置１０２に予めインストールされている。
（２）可搬型記録媒体１０５により提供される。
（３）プログラムサーバ１１０からダウンロードする。
【０１１４】
そして、上記構成のコンピュータシステムでネットワーク調査プログラムを実行することにより、実施形態に係わるネットワーク調査装置が実現される。すなわち、上記構成のコンピュータシステムで実施形態のネットワーク調査プログラムを実行することにより、送信部１１、受信部１２、検出部１３、算出部１４の一部または全部が実現される。さらに、一時リスト１５、端末リスト１６、グループ情報リスト１７、通信コストテーブル１８は、例えば、メモリ１０３上に作成される。
【０１１５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数のネットワーク機器を介して複数の端末が接続されるネットワークの通信コストを算出するネットワーク調査装置であって、
前記複数の端末へ調査パケットを送信する送信部と、
前記調査パケットに対応する応答パケットを受信する受信部と、
前記受信部による前記応答パケットの受信結果に基づいて、前記複数の端末の中で前記調査パケットを受信していない端末が属する端末グループを検出する検出部と、
前記送信部が前記調査パケットを繰り返し送信したときに前記検出部により検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する算出部、
を有するネットワーク調査装置。
（付記２）
付記１に記載のネットワーク調査装置であって、
前記複数の端末グループの検出頻度をそれぞれ記録するグループ情報リストをさらに備え、
前記算出部は、検出頻度の高い順に抽出した２以上の端末グループ間の包含関係を利用して、端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
（付記３）
付記２に記載のネットワーク調査装置であって、
前記算出部は、予め決められた閾値よりも高い検出頻度の端末グループ間の包含関係を利用して、端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
（付記４）
付記１に記載のネットワーク調査装置であって、
前記算出部は、前記複数の端末グループ間の内包関係に基づいて前記ネットワークのトポロジを表すトポロジ情報を生成し、前記トポロジ情報に基づいて端末間の通信コストを算出する
ことを特徴とするネットワーク調査装置。
（付記５）
付記１〜４のいずれか１つに記載のネットワーク調査装置であって、
前記送信部は、マルチキャストまたはブロードキャストで前記調査パケットを前記複数の端末へ送信する
ことを特徴とするネットワーク調査装置。
（付記６）
付記１〜４のいずれか１つに記載のネットワーク調査装置であって、
前記送信部は、再送機能を有していないプロトコルで前記調査パケットを送信し、
前記受信部は、再送機能を有するプロトコルで前記応答パケットを受信する
ことを特徴とするネットワーク調査装置。
（付記７）
付記１〜４のいずれか１つに記載のネットワーク調査装置であって、
前記送信部は、前記調査パケットと並列にダミーパケットを送信する
ことを特徴とするネットワーク調査装置。
（付記８）
複数のネットワーク機器を介して複数の端末が接続されるネットワークにおいてネットワーク調査装置により実行されるネットワーク調査方法であって、
前記複数の端末へ調査パケットを送信し、
前記調査パケットに対応する応答パケットを受信し、
前記応答パケットの受信結果に基づいて、前記複数の端末の中で前記調査パケットを受信していない端末が属する端末グループを検出し、
前記調査パケットを繰り返し送信したときに検出される複数の端末グループ間の包含関係に基づいて、端末間の通信コストを算出する、
ことを特徴とするネットワーク調査方法。
（付記９）
付記８に記載のネットワーク調査方法であって、
前記ネットワーク調査装置は、前記複数の端末の中の任意の端末により実現される
ことを特徴とするネットワーク調査方法。
【符号の説明】
【０１１６】
１  ルータ
２  サブネットワーク
３  外部ネットワーク
１０  ネットワーク調査装置
１１  送信部
１２  受信部
１３  検出部
１４  算出部
１５  一時リスト
１６  端末リスト
１７  グループ情報リスト
１８  通信コストテーブル
【図１】
0005577968.tif 000002
【図２】
0005577968.tif 000003
【図３】
0005577968.tif 000004
【図４】
0005577968.tif 000005
【図５】
0005577968.tif 000006
【図６】
0005577968.tif 000007
【図７】
0005577968.tif 000008
【図８】
0005577968.tif 000009
【図９】
0005577968.tif 000010
【図１０】
0005577968.tif 000011
【図１１】
0005577968.tif 000012
【図１２】
0005577968.tif 000013
【図１３】
0005577968.tif 000014
【図１４】
0005577968.tif 000015
【図１５】
0005577968.tif 000016
【図１６】
0005577968.tif 000017