JP2000049779A - ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法 - Google Patents
ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法Info
- Publication number
- JP2000049779A JP2000049779A JP21767298A JP21767298A JP2000049779A JP 2000049779 A JP2000049779 A JP 2000049779A JP 21767298 A JP21767298 A JP 21767298A JP 21767298 A JP21767298 A JP 21767298A JP 2000049779 A JP2000049779 A JP 2000049779A
- Authority
- JP
- Japan
- Prior art keywords
- node
- parent
- nodes
- tree
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
(57)【要約】
【課題】 ディジタルデータや情報をネットワーク中の
複数のエンドノードに効率的に、信頼性をもって、かつ
自動的に配布する方法を提供すること。 【解決手段】 接続されループの無いマルチキャストツ
リーを自動的に生成、維持する方式をアプリケーション
層マルチキャストと組み合せ、各新ノードはその隣接ノ
ードを選択し選択された隣接ノードを隣接ノードリスト
にその親ノードとして追加することによりマルチキャス
トツリーに加入する場合に、各ノードは、(1)親ノー
ドを持たないルートノードを除く各ノードは、常にただ
一つだけ親ノードを維持すること、(2)あるノードが
親ノードを選択する際に、ルートパスがそのあるノード
をふくむようなノードが子側ノードとして識別され、そ
の子側ノードからルートノードへ導く親ノードの系列を
ルートパスとした時に、該あるノードは子側ノードをそ
の親ノードとしては決して選択しないこと、という規則
に従う。
複数のエンドノードに効率的に、信頼性をもって、かつ
自動的に配布する方法を提供すること。 【解決手段】 接続されループの無いマルチキャストツ
リーを自動的に生成、維持する方式をアプリケーション
層マルチキャストと組み合せ、各新ノードはその隣接ノ
ードを選択し選択された隣接ノードを隣接ノードリスト
にその親ノードとして追加することによりマルチキャス
トツリーに加入する場合に、各ノードは、(1)親ノー
ドを持たないルートノードを除く各ノードは、常にただ
一つだけ親ノードを維持すること、(2)あるノードが
親ノードを選択する際に、ルートパスがそのあるノード
をふくむようなノードが子側ノードとして識別され、そ
の子側ノードからルートノードへ導く親ノードの系列を
ルートパスとした時に、該あるノードは子側ノードをそ
の親ノードとしては決して選択しないこと、という規則
に従う。
Description
【0001】
【発明の属する技術分野】本発明は、ディジタル通信ネ
ットワークに関し、より詳しくはネットワーク内の複数
エンドノードにディジタルデータまたは情報を配布する
方法に関する。
ットワークに関し、より詳しくはネットワーク内の複数
エンドノードにディジタルデータまたは情報を配布する
方法に関する。
【0002】
【従来の技術】以下の文献は、本発明の分野の一般背景
情報を提供するものであり、以下の記載において括弧内
に示された略号により参照されるものである。
情報を提供するものであり、以下の記載において括弧内
に示された略号により参照されるものである。
【0003】[CBT] A. Ballardie, Core Based Trees
(CBT) Multicast RoutingArchitecture, RFC 2201, Sep
tember, 1997. [DVMRP] D. Waitzman, C. Partridge, S. Deering, Dis
tance Vector MulticastRouting Protocol, RFC 1075,
November, 1988. [IRC] J. Oikarinen, D. Reed, Internet Relay Chat P
rotocol, RFC 1459,May, 1993. [MBONE] The MBONE FAQ, http://www.mbone.com/mbone/
mbone.faq.html, Jan,1997. [SMTP] J. Postel, Simple Mail Transfer Protocol, R
FC 821, August, 1982. [SOM] M. Sola, M. Ohta, T. Maeno, Large Scale Mult
icast with DNS,Procedings of the International Wor
kshop on Asia-Pacific are advancedresearch informa
tion technology (IWS'98), pp. 144-151, March, 199
8. 複数のエンドノード(またはホスト)に情報を配布(ま
たはマルチキャスト)する技術として今日一般に使用さ
れるものとして次の3つが挙げられる。まず第一のもの
では、情報送信元(ソースホスト)が単に各受信者ホス
トに対し情報の各々別のコピーを送信する。これは信頼
性があり自動的ではあるが、同一の情報を何度も同一通
信リンク上に送信しなければならないため送信元ホスト
にとっては効率的ではない。
(CBT) Multicast RoutingArchitecture, RFC 2201, Sep
tember, 1997. [DVMRP] D. Waitzman, C. Partridge, S. Deering, Dis
tance Vector MulticastRouting Protocol, RFC 1075,
November, 1988. [IRC] J. Oikarinen, D. Reed, Internet Relay Chat P
rotocol, RFC 1459,May, 1993. [MBONE] The MBONE FAQ, http://www.mbone.com/mbone/
mbone.faq.html, Jan,1997. [SMTP] J. Postel, Simple Mail Transfer Protocol, R
FC 821, August, 1982. [SOM] M. Sola, M. Ohta, T. Maeno, Large Scale Mult
icast with DNS,Procedings of the International Wor
kshop on Asia-Pacific are advancedresearch informa
tion technology (IWS'98), pp. 144-151, March, 199
8. 複数のエンドノード(またはホスト)に情報を配布(ま
たはマルチキャスト)する技術として今日一般に使用さ
れるものとして次の3つが挙げられる。まず第一のもの
では、情報送信元(ソースホスト)が単に各受信者ホス
トに対し情報の各々別のコピーを送信する。これは信頼
性があり自動的ではあるが、同一の情報を何度も同一通
信リンク上に送信しなければならないため送信元ホスト
にとっては効率的ではない。
【0004】第二のものでは、通信ネットワーク内のス
イッチまたはルータが自動的にそれらの間で各受信者ホ
ストをあるリーフとしたマルチキャスト分配ツリーを構
築する。これはネットワーク層マルチキャストと呼ば
れ、これを行う技術には例えば今日IP(Intern
et Protocol)インターネットにおいてなさ
れているような良く知られたものがある。ネットワーク
層マルチキャストはホストにとっては自動的で効率的で
はあるが、それ自体信頼性のあるものではない。これは
ネットワークのふくそう等によりルータがパケットを廃
棄することがあるためである。これはまた二つの理由か
らルータにとっても効率的ではない。第一に、各ルータ
はそれが属する全てのマルチキャストツリーの状態を維
持しなければならず、これはグローバルインターネット
において予想されるように非常に多数のマルチキャスト
ツリーがある場合には問題となり得る。第二に、IPマ
ルチキャスト上のフロー制御は困難であり、ネットワー
クのふくそうに陥り易い。
イッチまたはルータが自動的にそれらの間で各受信者ホ
ストをあるリーフとしたマルチキャスト分配ツリーを構
築する。これはネットワーク層マルチキャストと呼ば
れ、これを行う技術には例えば今日IP(Intern
et Protocol)インターネットにおいてなさ
れているような良く知られたものがある。ネットワーク
層マルチキャストはホストにとっては自動的で効率的で
はあるが、それ自体信頼性のあるものではない。これは
ネットワークのふくそう等によりルータがパケットを廃
棄することがあるためである。これはまた二つの理由か
らルータにとっても効率的ではない。第一に、各ルータ
はそれが属する全てのマルチキャストツリーの状態を維
持しなければならず、これはグローバルインターネット
において予想されるように非常に多数のマルチキャスト
ツリーがある場合には問題となり得る。第二に、IPマ
ルチキャスト上のフロー制御は困難であり、ネットワー
クのふくそうに陥り易い。
【0005】ネットワーク層マルチキャストを信頼性の
あるものとする方法もあるが、これらは一般にホストに
とって非効率となってしまう。例えば、一つの方法は受
信者ホストが受信した情報の受領通知をソースホストに
送るというものであるが、これはソースホストにおいて
受領通知の「爆発」を引き起こす。
あるものとする方法もあるが、これらは一般にホストに
とって非効率となってしまう。例えば、一つの方法は受
信者ホストが受信した情報の受領通知をソースホストに
送るというものであるが、これはソースホストにおいて
受領通知の「爆発」を引き起こす。
【0006】又、ネットワーク層マルチキャスト自体の
技術的側面の弱点というわけではないが、このアプロー
チでは、アプリケーションによる使用に先立ちネットワ
ーク(ルータ)インフラストラクチャがそのマルチキャ
スト機能をオンにする必要があるという実用上の問題が
ある。これは結果として、アプリケーションプログラマ
はネットワーク層マルチキャストが広くオンにされるま
ではこれに依存することを嫌い、一方でネットワーク管
理者はアプリケーションから要求されるまではネットワ
ーク層マルチキャストをオンにするのを嫌うという堂々
めぐりの問題を生じる。
技術的側面の弱点というわけではないが、このアプロー
チでは、アプリケーションによる使用に先立ちネットワ
ーク(ルータ)インフラストラクチャがそのマルチキャ
スト機能をオンにする必要があるという実用上の問題が
ある。これは結果として、アプリケーションプログラマ
はネットワーク層マルチキャストが広くオンにされるま
ではこれに依存することを嫌い、一方でネットワーク管
理者はアプリケーションから要求されるまではネットワ
ーク層マルチキャストをオンにするのを嫌うという堂々
めぐりの問題を生じる。
【0007】第三の一般的な技術として、ホスト自身の
間で構築されたマルチキャスト分配ツリー上に情報を配
布するものがある。これはアプリケーション層マルチキ
ャスト呼ばれる。この場合、各受信者ホストがいくつか
の他の受信者ホストへの情報の送信のタスクを共有す
る。各ホスト間の個別の送信自体はマルチキャストでは
ないが、個別の送信を総合した全体はマルチキャストと
なる。このアプローチは、各ホストではわずかな他のホ
ストに対してのみ情報を複製して分配する必要があるの
で各ホストにとって比較的効率的である。各ホスト間の
個別送信は信頼性がありパケットの廃棄をなくすフロー
制御(例えば、TCPを用いて)を伴うので、ホストが
破損しない限りこのアプローチは信頼性のある情報の配
送を行い、ネットワークをふくそうさせることもない。
また、これはネットワークに既に非マルチキャスト通信
用に設けられたもの以外に追加の機能を要求しない。
間で構築されたマルチキャスト分配ツリー上に情報を配
布するものがある。これはアプリケーション層マルチキ
ャスト呼ばれる。この場合、各受信者ホストがいくつか
の他の受信者ホストへの情報の送信のタスクを共有す
る。各ホスト間の個別の送信自体はマルチキャストでは
ないが、個別の送信を総合した全体はマルチキャストと
なる。このアプローチは、各ホストではわずかな他のホ
ストに対してのみ情報を複製して分配する必要があるの
で各ホストにとって比較的効率的である。各ホスト間の
個別送信は信頼性がありパケットの廃棄をなくすフロー
制御(例えば、TCPを用いて)を伴うので、ホストが
破損しない限りこのアプローチは信頼性のある情報の配
送を行い、ネットワークをふくそうさせることもない。
また、これはネットワークに既に非マルチキャスト通信
用に設けられたもの以外に追加の機能を要求しない。
【0008】しかしながら、アプリケーション層マルチ
キャストは自動的ではなく、ツリーは手動で構築されな
ければならない。即ち、ツリー上の各ホストの隣接ノー
ドをオフラインで選択しホストのコンフィグレーション
ファイルに書き込まれなければならない。このアプロー
チは例えばインターネット電子メール分配や分散チャッ
ト(IRC)ネットワークに見られる。
キャストは自動的ではなく、ツリーは手動で構築されな
ければならない。即ち、ツリー上の各ホストの隣接ノー
ドをオフラインで選択しホストのコンフィグレーション
ファイルに書き込まれなければならない。このアプロー
チは例えばインターネット電子メール分配や分散チャッ
ト(IRC)ネットワークに見られる。
【0009】更に、もしホストが破損すればマルチキャ
ストツリーが区切られてすべての受信者ホストに情報が
配布できなくなる。これはホストを純粋なツリーではな
くメッシュトポロジー状に構成することにより解決でき
る。これにより、各ホストは情報を受取可能なホストを
いくつか有することになる。しかし、このアプローチは
結果として重複した情報配送となり非効率的である。
ストツリーが区切られてすべての受信者ホストに情報が
配布できなくなる。これはホストを純粋なツリーではな
くメッシュトポロジー状に構成することにより解決でき
る。これにより、各ホストは情報を受取可能なホストを
いくつか有することになる。しかし、このアプローチは
結果として重複した情報配送となり非効率的である。
【0010】
【発明が解決しようとする課題】既存のメッシュトポロ
ジーの分脈においてツリーを構築するアルゴリズムは多
数存在する。注目される例としてはDVMRP[DVM
PR]がある。まず、出発点としてこれらのネットワー
クのノードは自身のトポロジカルな隣接ノードがどれか
を知っている。そこから、アルゴリズムを実行して実質
上トポロジー内のリンクを論理的に除去していって残っ
たアクティブなリンクによりツリーを構成するようにす
る。
ジーの分脈においてツリーを構築するアルゴリズムは多
数存在する。注目される例としてはDVMRP[DVM
PR]がある。まず、出発点としてこれらのネットワー
クのノードは自身のトポロジカルな隣接ノードがどれか
を知っている。そこから、アルゴリズムを実行して実質
上トポロジー内のリンクを論理的に除去していって残っ
たアクティブなリンクによりツリーを構成するようにす
る。
【0011】DVMPRのMBONE[MBONE]上
での実装は特に注目に値する。MBONEはインターネ
ット上を論理的にトンネルしたホストにより構成され
る。つまり、ホスト間のリンクは物理的リンクではな
く、インターネット上で論理的に接続されたものであ
る。しかし、MBONEリンクは、メッシュネットワー
クとして予め手動で構築されたものである。DVMPR
アルゴリズムがこのメッシュネットワークの上で実行さ
れてマルチキャスト用のツリーが生成される。
での実装は特に注目に値する。MBONEはインターネ
ット上を論理的にトンネルしたホストにより構成され
る。つまり、ホスト間のリンクは物理的リンクではな
く、インターネット上で論理的に接続されたものであ
る。しかし、MBONEリンクは、メッシュネットワー
クとして予め手動で構築されたものである。DVMPR
アルゴリズムがこのメッシュネットワークの上で実行さ
れてマルチキャスト用のツリーが生成される。
【0012】DVMPRはグローバルな使用には適さな
い非効率な面を有する。特に、これは”flood−a
nd−prune”と呼ばれるツリー発見生成の方法を
用いる。floodの部分ではパケットは全てのネット
ワークロケーションにブロードキャストされ、それらの
ロケーションのシステムがツリーへの加入を希望するか
どうか決定する。ツリーへの加入を希望しないロケーシ
ョンはその旨を示し、ツリーをそれらロケーションから
切り離させる。このDVMPRのflood(ツリー発
見)部分は特に非効率的である。
い非効率な面を有する。特に、これは”flood−a
nd−prune”と呼ばれるツリー発見生成の方法を
用いる。floodの部分ではパケットは全てのネット
ワークロケーションにブロードキャストされ、それらの
ロケーションのシステムがツリーへの加入を希望するか
どうか決定する。ツリーへの加入を希望しないロケーシ
ョンはその旨を示し、ツリーをそれらロケーションから
切り離させる。このDVMPRのflood(ツリー発
見)部分は特に非効率的である。
【0013】Core Based Tree(CB
T)はこの問題を解決しようとするプロトコルの一例で
ある。パケットをfloodする代わりに、ツリーに加
入を希望するシステムがパケットをツリーのコアに向け
て送信し、このプロセス中にツリーの枝を構成する。コ
アがどこかを知るためには、Sola他がDNS(Do
main Name System)ネームを使うこと
を提案している[SOM]。DNSネームはコアを発見
し、その後ツリーに加入するするためのハンドルの一種
としてユーザが使用することができる。しかし、ツリー
の本当の名前は依然としてデータパケット中で用いられ
るのと同様IPマルチキャストアドレス(これらもDN
Sを介して割り当て、発見される必要がある)である。
これらのIPマルチキャストアドレスは割り当てられな
ければならず(IPにおける難問のひとつ)、またDN
Sを介して加入するホストに別々に搬送されなければな
らない。一旦コアが発見されれば、使用されたDNSネ
ームにはもはやいかなる機能も果たさなくなる。
T)はこの問題を解決しようとするプロトコルの一例で
ある。パケットをfloodする代わりに、ツリーに加
入を希望するシステムがパケットをツリーのコアに向け
て送信し、このプロセス中にツリーの枝を構成する。コ
アがどこかを知るためには、Sola他がDNS(Do
main Name System)ネームを使うこと
を提案している[SOM]。DNSネームはコアを発見
し、その後ツリーに加入するするためのハンドルの一種
としてユーザが使用することができる。しかし、ツリー
の本当の名前は依然としてデータパケット中で用いられ
るのと同様IPマルチキャストアドレス(これらもDN
Sを介して割り当て、発見される必要がある)である。
これらのIPマルチキャストアドレスは割り当てられな
ければならず(IPにおける難問のひとつ)、またDN
Sを介して加入するホストに別々に搬送されなければな
らない。一旦コアが発見されれば、使用されたDNSネ
ームにはもはやいかなる機能も果たさなくなる。
【0014】今日インターネット上で実行されるアプリ
ケーション(上記のMBONEに加えて)でインターネ
ット上のホスト間で構築されたツリー上に情報を分配す
るものは多数存在し、Internet Relay
Chat(IRC)[IRC]と通常の電子メール[S
MTP]が含まれる。しかし、いづれの場合も手動で構
築されたツリーに依存しており、自動的なツリー生成ア
ルゴリズムは有していない。
ケーション(上記のMBONEに加えて)でインターネ
ット上のホスト間で構築されたツリー上に情報を分配す
るものは多数存在し、Internet Relay
Chat(IRC)[IRC]と通常の電子メール[S
MTP]が含まれる。しかし、いづれの場合も手動で構
築されたツリーに依存しており、自動的なツリー生成ア
ルゴリズムは有していない。
【0015】通常の電子メールは手動で構築されたメー
ルリストの内容に基づいてメールを分配している。これ
らリストの内容は通常ツリーとなるが、しばしばループ
が形成される。これらは各メールメッセージが遭遇した
メールフォアワーダのリストを保持しているメールのヘ
ッダ自身により検出される。メールフォアワーダが受信
したメールメッセージのリスト中に自身を見つけると、
メッセージは廃棄される。通常、このエラーが人間のオ
ペレータに通知され、ループを形成することになった構
成ミスの発見、修正が試みられる。
ルリストの内容に基づいてメールを分配している。これ
らリストの内容は通常ツリーとなるが、しばしばループ
が形成される。これらは各メールメッセージが遭遇した
メールフォアワーダのリストを保持しているメールのヘ
ッダ自身により検出される。メールフォアワーダが受信
したメールメッセージのリスト中に自身を見つけると、
メッセージは廃棄される。通常、このエラーが人間のオ
ペレータに通知され、ループを形成することになった構
成ミスの発見、修正が試みられる。
【0016】本発明は、上記に鑑みてなされたものであ
り、その目的とするところは、ディジタルデータや情報
をネットワーク中の複数のエンドノードに効率的に、信
頼性をもって、かつ自動的に配布する方法を提供するこ
とにある。
り、その目的とするところは、ディジタルデータや情報
をネットワーク中の複数のエンドノードに効率的に、信
頼性をもって、かつ自動的に配布する方法を提供するこ
とにある。
【0017】
【課題を解決するための手段】本発明は、上記目的を達
成するため、ディジタル通信ネットワーク上の複数エン
ドノードに情報を配布する方法であって、(a)ルート
ノードを含んだ情報を受け取るエンドノード間で接続さ
れループの無いマルチキャストツリーを自動的に生成し
維持するステップで、各ノードは各隣接ノードが親ノー
ドか子ノードかを示す表示を持った隣接ノードリストを
有し、親ノードは二つの隣接ノード中でルートノードに
より近いノードとして定義され、子ノードは二つの隣接
ノード中でルートノードからより遠いノードとして定義
され、各新たなノードはその隣接ノードを選択し選択さ
れた隣接ノードを隣接ノードリストにその親ノードとし
て追加することによりマルチキャストツリーに加入する
場合に、各ノードが、(1)親ノードを持たないルート
ノードを除く各ノードは、常にただ一つだけ親ノードを
維持すること、(2)あるノードが親ノードを選択する
際に、ルートパスが該あるノードを含むようなノードが
子側ノードとして識別され、該子側ノードからルートノ
ードへ導く親ノードの系列をルートパスとした時に、該
あるノードは子側ノードをその親ノードとしては決して
選択しないこと、という規則に従うステップと、(b)
ステップ(a)で生成され維持されたマルチキャストツ
リー上で、ソースノードがその隣接ノードの全てに情報
を送信し、情報を受けた各ノードがそこから情報を受け
取った一隣接ノードと除くその隣接ノードの全てに情報
を送信するという情報のアプリケーション層マルチキャ
ストを行うステップと、を有することを特徴とするディ
ジタル通信ネットワーク上のエンドノードによるマルチ
キャスト情報配布方法を提供する。
成するため、ディジタル通信ネットワーク上の複数エン
ドノードに情報を配布する方法であって、(a)ルート
ノードを含んだ情報を受け取るエンドノード間で接続さ
れループの無いマルチキャストツリーを自動的に生成し
維持するステップで、各ノードは各隣接ノードが親ノー
ドか子ノードかを示す表示を持った隣接ノードリストを
有し、親ノードは二つの隣接ノード中でルートノードに
より近いノードとして定義され、子ノードは二つの隣接
ノード中でルートノードからより遠いノードとして定義
され、各新たなノードはその隣接ノードを選択し選択さ
れた隣接ノードを隣接ノードリストにその親ノードとし
て追加することによりマルチキャストツリーに加入する
場合に、各ノードが、(1)親ノードを持たないルート
ノードを除く各ノードは、常にただ一つだけ親ノードを
維持すること、(2)あるノードが親ノードを選択する
際に、ルートパスが該あるノードを含むようなノードが
子側ノードとして識別され、該子側ノードからルートノ
ードへ導く親ノードの系列をルートパスとした時に、該
あるノードは子側ノードをその親ノードとしては決して
選択しないこと、という規則に従うステップと、(b)
ステップ(a)で生成され維持されたマルチキャストツ
リー上で、ソースノードがその隣接ノードの全てに情報
を送信し、情報を受けた各ノードがそこから情報を受け
取った一隣接ノードと除くその隣接ノードの全てに情報
を送信するという情報のアプリケーション層マルチキャ
ストを行うステップと、を有することを特徴とするディ
ジタル通信ネットワーク上のエンドノードによるマルチ
キャスト情報配布方法を提供する。
【0018】
【発明の実施の形態】以下、図1から図20を参照し
て、本発明に係るディジタル通信ネットワーク上のマル
チキャスト情報配布方法の一実施形態について詳述す
る。
て、本発明に係るディジタル通信ネットワーク上のマル
チキャスト情報配布方法の一実施形態について詳述す
る。
【0019】本発明は、効率的で信頼性があり、かつ自
動的な、ディジタル通信ネットワーク上のマルチキャス
ト情報配布方法を提供するものであり、詳しくは、アプ
リケーション層ツリーのアプローチを採用することによ
り、アプリケーション層アプローチの効率性と情報配送
信頼性を享受する一方、マルチキャストツリーを自動的
に生成する方法を組み込み、ホストの障害やボトルネッ
クに対抗してこれを維持することによりアプリケーショ
ン層アプローチの弱点を回避するものである。
動的な、ディジタル通信ネットワーク上のマルチキャス
ト情報配布方法を提供するものであり、詳しくは、アプ
リケーション層ツリーのアプローチを採用することによ
り、アプリケーション層アプローチの効率性と情報配送
信頼性を享受する一方、マルチキャストツリーを自動的
に生成する方法を組み込み、ホストの障害やボトルネッ
クに対抗してこれを維持することによりアプリケーショ
ン層アプローチの弱点を回避するものである。
【0020】この方法は、ネットワークに対しては、非
マルチキャスト通信用に既に備えられたもの以外には追
加の機能を何等要求しない。特に、この方法は通常の信
頼性のある2局間通信プロトコル(インターネットにお
けるTCPなど)とネットワークのネーミングサービス
(インターネットにおけるDNSなど)のみを利用す
る。
マルチキャスト通信用に既に備えられたもの以外には追
加の機能を何等要求しない。特に、この方法は通常の信
頼性のある2局間通信プロトコル(インターネットにお
けるTCPなど)とネットワークのネーミングサービス
(インターネットにおけるDNSなど)のみを利用す
る。
【0021】この方法は、ノードとリンクからなる論理
的ツリートポロジーを生成、維持するものであり、ここ
でノードとはホストであり、リンクとはツリー上で互い
に隣接しているとされる2つのノード間の基となるネッ
トワーク上の論理的パスである。ツリー上に送信された
情報はこれら論理的リンクを介して伝送される。ツリー
自体は回路(ループ)を持たない接続されたトポロジー
(ツリー上のいかなるノードからいかなるノードへもパ
スが存在する)として定義される。即ち、トポロジーを
通してあるノードから同じリンクを二度渡ることなしに
それ自身に回帰するようなパスは存在しない。
的ツリートポロジーを生成、維持するものであり、ここ
でノードとはホストであり、リンクとはツリー上で互い
に隣接しているとされる2つのノード間の基となるネッ
トワーク上の論理的パスである。ツリー上に送信された
情報はこれら論理的リンクを介して伝送される。ツリー
自体は回路(ループ)を持たない接続されたトポロジー
(ツリー上のいかなるノードからいかなるノードへもパ
スが存在する)として定義される。即ち、トポロジーを
通してあるノードから同じリンクを二度渡ることなしに
それ自身に回帰するようなパスは存在しない。
【0022】1 背景情報 図1は本発明で用いるツリーの形状の一例を示す。この
実施形態では、ツリーに関連して以下の概念を定義す
る。
実施形態では、ツリーに関連して以下の概念を定義す
る。
【0023】隣接ノード:ツリー上で隣合ったノード。
図1において隣接ノードはそれらの間に矢印が存在する
ものとして示される。
図1において隣接ノードはそれらの間に矢印が存在する
ものとして示される。
【0024】ルート:ツリー上で親ノードを有しない唯
一のノード。
一のノード。
【0025】親ノード:二つの隣接ノード中で、ルート
により近いものが親ノード。図1において親ノードは矢
印の先端にあるノードとして示される。
により近いものが親ノード。図1において親ノードは矢
印の先端にあるノードとして示される。
【0026】子ノード:二つの隣接ノード中で、ルート
からより遠いものが子ノード。図1において子ノードは
矢印の後端にあるノードとして示される。
からより遠いものが子ノード。図1において子ノードは
矢印の後端にあるノードとして示される。
【0027】ルートパス:あるノードからルートまで導
く、自身を含めたノードのリスト。図1においてノード
BからのルートパスはB−C−E−Rである。
く、自身を含めたノードのリスト。図1においてノード
BからのルートパスはB−C−E−Rである。
【0028】親側ノード:あるノードXに対し、Xの親
ノードを介して到達可能な、親ノード自身を含むあらゆ
るノードが親側ノード。あるノードは、そのルートパス
がノードXを含まないことにより、ノードXの親側ノー
ドであると識別できる。
ノードを介して到達可能な、親ノード自身を含むあらゆ
るノードが親側ノード。あるノードは、そのルートパス
がノードXを含まないことにより、ノードXの親側ノー
ドであると識別できる。
【0029】子側ノード:あるノードXに対し、親側ノ
ードでないあらゆるノードが子側ノード。あるノード
は、そのルートパスがノードXを含むことにより、ノー
ドXの子側ノードであると識別できる。
ードでないあらゆるノードが子側ノード。あるノード
は、そのルートパスがノードXを含むことにより、ノー
ドXの子側ノードであると識別できる。
【0030】新規参入ノード:ツリーに最初に加入する
プロセス中のノード。
プロセス中のノード。
【0031】1.1 2ノード間のメッセージ メッセージはいかなる2ノード間でも送信され得るもの
で、送信時にこれらが隣接ノードであるか否かを問わな
い。ノード間で渡される全てのメッセージは少なくとも
対象となるツリーとメッセージの送信者ノード、受信者
ノードを識別する。
で、送信時にこれらが隣接ノードであるか否かを問わな
い。ノード間で渡される全てのメッセージは少なくとも
対象となるツリーとメッセージの送信者ノード、受信者
ノードを識別する。
【0032】ここで、ネットワークの障害はないものと
し、いかなるノードもあらゆるノードに対してメッセー
ジを信頼性をもって渡すことが可能であるものとする。
更に、もし障害があってあるノードの組においてメッセ
ージの交換が不可能である場合には、これが対象となる
ノードにおいて検出されるものとする。
し、いかなるノードもあらゆるノードに対してメッセー
ジを信頼性をもって渡すことが可能であるものとする。
更に、もし障害があってあるノードの組においてメッセ
ージの交換が不可能である場合には、これが対象となる
ノードにおいて検出されるものとする。
【0033】1.2 マルチキャストメッセージ 全てのノードは隣接ノードリストを保持する。リストの
各エントリは隣接ノードが親ノードか子ノードかを示す
ようになっている。ツリーにメッセージをマルチキャス
トするには、メッセージの発信者ノードがその全ての隣
接ノードの各々に一つづつコピーを送信する。
各エントリは隣接ノードが親ノードか子ノードかを示す
ようになっている。ツリーにメッセージをマルチキャス
トするには、メッセージの発信者ノードがその全ての隣
接ノードの各々に一つづつコピーを送信する。
【0034】マルチキャストメッセージを受信すると、
受信者ノードはそれを受信したノードを除くその各隣接
ノードにコピーを一つづつ送信する。これにより、メッ
セージは最終的に全てのノードにより受信される。
受信者ノードはそれを受信したノードを除くその各隣接
ノードにコピーを一つづつ送信する。これにより、メッ
セージは最終的に全てのノードにより受信される。
【0035】もしマルチキャストメッセージの配送中に
ツリーのトポロジーが変更された場合には、メッセージ
が全てのノードに届かない可能性がある。そのような変
更は例えばノードが障害を起こすかネットワーク中の別
の親ノードに接続することを決定した際に起こり得る。
ツリーのトポロジーが変更された場合には、メッセージ
が全てのノードに届かない可能性がある。そのような変
更は例えばノードが障害を起こすかネットワーク中の別
の親ノードに接続することを決定した際に起こり得る。
【0036】1.3 ノードとそのアプリケーション間
のメッセージ ノードは一般に(但し常にではない)ツリーのマルチキ
ャストサービスを利用するアプリケーションに関連して
いる。アプリケーションは既存のツリーに加入するか新
たなツリーを生成することを希望する時にノードを起動
する。するとノードがアプリケーションに成り代わって
ツリーに加入する。
のメッセージ ノードは一般に(但し常にではない)ツリーのマルチキ
ャストサービスを利用するアプリケーションに関連して
いる。アプリケーションは既存のツリーに加入するか新
たなツリーを生成することを希望する時にノードを起動
する。するとノードがアプリケーションに成り代わって
ツリーに加入する。
【0037】アプリケーションはホスト内部の通信メカ
ニズム(UNIXにおけるソケットなど)を介してノー
ドにメッセージを送信する。そしてノードがメッセージ
をツリー上にマルチキャストする。ツリーからノードで
受信されたメッセージは同様にアプリケーションに渡さ
れる。
ニズム(UNIXにおけるソケットなど)を介してノー
ドにメッセージを送信する。そしてノードがメッセージ
をツリー上にマルチキャストする。ツリーからノードで
受信されたメッセージは同様にアプリケーションに渡さ
れる。
【0038】2 ツリー形成、維持の分散アルゴリズム 2.1 概観 ツリーを形成する主たる目的は、それを接続されたもの
に維持することである。もしノードが破損することがな
くツリーを離脱することもなければ、ツリーを構築する
ことは単純なことである。各ノードは単に既存のノード
の隣接ノードとなるだけである。これにより、ツリーは
枝毎に構築されていき、ループのないトポロジーとな
り、区切られることもない。
に維持することである。もしノードが破損することがな
くツリーを離脱することもなければ、ツリーを構築する
ことは単純なことである。各ノードは単に既存のノード
の隣接ノードとなるだけである。これにより、ツリーは
枝毎に構築されていき、ループのないトポロジーとな
り、区切られることもない。
【0039】これが基本的なアプローチであって、新規
参入ノード(ツリーに加入する新たなノード)は単にツ
リーに既に存在するノードを見つけてそれに付加する。
新規参入ノードはその最初の隣接ノードをその親ノード
と見なす。その親ノードは逆に新規参入ノードをその子
ノードと見なす。
参入ノード(ツリーに加入する新たなノード)は単にツ
リーに既に存在するノードを見つけてそれに付加する。
新規参入ノードはその最初の隣接ノードをその親ノード
と見なす。その親ノードは逆に新規参入ノードをその子
ノードと見なす。
【0040】ところが、様々な理由により、新規参入ノ
ードの加入がない時でもトポロジーを変更する必要がし
ばしば生じてくる。一つの理由はツリー中のノードがト
ポロジーを最適化するために親ノードの変更を希望する
ことがあるということで、もう一つの理由はノードが破
損したりその他の理由により突然ツリーを離脱すること
があるということである。前者の場合は計画的または統
制トポロジー変更であり、後者は非計画的または緊急ト
ポロジー変更である。
ードの加入がない時でもトポロジーを変更する必要がし
ばしば生じてくる。一つの理由はツリー中のノードがト
ポロジーを最適化するために親ノードの変更を希望する
ことがあるということで、もう一つの理由はノードが破
損したりその他の理由により突然ツリーを離脱すること
があるということである。前者の場合は計画的または統
制トポロジー変更であり、後者は非計画的または緊急ト
ポロジー変更である。
【0041】もし子ノードのないノードが新たな親ノー
ドを確率する必要がある時には、単に別のノードを選択
して付加する(加入する)だけでよい。しかし、子ノー
ドのあるノードの場合はそう単純にはすまない。ノード
は自身の子側ノードの一つを親ノードとして選択するこ
とを避けなければならない。もし仮に子ノードを選択し
てしまったとすると、それ自身とその全ての子側ノード
はその親側ノードから切断されてしまうことになる。し
かも、子側の区切り内でループが形成されてしまう。図
2はこの様子を示しており、ノードCが誤って子側ノー
ドを親ノードとして選択した場合である。
ドを確率する必要がある時には、単に別のノードを選択
して付加する(加入する)だけでよい。しかし、子ノー
ドのあるノードの場合はそう単純にはすまない。ノード
は自身の子側ノードの一つを親ノードとして選択するこ
とを避けなければならない。もし仮に子ノードを選択し
てしまったとすると、それ自身とその全ての子側ノード
はその親側ノードから切断されてしまうことになる。し
かも、子側の区切り内でループが形成されてしまう。図
2はこの様子を示しており、ノードCが誤って子側ノー
ドを親ノードとして選択した場合である。
【0042】ツリー維持の分散アルゴリズムはこれらル
ープや区切りを避けるように設計されたメカニズムを含
んでいる。基本的にこれらはトポロジー変更に際して、
ノードが決して子側のノードをその親ノードとして選択
しないようにする。但し、このメカニズムはノードがそ
の現行の親ノードが有効なときに親ノードの選択をして
いる(例えばより最適な親が見つかったため)のか親ノ
ードを失った後に親ノードの選択をしているのかによっ
て違ってくる。
ープや区切りを避けるように設計されたメカニズムを含
んでいる。基本的にこれらはトポロジー変更に際して、
ノードが決して子側のノードをその親ノードとして選択
しないようにする。但し、このメカニズムはノードがそ
の現行の親ノードが有効なときに親ノードの選択をして
いる(例えばより最適な親が見つかったため)のか親ノ
ードを失った後に親ノードの選択をしているのかによっ
て違ってくる。
【0043】2.1.1 親ノード有効時の親ノード変
更 親ノードを変更時に接続されたツリーを維持するため
に、各ノードは次の単純なルールの組に従う。
更 親ノードを変更時に接続されたツリーを維持するため
に、各ノードは次の単純なルールの組に従う。
【0044】(1)各ノードは常にただ一つだけ親ノー
ドを維持する(但しルートノード自身は除く)。
ドを維持する(但しルートノード自身は除く)。
【0045】(2)ノードがその現行の親ノードを新た
な親ノードに置き換える場合には、親側ノードをその親
ノードとして選択する。
な親ノードに置き換える場合には、親側ノードをその親
ノードとして選択する。
【0046】例えば、図1を見ると、もし ノードCが
新たな親ノードに付加するものとすると、その親側ノー
ドと表示されたノード群から一つを選択すべきである。
これらのノードのどれかを選択している限り、ツリーは
ループのない接続されたものとして残る。
新たな親ノードに付加するものとすると、その親側ノー
ドと表示されたノード群から一つを選択すべきである。
これらのノードのどれかを選択している限り、ツリーは
ループのない接続されたものとして残る。
【0047】しかし、複数のノードが同時に親ノードを
変更しようとした場合に困難が生じる。例えば、ノード
CがノードDに付加すると決めたとする(例えばノード
Dがその現行の親ノードよりもっとそれに近いため)。
もしこれと同時にノードDが新たな親ノードAを選択し
たとする(ノードAはノードDの親側にあるため理論的
には可能である)と、結果として得られるトポロジーは
図3に示すものとなり、ツリーは区切られたものとな
る。
変更しようとした場合に困難が生じる。例えば、ノード
CがノードDに付加すると決めたとする(例えばノード
Dがその現行の親ノードよりもっとそれに近いため)。
もしこれと同時にノードDが新たな親ノードAを選択し
たとする(ノードAはノードDの親側にあるため理論的
には可能である)と、結果として得られるトポロジーは
図3に示すものとなり、ツリーは区切られたものとな
る。
【0048】これを回避するために、アルゴリズムはル
ープ/区切りを生じるいかなる親変更も遮断する。再び
ノードCが新たな親ノードを得る場合を見ると、ノード
Cの親側のどれかのノードがノードCの子側から親ノー
ドを選択しようとした時にのみ問題が生じることが分か
る。ノードCの親側ノード群内またはノードCの子側ノ
ード群内に限られた同時変更はループ/区切りを生じな
い。
ープ/区切りを生じるいかなる親変更も遮断する。再び
ノードCが新たな親ノードを得る場合を見ると、ノード
Cの親側のどれかのノードがノードCの子側から親ノー
ドを選択しようとした時にのみ問題が生じることが分か
る。ノードCの親側ノード群内またはノードCの子側ノ
ード群内に限られた同時変更はループ/区切りを生じな
い。
【0049】またノードCの親側からノードCの子側へ
のパスのみがノードCを通ることを考慮に入れると、こ
のような同時変更を回避するには比較的単純な次の方法
がある。
のパスのみがノードCを通ることを考慮に入れると、こ
のような同時変更を回避するには比較的単純な次の方法
がある。
【0050】(1)全ての変更はツリーを通して通信さ
れることを要求する。
れることを要求する。
【0051】(2)親変更中のノードは他のいかなる変
更もその親ノードからその子ノードのいづれかへ通信さ
れることを阻止する。
更もその親ノードからその子ノードのいづれかへ通信さ
れることを阻止する。
【0052】図3の例を再度用いると、ノードDはそれ
が新たな親ノードに加入する意向をツリーを通してノー
ドAに通信しなければならず、このパスはルート、ノー
ドCの親ノード、ノードC,ノードB、そしてノードA
自身を含む。しかし、ノードCは既に変更中であるか
ら、ノードCはノードDの親変更通知がその親ノードか
らノードBに渡されることを許さず、その代わりに、ノ
ードDに変更を許可しない旨のメッセージを返送する。
もしノードCとDが加入意向を示すメッセージをツリー
に沿って同時に通信しようとした場合には、これらは両
方拒絶され、いづれのノードも各々任意の短時間経って
から再度変更を試みる。
が新たな親ノードに加入する意向をツリーを通してノー
ドAに通信しなければならず、このパスはルート、ノー
ドCの親ノード、ノードC,ノードB、そしてノードA
自身を含む。しかし、ノードCは既に変更中であるか
ら、ノードCはノードDの親変更通知がその親ノードか
らノードBに渡されることを許さず、その代わりに、ノ
ードDに変更を許可しない旨のメッセージを返送する。
もしノードCとDが加入意向を示すメッセージをツリー
に沿って同時に通信しようとした場合には、これらは両
方拒絶され、いづれのノードも各々任意の短時間経って
から再度変更を試みる。
【0053】2.1.2 上記の親変更アルゴリズムは、ノードがその以前の親ノ
ードが破損したために新たな親ノードを得ようとする場
合には明らかに機能しない。加入意向を示すメッセージ
が通れる損傷のないパスがない。パス上の(今はダウン
した)親ノードの次のノードから意図する親ノードに加
入意向を示すメッセージを送ることも考えられるが、こ
のノードも破損している可能性がある。一般に、ほとん
どの任意の組の障害が起こり得ると仮定し、任意の損傷
したツリーを修復する一般的解決策を構ずることが最も
容易である。
ードが破損したために新たな親ノードを得ようとする場
合には明らかに機能しない。加入意向を示すメッセージ
が通れる損傷のないパスがない。パス上の(今はダウン
した)親ノードの次のノードから意図する親ノードに加
入意向を示すメッセージを送ることも考えられるが、こ
のノードも破損している可能性がある。一般に、ほとん
どの任意の組の障害が起こり得ると仮定し、任意の損傷
したツリーを修復する一般的解決策を構ずることが最も
容易である。
【0054】有効な親ノードのない場合にループが形成
されないようにするため、ノードはパケットの送信を意
図する親ノードのルートパスに沿って始める。パケット
は通過したノードのリストを維持し、もしループがあれ
ば、ノードがそれ自身既にリスト中にあることを見つけ
ることによりこれが検出される。
されないようにするため、ノードはパケットの送信を意
図する親ノードのルートパスに沿って始める。パケット
は通過したノードのリストを維持し、もしループがあれ
ば、ノードがそれ自身既にリスト中にあることを見つけ
ることによりこれが検出される。
【0055】2.2 ノードデータ構造 図18は、ノードがツリー中での正しい位置を維持する
ために用いる内部データ構造を示す。
ために用いる内部データ構造を示す。
【0056】ルートパスはノード自身から始まり、各前
掲のノードの親ノードをリストアップし、ルートノード
で終わるノードのリストからなる。このリストは大きな
ツリーに対しても一般には非常に短い。例えば、60、
000個のノードからなるツリーにおいて、各ノードが
3個の個ノードを有する場合、平均的なルートパスは5
つのノードを含み、最も長いルートパスでも10個のノ
ードを含むにすぎない。
掲のノードの親ノードをリストアップし、ルートノード
で終わるノードのリストからなる。このリストは大きな
ツリーに対しても一般には非常に短い。例えば、60、
000個のノードからなるツリーにおいて、各ノードが
3個の個ノードを有する場合、平均的なルートパスは5
つのノードを含み、最も長いルートパスでも10個のノ
ードを含むにすぎない。
【0057】ルートパスは別のノードが親側ノードであ
るかどうかを決定するために利用できることからアルゴ
リズムの鍵となる構成要素である。詳しくは、もしノー
ドAが別のノードBのルートパスになければ、ノードA
はノードBが親側ノードであることが分かる。
るかどうかを決定するために利用できることからアルゴ
リズムの鍵となる構成要素である。詳しくは、もしノー
ドAが別のノードBのルートパスになければ、ノードA
はノードBが親側ノードであることが分かる。
【0058】各ノードは、そのノードの隣接ノードを全
て含んだ隣接ノードリストを維持いており、隣接ノード
リストの各エントリは、隣接ノードのノード識別子(名
前とアドレス)、隣接ノードのノード状態(親か子)、
そして隣接ノードが親の場合には凍結状態(凍結か解
凍)を含んでいる。一般的にノードは、さらに多くの隣
接ノードを有することも可能ではあるが、せいぜい3つ
か4つ程度の隣接ノードを有している。
て含んだ隣接ノードリストを維持いており、隣接ノード
リストの各エントリは、隣接ノードのノード識別子(名
前とアドレス)、隣接ノードのノード状態(親か子)、
そして隣接ノードが親の場合には凍結状態(凍結か解
凍)を含んでいる。一般的にノードは、さらに多くの隣
接ノードを有することも可能ではあるが、せいぜい3つ
か4つ程度の隣接ノードを有している。
【0059】各ノードはまた親側ノードのリストを維持
している。このリストは、親側ノードがいくら多数存在
しても、5ー10個の親側ノードを含んでいる。このリ
ストの各エントリは、ノード識別子、ノードのルートパ
ス、エントリ挿入時刻を含んでいる。
している。このリストは、親側ノードがいくら多数存在
しても、5ー10個の親側ノードを含んでいる。このリ
ストの各エントリは、ノード識別子、ノードのルートパ
ス、エントリ挿入時刻を含んでいる。
【0060】この記載からも明かなように、このアルゴ
リズムで要求されるデータ量は極めて少なく、ツリーの
サイズとは無関係である。
リズムで要求されるデータ量は極めて少なく、ツリーの
サイズとは無関係である。
【0061】2.3 メッセージタイプ このアルゴリズムではツリーを管理するために以下の6
つのメッセージを使用する。
つのメッセージを使用する。
【0062】(1)加入メッセージ(質問と回答) (2)加入意向メッセージ(質問と回答) (3)ルートパス追跡メッセージ (4)予期離脱メッセージ(質問と回答) (5)離脱メッセージ (6)メンバー探索メッセージ(質問と回答) これらのメッセージ(回答形式のものを除く)とその内
容を図19に示す。各メッセージはメッセージの送信者
と受信者の識別子から始まる。3つのメッセージ、即ち
加入意向メッセージ、ルートパス追跡メッセージ、メン
バー探索メッセージは複数のノードを通過する。これら
のメッセージは更に、受信ノードが後でどこに回答を送
信すべきかが分かるようにメッセージの発信元も識別す
る。
容を図19に示す。各メッセージはメッセージの送信者
と受信者の識別子から始まる。3つのメッセージ、即ち
加入意向メッセージ、ルートパス追跡メッセージ、メン
バー探索メッセージは複数のノードを通過する。これら
のメッセージは更に、受信ノードが後でどこに回答を送
信すべきかが分かるようにメッセージの発信元も識別す
る。
【0063】2.4 アルゴリズムの概観 図20は、ノードが受信しうる入力と、これら入力の結
果実行されるアルゴリズムの概観を示す。
果実行されるアルゴリズムの概観を示す。
【0064】2つの入力が上位層のアプリケーションに
より生成され得る。これらはツリーに対する加入、離脱
の指示である。前者はノードにツリー加入アルゴリズム
を実行させ、このアルゴリズムは更に独立親変更アルゴ
リズムを実行する。このアルゴリズムは加入メッセージ
と加入意向メッセージを使用する。後者の入力はノード
にツリー離脱アルゴリズムを実行させる。このアルゴリ
ズムは離脱メッセージと予期離脱メッセージを使用す
る。
より生成され得る。これらはツリーに対する加入、離脱
の指示である。前者はノードにツリー加入アルゴリズム
を実行させ、このアルゴリズムは更に独立親変更アルゴ
リズムを実行する。このアルゴリズムは加入メッセージ
と加入意向メッセージを使用する。後者の入力はノード
にツリー離脱アルゴリズムを実行させる。このアルゴリ
ズムは離脱メッセージと予期離脱メッセージを使用す
る。
【0065】1つの入力は下位層の通信プロトコルモジ
ュール(例えばTCP)により生成され得る。これは隣
接ノードが到達不能になったことの通知である。これは
結果として隣接ノードが到達不能と判明時のアルゴリズ
ムを実行させる。もし到達不能な隣接ノードが親ノード
であれば、このアルゴリズムは更に独立親変更アルゴリ
ズムか従属緊急親変更アルゴリズムを実行する。この後
者のアルゴリズムはルートパス追跡メッセージと加入メ
ッセージを使用する。
ュール(例えばTCP)により生成され得る。これは隣
接ノードが到達不能になったことの通知である。これは
結果として隣接ノードが到達不能と判明時のアルゴリズ
ムを実行させる。もし到達不能な隣接ノードが親ノード
であれば、このアルゴリズムは更に独立親変更アルゴリ
ズムか従属緊急親変更アルゴリズムを実行する。この後
者のアルゴリズムはルートパス追跡メッセージと加入メ
ッセージを使用する。
【0066】上記の6つのメッセージ種別(質問形式の
ものがあればそれも)の各々を受信することにより6つ
の入力が生成され得る。この内2つ、離脱メッセージと
予期離脱メッセージは3つの親変更アルゴリズムのいづ
れかを実行させる。
ものがあればそれも)の各々を受信することにより6つ
の入力が生成され得る。この内2つ、離脱メッセージと
予期離脱メッセージは3つの親変更アルゴリズムのいづ
れかを実行させる。
【0067】親側ノード発見アルゴリズムには入力がな
く、その代わり、これは背景タスクとして定期的に実行
される。このアルゴリズムは結果として親変更の決定と
なって独立親変更アルゴリズムか従属統制親変更アルゴ
リズムの実行を引き起こすことが可能である。
く、その代わり、これは背景タスクとして定期的に実行
される。このアルゴリズムは結果として親変更の決定と
なって独立親変更アルゴリズムか従属統制親変更アルゴ
リズムの実行を引き起こすことが可能である。
【0068】3つの親変更アルゴリズムのどれを用いる
かは隣接ノードリストの内容による。もし隣接ノードリ
ストが子ノードを含まない場合には、独立親変更アルゴ
リズムが使用される。そうではなく、もし隣接ノードリ
ストが親ノードを含んでいる場合には、従属統制親変更
アルゴリズムが使用される。そうではなく、もし隣接ノ
ードリストが親ノードを含まない場合には、従属緊急親
変更アルゴリズムが使用される。
かは隣接ノードリストの内容による。もし隣接ノードリ
ストが子ノードを含まない場合には、独立親変更アルゴ
リズムが使用される。そうではなく、もし隣接ノードリ
ストが親ノードを含んでいる場合には、従属統制親変更
アルゴリズムが使用される。そうではなく、もし隣接ノ
ードリストが親ノードを含まない場合には、従属緊急親
変更アルゴリズムが使用される。
【0069】2.5 加入質問メッセージ受信のアルゴ
リズム 加入質問メッセージは加入しようとしているノードから
それが加入を希望するノード(その親候補)へ送られ
る。このアルゴリズムのフローチャートを図4に示す。
リズム 加入質問メッセージは加入しようとしているノードから
それが加入を希望するノード(その親候補)へ送られ
る。このアルゴリズムのフローチャートを図4に示す。
【0070】加入質問メッセージを受信すると(S4
1)、親候補は加入しようとしているノード(メッセー
ジのソース)がそのルートパス上のノードの一つである
かどうかを調べる(S42)。もしそうでなければ(S
42NO)、親候補は加入しようとしているノードを許
諾する加入回答メッセージを送り(S43)、加入しよ
うとしているノードを隣接ノードリストに加える(S4
4)。もしそうなら(S42YES)、親候補は加入し
ようとしているノードを拒絶する加入回答メッセージを
送る(S45)。
1)、親候補は加入しようとしているノード(メッセー
ジのソース)がそのルートパス上のノードの一つである
かどうかを調べる(S42)。もしそうでなければ(S
42NO)、親候補は加入しようとしているノードを許
諾する加入回答メッセージを送り(S43)、加入しよ
うとしているノードを隣接ノードリストに加える(S4
4)。もしそうなら(S42YES)、親候補は加入し
ようとしているノードを拒絶する加入回答メッセージを
送る(S45)。
【0071】2.6 加入意向質問メッセージ受信アル
ゴリズム 加入意向質問メッセージはノードのリストを含み、この
リストは親変更中のノードからその親候補へのパスをそ
の親候補を含んで識別する。このアルゴリズムのフロー
チャートを図5に示す。
ゴリズム 加入意向質問メッセージはノードのリストを含み、この
リストは親変更中のノードからその親候補へのパスをそ
の親候補を含んで識別する。このアルゴリズムのフロー
チャートを図5に示す。
【0072】加入意向質問メッセージを受信すると(S
51)、受信ノードはまずそれが送信ノード(送信者)
からの加入意向メッセージの受信を凍結したかどうかを
調べる(S52)。もしそうなら(S52YES)、受
信ノードは質問を拒絶する加入意向回答メッセージを親
変更中のノードに送る(S53)。
51)、受信ノードはまずそれが送信ノード(送信者)
からの加入意向メッセージの受信を凍結したかどうかを
調べる(S52)。もしそうなら(S52YES)、受
信ノードは質問を拒絶する加入意向回答メッセージを親
変更中のノードに送る(S53)。
【0073】そうでなければ(S52NO)、受信ノー
ドは加入意向メッセージに含まれたノードのリストを調
べて、受信ノード自身がリスト中にあるかどうかを調べ
る(S54)。もしなければ(S54NO)、受信ノー
ドは質問を拒絶する加入意向回答メッセージを親変更中
のノードに送る(S53)。
ドは加入意向メッセージに含まれたノードのリストを調
べて、受信ノード自身がリスト中にあるかどうかを調べ
る(S54)。もしなければ(S54NO)、受信ノー
ドは質問を拒絶する加入意向回答メッセージを親変更中
のノードに送る(S53)。
【0074】もし自身がリスト中にあり(S54YE
S)、自身より後の他のノードがリスト中にあり(S5
5NO)、そのノードが受信ノードの隣接ノードであれ
ば(S56YES)、受信ノードはその隣接ノードに加
入意向質問メッセージを送信する(S57)。そうでな
ければ(S56NO)、受信ノードは質問を拒絶する加
入意向回答メッセージを親変更中のノードに送る(S5
3)。
S)、自身より後の他のノードがリスト中にあり(S5
5NO)、そのノードが受信ノードの隣接ノードであれ
ば(S56YES)、受信ノードはその隣接ノードに加
入意向質問メッセージを送信する(S57)。そうでな
ければ(S56NO)、受信ノードは質問を拒絶する加
入意向回答メッセージを親変更中のノードに送る(S5
3)。
【0075】一方、もし受信ノードがリストの最後であ
れば(S55YES)、受信ノードは質問を許諾する加
入意向回答メッセージを発信元(親変更中のノード)に
送る(S58)。
れば(S55YES)、受信ノードは質問を許諾する加
入意向回答メッセージを発信元(親変更中のノード)に
送る(S58)。
【0076】2.7 ルートパス追跡メッセージ受信ア
ルゴリズム ルートパス追跡質問メッセージは最初メッセージの発信
元だけを含んでいる、が、それが流されるにつれて、ル
ートパス中にあるノードのリストを構築していく。この
アルゴリズムのフローチャートを図6に示す。
ルゴリズム ルートパス追跡質問メッセージは最初メッセージの発信
元だけを含んでいる、が、それが流されるにつれて、ル
ートパス中にあるノードのリストを構築していく。この
アルゴリズムのフローチャートを図6に示す。
【0077】ルートパス追跡質問メッセージを受信する
と(S61)、受信ノードは自身をリストに付加し(S
64)、もし自身が以前にもリストに登場するかどうか
を調べる(S65)。もしそうなら(S65YES)、
受信ノードはメッセージを発信元に返送する(S6
6)。
と(S61)、受信ノードは自身をリストに付加し(S
64)、もし自身が以前にもリストに登場するかどうか
を調べる(S65)。もしそうなら(S65YES)、
受信ノードはメッセージを発信元に返送する(S6
6)。
【0078】もしそうでなければ(S65NO)、受信
ノードはそれがルートであるかどうか調べる(S6
7)。もしそうなら(S67YES)、受信ノードはメ
ッセージを発信元に返送する(S66)。もしそれがル
ートでなければ(S67NO)、受信ノードはメッセー
ジをその親ノードに送信する(S68)。
ノードはそれがルートであるかどうか調べる(S6
7)。もしそうなら(S67YES)、受信ノードはメ
ッセージを発信元に返送する(S66)。もしそれがル
ートでなければ(S67NO)、受信ノードはメッセー
ジをその親ノードに送信する(S68)。
【0079】2.8 予期離脱質問メッセージ受信アル
ゴリズム このアルゴリズムのフローチャートを図7に示す。
ゴリズム このアルゴリズムのフローチャートを図7に示す。
【0080】予期離脱メッセージを受信すると(S7
1)、受信ノードはメッセージ送信元がその親ノードで
あるかどうか調べる(S72)。もし受信ノードがその
親ノード以外のノードから予期離脱メッセージを受信し
た場合(S72NO)、メッセージは無視される(S7
3)。そうでなければ(S72YES)、受信ノードが
子ノードを有するかどうかを調べ(S74)、もし子ノ
ードを有する時には(S74YES)、受信ノードは下
記の従属統制親変更アルゴリズムを実行し(S75)、
もし子ノードを有しない時には(S74NO)、下記の
独立親変更アルゴリズムを実行する(S76)。いづれ
かのアルゴリズムが完了すると、質問の送信者に対して
回答が返送される(S77)。
1)、受信ノードはメッセージ送信元がその親ノードで
あるかどうか調べる(S72)。もし受信ノードがその
親ノード以外のノードから予期離脱メッセージを受信し
た場合(S72NO)、メッセージは無視される(S7
3)。そうでなければ(S72YES)、受信ノードが
子ノードを有するかどうかを調べ(S74)、もし子ノ
ードを有する時には(S74YES)、受信ノードは下
記の従属統制親変更アルゴリズムを実行し(S75)、
もし子ノードを有しない時には(S74NO)、下記の
独立親変更アルゴリズムを実行する(S76)。いづれ
かのアルゴリズムが完了すると、質問の送信者に対して
回答が返送される(S77)。
【0081】2.9 離脱メッセージ受信アルゴリズム このアルゴリズムのフローチャートを図8に示す。
【0082】離脱メッセージを受信すると(S81)、
受信ノードはメッセージがその子ノードからかどうかを
調べる(S82)。もし離脱メッセージが子ノードから
であれば(S82YES)、その子ノードを隣接ノード
リストから削除する(S83)。
受信ノードはメッセージがその子ノードからかどうかを
調べる(S82)。もし離脱メッセージが子ノードから
であれば(S82YES)、その子ノードを隣接ノード
リストから削除する(S83)。
【0083】そうでなければ(S82NO)、受信ノー
ドはメッセージがその親ノードからかどうかを調べる
(S84)。もし離脱メッセージが親ノードからであれ
ば(S84YES)、その親ノードを隣接ノードリスト
から削除し(S86)、もし離脱メッセージが親ノード
からでなければ(S84NO)、メッセージは無視され
る(S85)。
ドはメッセージがその親ノードからかどうかを調べる
(S84)。もし離脱メッセージが親ノードからであれ
ば(S84YES)、その親ノードを隣接ノードリスト
から削除し(S86)、もし離脱メッセージが親ノード
からでなければ(S84NO)、メッセージは無視され
る(S85)。
【0084】次に、受信ノードが子ノードを有するかど
うかを調べる(S87)。もし受信ノードが子ノードを
有するなら(S87YES)、受信ノードは下記の従属
緊急親変更アルゴリズムを実行する(S88)。もし受
信ノードが子ノードを有さないなら(S87NO)、受
信ノードは下記の独立親変更アルゴリズムを実行する
(S89)。
うかを調べる(S87)。もし受信ノードが子ノードを
有するなら(S87YES)、受信ノードは下記の従属
緊急親変更アルゴリズムを実行する(S88)。もし受
信ノードが子ノードを有さないなら(S87NO)、受
信ノードは下記の独立親変更アルゴリズムを実行する
(S89)。
【0085】2.10 メンバー探索質問メッセージ受
信アルゴリズム メンバー探索質問メッセージはメッセージの発信元を識
別する。このアルゴリズムのフローチャートを図9に示
す。
信アルゴリズム メンバー探索質問メッセージはメッセージの発信元を識
別する。このアルゴリズムのフローチャートを図9に示
す。
【0086】メンバー探索質問メッセージを受信すると
(S91)、受信ノードはメッセージがその隣接ノード
からかどうかを調べる(S92)。もしメンバー探索質
問メッセージが隣接ノードからでなければ(S92N
O)、メッセージは無視される(S93)。もしこのメ
ッセージが隣接ノードからであれば(S92YES)、
受信ノードはそれ自身とその隣接ノードからメッセージ
を受信した隣接ノードを除いたものの内から一つを無作
為に選択する(S94)。もし受信ノードが自身を選択
した場合には(S95YES)、受信ノードはメッセー
ジの発信元にメンバー探索回答メッセージを送信する
(S96)。メンバー探索回答メッセージは回答するノ
ードのルートパスを含んでいる。そうでなければ(S9
5NO)、受信ノードは質問メッセージを選択された隣
接ノードに送信する(S97)。
(S91)、受信ノードはメッセージがその隣接ノード
からかどうかを調べる(S92)。もしメンバー探索質
問メッセージが隣接ノードからでなければ(S92N
O)、メッセージは無視される(S93)。もしこのメ
ッセージが隣接ノードからであれば(S92YES)、
受信ノードはそれ自身とその隣接ノードからメッセージ
を受信した隣接ノードを除いたものの内から一つを無作
為に選択する(S94)。もし受信ノードが自身を選択
した場合には(S95YES)、受信ノードはメッセー
ジの発信元にメンバー探索回答メッセージを送信する
(S96)。メンバー探索回答メッセージは回答するノ
ードのルートパスを含んでいる。そうでなければ(S9
5NO)、受信ノードは質問メッセージを選択された隣
接ノードに送信する(S97)。
【0087】2.11 ツリー加入アルゴリズム このアルゴリズムはノードが最初にツリーに加入する際
に実行される。ここであるノードが最初にツリーに加入
する時にはもしあれば少なくとも一つの既に存在するツ
リーメンバー(ツリーに付加したノード)を知っている
ものとする。下記のセクション4においてこの知識がど
のように求められるかに関する簡単なアルゴリズムを説
明する。
に実行される。ここであるノードが最初にツリーに加入
する時にはもしあれば少なくとも一つの既に存在するツ
リーメンバー(ツリーに付加したノード)を知っている
ものとする。下記のセクション4においてこの知識がど
のように求められるかに関する簡単なアルゴリズムを説
明する。
【0088】まず、既に知られているツリーメンバーを
親側ノードリストに追加する。次いで、ノードはセクシ
ョン2.15に記載した独立親変更アルゴリズムを実行
する。
親側ノードリストに追加する。次いで、ノードはセクシ
ョン2.15に記載した独立親変更アルゴリズムを実行
する。
【0089】2.12 ツリー離脱アルゴリズム このアルゴリズムはツリーのメンバーであるノードがツ
リーを離脱することを希望する際に実行される。このア
ルゴリズムのフローチャートを図10に示す。
リーを離脱することを希望する際に実行される。このア
ルゴリズムのフローチャートを図10に示す。
【0090】ツリーを離脱することを決定すると(S1
01)、ノードが子ノードを有しているかどうかを調べ
る(S102)。もしノードが子ノードを有していなけ
れば(S102NO)、ノードは単に離脱メッセージを
その親ノードに送り(S103)、親ノードを隣接ノー
ドリストから削除する(S104)。この時点で実効的
にノードはツリーから離脱したことになる。
01)、ノードが子ノードを有しているかどうかを調べ
る(S102)。もしノードが子ノードを有していなけ
れば(S102NO)、ノードは単に離脱メッセージを
その親ノードに送り(S103)、親ノードを隣接ノー
ドリストから削除する(S104)。この時点で実効的
にノードはツリーから離脱したことになる。
【0091】もしノードが子ノードを有する場合には
(S102YES)、ノードはそれらの各々に予期離脱
メッセージを送り(S105)、数分で切れるように設
定された回答タイマーをセットする(S106)。そし
て、ノードは離脱メッセージが全ての子ノードから来る
かタイマーが切れるまで待つ(S107)。
(S102YES)、ノードはそれらの各々に予期離脱
メッセージを送り(S105)、数分で切れるように設
定された回答タイマーをセットする(S106)。そし
て、ノードは離脱メッセージが全ての子ノードから来る
かタイマーが切れるまで待つ(S107)。
【0092】ノードが子ノードから離脱メッセージを受
信する毎に(S108)、ノードはその子ノードを隣接
ノードリストから削除する(S109)。他にも子ノー
ドが残っている限り動作はそれからステップS107に
戻る(S1010YES)。残っている子ノードが無く
なった場合には(S1010NO),ノードは回答タイ
マーをキャンセルし(S1011)、離脱メッセージを
親ノードに送り(S103)、親ノードを隣接ノードリ
ストから削除する(S104)。この時点で実効的にノ
ードはツリーから離脱したことになる。
信する毎に(S108)、ノードはその子ノードを隣接
ノードリストから削除する(S109)。他にも子ノー
ドが残っている限り動作はそれからステップS107に
戻る(S1010YES)。残っている子ノードが無く
なった場合には(S1010NO),ノードは回答タイ
マーをキャンセルし(S1011)、離脱メッセージを
親ノードに送り(S103)、親ノードを隣接ノードリ
ストから削除する(S104)。この時点で実効的にノ
ードはツリーから離脱したことになる。
【0093】もし全ての子ノードが離脱する前にタイマ
ーが切れた場合には(S1012)、ノードは離脱メッ
セージを残っている子ノードに送り(S1013)、そ
れらを全て隣接ノードリストから削除する(S101
4)。そして、ノードは離脱メッセージを親ノードにも
送り(S103)、親ノードを隣接ノードリストから削
除する(S104)。この時点で実効的にノードはツリ
ーから離脱したことになる。
ーが切れた場合には(S1012)、ノードは離脱メッ
セージを残っている子ノードに送り(S1013)、そ
れらを全て隣接ノードリストから削除する(S101
4)。そして、ノードは離脱メッセージを親ノードにも
送り(S103)、親ノードを隣接ノードリストから削
除する(S104)。この時点で実効的にノードはツリ
ーから離脱したことになる。
【0094】2.12 ツリー離脱アルゴリズム このアルゴリズムはツリーのメンバーであるノードがツ
リーを離脱することを希望する際に実行される。このア
ルゴリズムのフローチャートを図10に示す。
リーを離脱することを希望する際に実行される。このア
ルゴリズムのフローチャートを図10に示す。
【0095】ツリーを離脱することを決定すると(S1
01)、ノードが子ノードを有しているかどうかを調べ
る(S102)。もしノードが子ノードを有していなけ
れば(S102NO)、ノードは単に離脱メッセージを
その親ノードに送り(S103)、親ノードを隣接ノー
ドリストから削除する(S104)。この時点で実効的
にノードはツリーから離脱したことになる。
01)、ノードが子ノードを有しているかどうかを調べ
る(S102)。もしノードが子ノードを有していなけ
れば(S102NO)、ノードは単に離脱メッセージを
その親ノードに送り(S103)、親ノードを隣接ノー
ドリストから削除する(S104)。この時点で実効的
にノードはツリーから離脱したことになる。
【0096】もしノードが子ノードを有する場合には
(S102YES)、ノードはそれらの各々に予期離脱
メッセージを送り(S105)、数分で切れるように設
定された回答タイマーをセットする(S106)。そし
て、ノードは離脱メッセージが全ての子ノードから来る
かタイマーが切れるまで待つ(S107)。
(S102YES)、ノードはそれらの各々に予期離脱
メッセージを送り(S105)、数分で切れるように設
定された回答タイマーをセットする(S106)。そし
て、ノードは離脱メッセージが全ての子ノードから来る
かタイマーが切れるまで待つ(S107)。
【0097】ノードが子ノードから離脱メッセージを受
信する毎に(S108)、ノードはその子ノードを隣接
ノードリストから削除する(S109)。他にも子ノー
ドが残っている限り動作はそれからステップS107に
戻る(S1010YES)。残っている子ノードが無く
なった場合には(S1010NO),ノードは回答タイ
マーをキャンセルし(S1011)、離脱メッセージを
親ノードに送り(S103)、親ノードを隣接ノードリ
ストから削除する(S104)。この時点で実効的にノ
ードはツリーから離脱したことになる。
信する毎に(S108)、ノードはその子ノードを隣接
ノードリストから削除する(S109)。他にも子ノー
ドが残っている限り動作はそれからステップS107に
戻る(S1010YES)。残っている子ノードが無く
なった場合には(S1010NO),ノードは回答タイ
マーをキャンセルし(S1011)、離脱メッセージを
親ノードに送り(S103)、親ノードを隣接ノードリ
ストから削除する(S104)。この時点で実効的にノ
ードはツリーから離脱したことになる。
【0098】もし全ての子ノードが離脱する前にタイマ
ーが切れた場合には(S1012)、ノードは離脱メッ
セージを残っている子ノードに送り(S1013)、そ
れらを全て隣接ノードリストから削除する(S101
4)。そして、ノードは離脱メッセージを親ノードにも
送り(S103)、親ノードを隣接ノードリストから削
除する(S104)。この時点で実効的にノードはツリ
ーから離脱したことになる。
ーが切れた場合には(S1012)、ノードは離脱メッ
セージを残っている子ノードに送り(S1013)、そ
れらを全て隣接ノードリストから削除する(S101
4)。そして、ノードは離脱メッセージを親ノードにも
送り(S103)、親ノードを隣接ノードリストから削
除する(S104)。この時点で実効的にノードはツリ
ーから離脱したことになる。
【0099】2.13 隣接ノードが到達不能と判明時
のアルゴリズム 隣接ノードは、隣接ノードから来ることが予想されてい
たメッセージが受信されなかった時に到達不能であると
判定され得る。例えば、2つの隣接ノード間に確立され
たTCPプロトコルは定期的に隣接ノードにkeep−
aliveパケットを送信するが、もしそのような送信
を数回行っても応答が受信されない場合には、隣接ノー
ドは到達不能と見なされる。
のアルゴリズム 隣接ノードは、隣接ノードから来ることが予想されてい
たメッセージが受信されなかった時に到達不能であると
判定され得る。例えば、2つの隣接ノード間に確立され
たTCPプロトコルは定期的に隣接ノードにkeep−
aliveパケットを送信するが、もしそのような送信
を数回行っても応答が受信されない場合には、隣接ノー
ドは到達不能と見なされる。
【0100】これが起こると、到達不能であることをあ
たかもセクション2.9に記載し図8に示したように隣
接ノードから離脱メッセージを受信したかと同等に扱
う。つまり、もし子ノードが到達不能と判明した場合に
は、ステップS83が実行され、もし親ノードが到達不
能と判明した場合には、ステップS86以降が実行され
る。
たかもセクション2.9に記載し図8に示したように隣
接ノードから離脱メッセージを受信したかと同等に扱
う。つまり、もし子ノードが到達不能と判明した場合に
は、ステップS83が実行され、もし親ノードが到達不
能と判明した場合には、ステップS86以降が実行され
る。
【0101】2.14 親側ノード発見アルゴリズム ノードにとって、いくつか(5ー10個)の親側ノード
のリストを最新の状態に維持することは、このリストか
らのエントリが親変更時に使用されることから重要であ
る。このアルゴリズムのフローチャートを図11に示
す。
のリストを最新の状態に維持することは、このリストか
らのエントリが親変更時に使用されることから重要であ
る。このアルゴリズムのフローチャートを図11に示
す。
【0102】親側ノードリストは各エントリが挿入され
た時刻を示すタイムスタンプを含んでいる。ノードは定
期的にメンバー探索質問メッセージをその親ノードに送
信する(S111)。ある短時間後、この質問は一般に
対応する回答が受信されるという結果になる。
た時刻を示すタイムスタンプを含んでいる。ノードは定
期的にメンバー探索質問メッセージをその親ノードに送
信する(S111)。ある短時間後、この質問は一般に
対応する回答が受信されるという結果になる。
【0103】回答が受信されると(S112)、もし回
答の送信者が親側ノードリストに既にあるエントリとマ
ッチすれば(S113YES)、このエントリのタイム
スタンプをレフレッシュする(現時刻にセットする)
(S114)。そうでなければ(S113NO)、もし
リストが満杯であれば(S115YES)、リスト中の
最も古いエントリを削除する(S116)。いづれにせ
よ、回答の送信者は、送信者のルートパスと共にリスト
に追加される(S117)。
答の送信者が親側ノードリストに既にあるエントリとマ
ッチすれば(S113YES)、このエントリのタイム
スタンプをレフレッシュする(現時刻にセットする)
(S114)。そうでなければ(S113NO)、もし
リストが満杯であれば(S115YES)、リスト中の
最も古いエントリを削除する(S116)。いづれにせ
よ、回答の送信者は、送信者のルートパスと共にリスト
に追加される(S117)。
【0104】2.15 独立親変更アルゴリズム このアルゴリズムは子ノードを持たないノードが新たな
親ノードの獲得を希望する際に実行される。このアルゴ
リズムのフローチャートを図12に示す。
親ノードの獲得を希望する際に実行される。このアルゴ
リズムのフローチャートを図12に示す。
【0105】独立親変更アルゴリズムが起動されると
(S121)、ノードはまずその親側ノードリストから
エントリを選択し(S122)、選択したノードに加入
質問メッセージを送信する(S123)。
(S121)、ノードはまずその親側ノードリストから
エントリを選択し(S122)、選択したノードに加入
質問メッセージを送信する(S123)。
【0106】もし回答が受信されなければ(S124N
O)、またもし回答が拒絶であれば(S125NO)、
ノードはこのエントリを親側ノードリストから削除し
(S126)、別のエントリをステップS122にて選
択する。
O)、またもし回答が拒絶であれば(S125NO)、
ノードはこのエントリを親側ノードリストから削除し
(S126)、別のエントリをステップS122にて選
択する。
【0107】もし親側ノードリストが空になり、ノード
が依然として親ノードを有していれば、ノードはより多
くのノードが学習されるまで親側ノード発見アルゴリズ
ムをより頻繁に実行してもよい。
が依然として親ノードを有していれば、ノードはより多
くのノードが学習されるまで親側ノード発見アルゴリズ
ムをより頻繁に実行してもよい。
【0108】もし加入を許諾する回答が受信されれば
(S125YES)、回答したノードを隣接ノードリス
トに親ノードとして加える(S127)。
(S125YES)、回答したノードを隣接ノードリス
トに親ノードとして加える(S127)。
【0109】2.16 従属統制親変更アルゴリズム このアルゴリズムは、子ノードを持つノードがその現行
の親ノードが依然有効な時に新たなノードを親ノード
(親候補)として選択した際に実行される。ここで、親
候補のルートノードは知られているものとする(例えば
メンバー探索メッセージ回答から)。このアルゴリズム
のフローチャートを図13に示す。
の親ノードが依然有効な時に新たなノードを親ノード
(親候補)として選択した際に実行される。ここで、親
候補のルートノードは知られているものとする(例えば
メンバー探索メッセージ回答から)。このアルゴリズム
のフローチャートを図13に示す。
【0110】選択済みの親候補を用いた従属統制親変更
アルゴリズムが起動されると(S131)、ノードは現
行の親ノードから来る加入意向質問メッセージを凍結す
る(S132)。つまり、親変更が完了するまでは現行
の親ノードからの今後のいかなる加入意向質問メッセー
ジも拒絶される。
アルゴリズムが起動されると(S131)、ノードは現
行の親ノードから来る加入意向質問メッセージを凍結す
る(S132)。つまり、親変更が完了するまでは現行
の親ノードからの今後のいかなる加入意向質問メッセー
ジも拒絶される。
【0111】次ぎに、親候補へのパスを算出する(S1
33)。このパスはノードのルートパスと親候補のルー
トパスを連結したものから冗長なホップを除いたものと
なる。例えば、ノードのルートパスが、このノードを
N、このノードの親ノードをA、ルートをRとしてN−
A−B−D−Rであり、親候補のルートパスが、親候補
をPとしてP−C−B−D−Rであるとする。すると、
パスはN−A−B−C−Pとなる。ノードDとルートR
は冗長なので連結から除かれている。
33)。このパスはノードのルートパスと親候補のルー
トパスを連結したものから冗長なホップを除いたものと
なる。例えば、ノードのルートパスが、このノードを
N、このノードの親ノードをA、ルートをRとしてN−
A−B−D−Rであり、親候補のルートパスが、親候補
をPとしてP−C−B−D−Rであるとする。すると、
パスはN−A−B−C−Pとなる。ノードDとルートR
は冗長なので連結から除かれている。
【0112】次ぎに、このパスを有する加入意向メッセ
ージが現行の親ノードに送信される(S134)。同時
に、およそ1/2分の長さの加入意向タイマーをスター
トする。
ージが現行の親ノードに送信される(S134)。同時
に、およそ1/2分の長さの加入意向タイマーをスター
トする。
【0113】もし否定的な回答が加入意向メッセージの
いづれかの受信者から受信された場合には(S135N
O)、ノードは一時的に処理をアボートしなければなら
ない。又、もし回答が受信される前に加入意向タイマー
が切れた場合には、ノードはやはり処理をアボートす
る。このため、ノードはまずその親ノードからの加入意
向メッセージを解凍する(即ち、その親ノードからの加
入意向メッセージを再び許可する)(S136)。そし
て、ノードはやり直しタイマーを1分程度の範囲の任意
の時間に設定し(S137)、タイマーが切れた後(S
138)、再び親候補を獲得することを試みてもよい。
いづれかの受信者から受信された場合には(S135N
O)、ノードは一時的に処理をアボートしなければなら
ない。又、もし回答が受信される前に加入意向タイマー
が切れた場合には、ノードはやはり処理をアボートす
る。このため、ノードはまずその親ノードからの加入意
向メッセージを解凍する(即ち、その親ノードからの加
入意向メッセージを再び許可する)(S136)。そし
て、ノードはやり直しタイマーを1分程度の範囲の任意
の時間に設定し(S137)、タイマーが切れた後(S
138)、再び親候補を獲得することを試みてもよい。
【0114】もし肯定的な回答が親候補から受信された
場合には(S135YES)、次ぎに加入質問メッセー
ジを親候補に送信する(S139)。もし加入回答メッ
セージが肯定的であれば(S1310YES)、親候補
を隣接ノードリストに親ノードとして加える(S131
2)。そうでなければ(S1310NO)、回答を無視
する(S1311)。
場合には(S135YES)、次ぎに加入質問メッセー
ジを親候補に送信する(S139)。もし加入回答メッ
セージが肯定的であれば(S1310YES)、親候補
を隣接ノードリストに親ノードとして加える(S131
2)。そうでなければ(S1310NO)、回答を無視
する(S1311)。
【0115】次ぎに、その親ノードからの加入意向メッ
セージを解凍し(S1313)、前の親ノードを隣接ノ
ードリストから削除し(S1314)、離脱メッセージ
を前の親ノードに送信する(S1315)。ルートパス
はこのノード自身が付けられた新たな親ノードのものに
更新され(S1316)、それから子ノードにこの更新
されたルートパスが通知される(S1317)。
セージを解凍し(S1313)、前の親ノードを隣接ノ
ードリストから削除し(S1314)、離脱メッセージ
を前の親ノードに送信する(S1315)。ルートパス
はこのノード自身が付けられた新たな親ノードのものに
更新され(S1316)、それから子ノードにこの更新
されたルートパスが通知される(S1317)。
【0116】2.17 従属緊急親変更アルゴリズム このアルゴリズムは、子ノードを持つノードがその前の
親ノードが何等かの理由で無効になったために新たなノ
ードを親ノード(親候補)として選択する際に実行され
る。ここで、親候補のルートノードは知られているもの
とする(例えばメンバー探索メッセージ回答から)。こ
のアルゴリズムのフローチャートを図14に示す。
親ノードが何等かの理由で無効になったために新たなノ
ードを親ノード(親候補)として選択する際に実行され
る。ここで、親候補のルートノードは知られているもの
とする(例えばメンバー探索メッセージ回答から)。こ
のアルゴリズムのフローチャートを図14に示す。
【0117】選択済みの親候補を用いた従属緊急親変更
アルゴリズムが起動されると(S141)、ノードはま
ずルートパス追跡メッセージを親候補に送信し(空のル
ートパスリストと共に)(S142)、これが親候補か
らのルートパス追跡を起動する。もし回答が受信され
(S143YES)、回答がルートパスにループがある
ことを示していれば(S144YES)、ノードは短時
間(30秒程度)ループがそれ自身で解消されるのを待
ち(S145)、ルートパス追跡を再度試みる(S14
2)。
アルゴリズムが起動されると(S141)、ノードはま
ずルートパス追跡メッセージを親候補に送信し(空のル
ートパスリストと共に)(S142)、これが親候補か
らのルートパス追跡を起動する。もし回答が受信され
(S143YES)、回答がルートパスにループがある
ことを示していれば(S144YES)、ノードは短時
間(30秒程度)ループがそれ自身で解消されるのを待
ち(S145)、ルートパス追跡を再度試みる(S14
2)。
【0118】もし回答がループ無しを示す(S144N
O)が、ノードが回答にリストされている場合には(S
146YES)、ノードは自身が親候補のルートパスに
あることと親候補が無効であることを知る。この場合、
親候補は親側ノードリストから削除され(S147)、
もし他の親候補が親側ノードリストにあれば(S148
NO)、別の親候補を選択して(S149)、ルートパ
ス追跡を再度試みる(S142)。もし別の親候補がな
ければ(S148NO)、回答は無視される(S141
0)。
O)が、ノードが回答にリストされている場合には(S
146YES)、ノードは自身が親候補のルートパスに
あることと親候補が無効であることを知る。この場合、
親候補は親側ノードリストから削除され(S147)、
もし他の親候補が親側ノードリストにあれば(S148
NO)、別の親候補を選択して(S149)、ルートパ
ス追跡を再度試みる(S142)。もし別の親候補がな
ければ(S148NO)、回答は無視される(S141
0)。
【0119】もしノードが回答にリストされていなけれ
ば(S146NO),ノードは加入質問メッセージを親
候補に送る(S1411)。もし加入回答メッセージが
肯定的であれば(S1412YES)、親候補を隣接ノ
ードリストに親ノードとして加える(S1413)。ル
ートパスはこのノード自身が付けられた新たな親ノード
のものに更新され(S1414)、それから子ノードに
この更新されたルートパスが通知される(S141
5)。
ば(S146NO),ノードは加入質問メッセージを親
候補に送る(S1411)。もし加入回答メッセージが
肯定的であれば(S1412YES)、親候補を隣接ノ
ードリストに親ノードとして加える(S1413)。ル
ートパスはこのノード自身が付けられた新たな親ノード
のものに更新され(S1414)、それから子ノードに
この更新されたルートパスが通知される(S141
5)。
【0120】一方、もし加入回答メッセージが否定的で
あれば(S1412NO)、または、もし回答が受信さ
れなければ(S143NO)、親候補は親側ノードリス
トから削除され(S147)、もし他の親候補が親側ノ
ードリストにあれば(S148NO)、別の親候補を選
択して(S149)、ルートパス追跡を再度試みる(S
142)。もし別の親候補がなければ(S148N
O)、回答は無視される(S1410)。
あれば(S1412NO)、または、もし回答が受信さ
れなければ(S143NO)、親候補は親側ノードリス
トから削除され(S147)、もし他の親候補が親側ノ
ードリストにあれば(S148NO)、別の親候補を選
択して(S149)、ルートパス追跡を再度試みる(S
142)。もし別の親候補がなければ(S148N
O)、回答は無視される(S1410)。
【0121】3 共有メディアブロードキャストを用い
た分散アルゴリズム 3.1 概観 以上の記載は、ノード間の全ての通信が2局間通信、即
ち単独の送信者から単独の受信者へのもの、であること
を想定している。あるノードが複数の隣接ノードを有す
る場合には、マルチキャストパケットはこのノードから
複数回、各隣接ノード毎に一回ずつ、送信される。複数
のマルチキャストパケットは全てこのノードを含んでい
るホストの同一の物理インタフェースを通過する。隣接
ノードの数が少数に維持されていると仮定すれば、単独
有線上のこれら複数の送信は一般に問題とはならない。
た分散アルゴリズム 3.1 概観 以上の記載は、ノード間の全ての通信が2局間通信、即
ち単独の送信者から単独の受信者へのもの、であること
を想定している。あるノードが複数の隣接ノードを有す
る場合には、マルチキャストパケットはこのノードから
複数回、各隣接ノード毎に一回ずつ、送信される。複数
のマルチキャストパケットは全てこのノードを含んでい
るホストの同一の物理インタフェースを通過する。隣接
ノードの数が少数に維持されていると仮定すれば、単独
有線上のこれら複数の送信は一般に問題とはならない。
【0122】しかし、LAN等の共有メディアの場合に
は、隣接ノードが少数であることだけでは有線自体がト
ラヒックにより圧倒されてしまわないことを保証はでき
ない。例えば、20個のノードが同一の有線上にあり、
そのうち一つが有線外のノードの子ノードであり、その
他のノードは全て有線上の他のノードの子ノードである
場合を考えると、もし仮にいづれのノードにとっても最
大子ノード数が僅か2個であったとしても、ツリー上に
送信されるたった一つのパケットにさえ同一有線上に同
一パケットを20回個別に送信すること(その内たった
一つだけが実際にはルータにより有線外にフォアワード
される)が必要となる。
は、隣接ノードが少数であることだけでは有線自体がト
ラヒックにより圧倒されてしまわないことを保証はでき
ない。例えば、20個のノードが同一の有線上にあり、
そのうち一つが有線外のノードの子ノードであり、その
他のノードは全て有線上の他のノードの子ノードである
場合を考えると、もし仮にいづれのノードにとっても最
大子ノード数が僅か2個であったとしても、ツリー上に
送信されるたった一つのパケットにさえ同一有線上に同
一パケットを20回個別に送信すること(その内たった
一つだけが実際にはルータにより有線外にフォアワード
される)が必要となる。
【0123】3.2 クラスタ構造とアルゴリズム この問題に対する解決策は、共有メディアの生来のブロ
ードキャストメカニズムを使用することである。ここ
で、同一共有メディア上のノードがそれら自身でクラス
タと呼ばれるものを形成する(図15)。ノードの一つ
は動的に親ノードに選定され、クラスタヘッドまたは単
にヘッドと呼ばれる。このノードのみが唯一クラスタ外
の親ノードを見つけ、残りのノードはデフォルトでクラ
スタヘッドの子ノードとなって集合的にクラスタチャイ
ルドと呼ばれ、個別的にはクラスタフィートまたは単に
フィート(単数ならフット)と呼ばれる。
ードキャストメカニズムを使用することである。ここ
で、同一共有メディア上のノードがそれら自身でクラス
タと呼ばれるものを形成する(図15)。ノードの一つ
は動的に親ノードに選定され、クラスタヘッドまたは単
にヘッドと呼ばれる。このノードのみが唯一クラスタ外
の親ノードを見つけ、残りのノードはデフォルトでクラ
スタヘッドの子ノードとなって集合的にクラスタチャイ
ルドと呼ばれ、個別的にはクラスタフィートまたは単に
フィート(単数ならフット)と呼ばれる。
【0124】この場合クラスタヘッドを選定する動的な
アルゴリズムを用いる。このようなブロードキャストメ
ディア上の選定アルゴリズムは今日一般に用いられてい
るもので、簡単な例を以下で説明する。クラスタヘッド
はツリー形成、維持アルゴリズム(上記セクション2)
に参加する。即ち、クラスタヘッドは親ノードを獲得
し、クラスタ外の子ノードを獲得してもよい。
アルゴリズムを用いる。このようなブロードキャストメ
ディア上の選定アルゴリズムは今日一般に用いられてい
るもので、簡単な例を以下で説明する。クラスタヘッド
はツリー形成、維持アルゴリズム(上記セクション2)
に参加する。即ち、クラスタヘッドは親ノードを獲得
し、クラスタ外の子ノードを獲得してもよい。
【0125】クラスタフィートはツリー形成、維持アル
ゴリズムそのものには参加しない。代わりにこれらは単
にクラスタ自体を親隣接ノードとして扱い、それ以外に
はクラスタ外のいかなる活動にも参加しない。全てのク
ラスタノードはクラスタ自体を隣接ノードとして扱い、
共有メディアブロードキャスト自体からフレームを送受
信する。この構成においては、いかなるマルチキャスト
パケットも有線を一度はクラスタのために、一度はクラ
スタヘッドの親ノードのために、そして一度はクラスタ
ヘッドが有し得る追加の子ノードがあればその各々のた
めに渡る。
ゴリズムそのものには参加しない。代わりにこれらは単
にクラスタ自体を親隣接ノードとして扱い、それ以外に
はクラスタ外のいかなる活動にも参加しない。全てのク
ラスタノードはクラスタ自体を隣接ノードとして扱い、
共有メディアブロードキャスト自体からフレームを送受
信する。この構成においては、いかなるマルチキャスト
パケットも有線を一度はクラスタのために、一度はクラ
スタヘッドの親ノードのために、そして一度はクラスタ
ヘッドが有し得る追加の子ノードがあればその各々のた
めに渡る。
【0126】3.3 クラスタヘッド選定の一例 共有メディアに付加されたノード中からクラスタヘッド
を選定するための典型的なアプローチは以下の通りであ
る。各ノードは定期的にその存在をアナウンスするメッ
セージをクラスタにブロードキャストする。このアナウ
ンスメントはそのノードが自分自身クラスタヘッドであ
ると見なしているかどうかを示す。
を選定するための典型的なアプローチは以下の通りであ
る。各ノードは定期的にその存在をアナウンスするメッ
セージをクラスタにブロードキャストする。このアナウ
ンスメントはそのノードが自分自身クラスタヘッドであ
ると見なしているかどうかを示す。
【0127】各ノードは他のノードのブロードキャスト
を聞いており、もしある時間間隔の後に自身をクラスタ
ヘッドであると宣伝するノードがなければ、アルファニ
ューメリカルに最も高い名前を有するノードが自身をク
ラスタヘッドとして選択して自身をクラスタにアナウン
スする。
を聞いており、もしある時間間隔の後に自身をクラスタ
ヘッドであると宣伝するノードがなければ、アルファニ
ューメリカルに最も高い名前を有するノードが自身をク
ラスタヘッドとして選択して自身をクラスタにアナウン
スする。
【0128】もしある時間間隔の後に複数のノードがそ
れら自身クラスタヘッドであると宣伝した場合には、そ
のようなノードの内でアルファニューメリカルに最も高
い名前を有するノード以外は全てクラスタヘッドである
ことを止める。
れら自身クラスタヘッドであると宣伝した場合には、そ
のようなノードの内でアルファニューメリカルに最も高
い名前を有するノード以外は全てクラスタヘッドである
ことを止める。
【0129】4 初期ツリー発見の分散アルゴリズム 4.1 概観 以上のセクションにおいては、ツリーに初めて加入する
ノードは既にいくつかのツリーメンバーを知っているこ
とを前提としている。このセクションでは、どのように
してこれらのツリーメンバーが知られるようになるかに
ついて説明する。
ノードは既にいくつかのツリーメンバーを知っているこ
とを前提としている。このセクションでは、どのように
してこれらのツリーメンバーが知られるようになるかに
ついて説明する。
【0130】ここで、以下の概念を導入する。
【0131】ホストネーム:ホストのネットワーク内で
の名前。例えば、インターネットでは、ホストネームは
DNSネーム(www.yahoo.com等)であ
る。
の名前。例えば、インターネットでは、ホストネームは
DNSネーム(www.yahoo.com等)であ
る。
【0132】ディレクトリサービス:全てのホストから
利用可能なサービスで、ホストネームをそのホストネー
ムのホストに到達できるネットワークアドレスに変換刷
るもの。例えば、インターネットでは、DNSサービス
がディレクトリサービスである。
利用可能なサービスで、ホストネームをそのホストネー
ムのホストに到達できるネットワークアドレスに変換刷
るもの。例えば、インターネットでは、DNSサービス
がディレクトリサービスである。
【0133】ツリーネーム:ツリーの名前。これは有効
なホストネームでなければならない。
なホストネームでなければならない。
【0134】ツリーサブネーム:同一ツリーネームを有
するツリー中で各ツリーを識別する文字列。
するツリー中で各ツリーを識別する文字列。
【0135】ツリーマネージャ:ツリー中のノードで、
ツリーネームと同一のホストネームを有するホスト上に
いるもの。
ツリーネームと同一のホストネームを有するホスト上に
いるもの。
【0136】基本的には、ツリーを生成するアプリケー
ションソフトウェアが自身のいるホストのホストネーム
をツリーの名前として用いる。これとツリーサブネーム
を組み合わせることにより、いかに多数のツリーネーム
であっても他のいかなるホストとも調整することなくい
かなるアプリケーションにおいても容易に生成すること
が可能となる。
ションソフトウェアが自身のいるホストのホストネーム
をツリーの名前として用いる。これとツリーサブネーム
を組み合わせることにより、いかに多数のツリーネーム
であっても他のいかなるホストとも調整することなくい
かなるアプリケーションにおいても容易に生成すること
が可能となる。
【0137】ツリー生成するアプリケーションを起動し
たノードは、そのツリーのツリーマネージャとしても機
能する。ツリーマネージャとしては、ツリー中のいくつ
かの無作為に選択されたノード(ツリーのサイズに拘ら
ず大体10ー15個)に関する知識を維持することに責
任を負う。
たノードは、そのツリーのツリーマネージャとしても機
能する。ツリーマネージャとしては、ツリー中のいくつ
かの無作為に選択されたノード(ツリーのサイズに拘ら
ず大体10ー15個)に関する知識を維持することに責
任を負う。
【0138】ここで、ツリーに加入することを希望する
新たなノード(新規参入ノード)は予めツリーネームと
ツリーサブネームを持っているものとする。これは、例
えばwebページ上のURL(Uniform Res
ource Locator)から等、ノード外部のメ
カニズムを介して学習される。新たなノードは、ネット
ワークディレクトリサービスを用いてツリーマネージャ
に接触する。それに対し、ツリーマネージャは新たなノ
ードにツリーの他のメンバーについて知らせる。これを
基に、新たなノードはツリーに加入することができる。
新たなノード(新規参入ノード)は予めツリーネームと
ツリーサブネームを持っているものとする。これは、例
えばwebページ上のURL(Uniform Res
ource Locator)から等、ノード外部のメ
カニズムを介して学習される。新たなノードは、ネット
ワークディレクトリサービスを用いてツリーマネージャ
に接触する。それに対し、ツリーマネージャは新たなノ
ードにツリーの他のメンバーについて知らせる。これを
基に、新たなノードはツリーに加入することができる。
【0139】4.2 メッセージリストとコンポーネン
トアルゴリズム この機能のためにはツリーマネージャメッセージという
新たなメッセージが一つ必要になる。ツリーマネージャ
質問メッセージを受けてツリーマネージャが実行するア
ルゴリズムに加えて、以下のアルゴリズムが要求され
る。
トアルゴリズム この機能のためにはツリーマネージャメッセージという
新たなメッセージが一つ必要になる。ツリーマネージャ
質問メッセージを受けてツリーマネージャが実行するア
ルゴリズムに加えて、以下のアルゴリズムが要求され
る。
【0140】(1)ツリーマネージャがツリーメンバー
のリストを維持するためのアルゴリズム (2)新規参入ノードがいくつかのツリーメンバーにつ
いて学習するためのアルゴリズム 4.3 ツリーマネージャメッセージ受信アルゴリズム このアルゴリズムのフローチャートを図16に示す。
のリストを維持するためのアルゴリズム (2)新規参入ノードがいくつかのツリーメンバーにつ
いて学習するためのアルゴリズム 4.3 ツリーマネージャメッセージ受信アルゴリズム このアルゴリズムのフローチャートを図16に示す。
【0141】ツリーマネージャ質問メッセージを受信す
ると(S161)、ツリーマネージャはそのメンバーノ
ードリスト中の一つまたはそれ以上のエントリを含んだ
ツリーマネージャ回答メッセージを質問しているノード
に送信する(S162)。
ると(S161)、ツリーマネージャはそのメンバーノ
ードリスト中の一つまたはそれ以上のエントリを含んだ
ツリーマネージャ回答メッセージを質問しているノード
に送信する(S162)。
【0142】4.4 ツリーマネージャのメンバーノー
ドリスト維持アルゴリズム ツリーマネージャのメンバーノードリスト維持アルゴリ
ズムは、以下の例外を除き、親側ノードリストに対する
親側ノード発見アルゴリズム(上記セクション2.1
4)と同一である。
ドリスト維持アルゴリズム ツリーマネージャのメンバーノードリスト維持アルゴリ
ズムは、以下の例外を除き、親側ノードリストに対する
親側ノード発見アルゴリズム(上記セクション2.1
4)と同一である。
【0143】(1)ツリーマネージャは最初自身をメン
バーノードリストに挿入する。
バーノードリストに挿入する。
【0144】(2)メンバーノードリストにはより多数
のノードが保持される(5ー10個ではなく10ー15
個)。
のノードが保持される(5ー10個ではなく10ー15
個)。
【0145】(3)定期的に送信されるメンバー探索質
問メッセージは、親ノードにだけではなく、無作為に選
択されたいかなる隣接ノードにも送信される。これによ
り、親側だけではなく、ツリーの様々な部分からのメン
バーが見つけられる。
問メッセージは、親ノードにだけではなく、無作為に選
択されたいかなる隣接ノードにも送信される。これによ
り、親側だけではなく、ツリーの様々な部分からのメン
バーが見つけられる。
【0146】4.5 新規参入ノードのツリーメンバー
学習アルゴリズム このアルゴリズムは新規参入ノードと呼ばれるノードに
よって、それが初めに始動された後でそれが最初にツリ
ーに加入する前に実行される。このアルゴリズムのフロ
ーチャートを図17に示す。
学習アルゴリズム このアルゴリズムは新規参入ノードと呼ばれるノードに
よって、それが初めに始動された後でそれが最初にツリ
ーに加入する前に実行される。このアルゴリズムのフロ
ーチャートを図17に示す。
【0147】初めの新規参入ノードの始動の後(S17
1)、新規参入ノードはまず、ツリーネームにより名付
けられたホストにおいて、ツリーマネージャ質問メッセ
ージをツリーマネージャに送る(S172)。もしある
時間の後に回答を受け取らなければ(S173NO)、
新規参入ノードはやり直しタイマーをセットすることで
短期間待機し(S175)、メッセージを再送してもよ
い。もし数回の試行の後に回答を受け取らなければ、ツ
リーに加入しようとする試みが失敗したと見なせる。
1)、新規参入ノードはまず、ツリーネームにより名付
けられたホストにおいて、ツリーマネージャ質問メッセ
ージをツリーマネージャに送る(S172)。もしある
時間の後に回答を受け取らなければ(S173NO)、
新規参入ノードはやり直しタイマーをセットすることで
短期間待機し(S175)、メッセージを再送してもよ
い。もし数回の試行の後に回答を受け取らなければ、ツ
リーに加入しようとする試みが失敗したと見なせる。
【0148】そうでなければ、ノードはツリーマネージ
ャ回答メッセージ中にリストアップされたメンバーの一
つを始点としてツリー加入アルゴリズム(上記セクショ
ン2.11)を利用する(S174)。
ャ回答メッセージ中にリストアップされたメンバーの一
つを始点としてツリー加入アルゴリズム(上記セクショ
ン2.11)を利用する(S174)。
【0149】5 従来技術との比較 ここで、上述した本発明のマルチキャスト情報配布方法
を先に述べた従来技術のいくつかと比較する。
を先に述べた従来技術のいくつかと比較する。
【0150】DVMRP[DVMRP]については、周
知の(メッシュ)トポロジーから始めてリンクを取り除
いていくことから本発明とは本質的に異なる。本発明で
は、無から始めて1ノードづつツリーを構築していき、
最初はツリーマネージャの発見メカニズムを介して互い
を見つけていく。
知の(メッシュ)トポロジーから始めてリンクを取り除
いていくことから本発明とは本質的に異なる。本発明で
は、無から始めて1ノードづつツリーを構築していき、
最初はツリーマネージャの発見メカニズムを介して互い
を見つけていく。
【0151】MBONE[MBONE]はインターネッ
ト上を論理的にトンネルしたホストにより構成されると
いう点では本発明に似ている。しかし、MBONEのリ
ンクは前もって手動でメッシュネットワークとして構成
されたものである。その後DVMRPアルゴリズムがこ
のメッシュネットワークの上で実行され、マルチキャス
トに用いるツリーを生成する。前述したように、これは
本質的に本発明とは異なるものである。
ト上を論理的にトンネルしたホストにより構成されると
いう点では本発明に似ている。しかし、MBONEのリ
ンクは前もって手動でメッシュネットワークとして構成
されたものである。その後DVMRPアルゴリズムがこ
のメッシュネットワークの上で実行され、マルチキャス
トに用いるツリーを生成する。前述したように、これは
本質的に本発明とは異なるものである。
【0152】Internet Relay Chat
(IRC)[IRC]と通常の電子メール[SMTP]
は手動で構成されたツリーに依存するものであり、本発
明のような自動ツリー生成アルゴリズムは有していな
い。
(IRC)[IRC]と通常の電子メール[SMTP]
は手動で構成されたツリーに依存するものであり、本発
明のような自動ツリー生成アルゴリズムは有していな
い。
【0153】通常の電子メールは通過したノード(電子
メールの場合はメールフォアワーダ)をメッセージに付
加していくことに基づいたループ検出機能を有している
という点では本発明に似ている。しかし、電子メールの
場合にはツリー全体で送信される全てのメッセージにル
ープ検出機能が存在しなければならない。これに対し本
発明では、ノード間の親子関係のためにループ検出機能
はツリーのルートに向けて送信されたメッセージ一つだ
けしか要求しない。
メールの場合はメールフォアワーダ)をメッセージに付
加していくことに基づいたループ検出機能を有している
という点では本発明に似ている。しかし、電子メールの
場合にはツリー全体で送信される全てのメッセージにル
ープ検出機能が存在しなければならない。これに対し本
発明では、ノード間の親子関係のためにループ検出機能
はツリーのルートに向けて送信されたメッセージ一つだ
けしか要求しない。
【0154】Sola他[SOM]はコアを発見しその
後ツリーに加入するためにユーザが使う一種のハンドル
としてDNSネームを用いるという点では本発明に似て
いる。しかし、類似はここまでで、見つけられたツリー
の本当の名前は依然としてデータパケット中で用いられ
るのと同様IPマルチキャストアドレス(これらもDN
Sを介して割り当て、発見される必要がある)である。
これらIPマルチキャストアドレスは割り当てられなけ
ればならず(IPにおける難問のひとつ)またDNSを
介して加入するホストに別々に搬送されなければならな
い。一旦コアが発見されれば、使用されたDNSネーム
にはもはやいかなる機能も果たさなくなる。これに対
し、本発明ではDNSネームはハンドル(ユーザが始め
に用いるもの)であると同時にツリーの名前(適当なフ
レームでノード間を搬送されるもの)でもあり、ツリー
発見と操作のために追加の名前やアドレスを割り当てる
必要はない。
後ツリーに加入するためにユーザが使う一種のハンドル
としてDNSネームを用いるという点では本発明に似て
いる。しかし、類似はここまでで、見つけられたツリー
の本当の名前は依然としてデータパケット中で用いられ
るのと同様IPマルチキャストアドレス(これらもDN
Sを介して割り当て、発見される必要がある)である。
これらIPマルチキャストアドレスは割り当てられなけ
ればならず(IPにおける難問のひとつ)またDNSを
介して加入するホストに別々に搬送されなければならな
い。一旦コアが発見されれば、使用されたDNSネーム
にはもはやいかなる機能も果たさなくなる。これに対
し、本発明ではDNSネームはハンドル(ユーザが始め
に用いるもの)であると同時にツリーの名前(適当なフ
レームでノード間を搬送されるもの)でもあり、ツリー
発見と操作のために追加の名前やアドレスを割り当てる
必要はない。
【0155】以上説明したように、本発明によれば、デ
ィジタルデータや情報をネットワーク中の複数のエンド
ノードに効率的に、信頼性をもって、かつ自動的に配布
する方法を提供することが可能となる。
ィジタルデータや情報をネットワーク中の複数のエンド
ノードに効率的に、信頼性をもって、かつ自動的に配布
する方法を提供することが可能となる。
【0156】尚、上述した以外にも、本発明の本旨を逸
脱することなく上記の実施形態に様々な変更変形を加え
ることが可能であり、それら変更変形は全て本発明の範
囲に含まれるものである。
脱することなく上記の実施形態に様々な変更変形を加え
ることが可能であり、それら変更変形は全て本発明の範
囲に含まれるものである。
【0157】
【発明の効果】以上説明したように、本発明によれば、
ディジタルデータや情報をネットワーク中の複数のエン
ドノードに効率的に、信頼性をもって、かつ自動的に配
布する方法を提供することが可能となる。
ディジタルデータや情報をネットワーク中の複数のエン
ドノードに効率的に、信頼性をもって、かつ自動的に配
布する方法を提供することが可能となる。
【図1】本発明の一実施形態において使用する基本的な
ツリーの一例を示す図。
ツリーの一例を示す図。
【図2】ループと区切りを含んだツリーの一例を示す
図。
図。
【図3】同時親変更の一例を示す図。
【図4】本発明の一実施形態において用いる加入メッセ
ージの受信アルゴリズムのフローチャート。
ージの受信アルゴリズムのフローチャート。
【図5】本発明の一実施形態において用いる加入意向メ
ッセージの受信アルゴリズムのフローチャート。
ッセージの受信アルゴリズムのフローチャート。
【図6】本発明の一実施形態において用いるルートパス
追跡メッセージの受信アルゴリズムのフローチャート。
追跡メッセージの受信アルゴリズムのフローチャート。
【図7】本発明の一実施形態において用いる予期離脱メ
ッセージの受信アルゴリズムのフローチャート。
ッセージの受信アルゴリズムのフローチャート。
【図8】本発明の一実施形態において用いる離脱メッセ
ージの受信アルゴリズムのフローチャート。
ージの受信アルゴリズムのフローチャート。
【図9】本発明の一実施形態において用いるメンバー探
索メッセージの受信アルゴリズムのフローチャート。
索メッセージの受信アルゴリズムのフローチャート。
【図10】本発明の一実施形態によるツリー離脱アルゴ
リズムのフローチャート。
リズムのフローチャート。
【図11】本発明の一実施形態による親側ノード発見ア
ルゴリズムのフローチャート。
ルゴリズムのフローチャート。
【図12】本発明の一実施形態による独立親変更アルゴ
リズムのフローチャート。
リズムのフローチャート。
【図13】本発明の一実施形態による従属統制親変更ア
ルゴリズムのフローチャート。
ルゴリズムのフローチャート。
【図14】本発明の一実施形態による従属緊急親変更ア
ルゴリズムのフローチャート。
ルゴリズムのフローチャート。
【図15】本発明の一実施形態によるクラスタノード間
の生来の共有メディアブロードキャストを用いたクラス
タを示す図。
の生来の共有メディアブロードキャストを用いたクラス
タを示す図。
【図16】本発明の一実施形態において用いるツリーマ
ネージャメッセージの受信アルゴリズムのフローチャー
ト。
ネージャメッセージの受信アルゴリズムのフローチャー
ト。
【図17】本発明の一実施形態によるいくつかのツリー
メンバーについて学習するためのアルゴリズムのフロー
チャート。
メンバーについて学習するためのアルゴリズムのフロー
チャート。
【図18】本発明の一実施形態によるノードがツリー中
で正しい位置を維持するために用いるデータ構造を示す
図。
で正しい位置を維持するために用いるデータ構造を示す
図。
【図19】本発明の一実施形態において用いる6種類の
メッセージ種別のメッセージの内容を示す図。
メッセージ種別のメッセージの内容を示す図。
【図20】本発明の一実施形態によるノードへの入力と
ノードにより実行されるアルゴリズムの概観を示す図。
ノードにより実行されるアルゴリズムの概観を示す図。
A Bの子ノード B Aの親ノード C ノード D ノード E 通過ノード R ルートノード
Claims (11)
- 【請求項1】 ディジタル通信ネットワーク上の複数エ
ンドノードに情報を配布する方法であって、(a)ルー
トノードを含んだ情報を受け取るエンドノード間で接続
されループの無いマルチキャストツリーを自動的に生成
し維持するステップで、各ノードは各隣接ノードが親ノ
ードか子ノードかを示す表示を持った隣接ノードリスト
を有し、親ノードは二つの隣接ノード中でルートノード
により近いノードとして定義され、子ノードは二つの隣
接ノード中でルートノードからより遠いノードとして定
義され、各新たなノードはその隣接ノードを選択し選択
された隣接ノードを隣接ノードリストにその親ノードと
して追加することによりマルチキャストツリーに加入す
る場合に、各ノードが、 (1)親ノードを持たないルートノードを除く各ノード
は、常にただ一つだけ親ノードを維持すること、 (2)あるノードが親ノードを選択する際に、ルートパ
スが該あるノードを含むようなノードが子側ノードとし
て識別され、該子側ノードからルートノードへ導く親ノ
ードの系列をルートパスとした時に、該あるノードは子
側ノードをその親ノードとしては決して選択しないこ
と、という規則に従うステップと、(b)ステップ
(a)で生成され維持されたマルチキャストツリー上
で、ソースノードがその隣接ノードの全てに情報を送信
し、情報を受けた各ノードがそこから情報を受け取った
一隣接ノードと除くその隣接ノードの全てに情報を送信
するという情報のアプリケーション層マルチキャストを
行うステップと、を有することを特徴とするディジタル
通信ネットワーク上のエンドノードによるマルチキャス
ト情報配布方法。 - 【請求項2】 請求項1記載の方法で、ステップ(a)
において、もしノードが子ノードを持たない時には該ノ
ードはいかなるノードをもその親ノードとして選択して
よいことを特徴とする方法。 - 【請求項3】 請求項1記載の方法で、ステップ(a)
において、前記あるノードが少なくとも一つの子ノード
を有し現行の親ノードがまだ有効である場合に、親変更
は、 (1)全ての変更はマルチキャストツリーを通して通信
されること、 (2)前記あるノードは他のいかなる変更も現行の親ノ
ードから該あるノードの子ノードのいづれかに通信され
ることを阻止すること、という要求を満たして行われる
ことを特徴とする方法。 - 【請求項4】 請求項3記載の方法で、ステップ(a)
において、親変更は、マルチキャストツリー中の前記あ
るノードから新たな親ノードへのパスを識別するノード
リストを含んだ加入意向メッセージを、該あるノードか
ら該パスに沿って送信することにより行われることを特
徴とする方法。 - 【請求項5】 請求項1記載の方法で、ステップ(a)
において、前記あるノードが少なくとも一つの子ノード
を有し現行の親ノードが無効である場合に、親変更は、
新たな親ノードのルートパスが新たな親ノードからルー
トノードへ導くパスと定義される時に、通過したノード
のリストを保持するルートパス追跡メッセージを新たな
親ノードのルートパスに沿って送信することにより行わ
れることを特徴とする方法。 - 【請求項6】 請求項1記載の方法で、ステップ(a)
において、各ノードは更に親変更時にそこから新たな親
ノードが選択される親側ノードリストを有し、各ノード
は定期的にメンバー探索メッセージをその親ノードに送
信して親側ノードリストを最新の状態に維持することを
特徴とする方法。 - 【請求項7】 請求項1記載の方法で、ステップ(a)
において、各親ノードはマルチキャストツリーから離脱
する前にその子ノードの各々に予期離脱メッセージを送
信することを特徴とする方法。 - 【請求項8】 請求項1記載の方法で、ステップ(a)
において、同一共有メディア上の複数のノードは、該複
数のノード間の通信に該同一共有メディアのブロードキ
ャスト機能を用いたクラスタを形成し、該クラスタはマ
ルチキャストツリー生成、維持のプロセスにおいて該ク
ラスタ外部の他のノードから単一のノードとして取り扱
われることを特徴とする方法。 - 【請求項9】 請求項8記載の方法で、ステップ(a)
において、クラスタは、マルチキャスト生成、維持のプ
ロセスに参加することにより該クラスタをマルチキャス
トツリーに付加し、該クラスタに含まれる他の全てのノ
ードの親ノードとなり、前記複数のノードから動的に選
定されたクラスタヘッドノードを有することを特徴とす
る方法。 - 【請求項10】 請求項1記載の方法で、ステップ
(a)において、マルチキャストツリー中のノードであ
ってマルチキャストツリー中のいくつかの無作為に選択
されたノードについての知識を維持する責任を負ったノ
ードを各マルチキャストツリーのツリーマネージャとす
るとき、各マルチキャストツリーは、そのツリーマネー
ジャがいるホストのホストネームにより名付けられるこ
とを特徴とする方法。 - 【請求項11】 請求項10記載の方法で、ステップ
(a)において、ホストネームはホストのDNS(ドメ
インネームシステム)ネームにより与えられることを特
徴とする方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21767298A JP2000049779A (ja) | 1998-07-31 | 1998-07-31 | ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21767298A JP2000049779A (ja) | 1998-07-31 | 1998-07-31 | ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000049779A true JP2000049779A (ja) | 2000-02-18 |
Family
ID=16707923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21767298A Pending JP2000049779A (ja) | 1998-07-31 | 1998-07-31 | ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2000049779A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004208296A (ja) * | 2002-12-20 | 2004-07-22 | Hewlett-Packard Development Co Lp | ツリートポロジーネットワークのデバイスの高速選択用のニーズベースフィルタリング |
JP2007318736A (ja) * | 2006-04-18 | 2007-12-06 | Mitsubishi Electric Information Technology Centre Europa Bv | 通信ネットワークのノードのリストを確定する方法及び装置、メッセージを転送する装置、コンピュータプログラム並びに信号 |
EP1988669A1 (en) | 2007-05-01 | 2008-11-05 | Brother Kogyo Kabushiki Kaisha | Information distribution system, terminal apparatus used in such system, recording medium on which program is recorded, and loop connection avoidance method |
JP2009124767A (ja) * | 2009-03-12 | 2009-06-04 | Nomura Research Institute Ltd | マルチキャストメッセージ送信方法、及びマルチキャストメッセージ送信プログラム |
JP2011100384A (ja) * | 2009-11-09 | 2011-05-19 | Konami Digital Entertainment Co Ltd | 端末装置、通信システム、端末方法、ならびに、プログラム |
JP2014160913A (ja) * | 2013-02-19 | 2014-09-04 | Nec Corp | マルチキャストツリーの構築方法 |
CN114125996A (zh) * | 2021-11-25 | 2022-03-01 | 新华三技术有限公司成都分公司 | 应用于5g小站的网络拓扑结构发现方法及电子设备 |
-
1998
- 1998-07-31 JP JP21767298A patent/JP2000049779A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004208296A (ja) * | 2002-12-20 | 2004-07-22 | Hewlett-Packard Development Co Lp | ツリートポロジーネットワークのデバイスの高速選択用のニーズベースフィルタリング |
JP2007318736A (ja) * | 2006-04-18 | 2007-12-06 | Mitsubishi Electric Information Technology Centre Europa Bv | 通信ネットワークのノードのリストを確定する方法及び装置、メッセージを転送する装置、コンピュータプログラム並びに信号 |
EP1988669A1 (en) | 2007-05-01 | 2008-11-05 | Brother Kogyo Kabushiki Kaisha | Information distribution system, terminal apparatus used in such system, recording medium on which program is recorded, and loop connection avoidance method |
US7836210B2 (en) | 2007-05-01 | 2010-11-16 | Brother Kogyo Kabushiki Kaisha | Information distribution system, terminal apparatus used in such system, recording medium on which program is recorded, and loop connection avoidance method |
JP2009124767A (ja) * | 2009-03-12 | 2009-06-04 | Nomura Research Institute Ltd | マルチキャストメッセージ送信方法、及びマルチキャストメッセージ送信プログラム |
JP2011100384A (ja) * | 2009-11-09 | 2011-05-19 | Konami Digital Entertainment Co Ltd | 端末装置、通信システム、端末方法、ならびに、プログラム |
JP2014160913A (ja) * | 2013-02-19 | 2014-09-04 | Nec Corp | マルチキャストツリーの構築方法 |
CN114125996A (zh) * | 2021-11-25 | 2022-03-01 | 新华三技术有限公司成都分公司 | 应用于5g小站的网络拓扑结构发现方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rosen | Exterior gateway protocol (EGP) | |
Moy | Multicast extensions to OSPF | |
EP1875676B1 (en) | Routing protocol for multicast in a meshed network | |
US6445710B1 (en) | Method and apparatus for transparently bridging traffic across wide area networks | |
Francis | Yoid: Extending the internet multicast architecture | |
US7065059B1 (en) | Technique for restoring adjacencies in OSPF in a non-stop forwarding intermediate node of a computer network | |
US7859992B2 (en) | Router redundancy in data communication networks | |
Moy | RFC2328: OSPF Version 2 | |
US8121136B2 (en) | Dynamic discovery mechanisms via inter-domain routing protocol | |
CA2105040C (en) | Inter-domain multicast routing | |
US9270585B2 (en) | Distributed routing table architecture and design | |
KR101207533B1 (ko) | 피어-투-피어 오버레이 네트워크들의 발견을 위한 방법들 및 장치 | |
US7733810B2 (en) | System and method for communicating on a virtual ring in an internet protocol network | |
JP2005064721A (ja) | 通信システム及び方法、通信端末装置及びその制御方法、プログラム | |
CN101163103A (zh) | 一种实现快速重路由的方法 | |
JP2000049779A (ja) | ディジタル通信ネットワーク上のエンドノードによるマルチキャスト情報配布方法 | |
US6418124B2 (en) | Method and apparatus for routing a packet in a network | |
Ballardie et al. | Core Based Tree (CBT) Multicast | |
Moy | RFC1584: Multicast Extensions to OSPF | |
JPH08172446A (ja) | ネットワーク間メッセージ中継方法 | |
Francis et al. | Yoid tree management protocol (ytmp) specification | |
Seamonson et al. | " STUB" Exterior Gateway Protocol | |
Sehgal et al. | A flexible concast-based grouping service | |
CN118041894A (zh) | 一种优化冗余链路的三层组播切换方法及装置 | |
CN114726771A (zh) | 网间节点信息传播方法及装置 |