(57)【特許請求の範囲】
【請求項１】
データネットワークにおけるノードにおいてデータを処理する処理エージェントであって、該データネットワークは、複数のノードと、該複数のノードの少なくとも一部であって、マルチキャストグループを形成する少なくとも一部とを接続し、該処理エージェントは、
該マルチキャストグループに関連した複数のエントリを格納するように作用可能なデータストアと、
該マルチキャストグループのメンバーに該複数のエントリのそれぞれを広めるように作用可能であるロジックと、
を備え、
前記処理エージェントが前記マルチキャストグループにおいてランデブーノードとして指定されたことを指示するように作用可能なロジックをさらに備え、前記ランデブーノードとしての指定は、前記処理エージェントが前記マルチキャストグループのメンバーに前記複数のエントリのそれぞれを広めることを指示するものである
処理エージェント。
【請求項２】
前記マルチキャストグループのメンバーでない外部ノードから、クエリを実行する要求を受信するように作用可能であるロジックであって、該クエリが整合基準を特定する、ロジックと、
前記データストア内の前記複数のエントリに対して該クエリを実行するように作用可能であるロジックと、
前記外部ノードに、該整合基準を満たす一つ以上のエントリを広めるように作用可能であるロジックと
をさらに備える、請求項１に記載の処理エージェント。
【請求項３】
第１のノードからの要求であって、第１のエントリを追加する要求に応答して、前記データストア内の前記複数のエントリに該第１のエントリを追加するように作用可能であるロジックをさらに備える、請求項１に記載の処理エージェント。
【請求項４】
前記広めるように作用可能であるロジックは、前記第１のノードからの要求であって、前記複数のエントリに前記第１のエントリを追加する要求に応答して、前記マルチキャストグループを形成する該複数のノードに、該第１のエントリを自動的に広めるようにさらに作用可能である、請求項３に記載の処理エージェント。
【請求項５】
第１のノードからの要求であって、前記データストア内の前記複数のエントリのうちの第１のエントリを破棄する要求に応答して、該第１のエントリを除去するロジックをさらに備える、請求項１に記載の処理エージェント。
【請求項６】
前記マルチキャストグループを形成する前記複数のノードに、前記第１のエントリが破棄されたことを指示するように作用可能であるロジックをさらに備え、該指示が、前記第１のノードからの要求であって、該第１のエントリを破棄する要求に応答する、請求項５に記載の処理エージェント。
【請求項７】
前記複数のエントリの内の特定のエントリを発行したソースが、前記マルチキャストグループのメンバーでない、請求項１に記載の処理エージェント。
【請求項８】
前記複数のエントリの内の特定のエントリを発行したソースが、前記マルチキャストグループのメンバーである、請求項１に記載の処理エージェント。
【請求項９】
前記複数のエントリのそれぞれが、他のエントリに対する自身の送達優先順位を特定する優先順位に関連している、請求項１に記載の処理エージェント。
【請求項１０】
データネットワークにおける選択されたノードに結合された処理エージェントの動作方法であって、該データネットワークは、複数のノードと、該複数のノードの少なくとも一部であって、該選択されたノードを含んでおり、マルチキャストグループを形成する少なくとも一部とを接続し、該方法は、
該マルチキャストグループに関連した複数のエントリを該処理エージェントにおいて格納するステップと、
該マルチキャストグループのメンバーに該複数のエントリのそれぞれを広めるステップと
を包含し、
前記選択されたノードは前記マルチキャストグループでランデブーノードとして指定され、
前記ランデブーノードとしての指定は、前記選択されたノードが前記マルチキャストグループのメンバーに前記複数のエントリのそれぞれを広めることを指示するものである方法。
【請求項１１】
前記マルチキャストグループのメンバーでないノードからの要求であって、前記処理エージェントにおいて格納された前記複数のエントリに対してクエリを実行する要求を受信するステップであって、該クエリが整合基準を特定する、ステップと、
該マルチキャストグループのメンバーでない該ノードに、該整合基準を満たす一つ以上のエントリを広めるステップと
をさらに包含する、請求項１０に記載の方法。
【請求項１２】
第１のノードからの要求であって、第１のエントリを追加する要求に応答して、前記処理エージェントにおいて格納された前記複数のエントリに該第１のエントリを追加するステップをさらに包含する、請求項１０に記載の方法。
【請求項１３】
前記第１のノードからの要求であって、前記第１のエントリを追加する要求に応答して、前記マルチキャストグループを形成する前記複数のノードに、該第１のエントリを自動的に広めるステップをさらに包含する、請求項１２に記載の方法。
【請求項１４】
第１のノードからの要求であって、前記処理エージェントにおいて格納された前記複数のエントリのうちの第１のエントリを破棄する要求に応答して、該第１のエントリを除去するステップをさらに包含する、請求項１０に記載の方法。
【請求項１５】
前記マルチキャストグループを形成する前記複数のノードに、前記処理エージェントにおいて格納された前記複数のエントリのうちの前記第１のエントリが破棄されたことを指示するステップをさらに包含し、該指示するステップが、前記第１のノードからの要求であって、該第１のエントリを破棄する要求に応答して実行される、請求項１４に記載の方法。
【請求項１６】
前記複数のエントリの内の特定のエントリを発行したソースが、前記マルチキャストグループのメンバーでない、請求項１０に記載の方法。
【請求項１７】
前記複数のエントリの内の特定のエントリを発行したソースが、前記マルチキャストグループのメンバーである、請求項１０に記載の方法。
【請求項１８】
前記複数のエントリのそれぞれが、他のエントリに対する自身の送達優先順位を特定する優先順位に関連している、請求項１０に記載の方法。
【請求項１９】
特定のノードから、前記処理エージェントにおいて格納された前記複数のエントリに対してクエリを実行する要求を受信するステップであって、該クエリは、一つ以上のエントリを発行したソースを特定する、ステップと、
該特定のノードに、第１のノードに対する変更を非同期的に通知するステップと
をさらに包含し、該特定のノードに非同期的に通知するステップが、該第１のエントリを発行したソースが該第１のエントリを変更したことに応答して、実行される、請求項１０に記載の方法。
【請求項２０】
データを伝送するデータネットワークであって、該データネットワークは、複数のノードと、該複数のノードの少なくとも一部であって、マルチキャストグループを形成する少なくとも一部とを接続し、該データネットワークは、複数の処理エージェントを備え、
該複数の処理エージェントのそれぞれは、
該マルチキャストグループに関連した複数のエントリを格納するように作用可能なデータストアと、
該マルチキャストグループのメンバーに該複数のエントリのそれぞれを広めるように作用可能であるロジックと、
前記複数の処理エージェントの特定の処理エージェントが前記マルチキャストグループにおいてランデブーノードとして指定されたことを指示するように作用可能なロジックであって、前記ランデブーノードとしての指定は、前記特定の処理エージェントが前記マルチキャストグループのメンバーに前記複数のエントリのそれぞれを広めることを指示するものであるロジックと、
を備える、
データネットワーク。
【請求項２１】
該マルチキャストグループ内の該複数のノードのそれぞれにおいて、グループ状態を含むデータストアを維持するステップと、
前記ランデブーノードにおいて状態アップデートを受信するステップと、
該状態アップデートを用いて、該ランデブーノードにおいて、該データストア内の該グループ状態をアップデートするステップと、
該ランデブーノードから、該マルチキャストグループ内の他のノードに該状態アップデートを伝搬するステップと、
該マルチキャストグループ内の他のノードにおいて、該データストア内の該グループ状態をアップデートするステップと
を包含する、請求項１０に記載の方法。
【請求項２２】
前記複数のノードのうちの１つである接続ノードが、前記マルチキャストグループに加えられ、特定のデータストアを有しており、前記方法が、
前記グループ状態を該接続ノードに伝搬するステップと、
該グループ状態を用いて、該接続ノードにおいて該特定のデータストアをアップデートするステップと
をさらに包含する、請求項２１に記載の方法。
【請求項２３】
前記グループ状態を伝搬するステップが、該グループ状態を、前記マルチキャストグループ内の特定のノードから前記接続ノードに伝搬するステップを包含する、請求項２２に記載の方法。
【請求項２４】
前記グループ状態を伝搬するステップが、該グループ状態を、前記マルチキャストグループ内の特定のノードであって、前記接続ノードの最も近傍にある特定のノードから、該接続ノードに伝搬するステップを包含する、請求項２３に記載の方法。
【請求項２５】
前記グループ状態を伝搬するステップが、該グループ状態を、前記マルチキャストグループ内の特定のノードから前記接続ノードに伝搬するステップを包含し、該特定のノードが、ネットワークルーティングプロトコルから決定される、請求項２３に記載の方法。
【請求項２６】
前記状態アップデートを伝搬するステップが、信頼できるプロトコルを用いて該状態アップデートを伝搬するステップを包含する、請求項２１に記載の方法。
【請求項２７】
前記ランデブーノードにおける前記データストアが特定の複数のエントリを有し、該特定の複数のエントリのそれぞれのエントリが、該エントリを発行したソースを識別する、請求項２１に記載の方法。
【請求項２８】
信頼できるプロトコルを使用して前記複数のエントリの内の特定のエントリを広めるように作用可能なロジックをさらに備える請求項１に記載の処理エージェント。
【請求項２９】
状態アップデートを第２の処理エージェントから受信するように作用可能なロジックと、
前記データストアにおいて前記状態アップデートのための情報を格納するように作用可能なロジックと、
前記マルチキャストグループにおいて１つ以上のノードに前記状態アップデートを伝搬するように作用可能なロジックと、をさらに備える請求項１に記載の処理エージェント。
【請求項３０】
前記状態アップデートは前記ランデブーノード以外の前記マルチキャストグループ内の特定のノードから受信される請求項２１に記載の方法。
【発明の詳細な説明】
【０００１】
（関連出願の相互参照）
本願は、１９９９年６月１日に出願した同時係属中の米国仮特許出願第６０／１３７，１５３号の優先権を主張する。本願は、１９９９年６月１日に出願した、タイトル「ＰＥＲＦＯＲＭＩＮＧ  ＭＵＬＴＩＣＡＳＴ  ＣＯＭＭＵＮＩＣＡＴＩＯＮ  ＩＮ  ＣＯＭＰＵＴＥＲ  ＮＥＴＷＯＲＫＳ  ＢＹ  ＵＳＩＮＧ  ＯＶＥＲＬＡＹ  ＲＯＵＴＩＮＧ」の米国特許出願第０９／３２３，８６９号（以下、”ＭｃＣａｎｎｅ’８６９”と参照）および、１９９９年８月２７日に出願した、タイトル「ＳＹＳＴＥＭ  ＦＯＲ  ＢＡＮＤＷＩＤＴＨ  ＡＬＬＯＣＡＴＩＯＮ  ＩＮ  Ａ  ＣＯＭＰＵＴＥＲ  ＮＥＴＷＯＲＫ」の米国特許出願第０９／３８４，８６５号（以下、”ＭｃＣａｎｎｅ’８６５”と参照）に関する。これらの出願の各々を、本願において詳細に記載されているように、参考として援用する。
【０００２】
（発明の分野）
本発明は、一般に、コンピュータネットワークの分野に関し、より詳細には、コンピュータネットワークで使用するためのマルチポイント転送プロトコルに関する。
【０００３】
（発明の背景）
インターネットの大衆化が進むにつれて、インターネットを介して、マルチメディア情報などの情報の「マルチキャスティング」を備えることが望ましい。マルチキャスティングは、データネットワーク上のホストからそのデータネットワーク上の選択された複数のホストに情報を伝送するプロセスである。この「選択された複数」は、しばしば、「マルチキャストグループ」と呼ばれる。
【０００４】
データのユニキャスト（ｕｎｉｃａｓｔ）送達はインターネットの基本構成要素として多大な成功を収めている一方で、マルチキャスティングはかなり複雑であることが示され、マルチキャスティングが広いエリアにわたって展開することを妨げる多くの技術的な障壁が残っている。例えば、ドメイン間のマルチキャストのルーティングは、まだうまく実現されておらず、現在の形態のマルチキャストはインターネットの全体にわたって広く展開できないかもしれないと考えられる多くの理由が存在する。他方、１つの管理されたネットワークドメインに限定されている場合、マルチキャスティングは、設定および管理がかなり容易になり、あるアプリケーションに対して、許容される性能を提供し得る。
【０００５】
現在のマルチキャスティング技術に関連する１つの課題は、１つの管理されたネットワークドメインにおいてさえ、グループメンバーが行き来した時に、情報が全ての現在のグループメンバーに確実に送達されることを保証する送達機構はないことである。さらに、一般的には、マルチキャストグループの全体にわたって情報を効率的にルーティングすることを保証する送達機構はない。そのような送達機構がないために、マルチキャスティングの使用は、信頼できる送達と効率的なルーティングとが必要とされないアプリケーションにおける使用に大きく制限されている。
【０００６】
（発明の要旨）
本発明は、データネットワーク内のマルチポイントインフラストラクチャトランスポート（ＭＩＮＴ）プロトコルをインプリメントするための方法および装置を提供する。ＭＩＮＴプロトコルは、データネットワークの単一ノードと他の全てのインフラストラクチャ、ならびに、特定のグループに属する、データネットワークのエンドホストノードとの間に、信頼性情報送達機構を提供する。本発明は、スパース（ｓｐａｒｓｅ）モードＰＩＭ状すなわちコアベースツリー（ＣＢＴ）のＩＰマルチキャストルーティングプロトコル、または、他のマルチキャストプロトコルを用いて形成されたグループ（このマルチキャストグループは、関連したランデブーポイントまたはノードを有する）で使用するのに適している。そのようなプロトコルの例は、ＭｃＣａｎｎｅ’８６９に記載され、そこで、オーバーレイマルチキャストネットワーク（ＯＭＮ）の記載で開示される。
【０００７】
本発明のある実施形態は、データネットワーク内でデータを配信するための方法を提供する。データネットワークは複数のノードを接続し、その複数のノードの少なくとも一部がマルチキャストグループを形成する。マルチキャストグループのノードの１つは、ランデブーノードとして指定される。その方法は、マルチキャストグループにおけるノードの各々でグループ状態を含むデータ格納部を保持するステップを包含する。ランデブーノードで受信された状態アップデートを使用して、ランデブーノードのデータ格納部内のグループ状態をアップデートする。状態アップデートは、信頼性プロトコルを用いて、ランデブーノードからマルチキャストグループ内の他のノードに伝搬される。最終的に、マルチキャストグループ内の他のノードでのデータ格納部内のグループ状態をアップデートする。
【０００８】
本発明の別の実施形態において、データネットワーク内のあるノードでデータを処理するための処理エージェントが提供される。データネットワークは複数のノードを接続し、その複数のノードの少なくとも一部がマルチキャストグループを形成する。マルチキャストグループのノードの１つは、ランデブーノードとして指定される。処理エージェントは、状態メモリと、プロトコルプロセッサとを含む。プロトコルプロセッサは、データネットワーク内の選択されたノードに結合されたロジックを有し、かつ、信頼性プロトコルを用いたデータチャネルを介してデータネットワーク内の他の処理エージェントでデータを伝送し、受信するためのロジックを有する。プロトコルプロセッサはまた状態メモリに結合され、データを、それぞれ、状態メモリに格納し、状態メモリから取り出すためのロジックを有する。
【０００９】
（特定の実施形態の説明）
ある実施形態において、本発明は、データネットワーク内のＭＩＮＴプロトコルをインプリメントし、データネットワーク内のセンダーノードとマルチキャストグループのメンバー、インフラストラクチャおよび／またはデータネットワーク内のエンドホストとの間の信頼性情報送達機構を提供するための方法および装置を提供する。
【００１０】
ＭＩＮＴを用いて、センダーは、データネットワーク内に、かつ、データネットワークにわたって発行された名前の付けられた値をマルチキャストグループに関連付け、それにより、他のグループメンバーおよびネットワークエンティティが、分散状態のこの「データベース」をクエリする。「ミント（ｍｉｎｔ）」とよばれるデータベース内の各タプルは、そのオーナ（そのマルチキャストのセンダー）、名前およびマルチキャストグループによって、識別される。このミントは、アクティブグループ参加者でネットワークの全ての部分に確実に広められる。好ましくは、ミントは、ソースからそのグループのアクティブレシーバのセットまでのパスに沿って入るルータにのみ流れる。この結果、ＭＩＮＴ情報の効率的なルーティングを生じ、これは、効率的なルーティングおよび配信にかまわずに情報をネットワーク全体に流すことによって動作する、従来のシステムに対して利点がある。エンドホストは、それぞれのオーナによって発行された全ての既知のミントを発見し、かつ／または、列挙するためのマルチキャストシステムにクエリし得る。今度は、ミント値は、名前／オーナを参照してクエリし得、クエリを行なうエージェントは、オーナが値を変更する場合に、非同期的に通知され得る。
【００１１】
ある実施形態において、特定のミントが、システム特有の機能のために保存される。システム特有の機能とは、例えば、グループをアプリケーションのタイプにマッピングするか、または、グループの属性を説明する機能である。それにより、グループは、ネットーワークの異なる部分で局地的に規定されたトラフィッククラスにマッピングされ得る。例えば、伝送されたデータストリームが、アプリケーションレベル処理および／またはトラフィック管理を必要とする場合、具体的な「セットアップミント」は、必須の情報を提供し、データの伝送を進める。
【００１２】
別の実施形態において、情報ソースは、ＭＩＮＴプロトコルを使用して、グループ内に入れられたデータストリームに注釈をつけたミントを発行し得る。該当するグループに対するマルチキャストツリーの各ノードに位置付けられた、専用パケット転送エンジンは、ストリームの注釈に基づいて、受信したデータストリームを処理する。例えば、そのパケット転送エンジンは、ストリームの注釈に基づいて、データストリームにネートワーク帯域を割り当て得る。
【００１３】
図１Ａは、本発明で使用するのに適したコンピュータシステム１を示す。コンピュータシステム１は、ディスプレイスクリーン５を有するディスプレイ３を含む。キャビネット７は、ディスクドライブ、ＣＤＲＯＭドライブ、ディスプレイアダプタ、ネットワークカード、ランダムアクセスメモリ（ＲＡＭ）、中央処理ユニット（ＣＰＵ）および他の構成要素、サブシステム、デバイスなどの標準的なコンピュータ構成要素（図示せず）を収容する。ボタン１３を有するマウス１１およびキーボード９などのユーザ入力デバイスが示される。他のユーザ入力デバイス（トラックボール、タッチスクリーン、ディジタイザータブレット等）が使用されてもよい。一般に、コンピュータシステムは、本発明で使用するのに適したコンピュータシステムのあるタイプ（例えば、デスクトップコンピュータ）の例示にすぎない。コンピュータは、多くの異なるハードウェア構成要素で構成され得、多くの寸法およびスタイル（例えば、ラップトップ、パームトップ、ペントップ、サーバ、ワークステーション、メインフレーム）で作製され得る。本明細書で記載される処理を実行するのに適した任意のハードウェアプラットフォームは、本発明で使用するのに適している。
【００１４】
図１Ｂは、コンピュータ内に一般に見出され得るサブシステム（例えば、コンピュータ１のキャビネット７）を図示する。図１Ｂにおいて、サブシステムは内部バス２２と直接的にインターフェースをとる。サブシステムは、入力／出力（Ｉ／Ｏ）コントローラ２４、システムランダムアクセスメモリ（ＲＡＭ）２６、中央処理ユニット（ＣＰＵ）２８、ディスプレイアダプタ３０、シリアルポート４０、固定ディスク４２、ネットワークインターフェースアダプタ４４を含む。バス２２の使用により、サブシステムの各々は、サブシステム間でのデータ転送、そして、最も重要にはＣＰＵへのデータ転送が可能になる。外部デバイスは、バス２２を介して、バス上のサブシステムとインターフェースをとることによって、ＣＰＵまたは他のサブシステムと連絡し得る。モニタ４６はディスプレイアダプタ３０を介してバスに接続する。マウスなどの相対ポインティングデバイス（ＲＰＤ）４８はシリアルポート４０を介して接続する。キーボード５０などのいくつかのデバイスは、メインデータバスを用いることなく直接的な手段（例えば、割り込みコントローラおよび関連レジスタ（図示せず）によって、ＣＰＵと連絡し得る。
【００１５】
図１Ａに示される外部の物理的構成と同様に、多くのサブシステム構成が可能である。図１Ｂは、ある適切な構成の例示にすぎない。図１Ｂに示されるものとは異なる、サブシステム、構成要素またはデバイスを追加してもよい。図１Ｂに示されるサブシステムの全てを用いることなく、適切なコンピュータシステムを達成することができる。例えば、ＣＤＲＯＭドライブ、グラフィックアクセラレータなどの他のサブシステムは、本発明のシステムの性能に影響を与えることなく、その構成において含まれ得る。
【００１６】
図２は、本発明に従って構築されたデータネットワーク２００の一部を示す。ネットワーク２００は、ルーティングノード（またはネイティブルータ）２０２、２０４、２０６、２０８、２１０および２１２を含む。ノードは、２１４、２１６および２１８に示されるリンクのような双方向リンクによって相互接続されている。ネットワーク２００には、情報ソース２２０および２２２が含まれる。ネットワーク２００にはまた、さらなる双方向リンクを介してルーティングノードに接続されたクライアント２２４、２２６、２２８および２３０が示されている。ネットワーク２００は、ルーティングノード２０４および２１０が、それぞれ、実際には、ドメインＸおよびドメインＹのような他のネットワークドメインの一部であり得ることを示す。従って、ネットワーク２００は、本発明の単なる１つの実施形態を示す。当業者には、本発明の他の実施形態が他のタイプのネットワークアーキテクチャまたはトポロジーに用いられ得ることが明らかである。
【００１７】
ネットワーク２００の各ノードにはＭＩＮＴ処理エージェント２３２、２３４、２３６、２３８、２４０および２４２が接続されている。ＭＩＮＴ処理エージェントは、ルーティングノードの外部にあるように示されているが、ＭＩＮＴ処理エージェントは、各ルーティングノード内に組み込まれていてもよい。ＭＩＮＴ処理エージェントは、ＭＩＮＴプロトコルをインプリメントするために、それらＭＩＮＴ処理エージェントに関連付けられたノードを介して情報を受信し、かつ伝送する。ネットワーク２００は、例えば、スパースモードＰＩＭまたはコア型ツリーのようなＩＰマルチキャストルーティングプロトコルにおけるマルチキャストグループを形成することができる。このマルチキャストグループは、関連付けられたランデブーポイントまたはノードを有する。
【００１８】
図３は、本発明に従って構築されたＭＩＮＴ処理エージェント３００の例示的な実施形態を示す。ＭＩＮＴ処理エージェント３００は、図２に示されるＭＩＮＴ処理エージェント２３２のようなＭＩＮＴ処理エージェントを示す。ＭＩＮＴ処理エージェント３００は、ＭＩＮＴプロトコルをインプリメントするためにデータネットワーク２００において用いられ得る。ＭＩＮＴ処理エージェントは、ＭＩＮＴプロトコルモジュール（ＰＭ）３０２、データ格納部３０４およびオプションのパケット転送エンジン３０６を備える。
【００１９】
ＭＩＮＴ−ＰＭ３０２は、リンク３０８を介してデータネットワークのルーティングノードと接続する。ＭＩＮＴ−ＰＭは、リンク３０８を用いてルーティングノードと通信し、ＭＩＮＴチャネルを形成する。このＭＩＮＴチャネルによって、データネットワーク内のＭＩＮＴ処理エージェントが互いに通信することができる。例えば、ＭＩＮＴチャネルを用いてＭＩＮＴ処理エージェント間、および／またはＭＩＮＴ処理エージェントとクライアント、情報ソースおよびデータネットワークにおける任意の他のエンドホストとの間で情報を伝送し受信する。データ格納部３０４はＭＩＮＴ−ＰＭに接続しており、分散された状態のデータベースを形成するミント（ｍｉｎｔ）情報を格納する。
【００２０】
オプションのパケット転送エンジン３０６は、ＭＩＮＴ処理エージェントを用いてＭｃＣａｎｎｅ  ’８６５に記載されるようにミント情報に基づいてトラフィックストリームを調整する場合に用いられ得る。パケット転送エンジン３０６は、ネットワーク２００上で伝送されたデータパケット３１０を受信し、受信されたデータパケットを処理して、ネットワーク上で伝送するための出力データストリーム３１２を形成する。パケット転送エンジン３０６はＭＩＮＴ−ＰＭ３０２およびデータ格納部３０４に接続し、パケット転送エンジン３０６がどのようにして受信されたデータパケットを処理するかを決定するために用いられる情報を交換する。例えば、パケット転送エンジン３０６がデータ格納部３０４から取り出されたミント情報を用いて、受信されたデータパケット３１０用にデータネットワーク上での帯域幅割り当てを決定する。別の実施例では、パケット転送エンジン３０６がデータ格納部３０４から取り出されたミント情報を用いて、ミント情報に含まれる優先情報に基づいて、出力データストリーム３１２内のパケットをスケジューリングする。
【００２１】
ＭＩＮＴ処理エージェント３００の別の実施形態では、パケット転送エンジン３０６はＭＩＮＴ処理エージェントから省略されており、付随するネイティブルータ内にあると考えられる。このような実施形態では、ＭＩＮＴ処理エージェントは、データネットワーク内でミントを処理し伝送するために用いられるが、ネットワーク内で伝送されたデータパケットについては何ら処理しない。従って、ＭＩＮＴ処理エージェントは、ＭＩＮＴを処理するタスク、およびデータネットワーク内でＭＩＮＴの確実な送達を提供するタスクに制限される。
【００２２】
（ＭＩＮＴプロトコル）
ＭＩＮＴプロトコルは、グループ指向型の確実な情報送達メカニズムをデータネットワーク内のノードのサブセットに提供する。これらノードは、対応するグループを支援するマルチキャストルーティングツリーに広がっている。さらに、エンドホストソースは、ＭＩＮＴ命令を該当するグループのランデブーポイントへと向けることによって、ネットワーク内にデータを発行し得る。ＭＩＮＴプロトコルは、あるメカニズムを提供する。これにより発行された１組の値は、メンバーが行き来する際に、広がるツリーにあるアクティブノードに関連付けられた全てのＭＩＮＴ処理エージェントで維持される。さらなるＭＩＮＴプロトコルの機能は、任意のネットワーククライアントまたは管理エージェントによるクエリを提供し、発行された最新の１組の値を入手する。
【００２３】
ＭＩＮＴチャネルは、各アクティブマルチキャストグループに関連付けられる。ＭＩＮＴチャネルは、複数のＭＩＮＴ命令を含むＭＩＮＴアクセスプロトコルに従うＴＣＰを用いた確実なコントロール接続であり得る。アプリケーションは、ＭＩＮＴ命令をランデブーポイントに向けることによって、「ミント」と呼ばれる名前を付けられたデータタプルをＭＩＮＴチャネル内へと発行し、次いで、そのランデブーポイントにあるＭＩＮＴ−ＰＭは、このようなミントの各々が、そのグループについての分散型ツリーに付随するルーティングノードに関連付けられたすべてのＭＩＮＴ処理エージェントへ伝搬されることを保証する。これによりエッジアプリケーションは、ネットワーク内へ状態を発行し、アプリケーションレベルの処理エージェント（すなわち、プラグイン）と通信することができる。このアプリケーションレベルの処理エージェントは、ネットワーク内にあってもよいし、またはＭＩＮＴ処理エージェントの一部として設けられてもよい。例えば、パケット転送エンジンは、ＭＩＮＴチャネルを介してエッジアプリケーションと通信し得るアプリケーションレベルの処理エージェントを実行して、ネットワークの帯域幅をエッジアプリケーションに割り当て得る。ＭＩＮＴプロトコルはまた、サブツリーが行き来する際に、動的様態で広がったツリーのパスに沿ってミントを広めるために、明確な通信抽出化を提供する。ルータまたはノードが、ブランチを所与のグループの広がったツリーに接続するときは常に、そのグループのすべてのミントがその新たに作成されたブランチに沿って流れるかまたは伝搬される。その結果、状態は、新たに接続されたブランチに沿って全てのＭＩＮＴ処理エージェントへと確実に伝搬される。
【００２４】
（データモデル）
ＭＩＮＴプロトコルによって仮定されるデータモデルは、名前タプルまたはミントの固定データ格納部である。オリジンノード（またはオーナ）がネットワーク内にミントを発行し得るか、またはＭＩＮＴアクセス命令を用いて固定データ格納部にその添付を破棄し得る。ノードが失敗するか、またはネットワークから切断される場合には、（該当するグループについて）マルチキャストルーティングツリーの対応するレッグがティヤーダウンされると、その発行されたバインディングのすべてをその関連付けられたデータ格納部から削除する。
【００２５】
ミントが固定であるため、ＭＩＮＴ処理エージェントは、ネットワーク内に発行されたすべてのミントを維持するためにリソースを使いきってしまう可能性がある。この場合、ミント発行プロセスは失敗する。この失敗をエンドクライアントに通知するために、特別な予備エラーミントがそのグループに添付され、全ての既存のミントよりも高い優先順位を有する。
【００２６】
静的優先順位がミントに割り当てられ得る。分散型ツリーのレッグが行き来する際に、この割り当てによって、ＭＩＮＴ処理エージェント間でミントが伝播されると、ミントの相対的オーダリングが制御される。各ミントは、構造上の階層名によって名前が付けられ、それによってプレフィックス、一般表現、または他の再検討技術によってミントの分類を再検討するためのリッチメカニズムを提供する。ＭＩＮＴ値が任意の２値データであるのに対して、ＭＩＮＴデータ名は、テキストストリングとして表される。
【００２７】
図４は、ＭＩＮＴ処理エージェント３００のデータ格納部３０４で生じ得る例示的なＭＩＮＴ情報４００を示す。ＭＩＮＴ情報４００は、任意のタイプの情報を表すミントパラメータのタプルを含む。例えば、ミントパラメータは、データネットワークにおいて伝送される情報を示し得る。ＭＩＮＴ情報４００の特定の実施形態を図４に示すが、当業者には、本発明の範囲を逸脱することなく、他のタイプのデータを表すＭＩＮＴ情報の他の実施形態が可能であることが明らかである。
【００２８】
ＭＩＮＴ情報４００は、グループ４０１、オリジン４０２、名前４０４、値４０６および優先順位４０８を有するミントを含む。データネットワークにおけるノードは１つ以上のマルチキャストグループと関連付けられているので、ＭＩＮＴ情報は、１つ以上のマルチキャストグループと関連付けられたミントパラメータを含み得る。図４に示されるように、オリジンは、いくつかの名前の付けられた値に関連付けられ得る。ＭＩＮＴ情報４００の特定の実施形態において、名前と値との対によって映像データストリームが説明される。当業者には、名前と値との対が任意のタイプの情報を表し得ることが明らかである。
【００２９】
（名前空間）
ＭＩＮＴデータ格納部にインデックス付けされた名前は、名前空間を自然に形成する。各グループは、自律名前空間に関連付けられる（すなわち、各グループのミントは全ての他のグループと完全に独立である）。リッチかつ効率的なクエリをこれらの名前空間にわたって支援するために、名前は構造かされているが、なおかつ簡単な形式で表される。特に、名前は階層名前空間を形成し、ちょうどＵｎｉｘ（登録商標）ファイルシステムが、ディレクトリ名を階層へと並べ替え、「／」区切り記号を用いて、ツリー型階層中のパスの相対的な要素を示すのと同様に、階層の境界は、「／」区切り記号によって示される。
【００３０】
階層名前空間の表現は、マッチングするクエリを既存の名前空間に対して実行させることができる。例えば、広告掲載サービスを構築するために、放送システムは、プレフィックス「／ａｄ／ｉｎｆｏ」という形の一連のミントとして、広告情報を発行し得る。従って、クライアントは、「ｇｌｏｂｂｉｎｇ」マッチ（例えば、「／ａｄ／ｉｎｆｏ／*」）を用いて、このプレフィックスの形のどの名前が存在するかを調べるためにデータベースにクエリしたいと望むかもしれない。同様に、ネットワークエージェントは、「／ａｄ／ｉｎｆｏ／*」にマッチする任意のミントが作成されるか、消去されるか、または修正される場合にイベントコールバックが起こり得るように、この情報が変更する場合は常に通知されることを望むかもしれない。
【００３１】
（プロトコルモジュール）
ネットワークにおける各ミント処理エージェントは、ＭＩＮＴプロトコルモジュール（ＭＩＮＴ−ＰＭ）を含む。このＭＩＮＴプロトコルモジュールは、データ格納部を維持しており、そのエージェントに既知であるすべての発行されたミントのオリジン、グループおよび名前によってインデックス付けされている。ミントの発行元は、オリジンまたはオーナと呼ばれる。オリジンがデータネットワーク内のどこかに位置され得る間に、そのグループのランデブーポイントを介して特定のグループ用のミントを発行する必要がある。
【００３２】
本発明の１実施形態において、各ミントは、不規則に発行され、リフレッシュプロセスはない。このことが可能であるのは、（その元となるルーティングプロトコルと関連する）ＭＩＮＴプロトコルによってグループ状態は、グループに広がるツリーを介して一貫して維持され得るためである。例えば、いくつかのルーティングプロトコルにおいて失敗が生じると、ルーティングシステムは、ティヤーダウンし、次いで必要に応じてグループを再確立することによって応答する。その結果、該当するグループに添付されたミントすべてが、グループが再構築される際に、ＭＩＮＴプロトコルによって伝搬される。従って、グループ状態が一貫して管理され、リフレッシュ／タイムアウトプロセスを必要としない。
【００３３】
任意の１つのノードがネットワークへ送ることができるミント状態の量は、構築可能なパラメータによって制限される。任意の所与のグループに関連付けられた各タプルに格納されるデータは以下の要素を含む。
【００３４】
【表１】
0004685299.tif 000002
各ノードのデータ格納部は、証明可能に、各グループ用にランデブーポイントで維持されるデータ格納部へと集められるので、シーケンス番号またはタイムスタンプを必要としない。
【００３５】
プロトコルメッセージには３つのタイプがある。
・発行メッセージ：このメッセージによりＭＩＮＴが作成され、該当するグループが及ぶ放送ツリーにわたって伝搬されて維持される。
・破棄メッセージ：このメッセージによりオリジンに代わってミントバインディングが明示的にティヤーダウンされる。
・クエリメッセージ：このメッセージによりＭＩＮＴデータ格納部が名前および値情報を求めてクエリされ得る。
【００３６】
これらのメッセージは、ピアＭＩＮＴ−ＰＭと交換され、以下の抽出形式を有する。
【００３７】
【表２】
0004685299.tif 000003
（発行メッセージ）
本発明の信頼性は、グループメンバーシッププロトコルと提携する新規の送達メカニズムに基づく。ＭＩＮＴプロトコルはグループ単位ごとに実行されるので、該当するグループを一般的に「グループＧ」とよぶ。ＭＩＮＴ―ＰＭが発行されたミントを受信するピアは、一般的に、ランデブーポイントに戻る最も短い反転パスルートである。パスは元のルーティングプロセスに依存するので、これは常に当てはまるわけではないかもしれない。このピアは「ペアレント」ピアと呼ばれ得る。ちょうどよい時の任意の地点で、グループＧの広がったツリーにおける変化とともに生じ得るルーティングの変化の結果として、発行されたミントは、異なるペアレントから受信され得る。これらのミントのすべては、ＭＩＮＴ―ＰＭに関連したデータ格納部において保持される。
【００３８】
グループＧなどのグループ内のピアに関連するＭＩＮＴ―ＰＭは、ユニキャストの形態でＭＩＮＴチャネルを介してお互いにミントを通信する。ＭＩＮＴチャネルは、信頼性のある接続、例えば、元のルータのピアリング関係に適合する信頼性ＴＣＰ接続である。
【００３９】
ＭＩＮＴ―ＰＭがそのペアレントのピアと関連するＭＩＮＴ―ＰＭから新たなミントを受信する場合、ミントをそのデータ格納部に入力し、ミントのコピーを、Ｇに対して現在のマルチキャストの広がったツリーに関する他のピアに関連するＭＩＮＴ―ＰＭに転送する。例えば、ＭＩＮＴ−ＰＭは、そのペアレントのピアから発行されたミントを受信し、そのデータ格納部を更新し、次いで、ミントを、ペアレントとして、他のＭＩＮＴ―ＰＭに発行する。この動作は、広がったツリーへの任意の変更に対して自動的に実行されることに留意されたい。目標とすることは、グループＧに対する広がったツリーに関するピアに関連するすべてのＭＩＮＴ―ＰＭが、それぞれのペアレントのデータ格納部に格納された全てのミントを確実に配信することを不変に保持することである。ここで、最終的なペアレントは、そのグループに対するランデブーポイントと関連するＭＩＮＴ―ＰＭである。
【００４０】
ＭＩＮＴ―ＰＭがすでにそのテーブル内にあるミントを（そのペアレントから）受信する場合、データの値が異なっているかどうかを知るためにチェックする。もし、異なっていないのであれば、（ネットワーク管理プロトコルを介してアクセス可能な）エラーカウンタをインクリメントする。なぜなら、そのピアは冗長なアップデータを送信しないことが知られているべきであるからである。その値が異なる場合、ＭＩＮＴ―ＰＭはそのデータ格納部を更新し、その変化を（ペアレントのピアとしてミントに再発行することによって）、Ｇに対する現在のマルチキャストの広がったツリーに関するチャイルドのピアのそれぞれに伝搬する。結局、ＭＩＮＴ−ＰＭは、ペアレントであったかのように、別の発行コマンドをピアＭＩＮＴ―ＰＭに発行する。
【００４１】
ＭＩＮＴ―ＰＭがグループＧに対するペアレントではないピアからミントを受信する場合、そのピアのためのシャドウテーブルにミントアップデートを記録する。そのピアが後にＧのペアレントになる場合、このシャドウテーブルは実際のデータ格納部（および変更テーブルが通常のミント到達、変更または削除として取り扱われる間に生じる任意の差異）になる。
【００４２】
グループＧノードがグラフト（ｇｒａｆｔ）メッセージを受信する場合、要求ノードはグループＧにグラフトされ、グループＧに関連する全てのミントは要求ノードに関連するＭＩＮＴ―ＰＭに送信される。そのミントは、（タプル内の優先順位フィールドにしたがった）静的順位の順番に送信される。すべての既知のミントの集合は、後のミントの到達および他の状態変更に対して自動的に形成される必要がある。ノードがグループＧ内の別のノードからプルーン（ｐｒｕｎｅ）メッセージを受信する場合、何かをする必要はなく、ダウンストリームピアがグループＧに対するすべてのミントを忘れると推定しなければならない。
【００４３】
ＭＩＮＴ―ＰＭがグループＧに対するマルチキャストの広がったツリーに関しないピアからミントを受信する場合、アップデートは無視され、エラーカウンタをインクリメントする。ピアがグループに以前に接続されていない場合、ピアはグループＧに対するミントを送信することができないので、これはエラー状態である。
【００４４】
（破棄メッセージ）
グループＧに対するミントが（ランデブーポイントに送信された破棄メッセージを介して）オリジンノードによって削除される場合、ランデブーポイントのＭＩＮＴ―ＰＭは、データ格納部から対応するミントを取り除き、Ｇに対する現在のマルチキャストの広がったツリーに関するチャイルドのピアのそれぞれに破棄メッセージを伝搬する。
【００４５】
ＭＩＮＴ―ＰＭはペアレントのピアからのミントに対する破棄メッセージを受信する場合、（オーナおよび名前によってインデックス付けされた）データ格納部を調べる。同じオーナおよび名前を有するタプルが存在する場合、データ格納部から対応するミントを取り除き、Ｇに対する現在のマルチキャストの広がったツリーに関するチャイルドのピアのそれぞれに破棄メッセージを伝搬する。その名前およびオーナを有するミントが全く存在しない場合、エラーカウンタはエラー状態を示すようにインクリメントされる。破棄メッセージを非ペアレントピアから受信する場合、シャドウテーブルを更新し、非ペアレントピアがペアレントになる場合に使用する。ミントの破棄に関連する任意の事象は、ミントがデータ格納部から除去される場合、ディスパッチされる。
【００４６】
（トランザクションの実施例）
以下の説明は、本発明にしたがったＭＩＮＴプロトコルを用いた本トランザクションの実施例を示す。このトランザクションの実施例は、ネットワークグループがルーティングプロトコルによって形成され得ると想定する。ルーティングプロトコルは、ランデブーポイント（ＲＰ）を使用して、グループに対するアンカーとして機能する。一般的なネットワーク動作の間、各ルーティングノードは、特定のグループおよびその関連ＲＰに直接または間接にアクセスし得る。
【００４７】
図５は、本発明によるデータネットワーク２００および関連するＭＩＮＴ処理エージェントを示す。ネットワーク２００において、グループに対するＲＰとしてルーティングノード２０６を有するマルチキャストグループＡが形成される。グループＡは、ルーティングノード２０２、２０６、２０８および２０４を含む。ルーティングノード２０２、２０６、２０８および２０４は、これらのノードのダウンストリームに位置する他のグループＡメンバーに情報をルーティングする。本発明は、単一のドメイン内に形成されるグループで、または、グループＡ内のドメインＸのノード２０４を内包することによって示されるように、複数のドメイン内のノードから形成されるグループで使用されるのに適している。
【００４８】
図６は、本発明にしたがって、図５のネットワーク２００の動作の方法６００に対するブロック図を示す。ブロック６０２において、方法６００は、図５に示されるように、ノード２０６に位置付けられるグループＡに対するＲＰを有するグループＡの形成から開始する。
【００４９】
ブロック６０４において、情報ソース２２０は、グループＡにミントを発行する。例えば、ある実施形態において、情報ソース２２０は、グループＡ、ノード２０２に発行コマンド（ミント情報を含む）を伝送する。元のルーティングプロトコルの一部として、ノード２０２は、ノード２０６がグループＡに対するＲＰであることに気づく。結果として、ノード２０２は、最終的に受信されるＲＰの方に発行命令をルーティングする。別の実施形態において、情報ソース２０２は、ディレクトリサービスを用いて、例えば、グループＡに対するＲＰの位置を決定するために、ネットワークにクエリし得る。ＲＰの位置を知ると、情報ソースは、発行コマンドを直接ＲＰに伝送し得る。トランザクションパス５０２は、ソース２２０からＲＰまでの発行コマンドのルーティングを示す。
【００５０】
ブロック６０６において、ＲＰは、トランザクションパス５０４によって示されるように、ＭＩＮＴ処理エージェント２３６に転送される発行コマンドを受信する。
【００５１】
ブロック６０８において、ＭＩＮＴ処理エージェント２３６は、そのデータ格納部を新たなミント情報で更新する。この動作は、ＭＩＮＴ―ＰＭ３０２がＭＩＮＴチャネル３０８を介して発行ミントを受信した場合に発生し、そのミント情報を用いて、関連するデータ格納部３０４を更新する。
【００５２】
ブロック６１０において、更新されたミント情報を、グループＡの他のＭＩＮＴ処理エージェント、すなわち、エージェント２３２、２３４および２４０に伝搬する。これを達成するために、ＲＰに関連するＭＩＮＴ―ＰＭは、新たなミント情報を、ＭＩＮＴチャネルを介して、グループＡ内の他のＭＩＮＴ処理エージェントに配信する。ＭＩＮＴ処理エージェント２３６は新たなＭＩＮＴ情報をグループＡに発行し、元のルーティングプロトコルによって決定されるように、そのアップデートはグループＡのルーティングに続く。例えば、トランザクションパス５０６は、ＭＩＮＴ処理エージェント２３６からの新たに発行されたミント情報の、グループＡ内の他のＭＩＮＴ処理エージェントへのルーティングを示す。上述するようなミント配信規則にしたがって、一貫性が保持される。結果として、情報ソース２２０によって発行されたミント情報が、グループＡ内のＭＩＮＴ処理エージェントのすべてに確実に配信され得る。
【００５３】
図７は、グループＡのメンバーシップへの変化が示される、図５のネットワーク２００を示す。例えば、グループＡに対するメンバーシップが、線７５０によって指定されるグループから線７５２によって指定されるグループに増加し、ノード２１２を含むことに留意されたい。
【００５４】
図８は、本発明に従って、図７のネットワークの操作の方法８００に関するブロック図を示す。方法８００において、クライアント２２６はグループＡに接続することを要求し、結果として、グループＡはノード２１２およびＭＩＮＴ処理エージェント２４２を含むように拡張される。方法８００は、ミント情報が新しいグループメンバーと適合するように、どのように確実に伝搬するかを説明する。
【００５５】
ブロック８０２において、グループＡの現在のメンバーシップは、図７の７５０に示されるようにノード２０２、２０４、２０６および２０８を含む。ブロック８０４では、クライアント２２８は、グループＡに接続するためにノード２１２に要求を伝送する。クライアント２２８は、グループＡにわたって現在マルチキャストされている情報を受信しようとし得る。ブロック８０６では、ノード２１２は、接続要求をノード２０６へ転送する。このノード２０６は既にグループＡのメンバーである。接続要求はトランザクションパス７０２により示される。ノード２１２がノード２１２からの接続要求を受信した場合、ノード２１２はグループＡの広がったツリー（ｓｐａｎｎｉｎｇ  ｔｒｅｅ）に含まれ、その結果グループＡメンバーシップは７５２で示される。ノード２１２と関連するＭＩＮＴ処理エージェント２４２はまた、グループＡのメンバーであり得る。
【００５６】
ブロック８０８では、ノード２０６はＭＩＮＴ処理エージェント２３６にノード２１２（およびその関連したＭＩＴ処理エージェント２４２）がグループＡに接続したことを通知する。これはトランザクションパス７０４で示される。ブロック８１０では、ＭＩＮＴ処理エージェント２３６は、グループＡに関するミントを、そのＭＩＮＴデータ格納部から新しく追加されたＭＩＮＴ処理エージェント２４２へ伝搬する。このミントは、エージェント２３６のＭＩＮＴ−ＰＭがエージェント２４２のＭＩＮＴ−ＰＭにミント情報を発行すると、ＭＩＮＴチャネルにわたって伝搬する。これは、トランザクションパス７０６で示される。ブロック８１２では、ＭＩＮＴ処理エージェント２４２は、新しいＭＩＮＴ情報を有するそのデータ格納部をアップデートし、その結果グループＡのすべてのＭＩＮＴ処理エージェントは同一のグループＡのＭＩＮＴ情報を有する。ＭＩＮＴエージェント２３６はＭＩＮＴエージェント２４２のペアレントピア（ｐａｒｅｎｔ  ｐｅｅｒ）であることに留意されたい。ＭＩＮＴ処理エージェント２４２が他の新たに添付されたＭＩＮＴ処理エージェントに対するペアレントピアであったならば、それらの他のＭＩＮＴ処理エージェントに新たなミント情報を再発行する。
【００５７】
上記の例では、一つのノードのみがグループＡに加えられ、次いで、これはミント情報で引き続いてアップデートされる。数個のノードがグループに追加される場合においては、ミント伝搬は接続要求の結果として確立されたルートに従い得る。例えば、一つの実施形態では、ミント情報は（接続要求と比較して）逆方向に伝搬する。これは、接続要求を受信したグループのノードからホップバイホップ（ｈｏｐ  ｂｙ  ｈｏｐ）で始まって、接続リクエスタに戻る。逆のホップバイホップルートの各ＭＩＮＴ処理エージェントは、グループの広がったツリーの新しいブランチと関連したすべてのＭＩＮＴ処理エージェントがアップデートされるまで、アップデートされる。
【００５８】
各データ格納部内でグループＡに関する同一のミント情報を有するすべてのＭＩＮＴ処理エージェントを用いると、ソース２２０はグループＡにアップデートされたミント情報を発行しようとする。ブロック８１４では、ソース２２０は発行コマンドを、ノード２０２を介してＲＰへ伝送する。これは、トランザクションパス７０８で示される。先のように、ソースは複数の方法のうちの一つを使用して発行コマンドをグループＡのＲＰに伝送し得る。
【００５９】
ブロック８１６では、ＲＰはソース２２０から発行コマンドを受信する。ブロック８１８では、ＲＰはＭＩＮＴ処理エージェント２３６に発行コマンド（パス７０８）を通知し、そしてＭＩＮＴ処理エージェント２３６はミントを受信し、新しい発行コマンドのミントに基づいたそのデータ格納部をアップデートする。ブロック８２０では、ＭＩＮＴ処理エージェント２３６は、（ペアレントとして）新しいミント情報をグループＡに関連したすべてのピアＭＩＮＴ処理エージェント（チャイルドピア）へ伝搬する。これが起こり得る一つの様式は、トランザクションパス７１０で示されるように、ＭＩＮＴ処理エージェント２３６がグループＡの他のメンバーにＭＩＮＴチャネルにわたって発行コマンドを発行する場合である。結果として、新しいミント情報はノード２０２、２０４、２０８および２１２に確実に伝搬される。これらのノードはグループＡのすべての部分であり、エージェント２３６に対するチャイルドピアである。
【００６０】
この例では、エージェント２３６によって発行された新しいミント情報は、図７に示されるように、チャイルドピアに到達するように一つのホップを伝搬する必要があるだけである。しかし、チャイルドピアはグループＡの他のノードに（ペアレントとして）ミント情報を再発行し得ることが当業者には明らかである。従って、グループＡの広がったツリーが相互に接続したノードの大きなブランチを含むならば、新しいミント情報はグループＡに関連したすべてのノード（および、ＭＩＮＴ処理エージェント）に、広がったツリーの下に（ペアレントからチャイルドまで）ホップバイホップで伝搬する。
【００６１】
ブロック８２２では、ＭＩＮＴ処理エージェント２３２、２３４、２４０および２４２はすべて、新しいミント情報を受信し、そしてその新しいミント情報を有するそれらの関連したデータ格納部をアップデートする。従って、本発明によれば、新しく発行されたミント情報は、グループＡの広がったツリーのアクティブなノードに関連したすべてのＭＩＮＴ処理エージェントに確実に配信される。
【００６２】
方法８００はまた、本発明に従って、ミント情報がどのようにクエリされ得るかを示す。
【００６３】
ブロック８２４では、クライアント２２８はグループＡに関連したミント情報をクエリすることを望む。クライアント２２８はクエリ命令を目的のグループとしてグループＡを特定するノード２１２に伝送する。用いられるクエリのタイプは、グループＡのネットワーク中に発行されたデータバインディングのすべての既知の名前（および、それぞれのオリジン）を返す。例えば、上記の名前ベースのクエリ命令（ｑｕｅｒｙ−ｎａｍｅ（Ａ））は、この情報を返す。
【００６４】
ブロック８２６では、ＭＩＮＴ処理エージェント２４２はクエリ命令を受信する。これは、トランザクションパス７１２で示される。
【００６５】
ブロック８２８では、ＭＩＮＴ処理エージェント２４２は、トランザクションパス７１４により示されるように、クエリの結果をクライアント２２８に伝送することにより、要求されたミント情報に応答する。これは、エージェント２４２でのＭＩＮＴ−ＰＭがその関連したミントデータ格納部から要求された情報を取り出し、ＭＩＮＴチャネルにわたる結果をクライアント２２８に伝送する場合に発生する。ブロック８３０では、クライアント２２８は要求されたミント情報を受信し、そして結果として、クライアント２２８は返されたミント情報を使用してグループＡの状態を判定し得るか、またはグループＡにおいて伝送されたデータストリームを受信するアクションをとり得る。
【００６６】
図９は、クライアント２２８がグループＡへのその接続を終結し、そのＭＩＮＴバインディングを破棄する方法９００のブロック図を示す。この方法９００は、図１０および図１１を参照して説明される。
【００６７】
図１０および１１は、ネットワーク２００および方法９００の操作時に起こる関連のトランザクションを示す。
【００６８】
図９を再度参照すると、ブロック９０２では、クライアント２２８はグループＡに添付され、これは、図１０に示されるように、ノードおよびＭＩＮＴ処理エージェントから構成される。ブロック９０４では、クライアント２２８は、クライアント２２８からノード２１２までリーブ要求（ｌｅａｖｅ  ｒｅｑｕｅｓｔ）を伝送することにより、グループＡからの終結を要求する。このリーブ要求のルートは１００２で示される。
【００６９】
ブロック９０６では、ノード２１２はエージェント２４２に、クライアント２２８はグループＡからそのメンバーシップを終結していることを通知し、従ってノード２１２はグループから取り除かれる。ブロック９０８では、ノード２１２がグループＡから取り除かれるので、エージェント２４２はグループＡに関連するミントを破棄する。しかし、ノード２１２が他のグループのメンバーである場合は、それらの他のグループに関連するミントはエージェント２４２により維持されることに注目すべきである。他の実施形態では、エージェント２４２は、以下のセクションで説明するように、本発明の他の局面に従って、グループを離れた後にミントを維持し得る。
【００７０】
ブロック９１０では、ノード２１２は、それが最終的に受信されるＲＰ（ノード２０６）の方へ、リーブ要求を伝搬する。ＲＰはエージェント２３６にトランザクションパス１００４で示されるような（クライアント２２８による）リーブ要求を通知する。ブロック９１２では、エージェント２３６は、それがグループのＲＰと関連するために、それをグループＡのミントの格納部を維持する。グループＡが存在する限り、エージェント２３６は、ミントを他のグループメンバーに伝搬することをエージェントが要求する場合において、ミントのそのデータ格納部を維持する。
【００７１】
ブロック９１４では、ＲＰ（ノード２０６）はクライアント２２８からのリーブ要求を処理し、結果としてノード２１２はグループＡから取り除かれる。これが起こった後、生じたグループは図１１のグループＡで示されるように、ノード２０２、２０６および２０８を含む。
【００７２】
ここで、図１１を参照すると、グループから取り除かれたノード２１２では、方法９００は以下に説明する追加のトランザクションで継続する。
【００７３】
ブロック９１６では、情報ソース２２０は、グループＡに関する新たなミントを発行する。ノード２０２は発行コマンドを受信し、そしてそれをＲＰの方にルート付けする。上記のように、情報ソースはＲＰの位置を見つけて、発行コマンドを直接ＲＰに発行することができる。あるいは、潜在的なグループルーティングプロトコルの結果として、ノード２０２はＲＰの位置を知ることができ、そしてそれゆえに、ＲＰの方へ発行コマンドをルート付けする。このトランザクションはトランザクションパス１１０２に示される。
【００７４】
ブロック９１８では、トランザクションパス１１０４で示されるように、ＲＰは発行コマンドを受信し、発行されたミントをＭＩＮＴ処理エージェント２３６に転送する。ブロック９２０では、ＭＩＮＴ処理エージェント２３６は、新たなミント情報によりそのデータ格納部をアップデートする。ブロック９２２では、ＭＩＮＴ処理エージェントは新たなミント情報をグループＡの他のＭＩＮＴ処理エージェント（すなわち、エージェント２３２、２３４および２４０）に伝搬する。これはトランザクションパス１１０６で示される。ミントの伝搬は、エージェント２３６が新たなミント情報を有する発行コマンドをグループＡの他のノードに発行するときに起こる。
【００７５】
グループＡへのその添付を終結するクライアント２２８の結果として、そして結果的に、ノード２１２はグループＡの広がったツリーから取り除かれ、ＭＩＮＴ処理エージェント２４２は、もはやグループＡに関する新たなミント情報でアップデートされない。しかし、ＭＩＮＴプロトコルは、グループＡのアクティブなメンバーであるＭＩＮＴ処理エージェントのためのミントデータ格納部を確実にアップデートし続ける。ノード２１２が将来、グループＡを接続することを要求すれば、アップデートされたミントは再度ノード２１２へ伝搬され、その後ＭＩＮＴ処理エージェント２４２に伝搬される。
【００７６】
別の実施形態では、ＭＩＮＴプロトコルは過剰なルーティング変動と関連する問題を克服するように作動する。過剰なルーティング変動の間、特定のノードが反復して離れ、次いでグループに再接続する場合に、それらのノードに関連したデータ格納部中のミント情報は繰り返し破棄され、再配置（ｒｅｐｏｐｕｌａｔｅ）される。これは、データネットワーク上のミント情報の過剰なトランザクションをもたらす。この問題を回避するために、ＭＩＮＴプロトコルに対する拡張は、過剰なルーティング変化の結果として、データ格納部の破棄および再配置を回避する。
【００７７】
一つの実施形態では、ＭＩＮＴダイジェスト（ｄｉｇｅｓｔ）は、データ格納部中のミントにわたって計算される。ＭＩＮＴダイジェストは、データ格納部中のすべてのミントを表してもよいし、あるいはデータ格納部中のミントの選択された部分を表してもよい。ノードがグループを離れたときにミント情報を破棄する代わりに、そのソードに関連したミント情報はその関連のＭＩＮＴダイジェストとともにデータ格納部中に保存される。ノードがグループに再接続すると、それはそのＭＩＮＴダイジェストをグループに伝送する。ノードにおけるＭＩＮＴダイジェストがグループの現在のＭＩＮＴダイジェストとは異なると、ノードはミント情報の新たなコピーとともにアップデートされる。次いで、ノードはそのミントデータ格納部およびその関連のダイジェストをアップデートする。ノードからのＭＩＮＴダイジェストがグループからのＭＩＮＴダイジェストと適合すると、ミント情報の新たなコピーをノードに伝送する必要はない。それゆえ、拡張されたＭＩＮＴプロトコルは、ネットワーク中のミント情報の過剰な伝送を回避する。
【００７８】
別の実施形態では、データ格納部のリソースが古いミント情報を格納するために用いられることがないように、時間パラメータが使用される。ノードがグループを離れると、そのノードに関連したＭＩＮＴ処理エージェントは時間パラメータを使用して、データ格納部にミント情報をどれほど長く保存するかを決定する。この時間パラメータ値はネットワーク管理者により決定され得る。時間パラメータにより規定された期間中、データ格納部およびその関連のＭＩＮＴダイジェストを保存することにより、ミント情報の過剰な伝達は、上記のように防止され得る。しかし、ノードがグループを離れ、時間パラメータにより規定された期間が満了すると、ミントデータ格納部はそのグループのミントから取り除かれ得、それによりデータ格納物のリソースを無くす（ｆｒｅｅ  ｕｐ）。それゆえ、ＭＩＮＴ処理エージェントはデータ格納部を保存して、ネットワークフラッピング間の冗長なミント伝達を防止する。そして選択された期間の満了後、データ格納部を消去して、さらなるミントを格納する価値あるリソースを解放する。
【００７９】
当業者に明らかなように、ＭＩＮＴプロトコルをインプリメントするための上記の方法および装置における改変は、本発明の範囲から逸脱することなく可能である。従って、本明細書中の開示および記載は、提示であり、限定されるものではなく、特許請求の範囲に示される本発明の範囲内である。
【図面の簡単な説明】
【図１Ａ】  図１Ａは、本発明を使用するのに適したコンピュータを示す。
【図１Ｂ】  図１Ｂは、図１Ａのコンピュータのサブシステムを示す。
【図２】  図２は、本発明にしたがって構成されたデータネットワークを示す。
【図３】  図３は、本発明にしたがって構成されたＭＩＮＴ処理エージェント３００のブロック図を示す。
【図４】  図４は、例示的なＭＩＮＴ情報を示す。
【図５】  図５は、図２のデータネットワークに規定されたマルチキャストグループを示す。
【図６】  図６は、図５に示されるネットワークを介してＭＩＮＴ情報を伝搬する方法のブロック図を示す。
【図７】  図７は、接続ノードを含むように改変された改変マルチキャストグループを示す。
【図８】  図８は、図７の改変マルチキャストグループを介してＭＩＮＴ情報を伝搬する方法のブロック図を示す。
【図９】  図９は、マルチキャストグループ内のノードを解放し、その関連するＭＩＮＴバインディングを終端させる方法のブロック図を示す。
【図１０】  図１０は、図９に示される方法の動作の間のトランザクションステップをさらに示すための図である。
【図１１】  図１１は、図９に示される方法の動作の間のトランザクションステップをさらに示すための図である。
【図１Ａ】
0004685299.tif 000004
【図１Ｂ】
0004685299.tif 000005
【図２】
0004685299.tif 000006
【図３】
0004685299.tif 000007
【図４】
0004685299.tif 000008
【図５】
0004685299.tif 000009
【図６】
0004685299.tif 000010
【図７】
0004685299.tif 000011
【図８】
0004685299.tif 000012
【図９】
0004685299.tif 000013
【図１０】
0004685299.tif 000014
【図１１】
0004685299.tif 000015