(57)【要約】【課題】  マルチキャスト通信グループにおけるメンバーシップを効率的に管理するシステムおよび方法を提供する。【解決手段】  このシステムは、任意の数のエンドノード（例えば、チャネルアダプタ、ネットワークインターフェースアダプタ）、およびルーティングノード（例えば、スイッチ）を備え得、この方法は、任意のノードに結合されたプロセッサによって実現され得る。ネットワークにおける各ノードは、マルチキャストグループ、および／または、グループのマルチキャスト通信をルーティングするマルチキャストツリー（ＭＣＴ）のメンバーであり得る。ノードは、グループのメンバーがツリーのメンバーであることを必要としない。ＭＣＴに含まれるネットワークリンクは、ネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のサブセットである。【選択図】  なし【特許請求の範囲】
【請求項１】
特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する、コンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
該ネットワークのＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）を選択するステップと、
該新しいノードを該現在のノードとして選択するステップと、
該ＭＳＴに含まれるリンクによって該現在のノードにリンクされたノードの該ルーティングツリーメンバーシップステータスを検査するステップと、
該検査するステップが停止するまで、該現在のノードのピアノードを該現在のノードとして選択し、かつ、該検査するステップを繰返すステップと、
該最終ノードが該ルーティングツリーのＦｕｌｌメンバーであるか、または
該最終ノードが該ルーティングツリーのＳｅｎｄＯｎｌｙメンバーであり、該新しいノードの該特定のグループメンバーシップステータスがＳｅｎｄＯｎｌｙである場合、最終ノードが検査されると、該検査するステップを停止するステップと、
該新しいノードから該最終ノードへのノードごとに、該新しいノードの該特定のグループメンバーシップステータスと等しい該ノードの該ルーティングツリーメンバーシップステータスを設定するステップと
を包含する、コンピュータで実現される方法。
【請求項２】
現在のノードとして選択するためのネットワークを格納するキューを維持するステップをさらに包含し、
現在のノードの第１のピアは、
該第１のピアが該ＭＳＴに含まれるリンクによって該現在のノードに結合され、
該第１のピアが該ルーティングツリーのＦｕｌｌメンバーではなく、
該第１のピアの該ルーティングツリーメンバーシップステータスおよび前記新しいノードの前記特定のグループメンバーシップステータスが両方ともＳｅｎｄＯｎｌｙである場合に該キューに追加される、請求項１に記載の方法。
【請求項３】
前記新しいノードの前記特定のグループのメンバーシップステータスがフルであり、かつ、該第１のピアの前記ルーティングツリーメンバーシップステータスがＳｅｎｄＯｎｌｙである場合に、前記キューが空であるかどうかを決定するステップをさらに包含する、請求項２に記載の方法。
【請求項４】
前記キューが空であるかどうかを検査する前記ステップを停止するステップをさらに包含する、請求項２に記載の方法。
【請求項５】
コンピュータによって実行されると、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
該ネットワークのＭＳＴを選択するステップと、
該新しいノードを該現在のノードとして選択するステップと、
該ＭＳＴに含まれるリンクによって該現在のノードにリンクされるノードのルーティングツリーメンバーシップステータスを検査するステップと、
該検査するステップが停止するまで、該現在のノードのピアノードを該現在のノードとして選択し、かつ、該検査するステップを繰返すステップと、
該検査するステップを停止するステップであって、
最終ノードがルーティングツリーのＦｕｌｌメンバーであるか、または、
該最終ノードが該ルーティングツリーのＳｅｎｄＯｎｌｙメンバーであり、該新しいノードの該特定のグループメンバーシップステータスがＳｅｎｄＯｎｌｙである場合、最終ノードが検査されると、該検査するステップを停止するステップと、
該新しいノードから該最終ノードへのノードごとに、該新しいノードの該特定のグループメンバーシップステータスと等しい該ルーティングツリーメンバーシップステータスを設定するステップと
を包含する、コンピュータ読み出し可能媒体。
【請求項６】
ネットワークノードのマルチキャストグループに第１のノードを追加するコンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
（ａ）ＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの１つとしてマルチキャストグループにおける第１のネットワークノードを含むという第１のリクエストを受信するステップと、
（ｂ）該リクエストにより、該第１のノードのＧｒｏｕｐＳｔａｔｕｓを設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、
（ｃ）該ネットワークのＭＳＴを選択するステップと、
（ｄ）該第１のノードを該現在のノードとして選択するステップと、
（ｅ)該現在のノードのピアノードを選択するステップであって、該第１のリクエストが受信されたので、該選択されたピアのＴｒｅｅＳｔａｔｕｓは検査されず、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリー内のメンバーシップステータスを示す、ステップと、
（ｆ）検査の１つ以上を実行するステップであって、
（ｆ１）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップ、
（ｆ２）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、該選択されたピアの該ＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうかを決定するステップ、および、
（ｆ３）該現在のノードを該選択されたピアに結合するネットワークリンクが該選択されたＭＳＴの部分であるかどうかを決定するステップの
１つ以上の検査を実行するステップのうちの１つ以上を実行する、ステップと、
（ｇ）繰返すステップであって、
（ｇ１）該現在のノードの少なくとも１つのピアが検査され、および、
（ｇ２）該（ｆ１）および該（ｆ２）の決定の１つの
一方が成功するまで、（ｅ）〜（ｇ）を繰返すステップと、
（ｈ）該（ｆ１）および該（ｆ２）の決定のどちらも成功しなかった場合、該現在のノードのピアを該現在のノードとして設定するステップと、
（ｉ）繰返すステップであって、
（ｉ１）該ルーティングツリー内のすべてのノードが検査され、および、
（ｉ２）該（ｆ１）および該（ｆ２）の決定の１つの
一方が成功するまで、（ｅ）〜（ｈ）を繰返すステップと、
（ｊ）該ＭＳＴ内のノードごとに、該新しいノードから該最終ピアまで検査され、該新しいノードの該ＧｒｏｕｐＳｔａｔｕｓと等しい該ノードのＴｒｅｅＳｔａｔｕｓを設定するステップと
を包含する、コンピュータで実現される方法。
【請求項７】
（ｄ）の後に、前記第１のノードの前記ＧｒｏｕｐＳｔａｔｕｓを前記第１のノードの前記ＴｒｅｅＳｔａｔｕｓと比較するステップをさらに包含する、請求項６に記載の方法。
【請求項８】
前記現在のノードとして選択するためのノードをキューに入れるキューを維持するステップをさらに包含する、請求項６に記載の方法。
【請求項９】
前記（ｆ３）の決定が成功した場合、
該選択されたピアを前記キューに追加するステップをさらに包含する、請求項８に記載の方法。
【請求項１０】
前記（ｆ３）の決定が成功した場合、
前記選択されたピアの前記ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、前記キューが空である場合、該新しいノードの前記ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップをさらに包含する、請求項９に記載の方法。
【請求項１１】
コンピュータによって実行されると、ネットワークノードのマルチキャストグループに第１のノードを追加する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
（ａ）ＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方として第１のネットワークノードをマルチキャストグループに含むという第１のリクエストを受信するステップと、
（ｂ）該リクエストにより、該第１のノードのＧｒｏｕｐＳｔａｔｕｓを設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、
（ｃ）該ネットワークのＭＳＴを選択するステップと、
（ｄ）該第１のノードを該現在のノードとして選択するステップと、
（ｅ)該現在のノードのピアノードを選択するステップであって、該第１のリクエストが受信されたので、該選択されたピアのＴｒｅｅＳｔａｔｕｓは検査されず、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリー内のメンバーシップステータスを示す、ステップと、
（ｆ）
（ｆ１）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップと、
（ｆ２）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、該選択されたピアの該ＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうかを決定するステップ、および、
（ｆ３）該現在のノードを該選択されたピアに結合するネットワークリンクが該選択されたＭＳＴの部分であるかどうかを決定するステップの
うちの１つ以上の検査を実行するステップと、
（ｇ）
（ｇ１）該現在のノードの少なくとも１つのピアが検査され、および、
（ｇ２）該（ｆ１）および該（ｆ２）の決定の１つのどちらかが成功するまで、（ｅ）〜（ｇ）を繰返すステップと、
（ｈ）該（ｆ１）および該（ｆ２）の決定のどちらも成功しなかった場合、該現在のノードのピアを該現在のノードとして設定するステップと、
（ｉ）繰返すステップであって、
（ｉ１）該ルーティングツリー内のすべてのノードが検査され、および、
（ｉ２）該（ｆ１）および該（ｆ２）の決定の１つのどちらかが成功するまで、（ｅ）〜（ｈ）を繰返すステップと、
（ｊ）該ＭＳＴ内のノードごとに、該新しいノードから該最終ピアまで検査され、該新しいノードの該ＧｒｏｕｐＳｔａｔｕｓと等しい該ノードのＴｒｅｅＳｔａｔｕｓを設定するステップと
を包含する、コンピュータで実現される方法。
【請求項１２】
新しいノードを、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに追加する、コンピュータで実現される方法であって、対応スルルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
該ネットワークのＭＳＴを識別するステップと、
該新しいノードを該現在のノードとして選択するステップと、
該新しいノードの該特定のグループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップを有する最終ノードが識別されるまで、
該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、
該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップと、
該ＭＳＴにおける各ノードの該ルーティングツリーメンバーシップステータスを、該新しいノードから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップと
を繰返すステップと
を包含する、コンピュータで実現される方法。
【請求項１３】
ノードのルーティングツリーメンバーシップステータスおよびグループメンバーシップステータスは、より小さいステータスからより大きいステータスまで、すなわち、非メンバー、ＳｅｎｄＯｎｌｙ、Ｆｕｌｌからのそれぞれ１つである、請求項１２に記載の方法。
【請求項１４】
コンピュータによって実行されると、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する方法をコンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
該ネットワークのＭＳＴを識別するステップと、
該新しいノードを該現在のノードとして選択するステップと、
該新しいノードの該特定のグループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップステータスを有する最終ノードが識別されるまで、
該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、
該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップとを繰返すステップと、
該ＭＳＴ内の各ノードの該ルーティングツリーメンバーシップステータスを、該新しいノードから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップと
を包含する、コンピュータ読み出し可能媒体。
【請求項１５】
ネットワークマルチキャストグループから第１のノードを除去するコンピュータで実行される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
第１のノードをキューに入れるステップと、
該キューが空になるまで、
（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、
（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、
（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、
（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、
（ｅ）オンであるローカルポートの数がゼロと等しい場合、
（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、
（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ）オンであるローカルポートの数が１と等しい場合、
（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、
（ｆ２）該唯一のピアノードを該キューに追加するステップと、
（ｆ３）ゼロピアノードが、該現在のノードへのローカルポートをオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、
オンである該現在のノードの該１つのローカルポートをオフにするステップと、
該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップと
を順番に繰返すステップとを包含する、コンピュータで実現される方法。
【請求項１６】
前記繰返すステップの前に、
前記第１のノードの前記グループメンバーシップステータスをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップをさらに包含する、請求項１５に記載の方法。
【請求項１７】
コンピュータによって実行されると、ネットワークマルチキャストグループから第１のノードを除去する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間にマルチキャストメッセージをルーティングするように構成され、該方法は、
該第１のノードをキューに入れるステップと、
該キューが空になるまで、
（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、
（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、
（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、
（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、
（ｅ）オンであるローカルポートの数がゼロと等しい場合、
（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、
（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ）オンであるローカルポートの数が１と等しい場合、
（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、
（ｆ２）該唯一のピアノードを該キューに追加するステップと、
（ｆ３）ゼロピアノードは、該現在のノードへのローカルポートがオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、
オンである該現在のノードの該１つのローカルポートをオフにするステップと、
該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップと
を順番に繰返すステップとを包含する、コンピュータ読み出し可能媒体。
【請求項１８】
ネットワークノードのマルチキャストグループから第１のノードを除去するコンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
マルチキャストグループのメンバーシップから第１のネットワークノードを除去することを求める第１のリクエストを受取るステップであって、該第１のノードは、該マルチキャストグループのＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方である、ステップと、
該第１のノードのＧｒｏｕｐＳｔａｔｕｓをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、
該第１のノードをキューに入れるステップと、
該キューが空になるまで、
（ａ）該現在のノードであるべきキューからノードをデキューするステップと、
（ｂ）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかをデキューするステップと、
（ｃ）オンである該現在のノードのローカルポートの数を決定するステップと、
（ｄ）該数がゼロと等しい場合、
（ｄ１）オンにされた該現在のノードへのローカルポートを有する現在のノードのピアごとに、
（ｄ１’）該ピアの該ローカルポートをオフに設定するステップと、
（ｄ１’’）該キューに該ピアを追加するステップと、
（ｄ２）該現在のノードのＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定するステップであって、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリーにおけるメンバーシップのステータスを示す、ステップと、
（ｅ）該数が１と等しい場合、
（ｅ１）該現在のノードの該１つのローカルポートに結合された該１つのピア上で、該現在のノードへの該１つのピアの該ローカルポートをオフに設定するステップと、
（ｅ２）該１つのピアを該キューに追加するステップと、
（ｅ３）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＮｏｎｅであり、該現在のノードのゼロピアは、
（ｅ３’）該現在のノードの該１つのローカルポートをオフにし、かつ、
（ｅ３’’）該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定して、該現在のノードへのローカルポートがオンにされるステップと、
（ｅ４）そうでない場合、該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＳｅｎｄＯｎｌｙに設定するステップと
を繰返す、ステップとを包含する、コンピュータで実行される方法。
【請求項１９】
前記（ａ）は、前記キューに最も最近追加されたノードをデキューするステップを包含する、請求項１８に記載の方法。
【請求項２０】
コンピュータによって実行されると、ネットワークノードのマルチキャストグループから第１のノードを除去する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、
マルチキャストグループのメンバーシップから第１のネットワークノードを除去することを求める第１のリクエストを受取るステップであって、該第１のノードは、該マルチキャストグループのＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方である、ステップと、
該第１のノードのＧｒｏｕｐＳｔａｔｕｓをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、
該第１のノードをキューに入れるステップと、
該キューが空になるまで、
（ａ）該現在のノードであるべきキューからノードをデキューするステップと、
（ｂ）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかをデキューするステップと、
（ｃ）オンである該現在のノードのローカルポートの数を決定するステップと、
（ｄ）該数がゼロと等しい場合、
（ｄ１）オンにされた該現在のノードへのローカルポートを有する現在のノードのピアごとに、
（ｄ１’）該ピアの該ローカルポートをオフに設定するステップと、
（ｄ１’’）該キューに該ピアを追加するステップと、
（ｄ２）該現在のノードのＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定するステップであって、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリーにおけるメンバーシップのステータスを示す、ステップと、
（ｅ）該数が１と等しい場合、
（ｅ１）該現在のノードの該１つのローカルポートに結合された該１つのピア上で、該現在のノードへの該１つのピアの該ローカルポートをオフに設定するステップと、
（ｅ２）該１つのピアを該キューに追加するステップと、
（ｅ３）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＮｏｎｅであり、該現在のノードのゼロピアは、
（ｅ３’）該現在のノードの該１つのローカルポートをオフにし、かつ、
（ｅ３’’）該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定して、該現在のノードへのローカルポートがオンにされるステップと、
（ｅ４）そうでない場合、該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＳｅｎｄＯｎｌｙに設定するステップと
を繰返す、ステップとを包含する、コンピュータ読み出し媒体。
【請求項２１】
マルチキャストグループと、該マルチキャストグループ内のマルチキャストメッセージをルーティングするための対応するルーティングツリーにおけるメンバーシップを管理するシステムであって、該装置は、
該装置をネットワークに結合するネットワークノードと、
該マルチキャストグループの該メンバーシップを変更することを求めるリクエストを受取るように構成されたサブネットアドミニストレータと、
該マルチキャストグループのメンバーシップの変更に応答して、該ルーティングツリーが改変された場合に、ネットワークノードのルーティングテーブルを更新するように構成されたサブネットマネージャと、
サブネットマネージメントコーディネータであって、
非メンバーを該マルチキャストグループのＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーにし、
ＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーを該マルチキャストグループの非メンバーにし、
該マルチキャストグループの該メンバーシップの変更に応答して、該ルーティングツリーの該メンバーシップを更新する
ように構成されるサブネットマネージメントコーディネータと
を備える、システム。
【請求項２２】
前記サブネットマネージメントコーディネータは、
前記非メンバーの前記グループメンバーシップを、該非メンバーを該マルチキャストグループのメンバーにすることを求める受取られたリクエストに指定された該グループメンバーシップステータスに設定するステップと、
該ネットワークのＭＳＴを識別するステップと、
該非メンバーを該現在のノードとして選択するステップと、
該非メンバーの該グループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップステータスを有する最終ノードが識別されるまで、
該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、
該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップとを繰返す、ステップと、
該ＭＳＴにおける各ノードの該ルーティングツリーメンバーシップステータスを、該非メンバーから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップと
によって、非メンバーを該マルチキャストグループのＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーにする、請求項２１に記載のシステム。
【請求項２３】
前記ノードのルーティングツリーメンバーシップステータスおよびグループメンバーシップステータスは、より小さいステータスからより大きいステータスまで、すなわち、非メンバー、ＳｅｎｄＯｎｌｙ、Ｆｕｌｌからのそれぞれ１つである、請求項２２に記載のシステム。
【請求項２４】
前記サブネットマネージメントコーディネータは、
該第１のノードをキューに入れるステップと、
該キューが空になるまで、
（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、
（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、
（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、
（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、
（ｅ）オンであるローカルポートの数がゼロと等しい場合、
（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、
（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ）オンであるローカルポートの数が１と等しい場合、
（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、
（ｆ２）該唯一のピアノードを該キューに追加するステップと、
（ｆ３）ゼロピアノードが、該現在のノードへのローカルポートをオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、
オンである該現在のノードの該１つのローカルポートをオフにするステップと、
該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、
（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップと
によって、ＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーを前記マルチキャストグループの非メンバーにする、請求項２１に記載のシステム。
【請求項２５】
前記ネットワークノードは、チャネルアダプタおよびネットワークスイッチの一方である、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムおよびネットワーキングの分野に関する。より具体的には、ネットワークにおけるマルチキャスト通信およびマルチキャストグループメンバーシップを効率的にサポートするためのシステムおよび方法が提供される。
【背景技術】
【０００２】
ＩｎｆｉｎｉＢａｎｄ等のネットワーキングアーキテクチャを、１つのノードが特定のマルチキャストグループ内の複数の他のノードへの通信を送出または転送するマルチキャシトトラフィックをサポートする。ＩｎｆｉｎｉＢａｎｄにおいて、ネットワークノードは、スイッチおよびチャネルアダプタを備える。両方のタイプのノードは、マルチキャストグループのメンバーであり得る。グループメンバーは、他のメンバーによって送信されたすべてのマルチキャスト通信を受信するように構成され得、さらに、マルチキャスト通信を送出し得る。あるいは、メンバーがグループのマルチキャスト通信の最終使用者でない場合、このメンバーは、マルチキャスト通信のみを送信するように構成され得る。
【０００３】
マルチキャストグループが正確に動作するために、隣接ノードがその通信を受信することを必要としない場合であっても、従来のマルチキャストスキーマは、ネットワークノードが、隣接ノードにマルチキャスト通信を転送することをしばしば可能にする。例えば、ノードがマルチキャストグループから離れた後で、このノードは、グループメンバーシップが更新されるまでのしばらくの間、グループトラフィックの受信を継続し得る。
【０００４】
あるいは、エンドノードがグループから除去された場合、グループ通信をエンドノードに転送しただけで、通信それ自体を使用しなかった中間ネットワークノードは除去され得ない。これらの欠陥は、ネットワーク内の余分な、不必要なトラフィックの原因である。その一方で、ネットワークが大きいほど、およびマルチキャストグループ内のメンバーが多いほど、トラフィックを最小に保つことがより重要になる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のマルチキャストスキーマにおいて、中間またはエンドノードは、マルチキャストネットワークが現在のエンドノードメンバーシップに基づいて周期的に再構築された場合にのみ除去され得た。グループのメンバーシップに複数の変更がなされた後にのみマルチキャストグループネットワークを再構築することによって、通常、多大なマネージメントトラフィックが必要になる。
【課題を解決するための手段】
【０００６】
（要旨）
従って、グループのマルチキャストメッセージを配信（ｄｉｓｓｅｍｉｎａｔｅ）し、かつ、マルチキャスト通信グループのメンバーシップを効率的に管理するための最小または、ほぼ最小のネットワークを動的に維持するシステムおよび方法が必要である。
【０００７】
ある実施形態では、このシステムは、任意の数のエンドノード（例えば、チャネルアダプタ、ネットワークインターフェースアダプタ等）とルーティングノード（例えば、スイッチ等）を備え得、この方法は、任意のノードに結合されたプロセッサによって実現され得る。ネットワークにおける各ノードは、マルチキャストグループおよび／または、このグループのマルチキャスト通信をルーティングするマルチキャストツリー（ＭＣＴ）のメンバーであり得る。ノードは、グループのメンバーがツリーのメンバーであることを必要としない。ＭＣＴに含まれるネットワークリンクは、ネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のサブセットである。ノードがグループに追加された場合、ＭＣＴ内のノードが見つけ出されるまで、ＭＳＴがそのノードから検索される。メンバーは、グループから除去されるたびに、不必要な通信を低減するためにＭＣＴが切り捨てられる。
【０００８】
本発明による方法は、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する、コンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、該ネットワークのＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）を選択するステップと、該新しいノードを該現在のノードとして選択するステップと、該ＭＳＴに含まれるリンクによって該現在のノードにリンクされたノードの該ルーティングツリーメンバーシップステータスを検査するステップと、該検査するステップが停止するまで、該現在のノードのピアノードを該現在のノードとして選択し、かつ、該検査するステップを繰返すステップと、該最終ノードが該ルーティングツリーのＦｕｌｌメンバーであるか、または該最終ノードが該ルーティングツリーのＳｅｎｄＯｎｌｙメンバーであり、該新しいノードの該特定のグループメンバーシップステータスがＳｅｎｄＯｎｌｙである場合、最終ノードが検査されると、該検査するステップを停止するステップと、該新しいノードから該最終ノードへのノードごとに、該新しいノードの該特定のグループメンバーシップステータスと等しい該ノードの該ルーティングツリーメンバーシップステータスを設定するステップとを包含することにより、上記目的を達成する。
【０００９】
現在のノードとして選択するためのネットワークを格納するキューを維持するステップをさらに包含し、現在のノードの第１のピアは、該第１のピアが該ＭＳＴに含まれるリンクによって該現在のノードに結合され、該第１のピアが該ルーティングツリーのＦｕｌｌメンバーではなく、該第１のピアの該ルーティングツリーメンバーシップステータスおよび前記新しいノードの前記特定のグループメンバーシップステータスが両方ともＳｅｎｄＯｎｌｙである場合に該キューに追加されてもよい。
【００１０】
前記新しいノードの前記特定のグループのメンバーシップステータスがフルであり、かつ、該第１のピアの前記ルーティングツリーメンバーシップステータスがＳｅｎｄＯｎｌｙである場合に、前記キューが空であるかどうかを決定するステップをさらに包含してもよい。
【００１１】
前記キューが空であるかどうかを検査する前記ステップを停止するステップをさらに包含してもよい。
【００１２】
本発明による読み出し可能媒体であって、コンピュータによって実行されると、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、該ネットワークのＭＳＴを選択するステップと、該新しいノードを該現在のノードとして選択するステップと、該ＭＳＴに含まれるリンクによって該現在のノードにリンクされるノードのルーティングツリーメンバーシップステータスを検査するステップと、該検査するステップが停止するまで、該現在のノードのピアノードを該現在のノードとして選択し、かつ、該検査するステップを繰返すステップと、該検査するステップを停止するステップであって、最終ノードがルーティングツリーのＦｕｌｌメンバーであるか、または、該最終ノードが該ルーティングツリーのＳｅｎｄＯｎｌｙメンバーであり、該新しいノードの該特定のグループメンバーシップステータスがＳｅｎｄＯｎｌｙである場合、最終ノードが検査されると、該検査するステップを停止するステップと、該新しいノードから該最終ノードへのノードごとに、該新しいノードの該特定のグループメンバーシップステータスと等しい該ルーティングツリーメンバーシップステータスを設定するステップとを包含することにより、上記目的を達成する。
【００１３】
本発明による方法は、ネットワークノードのマルチキャストグループに第１のノードを追加するコンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、（ａ）ＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの１つとしてマルチキャストグループにおける第１のネットワークノードを含むという第１のリクエストを受信するステップと、（ｂ）該リクエストにより、該第１のノードのＧｒｏｕｐＳｔａｔｕｓを設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、（ｃ）該ネットワークのＭＳＴを選択するステップと、（ｄ）該第１のノードを該現在のノードとして選択するステップと、（ｅ)該現在のノードのピアノードを選択するステップであって、該第１のリクエストが受信されたので、該選択されたピアのＴｒｅｅＳｔａｔｕｓは検査されず、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリー内のメンバーシップステータスを示す、ステップと、（ｆ）検査の１つ以上を実行するステップであって、（ｆ１）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップ、（ｆ２）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、該選択されたピアの該ＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうかを決定するステップ、および、（ｆ３）該現在のノードを該選択されたピアに結合するネットワークリンクが該選択されたＭＳＴの部分であるかどうかを決定するステップの１つ以上の検査を実行するステップのうちの１つ以上を実行する、ステップと、（ｇ）繰返すステップであって、（ｇ１）該現在のノードの少なくとも１つのピアが検査され、および、（ｇ２）該（ｆ１）および該（ｆ２）の決定の１つの一方が成功するまで、（ｅ）〜（ｇ）を繰返すステップと、（ｈ）該（ｆ１）および該（ｆ２）の決定のどちらも成功しなかった場合、該現在のノードのピアを該現在のノードとして設定するステップと、（ｉ）繰返すステップであって、（ｉ１）該ルーティングツリー内のすべてのノードが検査され、および、（ｉ２）該（ｆ１）および該（ｆ２）の決定の１つの一方が成功するまで、（ｅ）〜（ｈ）を繰返すステップと、（ｊ）該ＭＳＴ内のノードごとに、該新しいノードから該最終ピアまで検査され、該新しいノードの該ＧｒｏｕｐＳｔａｔｕｓと等しい該ノードのＴｒｅｅＳｔａｔｕｓを設定するステップとを包含することにより、上記目的を達成する。
【００１４】
（ｄ）の後に、前記第１のノードの前記ＧｒｏｕｐＳｔａｔｕｓを前記第１のノードの前記ＴｒｅｅＳｔａｔｕｓと比較するステップをさらに包含してもよい。
【００１５】
前記現在のノードとして選択するためのノードをキューに入れるキューを維持するステップをさらに包含してもよい。
【００１６】
前記（ｆ３）の決定が成功した場合、該選択されたピアを前記キューに追加するステップをさらに包含してもよい。
【００１７】
前記（ｆ３）の決定が成功した場合、前記選択されたピアの前記ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、前記キューが空である場合、該新しいノードの前記ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップをさらに包含してもよい。
【００１８】
本発明による読み出し可能媒体は、コンピュータによって実行されると、ネットワークノードのマルチキャストグループに第１のノードを追加する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、（ａ）ＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方として第１のネットワークノードをマルチキャストグループに含むという第１のリクエストを受信するステップと、（ｂ）該リクエストにより、該第１のノードのＧｒｏｕｐＳｔａｔｕｓを設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、（ｃ）該ネットワークのＭＳＴを選択するステップと、（ｄ）該第１のノードを該現在のノードとして選択するステップと、（ｅ)該現在のノードのピアノードを選択するステップであって、該第１のリクエストが受信されたので、該選択されたピアのＴｒｅｅＳｔａｔｕｓは検査されず、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリー内のメンバーシップステータスを示す、ステップと、（ｆ）（ｆ１）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＦｕｌｌであるかどうかを決定するステップと、（ｆ２）該選択されたピアの該ＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうか、および、該選択されたピアの該ＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙであるかどうかを決定するステップ、および、（ｆ３）該現在のノードを該選択されたピアに結合するネットワークリンクが該選択されたＭＳＴの部分であるかどうかを決定するステップのうちの１つ以上の検査を実行するステップと、（ｇ）（ｇ１）該現在のノードの少なくとも１つのピアが検査され、および、（ｇ２）該（ｆ１）および該（ｆ２）の決定の１つのどちらかが成功するまで、（ｅ）〜（ｇ）を繰返すステップと、（ｈ）該（ｆ１）および該（ｆ２）の決定のどちらも成功しなかった場合、該現在のノードのピアを該現在のノードとして設定するステップと、（ｉ）繰返すステップであって、（ｉ１）該ルーティングツリー内のすべてのノードが検査され、および、（ｉ２）該（ｆ１）および該（ｆ２）の決定の１つのどちらかが成功するまで、（ｅ）〜（ｈ）を繰返すステップと、（ｊ）該ＭＳＴ内のノードごとに、該新しいノードから該最終ピアまで検査され、該新しいノードの該ＧｒｏｕｐＳｔａｔｕｓと等しい該ノードのＴｒｅｅＳｔａｔｕｓを設定するステップとを包含することにより、上記目的を達成する。
【００１９】
本発明による方法は、新しいノードを、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに追加する、コンピュータで実現される方法であって、対応スルルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、該ネットワークのＭＳＴを識別するステップと、該新しいノードを該現在のノードとして選択するステップと、該新しいノードの該特定のグループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップを有する最終ノードが識別されるまで、該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップと、該ＭＳＴにおける各ノードの該ルーティングツリーメンバーシップステータスを、該新しいノードから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップとを繰返すステップとを包含することにより、上記目的を達成する。
【００２０】
ノードのルーティングツリーメンバーシップステータスおよびグループメンバーシップステータスは、より小さいステータスからより大きいステータスまで、すなわち、非メンバー、ＳｅｎｄＯｎｌｙ、Ｆｕｌｌからのそれぞれ１つであってもよい。
【００２１】
本発明による読み出し可能媒体は、コンピュータによって実行されると、特定のグループメンバーシップステータスを有するネットワークマルチキャストグループに新しいノードを追加する方法をコンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、該ネットワークのＭＳＴを識別するステップと、該新しいノードを該現在のノードとして選択するステップと、該新しいノードの該特定のグループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップステータスを有する最終ノードが識別されるまで、該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップとを繰返すステップと、該ＭＳＴ内の各ノードの該ルーティングツリーメンバーシップステータスを、該新しいノードから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップとを包含することにより、上記目的を達成する。
【００２２】
本発明による方法は、ネットワークマルチキャストグループから第１のノードを除去するコンピュータで実行される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、第１のノードをキューに入れるステップと、該キューが空になるまで、（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、（ｅ）オンであるローカルポートの数がゼロと等しい場合、（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ）オンであるローカルポートの数が１と等しい場合、（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、（ｆ２）該唯一のピアノードを該キューに追加するステップと、（ｆ３）ゼロピアノードが、該現在のノードへのローカルポートをオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、オンである該現在のノードの該１つのローカルポートをオフにするステップと、該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップとを順番に繰返すステップとを包含することにより、上記目的を達成する。
【００２３】
前記繰返すステップの前に、前記第１のノードの前記グループメンバーシップステータスをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップをさらに包含してもよい。
【００２４】
本発明によるコンピュータ読み出し可能媒体は、コンピュータによって実行されると、ネットワークマルチキャストグループから第１のノードを除去する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間にマルチキャストメッセージをルーティングするように構成され、該方法は、該第１のノードをキューに入れるステップと、該キューが空になるまで、（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、（ｅ）オンであるローカルポートの数がゼロと等しい場合、（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ）オンであるローカルポートの数が１と等しい場合、（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、（ｆ２）該唯一のピアノードを該キューに追加するステップと、（ｆ３）ゼロピアノードは、該現在のノードへのローカルポートがオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、オンである該現在のノードの該１つのローカルポートをオフにするステップと、該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップとを順番に繰返すステップとを包含することにより、上記目的を達成する。
【００２５】
本発明による方法は、ネットワークノードのマルチキャストグループから第１のノードを除去するコンピュータで実現される方法であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、マルチキャストグループのメンバーシップから第１のネットワークノードを除去することを求める第１のリクエストを受取るステップであって、該第１のノードは、該マルチキャストグループのＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方である、ステップと、該第１のノードのＧｒｏｕｐＳｔａｔｕｓをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、該第１のノードをキューに入れるステップと、該キューが空になるまで、（ａ）該現在のノードであるべきキューからノードをデキューするステップと、（ｂ）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかをデキューするステップと、（ｃ）オンである該現在のノードのローカルポートの数を決定するステップと、（ｄ）該数がゼロと等しい場合、（ｄ１）オンにされた該現在のノードへのローカルポートを有する現在のノードのピアごとに、（ｄ１’）該ピアの該ローカルポートをオフに設定するステップと、（ｄ１’’）該キューに該ピアを追加するステップと、（ｄ２）該現在のノードのＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定するステップであって、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリーにおけるメンバーシップのステータスを示す、ステップと、（ｅ）該数が１と等しい場合、（ｅ１）該現在のノードの該１つのローカルポートに結合された該１つのピア上で、該現在のノードへの該１つのピアの該ローカルポートをオフに設定するステップと、（ｅ２）該１つのピアを該キューに追加するステップと、（ｅ３）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＮｏｎｅであり、該現在のノードのゼロピアは、（ｅ３’）該現在のノードの該１つのローカルポートをオフにし、かつ、（ｅ３’’）該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定して、該現在のノードへのローカルポートがオンにされるステップと、（ｅ４）そうでない場合、該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＳｅｎｄＯｎｌｙに設定するステップとを繰返す、ステップとを包含することにより、上記目的を達成する。
【００２６】
前記（ａ）は、前記キューに最も最近追加されたノードをデキューするステップを包含してもよい。
【００２７】
本発明によるコンピュータ読み出し可能媒体は、コンピュータによって実行されると、ネットワークノードのマルチキャストグループから第１のノードを除去する方法を該コンピュータに実行させる命令を格納するコンピュータ読み出し可能媒体であって、対応するルーティングツリーのメンバーは、該グループのメンバー間でマルチキャストメッセージをルーティングするように構成され、該方法は、マルチキャストグループのメンバーシップから第１のネットワークノードを除去することを求める第１のリクエストを受取るステップであって、該第１のノードは、該マルチキャストグループのＦｕｌｌメンバーおよびＳｅｎｄＯｎｌｙメンバーの一方である、ステップと、該第１のノードのＧｒｏｕｐＳｔａｔｕｓをＮｏｎｅおよびＳｅｎｄＯｎｌｙの一方に設定するステップであって、該ＧｒｏｕｐＳｔａｔｕｓは、該マルチキャストグループにおけるメンバーシップステータスを示す、ステップと、該第１のノードをキューに入れるステップと、該キューが空になるまで、（ａ）該現在のノードであるべきキューからノードをデキューするステップと、（ｂ）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌであるかどうかをデキューするステップと、（ｃ）オンである該現在のノードのローカルポートの数を決定するステップと、（ｄ）該数がゼロと等しい場合、（ｄ１）オンにされた該現在のノードへのローカルポートを有する現在のノードのピアごとに、（ｄ１’）該ピアの該ローカルポートをオフに設定するステップと、（ｄ１’’）該キューに該ピアを追加するステップと、（ｄ２）該現在のノードのＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定するステップであって、該ＴｒｅｅＳｔａｔｕｓは、該ルーティングツリーにおけるメンバーシップのステータスを示す、ステップと、（ｅ）該数が１と等しい場合、（ｅ１）該現在のノードの該１つのローカルポートに結合された該１つのピア上で、該現在のノードへの該１つのピアの該ローカルポートをオフに設定するステップと、（ｅ２）該１つのピアを該キューに追加するステップと、（ｅ３）該現在のノードの該ＧｒｏｕｐＳｔａｔｕｓがＮｏｎｅであり、該現在のノードのゼロピアは、（ｅ３’）該現在のノードの該１つのローカルポートをオフにし、かつ、（ｅ３’’）該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＮｏｎｅに設定して、該現在のノードへのローカルポートがオンにされるステップと、（ｅ４）そうでない場合、該現在のノードの該ＴｒｅｅＳｔａｔｕｓをＳｅｎｄＯｎｌｙに設定するステップと
を繰返す、ステップとを包含することにより、上記目的を達成する。
【００２８】
本発明によるシステムは、マルチキャストグループと、該マルチキャストグループ内のマルチキャストメッセージをルーティングするための対応するルーティングツリーにおけるメンバーシップを管理するシステムであって、該装置は、該装置をネットワークに結合するネットワークノードと、該マルチキャストグループの該メンバーシップを変更することを求めるリクエストを受取るように構成されたサブネットアドミニストレータと、該マルチキャストグループのメンバーシップの変更に応答して、該ルーティングツリーが改変された場合に、ネットワークノードのルーティングテーブルを更新するように構成されたサブネットマネージャと、サブネットマネージメントコーディネータであって、非メンバーを該マルチキャストグループのＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーにし、ＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーを該マルチキャストグループの非メンバーにし、該マルチキャストグループの該メンバーシップの変更に応答して、該ルーティングツリーの該メンバーシップを更新するように構成されるサブネットマネージメントコーディネータとを備えることにより、上記目的を達成する。
【００２９】
前記サブネットマネージメントコーディネータは、前記非メンバーの前記グループメンバーシップを、該非メンバーを該マルチキャストグループのメンバーにすることを求める受取られたリクエストに指定された該グループメンバーシップステータスに設定するステップと、該ネットワークのＭＳＴを識別するステップと、該非メンバーを該現在のノードとして選択するステップと、該非メンバーの該グループメンバーシップステータスよりも大きいか、またはこれと等しいルーティングツリーメンバーシップステータスを有する最終ノードが識別されるまで、該現在のノードのピアノードの該ルーティングツリーメンバーシップステータスを検査するステップと、該ＭＳＴに含まれるリンクによって該現在のノードに結合される該現在のノードのピアノードを現在のノードとして選択するステップとを繰返す、ステップと、該ＭＳＴにおける各ノードの該ルーティングツリーメンバーシップステータスを、該非メンバーから該最終ノードまで、該新しいノードの該特定のグループメンバーシップステータスに設定するステップとによって、非メンバーを該マルチキャストグループのＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーにしてもよい。
【００３０】
前記ノードのルーティングツリーメンバーシップステータスおよびグループメンバーシップステータスは、より小さいステータスからより大きいステータスまで、すなわち、非メンバー、ＳｅｎｄＯｎｌｙ、Ｆｕｌｌからのそれぞれ１つであってもよい。
【００３１】
前記サブネットマネージメントコーディネータは、該第１のノードをキューに入れるステップと、該キューが空になるまで、（ａ）最も最近キューに入れられたノードを除去して該現在のノードとして利用するステップと、（ｂ）該現在のノードの該グループメンバーシップがＦｕｌｌである場合、（ａ）に戻るステップと、（ｃ）該現在のノードのオンである複数のローカルポートを識別するステップと、（ｄ）該数が１よりも大きい場合に（ａ）に戻るステップと、（ｅ）オンであるローカルポートの数がゼロと等しい場合、（ｅ１）該現在のノードへのローカルポートがオンであるピアノードごとに、該該現在のノードへのピアノードのローカルポートをオフにして、該キューに該ピアノードを追加するステップと、（ｅ２）該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ）オンであるローカルポートの数が１と等しい場合、（ｆ１）該１つのローカルポートに結合された唯一のピアノード上で、該現在のノードへの該唯一のピアのローカルポートがオンである場合、該現在のノードへの該唯一のピアノードのローカルポートをオフにするステップと、（ｆ２）該唯一のピアノードを該キューに追加するステップと、（ｆ３）ゼロピアノードが、該現在のノードへのローカルポートをオンされ、該現在のノードの該グループメンバーシップステータスがＮｏｎｅである場合、オンである該現在のノードの該１つのローカルポートをオフにするステップと、該現在のノードの該ルーティングツリーメンバーシップステータスをＮｏｎｅに設定するステップと、（ｆ４）そうでない場合、該現在のノードの該ルーティングツリーメンバーシップステータスをＳｅｎｄＯｎｌｙに設定するステップとによって、ＦｕｌｌまたはＳｅｎｄＯｎｌｙメンバーを前記マルチキャストグループの非メンバーにしてもよい。
【００３２】
前記ネットワークノードは、チャネルアダプタおよびネットワークスイッチの一方であってもよい。
【発明の効果】
【００３３】
マルチキャスト通信グループにおけるメンバーシップを効率的に管理するシステムおよび方法を開示する。このシステムは、任意の数のエンドノード（例えば、チャネルアダプタ、ネットワークインターフェースアダプタ）、およびルーティングノード（例えば、スイッチ）を備え得、この方法は、任意のノードに結合されたプロセッサによって実現され得る。ネットワークにおける各ノードは、マルチキャストグループ、および／または、グループのマルチキャスト通信をルーティングするマルチキャストツリー（ＭＣＴ）のメンバーであり得る。ノードは、グループのメンバーがツリーのメンバーであることを必要としない。ＭＣＴに含まれるネットワークリンクは、ネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のサブセットである。ノードがグループに追加された場合、ＭＣＴ内のノードが見つけ出されるまで、ＭＳＴがノードから検索される。メンバーがグループから除去されるたびにＭＣＴが切り捨てられて、不必要な通信を低減することができる。
【発明を実施するための最良の形態】
【００３４】
（詳細な説明）
以下の説明は、当業者が本発明を作製および使用することが可能になるように提供され、かつ、本発明の特定の応用例、およびその要件の文脈で提供される。開示された実施形態への種々の改変は、当業者に容易に明らかになり、本発明の範囲から逸脱することなく、本明細書中に規定された一般的原理は、他の実施形態および用途に適用され得る。従って、本発明は、示された実施形態に限定されることを意図せず、本明細書中に開示された原理および特徴と整合する広い範囲に含まれるべきである。
【００３５】
本発明のこの実施形態が実行されるプログラム環境は、汎用コンピュータ、専用コンピュータ、またはネットワークコンポーネント（例えば、スイッチ、ネットワークインターフェースデバイス等）を例示的に組み込む。このようなデバイス（例えば、プロセッサ、メモリ、データ記憶装置、ディスプレイ等）の詳細は、明瞭化するために省略され得る。
【００３６】
本発明の技術は、種々の技術を用いて実現され得ることも理解されたい。例えば、本明細書中に記載される方法は、コンピュータシステム上で実行するソフトウェアの形態で実現されるか、または、マイクロプロセッサまたは他の特殊設計されたアプリケーション専用集積回路の組み合わせ、プログラム可能論理デバイス、あるいは、これらの種々の組み合わせを利用するハードウェアの形態で実現され得る。特に、本明細書中に記載される方法は、適切なコンピュータ読み出し可能媒体に常駐する一連のコンピュータ実行可能命令によって実現され得る。適切なコンピュータ読み出し可能媒体は、揮発性（例えば、ＲＡＭ）および／または不揮発性（例えば、ＲＯＭ、ディスク）メモリ、キャリアウェーブおよび伝送媒体（例えば、銅線、同軸ケーブル、光ファイバ媒体等）を含み得る。例示的キャリアウェーブは、ローカルネットワーク、インターネット等の公開アクセス可能なネットワーク、あるいは、その他の通信リンクに沿ってデジタルデータストリームを搬送する電気、電磁、または光信号の形態をとり得る。
【００３７】
本発明のある実施形態では、マルチキャストグループのメンバーシップを管理し、かつ、グループのマルチキャスト通信をルーティングするためのマルチキャストツリー（ＭＣＴ）の構成を管理するシステムおよび方法が提供される。以下において、本発明の実施形態は、ＩｎｆｉｎｉＢａｎｄ環境内で実現され得ることが記載される。しかしながら、当業者は、本発明が任意の特定のネットワークまたは通信技術に限定されず、そのような種々の技術に適合され得ることを理解する。
【００３８】
マルチキャストグループは、チャネルアダプタ、ネットワークインターフェース回路、スイッチおよび／または他の通信デバイスを含み得るネットワーク内の実質的に任意の数のメンバーノードを含み得る。マルチキャストグループのメンバーシップの他に、ネットワークノードは、マルチキャストメッセージがルーティングされるか、または配信されるノードのセットのメンバーであってもよいし、またはメンバーでなくてもよい（グループのＭＣＴ）。グループのマルチキャストツリーは、論理ツリーを構成する。ある実施形態では、ＭＣＴは、ネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のサブセットである。グループのＭＣＴのメンバーシップは、グループそれ自体におけるメンバーシップを必ずしも示さない。
【００３９】
ネットワークノードは、特定のマルチキャストグループ、およびグループのメッセージを配信するマルチキャストツリーに関する３つのステータス、すなわち、ＦｕｌｌＭｅｍｂｅｒ、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒおよびＮｏｎＭｅｍｂｅｒからの１つを有し得る。ノードのグループメンバーシップステータスは、ＧｒｏｕｐＳｔａｔｕｓ（またはＧＳ）と呼ばれ、グループのＭＣＴにおけるそのステータスは、ＴｒｅｅＳｔａｔｕｓ（またはＴＳ）と呼ばれ得る。
【００４０】
ＦｕｌｌＭｅｍｂｅｒ、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒおよびＮｏｎＭｅｍｂｅｒという用語は、ＩｎｆｉｎｉＢａｎｄ仕様での意味に正確に対応してもよいし、しなくてもよい。表１は、いくつかが無効であるノードのＧｒｏｕｐＳｔａｔｕｓおよびＴｒｅｅＳｔａｔｕｓの種々の順列を説明し、かつ各順列のノードの機能を記載する。
【００４１】
【表１】
2005094767.tif 000002
本発明の１つ以上の実施形態では、マルチキャストグループは、少なくとも１つのＦｕｌｌＭｅｍｂｅｒを常に含む。例示的に、ノードは、マルチキャストグループへのメッセージを常に開始し得るが、このメッセージは、ＭＣＴが適切に構成されるかどうかによって、正しくルーティングされ得るか、またはされ得ない。
【００４２】
本発明のある実施形態では、スイッチ（または他のルーティングデバイス）であるグループのＭＣＴの各メンバーは、受信するマルチキャストメッセージをどのように処理すべきかを示すＭＦＴ（ｍｕｌｔｉｃａｓｔ  ｆｏｒｗａｒｄｉｎｇ  ｔａｂｌｅ）を維持する。ネットワークにおけるアクティブマルチキャストグループごとに、グループのツリーにおける各スイッチが、グループごとのスイッチの個々のポートをオンまたはオフにセットし得る。
【００４３】
マルチキャストメッセージがグループごとに受信された場合にオンである、出て行くポートごとに、スイッチは、そのポートのリンク先にメッセージを転送する（おそらく、メッセージがそのポートで受信されていなかった場合）。リンク先は、別のスイッチまたはエンドノード（例えば、チャネルアダプタ）であり得る。エンドノードでない場合、リンク先は、１つ以上の他のノードにメッセージを転送し得る。
【００４４】
図１は、本発明のある実施形態による、マルチキャストグループにおけるネットワークノード、およびそのグループに対応するグループのマルチキャストツリー（ＭＣＴ）のコンフィギュレーションのメンバーシップを効率的に管理するシステムを示す。マルチキャストツリーは、ネットワークのノードのサブセットを備え、従って、サブネットまたはサブネットワークが考えられ得る。ＭＣＴまたはサブネットワーク全体を通じてのマルチキャストメッセージの配信は、メッセージがグループのメンバーである各ネットワークノードに到着することを保証する。マルチキャストグループにおけるネットワークノードのメンバーシップステータスは、ＭＣＴにおけるそのメンバーシップステータスとは異なり得る。
【００４５】
この実施形態では、リソースマネージャ１０２は、マルチキャストグループ、またはそのグループのマルチキャストツリーのコンフィギュレーションにおけるメンバーシップの管理を担当するプログラムモジュールである。リソースマネージャ１０２は、複数のグループおよびサブネットワークを管理し得るか、または、リソースマネージャの複数のインスタンスが生成され得、各インスタンスは、１つ以上の対応するマルチキャストグループのＭＣＴまたはサブネットの維持を担当する。
【００４６】
リソースマネージャ１０２は、サブネットマネージャ１１２、サブネットアドミニストレータ１１４、およびサブネットマネージメントコーディネータ１１６を備える。リソースマネージャ１０２および／またはそのコンポーネントは、ネットワークの１つのノード上で実行されるか、接続され得るか、あるいは、異なったノードに沿って分散され得る。リソースマネージャは、図１に示される各サブコンポーネントの１つ以上のインスタンスを備え得る。しかしながら、本発明のある実施形態では、リソースマネージャの単一のインスタンス、およびそのコンポーネントは、エンドノード（例えば、チャネルアダプタ）、またはグループのＭＣＴのメンバーである中間ノード（例えば、スイッチ）に結合されたコンポーネントシステム上に実行される。
【００４７】
サブネットマネージャ１１２は、ＭＣＴ、または特定のマルチキャストグループのサブネットの構成を担当する。この作業を容易にするために、サブネットマネージャは、すべてのネットワークリンクおよびノードについて通知される。サブネットマネージャは、更新される場合はいつでも、ネットワーク全体を通じて、ある特定の周期またはその他の予定通りにグループのＭＣＴを公開し得る。ＭＣＴのスイッチングまたは他のルーティングコンポーネントのそれぞれは、更新されたＭＣＴを受信するとＭＦＴを更新し得る。
【００４８】
サブネットアドミニストレータ１１４は、グループメンバーシップの変更（例えば、グループへの参加または離脱を求めるネットワークノードからのリクエスト）を受信し、かつ、その変更を実行するためにサブネットマネージャ１１２に渡すことを担当する。
【００４９】
サブネットマネージメントコーディネータ１１６は、サブネットマネージャ１１２とサブネットアドミニストレータ１１４との間での情報の共有を容易にする。サブネットマネージメントコーディネータは、さらに、グループおよび／またはそのマルチキャストツリーにメンバーを追加し、かつ、それらからメンバーを除去するためのアルゴリズムをさらに実行し得る。
【００５０】
リソースマネージャ１０２およびそのコンポーネントは、ノードをグループに追加すること、および、ノードをグループから除去する少なくとも２つの動作をサポートする。
【００５１】
図１のコンフィギュレーションは、本発明の他の実施形態によりアセンブルされた他のシステムのコンフィギュレーションを制限しない。例えば、サブネットマネージャ１１２、サブネットアドミニストレータ１１４、およびサブネットマネージメントコーディネータ１１６の機能は、示されたモジュールおよび／または他のモジュール間で、すでに記載されたものとは異なった態様で分散され得るか、または、より少ない数のモジュールに統合され得る。例えば、サブネットマネージャ１１２は、サブネットアドミニストレータ１１４および／またはサブネットマネージメントコーディネータ１１６の機能のすべてでないとしても、その多くを備え得る。
【００５２】
本発明のある実施形態では、ノードをグループに追加、および、ノードをグループから除去する手順が同様に開始し、ここで実行されるべき各動作は、作業キューにエンキュー（ｅｎｑｕｅｕｅｄ）される。システム（例えば、サブネットマネージャ、サブネットマネージメントコーディネータ）は、作業キューから動作をデキューし、かつ、必要に応じて追加されるべき他のノードをエンキューする（リクエストされたノードをグループに追加すること）。
【００５３】
ＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）は、マルチキャストグループが存在するネットワークのために維持される。ＭＳＴは、図１に示されたコンポーネントの１つによってか、または、ネットワークにおけるその他のエンティティによって維持され得る。本明細書中に記載された本発明の実施形態は、ＭＳＴのロケーションか、または、それが維持または配信される態様に左右されない。
【００５４】
本発明のこの実施形態では、ネットワークのＭＳＴにあるリンクのみがグループのＭＣＴに含まれ得る。従って、グループのＭＣＴがツリーを形成することが保証され得る。
【００５５】
マルチキャストグループ、マルチキャストツリー（ＭＣＴ）、およびネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のメンバーを識別する目的で、チャネルアダプタ、およびスイッチのポート、または他のルーティングデバイスは、ＧＩＤ（Ｇｌｏｂａｌ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）および／またはポートナンバーによって、あるいは、その他の識別子（単数または複数）を介して識別され得る。各ノードのグループおよびＭＣＴメンバーシップおよびメンバーシップステータスは、リソースマネージャ、またはリソースマネージャのコンポーネントに格納される。
【００５６】
本発明の実施形態では、サブネットマネージメントコーディネータ（例えば、図１のコーディネータ１１６）は、グループ、対応するＭＣＴ、およびノードのメンバーシップステータスのトラックを保持する。グループメンバーシップを正確にトラックするために、サブネットマネージメントコーディネータは、メンバー（すなわち、ＦｕｌｌＭｅｍｂｅｒｓ  ａｎｄ  ＳｅｎｄＯｎｌｙＭｅｍｂｅｒｓ）と非メンバー（すなわち、ＮｏｎＭｅｍｂｅｒｓ）との間を区別することが特に必要である。コーディネータは、さらに、ネットワークノード間にテーブル更新をルーティングまたは転送してマルチキャストを配信する。このようにして、コーディネータは、ＦｕｌｌＭｅｍｂｅｒｓとＳｅｎｄＯｎｌｙＭｅｍｂｅｒｓとの間を区別する。
【００５７】
図２は、本発明のある実施形態による、マルチキャストグループにネットワークノードを追加し、グループのマルチキャストルーティングツリーを構成する方法を示す。この実施形態では、グループのＭＣＴは、ネットワークのＭＳＴにおけるノードおよびリンクのサブセットを備える。
【００５８】
概して、グループにノードを追加する場合、ＭＳＴは、グループのＭＣＴのメンバーの位置が特定されるまで、ノード（例えば、幅優先（ｂｒｅａｄｔｈ−ｆｉｒｓｔ）、または深さ優先（ｄｅｐｔｈ−ｆｉｒｓｔ））から移動される。マルチキャストグループの各メンバーは、ＭＣＴに含まれるが、ノードは、グループのメンバーなしに、ＭＣＴの部分であり得る。従って、ノードのＧｒｏｕｐＳｔａｔｕｓおよびＴｒｅｅＳｔａｔｕｓは異なり得る。
【００５９】
本発明の異なった実施形態では、ＭＳＴは、幅が先か、または深さ優先で移動され得る。これが移動される態様は、ネットワークの規模、サブネット内のグループメンバーの位置等のファクタに依存し得る。
【００６０】
示された手順では、マルチキャストグループに追加されるノードがＳｅｎｄＯｎｌｙＭｅｍｂｅｒとして追加されるべき場合、グループのＭＣＴのＳｅｎｄＯｎｌｙＭｅｍｂｅｒが見出されると手順は終了し得る。追加されるノードがマルチキャストグループのＦｕｌｌＭｅｍｂｅｒであるべき場合、ＭＣＴのＦｕｌｌＭｅｍｂｅｒが位置特定されなければならない。しかしながら、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒが位置特定された場合、これは、ＦｕｌｌＭｅｍｂｅｒの検索を容易にするために用いられ得る。特に、検索は、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒからマルチッキャストグループメンバーの残りに至る経路に限定され得る。
【００６１】
動作２００において、マルチキャストグループのメンバーとしてネットワークノードを追加することを求めるリクエストが受信される。所望のメンバーシップステータス（例えば、ＦｕｌｌＭｅｍｂｅｒまたはＳｅｎｄＯｎｌｙＭｅｍｂｅｒ）は、リクエストに含まれるか、またはＧＳ（ノード）と呼ばれ得る。ノードは、リクエストされたステータスを有するグループに追加され、かつ、スタックまたはキューへの第１のエントリとしてキューに入れられる。キューまたはスタックは、検査されるべきノードを格納し、グループのＭＣＴへの経路を位置特定するために用いられ得る。新しいノードのＴｒｅｅＳｔａｔｕｓはまだ設定されない。
【００６２】
動作２０２において、新しいノード（すなわち、ＧＳ（新しいノード））の所望のグループメンバーシップステータスは、ノードの現在のＴｒｅｅＳｔａｔｕｓ（ＴＳ（新しいノード）と比較される。これらが相違する場合、この方法は、動作２０４に進む。そうでない場合、ノードは、所望のＧｒｏｕｐＳｔａｔｕｓの必要に応じてすでに構成されており、従って、この方法は終了する。図示するように、この方法は、さらに、ノードの現在のＴｒｅｅＳｔａｔｕｓがＦｕｌｌＭｅｍｂｅｒであり、かつ新しいグループメンバーシップがＳｅｎｄＯｎｌｙＭｅｍｂｅｒである場合に動作２０２で終了してもよい。
【００６３】
本発明のある代替的実施形態では、動作２００において新しいノードをキューに入れる代わりに、ノードは、動作２０２までキューに入れられず、かつ、動作２０２における比較が失敗した場合にのみキューに入れられる。
【００６４】
動作２０４は、キューまたはスタックへの各エントリを検査し、既存のＭＣＴへのルートが発見されたかどうかを決定するためにループを開始する。キューが空になるまで、図示された手順は、動作２０４〜２２０のいずれかまたはすべてを繰返す。キューが空になると、手順は動作２２２に進む。
【００６５】
本発明のある実施形態では、マルチキャストグループに第１のノードを追加する以外のときにキューが空である場合、エラーが信号で伝えられ得る。
【００６６】
動作２０６において、最も最近キューに配置されたエントリが検査のために除去され、かつ、ノードのピア（または、リンク先）が識別される。キューからデキューされたノードは、「現在のノード」と呼ばれ得る。この実施形態では、現在のノードのピアは、現在のノードにワンホップで接続されたすべての他のネットワークノードを含む。従って、スイッチである現在のノードは、多くのピア（例えば、本発明のある実施形態では２５６個まで）を有し得る一方で、チャネルアダプタまたはネットワークインターフェース回路である現在のノードは、わずか１つを有し得る。
【００６７】
最も最近キューに入ったノードを除去することによって、示された手順は、ネットワークの深さ優先の移動を適用する。本発明の別の実施形態では、幅優先での移動が適用される。
【００６８】
動作２０８では、現在のノードのピアのすべてが図２の手順によって検査されているかどうかが決定される。検査された場合、方法は、動作２０４に戻り、キューがここで空であるかどうかを決定する。検査されていない場合、方法は、動作２１０を継続する。
【００６９】
動作２１０では、現在のノードの検査されていないピアの１つが検査するために選択される。現在のノードが複数の検査されていないピアを有する場合、最小のポート数またはＧＩＤ、最小コストによるか、あるいは、任意の他の選択基準を通じて無作為に１つが選択され得る。
【００７０】
本発明のある実施形態では、ＦｕｌｌＭｅｍｂｅｒがマルチキャストグループに追加されている場合、一旦グループのＳｅｎｄＯｎｌｙＭｅｍｂｅｒが見つけ出されると、示された手順が改良され得る。特に、ＭＣＴがＦｕｌｌＭｅｍｂｅｒを見つけ出すために移動されると、ＳｅｎｄＯｎｌｙｍｅｍｂｅｒから、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒまたはＦｕｌｌＭｅｍｂｅｒであるピアのみが検査される必要がある。動作２０８および／または２１０は、この改良点を示すように改変され得る。
【００７１】
動作２１２では、新しいノードと選択されたピアとの間のリンクがネットワークのＭＳＴの部分であるかどうかが決定される。ネットワークのＭＳＴの部分でない場合、示された方法は、動作２０８に戻り、現在のノードの別のピアをチェックする。ネットワークのＭＳＴの部分である場合、示された方法は、動作２１４を継続する。
【００７２】
動作２１４では、方法は、選択されたピアのＴｒｅｅＳｔａｔｕｓが「フル」であるかどうかを決定する。フルである場合、手順は、グループのマルチキャストメッセージを送信および受信するようにすでに構成されたノードの位置を特定する。新しいノードは、この新しいノードに選択されたピアを結合することによってグループのＭＣＴに接続され得る。選択されたピアがＭＣＴのＦｕｌｌＭｅｍｂｅｒである場合、方法は、動作２２２に進み、ＦｕｌｌＭｅｍｂｅｒでない場合、方法は、動作２１６を継続する。
【００７３】
動作２１６において、方法は、選択されたピアのＴｒｅｅＳｔａｔｕｓおよび新しいノードのＧｒｏｕｐＳｔａｔｕｓの両方がＳｅｎｄＯｎｌｙＭｅｍｂｅｒであるかどうかを決定する。両方がＳｅｎｄＯｎｌｙＭｅｍｂｅｒである場合、方法は、グループのＭＣＴへの必要なタイプの接続を新しいノードに提供するように構成されるノードの位置を特定する。動作２１４のように、新しいノードは、選択されたピアに新しいノードを結合することによってノードのＧｒｏｕｐＳｔａｔｕｓのサポートで、グループのＭＣＴに接続され得る。選択されたピアがＭＣＴのＳｅｎｄＯｎｌｙＭｅｍｂｅｒであり、新しいノードのリクエストされたＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙＭｅｍｂｅｒである場合、方法は、動作２２２に進み、そうでない場合、方法は、動作２１８を継続する。
【００７４】
動作２１８において、選択されたピアがエンキューされる。この実施形態では、ピアと現在のノードとの間のリンクがネットワークＭＳＴの部分である場合のみ、現在のノードのピアがエンキューされる。これは、ＭＣＴがツリーのままであり、かつ、ループを含まないことの保証を支援する。
【００７５】
動作２２０において、方法は、選択されたピアのＴｒｅｅＳｔａｔｕｓがＳｅｎｄＯｎｌｙＭｅｍｂｅｒであるかどうか、および、新しいノードのＧｒｏｕｐＳｔａｔｕｓがＦｕｌｌＭｅｍｂｅｒであるかどうかを決定する。どちらかがノーであった場合、示された方法は、動作２０８に戻る。そうでない場合、両方がイエスであると決定された場合、現在のノードの他のピアが検査される必要はない。なぜなら、選択されたピアは、ＦｕｌｌＭｅｍｂｅｒでなくてもＭＣＴに新しいノードを結合するために用いられ得るからである。
【００７６】
動作２２２において、方法は、新しいノードのＧｒｏｕｐＳｔａｔｕｓをサポートするために、グループのＭＣＴの適切なメンバーであるネットワークノードの位置を特定することに成功している。従って、ネットワークのＭＳＴを新しいノードと最後に選択されたノードとの間に移動させる経路内のネットワークノードごとに、これらのネットワークノードのＴｒｅｅＳｔａｔｕｓが新しいノードのリクエストされたグループステータス（すなわち、ＦｕｌｌＭｅｍｂｅｒまたはＳｅｎｄＯｎｌｙＭｅｍｂｅｒ）にセットされる。これにより、ＭＣＴの１つ以上のメンバーが、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒステータスからＦｕｌｌＭｅｍｂｅｒステータスに変更され得る。選択および検査された最後のノードは、ＦｕｌｌＭｅｍｂｅｒであり、新しいノードは、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒステータスを有するグループに追加され、後者は、ＳｅｎｄＯｎｌｙＭｅｍｂｅｒに格下げされる必要がない。
【００７７】
従って、新しいノードがマルチキャストグループに追加される場合、これは、１つ以上のリンクを介してグループのＭＣＴに結合される。これらのリンクのリンク先のポートは、オンまたはオフにされ、これに対応して相手先のＭＦＴが更新される。
【００７８】
例えば、新しいノードがグループのＦｕｌｌＭｅｍｂｅｒとして追加された場合、新しいノードをＭＣＴに結合するリンクごとに、リンクのリンク先のポートがオンにされ、双方向通信を可能にする。しかしながら、新しいノードがＳｅｎｄＯｎｌｙＭｅｍｂｅｒとして追加される場合、１つ以上のリンク先のポートがオフにされ得る（か、またはオフの状態のままである）。なぜなら、新しいノードは、グループのマルチキャストメッセージを受信することを必要としない。動作２２２の後、方法は終了する。
【００７９】
マルチキャストグループから除去された場合、ＦｕｌｌＭｅｍｂｅｒまたはＳｅｎｄＯｎｌｙＭｅｍｂｅｒがＮｏｎＭｅｍｂｅｒ  ＧｒｏｕｐＳｔａｔｕｓに変更される。しかしながら、このノードがマルチキャストメッセージをルーティングするために必要とされた場合、中間ノードは、ＭＣＴに留まり得る。例えば、チャネルアダプタまたは他のネットワークインターフェースアダプタであるメンバーがマルチキャストグループから除去された場合、メンバーをＭＣＴの残りに結合するスイッチ（単数または複数）は、これらが、除去されるメンバーにメッセージをルーティングする目的のためにのみメンバーであった場合、グループおよびＭＣＴから除去され得る。あるいは、スイッチは、グループのＮｏｎＭｅｍｂｅｒであり得る一方で、グループのＭＣＴのＳｅｎｄＯｎｌｙＭｅｍｂｅｒまたはＦｕｌｌＭｅｍｂｅｒであり続ける。
【００８０】
従って、メンバーが除去された場合にＭＣＴを切り捨てるために、ＭＣＴにあるスイッチノードの近傍でメッセージを転送したのはなぜか、これらのノードが依然としてこのようにされる必要があるのかどうかが決定されなければならない。例示的に、これは、スイッチのポートのどれだけがオンであり（グループメッセージを転送するために）、および、スイッチのピアのどれだけがスイッチにメッセージを転送するかを検査することによって行われ得る。
【００８１】
さらに、スイッチそれ自体がグループのメッセージを使うかどうかが決定され得る。通常、スイッチは、他のスイッチおよび接続されたエンドノードにメッセージを転送するようにのみ構成され、従って、グループのＦｕｌｌＭｅｍｂｅｒである必要がない。しかしながら、スイッチ上のマネージメントステーションまたは他のエンティティがメッセージを必要とした場合、スイッチは、グループのＦｕｌｌＭｅｍｂｅｒであり得、それに応じて、ピアノードを除去または格下げするプロセスが変更され得る。
【００８２】
図３は、本発明のある実施形態による、メンバーをマルチキャストグループから除去し、かつ、グループのＭＣＴを切り捨てる手順を示す。この実施形態では、示された方法は、ＧｒｏｕｐＳｔａｔｕｓがＮｏｎＭｅｍｂｅｒにセットされているメンバーが依然として他のメンバーのマルチキャストメッセージをルーティングすることを必要とするかどうかを決定する。図３に示される手順は、メンバーのＧｒｏｕｐＳｔａｔｕｓが、ＦｕｌｌＭｅｍｂｅｒからＳｅｎｄＯｎｌｙＭｅｍｂｅｒに格下げされるべき場合にも適用され得る。
【００８３】
概して、メンバーノードをグループから除去する場合、このノードをＭＣＴに結合するノードのポートがオフにされる。従って、他のポートがオンでない場合、ノードは、ＭＣＴから除去され得、かつ、任意のピアがＭＣＴから除去されるかどうかの決定が下される。１つのポートが依然としてオンである場合、そのポートがオフであり得るかどうかが決定される。２以上のポートが依然としてオンである場合、ノードは、メッセージをルーティングするためにＭＣＴに残る。
【００８４】
動作３００において、マルチキャストグループからメンバーを除去することを求めるリクエストが受信される。メンバーのＧｒｏｕｐＳｔａｔｕｓは、リクエストに特定されるようにか、または、デフォルトステータスの設定によってＮｏｎＭｅｍｂｅｒまたはＳｅｎｄＯｎｌｙＭｅｍｂｅｒに変更される。キューまたはスタックが開始され、かつ、出て行くメンバーが第１のエントリとしてキューに入れられる。
【００８５】
動作３０２において、ループが開始され、キューに入れられた各ノードを順番に検査する。キューが空である場合、本方法が終了し、キューが空でない場合、方法は、動作３０４にて継続する。
【００８６】
動作３０４において、キューにおけるトップノードが除去される。さらに、ノードのピアまたはリンク先が識別され得る。
【００８７】
動作３０６において、現在のノードの今のＧｒｏｕｐＳｔａｔｕｓが検査される。ノードがマルチキャストグループのＦｕｌｌＭｅｍｂｅｒである場合、変更されず、示された方法が動作３０２に戻り、そうでない場合、方法は、動作３０８にて継続する。
【００８８】
動作３０８において、現在、ノードからのグループマルチキャストメッセージを転送するように構成されているノードのローカルポートの数が識別され、ＮｕｍＰｏｒｔｓと呼ばれ得る。
【００８９】
動作３１０において、ノードが複数のオンのローカルポートを有するかどうか（すなわち、ノードは、現在、グループマルチキャストメッセージを複数のピアに転送しているかどうか）が決定される。転送している場合、現在のノードは、改変されることを必要とせず、方法は、動作３０２に戻る。
【００９０】
そうでない場合、動作３１２において、オンであるローカルポートの数が考えられる。現在、グループマルチキャストメッセージをピアノードに転送しているローカルポートがない場合、方法は、動作３１４を継続する。１つのローカルポートがメッセージをピアに転送している場合、方法は、動作３１８に進む。
【００９１】
動作３１４において、現在のノードは、任意のピアにメッセージをルーティングしない。従って、任意のピアのポートまたはメッセージがこのノードに送信された隣接ポートがオフにされ得る。さらに、このような各ピアは、ピアが、または、そのピアのいずれかがさらに改変されるかどうかを決定するためにキューに追加される。
【００９２】
動作３１６において、現在のノードのＴｒｅｅＳｔａｔｕｓは、ＮｏｎＭｅｍｂｅｒにセットされる。示された方法は、その後、状態３０２に戻る。
【００９３】
動作３１８において、現在のノードのローカルポートのうちの１つだけがオンであることが決定され、従って、ノードは、現在、グループマルチキャストメッセージをただ１つのピアに転送するように構成されている。しかしながら、現在のノードは、他のピアにメッセージをルーティングしないので、単一のピアからメッセージを受取る必要がない。従って、現在のノードへのピアのポートは、（オンである場合は）オフにされ得る。さらに、ピアがキューに追加される。ピアのポートはすでにオフであり得る。例えば、現在のノードのＧｒｏｕｐＳｔａｔｕｓがＳｅｎｄＯｎｌｙＭｅｍｂｅｒである場合、および、これがただ１つのポートにしか送信しない場合、そのポートのリンク先からメッセージを受取らず（受取る必要がなく）、リンク先の対応するポートはすでにオフであり得る。
【００９４】
動作３２０において、方法は、現在のノードにメッセージを送信する任意のピアがあるかどうか、および、ノードの現在のＧｒｏｕｐＳｔａｔｕｓがＮｏｎＭｅｍｂｅｒであるかどうかを決定する。両方の条件が存在する場合、方法は、動作３２２を継続し、そうでない場合、方法は、動作３２４に進む。
【００９５】
動作３２２において、現在のノードにグループマルチキャストメッセージをルーティングするピアはない。さらに、ノードＧｒｏｕｐＳｔａｔｕｓが、ノードそれ自体がメッセージを生成しないことを意味するＮｏｎＭｅｍｂｅｒである。従って、ノードは、任意の他のノードにメッセージを送信する必要はなく、オンであったノードのポートがオフにされ得、ノードのＴｒｅｅＳｔａｔｕｓがＮｏｎＭｅｍｂｅｒにセットされ得る。示された方法が動作３０２に戻る。
【００９６】
動作３２４において、依然として現在のノードに送信する少なくとも１つのピアがあるか、または、ノードのＧｒｏｕｐＳｔａｔｕｓは、ＮｏｎＭｅｍｂｅｒでない。どちらの場合も、ノードのＴｒｅｅＳｔａｔｕｓはＳｅｎｄＯｎｌｙＭｅｍｂｅｒにセットされる。その後、方法は、動作３０２に戻る。
【００９７】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【００９８】
（要約）
マルチキャスト通信グループにおけるメンバーシップを効率的に管理するシステムおよび方法が開示される。このシステムは、任意の数のエンドノード（例えば、チャネルアダプタ、ネットワークインターフェースアダプタ）、およびルーティングノード（例えば、スイッチ）を備え得、この方法は、任意のノードに結合されたプロセッサによって実現され得る。ネットワークにおける各ノードは、マルチキャストグループ、および／または、グループのマルチキャスト通信をルーティングするマルチキャストツリー（ＭＣＴ）のメンバーであり得る。ノードは、グループのメンバーがツリーのメンバーであることを必要としない。ＭＣＴに含まれるネットワークリンクは、ネットワークＭＳＴ（ｍｉｎｉｍｕｍ  ｓｐａｎｎｉｎｇ  ｔｒｅｅ）のサブセットである。ノードがグループに追加された場合、ＭＣＴ内のノードが見つけ出されるまで、ＭＳＴがノードから検索される。メンバーがグループから除去されるたびにＭＣＴが切り捨てられて、不必要な通信を低減する。
【図面の簡単な説明】
【００９９】
【図１】図１は、本発明のある実施形態による、マルチキャスト通信サブネットワークを動的および効率的に維持するシステムシステムを示すブロック図である。
【図２】図２は、本発明のある実施形態による、マルチキャストグループにノードを追加する方法を示すフローチャートである。
【図３】図３は、本発明のある実施形態による、マルチキャストグループからノードを除去する方法を示すフローチャートである。
【符号の説明】
【０１００】
１０２  リソースマネージャ
１１２  サブネットマネージャ
１１４  サブネットアドミニストレータ
１１６  サブネットマネジメントコーディネータ
【図１】
2005094767.tif 000003
【図２】
2005094767.tif 000004
【図３】
2005094767.tif 000005