(57)【特許請求の範囲】
【請求項１】
配信遅延量を設定する手段と、
前記設定する手段により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成する手段と、
を有することを特徴とするマルチキャストシステム。
【請求項２】
前記マルチキャストツリーを構成する手段は、
前記設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことを特徴とする請求項１記載のマルチキャストシステム。
【請求項３】
前記マルチキャストツリーを構成する手段は、
前記設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことを特徴とする請求項１記載のマルチキャストシステム。
【請求項４】
前記マルチキャストツリーを構成する手段は、
マルチキャストツリーに参加しているノードが離脱する場合に、最後に接続したノードを、ノードが離脱したことによって孤立したノードの親の位置に再接続させるようにマルチキャストツリーを構成することを特徴とする請求項１乃至３いずれか１項記載のマルチキャストシステム。
【請求項５】
マルチキャストツリーに参加しようとするノードから参加要求メッセージを受信するステップと、
現在のマルチキャストツリーの構成を確認するステップと、
所定の配信遅延量に対して遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるように参加要求メッセージを送信したノードの接続先ノードを決定するステップと、
参加要求メッセージを送信してきたノードに対し、前記接続先ノードの情報を含む参加応答メッセージを送信するステップと、
を含むことを特徴とするマルチキャストツリー構成方法。
【請求項６】
マルチキャストツリーに参加しているノードから離脱要求メッセージを受信するステップと、
離脱応答メッセージを送信するステップと、
前記離脱前のマルチキャストツリーの構成を確認するステップと、
前記離脱によりマルチキャストツリーから孤立するノードが発生するかどうかを確認するステップと、
前記孤立するノードが発生する場合に、最後にマルチキャストツリーに参加したノードを検索するステップと、
前記最後にマルチキャストツリーに参加したノードに対して前記離脱が発生したノードへの移動要求メッセージを送信するステップと、
移動応答メッセージを受信するステップと、
をさらに含むことを特徴とする請求項５記載のマルチキャストツリー構成方法。
【請求項７】
コンピュータに請求項５又は６のマルチキャストツリー構成方法を実行させることを特徴とするプログラム。
【請求項８】
マルチキャストツリーのルートノードであって、
マルチキャストツリーが守るべき配信遅延量を設定する遅延量設定機能部と、
前記遅延量設定機能部により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成するツリー構成演算機能部と、
を有することを特徴とするマルチキャストツリーのルートノード。
【請求項９】
マルチキャストツリーに参加を希望するノードから受信した参加要求メッセージを処理して前記ツリー構成演算機能部に伝え、前記ツリー構成演算機能部が決定した前記参加を希望するノードの接続先となるノードの情報を含む応答メッセージを生成する参加受付機能部と、をさらに含むことを特徴とする請求項８記載のマルチキャストツリーのルートノード。
【請求項１０】
マルチキャストツリーに参加しているノードから受信した離脱要求メッセージを処理して前記ツリー構成演算機能部に伝える離脱受付機能部をさらに備え、
前記ツリー構成演算機能部は、前記離脱要求メッセージが伝えられたときに前記離脱によって孤立するノードの有無を判定し、孤立するノードが発生する場合には、最後に接続したノードを、前記離脱により孤立したノードの親の位置に再接続させることを決定し、
前記離脱受付機能部は、前記ツリー構成演算機能部の決定に基づき、前記最後に接続したノードに対して前記再接続させる位置への移動を要求するメッセージを送信することを特徴とする請求項８又は９記載のマルチキャストツリーのルートノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチキャストシステム、マルチキャストツリー構成方法、及びプログラムに関する。特に、データの配信遅延時間を制御するマルチキャストシステム、マルチキャストツリー構成方法、及びプログラムに関する。
【背景技術】
【０００２】
ＷＥＢサーバーの更新情報や、センサなどが生成するデータを多数の機器に配信する際に、データの配信元をルートとするマルチキャストツリーを用いて配信するマルチキャストシステムがある。
【０００３】
このマルチキャストツリーは、そのデータを利用するノードで構成される論理ネットワークで、配信元毎に作成する場合や、１つのマルチキャストツリーを共有する場合がある。データはマルチキャストツリーの構成に従ってノード間を転送される。
【０００４】
マルチキャストツリー構成方法に関して、多量の利用者に対しリアルタイムにデータを配信するためのマルチキャストツリーを構築する手段がいくつか提案されている。
【０００５】
例えば、特許文献１では、ノードのＣＰＵ使用率、メモリ利用率、ＣＰＵスペック、物理的近傍度、生存時間といった情報を周囲のノードと交換し、周囲から受信する複数の情報を比較評価することによって、マルチキャストツリーを構築する手段が開示されている。なお、「物理的近傍度」は、ノードとノードとの間でピア間接続動作の応答時間を測定することにより得ることができる。また、「生存時間」は、１回の接続でその端末のネットワークへの平均接続時間を、平均生存時間とすることができる。
【０００６】
また、特許文献２では、ホップ数（段数）またはある時刻における到着パケットのシーケンス番号の推定値で評価し、マルチキャストツリーを構築する手段が開示されている。
【０００７】
さらに、特許文献３では、複数のノードにより構成されるネットワークにおいて、与えられた始点ノードから複数の終点ノードまでのマルチキャスト転送経路を求めるためのマルチキャスト転送経路計算方法であって、ネットワークのトポロジ情報と遅延情報とを用いて、始点ノードから終点ノードまでの遅延最小経路を各終点ノード毎に求め、始点ノードと各終点ノードまでの複数の遅延最小経路のうちの１つの遅延最小経路上のノードを、マルチキャスト転送における集約点ノードの候補ノードとして選択し、各候補ノードに対し、候補ノードから終点ノードまでの遅延最小経路を各終点ノード毎に算出し、各終点ノード毎の複数の遅延最小経路の遅延のうちの最大値と最小値との差を求め、誤差が最小となる候補ノードを集約点ノードとして選択し、始点ノードから集約点ノードまでの遅延最小経路と、集約点ノードから各終点ノードまでの各遅延最小経路とをマルチキャスト転送経路として出力する。上記特許文献３によれば、マルチキャスト転送経路の計算速度の向上を実現し、また、ユーザ間遅延分散の削減を可能とすることができると記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２５２５９６号公報
【特許文献２】特開２００４−２４６７９０号公報
【特許文献３】特開２００４−２０８２８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以下の分析は、本発明によって与えられたものである。
【００１０】
上述した従来技術では、マルチキャストシステムにおける配信遅延のばらつきがないように、すばやく柔軟にマルチキャストツリーを設定することが難しい。
【００１１】
一般に、マルチキャストツリーに参加しているノードは、マルチキャストツリー上の位置により、データを受け取るタイミングが異なる。その結果マルチキャストツリーにおける配信遅延のばらつきが大きくなってしまうためである。特許文献３には、配信遅延のばらつきを抑えるようにルートを選択するものが記載されているが、ルートの選択によって配信遅延のばらつきを抑えるのには、全てのノードにおいて多数あるルートから最適なルートを選択するという調整が必要になる。結果として調整に時間がかかるため、配信遅延のばらつきがないようにすばやく柔軟にマルチキャストツリーを設定できない。
【００１２】
本発明は、このような事情を考慮してなされたものであり、その第１の目的は、ばらつきを小さくするための遅延の調整を少なくし、マルチキャストツリーに参加するノードの配信遅延のばらつきの小さいマルチキャストツリーを、すばやく柔軟に構築することができるマルチキャストシステムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の視点によれば、配信遅延量を設定する手段と、前記設定する手段により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成する手段と、を有するマルチキャストシステムが提供される。
【００１４】
本発明の第２の視点によれば、マルチキャストツリーに参加しようとするノードから参加要求メッセージを受信するステップと、現在のマルチキャストツリーの構成を確認するステップと、所定の配信遅延量に対して遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるように参加要求メッセージを送信したノードの接続先ノードを決定するステップと、参加要求メッセージを送信してきたノードに対し、前記接続先ノードの情報を含む参加応答メッセージを送信するステップと、を含むマルチキャストツリー構成方法が提供される。
【００１５】
本発明の第３の視点によれば、コンピュータに上記第２の視点によるマルチキャストツリー構成方法を実行させるプログラムが提供される。
【００１６】
本発明の第４の視点によれば、マルチキャストツリーのルートノードであって、マルチキャストツリーが守るべき配信遅延量を設定する遅延量設定機能部と、前記遅延量設定機能部により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成するツリー構成演算機能部と、を有するマルチキャストツリーのルートノードが提供される。
【発明の効果】
【００１７】
本発明の各視点によれば、ばらつきを小さくするための遅延の調整を少なくし、マルチキャストツリーに参加するノードの配信遅延のばらつきの小さいマルチキャストツリーを、すばやく柔軟に構築することができる。その理由は、遅延ばらつきを小さくするための遅延量の調整が不要になるノードができるだけ多く存在するようにマルチキャストツリーを構成していくことにより、指定された配信遅延量のノード、すなわち調整量が０となるノードの数を最大にすることができるためである。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態によるマルチキャストツリー１の構成例を示す概念図である。
【図２】一実施形態によるマルチキャストツリー１の構成例を示す概念図である。
【図３】一実施形態により（ａ）、（ｂ）、（ｃ）の順にマルチキャストツリーを構築していく過程を示す図面である。
【図４】一実施形態によるルートノードの構成を示すブロック図である。
【図５】一実施形態によるノードの構成を示すブロック図である。
【図６】一実施形態において、参加を要求するノードがあった場合にルートノードがマルチキャストツリーのトポロジを変更する処理を示すフローチャートである。
【図７】一実施形態において、離脱するノードがあった場合にルートノードがマルチキャストツリーのトポロジを変更する処理を示すフローチャートである。
【発明を実施するための形態】
【００１９】
本発明の実施形態の概要について説明する。なお、この概要に付記する図面参照符号は専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。
【００２０】
本発明の一実施形態によるマルチキャストシステム（図１参照）は、配信遅延量を設定する手段（１１５）と、設定する手段により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成する手段（１１４）と、を有する。設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーを構成するので、マルチキャストツリーに対して参加ノード、離脱ノードが発生した場合においても、ばらつきを小さくするための遅延の調整を少なくすることができる。
【００２１】
一実施形態に示すように、マルチキャストツリーを構成する手段（１１４）は、設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことにより、遅延量の調整が不要になるノードの数が最大になるようにしてもよい。
【００２２】
また、一実施形態に示すように、マルチキャストツリーを構成する手段（１１４）は、設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、上記子ノードのうち、最も配信遅延量の大きい子ノードからさらに設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことによって、遅延量の調整が不要になるノードの数が最大になるようにしてもよい。
【００２３】
さらに、マルチキャストツリーを構成する手段（１１４）は、マルチキャストツリーに参加しているノードが離脱する場合に、最後に接続したノードを、ノードが離脱したことによって孤立したノードの親の位置に再接続させるようにマルチキャストツリーを構成することが好ましい。最後に接続したノードは子ノードを持たないので、再接続により他のノードに影響を与えることがないからである。
【００２４】
以上で概要の説明を終了し、以下、より具体的な実施の形態について、図面を参照して詳しく説明する。
【００２５】
［第１の実施形態］
図１は、第１の実施形態によるマルチキャストツリー１の構成例を示す概念図である。
図１において、マルチキャストツリー１は、ルートノード１００と複数のノード２００とを有し、論理ネットワークを構成している。ルートノード１００を四角形の記号を表し、ルードノード以外のノード２００を円形の記号で表している。
【００２６】
図２には、図１のマルチキャストツリー１について、ルートノード１００及び各ノード２００のＩＤを示す。図２に示すとおり、ルートノード１００（ノードｎ２）を頂点とし、ルートノード１００の配下にノード２００であるノードｎ８、ノードｎ３５、ノードｎ４７、ノードｎ３１があり、ノードｎ８の配下にノードｎ３、ノードｎ２９、ノードｎ４４があるというような、ツリー構造の状態で接続されている。
【００２７】
各ノード２００は、ルートノード１００、及び／又は、１つ以上のノード２００と接続する。各ノード２００は、上流に接続しているルートノード１００、またはノード２００からデータを受信した場合に、マルチキャストツリー１での下流にあるノード２００にデータを転送する。
【００２８】
図３は、第１の実施形態において、ノードを追加してマルチキャストツリー１を構築する過程について説明する図面である。図３では、図３（ａ）、図３（ｂ）、図３（ｃ）の順番にノード２００を追加することにより、マルチキャストツリー１を構築している。図３では、配信遅延のばらつきを小さくするための調整をできるだけ少なくするようにノードを追加している。
【００２９】
なお、図３において、各ノードに示す符号は左から順に、「ノードＩＤ」、「配信遅延量」、「追加ノード推定遅延量」、「遅延調整量」である。ここで、「配信遅延量」とは、データ配信の遅延量である。また、「追加ノード推定遅延量」とは、そのノードに新たにノードが接続してきた場合の、その新規に接続してきたノードの推定遅延量であって、新規にマルチキャストツリーに接続するノードが接続先を選択する場合の目安とする数値である。「遅延調整量」とは、指定された遅延量とするため指定された遅延量と配信遅延量の差分で表現できる遅延の調整量である。
【００３０】
図３の例では、目標遅延量は４で、例えばｎ９は配信遅延量が４で調整不要であるため遅延調整量は０、ｎ８の配信遅延量は１であるため目標遅延量４との差分である３が遅延調整量となる。この調整をすることにより、マルチキャストツリー１に接続しているノード２００は、遅延のばらつきが小さくデータの処理タイミングを合わせることができる。
【００３１】
あるノードｉの配信遅延量をＤ＿ｉ、１世代下のｊ番目のノードへデータを配信するための処理遅延量をＤＰ＿ｉｊ、前記ノードｉとその１世代下のｊ番目のノード間のネットワーク遅延をＤＮ＿ｉｊとすると、ノードｉの１世代下のｊ番目のノードの配信遅延量  Ｄ＿ｉｊは、式１で表すことができる。
Ｄ＿ｉｊ＝Ｄ＿ｉ＋ＤＰ＿ｉｊ＋ＤＮ＿ｉｊ      （式１）
【００３２】
ここで、Ｐ＿ｉ０を、ノードｉがノードｉの親ノードからパケットを受信してから配下１番目の１世代下のノードへデータを送信するまでのノード内転送処理遅延、Ｐ＿ｉｊをノードｉにおける配下ｊ番目の１世代下のノードへデータを送信してから配下ｊ＋１番目の１世代下のノードへデータを送信するまでのノード内転送処理遅延とすると、１世代下のｊ番目のノードへデータを配信するための処理遅延量ＤＰ＿ｉｊは、
ＤＰ＿ｉｊ＝ＤＰ＿ｉ（ｊ−１）＋Ｐ＿ｉ（ｊ−１）
ＤＰ＿ｉ１＝Ｐ＿ｉ０
と書ける。
【００３３】
このとき、ノードｉにおける配下ノード間、および配下ノードへのデータ送信処理に差分がないとすると式１は簡略化することができる。さらにノードｉがノードｉの親ノードからパケットを受信してから配下１番目の１世代下のノードへデータを送信するまでのノード内転送処理遅延は、他の配下のノードへのノード内転送処理遅延に比べて十分小さいことも踏まえる。具体的には、
Ｐ＿ｉ０＝０、
かつ
Ｐ＿ｉ１＝Ｐ＿ｉ２＝Ｐ＿ｉ３  …  、
かつ
ＤＮ＿ｉ１＝ＤＮ＿ｉ２＝ＤＮ＿ｉ３＝ＤＮ＿ｉ４  …
と仮定出来る時、
式１は、式２のように簡略化できる。
Ｄ＿ｉｊ＝Ｄ＿ｉ＋ＤＰ＿ｉ×（ｊ−１）＋ＤＮ＿ｉ      （式２）
【００３４】
式２において、ＤＰ＿ｉは、ノードｉにおける１回のデータ転送に掛かる処理遅延である。また、ＤＮ＿ｉはノードｉにおける１世代下のノードへのネットワーク遅延である。この値は、例えば、実際の処理遅延、配信遅延、ノードの処理能力（ＣＰＵ速度、ＣＰＵ利用率）、代表的な配下のノードまたは１世代上のノードの値、から静的または動的に算出する。
【００３５】
さらに、マルチキャストツリーに参加するどのノードにおいても、
ＤＰ＿１＝ＤＰ＿２＝  …  ＝ＤＰ、
かつ
ＤＮ＿１＝ＤＮ＿２＝  …  ＝ＤＮ
と仮定できる場合、式２をさらに簡略化することができる。すなわち、式３にように表すことができる。
Ｄ＿ｉｊ＝Ｄ＿ｉ＋ＤＰ×（ｊ−１）＋ＤＮ      （式３）
【００３６】
式３において、ＤＰは、１回のデータ転送に掛かる処理遅延である。また、ＤＮは１世代下のノードへのネットワーク遅延である。この値は、例えば、実際の処理遅延、配信遅延、ノードの処理能力（ＣＰＵ速度、ＣＰＵ利用率）、任意のノードの値、から静的または動的に算出する。
【００３７】
図３の例ではルートノードｎ２の配信遅延量を０として、式３を適用し、かつＤＰ＝ＤＮ＝１とした場合を示している。例えば、ルートノードｎ２は０、配下１番目のノードｎ８は１、続いてデータを受信するノードｎ３は２、となる。
【００３８】
また、具体的には、「追加ノード推定遅延量」とは、そのノードに新たにノードが接続してきた場合の、その新規に接続してきたノードの推定遅延量と定義する。新規に接続するノードや、接続先を変更するノードにとって、新たに接続するノードの配信遅延量が小さいノードに接続した方が、より配信遅延が小さいことになる。新たに接続するノードの推定遅延量を式で表現する場合、新たに接続するノードがノードｉのｎ番目の子供になるとして、あるノードｉの配信遅延量をＤ＿ｉ、ノードｉの新たに接続するノードの推定遅延量をＤ＿ｉｎ、新規ノードが接続した場合のそのノードへデータを配信するまでの処理遅延の推定値をＤＰ＿ｉｎ、新規ノードが接続した場合のネットワーク遅延の推定値をＤＮ＿ｉｎとすると、式４で表すことができる。
Ｄ＿ｉｎ＝Ｄ＿ｉ＋ＤＰ＿ｉｎ＋ＤＮ＿ｉｎ      （式４）
【００３９】
ここで、式１から式２の導出と同様に、ノードｉにおける配下ノード間、および配下ノードへのデータ送信処理に差分がないとすると、式４は簡略化することができる。さらにノードｉがノードｉの親ノードからパケットを受信してから配下１番目の１世代下のノードへデータを送信するまでのノード内転送処理遅延は、他の配下のノードへのノード内転送処理遅延に比べて十分小さいことも踏まえる。具体的には、
Ｐ＿ｉ０＝０、
かつ
Ｐ＿ｉ１＝Ｐ＿ｉ２＝Ｐ＿ｉ３  …  、
かつ
ＤＮ＿ｉ１＝ＤＮ＿ｉ２＝ＤＮ＿ｉ３＝ＤＮ＿ｉ４  …
と仮定出来る時、式４は、式５のように簡略化できる。
Ｄ＿ｉｎ＝Ｄ＿ｉ＋ＤＰ＿ｉ×（ｎ−１）＋ＤＮ＿ｉ      （式５）
【００４０】
さらに、式２から式３の導出と同様に、マルチキャストツリーに参加するどのノードにおいても、
ＤＰ＿１＝ＤＰ＿２＝  …  ＝ＤＰ、
かつ
ＤＮ＿１＝ＤＮ＿２＝  …  ＝ＤＮ
と仮定できる場合、式５において、現在の子ノードの数をｃとしてさらに簡略化すると、式６が得られる。
Ｄ＿ｉｎ＝Ｄ＿ｉ＋ＤＰ×ｃ＋ＤＮ      （式６）
【００４１】
図３の例では、ルートノードｎ２の配信遅延量を０として、式３および式６を適用し、かつＤＰ＝ＤＮ＝１とした場合の、配信遅延量を４以内かつ、配信遅延量のばらつきを小さくするための調整を不要とするノードができるだけ多くなるようにマルチキャストツリー１を構成していく例を示している。構成方法としては、マルチキャストツリー１の深さを優先する構成方法、子ノード数を優先する構成方法、とその２つの組み合わせがあるが、図３（ａ）〜（ｃ）では深さを優先する構成方法を示している。
【００４２】
深さを優先する構成方法とは、具体的には、指定された配信遅延量になるまで、ツリーの形状を深くしていき、深い位置から順に、指定された配信遅延量を超えない最大の配信遅延量となる位置から順にノードを接続させていく。図３では、まず、ｎ２、ｎ８、ｎ３、ｎ１８、ｎ９まで深くしていく。この状態が図３（ａ）である。図３（ａ）において、ｎ９で配信遅延量が指定された配信遅延量４になったため、次のノードｎ２３は、できるだけ深い位置で新たに接続するノードの推定遅延量が４の位置、すなわちｎ３の配下にｎ２３が接続する（図３（ｂ）参照）。次のノードｎ２９は、新たに接続するノードの推定遅延量が４のノードがないため、新たに接続するノードの推定遅延量が３のノードの配下に接続する。すなわちｎ２９はｎ８の配下に接続する。すると、ｎ８とｎ２９の新たに接続するノードの推定遅延量が４になる。次のノードｎ１５は、深さを優先しているため、ｎ２９の配下に接続する。次のノードｎ４４をｎ８の配下に接続する。
【００４３】
子ノード数を優先する構成方法とは、具体的には、指定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、末子の位置から順に、指定された配信遅延量を超えない最大の配信遅延量となる位置から順にノードを接続させていく。この子ノード数を優先する構成方法を取った場合、図３（ｃ）において、ルートノードｎ２に新しいノードが接続される順番を示すと、ｎ２→ｎ８→ｎ３５→ｎ４７→ｎ３１→ｎ５→ｎ２０→ｎ２２→ｎ１１→ｎ３→ｎ２９→ｎ４４→ｎ１５→ｎ１８→ｎ２３→ｎ９の順番になる。すなわち、ルートノードｎ２の４番目の子ノードｎ３１を設けた後は、ルートノードｎ２にはそれ以上配信遅延時間の範囲内で子ノードを増やないので、子ノードｎ８、ｎ３５、ｎ４７、ｎ３１のいずれかに子ノードを設けることになる。この子ノードｎ８、ｎ３５、ｎ４７、ｎ３１のうち、子ノードを最も多く設けられるのはｎ８であるが、本実施形態では、末子（最も配信遅延量の大きい子ノード）であるｎ３１から、ｎ３１→ｎ４７→ｎ３５→ｎ８の順に子ノードの接続を検討し、指定された配信遅延量を超えない最大の配信遅延量となる位置から順にノードを接続させていく。
【００４４】
あるノードが離脱する場合は、離脱によって孤立するノードが生じる場合には、最後に接続したノードを、ノードが離脱したことによって孤立したノードの親の位置に再接続させる。最後に接続したノードは子ノードを持たないため、接続位置を移動させても問題は発生せず、マルチキャストツリー１の構成も大幅に変化しない。このように再構成することで、ノードが離脱した場合でもマルチキャストツリーの特性を維持できる。
【００４５】
この手法においては、指定された配信遅延量を満たすマルチキャストツリー１のノード数には制限がある。式３および式６を適用し、かつＤＰ＝ＤＮ＝１とした場合、ある配信遅延量ｉ（ｉ＞０）を満たすことのできるノード数の最大数をＮｉとすると、
Ｎｉ＝２のｉ乗
となる。
【００４６】
このとき、調整不要になる調整量０のノード数Ｍｉは、
Ｍｉ＝２の（ｉ−１）乗
である。
【００４７】
なおＮｉおよびＭｉは上記モデルにおける最大数であるため、実際の配送遅延量や１ノードあたりに接続可能なノード数に制限がある場合にはこの限りではない。
【００４８】
このような手法で、遅延ばらつきを小さくするための遅延量の調整が不要になるノードができるだけ多く存在するようにマルチキャストツリー１を構成していくことにより、指定された配信遅延量のノード、すなわち調整量が０となるノードの数が最大になるため、遅延ばらつきを小さくするための調整を少なくマルチキャストツリー１を構成することができる。
【００４９】
図４は、第１の実施形態によるルートノード１００の構成を示すブロック図である。図４において、ルートノード１００は、主制御部１１０とネットワークインターフェイス１２０と、ノード情報データベース１２１と、を有する。主制御部１１０は、ＣＰＵ、ＲＡＭ、及びＯＳなどで構成されたコンピュータの主要部であり、主制御部１１０の中に、コンピュータをマルチキャストシステムのルートノードとして機能させるプログラムを動作させることにより、主制御部１１０を、送受信部１１１と、参加受付機能部１１２と、離脱受付機能部１１３と、ツリー構成演算機能部１１４と、遅延量設定機能部１１５、として機能させることができる。また、ノード情報データベースは、コンピュータの記憶部に記憶する。なお、上記プログラムは、フラッシュメモリなどの不揮発性半導体記憶装置、ハードディスクなどの磁気記録媒体、ＤＶＤやブルーレイディスクなどの光記録媒体をはじめとする記録媒体に記録することができる。
【００５０】
ノード情報データベース１２１は、マルチキャストツリー１におけるノード情報を保存する。ノード情報とは、ノード２００を一意に識別するノードＩＤ、ＩＰアドレス、ポート番号など他のノード２００とメッセージを送受信するために必要な情報であり、マルチキャストツリー１のツリー構造における全てのノード２００の情報である。また、ノード情報データベース２２１には各ノードの配信遅延量と、新たに接続するノードの推定遅延量（追加ノード推定遅延量）と、遅延調整量、マルチキャストツリー１に参加した日時も保存される。
【００５１】
送受信部１１１は、ネットワークインターフェイス１２０を介して、ノード２００からのメッセージを受信して、メッセージ種別を見た上で、参加受付機能部１１２または離脱受付機能部１１３に送る。
【００５２】
また、送受信部１１１は、参加受付機能部１１２または離脱受付機能部１１３からメッセージを受け取り、メッセージに記載されている宛先であるノード２００にネットワークインターフェイス１２０を介してメッセージを送信する。
【００５３】
参加受付機能部１１２は、新規にマルチキャストツリー１に参加するノードからの参加要求メッセージを処理する。具体的には、ノード２００から参加要求メッセージを受信すると、メッセージをツリー構成演算機能部１１４に送り、演算結果を参加応答メッセージに含めて返信する。ここで、参加要求メッセージには、新規に参加するノード２００のノード情報が含まれる。また、参加応答メッセージには新規に参加するノード２００の接続先となるノード２００のノード情報が含まれる。
【００５４】
離脱受付機能部１１３は、マルチキャストツリー１に既に参加しているノードからの離脱要求メッセージを処理する。具体的には、ノード２００から離脱要求メッセージを受信すると、離脱応答メッセージを返信する。さらに、メッセージをツリー構成演算機能部１１４に送り、ノード２００の離脱により孤立したノードが存在する場合は、最後に接続したノードを、ノードが離脱したことによって孤立したノードの親の位置に再接続させるため、移動要求メッセージを該当するノード２００に送信する。その後そのノード２００から移動応答メッセージを受信すると、そのメッセージをツリー構成演算機能部１１４に送る。ここで、離脱要求メッセージには、離脱するノード２００のノード情報が含まれる。また、離脱応答メッセージにはメッセージ受理を示す情報が含まれる。移動要求メッセージには、移動を要求するノード２００のノード情報と、移動先となるノード２００のノード情報が含まれる。さらに、移動応答メッセージには移動完了を示す情報が含まれる。
【００５５】
ツリー構成演算機能部１１４は、マルチキャストツリー１の構成を管理し、構成を変更しなければならない場合に、マルチキャストツリー１の構成を演算する。具体的には、参加受付機能部１１２から参加要求メッセージを受信した場合、ノード情報データベース１２１からノード情報を読みマルチキャストツリーの構成を確認する。その後、前記深さを優先する構成方法または子ノード数を優先する構成方法またはその両方の組み合わせ方法で新規に参加するノード２００の接続先を決定し、新規に参加するノード２００の接続先となるノード２００のノード情報を参加受付機能部１１２に応答する。さらに、新規に参加するノード２００のノード情報について、接続先情報も含めてノード情報データベース１２１を更新する。ここで、新規に参加するノード２００の接続先を決定する際、遅延量設定機能部１１５からの指定された遅延量を演算に用いる。
【００５６】
さらに、ツリー構成演算機能部１１４は、離脱受付機能部１１３から離脱要求メッセージを受信した場合、ノード情報データベース１２１からノード情報を読みマルチキャストツリーの構成を確認する。このとき、マルチキャストツリー１の構成として、孤立するノードが存在しなかった場合、離脱したノード２００のノード情報について、ノード情報データベース１２１を更新し、処理の完了を離脱受付機能部１１３に応答する。マルチキャストツリー１の構成として、孤立するノードが存在した場合、最後にマルチキャストツリー１に参加したノード２００をノード情報データベース１２１から検索し、その移動を要求するため、移動を要求するノード２００のノード情報と、移動先となるノード２００のノード情報を離脱受付機能部１１３に応答する。その後、離脱受付機能部１１３から移動応答メッセージを受信すると、最新のマルチキャストツリーの構成をノード情報データベース１２１に反映させるため、ノード情報データベース１２１を更新する。
【００５７】
遅延量設定機能部１１５は、マルチキャストツリー１が守るべき配信遅延量を設定する。具体的にはシステム利用者が配信遅延量を決定し、その数値の入力を受けるものである。
【００５８】
図５は、第１の実施形態によるノード２００の構成を示すブロック図である。図５において、ノード２００は、主制御部２１０とネットワークインターフェイス２２０と、ノード情報データベース２２１と、を有する。主制御部２１０は、ＣＰＵ、ＲＡＭ、及びＯＳなどで構成されたコンピュータの主要部である。主制御部２１０の中に、コンピュータをマルチキャストシステムのノードとして機能させるプログラムを動作させることにより、主制御部２１０を、送受信部２１１と、参加要求機能部２１２と、離脱要求機能部２１３と、接続機能部２１４と、して機能させることができる。
【００５９】
ノード情報データベース２２１は、ルートノード１００におけるノード情報データベースと同等のもので、マルチキャストツリー１のツリー構造において自ノードより上及び下にあるノードのノード情報である。ノード情報データベース２２１は、コンピュータの記憶部に記憶される。
【００６０】
送受信部２１１は、ルートノード１００における送受信部１１１と同等であるため説明を省略する。
【００６１】
参加要求機能部２１２は、新規にマルチキャストツリー１に参加する場合に、ルートノード１００に参加を要求する機能を持つ。具体的には、ルートノード１００に参加要求メッセージを送信し、ルートノード１００から参加応答メッセージを受信すると、参加応答メッセージに記載の接続先ノードのノード情報を接続機能部２１４に渡す。
【００６２】
離脱要求機能部２１３は、マルチキャストツリー１から離脱する場合に、ルートノード１００に離脱を要求する機能を持つ。具体的には、ルートノード１００に離脱要求メッセージを送信し、ルートノード１００から離脱応答メッセージを受信すると、接続関係にあったひとつまたは複数のノードへ切断要求メッセージを送信する。続いて、切断要求メッセージを送ったノードから切断応答メッセージを受信すると、ノード情報データベース２２１から接続関係にあったノードのノード情報を削除する。
【００６３】
接続機能部２１４は、他のノードと接続関係を確立する機能を持つ。具体的には、参加要求機能部２１２から接続先ノードのノード情報を受けた場合、またはルートノード１００から移動要求メッセージを受信し、接続先ノードのノード情報を受けた場合に、接続先となるノードへ接続要求メッセージを送信する。続いて、接続先となるノードから接続応答メッセージを受信すると、ノード情報データベース２２１を更新する。ルートノード１００から移動要求メッセージを受信していた場合は、移動応答メッセージをルートノード１００に送信する。
【００６４】
さらに、接続機能部２１４は、他のノードから接続要求メッセージを受信した場合、接続応答メッセージを送信し、ノード情報データベース２２１を更新する。さらに、接続機能部２１４は、他のノードから切断要求メッセージを受信した場合、切断応答メッセージを送信し、ノード情報データベース２２１を更新する。
【００６５】
次に、本実施形態の動作について、特に特徴的な部分について説明する。図６は、本実施形態におけるルートノード１００において、新規にマルチキャストツリー１に参加するノード２００からの参加要求を受け付ける場合の動作を示すフローチャートである。動作を開始すると、まず送受信部１１１が他のノード２００、もしくはルートノード１００内の主制御部１１０からの通信を待つ状態（以後、アイドル状態という）となる（ステップＳ３００）。
【００６６】
ルートノード１００は、アイドル状態中に（ステップＳ３００）、ノード２００から参加要求メッセージを受信すると（ステップＳ３０１）、ノード情報データベース１２１を参照し、現在のマルチキャストツリー１の構成を確認する（ステップＳ３０２）。続いて、すでに説明した深さを優先する構成方法または子ノード数を優先する構成方法またはその両方の組み合わせ方法のいずれかの方法で、マルチキャストツリー１の構成を決定する（ステップＳ３０３）。この決定したマルチキャストツリー１の構成となるよう、参加要求メッセージを送信してきたノード２００に対し、接続先となるノード２００のノード情報を含む参加応答メッセージを送信し（ステップＳ３０４）、ノード情報データベース１２１を更新し（ステップＳ３０５）、アイドル状態に戻る。
【００６７】
図７は、本実施形態におけるルートノード１００において、マルチキャストツリー１に参加しているノード２００からの離脱要求を受け付ける場合の動作を示すフローチャートである。
【００６８】
ルートノード１００は、アイドル状態中に（ステップＳ３００）、ノード２００から離脱要求メッセージを受信すると（ステップＳ３１１）、離脱応答メッセージを送信する（ステップＳ３１２）。続いて、ノード情報データベース１２１を参照し、現在のマルチキャストツリー１の構成を確認する（ステップＳ３１３）。このとき、この離脱するノードが発生した場合に、マルチキャストツリー１の構成として、孤立するノードが存在するかどうかを確認する（ステップＳ３１４）。ステップＳ３１４において、孤立するノードが存在しなかった場合（ステップＳ３１４のＮｏ）、ノード情報データベース１２１を更新し（ステップＳ３１８）、アイドル状態に戻る。一方、ステップＳ３１４において、孤立するノードが存在した場合（ステップＳ３１４のＹｅｓ）、最後にマルチキャストツリー１に参加したノード２００をノード情報データベース１２１から検索し（ステップＳ３１５）、そのノード２００に移動を要求するため、その移動を要求するノード２００へ移動要求メッセージを送信する（ステップＳ３１６）。その後、移動応答メッセージを受信すると（ステップＳ３１７）、ノード情報データベース１２１を更新し（ステップＳ３１８）、アイドル状態に戻る。
【００６９】
なお、図６及び図７で説明したフローチャートに係る各ステップの動作内容は、ルートノード１００が予め備えるコンピュータ（主制御部）で動作するプログラムとして実行させるように構成することができる。
【００７０】
以上説明したように、遅延ばらつきを小さくするための遅延量の調整が不要になるノードができるだけ多く存在するようにマルチキャストツリーを構成していくことにより、指定された配信遅延量のノード、すなわち調整量が０となるノードの数が最大になるため、遅延ばらつきを小さくするための調整を少なくマルチキャストツリー１を構成することができる。
【００７１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００７２】
（付記１）
配信遅延量を設定する遅延量設定機能部と、
前記遅延量設定機能部により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーの構成を演算するツリー構成演算機能部と、
を備え、
前記ツリー構成演算機能部の演算結果に基づいてマルチキャストツリーを構築することを特徴とするマルチキャストシステム。
【００７３】
（付記２）
前記ツリー構成演算機能部は、
前記設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことを特徴とする付記１記載のマルチキャストシステム。
【００７４】
（付記３）
前記ツリー構成演算機能部は、
前記設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことを特徴とする付記１記載のマルチキャストシステム。
【００７５】
（付記４）
前記ツリー構成演算機能部は、
前記設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくアルゴリズムと、
前記設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくアルゴリズムと、
を組み合わせて前記遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーの構成を演算することを特徴とする付記１記載のマルチキャストシステム。
【００７６】
（付記５）
前記ツリー構成演算機能部は、
マルチキャストツリーに参加しているノードが離脱する場合に、最後に接続したノードを、ノードが離脱したことによって孤立したノードの親の位置に再接続させるようにマルチキャストツリーの構成を演算することを特徴とする付記１乃至４いずれかに記載のマルチキャストシステム。
【００７７】
（付記６）
マルチキャストツリーにおけるノード情報を保存するノード情報記憶部と、
をさらに含むことを特徴とする付記１乃至５いずれかに記載のマルチキャストシステム。
【００７８】
（付記７）
前記ノード情報記憶部は、前記マルチキャストツリーにおいて、各ノードが参加した順番に関する情報を記憶していることを特徴とする付記６記載のマルチキャストシステム。
【００７９】
（付記８）
前記ノード情報記憶部は、前記マルチキャストツリーに各ノードが参加した日時に関する情報を記憶していることを特徴とする付記６又は７記載のマルチキャストシステム。
【００８０】
（付記９）
前記ノード情報記憶部は、各ノード毎にそのノードの直下に新たにノードが接続された場合の推定遅延量である追加ノード推定遅延量を予め記憶し、前記ツリー構成演算機能部は、前記追加ノード推定遅延量を用いて新たに接続するノードの接続先を決定することを特徴とする付記６乃至８いずれかに記載のマルチキャストシステム。
【００８１】
（付記１０）
前記遅延量設定機能部と、前記ツリー構成演算機能部と、がマルチキャストツリーのルートノードに設けられていることを特徴とする付記１乃至６いずれかに記載のマルチキャストシステム。
【００８２】
（付記１１）
前記ルートノードが、新たにマルチキャストツリーに参加をするノードからの接続要求を受け付ける参加要求機能部をさらに備えていることを特徴とする付記１０記載のマルチキャストシステム。
【００８３】
（付記１２）
前記ルートノードが、マルチキャストツリーからの離脱要求を受け付ける離脱受付機能部をさらに備えていることを特徴とする付記１０又は１１記載のマルチキャストシステム。
【００８４】
（付記１３）
マルチキャストツリーに新たに参加を希望するノードが在った場合に、所定の配信遅延量に対して遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるように前記参加を希望するノードの接続先となるノードについて決定するステップと、
前記参加を希望するノードに前記接続先となるノードを通知するステップと、
を備えることを特徴とするマルチキャストツリーの構成方法。
【００８５】
（付記１４）
前記接続先となるノードについて決定するステップは、前記所定の配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記所定の配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことにより前記接続先となるノードについて決定することを特徴とする付記１３記載のマルチキャストツリーの構成方法。
【００８６】
（付記１５）
前記接続先となるノードについて決定するステップは、
前記所定の配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記所定の配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことにより前記接続先となるノードについて決定することを特徴とする付記１３記載のマルチキャストツリーの構成方法。
【００８７】
（付記１６）
前記接続先となるノードについて決定するステップは、
前記所定の配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記所定の配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくアルゴリズムと、
前記所定の配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記所定の配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくアルゴリズムと、
を組み合わせて前記接続先となるノードについて決定することを特徴とする付記１３記載のマルチキャストツリーの構成方法。
【００８８】
（付記１７）
マルチキャストツリーに参加しているノードが離脱し、孤立するノードが生じる場合に、最後に接続したノードを、前記孤立するノードの親の位置に再接続させるステップをさらに含むことを特徴とする付記１３乃至１６いずれかに記載のマルチキャストツリーの構成方法。
【００８９】
（付記１８）
マルチキャストシステムに含まれるコンピュータにマルチキャストツリーを構築させるコンピュータプログラムであって、
配信遅延量を設定する遅延量設定処理と、
前記遅延量設定機能部により設定された配信遅延量に対して、遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーの構成を演算するツリー構成演算処理と、
を含み、
前記ツリー構成演算処理の演算結果に基づいてマルチキャストツリーを構築させることを特徴とするプログラム。
【００９０】
（付記１９）
前記ツリー構成演算処理は、
前記設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことを特徴とする付記１８記載のプログラム。
【００９１】
（付記２０）
前記ツリー構成演算処理は、
前記設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことを特徴とする付記１８記載のプログラム。
【００９２】
（付記２１）
前記ツリー構成演算処理は、
前記設定された配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記設定された配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていく処理と、
前記設定された配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記設定された配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていく処理と、
を組み合わせて前記遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるようにマルチキャストツリーの構成を演算することを特徴とする付記１８記載のプログラム。
【００９３】
（付記２２）
前記ツリー構成演算処理は、
マルチキャストツリーに参加しているノードが離脱することによって孤立するノードが発生する場合に、最後に接続したノードを、前記孤立するノードの親の位置に再接続させるようにマルチキャストツリーの構成を演算することを特徴とする付記１８乃至２１いずれかに記載のプログラム。
【００９４】
（付記２３）
コンピュータにマルチキャストツリーを構築させるプログラムであって、
マルチキャストツリーに新たに参加を希望するノードが在った場合に、所定の配信遅延量に対して遅延ばらつきを小さくするための遅延量の調整が不要になるノードの数が最大になるように前記参加を希望するノードの接続先となるノードについて決定するステップと、
前記参加を希望するノードに前記接続先となるノードを通知するステップと、
を備えることを特徴とするプログラム。
【００９５】
（付記２４）
前記接続先となるノードについて決定するステップは、前記所定の配信遅延量になるまでツリーの形状を深くしていき、深い位置から順に、前記所定の配信遅延量を超えない最大の配信遅延量となるように順にノードを接続させていくことにより前記接続先となるノードについて決定することを特徴とする付記２３記載のプログラム。
【００９６】
（付記２５）
前記接続先となるノードについて決定するステップは、
前記所定の配信遅延量になるまで、１つのノードの子ノードの数を増やしていき、前記子ノードのうち、最も配信遅延量の大きい子ノードからさらに前記所定の配信遅延量を超えないように当該子ノードに対する子ノードの数を増やしていくことにより前記接続先となるノードについて決定することを特徴とする付記２３記載のプログラム。
【００９７】
（付記２６）
マルチキャストツリーに参加しているノードが離脱し、孤立するノードが生じる場合に、最後に接続したノードを、前記孤立するノードの親の位置に再接続させるステップをさらに含むことを特徴とする付記２３乃至２５いずれかに記載のプログラム。
【００９８】
（付記２７）
付記１８乃至２６いずれかに記載のプログラムを記録した記録媒体。
【００９９】
（付記２８）
前記第３の視点に記載のプログラムを記録した記録媒体。
【０１００】
本発明の全開示（特許請求の範囲及び図面を含む）の枠内において、さらにその基本的技術思想に基づいて、実施例ないし実施例の変更・調整が可能である。また、本発明の特許請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、特許請求の範囲及び図面を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１０１】
１：マルチキャストツリー
１００：ルートノード
２００：ノード
１１０、２１０：主制御部
１２０、２２０：ネットワークインターフェイス
１２１、２２１：ノード情報データベース
１１１、２１１：送受信部
１１２：参加受付機能部
１１３：離脱受付機能部
１１４：ツリー構成演算機能部
１１５：遅延量設定機能部
２１２：参加要求機能部
２１３：離脱要求機能部
２１４：接続機能部
【図１】
0005659915.tif 000002
【図２】
0005659915.tif 000003
【図３】
0005659915.tif 000004
【図４】
0005659915.tif 000005
【図５】
0005659915.tif 000006
【図６】
0005659915.tif 000007
【図７】
0005659915.tif 000008