(57)【要約】【課題】異なるコントローラの制御下にあるネットワークを跨いで送信されたパケットに対する処理に要するリソースを効率的に使用できるネットワークシステムを提供する。【解決手段】統合コントローラ１００は、コントローラ２００の制御範囲、および制御範囲における所定の処理を実行するスイッチ３００である所定スイッチの存在の有無を示す制御範囲情報を保存し、所定スイッチが存在することを示す制御範囲情報に対応するコントローラ２００に、コントローラ２００の制御範囲に隣接し、所定スイッチが存在する制御範囲におけるスイッチ３００から転送されたパケットに所定の処理を実行しない設定を送信する。設定を受信したコントローラ２００は、制御下にある所定スイッチにパケットに対して所定の処理を実行しない要求を送信する。【選択図】図１４
2015173440.tif 000002
【特許請求の範囲】
【請求項１】
複数のスイッチを制御するコントローラと、複数の前記コントローラを制御する統合コントローラとを備えたネットワークシステムであって、
前記統合コントローラは、
前記コントローラの制御範囲、および前記制御範囲における所定の処理を実行する前記スイッチである所定スイッチの存在の有無を示す制御範囲情報を保存し、
前記所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、前記コントローラの制御範囲に隣接し、前記所定スイッチが存在する制御範囲におけるスイッチから転送されたパケットに前記所定の処理を実行しない設定を送信し、
前記設定を受信したコントローラは、
制御下にある前記所定スイッチに前記パケットに対して前記所定の処理を実行しない要求を送信する
ことを特徴とするネットワークシステム。
【請求項２】
統合コントローラは、
所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、前記コントローラの制御範囲に隣接し、所定スイッチが存在しない制御範囲におけるスイッチから転送されたパケットに所定の処理を実行する設定を送信し、
前記コントローラは、
制御下にある前記所定スイッチに前記パケットに対して前記所定の処理を実行する要求を送信する
請求項１記載のネットワークシステム。
【請求項３】
統合コントローラは、
所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、前記コントローラの制御範囲におけるスイッチに接続するノードから送信されたパケットに所定の処理を実行する設定を送信し、
前記コントローラは、
制御下にある前記所定スイッチに前記パケットに対して前記所定の処理を実行する要求を送信する
請求項１または請求項２記載のネットワークシステム。
【請求項４】
所定の処理は、所定の通信品質を保つ制御処理である
請求項１から請求項３のうちのいずれか１項に記載のネットワークシステム。
【請求項５】
統合コントローラは、
一のコントローラの制御下にあるスイッチに他のコントローラの制御下にあるスイッチからのパケットを送信するためのポートである境界ポートに関する情報を、複数のコントローラに送信し、
前記コントローラは、
制御下にあるスイッチに送られたパケットの経路に前記境界ポートが含まれる場合に、前記境界ポートに関する情報に応じた要求を前記スイッチに送信する
請求項１から請求項４のうちのいずれか１項に記載のネットワークシステム。
【請求項６】
コントローラは、
制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれる場合に、当該パケットのヘッダ情報を保存する要求を前記スイッチに送信し、
統合コントローラは、
複数の前記コントローラを介してフローの情報および前記ヘッダ情報を受信し、当該ヘッダ情報を用いて、異なる前記コントローラの制御下にある前記フローを結合して表示する
請求項５記載のネットワークシステム。
【請求項７】
コントローラは、
制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれ、当該パケットの宛先が他のコントローラの制御下にあるノードである場合に、当該パケットのヘッダ情報の少なくとも一部を書き換える要求を前記スイッチに送信する
請求項５または請求項６記載のネットワークシステム。
【請求項８】
コントローラは、
制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれる場合に、当該パケットのヘッダ情報を保存する要求を前記スイッチに送信し、
制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれ、当該パケットの宛先が他のコントローラの制御下にあるノードである場合に、当該パケットのヘッダ情報の少なくとも一部を書き換える要求を前記スイッチに送信し、
統合コントローラは、
複数の前記コントローラを介してフローの情報および前記ヘッダ情報を受信し、前記ヘッダ情報のうち書き換えがされていないヘッダ情報に、前記フローの情報に含まれるＡｃｔｉｏｎを用いて前記要求における書き換えと同様の書き換えを行い、前記ヘッダ情報を用いて異なる前記コントローラの制御下にある前記フローを結合して表示する
請求項５記載のネットワークシステム。
【請求項９】
統合コントローラは、
コントローラから制御下のネットワークにおける帯域情報を取得し、当該コントローラ以外のコントローラに当該帯域情報を送信し、
コントローラは、
制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれ、当該パケットの宛先が他のコントローラの制御下にあるノードである場合、前記スイッチが属するネットワークの帯域より、前記ノードが属するネットワークの帯域が狭い場合は、前記スイッチに前記パケットをシェーピングする要求を送信する
請求項５から請求項８のうちのいずれか１項に記載のネットワークシステム。
【請求項１０】
複数のスイッチを制御するコントローラと、複数の前記コントローラを制御する統合コントローラとを備えたネットワークシステムに用いられる通信制御方法であって、
前記統合コントローラが、
前記コントローラの制御範囲、および前記制御範囲における所定の処理を実行する前記スイッチである所定スイッチの存在の有無を示す制御範囲情報を保存し、
前記所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、前記コントローラの制御範囲に隣接し、前記所定スイッチが存在する制御範囲におけるスイッチから転送されたパケットに前記所定の処理を実行しない設定を送信し、
前記設定を受信したコントローラが、
制御下にある前記所定スイッチに前記パケットに対して前記所定の処理を実行しない要求を送信する
ことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコントローラおよびそのコントローラを管理する統合コントローラを用いたネットワークシステムおよび通信制御方法に関する。
【背景技術】
【０００２】
近年、ＯｐｅｎＦｌｏｗという技術が提案されている。ＯｐｅｎＦｌｏｗが用いられたネットワークシステム（以下、ＯｐｅｎＦｌｏｗネットワークと称する）では、一般的なネットワーク機器が行うパケット転送と経路制御の機能が分離されている。具体的には、ネットワーク機器が、パケット転送を担当し、ネットワーク機器の外部に置かれたコントローラが、経路制御を担当する。これにより、外部からの制御が容易になり、柔軟性に富んだネットワークを構築することが可能になる。
【０００３】
ＯｐｅｎＦｌｏｗを用いた一般的なネットワークシステムは、ＯｐｅｎＦｌｏｗプロトコルをサポートしたネットワーク機器であるＯｐｅｎＦｌｏｗスイッチ（以下ＯＦＳと称する）と、外部に置かれたコントローラであるＯｐｅｎＦｌｏｗコントローラ（以下、ＯＦＣと称する）とで構成される。ネットワーク機器とコントローラは、セキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されており、ＯｐｅｎＦｌｏｗプロトコルを用いて通信を行う。
【０００４】
一般的なＯｐｅｎＦｌｏｗネットワークを用いたシステムの例が、特許文献１に開示されている。特許文献１には、通信経路に基づいて構築された仮想ネットワークのトポロジ情報に基づき、複数のコントローラによって管理される複数の仮想ネットワークを結合して視認可能に出力する管理装置を具備するコンピュータシステムが開示されている。このコンピュータシステムは、仮想ネットワーク全体を一元的に管理することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１１８６８７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１には、異なるＯＦＣの制御下にあるネットワークを跨いで送信されるパケットをどのように適切に制御するかが記載されていない。つまり、他のＯＦＣの制御下にあるネットワークに送信されるパケットの経路制御に関して、ＯＦＣがＯＦＳにどのように指示すればよいかが明確ではない。そのため、特許文献１に記載されたコンピュータシステムは、異なるＯＦＣの制御下にあるネットワークを跨いでパケットが送信された場合に適切な動作ができないという課題がある。
【０００７】
例えば、特許文献１に記載されたコンピュータシステムは、異なるＯＦＣの制御下にあるネットワークを跨いで送信されたパケットに対して、適切にＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）処理を実施できない。
【０００８】
各コントローラに対してＱｏＳ処理の設定を適切に行わないと、パケットに対してＱｏＳ処理が重複して行われることがある。すなわち、ＱｏＳ処理に要するネットワークシステム全体のリソースが効率的に使用されないという問題がある。また、ＱｏＳ機能を有するスイッチが存在するにも関わらず、パケットに対してＱｏＳ処理が実施されないことがある。
【０００９】
そこで、本発明は、異なるコントローラの制御下にあるネットワークを跨いで送信されたパケットに対する処理に要するリソースを効率的に使用できるネットワークシステムおよび通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によるネットワークシステムは、複数のスイッチを制御するコントローラと、複数のコントローラを制御する統合コントローラとを備えたネットワークシステムであって、統合コントローラは、コントローラの制御範囲、および制御範囲における所定の処理を実行するスイッチである所定スイッチの存在の有無を示す制御範囲情報を保存し、所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、コントローラの制御範囲に隣接し、所定スイッチが存在する制御範囲におけるスイッチから転送されたパケットに所定の処理を実行しない設定を送信し、設定を受信したコントローラは、制御下にある所定スイッチにパケットに対して所定の処理を実行しない要求を送信することを特徴とする。
【００１１】
本発明による通信制御方法は、複数のスイッチを制御するコントローラと、複数のコントローラを制御する統合コントローラとを備えたネットワークシステムに用いられる通信制御方法であって、統合コントローラが、コントローラの制御範囲、および制御範囲における所定の処理を実行するスイッチである所定スイッチの存在の有無を示す制御範囲情報を保存し、所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、コントローラの制御範囲に隣接し、所定スイッチが存在する制御範囲におけるスイッチから転送されたパケットに所定の処理を実行しない設定を送信し、設定を受信したコントローラが、制御下にある所定スイッチにパケットに対して所定の処理を実行しない要求を送信することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、異なるコントローラの制御下にあるネットワークを跨いで送信されたパケットに対する処理に要するリソースを効率的に使用できる。
【図面の簡単な説明】
【００１３】
【図１】本発明によるネットワークシステムの第１の実施形態の構成および処理の流れを示す説明図である。
【図２】本発明によるネットワークシステムの第１の実施形態の動作を示すフローチャートである。
【図３】第１の実施形態の第１の実施例におけるネットワークシステムの詳細な構成を示すブロック図である。
【図４】第１の実施形態の第１の実施例におけるネットワークシステムの構成を示すブロック図である。
【図５】第１の実施形態の境界ポートに関する情報の例を示す説明図である。
【図６】第１の実施形態の第４の実施例の構成および動作を示す説明図である。
【図７】本発明によるネットワークシステムの第１の実施形態の他の構成を示すブロック図である。
【図８】本発明によるネットワークシステムの第２の実施形態の構成および処理の流れを示す説明図である。
【図９】第２の実施形態の第１の実施例におけるネットワークシステムの詳細な構成を示すブロック図である。
【図１０】第２の実施形態の第１の実施例のＱｏＳ処理情報の例を示す説明図である。
【図１１】第２の実施形態の第１の実施例のＱｏＳ処理情報の他の例を示す説明図である。
【図１２】本発明によるネットワークシステムの第２の実施形態の動作を示すフローチャートである。
【図１３】第２の実施形態の第２の実施例におけるネットワークシステムの構成を示すブロック図である。
【図１４】本発明によるネットワークシステムの主要部の構成を示す説明図である。
【図１５】統合コントローラを含むネットワークシステムの例を示すブロック図である。
【図１６】フロー情報のＭａｔｃｈ条件の例を示す説明図である。
【発明を実施するための形態】
【００１４】
実施形態１．
初めに、一般的なＯｐｅｎＦｌｏｗネットワークおよびその課題の一例を説明する。ＯｐｅｎＦｌｏｗネットワークでは、ＯＦＣは、ＯｐｅｎＦｌｏｗプロトコルを使用して複数のＯＦＳを集中制御する。ＯＦＣは、ＯＦＳ間を流れるパケットをフローと呼ばれる単位で管理する。また、ＯＦＣは、各ＯＦＳに対して、フロー情報（フローの情報）で構成されるフローエントリを設定することで、仮想ネットワークを構築し、ＯＦＳ間での通信を制御する。
【００１５】
フロー情報は、Ｍａｔｃｈ条件、Ｐａｔｈ情報、Ａｃｔｉｏｎ情報を含む。Ｍａｔｃｈ条件は、フロー情報に対応するパケットを識別するための条件を表す。Ｐａｔｈ情報は、Ｍａｔｃｈ条件に対応するパケットが経由する経路を表す。Ａｃｔｉｏｎ情報は、Ｐａｔｈ情報に対応する経路を経由したパケットに対して実行されるべき処理を表す。ＯＦＣは、ネットワークトポロジの図の上にフロー情報を表示する機能を有し、ネットワークを流れる通信の可視化を行うことができる。
【００１６】
一方、ＯｐｅｎＦｌｏｗネットワークに、複数のＯＦＣを集中制御する統合コントローラを用いることも考えられる。統合コントローラは、複数のＯＦＣから、各ＯＦＣが制御するフロー情報を取得し、それらを連結して、一つのフローとして提示することができるが、フローの連結を正しく行うことができない場合が存在する。次に、このような場合の具体例を、図を用いて説明する。
【００１７】
図１５は、統合コントローラ４０を含むネットワークシステムの例を示すブロック図である。図１６は、フロー情報のＭａｔｃｈ条件の例を示す説明図である。図１６に示すＭａｔｃｈ条件は、図１５に示すＯＦＣ５０−１とＯＦＣ５０−２が保持するフローのＭａｔｃｈ条件である。図１５において、ＯＦＳ６０−１とＯＦＳ６０−２は、ＯＦＣ５０−１によって制御され、ＯＦＳ６０−３とＯＦＳ６０−４は、ＯＦＣ５０−２によって制御される。ＯＦＣ５０−１とＯＦＣ５０−２は、統合コントローラ４０によって制御される。
【００１８】
図１５において、ノード７１からノード７２へとパケットが送信されると、ＯＦＣ５０−１及びＯＦＣ５０−２は、それぞれの設定内容に従い制御下のＯＦＳ６０−１〜ＯＦＳ６０−４へとフローエントリを設定する。図１６において「＊」は任意（ワイルドカード）であることを表す。図１６に示すように、ＯＦＣ５０−１はＭａｔｃｈ条件として、ＩＰ  ｓｒｃ（始点ＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ））がノード７１のＩＰアドレスであり、ＩＰ  ｄｓｔ（終点ＩＰアドレス）がノード７２のＩＰアドレスであり、その他のフィールドが任意であるフローを生成する。ＯＦＣ５０−２は、Ｍａｔｃｈ条件として、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔ（終点ポート）が８０であり、その他のフィールドが任意であるフローを生成する。
【００１９】
統合コントローラ４０は、ＯＦＣ５０−１とＯＦＣ５０−２からフロー情報を取得し、各フロー情報のＭａｔｃｈ条件を比較する。しかし、ＯＦＣ５０−１から取得したフロー情報とＯＦＣ５０−２から取得したフロー情報ではＭａｔｃｈ条件が一致せず、統合コントローラ４０は、パケットがそれらのフローに従って実際に流れたのか判別することができない。例えば、ノード７１が、ＩＰ  ｓｒｃがノード７１のＩＰアドレスであり、ＩＰ  ｄｓｔがノード７２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０であるパケットを送信した場合は、ＯＦＣ５０−１のフローとＯＦＣ５０−２のフローの両方に合致する。そのため、統合コントローラ４０は、ＯＦＣ５０−１のフローとＯＦＣ５０−２のフローを連結して表示することができる。
【００２０】
しかし、ノード７１が、ＩＰ  ｓｒｃがノード７１のＩＰアドレスであり、ＩＰ  ｄｓｔがノード７２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが４４３であるパケットを送信した場合は、ＯＦＣ５０−１のフローには合致するが、ＯＦＣ５０−２のフローには合致しない。そのため、統合コントローラ４０は、ＯＦＣ５０−１のフローとＯＦＣ５０−２のフローを連結して表示することはできない。
【００２１】
以下、上記のような課題を解決するためのネットワークシステムの実施形態を、図面を用いて説明する。図１は、本実施形態のネットワークシステムの構成および処理の流れを示す説明図である。図２は、本実施形態のネットワークシステムの動作を示すフローチャートである。
【００２２】
本実施形態のネットワークシステムは、ＯＦＳ３０−１、ＯＦＳ３０−２、ＯＦＳ３０−３、ＯＦＳ３０−４と、ＯＦＳ３０−１およびＯＦＳ３０−２を制御するＯＦＣ２０−１と、ＯＦＳ３０−３およびＯＦＳ３０−４を制御するＯＦＣ２０−２と、ＯＦＣ２０−１およびＯＦＣ２０−２を制御する統合コントローラ１０とを備える。また、ＯＦＳ３０−１にノード１が接続され、ＯＦＳ３０−４にノード２が接続されている。
【００２３】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２の境界（境界ポート）を検出する（ステップＳ１）。境界ポートは、一のＯＦＣの制御下にあるＯＦＳに他のＯＦＣの制御下にあるＯＦＳからのパケットを送信するためのポートである。境界ポート同士は、直結していてもよく他の装置を介して接続されていてもよい。図１に示す例では、境界ポートは、ＯＦＳ３０−２がＯＦＳ３０−３と接続するためのポートｐ１、およびＯＦＳ３０−３がＯＦＳ３０−２と接続するためのポートｐ２である。統合コントローラ１０は、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）などを使用して、自動で境界ポートの検出を実行することにより境界ポートに関する情報を取得してもよいし、ユーザにより明示的に指定された境界ポートに関する情報を取得してもよい。また、統合コントローラ１０は、境界ポートに関する情報をあらかじめ保持していてもよい。
【００２４】
統合コントローラ１０は、自身の制御下にあるＯＦＣ２０−１に対して隣接ＯＦＣであるＯＦＣ２０−２との境界ポートに関する情報を送信する（ステップＳ２）。
【００２５】
ノード１がノード２を宛先とするパケットを送信する（ステップＳ３）。ＯＦＳ３０−１は、ノード１からパケットを受信し、ＯＦＣ２０−１へＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【００２６】
ＰＡＣＫＥＴ＿ＩＮメッセージは、ＯＦＳが持つフローテーブル中に、受信パケットとマッチするフローがなかった場合、受信パケットをＯＦＣに送るために用いるメッセージである。ただし、本実施形態では、ＯＦＣに送られる情報は、ＰＡＣＫＥＴ＿ＩＮメッセージに限られず、パケットに関する情報（パケットの種類、送信元、宛先等）を含む情報であればよい。
【００２７】
ＯＦＣ２０−１は、ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−１内の設定情報と統合コントローラ１０から受信した境界情報とに基づいて経路計算を行う（ステップＳ４）。また、ＯＦＣ２０−１は、フロー情報を生成する。ＯＦＣ２０−１は、生成したフローが隣接するＯＦＣ２０−２へ到達すること、つまり経路に境界ポートが含まれることを検知する。ＯＦＣ２０−１およびＯＦＣ２０−２は、フローの経路に境界ポートが含まれる場合、パケットのヘッダ情報を保存する要求をＯＦＳに送信する機能を有している。
【００２８】
ＯＦＣ２０−１は、経路計算によって求めた経路上に存在するＯＦＳ３０−１とＯＦＳ３０−２にフローエントリを設定する（ステップＳ５）。また、ＯＦＣ２０−１は、フローの経路に境界ポートが含まれるため、フローのＩｎｇｒｅｓｓ（入口）に位置するＯＦＳ３０−１に対して、フローエントリに合致したパケットのヘッダ情報を保存するように指示する。
【００２９】
ＯＦＳ３０−１は、ＯＦＣ２０−１から設定されたフローエントリの内容に従い、ノード１から受信したパケットをＯＦＳ３０−２へ転送する。ＯＦＳ３０−１は、パケットのヘッダ情報をフローエントリと関連付けて自身の内部に保存する（ステップＳ６）。
【００３０】
統合コントローラ１０は、ＯＦＣ２０−１に対して条件を指定してフローの取得を要求する。ＯＦＣ２０−１は、統合コントローラ１０から指定された条件に合致するフロー情報を検索する。ＯＦＣ２０−１は、そのフロー情報に基づいて、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０−１に対して、フローエントリに合致したパケットの取得を要求する。ＯＦＳ３０−１は、ＯＦＣ２０−１からの要求に従い、フローエントリに合致したパケットのヘッダ情報をＯＦＣ２０−１に返却する。ＯＦＣ２０−１は、ＯＦＳ３０−１から受信したフローとパケットのヘッダ情報を統合コントローラ１０へと送信する（ステップＳ７）。
【００３１】
同様に、統合コントローラ１０は、ＯＦＣ２０−２からもフローとヘッダ情報を取得する。統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２から取得したヘッダ情報を比較し、フローを連結させることが可能か判断する。
【００３２】
以上、ＯＦＣが、制御下にあるＯＦＳから、境界ポートを通過するパケットまたは境界ポートを通過したパケットが送信された場合、そのパケットのヘッダ情報を保存する要求をＯＦＳに送信する例を説明した。ただし、本実施形態のネットワークシステムにおいて、ＯＦＣがＯＦＳに送信する要求は、境界ポートに関する情報に応じた要求であればよく、パケットのヘッダ情報の保存に限られない。本実施形態のＯＦＣは、境界ポートに関する情報に応じて、隣接ＯＦＣの制御下にあるＯＦＳへ到達するフローと、自身の制御下にあるＯＦＳで終端するフローとでは、ＯＦＳに対して異なる要求をする。その要求の他の例を含む、本実施形態のネットワークシステムの実施例を以下で説明する。
【００３３】
（実施例１）
次に、本実施形態のネットワークシステムの第１の実施例（実施例１）を説明する。図３は、第１の実施形態の第１の実施例におけるネットワークシステムの詳細な構成を示すブロック図である。図３は、ネットワークシステムのうち、統合コントローラ１０、ＯＦＣ２０、ＯＦＳ３０の具体的な構成を示している。
【００３４】
統合コントローラ１０、ＯＦＣ２０、ＯＦＳ３０の各構成要素は、例えば、特定の演算処理等を行うよう設計されたハードウェア、またはプログラムに従って動作するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の情報処理装置によって実現される。また、そのプログラムは、非一時的でコンピュータが読み取り可能な記憶媒体に記憶される。
【００３５】
統合コントローラ１０は、例えば、サーバマシン、または当該サーバマシン上で動作する仮想マシンである。統合コントローラ１０は、ＯＦＣ管理部１１と、境界ポート管理部１２と、フロー連結部１３とを備える。統合コントローラ１０は、複数のＯＦＣ２０を管理することができる。また、統合コントローラ１０は、ＯＦＣ２０と専用線または通常のネットワークで接続されている。
【００３６】
ＯＦＣ管理部１１は、統合コントローラ１０の制御対象のＯＦＣ２０の情報、当該ＯＦＣ２０が制御しているＯＦＳ３０の情報、およびトポロジ情報を管理する。
【００３７】
境界ポート管理部１２は、複数のＯＦＣ２０が制御するネットワーク間の境界となるＯＦＳ３０のポート情報を管理する。
【００３８】
フロー連結部１３は、複数のＯＦＣ２０から取得したフローの情報を比較し、一つのフローに連結する。
【００３９】
ＯＦＣ２０は、例えば、サーバマシン、または当該サーバマシン上で動作する仮想マシンである。ＯＦＣ２０は、統合コントローラ１０と同じマシン上で動作することも可能である。ＯＦＣ２０は、複数のＯＦＳ３０を管理することができる。また、ＯＦＣ２０は、ＯＦＳ３０と専用線もしくは通常のネットワークを利用したセキュアチャンネルで接続されている。
【００４０】
ＯＦＣ２０は、物理トポロジ管理部２１と、経路計算部２２と、フロー管理部２３と、ＯＦＳ管理部２４とを備える。
【００４１】
物理トポロジ管理部２１は、ＯＦＣ２０が管理するＯＦＳ３０の情報、ＯＦＳ３０間のリンク情報、隣接するＯＦＣ２０との境界となるポート情報を管理する。
【００４２】
経路計算部２２は、ＯＦＣ２０が管理するＯＦＳ３０に接続されているノード間の経路を計算する。
【００４３】
フロー管理部２３は、Ｍａｔｃｈ条件とＡｃｔｉｏｎとＰａｔｈによって構成されるフローを生成する。
【００４４】
ＯＦＳ管理部２４は、フローが経由するＯＦＳ３０に対してフローエントリ設定などの指示を行う。
【００４５】
ＯＦＳ３０は、フローエントリ管理部３１とパケットヘッダ管理部３２とを備える。
【００４６】
フローエントリ管理部３１は、ＯＦＣ２０からフローエントリ設定の要求を受信すると、フローエントリを生成し、保存する。ＯＦＳ３０に接続されているノードからパケットを受信すると、パケットヘッダをフローエントリのＭａｔｃｈ条件と比較し、フローエントリのＡｃｔｉｏｎに従った処理をする。
【００４７】
パケットヘッダ管理部３２は、フローエントリのＭａｔｃｈ条件に合致したパケットのヘッダを、フローエントリと関連付けて保存する。
【００４８】
次に、本実施例のネットワークシステムの動作を説明する。本実施例において、統合コントローラ１０は、ＯＦＣ２０を制御し、パケットの制御ポリシをＯＦＣ２０に設定する。
【００４９】
統合コントローラ１０において、ＯＦＣ管理部１１は、ユーザから指定されたＯＦＣ２０の情報を保存する。境界ポート管理部１２は、複数のＯＦＣ２０間の境界にあるＯＦＳ３０のポート情報を保存する。境界にあるＯＦＳ３０のポートは、ユーザから指定される場合と、統合コントローラ１０から自動検出される場合がある。境界ポート管理部１２は、境界ポートに関する情報をＯＦＣ２０へ送信する。
【００５０】
ＯＦＣ２０において、物理トポロジ管理部２１は、ＯＦＳ３０から取得したＯＦＳのポート情報とＯＦＣ２０が検出したＯＦＳ３０間のリンク情報を保存する。また、物理トポロジ管理部２１は、統合コントローラ１０から受信した境界ポートに関する情報を保存する。
【００５１】
経路計算部２２は、ＯＦＳ３０からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、統合コントローラ１０から設定された制御ポリシと物理トポロジ管理部２１が保持する物理トポロジ情報に基づいてパケットの経路を計算する。
【００５２】
フロー管理部２３は、経路計算部２２が算出した経路を通過するフロー情報を生成して自身の中に保存し、管理する。
【００５３】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフロー情報を基に、フローが経由するＯＦＳ３０に設定するフローエントリを算出し、ＯＦＳ３０にフローエントリの設定を指示する。
【００５４】
ＯＦＳ管理部２４は、フローの経路に境界ポートが含まれる場合、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０に対して、フローエントリに合致したパケットのヘッダを保存するように指示を送る。フローの経路に境界ポートが含まれる場合とは、例えば、フローが境界ポートに向けて出力されていた場合、または境界ポートから入力されていた場合である。
【００５５】
ＯＦＳ３０において、フローエントリ管理部３１は、ＯＦＣ２０からフローエントリの設定要求を受信すると、フローエントリを生成して保存する。また、フローエントリ管理部３１は、ＯＦＣ２０から、フローエントリに合致したパケットのヘッダ保存要求を受信すると、フローエントリのＡｃｔｉｏｎに、パケットヘッダの保存を追加する。
【００５６】
ＯＦＳ３０は、ＯＦＳ３０に接続されているノードからパケットを受信すると、パケットのヘッダ情報とフローエントリ管理部３１が保持しているフローエントリのＭａｔｃｈ条件とを比較する。ＯＦＳ３０は、そのパケットがＭａｔｃｈ条件に合致するパケットだった場合は、そのフローエントリに設定されているＡｃｔｉｏｎを実行する。パケットヘッダ管理部３２は、Ａｃｔｉｏｎにパケットヘッダの保存が指定されている場合に、フローエントリに合致したパケットヘッダを保存する。
【００５７】
統合コントローラ１０は、フローの表示要求を受信すると、ＯＦＣ２０へフローの取得要求を送信する。
【００５８】
ＯＦＣ２０が統合コントローラ１０からフローの取得要求を受信すると、フロー管理部２３は、統合コントローラ１０から要求された条件に合致するフローを検索する。ＯＦＳ管理部２４は、当該フローが境界ポートを経由していた場合は、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０に対してパケットヘッダの取得要求を送信する。
【００５９】
ＯＦＳ３０のパケットヘッダ管理部３２は、ＯＦＣ２０からパケットヘッダの取得要求を受信すると、要求に合致するパケットヘッダをＯＦＣ２０へ送信する。
【００６０】
ＯＦＣ２０は、フロー管理部２３が保持しているフロー情報とＯＦＳ３０から取得したパケットヘッダ情報を統合コントローラ１０へ送信する。
【００６１】
統合コントローラ１０において、境界ポート管理部１２は、ＯＦＣ２０から受信したフローのＰａｔｈからＥｇｒｅｓｓのＯＦＳ３０のポートが境界ポートであるか調べる。Ｅｇｒｅｓｓポートが境界ポートであった場合は、境界ポート管理部１２は、当該ＯＦＣ２０と隣接するＯＦＣ２０を検索する。
【００６２】
フロー連結部１３は、境界ポート管理部１２が検索した隣接ＯＦＣ２０からフローとパケットヘッダ情報を取得する。そして、フロー連結部１３は、１台目のＯＦＣ２０から取得したフローのパケットヘッダ情報と２台目のＯＦＣ２０から取得したフローのパケットヘッダ情報とを比較する。フロー連結部１３は、パケットヘッダ情報が同一であった場合は、フローの連結を行う。
【００６３】
本実施例のフロー連結処理の詳細を説明する。図４は、第１の実施形態の第１の実施例におけるネットワークシステムの構成を示すブロック図である。図５は、第１の実施形態の境界ポートに関する情報の例を示す説明図である。図４に示す統合コントローラ１０は、図３に示す統合コントローラ１０に相当する。図４に示すＯＦＣ２０−１およびＯＦＣ２０−２は、図３に示すＯＦＣ２０に相当する。図４に示すＯＦＳ３０−１〜ＯＦＳ３０−４は、図３に示すＯＦＳ３０に相当する。
【００６４】
統合コントローラ１０は、ＯＦＣ２０−１が制御しているＯＦＳ３０−１およびＯＦＳ３０−２とＯＦＣ２０−２が制御しているＯＦＳ３０−３およびＯＦＳ３０−４の境界ポートに関する情報を境界ポート管理部１２へ保存する。図５に示すように、境界ポートに関する情報は、コントローラＩＤとスイッチＩＤとポートＩＤの組を含む。図５に示す境界ポートに関する情報は、ＯＦＣ２０−１の制御下にあるＯＦＳ３０−２のポートｐ１とＯＦＣ２０−２の制御下にあるＯＦＳ３０−３のポートｐ２が接続されていることを表している。
【００６５】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に図５に示す境界ポートに関する情報を送信する。
【００６６】
ＯＦＣ２０−１は、統合コントローラ１０から境界ポートに関する情報を受信する。ＯＦＣ２０−１は、自身の制御下のＯＦＳ３０−２のポートｐ１がＯＦＣ２０−２の制御下のＯＦＳ３０−３のポートｐ２と接続されているという情報を、物理トポロジ管理部２１に保存する。
【００６７】
ＯＦＣ２０−２は、統合コントローラ１０から境界ポートに関する情報を受信する。ＯＦＣ２０−２は、自身の制御下のＯＦＳ３０−３のポートｐ２がＯＦＣ２０−１の制御下のＯＦＳ３０−２のポートｐ１と接続されているという情報を、物理トポロジ管理部２１に保存する。
【００６８】
統合コントローラ１０は、ＯＦＣ２０−１に対してフローの生成時にパケットのＳｒｃ  ＩＰとＤｓｔ  ＩＰをＭａｔｃｈ条件とするポリシを設定する。また、統合コントローラ１０は、ＯＦＣ２０−２に対してフローの生成時にパケットのＴＣＰ／ＵＤＰ  ｄｓｔ  ＰｏｒｔをＭａｔｃｈ条件とするポリシを設定する。
【００６９】
ノード１は、Ｅｔｈｅｒ  ｓｒｃがノード１のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、Ｅｔｈｅｒ  ｄｓｔがノード２のＭＡＣアドレスであり、Ｓｒｃ  ＩＰがノード１のＩＰアドレスであり、Ｄｓｔ  ＩＰがノード２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０であるパケットをＯＦＳ３０−１へ送信する。
【００７０】
ＯＦＳ３０−１はノード１からそのパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−１へ送信する。
【００７１】
ＯＦＣ２０−１において、経路計算部２２は、ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算する。フローのＰａｔｈは、「ＯＦＳ３０−１のポートｐ２→ＯＦＳ３０−１のポートｐ１→ＯＦＳ３０−２のポートｐ２→ＯＦＳ３０−２のポートｐ１」となる。
【００７２】
フロー管理部２３は、統合コントローラ１０から設定されたポリシに従い、Ｍａｔｃｈ条件のＳｒｃ  ＩＰがノード１のＩＰアドレスであり、Ｄｓｔ  ＩＰがノード２のＩＰアドレスであり、他のフィールドが任意であり、経路計算部２２が求めたＰａｔｈを経由するフローを生成する。
【００７３】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−１とＯＦＳ３０−２に対してフローエントリの設定を指示する。
【００７４】
ＯＦＳ３０−１とＯＦＳ３０−２は、ＯＦＣ２０−１から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【００７５】
フロー管理部２３は、フローのＰａｔｈが、物理トポロジ管理部２１が保持する情報に示される境界ポートを通過することを検出する。
【００７６】
ＯＦＳ管理部２４は、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０−１に対して、フローエントリに合致したパケットのヘッダを保存するように要求する。
【００７７】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ＯＦＣ２０−１からパケットヘッダの保存要求を受信すると、当該フローエントリのＡｃｔｉｏｎとしてパケットヘッダの保存を追加する。
【００７８】
フローエントリ管理部３１は、ノード１から受信したパケットがフローエントリに合致する場合、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−２に転送する。パケットヘッダ管理部３２は、当該パケットのヘッダ情報を保存する。
【００７９】
ＯＦＳ３０−２において、フローエントリ管理部３１は、ＯＦＳ３０−１からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−３へ転送する。
【００８０】
ＯＦＳ３０−３は、ＯＦＳ３０−２からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−２へ送信する。
【００８１】
ＯＦＣ２０−２において、経路計算部２２は、ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈが「ＯＦＳ３０−３のポートｐ２→ＯＦＳ３０−３のポートｐ１→ＯＦＳ３０−４のポートｐ２→ＯＦＳ３０−４のポートｐ１」となることを計算する。
【００８２】
フロー管理部２３は、統合コントローラ１０から設定された制御ポリシに従い、Ｍａｔｃｈ条件のＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０で他のフィールドが任意であり、Ｐａｔｈ情報が「ＯＦＳ３０−３のポートｐ２→ＯＦＳ３０−３のポートｐ１→ＯＦＳ３０−４のポートｐ２→ＯＦＳ３０−４のポートｐ１」であるフローを生成する。
【００８３】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−３とＯＦＳ３０−４に対してフローエントリの設定を指示する。
【００８４】
ＯＦＳ３０−３とＯＦＳ３０−４は、ＯＦＣ２０−２から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。フロー管理部２３は、フローのＰａｔｈ情報から、物理トポロジ管理部２１が保持する情報に示される境界ポートが入力ポート、または出力ポートであることを検出する。
【００８５】
ＯＦＳ管理部２４は、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０−３に対して、フローエントリに合致したパケットのヘッダを保存するように要求する。
【００８６】
ＯＦＳ３０−３において、フローエントリ管理部３１は、ＯＦＣ２０−２からパケットヘッダの保存要求を受信すると、当該フローエントリのＡｃｔｉｏｎとしてパケットのヘッダの保存を追加する。
【００８７】
ＯＦＳ３０−３において、フローエントリ管理部３１は、ＯＦＳ３０−２から受信したパケットがフローエントリに合致する場合、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−４に転送する。パケットヘッダ管理部３２は、当該パケットのヘッダ情報を保存する。
【００８８】
ＯＦＳ３０−４において、フローエントリ管理部３１は、ＯＦＳ３０−３からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをノード２へ転送する。
【００８９】
統合コントローラ１０は、ＯＦＳ３０−１を経由するフローの表示要求を受信する。その場合、統合コントローラ１０は、ＯＦＣ２０−１に対して、ＯＦＳ３０−１を経由するフローの取得要求を送信する。
【００９０】
ＯＦＣ２０−１において、フロー管理部２３は、統合コントローラ１０から指定された条件のフローを検索する。検索で得られたフローではＯＦＳ３０−１に対してパケットヘッダ保存を指示しているため、フロー管理部２３は、ＯＦＳ３０−１に対してフローエントリに合致したパケットヘッダの取得要求を送信する。
【００９１】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ＯＦＣ２０−１から要求されたフローエントリに合致したパケットヘッダをパケットヘッダ管理部３２から取得し、ＯＦＣ２０−１へ送信する。
【００９２】
ＯＦＣ２０−１は、フローの情報とＯＦＳ３０−１から取得したパケットヘッダの情報を統合コントローラ１０へ送信する。
【００９３】
統合コントローラ１０は、ＯＦＣ２０−１から取得したフローのＰａｔｈと境界ポート管理部１２が保持する境界ポートに関する情報から、当該フローがＯＦＳ３０−３へ続くことを検出する。そして、統合コントローラ１０は、ＯＦＣ２０−２へＯＦＳ３０−３を経由するフローの取得要求を送信する。
【００９４】
ＯＦＣ２０−２において、フロー管理部２３は、統合コントローラ１０から指定された条件に合致するフローを検索する。検索で得られたフローではＯＦＳ３０−３に対してパケットヘッダの保存を指示しているため、フロー管理部２３はＯＦＳ３０−３からフローエントリに合致したパケットヘッダを取得し、フローの情報とパケットヘッダの情報を統合コントローラ１０へ送信する。
【００９５】
統合コントローラ１０において、フロー連結部１３は、ＯＦＣ２０−１とＯＦＣ２０−２から取得したフローのパケットヘッダの情報を比較する。２つのフローのパケットヘッダが同一であるため、フロー連結部１３は、２つのフローを連結して表示する。
【００９６】
（実施例２）
本実施形態の第２の実施例（実施例２）として、ＯＦＣ２０がフローのＡｃｔｉｏｎにパケットヘッダの書き換えを指定した場合の動作を説明する。なお、本実施例におけるネットワークシステムの構成には図３および図４に示す構成を用いる。また、境界ポートに関する情報として図５に示す情報を用いる。
【００９７】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に図５に示す境界ポートに関する情報を送信する。
【００９８】
ＯＦＣ２０−１は、統合コントローラ１０から境界ポートに関する情報を受信する。ＯＦＣ２０−１は、自身の制御下のＯＦＳ３０−２のポートｐ１がＯＦＣ２０−２の制御下のＯＦＳ３０−３のポートｐ２と接続されているという情報を、物理トポロジ管理部２１に保存する。
【００９９】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に対してフローの制御ポリシを設定する。
【０１００】
ノード１は、Ｅｔｈｅｒ  ｓｒｃがノード１のＭＡＣアドレスであり、Ｅｔｈｅｒ  ｄｓｔがノード２のＭＡＣアドレスであり、Ｓｒｃ  ＩＰがノード１のＩＰアドレスであり、Ｄｓｔ  ＩＰがノード２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０であるパケットをＯＦＳ３０−１へ送信する。
【０１０１】
ＯＦＳ３０−１は、ノード１からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−１へ送信する。
【０１０２】
ＯＦＣ２０−１において、経路計算部２２は、ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、通知されたパケットのヘッダ情報と物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算する。フローのＰａｔｈは、「ＯＦＳ３０−１のポートｐ２→ＯＦＳ３０−１のポートｐ１→ＯＦＳ３０−２のポートｐ２→ＯＦＳ３０−２のポートｐ１」となる。
【０１０３】
フロー管理部２３は、経路計算部２２が計算したＰａｔｈを通るフローを生成する。フロー管理部２３は、経路計算部２２が計算したＰａｔｈに境界ポートが含まれ、パケットの宛先が他のＯＦＣの制御下にあるノードであることを認識する。その場合、フロー管理部２３は、パケットの制御ポリシに従い、フローのＡｃｔｉｏｎとしてパケットのＳｒｃ  ＭＡＣをＯＦＣ２０−１の仮想ＭＡＣアドレスに書き換えるように指定する。
【０１０４】
なお、本実施例では、フロー管理部２３は、Ｐａｔｈに境界ポートが含まれ、パケットの宛先が他のＯＦＣの制御下にあるノードである場合に、フローのＡｃｔｉｏｎとしてパケットのＳｒｃ  ＭＡＣの書き換えを設定しているが、そのような設定に限られない。フロー管理部２３は、Ｐａｔｈに境界ポートが含まれ、パケットの宛先が他のＯＦＣの制御下にあるノードである場合に、フローのＡｃｔｉｏｎとしてパケットヘッダの少なくとも一部の書き換えを指定する。また、書き換える内容もＯＦＣ２０−１の仮想ＭＡＣアドレスには限られない。
【０１０５】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−１とＯＦＳ３０−２に対してフローエントリの設定を指示する。
【０１０６】
ＯＦＳ３０−１とＯＦＳ３０−２は、ＯＦＣ２０−１から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【０１０７】
フロー管理部２３は、フローのＰａｔｈが、物理トポロジ管理部２１が保持する境界ポートを通過することを検出する。
【０１０８】
ＯＦＳ管理部２４は、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０−１に対して、フローエントリに合致したパケットのヘッダを保存するように要求する。
【０１０９】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ＯＦＣ２０−１からパケットヘッダの保存要求を受信すると、フローエントリのＡｃｔｉｏｎとしてパケットヘッダの保存を追加する。
【０１１０】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ノード１から受信したパケットがフローエントリに合致する場合、フローエントリのＡｃｔｉｏｎに従い、当該パケットのＳｒｃ  ＭＡＣをＯＦＣ２０−１の仮想ＭＡＣアドレスに変更した後、前記パケットをＯＦＳ３０−２に転送する。また、パケットヘッダ管理部３２は、前記パケットの変更前のヘッダ情報を保存する。
【０１１１】
ＯＦＳ３０−２において、フローエントリ管理部３１は、ＯＦＳ３０−１からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−３へ転送する。
【０１１２】
ＯＦＳ３０−３は、ＯＦＳ３０−２からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−２へ送信する。
【０１１３】
ＯＦＣ２０−２において経路計算部２２は、ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算する。フローのＰａｔｈは、「ＯＦＳ３０−３のポートｐ２→ＯＦＳ３０−３のポートｐ１→ＯＦＳ３０−４のポートｐ２→ＯＦＳ３０−４のポートｐ１」となる。
【０１１４】
フロー管理部２３は、フローのＰａｔｈが「ＯＦＳ３０−３のポートｐ２→ＯＦＳ３０−３のポートｐ１→ＯＦＳ３０−４のポートｐ２→ＯＦＳ３０−４のポートｐ１」であるフローを生成する。
【０１１５】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−３とＯＦＳ３０−４に対してフローエントリの設定を指示する。
【０１１６】
ＯＦＳ３０−３とＯＦＳ３０−４は、ＯＦＣ２０−２から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【０１１７】
フロー管理部２３は、フローのＰａｔｈが、物理トポロジ管理部２１が保持する情報に示される境界ポートを通過することを検出する。
【０１１８】
ＯＦＳ管理部２４は、フローのＩｎｇｒｅｓｓに位置するＯＦＳ３０−３に対して、フローエントリに合致したパケットのヘッダを保存するように要求する。
【０１１９】
ＯＦＳ３０−３において、フローエントリ管理部３１は、ＯＦＣ２０−２からパケットヘッダの保存要求を受信すると、当該フローエントリのＡｃｔｉｏｎとしてパケットのヘッダの保存を追加する。
【０１２０】
ＯＦＳ３０−３において、フローエントリ管理部３１は、ＯＦＳ３０−２から受信したパケットがフローエントリに合致する場合、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−４に転送し、当該パケットのヘッダ情報をパケットヘッダ管理部３２に保存する。
【０１２１】
ＯＦＳ３０−４において、フローエントリ管理部３１は、ＯＦＳ３０−３からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをノード２へ転送する。
【０１２２】
統合コントローラ１０は、ＯＦＳ３０−１を経由するフローの表示要求を受信すると、ＯＦＣ２０−１に対して、ＯＦＳ３０−１を経由するフローの取得要求を送信する。
【０１２３】
ＯＦＣ２０−１において、フロー管理部２３は、統合コントローラ１０から指定された条件のフローを検索する。検索で得られたフローではＯＦＳ３０−１に対してパケットヘッダ保存を指示しているため、フロー管理部２３は、ＯＦＳ３０−１に対してフローエントリに合致したパケットヘッダの取得要求を送信する。
【０１２４】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ＯＦＣ２０−１から要求されたフローエントリに合致したパケットヘッダをパケットヘッダ管理部３２から取得し、ＯＦＣ２０−１へ送信する。
【０１２５】
ＯＦＣ２０−１は、フローの情報とＯＦＳ３０−１から取得したパケットヘッダの情報を統合コントローラ１０へ送信する。
【０１２６】
統合コントローラ１０は、ＯＦＣ２０−１から取得したフローのＰａｔｈと境界ポート管理部１２が保持する境界ポートに関する情報から、当該フローがＯＦＳ３０−３へ続くことを検出する。そして、統合コントローラ１０は、ＯＦＣ２０−２へＯＦＳ３０−３を経由するフローの取得要求を送信する。
【０１２７】
ＯＦＣ２０−２において、フロー管理部２３は、統合コントローラ１０から指定された条件に合致するフローを検索する。検索で得られたフローではＯＦＳ３０−３に対してパケットヘッダの保存を指示しているため、フロー管理部２３は、ＯＦＳ３０−３からフローエントリに合致したパケットヘッダを取得し、フローの情報とパケットヘッダの情報を統合コントローラ１０へ送信する。
【０１２８】
統合コントローラ１０が受信したヘッダ情報のうちＯＦＣ２０−２から取得したヘッダ情報は書き換えが行われているが、ＯＦＣ２０−１から取得したヘッダ情報は書き換えが行われていない。そのため、統合コントローラ１０がヘッダ情報を用いてフローを結合することが困難である。また、ＯＦＣ２０−１から取得したフローには、パケットのＳｒｃ  ＭＡＣをＯＦＣ２０−１の仮想ＭＡＣアドレスに変更するというＡｃｔｉｏｎが設定されている。そのため、統合コントローラ１０において、フロー連結部１３は、そのＡｃｔｉｏｎを用いて、ＯＦＣ２０−１から取得したパケットヘッダのＳｒｃ  ＭＡＣをＯＦＣ２０−１の仮想ＭＡＣアドレスに書き換える。なお、ＯＦＳ３０−１が、ヘッダ情報の書き換え後に保存を行う場合は、統合コントローラ１０は、書き換え後のヘッダ情報をＯＦＣ２０−１を介して取得するため書き換えをする必要はない。
【０１２９】
フロー連結部１３は、変更後のパケットヘッダをＯＦＣ２０−２から取得したフローのパケットヘッダと比較する。２つのフローのパケットヘッダが同一であるため、フロー連結部１３は２つのフローを連結して表示する。
【０１３０】
（実施例３）
次に、本実施形態の第３の実施例（実施例３）について説明する。本実施例では、統合コントローラ１０がＯＦＣ２０に対して境界ポートに関する情報だけでなく、隣接ＯＦＣ２０の帯域情報なども送信することにより、ＯＦＣ２０がパケットのシェーピングの設定を効果的に行うことができるようになる。なお、本実施例におけるネットワークシステムの構成には図３および図４に示す構成を用いる。また、境界ポートに関する情報として図５に示す情報を用いる。
【０１３１】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２からそれぞれの制御下にあるＯＦＳ３０−１〜ＯＦＳ３０−４の帯域情報を取得する。
【０１３２】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に図５に示す境界ポートに関する情報を送信する。統合コントローラ１０は、ＯＦＣ２０−１に、パケットの制御ポリシとＯＦＣ２０−１と隣接するＯＦＣ２０−２の帯域情報を送信する。制御ポリシにはパケットのシェーピングの設定を含める。
【０１３３】
ＯＦＣ２０−１は、統合コントローラ１０から境界ポートに関する情報と制御ポリシとＯＦＣ２０−２の帯域情報を受信し、自身の中に保存する。
【０１３４】
ノード１は、Ｅｔｈｅｒ  ｓｒｃがノード１のＭＡＣアドレスであり、Ｅｔｈｅｒ  ｄｓｔがノード２のＭＡＣアドレスであり、Ｓｒｃ  ＩＰがノード１のＩＰアドレスであり、Ｄｓｔ  ＩＰがノード２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０であるパケットをＯＦＳ３０−１へ送信する。
【０１３５】
ＯＦＳ３０−１はノード１からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−１へ送信する。
【０１３６】
ＯＦＣ２０−１において、経路計算部２２は、ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算しフローを生成する。Ｐａｔｈは、「ＯＦＳ３０−１のポートｐ２→ＯＦＳ３０−１のポートｐ１→ＯＦＳ３０−２のポートｐ２→ＯＦＳ３０−２のポートｐ１」となる。
【０１３７】
ＯＦＣ２０−１において、フロー管理部２３は、経路計算部２２が求めたＰａｔｈを経由するフローを生成する。Ｐａｔｈに境界ポートが含まれ、パケットがＯＦＣ２０−２制御下のＯＦＳへ到達することから、ＯＦＣ２０−１のフロー管理部２３は、統合コントローラ１０から受信したＯＦＣ２０−２の帯域情報を参照する。ＯＦＣ２０−１のフロー管理部２３は、ＯＦＣ２０−２の制御下のネットワークの帯域がＯＦＣ２０−１の制御下のネットワークの帯域よりも狭い場合は、フローのＡｃｔｉｏｎとしてパケットのシェーピングの設定を追加する。
【０１３８】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−１とＯＦＳ３０−２に対してフローエントリの設定を指示する。
【０１３９】
ＯＦＳ３０−１とＯＦＳ３０−２は、ＯＦＣ２０−１から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【０１４０】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ノード１からパケットを受信すると、当該フローエントリのＡｃｔｉｏｎとしてパケットのシェーピングを行う。ここでは例として、シェーピングの設定方法について説明したが、シェーピングに限らず、他のＯＦＣ２０へと到達するフローに対してのみ特定の処理を行うことができる。
【０１４１】
（実施例４）
次に、本発明の第４の実施例（実施例４）を説明する。図６は、第１の実施形態の第４の実施例の構成および動作を示す説明図である。なお、本実施例では、境界ポートに関する情報として図５に示す情報を用いる。本実施例では、境界ポートに関する情報を利用することで、例えばＯＦＣ２０がフローに対してＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御を行う場合に、ＱｏＳ用の処理リソースを効率的に利用することが可能となる。
【０１４２】
ＱｏＳ制御は、所定の通信品質を保つための制御を意味する。ＱｏＳ制御は、例えば、パケットやフレームの種類に応じて優先順位を付け、その順位に従ってルーターやスイッチが送信を実行する優先制御である。また、ＱｏＳ制御は、例えば、パケットやフレームの種類ごとに特定の帯域を割り当てたり、所定の上限値または下限値を用いて帯域を制限したりする帯域制御であってもよい。
【０１４３】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に図５に示す境界ポートに関する情報とパケットの制御ポリシを送信する。制御ポリシにはフローに対するＱｏＳ制御に関する設定を含める。
【０１４４】
ＯＦＣ２０−１とＯＦＣ２０−２は、統合コントローラ１０から受信した境界ポートに関する情報と制御ポリシを自身の中に保存する。
【０１４５】
ノード１は、Ｅｔｈｅｒ  ｓｒｃがノード１のＭＡＣアドレスであり、Ｅｔｈｅｒ  ｄｓｔがノード２のＭＡＣアドレスであり、Ｓｒｃ  ＩＰがノード１のＩＰアドレスであり、Ｄｓｔ  ＩＰがノード２のＩＰアドレスであり、ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔが８０であるパケットをＯＦＳ３０−１へ送信する。
【０１４６】
ＯＦＳ３０−１は、ノード１からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−１へ送信する。
【０１４７】
ＯＦＣ２０−１において、経路計算部２２は、ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算しフローを生成する。フローのＰａｔｈは、「ＯＦＳ３０−１のポートｐ２→ＯＦＳ３０−１のポートｐ１→ＯＦＳ３０−２のポートｐ２→ＯＦＳ３０−２のポートｐ１」となる。
【０１４８】
フロー管理部２３は、経路計算部２２が求めたＰａｔｈを経由するフローを生成する。フローのＩｎｇｒｅｓｓ、つまり経路の入口となるポートが境界ポートではないため、フロー管理部２３は制御ポリシに従い、フローのＡｃｔｉｏｎとしてＱｏＳ制御の処理を追加する。
【０１４９】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−１とＯＦＳ３０−２に対してフローエントリの設定を指示する。
【０１５０】
ＯＦＳ３０−１とＯＦＳ３０−２は、ＯＦＣ２０−１から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【０１５１】
ＯＦＳ３０−１において、フローエントリ管理部３１は、ノード１からパケットを受信すると、当該フローエントリのＡｃｔｉｏｎとしてパケットに対してＱｏＳ制御の処理を行い、ＯＦＳ３０−２へパケットを転送する。
【０１５２】
ＯＦＳ３０−２において、フローエントリ管理部３１は、ＯＦＳ３０−１からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−３へ転送する。
【０１５３】
ＯＦＳ３０−３は、ＯＦＳ３０−２からパケットを受信すると、ＰＡＣＫＥＴ＿ＩＮメッセージをＯＦＣ２０−２へ送信する。
【０１５４】
ＯＦＣ２０−２において、経路計算部２２は、ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、物理トポロジ管理部２１が保持する物理トポロジ情報を基にフローのＰａｔｈを計算しフローを生成する。フローのＰａｔｈは「ＯＦＳ３０−３のポートｐ２→ＯＦＳ３０−３のポートｐ１→ＯＦＳ３０−４のポートｐ２→ＯＦＳ３０−４のポートｐ１」となる。
【０１５５】
フロー管理部２３は、経路計算部２２が求めたＰａｔｈを経由するフローを生成する。フローのＩｎｇｒｅｓｓ、つまり経路の入口となるポートが境界ポートであることから、フロー管理部２３は、ＱｏＳ制御は隣接ＯＦＣであるＯＦＣ２０−１で実施済みであると判断し、フローのＡｃｔｉｏｎにＱｏＳ制御の処理を追加しない。
【０１５６】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフローの情報を基に、ＯＦＳ３０−３とＯＦＳ３０−４に対してフローエントリの設定を指示する。
【０１５７】
ＯＦＳ３０−３とＯＦＳ３０−４は、ＯＦＣ２０−２から受信したフローエントリの設定指示に従い、フローエントリを生成し、フローエントリ管理部３１に保存する。
【０１５８】
ＯＦＳ３０−３において、フローエントリ管理部３１は、ＯＦＳ３０−２からパケットを受信すると、当該フローエントリのＡｃｔｉｏｎに従い、当該パケットをＯＦＳ３０−４へ転送する。
【０１５９】
ＯＦＳ３０−４において、フローエントリ管理部３１は、ＯＦＳ３０−３からパケットを受信すると、フローエントリのＡｃｔｉｏｎに従い、当該パケットをノード２へ転送する。
【０１６０】
以上、実施例１および実施例４に係るネットワークシステムをそれぞれ説明したが、本実施形態のネットワークシステムは、実施例１および実施例４における構成または機能を任意に組み合わせたものであってもよい。また、本発明によるネットワークシステムは、ＯｐｅｎＦｌｏｗを用いたネットワークシステムには限定されない。
【０１６１】
実施形態２．
次に、本発明の第２の実施形態を、図面を参照して説明する。本実施形態では、各ドメインのＱｏＳ機能情報と、ドメイン間の境界情報が利用されることによって、ＱｏＳ機能を有するドメインと、ＱｏＳ機能を有していないドメインが混在するネットワークにおける通信が制御される。
【０１６２】
第１の実施形態に記載されているように、統合コントローラは、複数のＯＦＣを集中制御する。統合コントローラは、ＯＦＣに対して仮想ネットワークの設定を指示する。また、統合コントローラは、ＱｏＳ制御用の処理リソースが効率的に使用されるように、フローに対してＱｏＳ処理を行うＯＦＣを制御できる。
【０１６３】
第１の実施形態（実施例４）におけるネットワークシステムは、ＱｏＳ制御用の処理リソースを効率的に使用できる。第１の実施形態において、統合コントローラは、制御するＯＦＣにＱｏＳの制御ポリシと、ＯＦＣ間の境界になるポートの情報を送信する。ＯＦＣは、境界ポートから受信されたパケットにＱｏＳ処理を行わないことを、制御下のスイッチに要求する。
【０１６４】
しかし、第１の実施形態におけるＯＦＣは、境界ポートから受信されたパケットに無条件でＱｏＳ処理を行わないことを、制御下のスイッチに要求する。その結果、統合コントローラが制御する１台目のＯＦＣの制御下にあるＯＦＳがＱｏＳ機能を有さず、２台目のＯＦＣの制御下にあるＯＦＳがＱｏＳ機能を有するネットワークシステムにおいて、境界ポートを流れるパケットにＱｏＳ処理が適用されない場合がある。
【０１６５】
第１の実施形態における境界ポートを流れるパケットにＱｏＳ処理が適用されない具体例を、図７を参照して説明する。図７は、第１の実施形態のネットワークシステムの他の構成を示すブロック図である。
【０１６６】
図７において、ＯＦＣ２０−１は、ＯＦＳ３０−１とＯＦＳ３０−２を制御する。また、ＯＦＣ２０−２は、ＯＦＳ３０−３とＯＦＳ３０−４を制御する。また、統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２を制御する。また、ＯＦＳ３０−１とＯＦＳ３０−２は、それぞれＱｏＳ機能を有していない。また、ＯＦＳ３０−３とＯＦＳ３０−４は、それぞれＱｏＳ機能を有する。
【０１６７】
図７において、ノード１からノード２への通信を実現するフローを作成するために、統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２に、仮想ネットワークの設定要求と境界ポートの情報を送信する。仮想ネットワークの設定要求には、ＱｏＳの設定が含まれる。
【０１６８】
ノード１からノード２にパケットが送信されると、ＯＦＳ３０−１は、ノード１からパケットを受信する。パケットを受信した後、ＯＦＳ３０−１は、ＯＦＣ２０−１にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０１６９】
ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信した後、ＯＦＣ２０−１は、Ｐａｔｈが「ＯＦＳ３０−１のｐ２→ＯＦＳ３０−１のｐ１→ＯＦＳ３０−２のｐ２→ＯＦＳ３０−２のｐ１」であるフローを生成する。ＯＦＳ３０−１とＯＦＳ３０−２はＱｏＳ機能を有していないため、ＯＦＣ２０−１は、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を設定しない。フローを生成した後、ＯＦＣ２０−１は、制御する各ＯＦＳにフローエントリを設定する。
【０１７０】
フローエントリが設定された後、パケットは、ＯＦＳ３０−１およびＯＦＳ３０−２を経由して、ＯＦＳ３０−３に転送される。ＯＦＳ３０−２からパケットを受信すると、ＯＦＳ３０−３は、ＯＦＣ２０−２にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０１７１】
ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信した後、ＯＦＣ２０−２は、Ｐａｔｈが「ＯＦＳ３０−３のｐ２→ＯＦＳ３０−３のｐ１→ＯＦＳ３０−４のｐ２→ＯＦＳ３０−４のｐ１」であるフローを生成する。
【０１７２】
ＯＦＳ３０−３とＯＦＳ３０−４は、それぞれＱｏＳ機能を有する。しかし、ＯＦＳ３０−３が受信したパケットは、境界ポートから受信したパケットである。よって、ＯＦＣ２０−２は、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を設定しない。
【０１７３】
フローを生成した後、ＯＦＣ２０−２は、制御する各ＯＦＳにフローエントリを設定する。フローエントリが設定された後、パケットは、ＯＦＳ３０−３およびＯＦＳ３０−４を経由して、ノード２に転送される。
【０１７４】
上記のように、ＯＦＣ２０−１が生成するフローと、ＯＦＣ２０−２が生成するフローの両方に、ＱｏＳ処理が設定されない。ＱｏＳ処理が設定されないため、フローの経路上にＱｏＳ機能を有するＯＦＳが存在するにも関わらず、パケットに対してＱｏＳ処理が行われない。
【０１７５】
すなわち、ＱｏＳ機能を有するＯＦＳとＱｏＳ機能を有していないＯＦＳが混在する第１の実施形態のネットワークシステムは、パケットに対して適切にＱｏＳ制御を行えない場合がある。
【０１７６】
本実施形態における統合コントローラは、ドメインの機能情報と境界情報を用いて、ＱｏＳ処理が実行されるドメインを決定する。ＱｏＳ処理が実行されるドメインを決定した上で統合コントローラがＯＦＣにＱｏＳ処理に関する制御ポリシを設定することによって、適切なＱｏＳ制御が行われる。
【０１７７】
以下、上記のような課題を解決するためのネットワークシステムの実施形態を、図面を参照して説明する。図８は、本実施形態のネットワークシステムの構成および処理の流れを示す説明図である。図８に示すネットワークシステムの構成は、図１に示すネットワークシステムの構成と同様である。
【０１７８】
図８に示すネットワークシステムに含まれる各構成要素の、第１の実施形態における機能と異なる機能をそれぞれ説明する。本実施形態において、ＯＦＣが制御する範囲ごとに区分けされた範囲をドメインと呼称する。
【０１７９】
統合コントローラ１０は、ＯＦＣ２０−１〜ＯＦＣ２０−２からドメインの機能情報を取得する。ＯＦＣに制御されるＯＦＳが属するドメインをＯＦＣドメインと呼称する。ＯＦＣドメインの機能情報は、ＯＦＣが制御するスイッチのＱｏＳ機能に関する情報を含む。
【０１８０】
統合コントローラ１０は、ＯＦＣ２０−１〜ＯＦＣ２０−２に対して、パケットの制御ポリシと、ドメイン同士が隣接するＯＦＣとの境界情報を送信する。統合コントローラ１０は、ドメインの機能情報と境界情報に基づいて、各ＯＦＣにおける処理内容を決定する。
【０１８１】
処理内容を決定する対象のＯＦＣのＯＦＣドメインに境界ポートが含まれる場合、統合コントローラ１０は、含まれる境界ポートと対をなす境界ポートを含むＯＦＣドメインを決定する。統合コントローラ１０は、決定したＯＦＣドメインに含まれるスイッチのＱｏＳ機能に関する情報を確認する。ＱｏＳ機能に関する情報を確認することによって、統合コントローラ１０は、各ＯＦＣドメインがＱｏＳ機能を有するか否かを判定できる。
【０１８２】
処理内容を決定する対象のＯＦＣのＯＦＣドメインに向けてパケットを転送するスイッチを含むＯＦＣドメインがＱｏＳ機能を有する場合、対象のＯＦＣドメインにおけるＱｏＳ処理は不要になる。よって、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣに送信する制御ポリシに、ＱｏＳ処理を含めない。
【０１８３】
処理内容を決定する対象のＯＦＣのＯＦＣドメインに向けてパケットを転送するスイッチを含むＯＦＣドメインがＱｏＳ機能を有していない場合、対象のＯＦＣドメインにおけるＱｏＳ処理は必要になる。よって、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣに送信する制御ポリシに、ＱｏＳ処理を含める。
【０１８４】
ＯＦＣ２０−１〜ＯＦＣ２０−２は、それぞれが制御する各ＯＦＳからＯｐｅｎＦｌｏｗプロトコルのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、制御ポリシと境界情報に基づいて、フローの情報を生成する。統合コントローラ１０から受信した制御ポリシにＱｏＳ処理が含まれている場合、ＯＦＣ２０−１〜ＯＦＣ２０−２は、フローのＡｃｔｉｏｎにＱｏＳ処理を追加する。
【０１８５】
ＯＦＣ２０−１〜ＯＦＣ２０−２は、生成したフローの情報に基づいて、それぞれが制御する各ＯＦＳにフローエントリを設定する。ＯＦＳ３０−１〜ＯＦＳ３０−４は、ＯＦＣから設定されたフローエントリに従って、パケットを処理する。
【０１８６】
以下、本実施形態における制御ポリシに基づいてコントローラがフローを作成する時の動作を、図８を参照して説明する。
【０１８７】
統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２の境界に相当する境界ポートを検出する（ステップＳ１１）。境界ポートは、統合コントローラ１０に検出されてもよいし、ユーザに設定されてもよい。
【０１８８】
また、統合コントローラ１０は、ＯＦＣ２０−１とＯＦＣ２０−２から、ＯＦＣドメインの機能情報を取得する（ステップＳ１１）。図８に示すように、ＯＦＣ２０−１のＯＦＣドメインであるドメインｄ１は、ＯＦＳ３０−１とＯＦＳ３０−２を含む。また、ＯＦＣ２０−２のＯＦＣドメインであるドメインｄ２は、ＯＦＳ３０−３とＯＦＳ３０−４を含む。
【０１８９】
ＯＦＳ３０−１とＯＦＳ３０−２は、どちらもＱｏＳ機能を有していない。すなわち、ドメインｄ１はＱｏＳ機能を有していない。また、ＯＦＳ３０−３とＯＦＳ３０−４は、それぞれＱｏＳ機能を有する。すなわち、ドメインｄ２は、ＱｏＳ機能を有する。
【０１９０】
統合コントローラ１０は、制御対象であるＯＦＣ２０−１とＯＦＣ２０−２に対して、仮想ネットワークの制御ポリシと、境界情報である境界ポートの情報をそれぞれ送信する（ステップＳ１２）。ドメインｄ２はＱｏＳ機能を有するため、ＯＦＣ２０−２に送信される制御ポリシには、ＱｏＳ処理を実行するというＱｏＳの設定が含まれる。
【０１９１】
ノード１は、宛先がノード２であるパケットをＯＦＳ３０−１に送信する（ステップＳ１３）。ＯＦＳ３０−１は、ノード１からパケットを受信する。次いで、ＯＦＳ３０−１は、ＯＦＣ２０−１にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０１９２】
ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−１は、内部に保存されている設定情報と、統合コントローラ１０から受信した境界情報に基づいて、経路を計算する。ＯＦＣ２０−１は、計算された経路に基づいて、フロー情報を生成する（ステップＳ１４）。統合コントローラ１０から受信した制御ポリシに、ＱｏＳ処理を実行しないというＱｏＳの設定が含まれているため、ＯＦＣ２０−１は、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を追加しない。
【０１９３】
ＯＦＣ２０−１は、計算された経路に存在するＯＦＳ３０−１とＯＦＳ３０−２にフローエントリを設定する（ステップＳ１５）。ＯＦＳ３０−１は、ＯＦＣ２０−１により設定されたフローエントリに従って、ノード１から受信したパケットをＯＦＳ３０−２に転送する。ＯＦＳ３０−２は、ＯＦＣ２０−１により設定されたフローエントリに従って、ＯＦＳ３０−１から受信したパケットをＯＦＳ３０−３に転送する。
【０１９４】
ＯＦＳ３０−２からパケットを受信すると、ＯＦＳ３０−３は、ＯＦＣ２０−２にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０１９５】
ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−２は、内部に保存されている設定情報と、統合コントローラ１０から受信した境界情報に基づいて、経路を計算する。ＯＦＣ２０−２は、計算された経路に基づいて、フロー情報を生成する（ステップＳ１６）。統合コントローラ１０から受信した制御ポリシに、ＱｏＳ処理を実行するというＱｏＳの設定が含まれているため、ＯＦＣ２０−２は、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を追加する。
【０１９６】
ＯＦＣ２０−２は、計算された経路に存在するＯＦＳ３０−３とＯＦＳ３０−４にフローエントリを設定する（ステップＳ１７）。ＯＦＳ３０−３は、ＯＦＣ２０−２により設定されたフローエントリに「ＱｏＳ処理の実行」が記載されていれば、ＯＦＳ３０−２から受信したパケットに対してＱｏＳ処理を行う。ＱｏＳ処理を行った後、ＱＦＳ３０−３は、パケットをＯＦＳ３０−４に転送する。
【０１９７】
ＯＦＳ３０−４は、ＯＦＣ２０−２により設定されたフローエントリに「ＱｏＳ処理の実行」が記載されていれば、ＯＦＳ３０−３から受信したパケットに対してＱｏＳ処理を行う。ＱｏＳ処理を行った後、ＱＦＳ３０−４は、パケットをノード２に転送する。パケットがノード２に転送された後、ネットワークシステムは、処理を終了する。
【０１９８】
（実施例１）
次に、本実施形態のネットワークシステムの第１の実施例（実施例１）を説明する。図９は、第２の実施形態の第１の実施例におけるネットワークシステムの詳細な構成を示すブロック図である。図９は、ネットワークシステムにおける統合コントローラ１０、ＯＦＣ２０、ＯＦＳ３０の具体的な構成を示す。
【０１９９】
図３に示すネットワークシステムの構成と比較すると、図９に示すネットワークシステムの構成は、統合コントローラ１０がフロー連結部１３の代わりにドメイン管理部１４を含む点が異なる。また、ＯＦＳ３０がパケットヘッダ管理部３２を含まない点が異なる。
【０２００】
フロー連結部１３、ドメイン管理部１４およびパケットヘッダ管理部３２以外の図９に示すネットワークシステムの構成は、図３に示すネットワークシステムの構成と同様である。なお、本実施形態においても、統合コントローラ１０はフロー連結部１３を含んでもよく、ＯＦＳ３０はパケットヘッダ管理部３２を含んでもよい。
【０２０１】
境界ポート管理部１２は、ドメインの境界に相当する、ＯＦＳ３０のポートの情報を管理する。
【０２０２】
ドメイン管理部１４は、ドメインの機能情報を管理する機能を有する。すなわち、ドメイン管理部１４は、対応する範囲を示す範囲情報と共にドメインの機能情報を保存する。ドメインの機能情報は、統合コントローラ１０によりＯＦＣ２０から取得される。ＯＦＣ２０から取得されるドメインの機能情報は、ＯＦＣ２０のＯＦＣドメインの機能情報である。なお、ドメインの機能情報は、ユーザにより設定されてもよい。
【０２０３】
次に、本実施例のネットワークシステムの動作を説明する。本実施例において、統合コントローラ１０は、ＯＦＣ２０を制御し、パケットの制御ポリシをＯＦＣ２０に設定する。
【０２０４】
統合コントローラ１０におけるＯＦＣ管理部１１は、ユーザから指定されたＯＦＣ２０の情報を保存する。ドメイン管理部１４は、ＯＦＣ２０からドメインの機能情報を取得し、取得した情報を保存する。ドメインの機能情報は、ＯＦＣ２０のＯＦＣドメインにおいて、ＱｏＳ処理が行われる、またはＱｏＳ処理が行われないという情報を含む。
【０２０５】
境界ポート管理部１２は、複数のＯＦＣ２０の境界に相当するＯＦＳ３０のポートの情報を保存する。境界に相当するＯＦＳ３０のポートは、ユーザに設定されてもよいし、統合コントローラ１０に検出されてもよい。境界ポート管理部１２は、境界に相当するＯＦＳ３０のポートである境界ポートの情報を、ＯＦＣ２０に送信する。
【０２０６】
ＯＦＣ管理部１１は、ドメイン管理部１４が保持するドメインの機能情報と、境界ポート管理部１２が保持する境界ポートの情報に基づいて、制御ポリシを決定する。ＯＦＣ管理部１１は、決定した制御ポリシを、ＯＦＣ２０に送信する。
【０２０７】
ＯＦＣ２０における物理トポロジ管理部２１は、ＯＦＳ３０から取得したＯＦＳのポート情報と、ＯＦＣ２０が検出したＯＦＳ間のリンク情報を保存する。また、物理トポロジ管理部２１は、統合コントローラ１０から受信した境界ポートの情報を保存する。
【０２０８】
経路計算部２２は、ＯＦＳ３０からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、統合コントローラ１０から設定された制御ポリシと、物理トポロジ管理部２１が保持する物理トポロジ情報に基づいて、パケットの経路を計算する。
【０２０９】
フロー管理部２３は、経路計算部２２が算出した経路と制御ポリシに基づいて、フロー情報を生成する。フロー管理部２３は、生成したフロー情報を内部に保存する。
【０２１０】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフロー情報に基づいて、フローが経由するＯＦＳ３０に設定するフローエントリを導出する。次いで、ＯＦＳ管理部２４は、導出したフローエントリの設定対象であるＯＦＳ３０に、導出したフローエントリの設定を指示する。具体的には、ＯＦＳ管理部２４は、ＯＦＳ３０にフローエントリの設定要求を送信する。
【０２１１】
ＯＦＳ３０におけるフローエントリ管理部３１は、ＯＦＣ２０からフローエントリの設定要求を受信すると、設定を要求されたフローエントリを設定する。
【０２１２】
ＯＦＳ３０は、ＯＦＳ３０に接続されているノードからパケットを受信すると、受信したパケットのパケットヘッダに指定されている情報が、フローエントリ管理部３１が保持するフローエントリのＭａｔｃｈ条件に合致するか否かを確認する。
【０２１３】
パケットヘッダに指定されている情報がＭａｔｃｈ条件に合致するパケットである場合、ＯＦＳ３０は、該当のＭａｔｃｈ条件を含むフローエントリに設定されているＡｃｔｉｏｎを実行する。ＡｃｔｉｏｎにＱｏＳ処理が設定されている場合、ＯＦＳ３０は、パケットに対してＱｏＳ処理を行う。
【０２１４】
本実施例の統合コントローラ１０による制御ポリシのＯＦＣ２０への設定処理を説明する。以下、図８に示す統合コントローラ１０がＯＦＣ２０−１とＯＦＣ２０−２に対して制御ポリシを設定する場合の動作を説明する。
【０２１５】
図８に示す統合コントローラ１０は、図９に示す統合コントローラ１０に相当する。図８に示すＯＦＣ２０−１およびＯＦＣ２０−２は、図９に示すＯＦＣ２０に相当する。図８に示すＯＦＳ３０−１〜ＯＦＳ３０−４は、図９に示すＯＦＳ３０に相当する。
【０２１６】
統合コントローラ１０は、ＯＦＣ２０−１のＯＦＣドメインであるドメインｄ１に隣接するドメインｄ２の機能情報に基づいて、ＯＦＣ２０−１が生成するフローの方向ごとにドメインｄ１におけるＱｏＳ処理の実行を決定する。
【０２１７】
統合コントローラ１０が決定したドメインｄ１におけるＱｏＳ処理を示すＱｏＳ処理情報の例を図１０に示す。図１０は、第２の実施形態の第１の実施例のＱｏＳ処理情報の例を示す説明図である。図１０に示すＱｏＳ処理情報は、ドメインｄ２の機能と、フローの方向と、Ａｃｔｉｏｎとで構成される。
【０２１８】
ドメインｄ２の機能は、ドメインｄ２におけるＱｏＳ機能の有無を示す。フローの方向は、ＯＦＣ２０−１で生成されるフローの方向を示す。Ａｃｔｉｏｎは、ドメインｄ１におけるＱｏＳ処理の実行に関する規則を示す。
【０２１９】
ドメインｄ２がＱｏＳ機能を有する場合、ドメインｄ２からドメインｄ１に入力されるフローは、既にドメインｄ２でＱｏＳ処理が行われている。よって、図１０に示すように、統合コントローラ１０は、ＯＦＣ２０−１を、ドメインｄ２から入力されるフローにＱｏＳ処理を行わないように制御することを決定する。
【０２２０】
ドメインｄ２がＱｏＳ機能を有していない場合、ドメインｄ２からドメインｄ１に入力されるフローは、ドメインｄ２でＱｏＳ処理が行われていない。よって、図１０に示すように、統合コントローラ１０は、ＯＦＣ２０−１を、ドメインｄ２から入力されるフローにＱｏＳ処理を行うように制御することを決定する。
【０２２１】
図１０に示すように、統合コントローラ１０は、ＯＦＣ２０−１を、ドメインｄ１からドメインｄ２に出力するフローにもＱｏＳ処理を行うように制御することを決定する。
【０２２２】
しかし、ドメインｄ１からドメインｄ２に出力するフローが、ＱｏＳ機能を有する別のドメインからドメインｄ１に入力されたフローである場合、既に別のドメインでフローに対するＱｏＳ処理が行われている。既にＱｏＳ処理が行われている場合、統合コントローラ１０は、ＯＦＣ２０−１を、ドメインｄ２に出力するフローにＱｏＳ処理を行わないように制御することを決定する。統合コントローラ１０は、決定された上記の内容を含む制御ポリシをＯＦＣ２０−１に送信する。
【０２２３】
同様に、統合コントローラ１０は、ＯＦＣ２０−２のＯＦＣドメインであるドメインｄ２に隣接するドメインｄ１の機能情報に基づいて、ＯＦＣ２０−２が生成するフローの方向ごとにドメインｄ２におけるＱｏＳ処理の実行を決定する。
【０２２４】
統合コントローラ１０が決定したドメインｄ２におけるＱｏＳ処理を示すＱｏＳ処理情報の例を図１１に示す。図１１は、第２の実施形態の第１の実施例のＱｏＳ処理情報の他の例を示す説明図である。図１１に示すＱｏＳ処理情報は、ドメインｄ１の機能と、フローの方向と、Ａｃｔｉｏｎとで構成される。
【０２２５】
ドメインｄ１の機能は、ドメインｄ１におけるＱｏＳ機能の有無を示す。フローの方向は、ＯＦＣ２０−２で生成されるフローの方向を示す。Ａｃｔｉｏｎは、ドメインｄ２におけるＱｏＳ処理の実行に関する規則を示す。
【０２２６】
ドメインｄ１がＱｏＳ機能を有する場合、ドメインｄ１からドメインｄ２に入力されるフローは、既にドメインｄ１でＱｏＳ処理が行われている。よって、図１１に示すように、統合コントローラ１０は、ＯＦＣ２０−２を、ドメインｄ１から入力されるフローにＱｏＳ処理を行わないように制御することを決定する。
【０２２７】
ドメインｄ１がＱｏＳ機能を有していない場合、ドメインｄ１からドメインｄ２に入力されるフローは、ドメインｄ１でＱｏＳ処理が行われていない。よって、図１１に示すように、統合コントローラ１０は、ＯＦＣ２０−２を、ドメインｄ１から入力されるフローにＱｏＳ処理を行うように制御することを決定する。
【０２２８】
図１１に示すように、統合コントローラ１０は、ＯＦＣ２０−２を、ドメインｄ２からドメインｄ１に出力するフローにもＱｏＳ処理を行うように制御することを決定する。
【０２２９】
しかし、ドメインｄ２からドメインｄ１に出力するフローが、ＱｏＳ機能を有する別のドメインからドメインｄ２に入力されたフローである場合、既に別のドメインでフローに対するＱｏＳ処理が行われている。既にＱｏＳ処理が行われている場合、統合コントローラ１０は、ＯＦＣ２０−２を、ドメインｄ１に出力するフローにＱｏＳ処理を行わないように制御することを決定する。統合コントローラ１０は、決定された上記の内容を含む制御ポリシをＯＦＣ２０−２に送信する。
【０２３０】
次に、本実施形態における統合コントローラ１０がＯＦＣ２０に制御ポリシを設定する時の動作を図１２を参照して具体的に説明する。図１２は、本実施形態の統合コントローラ１０の動作を示すフローチャートである。
【０２３１】
統合コントローラ１０は、ＯＦＣ２０のＯＦＣドメインがＱｏＳ機能を有するか否かを確認する（ステップＳ２０）。
【０２３２】
ＯＦＣ２０のＯＦＣドメインがＱｏＳ機能を有していない場合（ステップＳ２０におけるＹＥＳ）、ＯＦＣドメインにおいてＱｏＳ処理は行われない。よって、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣ２０に対して、フローへのＱｏＳ処理を行わないという制御内容を含む制御ポリシを送信する（ステップＳ２３）。制御ポリシを送信した後、統合コントローラ１０は、処理を終了する。
【０２３３】
ＯＦＣ２０のＯＦＣドメインがＱｏＳ機能を有する場合（ステップＳ２０におけるＮＯ）、統合コントローラ１０は、ＯＦＣドメインに隣接するドメインがＱｏＳ機能を有するか否かを確認する（ステップＳ２１）。
【０２３４】
隣接するドメインがＱｏＳ機能を有していない場合（ステップＳ２１におけるＹＥＳ）、隣接するドメインにおいてＱｏＳ処理は行われない。よって、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣ２０に対して、フローへのＱｏＳ処理を行うという制御内容を含む制御ポリシを送信する（ステップＳ２４）。制御ポリシを送信した後、統合コントローラ１０は、処理を終了する。
【０２３５】
ただし、図１０および図１１に示すように、ＯＦＣドメインに入力されたフローが、ＱｏＳ機能を有する別のドメインからＯＦＣドメインに入力され、隣接するドメインに出力するフローである場合、既にフローへのＱｏＳ処理が行われている。ＱｏＳ処理が行われている場合、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣ２０に対して、フローへのＱｏＳ処理を行わないという制御内容を含む制御ポリシを送信する。
【０２３６】
隣接するドメインがＱｏＳ機能を有する場合（ステップＳ２１におけるＮＯ）、統合コントローラ１０は、ＯＦＣドメインにおけるフローの方向を確認する（ステップＳ２２）。
【０２３７】
ＯＦＣドメインにおけるフローが隣接するドメインからＯＦＣドメインに入力されたフローである場合（ステップＳ２２におけるＹＥＳ）、既に隣接するドメインにおいてフローへのＱｏＳ処理が行われている。ＱｏＳ処理が行われている場合、統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣ２０に対して、フローへのＱｏＳ処理を行わないという制御内容を含む制御ポリシを送信する（ステップＳ２３）。制御ポリシを送信した後、統合コントローラ１０は、処理を終了する。
【０２３８】
ＯＦＣドメインにおけるフローがＯＦＣドメインから隣接するドメインに出力するフローである場合（ステップＳ２２におけるＮＯ）、統合コントローラ１０は、隣接するドメインにおけるＱｏＳ処理が不要になるような制御ポリシを送信する。統合コントローラ１０は、ＯＦＣドメインに対応するＯＦＣ２０に対して、フローへのＱｏＳ処理を行うという制御内容を含む制御ポリシを送信する（ステップＳ２４）。制御ポリシを送信した後、統合コントローラ１０は、処理を終了する。
【０２３９】
（実施例２）
次に、本実施形態のネットワークシステムの第２の実施例（実施例２）を説明する。図１３は、第２の実施形態の第２の実施例におけるネットワークシステムの構成を示すブロック図である。
【０２４０】
図１３に示すネットワークシステムの構成は、図８に示すネットワークシステムの構成と比較して、ＯＦＣ２０−３とＯＦＳ３０−５〜ＯＦＳ３０−６が追加されている点が異なる。図１３に示すネットワークシステムは、ＯＦＣ２０を３台含む。
【０２４１】
図１３に示す統合コントローラ１０は、図９に示す統合コントローラ１０に相当する。図１３に示すＯＦＣ２０−１〜ＯＦＣ２０−３は、図９に示すＯＦＣ２０に相当する。図１３に示すＯＦＳ３０−１〜ＯＦＳ３０−６は、図９に示すＯＦＳ３０に相当する。
【０２４２】
図１３において、統合コントローラ１０は、ＯＦＣ２０−１〜ＯＦＣ２０−３を制御する。また、ＯＦＣ２０−１は、ＯＦＳ３０−１とＯＦＳ３０−２を制御する。また、ＯＦＣ２０−２は、ＯＦＳ３０−３とＯＦＳ３０−４を制御する。また、ＯＦＣ２０−３は、ＯＦＳ３０−５とＯＦＳ３０−６を制御する。すなわち、図１３に示すように、ＯＦＣ２０−１、ＯＦＣ２０−２およびＯＦＣ２０−３のＯＦＣドメインは、それぞれドメインｄ１、ドメインｄ２およびドメインｄ３である。
【０２４３】
図１３において、ＯＦＳ３０−１とＯＦＳ３０−２は、それぞれＱｏＳ機能を有していない。また、ＯＦＳ３０−３〜ＯＦＳ３０−６は、それぞれＱｏＳ機能を有する。すなわち、ドメインｄ１は、ＱｏＳ機能を有していない。また、ドメインｄ２とドメインｄ３は、それぞれＱｏＳ機能を有する。
【０２４４】
統合コントローラ１０におけるＯＦＣ管理部１１は、ユーザから指定されたＯＦＣ２０の情報を保存する。
【０２４５】
ドメイン管理部１４は、ＯＦＣ２０−１からドメインｄ１の機能情報を取得する。また、ドメイン管理部１４は、ＯＦＣ２０−２からドメインｄ２の機能情報を取得する。また、ドメイン管理部１４は、ＯＦＣ２０−３からドメインｄ３の機能情報を取得する。ドメイン管理部１４は、取得した情報を内部に保存する。
【０２４６】
ドメインｄ１の機能情報は、ドメインｄ１がＱｏＳ機能を有していないという情報を含む。ドメインｄ２の機能情報は、ドメインｄ２がＱｏＳ機能を有するという情報を含む。ドメインｄ３の機能情報は、ドメインｄ３がＱｏＳ機能を有するという情報を含む。
【０２４７】
境界ポート管理部１２は、複数のＯＦＣ２０の境界に相当するＯＦＳ３０のポートの情報を保存する。境界に相当するＯＦＳ３０のポートは、ユーザに設定されてもよいし、統合コントローラ１０に検出されてもよい。
【０２４８】
境界ポート管理部１２は、境界ポートの情報をＯＦＣ２０−１〜ＯＦＣ２０−３に送信する。ＯＦＣ管理部１１は、ドメイン管理部１４が保持するドメインの機能情報と、境界ポート管理部１２が保持する境界ポートの情報に基づいて、各ＯＦＣに設定する制御ポリシを決定する。ＯＦＣ管理部１１は、決定した各制御ポリシを、ＯＦＣ２０−１〜ＯＦＣ２０−３にそれぞれ送信する。
【０２４９】
ドメインｄ１はＱｏＳ機能を有していないため、ＯＦＣ管理部１１は、ＯＦＣ２０−１に設定する制御ポリシに、ＱｏＳ処理を実行しないというＱｏＳの設定を含める。
【０２５０】
ドメインｄ２は、ＱｏＳ機能を有する。ＯＦＣ管理部１１は、ＯＦＣ２０−２に設定する制御ポリシに、ドメインｄ１から入力されドメインｄ３に出力するフローにＱｏＳ処理を実行し、ドメインｄ３から入力されドメインｄ１に出力するフローにＱｏＳ処理を実行しないというＱｏＳの設定を含める。
【０２５１】
ドメインｄ３は、ＱｏＳ機能を有する。ＯＦＣ管理部１１は、ＯＦＣ２０−３に設定する制御ポリシに、ドメインｄ２から入力されるフローにＱｏＳ処理を実行せず、ドメインｄ２に出力するフローにＱｏＳ処理を実行するというＱｏＳの設定を含める。
【０２５２】
ＯＦＣ２０−１〜ＯＦＣ２０−３における各物理トポロジ管理部２１は、統合コントローラ１０から受信した制御ポリシと境界ポートの情報を保存する。
【０２５３】
ノード１は、宛先がノード２であるパケットをＯＦＳ３０−１に送信する。ＯＦＳ３０−１は、ノード１からパケットを受信する。次いで、ＯＦＳ３０−１は、ＯＦＣ２０−１にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０２５４】
ＯＦＳ３０−１からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−１における経路計算部２２は、統合コントローラ１０から受信した制御ポリシと、物理トポロジ管理部２１が保持する物理トポロジ情報に基づいて、パケットの経路を計算する。
【０２５５】
フロー管理部２３は、経路計算部２２が算出した経路と制御ポリシに基づいて、フロー情報を生成する。フロー管理部２３は、生成したフロー情報を内部に保存する。統合コントローラ１０から受信された制御ポリシはＱｏＳ処理を実行しないことを示すため、フロー管理部２３は、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を設定しない。
【０２５６】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフロー情報に基づいて、フローエントリを導出する。次いで、ＯＦＳ管理部２４は、ＯＦＳ３０−１とＯＦＳ３０−２に、導出されたフローエントリの設定を指示する。
【０２５７】
ＯＦＳ３０−１は、設定されたフローエントリに従って、受信したパケットをＯＦＳ３０−２に転送する。ＯＦＳ３０−１からパケットを受信すると、ＯＦＳ３０−２は、設定されたフローエントリに従って、受信したパケットをＯＦＳ３０−３に転送する。
【０２５８】
ＯＦＳ３０−２からパケットを受信すると、ＯＦＳ３０−３は、ＯＦＣ２０−２にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０２５９】
ＯＦＳ３０−３からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−２における経路計算部２２は、統合コントローラ１０から受信した制御ポリシと、物理トポロジ管理部２１が保持する物理トポロジ情報に基づいて、パケットの経路を計算する。
【０２６０】
フロー管理部２３は、経路計算部２２が算出した経路と制御ポリシに基づいて、フロー情報を生成する。
【０２６１】
フローのＩｎｇｒｅｓｓポートが境界ポートであることから、フロー管理部２３が生成するフローは、ドメインｄ１から入力されるフローである。よって、フロー管理部２３は、統合コントローラ１０から受信した制御ポリシの内容に従って、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を追加する。
【０２６２】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフロー情報に基づいて、フローエントリを導出する。次いで、ＯＦＳ管理部２４は、ＯＦＳ３０−３とＯＦＳ３０−４に、導出されたフローエントリの設定を指示する。
【０２６３】
図１３に示す例では、ＯＦＳ３０−３に設定されるフローエントリにＱｏＳ処理がＡｃｔｉｏｎとして追加され、ＯＦＳ３０−４に設定されるフローエントリにＱｏＳ処理がＡｃｔｉｏｎとして追加されなかったとする。
【０２６４】
なお、ＱｏＳ処理の設定は上記の設定に限られず、例えば、ＯＦＳ３０−３に設定されるフローエントリにＱｏＳ処理がＡｃｔｉｏｎとして追加されず、ＯＦＳ３０−４に設定されるフローエントリにＱｏＳ処理がＡｃｔｉｏｎとして追加されてもよい。また、ＯＦＳ３０−３およびＯＦＳ３０−４に設定される両方のフローエントリにＱｏＳ処理がＡｃｔｉｏｎとして追加されてもよい。
【０２６５】
ＯＦＳ３０−３は、設定されたフローエントリに従って、受信したパケットにＱｏＳ処理を実行する。ＯＦＳ３０−３は、設定されたフローエントリに従って、ＱｏＳ処理が適用されたパケットをＯＦＳ３０−４に転送する。ＯＦＳ３０−３からパケットを受信すると、ＯＦＳ３０−４は、設定されたフローエントリに従って、受信したパケットをＯＦＳ３０−５に転送する。
【０２６６】
ＯＦＳ３０−４からパケットを受信すると、ＯＦＳ３０−５は、ＯＦＣ２０−３にＰＡＣＫＥＴ＿ＩＮメッセージを送信する。
【０２６７】
ＯＦＳ３０−５からＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、ＯＦＣ２０−３における経路計算部２２は、統合コントローラ１０から受信した制御ポリシと、物理トポロジ管理部２１が保持する物理トポロジ情報に基づいて、パケットの経路を計算する。
【０２６８】
フロー管理部２３は、経路計算部２２が算出した経路と制御ポリシに基づいて、フロー情報を生成する。
【０２６９】
フローのＩｎｇｒｅｓｓポートが境界ポートであることから、フロー管理部２３が生成するフローは、ドメインｄ２から入力されるフローである。よって、フロー管理部２３は、統合コントローラ１０から受信した制御ポリシの内容に従って、生成するフローのＡｃｔｉｏｎにＱｏＳ処理を追加しない。
【０２７０】
ＯＦＳ管理部２４は、フロー管理部２３が生成したフロー情報に基づいて、フローエントリを導出する。次いで、ＯＦＳ管理部２４は、ＯＦＳ３０−５とＯＦＳ３０−６に、導出されたフローエントリの設定を指示する。
【０２７１】
ＯＦＳ３０−５は、設定されたフローエントリに従って、受信したパケットをＯＦＳ３０−６に転送する。ＯＦＳ３０−５からパケットを受信すると、ＯＦＳ３０−６は、設定されたフローエントリに従って、受信したパケットをノード２に転送する。ＱｏＳ処理が適用されたパケットがノード２に転送された後、ネットワークシステムは、処理を終了する。
【０２７２】
以上、実施例１および実施例２に係るネットワークシステムをそれぞれ説明したが、本実施形態のネットワークシステムは、実施例１および実施例２における構成または機能を任意に組み合わせたものであってもよい。また、本発明によるネットワークシステムは、ＯｐｅｎＦｌｏｗを用いたネットワークシステムには限定されない。
【０２７３】
本実施形態における、ＱｏＳ機能を有するドメインとＱｏＳ機能を有していないドメインが混在するネットワークシステムにおいて、統合コントローラは、各ドメインのＱｏＳ機能情報とドメイン間の境界情報を利用する。ＱｏＳ機能情報とドメイン間の境界情報を利用することによって、統合コントローラは、適切なドメインにおいてフローに対するＱｏＳ処理が実行されるようにコントローラを制御できる。その結果、ネットワークシステム全体におけるＱｏＳリソースが効率的に使用される。
【０２７４】
図１４は、本発明によるネットワークシステムの主要部の構成を示す説明図である。図１４に示すように、本発明によるネットワークシステムは、複数のスイッチ３００を制御するコントローラ２００と、複数のコントローラ２００を制御する統合コントローラ１００とを備える。統合コントローラ１００は、コントローラ２００の制御範囲、および制御範囲における所定の処理を実行するスイッチ３００である所定スイッチの存在の有無を示す制御範囲情報を保存し、所定スイッチが存在することを示す制御範囲情報に対応するコントローラ２００に、コントローラ２００の制御範囲に隣接し、所定スイッチが存在する制御範囲におけるスイッチ３００から転送されたパケットに所定の処理を実行しない設定を送信する。設定を受信したコントローラ２００は、制御下にある所定スイッチにパケットに対して所定の処理を実行しない要求を送信する。
【０２７５】
また、上記の各実施形態には、以下の（１）〜（１０）に記載されたネットワークシステムも開示されている。
【０２７６】
（１）複数のスイッチ（例えば、ＯＦＳ３０−１〜ＯＦＳ３０−４）を制御するコントローラ（例えば、ＯＦＣ２０−１またはＯＦＣ２０−２）と、複数のコントローラを制御する統合コントローラ（例えば、統合コントローラ１０）とを備えたネットワークシステムであって、統合コントローラは、コントローラの制御範囲、および制御範囲における所定の処理を実行するスイッチである所定スイッチの存在の有無を示す制御範囲情報を保存し、所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、コントローラの制御範囲に隣接し、所定スイッチが存在する制御範囲におけるスイッチから転送されたパケットに所定の処理を実行しない設定を送信し、設定を受信したコントローラは、制御下にある所定スイッチにパケットに対して所定の処理を実行しない要求を送信することを特徴とするネットワークシステム。
【０２７７】
（２）ネットワークシステムは、統合コントローラが、所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、コントローラの制御範囲に隣接し、所定スイッチが存在しない制御範囲におけるスイッチから転送されたパケットに所定の処理を実行する設定を送信し、コントローラが、制御下にある所定スイッチにパケットに対して所定の処理を実行する要求を送信するように構成されていてもよい。このようなネットワークシステムによれば、パケットに対してＱｏＳ処理が実行されないことを防ぐことができる。
【０２７８】
（３）ネットワークシステムは、統合コントローラが、所定スイッチが存在することを示す制御範囲情報に対応するコントローラに、コントローラの制御範囲におけるスイッチに接続するノードから送信されたパケットに所定の処理を実行する設定を送信し、コントローラが、制御下にある所定スイッチにパケットに対して所定の処理を実行する要求を送信するように構成されていてもよい。このようなネットワークシステムによれば、ＱｏＳ機能を有するドメインにおいて確実にＱｏＳ処理が実行される。
【０２７９】
（４）所定の処理は、所定の通信品質を保つ制御処理でもよい。このようなネットワークシステムによれば、異なるコントローラの制御下にあるネットワークを跨いで送信されたパケットに対してＱｏＳ処理が適切に実行される。
【０２８０】
（５）ネットワークシステムは、統合コントローラが、一のコントローラの制御下にあるスイッチに他のコントローラの制御下にあるスイッチからのパケットを送信するためのポートである境界ポート（例えば、ＯＦＳ３０−２のポートｐ１、またはＯＦＳ３０−３のポートｐ２）に関する情報を、複数のコントローラに送信し、コントローラが、制御下にあるスイッチに送られたパケットの経路に境界ポートが含まれる場合に、境界ポートに関する情報に応じた要求をスイッチに送信するように構成されていてもよい。このようなネットワークシステムによれば、異なるコントローラの制御下にあるネットワークを跨いでパケットが送信された際に適切な動作をすることができる。
【０２８１】
（６）ネットワークシステムは、コントローラが、制御下にあるスイッチに送られたパケットの経路に境界ポート（例えば、ＯＦＳ３０−２のポートｐ１、またはＯＦＳ３０−３のポートｐ２）が含まれる場合に、当該パケットのヘッダ情報を保存する要求をスイッチに送信し、統合コントローラが、複数のコントローラを介してヘッダ情報を受信し、当該ヘッダ情報を用いて、異なるコントローラの制御下にあるフローを結合して表示するように構成されていてもよい。このようなネットワークシステムによれば、複数のコントローラの制御下を跨るフローを容易に確認することができる。
【０２８２】
（７）ネットワークシステムは、コントローラ（例えば、ＯＦＣ２０−１）が、制御下にあるスイッチに送られたパケットの経路に境界ポート（例えば、ＯＦＳ３０−２のポートｐ１）が含まれ、当該パケットの宛先が他のコントローラ（例えば、ＯＦＣ２０−２）の制御下にあるノード（例えば、ノード２）である場合に、当該パケットのヘッダ情報の少なくとも一部を書き換える要求をスイッチに送信するように構成されていてもよい。このようなネットワークシステムによれば、例えば、パケットの宛先に応じて送信元情報などを変更することができる。
【０２８３】
（８）ネットワークシステムは、コントローラ（例えば、ＯＦＣ２０−１またはＯＦＣ２０−１）が、制御下にあるスイッチに送られたパケットの経路に境界ポート（例えば、ＯＦＳ３０−２のポートｐ１、またはＯＦＳ３０−３のポートｐ２）が含まれる場合に、当該パケットのヘッダ情報を保存する要求をスイッチに送信し、制御下にあるスイッチに送られたパケットの経路に境界ポート（例えば、ＯＦＳ３０−２のポートｐ１）が含まれ、当該パケットの宛先が他のコントローラ（例えば、ＯＦＣ２０−２）の制御下にあるノードである場合に、当該パケットのヘッダ情報の少なくとも一部を書き換える要求をスイッチに送信し、統合コントローラは、複数のコントローラを介してフローの情報およびヘッダ情報を受信し、ヘッダ情報のうち書き換えがされていないヘッダ情報（例えば、ＯＦＣ２０−１から取得したヘッダ情報）に、フローの情報に含まれるＡｃｔｉｏｎを用いて要求における書き換えと同様の書き換えを行い、ヘッダ情報を用いて異なるコントローラの制御下にあるフローを結合して表示する。このようなネットワークシステムによれば、一方のコントローラから取得したヘッダ情報が書き換えられていた場合でも、統合コントローラが、書き換えがされていないヘッダ情報に同様の書き換えをするので、ヘッダ情報を一致させることができ、容易にフローを結合することができる。
【０２８４】
（９）ネットワークシステムは、統合コントローラが、コントローラから制御下のネットワークにおける帯域情報を取得し、当該コントローラ以外のコントローラに当該帯域情報を送信し、コントローラ（例えば、ＯＦＣ２０−１）が、制御下にあるスイッチに送られたパケットの経路に境界ポート（例えば、ＯＦＳ３０−２のポートｐ１）が含まれ、当該パケットの宛先が他のコントローラ（例えば、ＯＦＣ２０−２）の制御下にあるノード（例えば、ノード２）である場合、スイッチが属するネットワークの帯域より、ノードが属するネットワークの帯域が狭い場合は、スイッチにパケットをシェーピングする要求を送信するように構成されていてもよい。このようなネットワークシステムによれば、他のコントローラの制御下にあるノードにパケットを送信する際の遅延を抑制することができる。
【０２８５】
（１０）ネットワークシステムは、統合コントローラが、コントローラに、所定の通信品質を保つための制御であるＱｏＳ制御に関する設定を送信し、コントローラが（例えば、ＯＦＣ２０−１またはＯＦＣ２０−２）、制御下にあるスイッチ（例えば、ＯＦＳ３０−１またはＯＦＳ３０−３）に送られたパケットの経路が、境界ポート（例えば、ＯＦＳ３０−２のポートｐ１またはＯＦＳ３０−３のポートｐ２）を通過する場合、制御下のネットワークにおける当該パケットのフローの入口となるポート（例えば、ＯＦＳ３０−１のポートｐ２）が境界ポートでない場合はスイッチにＱｏＳ制御の実行を要求し、制御下のネットワークにおける当該パケットのフローの入口となるポート（例えば、ＯＦＳ３０−３のポートｐ２）が境界ポートである場合はスイッチにＱｏＳ制御の実行を要求しないように構成されていてもよい。このようなネットワークシステムによれば、ＱｏＳ制御の実行が重複することを防ぐことができる。
【産業上の利用可能性】
【０２８６】
本発明は、複数のコントローラを統合コントローラから管理するネットワークシステムに適用することができる。
【符号の説明】
【０２８７】
１〜２、７１〜７２  ノード
１０、４０、１００  統合コントローラ
１１  ＯＦＣ管理部
１２  境界ポート管理部
１３  フロー連結部
１４  ドメイン管理部
２０、２０−１〜２０−３、５０−１、５０−２  ＯＦＣ
２１  物理トポロジ管理部
２２  経路計算部
２３  フロー管理部
２４  ＯＦＳ管理部
３０、３０−１〜３０−６、６０−１〜６０−４  ＯＦＳ
３１  フローエントリ管理部
３２  パケットヘッダ管理部
２００  コントローラ
３００  スイッチ
【図１】
2015173440.tif 000003
【図２】
2015173440.tif 000004
【図３】
2015173440.tif 000005
【図４】
2015173440.tif 000006
【図５】
2015173440.tif 000007
【図６】
2015173440.tif 000008
【図７】
2015173440.tif 000009
【図８】
2015173440.tif 000010
【図９】
2015173440.tif 000011
【図１０】
2015173440.tif 000012
【図１１】
2015173440.tif 000013
【図１２】
2015173440.tif 000014
【図１３】
2015173440.tif 000015
【図１４】
2015173440.tif 000016
【図１５】
2015173440.tif 000017
【図１６】
2015173440.tif 000018