[実施の形態1]
本実施の形態に係るネットワークの一例を図1に示す。図1の例では、例えばネットワークを管理するゲートウェイGWと、ノードA乃至Eとを含む。そして、ノードA乃至Eは、従来からある技術に従って自律的に最適な経路を導出し、経路内リンクを形成する。図1で示す時点では、ノードDとノードBとのリンク、ノードBとノードAとのリンク、ノードEとノードCとのリンク、ノードCとノードAとのリンク、ノードAとゲートウェイGWとのリンクが、経路内リンクとして用いられる。なお、図1の点線で示されたリンクは、何らかの理由で用いられることになる可能性はあるが、ここでは用いられないものとする。
各ノードA乃至Eは、ゲートウェイGWに対してデータを送信するため、ゲートウェイGWは、接続されているノードについては把握できるが、ネットワークのトポロジは、接続されているノードだけでは特定できない。
そこで、ゲートウェイGWは、図2に示すような符号化テーブルを生成する。図2の例では、ゲートウェイGWとノードA乃至Eとについてあり得るリンクの各々について、識別子が付与されている。このような符号化テーブルは、ゲートウェイGWからノードA乃至Eに配布される。
なお、このようなリンクに付与された識別子をゲートウェイGWに送信するのでは、通信量が多くなってしまうので、用いられているリンクの識別子を復号可能な形で符号化した上で、ゲートウェイGWに送信する。
なお、符号化の方式は、リンクの識別子の数程度のビット長であって且つリンクの識別子を復号可能なものであればよい。例えば、ブルームフィルタ(Bloom Filter)を用いて符号化する。より具体的には、1のハッシュ関数に、リンクの識別子を入力して、当該ハッシュ関数の出力に対応するビット位置をハイにセットすることで得られるビット列を符号化データとして生成する。このようなビット列を、下位ノードから更新しつつゲートウェイGWへ送ることで、ゲートウェイGWにおいてトポロジを特定する。なお、ブルームフィルタの場合には偽陽性の問題があるが、偽陽性が発生しないようにリンクの識別子を調整するものとする。
図1に示したネットワークの場合、図3に示すようなビット列が符号化データとして用いられる。図3の例では、ノードDからノードBへ送られる符号化データを表している。ノードDとノードBとのリンクの識別子B−Dに対応する位置のビットに「1」がセットされる。
また、ノードBからノードAへ送られる符号化データの一例を図4に示す。図4の例では、ノードBとノードAとのリンクの識別子A−Bに対応する位置のビットに追加で「1」がセットされる。
さらに、ノードEからノードCへ送られる符号化データの一例を図5に示す。図5の例では、ノードEとノードCとのリンクの識別子C−Eに対応する位置のビットに「1」がセットされる。
また、ノードCからノードAへ送られる符号化データの一例を図6に示す。図6の例では、ノードCとノードAとのリンクの識別子A−Cに対応する位置のビットに追加で「1」がセットされる。
ノードAは、図4に示した符号化データ及び図6に示した符号化データを受信するので、符号化データのビット列をOR演算すると共に、ノードAからゲートウェイGWとのリンクの識別子GW−Aに対応する位置のビットに追加で「1」がセットされる。すなわち、図7に示すような符号化データが、ノードAからゲートウェイGWへ送信される。
ゲートウェイGWは、図7に示すような符号化データを受信すると、「1」がセットされたビット位置から、図1に示すようなリンクトポロジを復元できる。
このような処理を行うためのゲートウェイGWの構成例を図8に示す。ゲートウェイGWは、ノードデータ格納部101と、テーブル生成部102と、テーブル格納部103と、テーブル配信部104と、受信部105と、符号化データ格納部106と、復号処理部107と、トポロジデータ格納部108と、出力部109とを有する。
ノードデータ格納部101は、ネットワークに出現するノードのリストを格納する。テーブル生成部102は、ノードデータ格納部101に格納されているノードのリストから、ノード間に確立し得るリンクの識別子を符号化方法に基づき付与して、図2に示すような符号化テーブルを生成し、テーブル格納部103に格納する。テーブル配信部104は、各ノードにテーブル格納部103に格納された符号化テーブルを配信する。
受信部105は、いずれかのノードから符号化データを受信すると、符号化データ格納部106に格納する。復号処理部107は、テーブル格納部103に格納されている符号化テーブルを用いて、符号化方式に基づき、符号化データ格納部106に格納されている符号化データからリンクの識別子を復元し、ネットワークのトポロジデータを生成し、トポロジデータ格納部108に格納する。
出力部109は、例えば管理装置などからの要求に応じてトポロジデータ格納部108に格納されているトポロジデータを出力する。
また、各ノードの構成例を図9に示す。ノード200は、通信処理部210と、データ格納部220と、符号化処理部230とを有する。
通信処理部210は、他のノード等との通信を行って、他のノード等とのリンクを確立し、当該リンクのデータを格納する。また、通信処理部210は、他のノード等から符号化テーブルを受信すると、データ格納部220に格納し、子ノードが存在する場合には符号化テーブルを送信する。
符号化処理部230は、自らが最下位ノードであれば、親ノードとのリンク及び符号化テーブルに基づき、符号化データを生成し、通信処理部210に符号化データを親ノードへ送信させる。また、符号化処理部230は、通信処理部210が子ノードから符号化データを受信すると、自ノードについて他のリンクの識別子を特定すると共に、当該特定されたリンクの識別子及び受信した符号化データを用いて新たな符号化データを生成し、通信処理部210に、親ノードへ送信させる。
次に、図10乃至図12を用いて、処理内容について説明する。まず、ゲートウェイGWの処理内容について図10及び図11を用いて説明する。
図10は、符号化テーブルの配信についての処理フローを示す。まず、テーブル生成部102は、ノードデータ格納部101に格納されているノードのデータから、確立し得るリンクの識別子を生成することで、符号化テーブルを生成し、テーブル格納部103に格納する(図10:ステップS1)。この際、上で述べたように、ブルームフィルタを用いる場合には偽陽性が発生しないように識別子を調整する。
そして、テーブル配信部104は、子ノードに、テーブル格納部103に格納されている符号化テーブルを配信する(ステップS3)。図1の例では、ノードAに送信する。
また、符号化データを受信した場合の処理を図11を用いて説明する。受信部105は、子ノードから符号化データを受信すると、符号化データ格納部106に格納する(図11:ステップS11)。そうすると、復号処理部107は、符号化データから、リンク識別子を復号する(ステップS13)。上で述べた例では、符号化データにおいて「1」がセットされているビット位置がリンク識別子に対応付けられるので、「1」がセットされているビット位置に基づきリンク識別子を特定する。その他の符号化方法の場合には、その方法に応じて復号する。
そして、復号処理部107は、リンク識別子で符号化テーブルを探索することで、リンクを特定することで、ネットワークトポロジのデータを生成し、トポロジデータ格納部108に格納する(ステップS15)。例えば図1に示すようなノードとノードとをリンクで繋ぐようなデータを生成する。
その後、出力部109は、トポロジデータ格納部108に格納されているトポロジデータを、例えばネットワークに接続されている管理端末などに出力する(ステップS17)。
このようにすれば、ゲートウェイGWでは、ネットワークのトポロジデータが生成できるようになる。
次に、図12を用いて、各ノードにおける処理を説明する。まず、通信処理部210は、他のノード又はゲートウェイGWから符号化テーブルを受信したか判断する(図12:ステップS21)。符号化テーブルを受信した場合には、通信処理部210は、データ格納部220に、符号化テーブルを格納する(ステップS23)。そして、通信処理部210は、子ノードが存在するか判断する(ステップS25)。例えば確立しているリンクにおいて下流のノードが存在するか判断する。
子ノードが存在する場合には、通信処理部210は、受信した符号化テーブルを、子ノードに送信する(ステップS27)。一方、子ノードが存在しない場合、すなわち自ノードが最下流ノードである場合には、処理はステップS29に移行する。
その後、通信処理部210は、管理端末などから処理終了を指示されたなど、処理を終了すべきか判断し(ステップS29)、処理終了でなければ、処理はステップS21に戻る。一方、処理終了であれば、処理を終了する。
また、符号化テーブルの受信でなければ、通信処理部210は、他のノードから符号化データを受信したか判断する(ステップS31)。符号化データを他のノードから受信した場合には、通信処理部210は、符号化データを符号化処理部230に出力する。符号化処理部230は、自ノードのリンク及び受信した符号化データに基づき、親ノードに送信すべき符号化データを生成し、通信処理部210に出力する(ステップS33)。
例えば、自ノードと親ノードとのリンクの識別子を符号化テーブルから特定し、予め配布されているハッシュ関数に入力することで、符号化データのビット列において「1」をセットすべきビット位置を特定し、受信した符号化データのビット列において当該ビット位置のビットを「1」にセットする。親ノード以外のノードとのリンクがあれば、同様に符号化データに当該リンクの識別子から特定されるビット位置のビットを「1」にセットしてもよい。
そして、通信処理部210は、符号化データを親ノードに送信する(ステップS35)。その後、処理はステップS29に移行する。
さらに、符号化データを受信したわけではない場合、通信処理部210は、子ノードが存在せず且つ符号化データ送信タイミングであるという条件を満たしているか判断する(ステップS37)。すなわち、自ノードが最下流ノードであり、例えば定期的に符号化データを生成するような場合には、その送信タイミングであるか否かを判断する。この条件を満たさない場合には、処理はステップS29に移行する。
一方、この条件を満たす場合には、通信処理部210は、符号化処理部230に処理を指示する。符号化処理部230は、符号化テーブルから自ノードが確立しているリンク(例えば親ノードとのリンク)の識別子を特定し、当該リンクの識別子に基づき符号化データを生成する(ステップS39)。上で述べたように、リンクの識別子をハッシュ関数に入力することによって特定される、符号化データにおけるビット位置のビットを「1」にセットする。そして処理はステップS35に移行する。
このような処理を実行することで、最下流ノードから順番に、符号化データを更新しつつノードを伝ってゲートウェイGWまで、符号化データが到達し、ネットワークのトポロジを得ることができるようになる。
上でも述べたように、ブルームフィルタは一例であって、他の方法を用いても良い。1のハッシュ関数を用いる例を示したが、より多いハッシュ関数を用いてブルームフィルタを生成しても良い。
[実施の形態2]
第1の実施の形態では、符号化テーブルをそのままネットワーク全体に配信するので、ノードの数が増加すると、リンク数も多くなってしまい、符号化テーブルのサイズが大きくなってしまう。よって、ネットワーク配信の際の負荷が高くなってしまう。
そこで、過去のトポロジが把握されている場合に、符号化テーブルのサイズを小さくするような手法を示す。
本実施の形態でも、図1のようなネットワークを想定する。但し、図13に示すように、ゲートウェイGWからのホップ数と、共通する親ノードによるグループ化とを、管理用のデータとして採用する。
すなわち、ノードAは、親ノードがゲートウェイGWであるからグループGWに属し、ゲートウェイGWから1ホップであるからホップ数N=1と設定される。ノードB及びCは、親ノードがノードAであるからグループAに属し、ゲートウェイGWから2ホップであるからホップ数N=2と設定される。ノードDは、親ノードがノードBであるからグループBに属し、ゲートウェイGWから3ホップであるからホップ数N=3と設定される。同様に、ノードEは、親ノードがノードCであるからグループCに属し、ゲートウェイGWから3ホップであるからホップ数N=3と設定される。
親ノードがゲートウェイGWであるノードA(グループGW)は、ゲートウェイGWとのリンクを符号化することになるので、ノードAのための符号化テーブルは、図2に示したものと同様である。
また、親ノードがノードAであるノードB及びC(グループA)は、ゲートウェイGWとのリンクを符号化する可能性は低いので、それ以外のノードとのリンクを符号化するため、ノードB及びCのための符号化テーブルは、図14に示すようになる。
さらに、親ノードがノードBであるノードD(グループB)は、ゲートウェイGW並びにノードA、C及びEについてのリンクを符号化する可能性は低いので、それ以外のノードとのリンクを符号化するため、ノードDのための符号化テーブルは、図15に示すようになる。
同様に、親ノードがノードCであるノードE(グループC)は、ゲートウェイGW並びにノードA、B及びDについてのリンクを符号化する可能性は低いので、それ以外のノードとのリンクを符号化するため、ノードEのための符号化テーブルは、図16に示すようになる。
本実施の形態では、ゲートウェイGWが、図2及び図14乃至図16の符号化テーブルを生成して、配下のノードに配信する。符号化テーブルを受信したノードは、自らが用いるテーブル及び子ノードが用いるテーブルを格納し、配下のノードで用いる符号化テーブルを子ノードに配信する。なお、符号化テーブルに併せたハッシュ関数も符号化テーブルと共に配信される。
一方、符号化データについては、以下のように生成される。すなわち、ノードEは、親ノードCとのリンクが確立されているので、符号化テーブル(図16)からそのリンクの識別子を特定し、当該リンクの識別子から符号化データを生成する。例えば図17に示すような符号化データが得られる。この例では1つのリンクの識別子しか出現し得ないので1ビットとなるが、それ以外の場合には、上で述べたように、特定されたリンクの識別子をハッシュ関数に入力して、その出力に対応するビット位置のビットを「1」にセットする。
また、ノードDは、親ノードBとのリンクが確立されているので、符号化テーブル(図15)からそのリンクの識別子を特定し、当該リンクの識別子から符号化データを生成する。例えば図18に示すような符号化データが得られる。
ノードCは、図17に示すような符号化データをノードEから受信すると、図16に示すような符号化テーブルに基づきリンクの識別子C−Eを得る。また、ノードCは、親ノードAとのリンクも有しているので、自ノードのための符号化テーブル(図14)からリンクの識別子を取得する。そして、各リンクの識別子に対するハッシュ関数の出力に対応するビット位置のビットに「1」をセットすることで、符号化データを生成する。この場合、図19に示すような符号化データが生成される。
同様に、ノードBは、図18に示すような符号化データをノードDから受信すると、図15に示すような符号化テーブルに基づきリンクの識別子B−Dを得る。また、ノードBは、親ノードAとのリンクも有しているので、自ノードのための符号化テーブル(図14)からリンクの識別子を取得する。そして、各リンクの識別子に対するハッシュ関数の出力に対応するビット位置のビットに「1」をセットすることで、符号化データを生成する。この場合、図20に示すような符号化データが生成される。
さらに、ノードAは、図20に示すような符号化データを受信すると、図14に示すような符号化テーブルに基づき、リンクの識別子B−D,A−B,C−E及びA−Cを特定する。さらに、ノードAは、親ノードであるゲートウェイGWとのリンクをも有しているので、自ノードのための符号化テーブル(図2)からリンクの識別子を特定する。そして、各リンクの識別子に対するハッシュ関数の出力に対応するビット位置のビットに「1」をセットすることで、符号化データを生成する。この場合に生成される符号化データは、第1の実施の形態において、ノードAが生成する符号化データと同じである。すなわち、図7に示すような符号化データが得られる。
ゲートウェイGWは、第1の実施の形態と同様の処理で、リンクトポロジのデータを得ることができるようになる。
次に、このような処理を実行するための構成について説明する。図21に示すように、ゲートウェイGWは、おおよそ第1の実施の形態における構成と同様の構成を有しているが、符号化テーブルが異なっており且つ符号化テーブルを生成する際にはリンクトポロジのデータを用いるので、テーブル生成部102bを採用して、テーブル生成部102bは、ノードデータ格納部101とトポロジデータ格納部108に格納されているデータを用いるようになっている。また、以下で述べるエラー通知の際の処理のために、受信部105b及びテーブル配信部104bが採用されている。
また、図22に、本実施の形態に係るノード200bの構成例を示す。基本的には第1の実施の形態に係る構成と同様であるが、実施される処理内容は以下で述べるように異なる。
次に、図23乃至図25を用いて、ゲートウェイGWの処理内容を説明する。まず、テーブル生成部102bは、最上位の符号化テーブルを生成し、テーブル格納部103に格納する(図23:ステップS41)。この処理は第1の実施の形態と同様である。
さらに、テーブル生成部102bは、トポロジデータ格納部108に格納されているネットワークトポロジのデータに基づき、ノードのツリー構造を生成する(ステップS43)。図13に示すようなツリー構造を生成する。
そして、テーブル生成部102bは、図14、図15及び図16に示すような短縮型の符号化テーブルを生成できるか否かを、ステップS43の処理結果に基づき判断する(ステップS45)。例えば、ネットワークトポロジから把握されるネットワークが、各ノードが互いに1ホップで接続されるような完全グラフのようなものである場合には、以下の処理を行わなくても良い。従って、端子Aを介して処理を終了する。
一方、短縮型符号化テーブルを生成できる場合には、テーブル生成部102bは、ホップ数を表す変数Nを0に設定する(ステップS47)。また、テーブル生成部102bは、Nを1インクリメントする(ステップS49)。さらに、テーブル生成部102bは、ホップ数がNとなるノードを、親ノード毎にグループ化する(ステップS51)。さらに、テーブル生成部102bは、グループ名(例えば親ノードの識別子)及びホップ数を、ホップ数Nのノードに対応付けて例えばテーブル格納部103に格納する(ステップS53)。
そして、テーブル生成部102bは、Nが処理に係るネットワークの最大ホップ数を超えているか否かを判断する(ステップS55)。Nが、最大ホップ数以下であれば、処理はステップS49に戻る。一方、Nが、最大ホップ数を超えた場合には、処理は端子Bを介して図24の処理に移行する。
図24の処理の説明に移行して、テーブル生成部102bは、短縮型符号化テーブル生成処理を実行する(ステップS57)。この短縮型符号化テーブル生成処理については、図25を用いて説明する。
まず、テーブル生成部102bは、ホップ数を表す変数Nを0に初期化する(図25:ステップS61)。そして、テーブル生成部102bは、Nを1インクリメントする(ステップS63)。
その後、テーブル生成部102bは、ホップ数Nのグループを特定する(ステップS65)。ここでは複数のグループが特定される場合がある。従って、さらに、テーブル生成部102bは、未処理のグループを1つ特定する(ステップS67)。
そして、テーブル生成部102bは、親ノードの符号化テーブルから、特定されたグループ及びその配下に属するノードの識別子(ID)を抽出する(ステップS69)。そして、テーブル生成部102bは、抽出されたノードの識別子から、それらのノード間のリンクの識別子を生成することで、短縮型符号化テーブルを生成し、テーブル格納部103に格納する(ステップS71)。ノード間のリンクの識別子は、親ノードの符号化テーブルから抽出するようにしても良い。
その後、テーブル生成部102bは、未処理のグループが存在するか否かを判断する(ステップS73)。未処理のグループが存在する場合には、処理はステップS67に戻る。一方、未処理のグループが存在しない場合には、テーブル生成部102bは、Nはそのネットワークにおける最大ホップ数を超えたか判断する(ステップS75)。Nが最大ホップ数を超えていない場合には、処理はステップS63に戻る。一方、Nが最大ホップ数を超えた場合には、処理は呼出元の処理に戻る。
このような処理を行えば、上で述べた例では、図14、図15及び図16に示すような短縮型の符号化テーブルが生成される。
図24の処理の説明に戻って、テーブル配信部104bは、テーブル格納部103に格納されている符号化テーブル(短縮型を含む)を、子ノードに送信する(ステップS59)。
以上のような処理を実行することで、ネットワーク全体で通信される符号化テーブルの量は少なくなる。
なお、ゲートウェイGWが、符号化データを受信した際の処理については、第1の実施の形態と同様であるので、説明を省略する。
次に、図26乃至図28を用いて、各ノードの処理について説明する。
通信処理部210bは、符号化テーブル(短縮型を含む)を受信したか判断する(図26:ステップS81)。符号化テーブルを受信していない場合には、処理は端子Cを介して図27の処理に移行する。
一方、符号化テーブルを受信した場合には、通信処理部210bは、自ノードの識別子を有する符号化テーブルがあるか否かを判断する(ステップS83)。短縮型符号化テーブルは、以前のネットワークトポロジを基に生成されているので、その後のネットワークの変更によって自ノードが含まれない場合もある。自ノードの識別子を有する符号化テーブルが存在しない場合には、通信処理部210bは、自ノードの識別子を含むエラー通知を、ゲートウェイGWに送信する(ステップS85)。エラー通知を行ったノード及びその配下のノードについては、第1の実施の形態に従って処理を行うものとする。そして処理はステップS101に移行する。
なお、受信部105bは、エラー通知を受信すると、エラー通知に含まれるノードの識別子に対して、図2に示すような最も大きい符号化テーブルを送信するようにテーブル配信部104bに指示する。テーブル配信部104bは、図2に示すような符号化テーブルを、エラー通知に含まれるノードの識別子に対して送信する。この符号化テーブルを受信したノードは、配下のノードに同じ符号化テーブルを配布して、第1の実施の形態と同様の処理を行う。但し、エラー通知に識別子が含まれていたノードより上位のノードについては、符号化データをそのまま転送する。ゲートウェイGWでは、短縮型符号化テーブルに基づき生成された符号化データから得られるリンクと、第1の実施の形態に係る符号化テーブルに基づき生成された符号化データから得られるリンクとを連結させれば、全体としてのネットワークトポロジを把握できる。
一方、自ノードの識別子を含む符号化テーブルを受信した場合には、通信処理部210bは、自ノードの識別子を含む符号化テーブルを、データ格納部220bに格納する(ステップS87)。ノードAであれば、図2及び図14の符号化テーブルを格納し、ノードBであれば、図14及び図15の符号化テーブルを格納し、ノードCであれば、図14及び図16の符号化テーブルを格納し、ノードDであれば、図15の符号化テーブルを格納し、ノードEであれば、図16の符号化テーブルを格納する。
そして、通信処理部210bは、子ノードが存在するか否かを判断する(ステップS89)。子ノードが存在しない場合には、処理はステップS101に移行する。
一方、子ノードが存在する場合には、通信処理部210bは、未処理の子ノードを1つ特定する(ステップS91)。そして、通信処理部210bは、特定された子ノードの識別子を含むテーブルを受信したか否かを判断する(ステップS93)。特定された子ノードの識別子を含むテーブルを受信していない場合には、当該子ノードが新たにリンクを確立したためであるから、通信処理部210bは、特定された子ノードの識別子を含むエラー通知を、ゲートウェイGWに送信する(ステップS97)。子ノード及びその配下のノードについては、第1の実施の形態に従って処理を行うものとする。そして処理はステップS99に移行する。
一方、子ノードのIDを含むテーブルが存在する場合には、通信処理部210bは、親ノードのための符号化テーブル(すなわち最大サイズの符号化テーブル)以外のテーブルを、特定された子ノードに送信する(ステップS95)。そして、通信処理部210bは、未処理の子ノードが存在するか判断する(ステップS99)。未処理の子ノードが存在する場合には処理はステップS91に戻る。一方、未処理の子ノードが存在しない場合には、通信処理部210bは、処理を終了すべきか判断する(ステップS101)。処理を終了すべきではない場合には、処理はステップS81に戻る。一方、処理を終了すべき場合には、処理を終了する。
このようにすれば、適切に符号化テーブルが配布されるようになる。なお、配布できない場合には、配布できないノード及びその配下のノードについては別途処理する。
次に、図27を用いて、端子C以降の処理について説明する。
なお、ここでは、符号化テーブル配布後に親ノードが変化することで符号化データを送信できない場合に送信されるエラー通知をも処理するものとする。
すなわち、通信処理部210bは、自ノード宛のエラー通知のみ子ノードから受信したか判断する(ステップS103)。自ノード宛のエラー通知のみ子ノードから受信した場合、すなわち子ノードにおいて符号化データを生成できなかった場合には、通信処理部210bは、自ノードと親ノードとのリンクについての識別子が符号化テーブルに登録されていて符号化データを生成できるか判断する(ステップS105)。親ノードとのリンクについての識別子が符号化テーブルに登録されていない場合には、自ノードでも符号化データを生成できないので、通信処理部210bは、自ノードの識別子を含むエラー通知を親ノード宛に送信する(ステップS107)。そして処理は、端子Dを介して図26の処理に戻る。
一方、親ノードとのリンクについての識別子が符号化テーブルに登録されており符号化データを生成できる場合には、通信処理部210bは、符号化処理部230bに処理を指示し、符号化処理部230bは、自ノードのリンクに基づき符号化データを生成し、通信処理部210bに出力する(ステップS109)。最下流のノードのように処理を行うものである。そして、通信処理部210bは、子ノードの識別子を含むエラー通知及び符号化データを、親ノードに送信する(ステップS111)。その後処理は端子Dを介して図26の処理に戻る。
また、エラー通知のみの受信ではない場合、通信処理部210bは、エラー通知及び符号化データを受信したか否かを判断する(ステップS113)。この条件を満たさない場合には、処理は端子Eを介して図28の処理に移行する。
一方、エラー通知及び符号化データを受信した場合、すなわち、配下のノードで符号化できない部分があるが少なくとも子ノードからは符号化データが得られた場合、通信処理部210bは、親ノードとのリンクについての識別子が符号化テーブルに登録されていて符号化データを生成できるか判断する(ステップS115)。親ノードとのリンクについての識別子が符号化テーブルに登録されていない場合には、自ノードでも符号化データを生成できないので、通信処理部210bは、自ノードの識別子を含むエラー通知を親ノード宛に送信する(ステップS121)。そして処理は端子Dを介して図26の処理に戻る。
一方、親ノードとのリンクについての識別子が符号化テーブルに登録されており符号化データを生成できる場合には、通信処理部210bは、符号化処理部230bに処理を指示し、符号化処理部230bは、自ノードのリンク及び受信符号化データに基づき符号化データを生成し、通信処理部210bに出力する(ステップS117)。この処理については、図12のステップS33と同様である。そして、通信処理部210bは、受信したエラー通知及び符号化データを、親ノードに送信する(ステップS119)。その後処理は端子Dを介して図26の処理に戻る。
このように符号化データを生成する際に発生したエラー通知を受信した場合においても、適切に処理できるようになる。
次に、端子E以降の処理を図28を用いて説明する。
まず、通信処理部210bは、子ノードから符号化データのみを受信したか判断する(ステップS123)。符号化データのみを受信した場合には、通信処理部210bは、符号化処理部230bに処理を指示し、符号化処理部230bは、自ノードのリンク及び受信符号化データに基づき符号化データを生成し、通信処理部210bに出力する(ステップS127)。この処理については、図12のステップS33と同様である。そして、通信処理部210bは、符号化データを、親ノードに送信する(ステップS129)。そして処理は端子Dを介して図26の処理に戻る。なお、本実施の形態の手法では符号化データを生成できなかったノード及び配下のノードについては指定した上で別途処理することになるが、それ以外のノードで経路上のノードは第1の実施の形態の手法に従って生成された符号化データを受信した場合には、そのまま符号化データを親ノードに転送すればよい。
一方、符号化データのみの受信ではない場合には、通信処理部210bは、子ノードが存在せず且つ符号化データ送信タイミングであるという条件を満たしているか判断する(ステップS133)。この条件を満たしていない場合には、処理は端子Dを介して図26の処理に戻る。
一方、この条件を満たしている場合には、すなわち、配下のノードで符号化できない部分があるが少なくとも子ノードからは符号化データが得られた場合、通信処理部210bは、親ノードとのリンクについての識別子が符号化テーブルに登録されていて符号化データを生成できるか判断する(ステップS135)。親ノードとのリンクについての識別子が符号化テーブルに登録されており符号化データを生成できる場合には、通信処理部210bは、符号化処理部230bに処理を指示し、符号化処理部230bは、自ノードのリンクに基づき符号化データを生成し、通信処理部210bに出力する(ステップS137)。最下流のノードとして処理を行うものである。そして、通信処理部210bは、符号化データを、親ノードに送信する。その後処理は端子Dを介して図26の処理に戻る。
一方、親ノードとのリンクについて符号化データを生成できない場合には、通信処理部210bは、自ノードの識別子を含むエラー通知を親ノードに送信する(ステップS139)。
以上の処理を実行することで、通常どおり符号化データを生成するか、最下流のノードで既に符号化データを生成できない場合に対処できるようになる。
なお、上では説明を分かり易くするために、リンクの識別子については図2に示したノードAのための符号化テーブルにおけるリンクの識別子と同様であるものとして説明した。しかしながら、テーブルに出現するノードの数が少なくなっているので、リンクの識別子のビット長も短くできる。
模式的に示せば、図29に示すように、リンクの識別子A−Bは、短縮された識別子A−Bbに変更され、リンクの識別子A−Cは、短縮された識別子A−Cbに変更される。他の符号化テーブルについても同様に変更される。このように識別子を短縮する場合には、そのためのハッシュ関数も用意しておく。
[実施の形態3]
第2の実施の形態では、ゲートウェイGWが、自ら短縮型の符号化テーブルを生成する例を示したが、各ノードで自律的に短縮型の符号化テーブルを生成するようにしても良い。
この場合のノードの構成例を図30に示す。図30に示すように、ノード200cは、テーブル生成部240cを追加した構成となっているが、通信処理部210cについても処理内容が異なり、データ格納部220cについても格納するデータが異なる。
なお、ゲートウェイGWの構成は第1の実施の形態と同様である。
次に、本実施の形態における符号化テーブルの配布処理について図31を用いて説明する。
ゲートウェイGWは、第1の実施の形態のようにマスタの符号化テーブル(図2)を生成して、子ノードにこの符号化テーブルを送信する(図31:ステップS201)。
これに対して、各ノード200cの通信処理部210cは、ゲートウェイGW又は他のノード200cから符号化テーブルを受信すると、データ格納部220cに格納する(ステップS205)。そして、通信処理部210cは、子ノードが存在するか否かを判断する(ステップS205)。子ノードが存在しない場合には、処理を終了する。
一方、子ノードが存在する場合には、通信処理部210cは、テーブル生成部240cに指示して、テーブル生成部240cは、通信ログ等から配下のノードを特定する(ステップS207)。通信ログ等については、通信処理部210cが、他のデータ通信の記録(例えば上流向けの送信データの送信元ノード識別子)を例えばデータ格納部220cに格納しておく。
そして、テーブル生成部240cは、自ノード及び特定されたノードについてのリンクの識別子を含む短縮型符号化テーブルを生成し、データ格納部220cに格納する(ステップS209)。上でも述べたように、受信した符号化テーブルに含まれるリンクの識別子をそのまま使用する場合もあれば、識別子も短縮する場合もある。
そして、通信処理部210cは、生成された短縮型の符号化テーブルを、子ノードに送信する(ステップS211)。子ノードが複数あれば、各子ノードに送信する。
そして処理は、子ノードにおいてステップS203から開始される。
以上のような処理を行えば、おおよそ第2の実施の形態と同様の符号化テーブルが配布されるようになる。なお、各ノードにおいて、通信ログ等のデータに基づき符号化テーブルが生成されるので、その時の状況に応じた符号化テーブルを生成できるようになる。
なお、符号化データを生成する場合には、第2の実施の形態と同様の処理を実行すればよい。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、処理フローについては、処理結果が変わらない限り、実行順番を入れ替えたり、複数のステップを並列実行させるようにしても良い。
さらに、機能ブロック図は一例であって、プログラムモジュール構成とは一致しない場合がある。
また、第2の実施の形態で述べたエラー通知の部分については、他の構成を採用するようにしても良い。エラー通知をゲートウェイGW宛に集中させて、ゲートウェイGWにおいて、最もツリーの根元に近いノードを特定して、当該ノード以下のノードについて第1の実施の形態を実施するようにしても良い。
なお、ゲートウェイGW及び各ノードは、コンピュータ装置であって、図32に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る符号処理方法は、(A)複数のノードを含むネットワークにおける親ノードから、ノード間のリンクの識別子についてのリンクデータ(例えば符号化テーブル)を受信し、(B)ネットワークにおける子ノードから、自ノードまでのリンクの識別子から生成され且つ当該自ノードまでのリンクの識別子を復元可能に符号化された第1のデータを受信すると、リンクデータに含まれる、当該自ノードの親ノードとのリンクの識別子をさらに復元可能に符号化された第2のデータを生成し、(C)第2のデータを、親ノードに送信する処理を含む。
ノード間のリンクの識別子についてのリンクデータを用いることで、管理装置から離れたノードについてもリンクのデータを取得することができ、ネットワークのトポロジ推定が可能となる。
また、上記符号処理方法は、(D)自ノードが、ネットワークにおける最下位ノードであれば、リンクデータに含まれる、自ノードの親ノードとのリンクの識別子から、当該識別子を復元可能に符号化された第3のデータを生成し、(E)第3のデータを、親ノードに送信する処理をさらに含むようにしても良い。このように最下位ノード(最下流ともツリーの葉ノードとも呼ぶ)から上位ノードに向けて、リンクの通知を開始するものである。
さらに、上で述べた符号処理方法は、リンクデータのうち、少なくともネットワークにおける子ノードに関連するリンクデータを当該子ノードに送信する処理をさらに含むようにしても良い。各ノードで同じリンクデータを用いるようにしても良いし、以下で述べるように関連する部分のみを抽出するようにしても良い。
また、上で述べたリンクデータが、親ノードが共通するノードのグループ毎に生成されている場合には、上で述べたリンクデータを当該子ノードに送信する処理において、自ノードの親ノードに関連するリンクデータを抽出して、抽出されなかったリンクデータを、子ノードに送信するようにしても良い。親ノードに関連するリンクデータは、自ノードの子ノードでは用いられないためである。
さらに、上で述べた符号処理方法は、リンクデータから、自ノードを介して通信を行う配下のノードについてのリンクデータを生成し、ネットワークにおける子ノードに送信する処理をさらに含むようにしても良い。管理装置でリンクデータを用意するのではなく、各ノードで、下位のノードで用いられるリンクデータを生成するようにしても良い。
本実施の形態に係る生成方法は、(A)ネットワークに含まれるノード間のリンクの識別子についてのリンクデータを生成する処理と、(B)ネットワークにおけるノードのトポロジデータから、親ノードが共通し且つネットワークにおける最上位ノードからのホップ数が同じノード及び当該ノードの配下のノードを抽出する抽出処理と、(C)親ノードが共通し且つネットワークにおける最上位ノードからのホップ数が同じノードのためのリンクデータとして、抽出されたノード間のリンクの識別子についてのリンクデータを生成する生成処理と、(D)抽出処理と生成処理とを、トポロジデータの最下位ノードについてのリンクデータを生成するまで繰り返す処理とを含む。
このようにすればネットワーク全体を流れるリンクデータの量を削減できるようになる。
なお、上で述べたような処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のノードを含むネットワークにおける親ノードから、ノード間のリンクの識別子についてのリンクデータを受信し、
前記ネットワークにおける子ノードから、自ノードまでのリンクの識別子から生成され且つ当該自ノードまでのリンクの識別子を復元可能に符号化された第1のデータを受信すると、前記リンクデータに含まれる、当該自ノードの親ノードとのリンクの識別子をさらに復元可能に符号化された第2のデータを生成し、
前記第2のデータを、前記親ノードに送信する
処理を、前記自ノードであるコンピュータに実行させるためのプログラム。
(付記2)
前記自ノードが、前記ネットワークにおける最下位ノードであれば、前記リンクデータに含まれる、前記自ノードの親ノードとのリンクの識別子から、当該識別子を復元可能に符号化された第3のデータを生成し、
前記第3のデータを、前記親ノードに送信する
処理をさらに前記コンピュータに実行させる付記1記載のプログラム。
(付記3)
前記リンクデータのうち、少なくとも前記ネットワークにおける子ノードに関連するリンクデータを当該子ノードに送信する
処理をさらに前記コンピュータに実行させる付記1又は2記載のプログラム。
(付記4)
前記リンクデータが、親ノードが共通するノードのグループ毎に生成されている場合には、前記リンクデータを当該子ノードに送信する処理において、前記自ノードの親ノードに関連するリンクデータを抽出して、抽出されなかったリンクデータを、前記子ノードに送信する
付記3記載のプログラム。
(付記5)
前記リンクデータから、前記自ノードを介して通信を行う配下のノードについてのリンクデータを生成し、前記ネットワークにおける子ノードに送信する
処理をさらに前記コンピュータに実行させる付記1又は2記載のプログラム。
(付記6)
ネットワークに含まれるノード間のリンクの識別子についてのリンクデータを生成する処理と、
前記ネットワークにおけるノードのトポロジデータから、親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノード及び当該ノードの配下のノードを抽出する抽出処理と、
前記親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノードのためのリンクデータとして、抽出されたノード間のリンクの識別子についてのリンクデータを生成する生成処理と、
前記抽出処理と前記生成処理とを、前記トポロジデータの最下位ノードについてのリンクデータを生成するまで繰り返す処理と、
を、コンピュータに実行させるためのプログラム。
(付記7)
複数のノードを含むネットワークにおける親ノードから、ノード間のリンクの識別子についてのリンクデータを受信し、
前記ネットワークにおける子ノードから、自ノードまでのリンクの識別子から生成され且つ当該自ノードまでのリンクの識別子を復元可能に符号化された第1のデータを受信すると、前記リンクデータに含まれる、当該自ノードの親ノードとのリンクの識別子をさらに復元可能に符号化された第2のデータを生成し、
前記第2のデータを、前記親ノードに送信する
処理を含み、前記自ノードであるコンピュータにより実行される符号処理方法。
(付記8)
複数のノードを含むネットワークにおける親ノードから、ノード間のリンクの識別子についてのリンクデータを受信する通信部と、
前記ネットワークにおける子ノードから、自ノードまでのリンクの識別子から生成され且つ当該自ノードまでのリンクの識別子を復元可能に符号化された第1のデータを受信すると、前記リンクデータに含まれる、当該自ノードの親ノードとのリンクの識別子をさらに復元可能に符号化された第2のデータを生成する生成部と、
を有し、
前記通信部は、前記第2のデータを、前記親ノードに送信する
情報処理装置。
(付記9)
ネットワークに含まれるノード間のリンクの識別子についてのリンクデータを生成する処理と、
前記ネットワークにおけるノードのトポロジデータから、親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノード及び当該ノードの配下のノードを抽出する抽出処理と、
前記親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノードのためのリンクデータとして、抽出されたノード間のリンクの識別子についてのリンクデータを生成する生成処理と、
前記抽出処理と前記生成処理とを、前記トポロジデータの最下位ノードについてのリンクデータを生成するまで繰り返す処理と、
を含み、コンピュータにより実行される生成方法。
(付記10)
ネットワークに含まれるノード間のリンクの識別子についてのリンクデータを生成する処理と、
前記ネットワークにおけるノードのトポロジデータから、親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノード及び当該ノードの配下のノードを抽出する処理と、
前記親ノードが共通し且つ前記ネットワークにおける最上位ノードからのホップ数が同じノードのためのリンクデータとして、抽出されたノード間のリンクの識別子についてのリンクデータを生成する生成処理と、
前記抽出処理と前記生成処理とを、前記トポロジデータの最下位ノードについてのリンクデータを生成するまで繰り返す処理とを実行する生成部と、
生成された前記リンクデータを、子ノードに送信する送信部と、
を有する情報処理装置。