(57)【要約】【課題】並列に動作する複数の発見エージェントを用いることによってネットワークのトポロジを発見する方法、システムおよびコンピュータ使用可能媒体を開示する。【解決手段】ターゲット・ネットワーク内の既知ノードに関する情報を含んだＮｏｄｅＬｉｓｔが受信される。用いられる発見エージェントの数「Ｋ」が決められ、この場合に１≦Ｋ≦ノードの総数である。ノードは、各々がグループ識別子を有するノード・グループに分割され、グループ識別子は、各ノード・グループを発見エージェント「Ｍ」にそれぞれ割り当てるが、この場合に１≦Ｍ≦Ｋである。既知ノードおよび発見されたノードに関する情報を保持するためにＧｒａｐｈＬｉｓｔが作成される。ＮｏｄｅＬｉｓｔリストにある各エントリは、各自の割り当てられた発見エージェント「Ｍ」によって処理される。発見エージェントは、ターゲット・ノードへプローブ・メッセージを送信して、発見された周辺ノードのノード識別子を特定する。発見されたノードがＮｏｄｅＬｉｓｔに記載されていない場合には、処理に向けてノード・グループに割り当てられる。ターゲット・ノードと発見された周辺ノードとの接続がＧｒａｐｈＬｉｓｔに記載されていない場合には、追加される。全てのノードおよび接続の情報が「Ｋ」個のノード発見エージェント「Ｍ」によって収集されてＧｒａｐｈＬｉｓｔに記載されたら、ネットワーク・トポロジが生成される。【選択図】図２
2011505778.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの前記トポロジを発見する、コンピュータ実装可能な方法であって、前記方法は、
ノード・エントリの第１リストを受信するステップであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信するステップと、
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すステップと、
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てるステップであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てるステップと、
第１ノードからノード情報を収集するステップであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集するステップと、
前記ノード情報を、ノード・エントリの第２リストに付け加えるステップと、
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理するステップと、
を含む、方法。
【請求項２】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断するステップと、
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するために、前記第２ノードの前記一意のノード識別子に演算を施すステップと、
前記特定されたノード・グループに前記第２ノードを付け加えるステップと、
前記第２ノードからノード情報を収集するステップであって、前記ノード情報は、前記特定されたノード・グループに割り当てられている前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項１に記載の方法。
【請求項４】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項１に記載の方法。
【請求項５】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項１に記載の方法。
【請求項６】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項１に記載の方法。
【請求項７】
プロセッサと、
前記プロセッサに結合されているデータ・バスと、
コンピュータ・プログラム・コードを組み込んでいるコンピュータ使用可能媒体であって、前記コンピュータ使用可能媒体は、前記データ・バスに結合されており、前記コンピュータ・プログラム・コードは、ネットワークの前記トポロジを発見し、さらに、前記プロセッサによって実行可能な命令を含み、前記命令は、以下のこと：
ノード・エントリの第１リストを受信することであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信すること；
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すこと；
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てることであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てること；
第１ノードからノード情報を収集することであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集すること；
前記ノード情報をノード・エントリの第２リストに付け加えること；および
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理すること
を行うように構成されている、コンピュータ使用可能媒体と、
を含む、システム。
【請求項８】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断すること；
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するべく、前記第２ノードの前記一意のノード識別子に演算を施すこと；
前記第２ノードを前記特定されたノード・グループに付け加えること；および
前記第２ノードからノード情報を収集することであって、前記ノード情報は、前記特定されたノード・グループに割り当てられている前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集すること
をさらに含む、請求項７に記載のシステム。
【請求項９】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項７に記載のシステム。
【請求項１０】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項７に記載のシステム。
【請求項１１】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項７に記載のシステム。
【請求項１２】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項７に記載のシステム。
【請求項１３】
コンピュータ・プログラム・コードを組み込んでいるコンピュータ使用可能媒体であって、前記コンピュータ・プログラム・コードは、コンピュータ実行可能命令を含み、前記命令は、以下のこと：
ノード・エントリの第１リストを受信することであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信すること；
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すこと；
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てることであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てること；
第１ノードからノード情報を収集することであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集すること；
前記ノード情報をノード・エントリの第２リストに付け加えること；および
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理すること
を行うように構成されている、コンピュータ使用可能媒体。
【請求項１４】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断すること；
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するべく、前記第２ノードの前記一意のノード識別子に演算を施すこと；
前記第２ノードを前記特定されたノード・グループに付け加えること；および
前記第２ノードからノード情報を収集することであって、前記ノード情報は、前記特定されたノード・グループに割り当てられた前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集すること
をさらに含む、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１５】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１６】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１７】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１８】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１９】
前記コンピュータ実行可能命令は、リモート位置にあるサーバからクライアント・コンピュータへ配置可能である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項２０】
前記コンピュータ実行可能命令は、サービス・プロバイダによって顧客へオンデマンド・ベースで提供される、請求項１３に記載のコンピュータ使用可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、全般的に、コンピュータおよび類似技術の分野に関し、特に、この分野で利用されるソフトウェアに関する。さらに具体的には、本開示の実施形態は、ネットワークのトポロジを発見することに関する。
【背景技術】
【０００２】
インターネットの発達は、近年におけるストリーミング映像、ストリーミング音声などといったアプリケーションの普及ならびにヴォイス・オーバー・インターネット・プロトコル（ＶＯＩＰ：ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）トラフィックの大規模な集積と相まって、ネットワークの帯域幅および可用性への需要を高めてきた。こうした需要を満たすために、追加的なスイッチ、ブリッジ、およびハブが導入されているのであるが、その数は増える一方である。結果として、管理対象となるネットワーク・インフラ量が増加し続けることになる。ネットワーク要素の効果的な管理には、ネットワークのノード群とノード相互間の接続とを表現したものであるネットワーク・トポロジに関する、正確かつ最新の知識が必要になる。ネットワーク要素のトポロジに関する知識は、一般に、事後対応型および事前対応型資源管理、性能評価および最適化、フロー制御、イベント相関、およびサービス障害の根本的原因解析などといった多くのネットワーク管理タスクに不可欠なものである。ところが、ネットワークのサイズが大きくなるにつれて、ネットワーク・トポロジに関する情報を発見することがいっそう困難になる。
【０００３】
ネットワーク・トポロジを発見する手法として、ネットワーク内の各ノードならびにそのノードと他ノードとの接続に関する情報を収集しながらネットワーク要素のグラフ・トラバーサルを行う、発見エージェントを使用することが挙げられる。発見プロセスは、上記のエージェントが、ネットワーク内の一連の既知ノードを与えられることから始まる。例えばシンプル・ネットワーク管理プロトコル（ＳＮＭＰ：ｓｉｍｐｌｅ  ｎｅｔｗｏｒｋ  ｍａｎａｇｅｍｅｎｔ  ｐｒｏｔｏｃｏｌ）クエリなどのプローブを用いて、あるいはルーティング・テーブル情報を読み取ることによって、エージェントは、グラフの既知の部分から流れ出すリンクを発見する。エージェントは次に、そのリンクの反対側にあるノードを見つける。このプロセスは、リンクが一つも残らず探索されるまで続く。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の発見プロセスには、主要な性能指標が２つある。１つ目は、ネットワークを発見するのにかかる時間であり、２つ目は、ネットワーク・ノードへ送信されるプローブ・メッセージの数である。最も効率のよい発見プロセスであれば、プローブ・メッセージは１ノードにつき１つしか送信されないであろう。発見エージェントが１つの場合、ネットワークを発見するのにかかる時間とは、各プローブ・メッセージに対する応答時間を合計したものである。何千あるいは何万ものネットワーク・ノード群から成る大規模ネットワークでは、上述のようなグラフ・トラバーサルにかなりの時間が費やされる可能性がある。複数のエージェントが、並列にグラフを発見しトラバースするように並列に動作することが可能であれば、グラフ・トラバーサルを行うのに必要な時間を減らすことができる。一方で、そのように並列して発見することは、個別のノード１つ１つに向けて複数のプローブ・メッセージを送信するという結果になりかねない。このため、複数のノード発見エージェントが並列に機能することは、適切な調整が行われない限り、ネットワーク・トポロジの発見に費やされる時間を減らすという成果をもたらさない。
【課題を解決するための手段】
【０００５】
本発明は、並列に動作する複数のノード発見エージェントを用いたネットワーク・ノード発見マネージャによってネットワークのトポロジを発見する方法、システム、およびコンピュータ使用可能媒体を含むが、これらに限定されない。多様な実施形態において、ネットワーク・ノード発見マネージャは、ターゲット・ネットワーク内の既知ノード各々の一意のノード識別子を含んだＮｏｄｅＬｉｓｔを取得する。次に、ターゲット・ネットワークのトポロジを発見するべく並列に用いられるノード発見エージェントの数（「Ｋ」）が決められる。ノード発見エージェントについては、１つから既知ノードの総数に至るまで、任意の数のノード発見エージェントを選択することができる（すなわち、１≦Ｋ≦ノードの総数）。既知ノードおよび発見されたノードの双方に関するノード情報を保持するために、ネットワーク・ノードのＧｒａｐｈＬｉｓｔがノード発見マネージャによって作成され、最初は、空に指定される。
【０００６】
既知ノード群を、ノード発見エージェントの数（「Ｋ」）と同数のノード・グループに分割するために、ＮｏｄｅＬｉｓｔ内の一意のノード識別子にハッシュ演算が施される。各ノード・グループに関連している生成ハッシュ値は、その後、ＮｏｄｅＬｉｓｔ内の対応する一意のノード識別子に付け加えられる。ノード・グループに関連しているハッシュ値は、次いでノード発見エージェント「Ｍ」にそれぞれ割り当てられる。このとき、１≦Ｍ≦Ｋである。ノード発見マネージャによって、ＧｒａｐｈＬｉｓｔのノード情報受け取りスレッドが開始され、続いてノード発見エージェント「Ｍ」各々のノード発見スレッドが開始される。次に、未処理のノード識別子エントリがＮｏｄｅＬｉｓｔからポップされ、対応するノード・グループ・ハッシュ値が特定される。そのノード・グループ・ハッシュ値に割り当てられているノード発見エージェント「Ｍ」がビジーである場合、利用可能なノード発見エージェント「Ｍ」に対応するノード識別子エントリがポップされるまで上記のプロセスが繰り返される。
【０００７】
ノード発見エージェント「Ｍ」は、その後、ＳＮＭＰクエリなどのプローブ・メッセージを、ターゲットの既知ノードへ送信する。プローブにより、ターゲット・ノードは周辺ノードに接続されていると判断された場合、周辺ノードとの接続に関する情報が収集される。一実施形態では、接続は物理的接続である。別の実施形態では、接続は論理的である。さらに別の実施形態では、接続は物理的もしくは論理的接続の組み合わせであってもよい。収集されたノードおよび接続の情報が処理されて、発見された周辺ノードの一意のノード識別子が特定される。発見された周辺ノードの一意のノード識別子がＮｏｄｅＬｉｓｔに現在記載されていない場合には、それらの一意のノード識別子にハッシュ演算が施される。次に、結果として生じたグループ・ノード・ハッシュ値を用いて、発見された周辺ノードをノード・グループに割り当て、対応するノード発見エージェント「Ｍ」による処理を行う。ターゲット・ノードと発見された周辺ノードとの接続がＧｒａｐｈＬｉｓｔに現在記載されていない場合には、これらの接続が追加される。このプロセスは、「Ｋ」個のノード発見エージェント「Ｍ」全てが、既知ノードおよび発見された周辺ノードに関する各自のノード発見動作を完了するまで、継続される。「Ｋ」個のノード発見エージェント「Ｍ」によって全てのノード情報が収集されてＧｒａｐｈＬｉｓｔに記載されたら、ネットワーク・トポロジが生成される。上記のことに加え本発明の追加的な目的、特徴および利点が、以下に詳細に記載された説明の中で明らかとなるだろう。
【０００８】
以下の詳細な記載を添付の図面とともに考察すると、本発明の選ばれた実施形態について、および本発明の数々の目的、特徴および得られる利点について、理解することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明を実装し得る例示的なクライアント・コンピュータを示す。
【図２】並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャの間略化されたブロック図である。
【図３】並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャの動作のフローチャートである。
【図４】並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャの動作のフローチャートである。
【図５】並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャの動作のフローチャートである。
【発明を実施するための形態】
【００１０】
並列に動作する複数のノード発見エージェントを用いたネットワーク・ノード発見マネージャによってネットワークのトポロジを発見する方法、システムおよびコンピュータ使用可能媒体が開示される。当業者には分かるように、本発明は、方法、システム、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の実施形態は、完全にハードウェアによって、または完全にソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）によって、あるいはソフトウェアおよびハードウェアを組み合わせた実施形態によって、実現することができる。こうした多様な実施形態は全て、本明細書において一般的に「回路」、「モジュール」または「システム」と称される場合もある。それに加え、本発明は、媒体に組み込まれたコンピュータ使用可能プログラム・コードを有するコンピュータ使用可能ストレージ媒体上のコンピュータ・プログラム製品の形をとることもある。
【００１１】
任意の適切なコンピュータ使用可能またはコンピュータ可読媒体を利用することができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、デバイスあるいは伝搬媒体とすればよいが、これらに限定されない。コンピュータ可読媒体のさらに具体的な例（非網羅的なリスト）としては、以下を挙げることができるであろう：１つ以上のワイヤを有する電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、インターネットまたはイントラネットをサポートしている媒体などの伝送媒体、あるいは磁気ストレージ・デバイス。プログラムは、例えば紙またはその他の媒体の光学式走査などを介して電子的に取り込み、その後必要に応じてコンパイル、解釈、あるいは他の適切な方法で処理してからコンピュータ・メモリに保存することができるため、コンピュータ使用可能またはコンピュータ可読媒体が、プログラムが書き込まれた紙またはその他の適切な媒体である可能性すらあることに留意されたい。本文書の文脈において、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによってあるいはこれらに関連して使用されるように、上記のプログラムを収容、保存、通信、伝搬あるいは搬送することのできる任意の媒体とすればよい。コンピュータ使用可能媒体には、組み込まれたコンピュータ使用可能プログラム・コードを備えてベースバンドであるいは搬送波の一部として伝搬されるデータ信号を含めることもできる。コンピュータ使用可能プログラム・コードは、例えばインターネット、ワイヤライン、光ファイバ・ケーブル、無線周波数（ＲＦ：ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）などを含むがこれらに限定されない任意の適切な媒体を用いて、伝送されるとよい。
【００１２】
本発明の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などの、オブジェクト指向プログラミング言語で書かれているとよい。一方、本発明の動作を実行するコンピュータ・プログラム・コードは同様に、「Ｃ」プログラミング言語または類似のプログラミング言語など、従来の手続き型プログラミング言語で書かれていてもよい。プログラム・コードは、全面的にユーザのコンピュータ上で実行されてもよいし、自立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されてもよいし、部分的にユーザのコンピュータ上で実行され、さらに部分的にリモート・コンピュータ上で実行されてもよいし、あるいは全面的にリモート・コンピュータまたはサーバ上で実行されてもよい。後の方のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）またはワイド・エリア・ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を介してユーザのコンピュータに接続されていてもよいし、あるいはこの接続が、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使いインターネットを介して）設けられてもよい。
【００１３】
以下、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート説明図またはブロック図あるいはその両方を参照して、本発明の実施形態を説明する。当然のことながら、フローチャート説明図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート説明図またはブロック図あるいはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実現することができる。こうしたコンピュータ・プログラム命令は、汎用コンピュータ、特殊用途コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサへ提供されてマシンを形成するとよく、それにより、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の単数または複数のブロックに明示されている機能／作用を実現する手段をもたらすようになる。
【００１４】
上記のコンピュータ・プログラム命令はさらに、コンピュータまたは他のプログラム可能なデータ処理装置を特定の形で機能するように仕向けることが可能なコンピュータ可読メモリに保存されてもよく、それにより、コンピュータ可読メモリに保存された命令が、フローチャートまたはブロック図あるいはその両方の単数または複数のブロックに明示されている機能／作用を実現する命令手段を備えた製品を形成するようになる。
【００１５】
コンピュータ・プログラム命令はさらに、コンピュータまたは他のプログラム可能なデータ処理装置上にロードされて、コンピュータまたは他のプログラム可能な装置上における一連の動作ステップの実施をもたらし、コンピュータ実装されたプロセスを形成してもよく、それにより、コンピュータまたは他のプログラム可能な装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方の単数または複数のブロックに明示されている機能／作用を実現するステップ群を提供するようになる。
【００１６】
図１は、本発明が利用され得る例示的なクライアント・コンピュータ１０２のブロック図である。クライアント・コンピュータ１０２は、システム・バス１０６に結合されたプロセッサ・ユニット１０４を含む。ディスプレイ１１０を制御する映像アダプタ１０８も、同様にシステム・バス１０６に結合されている。システム・バス１０６は、バス・ブリッジ１１２を介して、入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）バス１１４に結合されている。Ｉ／Ｏインターフェース１１６が、Ｉ／Ｏバス１１４に結合されている。Ｉ／Ｏインターフェース１１６は、キーボード１１８、マウス１２０、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ）ドライブ１２２、フレキシブル・ディスク・ドライブ１２４、およびフラッシュ・ドライブ・メモリ１２６などの多様なＩ／Ｏデバイスに対する通信を提供する。Ｉ／Ｏインターフェース１１６に接続されているポートの形式は、コンピュータ・アーキテクチャ技術の当業者に周知の任意のものとすればよく、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどが挙げられるが、これに限定されない。
【００１７】
クライアント・コンピュータ１０２は、システム・バス１０６に結合されているネットワーク・インターフェース１３０を用いネットワーク１２８を介して、サービス・プロバイダ・サーバ１５２と通信することができる。ネットワーク１２８は、インターネットなどの外部ネットワークとしてもよいし、あるいは、Ｅｔｈｅｒｎｅｔ（Ｒ）ネットワークまたは仮想プライベート・ネットワーク（ＶＰＮ：Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの内部ネットワークとしてもよい。ネットワーク１２８を使うことで、クライアント・コンピュータ１０２は、本発明を用いてサービス・プロバイダ・サーバ１５２にアクセスすることができる。
【００１８】
ハード・ドライブ・インターフェース１３２がさらに、システム・バス１０６に結合されている。ハード・ドライブ・インターフェース１３２は、ハード・ドライブ１３４のインターフェースとなる。好適な一実施形態では、ハード・ドライブ１３４は、同様にシステム・バス１０６に結合されているシステム・メモリ１３６にポピュレートする。システム・メモリ１３６にポピュレートするデータとしては、クライアント・コンピュータ１０２のオペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１３８およびソフトウェア・プログラム１４４がある。
【００１９】
ＯＳ１３８は、ソフトウェア・プログラム１４４などの資源に対する透過的なユーザ・アクセスを提供するシェル１４０を含む。一般に、シェル１４０は、ユーザとオペレーティング・システムとの間にインタープリタおよびインターフェースを提供するプログラムである。さらに具体的に言えば、シェル１４０は、コマンド・ライン・ユーザ・インターフェースに入力されたあるいはファイルから得られたコマンドを、実行する。故にシェル１４０（ＵＮＩＸ（Ｒ）においてこのように呼ばれる）は、Ｗｉｎｄｏｗｓ（Ｒ）ではコマンド・プロセッサとも呼ばれており、一般に、オペレーティング・システムのソフトウェア階層の最上位レベルであって、コマンド・インタープリタとして機能する。シェルは、システム・プロンプトを提供し、キーボード、マウスまたは他のユーザ入力媒体により入力されたコマンドを解釈し、さらに、解釈されたコマンド（単数または複数）を、処理に向けてオペレーティング・システムの適切な下位レベル（例えば、カーネル１４２）へ送信する。シェル１４０は一般に、テキスト・ベースのライン指向のユーザ・インターフェースであるが、一方で本発明は、例えばグラフィカル、音声、ジェスチャなどその他のユーザ・インターフェース・モードをサポートすることもできる。
【００２０】
図に示すように、ＯＳ１３８はさらに、ＯＳ１３８の下位レベルの機能を備えたカーネル１４２を含む。下位レベルの機能には、ＯＳ１３８の他の部分およびソフトウェア・プログラム１４４によって要求される基本的なサービスが含まれ、例えば、メモリ管理、プロセスおよびタスク管理、ディスク管理、ならびにマウスおよびキーボード管理などが挙げられる。
【００２１】
ソフトウェア・プログラム１４４は、ブラウザ１４６と電子メール・クライアント１４８とを含むとよい。ブラウザ１４６は、ワールド・ワイド・ウェブ（ＷＷＷ：Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）クライアント（すなわち、クライアント・コンピュータ１０２）がハイパーテキスト転送プロトコル（ＨＴＴＰ：ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）メッセージングを用いてインターネットに対しネットワーク・メッセージを送受信できるようにするプログラム・モジュールおよび命令を含み、それによりサービス・プロバイダ・サーバ１５２との通信を可能にしている。ソフトウェア・プログラム１４４は、さらに、ノード発見マネージャ１５０と、１つ以上のノード発見エージェント１５２とを含む。ノード発見マネージャ１５０および１つ以上のノード発見エージェント１５２は、本明細書で下記に示す図２乃至５に記載されるプロセスを実現するコードを含む。一実施形態では、クライアント・コンピュータ１０２は、ノード発見マネージャ１５０および１つ以上のノード発見エージェント１５２を、サービス・プロバイダ・サーバ１５２からダウンロードすることができる。
【００２２】
クライアント・コンピュータ１０２に図示するハードウェア要素は、網羅的であることを意図したものではなく、むしろ、本発明によって使用されるコンポーネントを強調するための代表例である。例えば、クライアント・コンピュータ１０２には、磁気カセット、デジタル多用途ディスク（ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ベルヌーイ・カートリッジなどといった、別のメモリ・ストレージ・デバイスを含めてもよい。これらおよびその他の変形例は、本発明の精神および範囲のうちにあるものとされる。
【００２３】
図２は、並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャの間略化されたブロック図である。多様な実施形態において、ネットワーク管理ホスト２０２には、ネットワーク・ノード発見マネージャ１５０と１つ以上のネットワーク・ノード発見エージェント１５２とが含まれる。ネットワーク・ノード発見動作は、ネットワーク・ノード発見マネージャ１５０が、ターゲット・ネットワーク２０８の既知のネットワーク・ノードに関するノード情報を含んだＮｏｄｅＬｉｓｔ２０４を取得することで始まる。ＮｏｄｅＬｉｓｔ２０４に含まれているノード情報には、ネットワーク２０８の各既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４および「Ｄ」２１６の、一意のノード識別子が含まれる。
【００２４】
ターゲット・ネットワーク２０８のトポロジ発見に使用されるノード発見エージェント１５２の数（「Ｋ」）が、ノード発見マネージャ１５０によって決められる。１つのノード発見エージェントから既知ノードの総数に至るまで、任意の数のノード発見エージェントを選択することができる（すなわち、１≦Ｋ≦ノードの総数）。当然のことながら、１つのノード発見エージェントでは、何千ものノードを含むネットワークのトポロジを発見するには不適当な場合がある。反対に、何千ものノードの各々について別個のノード発見エージェントを用いれば、恐らく、ネットワーク管理ホスト２０２に過度の処理オーバーヘッドを課すことになるであろう。既知ノードおよび発見されたノードの双方に関するノード情報を保持するために、ネットワーク・ノードのＧｒａｐｈＬｉｓｔ２０６がノード発見マネージャ１５０によって作成され、最初は、空に指定される。
【００２５】
既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４および「Ｄ」２１６を、ノード発見エージェント１５２の数（「Ｋ」）と同数のノード・グループに分割するために、ＮｏｄｅＬｉｓｔ２０４内の一意のノード識別子にハッシュ演算が施される。例として、既知ノード「Ａ」２１０および「Ｂ」２１２の一意のノード識別子に施されるハッシュ演算は、ノード・グループ「１」２２２に割り当てられたグループ・ハッシュ値を生じさせる。同様に、既知ノード「Ｃ」２１４および「Ｄ」２１６の一意のノード識別子に施されるハッシュ演算は、ノード・グループ「２」２２４に割り当てられたノード・グループ・ハッシュ値を生じさせる。ノード・グループ「１」２２２および「２」２２４に関連している生成ハッシュ値は、その後、ＮｏｄｅＬｉｓｔ２０４内の対応する一意のノード識別子に付け加えられる。ノード・グループ「１」２２２および「２」２２４に関連しているハッシュ値は、次に、ノード発見エージェント「Ｍ」１５２にそれぞれ割り当てられる。このとき、１≦Ｍ≦Ｋである。ノード・グループ・ハッシュ値が各ノード発見エージェント「Ｍ」１５２にそれぞれ割り当てられたら、ネットワーク・ノード発見マネージャ１５０によって、「Ｋ」個のノード発見エージェント１５２の並列動作が開始される。ノード発見マネージャ１５０は、ＧｒａｐｈＬｉｓｔ２０６のノード情報受け取りスレッドを開始し、続いてノード発見エージェント「Ｍ」１５２各々のノード発見スレッドを開始する。
【００２６】
その後、未処理のノード識別子がＮｏｄｅＬｉｓｔ２０４からポップされ、対応するノード・グループ・ハッシュ値が特定される。当該ノード・グループ・ハッシュ値に割り当てられているノード発見エージェント「Ｍ」１５２がビジーであると判断された場合には、ビジーでないノード発見エージェント「Ｍ」１５２に対応するノード識別子エントリがポップされるまで、上記のプロセスが繰り返される。ビジーでないノード発見エージェント「Ｍ」１５２に対応するノード・グループ・ハッシュ値を有するノード識別子エントリがポップされたら、ターゲットの既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４、「Ｄ」２１６を、処理に向けて、そのノード識別子エントリの対応するノード発見エージェント「Ｍ」１５２に割り当てる。その後、ノード発見エージェント「Ｍ」１５２は、ＳＮＭＰクエリおよび当業者にはよく知られたその他の方式といったプローブ・メッセージを、ターゲットの既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４および「Ｄ」２１６へ送信する。
【００２７】
次に、既知のターゲット・ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４および「Ｄ」２１６が１つ以上の未知の周辺ノード「Ｅ」２１８、「Ｆ」２２０に接続されているかどうかの判断が下される。ターゲット・ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４、「Ｄ」２１６が周辺ノード「Ｅ」２１８、「Ｆ」２２０に接続されていると判断された場合、プローブは、ターゲット・ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４、「Ｄ」２１６から、周辺ノード「Ｅ」２１８、「Ｆ」２２０との接続に関する情報を含んだノード情報を収集する。一実施形態では、接続は物理的接続である。別の実施形態では、接続は論理的である。さらに別の実施形態では、接続は物理的もしくは論理的接続の組み合わせであってもよい。収集されたノード情報が処理されて、発見された周辺ノード「Ｅ」２１８および「Ｆ」２２０の一意のノード識別子が特定される。
【００２８】
一例として、ノード・グループ「２」２２４に割り当てられたノード発見エージェント「Ｍ」１５２が、周辺ノードとの接続に関して既知ノード「Ｄ」２１６を調べる。収集されたノード情報は、既知ノード「Ｄ」２１６が既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４のほか、未知の、すなわち発見されたノード「Ｅ」２１８および「Ｆ」２２０に接続されていることを示している。そこで、発見された周辺ノード「Ｅ」２１８および「Ｆ」２２０の一意のノード識別子がＮｏｄｅＬｉｓｔ２０４に現在記載されているかどうかの判断が下される。記載されていない場合、発見された周辺ノードそれぞれの一意のノード識別子に、本明細書にて詳述されるハッシュ演算が施されてハッシュ値が生成され、このハッシュ値を用いることで、発見された周辺ノード「Ｅ」２１８および「Ｆ」２２０を、処理に向けて、指定されているノード発見エージェント「Ｍ」１５２へ割り当てることができる。一例として、発見された周辺ノード「Ｅ」２１８のハッシュ値は、この周辺ノードがノード・グループ「１」２２２に割り当てられること２２６を示す。同様に、発見された周辺ノード「Ｆ」２２０のハッシュ値は、この周辺ノードがノード・グループ「２」２２４に割り当てられること２２８を示す。その後、ターゲット・ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４、「Ｄ」２１６と、発見された周辺ノード「Ｅ」２１８、「Ｆ」２２０との１つ以上の接続が、ＧｒａｐｈＬｉｓｔ２０６に記載されているかどうかの判断が下される。記載されていない場合、これらの接続がＧｒａｐｈＬｉｓｔ２０６に追加される。上記のプロセスは、「Ｋ」個のノード発見エージェント「Ｍ」１５２全てが、既知ノード「Ａ」２１０、「Ｂ」２１２、「Ｃ」２１４、「Ｄ」２１６ならびに発見された周辺ノード「Ｅ」２１８、「Ｆ」２２０に関する各自のノード発見動作を完了するまで、継続される。全てのノード情報がＧｒａｐｈＬｉｓｔ２０６に記載されたら、ネットワーク・トポロジが生成され、ネットワーク・ノード発見動作は終了する。
【００２９】
図３乃至５は、並列に動作するネットワーク・ノード発見エージェントを用いてネットワークのトポロジを発見するネットワーク・ノード発見マネージャのフローチャートである。本発明の一実施形態では、ステップ３０２にて、ネットワーク・ノード発見動作が始まる。ステップ３０４にて、ネットワーク・ノード発見マネージャがターゲット・ネットワークに関する情報を取得し、この情報には、当該ネットワーク内の既知ノード各々の一意のノード識別子が含まれている。次にステップ３０６にて、ターゲット・ネットワークのトポロジ発見に用いられるノード発見エージェントの数（「Ｋ」）が、ノード発見マネージャによって決められる。例えば、１つのノード発見エージェントから既知ノードの総数に至るまで、任意の数のノード発見エージェントを選択することができる（すなわち、１≦Ｋ≦ノードの総数）。当然のことながら、１つのノード発見エージェントでは、何千ものノードを含むネットワークのトポロジを発見するには不十分な場合がある。反対に、何千ものノード各々について個別のノード発見エージェントを用いれば、恐らく、ネットワーク管理サーバに過度の処理オーバーヘッドを課すことになるであろう。
【００３０】
次にステップ３０８にて、ノード発見マネージャは、既知ノードの最初のセットを、関連している一意のノード識別子とともに、ＮｏｄｅＬｉｓｔに割り当てる。ステップ３１０にて、既知ノードおよび発見されたノードの双方に関するノード情報を保持することになるＧｒａｐｈＬｉｓｔが、ノード発見マネージャによって作成され、最初は、空に指定される。その後ステップ３１２にて、既知ノード群をノード発見エージェントの数（「Ｋ」）と同数のノード・グループに分割するために、ＮｏｄｅＬｉｓｔ内の一意のノード識別子にハッシュ演算が施される。次いでステップ３１４にて、生成ハッシュ値の各々が、ＮｏｄｅＬｉｓｔにおいて一意のノード識別子にそれぞれ関連付けられる。各ノード・グループに関連しているハッシュ値は、その後ステップ３１６にて、ノード発見エージェント「Ｍ」に割り当てられるが、この場合に、１≦Ｍ≦Ｋである。グループ・ハッシュ値が各ノード発見エージェント「Ｍ」に割り当てられたら、ステップ３１８にて、「Ｋ」個のノード発見エージェントの並列動作が開始される。ノード発見マネージャによって、ステップ３２０にて、ＧｒａｐｈＬｉｓｔのノード情報受け取りスレッドが開始され、続いてステップ３２２にて、ノード発見エージェント「Ｍ」各々のノード発見スレッドが開始される。
【００３１】
その後ステップ３２４にて、ＮｏｄｅＬｉｓｔにある全てのエントリが処理済みであるかどうかの判断が下される。全てのエントリが処理済みであれば、ステップ３２６にて、「Ｋ」個のノード発見エージェント全てがトポロジ発見動作を完了したかどうかの判断が下される。全てのエントリが処理済みでなければ、ステップ３２８にて、未処理のノード識別子がＮｏｄｅＬｉｓｔからポップされて、対応するノード・グループ・ハッシュ値が特定される。その後ステップ３３０にて、当該ノード・グループ・ハッシュ値に割り当てられているノード発見エージェント「Ｍ」がビジーであるかどうかの判断が下される。ビジーである場合には、ビジーでないノード発見エージェント「Ｍ」に対応するノード識別子エントリがポップされるまで、上記のプロセスをステップ３２８から始めて繰り返す。ポップされたノード識別子エントリが、ビジーでないノード発見エージェント「Ｍ」に対応するノード・グループ・ハッシュ値を有することがステップ３３０にて判断されたら、ターゲット・ノードを、処理に向けてノード発見エージェント「Ｍ」に割り当てる。その後ステップ３３４にて、ノード発見エージェント「Ｍ」が、ＳＮＭＰクエリおよび当業者にはよく知られたその他の方式といったプローブ・メッセージを、ターゲット・ノードへ送信する。
【００３２】
次にステップ３３６にて、ターゲット・ノードが１つ以上の周辺ノードに接続されているかどうかの判断が下される。ステップ３３６にて当該ノードはネットワークの端点であると判断された場合、あるいは当該ノードは他のいずれのノードにも接続されていないと判断された場合には、そのノード識別子は、ステップ３６４にて、処理済みノードとしてＮｏｄｅＬｉｓｔ内でマークされる。その後、上記のプロセスを、ＮｏｄｅＬｉｓｔにある全エントリが処理済みであるかどうかの判断が下されるステップ３２４から始めて繰り返す。一方、ステップ３３６にてターゲット・ノードは周辺ノードに接続されていると判断された場合、プローブは、当該ノードから、周辺ノードとの接続に関する情報を含んだノード情報を収集する。一実施形態では、接続は物理的接続である。別の実施形態では、接続は論理的である。さらに別の実施形態では、接続は物理的もしくは論理的接続の組み合わせであってもよい。次にステップ３４０にて、収集されたノード情報がＮｏｄｅＣｏｎｎｅｃｔｉｏｎリストに変換され、次いでこのＮｏｄｅＣｏｎｎｅｃｔｉｏｎリストが、ノード発見マネージャへ戻される。
【００３３】
次にステップ３４２にて、ＮｏｄｅＣｏｎｎｅｃｔｉｏｎリストにある全てのノード接続エントリが処理済みであるかどうかの判断が下される。ステップ３４２にて全てのノード接続エントリが処理済みではないと判断されたら、ステップ３４４にて、周辺ノード・エントリがポップされて、その一意のノード識別子がステップ３４４にて特定される。次にステップ３４６にて、上記の一意のノード識別子がＮｏｄｅＬｉｓｔに現在記載されているかどうかの判断が下される。記載されている場合には、その後ステップ３４８にて、その周辺ノードが処理済みであるかどうかの判断が下される。
【００３４】
ＮｏｄｅＬｉｓｔにてエントリとして表される、発見された周辺ノードは、対応するノード・グループ・ハッシュ値を有することになり、このノード・グループ・ハッシュ値によって、所定のノード発見エージェント「Ｍ」による処理に向けて割り当てられることになるのは、当業者には明らかであろう。ノード発見エージェント「Ｍ」がカレント・エージェントであるかその他のエージェントであるかにかかわらず、上記のノード・エントリは、まだステップ３２８でポップされていない、すなわちステップ３３２でノード発見エージェント「Ｍ」に割り当てられていないものである。従って、更なる処理動作は、ひとたびこの周辺ノード・エントリがポップされればステップ３２８から始まって実施されることになるので、本プロセスのこの時点では必要ない。故に、ステップ３４８にてその周辺ノードが処理済みではないと判断されたら、上記のプロセスをステップ３４２から始めて繰り返す。
【００３５】
一方、ステップ３４８にて、その周辺ノード・エントリがＮｏｄｅＬｉｓｔにおいて処理済みとしてマークされていると判断された場合には、ステップ３５０にて、ターゲット・ノードと周辺ノードとの１つ以上の接続が、物理的であれ論理的であれ、ＧｒａｐｈＬｉｓｔに記載されているかどうかの判断が下される。当然のことながら、たとえ、ターゲット・ノードおよび周辺ノードの双方が以前に処理されていたとしても、それらが処理された時以降に新たな接続が構築されることはあり得る。そのような新たな接続は、ネットワークのトポロジを変えてしまい、その精度に悪影響を与えかねない。従って、ステップ３５０にて、ターゲット・ノードと周辺ノードとの１つ以上の接続がＧｒａｐｈＬｉｓｔに記載されていないと判断された場合には、それらをステップ３５２にてＧｒａｐｈＬｉｓｔに追加する。その他の場合には、上記のプロセスをステップ３４２から始めて繰り返す。
【００３６】
ステップ３４６にて周辺ノードの一意のノード識別子がＮｏｄｅＬｉｓｔに現在記載されていないと判断された場合、ステップ３５４にて、その一意のノード識別子にハッシュ演算が施される。本明細書にて詳細に記載するように、ハッシュ演算は、発見された周辺ノードを既存のノード・グループに関連付けるのに用いられるハッシュ値を生成する。ひいては、ノード・グループ・ハッシュ値は、発見された周辺ノードを、処理に向けて所定のノード発見エージェント「Ｍ」へ割り当てることにもなることが分かる。そのため、ステップ３５６にて、ハッシュ値を周辺ノードの一意のノード識別子に追加し、これを後続処理に向けてエントリとしてＮｏｄｅＬｉｓｔに加える。
【００３７】
本明細書にて上述したように、発見された周辺ノードをＮｏｄｅＬｉｓｔにおいて表す、対応するノード・グループ・ハッシュ値は、発見された周辺ノードを所定のノード発見エージェント「Ｍ」による処理に向けて割り当てる結果をもたらす。そのため、更なるノード接続処理動作は、ひとたび周辺ノード・エントリがポップされればステップ３２８から始まって実施されることになるので、本プロセスのこの時点では必要ない。そこで、上記のプロセスを、ステップ３４２から始めて繰り返す。ステップ３２６にて全てのノード発見エージェント「Ｍ」がそれぞれのノード発見動作を完了したと判断されたら、ステップ３５８にて、ＧｒａｐｈｙＤｉｓｃｏｖｅｒｙリストに含まれているノード情報からネットワーク・トポロジが生成される。ステップ３５８にてネットワーク・トポロジが生成されたら、ステップ３６０にて、ネットワーク・ノード発見動作が終了する。
【００３８】
図面のフローチャートおよびブロック図は、本発明の多様な実施形態によるシステム、方法およびコンピュータ・プログラム製品の、あり得る実装のアーキテクチャ、機能、および動作を示すものである。この点に関連し、フローチャートまたはブロック図の各ブロックが、明示された論理機能（単数または複数）を実現する１つ以上の実行可能命令を含んだモジュール、セグメント、またはコードの一部を表すこともある。さらに、一部の代替的な実装では、ブロックに示された機能が、図面に示された順序から外れて生じ得ることにも留意する必要がある。例えば、関与する機能次第で、連続して示された２つのブロックがほぼ同時に実行されることもあり、時にはそれらのブロックが逆の順序で実行されることもある。さらに、ブロック図またはフローチャート説明図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート説明図あるいはその両方の複数ブロックの組み合わせは、明示された機能または作用を実行する特殊用途向けハードウェアベースのシステムによって、あるいは特殊用途向けハードウェアとコンピュータ命令との組み合わせによって実現することが可能であることも分かる。
【００３９】
本明細書にて使用される専門用語は、特定の実施形態を説明することを目的としているものに過ぎず、本発明を限定しようとするものではない。本明細書で使用される「１つの（ａ）、（ａｎ）」および「その（ｔｈｅ）」という単数形は、そうではないことが文脈によって明確に指示されない限り、複数形をも同様に含めようとするものである。さらに当然のことながら、用語「含む」または「含んでいる」あるいはその両方は、本明細書での使用に当たり、提示される特徴、整数値、ステップ、動作、要素またはコンポーネントあるいはその全ての存在を明示するものであるが、１つ以上のその他の特徴、整数値、ステップ、動作、要素、コンポーネントまたはこれらのグループあるいはその全ての存在または追加を排除するものではない。
【００４０】
以下の請求項における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、作用および同等物は、請求されているその他の要素と組み合わされて特に請求されているように当該機能を果たすあらゆる構造、材料または行為を包含しようとするものである。説明および記述を目的として本発明に関する記載を提示してきたが、網羅的であること、または開示された形態に本発明を限定することは意図されていない。多数の変更および変形が、本発明の範囲および精神から逸脱することなく、当業者に明らかとなるであろう。実施形態は、本発明の原理および実際的応用を最もよく説明するために、加えて他の当業者が、検討される個々の用途に適するように多様な変更を伴った多様な実施形態に向けて本発明を理解できるようにするために、選択され記載されたものである。
【００４１】
このように、本願の発明を詳細に、発明の好適な実施形態に関連して記載してきたが、当然のことながら、添付の請求項にて定義される本発明の範囲を逸脱することなく、変更および変形が実現可能である。
【図１】
2011505778.tif 000003
【図２】
2011505778.tif 000004
【図３】
2011505778.tif 000005
【図４】
2011505778.tif 000006
【図５】
2011505778.tif 000007
【手続補正書】
【提出日】平成22年9月14日(2010.9.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークのトポロジを発見する、コンピュータ実装可能な方法であって、前記方法は、
ノード・エントリの第１リストを受信するステップであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信するステップと、
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すステップと、
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てるステップであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てるステップと、
第１ノードからノード情報を収集するステップであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集するステップと、
前記ノード情報を、ノード・エントリの第２リストに付け加えるステップと、
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理するステップと、
を含む、方法。
【請求項２】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断するステップと、
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するために、前記第２ノードの前記一意のノード識別子に演算を施すステップと、
前記特定されたノード・グループに前記第２ノードを付け加えるステップと、
前記第２ノードからノード情報を収集するステップであって、前記ノード情報は、前記特定されたノード・グループに割り当てられている前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項１に記載の方法。
【請求項４】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項１に記載の方法。
【請求項５】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項１に記載の方法。
【請求項６】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項１に記載の方法。
【請求項７】
プロセッサと、
前記プロセッサに結合されているデータ・バスと、
コンピュータ・プログラム・コードを組み込んでいるコンピュータ使用可能媒体であって、前記コンピュータ使用可能媒体は、前記データ・バスに結合されており、前記コンピュータ・プログラム・コードは、ネットワークのトポロジを発見し、さらに、前記プロセッサによって実行可能な命令を含み、前記命令は、以下のこと：
ノード・エントリの第１リストを受信することであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信すること；
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すこと；
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てることであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てること；
第１ノードからノード情報を収集することであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集すること；
前記ノード情報をノード・エントリの第２リストに付け加えること；および
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理すること
を行うように構成されている、コンピュータ使用可能媒体と、
を含む、システム。
【請求項８】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断すること；
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するべく、前記第２ノードの前記一意のノード識別子に演算を施すこと；
前記第２ノードを前記特定されたノード・グループに付け加えること；および
前記第２ノードからノード情報を収集することであって、前記ノード情報は、前記特定されたノード・グループに割り当てられている前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集すること
をさらに含む、請求項７に記載のシステム。
【請求項９】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項７に記載のシステム。
【請求項１０】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項７に記載のシステム。
【請求項１１】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項７に記載のシステム。
【請求項１２】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項７に記載のシステム。
【請求項１３】
コンピュータ・プログラム・コードを組み込んでいるコンピュータ使用可能媒体であって、前記コンピュータ・プログラム・コードは、コンピュータ実行可能命令を含み、前記命令は、以下のステップ：
ノード・エントリの第１リストを受信するステップであって、前記ノード・エントリの各々は既知ノードを表す一意のノード識別子を含む、受信するステップ；
前記ノード・エントリを複数のノード・グループに分割するために、前記ノード・エントリの前記一意のノード識別子に演算を施すステップ；
第１ノード発見エージェントを第１ノード・グループに割り当て、第２ノード発見エージェントを第２ノード・グループに割り当てるステップであって、前記第１および第２ノード発見エージェントは、ノードからノード情報を収集するように動作可能である、割り当てるステップ；
第１ノードからノード情報を収集するステップであって、前記ノード情報は、前記第１ノード発見エージェントによって収集され、前記第１ノードと第２ノードとの間の接続を記述する、収集するステップ；
前記ノード情報をノード・エントリの第２リストに付け加えるステップ；および
ネットワーク・トポロジを生成するべく、ノード・エントリの前記第２リストを処理するステップ
をコンピュータに実行させるように構成されている、コンピュータ使用可能媒体。
【請求項１４】
前記第２ノードの前記ノード識別子が前記第１リストに記載されているかどうかを判断するステップ；
記載されていない場合には、前記第２ノードの、ノード・グループへの割り当てを特定するべく、前記第２ノードの前記一意のノード識別子に演算を施すステップ；
前記第２ノードを前記特定されたノード・グループに付け加えるステップ；および
前記第２ノードからノード情報を収集するステップであって、前記ノード情報は、前記特定されたノード・グループに割り当てられた前記ノード発見エージェントによって収集され、前記第２ノードと第３ノードとの間の接続を記述する、収集するステップ
をさらに含む、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１５】
前記一意のノード識別子にハッシュ演算が施されてハッシュ値が生成され、前記ハッシュ値は、前記ノード・エントリを複数のノード・グループに分割するのに使用されるように動作可能である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１６】
前記第１ノードと第２ノードとの間の前記接続は物理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１７】
前記第１ノードと第２ノードとの間の前記接続は論理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１８】
前記第１ノードと第２ノードとの間の第１接続は物理的であり、第２接続は論理的である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項１９】
前記コンピュータ実行可能命令は、リモート位置にあるサーバからクライアント・コンピュータへ配置可能である、請求項１３に記載のコンピュータ使用可能媒体。
【請求項２０】
前記コンピュータ実行可能命令は、サービス・プロバイダによって顧客へオンデマンド・ベースで提供される、請求項１３に記載のコンピュータ使用可能媒体。
【国際調査報告】
2011505778.tif 000008
2011505778.tif 000009