(57)【要約】一実施形態において、通信ネットワークについてのネットワークフローの所定のサブセットと共に使用するための方法が開示され、ネットワークは、制御プレーン、転送プレーン、及び１つ又は複数のコントローラを含む。本方法は、ネットワーク情報の識別のために転送ルールを転送要素にインストールするステップであって、転送ルールが１つ又は複数の別の制御フローにグループ化され、１つ又は複数の制御フローの各々が、前記各制御フローの転送ルールに従って、ネットワークの少なくとも一部を通じて閉ループウォークを作成する、インストールするステップと、１つ又は複数の制御フローについてのトラフィックを転送プレーンに投入するステップと、トラフィックの投入の結果に基づいて、ネットワーク情報を識別するステップとを含む。【選択図】図１Ａ
2015533049.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークについてのネットワークフローの所定のサブセットと共に使用するための方法であって、前記ネットワークが、制御プレーン、転送プレーン、及び１つ又は複数のコントローラを含む、前記方法が、
ネットワーク情報の識別のために転送ルールを前記転送要素にインストールするステップであって、前記転送ルールが１つ又は複数の別の制御フローにグループ化され、前記１つ又は複数の制御フローの各々が、前記各制御フローの前記転送ルールに従って、前記ネットワークの少なくとも一部を通じて閉ループウォークを作成する、インストールするステップと、
１つ又は複数の制御フローについてのトラフィックを前記転送プレーンに投入するステップと、
前記トラフィックの投入の結果に基づいて、前記ネットワーク情報を識別するステップと、
を含む、方法。
【請求項２】
前記ネットワーク情報が、リンク障害、トポロジ接続性、及びネットワークフローの所定のサブセットのルーティング可能性から成る群のうちの１つ又は複数を含む、請求項１に記載の方法。
【請求項３】
前記転送ルールが、任意のネットワークトポロジグラフの接続性を検証するためのものである、請求項１に記載の方法。
【請求項４】
前記転送ルールが、前記トポロジグラフによって表されるネットワークトポロジにおいて転送プレーンの各リンクを横断する制御フローを構築することによって、前記任意のネットワークトポロジグラフの接続性を検証する、請求項３に記載の方法。
【請求項５】
オイラー周期が前記転送プレーンの前記トポロジグラフに存在する場合、オイラー周期を算出するステップと、
最小長の周期を算出するステップと、
静的ルールをインストールして、算出された前記最小長の周期に従って１つ又は複数の制御パケットをルーティングするステップと、
前記ルーティングループの任意のポイントにおいて動的ループバックルールをインストールして、前記コントローラによって投入される前記制御フローパケットを、各パケットが１つの完全な周期を完了した後に前記コントローラに返送するステップと、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記最小長の周期を算出するステップが、中国人郵便配達問題を解決するステップを含む、請求項５に記載の方法。
【請求項７】
前記転送ルールが、前記転送プレーンの各リンクを横断する制御フローを構築することによって、任意のネットワークトポロジグラフの接続性を検証するためのものである、請求項１に記載の方法。
【請求項８】
前記転送プレーンの各リンクを横断する制御フローを構築することが、
リンク隣接グラフを作成することと、
重み付けされた完全なトポロジグラフを作成することと、
前記重み付けされた完全なトポロジグラフでハミルトン周期を算出することと、
前記ハミルトン周期に基づいて、前記制御フローについての転送ルールを導くことと、
を含む、請求項７に記載の方法。
【請求項９】
前記転送ルールが、リンク障害を検出するために使用される、請求項１に記載の方法。
【請求項１０】
リンク障害を検出することが、
論理リングトポロジを算出することと、
制御フローを構築するためのルーティングルールをインストールして、前記論理リングトポロジを第１の方向でループすることであって、前記第１の方向が、時計回りの方向又は反時計回りの方向である、ループすることと、
制御フローを構築するためのルーティングルールをインストールして、前記論理リングトポロジを前記第１の方向と反対の第２の方向でループすることと、
バウンスバック（bounce  back）ルールをインストールして、制御フローのルーティングを前記第１の方向と反対の第２の方向に切り替えることと、
を含む、請求項９に記載の方法。
【請求項１１】
前記転送ルールが、ネットワークフローのルーティング可能性を検証するために使用される、請求項１に記載の方法。
【請求項１２】
前記転送ルールが、ネットワークフローの実行パイプラインを通過する転送制御フローと、前記転送制御フローの反対向きのパスに従うと共に、前記転送制御フローが開始するネットワークコントローラにおいて終了する前記ネットワークフローの出口スイッチによって反射される反対向きの制御フローとに対応する、請求項１１に記載の方法。
【請求項１３】
制御プレーン、転送要素を備える転送プレーン、及び１つ又は複数のコントローラを含む複数のノードのネットワークトポロジと、
１つ又は複数の制御フローについてのトラフィックを前記転送プレーンに投入し、前記トラフィックの投入の結果に基づいて、ネットワーク情報を識別するように動作可能な前記コントローラのうちの少なくとも１つと、
を備え、
前記転送要素が、前記ネットワーク情報の識別のための転送ルールを有し、前記転送ルールが１つ又は複数の別の制御フローにグループ化され、前記１つ又は複数の制御フローの各々が、前記各制御フローの前記転送ルールに従って、前記ネットワークの少なくとも一部を通じて閉ループウォークを作成する、
通信ネットワーク。
【請求項１４】
前記ネットワーク情報が、リンク障害、トポロジ接続性、及びネットワークフローの所定のサブセットのルーティング可能性から成る群のうちの１つ又は複数を含む、請求項１３に記載の通信ネットワーク。
【請求項１５】
前記転送ルールが、任意のネットワークトポロジグラフの接続性を検証するためのものである、請求項１３に記載の通信ネットワーク。
【請求項１６】
前記少なくとも１つのコントローラが、
オイラー周期が前記転送プレーンの前記トポロジグラフに存在する場合、オイラー周期を算出し、
最小長の周期を算出し、
静的ルールをインストールして、算出された前記最小長の周期に従って１つ又は複数の制御パケットをルーティングし、
前記ルーティングループの任意のポイントにおいて動的ループバックルールをインストールして、前記コントローラによって投入される前記制御フローパケットを、各パケットが１つの完全な周期を完了した後に前記コントローラに返送する
ことによって、前記ネットワークトポロジの接続性を検証する、請求項１５に記載の通信ネットワーク。
【請求項１７】
前記最小長の周期を算出することが、中国人郵便配達問題を解決することを含む、請求項１６に記載の通信ネットワーク。
【請求項１８】
前記転送ルールが、前記ネットワークトポロジグラフの接続性を検証するために使用される、請求項１３に記載の通信ネットワーク。
【請求項１９】
前記少なくとも１つのコントローラが、
リンク隣接グラフを作成し、
重み付けされた完全なトポロジグラフを作成し、
前記重み付けされた完全なトポロジグラフでハミルトン周期を算出し、
前記ハミルトン周期に基づいて、前記制御フローについての転送ルールを導く
ことによって、前記転送プレーンの各リンクを横断する制御フローを構築する、請求項１８に記載の通信ネットワーク。
【請求項２０】
前記転送ルールが、リンク障害を検出するために使用される、請求項１３に記載の通信ネットワーク。
【請求項２１】
前記少なくとも１つのコントローラが、
論理リングトポロジを算出し、
制御フローを構築するためのルーティングルールをインストールして、前記論理リングトポロジを第１の方向でループし、前記第１の方向が、時計回りの方向又は反時計回りの方向であり、
制御フローを構築するためのルーティングルールをインストールして、前記論理リングトポロジを前記第１の方向と反対の第２の方向でループし、
バウンスバック（bounce  back）ルールをインストールして、制御フローのルーティングを前記第１の方向と反対の第２の方向に切り替える
ことによって、リンク障害を検出する、請求項２０に記載の通信ネットワーク。
【請求項２２】
前記転送ルールが、ネットワークフローのルーティング可能性を検証するために使用される、請求項１３に記載の通信ネットワーク。
【請求項２３】
前記転送ルールが、ネットワークフローの実行パイプラインを通過する転送制御フローと、前記転送制御フローの反対向きのパスに従うと共に、前記転送制御フローが開始するネットワークコントローラにおいて終了する前記ネットワークフローの出口スイッチによって反射される反対向きの制御フローとに対応する、請求項２２に記載の通信ネットワーク。
【請求項２４】
ネットワークトポロジにおけるリンク障害を突き止めるための方法であって、前記方法が、
論理リングトポロジのノードにループバックルールをインストールするステップと、
前記論理リングトポロジに対して二分検索を実行するステップであって、
前記論理リングのノードを選択し、
制御パケットを前記リングを通じて第１の方向で送信し、
前記制御パケットを、選択された前記ノードにおいて前記リングを通じて、前記第１の方向の反対向きである第２の方向にバウンスバック（bounce  back）し、
前記制御パケットを送信することに先立ってインストールされるループバックルールを介して前記コントローラにおいて前記制御パケットを受信する
ことによって、前記二分検索を実行するステップと、
を含む、方法。
【請求項２５】
複数のノードを有するネットワークトポロジにおけるリンク障害を突き止める方法であって、前記方法が、
複数の制御パケットの各々について前記ネットワークにおけるバウンスバック（bounce  back）ポイントを特定するステップと、
前記ネットワークを表す構築された論理リングの１つ又は複数のポイントから前記複数の制御パケットを送信するステップと、
前記複数の制御パケットの受信が成功したか否かに基づいて、リンク障害検出決定を行うステップと、
を含む、方法。
【発明の詳細な説明】
【優先権】
【０００１】
[0001]本特許出願は、２０１２年９月２０日に出願され、「Ａ  Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｏｐｏｌｏｇｙ  ａｎｄ  Ｐａｔｈ  Ｖｅｔｉｆｉｃａｔｉｏｎ  ｉｎ  Ｐａｒｔｉｔｉｏｎｅｄ  Ｏｐｅｎｆｌｏｗ  Ｎｅｔｗｏｒｋｓ」と題された、対応する特許仮出願第６１／７０３，７０４号、及び２０１３年３月２７日に出願され、「Ａ  Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｖｅｒｉｆｙｉｎｇ  Ｆｏｒｗａｒｄｉｎｇ  Ｐｌａｎｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ  ｉｎ  Ｓｐｌｉｔ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ」と題された特許仮出願第６１／８０５，８９６号の優先権を主張し、これらを参照によって組み込む。
【発明の分野】
【０００２】
[0002]本発明の実施形態は、ネットワークトポロジの分野に関し、より詳細には、本発明の実施形態は、ネットワーク（例えば、オープンフローネットワーク（ＯｐｅｎＦｌｏｗ  ｎｅｔｗｏｒｋｓ）、ソフトウェア定義ネットワーク（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｓ）等）におけるトポロジ及びパスを検証することに関する。
【発明の背景】
【０００３】
[0003]ソフトウェア定義ネットワークは、次世代のコアネットワーク、エッジネットワーク、及びデータセンタネットワークを定義する上で勢いを増している。キャリアグレードの運用（例えば、高い可用性、高速接続性、拡張性）のためには、広域ネットワークにおいて多数のコントローラをサポートすることが重要である。近年の地震において観測された停電を踏まえると、スマートフォンがネットワークの完全に接続された物理的に機能する一部としてネットワークに導入された後には、制御プレーンにおける障害及びエラーに対して細心の注意が払われるべきである。
【０００４】
[0004]様々な従来技術のネットワーキングシナリオ（例えば、フェイルオーバー、負荷分散、仮想化、複数権限）では、転送プレーンを動作させるために多数のコントローラが必要である。転送プレーンは、種々のドメインに分割され、種々のドメインの各々には、別個のコントローラが割り当てられる。転送プレーンの一貫したグローバルビューを維持するために、コントローラ間通信が必要とされる。このコントローラ間通信が中断されるか、又は遅い場合、各コントローラは、トポロジ接続性を検証し、コントローラ間通信に依存せずに、代わりに転送プレーンのプレインストールされた規則に依存してルーティングすることを望むことがある。
【０００５】
[0005]他の従来技術のネットワーキングシナリオでは、単一のコントローラが転送プレーン全体を管理し得るが、障害（例えば、構成エラー、過負荷状態のインタフェース、バグの多い実装、ハードウェア障害）に起因して、単一のコントローラがこの転送プレーンの一部を制御できなくなり得る。そのような状況において、コントローラは、転送プレーンのプレインストールされた規則に依存することがある。
【０００６】
[0006]既存の解決策の１つのセットは、おそらくはインストールされているがネットワークポリシーに準拠していない転送ルールに起因して、又は、おそらくは転送ルールを正確に実行していないことに起因して、完全に機能してはいるが振る舞いがおかしい転送要素を対象とする。これらのワークは、いまだに到達可能であり、（再）プログラム可能である物理的に正常なノード／インタフェースを備えるネットワークにおけるポリシー違反を発見又は防止するために、静的チェッカー、プログラミング言語、状態検証ツール等を提供する。したがって、これらは、主に、直交的な問題を解決する。既存のワークのうちの１つは、機能不全な転送要素（例えば、スイッチ又はインタフェース）を検出するが、転送プレーンを入力ポート及び出力ポートを備えるブラックボックスとして扱うエンドホスト間で検証メッセージが生成されることを必要とする。そのため、スイッチには検証ルールがプログラムされないので、これは、損失のある構成要素を検出するためのメカニズムをコントローラに提供しない。
【０００７】
[0007]既存のワークの別のセットは、デフォルトの転送ルールを事前にインストールして、制御ネットワーク及びコントローラサーバの過負荷を防止する。これらの事前対応のルールは、例えば、全ての送信トラフィックをデフォルトゲートウェイに向かわせ、未知若しくは不正なロケーションに由来するパケット及び／又は未知若しくは不正なロケーションを宛先等とするパケットを廃棄し得る。デフォルトの転送パスを有することは、パスがいまだ使用可能であるか否かを検証するためのコントローラについてのメカニズムが存在することを意味しないことに留意されたい。
【０００８】
[0008]別の関連するワークは、トポロジ発見に関する。ネットワークコントローラは、全てのスイッチポートにわたってフラッディングされるブロードキャストパケットを各スイッチに投入する。次のホップスイッチがこれらのパケットをネットワークコントローラに渡すと、コントローラは、スイッチ間の全てのリンクを推定する。制御ネットワークがパーティション化される場合、コントローラは、コントローラと同じパーティション内に存在しないスイッチからのパケットを投入又は受信することができない。したがって、それらのスイッチ間のリンクの正常性は、そのような力づくのアプローチによって検証されることができない。
【０００９】
[0009]関連するワークのさらに別のセットは、障害診断（又は障害検出）が監査証跡（ｍ−ｔｒａｉｌｓ（ｍｏｎｉｔｏｒｉｎｇ  ｔｒａｉｌｓ））を使用することによって行われる全光ネットワークにおいて現れる。ｍ−ｔｒａｉｌとは、予め構成される光パスである。監視光信号は、ｍ−ｔｒａｉｌの開始ノードから送出され、モニタは、終了ノードに取り付けられる。モニタが監視信号を受信し損なう場合、モニタは、その証跡に沿った何らかの（１つ又は複数の）リンクが障害を起こしたことを検出する。目的は、一定レベルまでの全てのリンク障害が一意に識別されることができるように、ｍ−ｔｒａｉｌのセットを最小限のコストで設計することである。モニタのロケーションは、先験的には知られておらず、リンク障害を識別することは、モニタがどこに位置するかに依存する。全光ネットワークにおいては、そのリンクを横断する全てのｍ−ｔｒａｉｌの合計帯域幅使用量によって測定されるリンク毎のコストが存在することにも留意されたい。
【００１０】
[0010]全光ネットワークにおける障害診断に非常に類似し、同じ基本的な違いを共有するグラフ制約グループ試験に関するワークも存在する。
【発明の概要】
【００１１】
[0011]ネットワークにおけるトポロジ及び／又はパスの検証のための方法及び装置が本明細書において開示される。一実施形態において、通信ネットワークについてのネットワークフローの所定のサブセットと共に使用するための方法が開示され、ネットワークは、制御プレーン、転送プレーン、及び１つ又は複数のコントローラを含む。本方法は、ネットワーク情報の識別のために転送ルールを転送要素にインストールすることであって、転送ルールが１つ又は複数の別の制御フローにグループ化され、１つ又は複数の制御フローの各々が、前記各制御フローの前記転送ルールに従って、ネットワークの少なくとも一部を通じて閉ループウォークを作成する、インストールすることと、１つ又は複数の制御フローについてのトラフィックを転送プレーンに投入することと、トラフィックを投入することの結果に基づいて、ネットワーク情報を識別することとを含む。
【００１２】
[0012]本発明は、以下に与えられる詳細な説明、及び本発明の様々な実施形態の添付の図面から、より完全に理解されるであろう。但し、添付の図面は、本発明を特定の実施形態に限定するものとみなされるべきではなく、説明及び理解のためのものであるにすぎない。
【図面の簡単な説明】
【００１３】
【図１Ａ】通信ネットワークインフラストラクチャの一実施形態のブロック図である。
【図１Ｂ】図１Ａのネットワークの別の図である。
【図１Ｃ】図１Ａのネットワークの別の図である。
【図１Ｄ】図１Ａのネットワークの別の図である。
【図２】制御プレーンにおける単一のインタフェースの機能不全が２つのパーティションにつながる場合を示す図である。
【図３】制御プレーンに１つのパーティションが存在し、転送プレーンにリンク障害が存在するシナリオを例示する図である。
【図４】図３において特定される障害シナリオに直面する際に、コントローラが、ネットワークフローはいまだにルーティングされ得るか否かを検証する状況を図示する図である。
【図５】制御フローについての転送ルールをインストールするために発生する一連のシグナリングの一実施形態を例示する図である。
【図６】転送プレーントポロジについての隣接グラフの一例の図である。
【図７】以前の段階における例示的なトポロジについてのそのようなサイクルの一例を例示する図である。
【図８】（Ａ）は、ウォークを算出し、そのウォークを、転送プレーンのスイッチにインストールされる転送ルールに変換するための方法の一実施形態を図示するフロー図である。（Ｂ）は、ウォークを算出し、そのウォークを、転送プレーンのスイッチにインストールされる転送ルールに変換するための方法の一実施形態を図示するフロー図である。
【図９】（Ａ）は、障害ロケーションを突き止める（即ち、検出段階）だけでなく、どの転送ルールがどのスイッチにインストールされるべきかを決定する（即ち、セットアップ段階）ためのプロセスの一実施形態を図示するフロー図である。（Ｂ）は、障害ロケーションを突き止める（即ち、検出段階）だけでなく、どの転送ルールがどのスイッチにインストールされるべきかを決定する（即ち、セットアップ段階）ためのプロセスの一実施形態を図示するフロー図である。
【図１０】再帰的分割の結果を提供する図である。
【図１１】図１Ｂ〜図１Ｄにおいて示される転送プレーンについての無向グラフ表現の一例を示す図である。
【図１２】図１１に示されるようなグラフを開始点として使用する仮想リングトポロジを構築するためのプロセスのフロー図である。
【図１３】図１２のプロセスを使用して構築される新たな最小限のグラフである。
【図１４】１つの取り得るオイラー周期及び論理リングトポロジを示す図である。
【図１５】トポロジ検証のためのプロセスの一実施形態のフロー図である。
【図１６】コントローラが転送要素を使用して制御パケットをそれらの対応する制御ドメインにおいて論理リングトポロジに投入する場合を示す図である。
【図１７】図１Ｂにおいて示される転送プレーンについてのグラフの一例を例示する図である。
【図１８】仮想リングトポロジを構築するための別のプロセスのフロー図である。
【図１９】任意のリンク障害の位置を突き止めるために使用される静的転送ルールのセットを算出するためのプロセスの一実施形態のフロー図である。
【図２０】図１１の無向グラフを仮定する図１Ｂ〜図１Ｄにおいて与えられるトポロジについての一例を示す図である。
【図２１】時計回りのウォーク及び反時計回りのウォークの双方についてバウンスバックルールが使用される場合を図示する図である。
【図２２】二分検索を実行するためのプロセスの一実施形態のフロー図である。
【図２３】これまでに使用されたリングトポロジの例での図２２において概説された二分検索メカニズムの三度の繰返しを示す。
【図２４】これまでに使用されたリングトポロジの例での図２２において概説された二分検索メカニズムの三度の繰返しを示す。
【図２５】これまでに使用されたリングトポロジの例での図２２において概説された二分検索メカニズムの三度の繰返しを示す。
【図２６】更新された二分検索を図示する図である。
【図２７】図２６における検索についての以前と同じ障害シナリオを例示する図である。
【図２８】図２６における検索についての以前と同じ障害シナリオを例示する図である。
【図２９】図２６における検索についての以前と同じ障害シナリオを例示する図である。
【図３０】システムのブロック図である。
【本発明の詳細な説明】
【００１４】
[0013]本発明の実施形態は、ソフトウェア定義ネットワーク（ＳＤＮ）におけるパーティション及びフォールトトレランスを提供する。転送要素及びネットワークトポロジの部分的な可視性及び制御性のみを有するネットワークコントローラは、パーティション及び障害の前の種々の転送要素（例えば、スイッチ、ルータ等）において転送ルールとしてインストールされる少数の検証ルールを使用することによって、どのエッジ、ノード又はパスがもはや使用可能ではないのかを推定することができる。
【００１５】
[0014]本発明の実施形態は、例えば、機能不全なハードウェア、ソフトウェアのバグ、構成エラー、及び一連の不測の事象等の様々な要素に起因するが、これらに限定されない、任意の大規模な分散システムにおいて発生する障害及び停電を克服する。ネットワークの転送の振る舞い及び動的ルーティング決定が外部のネットワークコントローラによって指令されるソフトウェア定義ネットワークにおいて、転送要素とコントローラとの間のそのような停電は、転送プレーンの入口ポイントと出口ポイントとの間に実際に機能している物理的接続性が存在しても、データプレーンにおける（例えば、インストールされた転送パスに沿ったスイッチ又はリンクの故障に起因する）瞬間的な接続性の喪失、又は（例えば、転送ルールがタイムアウトし、又は削除される）最終的な接続性の喪失をもたらす。本発明の実施形態によって識別及び／又は解決される、可用性を阻む問題は、（ｉ）コントローラによる転送プレーンにおけるエラーの可視性の欠如、及び（ｉｉ）障害が起きた転送要素についての制御の欠如を含むが、これらに限定されない。本発明の実施形態によれば、最小限の数の検証を適当にセットアップすることによって、ルールは、障害事象について可視性をもたらし、機能するパスを発見することを可能にする。
【００１６】
[0015]本発明の実施形態は、転送プレーン全体の接続性を検証するために、所与の転送プレーンに対する部分的な制御性を有するネットワークコントローラのためのメカニズムを含む。この手法により、コントローラは、転送プレーン全体の重大な接続性情報を検証するために他のコントローラと通信する必要がなく、コントローラ自体の検証に基づいて、ルーティング又はトラフィックエンジニアリングを決定することができる。
【００１７】
[0016]以下の説明において、本発明のより完全な説明を提供するために、多くの詳細が述べられる。しかしながら、当業者には、本発明がこれらの特定の詳細なしに実施され得ることが明らかであろう。他の場合において、本発明を曖昧にすることを回避するために、周知の構造及びデバイスは、詳細に示されるよりもむしろ、ブロック図の形式で示される。
【００１８】
[0017]以下に続く詳細な説明のうちの幾つかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及び記号表現の観点から提示される。これらのアルゴリズム的記述及び表現は、データプロセス分野における当業者によって、この当業者の作業の内容を他の当業者へ最も効果的に伝達するために使用される手段である。アルゴリズムは、ここでは、一般的には、所望の結果につながる自己無撞着な一連のステップであると考えられる。ステップは、物理量の物理的操作を必要とするものである。必須というわけではないが、通常、これらの量は、記憶され、移動させられ、組み合わされ、比較され、さもなければ操作されることが可能な電気信号又は磁気信号の形式を取る。主に一般的な使用の理由から、これらの信号をビット、値、要素、シンボル、文字、項、数字などとして言及することは、しばしば都合が良いことが分かっている。
【００１９】
[0018]しかしながら、これらの全て及び同様の用語は、適当な物理量に関連付けられるべきであり、これらの量に適用される都合の良いラベルにすぎないことが念頭に置かれるべきである。具体的に別段の記載がない限り、以下の説明から明らかなように、本説明全体にわたって、「処理（ｐｒｏｃｅｓｓｉｎｇ）」又は「算出（ｃｏｍｐｕｔｉｎｇ）」又は「計算（ｃａｌｃｕｌａｔｉｎｇ）」又は「判定（ｄｅｔｅｒｍｉｎｉｎｇ）」又は「表示（ｄｉｓｐｌａｙｉｎｇ）」などといった用語を利用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されるデータを操作し、コンピュータシステムのメモリ若しくはレジスタ又は他のそのような情報ストレージ、送信装置又は表示装置内の物理量として同様に表される他のデータに変換するコンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスに言及することが認識されるであろう。
【００２０】
[0019]本発明は、本明細書における動作を実行するための装置にも関連する。この装置は、必要とされる目的のために特別に構築されてもよく、又は、汎用コンピュータに記憶されるコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータを含んでもよい。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、及び磁気光ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｉｅｓ）、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｉｅｓ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード若しくは光カード、又は電子命令を記憶するのに適した任意のタイプの媒体などのコンピュータ読取可能な記憶媒体に記憶されることができるが、これらに限定されず、また、各々が、コンピュータシステムバスに結合される。
【００２１】
[0020]本明細書において提示されるアルゴリズム及びディスプレイは、任意の特定のコンピュータ又は他の装置に本質的には関連しない。様々な汎用システムが、本明細書における教示に従って、プログラムと共に使用されることができ、又は、必要とされる方法ステップを実行するために、より専門化された装置を構築することが都合が良いと分かるであろう。多種多様なこれらのシステムについて必要とされる構造は、以下の説明から示される。また、本発明は、任意の特定のプログラミング言語に関して説明されない。本明細書において説明されるような本発明の教示を実装するために多種多様なプログラミング言語が使用され得ることが認識されるであろう。
【００２２】
[0021]機械読取可能な媒体は、機械（例えば、コンピュータ）によって読取可能な形式で情報を記憶又は送信するための任意のメカニズムを含む。例えば、機械読取可能な媒体は、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等を含む。
【００２３】
［概説］
[0022]本発明の実施形態は、データプレーンの各スイッチ（例えば、ユーザトラフィック／ペイロードを搬送するネットワーク要素）についての転送テーブル／状態及びフロー毎のアクションを制御する多数のネットワークコントローラに関する。これらのスイッチは、本明細書においてオープンフロースイッチと称されるが、本発明の実施形態は、フロー毎に遠隔でプログラムされることができる転送要素に適用される。ネットワークコントローラとこれらが制御するスイッチとは、制御ネットワークを通じて相互接続される。コントローラは、この制御ネットワークにアクセスすることによって、互いに、且つオープンフロースイッチと通信する。
【００２４】
[0023]一実施形態において、制御ネットワークは、コントローラ及びオープンフロースイッチの専用ポート、制御（シグナリングとも称される）トラフィックのみを搬送する専用の制御ネットワークスイッチ、並びに前述された専用ポートとスイッチとを相互接続する専用のケーブルなどの、専用の物理ポート及びノードを含む。このセットアップは、帯域外制御ネットワークと称される。一実施形態において、制御ネットワークは、オープンフロースイッチが制御ネットワークの一部及びデータプレーンの双方について同じポート及びリンクを使用するデータプレーンノードと物理リソースも共有する。そのようなセットアップは、帯域内制御ネットワークと称される。
【００２５】
[0024]制御ネットワークが、帯域外、帯域内、又はこれらの混合に従うか否かに関わらず、制御ネットワークは、別のインタフェース、ネットワークスタック、及びソフトウェア部品から成る。したがって、物理ハードウェア障害及びソフトウェア障害の双方が制御ネットワークノード及びリンクを故障させることがあり得、制御プレーンにおけるパーティショニングの可能性につながる。そのようなパーティションが発生する場合、各コントローラは、そのコントローラが算出し、そのコントローラの制御下にあるスイッチにプッシュ配信するパスがいまだに実行可能か否かについての正確な知識を有せず、データプレーン（転送プレーンと同等）トポロジ全体の部分ビューしか有しないことがあり得る。
【００２６】
[0025]本発明の実施形態は、転送プレーンがいまだに無損傷である（即ち、全てのリンクが使用可能である）か否か、デフォルトの転送ルール及びトンネルがいまだに使用可能であるか否か、並びに転送プレーンのどの部分がもはや使用可能ではない（即ち、停電中）かを、コントローラが確認することを可能にする。一実施形態において、これは、コントローラによって投入され得る制御パケットの限定された数に拘束される（おそらくは、他のコントローラの支援を得る）個別のスイッチに、検証ルールのセットをプッシュ配信することによって行われる。これらの検証ルールは、有効期限を有せず、厳格な優先順位を有する（即ち、これらの検証ルールは、明示的に削除又は上書きされるまで、オープンフロースイッチに存在する）。コントローラが、そのスイッチ及び／又は他のコントローラのうちの幾つかに到達することができないことを検出する場合、コントローラは、検証段階に進み、これらの十分に特定される制御パケットを投入する（即ち、これらのヘッダフィールドは、スイッチにプッシュ配信された検証ルールに従って、先験的に決定される）。コントローラは、これらの制御パケットへの応答及び応答の欠如に基づいて、どのパス、トンネル、及び転送トポロジの部分がいまだに使用可能であるかを判定することができる。
【００２７】
[0026]ＳＤＮは、将来のＩＴ、ＩＳＰ、及び電気通信会社のインフラストラクチャの主要な構成要素として浮上しつつある。ＳＤＮは、ネットワークを、独立した自律的なコンピュータの集合から、よく管理された柔軟なマルチテナント型のトランスポート組織に変化させることを約束する。中核原理として、ＳＤＮは、（ｉ）転送プレーン及び制御プレーンを分離し、（ｉｉ）明確に定義された転送抽象概念（例えば、フローテーブルのパイプライン）を提供し、（ｉｉｉ）これらの抽象概念に標準的なプログラマチックインタフェース（例えば、オープンフロー）を提示し、（ｉｖ）高水準な抽象概念（例えば、ＶＬＡＮ、トポロジグラフ等）及びインタフェースをこれらのサービス層の抽象概念（例えば、アクセス制御、パス制御等）に公開する。
【００２８】
[0027]所与の転送プレーンを管理するネットワークコントローラは、（ｉｉ）を知らなければならず、それに応じて、項目（ｉｉｉ）及び（ｉｖ）を実装しなければならない。
【００２９】
[0028]ネットワークをよく管理された組織に変換するその約束を実現するために、おそらくは、論理的に集中化されたネットワークコントローラが、転送プレーンの転送要素及びそれらの相互接続（即ち、転送トポロジのノード及びリンク）のグローバルな監視と共に、転送プレーン全体を端から端まで管理する。しかしながら、これは必ずしも当てはまるとは限らない。例えば、コントローラと転送要素の厳格なサブセットとの間の通信を分断する障害（ソフトウェア／ハードウェア障害、バグの多いコード、構成ミス、管理プレーンの過負荷等）が起こることがある。別の興味深い場合において、転送プレーンは、別個のコントローラを見越して、多数の管理ドメインから成ることがある。所与のドメインのコントローラが、応答しない場合、又は監視及び報告をほとんどしない場合、その他のコントローラは、ネットワークトポロジ全体の古いビューを有することがあり、次善のルーティング決定又は実行不可能なルーティング決定につながる。
【００３０】
[0029]コントローラが転送プレーンの大部分の制御性を有しない（有したことがない又は失った）場合であっても、コントローラが少なくとも１つのスイッチを接続及び制御できる限り、コントローラは、パケットを転送プレーンに投入することができる。したがって、あるトポロジが与えられると、静的転送ルールのセットは、ポリシー又は接続性の質問に回答するために、転送プレーンにインストールされることができる。プローブパケットが投入される場合、プローブパケットは、これらの予めインストールされたルールに従って転送プレーンを横断し、送信元のコントローラへ戻るか又は廃棄される。いずれの場合においても、そのプローブに対する応答及び応答の欠如に基づいて、コントローラは、ポリシー又はトポロジ接続性が違反される場合に、ポリシー又はトポロジ接続性がいまだに有効か否かを検証し、それに応じて動作することができる。一実施形態において、コントローラは、コントローラの制御下にある転送プレーンの部分について新たな転送ルールを動的にインストールする。それ故に、静的ルールは、転送プレーン全体に関する様々なポリシー又は接続性の質問に回答するために、動的ルールと組み合わされることができる。
【００３１】
[0030]本発明の実施形態は、制御フロールールの転送プレーンへのインストール又はプログラミングに関し、これにより、コントローラが転送プレーンの一部を観測することができない場合に、ルーティング可能なネットワークフロー及びルーティング不可能なネットワークフローだけでなく、転送プレーンの接続された部分及び切断された部分も発見するために、コントローラがこれらの制御フローを利用して診断することができる。最適な手法でトポロジ接続性を検証し、単一リンクの障害を検出するための静的転送テーブルルールを算出するための技法が開示される。多数のリンク障害検出のための技法も開示される。
【００３２】
[0031]本発明の実施形態は、（１）転送プレーン全体のトポロジ接続性が、最小限の数の転送ルール及び制御メッセージを使用することによって検証されることができ、（２）単一リンクの障害が、転送要素毎に（少ない）一定の数の転送ルールを使用することによって位置を突き止められることができるように、静的ルールを算出するための技法を含む。これらの方法を使用することによって、少なくとも１つの転送要素へのアクセス権を有する任意のネットワークコントローラは、１つ又は複数の動的ルールをインストールし、開示される方法によって算出される静的ルールに従って処理される制御パケットを投入することができ、これらの制御パケットは、次いで、コントローラによってインストールされた（１つ又は複数の）動的ルールを使用して、そのコントローラにループバックされる（パスに沿ったあらゆるスイッチ及びリンクが正確に機能する場合）。
【００３３】
[0032]図１Ａは、転送パスがネットワークコントローラのセットによって判定及びプログラムされる一方で、転送アクションが転送要素（例えば、スイッチ、ルータ等）のセットによって実行される通信ネットワークインフラストラクチャの一実施形態のブロック図である。一実施形態において、転送要素は、オープンフロー対応スイッチ３０１〜３０７を含む。転送プレーンは、全ての転送要素３０１〜３０７、及びこれらの転送要素３０１〜３０７間のリンク５０１〜５０９を構成する。転送要素３０１〜３０７の各々は、受信ポートにおいてパケットを受信すると、１つ又は複数の転送テーブルを利用して、そのパケットが何らかの手法で変更されなければならないのか否か、何らかの内部状態（例えば、パケットカウンタ）が変更されなければならないのか否か、及びパケットが送信ポートに転送されなければならないのか否かを判定する。一実施形態において、転送要素は、受信パケットをそれらのＬ１(物理層）からＬ４（トランスポート層）までの情報又はＬ７（アプリケーション層）までの情報さえ使用して検査し、その転送要素のプログラム可能な（ハードウェア又はソフトウェア）転送テーブルにインストールされた転送ルールにマッチするものを検索し、必要なアクションを行う（例えば、パケットヘッダ又はペイロードさえも書き換える、ラベルをプッシュ配信／ポップする、パケットにタグを付ける、パケットを廃棄する、パケットを送信論理／物理ポートへ転送する等）。一実施形態において、マッチするルール及びマッチするルール毎に行われるべきアクションは、ネットワークコントローラ１０１〜１０３と呼ばれる外部エンティティによってプログラムされる。
【００３４】
[0033]ネットワークコントローラ１０１〜１０３と転送要素３０１〜３０７とは、制御インタフェース及びリンク４１１、４１２、４２１、４２２、４２３、４４１、４４２を通じて互いに通信する。これらのリンクは、例えば、転送要素とコントローラとの間に制御ネットワーク上で確立されるＴＣＰ接続又はＳＳＨ接続であり得る。ネットワークコントローラ１０１〜１０３と転送要素３０１〜３０７とは、ハードウェア／ソフトウェアスイッチ（図１Ａにおける２０１〜２０４）を通じても互いに通信する。
【００３５】
[0034]一実施形態において、制御プレーンのこれらのインタフェース、リンク、及びスイッチは、同じ物理的な機械の転送プレーン要素と併置される。別の実施形態において、これらは、物理的に別の要素に対応する。さらに別の実施形態において、これは混合されることもできる。即ち、幾つかの制御プレーン要素と転送プレーン要素とは物理的に併置される一方で、他の要素は物理的に併置されない。１つのネットワークの実施形態におけるネットワークコントローラは、制御ネットワーク及びデータネットワーク（即ち、転送プレーン）と物理的に別である。しかし、本発明の実施形態によって解決される問題は、ネットワークコントローラの一部又は全部が制御プレーンノード又は転送プレーンノード（例えば、スイッチ及びルータ）にホストされる場合であっても適用可能である。
【００３６】
[0035]１つのネットワークの実施形態において、各転送要素３０１〜３０７は、マスタコントローラによって制御され、転送要素は、いかなる所与の時間も２つ以上のマスタを有することはできない。一実施形態において、マスタのみが、転送テーブルルール及びアクションをその要素にインストールすることが許される。ネットワークコントローラ１０１〜１０３は、自律的に又はオフバンドの構成を使用して、どのコントローラがどの転送要素についてのマスタであるのかを決定する。マスタの役割は、転送プレーン及び制御プレーンへの負荷変動、障害、メンテナンス等に起因して、時間と共に変化し得る。
【００３７】
[0036]図１Ｂは、転送要素がオープンフロー対応スイッチ（３０１〜３０７）であると仮定される、図１Ａのネットワークの別の図を示す。図１Ａに関して上記に説明されたように、ネットワークコントローラ１０１〜１０３と転送要素３０１〜３０７とは、制御インタフェース及びリンク（４１１、４１２、４２１、４２２、４２３、４４１、４４２）を通じて互いに通信するが、ネットワークコントローラ１０１〜１０３は、別の制御インタフェース（図１Ｂにおける５１２、５１３、５２３）を通じて互いに通信することもできる。コントローラ間のこれらの制御インタフェースは、コントローラ間の状態同期のために、転送プレーンから正しいコントローラへの間接的な要求に対して、他のコントローラの制御下の転送ルールのインストール又は他のコントローラで利用可能な任意の他のサービスを要求するために、使用されることができる。本明細書において説明される技法は、制御ネットワークが物理スイッチ及びワイヤの異なるセットにホストされ、又は転送プレーンと部分的に／完全に併置されるが、リソースの分離部と共に若しくはリソースの分離部なしに論理的な分離部を有するセットアップに同様に適用される。
【００３８】
[0037]異なるシナリオにおいて、転送プレーンの制御は、コントローラ間で分割されることができる。この一例は、図１Ｂにおいて図示され、転送要素（ＦＥ：ｆｏｒｗａｒｄｉｎｇ  ｅｌｅｍｅｎｔｓ）３０１、３０２、３０５はコントローラ１０１に属し、ＦＥ３０３及び３０６はコントローラ１０２に属し、ＦＥ３０４及び３０７はコントローラ１０３に属する。本明細書における目的のために、所与のコントローラｘの制御ドメインは、Ｄｘと称され、ｘの制御ドメインの外部における任意の転送要素は、
【数１】
2015533049.tif 000003
と称される。即ち、図１Ｂによれば、Ｄ１０３は、｛３０４、３０７｝から成り、
【数２】
2015533049.tif 000004
は、｛３０１、３０２、３０３、３０５、３０６｝から成る。
【００３９】
[0038]一実施形態において、各コントローラは、そのコントローラの自律ドメインを管理し、自律ドメインでは、ドメイン内ルーティングは各ドメインのコントローラによって指令される一方で、ドメイン間ルーティングはコントローラ間の調整及び通信によって支配される。この場合において、スイッチは、スイッチ自体の（１つ又は複数の）ドメインコントローラしか認識していない。コントローラは、コントローラのローカルトポロジを互いに共有して、グローバルトポロジを構築し、端から端までのルート算出を調整する。（ハードウェア／ソフトウェア障害、インタフェースの輻輳、処理の過負荷等に起因して）コントローラ間の通信及び状態同期が損なわれる場合、１つのコントローラのドメインにおけるトポロジ変化（例えば、リンク障害）は、他のコントローラに時間通りに通信されないことがある。これは、その他のコントローラによって行われるルーティング及びポリシーの決定に悪影響を与えることがある。したがって、コントローラがその他のコントローラのみに依存せずに、転送プレーンの属性を検証することができる解決策を提供することが不可欠である。
【００４０】
[0039]別の実施形態において、負荷分散の目的のために、転送要素の別個のサブセットは、別個のコントローラと通信されることができる。負荷分散ポリシーは、別の管理プレーン（本発明を曖昧にすることを回避するために図示せず）によって決定及び指令され得る。この場合において、各コントローラは、そのコントローラ自体の転送要素のセットを監視及びプログラムするのみであり、したがって、多数のコントローラ間でネットワークを監視及びプログラムすることの負荷を共有する。負荷分散ポリシーに応じて、スイッチが種々のコントローラにマッピングされる手法は、時間と共に変わり得る。例えば、図１Ｂ及び図１Ｃにおいて図示される転送プレーンの場合、コントローラ１０３は、あるエポックにおいてはＤ１０３＝｛３０４、３０７｝を、別のエポックにおいてはＤ１０３＝｛３０３、３０４、３０６、３０７｝を有する。この決定は、種々の転送要素によって生成される制御トラフィックに従って行われ得る。この負荷分散シナリオにおいても、コントローラは、一貫して維持されるトポロジのグローバルビューの共有を望む。例えば、コントローラによってコントローラ自体の制御ドメインにおいて検出されるリンク障害は、他のコントローラにコントローラ対コントローラインタフェース（図１Ｂにおける５１２、５１３、５２３）上でメッセージを渡すことによって、又は全てのコントローラによってアクセスされ得るデータベースを更新することによって、グローバルトポロジビューを更新しなければならない。多数の自律ドメインの場合と同様に、任意の機能障害又はコントローラによる報告の障害は、転送プレーンについての（おそらくは一貫しているが）古い状態につながるであろう。したがって、この場合においても、コントローラに、コントローラ間の状態同期に依存せずに、高速且つ低オーバーヘッドな手法で転送プレーンを検証させることが重要である。
【００４１】
[0040]また別の実施形態において、実際には、ホットスタンバイとしての機能を果たす他のコントローラと共にドメイン全体を管理する単一のコントローラが存在し得る。単一のコントローラが管理する場合、そのコントローラは、図１Ｄにおいて図示されるように、転送要素のサブセットに対する制御インタフェースのうちの幾つかを失う可能性がある。コントローラ１０１は、Ｄ１０１＝｛３０１、３０２、３０５｝を有し、それ故に、
【数３】
2015533049.tif 000005
における転送要素と直接やり取り／を直接監視することはできない。この実施形態におけるコントローラ１０１は、
【数４】
2015533049.tif 000006
についてのコントローラ１０１のビューを更新するために依存すべき他のコントローラを有せず、したがって、制御プローブを転送プレーンに送信し、応答をリッスンする。
【００４２】
［ネットワークについての診断法及び情報の取得］
[0041]制御ネットワークのソフトウェア／ハードウェアのバグ、過負荷、物理的な障害、構成ミス等に由来し得る任意の機能不全は、同じパーティション内の要素のみが互いに通信することができるパーティションを作成し得る。図２は、制御プレーンの単一のインタフェースの機能不全４１３が２つのパーティションの原因となる場合を示す。第１のパーティションは、｛１０１、１０２、２０１、２０２、２０４、３０１、３０２、３０３、３０５、３０６｝であり、第２のパーティションは、｛１０３、２０３、３０４、３０７｝である。この例において、コントローラ１０１及び１０２は、互いに通信し、転送要素３０１、３０２、３０３、３０５、及び３０６へ命令を送信することはできるが、１０３、３０４、及び３０７と通信することはできない。同様に、コントローラ１０３は、転送ノード３０４及び３０７に到達することしかできず、その他のコントローラ及びスイッチに到達することはできない。そのようなシナリオにおいて、コントローラ１０３は、部分的なトポロジ可視性のみを有し、残りのトポロジが無損傷であるか、又は以前にセットアップされたルーティングパスがいまだに使用可能か否かを確信することはできない。一実施形態において、殆どのルーティングパスは有効期限付きで確立されるため、転送トポロジが無損傷である場合でも、転送ルールがもはや有効ではないことがある。コントローラ１０３は、第１のパーティション内の要素には到達することができないため、転送要素３０１、３０２、３０３、３０５、及び３０６に関するルーティングルールを（マスタコントローラとして）直接、又は（マスタである他のコントローラとの交渉を通じて）間接的に再インストール又はリフレッシュすることはできない。しかしながら、転送プレーンが完全に又は部分的に機能している場合、コントローラ１０３は、コントローラ１０３が到達することができる転送要素を通じて制御フローを転送プレーンに投入し、これらの制御フローに対して生成される応答を待つことができる。こうすることによって、コントローラ１０３は、転送プレーンが接続されたトポロジであるか否か、デフォルトパス／トンネルがいまだに使用可能であるか否か、及び、リンク障害が存在する場合には、どのリンクが障害を起こしたかを学習することができる。
【００４３】
[0042]したがって、本発明の一実施形態において、ルーティング可能なネットワークフロー及びルーティング不可能なネットワークフローだけでなく、転送プレーンの接続された部分及び切断された部分を発見するために、制御フローのルールは、転送プレーンの一部を観測することができないコントローラがこれらの制御フローを利用して診断を行うことができるように、転送プレーンにインストール及びプログラムされる。
【００４４】
[0043]図３は、制御プレーンにおけるパーティションに加えて、転送プレーンにリンク障害が存在するシナリオを例示する。図３を参照すると、コントローラ１０３は、障害を起こしたリンク５０４及び５０６の如何なるエンドポイントにも到達することができない。それ故に、コントローラ１０３は、スイッチ３０３、３０２、又は３０６がこれらのリンク障害を検出することが可能であったとしても、これらのリンク障害を報告するための如何なる信号もスイッチ３０３、３０２、又は３０６から受信しない。転送プレーンが全てのスイッチにおいて自律的に運転するトポロジ発見の解決策を有し、スイッチがトポロジ変化（例えば、リンク／ノードの追加、障害、除去）を他のスイッチに配信しない限り、スイッチ３０４及び３０７は、リンク障害５０４及び５０６に直接接続されていないため、リンク障害５０４及び５０６を検出することができない。それ故に、コントローラ１０３は、これらの障害についての如何なる通知も、（スイッチ３０４及び３０７を含む）コントローラ１０３自体のパーティション内のスイッチから受信することができない。
【００４５】
[0044]図４は、図３において特定される障害シナリオに直面する際に、ネットワークフローがいまだにルーティングされ得るか否かを一実施形態のコントローラが検証する状況を図示する。ネットワークフローは、本明細書における目的のために、０、１のビットマスクとして広く理解されるべきであり、あるパケットにおけるヘッダフィールドの何らかの連結に適用される値は気にしない。ビットマスクに定義されるような０及び１と完全にマッチする全てのパケットは、同じフローに属し、まさに同じようにルーティングされる（即ち、フローベースのルーティング）。ヘッダは、ＭＰＬＳラベル、ＶＬＡＮタグ、送信元及び宛先ＭＡＣアドレス、送信元及び宛先ＩＰアドレス、プロトコル名、ＴＣＰ／ＵＤＰポート、ＧＴＰトンネル識別子等を含むことができるが、これらに限定されない。一実施形態において、デフォルトフローのセットが定義され、これらについてのルーティングルールは、非常に長い有効期限と共に、又は有効期限すらなしで、事前にプッシュ配信される（即ち、ルーティングルールは、明示的に除去又は上書きされるまで使用される）。図４において、ｆ１及びｆ２とラベル付けされる２つのフローは、そのようなデフォルトフローの例である。レガシーのセットアップにおいて、これらのフローは、これらのフローラベルに従ってルーティングされるＭＰＬＳフローに対応する。フローｆ１は、その入口転送要素を３０４として有し、出口転送要素３０１において最終的にネットワークを出る前に、スイッチ３０３及び３０２を通じてルーティングされる。同様に、フローｆ２は、その入口転送要素を３０７として有し、出口転送要素３０１においてネットワークを最終的に出る前に、スイッチ３０６及び３０５を通じてルーティングされる。一実施形態において、制御フローのペアは、１つが転送方向において、１つが反対方向（逆方向）において、監視されるべきフロー毎にセットアップされる。図４において、ｆＣ１，ｆ及びｆＣ１，ｒは、ｆ１についての制御フローのペアであるのに対して、ｆＣ２，ｆ及びｆＣ２，ｒは、ｆ２についての制御フローのペアである。ルーティングのために使用される、制御フローのこれらのペアのビットマスクが同じである場合、制御フローのこれらのペアを単一のフローとして見ることも可能であることに留意されたい。例示の目的のために、制御フローは、転送方向（監視されるフローと同じ方向）、及び反対方向（コントローラへ向かうフィードバック方向）において、別のものとしてラベル付けされ、代わりにこれらをペアにする。転送方向の制御フロー（例えば、ｆＣ１，ｆ）は、監視されるフロー（例えば、ｆ１）と同じ一連の転送要素によってルーティング／処理されなければならない。一実施形態において、転送方向の制御フローは、監視されるフローに従う。具体的には、監視されるフローが異なるパス（即ち、一連の転送要素）上に再ルーティングされる場合、転送方向のその制御フローも、新たなパスに再ルーティングされる。監視されるフローの有効期限が切れる場合、転送方向の制御フローの有効期限も切れる。この実施形態における、監視されるフローと制御フローとの間の１つの相違点は、監視されるフローが、そのパス上にコントローラを有せずに、転送プレーンにおいて厳格に転送され、監視されるフローについてのトラフィックが、実際のネットワークユーザによって生成されることである。他方では、制御フローは、専らコントローラによって使用され、パスは、コントローラにおいて開始及び／又は終了し、制御ネットワークを通じた部分において渡される。
【００４６】
[0045]監視されるフローについてのパスの正常性を監視するために、コントローラは、その監視されるフローの制御フローについてのトラフィックを投入する。オープンフローネットワークの場合におけるトラフィック投入は、ＯＦＰＴ＿ＰＡＣＫＥＴ＿ＯＵＴメッセージをオープンフロースイッチに向けて生成すること、及びそのＯＦＰＴ＿ＰＡＣＫＥＴ＿ＯＵＴメッセージにカプセル化される制御フローパケットについてのそのスイッチ（又はリンクと同等に）上の受信ポートを特定することを意味する。監視されるフローとその制御フローとの間の１つの相違点は、監視されるフローの「気にしない（ｄｏｎ’ｔ  ｃａｒｅ）」フィールドに対応する、制御フローのビットマスクに設定される少数の付加的なビットであろう。例えば、監視されるフローがそのＭＰＬＳラベルによって特定される場合、制御フローは、ＭＰＬＳラベルに加えて、ＭＡＣアドレスフィールドを使用していることがある。転送テーブルの項目の観点から、転送制御フローは、出口ルータまで、新たな転送ルール／アクションを挿入しない。換言すれば、監視されるフローについて設定される転送ルールは、転送制御フローをマッチ及びルーティングさせるために使用されるであろう。そのような実装は、再ルーティング及び有効期限満了の事象に対処する。その理由は、監視されるフローについての転送ルールが変更され次第、転送ルールは、転送制御フローに即座に影響を及ぼすからである。
【００４７】
[0046]図４において、制御フローｆＣ１，ｆは、同じフローテーブルルールを使用し、スイッチ３０４、３０３、及び３０２のｆ１と同じパイプラインにおいて処理される。制御フローｆＣ１，ｆがスイッチ３０１に到達すると、制御フローｆＣ１，ｆはネットワークを出てしまうため、フローｆ１と同じフローテーブルルールを使用することができない。その代わりに、スイッチ３０１に、制御フローｆＣ１，ｆのビットマスクに完全にマッチする、より具体的な転送ルールがインストールされる。このビットマスクについてのアクションは、フローの方向を反転させる。実際に、制御フローｆＣ１，ｒは、制御フローｆＣ１，ｆの反対向きのパスに完全に従ってルーティングされる。反対向きのパスに沿った各スイッチは、制御フローｆＣ１，ｆのビットマスクに完全にマッチするマッチングルールに加えて、反対向きのパスに沿った受信スイッチポートを有する。制御フローパケットがスイッチ３０４に到達すると、制御フローパケットは、制御メッセージをコントローラ１０３へプッシュ配信する転送アクションを有することになる。オープンフローネットワークの場合において、スイッチ３０４は、コントローラ１０３へ送信されるべきＯＦＰＴ＿ＰＡＣＫＥＴ＿ＩＮメッセージを生成する。このようにして、ループは閉じられ、監視されるフローのパスに沿った全てのスイッチ及びリンクが正常であり、監視されるフローについての転送ルール／ルートがいまだに有効で機能している場合に、且つ、その場合に限り、コントローラ１０３は、コントローラ１０３が特定の制御フローについて投入して戻ってきたトラフィックを受信する。それ故に、コントローラ１０３が、投入して戻ってきたパケットを受信しない場合、デフォルトパスについての障害が潜在的に発生している。
【００４８】
[0047]別の実施形態において、コントローラは、最小限のリンク及びスイッチと共に、又は同じリンク及びスイッチを全く共有せずに、多くのデフォルトパスをセットアップする。各デフォルトパスは、そのデフォルトパスの制御フローを伴う。コントローラは、いまだに機能しているデフォルトパスのアクティブリストを維持する。パーティション事象がコントローラによって検出される場合、コントローラは、別個のデフォルトパスのこれらの制御フローについてのトラフィックを投入する。制御フローのサブセットについてのパケットが戻ってきて受信されない場合、対応するデフォルトパスは、アクティブリストから除去され、機能停止リストに載せられる。そのパケットがコントローラによって受信される制御フローについては、対応するデフォルトパスがアクティブリストに残り、コントローラは、アクティブリストのデフォルトパスのみを使用するように入口スイッチに命令する。一実施形態において、例えば、デフォルトパスがトンネル、ラベルスイッチドパス、又は回路に対応する場合、入口ルータにおけるフローテーブルアクションは、受信フローがアクティブリスト内のトンネル、ラベル、又は回路にのみマッピングされるように、書き換えられることができる。図４において、コントローラ１０３は、フローｆ１がもはやルーティングされない（リンク５０４及び５０６の障害に起因する。但し、これらの障害自体は、コントローラに知られていない）一方で、ｆ２がいまだにルーティング可能であることを検出する。したがって、入口スイッチとしての転送３０４に到達するあらゆるフローについて、コントローラ１０３は、ルーティングアクションの前の処理パイプラインにおける最初のアクションとして、これらのフローのビットマスクをフローｆ２と交換するように３０４に命令する。
【００４９】
[0048]図５は、制御フローについての転送ルールをインストールするために発生する一連のシグナリングの一実施形態を例示する。一実施形態において、コントローラ１０１は、転送要素３０１、３０２、及び３０５についてのマスタコントローラであり、コントローラ１０２は、３０３及び３０６についてのマスタであり、コントローラ１０３は、３０４及び３０７についてのマスタである。ｆＣ１，rについてのマッチングルール及びアクションルールをインストールするために、コントローラ１０３は、コントローラ１０１と通信して、転送要素３０１及び３０２にルールをインストールし、コントローラ１０２と通信して、転送要素３０３にルールをインストールし、転送要素３０４と直接通信して、制御プレーンパケットを生成する。
【００５０】
[0049]特定のフローの正常性を確認することに加えて、全体的なトポロジ接続性を識別し、単一のリンクの障害を検出するための技法が本明細書において説明される。そのような診断のために、コントローラは、転送プレーンにも制御フローをインストールし、これらのフローについての制御パケットを投入し、その応答（又は、応答の欠如）に基づいて、結論を導く。
【００５１】
[0050]一実施形態において、コントローラは、転送プレーンの全てのリンクを対象とする一連のウォークを作成する制御フローをインストールすることによって、トポロジ接続性（即ち、任意のリンク障害では、スイッチ自体が障害を起こす場合、リンク障害になることに留意されたい）を検証することができる。本発明の実施形態は、ウォークを算出し、そのウォークを転送プレーンのスイッチにインストールされる転送ルールに変換するための特定の方法を含む。図８（Ａ）及び図８（Ｂ）は、このプロセスの一実施形態を図示するフロー図である。図６及び図７並びに表１は、図１Ａに示されるネットワークトポロジを使用することによる異なる動作の例示的な例である。
【００５２】
[0051]図８（Ａ）を参照すると、本プロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。本プロセスは、トポロジ発見を実行することによって始まる（処理ブロック１０）。一実施形態において、トポロジ発見は、全ての転送要素及びそれらの相互接続をネットワークコントローラによって識別することを意味する。この動作を実行するための周知の解決策が存在する。例えば、オープンフローネットワークにおいて、スイッチがネットワークに加わるときはいつでも、スイッチは、予め構成されるネットワークコントローラに、スイッチ自体をスイッチポート情報と共に通知する。コントローラは、ＩＣＭＰパケットを投入し、全てのスイッチの全ての送信インタフェースをフラッディングさせることができ、ＩＣＭＰパケットは、次いで、デフォルトポリシーとして次のホップスイッチによってコントローラへ送信される。これを含む任意の特定の方法は、トポロジ発見動作を実現するために使用されることができる。
【００５３】
[0052]次に、処理ロジックは、リンク隣接グラフを、ネットワークトポロジ内の各リンクをこのグラフにおける頂点として示すことによって、構築する（処理ブロック１１）。この場合、一実施形態において、対応する２つのリンクが連続して（即ち、１スイッチ分離れて）横断され得る場合に、且つ、その場合に限り、このグラフ上の２つの頂点の間に弧が存在する。本例は双方向リンクについてのものであるが、各方向を別のリンクとして単純に数えることによって、本方法を指向性リンクに拡張することは自明であることに留意されたい。図６は、転送プレーントポロジについての隣接グラフを描いている。図６において、例えば、リンク５０３は、隣接グラフのノード６０３にマッピングされる。
【００５４】
[0053]リンク隣接グラフを構築した後、処理ロジックは、隣接グラフの頂点の任意のペア間の最短パスを算出し、表１に示されるような距離情報を記憶するテーブルを作成する（処理ブロック１２）。これは、リンク隣接グラフ全体にわたる頂点の全てのペア間の最小距離を算出するために最短パス問題を解決する。一実施形態において、最短パスは、ダイクストラのアルゴリズムを適用することによって算出される。一実施形態において、距離とは、ここでは、あるリンクから別のリンクに到達するために横断される必要がある最小数のスイッチをいう。各スイッチは、そのような到達可能性のために丁度１つの転送ルールをインストールするため、これは、転送プレーンにインストールされる必要がある最小数の転送ルールになる。
【００５５】
[0054]次に、処理ロジックは、リンク隣接グラフと同じ頂点を使用して、但し、重みを用いて弧を描くことによって、完全無向グラフを形成する（処理ブロック１３）。弧の重みは、接続される２つの頂点間の最小距離に等しい。例えば、頂点６０４と頂点６０９との間の弧は、表１において分かるように、重み２を有する。つまり、処理ロジックは、リンク隣接グラフと同じ値を使用し、弧の重みを上記で算出された頂点のペア間の距離として設定して、重み付けされた、無向且つ完全なグラフを構築する。
【００５６】
[0055]次いで、処理ロジックは、処理ブロック１３において構築された完全無向グラフ上で最短のハミルトンン周期を算出する。ハミルトン周期は、グラフ上の全ての頂点を丁度１回横断し、開始点に戻る。以前の段階において例示された例示的なトポロジについてのそのような周期の例は、図７に示される。この周期の総コストは、７個のスイッチへの１１個の一意なビジットに達する。換言すれば、総計１１個の転送ルールが転送プレーンに存在する必要があり、１つのスイッチは多数回ビジットされることができ、それによって、多数の転送ルールがインストールされることを必要とする。一実施形態において、目的は、転送ルールの数を最小限にすることであり、したがって、最小コストのハミルトン周期を算出することが必要となる。任意のグラフで最小のハミルトン周期を探索することは、ＮＰ完全な問題である。ある方法は、任意の周知のヒューリスティック解を使用する。別の実施形態において、任意のハミルトン周期は、総コストの上限が合理的である限り、容認可能である。一実施形態において、スイッチ毎のオーバーヘッドが、スイッチ毎のサポート可能なハードウェア転送ルールの総数の３％未満である場合、総コストの上限は合理的である。この場合における自明な上限は、リンク数とリンクのペア間の最大距離との積によって与えられるであろう。図１Ａに描かれている転送プレーン例について構築される表１によれば、この上限は、９×３＝２７になる。欲張りヒューリスティックは、ここでは、例示的な目的のために提供される。空のリストから開始して、任意の頂点を追加することができる。リストに追加される次の要素は、リストに存在せず、リストの最後の要素に最も近い頂点である。多数の候補が同じ距離を有する場合、任意の１つが選択される。全ての頂点がリストに追加されると、リスト中の最初の頂点は、同じリストの最後に追加される。これは、完全グラフのハミルトン周期の単純なヒューリスティックを構築する。種々の頂点候補が多数のリストを作成するために追加され、より低い総（又は平均）コストを有するリストが、より高い総（又は平均）コストを有するリストの前に調査される、分岐限定ヒューリスティックを行うこともできる。
【００５７】
[0056]最後に、処理ロジックは、算出されたハミルトン周期に従って、転送ルールを生成する。ネットワークコントローラが制御フロートラフィックを任意の転送要素に投入することができるように、ルールを設計することができる。一実施形態において、コントローラは、トポロジ接続性を確認するために一意の制御フローを定義し、例えば、フィールド｛送信元ＭＡＣアドレス、トランスポート層ポート番号｝にマッチするように、一意のトランスポート層ポート番号（例えば、ＵＤＰポート）及びコントローラのＭＡＣアドレスを使用する。ルールは、受信スイッチポート（即ち、リンク／インタフェース）及びこの一意の制御フローにマッチするあらゆるスイッチにインストールされることができる。本アクションは、制御フローパケットが送信される送信スイッチポート（即ち、リンク／インタフェース）を特定する。算出されたハミルトン周期が、同じ受信インタフェースの同じスイッチを２回以上横断しない場合、そのようなマッチングは十分である。しかしながら、これは常に当てはまるとは限らない。これを明らかにするために、図７のハミルトン周期を検討し、横断が頂点６０４から開始されると仮定する。したがって、頂点は、リンク隣接グラフ上で、以下の順序６０４、６０７、６０８、６０９、６０５、６０２、６０６、６０３、６０１、６０４でビジットされる。これは、リンクを以下の順序５０４、５０７、５０８、５０９、５０５、５０２、５０６、５０３、５０１、５０４でビジットすることと同等である。５０２〜５０６は直接到達されることができないため、スイッチ３０２、リンク５０４、及びスイッチ３０３が横断される必要がある。同様に、５０６〜５０３は直接到達されることができないため、スイッチ３０６、リンク５０５、及びスイッチ３０５が横断される必要がある。その結果、一連のリンク及びスイッチとしての全体的なウォークは、５０４、３０３、５０７、３０４、５０８、３０７、５０９、３０６、５０５、３０５、５０２、３０２、５０４、３０３、５０６、３０６、５０５、３０５、５０３、３０１、５０１及び３０２となる。コントローラは、スイッチ３０２に対して、制御パケットをリンク５０４に投入するように要求することができる。スイッチ３０２が同じパケットをリンク５０１から受信する場合、スイッチ３０２は、そのパケットをパッケージ化し、発信元のコントローラへ送信することができる。ウォークから容易に分かるように、スイッチ３０３は、同じ受信ポート（リンク５０４のエンドポイント）から制御フローパケットを２回受信する。初回において、スイッチ３０３は、制御パケットをリンク５０７に向けて転送しなければならず、２回目において、制御フローパケットをリンク５０６に向けて転送しなければならない。同様の現象は、スイッチ３０５にも発生し、スイッチ３０５は、同じリンク（５０５）から受信される同じ制御パケットを処理しなければならない。送信元ＭＡＣアドレス及びトランスポート層ポート番号を使用することによってのみ転送ルールを設定することは、これらの場合に対処するためには十分ではない。一実施形態において、そのような場合を対象とするために、コントローラは、各パスに一意に注釈を付けることができる別のフィールドを設定することによって、同じ制御フローについての多数のマッチするルールをインストールすることができる。例えば、スイッチ３０５は、リンク５０５〜５０２（ハミルトン周期では６０５〜６０２）から到達するために１回、５０６〜５０３（ハミルトン周期では６０６〜６０３）から到達するために１回、横断される。
【００５８】
[0057]ハミルトン周期における各ジャンプが、開始リンク及び終了リンクと共に一意に識別される場合、各パスは、一意に注釈を付けられることができる。コントローラ１０１が、ハミルトン周期における各弧に注釈を付けるために別個のＶＬＡＮ  ｉｄを使用し、制御フローがトポロジ接続性を確認するためのものであることを一意に識別するために、コントローラによって使用される制御フローフィールドに加えて、これらの別個のＶＬＡＮ  ｉｄについてのマッチするルールをインストールすると仮定する（例えば、｛送信元ＭＡＣアドレス、トランスポート層ポート番号｝＝｛ｍａｃ１０１、ｕｄｐ１｝）。一実施形態において、この制御フローパケットについての以下のマッチングルール及びアクションルールは、転送プレーンにおいて如何なるリンク障害又はスイッチ障害も存在しないという条件で、ハミルトン周期を横断するために使用される。
【表１】
2015533049.tif 000007
【００５９】
[0058]コントローラ１０１が、｛送信元ＭＡＣアドレス、トランスポート層ポート番号、ＶＬＡＮ  ｉｄ｝＝｛ｍａｃ１０１、ｕｄｐ１、ｖ４｝の制御フローパケットを生成し、その制御フローパケットをスイッチ３０２を通じてリンク５０４に投入する場合、以下の一連の事象が発生する。スイッチ３０３は、制御フローパケットを受信し、マッチするものを見つけ、それを、ＶＬＡＮ  ｉｄをｖ７に設定することによってリンク５０７に転送する。スイッチ３０４は、パケットを受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ８に設定し、リンク５０８に送信する。スイッチ３０７は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ９に設定し、リンク５０９に送信する。スイッチ３０６は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ５に設定し、リンク５０５に送信する。スイッチ３０５は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ２に設定し、リンク５０２に送信する。スイッチ３０２は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ６に設定し、リンク５０４に送信する。スイッチ３０３は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄを変更せず、リンク５０６に送信する。スイッチ３０６は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ３に設定し、リンク５０５に送信する。スイッチ３０５は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄを同じままに維持し、リンク５０３に送信する。スイッチ３０１は、受信し、マッチするものを見つけ、ＶＬＡＮ  ｉｄをｖ１に設定し、リンク５０１に送信する。スイッチ３０２は、受信し、デフォルトのルールがパケットをそのマスタコントローラ１０１へ送信するため、マッチするものを見つけない。
【００６０】
[0059]マッチするフローがない場合のデフォルトのルールがパケットを廃棄することである場合があり得る。そのような場合、一実施形態において、より上位の他の優先ルールが特定されない場合、各スイッチは、それらのマスタコントローラによって、コントローラによって発信されたパケットを（例えば、本例では、送信元ｍａｃアドレスを確認することによって）そのコントローラに送り返すようにプログラムされる。一実施形態において、コントローラ１０１は、正しいＶＬＡＮ  ｉｄを特定することによって、パケットを任意のリンクに投入することができることに留意されたい。したがって、パーティションが検出される場合、各コントローラは、まず、同じパーティション内のスイッチを識別し、次いで、制御フローパケットを投入するためにスイッチの送信リンクのうちのいずれかを使用することができる。一実施形態において、マッチするものがない場合のデフォルトのルールが、マスタコントローラへ転送することである場合、コントローラについての送信元アドレス（本例では、送信元ＭＡＣアドレス）をワイルドカード検索することができる（例えば、送信元アドレスは「気にしない」フィールドとなる）ことにも留意されたい。そのような場合、コントローラ毎に別のルールを作成する必要はない。フローミスについてのデフォルトアクションがパケットを廃棄することである場合については、コントローラのアドレスは、制御パケットにおいて特定され、転送ルールは、各スイッチにおいてその制御パケットのマスタコントローラの送信元アドレスを使用してインストールされる。一連のパケット転送事象の期間中に、任意のリンク又はスイッチが障害を起こす場合、コントローラは、そのパケットを受信しないであろう。
【００６１】
[0060]図８（Ａ）及び図８（Ｂ）は、リンク障害を検出するためのプロセスも開示する。図８（Ａ）及び図８（Ｂ）におけるプロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【００６２】
[0061]図８（Ｂ）を参照すると、処理ブロック２０において、コントローラの処理ロジックは、制御プレーンにおいてパーティションを検出する。図２によって与えられる例において、コントローラ１０３は、ハートビートメッセージ又はコントローラ１０３の要求に対する応答を他のコントローラから受信しない場合、パーティションを検出することができる。コントローラの処理ロジックは、どのスイッチがコントローラと同じパーティション内に存在するのかを判定し、スイッチのうちの１つを制御フロー投入点として選択する（処理ブロック２１）。図２の例において、コントローラ１０３は、コントローラ１０３がスイッチ３０４及び３０７からの通信をいまだに受け取ることができることを識別し、これはスイッチ３０４及び３０７が実際に同じパーティション内に存在することを示す。したがって、図７に示されるハミルトン周期に従って算出されたスイッチ３０１〜３０７についての予めインストールされる転送ルール（即ち、ルールは上記と同じであり、ｍａｃアドレス１０３が送信元ＭＡＣアドレスにマッチし、即ち、送信元ＭＡＣアドレス＝ｍａｃ１０３である）を使用することによって、コントローラ１０３内の処理ロジックは、そのパーティションから到達可能な任意のリンク（例えば、５０７、５０８、５０９）にパケットを投入し、そのリンクの対応するＶＬＡＮ  ｉｄを有するパケットを投入する。したがって、処理ブロック２２において、コントローラの処理ロジックは、一意のトランスポートポート番号を有する、トポロジ接続性を確認するそのモジュールから、処理ブロック２１において選択されたスイッチの送信ポートのうちの１つに、パケットを投入する。
【００６３】
[0062]次いで、コントローラの処理ロジックは、制御フローパケットが戻ってくるのを待ち、処理ロジックが応答を受信したか否かを確認する（処理ブロック２３）。待機時間は、リンクの総遅延に依存するが、最も典型的な実装においては、数百ミリ秒又は数秒程度となるであろう）。応答が受信される場合、コントローラの処理ロジックは、リンク障害がまだ発生していないと結論を下し、ルーチンは終了する（処理ブロック２４）。待機時間中に応答が受信されない場合、コントローラの処理ロジックは、コントローラによって直接観測可能ではないリンク障害及びいくつかのスイッチ間の接続性の欠如が存在すると仮定する（処理ブロック２５）。明らかに、図２において、転送プレーンは、無損傷であり、コントローラ１０３は、投入されて戻ってきた制御パケットを受信する。他方では、図３において、リンク障害に起因して、リンクの横断が失敗し、ループバックパケットの欠如が、リンク障害が存在することをコントローラ１０３に示すであろう。同じ制御フローについての多数のパケットを別々の時間に投入し、累積的な応答を見て、トポロジ接続性についての決定を行うことは、自明な事柄であることに留意されたい。
【００６４】
[0063]別の実施形態において、リンク障害が存在することを検出した後、コントローラは、これらの障害が発生した位置を突き止めるために、他の制御フロー及びそれらの予めインストールされた転送ルールを転送要素で使用することを開始する。図９（Ａ）及び図９（Ｂ）は、障害の位置を突き止める（即ち、検出段階）だけでなく、どの転送ルールがどのスイッチにインストールされるべきかを判定する（即ち、セットアップ段階）プロセスの一実施形態を図示するフロー図である。本プロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【００６５】
[0064]図９（Ａ）を参照すると、本プロセスは、所与のコントローラの処理ロジックによって、ピボットスイッチのセットを選択し、ピボットスイッチに直接アタッチされる正常なリンクを観測可能としてラベル付けすることから始まる（処理ロジック３０）。パーティション事象が発生する場合、コントローラは、ピボットスイッチにアタッチされたリンクを使用して制御フロートラフィックを投入するため、ピボットスイッチの選択は重要である。したがって、これらのピボットスイッチ及びコントローラは、制御プレーン障害後に同じパーティション内に存在しなければならず、そうでない場合、インストールされた転送ルールは、使用不可能になる。
【００６６】
[0065]一実施形態において、処理ブロック３０〜３４は、唯一のピボットスイッチとしての転送要素毎に繰り返される。これは、各スイッチが多数の転送ルールを有し、多数の転送ルールの各々が、ピボットスイッチの別個の選択に対応する状況に潜在的につながる。別の実施形態において、入口スイッチ及び／又は出口スイッチのみが、ピボットスイッチとして使用される。その理由は、入口スイッチ及び／又は出口スイッチは、トラフィックエンジニアリングのための重要なポイントであるためである。図１Ａに図示されるネットワークを仮定する図１０において、コントローラ１０３は、スイッチ３０４をピボットスイッチとして使用し、したがって、パケットをリンク５０７及び５０８に投入することができる。
【００６７】
[0066]図９（Ａ）を再び参照すると、コントローラの処理ロジックは、観測可能とラベル付けされたリンクを除いた全てのリンクを、昇順でソートされたリストに載せる（処理ロジック３１）。一実施形態において、これらのリンクには重みが割り当てられ、所与のリンクについて、その重みは、観測可能なリンクからこの所与のリンクまでの最小距離（例えば、横断される必要がある転送要素の最小数）に等しい。一実施形態において、リストのソートは、これらのリンク重みに関して行われる。同じ重みを有するリンクは、それらの間で任意に順序付けされ得る。図１０において、このソートされたリストは、｛５０４、５０６、５０９、５０１、５０２、５０５、５０３｝として算出される。
【００６８】
[0067]ソートされたリストを作成した後、コントローラの処理ロジックは、ソートされたリストを中央で再帰的に分割して、２つのサブリスト、即ち、左側のリスト及び右側のリストを作成することによって、二分木を形成する（処理ブロック３２）。一実施形態において、左側のリストにおけるリンクは、右側のリストにおける全てのリンクよりも真に小さい重みを有する。図１０は、各サブリストが７０１〜７１２として一意にラベル付けされる、そのような再帰的分割の結果を提供する。
【００６９】
[0068]その後、コントローラの処理ロジックは、ルートノードを除いて、処理ブロック３２において構築された二分木におけるノード毎にトポロジグラフを構築する（処理ブロック３３）。一実施形態において、トポロジグラフは、全ての観測可能なリンク、二分木内の現在のノードのサブリストに含まれる全てのリンク、及び現在のノードのサブリスト内のリンクよりも観測可能なリンクに近い全てのリンクを含む。さらに、これらのリンクのエンドポイントである全てのスイッチも、トポロジに含まれる。図１０において、一例がノード７０１について与えられる。ノード７０１は、サブリスト｛５０４、５０６、５０９｝を有する。観測可能なリンク｛５０７、５０８｝により近い他のリンクは存在しない。したがって、トポロジは、リンク｛５０４、５０６、５０７、５０８、５０９｝を含む。これらのリンクのエンドポイントは｛３０２、３０３、３０４、３０６、３０７｝であるため、これらのスイッチも、トポロジの一部である。
【００７０】
[0069]最後に、処理ロジックは、図８（Ａ）において開示される処理ブロック１１〜１５を繰り返す。その理由は、これらが同一であるためである。リンク障害の位置を突き止めるために、本方法は、二分木内のノード毎に別の走査ルールを予めインストールする。
【００７１】
[0070]別の実施形態において、各観測可能なリンクをトポロジ構築において別個のリンクとして含む代わりに、観測可能なリンクは、単一の仮想リンクとして一括されることができる。これにより、ハミルトン周期がより効率的に算出されるであろう。その理由は、この周期における最後のリンクが、観測可能なリンクのセットにおける最も近いリンクにジャンプすることができるためである。
【００７２】
[0071]コントローラが（１つ又は複数の）ピボットスイッチに最も近いリンク障害を検出することを望む場合、図９（Ｂ）の処理ブロック４０〜４８を実行することにより、そのリンク障害を識別する。リンク障害の位置を突き止めるために、本プロセスは、処理ロジックによってトポロジの接続性を検証することから始まる（処理ブロック４０）。一実施形態において、これは、図８（Ａ）及び図８（Ｂ）のプロセスを使用して実行される。但し、他の技法が使用されてもよい。トポロジ接続性が検証された場合、トポロジは接続されており、本プロセスは終了する（処理ブロック４１）。そうでない場合、コントローラの処理ロジックは、処理ブロック３２において構築された二分木のウォークを開始する。コントローラの処理ロジックは、まず、現在のルートノードの左の子についての制御フローパケットを投入し（処理ブロック４３）、次いで、パケットが戻ってきて受信されたか否かを判定することによって障害が検出されたか否かをテストする（処理ブロック４４）。パケットが戻ってきて受信された場合、処理ロジックは、障害が存在しないと判定し、処理ブロック４５へ進む。パケットが戻ってきて受信されない場合、処理ロジックは、子ノードのサブリスト内の１つ又は複数のリンクにおける障害が発生したと判定し、処理ブロック４６へ進む。
【００７３】
[0072]左の子が正常であると判定された場合、処理ロジックは、右の子を新たなルートとして設定することによって検索を継続し、この新たなルートの左の子についてインストールされた制御フローを使用して、処理ブロック４３及び４４を繰り返す。任意の左の子のノードについて障害が検出された場合、処理ロジックは、処理ブロック４６において、リストが１つのリンクのみを有するのか、又は２つ以上のリンクを有するのかを確認する。リストが１つのリンクのみを有する場合、そのリンクは故障しており、プロセスは終了する（処理ブロック４８）。２つ以上のリンクがサブリストに存在する場合、処理ロジックは、現在のルートを現在のノードに設定し、その左の子を走査することによって検索を継続する（処理ブロック４７及び４３）。一実施形態において、制御パケットの投入は、トポロジ接続性を確認する際と同じ手法で実行されるが、コントローラは、観測可能なリンクから、制御パケットを投入し始める。
【００７４】
[0073]一実施形態において、同じスイッチが二分木の種々の子ノードについて投入された多数の制御パケットを処理しなければならない場合、これらの制御パケットを区別するために、一意のビットマスクが使用される。選択は、コントローラ自体に委ねられ、送信元ポート、ＶＬＡＮタグ、ＭＰＬＳラベル等を含む任意のフィールドは、この目的のために使用されることができる。一実施形態において、スイッチが種々の制御フローについて完全に同じ転送を行う場合、共通のプレフィックスを判定し、残りのビットを制御フロー識別子のビットマスクにおいて気にしないと設定することによって、制御フローは、単一の転送ルールに統合される。
【００７５】
[0074]処理ブロック４０〜４８は、最も近いリンク障害の位置を判定するために使用されるが、サブツリーの各ノードを確認するために、インストールされた制御フローを使用し、どのサブリストが障害が発生したリンクを含むかを判定することができる。このようにして、コントローラは、トポロジの切断された部分を識別することができる。例えば、図１０によれば、コントローラ１０３は、ノード７０１〜７１２について１２個の制御フローのセットアップを使用し、制御フローパケットを観測可能なリンクに投入する。図３において与えられる障害例では、コントローラ１０３は、二分木ノードを走査することによって以下を識別する。
｛５０４、５０６、５０９｝は（１つ又は複数の）故障リンクを有する
｛５０４｝は故障している
｛５０６、５０９｝は（１つ又は複数の）故障リンクを有する
｛５０６｝は故障している
｛５０９｝は故障していない
【００７６】
[0075]したがって、コントローラは、リンク５０４及び５０６が故障していることを曖昧さなしに識別することができる。しかしながら、これらが唯一のエラーであると曖昧さなしに提示することは不可能である。その理由は、処理ブロック３３においてノード７０２、７０５、７０６、７０９、７１０、７１１、及び７１２について構築されたトポロジが、これらの故障リンクを含むためである。
【００７７】
[0076]二分木の所与のノードにおいてリンクに到達するためのより少ない代替パスを有する小さなトポロジインスタンスでは、現在のツリーノードのリンク、観測可能なリンクのリンク、及びこの代替パスのリンクのみがトポロジに含まれる、代替パス毎に異なるトポロジを処理ブロック３３において構築することができる。そのような配置において、代替パス毎に、コントローラの処理ロジックは、別の制御フローを算出する。例えば、ノード７０２について、１つのトポロジでは、リンク｛５０１、５０２、５０３、５０５、５０７、５０８、５０９｝が含まれ、第２のトポロジでは、リンク｛５０１、５０２、５０３、５０４、５０５、５０７、５０８｝が含まれ、第３のトポロジでは、リンク｛５０１、５０２、５０３、５０５、５０６、５０７、５０８｝が含まれる。これらのリンクの走査は、第１のトポロジのみが接続される一方で、第２及び第３のトポロジは接続されないことを識別するであろう。したがって、各リンク障害は、別々に識別され得る。
【００７８】
［付加的な実施形態］
[0077]転送プレーンにおけるインタフェースの接続性を検証するための技法の別の実施形態が存在する。これらは、２つの異なるシナリオ、即ち、対称的な障害の場合と非対称的な障害の場合とについて行われ得る。
【００７９】
[0078]対称的な障害の場合において、インタフェースの一方の方向が故障する場合、他方の方向も故障する。例えば、図１Ｂにおける転送要素３０１と転送要素３０２との間のインタフェース３１２は、通常の条件下では双方向である。したがって、インタフェース３１２は、パケットを３０２から３０１へ、且つ３０１から３０２へ送信することができる。３０２から３０１へのインタフェース３１２の障害は、３０１から３０２へのインタフェースの障害も暗示し、逆もまた同様であるため、コントローラは、各インタフェースを少なくとも１つの方向で確認することができれば満足である。これらの条件下で、一実施形態において、転送プレーンは、無向トポロジグラフＧ（Ｖ，Ｅ）によって表される。但し、Ｖは、転送要素に対応する頂点のセットであり、Ｅは、転送要素間のインタフェースに対応するエッジのセットである。図１１は、図１Ｂ〜図１Ｄに示される転送プレーンについての無向グラフ表現の例を示す。それらの図１Ｂ〜図１Ｄを参照すると、転送要素３０１〜３０７は、このグラフの頂点を構成し、頂点間のインタフェースは、単位重量の無向エッジである。図１２は、図１１に示されるようなグラフを開始点として使用して仮想リングトポロジを構築するためのプロセスのフロー図である。一実施形態において、算出されたリングトポロジは、転送プレーンにおける各インタフェースを少なくとも１回ビジットする周期（ルーティングループ）を作成するために、インストールされるべき静的転送ルールを判定するために使用される。さらに、図１２に述べられる動作は、リングサイズが減少され、潜在的には最小化されることを確保する。即ち、あらゆるインタフェースを少なくとも１回ビジットするものは、取り得る最短のルーティングループである。
【００８０】
[0079]図１２における処理は、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。図１２を参照すると、処理ロジックは、転送プレーントポロジから無向グラフＧ（Ｖ，Ｅ）を構築する（処理ブロック１２００）。一実施形態において、エッジは単位重量を有すると仮定される。本プロセスの目標は、あらゆるエッジを少なくとも１回ビジットするものが最短周期となるように、このグラフ上で周期を見つけることである。あるグラフにおけるオイラー周期は、そのグラフ上の全てのインタフェースを丁度１回ビジットすることを試みる。したがって、オイラー周期が存在する場合、そのオイラー周期が、取り得る最短周期である。
【００８１】
[0080]無向グラフＧ（Ｖ，Ｅ）を構築した後、処理ロジックは、そのグラフ上の全ての頂点が偶数個のエッジ（即ち、偶数次）を有するか否かを判定する（処理ブロック１２０１）。回答が肯定的である場合、無向グラフＧ（Ｖ，Ｅ）は、オイラー周期を有し、本プロセスは、処理ロジックがオイラー周期を算出する処理ブロック１２０２に進む。回答が否定的である場合、無向グラフＧ（Ｖ，Ｅ）は、オイラー周期を有しない。中間ステップとして、処理ロジックは、新たなグラフ上であらゆる頂点が偶数次を有するように、頂点間に仮想エッジの最小コストのサブセットを追加することによって新たなグラフを構築する（処理ブロック１２０３）。一実施形態において、サブセットのコストは、そのサブセット内の各エッジの重みの合計である。仮想エッジの重みは、元のグラフＧ（Ｖ，Ｅ）上でその仮想エッジの一方の端部から他方の端部に到達するために必要な最小数のホップである。一実施形態において、この重みは、例えば、ダイクストラのアルゴリズムなどの最短パスアルゴリズムをＧ（Ｖ，Ｅ）に実行することによって算出される。頂点間の仮想エッジの最小コストのサブセットを見つけることは、文献において十分に確立されている。例えば、Ｅｄｍｏｎｄｓら著、“Ｍａｔｃｈｉｎｇ，Ｅｕｌｅｒ  Ｔｏｕｒｓ  ａｎｄ  ｔｈｅ  Ｃｈｉｎｅｓｅ  Ｐｏｓｔｍａｎ”、Ｍａｔｈｅｍａｔｉｃａｌ  Ｐｒｏｇｒａｍｍｉｎｇ  ５  （１９７３年）を参照されたい。
【００８２】
[0081]一旦そのような仮想エッジセットＥ’が算出されると、グラフは、Ｇ（Ｖ，Ｅ∪Ｅ’）に拡張される。処理ロジックは、この新たなグラフ上でオイラー周期を算出する（処理ブロック１２０２）。オイラー周期の算出も、本分野において周知であり、任意のそのような周知のアルゴリズムは、処理ブロック１２０２の一部として使用され得る。
【００８３】
[0082]最後に、処理ロジックは、算出されたオイラー周期を使用して論理リングトポロジを構築する（処理ブロック１２０４）。論理リングトポロジを使用することによって、コントローラが制御フローについてのパケットを任意の転送要素に投入する場合、そのパケットが論理リングトポロジに従ってループするように、静的転送ルールのセット及びこれらの転送ルールにマッチする制御フローが判定される。
【００８４】
[0083]図１Ｂの転送トポロジは、奇数個のエッジを備える頂点を含むグラフを有する。一実施形態において、転送トポロジは、全ての頂点が偶数次を有するグラフに拡張される。図１２の処理ブロック１２０２及び１２０３に続いて、新たな最小限のグラフが、図１３に示されるように構築される。図１３を参照すると、仮想エッジ３２５１及び３３６１が結果として追加される。この新たなグラフ上で、オイラー周期は、１１ホップの総コストを有して存在する。１つの取り得るオイラー周期及び論理リングトポロジは、図１４に示される。静的転送ルールは、マッチするフローが論理リングを１つの（例えば、時計回りの）方向でループするようにインストールされる。周期が所与の転送インタフェースに同じ方向で１回だけ関与する場合、対応する転送要素における受信インタフェースにマッチする単純なルールは、ある周期を作成するのに十分であろう。図１４において、インタフェース３２５は、周期上で２回発生するが、異なる方向で横断される（即ち、異なる転送要素における出来事）。したがって、各発生は、対応する転送ルールを対応する転送要素にインストールすることによって、容易に解決されることができる。所与の転送インタフェースが同じ方向で２回以上横断される場合、各インスタンス化は、多数の転送ルールを使用して、互いに区別される。図１４の周期において、インタフェース３３６は、２回発生し、双方の発生において、同じ転送要素（３０６）での出来事である。したがって、転送要素は、２つの別個の転送ルールを有し、各発生は、一方にはマッチするが、他方にはマッチしない。これを達成する１つの手法は、複数の発生を区別するために、ヘッダフィールドの一部を予約することである。例えば、一実施形態において、転送要素がこのヘッダをサポートする場合、ＶＬＡＮ  ＩＤフィールドは、この目的のために使用される。当然ながら、転送ルールがＶＬＡＮ  ＩＤ及び／又は受信インタフェースに関して設定される場合、多くのフローは、これらのルールに誤ってマッチされ、ルーピングを開始する。一実施形態において、予め特定される制御フローのみが、そのようにルーティングされることを許される。制御フローを設定する１つの手法は、予約された送信元又は宛先トランスポートポート（例えば、ＵＤＰ若しくはＴＣＰ）を使用すること、又は全てのコントローラに共通する送信元又は宛先ＩＰアドレスプレフィックスを使用することである。コントローラに一意であるこれらのヘッダ値にマッチしないフローは、マッチするものを有せず、制御フローについてインストールされた静的ルールに従ってルーティングされないであろう。
【００８５】
[0084]上記のガイドラインに従うことによって、図１４の論理リングトポロジについての静的転送ルールを容易に算出することができる。これらのルールは、リングが時計回りの方向で横断されるように設定される。
【表２】
2015533049.tif 000008
【００８６】
[0085]一旦制御フローについてのこれらの静的ルールが上記例におけるＵＤＰポート番号を用いて識別されると、任意のコントローラは、トポロジ検証のためにこの制御フローに便乗することができる。図１５は、トポロジ検証のためのプロセスの一実施形態のフロー図である。図１５におけるプロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【００８７】
[0086]図１５を参照すると、本プロセスは、コントローラの処理ロジックが、その現在の制御ドメインを判定し、その制御ドメイン内の任意のノードを投入及びループバックポイントとして選択することから始まる（処理ブロック１５３０）。この任意のノードは、そのコントローラから制御インタフェースを介してトポロジ検証のための制御メッセージを受信し、制御メッセージを転送プレーンに置き、メッセージが論理リングトポロジを通じてループしてその任意のノードに戻る場合に、メッセージをコントローラにループバックするべきである。この最後のループバック機能性を実現するために、コントローラは、トポロジ検証メッセージを投入する前に、新たな（動的）ルールをインストールする。そうでない場合、メッセージは、論理リングトポロジを通じて無限にループする。一実施形態において、動的ルールは、論理リングトポロジにおける次のホップを指し示す静的ルールを、その静的ルールが今やコントローラを指し示すように更新することによってインストールされる。これは可能ではあるが、他のコントローラのメッセージと干渉し得るため、好適ではない。別の実施形態において、静的ルールにおいて使用されるフィールドに加えて、コントローラ固有のヘッダフィールド（例えば、制御メッセージを投入するコントローラのＩＰアドレス又はＭＡＣアドレス）を特定することによって、新たな転送ルールが挿入される。したがって、投入及びループバックポイントとして使用されるこの転送要素において、２つのルール（１つは静的、１つは動的）は、同じコントローラによって投入される制御メッセージとマッチする。しかし、異なるコントローラによって送信される制御メッセージは、静的ルールにのみマッチし、別のコントローラによってインストールされる動的ルールにはマッチしないであろう。転送要素の一実施形態において、デフォルト設定により、最長のマッチが、より高い優先度を有する。別の実施形態では、最後にインストールされるルールが、より高い優先度を有する。また別の実施形態では、コントローラは、種々のマッチングルールの優先度を明示的に設定することができる。
【００８８】
[0087]次いで、処理ロジックは、投入ポイントを使用して、パケットを転送プレーンに投入する（処理ブロック１５３１）。一実施形態において、コントローラは、制御パケットについての送信インタフェース／ポートを明示的に特定する。この場合において、転送要素は、制御メッセージの一部分として送信インタフェースを特定し、同じメッセージの別の部分として転送プレーンを横断すべきパケットを特定する制御メッセージを受信している。転送要素は、そのような制御メッセージについて如何なる転送テーブルルックアップも適用しない。
【００８９】
[0088]別の実施形態において、コントローラは、転送プレーンを横断すべきパケットを制御メッセージの一部として特定する制御メッセージを送信するが、送信ポートを特定する代わりに、転送プレーンにおける受信ポートを制御メッセージの別の部分として特定する。そのような場合において、制御プレーンに転送されるべきパケットは、特定された受信ポートから受信されるかのように扱われ、したがって、転送テーブルルックアップ及び処理パイプラインを通常のペイロードとして経る。表２における静的ルールを提示する際に仮定される使用は、前者である。即ち、コントローラは、送信ポートを特定し、転送テーブルを迂回する。後者が使用される場合、同じ方向における同じインタフェースの多数の横断を区別することが、最初の投入と最後のループバックとの間に必要である。一実施形態において、これは、パケットヘッダ内のＶＬＡＮ  ｉｄフィールド又は任意の他の一意にアドレス指定可能なフィールドを使用して、又は新たなパケットヘッダフィールド（例えば、ＭＰＬＳラベル）についてのプッシュ／ポップアクションを特定することによって行われる。表２に提示される例示的な静的ルールは、それに応じて修正される。
【００９０】
[0089]次に、コントローラの処理ロジックは、この処理ロジックが転送プレーンに投入したペイロードを受信するのを待つ（処理ブロック１５３２）。処理ロジックが、戻ってきたメッセージを受信する場合（処理ブロック１５３３）、トポロジ接続性は検証され、障害は検出されない。応答がない場合（処理ブロック１５３４）、トポロジは検証されず、転送プレーンに潜在的な障害が存在する。一実施形態において、コントローラは、いずれの結論においても、トポロジ接続性を（再）検証するために制御パケットを再投入する。制御フローは、ボトルネック帯域幅及び遅延拡散も見つけるために、ストリームとして又はバースト内で送信されてもよいことに留意されたい。
【００９１】
[0090]一例として、コントローラ１０１がＤ１０１＝｛３０１、３０２、３０５｝を有する、図１Ｄの場合を考慮されたい。したがって、コントローラ１０１は、Ｄ１０１内の任意の転送要素を、投入及びループバックポイントとして選択することができる。コントローラ１０１が転送要素３０２をこの役割において選択すると仮定する。その結果、コントローラ１０１は、まず、表２の静的ルールに伴うように新たな（動的）ルール（ループバックルールとも称される）を以下の形式でインストールすることができる。
【００９２】
[0091]｛宛先ＵＤＰ、受信インタフェース、送信元ＩＰ｝＝｛ｕｄｐ１、３１２、ＩＰ１０１｝である場合、制御インタフェースを介してコントローラ１０１へ送信する。
【００９３】
[0092]次いで、コントローラ１０１は、その一部が送信インタフェース（例えば、３２５）を特定し、その一部が、送信元及び宛先ＵＤＰポートがｕｄｐ１として特定されるＩＰペイロードであり、送信元ＩＰアドレスがＩＰ１０１によって満たされる、制御メッセージを整理することができる。コントローラ１０１は、このメッセージを転送要素３０２へ送信し、転送要素３０２は、制御メッセージをアンパックし、ＩＰペイロードを制御メッセージにおいて特定される送信インタフェースへ転送すべきであることを知る。次いで、転送要素３０２は、ＩＰペイロードを、特定されるインタフェース（即ち、３２５）へ転送する。ＩＰペイロードが次の転送要素に達すると、その転送要素は、表１において特定される転送ルールのマッチングを開始し、単一のループを完成させるために、ルート３０５−３０２−３０３−３０６−３０７−３０４−３０３−３０６−３０５−３０１−３０２を取る。転送要素３０２が、送信元ＩＰフィールドがＩＰ１０１と設定され、送信元ＵＤＰポートがｕｄｐ１と設定されたＩＰペイロードを受信インタフェース３１２から受信する場合、このペイロードは、コントローラ１０１によって設定されるループバックルールにマッチする。したがって、転送要素３０２は、制御インタフェース４１２を使用して、ＩＰパケットをコントローラ１０１へ送信する（即ち、ループバックする）。
【００９４】
[0093]多数のコントローラが、トポロジを検証するために静的転送ルールの同じセットを共有するが、各々が、そのコントローラ自体の一意のループバックルールを論理リングトポロジにインストールしなければならない。そうすることによって、多数のコントローラは、互いに干渉することなく、制御パケットを同時に投入することができる。各制御パケットは、コントローラに渡される前に、単一のループを作る（即ち、投入ポイントに戻る）。図１６は、コントローラ１０１、１０２、及び１０３が、（図１Ｂにおける例に従って）それらの対応する制御ドメインにおける転送要素を使用して、制御パケットを論理リングトポロジに投入する場合を示す。図１６における論理リング及び投入ポイントの選択に従って、表３は、ループバックルールとしてインストールされ得る動的ルールを要約している。
【００９５】
[0094]
【表３】
2015533049.tif 000009
【００９６】
[0095]上記の別の実施形態は、各インタフェースの１つの方向のみが検証される場合に所与のコントローラが満足する対称的な場合に関与する。インタフェースの一方の方向における障害が他方の方向における障害を暗示しない非対称的な場合を拡張して、コントローラは、各方向を別々に検証することを望むであろう。一実施形態において、これは、転送プレーンを有向グラフＧ（Ｖ，Ａ）として扱うことによって行われる。但し、Ｖは、以前と同様に、転送要素のセットに対応する頂点のセットであり、Ａは、インタフェースの各方向を別の無向インタフェースとして数えることによる全てのインタフェースのセットに対応する弧（即ち、有向エッジ）のセットである。図１７は、図１Ｂに示される転送プレーンについてのそのようなグラフの例である。
【００９７】
[0096]有向グラフを有することの主な相違点は、各インタフェースが双方向性であると仮定するため、結果として得られる有向グラフが対称的であり、効率的に算出され得るオイラー周期を有することが保証され、このグラフをさらに拡張する必要がないことである。したがって、図１２に挙げられる動作は、図１８に簡略化される。図１８のプロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【００９８】
[0097]図１８を参照すると、本プロセスは、グローバル転送プレーントポロジを有向グラフにマッピングすること（処理ブロック１８２０）によって始め、オイラー周期を直接算出することに進む（処理ブロック１８２１）。本プロセスは、処理ロジックがこの特定のオイラー周期に従って論理リングトポロジＲを構築し、静的転送ルールを算出することで終了する（処理ブロック１８２２）。以前と同様に、静的転送ルールの総数は、オイラー周期の長さに等しく、この場合においては、丁度｜Ａ｜＝２｜Ｅ｜である。但し、｜ｘ｜は、セットｘの濃度（サイズ）である。静的及び動的転送ルール（例えば、ループバックルール）が算出及びインストールされる手法、並びにコントローラがトポロジ全体を検証する方法は、対称的な障害の場合と同じである。一実施形態において、唯一の相違点は、構築される論理リングトポロジであり、これは異なるルールのセットを必要とする。
【００９９】
[0098]本発明の実施形態は、あるトポロジが本来あるべきように接続されているか否かを検証するだけでなく、少なくとも１つの障害の位置を突き止める効率的な方法も開示する。図１９は、任意のリンク障害の位置を突き止めるために使用される静的転送ルールのセットを算出するためのプロセスのフロー図である。本プロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【０１００】
[0099]図１９を参照すると、本プロセスは、各インタフェースを少なくとも１回横断するリングトポロジＲを処理ロジックが構築することから始まる（処理ブロック１９００）。リングトポロジＲを見つけるプロセスは、対称的なリンク障害の場合及び非対称的なリンク障害の場合について、それぞれ図１２及び図１８において既に説明されている。次に、処理ロジックは、時計回りのウォークＷを定義し（処理ブロック１９０１）、このウォークＷを反転させることによって、反時計回りのウォークＷ’を定義する（処理ブロック１９０２）。処理ロジックは、静的転送ルールをインストールすることによって、これらのウォークをルーティングループとして実現する（処理ブロック１９０３）。最後に、処理ブロック１９０４は、特定の実施形態に依存する。一実施形態において、処理ロジックは、ウォークＷ’を論理リングの任意のポイントにおいて反転させて、Ｗにおけるウォークを継続するために、ホップ毎に１つのバウンスバック（bounce  back）ルールをインストールする。別の実施形態において、処理ロジックは、ウォークＷを論理リングの任意のポイントにおいて反転させて、Ｗ’におけるウォークを継続するために、ホップ毎に１つのバウンスバックルールをインストールする。また別の実施形態において、処理ロジックは、論理リングの各ノードにおいて、２つのバウンスバックルール、即ち、ウォークＷ’をＷに反転させるためもの、及びウォークＷをＷ’に反転させるためのものをインストールする。
【０１０１】
[00100]図２０は、図１１の無向グラフを仮定する図１Ｂ〜図１Ｄにおいて与えられるトポロジについての例を示す。この例では、反時計回りのウォークＷ’及び時計回りのウォークＷがインストールされる。一実施形態において、表２に提示される静的ルールは、時計回りのルーティングループＷを実現するために、対応する転送要素にインストールされる。一実施形態において、表２の静的ルールは、反時計回りのウォークＷ’を実現するために、各行において、受信インタフェースの値を送信インタフェースの値に置換することによって変更される。同じインタフェースが同じ方向において多数回横断される場合、これらの異なる発生は、適当なパケットのタグ付けを用いてカウントされる。タグ付けを実行するノード、及びルーティングのためにタグ情報を使用するノードは、ＷとＷ’との間で変化する。例えば、Ｗにおいて、インタフェース３３６は、転送要素３０３から転送要素３０６へ行く際に２回横断される。この横断に先立つ転送要素は、タグ付けを実行し（即ち、Ｗについての転送要素３０４及び３０２）、出口転送要素３０６は、このタグ付けを使用して、正しい方向（３０５又は３０７）を辿る。反対のウォークＷ’において、３３６は２回横断されるが、反対方向（３０６から３０３）においてである。したがって、Ｗ’において３０６に先立つ転送要素は、今回は、タグ付けを実行し（転送要素３０５及び３０７）、出口転送要素３０３は、このタグ付けを使用して、正しい方向（３０２又は３０４）を辿る。さらに、時計回りのウォークを反時計回りのウォークと区別するためには、パケットヘッダ内に一意の値、例えば、一意の宛先トランスポートポート番号を設定する必要がある。この差別化は、同じインタフェースがウォークＷの一部としてそれぞれの反対方向において横断される場合にのみ必要とされる。図２０の例示的なトポロジリングの場合、インタフェース３２５は、双方の方向において横断される。したがって、転送要素３０５は、一意のヘッダフィールドを確認することによって、パケットがどのウォークを辿るのかを知らなければならない。
【０１０２】
[00101]図１９の処理ブロック１９０４に従って、別個のバウンスバックルールは、任意の頂点においてＷ’からＷへ切り替えることができるように、各頂点にインストールされる。各バウンスバックルールは、一意の制御パケットｉｄに固有である。この目的のため、サポートされるヘッダフィールドについての任意の予約された範囲が使用され得る。例えば、Ｒ上の各頂点ｋに一意の仮想ＩＰアドレスｖｉｐｋ（物理インタフェースに属しないという意味で仮想であるが、単に論理リングの頂点を列挙するために使用される）を割り当てることができる。転送要素は、多数の頂点にマッピングされることができ、頂点は、別々にカウントされる。例えば、図２０において、転送要素３０２、３０３、３０５、３０６は、Ｒ上の２つの別個の頂点にマッピングされ、頂点毎に、別個のＩＰアドレスを割り当てられる。例えば、転送要素３０２はｖ２及びｖ４にマッピングされ、したがって、ｖｉｐ２及びｖｉｐ４について設定されるバウンスバックルールは、転送要素３０２にインストールされる。図２０についてのバウンスバックルールは、表４において報告される。
【表４】
2015533049.tif 000010
【表５】
2015533049.tif 000011
【０１０３】
[00102]図２１は、バウンスバックルールが時計回りのウォーク及び反時計回りのウォークの双方について使用される場合を図示する。正しいＶＬＡＮ  ＩＤフィールドを設定するだけでなく、表５において、ｕｄｐ１をｕｄｐ２と置換し、ｕｄｐ２をｕｄｐ１と置換することによって、トポロジリングの各ノードにおいてウォークＷをＷ’に切り替えるための静的バウンスバックルールが取得される。そのような２つのバウンスバックルールを有することは、任意のコントローラがトポロジリングを双方の方向において検査することを可能にし、より多くの障害及びより短いルートの検出を可能にする。
【０１０４】
[00103]任意のリンク障害の位置を実際に突き止めるために、コントローラは、論理リングトポロジＲに従うインストールされた静的ルールに従ってルーティングされるパケットを転送プレーンに投入する。コントローラは、その制御ドメイン内の転送要素を、投入及びループバックポイントとして選択する。トポロジ検証の場合のように、ループバック転送ルールは、任意のパケットが投入される前に、投入ポイントにインストールされる。表３のループバックルールは、例えば、図２０に図示されるリングトポロジ上の種々のコントローラによって使用され得る。一実施形態において、コントローラは、論理リングトポロジに対応する１つのバウンスバックルールのみがインストールされるセットアップを使用する。図２２は、そのようなバウンスバックルールが反時計回りのウォークＷ’から時計回りのウォークＷに切り替えるためにインストールされると仮定する、任意のリンク障害を検出するためのプロセスの一実施形態のフロー図である。本プロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【０１０５】
[00104]図２２を参照すると、コントローラの処理ロジックは、１つ又は複数のトポロジ検証メッセージを、その投入ポイントに送信する（処理ブロック２２００）。メッセージが戻ってきて受信される場合、全てのインタフェースは正常であり、本手続きは終了する（処理ブロック２２０１）。本手続きは、処理ブロック２２００を開始することから始まる周期的又は非周期的なトリガに基づいて、常に繰り返され得ることに留意されたい。いずれのトポロジ検証メッセージも戻ってきて受信されない場合、潜在的に障害が発生したインタフェースが存在し、本手続きは、障害検出フェーズを実行することを開始する（処理ブロック２２０２において開始する）。
【０１０６】
[00105]コントローラの処理ロジックは、投入ポイントに０°を割り当て、ノード間で３６０°を均等に分割することによって、論理リング上のノードに角度を割り当てる（処理ブロック２２０２）。論理リングにＮ個の頂点が存在する場合、各頂点は、３６０°／Ｎによって均等に（又は、３６０°／Ｎが整数ではない場合、除算を最も近い整数に四捨五入することによって、ほぼ均等に）分離されると仮定され、投入ポイントから反時計回りの方向におけるｉ番目の頂点は、ｉ×３６０°／Ｎの角度を割り当てられる。図２０の例示的なリングにおいて、論理リングには１１個のノード（即ち、頂点）が存在し、したがって、各頂点は、３６０°／１１≒３３°だけ分離されると仮定される。
【０１０７】
[00106]次に、コントローラの処理ロジックは、検索角度θをリングの半分、即ち、θ＝１８０°に初期化する（処理ブロック２２０２）。対称的な障害の場合において、インタフェース障害の候補セット（即ち、検索セット）は、対応する無向グラフＧ（Ｖ，Ｅ）のＥにおける全てのエッジを含む。非対称的な場合において、インタフェース障害の候補セットは、対応する有向グラフＧ（Ｖ，Ａ）のＡにおける全ての弧を含む。検索セットは最初は、論理リングトポロジの全てのエッジを含むため、リング上の最小検索角度（即ち、
【数５】
2015533049.tif 000012
）は、０°に初期化され、リング上の最大検索角度（即ち、
【数６】
2015533049.tif 000013
）は、３６０°に初期化される。コントローラは、バウンスバックノードの角度が検索角度を超えずに最大の角度となるように、論理リングの頂点ｋを見つけることによって、バウンスバックノードを選ぶ。
【０１０８】
[00107]コントローラの処理ロジックは、制御メッセージのペイロードにおいて頂点ｋをバウンスバックノードとして識別することによって、その制御メッセージをＷ’に投入する（処理ブロック２２０４）。メッセージが受信されない場合、論理リングＲの
【数７】
2015533049.tif 000014
とθとの間に存在するインタフェースは、障害を起こしている（処理ブロック２２０５）。したがって、検索は、閉区間
【数８】
2015533049.tif 000015
に絞り込まれ（処理ブロック２２０６）、検索セットは、
【数９】
2015533049.tif 000016
に存在するインタフェースに更新される。他方で、メッセージが受信される場合、閉区間［０，θ］のインタフェースは、成功裡にビジットされ、検索セットから除去されることができる。一実施形態において、検索角度は、論理リングトポロジの未検索領域の半分を追加することによって拡大される（処理ブロック２２０７）。次に、処理ロジックは、検索セットに１つのインタフェース候補のみが残っているか否かを確認する（処理ブロック２２０８）。そうである場合、この残りのインタフェースは、故障していると宣言される（処理ブロック２２０９）。そうでない場合、検索は、新たなバウンスバックノードを目標とする制御パケットを投入することによって、論理リングＲの次のセグメントで継続される。論理リングがＮ個の頂点を有する場合、検索全体で、約ｌｏｇ２（Ｎ）個の検索ステップを必要とする（即ち、これだけ多くの制御メッセージが連続して投入される）。
【０１０９】
[00108]図２３、図２４、及び図２５は、これまでに使用されたリングトポロジ例上での、図２２に概説される二分検索メカニズムの三度の繰返しを示す。ステップ１（図２３）において、リングの半分が、投入ポイントから開始して反時計回りの方向で検索され、このセグメントに障害は存在しないと結論を下す。ステップ２において、検索は、論理リングのおおよそ３／４に拡大され、ここでも、この部分に障害は存在しないという結論である。この例の最後のステップにおいて、制御パケットに対する応答の欠如は、インタフェース３５６が故障しているはずであることを暗示する。
【０１１０】
[00109]リングの一方向のみにおける検索は、（多数の障害が発生し得た場合であっても）リンク障害検出を単一のリンクに限定する。さらに、検索がリングの半分を越えて拡大される場合、制御パケットは、正常であると知られているリングの半分を不必要に横断する（例えば、図２４及び図２５における動作２及び動作３）。論理リングがＮ個のノードを有する場合、付加的なＮ個の静的ルールをインストールすることは、図２１を説明する際に強調されたように、リングの双方の方向を随意に横断し、且つＷからＷ’へ又はその逆へ切り替えることができるように、ルーティングルールを生成するであろう。これは、リングの周りにより短いウォークを作成し、最大で２つのリンク障害の位置を突き止めることを可能にする。
【０１１１】
[00110]図２６は、更新された二分検索を実行するためのプロセスの一実施形態のフロー図である。本プロセスは、ハードウェア（回路、専用ロジック等）、（汎用コンピュータシステム又は専用機械で実行されるもの等の）ソフトウェア、ファームウェア、又はこれら３つの組合せを含み得る処理ロジックによって実行される。
【０１１２】
[00111]図２６を参照すると、本プロセスは、処理ロジックがトポロジ接続性を検証することから始まる（処理ブロック２６００）。トポロジが接続されている場合、処理ロジックは、障害が存在しないことを宣言する（処理ブロック２６０１）。そうでない場合、処理ロジックは、論理リングトポロジに反時計回りの方向で頂点を均等に配置することによって、リングの各頂点に角度を割り当てる（処理ブロック２６０２）。一般性を失うことなく、処理ロジックは、まず、反時計回りの方向におけるリングの半分に検索を初期化する（処理ブロック２６０３）。次いで、処理ブロック２６０４は、処理ロジックが検索角度を確認するため、図２２において概説された手続きとは異なる。検索角度が１８０°よりも大きい場合、処理ロジックは、Ｗを使用して時計回りの方向でウォークを作成する。検索角度が１８０°以下の場合、処理ロジックは、反時計回りのウォークＷ’を継続し、残りの反復は、図２２の残りの反復と同等となるであろう。制御メッセージの受信又は受信の欠如（処理ブロック２６０５）は、検索角度に応じて異なる事柄を暗示する。メッセージが受信され（処理ブロック２６０５）、検索角度が１８０°を上回った（処理ブロック２６０６）場合、最大検索角度
【数１０】
2015533049.tif 000017
は、減少される（処理ブロック２６０９）。メッセージが受信され（処理ブロック２６０５）、検索角度が１８０°以下だった（処理ブロック２６０６）場合、最小検索角度
【数１１】
2015533049.tif 000018
は、代わりに増加される（２６０８）。対照的に、メッセージが戻ってきて受信されず（処理ブロック２６０５）、検索角度が１８０°を上回った（処理ブロック２６０６）場合、
最小検索角度
【数１２】
2015533049.tif 000019
は、増加される（処理ブロック２６０８）。また、メッセージが戻ってきて受信されず（２６０５）、検索角度が１８０°以下だった（処理ブロック２６０６）場合、最大検索角度
【数１３】
2015533049.tif 000020
は、減少される（処理ブロック２６０９）。検索セットが１つのインタフェースのみを残す場合（処理ブロック２６１０）、処理ロジックは、残りのインタフェースが故障していることを宣言する（処理ブロック２６１１）。検索セットに２つ以上のインタフェースが存在する場合、反復は継続する（処理ブロック２６０４）。この手続き全体も、任意のリンク障害の位置を突き止めるために、約ｌｏｇ２（Ｎ）個の制御メッセージを必要とする。
【０１１３】
[00112]図２６における検索が発生する手法は、図２７、図２８、及び図２９において、以前と同じ障害シナリオで例証される。第１のステップでも、リングの半分を反時計回りの方向で検索する（図２７）。このリングの半分には障害がないと分かるため、障害は、投入ノードから開始する時計回りの半分に存在するはずである。したがって、第２のステップにおいて、検索は、時計回りの方向で行われる。図２４におけるステップ２とは異なり、今回は、障害が図２５において第２のステップで検出される。最大検索角度を減少させることよりもむしろ、第３のステップにおいて、最大検索角度は増加され、異なるバウンスバックノードが選択される（図２１における先のラベル付けに従うと、ｖ１０）。障害が起きたリンクは、このステップにおいて成功裡に識別される。
【０１１４】
[00113]別の実施形態において、連続的な二分検索を論理リングに対して実行することよりもむしろ、１つ又は双方の方向において制御パケットを並行して送信することができる。より多くの制御メッセージを使用することを代償にして、検出遅延は増加されることができ、より多くのリンク障害の位置が突き止められることができる。具体的には、投入ポイントに最も近い２つのリンク障害が、１つは時計回りの方向において、もう１つは反時計回りの方向において識別されることができる。コントローラが２つ以上の投入ポイントに到達することができる場合、潜在的により多くのリンク障害が識別されることができる。
【０１１５】
[00114]一実施形態において、リングの双方の方向でウォークすること及び２つ以上の投入ポイントを使用することは、多数の動的ループバックルールがインストールされることを必要とする。一例として、インタフェース３３４、３３６、３４７が障害を起こしたと仮定する。コントローラ１０１は、図２１と同様に構築された論理リングと共に転送要素３０１、３０２、３０５を使用して、３６７がいまだに正常であることを検証しつつ、障害３３６及び３４７の位置を突き止めることができる。したがって、他のコントローラと連絡を取ることができない場合であっても、コントローラ１０１は、検出された障害を迂回し、トポロジの検証済みの部分を使用することによって、有用な情報を抽出することができる。
【０１１６】
［システムの一例］
[00115]図３０は、上述されたプロセスのうちの１つ又は複数を実行するために使用され得るシステムのブロック図を図示する。図３０を参照すると、システム３１０は、プロセッサ３０１４、システムメモリ３０１７（例えば、ＲＡＭ、ＲＯＭ等）、入力／出力コントローラ３０１８、ディスプレイアダプタ３０２６を介したディスプレイ画面３０２４等の外部デバイス、シリアルポート３０２８及び３０３０、（キーボードコントローラ３０３３に接続される）キーボード３０３２、記憶インタフェース３０３４、フロッピーディスク３０３８を受け取るように動作可能なフロッピーディスクドライブ３０３７、ファイバチャネルネットワーク３０９０に接続するように動作可能なホストバスアダプタ（ＨＢＡ：ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ）インタフェースカード３０３５Ａ、ＳＣＳＩバス３０３９に接続するように動作可能なホストバスアダプタ（ＨＢＡ）インタフェースカード３０３５Ｂ、及び光ディスクドライブ３０４０等の、システム３０１０のサブシステムを相互接続するためのバス３０１２を含む。マウス３０４６（又は、シリアルポート３０２８を介してバス３０１２に結合される、他のポイントアンドクリックデバイス）、（シリアルポート３０３０を介してバス３０１２に結合される）モデム３０４７、及び（バス３０１２に直接結合される）ネットワークインタフェース３０４８も含まれる。
【０１１７】
[00116]バス３０１２は、中央プロセッサ３０１４とシステムメモリ３０１７との間のデータ通信を可能にする。システムメモリ３０１７（例えば、ＲＡＭ）は、一般的には、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリであり得る。ＲＯＭ又はフラッシュメモリは、数あるコードの中でも、周辺部品との相互作用などの基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ−Ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）を含み得る。コンピュータシステム３０１０に常駐するアプリケーションは、一般的には、ハードディスクドライブ（例えば、固定ディスク３０４４）、光ドライブ（例えば、光ドライブ３０４０）、フロッピーディスクユニット３０３７、又は他の記憶媒体等のコンピュータ読取可能な媒体に記憶され、コンピュータ読取可能な媒体を介してアクセスされる。
【０１１８】
[00117]記憶インタフェース３０３４は、コンピュータシステム３０１０の他の記憶インタフェースと同様に、固定ディスクドライブ３０４４等の、情報の記憶及び／又は検索のための標準的なコンピュータ読取可能な媒体に接続することができる。固定ディスクドライブ３０４４は、コンピュータシステム３０１０の一部であってもよく、又は、コンピュータシステム３０１０とは別であって、他のインタフェースシステムを通じてアクセスされてもよい。
【０１１９】
[00118]モデム３０４７は、電話リンクを介して遠隔サーバへの、又はインターネットサービスプロバイダ（ＩＳＰ：ｉｎｔｅｒｎｅｔ  ｓｅｒｖｉｃｅ  ｐｒｏｖｉｄｅｒ）を介してインターネットへの直接接続を提供し得る。ネットワークインタフェース３０４８は、遠隔サーバへの直接接続を提供し得る。ネットワークインタフェース３０４８は、ＰＯＰ（ｐｏｉｎｔ  ｏｆ  ｐｒｅｓｅｎｃｅ：存在点）を介したインターネットへの直接的なネットワークリンクを介して遠隔サーバへの直接接続を提供し得る。ネットワークインタフェース３０４８は、そのような接続を、デジタルセルラ電話接続、パケット接続、デジタル衛星データ接続等を含む無線技法を使用して提供し得る。
【０１２０】
[00119]多くの他のデバイス又はサブシステム（図示せず）が、同様の手法で接続されることができる（例えば、文書スキャナ、デジタルカメラ等）。反対に、図３０に示される全てのデバイスは、本明細書において説明される技法を実施するために存在する必要はない。デバイス及びサブシステムは、図３０に示されるものとは異なる手法で相互接続されてもよい。図３０に示されるもの等のコンピュータシステムの動作は、本分野において容易に知られ、本願では詳細に説明されない。
【０１２１】
[00120]本明細書において説明されるプロセスを実装するためのコードは、システムメモリ３０１７、固定ディスク３０４４、光ディスク３０４２、又はフロッピーディスク３０３８のうちの１つ又は複数等の、コンピュータ読取可能な記憶媒体に記憶されることができる。
【０１２２】
[00121]本発明の多くの変形及び変更は、おそらく前述の説明の読後には当業者に明らかとなる一方で、例示として示され、説明された任意の特定の実施形態は、限定するものと考えられることを全く意図されないことが理解されるべきである。それ故に、様々な実施形態の詳細への言及は、特許請求の範囲を限定することを意図されず、特許請求の範囲は、本質的に、本発明に必須と考えられる特徴のみを記載する。
【図１Ａ】
2015533049.tif 000021
【図１Ｂ】
2015533049.tif 000022
【図１Ｃ】
2015533049.tif 000023
【図１Ｄ】
2015533049.tif 000024
【図２】
2015533049.tif 000025
【図３】
2015533049.tif 000026
【図４】
2015533049.tif 000027
【図５】
2015533049.tif 000028
【図６】
2015533049.tif 000029
【図７】
2015533049.tif 000030
【図８】
2015533049.tif 000031
【図９】
2015533049.tif 000032
【図１０】
2015533049.tif 000033
【図１１】
2015533049.tif 000034
【図１２】
2015533049.tif 000035
【図１３】
2015533049.tif 000036
【図１４】
2015533049.tif 000037
【図１５】
2015533049.tif 000038
【図１６】
2015533049.tif 000039
【図１７】
2015533049.tif 000040
【図１８】
2015533049.tif 000041
【図１９】
2015533049.tif 000042
【図２０】
2015533049.tif 000043
【図２１】
2015533049.tif 000044
【図２２】
2015533049.tif 000045
【図２３】
2015533049.tif 000046
【図２４】
2015533049.tif 000047
【図２５】
2015533049.tif 000048
【図２６】
2015533049.tif 000049
【図２７】
2015533049.tif 000050
【図２８】
2015533049.tif 000051
【図２９】
2015533049.tif 000052
【図３０】
2015533049.tif 000053
【国際調査報告】
2015533049.tif 000054
2015533049.tif 000055
2015533049.tif 000056
2015533049.tif 000057
2015533049.tif 000058