(57)【要約】【課題】ループによる輻輳やデータの喪失を抑える。【解決手段】データ転送先として、第１経路と第２経路とを有する中継装置であって、前記第１経路上にある他の中継装置から送信されるデータであって前記第１経路に対応する方路に転送できないことを示す情報が付加されたデータが受信された場合には当該データから前記情報を削除して前記第２経路へ転送する一方で、前記情報が付加されていないデータが受信された場合には当該データを前記第１経路へ転送する制御部を含む。【選択図】図５
2017055324.tif 000002
【特許請求の範囲】
【請求項１】
データ転送先として、第１経路と第２経路とを有する中継装置であって、
前記第１経路上にある他の中継装置から送信されるデータであって前記第１経路に対応する方路に転送できないことを示す情報が付加されたデータが受信された場合には当該データから前記情報を削除して前記第２経路へ転送する一方で、前記情報が付加されていないデータが受信された場合には当該データを前記第１経路へ転送する制御部を含む
中継装置。
【請求項２】
前記制御部は、前記中継装置の制御装置からの指示に従って、前記情報が付加されていないデータが受信された場合に当該データを前記第２経路へ転送する
請求項１に記載の中継装置。
【請求項３】
データ転送先として、第１経路と第２経路とを有する第１中継装置と、
前記第１経路上にある第２中継装置とを含み、
前記第２中継装置は、データを前記第１経路に対応する方路に転送できない場合に、前記方路に転送できないことを示す情報を前記データに付加して前記データを受信したポートから出力し、
前記第１中継装置は、前記情報が付加されたデータが受信された場合には当該データから前記情報を削除して前記第２経路へ転送し、前記情報が付加されていないデータが受信された場合には当該データを前記第１経路へ転送する
データの中継システム。
【請求項４】
データ転送先として、第１経路と第２経路とを有する中継装置のデータ転送方法であって、
前記中継装置が、
前記第１経路上にある他の中継装置から送信されるデータであって前記第１経路に対応する方路に転送できないことを示す情報が付加されたデータが受信された場合には当該データから前記情報を削除して前記第２経路へ転送し、
前記情報が付加されていないデータが受信された場合には当該データを前記第１経路へ転送する
ことを含む中継装置のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継装置に関する。
【背景技術】
【０００２】
近年、ネットワークの分野では、Software Defined Networking（ＳＤＮ）が注目され
ている。ＳＤＮは、ソフトウェアでネットワーク全体の挙動を制御する技術である。ＳＤＮを実現する標準として、例えば、OpenFlow（オープンフロー）技術が注目されている。
【０００３】
OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”（ＯＦ−ＳＷ：以下「スイッチ」と表記することもある）と、経路制御を司る“OpenFlowコントローラ”（ＯＦＣ：以下「コントローラ」と表記することもある）を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
【０００４】
各スイッチは、自身に入力されたパケットに対する動作（アクション）を決定するための情報が記憶されたフローテーブルを備える。OpenFlowでは、“ルール（条件）”，“アクション（Action）”，及び“統計情報（Statistics）”の組が“フロー”と呼ばれる。フローテーブルは、フローに係る情報が格納されたエントリ（以下、「フローエントリ」と呼ぶ）の集合体である。
【０００５】
フローに係る情報（フローエントリ）は、コントローラによって生成され、“OpenFlowプロトコル”を用いて各スイッチに送信される。各スイッチは、コントローラから受信したフローエントリをフローテーブルに記憶し、フローエントリ中の定義に従ってパケットの転送などを行う。このように、コントローラは、コントローラ自身の配下にある各スイッチが有するフローテーブルを一元管理する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３２０６８３号公報
【特許文献２】特開２０００−３４１２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、コントローラがフローテーブルを一元管理するネットワークでは、各スイッチが例えばリンク障害に応じてパケットの転送経路を再計算し、自律的にパケットの転送経路を更新する（ルーティングテーブルを書き換える）ことはない。すなわち、パケットの転送経路は、コントローラによってスイッチのフローテーブルが更新されるまで変更されない。
【０００８】
したがって、以下のような問題が生じる可能性があった。例えば、ノード（スイッチ）Ａと、ノードＡから或る宛先へのパケットを受信するノード（スイッチ）Ｂとを含むネットワークを想定する。ノードＢには、コントローラにより、二つのフローエントリが設定されている。一つは、ノードＡから受信されたパケットを或るポート（ポートａとする）から出力するフローエントリであり、もう一つは、ポートａからパケットを出力できないときにノードＡへパケットを送り返すフローエントリである。ノードＡにも、コントローラによって二つのフローエントリが設定されている。一つは、或る宛先へのパケットを或るポート（ポートｂとする）を介してノードＢへ送るフローエントリであり、もう一つは、ポートｂからパケットを出力できないときに、迂回経路に対応する他のポート（ポート
ｃとする）からパケットを出力するフローエントリである。
【０００９】
上記の想定において、ノードＢのポートａから出力されるパケットを他のノードへ転送するためのリンクに障害が生じた場合を仮定する。リンク障害は、ノードＢにて検出される。この場合、ノードＢは、ポートａからパケットを出力できないので、ノードＡから受信されたパケットをノードＡに送り返す。ところが、ノードＡは、上記リンクと接続されていないので、上記リンクの障害を検出することができない。したがって、ノードＡは、ノードＢからパケットが送り返される状態になっても、「或る宛先へのパケットをポートｂからノードＢへ送る」、というフローエントリを使用し続ける。この結果、ノードＡとノードＢとの間でループが発生する。
【００１０】
但し、ノードＢはリンク障害を検出すると、障害の発生をコントローラへ通知する。コントローラは、通知を受けて、或る宛先へのパケットが迂回経路で転送されるように、ノードＡに対し、或る宛先へのパケットをポートｃから出力する旨の指示を与える。ノードＡは、コントローラからの指示を受けて、パケットの出力先をポートｂからポートｃに切り換える。これによって、ループが解消され、パケットが迂回経路で転送される。
【００１１】
しかしながら、パケットの出力先が切り換えられるまでの間に、ノードＡとノードＢとの間でループによる輻輳やパケットロスが発生したりする可能性があった。
【００１２】
本発明は、ループによる輻輳やデータの喪失を抑えることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様は、データ転送先として、第１経路と第２経路とを有する中継装置である。この中継装置は、前記第１経路上にある他の中継装置から送信されるデータであって前記第１経路に対応する方路に転送できないことを示す情報が付加されたデータが受信された場合には当該データから前記情報を削除して前記第２経路へ転送する一方で、前記情報が付加されていないデータが受信された場合には当該データを前記第１経路へ転送する制御部を含む。
【発明の効果】
【００１４】
本発明の一態様によれば、ループによる輻輳やデータの喪失を抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、ネットワークシステムの構成例を示す。
【図２】図２は、各ノードに設定される経路情報（フローテーブル）の一例を示す。
【図３】図３は、各ノードに設定される経路情報（フローテーブル）の一例を示す。
【図４】図４は、図１〜図３を用いて説明したネットワークにおいて、端末Ａから端末Ｃへ送信されるパケットに関してノード２とノード３との間のリンクに障害が発生した場合における動作例（参考例）を示す。
【図５】図５は、実施形態に係るネットワークシステムの動作例の説明図である。
【図６】図６は、コントローラの構成例を示す図である。
【図７】図７は、図５の各ノード１〜９として動作可能なノードの構成例を示す図である。
【図８】図８は、実施形態のノードにおける処理を示すフローチャートである。
【図９】図９は、実施形態のノードにおける処理を示すフローチャートである。
【図１０】図１０は、図５に示したノード１〜９に設定（記憶）されるフローテーブルの一例を示す。
【図１１】図１１は、図５に示したノード１〜９に設定（記憶）されるフローテーブルの一例を示す。
【図１２】図１２は、実施形態のネットワークシステムで使用されるパケット（フレーム）のフォーマット説明図である。
【図１３】図１３（ａ）は、ノード１からノード２へ送信されるパケット（フレーム）を示し、図１３（ｂ）は、ノード２からノード１へ折り返される障害ラベル付きのパケット（フレーム）を示す。
【図１４】図１４は、コントローラによるフローテーブルの更新（迂回路に切り換えるフローエントリの供給）による復旧動作の例を示す。
【図１５】図１５は、コントローラによって更新されるフローテーブルの例を示す。
【図１６】図１６は、コントローラによって更新されるフローテーブルの例を示す。
【発明を実施するための形態】
【００１６】
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、本発明は、実施形態の構成に限定されない。
【００１７】
図１は、ネットワークシステムの構成例を示す。図１において、ネットワークシステムは、ノード１〜ノード９と、コントローラ１０とを有するネットワークと、ネットワークに接続された端末Ａ，端末Ｂ，端末Ｃとを含む。
【００１８】
ネットワークは、端末間で送受信されるパケットを中継する。パケットは、「データ」の一例である。ネットワークは、例えば、ＳＤＮネットワークであり、例えば、Openflowに準拠又は適合するネットワークである。コントローラ１０は、Openflowコントローラであり、各ノード１〜９は、例えばOpenflowスイッチである。但し、OpenflowネットワークはＳＤＮネットワークの一例であり、Openflow以外のＳＤＮの規格に基づくコントローラやスイッチをコントローラ１０やノード１〜９として適用し得る。
【００１９】
端末Ａ，端末Ｂ，端末Ｃの情報（端末情報），ノード１〜９の情報（ノード情報），ノードの役割説明は、以下の表１に示す通りである。
【表１】
2017055324.tif 000003
【００２０】
端末Ａ，Ｂ，Ｃのそれぞれは、表１に示すMedia Access Control（アドレス）及びInternet Protocol（ＩＰ）アドレスを有する。端末Ａ，端末Ｂ，端末Ｃのそれぞれは、ネッ
トワークを介してパケットを送受信することで、通信を行う。
【００２１】
このため、ネットワークは、詳細には、以下の構成を有する。各ノードは、コントローラとの通信に使用されるポート番号“ｗ”と、端末又は他のノードとの接続に使用される２以上のポート“ｘ（ｘは正の整数）”とを有する。
【００２２】
図１に示す例では、ノード１，ノード６，ノード９のそれぞれは、ポート番号１〜３の各ポート（ポート１〜３）と、コントローラ用ポート“ｗ”とを有する。ノード２は、ポート番号１〜４の各ポート（ポート１〜４）と、コントローラ用ポート“ｗ”とを有する。ノード３，ノード４，ノード５，ノード７，ノード８のそれぞれは、ポート番号１，２の各ポート（ポート１，２）と、コントローラ用ポート“ｗ”とを有する。
【００２３】
ノード１のポート１は、端末Ａのポート１とリンクを介して接続されており、ノード１のポート２は、ノード２のポート１とリンクを介して接続されている。ノード１のポート３は、リンクを介してノード４のポート１と接続されている。ノード２のポート１は、ノード１のポート２と接続されており、ノード２のポート２は、ノード３のポート１とリンクを介して接続されている。ノード２のポート３は、ノード８のポート１とリンクを介して接続されており、ノード２のポート４は、ノード７のポート１とリンクを介して接続されている。
【００２４】
ノード３のポート１は、ノード２のポート２と接続されており、ノード３のポート２は、ノード６のポート２とリンクを介して接続されている。ノード４のポート１は、ノード１のポート３とリンクを介して接続されており、ノード４のポート２は、ノード５のポート１とリンクを介して接続されている。ノード５のポート１は、ノード４のポート２と接続されており、ノード５のポート２は、ノード６のポート３とリンクを介して接続されている。ノード６のポート１は、リンクを介して端末Ｃのポート１と接続されている。ノード６のポート２は、ノード３のポート２と接続され、ノード６のポート３は、ノード５のポート２と接続されている。
【００２５】
ノード７のポート１は、ノード２のポート４と接続されており、ノード７のポート２は、ノード９のポート２とリンクを介して接続されている。ノード８のポート１は、ノード２のポート３と接続されており、ノード８のポート２は、ノード９のポート３とリンクを介して接続されている。ノード９のポート１は、リンクを介して端末Ｂのポート１と接続されている。ノード９のポート２は、ノード７のポート２と接続され、ノード９のポート３は、ノード８のポート２と接続されている。
【００２６】
上述したようなネットワーク構成において、ノード１，ノード６，ノード９，及びノード２のそれぞれは、表１に示すように、「エッジノード」に分類されている。一方、ノード３，ノード４，ノード５，ノード７，ノード８のそれぞれは、「中継ノード」に分類されている。エッジノードは、分岐経路を持つノードであり、中継ノードは、分岐経路を持たないノードである。但し、ノード２は、エッジノード及び中継ノードとして動作する。
【００２７】
例えば、エッジノードであるノード１は、データの転送先として、端末Ａから送信される端末Ｃ宛のパケットに関して、ノード２，ノード３，ノード６を経由する第１経路と、ノード４，ノード５，ノード６を経由する第２経路とを有することができる。
【００２８】
中継ノードとしてのノード２は、第１経路上にあり、第１経路に対応する方路、すなわ
ち、ノード３と接続されたポート２へパケットを転送することができる。また、エッジノードとしてのノード２は、データの転送先として、例えば、端末Ａから送信される端末Ｂ宛のパケットに関して、ノード７，ノード９を経由する第１経路と、ノード８，ノード９を経由する第２経路とを有することができる。中継ノード（ノード３，ノード４，ノード５，ノード７，ノード８）は、一方が入口となり他方が出口となる（パケットの転送方向に応じて入口と出口が入れ替わる）二つのポートを有し、分岐経路は有しない。
【００２９】
コントローラ１０は、端末間のパケット転送経路に基づいて、ノード１〜９のそれぞれに対応するフローテーブルを生成する。フローテーブルは、単数又は複数のフローエントリを含む。フローエントリは、パケットの識別情報（「マッチ条件（Match）」と呼ばれ
る）と、識別情報に対応する動作を示す情報（「実行アクション（Action）」と呼ばれる）を含む。各ノードは、「マッチ条件」に合致するパケットについて「実行アクション」に従った動作を行う。
【００３０】
コントローラ１０は、ノード１〜９のフローテーブルを一元管理する。コントローラ１０は、各フローテーブル又はフローエントリの複製を作成し、対応するノードに供給する。すなわち、コントローラ１０は、リンクを介してノード１〜９の各コントローラ用ポート“ｗ”と接続されており、ノード１〜９のそれぞれと通信を行う。ノード１〜９との通信において、コントローラ１０は、各ノードに対応するフローテーブルをノード１〜９に送信し、各ノード１〜９は、フローテーブルを記憶する。コントローラ１０は、各ノード１〜９に対する制御装置として動作する。
【００３１】
図２及び図３は、ノード１〜９に設定される経路情報（フローテーブル）の一例を示す。図１に示すネットワークの例では、端末Ａと端末Ｂとの間には、ノード１，ノード２，ノード７，ノード９を経由する経路が設定される。なお、「端末宛のパケット」とは、例えば、宛先ＩＰアドレスが宛先端末のＩＰアドレスであるパケットを指す。
【００３２】
このため、ノード１のフローテーブルは、「パケットが端末Ｂ宛の場合にポート２から出力する」と定義されたフローエントリを含む。また、ノード２のフローテーブルは、「パケットが端末Ｂ宛の場合にポート４から出力する」と定義されたフローエントリ（項番３）を含む。また、ノード７のフローテーブルは、「パケットをポート１から受信した場合、ポート２から出力する」と定義されたフローエントリ（項番１）を含む。また、ノード９のフローテーブルは、「パケットが端末Ｂ宛の場合にポート１から出力する」（項番２）と定義されたフローエントリを含む。
【００３３】
端末Ａからの端末Ｂ宛のパケットを受信するノード１，ノード２，ノード７，ノード９のそれぞれが、受信されたパケットについて対応するフローエントリで定義された動作を行うことによって、端末Ａから端末Ｂへパケットが転送される。また、説明は省略するが、ノード１，ノード２，ノード７，ノード９のそれぞれのフローテーブルは、端末Ｂから送信された端末Ａ宛のパケットを上記経路（但し逆方向）で転送するためのフローエントリを含んでいる。
【００３４】
また、図１に示すように、端末Ａと端末Ｃとの間には、ノード１，ノード２，ノード３，ノード６を経由する経路が設定される。このため、ノード１，ノード２，ノード３，ノード６のそれぞれのフローテーブルには、パケットを端末Ａと端末Ｃとの間で双方向に転送するためのフローエントリが含まれる。さらに、端末Ｂと端末Ｃとの間には、ノード９，ノード７，ノード２，ノード３，ノード６を経由する経路が設定される。このため、ノード９，ノード７，ノード２，ノード３，ノード６のそれぞれのフローテーブルには、パケットを端末Ａと端末Ｃとの間で双方向に転送するためのフローエントリが含まれる。
【００３５】
さらに、各ノードのフローテーブルには、経路に対応するポートからパケットを出力できないときに使用される迂回動作用のフローエントリが含まれている。例えば、中継ノードであるノード２のフローテーブルには、「ポート２からパケットを出力できない場合にポート１から出力する」旨が定義されたフローエントリ（項番５）が含まれている。また、例えば、エッジノードであるノード１のフローテーブルには、「ポート２からパケットを出力できない場合にポート３から出力する」旨が定義されたフローエントリ（項番６）が含まれている。
【００３６】
したがって、例えば、ノード１とノード２との間のリンクに障害が発生し、ノード１がリンク障害を検出した場合には、ノード１は、端末Ａからの端末Ｃ宛のパケットの出力先のポートをポート２からポート３へ切り換える（パケットに適用するフローエントリを変更する）。これによって、端末Ｃ宛のパケットは、ノード４，ノード５の迂回経路を経由してノード６に達し、ノード６から端末Ｃへ転送される。ノード４及びノード５のフローテーブルは、パケットが迂回経路で転送されるためのフローエントリを含む。端末Ａと端末Ｃとの間だけでなく、端末Ａと端末Ｂとの間、端末Ｂと端末Ｃとの間にも、迂回経路を形成するためのフローエントリが迂回経路上のノードのフローテーブルに設定されている。このようにして、端末間の経路の冗長化が図られている。
【００３７】
図４は、図１〜図３を用いて説明したネットワークにおいて、端末Ａから端末Ｃへ送信されるパケットに関してノード２とノード３との間のリンクに障害が発生した場合における動作例（参考例）を示す。ノード２及びノード３は、リンク障害の監視機能を有し、リンク障害を検出すると、リンク障害の発生をコントローラ１０に通知する。
【００３８】
また、ノード２では、リンク障害によりポート２から端末Ｃ宛のパケット（“Request
”と呼ばれる）を出力できなくなる（ノード３へ送信できなくなる）ので、ノード２は、項番５のフローエントリに従って、端末Ｃ宛のパケットをポート１から出力する状態に遷移する（図４（１）参照）。この結果、ノード２がノード１から受信する端末Ｃ宛のパケットはノード２で折り返され、ノード１に戻される。
【００３９】
リンクの障害の検出は、障害の発生したリンクと接続されているノードにおいて検出され、障害が発生したリンクと接続されていないノードでは検出されない。したがって、ノード２で検出されるノード２−ノード３間のリンク障害は、ノード１では検出されない。このため、ノード２から端末Ｃ宛のパケットが折り返される状態になっても、ノード１は、項番３のフローエントリ（端末Ｃ宛のパケットをポート２から出力する）の使用を継続する（図４（２）参照）。従って、ノード１−ノード２間でループが発生する（図４（３）参照）。
【００４０】
コントローラ１０は、ノード２及びノード３の少なくとも一方からの通知を受けて、ノード１向けに「パケットが端末Ｃ宛の場合にポート３から出力する」旨の新たな（更新に係る）フローエントリを生成し、ノード１へ送信する。ノード１は、受信された新たなフローエントリをフローテーブルに登録し、当該フローエントリに従った動作を開始する。この結果、ノード１は、端末Ｃ宛のパケットをポート３から出力する状態に遷移する。
【００４１】
このようにして、パケットの転送経路が迂回経路に切り換えられる。しかし、障害が発生してから迂回経路に切り換えられる（障害から復旧する）までの間のループによって、ノード１とノード２との間に輻輳が発生したりパケットロスが発生したりするおそれがあった。
【００４２】
上記問題は、図４において、端末Ｂから端末Ｃへ送信されるパケットに関してノード２とノード３との間のリンクに障害が発生した場合に着目しても同様である。通常時では、
端末Ｂからの端末Ｃ宛のパケットは、ノード７からノード２を経てノード３へ転送される。ノード２は、ノード２とノード３との間のリンク障害を検出すると、ノード７から受信あれる端末Ｃ宛のパケットをノード１へ転送する。ところが、ノード１では、上記リンク障害は検出していないので、端末Ｃ宛のパケットをノード２へ送り返してしまう。従って、ループが発生し、上記問題が生じる。以下、上記した問題を解決し得る実施形態に係るネットワークシステムについて説明する。
【００４３】
図５は、実施形態に係るネットワークシステムの動作例の説明図である。図５に示すネットワークシステムの構成（リンクによるノード間、ノード−端末間の接続関係、各ノード１〜９が有するポートの構成など）は、図１と同じであるので説明を省略する。但し、各ノードが記憶するフローテーブルの内容が参考例と異なる。
【００４４】
実施形態に係るネットワークでは、以下のような事前準備が行われる。
（１）ネットワーク上の各ノード１〜９に、通常時に使用する経路を予め登録する。
（２）ネットワーク上の各ノード１〜９に、障害発生時の切換え経路を予め登録する。
（３）ネットワーク上の中継ノードとして動作する各ノードには、障害が発生していないポートから受信したデータには、障害ラベルを付加し、パケットを受信したポートと同じポートに出力する設定を、予め登録する。
（４）ネットワーク上のエッジノードとして動作する各ノードに、障害ラベル付きのデータ（パケット）を受信されたときの経路を予め登録する。障害ラベルとして、例えばＭＰＬＳなどを利用し、上位１ビット“１”とした任意の値などに設定し、エッジノードで障害ラベル付きのパケットと認識できるようにする。障害ラベル付きのパケットを受信した場合の経路へパケットを転送する実行アクションには、障害ラベルも外す処理を加えても良い。
【００４５】
上記（１）〜（４）の登録は、例えば、コントローラ１０が自律的に、又は運用者の操作に応じて各ノード１〜９に対応するフローテーブルを供給することで行うことができる。或いは、運用者が各ノード１〜９に対してマニュアルでフローテーブルを設定することで行うこともできる。
【００４６】
障害発生時には、以下のような動作が行われる。
（５）障害を検出したノードは、上記（２）で予め登録された切り換え経路を使用し、通信を継続する。
（６）障害を検出したノードが中継ノードである場合は、上記（３）で登録された設定を使用し、パケットに障害ラベルを付加し、当該パケットを受信したポートから出力する。（７）障害ラベル付きパケットを受信したエッジノードは、（４）で登録された経路にパケットを送信する。この時、パケットから障害ラベルを外す。
（８）（７）の後、コントローラ１０から経路切り替え指示を受けとり、正式な代替経路に切り替える。
なお、障害発生時の送受信断の判断は、受信不能を検出した場合に送信も不能と判断することができる。
【００４７】
上記障害発生時の動作を具体的に説明する。図５に示すネットワークシステムにおいて、参考例と同様に、端末Ａから端末Ｃ宛に送信されるパケットの経路上にあるノード１とノード２に着目する。
【００４８】
ノード１は、「データの転送先として、第１経路と第２経路とを有する中継装置」，「第１中継装置」の一例である。ノード１のポート２以降のパケットの転送経路（ノード２，ノード３，ノード６）は「第１経路」の一例である。ノード１のポート３以降のパケットの転送経路（ノード４，ノード５，ノード６）は「第２経路」の一例である。ノード２
は、「第１経路上にある他の中継装置」，「第２中継装置」の一例である。
【００４９】
ノード２とノード３との間のリンクに障害が発生（例えばリンクが切断）した場合を仮定する。この場合、ノード２は、リンクの障害を検出すると、端末Ｃ宛のパケットを既定のポートから出力できない。すなわち、端末Ｃ宛のパケットを既定の方路（第１経路に対応する方路）へ出力できない。このため、ノード２は、当該パケットに障害ラベルを付加し、当該パケットの受信ポート（ポート１）から出力する（図５（１）参照）。これにより、障害ラベルが付加されたパケットがノード１へ転送される。障害ラベルは、障害の発生を示す識別子である。障害ラベルは、「第１経路に対応する方路に転送できないことを示す情報」、「障害識別子」の一例である。パケットは、「データ」の一例である。
【００５０】
ノード１では、障害ラベルが付加されたパケットが受信された場合には、障害ラベルをパケットから削除するとともに、障害ラベルが付加されたパケットについて事前に登録されたポートからパケットを出力する（図５（２）参照）。すなわち、ノード２は、パケットが迂回経路である第２経路へ転送される。
【００５１】
図５の例では、ノード１は、端末Ｃ宛のパケットに障害ラベルが付加されている場合には、ポート２ではなくポート３からパケットを出力する。これによって、ノード２からノード１へ折り返された端末Ｃ宛のパケットは、迂回経路であるノード４へ転送される。従って、ループによる輻輳やパケットロスを抑えることができる。  
【００５２】
以下、ノード２及びノード１が上記した動作を行うための構成について説明する。  図６は、コントローラ１０の構成例を示す図であり、図７は、各ノード１〜９として動作可能なノード２０の構成例を示す図である。図６において、コントローラ１０は、処理部１１と、処理部１１にそれぞれ接続された記憶部１２，ノード通信部１３（通信部１３），入出力装置（Input/Output：Ｉ／Ｏ）１４とを含んでいる。
【００５３】
処理部１１は、パケット処理規則制御計算部（フロー制御計算部）１１１（以下、「計算部１１１」と表記）と、パケット処理規則制御生成部１１２（以下、「生成部１１２」と表記）と、メッセージ処理部１１３とを含んでいる。
【００５４】
計算部１１１は、例えば、図５に示したネットワークに接続された端末間の経路計算等を行う。生成部１１２は、例えば経路計算結果に基づき、各ノードに記憶させる単数又は複数のフローエントリ（すなわち、フローテーブル）を生成する。
【００５５】
メッセージ処理部１１３は、各ノードと通信するためのメッセージを生成したり、各ノードから受信されるメッセージに係る処理を実行したりする。例えば、メッセージ処理部１１３は、各ノードへフローテーブルを送信する処理を行う。また、メッセージ処理部１１３は、障害などの通知メッセージの受信時に、迂回経路を計算部に計算させる。迂回経路の計算結果は、生成部１１２にて用いられ、生成部１１２は、迂回経路に対応するノード向けの更新に係るフローエントリを生成する。メッセージ処理部１１３は、更新に係るフローエントリを対応する各ノードへ送信する処理を行う。パケット処理規則制御は、フローテーブルを指す。
【００５６】
記憶部１２は、受信メッセージ記憶部１２１（以下「記憶部１２１」と表記）と、パケット処理規則制御記憶部１２２（以下「記憶部１２２」と表記）とを含む。記憶部１２１は、各ノードから受信されるメッセージを記憶する。記憶部１２２は、各ノードのフローテーブルを記憶する。
【００５７】
入出力装置１４は、保守者の端末１５と接続される。端末１５は、入力装置と出力装置
とを含む。入力装置は、例えば、キー，ボタン，マウス等のポインティングデバイス，タッチパネル等を含む。出力装置は、例えば、ディスプレイ装置やプリンタを含む。入出力装置は、端末１５から入力されたコントローラ１０の操作指示を処理部１１に入力する。例えば、計算部１１１は、端末１５から入力された経路の計算指示に従って、端末間の経路や、迂回経路の計算を行う。ノード通信部１３は、ノード１〜ｎ（ｎは正の整数）と通信回線を介して接続され、各ノードとメッセージの送受信などを行う。
【００５８】
記憶部１２は、例えば、揮発性記憶媒体と不揮発性記憶媒体とを含むメモリを用いて形成される。揮発性記憶媒体は、例えばRandom Access Memory（ＲＡＭ）を含む。不揮発性記憶媒体は、例えば、Read Only Memory（ＲＯＭ），ハードディスク（ＨＤＤ），Solid State Drive（ＳＳＤ），Electrically Erasable Programmable Read-Only Memory（ＥＥＰＲＯＭ），フラッシュメモリなどを含む。揮発性記憶媒体は、例えば、プロセッサの作業領域，データの記憶領域，通信データのバッファ領域として使用される。不揮発性記憶媒体は、プロセッサによって実行されるプログラムや、プログラムの実行に際して使用されるデータを記憶する。
【００５９】
処理部１１は、例えば、プロセッサを用いて形成される。プロセッサは、Central Processing Unit（ＣＰＵ），Digital Signal Processor（ＤＳＰ）などを含む。プロセッサ
が記憶部１２（メモリ）に記憶されたプログラムを実行することによって、プロセッサは、計算部１１１，生成部１１２，メッセージ処理部１１３を含む処理部１１として動作する。
【００６０】
但し、処理部１１によって行われる動作、例えば、計算部１１１，生成部１１２，メッセージ処理部１１３の少なくとも１つで行われる処理は、電気・電子回路や半導体デバイスを用いて形成することができる。例えば、半導体デバイスは、集積回路（ＩＣ，ＬＳＩ，Application Specific Integrated Circuit（ＡＳＩＣ）など），Field Programmable Gate Array（ＦＰＧＡ）のようなプログラマブルロジックデバイスを含む。
【００６１】
入出力装置１４として、適宜のＩ／Ｏデバイスが使用される。ノード通信部１３は、例えば、ＬＡＮカードやネットワークインタフェースカード（ＮＩＣ）のような通信インタフェース装置を用いて形成される。
【００６２】
なお、コントローラ１０は、パーソナルコンピュータ，サーバマシンのような汎用コンピュータ、或いは専用のコンピュータのプロセッサ（ＣＰＵなど）がプログラムを実行することにより、当該コンピュータがコントローラ１０として動作するものであっても良い。或いは、コントローラ１０は、プログラムの実行によりコンピュータ上に形成される仮想マシンであっても良い。
【００６３】
図７において、ノード２０は、処理部２１と、処理部にそれぞれ接続された、記憶部２２，通信部２３，入出力装置２４，コントローラ通信部２５を含んでいる。記憶部２２は、受信パケット記憶部（バッファ）２２１（以下「バッファ２２１」と表記）と、パケット処理規則制御記憶部（フローテーブル記憶部）２２２（以下「記憶部２２２」と表記）とを含む。バッファ２２１は、各ノードから受信されるパケットを一時的に記憶するバッファである。記憶部２２２は、コントローラ１０から送信（提供）されたフローテーブルを記憶する。記憶部２２２は、記憶部１２について説明したメモリを用いて形成可能である。処理部２１は、「制御部」の一例である。
【００６４】
通信部２３は、複数のポートを有し、各ポートには、他のノード或いは端末が接続される。通信部２３は、各ポートに接続されたリンク状態を監視し、リンク障害を検出する。リンクの監視は、例えば、物理リンクであるケーブルの接続・非接続に応じて変化する電
圧値の監視によって行うことができる。但し、障害の検出は、上記以外の手法によって行うこともできる。例えば、ノード間で生存確認メッセージを送受信する方法がある。リンク障害が検出された場合には、通信部２３は、障害の生じたリンクと接続されたポートの番号を含む障害発生の通知を処理部２１へ送る。
【００６５】
コントローラ通信部２５は、コントローラ１０との通信用のポートを有し、コントローラ１０との通信処理を司る。通信部２３及びコントローラ通信部２５として、例えば、ノード通信部１３について説明したような通信インタフェース装置を適用し得る。入出力装置２４は、保守者の端末２６と情報のやりとりを行うためのＩ／Ｏデバイス（インタフェース回路）である。
【００６６】
処理部２１は、メッセージ処理部２１１と、パケット処理規則比較部２１２（以下「比較部２１２」と表記）と、パケット処理部２１３と、タイマ２１４とを含んでいる。メッセージ処理部２１１は、コントローラ通信部２５を介してコントローラ１０と送受信されるメッセージに係る処理を行う。例えば、通信部２３にてリンク（ポート）の障害が検出された場合に、コントローラ１０向けの障害発生の通知のメッセージを生成する。当該メッセージは、コントローラ通信部２５を介してコントローラ１０へ送信される。
【００６７】
比較部２１２は、通信部２３で受信されるパケットと、フローテーブル中の各フローエントリ中のマッチ条件との比較を行い、パケットがマッチ条件を満たすフローエントリ（パケットに対応するフローエントリ）を特定する。
【００６８】
パケット処理部２１３は、パケットがマッチ条件を満たすフローエントリ中の「実行アクション」で定義された動作を行う。例えば、パケット処理部２１３は、所定のポートからパケットを出力する。タイマ２１４は、例えば、フローエントリのエージング（寿命がきたフローエントリの削除処理）などに使用される。
【００６９】
処理部２１は、処理部２１について説明したプロセッサを用いて形成することができる。また、処理部２１で行われる処理は、電気・電子回路や半導体デバイスを用いて実行することもできる。なお、コントローラ１０と同様に、汎用又は専用のコンピュータにおけるプロセッサがプログラムを実行することによって、当該コンピュータがノード２０として動作するものであっても良い。また、ノード２０は、プログラムの実行によって形成されるコンピュータ上の仮想マシンであっても良い。
【００７０】
図８及び図９は、実施形態のノード２０における処理を示すフローチャートである。図８に示す処理は、ノード２０の通信部２３で受信された各パケットについて実行される。
【００７１】
０１では、例えば、比較部２１２が、記憶部２２２に記憶されたフローテーブルを参照し、受信されたパケットがマッチ条件を満たすフローエントリがあるか否かを判定する。フローエントリがない場合には、処理が０６に進む。フローエントリがある場合には、処理が０２に進む。
【００７２】
なお、フローテーブルにおいて、パケットがマッチ条件を満たす複数のフローエントリが存在する場合、フローエントリの適用は、例えば、フローエントリの登録順でなされる。すなわち、各フローエントリとパケットとの比較は登録順で行われ、パケットとマッチする（パケットがマッチ条件を満たす）フローエントリのうち、登録順が最上位のフローエントリ中の実行アクションが実施される。０１では、このようなフローエントリが特定される。
【００７３】
０２では、パケット処理部２１３が、０１で特定されたフローエントリで定義されたパ
ケットの出力先のポート番号を取得する。図９は、０２の処理の詳細を示すフローチャートである。
【００７４】
０２１において、パケット処理部２１３は、フローエントリ中のマッチ条件が障害ラベルの存在を定義しているか否かを判定する。障害ラベルの存在が定義されている場合には（０２１，Ｙ）、０２３に処理が進み、そうでない場合には（０２１，Ｎ）、処理が０２２に進む。０２に処理が進む場合、０１で特定されたフローエントリ中のマッチ条件には、障害ラベルの存在以外のマッチ条件（例えば、パケットの宛先が特定の端末である）が定義されている。
【００７５】
０２２では、パケット処理部２１３は、フローエントリ中の「実行アクション」で定義された出力先のポートからパケットを出力することを決定する。
【００７６】
０２３では、パケット処理部２１３は、フローエントリ中の「実行アクション」で定義された、障害ラベルを削除し、障害ラベルがパケットに付加されている場合の出力先のポートからパケットを付加することを決定する。
【００７７】
０２４では、パケット処理部２１３は、０２２，０２３の処理で得られた出力先のノード番号を特定する。このようにして、０１で特定されたフローエントリで定義されたパケットの出力先のポート番号が取得される。その後、処理が０３に進む。
【００７８】
０３では、パケット処理部２１３は、パケットの出力先に相当するポート（リンク）が障害中か否かを判定する。当該判定は、例えば、通信部２３から処理部２１へ当該ポートの障害が通知されているか否かを以てなされる。出力先のポートが障害中の場合（即ち、第１経路に対応する方路へパケット（データ）を転送できない場合）には（０３，Ｙ）、処理が０５へ進む。出力先が障害中でない場合には（０３，Ｎ）、処理が０４へ進む。
【００７９】
０４では、パケット処理部２１３は、０２の処理で取得されたポート番号を有するポートからパケットを出力するように通信部２３に指示する。これによって、パケットがフローエントリで定義された出力先の方路へ転送される。但し、０２の処理の対象のパケットが障害ラベルを含むパケットである場合には、０４にて障害ラベルが削除される。
【００８０】
０５へ処理が進む場合では、出力先が障害中であって、出力先の方路へパケットが転送できない。このため、パケット処理部２１３は、０２の処理で取得したポート番号のポートからパケットを出力できないときのフローエントリを記憶部２２２中のフローテーブルから検出し、当該フローエントリの実行アクションで定義された動作を行う。実行アクションとして、本実施形態では、予めマッチ条件で指定された障害ラベルをパケットに付加し、当該パケットを受信したポートから出力することが定義される。０５の処理によって、障害ラベルが付加されたパケットが、受信ポートから出力される。
【００８１】
０６では、処理部２１は、フローエントリが存在しない場合の定義に従った動作を行う。例えば、パケットがマッチ条件を満たすフローエントリが存在しない場合には、処理部２１は、コントローラ１０に未定義の（対応するフローエントリのない）パケットを通知するメッセージ（Packet-inメッセージと呼ばれる）を生成し、コントローラ１０へ送る
。これにより、当該パケットに対応するフローエントリがコントローラ１０で生成され、ノード２０に供給される。或いは、フローエントリのないパケットは廃棄される場合もある。
【００８２】
なお、一例として、通信部２３で受信される全てのパケットは、一旦バッファ２２１に蓄積され、バッファ２２１から読み出される各パケットについて図８の処理が実行されて
も良い。もっとも、例えば、図８に示す処理のうち、０１，０２，０６の処理がバッファ２２１への記憶前に実行され、バッファ２２１から読み出されるパケットについて、０３，０４，０５の処理が実行されるようにしても良い。
【００８３】
図１０及び図１１は、図５に示したノード１〜９に設定（記憶）されるフローテーブルの一例を示す。各フローテーブルの設定は、運用者が端末１５を操作して各ノード１〜９に設定することができる。或いは、コントローラ１０がノード１〜９に設定しても良い。
【００８４】
中継ノードとして動作するノード２０（図５のノード３，ノード４，ノード５，ノード７，ノード８）には、宛先へ向かう方路のポートからパケットを出力できない場合に、障害ラベルを付加し、受信ポートからパケットを出力する旨の実行アクションが定義される。
【００８５】
例えば、ノード３のフローテーブルは、端末Ｃ宛のパケットを、既定の経路に対応するポート（ポート２）から出力できない場合に、所定の障害ラベルを当該パケットに付加し、受信ポート（ポート１）から出力することが定義されたフローエントリを含む。このような、障害ラベルの付加及び受信ポートからの出力が定義されたフローエントリを「障害通知エントリ」と称する。
【００８６】
また、エッジノードとして動作するノード２０（ノード１，ノード６，ノード９）のフローテーブルは、障害ラベルが付加されたパケットから障害ラベルを削除し、当該パケットを指定ポートから出力することが定義されたフローエントリを含む。
【００８７】
例えば、ノード１のフローテーブルは、ノード２で設定される障害ラベルが付加されたパケットから障害ラベルを外し（削除し）て、迂回経路のポート（ポート３）から出力することが定義されたフローエントリを含む。このような、障害ラベルの削除及び指定ポートからの出力が定義されたフローエントリを「経路切替エントリ」と称する。
【００８８】
中継ノード及びエッジノードとして動作するノード２０（ノード２）のフローテーブルには、上記した障害通知エントリ及び経路切替エントリの双方が登録される。例えば、ノード２のフローテーブルは、端末Ｃ宛のパケットをポート２から出力できない場合に障害ラベルを付加し、当該パケットを受信ポート（ポート１）から出力することが定義された障害通知エントリを含む。また、ノード２のフローテーブルは、指定の障害ラベルがある場合に障害ラベルを外して指定ポートから出力する経路切替エントリを含む。
【００８９】
図１０及び図１１に示すノード１〜９のフローテーブルにおいて、障害通知エントリ及び経路切替エントリはこれら以外のエントリよりも太字で示されている。
【００９０】
図１２は、実施形態のネットワークシステムで使用されるパケット（フレーム）のフォーマット説明図である。図１２（ａ）は、Multi-Protocol Label Switching（ＭＰＬＳ）ラベルがないフレームのフォーマットを示し、図１２（ｂ）は、ＭＰＬＳラベル付きのフレームのフォーマットを示す。
【００９１】
ＭＰＬＳラベルがないフレームでは、ＩＰパケット（ＩＰｖ４又はＩＰｖ６パケット）パケットに、タイプフィールド（２バイト）と、各６バイトの送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスとが付加される。タイプフィールドには、ＭＰＬＳラベルを含まない場合の値が設定される。
【００９２】
これに対し、ＭＰＬＳラベルが付加される場合には、ＩＰパケットとタイプフィールドとの間に４バイトのＭＰＬＳラベルフィールドが挿入される。ＭＰＬＳラベルフィールド
は、８ビットのTime To Live（ＴＴＬ）フィールドと、１ビットのＳフィールドと、３ビットの実験用フィールドと、ラベルフィールドとを含む。Ｓフィールドの１ビットは、値“０”がラベル継続ありを示し、値“１”がラベル継続なしを示す。
【００９３】
ラベルフィールドには、２０ビットのラベル値が設定される。本実施形態では、一例として、ラベル値の最上位ビットが“１”に設定される。最上位ビット“１”のラベル値は、障害ラベルであることを示す。最上位ビット以外の各ビットには、任意の値が設定される。最上位ビット以外のビットの値を変えることで、障害ラベルを一意に識別することができる。
【００９４】
また、ＭＰＬＳラベルが含まれている場合には、タイプフィールドの値として、ＭＰＬＳラベルがない場合の値と異なる値が設定される。なお、実施形態では、ＭＰＬＳラベルを障害の発生を示す識別子として使用する例について説明している。但し、フレーム（パケット）に障害の発生を示す識別子を付加できる限りにおいては、ＭＰＬＳラベルの代わりに仮想ＬＡＮ（ＶＬＡＮ）タグを用い、ＶＬＡＮタグ中のＶＬＡＮ識別子を障害発生を示す識別子として使用することもできる。
【００９５】
上記したコントローラ１０，ノード２０，フローテーブル，及びフレームの構成を踏まえて、図５に示した動作例を説明する。通常時において、ノード１として動作するノード２０では、通信部２３が端末Ａから端末Ｃ宛のパケットを受信すると、ノード１の処理部２１の比較部２１２が、項番７のフローエントリを特定する。パケット処理部２１３は、特定されたフローエントリに基づきパケットをポート２から出力する。これによって、図１３（ａ）に示すようなパケットがノード１からノード２へ転送される。
【００９６】
通常時において、ノード２として動作するノード２０では、処理部２１（比較部２１２及びパケット処理部２１３）は、ノード１から受信された端末Ｃ宛のパケットを、フローテーブル中の項番５のフローエントリ（図１０）に基づき、ポート２から出力する。これにより、パケットはノード３へ転送される。
【００９７】
ノード２とノード３との間のリンクが切断される（障害が発生する）と、ノード２の通信部２３は、ポート２の障害を検出する。障害は、通信部２３から処理部２１に通知される。処理部２１のメッセージ処理部２１１は、コントローラ１０向けの障害発生通知を生成する。障害発生通知は、コントローラ通信部２５を介してコントローラ１０へ送信される。なお、障害を検出したノード３でも同様の動作が行われ、障害発生通知がコントローラ１０へ送信される。
【００９８】
ノード２でリンクの障害が検出されると、処理部２１のパケット処理部２１３は、パケットをポート２から出力できないと判定する（図８，Ｙ）。ノード２は、エッジノード及び中継ノードとして動作するので、障害通知エントリがフローテーブルに予め含まれている。このため、比較部２１２は、パケットとマッチ条件との比較に基づき障害通知エントリ（項番７）を特定する。
【００９９】
パケット処理部２１３は、障害通知エントリに基づき、図１３（ｂ）に示すような障害ラベル付きのパケットを生成する。すなわち、パケット処理部は、障害ラベル「10000000000000000010」を含むラベルフィールドがＩＰパケットとタイプフィールドとの間に挿入され、タイプフィールドの値が“0x0800”から“0x8847”に変更されたパケットを、ポート１から出力する。これによって、障害ラベル付きのパケットがノード１へ送信される。
【０１００】
ノード１では、ノード２とノード３との間のリンク障害は検出されないので、ノード１は、項番５のフローエントリの使用を継続する。しかし、ノード２から障害ラベル付きの
パケットを受信すると、以下の動作が行われる。
【０１０１】
ノード１の処理部２１は、パケットのタイプフィールドの値を参照して、パケットにラベルが付加されているか否かを判定する。パケットにラベルが付加されている場合には、比較部２１２は、障害ラベルの存在をマッチ条件とするフローエントリ（経路変更エントリ）を検索する。ノード１は、エッジノードとして動作するノードであるので、経路変更エントリが予めフローテーブルに含まれている。
【０１０２】
したがって、比較部２１２の探索によって、パケット中の障害ラベル「10000000000000000010」とマッチする項番１の経路変更エントリ（図１０）が検出（特定）される。なお、経路変更エントリの登録順（項番１）は、通常時のフローエントリ（項番５）より上位であるので、項番１が優先的に使用される。
【０１０３】
パケット処理部２１３は、検出された経路変更エントリの実行アクションの定義に従い、障害ラベル（ラベルフィールド）を佐パケットから削除する。これによって、パケットが図１３（ａ）に示す状態となる。そして、パケット処理部２１３は、実行アクションにて指定されたポート（ポート３）からパケットを出力する。これによって、ノード１において、端末Ｃ宛のパケットの経路が迂回経路に切り換えられ、ノード４，ノード５，ノード６を経て端末Ｃに転送される。
【０１０４】
図１４は、コントローラ１０によるフローテーブルの更新（迂回路に切り換えるフローエントリの供給）による復旧動作の例を示す。図１５及び図１６は、コントローラ１０によって更新されるフローテーブルの例を示す。図５で説明した動作例において、ノード２及びノード３からの障害発生通知を受信したコントローラ１０は、以下の動作を行う。
【０１０５】
すなわち、障害発生通知は、ノード通信部１３を介して処理部１１のメッセージ処理部１１３へ渡される。メッセージ処理部１１３は、障害発生通知を解析する。この結果、ノード２とノード３とのリンク障害が、入出力装置１４を介して端末１５のディスプレイに表示される。運用者は、端末１５から、端末Ａから端末Ｃへの経路をノード１，ノード２，ノード３，ノード６からノード１，ノード４，ノード５，ノード６に切り換える指示を端末に入力し、当該指示は、入出力装置１４を介して処理部１１に入力される。
【０１０６】
すると、生成部１１２が、経路の切り替えに係る（更新に係る）フローエントリを生成し、生成したフローエントリを含むフローエントリの更新指示を関係する各ノードへノード通信部１３を介して送信する。また、記憶部１２２に記憶されたフローテーブルも、生成されたフローエントリに合わせて更新される。なお、更新に係るフローエントリの作成は、例えば、記憶部１２に記憶された経路情報を元に、処理部１１が自律的に実行するようにしても良い。すなわち、端末１５からの指示無く実行されるようにしても良い。
【０１０７】
例えば、図１５に示すように、ノード１に対しては、項番７のフローエントリ（図１０）を削除して更新に係るフローエントリ（端末Ｃ宛のパケットについてポート３から出力する）に更新するための更新指示が送信される。また、ノード２に対しては、項番５のフローエントリ（図１０）を削除して更新に係るフローエントリ（端末Ｃ宛のパケットをポート１から出力する）に更新するための更新指示が送信される。また、図１６に示すように、ノード６に対しては、項番５，６のフローエントリ（図１１）を削除して更新に係るフローエントリ（端末Ｂ及び端末Ｃ宛のパケットをポート３から出力する）に更新するための更新指示が送信される。
【０１０８】
ノード１，ノード２，ノード６のそれぞれで、更新指示に従ったフローテーブルの更新が行われると、図１４に示すように、更新されたフローエントリに基づくパケット転送が
開始される。これにより、障害ラベルが付加されたパケットがノード２からノード１へ送信されなくなり、ノード１は、端末Ｃ宛のパケットをノード２では無く、迂回経路（迂回ルート）のノード４へ転送するようになる。このように、正式な迂回経路の設定がなされるまでの間、障害ラベルを用いた迂回経路へのパケット転送が行われることで、ループによる影響を抑えることができる。
【０１０９】
また、端末Ｂから端末Ｃ宛に送信されるパケットについても、端末Ａから端末Ｃ宛に送信されるパケットに関する作用効果と同様の作用効果を得ることができる。また、詳細な説明は省略するが、端末Ｃから端末Ｂ宛に送信されるパケットについて、ノード３がノード２と同様の処理を行い、ノード６がノード５と同様の処理を行う。これによって、ノード６における端末Ｂ宛のパケットの出力先がポート２からポート３に変更されることによって、ノード６とノード３との間で生じるループによる影響も抑えることができる。
【０１１０】
実施形態に係るネットワークシステム（ＳＤＮネットワーク）では、中継ノードとして動作する各ノードに対し、或る宛先向けのパケットを既定の方路へ送信するためのフローエントリが設定（登録）される。さらに、中継ノードとして動作する各ノードに対し、既定の方路へ送信できない場合に、障害発生を示す識別子が付加されたパケットを、その受信ポートから出力する（パケットの送信元へ送り返す）ためのフローエントリ（障害通知エントリ）が設定（登録）される。
【０１１１】
一方、実施形態では、或る宛先への分岐経路（第１の方路と第２の方路）を有するエッジノードとして動作する各ノードに対し、或る宛先向けのパケットを既定の方路へ送信するためのフローエントリが設定（登録）される。さらに、各エッジノードには、障害発生を示す識別子が付加されたパケットの受信時に、当該パケットから識別子を削除して指定されたポートから出力する（指定された方路へ送信する）ためのフローエントリ（経路切替エントリ）が設定される。
【０１１２】
中継ノードとして動作しエッジノードとして動作しない各ノードには、経路切替エントリは設定されない。したがって、障害発生を示す識別子が付加されたパケットを受信した中継ノードは、当該パケットの分岐経路を有するエッジノードへ向けて転送する動作を行う。
【０１１３】
上記のように、実施形態では、リンク障害やリンク障害以外の障害等によって、或る宛先へのパケットを或る中継ノードから既定の方路へ転送できなくなった場合に、当該パケットを或る宛先に係る分岐経路を有するエッジノードまで折り返す。このため、中継ノードには障害通知エントリが予め設定される。一方、エッジノードに対しては、折り返されたパケットを迂回経路の方路に転送するための経路切替エントリが予め設定される。そして、折り返しのパケットには、経路切替エントリに従ってエッジノードが動作するために、障害発生を示す識別子である障害ラベルが付加される。
【０１１４】
これらの構成によって、ノード２からノード１へ折り返されたパケットを迂回経路のノード４へ転送することができる。これにより、ノード１とノード２との間のパケットのループで輻輳が生じたりパケットがロスしたりすることを抑えることができる。
【０１１５】
実施形態では、ネットワークにおけるパケットの転送に使用されていないＭＰＬＳラベルを用いて障害発生をエッジノードへ通知する構成を採用している。パケットの所定フィールドへ障害発生を示す情報を格納する場合には、そのような情報を認識するための独自のプロトコルが必要となる。これに対し、ＭＰＬＳフィールドの有無判定やＭＰＬＳラベル値の判定は、既存のＭＰＬＳプロトコルを流用できるので、障害発生の通知に要する開発工数や開発規模を小さくすることができる。当該効果は、ＭＰＬＳフィールドの代わり
にＶＬＡＮタグを使用する場合でも同様である。
【０１１６】
実施形態では、経路変更エントリに基づく動作で障害ラベルがパケットから削除される。迂回経路への転送により障害ラベルが不要となるので、障害ラベルの削除を行うことで、障害ラベルが転送先のノードで想定外の誤作動を起こす可能性をなくすことができる。上述した実施形態の構成は、適宜組み合わせることができる。
【符号の説明】
【０１１７】
１〜９，２０・・・ノード
１０・・・コントローラ
１１，２１・・・処理部
１２，２２・・・記憶部
１３・・・ノード通信部
１４，２４・・・入出力装置
２３・・・通信部
２５・・・コントローラ通信部
【図１】
2017055324.tif 000004
【図２】
2017055324.tif 000005
【図３】
2017055324.tif 000006
【図４】
2017055324.tif 000007
【図５】
2017055324.tif 000008
【図６】
2017055324.tif 000009
【図７】
2017055324.tif 000010
【図８】
2017055324.tif 000011
【図９】
2017055324.tif 000012
【図１０】
2017055324.tif 000013
【図１１】
2017055324.tif 000014
【図１２】
2017055324.tif 000015
【図１３】
2017055324.tif 000016
【図１４】
2017055324.tif 000017
【図１５】
2017055324.tif 000018
【図１６】
2017055324.tif 000019