しかしながら、上述した従来のルーティングテーブルの構成によると、例えば、現在記述されているノードIDにより示されるノードが配信システムから脱落する等の理由により当該ノードIDが無効になった場合においては、その無効になったこと自体が、実際にそのノードID(無効になったノードID)により示されるノードに向けてメッセージ等を送信してみて初めて認識できるのであり、その場合には再度新たな(有効な)ノードを配信システム内において探索する等の処理が必要となり、結果として当該無効なノードIDが記述されていた場合においてはメッセージ等の転送効率が極端に悪くなると言う問題点があった。
そこで、本発明は上記の各問題点に鑑みて為されたもので、その目的の一例は、上記配信システムにおいて、メッセージ等を効率的且つ迅速に伝送することができるノード装置及び当該ノード装置において実行される情報処理方法並びに当該ノード装置における情報処理に供されるノード装置用プログラムを提供することにある。
上記の課題を解決するために、請求項1に記載の発明は、相互に情報の授受を行うように接続された複数のノード装置により形成されているネットワークに含まれている当該ノード装置であって、他の前記ノード装置から識別するための固有のノード識別情報を各々に有し且つ前記ネットワークを階層的に樹形図状に区分して得られるノードグループのいずれかに分類されているノード装置において、前記授受に係る他の前記ノード装置夫々に対応する複数の前記ノード識別情報を記憶する記憶部等のノード識別情報記憶手段と、記憶されている各前記ノード識別情報を参照して前記授受に用いる参照手段と、を備え、前記ノード識別情報記憶手段においては、前記樹形図における最上位階層に属する前記ノード装置に対応する前記ノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の前記階層に属する前記ノード装置に対応する前記ノード識別情報の記憶可能数以上されている。
よって、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
上記の課題を解決するために、請求項2に記載の発明は、請求項1に記載のノード装置において、前記ノード識別情報記憶手段においては、前記樹形図における前記階層が下位になるに従って、当該階層に属する前記ノード装置に対応する前記ノード識別情報の記憶可能数が減少しているように構成される。
よって、ノードグループの階層構成を示す樹形図における階層が下位になるに従って、当該階層に属するノード装置に対応するノード識別情報の記憶可能数が減少しているので、ノード識別情報記憶手段としての記憶量を節約しつつ、当該ノードグループにおける階層構造に対応して効率的に代替となるノード識別情報を取得することができる。
上記の課題を解決するために、請求項3に記載の発明は、請求項1又は2に記載のノード装置において、前記参照手段は、一つの前記ノードグループに分類されている各前記ノード装置に夫々対応する前記ノード識別情報を、予め設定された参照順に従って順次参照して前記情報の授受に用いるように構成される。
よって、予め設定された参照順に沿ってノード識別情報を参照して情報の授受に用いるので、効率的な代替ノード識別情報の取得とノード識別情報記憶手段としての記憶量の節約とを両立させることができる。
上記の課題を解決するために、請求項4に記載の発明は、請求項3に記載のノード装置において、各前記階層における前記記憶可能数は、前記参照順に指数関数的に減少している。
よって、樹形図を構成する各階層において参照順に指数関数的に記憶可能数が減少するように構成されているので、ネットワークに参加しているノード装置の増減数の実情に応じて必要最小限のノード識別情報を記憶することができる。
上記の課題を解決するために、請求項5に記載の発明は、請求項3又は4に記載のノード装置において、前記記憶可能数が、予め設定された単位時間当たりに前記ネットワークから前記ノード装置が脱退する数に対応して各階層毎に予め定められている。
よって、各階層における記憶可能数が、ネットワークからのノード装置の脱退数に応じて定められているので、一つのノード装置内のノード識別情報の数を必要最小限としてノード識別情報記憶手段の記憶容量を節約することができる。
上記の課題を解決するために、請求項6に記載の発明は、請求項3から5のいずれか一項に記載のノード装置において、前記参照手段は、一の前記ノードグループに分類されている前記ノード識別情報を参照した場合において当該参照したノード識別情報を前記授受に用いることが不能であるとき、前記参照順において前記一のノード識別情報の次に参照されるべき他の前記ノード識別情報を参照して前記授受に用いるように構成されている。
よって、一のノード識別情報を参照した場合において当該参照したノード識別情報を情報の授受に用いることが不能であるとき、参照順においてその一のノード識別情報の次に参照されるべき他のノード識別情報を参照して情報の授受に用いるので、次に参照すべきノード識別情報を迅速に発見して情報の授受に供させることができる。
上記の課題を解決するために、請求項7に記載の発明は、請求項3から6のいずれか一項に記載のノード装置において、前記授受に用いることが不能である前記ノード識別情報である不能ノード識別情報があるとき、当該不能ノード識別情報を前記ノード識別情報記憶手段から削除する制御部等の削除手段と、一の前記ノードグループにおける前記参照順において前記不能ノード識別情報の直近下位の順位にあった前記ノード識別情報の当該順位を、削除された前記不能ノード識別情報に対応していた前記参照順における順位とする制御部等の順位変更手段と、を備える。
よって、不能ノード識別情報があった場合にこれをノード識別情報記憶手段から削除し、参照順においてその下位にあったノード識別情報を繰り上げて補填するので、不能ノード識別情報があったとしてもこれを迅速に補填することで効率的な情報の授受を維持することができる。
上記の課題を解決するために、請求項8に記載の発明は、請求項3から7のいずれか一項に記載のノード装置において、一の前記ノードグループにおける前記参照順内のいずれかの順位に対応すべき新たな前記ノード識別情報があるとき、当該新たなノード識別情報が対応すべき前記順位にそれまで対応していた前記ノード識別情報が対応する新たな前記順位を、前記新たなノード識別情報が対応すべき前記順位より下位の前記順位とする制御部等の順位変更手段を備える。
よって、一のノードグループにおける参照順内のいずれかの順位に対応すべき新たなノード識別情報があるとき、そのノード識別情報を対応する参照順の順位に配置し、当該新たな配置位置にあったノード識別情報を参照順において後の順位とするので、新たなノード識別情報を配置して更に効率的に情報の授受を行うことができ、それまで配置されていたノード識別情報をも引き続き活用することもできる。
上記の課題を解決するために、請求項9に記載の発明は、請求項3から8のいずれか一項に記載のノード装置において、前記参照順は、参照されるべき前記ノード識別情報により識別される前記ノード装置との間の前記授受の際に要する負荷が低い当該ノード識別情報ほど先に参照される参照順であるように構成される。
よって、一のノードグループ内におけるノード識別情報の参照順が、情報の授受の際に要する負荷に応じて定められているので、ネットワーク内の情報の授受をより効率的且つ迅速に行うことができる。
上記の課題を解決するために、請求項10に記載の発明は、請求項3から8のいずれか一項に記載のノード装置において、前記参照順は、各前記ノード識別情報により識別される前記ノード装置から前記ネットワークを介していずれかのメッセージを受信した順番に対応している。
よって、一のノードグループ内におけるノード識別情報の参照順が、ノード識別情報により識別されるノード装置からいずれかのメッセージを受信した順に対応して定められているので、ノード識別情報記憶手段内の構成変更を最小限に抑制できることで、ネットワークにおけるメッセージの伝送経路の変更を最小限に抑制して効率的に当該メッセージを伝送することができる。
上記の課題を解決するために、請求項11に記載の発明は、請求項3から8のいずれか一項に記載のノード装置において、前記参照順は、前記授受される情報を識別する情報識別情報と、当該情報識別情報により識別される前記情報を蓄積している前記ノード装置の前記ネットワーク内の位置を示すアドレス情報と、の対により構成される対情報(インデックス情報)の記憶数に対応している。
よって、一のノードグループ内におけるノード識別情報の参照順が、対情報の記憶数に対応しているので、情報の授受に関わる可能性があるノード装置を示す対情報の数に対応した順でノード識別情報が参照されるので、より迅速に必要な情報の授受を開始することができる。
上記の課題を解決するために、請求項12に記載の発明は、相互に情報の授受を行うように接続された複数のノード装置により形成されているネットワークに含まれている当該ノード装置であって、他の前記ノード装置から識別するための固有のノード識別情報を各々に有し且つ前記ネットワークを階層的に樹形図状に区分して得られるノードグループのいずれかに分類されているノード装置において実行される情報処理方法において、前記ノード装置は、前記授受に係る他の前記ノード装置夫々に対応する複数の前記ノード識別情報を記憶する記憶部等のノード識別情報記憶手段を備え、当該ノード識別情報記憶手段においては、前記樹形図における最上位階層に属する前記ノード装置に対応する前記ノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の前記階層に属する前記ノード装置に対応する前記ノード識別情報の記憶可能数以上とされており、記憶されている各前記ノード識別情報を参照して前記授受に用いる参照行程を含むように構成されている。
よって、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
上記の課題を解決するために、請求項13に記載の発明は、コンピュータを、請求項1から11のいずれか一項に記載のノード装置として機能させる。
よって、当該コンピュータを請求項1に記載のノード装置として機能させる場合には、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
更に、当該コンピュータを請求項2に記載のノード装置として機能させる場合には、当該コンピュータを請求項1に記載のノード装置として機能させる場合に加えて、ノードグループの階層構成を示す樹形図における階層が下位になるに従って、当該階層に属するノード装置に対応するノード識別情報の記憶可能数が減少しているので、ノード識別情報記憶手段としての記憶量を節約しつつ、当該ノードグループにおける階層構造に対応して効率的に代替となるノード識別情報を取得することができる。
更にまた、当該コンピュータを請求項3に記載のノード装置として機能させる場合には、当該コンピュータを請求項1又は2に記載のノード装置として機能させる場合に加えて、予め設定された参照順に沿ってノード識別情報を参照して情報の授受に用いるので、効率的な代替ノード識別情報の取得とノード識別情報記憶手段としての記憶量の節約とを両立させることができる。
また、当該コンピュータを請求項4に記載のノード装置として機能させる場合には、当該コンピュータを請求項3に記載のノード装置として機能させる場合に加えて、樹形図を構成する各階層において参照順に指数関数的に記憶可能数が減少するように構成されているので、ネットワークに参加しているノード装置の増減数の実情に応じて必要最小限のノード識別情報を記憶することができる。
更に、当該コンピュータを請求項5に記載のノード装置として機能させる場合には、当該コンピュータを請求項3又は4に記載のノード装置として機能させる場合に加えて、各階層における記憶可能数が、ネットワークからのノード装置の脱退数に応じて定められているので、一つのノード装置内のノード識別情報の数を必要最小限としてノード識別情報記憶手段の記憶容量を節約することができる。
また、当該コンピュータを請求項6に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から5のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノード識別情報を参照した場合において当該参照したノード識別情報を情報の授受に用いることが不能であるとき、参照順においてその一のノード識別情報の次に参照されるべき他のノード識別情報を参照して情報の授受に用いるので、次に参照すべきノード識別情報を迅速に発見して情報の授受に供させることができる。
更に、当該コンピュータを請求項7に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から6のいずれか一項に記載のノード装置として機能させる場合に加えて、不能ノード識別情報があった場合にこれをノード識別情報記憶手段から削除し、参照順においてその下位にあったノード識別情報を繰り上げて補填するので、不能ノード識別情報があったとしてもこれを迅速に補填することで効率的な情報の授受を維持することができる。
更にまた、当該コンピュータを請求項8に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から7のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループにおける参照順内のいずれかの順位に対応すべき新たなノード識別情報があるとき、そのノード識別情報を対応する参照順の順位に配置し、当該新たな配置位置にあったノード識別情報を参照順において後の順位とするので、新たなノード識別情報を配置して更に効率的に情報の授受を行うことができ、それまで配置されていたノード識別情報をも引き続き活用することもできる。
また、当該コンピュータを請求項9に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、情報の授受の際に要する負荷に応じて定められているので、ネットワーク内の情報の授受をより効率的且つ迅速に行うことができる。
更に、当該コンピュータを請求項10に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、ノード識別情報により識別されるノード装置からいずれかのメッセージを受信した順に対応して定められているので、ノード識別情報記憶手段内の構成変更を最小限に抑制できることで、ネットワークにおけるメッセージの伝送経路の変更を最小限に抑制して効率的に当該メッセージを伝送することができる。
更にまた、当該コンピュータを請求項11に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、対情報の記憶数に対応しているので、情報の授受に関わる可能性があるノード装置を示す対情報の数に対応した順でノード識別情報が参照されるので、より迅速に必要な情報の授受を開始することができる。
請求項1に記載の発明によれば、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
請求項2に記載の発明によれば、請求項1に記載の発明の効果に加えて、ノードグループの階層構成を示す樹形図における階層が下位になるに従って、当該階層に属するノード装置に対応するノード識別情報の記憶可能数が減少しているので、ノード識別情報記憶手段としての記憶量を節約しつつ、当該ノードグループにおける階層構造に対応して効率的に代替となるノード識別情報を取得することができる。
請求項3に記載の発明によれば、請求項1又は2に記載の発明の効果に加えて、予め設定された参照順に沿ってノード識別情報を参照して情報の授受に用いるので、効率的な代替ノード識別情報の取得とノード識別情報記憶手段としての記憶量の節約とを両立させることができる。
請求項4に記載の発明によれば、請求項3に記載の発明の効果に加えて、樹形図を構成する各階層において参照順に指数関数的に記憶可能数が減少するように構成されているので、ネットワークに参加しているノード装置の増減数の実情に応じて必要最小限のノード識別情報を記憶することができる。
請求項5に記載の発明によれば、請求項3又は4に記載の発明の効果に加えて、各階層における記憶可能数が、ネットワークからのノード装置の脱退数に応じて定められているので、一つのノード装置内のノード識別情報の数を必要最小限としてノード識別情報記憶手段の記憶容量を節約することができる。
請求項6に記載の発明によれば、請求項3から5のいずれか一項に記載の発明の効果に加えて、一のノード識別情報を参照した場合において当該参照したノード識別情報を情報の授受に用いることが不能であるとき、参照順においてその一のノード識別情報の次に参照されるべき他のノード識別情報を参照して情報の授受に用いるので、次に参照すべきノード識別情報を迅速に発見して情報の授受に供させることができる。
請求項7に記載の発明によれば、請求項3から6のいずれか一項に発明の効果に加えて、不能ノード識別情報があった場合にこれをノード識別情報記憶手段から削除し、参照順においてその下位にあったノード識別情報を繰り上げて補填するので、不能ノード識別情報があったとしてもこれを迅速に補填することで効率的な情報の授受を維持することができる。
請求項8に記載の発明によれば、請求項3から7のいずれか一項に記載の発明の効果に加えて、一のノードグループにおける参照順内のいずれかの順位に対応すべき新たなノード識別情報があるとき、そのノード識別情報を対応する参照順の順位に配置し、当該新たな配置位置にあったノード識別情報を参照順において後の順位とするので、新たなノード識別情報を配置して更に効率的に情報の授受を行うことができ、それまで配置されていたノード識別情報をも引き続き活用することもできる。
請求項9に記載の発明によれば、請求項3から8のいずれか一項に記載の発明の効果に加えて、一のノードグループ内におけるノード識別情報の参照順が、情報の授受の際に要する負荷に応じて定められているので、ネットワーク内の情報の授受をより効率的且つ迅速に行うことができる。
請求項10に記載の発明によれば、請求項3から8のいずれか一項に記載の発明の効果に加えて、一のノードグループ内におけるノード識別情報の参照順が、ノード識別情報により識別されるノード装置からいずれかのメッセージを受信した順に対応して定められているので、ノード識別情報記憶手段内の構成変更を最小限に抑制できることで、ネットワークにおけるメッセージの伝送経路の変更を最小限に抑制して効率的に当該メッセージを伝送することができる。
請求項11に記載の発明によれば、請求項3から8のいずれか一項に記載の発明の効果に加えて一のノードグループ内におけるノード識別情報の参照順が、対情報の記憶数に対応しているので、情報の授受に関わる可能性があるノード装置を示す対情報の数に対応した順でノード識別情報が参照されるので、より迅速に必要な情報の授受を開始することができる。
請求項12に記載の発明によれば、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
請求項13に記載の発明によれば、コンピュータを請求項1に記載のノード装置として機能させる場合には、ノード識別情報記憶手段において、ノードグループの階層構成を示す樹形図における最上位階層に属するノード装置に対応するノード識別情報の記憶可能数が、当該最上位階層以外の他のいずれか一の階層に属するノード装置に対応するノード識別情報の記憶可能数以上されているので、代替として情報の授受に供することが可能なノード識別情報のノード装置における記憶可能数を最上階層について多くしておくことで、端末装置がネットワークから脱落する等の事態が発生した場合でも、迅速に代替となるノード識別情報を発見して情報の授受を効率的且つ迅速に実行することができる。
更に、当該コンピュータを請求項2に記載のノード装置として機能させる場合には、当該コンピュータを請求項1に記載のノード装置として機能させる場合に加えて、ノードグループの階層構成を示す樹形図における階層が下位になるに従って、当該階層に属するノード装置に対応するノード識別情報の記憶可能数が減少しているので、ノード識別情報記憶手段としての記憶量を節約しつつ、当該ノードグループにおける階層構造に対応して効率的に代替となるノード識別情報を取得することができる。
更にまた、当該コンピュータを請求項3に記載のノード装置として機能させる場合には、当該コンピュータを請求項1又は2に記載のノード装置として機能させる場合に加えて、予め設定された参照順に沿ってノード識別情報を参照して情報の授受に用いるので、効率的な代替ノード識別情報の取得とノード識別情報記憶手段としての記憶量の節約とを両立させることができる。
また、当該コンピュータを請求項4に記載のノード装置として機能させる場合には、当該コンピュータを請求項3に記載のノード装置として機能させる場合に加えて、樹形図を構成する各階層において参照順に指数関数的に記憶可能数が減少するように構成されているので、ネットワークに参加しているノード装置の増減数の実情に応じて必要最小限のノード識別情報を記憶することができる。
更に、当該コンピュータを請求項5に記載のノード装置として機能させる場合には、当該コンピュータを請求項3又は4に記載のノード装置として機能させる場合に加えて、各階層における記憶可能数が、ネットワークからのノード装置の脱退数に応じて定められているので、一つのノード装置内のノード識別情報の数を必要最小限としてノード識別情報記憶手段の記憶容量を節約することができる。
また、当該コンピュータを請求項6に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から5のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノード識別情報を参照した場合において当該参照したノード識別情報を情報の授受に用いることが不能であるとき、参照順においてその一のノード識別情報の次に参照されるべき他のノード識別情報を参照して情報の授受に用いるので、次に参照すべきノード識別情報を迅速に発見して情報の授受に供させることができる。
更に、当該コンピュータを請求項7に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から6のいずれか一項に記載のノード装置として機能させる場合に加えて、不能ノード識別情報があった場合にこれをノード識別情報記憶手段から削除し、参照順においてその下位にあったノード識別情報を繰り上げて補填するので、不能ノード識別情報があったとしてもこれを迅速に補填することで効率的な情報の授受を維持することができる。
更にまた、当該コンピュータを請求項8に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から7のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループにおける参照順内のいずれかの順位に対応すべき新たなノード識別情報があるとき、そのノード識別情報を対応する参照順の順位に配置し、当該新たな配置位置にあったノード識別情報を参照順において後の順位とするので、新たなノード識別情報を配置して更に効率的に情報の授受を行うことができ、それまで配置されていたノード識別情報をも引き続き活用することもできる。
また、当該コンピュータを請求項9に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、情報の授受の際に要する負荷に応じて定められているので、ネットワーク内の情報の授受をより効率的且つ迅速に行うことができる。
更に、当該コンピュータを請求項10に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、ノード識別情報により識別されるノード装置からいずれかのメッセージを受信した順に対応して定められているので、ノード識別情報記憶手段内の構成変更を最小限に抑制できることで、ネットワークにおけるメッセージの伝送経路の変更を最小限に抑制して効率的に当該メッセージを伝送することができる。
更にまた、当該コンピュータを請求項11に記載のノード装置として機能させる場合には、当該コンピュータを請求項3から8のいずれか一項に記載のノード装置として機能させる場合に加えて、一のノードグループ内におけるノード識別情報の参照順が、対情報の記憶数に対応しているので、情報の授受に関わる可能性があるノード装置を示す対情報の数に対応した順でノード識別情報が参照されるので、より迅速に必要な情報の授受を開始することができる。
次に、本発明を実施するための最良の形態について、図面に基づいて説明する。なお、以下に説明する実施形態は、インターネット等のネットワークを用いて上記コンテンツの配信を行う上記配信システムに対して本発明を適用した場合の実施の形態である。
(I)配信システムの全体構成等
始めに、図1を参照して、実施形態に係る上記配信システム全体の概要構成等について説明する。なお、図1は、実施形態に係る配信システムにおける各ノードの接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4、DSL(Digital Subscriber Line)回線事業者(の装置)5、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の物理的なネットワーク)8が構築されているとする。なお、図1の例におけるネットワーク(通信ネットワーク)8には、メッセージ(パケット)を転送するためのルータが適宜挿入されているが、図1では、図示を省略している。
実施形態に係る配信システムSは、このようなネットワーク8を介して相互に接続された複数のノードA、B、C、…、X、Y、Z、…を備えて構成されるネットワークシステムとなっている。そして、各ノードA、B、C…X、Y、Z、…には、固有の製造番号及び宛先情報としての上記IPアドレスが割り当てられている。このような製造番号及びIPアドレスは、複数のノード間で重複しないものである。
次に、実施形態に係るDHTを利用したアルゴリズムについて説明する。
上述した配信システムSにおいては、上記DHTを利用したアルゴリズムにより、図1の上部枠100内に示すような、オーバーレイネットワーク9が構築される。すなわち、当該オーバーレイネットワーク9は、上記した既存の(物理的な)ネットワーク8を用いて形成された仮想的なリンクを構成するネットワークである。
そして、以下に説明する実施形態は、このDHTを利用したアルゴリズムによって構築されたオーバーレイネットワーク9を前提としており、このオーバーレイネットワーク9上に配置されたノードを、一般に、オーバーレイネットワーク9に「参加」しているノードという。なお、オーバーレイネットワーク9への参加は、未だ参加していないノードが、既に参加している任意のノードに対して参加要求メッセージを送信することによって行われる。
一方、各ノードは、上述したように固有のノード識別情報としてのノードID(上述したようにIPアドレス或いは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化して得た一定桁数からなるハッシュ値を有するノードID)を有しており、当該ノードIでは一つのID空間(当該ID空間については、後ほど詳述する)に偏りなく分散して配置されることになる。そして、この共通のハッシュ関数により求められたノードIDは、当該IPアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
(II)DHTにおけるルーティングテーブルの一般的運用方法等
次に、上記DHTの具体的内容であるルーティングテーブルの作成手法並びにそれを用いたコンテンツの検索方法の一般例について、図2及び図3を用いて説明する。なお、図2は、当該ルーティングテーブルが作成される様子の一例を示す図であり、図3は、実際に作成されたルーティングテーブルの一例を示す図である。
(ア)ルーティングテーブルの作成手法
上述したように、各ノードに付与されたノードIDは、共通のハッシュ関数によって生成されたものであるため、図2(A)乃至図2(C)に示す如く、同一のリング状の上記ID空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。なお同図は、8bitでノードIDを付与し、図示したものであり、図中黒点はノードIDを示し、反時計回りでIDが増加するものとする。
上記ルーティングテーブルの作成を考える場合、最初に、図2(A)に示す如く、上記ID空間が所定の規則に従って幾つかのグループ(ノードグループ)としてのエリアに分割される(分けられる)。実際には、16分割程度が良く用いられるが、説明を簡単にするためここでは4分割とし、IDをビット長8bitの4進数で表すこととした。そして、あるノードNのノードIDを「1023」とし、このノードNのルーティングテーブルを作るものとする。
(A)レベル1のルーティング
図2(A)に例示するようにID空間を4分割とすると、それぞれのエリアは4進数で表すと最大桁が異なる4つのエリア「0XXX」、「1XXX」、「2XXX」、「3XXX」(Xは0から3の整数、以下同様。)で分けられる。このとき、上記ノードNは、当該ノードN自身のノードIDが「1023」であるため、図中左下「1XXX」のエリアに存在することになる。
そして、当該ノードNは、自身の存在するエリア(すなわち、「1XXX」のエリア)以外のエリアに存在する(換言すれば、レベル1において他のノードグループに属する)各ノードを代表のノードとして任意に選択し、当該選択されたノードIDのIPアドレス等(実際には、ポート番号等も含まれる、以下同様。)を、そのノードNに記憶されるべきレベル1のルーティングテーブルにおける各欄(当該ルーティングテーブルを構成するマトリクスル状の各欄を、以下単にエントリと称する)に登録(記憶)させる。このとき、図3(A)がレベル1のルーティングテーブルの一例である。なお、レベル1のルーティングテーブルにおける2列目のエントリは、ノードN自身を示しているため、IPアドレス等を登録する必要は無い。
(B)レベル2のルーティング
次に、図2(B)に示す如く、上記ルーティングによって4分割したエリアのうち、自身の存在するエリアを更に4分割し、4つのエリア「10XX」、「11XX」、「12XX」、「13XX」に分ける(つまり、ノードN自身が属するノードグループを更に複数の小ノードグループに分ける)。
そして、レベル1の場合と同様に、自身が存在するエリア以外のエリア(図2(B)において更に分割されたエリア)に存在する各ノードを代表のノードとして任意に選択し、当該ノードIDのIPアドレス等をレベル2のルーティングテーブルにおける各エントリに登録する。このとき、図3(B)がレベル2のルーティングテーブルの一例である。なお、レベル2のルーティングテーブルにおける1列目の欄は、ノードN自身を示しているため、IPアドレス等を登録する必要は無い。
(C)レベル3のルーティング
更に、図2(C)に示す如く、上記レベル2のルーティングによって4分割したエリアのうち、自身の存在するエリアを更に細かく4分割し、4つのエリア「100X」、「101X」、「102X」、「103X」に分ける(つまり、ノードN自身が属する小ノードグループを更に複数の小ノードグループに分ける)。
そして、上記レベル1又は2の場合と同様に、自身の存在するエリア以外のエリア(図2(C)において更に分割されたエリア)に存在する各ノードを代表のノードとして任意に選択し、当該ノードIDのIPアドレス等をレベル3のルーティングテーブルにおける各エントリに登録する。このとき、図3(C)がレベル3のルーティングテーブルの一例である。なお、レベル3のルーティングテーブルにおける3列目の欄は、ノードN自身を示しているため、IPアドレス等を登録する必要は無く、2列目及び4列目の欄はそのエリアにノードが存在しない(すなわち、図2(C)において更に分割されたエリアのうちノードN自身が属しているエリアには、ノードIDが「1000」であるノード以外には他にノードが存在しない)ため、空白となる。
このようにして、最終的にレベル4まで同様にルーティングテーブルが図3(D)に示す如く作成されることにより、8bitのID全てを網羅したルーティングテーブルが、ノードN内に記憶されるべきものとして完成することになる。このとき、図3に夫々示すように、出来上がったルーティングテーブルにおいては、レベルが上がる(例えばレベル2からレベル3に上がる)毎にルーティングテーブルの中に空白が目立つようになる。
以上説明した手法(規則)に従って作成したルーティングテーブルを、全てのノードが夫々作成して記憶することになる(係るルーティングテーブルの作成は、例えば、未参加のノードがオーバーレイネットワーク9に参加する際に行われるが、本発明とは直接の関係がないので詳しい説明を省略する)。
このように、各ノードは、他のノードの宛先情報としてのIPアドレス等と、各区分されたノードグループとしての、ノードID空間のエリア(すなわちDHTの各レベル及び各列)と、を相互に対応付けて記憶している。
つまり、各ノードは、複数に分けられた各エリア(ノードグループ)に属する一のノードのIPアドレス等を、夫々のエリアに対応付けて一の段階(レベル)として規定し、更に自己が属するエリアが複数のエリアに分けられ、当該分けられた各エリアに属する一のノードのIPアドレス等を、夫々のエリアに対応付けて次の段階(レベル)として規定するルーティングテーブルを記憶している。
ここで、ノードIDの桁数に応じてレベルの数が決まり、進数の数に応じて図3(D)における各レベルの注目桁の数が決まる。より具体的には、例えば16桁16進数である場合には、64bitのノードIDとなり、レベル16で注目桁の(英)数字は0〜Fとなる。また、後述するルーティングテーブルの説明においては、各レベルの注目桁の数を示す部分を単に「列」ともいう。
(イ)コンテンツデータの保存及び検索方法
次に、配信システムSにおいて取得可能なコンテンツデータの保存及び上記ルーティングテーブルを用いた検索方法について説明する。
オーバーレイネットワーク9においては、様々なコンテンツ(例えば、映画や音楽等)に相当するコンテンツデータが、複数のノードに分散して保存(格納)されている(言い換えれば、コンテンツデータが複製されその複製情報であるレプリカが分散保存されている)。
より具体的には、例えば、あるノードA及びノードDには、タイトルが「XXX」の映画のコンテンツデータが保存され、一方、他のノードB及びノードCには、タイトルが「YYY」の他の映画のコンテンツデータが保存されるというように、複数のノード(以下、「コンテンツホルダ」という)に分散されて保存される。そして、これらのコンテンツデータには、夫々、コンテンツ名(タイトル)及び上述したコンテンツID等の情報が付加されている。
一方、このように分散保存されているコンテンツデータの所在、つまり、当該コンテンツデータを保存したノードのIPアドレス等と、当該コンテンツデータに対応するコンテンツID等と、の組が含まれるインデックス情報が、当該コンテンツデータの所在の管理元のノード(以下、当該ノードを、「ルートノード」、又は「コンテンツ(コンテンツID)のルートノード」と称する)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。すなわち、例えば、タイトルが「XXX」の映画のコンテンツデータのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードMにより管理され、タイトルが「YYY」の映画のコンテンツデータのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードにより管理される。
つまり、コンテンツ毎にルートノードが分けられるので負荷分散が図らており、しかも、同一のコンテンツデータ(コンテンツIDが同一)が、夫々、複数のコンテンツホルダに保存されている場合であっても、係るコンテンツデータのインデックス情報は、一つのルートノードで管理することができる。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードであるように定められる。
このようにしてコンテンツデータを保存したノード(以下、当該ノードをコンテンツホルダと称する)は、当該コンテンツデータを保存したことをそのルートノードに知らせるために、そのコンテンツデータのコンテンツID及び自己のIPアドレス等が含まれるパブリッシュ(登録通知)メッセージ(コンテンツデータを保存したので、IPアドレス等の登録の要求を示す登録メッセージ)を生成し、当該パブリッシュメッセージを、そのルートノードに向けて送出する。これにより、パブリッシュメッセージは、当該コンテンツIDを手掛かりとする以下のDHTルーティング処理によってルートノードに到着することになる。
次に、当該DHTルーティング処理について具体的に図4を用いて説明する。なお、図4は、コンテンツホルダから送出されたパブリッシュメッセージの流れの一例をDHTのノードID空間にて示した概念図である。
図4の例において、例えば、コンテンツホルダであるノードAは、自己のDHTのレベル1のルーティングテーブルを参照して、パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えば図4に示すノードHのIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを送信する。
これに対して、図4に示すノードHは、当該パブリッシュメッセージを受信し、自己のDHTのレベル2のルーティングテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えば図4に示すノードIのIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを転送する。
これに対して、図4に示すノードIは、当該パブリッシュメッセージを受信し、自己のDHTのレベル3のルーティングテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有する例えば図4に示すノードMの転送先ノード情報に含まれるIPアドレス等を取得し、そのIPアドレス等宛てに、上記パブリッシュメッセージを転送する。
これに対して、当該ノードMは、当該パブリッシュメッセージを受信し、自身のDHTのレベル4のルーティングテーブルを参照して、当該パブリッシュメッセージに含まれるコンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDが自身である、つまり、自身がそのコンテンツIDのルートノードであることを認識し、当該パブリッシュメッセージに含まれるIPアドレス等及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。
なお、パブリッシュメッセージに含まれるIPアドレス等及びコンテンツIDの組を含むインデックス情報は、コンテンツホルダからルートノードに至るまでの転送経路におけるノード(以下、「中継ノード」という。図4の例では、ノードH及びノードI)においても登録(キャッシュ)される(このように、インデックス情報をキャッシュする中継ノードをキャッシュノードという)。
そして、あるノードの使用者が、所望するコンテンツデータを取得したい場合、当該コンテンツデータの取得を望むノード(以下、「リクエスタ」という)は、当該ユーザによりコンテンツカタログ情報から選択されたコンテンツデータのコンテンツIDを含むコンテンツ所在問合せ(検索)メッセージを、自己のDHTのルーティングテーブルに従って他のノードに対して送出する。これにより、当該コンテンツ所在問合せメッセージは、上述したパブリッシュメッセージと同様に、コンテンツIDを手掛かりとするDHTルーティングによって、いくつかの中継ノードを経由(転送)されて、そのコンテンツIDのルートノードに辿り着く。
そして、上記リクエスタは、当該ルートノードから、上述したそのコンテンツデータのインデックス情報を取得(受信)し、当該IPアドレス等に基づいて上記コンテンツデータを保存しているコンテンツホルダに接続し、そこから当該コンテンツデータを取得(ダウンロード)することが可能になる。
なお、上記リクエスタは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしている中継ノード(キャッシュノード)から当該IPアドレス等を取得(受信)することもできる。
(III)第1実施形態
次に、上述した配信システムS内の各ノードNに記憶されている本願のルーティングテーブルに係る第1実施形態について、当該ノードN自体の構成と共に図5乃至図15を用いて説明する。
なお、図5は第1実施形態に係るノードの概要構成を示すブロック図であり、図6及び図7は当該ノードに記憶されているルーティングテーブルの概要構成を示す模式図であり、図8乃至図14は当該ルーティングテーブルに対する実施形態に係る処理を夫々示すフローチャートであり、図15は当該ルーティングテーブルの更新処理を例示する図である。
始めに、第1実施形態に係るノードの概要構成及び全体動作について、図5を用いて説明する。なお、以下の各実施形態においては、上記コンテンツホルダ、リクエスタ、ルートノード及びその他のノードNは、基本的に全て同一のハードウエア構成を有するものであるので、それらを代表して一般のノードNの構成について、図5を用いてその概要を説明する。
図5に示すように、第1実施形態に係る配信システムSに含まれているノードNは、演算機能を有するCPU、作業用RAM(Random Access Memory)、各種データ及びプログラムを記録するROM(Read Only Memory)等から構成された参照手段、削除手段及び順位変更手段としての制御部11と、上記コンテンツ自体としてのコンテンツデータ、上記ルーティングテーブル及びその他の必要なプログラム等を記録保存(格納)するHDD等から構成されたノード識別情報記憶手段としての記憶部12と、受信されたコンテンツデータを一時蓄積するバッファメモリ13と、コンテンツデータに含まれるエンコード(符号化)されたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT(Cathode Ray Tube)又は液晶ディスプレイ等よりなる表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD/A(Digital/Analog)変換した後これを増幅器等により増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他のノードNとの間の情報の通信制御を行なうための通信部20と、夫々の使用者からの指示を受け付け当該指示に応じた指示信号を制御部11に出力する入力部(例えば、キーボード、マウス或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、及び通信部20はバス22を介して相互にデータの授受が可能に接続されている。
そして、制御部11におけるCPUが記憶部12等に記録された各種プログラムを実行することにより、制御部11が、リクエスタ、ルートノード、コンテンツホルダ又はそれら以外の一般のノードNのいずれか一つとしての全体動作を統括制御する。
次に、ノード一般(ルートノード、コンテンツホルダ及びリクエスタを含む)としての基本的な共通動作を含めて、第1実施形態に係るルーティングテーブルの構成及びそれに対する処理について夫々説明する。
なお、以下の説明においては、ルーティングテーブルの規模は、レベルが1乃至4まで(すなわち、図3(D)で示したものと同様の8bit(4桁)対応のルーティングテーブル)で、一レベル当たりの分割数が四つであるルーティングテーブルであるものとする。
図6に示すように、上記記憶部12内に記憶されている第1実施形態に係るルーティングテーブルRTは、上記DHTルーティング処理に主として用いられるメインテーブルMRと、当該メインテーブルMRの代替として順次用いられるサブテーブルR1乃至R3と、により構成されている。
この構成において、メインテーブルMRはレベル1乃至4までの四つのレベル分のエントリEを合計16個(四つのレベル×四つのエリア)含んでいる。また、サブテーブルR1は、レベル1及び2の二つのレベル分のエントリEを合計8個(二つのレベル×四つのエリア)含んでおり、更にサブテーブルR2及びR3は、各々、レベル1のみのエントリEを4個(一つのレベル×四つのエリア)夫々含んでいる。すなわち、ルーティングテーブルRTとしては、各テーブルにおけるレベル数を、メインテーブルMRからみて指数関数的に減少させている。
そして、各エントリEには、対応するレベルのルーティング先(転送先)のノードNを示すノードID及びIPアドレス等に加えて、当該ルーティング先のノードまでメッセージ等が到達するまでに中継されるノードの数であるホップ数が、当該ルーティング先のノードまでのネットワーク上の距離(換言すれば、当該ルーティング先のノードまでメッセージ等を到達させる際の容易性)を示す情報として記述されている。なお、上述したように、一つのルーティングテーブル内では、レベルが上がるにつれて空白となるエントリEが増大していくことになる。なお、当該ノードID、IPアドレス等及びホップ数を、纏めて以下「ノード情報」と称する。
なお、第1実施形態に係る記憶部12においては、図6に示すメインテーブルMR乃至サブテーブルR3を全て記憶可能な記憶領域が(各エントリE内に実際にノード情報が記憶されていると否とに拘わらず)、当該ルーティングテーブルRT用の記憶領域として常に確保されている。
このとき、当該ルーティングテーブルRT用の記憶領域として具体的には、自信のノードIDと一致しているエントリEにはノード情報を記述する必要がないので、そのための記憶領域を確保する必要はない。例えば、ルーティングテーブルRTにおいて、そのレベル1にエントリEを四個記憶できる場合、
一つのレベル×{(四つのエリア)−(自身のノードIDと一致しているエリア(1つ))}=12
となるので、そのエントリEにノード情報が記憶されているか否かに拘わらず、合計12個エントリ分の記憶領域が確保されていればよい。すなわち図7に例示するように、自身のノードIDが例えば「1203」であった場合、1行(レベル1)2列に登録されるノード情報は存在しない。よって、レベル1として確保すべき記憶領域は、図7において右下ハッチングで表示されるエントリ3個分の記憶領域である。これと同様に、図7に例示する場合には、レベル2としてはエントリEを2個所持できるので合計エントリ6個分の記憶領域があればよく、またレベル3としてはエントリEを1個所持できるので合計エントリ3個の記憶領域があればよく、更にレベル4としてはエントリEを1個所持できるので合計エントリ3個の記憶領域があればよい。
次に、第1実施形態に係るルーティングテーブルRTを構成するメインテーブルMR、サブテーブルR1乃至R3においては、各テーブル内の同一レベル且つ同一エリアに相当するエントリEには、当該同一エリア(同一ノードグループ)に属する転送先となり得るノードのノード情報が、ホップ数の少ないノードから順にメインテーブルMR、サブテーブルR1乃至R3に夫々一ノード分だけ記述されている。
より具体的には、例えば図6に例示するメインテーブルMRのエントリME1に注目した場合、当該エントリME1内に記述されているノード情報により示されるノードと同じエリアに属する他の一つのノードを示すノード情報が、当該エントリME1と同一レベル同一エリアに相当するサブテーブルR1のエントリR1E1、サブテーブルR2のエントリR2E1及びサブテーブルR3のエントリR3E1内に夫々記述されている。
そして、メインテーブルMRのエントリME1内に記述されているノードIDにより示されるノードまでのホップ数は、サブテーブルR1のエントリR1E1内に記述されているノードIDにより示されるノードまでのホップ数より少なく、当該エントリR1E1内に記述されているノードIDにより示されるノードまでのホップ数は、サブテーブルR2のエントリR2E1内に記述されているノードIDにより示されるノードまでのホップ数より少なく、更に当該エントリR2E1内に記述されているノードIDにより示されるノードまでのホップ数は、サブテーブルR3のエントリR3E1内に記述されているノードIDにより示されるノードまでのホップ数より少なくなっている。
なお、図6に示すルーティングテーブルRTにおいて、エントリME1、R1E1、R2E1及びR3E1内に夫々記述されているノードIDにより示されるノードまでのホップ数を相互に等しく構成することも可能である。この場合は、他のノードからメッセージを受け取った時刻が最近のノードを示すノードIDがエントリME1内に記述されることになる。
このような構成を備えるルーティングテーブルRTを用いてDHTルーティング処理を実行する場合、例えばメインテーブルMRのエントリME1内に記述されているノードIDにより示されるノードが、例えば当該ノード自体が配信システムSから脱退した等の理由により当該配信システムS内に存在しなくなったことが認識された場合、他のルーティング先のノードNを新たに探索することなく、サブテーブルR1のエントリR1E1内に記述されているノード情報により示される(同じエリア内の)他のノードNを新たなルーティング先に直ちに切り換えて必要なDHTルーティング処理を継続する。
そして、当該他のノードをルーティング先としたDHTルーティング処理後においては、元々エントリR1E1に記述されていたノード情報をエントリME1内に書き換えると共に、元々エントリR2E1に記述されていたノード情報をエントリR1E1内に書き換え、更に元々エントリR3E1に記述されていたノード情報をエントリR2E1内に書き換えるルーティングテーブルRTの更新処理を行い、新たなDHTルーティング処理に備える。
更に、例えば現在エントリME1内に記述されているノードIDにより示されるノードよりもホップ数が少ない同一レベル同一エリア内の他のノードが発見された場合には、その新たに発見されたノードを示すノード情報を新たにエントリME1内に記述し、元々エントリME1に記述されていたノード情報をエントリR1E1内に書き換えると共に、元々エントリR1E1に記述されていたノード情報をエントリR2E1内に書き換え、更に元々エントリR2E1に記述されていたノード情報をエントリR3E1内に書き換えるルーティングテーブルRTの更新処理を行い、新たなDHTルーティング処理に備える。
なお、図6に示す場合において、メインテーブルMRがレベル4まで対応しているのに対し、サブテーブルR1はレベル2にまでしか対応しておらず、更にサブテーブルR2及びR3についてはレベル1にまでしか対応していない。これは、図3(D)に例示した如く、ルーティングテーブルRTに含まれるメインテーブルMRにおいて、その最下行に記述されるべきノード情報は1つしか存在しないためであり、従って、第1実施形態の場合では、サブテーブルR1乃至R3におけるレベル4に相当する行にノード情報が記述されることはあり得ないからである。
また、第1実施形態に係るルーティングテーブルRTに含まれるテーブルの数自体(図6に示す場合は「4」)は、例えば実験的その他の手法により任意に決定し得るものであるが、より具体的には、例えば配信システムSにおける統計的なノードの脱退率等を根拠として決定することが望ましい。
次に、第1実施形態に係るルーティングテーブルRTに係る上記更新処理等について、具体的に図8乃至図15を用いて説明する。なお、当該図8乃至図15に夫々各フローチャートに対応する処理は各ノードN内の制御部11が実行するものである。
先ず、図8(a)を用いて第1実施形態に係るノードNにおける一般的な処理について説明する。なお図8(a)は、当該一般的な処理を示すフローチャートである。
図8(a)に示すように、第1実施形態に係るノードNにおいては、配信システムSに新たに参加するに当たり、自身が記憶しているルーティングテーブルRT内の各エントリE内に記述されている全てのノードID等の情報を初期化し(ステップS1)、更に上記参加要求メッセージを送信して配信システムS内に参加する(ステップS2)。
当該参加後は、自身の電源スイッチがオフとされたか否かを常に監視し(ステップS3)、オフとされたときは(ステップS3;YES)そのまま処理を終了し、一方、オフとされていないときは(ステップS3;NO)、次に、何らかのメッセージを他のノードNから受信したか否かを確認する(ステップS4)。
そして、何らかのメッセージを他のノードNから受信したときは(ステップS4;YES)、その受信したメッセージを転送する転送先をメインテーブルMR内において探索する等の後述するメッセージ転送処理を実行し(ステップS5)、更に当該メッセージ転送処理の結果を用いたルーティングテーブルRTへのノード情報の新たな登録処理を実行し(ステップS6)、上記ステップS3に戻って上述した処理を繰り返す。なお、上記ステップS5及びS6の処理については、後ほど詳述する。
一方、ステップS4の判定において、何らメッセージを受信していないときは(ステップS4;NO)、当該ノードNとして予め設定されている他の処理を実行し(ステップS7)、上記ステップS3に戻戻って上述した処理を繰り返す。
次に、上記ステップS5としてのメッセージ転送処理について、具体的に図8(b)を用いて説明する。なお、図8(b)は当該メッセージ転送処理を示すフローチャートである。
図8(b)に示すように、当該メッセージ転送処理としては、何らかのメッセージを受信した場合(図8(a)ステップS4;YES参照)、先ず、自身が記憶しているメインテーブルMR内において次の転送先となるエントリを探索する(ステップS10)。
そして、当該探索処理の過程において自身がルートノードであることが判明したか否かを確認し(ステップS11)、自身がルートノードであるときは(ステップS11;YES)、もはや転送先のノードNは存在しないこととなるので、そのメッセージに対応する処理を実行して上記ステップS6の処理に移行する。
一方、ステップS11の判定において、自身がルートノードではなく、次に転送すべきノードNが探索できたときは(ステップS11;NO)、その探索結果を用いて当該受信したメッセージを転送し(ステップS12)、その転送が成功したか否かを確認する(ステップS13)。このステップS13の処理として具体的には、例えば、転送先のノードNからの返答メッセージの有無等により確認することができる。
ステップS13の確認において、当該転送が成功したときは(ステップS13;YES)、そのまま上記ステップS6に移行し、一方、例えば転送先のノードNが配信システムSから脱退していた等の理由により当該転送が成功しなかった場合は(ステップS13;NO)、現在のメインテーブルMRから当該転送が成功しなかった転送先のノードNを示すノード情報を削除する処理を行い(ステップS14)、上記ステップS10に戻って再度上記削除処理(ステップS14)後のメインテーブルMR内において次の転送先のノードを探索する。
ここで、後述するように、上記ステップS14の削除処理においては、メッセージの転送が成功しなかったノードのノード情報をメインテーブルMRから削除した後、その削除されたノード情報が記述されていたメインテーブルMRのエントリEに、当該エントリEと同一レベル同一エリアに相当するサブテーブルR1のエントリEに記述されていたノード情報を記述する処理を実行する。よって、上記ステップS14及びS10の処理が繰り返されることで、結果的に、図6に示すメインテーブルMR→サブテーブルR1→サブテーブルR2→サブテーブルR3の順で、当該同一レベル同一エリアに相当するエントリEが順次参照されてメッセージの転送処理に供されることとなる。
次に、上記ステップS14としてのメッセージ削除処理について、具体的に図9(a)を用いて説明する。なお、図9(a)は当該メッセージ削除処理を示すフローチャートである。
図9(a)に示すように、当該メッセージ削除処理としては、先ず、メッセージの転送が成功しなかったノードのノード情報が記述されていたメインテーブルMRのエントリEが、当該エントリEと同一レベル同一エリアに相当するサブテーブルR1のエントリEを有するものであるか否かを確認する(ステップS30)。
なお、以下の説明では、同一レベル同一エリアに相当するエントリEが少なくともサブテーブルR1に存在するメインテーブルMRのエントリEを、「多重化されているエントリ」と称する。より具体的に図6を用いて説明すると、第1実施形態に係るメインテーブルMRにおいては、レベル1及び2が多重化されているエントリとなり、レベル3及び4は多重化されていないエントリとなる。
そして、メッセージの転送が成功しなかったノードのノード情報が記述されていたメインテーブルMRのエントリEが多重化されたエントリであった場合は(ステップS30;YES)、当該多重化されたメインテーブルMRのエントリEからノード情報を削除する処理を実行し(ステップS32)、上記図8(b)ステップS10の処理に移行する。
一方、ステップS30の判定において、メッセージの転送が成功しなかったノードのノード情報が記述されていたメインテーブルMRのエントリEが多重化されていないエントリであった場合は(ステップS30;NO)、当該多重化されていないメインテーブルMRのエントリEからノード情報を削除する処理を実行し(ステップS31)、上記図8(b)ステップS10の処理に移行する。
次に、上記ステップS31の処理について、具体的に図9(b)を用いて説明する。なお、図9(b)は当該ステップS31の削除処理を示すフローチャートである。
図9(b)に示すように、ステップS31の削除処理としては、先ず、メッセージの転送が成功しなかったノードのノード情報と、当該ノード情報が記述されているはずのメインテーブルMRのエントリEに実際に記述されているノード情報と、を比較し(ステップS60)、両者が同一である場合は(ステップS60;同一)、そのエントリEに実際に記述されているノード情報を削除して(ステップS61)上記図8(b)ステップS10の処理に移行する。
一方、ステップS60の判定において、例えば転送成功の判定処理の際のエラー等に起因して両者が異なっているときは、同じノード情報を用いた転送処理を再度実行する必要があるとして(ステップS60;相違)、当該エントリE内に実際に記述されているノード情報を削除することなく上記図8(b)ステップS10の処理に移行する。
次に、上記ステップS32の処理について、具体的に図10を用いて説明する。なお、図10(a)は当該ステップS32の削除処理を示すフローチャートであり、図10(b)は当該削除処理の状態を示す模式図である。
図10(a)に示すように、ステップS32の削除処理としては、先ず、ルーティングテーブルRTにおける参照順の各テーブルの番号を示すパラメータiを初期化する(ステップS65)。このパラメータiにつき、図6に示す場合には、メインテーブルMRがパラメータi=「0」に相当し、サブテーブルR1がパラメータi=「1」に相当し、更にサブテーブルR2がパラメータi=「2」に相当することになる。
パラメータiが初期化されると、次に、現在の当該パラメータiの値が、ルーティングテーブルRTにおける多重化数を示すパラメータMAX(図6に示す場合、その値は「3」である)未満であるか否かを確認する(ステップS66)。そして、現在の当該パラメータiの値がパラメータMAXの値未満でないときは(ステップS66;NO)、更に参照すべき下位のサブテーブルが存在しないことになるので、上記図8(b)ステップS10の処理に移行する。
一方、ステップS66の判定において、現在の当該パラメータiの値がパラメータMAXの値未満であるときは(ステップS66;YES)、次に、ノード情報を削除すべきエントリEが現在のパラメータiにより示されるテーブル内にあるエントリEであるか否かを確認し(ステップS67)、ノード情報を削除すべきエントリEが現在のパラメータiにより示されるテーブル内にあるエントリEでないときは(ステップS67;NO)、現在のパラメータiの値を「1」だけインクリメントして(ステップS72)上記ステップS66の処理に戻る。
ここで、メインテーブルMRのエントリEを一律に削除せずに削除対象となるエントリEを他のサブテーブルR1乃至R3を含めてループ処理で検索する理由は、メッセージの転送処理を行っている間に新たなエントリEがメインテーブルMRに登録されることがあるため、メインテーブルMRのエントリEが常に削除対象のエントリEとなるは限らないからである。
他方、ステップS67の判定において、ノード情報を削除すべきエントリEが現在のパラメータiにより示されるテーブル内にあるエントリEであるときは(ステップS67;YES)、次に、一つ下位にあるテーブルにおける同一レベル同一エリアのエントリEに記述されているノード情報を用いて、削除対象となっているノード情報(現在のパラメータiの値により示されるテーブルのエントリE内に記述されている削除対象のノード情報)を書き換え(すなわち、テーブル間におけるノード情報の繰り上げ。ステップS68)、現在のパラメータiの値を「1」だけインクリメントする(ステップS69)。
そして、当該インクリメント後のパラメータiの値がパラメータMAXの値から「1」を減じた値になったか否かを確認し(ステップS70)、当該値になっていないときは(ステップS70;NO)、上記テーブル間におけるノード情報の繰り上げを下位のテーブルについて繰り返すべく上記ステップS68の処理に戻り、一方、インクリメント後のパラメータiの値がパラメータMAXの値から「1」を減じた値になったときは(ステップS70;YES)、そのときのパラメータi(=MAX―1)により示されるテーブルの該当するエントリE内のノード情報を消去して(ステップS71)上記図8(b)ステップS10の処理に移行する。
以上説明した図10(a)に示す処理が実行されることで、結果として、図10(b)に図6に示す場合について例示し、更に図15において符号「A」乃至「C」を用いて例示するように、メインテーブルMRのエントリME1内に記述されていたノード情報が削除された場合、サブテーブルR1のエントリR1E1に記述されているノード情報が当該エントリME1内に記述されると共に、サブテーブルR2のエントリR2E1に記述されているノード情報がサブテーブルR1のエントリR1E1内に記述され、サブテーブルR3のエントリR3E1に記述されているノード情報がサブテーブルR2のエントリR2E1内に記述され、更にサブテーブルR3のエントリR3E1に記述されているノード情報が消去されて当該エントリR3E1が空の状態となる。
次に、上記ステップS6としてのテーブルへの登録処理について、具体的に図11を用いて説明する。なお、図11は当該登録処理を示すフローチャートである。
図11に示すように、当該登録処理としては、先ず、図8(a)ステップS4の処理において受信したメッセージの送信元のノードを示すノード情報を取得し(ステップS20)、その取得したノード情報に基づき、そのノード情報を記述すべきメインテーブルMRのエントリEがいずれであるかを確認する(ステップS21)。
次に、当該確認されたエントリEが多重化されたエントリであるか否かを確認し(ステップS22)、多重化されているときは(ステップS22;YES)、当該多重化されたメインテーブルMRのエントリEに対する新たなノード情報の記述処理を実行し(ステップS24)、上記図8(a)ステップS3の処理に移行する。
一方、ステップS22の判定において、確認されたエントリEが多重化されていないエントリであるときは(ステップS22;NO)、当該多重化されていないメインテーブルMRのエントリEに対する新たなノード情報の記述処理を実行し(ステップS23)、上記図8(a)ステップS3の処理に移行する。
次に、上記ステップS23の登録処理について、具体的に図12(a)を用いて説明する。なお、図12(a)は当該ステップS23の登録処理を示すフローチャートである。
図12(a)に示すように、ステップS23の登録処理としては、先ず、対象となっているメインテーブルMRのエントリEが、ノード情報が記述されていない空の状態であるか否かを確認し(ステップS35)、メインテーブルMRの当該エントリEが空の状態であるときは(ステップS35;YES)、そのまま当該エントリEに新しいノード情報を記述して(ステップS36)、上記図8(a)ステップS3の処理に移行する。
一方、ステップS35の判定において、メインテーブルMRの当該エントリEに既にノード情報が記述されているときは(ステップS35;NO)、次に、その記述されているノード情報内のホップ数と、新たに記述しようとしているノード情報内のホップ数とを比較し(ステップS37、S38)、新たに記述しようとしているノード情報内のホップ数の方が、既に記述されているノード情報内のホップ数より小さいか又は双方が等しいときは(ステップS38;YES)、当該新たなノード情報を用いて既に記述されているノード情報を書き換え(ステップS36)、上記図8(a)ステップS3の処理に移行する。
他方、ステップS38の判定において、新たに記述しようとしているノード情報内のホップ数の方が、既に記述されているノード情報内のホップ数より大きいときは(ステップS38;NO)、当該記述済みのノード情報を継続して使用するものとしてそのまま上記図8(a)ステップS3の処理に移行する。
次に、上記ステップS24の登録処理について、具体的に図12(b)を用いて説明する。なお、図12(b)は当該ステップS24の登録処理を示すフローチャートである。
図12(b)に示すように、ステップS24の登録処理としては、先ず、上記ステップS35の処理と同様に、対象となっているメインテーブルMRのエントリEが空の状態であるか否かを確認し(ステップS40)、メインテーブルMRの当該エントリEが空の状態であるときは(ステップS40;YES)、そのまま当該エントリEに新しいノード情報を記述して(ステップS41)、上記図8(a)ステップS3の処理に移行する。
一方、ステップS40の判定において、メインテーブルMRの当該エントリEに既にノード情報が記述されているときは(ステップS40;NO)、次に、新たに記述しようとしているノード情報を記述すべきテーブルを取得する登録位置取得を実行して当該ノード情報を記述し(ステップS42)、上記図8(a)ステップS3の処理に移行する。
次に、上記ステップS42の取得処理について、具体的に図13を用いて説明する。なお、図13は当該ステップS42の取得処理を示すフローチャートである。
図13に示すように、ステップS42の取得処理としては、先ず、上記パラメータiを初期化し(ステップS45)、その後、現在の当該パラメータiの値が上記パラメータMAX未満であるか否かを確認する(ステップS46)。そして、現在の当該パラメータiの値がパラメータMAXの値未満でないときは(ステップS46;NO)、更に参照すべき下位のサブテーブルが存在しないことになるので、そのまま上記図8(a)ステップS3の処理に移行する。
一方、ステップS46の判定において、現在の当該パラメータiの値がパラメータMAXの値未満であるときは(ステップS46;YES)、次に、現在のパラメータiにより示されるテーブル内にあるエントリEであって新たなノード情報が登録されるべきレベル及びエリアにあるエントリEが、現在何らノード情報が記述されていない空の状態であるか否かを確認する(ステップS47)。
そして、当該エントリEが空の状態であるときは(ステップS47;YES)、そのパラメータiにより示されるテーブル内にある当該エントリE内に当該新たなノード情報を記述し(ステップS51)、上記図8(a)ステップS3の処理に移行する。
他方、ステップS47の判定において、当該エントリEが空の状態でないときは(ステップS47;NO)、次に、その記述されているノード情報内のホップ数と、新たに記述しようとしているノード情報内のホップ数とを比較し(ステップS48、S49)、新たに記述しようとしているノード情報内のホップ数の方が、既に記述されているノード情報内のホップ数より小さいか又は双方が等しいときは(ステップS49;YES)、当該新たなノード情報を記述するテーブル内のエントリEを取得する後述の取得処理を実行し(ステップS50)、その取得したエントリE内に当該新たなノード情報を記述して(ステップS51)上記図8(a)ステップS3の処理に移行する。
また、ステップS49の判定において、新たに記述しようとしているノード情報内のホップ数の方が、既に記述されているノード情報内のホップ数より大きいときは(ステップS49;NO)、現在のパラメータiの値を「1」だけインクリメントして(ステップS52)上記ステップS46の処理に戻る。
次に、上記ステップS50の取得処理について、具体的に図14を用いて説明する。なお、図14(a)は当該ステップS50の取得処理を示すフローチャートであり、図14(b)は当該取得処理の状態を示す模式図である。
図14(a)に示すように、ステップS50の取得処理としては、先ず、上記パラメータiと同様にルーティングテーブルRTにおける参照順の各テーブルの番号を示すパラメータjを(パラメータMAX−1)の値に設定し(ステップS55)、次に、現在のパラメータiの値と現在のパラメータjの値を比較する(ステップS56)。
そして、現在のパラメータiの値が現在のパラメータjの値より小さいときは(ステップS56;YES)、現在のパラメータjの値により示されるテーブルの一つ上位にあるテーブル(j−1番目のテーブル)における同一レベル同一エリアのエントリEに記述されているノード情報を用いて、当該現在のパラメータjの値により示されるテーブルにおける同一レベル同一エリアのエントリEの内容を書き換え(すなわち、テーブル間におけるノード情報の繰り下げ。ステップS57)、現在のパラメータjの値を「1」だけデクリメントして(ステップS58)上記ステップS56の処理に戻る。
一方、ステップS56の判定において、現在のパラメータiの値が現在のパラメータjの値より小さくないときは(ステップS56;NO)、そのまま上記図13ステップS51の処理に移行する。
以上説明した図13及び図14(a)に示す処理が実行されることで、結果として、図14(b)に図6に示す場合について例示し、更に図15において「○数字1」矢印及び「○数字2」矢印を用いて例示するように、サブテーブルR1のエントリR1E1内に記述されていたノード情報を新たなノード情報で書き換える場合、サブテーブルR1の当該エントリR1E1にそれまで記述されていたノード情報がサブテーブルR2のエントリR2E1に移され(当該エントリR2E1の既存のノード情報が書き換えられ)、更にサブテーブルR2の当該エントリR2E1にそれまで記述されていたノード情報がサブテーブルR3のエントリR3E1に移され(当該エントリR3E1の既存のノード情報が書き換えられる)、上記空いたエントリR1E1内に当該新たなノード情報が記述されることとなる。
以上夫々説明したように、第1実施形態に係るルーティングテーブルRTに係る処理によれば、ルーティングテーブルRT内に複数のテーブルを記憶し、当該各テーブル内のマトリクスにおける同一位置に夫々配置されているノード情報を、参照順に従って順次参照してメッセージ等の転送処理に用いるので、代替として当該転送処理に供することが可能なノード情報を予め複数記憶しておくことで、例えば既存の転送先であるノードNが配信システムSから脱落する等の事態が発生した場合でも、迅速に代替となるノード情報を発見して当該転送処理を効率的且つ迅速に実行することができる。
従って、当該転送処理を効率的且つ迅速に伝送することができると共に、ノードNの配信システムSからの脱落等の事態に対しても柔軟にルーティングテーブルRTを変更することで、配信システムSとしての対故障性を向上させつつ伝送効率の向上に資することができる。
また、当該各テーブルにおける各行が、ノードNが属する配信システムS上のノードグループにおける各階層に各々対応付けられており、更に二番目以降に参照されるべきサブテーブルR1又はR2の行数が最初に参照されるべきメインテーブルMRの行数よりも少ないので、記憶部12としての記憶量を節約しつつ各ノードグループの態様に合わせて効率的にノード情報を参照することができる。
更に、当該各テーブルにおける各行が、最上位の当該行から順に、ノードグループの最上位階層から各階層に順に対応付けられているので、配信システムS内のノードグループにおける階層構造に対応して効率的に代替となるノード情報を取得することができる。
更にまた、当該各テーブルにおいては、参照順が下位になるのに従い、各テーブルにおける下位の行から順に少なくなっているので、代替となるノード情報の効率的な取得と記憶部12としての記憶量の節約とを両立させることができる。
また、ルーティングテーブルRTを構成する各テーブルにおいて、参照順に指数関数的に行数が減少するように当該各テーブルを構成することで、配信システムSに参加しているノード装置の増減数の実情に応じて必要最小限の構成を備えるルーティングテーブルRTを実現することができる。
更に、ルーティングテーブルRT内に記憶されているテーブルの数が、配信システムSからのノードNの脱退数に応じて定められているので、一つのノードN内のテーブルの数を必要最小限として記憶部12の記憶容量を節約することができる。
更にまた、メインテーブルMRのノード情報を参照した場合において当該参照したノード情報を転送処理に用いることが不能であるとき、参照順においてサブテーブルR1内のマトリクスにおいて当該使用不能だったノード情報と同一位置に配置されている他のノード情報を参照して転送処理に用いるので、次に参照すべきノード情報を迅速に発見して情報の授受に供させることができる。
また、転送処理に用いることができないノード情報があった場合に、これをメインテーブルMRから削除すると共に、参照順においてその下位にあったノード情報を繰り上げてメインテーブルMRを補填するので、転送処理に用いることができないノード情報があったとしてもこれを迅速に補填することで効率的な転送処理を維持することができる。
更に、新たにいずれかのテーブルに配置すべきノード情報があるとき、そのノード情報を対応する参照順のテーブルに配置すると共に、当該新たな配置位置にあったノード情報を参照順において後にある他のテーブルの対応する位置に再配置するので、新たなノード情報を配置して更に効率的に情報の授受を行うことができると共に、それまで配置されていたノード情報を再配置して活用することもできる。
(IV)第2実施形態
次に、本発明に係るルーティングテーブルの他の実施形態である第2実施形態について、図16を用いて説明する。なお、図16は第2実施形態に係るノードに記憶されているルーティングテーブルの概要構成を示す模式図である。
また、第2実施形態に係るルーティングテーブルにおいて、第1実施形態に係るルーティングテーブルRTと同様の構成部材については、同様の部材番号を付して細部の説明は省略する。
上述した第1実施形態においては、メインテーブルMR以外のサブテーブルR1乃至R3のレベル数(当該サブテーブル自体の行数)については、当該サブテーブルR1からR3に向けて指数関数的に減少させる構成としたが、以下に説明する第2実施形態の如く、これらサブテーブル間で同一のレベル数としてもよい。
すなわち、図16に示すように、第2実施形態に係るルーティングテーブルRRTを、記憶部12におけるルーティングテーブルRT用として確保可能な記憶容量が多いことを前提として、メインテーブルMRの他に、当該メインテーブルMRに対して第1実施形態に係るサブテーブルR1乃至R3と同様の関係を有するサブテーブルRR1乃至RR3により構成するとき、メインテーブルMRにおけるレベル数を「4」とするとき、サブテーブルRR1乃至RR3におけるレベル数を全て「3」としてもよい。この場合、レベル1乃至3が多重化されているエントリとなり、レベル4が多重化されていないエントリとなる。
なお、図16に示す場合において、メインテーブルMRがレベル4まで対応しているのに対し、サブテーブルRR1乃至RR3はレベル3にまでしか対応していないが、これは、上記図3(D)に例示した如く、ルーティングテーブルRRTに含まれる各テーブルにおいて、最下行には、各エントリME1に記述されるべきノード情報は1つしか存在しないためであり、従って、第2実施形態の場合では、サブテーブルRR1乃至RR3におけるレベル4に相当する行にノード情報が記述されることはあり得ないからである。
(V)第1実施形態又は第2実施形態の変形形態
次に、上述してきた第1実施形態又は第2実施形態に係る変形形態について説明する。
上述した各実施形態においては、ルーティングテーブルRT又RRTを構成する各テーブルの参照順を、転送先となるノードまでのホップ数を用いてその少ない順に規定したが、これ以外に、例えば、
(i)メッセージ等の授受の際に要する負荷に応じて定める方法、
(ii)ノード情報により識別されるノードNからいずれかのメッセージを受信した順に対応して定める方法、
(iii)上記インデックス情報を記憶している数に基づき、当該記憶数が多いほど先に参照するように定める方法、
が可能である。
これらの場合については、上記(i)の場合には配信システムS内の転送処理をより効率的且つ迅速に行うことができると言う効果を奏し、上記(ii)の場合には各テーブルの構成変更を最小限に抑制できることで、配信システムSにおけるメッセージの伝送経路の変更を最小限に抑制して効率的に当該メッセージを伝送することができると言う効果を奏し、更に上記(iii)の場合には転送処理に関わる可能性があるノードNを示すインデックス情報の数に対応した順でテーブルが参照されるので、より迅速に必要な情報の授受を開始することができると言う効果を奏することができる。
(VI)第3実施形態
本発明に係る他の実施形態である第3実施形態について、図17及び図18を用いて説明する。なお、図17は第3実施形態に係るテーブルへの登録処理を示すフローチャートであり、図18は第3実施形態に係る転送先ノードの探索処理を示すフローチャートである。そして、当該各フローチャートにおいて、上述した第1実施形態に係る処理と同様の処理については、同様のステップ番号を付して細部の説明は省略する。
また、第3実施形態に係る各ノードの構成は、基本的に上記第1又は第2実施形態に係るノードNの構成と同様であるので、当該第1又は第2実施形態に係るノードNと同様の構成部材については、同様の部材番号を用いて細部の説明は省略する。
更に、以下の第3実施形態に係るルーティングテーブルの構成としては、例えば図6を用いて説明した第1実施形態に係るルーティングテーブルRTの構成と同様としてもよいし、或いは図16を用いて説明した第2実施形態に係るルーティングテーブルRRTの構成と同様としてもよいが、当該第3実施形態に係るルーティングテーブルにおいては、上記ルーティングテーブルRT又はRRTとは異なり、各テーブル内に参照順は設けられていない。
次に、第3実施形態に係るルーティングテーブルに係る上記更新処理等について、具体的に図17及び図18を用いて説明する。なお、当該図17及び図18に夫々各フローチャートに対応する処理は各ノードN内の制御部11が実行するものである。
先ず、第3実施形態に係るノードNにおける一般的な処理については、上記図8(a)を用いて説明した処理と同様であるので、細部の説明は省略する。
次に、上記ステップS6としての第3実施形態に係るテーブルへの登録処理について、具体的に図17を用いて説明する。なお、図17は当該登録処理を示すフローチャートである。
図17に示すように、当該登録処理としては、先ず、図8(a)ステップS4の処理において受信したメッセージの送信元のノードを示すノード情報を取得し(ステップS20)、その取得したノード情報に基づき、そのノード情報を記述すべきメインテーブルMRのエントリEがいずれであるかを確認する(ステップS21)。
次に、当該確認されたエントリEが多重化されたエントリであるか否かを確認し(ステップS22)、多重化されているときは(ステップS22;YES)、第3実施形態に係るルーティングテーブルに含まれているいずれかのテーブル内に空いている(すなわち、ノード情報が記述されていない)エントリEが存在しているか否かを確認する(ステップS92)。そして、当該空いているエントリEが存在していないときは(ステップS92;NO)、現在記憶されているテーブルの中からいずれかのエントリEを例えばランダムに選択してそれに記述されているノード情報を削除し(ステップS93)、そのノード情報が削除されたエントリEが含まれているテーブルを選び(ステップS95)、その選んだテーブルに含まれている(ノード情報が削除された)エントリEに対して新たなノード情報の記述処理を実行し(ステップS91)、上記図8(a)ステップS3の処理に移行する。
一方、上記ステップS92の判定において、空いているエントリEが存在しているときは(ステップS92;YES)、その空いているエントリEが1個か否かを次に確認する(ステップS94)。
そして、当該空いているエントリEが1個であるときは(ステップS94;YES)、上記ステップS95に移行して更にステップS91の処理を実行し、一方、当該空いているエントリEが複数個あるときは(ステップS94;NO)、当該空いているエントリEを含んでいるテーブルを例えばランダムに選択し(ステップS96)、その選択したテーブルに含まれている空きエントリEに対して新たなノード情報の記述処理を実行し(ステップS91)、上記図8(a)ステップS3の処理に移行する。
一方、ステップS22にて、多重化されているときは(ステップS22;NO)、現在エントリEに記述されているノード情報を削除(ステップS90)し、エントリEに対して新たなノード情報の記述処理を実行して(ステップS91)、上記図8(a)ステップS3の処理に移行する。
次に、上記ステップS5としての第3実施形態に係るメッセージ転送処理について、具体的に図18を用いて説明する。なお、図18は当該メッセージ転送処理を示すフローチャートである。
図18に示すように、当該メッセージ転送処理としては、何らかのメッセージを受信した場合(図8(a)ステップS4;YES参照)、先ず、第1又は第2実施形態の場合と同様に、自身が記憶しているメインテーブルMR内において次の転送先となるエントリを探索する(ステップS10)。
そして、当該探索処理の過程において自身がルートノードであることが判明したか否かを確認し(ステップS11)、自身がルートノードであるときは(ステップS11;YES)、もはや転送先のノードNは存在しないこととなるので、そのメッセージに対応する処理を実行して上記ステップS6の処理に移行する。
一方、ステップS11の判定において、自身がルートノードではないときは(ステップS11;NO)、次に、当該探索処理の過程において指定されたノードIDに相当する転送先が属するエントリEが多重化されているか否かを確認し(ステップS70)、多重化されていない場合は(ステップS70;NO)、当該転送先が属するエントリEが空いているか否かを確認する(ステップS71)。そして、当該転送先が属するエントリEが空いている(ノード情報が記述されていない)ときは(ステップS71;YES)、次の転送先を探索すべく上記ステップS10に戻る。
他方、上記ステップS71の判定において、当該エントリEが空ではなくノード情報が記述されているときは(ステップS71;NO)、そのエントリEを探索結果として選択し(ステップS75)、その探索結果を用いて当該受信したメッセージを転送し(ステップS12)、その転送が成功したか否かを確認する(ステップS13)。
ステップS13の確認において、当該転送が成功したときは(ステップS13;YES)、そのまま上記図8(a)ステップS6に移行し、一方、例えば転送先のノードNが配信システムSから脱退していた等の理由により当該転送が成功しなかった場合は(ステップS13;NO)、その転送が成功しなかった転送先のノードNを示すノード情報をルーティングテーブルから削除する処理を行い(ステップS76)、上記ステップS10に戻って当該削除処理(ステップS76)後のルーティングテーブル内において次の転送先のノードを再度探索する。
一方、上記ステップS70の確認において、指定されたノードIDに相当する転送先が属するエントリEが多重化されている場合は(ステップS70;YES)、次に当該多重化されているエントリEのいずれかにノード情報が記述されているか否かを確認する(ステップS72)。そして、当該いずれのエントリE内にもノード情報が記述されていないときは(ステップS72;NO)、再度上記ステップS10に戻って次の転送先のノードを探索する。
他方、ステップS72の確認において、いずれかのエントリE内にノード情報が記述されているときは(ステップS72;YES)、そのノード情報が記述されているエントリEの数が「1」であるか否かを確認し(ステップS73)、当該数が「1」であるときは(ステップS73;YES)、その空のエントリEを選択して(ステップS75)、上記ステップS12以降の処理に移行する。
また、ステップS73の確認において、当該数が「1」でなく「2」以上であるときは(ステップS73;NO)、その複数ある空のエントリEの中から一つを例えばランダムに選択し(ステップS74)、上記ステップS12以降の処理に移行する。
以上夫々説明したように、第3実施形態に係るルーティングテーブルに係る処理によれば、参照順が予め設定されていないルーティングテーブルを用いることで、上記第1実施形態又は第2実施形態と同様の効果を簡易な処理で実現することができる。
なお、上述した図8乃至図14並びに図17及び図18に夫々示すフローチャートに対応するプログラムを、フレキシブルディスク又はハードディスク等の情報記録媒体に記録しておき、又はインターネット等を介して取得して記録しておき、これらを汎用のコンピュータで読み出して実行することにより、当該コンピュータを実施形態に係るノードN内の制御部11として夫々機能させることも可能である。