説明

ネットワークシステム、ノード、パケット転送方法およびそのプログラム

【課題】オーバーレイツリートポロジにおいて確保すべきアドレス数を低減し、新規ノードが論理ネットワークに参加する際の制限を緩和する。
【解決手段】サービスごとの論理ネットワークをツリートポロジで構成し、その論理ネットワークを1以上のサブツリーからなるエリアに分割する。そして、そのエリア内のノードへのアドレッシングは、エリア内ごとに設定された最大階層数Lmと、そのエリアの階層dごとに設定された最大子ノード数Rmとを用いて行う。また、そのエリア同士もツリー構造で構成し、各エリアのエリア番号は、最大エリア階層数Aarea_Lmと、エリア階層Aarea_dごとに設定された最大子エリア数Aarea_Rmを用いてアドレッシングを行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークアーキテクチャに関する技術である。
【背景技術】
【0002】
従来、ネットワークにより提供されるサービス単位でトポロジを構成するネットワーク構成方法がある(非特許文献1参照)。この方法では、トポロジをツリー構造で構築し、予め定められたツリーの階層数と、そのツリーにおける親ノード1つあたりの子ノード数をもとに、このトポロジ内の各ノードにアドレス番号を付与する。この方法によれば、各ノード(例えば、ルータ)は、受信したパケットのアドレス番号の大小をもとに、そのパケットを親ノード側に転送すればよいか、子ノード側に転送すればよいかを判断し、また子ノード側に転送する場合、どの子ノードに転送すればよいをかを判断できる。つまり、各ノードの宛先のエントリ数をできるだけ少なくできるので、ノードの持つべきルーチングテーブルの情報量を削減し、ルーチング処理の負荷を軽減できる。なお、このように、サービス単位で別個のネットワークトポロジをツリー構造で構築したものをオーバーレイツリートポロジと呼ぶ。
【0003】
ここで、図12を用いて、前記した方法による、オーバーレイツリートポロジの詳細を説明する。オーバーレイツリーポロジは、例えば、大きく2種類のパラメータでツリーの形状を決定する。1つは、ツリーの最大ツリー階層数Lmであり、もう1つは、d階層の1ルータ(1ノード)当たりの子ノード数Rmである。これらの値から、d+1階層のルータ(ノード)以下の総ルータ数Cskip(d)を算出し、各ノードのアドレッシング(アドレス番号の付与)を行う。なお、Cskip(d)の値は、図12の吹き出し部分に示される式により計算される。
【0004】
このオーバーレイツリーポロジ上に配置される各ノードは、図12に示すようなルーチングテーブルを保持する。このルーチングテーブルには、自身のアドレス(My addr)や自身の階層数(My Depth)等の所属情報、ツリーのルートノードのアドレス(root addr)や、ツリーの階層数(Lm)、階層毎の子ノード数Rm等の構成情報、自身のノードの親ノード(Parent addr)や子ノード(Child addr)等の隣接ノードの情報を示す隣接エントリ情報を含む。そして、ノードは、このルーチングテーブルと、Cskip(d)の値とから、パケットの宛先アドレスが自身の親ノード側に存在するか、子ノード側に存在するかを判断し、ネクストホップ(次にパケットを転送すべきノード)を決定することが可能となる。つまり、ノードは、宛先アドレスに対するエントリ数を保持せずとも、宛先アドレスでネクストホップを決定できる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】磯貝彰則、小島久史、 井上一郎、塩本公平、” 多数サービスをスケーラブルに収容するネットワーク仮想化技術に関する検討”2008年 ソサイエティ大会
【発明の概要】
【発明が解決しようとする課題】
【0006】
このようなオーバーレイツリートポロジにおいて、特定のサブツリー以下に多数のノードが存在する場合、事前に確保が必要なアドレス数が増大する。つまり、非特許文献1に記載の技術において、各ノードのアドレスは、そのツリーの最も深い階層までの階層数と、1つのノードの子ノード数の最大値を見越して決める必要がある。よって、例えば、図13に示すように、サブツリーごとに階層の深さの偏りがある場合でも、ツリーのアドレスは階層数と子ノード数を基準に決定する必要がある。つまり、ノードの存在の有無に関わらず、アドレスの確保は必要なので、実際には使用されないアドレス空間(未使用のアドレス空間)が大量に発生する。図13に示した例でいうと、6〜1001、1004〜2001、2005〜3001等のアドレスが未使用アドレスとなる。
【0007】
このような未使用アドレスが大量に発生するという現象は、同じ階層におけるノード間での子ノード数の数に偏りがある場合にも、発生しうる。このようにネットワークのノードに対し、未使用アドレスが大量に発生するようなアドレッシングを行うと、極めて大きな値(大きな桁数)のアドレスを持つノードが現れる可能性が高くなる。よって、各ノードは、ルーチング処理時に、このように極めて大きな値(大きな桁数)のアドレスを処理する可能性も高くなり、ルーチング処理の負荷が高くなるという問題がある。
【0008】
さらに、前記したサービスにおけるノードの追加や削除、トラヒック量の増減が発生すると、オーバーレイツリートポロジへの新たなノードの参加および既存のノードの離脱等も必要となる。ここで、オーバーレイツリートポロジへの新たなノードを接続する場合、ノードの数が集中しているサブツリー周辺では最大ツリー階層数Lmや最大子ノード数Rmによる制限があるため、所望する位置に接続できないという問題がある。
【0009】
例えば、図14に示すように、オーバーレイツリートポロジにおいて、最大ツリー階層数Lm=5、最大子ノード数Rm=3という制限がある場合を考える。つまり、子ノード数は3台までという制限がある場合を考える。この場合、新規参加ノードは、この階層Lm=5のノードA,Bのいずれかのノードの子ノードとして接続したくても、これらのノードには、既に3台の子ノードが接続されているので、ノードA,Bの子ノードとして接続できない。従って、この場合、新規参加ノードは、別の階層のノードの子ノードとして接続しなければならない等、必ずしも最適な位置(または、ネットワークの管理者が所望する位置)に接続できないことがある。
【0010】
本発明は、前記課題を解決し、オーバーレイツリートポロジにおいて確保すべきアドレス数を低減し、新規ノードが論理ネットワークに参加する場合の制限を緩和することを目的とする。
【課題を解決するための手段】
【0011】
前記した課題を解決するため、本発明は、1以上のサービスのパケットを転送するネットワークシステムを、当該サービスのパケットを転送する1以上の論理ネットワークに分け、その論理ネットワークをツリー型トポロジとして構成し、当該論理ネットワークを1以上のサブツリーからなるエリアに分割する場合において、そのエリアにおけるツリーの最大ツリー階層数Lmと、そのツリーの第d階層の1つのノードが保持可能な最大子ノード数Rmとをもとに、そのエリア内のツリーにおける第d+1階層におけるn番目に参加する子ノードの当該エリア内におけるアドレスAnが、以下の式(1)により定義されるノードを備えるネットワークシステムであって、
An=Aparent+Cskip(d)×(n−1)+1…式(1)
但し、
d=Lmの場合
Cskip(d)=0
0≦d≦Lm−1の場合
Cskip(d)=(Cskip(d+1)×Rmd+1)+1
Aparent:当該エリアのツリーにおける自身のノードの親ノードのアドレス
Cskip(d):当該エリアのツリーの第d+1階層の1つのノード以下に存在するノード数
d:当該エリアのツリーにおける自身のノードの属する階層
Lm:当該エリアのツリーの最大ツリー階層数
Rm:当該エリアのツリーの第d階層の1つのノードが保持可能な最大子ノード数
当該論理ネットワークにおいて、当該論理ネットワークにおける最大エリア階層数Area_Lmと、その論理ネットワークの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数Aarea_Rmとをもとに、その論理ネットワークにおける第Aarea_d+1階層におけるm番目に参加するエリアのエリア番号Aareaが、以下の式(2)により定義されることを特徴とするネットワークシステムとした。
Aarea=Aarea_parent+Cskip(Aarea_d)×(m−1)+1…式(2)
但し、
Aarea_d=Aarea_Lmの場合
Cskip(Aarea_d)=0
Aarea_d≦Aarea_Lm−1の場合
Cskip(Aarea_d)=(Cskip(Aarea_d+1)×Aarea_Rmd+1)+1
Aarea_parent:当該論理ネットワークにおける当該エリアの親エリアのアドレス
Cskip(Aarea_d):当該論理ネットワークの第Aarea_d+1階層の1つのエリア以下に存在する子エリア数
Aarea_d:当該論理ネットワークにおける自エリアの属する階層
Aarea_Lm:当該論理ネットワークの最大エリア階層数
Aarea_Rm:当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数
【0012】
また、このネットワークシステムにおけるノードは、(1)論理ネットワークそれぞれに割り当てられたアドレス空間を示した論理ネットワーク情報と、(2)論理ネットワークにおいて自身のノードの属するエリアのエリア番号Aareaと、当該論理ネットワークにおいて当該エリアの属する階層Aarea_dと、当該論理ネットワークにおける最大エリア階層数Area_Lmおよび1つのエリアが保持可能な最大子エリア数Aarea_Rmと、当該エリアの親エリアAarea_parentおよび子エリアAarea_childとを示したエリア構造テーブルと、(3)当該エリアに隣接する隣接エリアごとに、その隣接エリアへ接続するエリア境界ノードを示したエリア境界ノード情報テーブルと、(4)当該エリアにおける自身のノードのアドレスA、自身のノードの属する階層d、最大ツリー階層数Lmおよび最大子ノード数Rm、自身のノードの親ノードのアドレスAparentおよび子ノードのAchildとを示したエリア内テーブルとを記憶する記憶部と、当該パケットの宛先ノードの属するエリア番号を含むアドレスが付されたパケットの入出力を司るネットワークインタフェース部と、論理ネットワーク情報と、ネットワークインタフェース部経由で入力されたパケットの宛先アドレスに含まれる宛先ノードの属するエリアのエリア番号を参照して、宛先ノードが自身のノードの属するエリアのノードか否かを判断するエリア判定部と、(A)宛先ノードが、自身のノードの属するエリアのノードであったとき、エリア内テーブルと自身のノードのアドレスAと、アドレスに含まれるエリア内でのアドレスDとを参照して、その宛先ノードに転送する際のネクストホップノードのアドレスNexthop addrを、以下の式(3)または式(4)により決定するネクストホップ決定部と、
A<D<A+Cskip(d−1)の場合、Nexthop addr=A+1+Floor[(D−(A+1))/Cskip(d)]×Cskip(d)…式(3)
A<D<A+Cskip(d−1)ではない場合、Nexthop addr=Aparent…式(4)
決定されたアドレスNexthop addrを持つノードへ入力されたパケットをネットワークインタフェース部経由で転送するパケット転送部と、
(B)宛先ノードが、自身のノードの属するエリアのノードではなかったとき、その宛先ノードに転送する際のネクストエリアを、エリア構造テーブルを参照して、以下の式(5)または式(6)により決定するネクストエリア決定部と、
Aarea<宛先エリアのエリア番号<Aarea+Cskip(Aarea_d−1)の場合、ネクストエリア=Aarea+1+Floor[(エリア番号−(Aarea+1))/Cskip(Aarea_d)]×Cskip(Aarea_d)…式(5)
Aarea_d<宛先エリアのエリア番号<Aarea_d+Cskip(Aarea_d−1)ではない場合、ネクストホップエリア=Aarea_parent…式(6)
エリア構造テーブルを参照して、決定したネクストエリアへ接続するエリア境界ノードのアドレスを特定するエリア境界ノード特定部とを備え、ネクストホップ決定部は、特定したエリア境界ノードのアドレスを宛先アドレスとしたときのネクストホップへのアドレスNexthop addrを決定し、パケット転送部は、決定したアドレスNexthop addrを持つノードへ、入力されたパケットを転送することを特徴とする。
【0013】
このようにすることで、ネットワークの各ノードは、サービスごとに用意された論理ネットワークに基づきパケットを転送する。また、この論理ネットワークにおいて、従来、論理ネットワーク全体を1つのツリートポロジとしていたが、その論理ネットワークを1以上のサブツリーからなる複数のエリアに分割する。つまり、論理ネットワークを分割したエリア同士の接続関係がツリー構造になり、かつ、エリア内のノード間の接続関係もツリー構造になる。これにより、ツリーの最大ツリー階層数Lmおよびツリーの第d階層の1つのノードが保持可能な最大子ノード数Rmを、エリアごとに設定可能になる。よって、オーバーレイツリートポロジに新規ノードが参加するときの制限を緩和することができ、新規ノードを最適な位置に接続しやすくなる。また、オーバーレイツリートポロジのサブツリー間で階層数やノード数の偏りがあった場合でも、エリアごとにツリーの構造を変化させて対応できるので、事前に確保が必要なアドレス数を削減できる。
【0014】
また、各エリア内のノードのアドレスは、ルートノードから、子ノード、孫ノードに行くに従い大きな値をとるように割り当てられる。つまり、パケットを受信したノードは、宛先アドレスと自身のノードのアドレスとを比較することで、ツリー型トポロジにおいてその宛先アドレスのノードが、自身のノードからみてルート方向(親ノードの方向)にあるのか、リーフ方向(子ノードの方向)にあるのかが分かる。従って、まず、パケットを受信したノードは、パケットの宛先アドレスと自身のアドレスとの比較により、ネクストホップノード(このパケットを転送先となるノード)は、ルート方向のノードか、リーフ方向のノードかを判断できる。ここで、ネクストホップノードがリーフの方向のノードであると判断した場合、自身のノードにリーフ方向のノード(子ノード)が複数ある場合もある。この場合、このノードの子ノードの1つは、この自身のノードのアドレスに1を足した値であり、他の子ノードのアドレスは、このアドレスにCskip(d)で計算される値が加算された値が割り当てられる(例えば、あるノードのn番目の子ノードのアドレスは、このアドレスにCskip(d)×nが加算された値となる)ので、ノードは、フロア関数によりFloor[(D−(A+1))/Cskip(d)]を計算して、パケットの宛先アドレスにつながるノードは、このノードの第何番目の子ノードかを特定できる。そして、ノードは、その特定した子ノードへパケット転送する。各ノードがこのような転送処理を行うことで、パケットはエリア内のツリー型トポロジのノード間を転送され、所定の宛先アドレスのノードに到達することができる。
【0015】
なお、このような各ノードへのアドレス割り当てに用いられるCskip(d)は、0≦d≦Lm−1の場合、Cskip(d)=(Cskip(d+1)×Rmd+1)+1という式に基づき計算される。これより、エリア内のツリー型トポロジの階層ごとに最大子ノード数が異なる場合、その階層ごとの最大子ノード数Rmを考慮して、無駄のないアドレスの割り当てを実現している。つまり、エリア内のツリー型トポロジの階層ごとに最大子ノード数が異なる場合に、その階層ごとの最大子ノード数Rmを考慮し、実際には割り当てられないことが明らかなアドレスについては、これを省いてアドレスが割り当てられている。これにより、エリア内で事前に確保が必要なアドレス数を低減できる。
【0016】
また、この論理ネットワークにおける各エリアのエリア番号についても、前記したノードのアドレスと同様に、ルートエリアから、子エリア、孫エリアに行くに従い大きな値をとるように割り当てられる。つまり、パケットを受信したノードは、宛先エリアのエリア番号と自エリアのエリア番号とを比較することで、ツリー型トポロジにおいてその宛先エリアに到達するためのネクストエリアへは、自エリアからみてルート方向(親ノードの方向)にあるのか、リーフ方向(子ノードの方向)にあるのかが分かる。このような転送処理を各エリアのノードが行うことで、パケットはツリー型トポロジのエリア間を転送され、所定のエリアのノードに到達することができる。なお、各ノードは、自エリアに隣接するエリアごとに、そのエリアへ接続するためのエリア境界ノードのアドレスを示したエリア境界ノード情報を記憶する。これにより各ノードは、このネクストエリアにパケットを到達させるためには、自エリア内のどのノード目指してパケットを転送すればよいかが分かる。つまり、ネクストホップ決定部が、この特定したエリア境界ノードのアドレスを宛先アドレスとしたときのネクストホップを求めることで、このネクストエリアにパケットを到達させるためのネクストホップが分かる。
【0017】
なお、このツリー型トポロジのエリアで、各階層ごとに最大子エリア数が異なる場合、その階層ごとの最大子エリア数Aarea_Rmを考慮し、実際には割り当てられないことが明らかなエリア番号については、これを省いてアドレスが割り当てられる。これにより、論理ネットワーク内で事前に確保が必要なエリア番号の数も低減できる。
【0018】
また、本発明は、エリア内のツリーのすべての階層で当該階層の子ノード数Rmが等しいとき、式(1)におけるCskip(d)は、
Rm=1の場合
Cskip(d)=Lm−d
Rm=1ではない場合
Cskip(d)=(1−RmLm−d)/(1−Rm)
とする。
【0019】
このようにすることで、オーバーレイツリートポロジにおいて、各階層の子ノード数が同じ場合、Cskip(d)の計算を簡単に行うことができる。
【0020】
また、本発明は、論理ネットワーク内のすべてのエリアの階層で当該階層の子エリア数Aarea_Rmが等しいとき、
式(1)におけるCskip(Aarea_d)は、
Aarea_Rm=1の場合
Cskip(Aarea_d)=Lm−d
Aarea_Rm=1ではない場合
Cskip(Aarea_d)=(1−Aarea_dAarea_Lm−Aarea_d)/(1−Aarea_Rm)
とする。
【0021】
このようにすることで、オーバーレイツリートポロジの各階層の子エリア数が同じ場合、Cskip(Aarea_d)の計算を簡単に行うことができる。
【0022】
また、本発明は、請求項5に記載のパケット転送方法を、ネットワークシステム内のノードであるコンピュータに実行させるためのプログラムとした。
【0023】
このようなプログラムによれば、一般的なコンピュータに、請求項5に記載のパケット転送方法を実行させることができる。
【発明の効果】
【0024】
本発明によれば、オーバーレイツリートポロジにおいて確保すべきアドレス数を低減し、新規ノードがオーバーレイツリートポロジに参加する場合の制限を緩和できる。
【図面の簡単な説明】
【0025】
【図1】本実施の形態のノードを含むシステムを例示した図である。
【図2】本実施の形態の論理ネットワークを例示した図である。
【図3】本実施の形態のノードの構成を示すブロック図である。
【図4】本実施の形態のCskip(d)の計算式を示した図である。
【図5】図4に示す計算式により求められたCskip(d)によりアドレッシングされたツリー型トポロジを例示した図である。
【図6】図3のルーチングテーブルを例示した図である。
【図7】図6のルーチングテーブルの示すエリア構成を例示した図である。
【図8】図3のノードのパケット転送処理手順を示したフローチャートである。
【図9】図3のネクストホップ決定処理の詳細を示したフローチャートである。
【図10】図3のネクストエリア決定処理の詳細を示したフローチャートである。
【図11】本実施の形態のCskip(Aarea_d)の計算式を示した図である。
【図12】比較例のオーバーレイツリートポロジを示した図である。
【図13】比較例のオーバーレイツリートポロジを示した図である。
【図14】比較例のオーバーレイツリートポロジを示した図である。
【発明を実施するための形態】
【0026】
以下、本発明を実施するための形態(以下、実施の形態とする)について説明する。
【0027】
<概要>
以下、本発明を実施するための最良の形態(以下、実施の形態という)について説明する。まず、本実施の形態のノードを含むネットワークシステムの概要を、図1を用いて説明する。ネットワークシステムは、例えば、図1に示すように、バックボーンネットワーク1と、そのバックボーンネットワーク1により接続されるサービスネットワーク2,3を含んで構成される。
【0028】
バックボーンネットワーク1は、複数のノード10を含んで構成される。なお、このバックボーンネットワーク1のノード10は、サービスネットワーク2,3との境目に設置される境界ノードと、その境界ノード間を接続する中継ノードとを含んで構成される。各ノード10は、例えば、ルータやスイッチである。サービスネットワーク2,3にはサービスを提供するサーバ21と、そのサーバから提供されるサービスを利用するクライアント31とを含む。ここでは、サービスネットワーク2は、サービスAを提供するサーバ21Aと、サービスBを提供するサーバ21Bとを含み、サービスネットワーク3は、サービスAを利用する(つまり、サーバ21Aとデータ送受信を行う)クライアント31Aと、サービスBを利用する(つまり、サーバ21Bとデータ送受信を行う)クライアント31Bとを含む。つまり、境界ノードであるノード10(10A,10B)間にはサービスA,B両方のトラヒックが流れることになる。
【0029】
ここで、このバックボーンネットワーク1内において、サービスAのルーチング経路と、サービスBのルーチング経路とを分けるために、サービスごとに論理ネットワークを用意する。例えば、図1に示すように、サービスAについて論理ネットワークAという論理ネットワークを用意し、サービスBについては論理ネットワークBという論理ネットワークを用意する。そして、各論理ネットワークを構成するノードにアドレッシング(アドレスの割り当て)を行う。このときのアドレッシングは以下のように行う。まず、各サービスの論理ネットワークが利用するアドレス空間を、論理ネットワークごとに重複しないように割り当てる。例えば、サービスAについて割り当てアドレス空間「0101〜0909」を割り当てたならば、サービスBについて割り当てアドレス空間について「10010〜1909」を割り当てる。
【0030】
この割り当てアドレス空間の大きさや、各ノードのアドレスの割り当て方法は、各論理ネットワークに含まれるノード10の数やトポロジの構成方法による。このようにサービスごとに重複のないアドレス空間の割り当てを行うことで、当該アドレスのノード10がどのサービスの論理ネットワークに属するかを識別することができる。ここで、サービスごとに用意される論理ネットワークは、例えば、ツリー型トポロジで構成され、各ノード10はルーチングテーブル131(後記)を参照し、このツリー型トポロジを前提としたルーチングを行う。よって、ノード10は、ルーチングテーブル131にパケットの宛先アドレスごとのエントリを用意する必要がなくなる。
【0031】
次に、図2を用いて、前記した論理ネットワークの構成例を説明する。論理ネットワークNは、図2に例示するように複数のエリア(エリア1〜7)から構成される。このエリアはそれぞれ、オーバーレイツリートポロジの一部のツリー(サブツリー)を含む。また、この論理ネットワークNにおける、エリア自体のトポロジもツリー構造とする。つまり、エリア同士はツリー状に接続される。
【0032】
このエリアの構造は、
Aarea_Lm:当該論理ネットワークの最大エリア階層数
Aarea_Rm:当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数
により定義される。
【0033】
例えば、論理ネットワークNは、エリア階層Aarea_Lm=2であり、0階層目の子エリア数Aarea_Rm=2、1階層目の子エリア数Aarea_Rm=2である場合、図2に示すようなエリア構造となる。このエリアの構造に関する定義情報は、ノード内のエリア構造テーブル133(後記)に記憶される。各エリアのエリア番号は、Aarea_LmおよびAarea_Rmをもとに決定される(詳細は後記)。
【0034】
このエリア内のノード10の構造は、
Lm:当該エリアのノードの最大ツリー階層数
Rm:当該エリアの第d階層の1つのノードが保持可能な最大子エリア数
により定義される。
【0035】
例えば、エリア内階層Lm=1であり、このエリアの0階層目の子ノード数Rm=3である場合、図2のエリア2のような構造となる。このエリア内の構造に関する定義情報は、ノード内のエリア内テーブル132(後記)に記憶される。各エリア内におけるノード10のアドレスは、このLm、Rmをもとに決定される(詳細は後記)。
【0036】
なお、このエリア同士は、エリア境界ノードにより接続される。このエリア境界ノードには、そのエリア境界ノードの属するエリアごとに、そのエリアの構造から決定されたアドレスが付与される。そして、論理ネットワークの各ノードは、自エリアに隣接する外部エリアと、その外部エリアに接続するためのエリア境界ノードとの情報(外部エリア情報)をエリア境界ノード情報テーブル134(後記)に記憶する。例えば、図2のエリア6のノード「999」は、外部エリア情報として、隣接エリアがエリア5であり、このエリア5へ接続する自エリアのエリア境界ノードは「1」であるという情報を記憶する。
【0037】
なお、論理ネットワークの各ノード10のアドレスは、エリアのエリア番号と当該エリア内における自身のノードのアドレスとの組み合わせにより記述される。例えば、エリア4のノード「3」のアドレスは「エリア4,ノード3」というように記述される。ノード間のパケットの転送は、このアドレスをもとに行われる。すなわち、ノード10はそれぞれ、パケットの宛先アドレスに含まれるエリア番号から、そのパケットが自エリア宛か否かを判断し、自エリア宛であれば、その宛先アドレスに含まれる自エリア内のアドレスを用いてルーティングを行う。一方、他エリア宛であれば、ノード10は、エリア構造テーブル132およびエリア境界ノード情報テーブル134を参照して、どのエリアに転送すべきか、また、そのエリアに接続するエリア境界ノードはどれかを特定し、この特定したエリア境界ノードへパケットを転送する。各ノード10が、このような処理を繰り返すことで、パケットは宛先アドレスに示されるノードに到達する。
【0038】
なお、各エリア内のアドレスおよび各エリアのエリア番号は、ルート側から、子方向に行くに従い、大きな値をとるように割り当てられる。つまり、パケットを受信したノードは、宛先アドレスのエリア内のアドレスやエリア番号と、自身のノードのエリア内のアドレスやエリア番号とを比較することで、ツリー型トポロジにおいてその宛先が、ルート方向(親方向)にあるのか、リーフ方向(子方向)にあるのかを判断できる。よって、各ノード10のルーチング処理負荷を軽減できる。
【0039】
また、このように論理ネットワークを複数のエリアに分割し、そのエリアごとにLm、Rmが設定可能となるので、新規ノードが接続するとき、様々な箇所を選択可能となり、確保すべきアドレス数を低減できる。さらに、論理ネットワークのエリア階層(Aarea_d)ごとに子エリア最大値(Aarea_Rm)を設定可能なので、エリアの構造自体も自由度が高いものとなる。
【0040】
<構成>
次に、図3を用いて、このようなバックボーンネットワーク1に用いられるノード10の構成を説明する。
【0041】
図3に示すように、ノード10は、他のノード10との間でパケットの入出力を行うためのネットワークインタフェース部11と、ネクストホップの決定等を行う処理部12と、この処理部12がネクストホップの決定を行うときに参照するルーチングテーブル131を記憶する記憶部13とを備える。
【0042】
なお、ネットワークインタフェース部11は、パケット等の入出力を行うためのインタフェースから構成される。また、処理部12は、このノード10が備えるCPU(Central Processing Unit)によるプログラム実行処理や、専用回路等により実現される。さらに、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、ノード10をプログラム実行処理により実現する場合、記憶部13には、このノード10の機能を実現するためのプログラムが格納される。
【0043】
処理部12は、データ受信部120と、トンネル処理部121と、エリア判定部122と、ネクストエリア決定部123と、エリア境界ノード特定部124と、ネクストホップ決定部125と、パケット転送部126と、割り当てアドレス算出部127とを含んで構成される。
【0044】
データ受信部120は、ネットワークインタフェース部11経由で受信したパケットの宛先アドレスを検出し、このパケットが自分宛のものか、それとも中継すべきか否かの判断を行う。なお、この宛先アドレスは、パケットの宛先ノードの属するエリアのエリア番号+エリア内でのアドレスの組み合わせにより記述される。そして、例えば、ノード10間で、アドレスのエリア番号を示すカラム(例えばアドレスの前半2桁)と、エリア内でのアドレスを示すカラム(例えばアドレスの後半2桁)とを予め決めておく。そして、ノード10がパケットの転送を行う際は、それぞれのカラムの値を参照することで、転送先のノード10を決定する。
【0045】
トンネル処理部121は、他のノード10との間のトンネルを確立する。また、トンネル確立後、ルーチングテーブル131にこの確立したトンネルに関するトンネル情報を書き込む。なお、このように、自身のノードが論理ネットワーク上でネクストホップとしたいノード10との間でトンネルを確立しておくことで、ノード10は、物理的にリンク接続された隣接ノード10を飛び越して、そのトンネルが確立されたノード10をネクストホップとしてパケットを転送することができる。
【0046】
エリア判定部122は、論理ネットワーク情報130(後記)と、受信したパケットの宛先アドレスとを参照して、宛先ノードの属する論理ネットワーク(例えば、図1の論理ネットワークA,B)を特定する。そして、この特定した論理ネットワークに関するエリア構造テーブル133と、このパケットの宛先アドレスに含まれるエリア番号とを参照して、パケットの宛先エリアが自ノードのエリアか否かを判断する。
【0047】
ネクストエリア決定部123は、エリア判定部122により、パケットの宛先ノードが、自エリアのノードではないと判断されたとき、その宛先ノードに転送する際のネクストエリアを、エリア構造テーブル133(後記)を参照して、決定する。このネクストエリアの決定処理の詳細は、後記する。
【0048】
エリア境界ノード特定部124は、ネクストエリア決定部123により決定されたネクストエリアへ接続するエリア境界ノードを、エリア境界ノード情報テーブル134(後記)を参照して特定する。
【0049】
ネクストホップ決定部125は、受信したパケットの宛先アドレスと、ルーチングテーブル131とを参照して、このパケットの転送先のノード10であるネクストホップノードの決定を行う。このときのネクストホップノードの決定処理の詳細は、具体例を用いて後記する。
【0050】
パケット転送部126は、ネクストホップ決定部125により決定されたネクストホップノード、または、エリア境界ノード特定部124により特定されたエリア境界ノードへ、パケットを転送する。なお、このパケット転送部126は、パケットを転送するとき、MPLS(Multi-Protocol Label Switching)によりパケットを転送してもよい。
【0051】
割り当てアドレス算出部127は、エリア内におけるノード10のアドレスおよび各エリアのエリア番号を計算する。ノード10のエリア内のアドレスは、Cskip(d)(第d+1階層の1つのノード以下に存在するノード数、つまり、第d+1階層のノードの子ノード同士のアドレスがどの程度離れているかを示す値)を計算することにより求められる。また、エリア番号も同様に、Cskip(Aarea_d)(第d+1階層の1つのエリア以下に存在するエリア数、つまり、第d+1階層のエリアの子エリア同士のアドレスがどの程度離れているかを示す値)を計算することにより求められる。この割り当てアドレス算出部127により行われる計算処理の詳細は、後記する。
【0052】
記憶部13は、論理ネットワーク情報130とルーチングテーブル131とを記憶する。この論理ネットワーク情報130は、論理ネットワークそれぞれに割り当てられたアドレス空間を示す情報である(表1参照)。
【0053】
【表1】

【0054】
ルーチングテーブル131は、このノード10が受信したパケットのルーチング(転送先の決定)を行うときに参照される情報である。このルーチングテーブル131は、自身のノードの属する論理ネットワークごとに用意され、エリア内テーブル132と、エリア構造テーブル133と、エリア境界ノード情報テーブル134とを備える。また、ここでは図示を省略しているが、ルーチングテーブル131は、自身のノードが、当該論理ネットワークの親ノード、子ノードとの間で確立されたトンネルについてのトンネル情報も含むものとする。このトンネル情報は、ノード10間でトンネルを用いてパケットを転送するときに用いられる情報である。
【0055】
ここで、図3を参照しつつ、図4および図5を用いて、割り当てアドレス算出部127による、各エリア内のノード10のアドレスの計算方法を説明する。ここでのアドレスの計算方法は、例えば、近距離無線通信に用いられる規格ZigBee(登録商標)(Zigbee Specification Document 053474r17 3.6.1.6章 p370〜372)を応用したものである。
【0056】
ここでのアドレスの計算には、2種類のパラメータが関与する。1つめのパラメータは、エリア内のトポロジをツリー型トポロジで考えたときの、最大ツリー階層数(ツリーの深さ)Lmである。この最大ツリー階層数Lmは、ツリーのルートの階層を「0(第0階層)」と考え、論理ネットワークごとに最大で何階層のツリー型トポロジを構成するかを定めるパラメータである。2つめのパラメータは、エリア内のツリーの1つのノード10が持つ最大子ノード数Rmである。この最大子ノード数Rmは、エリア内のツリーの全階層で同じ値をとるパターンと、異なる値をとるパターンの2つのパターンが適用できる(前者の最大子ノード数を、Rm、後者の第d階層の最大子ノード数を、Rmとする)。
【0057】
割り当てアドレス算出部127は、この最大ツリー階層数Lmと、最大子ノード数Rm(またはRm)を用い、図4に示した式(7)または式(8)を用いてエリア内のツリーの第d+1階層の1つのノード以下に存在するノード数を表すCskip(d)を計算する。そして、このCskip(d)を、以下の式(9)に代入することで、当該エリア内のツリーの第d+1階層においてn番目に参加するノードのアドレスAnを求めることができる。なお、Aparentは、n番目に参加するノードの親ノードとなるノードのアドレスである。
【0058】
An=Aparent+Cskip(d)×(n−1)+1…式(9)
【0059】
ここで、図5(a)を参照して、ツリーの全階層の子ノード数が同じ場合のアドレスの割り当ての具体例を説明する。最大ツリー階層数Lm=2、最大子ノード数Rm=2のツリーにおいて、図4の式(7)の計算式により、Cskip(0)を計算すると「3」が得られる。この値は、このツリーの第0階層の1つ下の階層(第1階層)の1つのノード以下に存在するノード数(自身のノードを含む)が「3」であることを示す。よって、ルートノードのアドレスを「0」とすると、まず、このルートノードの子ノードとして1番目に参加するノードのアドレスは「0+1=1」となる。また、このノード以下に存在するノード数は「3」なので、このルートノードの子ノードとして2番目に参加するノードのアドレスは「1+3=4」となる。
【0060】
同様に、Cskip(1)を計算すると「1」が得られる。よって、アドレス「1」のノードの子ノードとして、1番目に参加するノードのアドレスは「1+1=2」となる。また、このノード以下に存在するノード数は「1」(つまり自分自身のみ)なので、2番目に参加するノードのアドレスは「2+1=3」となる。また、同様にアドレス「4」のノードの子ノードとして1番目に参加するノードのアドレスは「4+1=5」となる。また、このノード以下に存在するノード数は「1」(つまり自分自身のみ)なので、子ノードとして2番目に参加するノードのアドレスは「5+1=6」となる。
【0061】
次に、図5(b)を用いて、ツリーの階層ごとに子ノード数が異なる場合のアドレスの割り当ての具体例を説明する。最大ツリー階層数Lm=3、最大子ノード数Rm=3、Rm=2、Rm=3、Rm=0のツリーにおいて、図4の式(8)の計算式により、Cskip(0)を計算すると「9」が得られる。よって、ルートノードのアドレスを「7」とすると、まず、このルートノードに1番目に参加するノードのアドレスは「7+1=8」となる。また、このノード以下に存在するノード数は「9」なので、このルートノードの子ノードとして2番目に参加するノードのアドレスは「8+9=17」となり、3番目に参加するノードのアドレスは「17+9=26」となる。
【0062】
同様に、Cskip(1)を計算すると「4」が計算される。よって、アドレス「8」のノードの子ノードとして1番目に参加するノードのアドレスは「8+1=9」となる。また、このノード以下に存在するノード数は「4」なので、アドレス「8」のノードの子ノードとして2番目に参加するノードのアドレスは「9+4=13」となる。また、同様にアドレス「17」のノードの子ノードとして1番目に参加するノードのアドレスは「17+1=18」となる。このような計算を、このサービスID「7」のツリーの第3層まで繰り返すと、図5(b)に示すようなアドレスの割り当てが行われる。
【0063】
図3の割り当てアドレス算出部127は、各エリア番号の計算も、前記したCskip(d)を用いた方法と同様に行う。つまり、論理ネットワークにおける第Aarea_d+1階層におけるm番目に参加するエリアのエリア番号Aareaは、以下の式(10)により計算される。
【0064】
Aarea=Aarea_parent+Cskip(Aarea_d)×(m−1)+1…式(10)
但し、
Aarea_d=Aarea_Lmの場合
Cskip(Aarea_d)=0
Aarea_d≦Aarea_Lm−1の場合
Cskip(Aarea_d)=(Cskip(Aarea_d+1)×Aarea_Rmd+1)+1
Aarea_parent:当該論理ネットワークにおける当該エリアの親エリアのエリア番号
Cskip(Aarea_d):当該論理ネットワークの第Aarea_d+1階層の1つのエリア以下に存在する子エリア数
Aarea_d:当該論理ネットワークにおける自エリアの属する階層
Aarea_Lm:当該論理ネットワークの最大エリア階層数
Aarea_Rm:当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数
【0065】
つまり、割り当てアドレス算出部127は、前記したdに代えて、Aarea_d(当該論理ネットワークにおける自エリアの属する階層)を用い、また、最大ツリー階層数Lmに代えて、Aarea_Lm(当該論理ネットワークの最大エリア階層数)を用い、最大子ノード数Rmに代えて、Aarea_Rm(当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数)を用いることで各エリア番号を計算できる。
【0066】
次に、図6を用いて、図3のエリア内テーブル132、エリア構造テーブル133およびエリア境界ノード情報テーブル134を説明する。なお、これらのテーブルは、事前に手動で設定してもよいし、ノード情報を管理するサーバから取得した情報をもとに設定してもよいし、ノード間で制御情報を交換することにより設定してもよい。
【0067】
図6に示すように、エリア内テーブル132は、エリア内のノード間のパケットのルーチングに用いられる情報である。このエリア内テーブル132は、所属情報、構成情報および隣接エントリ情報を備える。所属情報は、自身のノードの属するエリア(自エリア)における、自身のノードのアドレス(My addr)およびそのエリアにおける自身のノードの階層(My Depth)を示した情報である。構成情報は、自エリアにおけるルートノードのアドレス(root addr)、最大ツリー階層数Lm、最大子ノード数Rm(またはRm)を示した情報である。隣接エントリ情報は、自身のノードの親ノードのアドレス(Parent addr)および子ノードアドレス(Child addr1,2…,N)とを示した情報である。エリア内テーブル132は、ノードが受信したパケットの宛先アドレスに基づき、ネクストホップを決定するときに参照される。
【0068】
エリア構造テーブル133は、論理ネットワークのエリアのうち、どのエリアにパケットを転送するか判断するときに参照される情報である。このエリア構造テーブル133は、エリア所属情報、エリア構成情報および隣接エリア情報を記憶する。エリア所属情報は、論理ネットワークにおける自エリアのアドレス(My Area)および自エリアの階層(My Area Depth)を示した情報である。エリア構成情報は、論理ネットワークにおけるルートエリアのエリア番号(root Area)、最大エリア階層数Aarea_Lm、最大子エリア数Aarea_Rmを示した情報である。隣接エリア情報は、自エリアの親エリアのエリア番号(Parent Area)および子エリアのエリア番号(Child Area1,2,…,N)とを示した情報である。このエリア構造テーブル133は、ノード10がエリアをまたいでパケットを転送するときに、宛先エリアの方向(ルート方向かリーフ方向か)を決定する際に参照される。
【0069】
エリア境界ノード情報テーブル134は、自エリアに隣接する外部エリアごとに、その外部エリアと接続するエリア境界ノードを示した情報である。このエリア境界ノード情報テーブル134は、ノード10がエリアをまたいでパケットを転送するときに、自エリア内のどのノード(エリア境界ノード)にパケットを転送すればよいかを決定するときに参照される。なお、このエリア境界ノード情報テーブル134は、エリア境界ノードとなるノード10がエリア境界ノードであることを示すフラグを付したパケットを自エリア内にフラッディングしたものを、受信することにより設定してもよい。
【0070】
図6に例示したエリア内テーブル132によれば、例えば、図7に示すようなエリア内の構成が分かる。つまり、エリアにおける自身のノードのアドレスは「A」であり、このノードの自エリア内の階層は「1」、ルートノードのアドレスは「A」であり、最大ツリー階層数Lm=2、最大子ノード数Rm=3である。自身のノードの親アドレスは「A」であり、子ノードのアドレスは「A」…「A」であることが分かる。
【0071】
さらに、エリア構造テーブル133によれば、図7に示すように、自身のノードの属するエリアは「Aarea」であり、エリアの階層は「Aarea_d」であり、ルートエリアは「Aarea_parent」であることが分かる。また、自身のノードの属するエリアの親エリアは「Aarea_parent」であり、子エリアは「Aarea_child 1」、…、「Aarea_child N」であることが分かる。さらに、エリア境界ノード情報テーブル134から、隣接エリアは、「Aarea_parent」、「Aarea_child 1」…「Aarea_child N」であり、それぞれのエリアに接続するエリア境界ノードは「Addr A」、「Addr A」、…、「Addr A」であることが分かる。
【0072】
<転送手順>
次に、図8を用いて、ノード10のパケット転送手順を説明する。なお、各ノード10はトンネル処理部121により、各サービスの論理ネットワークにおいて隣接するノード10との間でトンネルを確立し、トンネル情報をルーチングテーブル131に書き込んでおくものとする。また、各ノード10は、自身のノードの属するサービスの論理ネットワーク情報130と、自エリア内における自身のノードのパラメータ情報(エリア内テーブル132)、自エリアのパラメータ情報(エリア構造テーブル133)および自エリアの外部エリアに関する情報(エリア境界ノード情報テーブル134)とを記憶部13に記憶しているものとする。
【0073】
まず、図3のノード10のデータ受信部120は、ネットワークインタフェース部11経由でパケットの入力を受け付けると(S1)、そのパケットの宛先アドレスを解析する(S2)。そして、エリア判定部122は、論理ネットワーク情報130と、パケットの宛先アドレスとを参照して、このパケットの宛先ノードの属するサービスとエリアとを特定する(S3)。つまり、エリア判定部122は、パケットの宛先アドレスから、この宛先アドレスがどの論理ネットワークのものかを特定し、さらに、この宛先アドレスが当該論理ネットワークのどのエリアに属するものかを特定する。
【0074】
ここで、エリア判定部122は、S1で受信したパケットが、自エリア宛のものであると判定し(S4のYes)、かつ、そのパケットが中継パケットでなければ(S5のNo)、つまり、自身のノード宛のパケットであれば、そのパケットを自身のノードで受信し(S6)、処理を終了する。一方、そのパケットが中継パケットであれば(S5のYes)、ネクストエリア決定部123は、自身のノードのエリア内でのアドレスAと、受信したパケットのエリア内でのアドレス、エリア内テーブル132に示されるLm(当該エリアのツリーの最大ツリー階層数)、Rm(当該エリアのツリーの第d階層の1つのノードが保持可能な最大子ノード数)とを用いて、このパケットの次の転送先であるネクストホップを決定する(S9)。ここでのネクストホップの決定処理の詳細は後記するが、ネクストホップ決定部125が、このパケットのエリア内でのアドレスが自身のノードからみてルート側か、リーフ側かを判断することにより行われる。
【0075】
そして、トンネル処理部121は、トンネル情報を参照して、このネクストホップのノード10への送信I/F(InterFace)とオーバーレイリンクを決定し(S10)、パケット転送部126は、この決定した送信I/Fとオーバーレイリンクとを用いて、パケットをネクストホップのノード10へ送信する(S11)。
【0076】
一方、S4においてエリア判定部122が、S1で受信したパケットが、自エリア宛ではないと判定したとき(S4のNo)、ネクストエリア決定部123は、自エリアのエリア番号Aareaと、自エリアの属する階層Aarea_dと、パケットの宛先アドレスに含まれるエリア番号と、エリア構造テーブル133に示されるAarea_Lmと、Aarea_Rmとから、ネクストエリアを決定する(S7)。つまり、ネクストエリア決定部123は、パケットの転送先となるネクストエリアを決定する。ここでのネクストエリアの決定処理の詳細は後記するが、ネクストエリア決定部123が、自エリアのエリア番号Aareaと、パケットの宛先アドレスに含まれるエリア番号と、エリア構造テーブル133に示される、Aarea_dと、Aarea_Lmと、Aarea_Rmとを参照して、自エリアからみて宛先ノードの属するエリアが、ルート側か、リーフ側かを判断することにより行われる。
【0077】
ネクストエリア決定部123がネクストエリアを決定すると、エリア境界ノード特定部124は、エリア境界ノード情報テーブル134を参照して、このネクストエリア所属のエリア境界ノードを特定する(S8)。例えば、ネクストエリアが、エリア境界ノード情報テーブル134(図6参照)に示される外部エリアのうち「Aarea_child1」である場合、このエリアに所属するエリア境界ノードとして「Addr A」を特定する。そして、ネクストホップ決定部125は、このエリア境界ノードに到達するためのネクストホップを決定するため、S9の処理を実行する。つまり、エリア境界ノード「Addr A」を宛先アドレスとして考えたとき、パケットがこのエリア境界ノードに到達するためのネクストホップを決定する。このようにすることで、パケットはエリア境界ノード経由で、ネクストエリアに転送される。
【0078】
論理ネットワーク内の各ノード10が以上のような処理を実行することで、パケットはアドレスに設定された宛先エリアに到達し、この宛先エリア内の宛先ノードに到達する。
【0079】
<ネクストホップ決定処理>
ここで、図9を用いて、図8におけるネクストホップの決定処理(S9)の詳細を説明する。まず、図3のネクストホップ決定部125は、割り当てアドレス算出部127へ、エリア内テーブル132に示される自身のノードの属する階層dと、Lm(自エリアのツリーの最大ツリー階層数)と、Rm(自エリアのツリーの第d階層の1つのノードが保持可能な最大子ノード数)とを、割り当てアドレス算出部127へ出力し、Cskip(d−1)の計算依頼を行う。これを受けて、割り当てアドレス算出部127は、Cskip(d−1)を計算する(S91)。このときのCskip(d−1)の計算は、図4に示す式(7)または式(8)に基づき行われる。
【0080】
次に、ネクストホップ決定部125は、この割り当てアドレス算出部127により計算されたCskip(d−1)の値と、自エリアにおける自身のノードのアドレスAとを用いて、パケットのエリア内での宛先アドレスDが、以下の式(11)に示す条件を満たすか否かを判断する(S92)。つまり、ネクストホップ決定部125は、宛先アドレスDのノードが、自身のノードからみてリーフ側にあるか、ルート側にあるかを判断する。
【0081】
A<D<A+Cskip(d−1)…式(11)
【0082】
ここで、ネクストホップ決定部125が、パケットの当該エリア内での宛先アドレスDは、式(11)に示す条件を満たすと判断したとき(S92のYes)、つまり、当該エリア内での宛先アドレスDのノードが、自身のノードからみてリーフ側にあると判断したとき、図4に示す式(7)または式(8)に基づき、Cskip(d)を計算する(S93)。そして、ネクストホップ決定部125は、以下の式(12)により、このパケットの転送先であるネクストホップのノード10のアドレスNexthop addrを求める(S94)。なお、Floor[ ]は、フロア関数であり、ここでは、(D−(A+1))/Cskip(d)で求めた値の小数点以下を切り下げた値とする。
【0083】
Nexthop addr=A+1+Floor[(D−(A+1))/Cskip(d)]×Cskip(d)…式(12)
【0084】
一方、ネクストホップ判定部125は、パケットのエリア内での宛先アドレスDが、式(11)に示す条件を満たさないとき(S92のNo)、Nexthop addr=Aparentとする(S95)。つまり、ネクストホップ決定部125は、宛先アドレスDが式(11)を満たさないときは、この宛先アドレスDのノードは、自身のノードからみてルート側にあると判断できるので、自身のノードの親ノード(Aparent)をネクストホップとする。
【0085】
このようにノード10は、エリア内における自身のノードのアドレスAおよび階層d、最大ツリー階層数Lm、最大子ノード数Rm(またはRm)等を参照することで、パケットの転送先であるネクストホップを知ることができる。
【0086】
なお、S92において、ネクストホップ決定部125がパケットのエリア内での宛先アドレスDは、式(11)に示す条件を満たすと判断したとき(S92のYes)、つまり、エリア内での宛先アドレスDのノードが、自身のノードからみてリーフ側にあると判断した場合であって、自身のノードの子ノード(エリア内テーブル132の隣接エントリ情報に示されるChild addr)が1つであるとき、S93およびS94の処理をスキップして、この子ノードをネクストホップノードとして決定するようにしてもよい。
【0087】
<ネクストエリア決定処理>
次に、図10を用いて、前記した図7におけるネクストエリアの決定処理(S7)の詳細を説明する。このネクストエリアの決定処理は、ノード10が、パケットの宛先エリアが自エリアからみてルート側か、リーフ側かを判断することにより行われる。
【0088】
具体的には、ノード10が、前記したネクストホップ決定処理に用いた自身のノードのアドレスAに代えて、Aareaを用い、パケットのエリア内での宛先アドレスDに代えて、このパケットの宛先エリアのエリア番号を用いる。また、自身のノードの属する階層dに代えて、Aarea_d(当該論理ネットワークにおける自エリアの属する階層)を用い、Lmに代えて、Aarea_Lm(当該論理ネットワークの最大エリア階層数)を用い、Rmに代えて、Aarea_Rm(当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数)を用いることで計算される。
【0089】
まず、図3のネクストエリア決定部123は、エリア構造テーブル133に示されるAarea_dと、Aarea_Lmと、Aarea_Rmとを、割り当てアドレス算出部127へ出力し、自エリアの階層をAarea_dとしたときのCskip(Aarea_d−1)の計算依頼を行う。これを受けて、割り当てアドレス算出部127は、エリア構造テーブル133に示されるAarea_LmおよびAarea_Rm用いて、Cskip(Aarea_d−1)を計算する(S91)。このときのCskip(Aarea_d−1)の計算は、図11に示す式(12)または式(13)に基づき行われる。
【0090】
なお、この式(12)および(13)は、前記した図4の式(7)および式(8)における、階層dを、Aarea_dに置き換え、Lmを、Aarea_Lmに置き換え、Rmを、Aarea_Rmに置き換えたものである。
【0091】
次に、ネクストエリア決定部123は、この割り当てアドレス算出部127により計算されたCskip(Aarea_d−1)の値と、自身のノードのエリアにおけるアドレスAareaとを用いて、宛先エリアのエリア番号が、式(14)に示す条件を満たすか否かを判断する(S92)。つまり、ネクストエリア決定部123は、宛先エリアが、自エリアからみてリーフ側か、ルート側かを判断する。
【0092】
Aarea<宛先エリアのエリア番号<Aarea+Cskip(Aarea_d−1)…式(14)
【0093】
ここで、ネクストエリア決定部123が、宛先エリアのエリア番号は、式(14)に示す条件を満たすと判断したとき(S72のYes)、つまり、宛先エリアが、自身のノードからみてリーフ側にあると判断したとき、図11に示す式(12)または式(13)に基づき、Cskip(Aarea_d)を計算する(S73)。そして、ネクストエリア決定部123は、以下の式(15)により、ネクストエリアのエリア番号を求める(S74)。
【0094】
ネクストエリア=Aarea+1+Floor[(宛先エリアのエリア番号−(Aarea+1))/Cskip(Aarea_d)]×Cskip(Aarea_d)…式(15)
【0095】
一方、ネクストエリア決定部123は、パケットの宛先エリアのエリア番号が、以下の式(14)に示す条件を満たさないと判定したき(S72のNo)、ネクストエリア=Aarea_parentとする(S75)。つまり、ネクストエリア決定部123は、宛先エリア番号が式(14)を満たさないときは、この宛先エリアは、自エリアからみてルート側にあると判断できるので、自エリアの親エリア(エリア構造テーブル133に示されるAarea_parent)をネクストエリアとする。
【0096】
このようにノード10は、各エリアがツリー型トポロジで構成される場合、そのツリーにおける自エリアのエリア番号およびAarea_d、Aarea_Lm、Aarea_Rm(またはAarea_Rm)を参照することで、入力されたパケットを次に転送すべきエリア(ネクストエリア)を知ることができる。
【0097】
なお、S72において、ネクストエリア決定部123は、宛先エリアのエリア番号が、式(14)に示す条件を満たすと判断したとき(S72のYes)、つまり、宛先エリアが、自エリアからみてリーフ側にあると判断した場合であって、自エリアの子エリア(エリア構造テーブル133の隣接エリア情報におけるChild Area)が1つのとき、S73およびS74の処理をスキップして、この子エリアをネクストエリアとして決定するようにしてもよい。
【0098】
以上説明したネットワークシステムによれば、論理ネットワークのツリートポロジを複数のエリアに分けて構成するので、そのエリアごとにツリーの最大階層数、子ノード数を設定可能となる。よって、論理ネットワーク内に新規ノードを接続するときの制約を緩和することができる。また、論理ネットワークのエリアごとにツリーの最大階層数、子ノード数を設定可能となるので、ネットワークにおいて確保すべきアドレス数を低減することができる。
【符号の説明】
【0099】
1 バックボーンネットワーク
2,3 サービスネットワーク
10 ノード
11 ネットワークインタフェース部
12 処理部
13 記憶部
120 データ受信部
121 トンネル処理部
122 エリア判定部
123 ネクストエリア決定部
124 エリア境界ノード特定部
125 ネクストホップ決定部
126 パケット転送部
127 割り当てアドレス算出部
130 論理ネットワーク情報
131 ルーチングテーブル
132 エリア内テーブル
133 エリア構造テーブル
134 エリア境界ノード情報テーブル

【特許請求の範囲】
【請求項1】
1以上のサービスのパケットを転送するネットワークシステムを、当該サービスのパケットを転送する1以上の論理ネットワークに分け、その論理ネットワークをツリー型トポロジとして構成し、当該論理ネットワークを1以上のサブツリーからなるエリアに分割する場合において、そのエリアにおけるツリーの最大ツリー階層数Lmと、そのツリーの第d階層の1つのノードが保持可能な最大子ノード数Rmとをもとに、そのエリア内のツリーにおける第d+1階層におけるn番目に参加する子ノードの当該エリア内におけるアドレスAnが、以下の式(1)により定義されるノードを備えるネットワークシステムであって、
An=Aparent+Cskip(d)×(n−1)+1…式(1)
但し、
d=Lmの場合
Cskip(d)=0
0≦d≦Lm−1の場合
Cskip(d)=(Cskip(d+1)×Rmd+1)+1
Aparent:当該エリアのツリーにおける自身のノードの親ノードのアドレス
Cskip(d):当該エリアのツリーの第d+1階層の1つのノード以下に存在するノード数
d:当該エリアのツリーにおける自身のノードの属する階層
Lm:当該エリアのツリーの最大ツリー階層数
Rm:当該エリアのツリーの第d階層の1つのノードが保持可能な最大子ノード数
当該論理ネットワークにおいて、当該論理ネットワークにおける最大エリア階層数Area_Lmと、その論理ネットワークの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数Aarea_Rmとをもとに、その論理ネットワークにおける第Aarea_d+1階層におけるm番目に参加するエリアのエリア番号Aareaが、以下の式(2)により定義されることを特徴とするネットワークシステム。
Aarea=Aarea_parent+Cskip(Aarea_d)×(m−1)+1…式(2)
但し、
Aarea_d=Aarea_Lmの場合
Cskip(Aarea_d)=0
Aarea_d≦Aarea_Lm−1の場合
Cskip(Aarea_d)=(Cskip(Aarea_d+1)×Aarea_Rmd+1)+1
Aarea_parent:当該論理ネットワークにおける当該エリアの親エリアのアドレス
Cskip(Aarea_d):当該論理ネットワークの第Aarea_d+1階層の1つのエリア以下に存在する子エリア数
Aarea_d:当該論理ネットワークにおける自エリアの属する階層
Aarea_Lm:当該論理ネットワークの最大エリア階層数
Aarea_Rm:当該論理ネットワークのエリアの第Aarea_d階層の1つのエリアが保持可能な最大子エリア数
【請求項2】
請求項1に記載のネットワークシステムにおける前記ノードであって、
(1)前記論理ネットワークそれぞれに割り当てられたアドレス空間を示した論理ネットワーク情報と、(2)論理ネットワークにおいて前記自身のノードの属するエリアのエリア番号Aareaと、当該論理ネットワークにおいて当該エリアの属する階層Aarea_dと、当該論理ネットワークにおける最大エリア階層数Area_Lmおよび1つのエリアが保持可能な最大子エリア数Aarea_Rmと、当該エリアの親エリアAarea_parentおよび子エリアAarea_childとを示したエリア構造テーブルと、(3)当該エリアに隣接する隣接エリアごとに、その隣接エリアへ接続するエリア境界ノードを示したエリア境界ノード情報テーブルと、(4)当該エリアにおける自身のノードのアドレスA、前記自身のノードの属する階層d、最大ツリー階層数Lmおよび最大子ノード数Rm、前記自身のノードの親ノードのアドレスAparentおよび子ノードのAchildとを示したエリア内テーブルとを記憶する記憶部と、
当該パケットの宛先ノードの属するエリア番号を含むアドレスが付されたパケットの入出力を司るネットワークインタフェース部と、
前記論理ネットワーク情報と、前記ネットワークインタフェース部経由で入力された前記パケットの宛先アドレスに含まれる宛先ノードの属するエリアのエリア番号を参照して、前記宛先ノードが自身のノードの属するエリアのノードか否かを判断するエリア判定部と、
(A)前記宛先ノードが、前記自身のノードの属するエリアのノードであったとき、前記エリア内テーブルと前記自身のノードのアドレスAと、前記アドレスに含まれるエリア内でのアドレスDとを参照して、その宛先ノードに転送する際のネクストホップノードのアドレスNexthop addrを、以下の式(3)または式(4)により決定するネクストホップ決定部と、
A<D<A+Cskip(d−1)の場合、Nexthop addr=A+1+Floor[(D−(A+1))/Cskip(d)]×Cskip(d)…式(3)
A<D<A+Cskip(d−1)ではない場合、Nexthop addr=Aparent…式(4)
前記決定されたアドレスNexthop addrを持つノードへ前記入力されたパケットを前記ネットワークインタフェース部経由で転送するパケット転送部と、
(B)前記宛先ノードが、前記自身のノードの属するエリアのノードではなかったとき、その宛先ノードに転送する際のネクストエリアを、前記エリア構造テーブルを参照して、以下の式(5)または式(6)により決定するネクストエリア決定部と、
Aarea<宛先エリアのエリア番号<Aarea+Cskip(Aarea_d−1)の場合、ネクストエリア=Aarea+1+Floor[(エリア番号−(Aarea+1))/Cskip(Aarea_d)]×Cskip(Aarea_d)…式(5)
Aarea_d<宛先エリアのエリア番号<Aarea_d+Cskip(Aarea_d−1)ではない場合、ネクストホップエリア=Aarea_parent…式(6)
前記エリア構造テーブルを参照して、前記決定したネクストエリアへ接続するエリア境界ノードのアドレスを特定するエリア境界ノード特定部とを備え、
前記ネクストホップ決定部は、前記特定したエリア境界ノードのアドレスを宛先アドレスとしたときのネクストホップへのアドレスNexthop addrを決定し、
前記パケット転送部は、前記決定したアドレスNexthop addrを持つノードへ、前記入力されたパケットを転送することを特徴とするノード。
【請求項3】
前記エリア内のツリーのすべての階層で当該階層の子ノード数Rmが等しいとき、
前記式(1)におけるCskip(d)は、
Rm=1の場合
Cskip(d)=Lm−d
Rm=1ではない場合
Cskip(d)=(1−RmLm−d)/(1−Rm)
とすることを特徴とする請求項2に記載のノード。
【請求項4】
前記論理ネットワーク内のすべてのエリアの階層で当該階層の子エリア数Aarea_Rmが等しいとき、
前記式(1)におけるCskip(Aarea_d)は、
Aarea_Rm=1の場合
Cskip(Aarea_d)=Lm−d
Aarea_Rm=1ではない場合
Cskip(Aarea_d)=(1−Aarea_dAarea_Lm−Aarea_d)/(1−Aarea_Rm)
とすることを特徴とする請求項2または請求項3に記載のノード。
【請求項5】
請求項1に記載のネットワークシステムにおける前記ノードによるパケット転送方法であって、
(1)前記論理ネットワークそれぞれに割り当てられたアドレス空間を示した論理ネットワーク情報と、(2)論理ネットワークにおいて前記自身のノードの属するエリアのエリア番号Aareaと、当該論理ネットワークにおいて当該エリアの属する階層Aarea_dと、当該論理ネットワークにおける最大エリア階層数Area_Lmおよび1つのエリアが保持可能な最大子エリア数Aarea_Rmと、当該エリアの親エリアAarea_parentおよび子エリアAarea_childとを示したエリア構造テーブルと、(3)当該エリアに隣接する隣接エリアごとに、その隣接エリアへ接続するエリア境界ノードを示したエリア境界ノード情報テーブルと、(4)当該エリアにおける自身のノードのアドレスA、前記自身のノードの属する階層d、最大ツリー階層数Lmおよび最大子ノード数Rm、前記自身のノードの親ノードのアドレスAparentおよび子ノードのAchildとを示したエリア内テーブルとを記憶する記憶部を備える前記ノードが、
他のノードからのパケットの入力を受け付けるステップと、
前記論理ネットワーク情報と、前記パケットの宛先アドレスに含まれる宛先ノードの属するエリアのエリア番号を参照して、前記宛先ノードが自身のノードの属するエリアのノードか否かを判断する自エリア判定ステップと、
(A)前記自エリア判定ステップにおいて、前記宛先ノードが、前記自身のノードの属するエリアのノードであったとき、前記エリア内テーブルと前記自身のノードのアドレスAと、前記アドレスに含まれるエリア内でのアドレスDとを参照して、その宛先ノードに転送する際のネクストホップノードのアドレスNexthop addrを、以下の式(3)または式(4)により決定するステップと、
A<D<A+Cskip(d−1)の場合、Nexthop addr=A+1+Floor[(D−(A+1))/Cskip(d)]×Cskip(d)…式(3)
A<D<A+Cskip(d−1)ではない場合、Nexthop addr=Aparent…式(4)
前記決定されたアドレスNexthop addrを持つノードへ前記入力されたパケットを転送するステップとを実行し、
(B)前記自エリア判定ステップにおいて、前記宛先ノードが、前記自身のノードの属するエリアのノードではなかったとき、その宛先ノードに転送する際のネクストエリアを、前記エリア構造テーブルを参照して、以下の式(5)または式(6)により決定するステップと、
Aarea<宛先エリアのエリア番号<Aarea+Cskip(Aarea_d−1)の場合、ネクストエリア=Aarea+1+Floor[(エリア番号−(Aarea+1))/Cskip(Aarea_d)]×Cskip(Aarea_d)…式(5)
Aarea_d<宛先エリアのエリア番号<Aarea_d+Cskip(Aarea_d−1)ではない場合、ネクストホップエリア=Aarea_parent…式(6)
前記エリア構造テーブルを参照して、前記決定したネクストエリアへ接続するエリア境界ノードを特定するステップと、
前記特定したエリア境界ノードのアドレスを宛先アドレスとしたときのネクストホップへのアドレスNexthop addrを決定するステップと、
前記決定したアドレスNexthop addrを持つノードへ前記入力されたパケットを転送するステップとを実行することを特徴とするパケット転送方法。
【請求項6】
請求項5に記載のパケット転送方法を、前記ノードであるコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−4360(P2011−4360A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−148024(P2009−148024)
【出願日】平成21年6月22日(2009.6.22)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】