(57)【特許請求の範囲】
【請求項１】
複数の従来型ルータを介して外部ＮＷ（Network）と接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置であって、
前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御部と、
前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御部と、
前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦ（Interface）に設定するフローエントリ生成部と、を備える、
ことを特徴とするパケット転送制御装置。
【請求項２】
前記フローエントリ生成部は、
前記パケットの前記ＯＦＳクラスタ内への流入を受け付ける前記OpenFlowスイッチにて、前記設定を実行する、
ことを特徴とする請求項１に記載のパケット転送制御装置。
【請求項３】
前記設定する出力ＩＦをＭＡＣアドレスにより識別し、前記内部ＮＷ経路制御部と外部ＮＷ経路制御部は該当ＭＡＣアドレスをソースアドレスに書換え、そのソースアドレスルーチングでパケットを転送することを特徴とする請求項２に記載のパケット転送制御装置。
【請求項４】
前記外部ＮＷがＩＰネットワークである場合、前記パケットに設定された、前記外部ＮＷ上の宛先がＩＰアドレスであり、
前記外部ＮＷがＩＰ／ＭＰＬＳネットワークである場合、前記パケットに設定された、前記外部ＮＷ上の宛先が宛先ラベルである、
ことを特徴とする請求項１から請求項３のいずれか１項に記載のパケット転送制御装置。
【請求項５】
前記複数のOpenFlowスイッチの各々が備える前記ルーチングエンジンを動作させるアルゴリズムと、前記ＯＦＳクラスタが備える前記ルーチングエンジンを動作させるアルゴリズムとが共通化可能である、
ことを特徴とする請求項１から請求項４のいずれか１項に記載のパケット転送制御装置。
【請求項６】
前記設定された、外部ＮＷ上の宛先に前記パケットが到達できなくなる故障が発生した場合、当該パケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する他の従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定し、
前記設定された宛先へ転送する他の従来型ルータに接続している前記OpenFlowスイッチが無い場合、前記設定された、外部ＮＷ上の宛先を削除して、前記外部ＮＷへ経路広告する、
ことを特徴とする請求項１から請求項５のいずれか１項に記載のパケット転送制御装置。
【請求項７】
複数の従来型ルータを介して外部ＮＷと接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置におけるパケット転送制御方法であって、
前記パケット転送制御装置が、
前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御ステップと、
前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御ステップと、
前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定するフローエントリ生成ステップと、を実行する、
ことを特徴とするパケット転送制御方法。
【請求項８】
複数の従来型ルータを介して外部ＮＷと接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置としてのコンピュータを、
前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御手段、
前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御手段、
前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定するフローエントリ生成手段、
として機能させるためのパケット転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、OpenFlowスイッチ（以下、「ＯＦＳ」と呼ぶ場合がある。）と従来型ルータとを相互接続してパケット転送を制御する技術に関する。なお、「ＮＷ」は、ネットワーク（Network）の略語として用いる。また、「ＲＥ」は、ルーチングエンジン（Routing Engine）の略語として用いる。
【背景技術】
【０００２】
複数の従来型ルータを用いてＮＷを大規模化するために、複数のＯＦＳを用いて構成される内部ＮＷと従来型ルータを用いて構成される外部ＮＷとを相互接続する接続方法がある。この接続方法には、主に、方式１に従うものと方式２に従うものが考えられる。
【０００３】
方式１は、パケット転送用の経路計算を行うＲＥをＯＦＳごとに配備し、ＯＦＳを制御するOpenFlowコントローラ（以下、「ＯＦＣ」を呼ぶ場合がある。）が内部ＮＷと外部ＮＷとを区別なく管理して相互接続を実現する方式である。方式１の接続方法は、ＲＥ群のトポロジをＯＦＳ群のトポロジと同じにすることができ、ＲＥの実装を単純にすることができるというメリットがある。しかし、方式１では、外部ＮＷからは、ＯＦＳの数だけ従来型ルータの数が存在しているように見えてしまい、ＯＦＳ数の増加に伴いルーチング負荷が増大してしまうというデメリットがある。
【０００４】
方式２は、内部ＮＷをクラスタ化してＯＦＳクラスタとし、ＯＦＳクラスタに１つのＲＥを配備し、ＯＦＣが外部ＮＷと内部ＮＷとを区別して管理して相互接続を実現する方式である。方式２の接続方法は、方式１とは対照的に、外部ＮＷからは、従来型ルータが１つだけ存在しているように見せることができるため、ルーチング負荷を低減させることができるというメリットがある。しかし、方式２では、ＯＦＳクラスタを拡大させるようにＯＦＳの数を増大させた場合、内部ＮＷ上の経路と外部ＮＷ上の経路との紐付けが複雑化し、内部ＮＷ上のフォワーディングの実装が困難になるというデメリットがある。
【０００５】
なお、特許文献１および非特許文献３には、上記の方式２の接続方法とほぼ同様の技術が開示されている。また、非特許文献１〜２には、OpenFlowの技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１６０９２２号公報
【非特許文献】
【０００７】
【非特許文献１】“OpenFlow Switch Specification 1.3.5”［online］、［平成28年6月4日検索］、インターネット<ＵＲＬ: https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-switch-v1.3.5.pdf>
【非特許文献２】NTT OSRG, “Ryu SDN Framework”［online］、［平成28年6月4日検索］、インターネット<ＵＲＬ: https://osrg.github.io/ryu-book/ja/Ryubook.pdf>
【非特許文献３】Marcelo R. Nascimento et al., “Virtual routers as a service: the routeflow approach leveraging software-defined networks”, Proc. CFI '11, June 2011.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１および非特許文献１〜３には、上記の方式２のデメリットを解消するための記載も示唆もされていない。
【０００９】
このような事情に鑑みて、本発明は、従来型ルータおよび相互接続するＯＦＳクラスタを拡大させてもネットワークの大規模化を容易に実現させることを課題とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、請求項１に記載の発明は、複数の従来型ルータを介して外部ＮＷ（Network）と接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置であって、前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御部と、前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御部と、前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦ（Interface：インタフェース）に設定するフローエントリ生成部と、を備える、ことを特徴とする。
【００１１】
また、請求項７に記載の発明は、複数の従来型ルータを介して外部ＮＷと接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置におけるパケット転送制御方法であって、前記パケット転送制御装置が、前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御ステップと、前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御ステップと、前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定するフローエントリ生成ステップと、を実行する、ことを特徴とする。
【００１２】
また、請求項８に記載の発明は、複数の従来型ルータを介して外部ＮＷと接続される内部ＮＷ上に配置されている複数のOpenFlowスイッチを制御してパケット転送を制御するパケット転送制御装置としてのコンピュータを、前記複数のOpenFlowスイッチの各々に対応するルーチングエンジンを備え、前記内部ＮＷについての経路計算を行う内部ＮＷ経路制御手段、前記複数のOpenFlowスイッチをクラスタ化したＯＦＳクラスタに対応するルーチングエンジンを備え、前記外部ＮＷに対する経路計算を行う外部ＮＷ経路制御手段、前記複数のOpenFlowスイッチの各々に対して生成されるフローエントリにおいて、前記外部ＮＷ上の宛先が設定されたパケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する前記従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定するフローエントリ生成手段、として機能させるためのパケット転送制御プログラムである。
【００１３】
請求項１，７，８の発明によれば、フローエントリ生成部によって、ＯＦＳクラスタ内に流入したパケットは、当該パケットの外部ＮＷ上の宛先へ転送する従来型ルータに接続しているOpenFlowスイッチの出力ＩＦ（ポート）へ一度集約されるようにＯＦＳクラスタ内を経由することができる。つまり、パケットごとに、ＯＦＳクラスタからの流出先を１つのOpenFlowスイッチの１つの出力ＩＦに固定するように内部経路と外部経路との紐付けが行われ、紐付けは単純化される。このような集約は、ＮＷの大規模化のために１ＯＦＳクラスタ内のOpenFlowスイッチの数を増大して、ＯＦＳクラスタを拡大させた場合にもあてはまる。
したがって、従来型ルータおよび相互接続するＯＦＳクラスタを拡大させてもネットワークの大規模化を容易に実現させることができる。
【００１４】
また、請求項２に記載の発明によれば、請求項１に記載のパケット転送制御装置であって、前記フローエントリ生成部は、前記パケットの前記ＯＦＳクラスタ内への流入を受け付ける前記OpenFlowスイッチにて、前記設定を実行する、ことを特徴とする。
【００１５】
請求項２の発明によれば、フローエントリ生成部による、外部ＮＷ上の宛先が設定されたパケットの、ＯＦＳクラスタからの流出先の書換（集約）を、パケットのＯＦＳクラスタ内への流入を受け付けるOpenFlowスイッチにて実行する、つまり、パケットのＯＦＳクラスタ内への流入時に実行することで、ＯＦＳクラスタ内では、ソースアドレス（ソースＭＡＣアドレスまたはソースＭＰＬＳラベル）を参照したフォワーディングを実現することができる。これにより、すべてのOpenFlowスイッチが全経路（外部経路全体および内部経路全体）を保持する必要が無くなり、経路数の観点から、フローエントリ数のスケール性を向上させる際の制限を緩和することができる。
【００１６】
また、請求項３に記載の発明によれば、請求項２に記載のパケット転送制御装置であって、前記設定する出力ＩＦをＭＡＣアドレスにより識別し、前記内部ＮＷ経路制御部と外部ＮＷ経路制御部は該当ＭＡＣアドレスをソースアドレスに書換え、そのソースアドレスルーチングでパケットを転送することを特徴とする。
【００１７】
請求項３の発明によれば、パケットの、ＯＦＳクラスタからの流出先が書き換えられた出力ＩＦを構成するポートのアドレスを、ＭＡＣアドレスとすることで、ＯＦＳクラスタ内でＭＡＣ転送を実現することができ、レイヤ２より上のプロトコルに依存しないパケット転送を実現することができる。その結果、従来型ルータとしてＩＰルータだけでなく、大規模ＮＷで利用される機会の多いＩＰ／ＭＰＬＳルータとの相互接続が可能となる。
【００１８】
また、請求項４に記載の発明によれば、請求項１から請求項３のいずれか１項に記載のパケット転送制御装置であって、前記外部ＮＷがＩＰネットワークである場合、前記パケットに設定された、前記外部ＮＷ上の宛先がＩＰアドレスであり、前記外部ＮＷがＩＰ／ＭＰＬＳネットワークである場合、前記パケットに設定された、前記外部ＮＷ上の宛先が宛先ラベルである、ことを特徴とする。
【００１９】
請求項４の発明によれば、パケットに設定された外部ＮＷ上の宛先をＩＰアドレスにすることで、外部ＮＷがＩＰネットワークであってもネットワークの大規模化を容易に実現することができる。また、パケットに設定された外部ＮＷ上の宛先を宛先ラベルにすることで、外部ＮＷがＩＰ／ＭＰＬＳネットワークであってもネットワークの大規模化を容易に実現することができる。
【００２０】
また、請求項５に記載の発明によれば、請求項１から請求項４のいずれか１項に記載のパケット転送制御装置であって、前記複数のOpenFlowスイッチの各々が備える前記ルーチングエンジンを動作させるアルゴリズムと、前記ＯＦＳクラスタが備える前記ルーチングエンジンを動作させるアルゴリズムとが共通化可能である、ことを特徴とする。
【００２１】
請求項５の発明によれば、複数のOpenFlowスイッチの各々が備えるルーチングエンジンを動作させるアルゴリズムと、ＯＦＳクラスタが備えるルーチングエンジンを動作させるアルゴリズムの共通化を可能にすることで、内部ＮＷ上のフォワーディング（内部フォワーディング）の実装を容易にすることができる。その結果、ネットワークの大規模化をさらに容易に実現させることができる。
【００２２】
また、請求項６に記載の発明によれば、請求項１から請求項５のいずれか１項に記載のパケット転送制御装置であって、前記設定された、外部ＮＷ上の宛先に前記パケットが到達できなくなる故障が発生した場合、当該パケットの、前記ＯＦＳクラスタからの流出先を、前記設定された、外部ＮＷ上の宛先へ転送する他の従来型ルータに接続している前記OpenFlowスイッチの出力ＩＦに設定し、前記設定された宛先へ転送する他の従来型ルータに接続している前記OpenFlowスイッチが無い場合、前記設定された、外部ＮＷ上の宛先を削除して、前記外部ＮＷへ経路広告する、ことを特徴とする。
【００２３】
請求項６の発明によれば、パケットが外部ＮＷ上の宛先に到達するまでの経路において故障が発生した場合であっても、クラスタ内で故障箇所を迂回するようなパケットの最適な転送経路を導き出すことができる。もし、クラスタ内で迂回先が無い場合にはＯＦＳクラスタから転送経路が削除されたことを外部ＮＷに広告することで、外部ＮＷに対して適切なルーチングを促すことができる。
【発明の効果】
【００２４】
本発明によれば、従来型ルータおよび相互接続するＯＦＳクラスタを拡大させてもネットワークの大規模化を容易に実現させることができる。
【図面の簡単な説明】
【００２５】
【図１】（ａ）が従来型ルータによるパケット転送の説明図であり、（ｂ）がOpenFlowによるパケット転送の説明図である。
【図２】ＯＦＳによるＩＰルーチングの説明図である。
【図３】従来型ルータとＯＦＳとの相互接続の（ａ）方式１および（ｂ）方式２の説明図である。
【図４】本実施形態のＯＦＣの管理対象となる、従来型ルータおよびOpenFlowスイッチクラスタの構成の例である。
【図５】本実施形態のＯＦＣの機能構成詳細図の例である。
【図６】ＩＦ状態テーブルのデータ構造図の例である。
【図７】外部経路テーブルのデータ構造図の例である。
【図８】内部経路テーブルのデータ構造図の例である。
【図９】（ａ）が、パケット書換テーブル（ＩＰの場合）のデータ構造図の例であり、（ｂ）が、パケット書換テーブル（ＭＰＬＳの場合）のデータ構造図の例である。
【図１０】内部出力ＩＦテーブルのデータ構造図の例である。
【図１１】正常系動作の説明図の例である。
【図１２】故障時切替動作の説明図である。
【図１３】故障時動作（内外ＩＦ連携動作）の説明図の例である。
【図１４】転送時動作（正常系）の処理を示すフローチャートである。
【図１５】故障時動作の処理を示すフローチャートである。
【発明を実施するための形態】
【００２６】
本発明の実施形態について、図面を参照しながら詳細に説明する。
【００２７】
≪背景≫
［OpenFlow］
図１（ａ）に示すように、従来型ルータがレイヤ３によるダイナミックルーチングを行う際、従来型ルータと一体で動作するＲＥが、ルーチングプロトコルとして機能するC-Plane（コントロールプレーン）にてコントロールパケットを処理し経路計算を行っていた。そして、従来型ルータは、経路計算結果に従って、D-Plane（データプレーン）にてパケット転送部がデータパケットを実際に処理することでパケット転送を行っていた。しかし、図１（ａ）に示す方式では、C-PlaneとD-Planeとが一体化しているため、従来型ルータに新たな経路制御方法を導入することが困難であり、柔軟なＮＷ構築が困難であった。
【００２８】
これに対し、図１（ｂ）に示すように、OpenFlowは、C-PlaneとD-Planeとを分離し、柔軟なＮＷ構築を可能とする（非特許文献１参照）。C-Planeを担うＯＦＣが所定のアルゴリズム（OpenFlowでは特に規定されていない）を用いて経路計算を行う。そして、ＯＦＣが、D-Planeを担うＯＦＳに対してフローエントリと呼ばれる転送ルールを書き込むことで、データパケットを処理して、パケット転送を行う。ＮＷ構成変更の際は、物理トポロジ（D-Plane）を変更すればよく、C-Planeの大幅な設計変更は不要であるため、柔軟な構成変更が可能となる。
【００２９】
［ダイナミックルーチング］
例えば、従来型ＮＷからOpenFlowベースＮＷへのマイグレーション時などに、それぞれのＮＷをレイヤ３（Ｌ３）で接続する必要がある場合が想定される。マイグレーション時には、従来型ルータに新たな技術の導入は困難であることが想定される。このため、ＯＦＣ側の技術を従来型ルータに合わせるようにするために、ＯＦＣにＲＥを備え、ＯＦＣが従来型ルータとダイナミックルーチング（ＩＰ（Internet Protocol）ルーチング）を行わせることが検討されている（非特許文献２，３参照）。なお、ＲＥは、例えばＢＧＰ（Border Gateway Protocol）やＯＳＰＦ（Open Shortest Path First）などのプロトコルスタックである。
【００３０】
具体的な接続方法としては、OpenFlowのPacketIN／Outを用いてコントロールパケットを処理する。つまり、図２に示すように、まず、ダイナミックルーチング用のコントロールパケットについては、OpenFlowのPacketIN／OutにてＯＦＣへパケットが流入するようにＯＦＳ側へ設定する。つぎに、ＯＦＣが備えるＲＥは、コントロールパケットの処理および経路計算を行い、ＯＦＳに投入するデータパケット用のフローエントリをＯＦＣが作成し、ＯＦＳに書き込む。
【００３１】
［複数ＯＦＳの制御方法］
複数のＯＦＳと複数の従来型ルータとを相互接続する場合、以下の方式１および方式２が考えられる。
つまり、図３（ａ）に示すように、方式１では、ＯＦＣが備えるＲＥをＯＦＳごとに複数用意し、ＯＦＳ群のトポロジとＯＦＣ側のＲＥ群のトポロジとを同一にしつつ、ＯＦＣ側のＲＥ群の各々が、従来型ルータが備えるＲＥの各々に接続している。方式１によれば、ＯＦＣは、ＯＦＳ群が配置される内部ＮＷと従来型ルータが配置される外部ＮＷとを区別なく管理する。
【００３２】
また、図３（ｂ）に示すように、方式２では、ＯＦＳ群を１つのルータとしてクラスタ化してＯＦＳクラスタとし、ＯＦＣが備えるＲＥをＯＦＳクラスタに対して１つ用意し、ＯＦＣが備える１つのＲＥが、従来型ルータが備えるＲＥの各々に接続している。このとき、ＯＦＣは、従来型ルータに対応する外部ルータと１つのＲＥとの接続関係を表す外部トポロジを、外部ＮＷの管理情報として保持する。また、ＯＦＣは、ＯＦＳクラスタを構成するＯＦＳ同士の接続関係を表す内部トポロジを、内部ＮＷの管理情報として保持する。内部トポロジは、例えば、ルーチングプロトコルで把握されるようにしてもよいが、他のプロトコルによって把握されるようにしてもよい。方式２によれば、ＯＦＣは、ＯＦＳ群が配置される内部ＮＷと従来型ルータが配置される外部ＮＷとを区別して管理する。このとき、内部ＮＷ上の経路（内部経路）と外部ＮＷ上の経路（外部経路）とが紐付けられて管理される。
【００３３】
方式１の接続方法は、ＲＥ群のトポロジをＯＦＳ群のトポロジと同じにすることができ、ＯＦＣの実装を単純にすることができるというメリットがある。しかし、方式１では、外部ＮＷからは、ＯＦＳの数だけ従来型ルータの数が存在しているように見えてしまい、ＯＦＳの増加に伴いルーチング負荷が増大してしまうというデメリットがある。方式２は、このようなルーチング負荷の増加は無く、ＮＷのスケール性が高い方式であるといえる。
【００３４】
複数の従来型ルータを用いてＮＷの大規模化を実現する上で、高スケール性を有する方式２による検討が行われている。特許文献１では、方式２とほぼ同様の技術が検討されている。つまり、特許文献１によれば、まず、OpenFlowコントローラは、外部ＮＷと内部ＮＷとの紐付けを行う。また、OpenFlowコントローラは、自身が生成した経路情報を外部ＮＷ上のルータにダイナミックルーチング（例：ＯＳＰＦ）で伝える。また、OpenFlowコントローラは、内部ＮＷ上のＯＦＳ間のパケット転送については、ＯＦＣ内部で計算したフローエントリの書き込みを行う。特許文献２の技術について、ＯＦＳクラスタ内の接続情報は、予め設定しておく、または、所定の隣接管理プロトコル（例：ＬＬＤＰ（Link Layer Discovery Protocol））で取得することが考えられる。
【００３５】
［課題］
方式２に示すクラスタ化は、一部の課題を解決することができるが、以下の課題ａ〜ｃが存在する。
課題ａ：ＯＦＳクラスタを構成するＯＦＳの数が増大した場合、内部経路と外部経路との紐付けが複雑化する。その結果、内部ＮＷ上のフォワーディング（内部フォワーディング）の実装が困難になる。
課題ｂ：すべてのＯＦＳがすべてのフローエントリ（またはすべての外部経路の管理情報）を持つ必要があり、フローエントリ数のスケール性の向上が制限される。
課題ｃ：パケットヘッダの書換方式について具体的に検討されていない。例えば、Ethernet（登録商標）におけるＭＡＣ（Media Access Control）アドレス書換や、ＩＰ／ＭＰＬＳ（Multi Protocol Label Switching）におけるＭＰＬＳラベル書換などは、ＯＦＳクラスタ内のいずれの箇所（ingress側かegress側かなど）でいかなる方法で実行されるかは何ら規定されていない。
【００３６】
［本実施形態の概要］
本実施形態は、課題ａ〜ｃを解決するために以下の特徴を備える。
・内部ＮＷの（ＯＦＳ間の）経路制御については、方式１に従い、ＲＥを各ＯＦＳに１つずつ配備する。
・外部ＮＷの（ＯＦＳ−従来型ルータ間の）経路制御については、方式２に従い、ＲＥをＯＦＳクラスタ（またはＯＦＣ）に１つ配備する。ＯＦＣを複数用いるシステムについては、ＲＥを各ＯＦＳクラスタ（または各ＯＦＣ）に１つずつ配備する。
・内部経路と外部経路との紐付けは、各ＯＦＳのＲＥとＯＦＳクラスタのＲＥとの紐付けとして実現し、各ＯＦＳのＲＥとＯＦＳクラスタのＲＥとの紐付けには専用のテーブルを用いる（詳細は後記）。フローエントリ変換時（書換時）には、ソースＭＡＣアドレスフォワーディング（またはソースＭＰＬＳラベルフォワーディング）を実行するフローエントリ生成を行う（詳細は後記）。
【００３７】
上記の特徴を詳細に説明するために、従来型ルータおよびOpneFlowスイッチクラスタ（ＯＦＳクラスタ）の構成の例を図４に示す。外部ＮＷに配置される従来型ルータとして、従来型ルータ＃１（３−１），＃２（３−２），＃３（３−３），＃４（３−４）を用意する。従来型ルータ＃１（３−１），＃２（３−２），＃３（３−３），＃４（３−４）ぞれぞれを、Ｒ＃１，Ｒ＃２，Ｒ＃３，Ｒ＃４と表記する場合がある。ＯＦＳクラスタ２を構成し、内部ＮＷに配置されるＯＦＳとしてＯＦＳ＃１（２−１），＃２（２−２），＃３（２−３），＃４（２−４），＃５（２−５），＃６（２−６）を用意する。
【００３８】
従来型ルータ＃１（３−１）は、1.1.1.0/24宛のパケットおよび4.4.4.0/24宛のパケットを中継できる。従来型ルータ＃２（３−２）は、1.1.1.0/24宛のパケットを中継できる。従来型ルータ＃３（３−３）は、2.2.2.0/24宛のパケットおよび3.3.3.0/24宛のパケットを中継できる。従来型ルータ＃４（３−４）は、2.2.2.0/24宛のパケットを中継できる。
【００３９】
ＯＦＳ＃１（２−１）は、従来型ルータ＃１（３−１）、ＯＦＳ＃３（２−３）、ＯＦＳ＃４（２−４）にそれぞれ接続するためのポートp1,p2,p3をそれぞれ備える。
ＯＦＳ＃２（２−２）は、従来型ルータ＃２（３−２）、ＯＦＳ＃３（２−３）、ＯＦＳ＃４（２−４）にそれぞれ接続するためのポートp1,p2,p3をそれぞれ備える。
ＯＦＳ＃３（２−３）は、ＯＦＳ＃１（２−１）、ＯＦＳ＃２（２−２）、ＯＦＳ＃５（２−５）、ＯＦＳ＃６（２−６）にそれぞれ接続するためのポートp1,p2,p3,p4をそれぞれ備える。
ＯＦＳ＃４（２−４）は、ＯＦＳ＃１（２−１）、ＯＦＳ＃２（２−２）、ＯＦＳ＃５（２−５）、ＯＦＳ＃６（２−６）にそれぞれ接続するためのポートp1,p2,p3,p4をそれぞれ備える。
ＯＦＳ＃５（２−５）は、ＯＦＳ＃３（２−３）、ＯＦＳ＃４（２−４）、従来型ルータ＃３（３−３）にそれぞれ接続するためのポートp1,p2,p3をそれぞれ備える。
ＯＦＳ＃６（２−６）は、ＯＦＳ＃３（２−３）、ＯＦＳ＃４（２−４）、従来型ルータ＃４（３−４）にそれぞれ接続するためのポートp1,p2,p3をそれぞれ備える。
【００４０】
ＯＦＣ１の外部ＮＷ経路制御部１２（後記）は、ＯＦＳクラスタ２に割り当てたＲＥ（４−Ｃ）を有する。ＯＦＣ１の内部ＮＷ経路制御部１３（後記）は、ＯＦＳ＃１（２−１）〜＃６（２−６）に割り当てたＲＥ（４−１〜４−６）を有する。ＲＥ（４−Ｃ）およびＲＥ（４−１〜４−６）には、経路計算用の共通のアルゴリズムを使用することができる。各ＯＦＳ＃１（２−１）〜＃６（２−６）のＲＥ（４−１〜４−６）とＯＦＳクラスタ２のＲＥ（４−Ｃ）との紐付けのためのテーブルとして、外部ＮＷ経路制御部１２（後記）は外部経路テーブルＴ２（後記）を有し、内部ＮＷ経路制御部１３（後記）は内部経路テーブルＴ３（後記）を有する。
【００４１】
［本実施形態の詳細］
≪構成≫
図５に、本実施形態のＯＦＣ１の機能構成詳細図の例を示す。ＯＦＣ１は、統合処理部１１と、外部ＮＷ経路制御部１２と、内部ＮＷ経路制御部１３とを含む機能部を有する。統合処理部１１は、OpenFlow処理部１１１と、システム管理部１１２と、フローエントリ生成部１１３で構成される。システム管理部１１２は、ＩＦ管理部１１２１と、内外ＩＦ連携制御部１１２２で構成される。なお、「ＩＦ」はインタフェース（Interface）の略語であり、本実施形態では、ＯＦＳのポートおよび従来型ルータのポートを意味する。
ＯＦＣ１は、制御部、記憶部、入力部、出力部といったハードウェアを有し、制御部が、記憶部に記憶されているプログラム（パケット転送制御プログラムを含む）を記憶領域に展開し実行することにより、上記の機能部を実現し、さまざまな処理を実行することができる。本実施形態のＯＦＣ１は、このようなソフトウェアとハードウェアの協働を実現することができる。
【００４２】
OpenFlow処理部１１１は、ＯＦＳクラスタ２内の各ＯＦＳとＯＦＣ１との間で情報のやり取りを行うインタフェースとして機能する。例えば、OpenFlow処理部１１１は、OpenFlowメッセージの生成やパースを行う。
【００４３】
ＩＦ管理部１１２１は、各ＩＦのＭＡＣアドレスを定める。また、ＩＦ管理部１１２１は、各ＩＦの状態を監視する。ＩＦ管理部１１２１は、各ＩＦの状態を監視するためのＩＦ状態テーブルＴ１（後記）を有する。ＩＦ状態テーブルＴ１は、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとに生成される。
【００４４】
内外ＩＦ連携制御部１１２２は、ＯＦＳクラスタ内で故障が発生し、ＯＦＳの１または複数が残りのＯＦＳから孤立した場合、当該ＯＦＳのＩＦを外部ＮＷ経路制御部１２に通知して、外部ＮＷ経路制御部１２の制御対象から除外する。
【００４５】
外部ＮＷ経路制御部１２は、外部ＮＷとの経路交換を行う。外部ＮＷ経路制御部１２は、ＯＦＳクラスタ２に割り当てられたＲＥ（４−Ｃ）を有し、外部経路の経路計算を行う。外部ＮＷ経路制御部１２は、経路計算から出力ＩＦを決定するための外部経路テーブルＴ２（後記）を有する。なお、外部ＮＷ経路制御部１２は、各ＩＦのＭＡＣアドレスとＩＰアドレスを対応付けるＡＲＰテーブル（図示略）を有する。
【００４６】
内部ＮＷ経路制御部１３は、内部ＮＷ内の各ＯＦＳ＃１〜＃６（２−１〜２−６）を表すＩＰアドレスの経路交換を行う。このＩＰアドレスは、例えば、各ＯＦＳのLoopbackアドレス（図５中「Lo」と表記）とすることができる。内部ＮＷ経路制御部１３は、各ＯＦＳ＃１〜＃６（２−１〜２−６）に割り当てられたＲＥ（４−１〜４−６）を有し、内部経路の経路計算を行う。内部ＮＷ経路制御部１３は、経路計算から出力ＩＦを決定するための内部経路テーブルＴ３（後記）を有する。内部経路テーブルＴ３は、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとに生成される。なお、内部ＮＷ経路制御部１３は、各ＩＦのＭＡＣアドレスとＩＰアドレスを対応付けるＡＲＰテーブル（図示略）をＯＦＳ＃１〜＃６（２−１〜２−６）ごとに有する。
【００４７】
フローエントリ生成部１１３は、OpenFlowのフローエントリを生成する。例えば、フローエントリ生成部１１３は、ＩＦ管理部１１２１のＩＦ状態テーブルＴ１と、外部ＮＷ経路制御部１２の外部経路テーブルＴ２と、内部ＮＷ経路制御部１３の内部経路テーブルＴ３とを適宜組み合わせる（必要に応じて他のテーブルを組み合わせてもよい）ことにより、パケット書換テーブル（ＩＰの場合）Ｔ４ａ（後記）、パケット書換テーブル（ＭＰＬＳの場合）Ｔ４ｂ（後記）、および、内部出力ＩＦテーブルＴ５（後記）を作成し、フローエントリの生成に必要な情報を集計する。フローエントリの生成の詳細手順は後記する。
【００４８】
（各種テーブル）
図６に示すように、ＩＦ管理部１１２１が有するＩＦ状態テーブルＴ１は、「ＩＦ名」、「種類」、「ｍａｃ」、「状態」といった項目を有し、ＯＦＳのポートごとにエントリが登録されている。ＩＦ状態テーブルＴ１は、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとに生成されている。
「ＩＦ名」には、対象のＯＦＳが有するポートの名称が格納されている。
「種類」には、該当ポートが外部ＮＷの従来型ルータに接続するポートであることを示す「外部」またはポートが内部ＮＷの他のＯＦＳに接続するポートであることを示す「内部」のいずれかの値が格納されている。
「ｍａｃ」には、該当ポートのＭＡＣアドレスが格納されている。
「状態」には、該当ポートの接続状態が良好であることを示す「Ｕｐ」または故障であることを示す「Ｄｏｗｎ」のいずれかの値が格納されている。
【００４９】
図７に示すように、外部ＮＷ経路制御部１２が有する外部経路テーブルＴ２は、「宛先」、「nexthop」といった項目を有し、外部ＮＷに配置されている機器（図示せず）が到達性を持つ宛先ごとにエントリが登録される。
「宛先」には、外部ＮＷに配置されている機器のＩＰアドレスが格納されている。
「nexthop」には、宛先の機器から転送されるパケットまたは宛先の機器へのパケットを処理する従来型ルータに隣接して接続しているＯＦＳのうち１つを示す値、および、当該ＯＦＳが従来型ルータと接続されているポートを示す値が格納されている。例えば、宛先が「1.1.1.0/24」に対応するnexthopが「OFS#1-p1」の場合、当該経路を持つ従来型ルータ＃１（３−１）に接続しているＯＦＳがＯＦＳ＃１（２−１）であり、ＯＦＳ＃１（２−１）が従来型ルータ＃１（３−１）と接続されているポートが「p1」であることを示す。なお、説明の便宜上、「OFS#1-p1」を単に各図において「#1-p1」と表記する場合がある（ＯＦＳが異なる場合やポート（ＩＦ）が異なる場合も同様）。
【００５０】
図８に示すように、内部ＮＷ経路制御部１３が有する内部経路テーブルＴ３は、「宛先」、「nexthop」といった項目を有し、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとにエントリが登録される。内部経路テーブルＴ３は、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとに生成されている。
「宛先」には、自身のＯＦＳのＩＰアドレスまたは自身以外のＯＦＳのＩＰアドレスが格納されている。
「nexthop」には、クラスタ内の他の全てのＯＦＳと接続されているポートを示す値が格納されている。
ＯＦＳ＃１（２−１）の内部経路テーブルＴ３を例にとって説明すると、内部ＮＷ経路制御部１３内のＲＥ２−１が他のＯＦＳとの経路を計算することになる。
例えばＯＦＳ＃２（２−２）自身を表すＩＰアドレスである10.0.0.2に対しては、nexthopがp2であることを計算できるため、「nexthop」には「p2」が格納される。「宛先」の項目に自身のＯＦＳを表すＩＰアドレスが格納されている場合、対応する「nexthop」には自身のLoopbackアドレスを示す「Lo」が格納される。
【００５１】
図９（ａ）に示すように、フローエントリ生成部１１３が有するパケット書換テーブル（ＩＰの場合）Ｔ４ａは、外部ＮＷがＩＰネットワークである場合に用いるテーブルであって、「宛先」、「src. mac」、「dst. mac」、「クラスタからの出力先」といった項目を有し、外部ＮＷに配置されている機器（図示せず）が到達性を持つ宛先ごとにエントリが登録される。
「宛先」には、外部ＮＷに配置されている機器のＩＰアドレスが格納されている。
「src. mac」には、ソースＭＡＣアドレスフォワーディングのＭＡＣアドレスが格納されている。例えば、当該ＯＦＳが従来型ルータと接続されているポートのＭＡＣアドレスを示す値が格納されている。
【００５２】
「dst. mac」には、内部ＮＷにとっての宛先となるＭＡＣアドレスが格納されている。例えば、宛先の機器へのパケットを処理する従来型ルータのＭＡＣアドレスを示す値が格納されている。
「クラスタからの出力先」には、ＯＦＳクラスタ２からのパケットを「宛先」で識別される機器に出力するときの出力先を示す値が格納されている。例えば、宛先の機器へのパケットを処理する従来型ルータに隣接して接続しているＯＦＳを示す値、および、当該ＯＦＳと従来型ルータとの接続を担うポートを示す値が格納されている。
【００５３】
また、図９（ｂ）に示すように、フローエントリ生成部１１３が有するパケット書換テーブル（ＭＰＬＳの場合）Ｔ４ｂは、外部ＮＷがＩＰ／ＭＰＬＳネットワークである場合に用いるテーブルであって、「Local Label」、「Remote Label」、「src. mac」、「dst. mac」、「クラスタからの出力先」といった項目を有し、外部ＮＷに配置されている機器（図示せず）が到達性を持つ宛先ごとにエントリが登録される。
「Local Label」には、ＯＦＳクラスタまたはＯＦＣが割り当てた値で、外部ＮＷに配置されている機器に対して広告するラベルの値が格納されている。
「Remote Label」には、外部ＮＷが割り当てた値で、到達性のある経路について、外部ＮＷに配置されている機器より割り当てられたラベルの値が格納されている。
【００５４】
「src. mac」には、ソースＭＡＣアドレスフォワーディングのＭＡＣアドレスが格納されている。パケット書換テーブルＴ４ｂの「src. mac」は、パケット書換テーブルＴ４ａの「src. mac」と同等である。
「dst. mac」には、内部ＮＷにとっての宛先となるＭＡＣアドレスが格納されている。パケット書換テーブルＴ４ｂの「dst. mac」は、パケット書換テーブルＴ４ａの「dst. mac」と同等である。
「クラスタからの出力先」には、ＯＦＳクラスタ２からのパケットを「宛先」で識別される機器に出力するときの出力先を示す値が格納されている。パケット書換テーブルＴ４ｂの「クラスタからの出力先」は、パケット書換テーブルＴ４ａの「クラスタからの出力先」と同等である。
【００５５】
図１０に示すように、フローエントリ生成部１１３が有する内部出力ＩＦテーブルＴ５は、内部ＮＷを構成するＯＦＳ＃１〜＃６（２−１〜２−６）を用いて、内部ＮＷ内のパケットの転送の起点となる発ＯＦＳと、内部ＮＷ内のパケットの転送の終点となる着ＯＦＳとの組を設定し、設定された組ごとに、パケットを送出する発ＯＦＳのポートを示す値を格納する。発ＯＦＳと着ＯＦＳが同じである場合は、パケット送出先が自分自身であるため、設定された組に格納される値はブランクになる。
【００５６】
［フローエントリの書換概要］
図５に戻って説明を続ける。ＯＦＣ１は、フローエントリの生成の事前準備として、図５中の処理Ａ１〜Ａ６を実行する。すなわち、まず、OpenFlow処理部１１１が、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとのポートのＩＦ状態をＩＦ管理部１１２１に通知する（処理Ａ１）。ＩＦ管理部１１２１は、通知されたＩＦ状態を用いてＩＦ状態テーブルＴ１を作成する。
【００５７】
ＩＦ管理部１１２１は、ＩＦ状態テーブルＴ１中の各エントリのうち「種類」が「外部」となっているものを外部ＩＦ情報として外部ＮＷ経路制御部１２に送信する（処理Ａ２）。外部ＮＷ経路制御部１２は、受信したエントリを用いて、外部経路テーブルＴ２を作成する。
【００５８】
ＩＦ管理部１１２１は、ＩＦ状態テーブルＴ１中の各エントリのうち「種類」が「内部」となっているものを外部ＩＦ情報として内部ＮＷ経路制御部１３に送信する（処理Ａ３）。内部ＮＷ経路制御部１３は、受信したエントリを用いて、内部経路テーブルＴ３を、ＯＦＳ＃１〜＃６（２−１〜２−６）ごとに作成する。
【００５９】
外部ＮＷ経路制御部１２は、外部経路テーブルＴ２の情報を含むパケット書換情報をフローエントリ生成部１１３に送信する（処理Ａ４）。フローエントリ生成部１１３は、受信したパケット書換情報、および、ＩＦ状態テーブルＴ１の情報を用いてパケット書換テーブルＴ４ａ（またはＴ４ｂ）を作成する。
【００６０】
内部ＮＷ経路制御部１３は、内部経路テーブルＴ３の情報を含む出力ＩＦテーブル情報をフローエントリ生成部１１３に送信する（処理Ａ５）。フローエントリ生成部１１３は、受信した出力ＩＦテーブル情報、および、ＩＦ状態テーブルＴ１の情報を用いて内部出力ＩＦテーブルＴ５を作成する。
【００６１】
フローエントリ生成部１１３は、パケット書換テーブルＴ４ａ（またはＴ４ｂ）と、内部出力ＩＦテーブルＴ５と、ＩＦ状態テーブルＴ１の情報を用いて、ＯＦＳ＃１〜＃６（２−１〜２−６）に投入するデータパケット用のフローエントリを作成する。また、フローエントリ生成部１１３は、作成したフローエントリへの書換をOpenFlow処理部１１１に指示する（処理Ａ６）。OpenFlow処理部１１１は、フローエントリの書換を行い、OpenFlowメッセージの生成およびパースを行う。
【００６２】
［故障時の動作概要］
ＯＦＣ１は、ＯＦＳクラスタ２に関連する故障時には、図５中の処理Ｂ１〜Ｂ３を実行することがある。すなわち、まず、故障が発生した場合は必ず、ＩＦ管理部１１２１は、外部ＩＦ情報および内部ＩＦ情報を内外ＩＦ連携制御部１１２２に送信する（処理Ｂ１）。
【００６３】
内部ＮＷ経路制御部１３は、ＩＦ管理部１１２１から受信した内部ＩＦ情報（処理Ａ３）から作成した内部経路テーブルＴ３に基づいて、他のＯＦＳとの接続が断状態にある孤立したＯＦＳを判定することができる。内部ＮＷ経路制御部１３は、ＯＦＳの孤立が発生した場合に限り、その情報を内外ＩＦ連携制御部１１２２に送信する（処理Ｂ２）。
【００６４】
内外ＩＦ連携制御部１１２２は、内部ＮＷ経路制御部１３からＯＦＳの孤立情報を受信した場合、その情報に基づき、ＯＦＳクラスタ内で他のＯＦＳにパケットを迂回して転送するために、孤立したＯＦＳに接続している外部ＩＦを閉塞するように外部ＮＷ経路制御部１２に指示する（処理Ｂ３）。
【００６５】
［フローエントリの書換詳細］
フローエントリの書換の詳細について説明する。
図１１に示すように、パケット転送に関する正常系動作（故障が発生していない正常時でのパケットの転送動作）において、以下の手順１〜３を踏むことで、外部ＮＷ経路制御部１２および内部ＮＷ経路制御部１３は、ＯＦＳクラスタ２へのパケット流入前にて経路計算を行い、フローエントリの書換を行う。宛先1.1.1.0/24の機器から宛先2.2.2.0/24の機器へのトラヒック方向を有するパケット転送を例に採り上げて説明する。
【００６６】
手順１：ＯＦＳクラスタ２に対して、フローエントリ生成部１１３が、パケット書換テーブルＴ４ａ（またはＴ４ｂ）、および、内部出力ＩＦテーブルＴ５を生成する。図１１中の手順１の説明部分には、パケット書換テーブルＴ４ａの一部抜粋となるパケット書換テーブルＴ４ａａと、内部出力ＩＦテーブルＴ５の一部抜粋となる内部出力ＩＦテーブルＴ５ａと、ＩＦ状態テーブルＴ１の一部抜粋となるＩＦ状態テーブルＴ１ａが図示されている。
パケット書換テーブルＴ４ａａは、外部ＮＷ制御用として機能するＲＥ（４−Ｃ）が従来型ルータから受信した経路情報をもとに作成される。内部出力ＩＦテーブルＴ５ａは、内部ＮＷ制御用として機能するＲＥ（４−１〜４−６）が内部ＮＷで経路計算を行った結果から作成される。ＩＦ状態テーブルＴ１ａは、事前に設定されている。
【００６７】
手順２：ＯＦＳクラスタ２へのパケット流入時にて、フローエントリ生成部１１３が、パケット書換テーブルＴ４ａ（またはＴ４ｂ）を参照し、ＯＦＳクラスタ２からパケットを流出させるようなフローエントリに書換を実行する。具体的には、フローエントリ内のＭＡＣアドレス（またはＭＰＬＳラベルの値）の書換は、ＯＦＳクラスタ２への流入直後のＯＦＳにて実行する。図１１中の手順２の説明部分には、ＯＦＳクラスタ２への流入直後のＯＦＳとなるＯＦＳ＃１（２−１）のフローエントリにて、ＭＡＣアドレスの書換が行われている様子が図示されている（符号１１０１）。このため、ＭＡＣアドレスを含むパケットヘッダ（符号１１０１で示した箇所）は、ＯＦＳクラスタ２から流出する際（図１１下部のＯＦＳ＃５（２−５）から流出する際）のヘッダのまま、ＯＦＳクラスタ２の内部を通過する。
【００６８】
手順３：フローエントリ生成部１１３は、ＯＦＳクラスタ２内部の転送に関しては、内部出力ＩＦテーブルＴ５と、パケットのsrc. mac（つまり、ＯＦＳクラスタ２の流出側ＩＦ）とを参照して、ソースＭＡＣアドレスによるフォワーディングを行う。具体的には、フローエントリ生成部１１３は、各ＯＦＳ＃１〜＃６（２−１〜２−６）の出力先ＩＦに関して、内部出力ＩＦテーブルＴ５とパケットヘッダ中のsrc. mac（図１１下部のＯＦＳ＃５（２−５））を参照する。そして、フローエントリ生成部１１３は、「パケットヘッダ中のsrc. macがＯＦＳ＃ｘが保持しているＩＦのＭＡＣアドレスの場合、内部出力ＩＦテーブルＴ５を参照してＯＦＳ＃ｘ宛の出力ＩＦに出力する」というソースＭＡＣアドレスフォワーディングを実行させるフローエントリを生成する。
【００６９】
図１１中の手順３の説明部分には、ＯＦＳ＃１（２−１）のフローエントリにて、流出側ＩＦをポートp2とする様子が図示されている（符号１１０２）。符号１１０１で示すエントリ部分は、内部ＮＷおよび外部ＮＷの境界にあるすべてのＯＦＳに投入すれば十分である。
また、ＯＦＳ＃３（２−３）のフローエントリにて、流出側ＩＦをポートp3とする様子が図示されている（符号１１０３）。符号１１０３で示すエントリ部分は、ＯＦＳ＃５（２−５）を除くすべてのＯＦＳに投入すれば十分である。
【００７０】
ただし、src. macが自身のＯＦＳに該当する場合は、ＩＦ状態テーブルＴ１にて保持されている外部ＩＦを出力先ＩＦとして設定する。図１１中の手順３の説明部分には、ＩＦ状態テーブルＴ１ａにて事前に設定したＭＡＣアドレスに該当するOFS#5-p3が出力先IFとして設定されている様子が図示されている（符号１１０４）。
【００７１】
［故障時動作の詳細］
ＩＦ連携の切断を表す故障が発生した場合、ＯＦＣ１は、当該故障箇所を迂回するパケット転送経路のルーチングを行う。
図１２に示すように、本実施形態の例として採り上げたＯＦＳクラスタ２を構成するＯＦＳ群において、例えば、ＯＦＳ＃１（２−１）に関するＩＦ連携の切断を表す故障には、故障パターン１（各ＯＦＳは内部ＮＷから孤立しておらず、外部ＮＷとも接続されている故障）、故障パターン２（内部ＮＷから孤立するＯＦＳが存在するが、当該ＯＦＳは外部ＮＷとは接続されている）、故障パターン３（外部ＮＷと接続断となるＯＦＳが存在する）がある。また、ＯＦＳクラスタ２を介するトラヒックには、1.1.1.0/24宛（左←右）、2.2.2.0/24宛（左→右）、3.3.3.0/24宛（左→右）、4.4.4.0/24宛（左←右）の４種類が存在し、故障が発生したときに宛先の切替パターン（切替先となる宛先）がこれらの４種類であることを意味する。このため、故障時切替動作は、１２（＝３×４）通り存在するが、図１２中の表に示すように、切替動作を内容別に分けると、以下の切替動作１〜６に分類される。
【００７２】
＜切替動作１＞内部ＮＷ経路制御部１３の正常系動作の一環として、ＯＦＳクラスタ２内部で迂回。
切替動作１は、故障パターン１の故障が発生したときに、1.1.1.0/24宛（左←右）、2.2.2.0/24宛（左→右）、3.3.3.0/24宛（左→右）、4.4.4.0/24宛（左←右）の４種類の切替パターンをとる場合に実行される。切替動作１として、内部ＮＷ経路制御部１３は、ＲＥ２−１〜６が内部経路テーブルＴ３（図８）のnexthopを適切に変更することで、つまり故障箇所を回避するように変更することで迂回可能となる。
【００７３】
＜切替動作２＞内部ＮＷから孤立するが、外部ＮＷには接続されており、ＯＦＳクラスタ２内部で迂回。
切替動作２は、故障パターン２の故障が発生したときに、1.1.1.0/24宛（左←右）の１種類の切替パターンをとる場合に実行される。内外ＩＦ連携制御部１１２２がＯＦＳ＃１（２−１）の孤立を判定した上で（孤立判定の詳細は後記する）、外部ＮＷ経路制御部１２は、外部経路テーブルＴ２（図７）のnexthopをＯＦＳ＃２（２−２）に変更することで、ＯＦＳクラスタ２内部で迂回可能となる。ただし、クラスタ内での迂回先が無い場合は切替動作４に準ずる。
【００７４】
＜切替動作３＞内部ＮＷから孤立するが、外部ＮＷには接続されており、ＯＦＳクラスタ２外部（つまり、従来型ルータ）が迂回。
切替動作３は、故障パターン２の故障が発生したときに、2.2.2.0/24宛（左→右）、または、3.3.3.0/24宛（左→右）の２種類の切替パターンをとる場合に実行される。内外ＩＦ連携制御部１１２２がＯＦＳ＃１（２−１）の孤立を判定した上で、外部ＮＷ経路制御部１２が、各従来型ルータに対して、故障個所となる経路の経路削除を広告することで従来型ルータが迂回可能となる（故障の無い経路を新たに設定しその経路上をパケットが辿るようにすることが可能となる）。ただし、クラスタ内での迂回先が無い場合は切替動作４に準ずる。
【００７５】
＜切替動作４＞内部ＮＷから孤立するが、外部ＮＷには接続されており、ＯＦＳクラスタ２内部で迂回を試みるが迂回できず、ＯＦＳクラスタ２外部（つまり、従来型ルータ）が迂回。
切替動作４は、故障パターン２の故障が発生したときに、4.4.4.0/24宛（左←右）の１種類の切替パターンをとる場合に実行される。内外ＩＦ連携制御部１１２２がＯＦＳ＃１（２−１）の孤立を判定した上で、外部ＮＷ経路制御部１２は、外部経路テーブルＴ２（図７）のnexthopをＯＦＳ＃２（２−２）に変更しようとするが、変更先が無いため、各従来型ルータに対して、故障個所となる経路の経路削除を広告することで従来型ルータが迂回可能となる（故障の無い経路を新たに設定しその経路上をパケットが辿るようにすることが可能となる）。ただし、従来型ルータが迂回先を保持していない場合は通信断となる。
上記のように切替動作２〜４のようにＯＦＳの孤立が発生するときに、内外ＩＦ連携制御部１１２２が必要となる。
【００７６】
＜切替動作５＞外部ＮＷ経路制御部１２の正常系動作の一環として、ＯＦＳクラスタ２内部で迂回。
切替動作５は、故障パターン３の故障が発生したときに、1.1.1.0/24宛（左←右）の１種類の切替パターンをとる場合に実行される。外部ＮＷ経路制御部１２は、外部経路テーブルＴ２（図７）のnexthopをＯＦＳ＃２（２−２）に変更することで、ＯＦＳクラスタ２内部で迂回可能となる。ただし、クラスタ内で迂回先が無い場合は切り替え動作６に準ずる。
【００７７】
＜切替動作６＞外部ＮＷ経路制御部１２の正常系動作の一環として、ＯＦＳクラスタ２外部（つまり、従来型ルータ）が迂回。
切替動作６は、故障パターン３の故障が発生したときに、2.2.2.0/24宛（左→右）、3.3.3.0/24宛（左→右）、4.4.4.0/24宛（左←右）の３種類の切替パターンをとる場合に実行される。外部ＮＷ経路制御部１２が、各従来型ルータに対して、故障個所となる経路の経路削除を広告することで従来型ルータが迂回可能となる（故障の無い経路を新たに設定しその経路上をパケットが辿るようにすることが可能となる）。ただし、従来型ルータが迂回先を保持していない場合は通信断となる。
【００７８】
図１３を参照して、故障が発生したときの内外ＩＦ連携制御部１１２２の動作（内外ＩＦ連携動作）の詳細を説明する。
図１２に示す故障パターン２の故障が発生し、外部ＮＷに接続しているＯＦＳ＃１（２−１）が、外部ＮＷに接続している他のＯＦＳのいずれか１つへの到達性（宛先にパケットを転送させること）が無くなった場合、内部ＮＷ経路制御部１３は、当該ＯＦＳ＃１（２−１）が孤立したと判定する（ＯＦＳの孤立判定）。孤立判定により、内部ＮＷ経路制御部１３は、外部ＮＷ経路制御部１２に対し、ＯＦＳ＃１−ｐ１を断と処理するように命令する。そして、内部ＮＷ経路制御部１３は、ＲＥ（４−１〜４−６）の経路計算結果により、孤立したＯＦＳに対して作成された内部経路テーブルＴ３の内容を空（null）にする。
【００７９】
内外ＩＦ連携制御部１１２２は、孤立したＯＦＳを監視する。孤立したＯＦＳに対して、以下の工程１〜３を実行することで迂回可能となる。
［工程１（ＯＦＳクラスタが迂回。図１２中、故障パターン２、切替パターン：1.1.1.0/24宛（左←右）に対応）］・・・外部ＮＷ経路制御部１２は、孤立したＯＦＳの外部向けＩＦを断として、ＲＥ（４−Ｃ）に通知する。そして、外部ＮＷ経路制御部１２は、ＲＥ（４−Ｃ）の経路計算結果により外部経路テーブルＴ２を更新する。
図１３には、外部ＮＷ経路制御部１２が、孤立したＯＦＳ＃１（２−１）の外部向けＩＦ、ＯＦＳ＃１−ｐ１を断として処理し、外部経路テーブルＴ２にて、nexthopをＯＦＳ＃２−ｐ１に変更することが図示されている（符号１３０１−１参照）。また、宛先1.1.1.0/24への経路広告が継続される（図１３中の符号１３０１−２参照）。
【００８０】
［工程２（従来型ルータが迂回。図１２中、故障パターン２、切替パターン：4.4.4.0/24宛（左←右）に対応）］・・・工程１により、外部経路テーブルＴ２中の特定のエントリが空（null）になってしまった場合、外部ＮＷ経路制御部１２は、従来型ルータへ経路削除の旨を広告する。
図１３には、外部ＮＷ経路制御部１２が、ＯＦＳ＃１−ｐ１を断として処理した結果、宛先が4.4.4.0/24のエントリのnexthopが無くなった（null）ため、各従来型ルータ（３−１〜３−４）に対し、宛先4.4.4.0/24に対する経路削除が広告されたことが図示されている（符号１３０２−１，１３０２−２参照）。
【００８１】
［工程３（従来型ルータが迂回。図１２中、故障パターン２、切替パターン：2.2.2.0/24宛（左→右）、または、3.3.3.0/24宛（左→右）に対応）］・・・外部ＮＷ経路制御部１２は、孤立したＯＦＳに接続されている従来型ルータに対し経路削除の旨を広告する。
図１３には、外部ＮＷ経路制御部１２が、ＯＦＳ＃１−ｐ１の断（符号１３０３−１参照）に伴い、孤立したＯＦＳ＃１（２−１）に接続していた従来型ルータ＃１（３−１）に対し、2.2.2.0/24宛（左→右）、および、3.3.3.0/24宛（左→右）の経路広告が停止したことを広告することが図示されている（符号１３０３−２参照）。また、他の従来型ルータ（＃２（３−２）など）に対し、2.2.2.0/24宛（左→右）、および、3.3.3.0/24宛（左→右）の新たな経路広告をする（符号１３０３−３参照）。
【００８２】
≪処理≫
本実施形態のＯＦＣ１が実行する処理について説明する。
図１４に示すように、故障が無い正常系において、ＯＦＣ１が実行する処理となる転送時動作は、以下のステップＳ１〜ステップＳ６に示す通りである。
まず、ＯＦＣ１は、事前準備処理を行う（ステップＳ１）。具体的には、ＯＦＣ１は、システム管理部１１２によって、コントロールパケットがPacketIn/PacketOutするようにフローエントリを設定する。また、ＩＦ管理部１１２１が管理するＩＦ状態テーブルＴ１を生成する。つまり、ＯＦＳクラスタ２内の各ＯＦＳにおける各ＩＦの状態（Ｕｐ／Ｄｏｗｎ）の取得、各ＩＦの種類の定義（内部ＮＷ上にあれば内部ＩＦ（「内部」と定義）、外部ＮＷ上にあれば外部ＩＦ（「外部」）と定義）、各ＩＦのＭＡＣアドレスの定義を行う。
【００８３】
次に、ＯＦＣ１は、内部経路テーブルＴ３を生成する（ステップＳ２）。具体的には、ＯＦＣ１は、内部ＮＷ経路制御部１３によって、内部ＮＷ上のＯＦＳ＃１（２−１）〜＃６（２−６）に割り当てたＲＥ（４−１〜４−６）による内部経路計算を行うことによって、内部経路テーブルＴ３（図８）の内容を決定する。
【００８４】
次に、ＯＦＣ１は、内部出力ＩＦテーブルＴ５を生成する（ステップＳ３）。具体的には、ＯＦＣ１は、フローエントリ生成部１１３によって、内部経路テーブルＴ３の情報を含む出力ＩＦテーブル情報に基づいて（図５の処理Ａ５参照）、内部出力ＩＦテーブルＴ５（図１０）の内容を決定する。
【００８５】
次に、ＯＦＣ１は、外部経路テーブルＴ２を生成する（ステップＳ４）。具体的には、ＯＦＣ１は、外部ＮＷ経路制御部１２によって、ＯＦＳクラスタ２に割り当てた、外部ＮＷ向けのＲＥ（４−Ｃ）による外部経路計算を行うことによって、外部経路テーブルＴ２（図７）の内容を決定する。
【００８６】
次に、ＯＦＣ１は、パケット書換テーブルＴ４ａ（またはＴ４ｂ）を生成する（ステップＳ５）。具体的には、ＯＦＣ１は、フローエントリ生成部１１３によって、ステップＳ２で生成した内部経路テーブルＴ３、および、ステップＳ４の外部経路計算の結果を合わせて、パケット書換テーブルＴ４ａ（またはＴ４ｂ）を生成する（図１１の手順１参照）。
【００８７】
次に、ＯＦＣ１は、フローエントリ生成部１１３によって、フローエントリを生成し（ステップＳ６。図１１の手順２，３参照。）、図１４の処理全体を終了する。
【００８８】
また、図１５に示すように、故障が発生した場合にＯＦＣ１が実行する処理となる故障時動作は、以下のステップＳ１１〜ステップＳ１７に示す通りである。
まず、ＯＦＣ１は、故障が発生したＩＦがどのＩＦであるかを判定する（ステップＳ１１）。具体的には、ＯＦＣ１は、ＩＦ管理部１１２１が管理するＩＦ状態テーブルＴ１の状態の項目を参照して判定する。
【００８９】
故障発生ＩＦが内部ＩＦである場合（ステップＳ１１で「内部ＩＦ」。図１２の故障パターン１または２に相当。）、ＯＦＣ１は、当該内部ＩＦを、内部ＮＷ経路制御部１３のＲＥ（４−１〜４−６）に通知する（ステップＳ１２）。次に、故障が発生した内部ＩＦを通知されたＲＥ（４−１〜４−６）が経路計算を行い、ＯＦＣ１は、経路計算結果を内部経路テーブルＴ３（図８）に格納し（ステップＳ１３）、内部経路テーブルＴ３を更新する。
【００９０】
その後、ＯＦＣ１は、内部ＮＷ経路制御部１３によって、内部経路テーブルＴ３を参照して、孤立が発生した外部ＩＦ（孤立したＯＦＳが有する外部ＮＷ接続用のＩＦ）が存在するか否かを判定する（ステップＳ１４）。つまり、内部ＩＦの故障によって内部ＩＦ断となったことで、ＯＦＳが孤立したか否かを判定する。存在する場合（ステップＳ１４でＹｅｓ）、ステップＳ１５（後記）に進む。一方、存在しない場合（ステップＳ１４でＮｏ。図１２の故障パターン１に相当。）、ステップＳ１７（後記）に進む。
【００９１】
一方、故障発生ＩＦが内部ＩＦでない場合は故障発生ＩＦが外部ＩＦであり（ステップＳ１１で「外部ＩＦ」。図１２の故障パターン３に相当）、ＯＦＣ１は、当該外部ＩＦを、外部ＮＷ経路制御部１２のＲＥ（４−Ｃ）に通知する（ステップＳ１５）。次に、故障が発生した外部ＩＦを通知されたＲＥ（４−Ｃ）が経路計算を行い、ＯＦＣ１は、経路計算結果を外部経路テーブルＴ２（図７）に格納し（ステップＳ１６）、外部経路テーブルＴ２を更新する。
ここで、内部ＩＦの故障によって内部ＩＦ断となったことで、ＯＦＳが孤立し、孤立が発生した外部ＩＦが存在する場合（ステップＳ１４でＹｅｓ。図１２の故障パターン２に相当。）、ＯＦＣ１は、当該（外部）ＩＦをＲＥ（４−Ｃ）に通知する（ステップＳ１５）。ＲＥ（４−Ｃ）は、通知された外部ＩＦを故障が発生した外部ＩＦとみなし、経路計算を行い、ＯＦＣ１は、経路計算結果を外部経路テーブルＴ２（図７）に格納する（ステップＳ１６）。
【００９２】
内部経路テーブルＴ３の更新（ステップＳ１３）、または、外部経路テーブルＴ２の更新（ステップＳ１６）に応じて、パケット書換テーブルＴ４ａ（またはＴ４ｂ）（図９）、内部出力ＩＦテーブルＴ５（図１０）、または、ＩＦ状態テーブルＴ１（図６）のいずれかの内容に変更があれば、ＯＦＣ１は、フローエントリ生成部１１３によって、新たなフローエントリを投入し（ステップＳ１７）、図１５の処理全体を終了する。
【００９３】
≪まとめ≫
本実施形態によれば、フローエントリ生成部１１３によって、ＯＦＳクラスタ２内に流入したパケットは、当該パケットの外部ＮＷ上の宛先へ転送する従来型ルータに接続しているＯＦＳの出力ＩＦ（ポート）へ一度集約されるようにＯＦＳクラスタ２内を経由することができる（図１１の符号１１０１〜１１０４参照）。つまり、パケットごとに、ＯＦＳクラスタ２からの流出先を１つのＯＦＳの１つの出力ＩＦに固定するように内部経路と外部経路との紐付けが行われ、紐付けは単純化される。このような集約は、ＮＷの大規模化のために１ＯＦＳクラスタ内のＯＦＳの数を増大して、ＯＦＳクラスタを拡大させた場合にもあてはまる。
したがって、従来型ルータおよび相互接続するＯＦＳクラスタを拡大させてもネットワークの大規模化を容易に実現させることができる。
【００９４】
また、フローエントリ生成部１１３による、外部ＮＷ上の宛先が設定されたパケットの、ＯＦＳクラスタ２からの流出先の書換（集約）を、パケットのＯＦＳクラスタ２内への流入を受け付けるＯＦＳにて実行する、つまり、パケットのＯＦＳクラスタ２内への流入時に実行することで、ＯＦＳクラスタ２内では、ソースアドレス（ソースＭＡＣアドレスまたはソースＭＰＬＳラベル）を参照したフォワーディングを実現することができる（図１１の符号１１０１参照）。これにより、すべてのＯＦＳが全経路（外部経路全体および内部経路全体）を保持する必要が無くなり、経路数の観点から、フローエントリ数のスケール性を向上させる際の制限を緩和することができる。
【００９５】
また、パケットの、ＯＦＳクラスタ２からの流出先が書き換えられた出力ＩＦを構成するポートのアドレスを、ＭＡＣアドレスとすることで、ＯＦＳクラスタ２内でＭＡＣ転送を実現することができ、レイヤ２より上のプロトコルに依存しないパケット転送を実現することができる。その結果、従来型ルータとしてＩＰルータだけでなく、大規模ＮＷで利用される機会の多いＩＰ／ＭＰＬＳルータとの相互接続が可能となる。
【００９６】
また、パケットに設定された外部ＮＷ上の宛先をＩＰアドレスにすることで、外部ＮＷがＩＰネットワークであってもネットワークの大規模化を容易に実現することができる。また、パケットに設定された外部ＮＷ上の宛先を宛先ラベルにすることで、外部ＮＷがＩＰ／ＭＰＬＳネットワークであってもネットワークの大規模化を容易に実現することができる。
【００９７】
また、複数のＯＦＳの各々が備えるルーチングエンジンを動作させるアルゴリズムと、ＯＦＳクラスタ２が備えるルーチングエンジンを動作させるアルゴリズムの共通化を可能にすることで、内部ＮＷ上のフォワーディング（内部フォワーディング）の実装を容易にすることができる。その結果、ネットワークの大規模化をさらに容易に実現させることができる。
【００９８】
また、パケットが外部ＮＷ上の宛先に到達するまでの経路において故障が発生した場合であっても、クラスタ内で故障箇所を迂回するようなパケットの最適な転送経路を導き出すことができる。もし、クラスタ内で迂回先が無い場合にはＯＦＳクラスタから転送経路が削除されたことを外部ＮＷに広告することで、外部ＮＷに対して適切なルーチングを促すことができる。
【００９９】
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能である。
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、処理手順などについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【０１００】
１        ＯＦＣ（パケット転送制御装置：OpenFlowコントローラ）
２        ＯＦＳクラスタ
２−１〜２−６  ＯＦＳ＃１〜＃６
３−１〜３−４  従来型ルータ
４−１〜４−６、４−Ｃ  ＲＥ（ルーチングエンジン）
１１      統合処理部
１２      外部ＮＷ経路制御部（外部ＮＷ経路制御手段）
１３      内部ＮＷ経路制御部（内部ＮＷ経路制御手段）
１１３    フローエントリ生成部（フローエントリ生成手段）
１１２    システム管理部
１１２１  ＩＦ管理部
１１２２  内外ＩＦ連携制御部
Ｔ１      ＩＦ状態テーブル
Ｔ２      外部経路テーブル
Ｔ３      内部経路テーブル
Ｔ４ａ，Ｔ４ｂ  パケット書換テーブル
Ｔ５      内部出力ＩＦテーブル
【図１】
0006527488.tif 000002
【図２】
0006527488.tif 000003
【図３】
0006527488.tif 000004
【図４】
0006527488.tif 000005
【図５】
0006527488.tif 000006
【図６】
0006527488.tif 000007
【図７】
0006527488.tif 000008
【図８】
0006527488.tif 000009
【図９】
0006527488.tif 000010
【図１０】
0006527488.tif 000011
【図１１】
0006527488.tif 000012
【図１２】
0006527488.tif 000013
【図１３】
0006527488.tif 000014
【図１４】
0006527488.tif 000015
【図１５】
0006527488.tif 000016