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