説明

経路制御装置

【課題】比較的少ない枚数の経路表を用いて、ノードやリンクの故障時に適切に迂回するネットワークを構成できる経路制御装置を提供する。
【解決手段】ノードu5が故障しているときに、ノードu1が宛先dのIPパケットを受信すると、u1→u2→u3→u4→w1→w2→dという経路でIPパケットを転送する。特に、iラベルが付加されたu2、oラベルが付加されたu3、sラベルが付加されたu4がそれぞれIPパケットに含まれる状態を書き換えることで、第2経路表を使う迂回の経路(u1→u2→u3)を経て、第1経路表を使って最短路を通るトンネルに入り(u3→u4)、トンネルを出た後は第2経路表を使い(u4→w1)、その後、また第1経路表を使う(w1→w2→d)という経路となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークの経路上において故障などの異常状態が発生した場合に、迂回路を設定する経路制御装置に関する。
【背景技術】
【0002】
従来から、ルータなどの経路制御装置はネットワーク上の宛先とこの宛先に至るための次の転送先との対応を示す経路表(ルーティング・テーブル)を備えており、やってきたIPパケットの宛先を上記ルーティング・テーブルと照合して次の転送先を決定することが行われている。そして、次の転送先のルータへの経路上に故障などが発生して転送が行えないことがあるため、予備の経路表を予め用意しておく技術が知られている。
【0003】
経路上の故障には大別して2種類ある。リンクの故障(link failure)とノードの故障(node failure)である。
そして、宛先への経路上に存する任意の1リンクが故障したとしても、そのリンクの故障に対して適切な迂回路を設定することを、「リンクプロテクション」という。また、任意の1ノードが故障したとしても、そのノードの故障に対しても適切な迂回路を設定することを「ノードプロテクション」という。
【0004】
このリンクプロテクションやノードプロテクションを実現するためのひとつの方策として、経路表の枚数を増やして対応する技術が知られている(非特許文献1〜5参照)。例えば、非特許文献1では、各ノードにおいて、そのノードが持つインターフェイス(ポート)毎の経路表を用意しておくことで、リンクプロテクションの実現を試みている。
また、非特許文献2では、同様の手法を用いてリンクプロテクションを実現する経路表の計算方法を提案している。
【0005】
また、非特許文献4では、リンクプロテクションやノードプロテクションを保証するために、幾枚かの経路表を要するとしており、ネットワークの規模などにも依存するものの一般に3枚から5枚の追加テーブルが必要としている。
さらに、非特許文献5では、様々な故障に対応するための必要な追加テーブルの枚数は2枚から3枚としており、上記非特許文献4よりは少ない枚数であるが、一般的なケースにおいて何枚の経路表を要するかに関しては開示されていない。
【0006】
その一方で、経路表をむやみに増やすと各ノードの処理負荷が重くなることがある。このため、非特許文献6では、パケットヘッダに埋め込んだ状態を迂回に利用することで、経路表の枚数を増加を回避しつつ適切な迂回路の設定を試みている。
非特許文献6に開示された技術について説明する。図14に示すように、ネットワーク100は、ノードu1〜u5,w1,w2,dから構成される。
【0007】
各ノードには、宛先であるノードdとノードdに至るための次の転送先のノード(次ホップ)を示す経路表、すなわち通常用の第1経路表(1st)と予備用の第2経路表(2nd)が備えられている。なお、図14において、第1経路表,第2経路表の次ホップへの経路をそれぞれ「第1経路」,「第2経路」と矢印で示している。
ここで図14におけるネットワークのルールは、次の通りである。
【0008】
(ルール1)IPパケットには、第1と第2経路表のいずれを使うべきかを示す状態ラベルが付加されており、状態0が第1経路表、状態1が第2経路表を使うべきことを示す。
(ルール2)第1経路表の次ホップへにつながるリンクの故障を検出するなどして、IPパケットを転送できないノードは、IPパケットをデフォルトの状態0から状態1へと変更し、第2経路表の次ホップに転送する。
【0009】
(ルール3)sフラグが関連付けられているノードは、状態1のIPパケットを受信したときに、状態1から状態0へと状態を変更する。状態0への変更によりこのノード以降のノードは第1経路表を使うこととなる。
なお、非特許文献6では、IPパケットのループ防止のためにさらに状態を変更する仕組みが紹介されているが本論と密接には関係しないので説明を省略する。
【0010】
このルール下における具体的な動作例を説明すると、例えば、ノードu1が宛先dのIPパケットを受信した場合でリンクの故障を検出をしないときには、ノードu1は第1経路表の次ホップu5へとIPパケットを転送し、ノードu5もノードu5の第1経路表の次ホップdへ転送とする。つまりIPパケットは、u1→u5→dと転送されることとなる。
【0011】
また、図15に示すように、同じくノードu1が宛先dのIPパケットを受信した場合で、u5とdとの間のリンク故障を検出すると、u1→u5→u4→w1→w2→dという流れになる。
すなわち、
(1)ノードu1:第1経路表の次ホップu5へとIPパケットを転送する
(2)ノードu5:u5−d間のリンク故障を検出したのでIPパケットの状態を状態0から状態1へと変更、そして第1経路表ではなく第2経路表の次ホップu4へとIPパケットを転送する
(3)ノードu4:IPパケットの状態は状態1であるので第2経路表の次ホップw1へとIPパケットを転送。ただし、sフラグが関連付けられているので、転送前に状態1から状態0へと変更しておく
(4)ノードw1:IPパケットの状態は状態0であるので第1経路表の次ホップw2へとIPパケットを転送する
(5)ノードw2:IPパケットの状態は状態0であるので第1経路表の次ホップdへとIPパケットを転送する
、という流れとなる。
【0012】
このように、非特許文献6によると、宛先のノードへの経路上に存する任意の1リンクが故障したとしても、そのリンクの故障に対して適切な迂回路を設定できる(リンクプロテクション)。また、予め計算しておいた経路表を利用するので、故障検出後に瞬時に迂回路を設定することができるとしている。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】S. Lee, Y. Yu, S. Nelakuditi, Z.L. Zhang, and C-N. Chuah,"Proactive vs. Reactive Approaches to Failure Resilient Routing," In Proceings of IEEE INFOCOM '04, Mar.2004.
【非特許文献2】Z. Zhong, S. Nelakuditi, Y. Yu, S. Lee,J. Wang,and C.N. Chuah,"Failure Inferencing Based Fast Rerouting for Handling Transient Link and Node Failures," In Proceings of IEEE Global Internet, Mar.2005.
【非特許文献3】J. Wang and S. Nelakuditi,"IP Fast Reroute with Failure Inferencing," In Proceedings of SIGCOMM workshop (INM) 2007,pp.268-273,2007.
【非特許文献4】A. Kvalbein, A.F. Hansen, T.Cicic, S. Gjessing, and O. Lysne, "Multiple routing configurations for fast IP network recovery," IEEE/ACM Transactions on Networking, Vol.17, Issue.2,pp.473-486, 2009.
【非特許文献5】T.Cicic, A.F. Hansen,A. Kvalbein, M, Hartmann, R. Martin and M. Menth,"Relaxed multiple routing configurations for IP fast reroute," In Proceings of NOMS2008,pp.457-464, 2008.
【非特許文献6】Takuya Yoshihiro,"A Single Backup-Table Rerouting Scheme for Fast Failure Protection in OSPF",IEICE Transactions on Communications, Vol. E91-B, No. 9, pp. 2838-2847, 2008.9. (IEICE/IEEE Joint Special Section on Autonomous Decentralized Systems Theories and Application Deployments)
【発明の概要】
【発明が解決しようとする課題】
【0014】
ところで、ネットワーク技術においては、上記リンクプロテクションも重要であるが、ノード故障の発生率も無視できないほどに高い。このため、ノードプロテクションをも実現することが重要課題となっている。
しかしながら、このノードプロテクションに対しては、上記した非特許文献6の技術では有効に機能しないことがある。
【0015】
具体的には図16に示すように、ネットワーク102においては、ノードu1が宛先dであるIPパケットを受信した場合で、ノードu5が故障しているときには、IPパケットは、u1→u2→u3→u4→w1→w2→dと転送されるので迂回できる。もっとも、ノードu3は第1経路表の次ホップおよび第2経路表の次ホップが同じu4になっている。このため、ノードu3が宛先dのIPパケットを受信した場合にu4との間のリンク故障を検出すると、ノードu3は次の適切な転送先を決定することができず迂回できず(図17参照)、IPパケット損失を招くこととなる。
【0016】
これに対しては、リンク故障やノード故障などに応じて経路表を用意するなど経路表の枚数を増やすことで対応することも考えられるが、上述のように経路表の枚数の増加は各ノードにおける処理負荷の増大などを招くのでの避けたい。
本発明はこのような背景の下になされたものであって、比較的少ない枚数の経路表を用いて、ノードやリンクの故障時に適切に迂回するネットワークを構成できる経路制御装置を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明に係る経路制御装置は、ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、宛先と、転送先の決定に係る状態を示す情報を格納するパケットを受信する受信部と、宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、を記憶する記憶部と、前記受信部により受信されたパケットに格納された情報に示される状態が、状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記ラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、状態1であるならば、前記第2ノードへと前記パケットを転送して、前記ラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、状態2であるならば、前記第1ノードへと前記パケットを転送して、前記ラベル情報が第3ラベルの付加を示していれば転送前に前記状態2から前記状態1へと書き換え、状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、を備えることを特徴とする。
【0018】
また、本発明に係る経路制御装置は、ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、宛先と転送先の決定に係る状態を示す情報とを格納するパケットを受信し、自ノード宛のカプセル化されたパケットを受信すると、カプセル化の解除後のパケットを、受信したパケットとして扱う受信部と、宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、を記憶する記憶部と、前記受信部により受信されたパケットに格納された情報に示される状態が、状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、状態1であるならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、状態2であるならば、受信されたパケットの状態を前記状態2から前記状態1へと書き換えて、当該パケットを、前記パケットの宛先に対応するラベル情報が第3ラベルの付加を示すノードからみて第1ノードであるノードを宛先として状態が状態0であるパケットに内包させるようカプセル化し、カプセル化したパケットを前記第1ノードへと前記パケットを転送し、状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、を備えることを特徴とする。
【0019】
また、本発明に係る経路制御装置は、ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、宛先と、転送先の決定に係る状態を示す情報を格納するパケットを受信する受信部と、宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、を記憶する記憶部と、前記受信部により受信されたパケットに格納された情報に示される状態が、状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、状態1であるならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、状態2であるならば、受信されたパケットの状態を前記状態2から前記状態1へと書き換えて、受信されたパケットに前記第1経路表に対応する経路であることを識別するMPLSラベルを付加した後、当該MPLSラベルにより識別されるノードへと転送し、状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、
を備えることを特徴としている。
【0020】
また、本発明に係る経路制御システムにおける方法は、ネットワークを構成する複数のノードから構成される経路制御システムにおける方法であって、各ノードにおいて、宛先ノードに至る第1経路と、前記宛先ノードに至り第1経路とは異なる迂回路である第2経路とを記憶する記憶ステップと、各ノードにおいて、第1経路を用いたパケットの転送が可能でないならば、パケットに迂回途中である旨を示す情報を付加した後で第2経路を用いてパケットを転送する迂回開始ステップと、各ノードにおいて、迂回途中である旨を示す情報が付加されたパケットを受信すると、第2経路を用いてパケットを転送する迂回中ステップと、各ノードにおいて、迂回途中である旨を示す情報が付加されたパケットを受信したにも関わらず、自ノードに関して宛先ノードに至るための経路に係る所定の条件を満足していれば、前記迂回中ステップで用いる第2経路に代えて、第1経路表を用いてパケットを転送する迂回中トンネルステップと、を備えることを特徴としている。
【発明の効果】
【0021】
本発明に係る経路制御装置によれば、第1から第3ラベルにより状態0から状態4を状態を書き換えることにより、第1経路表か第2経路表のどちらを用いて転送先とするかを柔軟に決定することができ、ノードやリンクの故障時に適切に迂回路を設定することができる。
【図面の簡単な説明】
【0022】
【図1】ネットワークの概要を示す図
【図2】ノードu2の機能ブロック図
【図3】アルゴリズム"CreateBackupTable-NP"に係る変数の定義を示す図
【図4】アルゴリズム"CreateBackupTable-NP"を示す図
【図5】プロシージャ"findBackupPath"を示す図
【図6】プロシージャ"setBackupNextHops"を示す図
【図7】IPパケット受信に係る処理の流れを示すフローチャート
【図8】各ノードにおける第1および第2経路表、さらに各ラベルのtrue/falseを示す図
【図9】ノードu5が故障した際の各ノードにおける処理の流れを示すシーケンス図
【図10】変形例に係るネットワーク構成などを示す図
【図11】カプセル化を利用した変形例に係るネットワーク構成などを示す図
【図12】MPLSを利用した変形例に係るネットワーク構成などを示す図
【図13】(a)IPパケットのヘッダ部分の内容を示す図、(b)迂回後(状態3)への変更に関するフローチャート
【図14】非特許文献6にならったネットワーク構成を示す図
【図15】図14のネットワークにおいて、u5−d間のリンク故障を示す図
【図16】非特許文献6でノードプロテクションを行おうとしたときのネットワーク構成を示す図
【図17】図16のネットワークにおいて、u3−u4間のリンク故障を示す図
【発明を実施するための形態】
【0023】
以下、図面を参照しながら実施の形態について説明する。
<構成>
図1に示すように、ネットワーク1は8個のノードu1〜u5,w1,w2,dから構成される。各ノードはルータから構成され、ネットワーク層においてIPプロトコルに従って通信を行う。各ノードはOSPF(Open Shortest Path First)のルーティング・プロトコルに従って動作するものとする。
【0024】
また、ネットワークを流れるIPパケットのヘッダ部分には、宛先IPアドレスとTOS(Type Of Service)フィールドが含まれており、このTOSは状態(状態0から状態3までの4種類がある。)の格納領域として用いられている。
図2にノードu2の機能ブロック図を示す。各ノードは基本的に同様な構成であるのでノードu2だけを代表させて説明する。
【0025】
ノードu2は、インターフェイス部10、トポロジ部12、受信部14、転送部16、転送先決定部18、故障検出部20、状態制御部22、各部を制御する制御部24、計算部30、記憶部40を備える。
インターフェイス部10は、他のノードと接続するための回線インターフェイス(ポート)から構成されており、他のノードとの間でのデータ授受を実現する。
【0026】
トポロジ部12は、他のノードに対して、自ノードに接続されたノード(隣接ノード)のIDやインターフェイスのコストを含むLSA(Link State Advertisement)と呼ばれるトポロジ情報を送信する。また他のノードから集めたトポロジ情報に基づいてトポロジ・マップを作成する。
受信部14は、インターフェイス部10を介してIPパケットなどを受信する。
【0027】
転送部16は、インターフェイス部10を介してIPパケットなどを、転送先決定部18に決定された転送先へと転送する。
故障検出部20は、定期的に隣接ノードとの間でやりとりされるメッセ−ジなどを利用して隣接ノードの故障を検出する。
状態制御部22は、受信部14が受信したIPパケットのヘッダ部分のTOS(Type Of Service)フィールド含まれる状態の読み取りや書き換えを行う。この書き換えは、故障検出部20の故障検出の有無や記憶部40内のラベル表46に基づいて行われる。
【0028】
状態には、最短路転送中であることを示す「状態0」、迂回路転送中であることを示す「状態1」、トンネル転送中であることを示す「状態2」、迂回後であることを示す「状態3」の4種類がある。各状態の機能や書き換え条件については後述する。
計算部30は、第1経路表計算部32、第2経路表計算部34、ラベル計算部36から構成される。計算部30のアルゴリズムについては後述する。この計算部30の計算結果は、記憶部40内に第1経路表42、第2経路表44、ラベル表46として設定され記憶される。
【0029】
第1経路表42は、通常用(プライマリー)の経路表であり、宛先ノードを示す「宛先」42aと宛先ノードに至るための「次ホップ」42bとを対応付けた表である。図2中では、「宛先」がノードdについてのみ記述して他の宛先(ノードu1,u3,u4,u5,w1,w2)に関しては省略している。第2経路表44は、予備用(バックアップ)の経路表であり、第1経路表42同様、宛先ノードを示す「宛先」44aと宛先ノードに至るための「次ホップ」44bとを対応付けた表である。
【0030】
ラベル表46は、「宛先」46aと、3つのラベル「s」46b,「i」46c,「o」46dの各ラベルについてtrue/falseを示す表である。図2のラベル表46の例では、宛先ノードdに関してi-ラベルがtrueで、s-ラベル,o-ラベルがfalseあることを示している。
<アルゴリズム>
次に、計算部30の処理内容を定めるアルゴリズムについて説明する。
【0031】
まず、第1経路表42は、OSPFにおいて一般的に用いられている手法により計算を行う。つまり、トポロジ部12において作成したトポロジ・マップを基に、ダイクストラの最短路計算アルゴリズムを用いて最短経路を求めることにより、宛先ノードに至るための次ホップを決定する。
次に、第2経路表44とラベル表46を求めるアルゴリズムについて、以下説明する。
【0032】
まず図3を用いて変数の定義について説明する。G(V,E)は、ネットワークを表す有向グラフである。Vはノードの集合、Eは有向リンクの集合である。関数f:e(∈E)→Rは、各リンクの重みを表す。p(v)はノードvの第1経路表における宛先dへの次ホップを表し、b[v]は、ノードvの第2経路表における宛先dへの次ホップを表す。p(v)が表す宛先dへの最短経路木を転送木Tと呼ぶ。Tにおいて、v(∈V)の親ノードをp(v)とし、v(∈V)の子孫ノードの集合をD(v)と表す。またv(∈V)の子ノードの集合をC(v)と表す。また、Tに対して、ノードv(∈V)を根として導出される部分木をTと表す。
【0033】
ノードvの宛先dに対するs−ラベル、i−ラベル、o−ラベルをs[v],i[v],o[v]と表す。同様にノードvの宛先dに対するt−ラベルを定義しt[v]と表す。t−ラベルは迂回路中の最短路によるトンネルを構成するノード、即ちi−ラベルとo−ラベルとの間のノード(正確には、i−ラベルノードの次ノードからo−ラベルノードまでに含まれるノードで両端を含む)に一時的に設定されるラベルである。
【0034】
また、各ラベルがtrueであるノードを、それぞれs−ラベルノード、i−ラベルノード、o−ラベルノード、t−ラベルノードと呼ぶ。
本アルゴリズムの方式では、IPパケットがノードu∈Vにおいて第2経路表の次ホップに転送され、その後、迂回後状態(状態3)になるまでの経路を、uの「迂回路」と定義する。
【0035】
つまり、迂回路p=(u(=v),v,...,v)上の各ノード及び1≦k<nに対して、p(v)=vk+1であれば、vはt−ラベルノードでなければならず、t[v]=falseかつt[vk+1]=trueであればvはi−ラベルノード、t[v]=trueかつt[vk+1]=falseであればvはo−ラベルノード、さらに、vn−1はs−ラベルノードでなければならない。
【0036】
ノード故障に対応する場合には、vの迂回路pはp(v)を通らずにIPパケットをdまで転送できる必要がある。このためには、pの終点ノードでTp(v)の外部にあるノードwがD(p(v))に属さない関係であればよい。v∈Vに対してTp(v)を「NP回避領域」と呼び、始点がv、終点がTp(v)の外部のノードであるw、である迂回路pをvの「NP迂回路」と呼ぶ。
【0037】
一方、リンク故障に対応する場合には、vの迂回路pはリンク(v,p(v))を通らずにIPパケットをdまで転送できる必要がある。このためには、pの終点ノードwがTの外部あればよい。よって、v∈Vに対して、Tを「LP回避領域」と呼び、始点がv、終点がw(Tの外部のノード)である迂回路pをvの「LP迂回路」と呼ぶ。
【0038】
迂回路pに対して、t−ラベルノードのみから構成される極大な部分路q∈pをpの「トンネル区間」と呼ぶ。逆に、t−ラベルノードvに対して、そのノードにt−ラベルが付加された時に設定された迂回路pがただ一つ定まり、pのトンネル区間の一つでvを含むものを「vのトンネル区間」と呼ぶ。t−ラベルノードvに対して、vのトンネル区間をpとは逆向きに辿り、t−ラベルノードでないノードに辿りつくまでの経路を「vの逆流経路」と呼ぶ。t−ラベルノードvから最短路トンネルに合流してパケットが転送される迂回路(即ち「状態2」のパケットがvから転送される迂回路)をvの「トンネル迂回路」と呼ぶ。また、経路pとqに対して、これらを連結した経路をp+qのように表す。
【0039】
図4〜図6を参照しながら、第2経路表を求めるアルゴリズム"CreateBackupTable-NP"について説明する。図5,図6は、図4のアルゴリズムで用いられるプロシージャとなっている。
本アルゴリズムでは宛先d毎に動作するため、入力として宛先dと、この宛先dへの最短路木の一つTをとる。このため、各ノードuにおいて、uがd∈V−{u}であるdのそれぞれに対してアルゴリズムを実行し、出力である宛先dに関する第2経路表のエントリとs,i,oのラベルからu(自分自身のノード)に関するものを取り出してIPパケット転送に用いることとなる。
【0040】
図4に示すアルゴリズムにおいては、1〜8行目の初期化処理を行う。そして、Tの幅優先探索順にノードvを訪問し(9行目)、vの子ノードそれぞれについて、もし第2経路表が設定されていなければNP迂回路を探索し(10−12行目)、発見されればこれを設定する(13−15行目)。その後、さらにvの子ノードそれぞれについて、もし第2経路表が設定されていなければLP迂回路を探索し(18−20行目)、発見されればこれを設定する(21−23行目)。迂回路の探索と設定をこのような順序で行うのは、探索される迂回路の回避領域の根ノードがTの根に近い順になることを保証するためである。この手順により、宛先dに対する第2経路表とs,i,oのラベルを計算する。
【0041】
本アルゴリズムの12,20行目で用いられる"findBackupPath"(迂回路の探索)は、LP迂回路とNP迂回路ともに図5に示すプロシージャ"findBackupPath"により行われる。このプロシージャ"findBackupPath"は迂回路の始点ノードu、宛先ノードd、回避領域の根ノードrを入力にとる。NP迂回路を探索する場合はrとしてNP回避領域の根p(u)を入力し、LP迂回路を探索する場合はuを用いる。
【0042】
図5のプロシージャ"findBackupPath"は基本的には、ダイクストラの最短路計算アルゴリズムを少し変更して繰り返し実行することで迂回路を探索する。動作の骨組みとしては、迂回すべきノード(またはリンク)をGから取り除いたグラフを作成し、その上でuを始点としてダイクストラのアルゴリズムを実行し、Qから取り出した各ノードvのトンネル区間に迂回路の終点となるノードw∈S∪S∪S(Sは回避領域の外部ノードの集合、SはSに含まれないノードの中で第2経路表が定義されていないノード集合、SはS∪Sに含まれないt−ラベルノードの集合である。)を発見すると、uからvまでの経路とvからwまでTに沿った経路を連結した経路を迂回路pとして返す。(正確にはpは迂回路の部分路であるが、便宜上迂回路と呼ぶことにする。)この際に、S∪S∪Sに属するノードwを終点とするリンク(x,w)の重みとして、f(x,w)の重みに、迂回路を通ってwに着いたとして以後dに至るまでの距離を加えた値を用いる。つまり、w∈Sの場合には、wからdへの最短経路の距離を加え、w∈Sの場合にはwから迂回路を通った場合(即ち、「状態1」で第二経路表を用いて転送された場合)のwからdへの距離を加え、w∈Sの場合には、wのトンネル区間が回避領域の根rを含む場合にはwの逆流経路を通った場合のwからdへの距離、rを含まない場合にはwのトンネル経路を通った場合のwからdへの距離を加える。こうすることで、宛先dまでできるだけ最短でたどり着けるv∈S∪S∪Sを探索できる。
【0043】
処理の例外として、Sに属するノードwを発見し、wのトンネル区間が回避領域の根rを含む場合には、上記のpとは異なる経路を返す。即ち、uからvまでの経路とvからwまでTに沿った経路、そしてwの逆流経路の3経路を連結したものをpとして返す。上記のように、このプロシージャは設定すべき迂回路pを返す。この迂回路に基づいて第二経路表とs,i,oのラベルを設定することで、uからdへの迂回路を設定できる。
【0044】
このプロシージャ"findBackupPath"を図5を用いて説明すると、1−27行目で変数の初期化を行う。1−5行目では、迂回路を計算するためのグラフG’=(V’,E’)を生成する。u=rの場合はLP迂回路を探索するので2行目でGからリンク(r,p(r))を除いたものをG’としている。そうでない場合はNP迂回路を探索するので、4行目でGからノードrを除いたものをG’としている。6―8行目は迂回路探索時に迂回路の終端となるノード集合S、S及びSを初期化している。9−25行目で各ノードv∈V’ に対してdist[v]及びbdist[v]の値を初期化している。いずれもプロシージャ中で一時的に用いられる変数であり、それぞれuからvへの距離、及び、(前述の)uからvを経由する迂回路を通ってdに至る時のvからdへの距離を表す。13−15行目はSに属するノードv∈Sに対して、16−18行目はSに属するノードv∈Sに対して、また19−25行目はSに属するノードv∈Sに対して、それぞれbdist[v]の値を与えている。26行目ではダイクストラのアルゴリズムの始点としてuを集合Q(ダイクストラのアルゴリズム実行に用いられるノード集合)に入れ、27行目はuの距離を0で初期化する。
【0045】
28行目以降は迂回路を発見するためのループである。29−30行目でQの中から最小距離のノードvを取り出し、31−32行目では、T上のuからvまでの経路上(u、vも含む)にw∈S∪S∪Sであるようなwが含まれるならば、その中でvに最も近いものをwとする。33−35行目では、w∈S∪Sの場合に前述の迂回路p(即ちuからvまでの発見された経路とvからwまでのTに沿った経路を連結したもの)を返し、36−42行目ではw∈Sの場合に対応する迂回路pを返す。44−52行目はダイクストラのアルゴリズムを動作させる部分であり、前述の通りリンク(v,w)に対しては、bdist[w]で表される重みを加算して動作させている。48行目の2番目の条件はダイクストラのアルゴリズムには存在しない部分であるが、これは、等距離の迂回路が複数あった場合に、できるだけTに沿うような迂回路を選択するための条件である。最後まで迂回路が見つからなければnullを返す(54行目)。
【0046】
次に、本アルゴリズムの14,22行目(図4)で呼び出される"setBackupNextHops"(次ホップの設定)について説明する。図6に示すプロシージャ"setBackupNextHops"は、"findBackupPath"などで発見された迂回路pを第2経路表およびs,i,o,t-ラベルとして設定し、pの始点uから宛先dまでIPパケットを転送できるようにする処理を行う。このプロシージャは入力として宛先ノードd、設定する迂回路p=(u,u,...,u)、および回避領域の根ノードrをとる。1行目では迂回路の終端から順に第2経路表を設定するようにループさせ、第2経路表のエントリやラベルを設定する。8−14行目はk<n−1、即ちuk+1がpの終端ノードではない場合の処理、15−23行目はuk+1がpの終端ノードである場合の処理であり、2−7行目は両方の場合に共通する処理を行う。2−7行目では、両方の場合に共通する処理として、t−ラベルの付加と第二経路表の設定を行う。2−4行目はuの第1経路表のエントリと第2経路表のエントリが等しいとき(つまり、IPパケットがトンネルを通るとき)の処理であり、3行目ではt-ラベルを付加し、phにこの迂回路を逆向きにたどる(つまり、逆流経路を示す)ための前ホップを記憶しておく。それ以外の場合には、6行目で第2経路表を設定する。以降はi,o,s-ラベルの設定である。9−10行目は、uでは第1と第2の経路表エントリが異なり、かつuk+1では同一であるときに、uにi-ラベルを付加し、uk+1から第1経路表によるトンネルを用いてIPパケット転送するように設定する。11−12行目は、uでは第1と第2の経路表エントリが同一で、かつuk+1では異なる場合に、uにo-ラベルを付加してIPパケットがトンネルから抜けるよう処理をする。16−17行目は、pの終端が回避領域の外部にあるとき、s-ラベルを付加している。18−19行目は、pの終端がt-ラベルノードで(終端ノードは、第二経路表が設定されていない場合は必ずt−ラベルノードである)、ここからトンネルに入るときには、その前のノードにi-ラベルを付加する。20−21行目は、pの終端でトンネルを抜けて別の迂回路に転送する場合には、その前のノードにo-ラベルを付加する。
【0047】
以上が第2経路表と各ラベルを求めるアルゴリズムであり、発見されたどのようなpに対しても、IPパケットがpを通るような第2経路表と各ラベルの設定ができる。
<アルゴリズムに関する理論的結果>
本アルゴリズムは、全ての双方向ネットワークに対して、任意の1ノード故障に対応できるような第二経路表と3つのラベル(s、i、o−ラベル)を計算できることを保証する。より厳密には、任意のノードvに対して、もしvのNP迂回路が存在するならばそのうち一つを設定でき、NP迂回路が存在しない場合にも、もしvのLP迂回路が存在するならばそのうち一つを設定できることが保証される。即ち、ノード故障を迂回できることはリンク故障をも迂回できることを考慮すると、本アルゴリズムは迂回可能な全ての1ノード故障、及び1リンク故障に対応可能である。
【0048】
これよりそのことを証明する。まず、証明にあたり必要な次の定義及び補題を示す。
定義1:経路pに対して、任意の2ノードv、w∈pを選ぶ。もしp上でvがwの上流に位置し、wがT上でvの祖先である場合、vを始点、wを終点とするpの部分路をスロープ区間と呼ぶ。p上の全てのスロープ区間がT上にあるとき、pを適切経路と呼ぶ。
【0049】
補題1:qをノードuの迂回路、pをuを始点とするqの部分路の一つとする。もしpが適切経路ならば、p上の全てのt−ラベルノードvはNP迂回路を持ち、それはvの逆流経路である。
証明:もしpがスロープ区間を持たないならば、補題は満たされる。よって、p上にスロープ区間が存在し、その始点がv、終点がwであるとする(このスロープ区間を以後[v,w]と表す)。xをp上でwの直前ノード、v’をp上でvの直前ノードとする。pは適切経路なので、そのスロープ区間上の全てのノードはt−ラベルノードである。即ち、pが設定された時にはこれらのノードの第二経路表は設定されておらず、その迂回路として逆流経路を設定することが可能である。もしv’がT上でwの子孫であれば、p上の区間[v’,w]は再びスロープ区間であり、上記と同様の議論が可能である。uは明らかにwの子孫ではないので、このようにスロープ区間を広げていくことで、必ずwの子孫でないv’を発見できる。v’がwの子孫でない場合、v’はTの外部にあり、区間[v’,x]内の全ノードに対して、NP回避領域の外部である。よって、区間[v’,x]内の全てのノードにとって、その逆流経路はNP迂回路となっている。(証明終)
補題1は、設定される迂回路pが適切経路であれば、p上の(pがLP迂回路であれば始点ノードを除く)全てのノードはNP迂回路を持つことができることを示している。実際に、アルゴリズムCreateBackupTables-NPは迂回路として常に適切経路を計算し設定することで、全ノードに対して(迂回路が存在する場合に限るが)迂回路を保証する。このことを以下の補題と定理により示す。
【0050】
補題2:プロシージャfindBackupPathは常に適切経路を返す。
証明:プロシージャfindBackupPath内ではuを始点としてダイクストラの最短路計算アルゴリズムが動作しており、プロシージャにより返される経路は原則として2つの部分に分割できる。つまり、ダイクストラのアルゴリズムにより計算されたuからvまでの経路pと、vからw(∈S∪S∪S)までTに沿った経路qに分割できる。(例外があるが、これに関しては後述する。また、v=wの場合もあり得る。)ここで、一般にダイクストラのアルゴリズムで用いられるリンクの重みとは異なる重みbdist[]を加えているにもかかわらず、pはuからvへの重み関数fの下での最短路である。なぜなら、bdist[]はp上で終端ノードにつながるリンクのみに加算され、かつ、同じ終端ノードにつながる全てのリンクには同じ値が加算されるからである。また、プロシージャfindBackupPathの29行目と48行目では、等距離の経路が複数ある場合にはTに沿った経路が優先的に選ばれる仕組みを実現している。従って、pは適切経路であり、これにTに沿った最短路qを加えた経路p+qも適切経路である。(証明終)
ところで、上記の例外として、findBackupPathはp+qにwの逆流経路を連結した経路を返す場合がある。この場合は、逆流経路上の(終端を除く)ノードが全てt−ラベルノードであり、アルゴリズムはQから取り出したノードvの祖先にw∈S∪S∪Sであるノードwを発見するとすぐに終了するため、p上のv以外のどのノードも、逆流経路上のノードをその(T上の)祖先に持たない。よって、p+qに逆流経路をつなげた経路も適切経路である。
【0051】
定理1:アルゴリズムCreateBackupTable-NPは、任意のノード対(s,d)に対して次の条件を満たすような第二経路表とラベルを計算できる。条件:sから宛先dへのNP迂回路が存在するならば、sはその中で適切経路であるものを迂回路として利用できる。もしNP迂回路が存在せず、LP迂回路が存在するならば、sはその中で適切経路であるものを迂回路として利用できる。
【0052】
証明:アルゴリズムCreateBackupTable-NPは、Tの幅優先探索順にノードvを訪問し、その子ノードuの迂回路を計算・設定することを繰り返す。迂回路計算の各繰り返し処理において、第二経路表が設定された全てのノードが定理の条件を満たす迂回路を持ち、その迂回路が常に適切経路であることを、数学的帰納法により証明する。
最初に迂回路が計算されるノードuを考える。rをこの時の回避領域の根ノードとする。初回はS∪Sに含まれるノードは存在しないので、uから回避領域Tの外部に到達する迂回路が存在するならば、アルゴリズムがその終端ノードの一つx∈Sを発見できることは明らかである。ここで、発見された経路pはuからxへのfの下での最短路の一つであり、29行目と48行目の処理で等コスト経路が複数ある場合にはTに沿った経路が優先的に選択されるので、uの迂回路pは適切経路である。ここで、uの迂回路を設定すると、p上のt−ラベルノードと終端ノードを除く全てのノードの迂回路も設定されることになる。これらのノードはT上でrの子孫であるため、xはこれらのNP回避領域の外部にある。即ち、pは第二経路表が設定された全てのノードに対してNP迂回路である。
【0053】
次にk回目の繰り返しまで条件が満たされたと仮定し、k+1回目の処理により計算・設定された迂回路も条件が満たされることを示す。もし、始点ノードuからTの外部に至る経路が存在するならば、アルゴリズムは必ずw∈S∪S∪Sを発見できる。もし
w∈Sが発見されたならば、上記の議論から条件は満たされる。
【0054】
w∈Sが発見された場合、pを発見されたuからvまでの経路とし、p’をvからwまでのTに沿った経路とし、qをwの(既に設定された)迂回路とする。qは仮定より適切経路であり、v∈D(r)よりqはrを含まない。また、アルゴリズムは回避領域が広い順番に(つまり回避領域の根が宛先dに近い順番に)迂回路を計算するため、qはTの外部に到達できる。よって、経路p+p’+qはuの迂回路である。一方、補題2より、このuの迂回路は2本の適切経路p+p’とqの連結である。アルゴリズムはQからノードを取り出し、その祖先にw∈S∪S∪Sであるノードwを発見するとすぐに迂回路を決定する。よって、全てのx∈(p+p’)、x∈qの組に対して、xがxのT上の子孫であれば、p+p’+q上の区間[x,x]はTに含まれる。即ち経路p+p’+qは適切経路である。また、このとき第二経路表が設定された全てのノードは、前述の議論によりNP迂回路を持つ。
【0055】
最後に、w∈Sである場合は、pを発見されたuからvまでの経路とし、p’をvからwまでのTに沿った経路とし、qをwのトンネル迂回路とし、qをwの逆流経路とする。もしqがrを含まない場合、上記w∈Sの場合と同様の議論により、p+p’+qはTの外部に到達できる迂回路であり、適切経路である。一方、qがrを含む場合、qが適切経路であることからwとrはいずれもwのトンネル区間内にある。よって、補題1より、wの逆流経路はTの外部に到達でき、p+p’+qはuの迂回路である。また、補題2より、p+p’+qは適切経路である。また、このとき第二経路表が設定された全てのノードは、前述の議論によりNP迂回路を持つ。
【0056】
以上により、k+1回目の繰り返し処理で第二経路表が設定される(uを除く)全てのノードは定理の条件を満たす迂回路を持つ。(証明終)
<動作>
次にノードu2における、IPパケット受信からIPパケット転送までの処理の流れについて図7を用いて説明する。なお、図1で示したノードu2以外の各ノード(ノードu1,u3,u4,u5,w1,w2)も同様な動作を行う。
【0057】
まず、受信部14がIPパケットを受信すると(S10)、状態制御部22は受信したIPパケットのヘッダに含まれる状態を読み取る(S11)。
状態が0であり(S12:Yes)、故障検出部20が第1経路表42の次ホップの故障を検出していなければ(S13:No)、転送部16は第1経路表42の次ホップにIPパケットを転送する(S14)。このように、第1経路表42の次ホップに故障がない限りは、状態が0のままでこの第1経路表42の次ホップに転送されることとなる。
【0058】
故障検出部20が次ホップの故障を検出を検出していれば(S13:Yes)、転送部16は第2経路表44の次ホップにIPパケットを転送する(S18)。そして、転送前に、状態制御部22はラベル表46を参照して、s-ラベルがtrueでなければ(S15:No、S16)状態0から状態1へと書き換え(S16)、s-ラベルtrueであれば(S15:Yes)状態0から状態3へと書き換える(S17)。
【0059】
状態が0でなく1であれば(S12:No、S21:Yes)、転送部16は第2経路表44の次ホップにIPパケット転送する(S26)。そして、転送前に、状態制御部22はラベル表46を参照して、i-ラベルtrueであれば状態1から状態2へと書き換え(S22:Yes,S23)、i-ラベルtrueでなくs-ラベルtrueであれば状態1から状態3へと書き換える(S22:No,S24:Yes,S25)。
【0060】
状態が1でなく2であれば(S21:No、S31:Yes)、転送部16は第1経路表42の次ホップにIPパケット転送する(S34)。そして、転送前に、状態制御部22はラベル表46を参照して、o-ラベルtrueであれば状態2から状態1へと書き換える(S32:Yes,S33)。
状態が2でなく3であれば(S31:No、S41)、転送部16は第1経路表42の次ホップにIPパケット転送する(S42)。
【0061】
図1のネットワーク1において、第1および第2経路表、各ラベルについて、上述のアルゴリズムに従って計算した結果を図8に示す。
図8においては、各ノードu1〜u5,w1,w2の傍らに、第1経路表および第2経路表、さらに各ラベルがtrue/falseを示している。例えば、ノードu2は、第1経路表に示される次ホップがu1であり、第2経路表に示される次ホップがu3であり、iラベルがtrue、o-ラベル,s-ラベルはfalseとなっている。
【0062】
例えば、ノードu1が宛先dのIPパケットを受信した場合で、ノードu5が故障した際の各ノードの動作については、次の(1)〜(6)の通りである(図9参照)。
(1)ノードu1は、状態0のIPパケットを受信すると(S12:Yes)、第1経路表の次ホップu5の故障を検出し(S13:Yes)、状態を0から1へと書き換え(S16)、第2経路表に示される次ホップのu2へと転送する(S18)。
【0063】
(2)ノードu2は、状態1のIPパケットを受信すると(S21:Yes)、i-ラベルtrueなので状態を1から2へと書き換え(S22:Yes,S23)、第2経路表に示される次ホップのu3へと転送する(S26)。
(3)ノードu3は、状態2のIPパケットを受信すると(S31:Yes)、o-ラベルtrueなので状態を2から1へと書き換え(S32:Yes,S33)、第1経路表の次ホップu4へと転送する(S34)。
【0064】
(4)ノードu4は、状態1のIPパケットを受信すると(S21:Yes)、s-ラベルtrueなので状態を1から3へと書き換え(S22:No,S24:Yes,S25)、第2経路表の次ホップw1へと転送する(S26)。
(5)ノードw1は、状態3のIPパケットを受信すると(S41)、第1経路表の次ホップw2へと転送する(S42)。
【0065】
(6)ノードw2は、状態3のIPパケットを受信すると(S41)、第1経路表の次ホップdへと転送する(S42)。
このようにノードu5が故障した際においても、ノードu1→u2→u3→u4→w1→w2→dという迂回路を通ってIPパケットを無事宛先ノードdへと届けることができる。
【0066】
以上説明したように、本実施の形態によれば、IPパケットの宛先に関連付けられたs,i,oの各ラベルを利用してIPパケットの状態を書き換えて、第1経路表と第2経路表のいずれの表を使うべきかを多様に設定することが可能となる。特に、ノード故障の検出後の迂回において、一旦迂回路に入ったにも関わらず(u1→u2→u3)、途中で第1経路表を使って最短路を通るトンネルに入り(u3→u4)、トンネルを出た後は第2経路表を使い(u4→w1)、その後、また第1経路表を使う(w1→w2→d)というように柔軟に適切な迂回路を設定することができる。
【0067】
このように第1経路表と第2経路表というわずか2枚の経路表によりノードプロテクションを実現することができる。また、4つの状態はIPパケットヘッダのTOSフィールドに2ビットという軽い情報量で入れ込むので、ネットワークへの影響も軽微である。
<補足>
以上、本発明の実施の形態について説明したが、本発明は上記の内容に限定されず、本発明の目的とそれに関連または付随する目的を達成するための各種形態においても実施可能であり、例えば、以下であってもよい。
【0068】
1.実施の形態においては、ノードu5が故障した際における例(図8)についてのみ説明したが、実施の形態によれば、u1〜u5,w1,w2のうちの任意のノードが宛先dのIPパケットを受信した際に、他のノードが故障していたとしても、適切に迂回路を保証することができる、つまりノードプロテクションを実現することができる。
また、任意のリンクが故障していたとしても適切に迂回路を保証することができる、つまりリンクプロテクションを実現することができる。
【0069】
2.図1(図8)とは、異なる形態のネットワークに実施の形態を適用した場合の例について変形例として以下説明する。図10は変形例に係るネットワーク構成などを示す図である。図10(a)はネットワーク構成(トポロジ)を示し、図10(b)は第1経路表とo-ラベル、図10(c)は第2経路表とi-ラベル,s-ラベルを示す。
図10のネットワークにおいても実施の形態の同様にノードプロテクションを実現できる。例えば、宛先がノード6であるIPパケットをノード2が受信した場合で、ノード3が故障している際には、
(1)ノード2は、ノード3の故障を検出すると、IPパケットの状態を0から1へと書き換え、第2経路表に示される次ホップのノード7へとIPパケットを転送する。
【0070】
(2)ノード7は、IPパケットの状態が1であるため第2経路表に示される次ホップのノード9へとIPパケットを転送する。また、i-ラベルtrueなので転送前に状態を1から2へと書き換える。
(3)ノード9は、IPパケットの状態が2であるため第1経路表に示される次ホップのノード4へとIPパケットを転送する。また、o-ラベルtrueなので転送前に状態を2から1へと書き換える。
【0071】
(4)ノード4は、IPパケットの状態が1であるため第2経路表に示される次ホップのノード5へとIPパケットを転送する。また、s-ラベルtrueなので転送前に状態を1から3へと書き換える。
(5)ノード5は、IPパケットの状態が3であるため第1経路表に示される次ホップのノード8へとIPパケットを転送する。
【0072】
(6)ノード8は、IPパケットの状態が3であるため第1経路表に示される次ホップのノード6へとIPパケットを転送する。
このように本変形例においても、ノードプロテクションを行うことができる。
3.迂回路の途中で第1経路表を使う方法としては、カプセル化の技術や、MPLS(Multi Protocol Label Switching)やATM(Asynchronous Transfer Mode)などを含むラベルスイッチング技術と組み合わせることもできる。
【0073】
カプセル化については、RFC2003に規定されているIPパケット中にIPパケットをカプセル化するトンネリング技術が代表的あるが、RFC1701に規定されているような異なるプロトコル間でのトンネリングや、RFC3931に規定されているようなレイヤ2フレーム(Ethernet(登録商標)など)をIPの中にカプセル化する技術などを適宜用いることができる。
カプセル化を利用した場合の具体例を図11に示す。なお、図11においても図8、図14などと同様に、第1経路表,第2経路表の次ホップへの経路をそれぞれ「第1経路」,「第2経路」と矢印で示している。
【0074】
ノードu1のノードが故障した際には、u1→u2→u3→u4→u5→u6→u7→dという経路でパケットが転送される。実施の形態の図8,図9などと挙動が異なるのは基本的にノードu3からノードu5に至る間だけであるので、この間の詳細のみを以下説明する。
(1)ノードu3においてIPパケット(状態1,宛先d)をペイロード部分に入れてヘッダ部分に宛先u5、状態0(デフォルトの状態)を内包させた入れたパケットを新たに作成し(カプセル化)、第1経路のノードu4へと送る。カプセル化されたパケットには、IPパケット(状態1,宛先d)が内包されることとなる。
【0075】
(2)ノードu4は、受信したIPパケットの状態が0であるため、第1経路表に示されるノードu5へとIPパケットを送る。
(3)ノードu5は、受信したIPパケットの宛先が自ノードであるため、パケットのカプセル化を解除して、中身(ペイロード部分)からIPパケット(状態1,宛先d)を取り出す。そして、取り出したIPパケット(状態1,宛先d)は、状態1であるため、第2経路表のノードu6へと送る。
【0076】
なお、カプセル化を行った「u3」は、i-ラベルが付加されたノードu2からみて第1経路にあるノード(状態2のパケットを最初に受信するノード)であり、そして、カプセル化したパケットの宛先「u5」はo-ラベルが付加されたノードu4からみて第1経路にあるノードである。このようにカプセル化の開始ノードと宛先ノードとを設定することで迂回路中に第1経路(最短路)を通るトンネル区間(u3からu5までの区間)を設定することができる。
【0077】
なお、カプセル化の開始ノードを「u3」に代えて、例えば「u2」など適宜変更することができる。
次に、ラベルスイッチング技術と組み合わせた一例としてMPLSを用いて説明する。MPLSはパケットにMPLSラベルを付加することで、MPLSラベルが付加されているパケットはそのMPLSラベルに対応した既設定経路を用いて転送する技術であり、MPLSラベルは、経路制御中に付加したり削除したり操作が可能である。MPLSは、従来の最短経路による経路制御よりも柔軟な経路設定が可能であるため、負荷分散等にも利用されている。
【0078】
MPLSを利用した場合の具体例を図12に示す。本例もノードu3からノードu5に至る間の詳細のみを以下説明する。
(1)ノードu3においてIPパケット(状態1,宛先d)にMPLSラベルであるラベル"7"を付加する。MPLSのネットワーク内では、IPヘッダの宛先ではなくラベルのみに基づいて転送先が決定される。このため、ラベル"7"に対応したLSP(Label Switch Path)を用いてパケットが転送される。ここで、ラベル"7"は終点(宛先)がノードu5でu3→u4→u5と第1経路(最短路)を通る経路に設定されているものとする。
【0079】
(2)ノードu4は、受信したIPパケットに付加されたラベル"7"に従って、ノードu5へとIPパケットを送る。
(3)ノードu4は、受信したIPパケットに付加されたラベル"7"が自ノードを宛先としているので、このIPパケットからラベル"7”を外す。そして、ラベル"7”を外したIPパケットは状態1であるため、第2経路表に示されるノードu6へとIPパケットを送る。
【0080】
なお、ラベル"7"を付加した「u3」は、i-ラベルが付加されたノードu2からみて第1経路にあるノード(状態2のパケットを最初に受信するノード)であり、そして、ラベル"7"に従う経路は第1経路(最短路)を通り経路の終点は「u5」となっている。MPLSを利用した場合も上のカプセル化の場合と同様、迂回路中に第1経路(最短路)を通るトンネル区間(u3からu5までの区間)を設定することができる。
【0081】
また、図12では、ラベル"7"は第1経路(最短路)を通るように設定されているとして説明したが、効率を考慮すると最短路であることが望ましいが、これに限らず第2経路(迂回路)と異なる経路であればよく、必ずしも最短路である必要はない。
4.実施の形態では、OSPF(Open Shortest Path First)のルーティング・プロトコルに適用した例について説明している。OSPFは、中規模のネットワークにおいて、非常に効率的な運用を可能にできるという利点がある。
【0082】
実施の形態で説明した手法は、OSPFだけではなくIS−IS(Intermediate System to Intermediate System)のようなリンク状態型ルーティングにも適用することができる。
さらには、スタティック・ルーティング、つまり各ノードに第1および第2経路表や各ラベルなどを手動で設定するとしてもよい。
【0083】
5.実施の形態では、各ノードの計算部30において個別に表やラベルの計算をするとしてが、これに代えて、上記計算は処理能力に優れたサーバで行い、各ノードは計算結果をサーバから受け取って、表やラベルを設定するとしてもよい。
6.実施の形態では、最短路計算アルゴリズムの例として、ダイクストラを例に挙げたが、これに限られず、例えば、ワーシャル−フロイド法など他の最短路計算アルゴリズムを適用することができる。
【0084】
7.実施の形態では、第1経路表における次ホップは宛先ノードdに至るための最短経路上に存在する隣接ノード(最短ノード)であり、第2経路表における次ホップは宛先ノードdに至るための迂回の経路上に存在する隣接ノード(迂回ノード)であるとして説明したが、第1経路表の次ホップの導出方法はこれに限られない。例えば、効率を重視しない(あるいは無視できる)ネットワーク設計であれば上記最短ノードではないノードを第1経路表に設定するとしても構わない。
【0085】
8.実施の形態においては、故障検出部20の故障を検出した場合に状態を状態0から状態1へと書き換えるとして説明したが、このような故障検出に限らず例えば輻輳を検出するなど第1経路表の次ホップへの転送が円滑に行えないことを条件としてもよい。また、隣接ノードとの間でやりとりされるメッセージやリンクを流れる電流、光信号などを定期的な検出対象として、検出結果に基づいて状態0から状態1への書き換えを行うとしてもよい。
【0086】
9.図7のフローチャートにおいて、第2経路表の次ホップに転送しようとしたとき、第2経路表の計算が未完了であるなど第2経路表の次ホップが存在しない場合には、状態3に書き換えて第1経路表の次ホップに転送するとしてもよい。
10.本実施の形態は、無線アドホックネットワーク、無線メッシュネットワーク、センサーネットワーク、その他経路制御を必要とする種々のネットワークに適用可能である。
【0087】
11.実施の形態において説明した第1および第2経路表、さらには各ラベルを計算するアルゴリズムについては、あくまでも一例でありこれに限定されるものではない。
12.実施の形態では、IPv4のIPパケットのTOSフィールドに状態を含ませるとして説明したが、IPv6においても例えばヘッダ部分の拡張されたフィールドなどに状態を含ませることで実施することができる。
【0088】
13.実施の形態では、IPパケットを例に挙げて説明したが、本発明は、IPパケットのみの適用には限定されず、経路表を用いてパケットを転送するスキームのすべてに適用可能である。IP以外にも、例えばIPX(Internetwork Packet eXchange)といったプロトコルにも適用できる。また、その他無線通信で独自仕様の通信プロトコルに適用できる。
【0089】
14.実施の形態では、s-ラベルのノードを過ぎると直ちに迂回後の状態3に変更しているので(図9,図7:S24:Yes,S25)、迂回後のさらなる迂回はできない構成であったが、もっともこれに限らず、状態3へ変更する代わりにデフォルトの状態0へと変更することで、複数回の迂回を許容するようにしてもよい。
具体的には、図13(a)に示すように、IPパケットのヘッダ部分に迂回回数を格納する領域を設定しておく。
【0090】
そして、図13(b)に示すように、s-ラベルがtrueであれば(S24:Yes)、IPパケットに格納された迂回領域を参照して、迂回回数が例えば3以下であれば(S51:Yes)、迂回回数をインクリメントし(S52)、状態を状態1から状態0へと変更する(S53)。迂回回数が3以下でなければ(S51:No)、状態を状態1から状態3へと変更する(S25)。
【0091】
なお、図13(b)においては、図7と同様なステップに同じステップ番号を付している。
このようにすることで、IPパケットに3回までの迂回を許容することができ、パケット損失の低減に寄与できる。
【産業上の利用可能性】
【0092】
本発明に係る経路制御装置はルータなどのネットワーク機器として有用である。
【符号の説明】
【0093】
1 ネットワーク
14 受信部
16 転送部
20 故障検出部
22 状態制御部
30 計算部
32 第1経路表計算部
34 第2経路表計算部
36 ラベル計算部
42 第1経路表
44 第2経路表
46 ラベル表
u1〜u5,w1,w2 ノード(ルータ)
d 宛先ノード(宛先ルータ)

【特許請求の範囲】
【請求項1】
ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、
宛先と、転送先の決定に係る状態を示す情報とを格納するパケットを受信する受信部と、
宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、
宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、
宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、
を記憶する記憶部と、
前記受信部により受信されたパケットに格納された情報に示される状態が、
状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、
状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、
状態1であるならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、
状態2であるならば、前記第1ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第3ラベルの付加を示していれば転送前に前記状態2から前記状態1へと書き換え、
状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、
を備える
ことを特徴とする経路制御装置。
【請求項2】
ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、
宛先と転送先の決定に係る状態を示す情報とを格納するパケットを受信し、
自ノード宛のカプセル化されたパケットを受信すると、カプセル化の解除後のパケットを、受信したパケットとして扱う受信部と、
宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、
宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、
宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、
を記憶する記憶部と、
前記受信部により受信されたパケットに格納された情報に示される状態が、
状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、
状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、
状態1であるならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、
状態2であるならば、受信されたパケットの状態を前記状態2から前記状態1へと書き換えて、当該パケットを、前記パケットの宛先に対応するラベル情報が第3ラベルの付加を示すノードからみて第1ノードであるノードを宛先として状態が状態0であるパケットに内包させるようカプセル化し、カプセル化したパケットを前記第1ノードへと前記パケットを転送し、
状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、
を備える
ことを特徴とする経路制御装置。
【請求項3】
ネットワークを構成するノードであり、パケットの転送先を制御する経路制御装置であって、
宛先と、転送先の決定に係る状態を示す情報を格納するパケットを受信する受信部と、
宛先ノードと、当該宛先ノードに至る第1経路上に存する第1ノードと、を対応付けた第1経路表と、
宛先ノードと、当該宛先ノードに至る第2経路上に存する第2ノードと、を対応付けた第2経路表と、
宛先ノード毎に、前記パケットに格納された状態の書き換え内容を表すラベル情報と、
を記憶する記憶部と、
前記受信部により受信されたパケットに格納された情報に示される状態が、
状態0であり、前記第1ノードへの転送が可能ならば、当該第1ノードへと前記パケットを転送し、
状態0であり、前記第1ノードへの転送が可能でないならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第1ラベルの付加を示していれば転送前に前記状態0から状態3へと書き換え、第1ラベルの付加を示していなければ転送前に状態0から状態1へと書き換え、
状態1であるならば、前記第2ノードへと前記パケットを転送して、前記パケットの宛先に対応するラベル情報が第2ラベルの付加を示していれば転送前に状態1から状態2へと書き換え、第2ラベルの付加を示しておらず第1ラベルの付加を示していれば転送前に状態1から状態3へと書き換え、
状態2であるならば、受信されたパケットの状態を前記状態2から前記状態1へと書き換えて、受信されたパケットに前記第1経路表に対応する経路であることを識別するMPLSラベルを付加した後、当該MPLSラベルにより識別されるノードへと転送し、
状態3であるならば、前記第1ノードへと前記パケットを転送する転送制御部と、
を備える
ことを特徴とする経路制御装置。
【請求項4】
ネットワークを構成する複数のノードから構成される経路制御システムにおける方法であって、
各ノードにおいて、宛先ノードに至る第1経路と、前記宛先ノードに至り第1経路とは異なる迂回路である第2経路とを記憶する記憶ステップと、
各ノードにおいて、第1経路を用いたパケットの転送が可能でないならば、パケットに迂回途中である旨を示す情報を付加した後で第2経路を用いてパケットを転送する迂回開始ステップと、
各ノードにおいて、迂回途中である旨を示す情報が付加されたパケットを受信すると、第2経路を用いてパケットを転送する迂回中ステップと、
各ノードにおいて、迂回途中である旨を示す情報が付加されたパケットを受信したにも関わらず、自ノードに関して宛先ノードに至るための経路に係る所定の条件を満足していれば、前記迂回中ステップで用いる第2経路に代えて、第1経路表を用いてパケットを転送する迂回中トンネルステップと、
を備えることを特徴とする経路制御システムにおける方法。

【図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

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−66536(P2011−66536A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−213606(P2009−213606)
【出願日】平成21年9月15日(2009.9.15)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 発行者名:社団法人情報処理学会 湖東 俊彦 刊行物名:情報処理学会シンポジウムシリーズ〔マルチメディア,分散,協調とモバイル(DICOMO2009)シンポジウム論文集〕 巻数、号数: Vol.2009,No.1 発行年月日:2009年7月1日
【出願人】(504145283)国立大学法人 和歌山大学 (62)
【Fターム(参考)】