(57)【要約】【課題】ネットワークにおける障害発生個所及びフローエントリの特定を容易にするネットワーク制御装置、システム、方法及びプログラムを提供すること。【解決手段】フローエントリ管理部は、送信元端末から宛先端末への第１パケットに対応する入力メッセージを、通信用フローエントリが設定されているスイッチから受信したときに、各スイッチに対して、通信用フローエントリよりも優先的に、調査用フローエントリを設定し、フロー情報管理部は、送信元端末から宛先端末への第１パケットに対応する入力メッセージを、調査用フローエントリが設定されているスイッチから受信したときに、入力メッセージに対応するフロー情報を抽出し、入力メッセージに含まれたスイッチ情報に基づいて、抽出されたフロー情報におけるパケット数をカウントし、フローエントリ管理部は、スイッチ情報に対応するスイッチから調査用フローエントリを削除する。【選択図】図１３
2018164155.tif 000002
【特許請求の範囲】
【請求項１】
フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置であって、
前記送信元端末と前記宛先端末との間の経路上の各前記スイッチを流れるパケットのフロー情報を管理するフロー情報管理部と、
前記フロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定し管理するフローエントリ管理部と、
を備え、
前記フローエントリ管理部は、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定し、
前記フロー情報管理部は、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントし、
前記フローエントリ管理部は、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除する、
ネットワーク制御装置。
【請求項２】
前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、フローエントリが設定されていない、又は、前記ネットワーク制御装置を転送先とする初期用フローエントリが設定された前記スイッチのいずれかから受信したときに、前記送信元端末と前記宛先端末との間の経路を計算し管理する経路制御部をさらに備え、
前記フロー情報管理部は、前記経路制御部で計算された前記経路に基づいて前記フロー情報を生成し管理する、
請求項１記載のネットワーク制御装置。
【請求項３】
前記フローエントリ管理部は、前記フロー情報でカウントされたパケット数が所定の閾値に達したときに、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除する、
請求項１又は２記載のネットワーク制御装置。
【請求項４】
前記送信元端末を宛先として、前記第１パケットに対応する前記入力メッセージに応答する第２パケットを生成し、生成された前記第２パケットを前記送信元端末に送信させるための出力メッセージを生成し、生成された前記出力メッセージを、前記送信元端末が接続された前記スイッチに送信する前記メッセージ処理部をさらに備える、
請求項１乃至３のいずれか一に記載のネットワーク制御装置。
【請求項５】
前記第１パケットは、Ｅｃｈｏメッセージであり、
前記第２パケットは、Ｅｃｈｏ＿Ｒｅｐｌｙメッセージである、
請求項４記載のネットワーク制御装置。
【請求項６】
前記第１パケットは、ＴＴＬの値を含むＩＰパケットであり、
前記第２パケットは、前記送信元端末のＩＰアドレスを含むＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージである、
請求項４記載のネットワーク制御装置。
【請求項７】
前記フロー情報管理部は、前記送信元端末から前記送信元端末への第１パケットに対応する入力メッセージが送信されてこないときに、前記フロー情報を抽出し、前記フロー情報の内容に基づいて障害箇所を特定する、
請求項１乃至６のいずれか一に記載のネットワーク制御装置。
【請求項８】
送信元端末と宛先端末との間の経路上に設けられるとともに、フローエントリに従って、パケットを転送、又は、メッセージを送信する複数のスイッチと、
請求項１乃至７のいずれか一に記載のネットワーク制御装置と、
を備える、
ネットワーク制御システム。
【請求項９】
フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置を用いてネットワークを制御するネットワーク制御方法であって、
前記送信元端末と前記宛先端末との間の経路上の各前記スイッチ間を流れるパケットのフロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定するステップと、
前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定するステップと、
前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントするステップと、
前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除するステップと、
を含む、
ネットワーク制御方法。
【請求項１０】
フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置に実行させるネットワーク制御プログラムであって、
前記送信元端末と前記宛先端末との間の経路上の各前記スイッチ間を流れるパケットのフロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定する処理と、
前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定する処理と、
前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントする処理と、
前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除する処理と、
を実行させる、
ネットワーク制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク制御装置、システム、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワークのデータ転送機能と経路制御機能とを分離し、ソフトウェアを用いてそれらの機能を制御することによってネットワークの構成などをプログラミングすることが可能なＳＤＮ（Software Defined Network）技術が普及している。ＳＤＮを実現するための具体的な技術としてＯｐｅｎＦｌｏｗがある。ＯｐｅｎＦｌｏｗでは、従来のネットワークスイッチに組み込まれていたパケット転送機能と経路制御機能を分離し、ＯＦＳ（Open Flow Switch）がパケット転送を担当し、ＯＦＳの外部に置かれたＯＦＣ（Open Flow Controller）が経路制御を担当する。これにより、外部からネットワークスイッチを制御することが容易になり、柔軟性に富んだネットワークを構築することが可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１３／０２４２７５８号明細書
【特許文献２】特開２０１６-１５２４７０号公報
【特許文献３】再公表特許第２０１３／１１５１７７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
以下の分析は、本願発明者により与えられる。
【０００５】
ＯｐｅｎＦｌｏｗを用いたネットワーク（ＯｐｅｎＦｌｏｗネットワーク）において障害を調査する場合、各ＯＦＳにおいてパケットに適用されたフローエントリを特定し、当該フローエントリを収集する作業が発生することがある。あるパケットに適用されたフローエントリを収集するには、当該パケットを転送したＯＦＳを辿る必要があり、障害の調査には多くの時間と労力を要するという問題がある。
【０００６】
ここで、特許文献１には、経路追跡パケットを用いてネットワークにおけるパケットの転送経路に存在するスイッチを調査する方法が開示されている。各スイッチは、受信した経路追跡パケットに当該スイッチ自身の識別情報を付加して次のスイッチに転送すると共に、経路追跡パケットの送信元に、当該スイッチ自身の識別情報及びエラー情報等を含む応答を送信する。経路追跡パケットの送信元は、各スイッチからの応答を受信することにより、パケットの転送経路に存在するスイッチと、エラー情報とを確認する。しかしながら、特許文献１に記載の方法では、当該経路追跡パケットが経過したスイッチを特定する情報を収集するのみであり、当該経路追跡パケットが適用されたフローエントリの内容を確認することができない。
【０００７】
本発明の主な課題は、ネットワークにおける障害発生個所及びフローエントリの特定を容易にするネットワーク制御装置、システム、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
第１の視点に係るネットワーク制御装置は、フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置であって、前記送信元端末と前記宛先端末との間の経路上の各前記スイッチを流れるパケットのフロー情報を管理するフロー情報管理部と、前記フロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定し管理するフローエントリ管理部と、を備える。前記フローエントリ管理部は、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定し、前記フロー情報管理部は、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントし、前記フローエントリ管理部は、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除する。
【０００９】
第２の視点に係るネットワーク制御システムは、送信元端末と宛先端末との間の経路に設けられるとともに、フローエントリに従って、パケットを転送、又は、メッセージを送信する複数のスイッチと、前記第１の視点に係るネットワーク制御装置と、を備える。
【００１０】
第３の視点に係るネットワーク制御方法は、フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置を用いてネットワークを制御するネットワーク制御方法であって、前記送信元端末と前記宛先端末との間の経路上の各前記スイッチ間を流れるパケットのフロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定するステップと、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定するステップと、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントするステップと、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除するステップと、を含む。
【００１１】
第４の視点に係るネットワーク制御プログラムは、フローエントリに従って送信元端末と宛先端末との間の経路上で送受信されるパケットを転送する複数のスイッチを制御するネットワーク制御装置に実行させるネットワーク制御プログラムであって、前記送信元端末と前記宛先端末との間の経路上の各前記スイッチ間を流れるパケットのフロー情報に対応する各前記スイッチに対して、前記スイッチ又は前記送信元端末若しくは前記宛先端末を転送先とする通信用フローエントリを設定する処理と、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記通信用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記フロー情報に対応する各前記スイッチに対して、前記通信用フローエントリよりも優先的に、前記ネットワーク制御装置を転送先とする調査用フローエントリを設定する処理と、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、前記調査用フローエントリが設定されている前記スイッチのいずれかから受信したときに、前記入力メッセージに対応する前記フロー情報を抽出し、前記入力メッセージに含まれた前記スイッチ情報に基づいて、抽出された前記フロー情報における前記スイッチ情報に対応するパケット数をカウントする処理と、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除する処理と、を実行させる。
【発明の効果】
【００１２】
前記第１〜第４の視点によれば、ネットワーク制御装置によって制御される複数のスイッチを有するネットワークにおいて、障害発生時にパケットが到達しているスイッチ及びフローエントリを少ない労力で特定することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態１に係るネットワーク制御システムの構成を模式的に示したブロック図である。
【図２】実施形態１に係るネットワーク制御システムのＯＦＣ及びＯＦＳの詳細な構成を模式的に示したブロック図である。
【図３】実施形態１に係るネットワーク制御システムにおけるフロー情報を模式的に示したテーブルである。
【図４】実施形態１に係るネットワーク制御システムの通信用フローエントリ設定時の動作の一例を模式的に示したシーケンスチャートである。
【図５】実施形態１に係るネットワーク制御システムの障害発生時の動作の一例を模式的に示したシーケンスチャートである。
【図６】実施形態１に係るネットワーク制御システムの障害箇所特定時の動作の一例を模式的に示したシーケンスチャートである。
【図７】実施形態１に係るネットワーク制御システムの障害箇所特定時の動作の一例を模式的に示した図６に続くシーケンスチャートである。
【図８】実施形態１に係るネットワーク制御システムの障害箇所特定時の動作の一例を模式的に示した図７に続くシーケンスチャートである。
【図９】実施形態２に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示したシーケンスチャートである。
【図１０】実施形態２に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示した図９に続くシーケンスチャートである。
【図１１】実施形態３に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示したシーケンスチャートである。
【図１２】実施形態３に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示した図１１に続くシーケンスチャートである。
【図１３】実施形態４に係るネットワーク制御システムの構成を模式的に示したブロック図である。
【図１４】実施形態４に係るネットワーク制御システムにおけるネットワーク制御装置の動作を模式的に示したフローチャート図である。
【発明を実施するための形態】
【００１４】
以下、実施形態について図面を参照しつつ説明する。なお、本出願において図面参照符号を付している場合は、それらは、専ら理解を助けるためのものであり、図示の態様に限定することを意図するものではない。なお、下記の実施形態は、あくまで例示であり、本発明を限定するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。
【００１５】
［実施形態１］
実施形態１に係るネットワーク制御システムについて図面を用いて説明する。図１は、実施形態１に係るネットワーク制御システムの構成を模式的に示したブロック図である。図２は、実施形態１に係るネットワーク制御システムのＯＦＣ及びＯＦＳの詳細な構成を模式的に示したブロック図である。図３は、実施形態１に係るネットワーク制御システムにおけるフロー情報を模式的に示したテーブルである。
【００１６】
ネットワーク制御システム１は、端末３０Ａ、３０Ｂ間のネットワーク５０上に設けられた複数のスイッチ２０Ａ〜２０Ｄをコントローラ１０で制御するシステムである（図１参照）。ネットワーク制御システム１は、ソフトウェアを用いてネットワーク５０の構成などをプログラミングすることが可能なＳＤＮ（Software Defined Network）技術を採用する。ＳＤＮとして、例えば、ＯｐｅｎＦｌｏｗネットワークを用いることができるが、本発明の対象とされるネットワークではＯｐｅｎＦｌｏｗネットワークに限定されない。ネットワーク制御システム１では、ネットワーク５０のデータ転送機能と経路制御機能が分離されており、スイッチ２０Ａ〜２０Ｄにデータ転送機能を持たせ、コントローラ１０に経路制御機能を持たせている。
【００１７】
コントローラ１０は、ネットワーク５０の複数のスイッチ２０Ａ〜２０Ｄを制御するネットワーク制御装置である（図１参照）。コントローラ１０には、サーバマシン、又は、当該サーバマシン上で動作する仮想マシンを用いることができ、例えば、ＯｐｅｎＦｌｏｗが適用されるＯＦＣ（Open Flow Controller）等を用いることができる。コントローラ１０は、専用線又はネットワーク回線を介して各スイッチ２０Ａ〜２０Ｄと通信可能に接続されている。コントローラ１０は、通信部１１と、記憶部１２と、制御部１３と、を有する（図２参照）。
【００１８】
通信部１１は、専用線又はネットワーク回線を介して各スイッチ２０Ａ〜２０Ｄに対して所定の情報又は信号の送受信を行う機能部である（図２参照）。通信部１１は、制御部１３によって制御される。
【００１９】
記憶部１２は、各種データ、ファイル等を記憶する機能部である（図２参照）。記憶部１２は、ネットワーク５０におけるスイッチ２０Ａ〜２０Ｄを制御するためのネットワーク制御プログラムを記憶する。記憶部１２は、制御部１３によって制御される。記憶部１２は、スイッチ情報１２ａ、フロー情報１２ｂ、端末情報１２ｃ等の情報を記憶する。
【００２０】
ここで、スイッチ情報１２ａは、コントローラ１０の制御対象となるスイッチ２０Ａ〜２０Ｄに関する情報であり、例えば、ノード名、ポートの接続先等の情報である。フロー情報１２ｂは、スイッチ２０Ａ〜２０Ｄ間を流れるフロー（経路）の情報であり、例えば、ポップ数、ノード名（スイッチ名）、受信パケット数を互いに対応付けたものとすることができる（図３参照）。端末情報１２ｃは、ネットワーク５０に接続されている端末３０Ａ、３０ＢのＭＡＣ（Media Access Control）アドレス、ＩＰ（Internet Protocol）アドレス、ＶＬＡＮ（Virtual Local Area Network）、接続先のスイッチ２０Ａ〜２０Ｄのポートなどの情報である。
【００２１】
制御部１３は、通信部１１及び記憶部１２を制御する機能部である（図２参照）。制御部１３は、プログラムを実行することにより、スイッチ管理部１３ａと、経路制御部１３ｂと、フロー情報管理部１３ｃと、端末管理部１３ｄと、メッセージ処理部１３ｅと、フローエントリ制御部１３ｆと、を実現する。
【００２２】
スイッチ管理部１３ａは、コントローラ１０の制御対象となるスイッチ２０Ａ〜２０Ｄの情報（スイッチ情報）を管理（登録等）する処理部である。スイッチ管理部１３ａは、フロー情報１２ｂに基づいて、スイッチ２０Ａ〜２０Ｄの各フローエントリ格納部２２に対して、調査用フローエントリの設定又は削除、通信用フローエントリの設定を行う。
【００２３】
経路制御部１３ｂは、端末情報１２ｃに基づいて、当該ＰＡＣＫＥＴ＿ＩＮメッセージの宛先である端末が接続されているポートを検索し、送信元の端末と宛先の端末との間の経路を計算する処理部である。
【００２４】
フロー情報管理部１３ｃは、スイッチ２０Ａ〜２０Ｄ間を流れるフローの情報（フロー情報）を管理（生成、保存、検索、記録等）する処理部である。フロー情報管理部１３ｃは、経路制御部１３ｂで計算された経路に基づいてフロー情報を生成し、生成したフロー情報を記憶部１２に保存する。フロー情報管理部１３ｃは、スイッチ２０ＡからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージの条件に合致するフロー情報１２ｂを検索する。フロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報に基づいて、抽出されたフロー情報１２ｂ内にスイッチ情報に係るスイッチから受信したパケット数を記録（カウント）する。フロー情報管理部１３ｃは、フロー情報とともに、パケットが到達したスイッチ２０Ａ〜２０Ｄの情報（スイッチ情報）を、ユーザ（管理者、保守者等）のユーザ端末４０に提示する機能も有する。
【００２５】
端末管理部１３ｄは、ネットワーク５０に接続されている端末３０Ａ、３０ＢのＭＡＣアドレス、ＩＰアドレス、ＶＬＡＮ、接続先のスイッチ２０Ａ〜２０Ｄのポートなどの端末情報１２ｃを管理（登録、削除等）する処理部である。
【００２６】
メッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージ（入力メッセージ）の宛先を特定し、スイッチ２０Ａ〜２０Ｄから受信したＰＡＣＫＴ＿ＩＮメッセージに対するＰＡＣＫＥＴ＿ＯＵＴメッセージ（出力メッセージ）を生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末（図１では３０Ａ又は３０Ｂ）が接続されたスイッチ（図１では２０Ａ又は２０Ｄ）に送信する処理部である。
【００２７】
フローエントリ制御部１３ｆは、スイッチ２０Ａ〜２０Ｄのフローエントリ格納部２２に対するフローエントリ（通信用フローエントリ、調査用フローエントリ）を管理（設定、削除等）する処理部である。ここで、フローエントリとは、スイッチ２０Ａ〜２０Ｄにおけるパケットの転送先を制御するための情報である。また、通信用フローエントリは、通常の通信時にコントローラ１０よりも優先して他のスイッチ２０Ａ〜２０Ｄ又は端末３０Ａ、３０Ｂをパケットの転送先とするフローエントリである。また、調査用フローエントリは、障害調査時にコントローラ１０をパケットの転送先とするフローエントリである。
【００２８】
スイッチ２０Ａ〜２０Ｄは、パケットを転送するネットワークスイッチである（図１参照）。スイッチ２０Ａ〜２０Ｄは、ネットワーク５０上に設けられる。スイッチ２０Ａ〜２０Ｄとして、コントローラ１０によって経路制御可能なスイッチが用いられ、例えば、ＯｐｅｎＦｌｏｗが適用されるＯＦＳ（Open Flow Switch）、Ｌ２スイッチ等を用いることができる。スイッチ２０Ａ〜２０Ｄは、パケット転送部２１と、フローエントリ格納部２２と、を有する（図２参照）。
【００２９】
パケット転送部２１は、端末３０Ａ、３０Ｂからパケット（要求パケット、応答パケット）を受信したときに、フローエントリ格納部２２に格納されたフローエントリに基づいてパケットを転送する機能部である。パケット転送部２１は、端末３０Ａ、３０Ｂからパケットを受信したときに、フローエントリ格納部２２からパケットの条件に合致するフローエントリを検索する。パケット転送部２１は、検索によって抽出されたフローエントリが通信用フローエントリの場合、当該通信用フローエントリに基づいてパケットを転送する。パケット転送部２１は、検索によって抽出されたフローエントリが調査用フローエントリの場合、パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージ（入力メッセージ）を生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する。パケット転送部２１は、検索によって抽出されるフローエントリがない場合、パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージをコントローラ１０に送信する。パケット転送部２１は、コントローラ１０からＰＡＣＫＥＴ＿ＯＵＴメッセージ（出力メッセージ）を受信したときに、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従ってパケットを、自身のスイッチ（図１では２０Ａ又は２０Ｄ）に接続された端末（図１では３０Ａ又は３０Ｂ）に送信する。
【００３０】
フローエントリ格納部２２は、コントローラ１０によって設定されたフローエントリ（通信用フローエントリ、調査用フローエントリ）を格納する機能部である。
【００３１】
端末３０Ａ、３０Ｂは、パケットを送受信することが可能な情報端末である（図１参照）。端末３０Ａは、ネットワーク５０上のスイッチ２０Ａに通信可能に接続されている。端末３０Ｂは、ネットワーク５０上のスイッチ２０Ｄに通信可能に接続されている。端末３０Ａ、３０Ｂは、要求パケットを受信した時に、要求パケットに対応する応答パケットを生成し、生成された応答パケットを、要求パケットの送信元の端末に向けて送信する機能を有する。端末３０Ａ、３０Ｂは、応答パケットを受信した時に、応答パケットに対応する要求パケットを生成し、生成された要求パケットを、応答パケットの送信元の端末に向けて送信する機能を有する。
【００３２】
ユーザ端末４０は、ユーザが使用する情報端末である（図１参照）。ユーザ端末４０は、専用線又はネットワーク回線を介してコントローラ１０と通信可能に接続されている。ユーザ端末４０は、コントローラ１０を操作するときや、コントローラ１０に記憶されている情報を閲覧するとき等に用いられる。
【００３３】
ネットワーク５０は、端末３０Ａ、３０Ｂ間を通信可能に接続する情報通信網である（図１参照）。ネットワーク５０上には、スイッチ２０Ａ〜２０Ｄが設けられている。
【００３４】
次に、実施形態１に係るネットワーク制御システムの動作について説明する。
【００３５】
［通信用フローエントリ設定時の動作］
最初に、通信用フローエントリ設定時の動作について図面を用いて説明する。図４は、実施形態１に係るネットワーク制御システムの通信用フローエントリ設定時の動作の一例を模式的に示したシーケンスチャートである。なお、ネットワーク制御システムにおける構成部については、図１及び図２を参照されたい。また、ここでは、端末３０Ａ、３０Ｂがパケットを送信した際にフローエントリを設定するリアクティブ方式を例に説明するが、端末がパケットを送信する前に予め通信用フローエントリを設定しておくプロアクティブ方式であってもよい。
【００３６】
図４を参照すると、まず、端末３０Ａは、端末３０Ｂを宛先とする要求パケットを送信する（図４のステップＡ１）。
【００３７】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図４のステップＡ２）。
【００３８】
この時点では、スイッチ２０Ａのフローエントリ格納部２２には通信用フローエントリも調査用フローエントリも存在しないため、スイッチ２０Ａのパケット転送部２１は、要求パケットの処理方法を決めるために、要求パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成して、生成されたＰＡＣＫＥＴ＿ＩＮメッセージをコントローラ１０に送信する（図４のステップＡ３）。
【００３９】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＡからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージの条件に合致するフロー情報１２ｂを検索する（図４のステップＡ４）。
【００４０】
この時点では、コントローラ１０の記憶部１２にフロー情報１２ｂが存在しないため、コントローラ１０の経路制御部１３ｂは、端末情報１２ｃに基づいて、当該ＰＡＣＫＥＴ＿ＩＮメッセージの宛先である端末３０Ｂが接続されているポートを検索し、送信元の端末３０Ａと宛先の端末３０Ｂとの間の経路を計算する（図４のステップＡ５）。
【００４１】
次に、コントローラ１０のフロー情報管理部１３ｃは、経路制御部１３ｂで計算された経路に基づいてフロー情報を生成し、生成したフロー情報１２ｂを記憶部１２に保存する（図４のステップＡ６）。
【００４２】
次に、コントローラ１０のスイッチ管理部１３ａは、フロー情報管理部１３ｃで生成されたフロー情報に基づいて、スイッチ２０Ａ〜２０Ｄのフローエントリ格納部２２に対して通信用フローエントリを設定する（図４のステップＡ７）。
【００４３】
ここで、通信用フローエントリは、通常の通信時に、送信元の端末３０Ａが送信したパケットを宛先の端末３０Ｂへ送信するためのスイッチ２０Ａ〜２０Ｄの転送先を規定したフローエントリである。なお、通信用フローエントリの設定は、コントローラ１０又はスイッチ２０Ａ〜スイッチ２０Ｄにて通信用フローエントリを生成して、生成された通信用フローエントリをフローエントリ格納部２２に保存することによって行うことができる。通信用フローエントリの規定通りにパケットを転送できないときは、パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージをコントローラ１０に送信することになる。
【００４４】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの宛先を特定し（ここでの宛先は端末３０Ｂ）、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ｂが接続されたスイッチ２０Ｄに送信する（図４のステップＡ８）。ここでのＰＡＣＫＥＴ＿ＯＵＴメッセージは、スイッチ２０Ｄにおける端末３０Ｂが接続されているポートから、要求パケットを送信させるためのメッセージである。
【００４５】
次に、スイッチ２０Ｄのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従って要求パケットを端末３０Ｂに送信する（図４のステップＡ９）。
【００４６】
その後、端末３０Ａ、３０Ｂ間でのパケットの送受信の際、スイッチ２０Ａ〜２０Ｄでの転送が通信用フローエントリに基づいて行われることになる。
【００４７】
なお、端末３０Ｂが端末３０Ａを宛先とするパケットを送信した場合も、ステップＡ１〜ステップＡ８と同様にして、コントローラ１０は経路上のスイッチ２０Ａ〜２０Ｄに対して通信用フローエントリを設定することになる。
【００４８】
［障害発生時の動作］
次に、ネットワーク５０で障害が発生した時の動作について図面を用いて説明する。図５は、実施形態１に係るネットワーク制御システムの障害発生時の動作の一例を模式的に示したシーケンスチャートである。なお、ネットワーク制御システムにおける構成部については、図１及び図２を参照されたい。ここでは、通信用フローエントリは既にスイッチ２０Ａ〜２０Ｄに設定されており、フロー情報管理部１３ｃはフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報、端末３０Ｂから端末３０Ａへの方向に関するフロー情報）を作成済みとする。また、ここではスイッチ２０Ａ〜２０Ｄに通信用フローエントリが設定されているものとする。さらに、ここではスイッチ２０Ｂとスイッチ２０Ｃとの間で転送ができなくなった場合について説明する。
【００４９】
図５を参照すると、まず、端末３０Ａは、端末３０Ｂを宛先とする要求パケットを送信する（図５のステップＢ１）。
【００５０】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図５のステップＢ２）。ここでは、要求パケットの条件に合致するフローエントリとして、通信用フローエントリが抽出される。
【００５１】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｂに対して、要求パケットを転送する（図５のステップＢ３）。
【００５２】
次に、スイッチ２０Ｂのパケット転送部２１は、スイッチ２０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図５のステップＢ４）。ここでも、要求パケットの条件に合致するフローエントリとして、通信用フローエントリが抽出される。
【００５３】
次に、スイッチ２０Ｂのパケット転送部２１は、抽出された通信用フローエントリに基づいて要求パケット転送を試みる（図５のステップＢ５）。
【００５４】
ここでは、スイッチ２０Ｂとスイッチ２０Ｃとの間で転送ができないので、スイッチ２０Ｂのパケット転送部２１は、要求パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成して、生成されたＰＡＣＫＥＴ＿ＩＮメッセージをコントローラ１０に送信する（図５のステップＢ６）。
【００５５】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＢからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報を検索する（図５のステップＢ７）。なお、ユーザは、通信ができなくなったフロー情報を知っていれば、ユーザ端末４０を用いてコントローラ１０にフロー情報を入力し、ステップＢ１〜Ｂ７を省略してもよい。
【００５６】
この時点では、コントローラ１０の記憶部１２にフロー情報が存在するため、コントローラ１０のスイッチ管理部１３ａは、ネットワーク５０で障害が発生したと判断し、抽出（入力でも可）されたフロー情報に基づいて、スイッチ２０Ａ〜２０Ｄの各フローエントリ格納部２２に対して、調査用フローエントリを、通信用フローエントリよりも優先的に設定する（図５のステップＢ８）。
【００５７】
ここで、調査用フローエントリは、障害調査時に、スイッチ２０Ａ〜２０Ｄにおいて送信元の端末３０Ａから宛先の端末３０Ｂへのパケット（送信元の端末３０Ｂから宛先の端末３０Ａへのパケットの場合でも可）を受信したときに、パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信するためのフローエントリである。なお、調査用フローエントリの設定は、コントローラ１０又はスイッチ２０Ａ〜スイッチ２０Ｄにて調査用フローエントリを生成して、生成された調査用フローエントリをフローエントリ格納部２２に保存することによって行うことができる。
【００５８】
［障害箇所特定時の動作］
次に、スイッチ２０Ａ〜２０Ｄに調査用フローエントリが設定されている状態で、障害箇所を特定するときの動作について図面を用いて説明する。図６〜図８は、実施形態１に係るネットワーク制御システムの障害箇所特定時の動作を模式的に示したシーケンスチャートである。なお、ネットワーク制御システムにおける構成部については、図１及び図２を参照されたい。ここでは、スイッチ２０Ａ〜２０Ｄに通信用フローエントリが設定されており、かつ、スイッチ２０Ｂとスイッチ２０Ｃとの間で転送ができない場合について説明する。
【００５９】
図６を参照すると、まず、端末３０Ａは、端末３０Ｂを宛先とする要求パケットを送信する（図６のステップＣ１）。
【００６０】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図６のステップＣ２）。ここで、スイッチ２０Ａでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、要求パケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【００６１】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された調査用フローエントリに基づいて、要求パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図６のステップＣ３）。
【００６２】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＡからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）を検索する（図６のステップＣ４）。
【００６３】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-A）に基づいて、抽出されたフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）内にスイッチ２０Ａ（図３のノード名：OFS-A）から受信したパケット数を記録（図３の受信パケット数をカウント）する（図６のステップＣ５）。
【００６４】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの宛先を特定し（ここでの宛先は端末３０Ｂ）、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ｂが接続されたスイッチ２０ＤにＰＡＣＫＥＴ＿ＯＵＴメッセージを送信する（図６のステップＣ６）。ここでは、コントローラ１０は、端末３０Ｂが接続されているポートから送信するためのＯｐｅｎＦｌｏｗメッセージを生成して、生成されたＯｐｅｎＦｌｏｗメッセージをスイッチ２０Ｄに対して送信するようにしてもよい。
【００６５】
次に、スイッチ２０Ｄのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従って要求パケットを端末３０Ｂに送信する（図６のステップＣ７）。
【００６６】
次に、端末３０Ｂは、スイッチ２０Ｄからの要求パケットを受信することにより、端末３０Ａを宛先として、要求パケットに対応する応答パケットを生成し、生成された応答パケットをスイッチ２０Ｄに送信する（図６のステップＣ８）。
【００６７】
次に、スイッチ２０Ｄのパケット転送部２１は、端末３０Ｂからの応答パケットを受信すると、フローエントリ格納部２２から応答パケットの条件に合致するフローエントリを検索する（図６のステップＣ９）。ここで、スイッチ２０Ｄでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、応答パケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【００６８】
次に、スイッチ２０Ｄのパケット転送部２１は、抽出された調査用フローエントリに基づいて、応答パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図６のステップＣ１０）。
【００６９】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＤからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ｂから端末３０Ａへの方向に関するフロー情報）を検索する（図６のステップＣ１１）。
【００７０】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-D）に基づいて、抽出されたフロー情報（端末３０Ｂから端末３０Ａへの方向に関するフロー情報）内にスイッチ２０Ｄから受信したパケット数を記録する（図６のステップＣ１２）。
【００７１】
次に、コントローラ１０のスイッチ管理部１３ａは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に基づいて、端末３０Ａから端末３０Ｂへ送信されたパケットがスイッチ２０Ａまで到達したと判断し、スイッチ２０Ａのフローエントリ格納部２２から調査用フローエントリを削除する（図６のステップＣ１３）。これにより、スイッチ２０Ａのフローエントリ格納部２２は通信用フローエントリが残った状態となる。ここで、調査用フローエントリの削除は、コントローラ１０からスイッチ２０ＡにＦＬＯＷ＿ＭＯＤメッセージ（削除メッセージ）を送信することによって行うことができる。なお、調査用フローエントリの削除は、コントローラ１０がスイッチ２０Ａ〜２０Ｄから受信したパケットが一定のしきい値（例えば、フロー情報のパケット数の閾値）に達した場合や、ユーザによるユーザ端末４０の操作によって削除する方法でもよい。
【００７２】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの宛先を特定し（ここでの宛先は端末３０Ａ）、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ａが接続されたスイッチ２０Ａに送信する（図６のステップＣ１４）。ここでは、コントローラ１０は、端末３０Ａが接続されているポートから送信するためのＯｐｅｎＦｌｏｗメッセージを生成して、生成されたＯｐｅｎＦｌｏｗメッセージをスイッチ２０Ａに対して送信するようにしてもよい。ここでのＰＡＣＫＥＴ＿ＯＵＴメッセージは、スイッチ２０Ａにおける端末３０Ａが接続されているポートから、応答パケットを送信させるためのメッセージである。
【００７３】
次に、スイッチ２０Ａのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従って応答パケットを端末３０Ａに送信する（図６のステップＣ１５）。
【００７４】
次に、図７を参照すると、端末３０Ａは、スイッチ２０Ａからの応答パケットを受信することにより、端末３０Ｂを宛先として、応答パケットに対応した要求パケットを生成し、生成された要求パケットをスイッチ２０Ａに送信する（図７のステップＣ１６）。
【００７５】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図７のステップＣ１７）。ここで、スイッチ２０Ａでは調査用フローエントリが削除されているため、通信用フローエントリが抽出される。
【００７６】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｂに対して、要求パケットを転送する（図７のステップＣ１８）。
【００７７】
次に、スイッチ２０Ｂのパケット転送部２１は、スイッチ２０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図７のステップＣ１９）。ここで、スイッチ２０Ｂでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、要求パケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【００７８】
次に、スイッチ２０Ｂのパケット転送部２１は、抽出された調査用フローエントリに基づいて、要求パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図７のステップＣ２０）。
【００７９】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＢからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）を検索する（図７のステップＣ２１）。
【００８０】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-B）に基づいて、抽出されたフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）内にスイッチ２０Ｂ（図３のノード名：OFS-B）から受信したパケット数を記録（図３の受信パケット数をカウント）する（図７のステップＣ２２）。これにより、端末３０Ａから端末３０Ｂへ送信されたパケットがスイッチ２０Ｂまで到達したことが分かる。
【００８１】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの宛先を特定し（ここでの宛先は端末３０Ｂ）、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ｂが接続されたスイッチ２０Ｄに送信する（図７のステップＣ２３）。ここでは、コントローラ１０は、端末３０Ｂが接続されているポートから送信するためのＯｐｅｎＦｌｏｗメッセージを生成して、生成されたＯｐｅｎＦｌｏｗメッセージをスイッチ２０Ｄに対して送信するようにしてもよい。
【００８２】
次に、スイッチ２０Ｄのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従って要求パケットを端末３０Ｂに送信する（図７のステップＣ２４）。
【００８３】
次に、端末３０Ｂは、スイッチ２０Ｄからの要求パケットを受信することにより、端末３０Ａを宛先として、要求パケットに対応する応答パケットを生成し、生成された応答パケットをスイッチ２０Ｄに送信する（図７のステップＣ２５）。
【００８４】
次に、スイッチ２０Ｄのパケット転送部２１は、端末３０Ｂからの応答パケットを受信すると、フローエントリ格納部２２から応答パケットの条件に合致するフローエントリを検索する（図７のステップＣ２６）。ここで、スイッチ２０Ｄでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、応答パケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【００８５】
次に、スイッチ２０Ｄのパケット転送部２１は、抽出された調査用フローエントリに基づいて、応答パケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図７のステップＣ２７）。
【００８６】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＤからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ｂから端末３０Ａへの方向に関するフロー情報）を検索する（図７のステップＣ２８）。
【００８７】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-D）に基づいて、抽出されたフロー情報（端末３０Ｂから端末３０Ａへの方向に関するフロー情報）内にスイッチ２０Ｄから受信したパケット数を記録する（図７のステップＣ２９）。
【００８８】
次に、コントローラ１０のスイッチ管理部１３ａは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に基づいて、端末３０Ａから端末３０Ｂへ送信されたパケットがスイッチ２０Ｂまで到達したと判断し、スイッチ２０Ｂのフローエントリ格納部２２から調査用フローエントリを削除する（図７のステップＣ３０）。これにより、スイッチ２０Ｂのフローエントリ格納部２２は通信用フローエントリが残った状態となる。
【００８９】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの宛先を特定し（ここでの宛先は端末３０Ａ）、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ａが接続されたスイッチ２０Ａに送信する（図７のステップＣ３１）。ここでは、コントローラ１０は、端末３０Ａが接続されているポートから送信するためのＯｐｅｎＦｌｏｗメッセージを生成して、生成されたＯｐｅｎＦｌｏｗメッセージをスイッチ２０Ａに対して送信するようにしてもよい。ここでのＰＡＣＫＥＴ＿ＯＵＴメッセージは、スイッチ２０Ａにおける端末３０Ａが接続されているポートから、応答パケットを送信させるためのメッセージである。
【００９０】
次に、スイッチ２０Ａのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従って応答パケットを端末３０Ａに送信する（図７のステップＣ３２）。
【００９１】
次に、図８を参照すると、端末３０Ａは、スイッチ２０Ａからの応答パケットを受信することにより、端末３０Ｂを宛先とし、応答パケットに対応した要求パケットを生成し、生成された要求パケットをスイッチ２０Ａに送信する（図８のステップＣ３３）。
【００９２】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図８のステップＣ３４）。ここで、スイッチ２０Ａでは調査用フローエントリが削除されているため、通信用フローエントリが抽出される。
【００９３】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｂに対して、要求パケットを転送する（図８のステップＣ３５）。
【００９４】
次に、スイッチ２０Ｂのパケット転送部２１は、スイッチ２０Ａからの要求パケットを受信すると、フローエントリ格納部２２から要求パケットの条件に合致するフローエントリを検索する（図８のステップＣ３６）。ここで、スイッチ２０Ｂでは調査用フローエントリが削除されているため、通信用フローエントリが抽出される。
【００９５】
次に、スイッチ２０Ｂのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｃに対して、要求パケットの転送を試みる（図８のステップＣ３７）。
【００９６】
ここでは、スイッチ２０Ｂとスイッチ２０Ｃとの間で転送ができないので、スイッチ２０Ｃからコントローラ１０へＰＡＣＫＥＴ＿ＩＮメッセージが送信されることは無い。
【００９７】
その後、コントローラ１０のフロー情報管理部１３ｃは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報、端末３０Ｂから端末３０Ａへの方向に関するフロー情報）の内容（例えば、各スイッチのパケット数）から、スイッチ２０Ａ、２０Ｂ、２０Ｄがパケット受信、かつ、スイッチ２０Ｃがパケット未受信であることから、障害箇所がスイッチ２０Ｃ又はその周辺にあると特定する（ステップＣ３８）。これにより、コントローラ１０のフロー情報管理部１３ｃは、ユーザ端末４０からフロー情報を要求されたときに、障害が発生した経路上のスイッチ２０Ａ〜２０Ｄからの受信パケット数を含んだフロー情報を提示することができる。
【００９８】
なお、ここではスイッチ２０Ｂとスイッチ２０Ｃとの間で転送ができない場合について説明したが、スイッチ２０Ａとスイッチ２０Ｂとの間や、スイッチ２０Ｃとスイッチ２０Ｄとの間で転送ができない場合についても応用できることはいうまでもない。
【００９９】
実施形態１によれば、障害が発生したときに端末３０Ａ、３０Ｂ間の経路上の各スイッチ２０Ａ〜２０Ｄに調査用フローエントリを設定し、発信元の端末３０Ａからのパケットが到達したスイッチから調査用フローエントリを削除することで、端末３０Ａから送信されたパケットがどのスイッチ２０Ａ〜２０Ｄまで到達しているかをフロー情報と関連付けて記録することができ、障害箇所の特定が可能となる。つまり、各スイッチ２０Ａ〜２０Ｄが自律的に動作しないで、コントローラ１０によりスイッチ２０Ａ〜２０Ｄを集中制御する構成においても、コントローラ１０で障害箇所を管理することができる。
【０１００】
［実施形態２］
実施形態２に係るネットワーク制御システムについて図面を用いて説明する。図９、図１０は、実施形態２に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示したシーケンスチャートである。なお、ネットワーク制御システムにおける構成部については、図１及び図２を参照されたい。
【０１０１】
実施形態２は、実施形態１の変形例であり、送信元の端末３０Ａからの要求パケットに対して、宛先の端末２０Ｂが応答パケットを生成して送信する代わりに、送信元の端末３０ＡからのＩＣＭＰ（Internet Control Message Protocol）のＥｃｈｏメッセージに対して、コントローラ１０がＩＣＭＰのＥｃｈｏ＿Ｒｅｐｌｙメッセージを生成して送信するようにしたものである。
【０１０２】
［障害発生時及び障害箇所特定時の動作］
実施形態２に係るネットワーク制御システムでのネットワーク５０での障害発生時及び障害箇所特定時の動作について説明する。ここでは、通信用フローエントリは既にスイッチ２０Ａ〜２０Ｄに設定されているものとする。また、端末情報１２ｃは、端末３０Ａ及び端末３０Ｂから受信したパケットの情報に基づいて、端末３０Ａと端末３０ＢのＭＡＣアドレス、ＩＰアドレス、ＶＬＡＮ、接続先ポート等の情報を保持しているとものとする。さらに、ここではスイッチ２０Ａとスイッチ２０Ｂとの間で転送ができない場合について説明する。
【０１０３】
図９を参照すると、まず、ユーザは、ユーザ端末４０を用いて障害が発生している経路のフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）をコントローラ１０に入力する（図９のステップＤ１）。
【０１０４】
次に、コントローラ１０のスイッチ管理部１３ａは、入力されたフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に基づいて、障害が発生している経路のスイッチ（ここでは２０Ａ〜２０Ｄ）を特定し、特定されたスイッチ２０Ａ〜スイッチ２０Ｄの各フローエントリ格納部２２に対して、調査用フローエントリを、通信用フローエントリよりも優先的に設定する（図９のステップＤ２）。
【０１０５】
その後、端末３０Ａは、端末３０Ｂを宛先とするＩＣＭＰのＥｃｈｏメッセージを送信する（図９のステップＤ３）。
【０１０６】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０ＡからＥｃｈｏメッセージを受信すると、フローエントリ格納部２２からＥｃｈｏメッセージの条件に合致するフローエントリを検索する（図９のステップＤ４）。ここで、スイッチ２０Ａでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、要求パケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【０１０７】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された調査用フローエントリに基づいて、Ｅｃｈｏメッセージに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図９のステップＤ５）。
【０１０８】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＡからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）を検索する（図９のステップＤ６）。
【０１０９】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-A）に基づいて、抽出されたフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）内にスイッチ２０Ａ（図３のノード名：OFS-A）から受信したパケット数を記録（図３の受信パケット数をカウント）する（図９のステップＤ７）。
【０１１０】
次に、コントローラ１０のスイッチ管理部１３ａは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に基づいて、端末３０Ａから端末３０Ｂへ送信されたパケットがスイッチ２０Ａまで到達したと判断し、スイッチ２０Ａのフローエントリ格納部２２から調査用フローエントリを削除する（図９のステップＤ８）。
【０１１１】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの送信元を特定し（ここでの送信元は端末３０Ａ）、端末３０Ａを宛先として、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＩＣＭＰのＥｃｈｏ＿Ｒｅｐｌｙメッセージを生成する（図９のステップＤ９）。
【０１１２】
次に、コントローラ１０のメッセージ処理部１３ｅは、端末３０Ａを宛先として、生成されたＥｃｈｏ＿Ｒｅｐｌｙメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ａが接続されたスイッチ２０Ａに送信する（図９のステップＤ１０）。ここでのＰＡＣＫＥＴ＿ＯＵＴメッセージは、スイッチ２０Ａにおける端末３０Ａが接続されているポートから、Ｅｃｈｏ＿Ｒｅｐｌｙメッセージを送信させるためのメッセージである。
【０１１３】
次に、スイッチ２０Ａのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従ってＥｃｈｏ＿Ｒｅｐｌｙメッセージを端末３０Ａに送信する（図９のステップＤ１１）。
【０１１４】
次に、図１０を参照すると、端末３０Ａは、スイッチ２０ＡからのＥｃｈｏ＿Ｒｅｐｌｙメッセージを受信することにより、端末３０Ｂを宛先とし、Ｅｃｈｏ＿Ｒｅｐｌｙメッセージに対応したＩＣＭＰのＥｃｈｏメッセージを生成し、生成されたＥｃｈｏメッセージをスイッチ２０Ａに送信する（図１０のステップＤ１２）。
【０１１５】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０ＡからのＥｃｈｏメッセージを受信すると、フローエントリ格納部２２からＥｃｈｏメッセージの条件に合致するフローエントリを検索する（図１０のステップＤ１３）。ここで、スイッチ２０Ａでは調査用フローエントリが削除されているため、通信用フローエントリが抽出される。
【０１１６】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｂに対して、Ｅｃｈｏメッセージの転送を試みる（図１０のステップＤ１４）。
【０１１７】
ここでは、スイッチ２０Ａとスイッチ２０Ｂとの間で転送ができないので、スイッチ２０Ｂからコントローラ１０へＰＡＣＫＥＴ＿ＩＮメッセージが送信されることは無い。
【０１１８】
その後、コントローラ１０のフロー情報管理部１３ｃは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）の内容からスイッチ２０Ａがパケット受信、かつ、スイッチ２０Ｂ〜２０Ｄがパケット未受信であることから、スイッチ２０Ｂ〜２０Ｄ又はその周辺に障害原因があると特定する（図１０のステップＤ１５）。これにより、コントローラ１０のフロー情報管理部１３ｃは、ユーザ端末４０からフロー情報を要求されたときに、障害が発生した経路上のスイッチ２０Ａ〜２０Ｄからの受信パケット数を含んだフロー情報を提示することができる。
【０１１９】
なお、ここではスイッチ２０Ａとスイッチ２０Ｂとの間で転送ができない場合について説明したが、スイッチ２０Ｂとスイッチ２０Ｃとの間や、スイッチ２０Ｃとスイッチ２０Ｄとの間で転送ができない場合についても応用できることはいうまでもない。
【０１２０】
実施形態２によれば、コントローラ１０が応答パケットを生成することで、障害の原因となっている箇所をより絞り込むことが可能となる。例えば、図１の構成において、コントローラ１０が応答パケットを生成する場合は端末３０Ａへ応答パケットの返信が可能であるが、端末３０Ｂが応答パケットを生成する場合は端末３０Ａへ応答パケットの返信が不可能な場合、コントローラ１０から端末３０Ｂの間に問題があると判断できる。
【０１２１】
［実施形態３］
実施形態３に係るネットワーク制御システムについて図面を用いて説明する。図１１、図１２は、実施形態３に係るネットワーク制御システムの障害発生時及び障害箇所特定時の動作の一例を模式的に示したシーケンスチャートである。なお、ネットワーク制御システムにおける構成部については、図１及び図２を参照されたい。
【０１２２】
実施形態３は、実施形態２の変形例であり、送信元の端末３０ＡからのＩＣＭＰのＥｃｈｏメッセージに対して、コントローラ１０がＩＣＭＰのＥｃｈｏ＿Ｒｅｐｌｙメッセージを生成して送信する代わりに、送信元の端末３０ＡからのＩＰパケットに対して、コントローラ１０がＩＣＭＰのＴｉｍｅ＿Ｅｘｅｅｄｅｄメッセージにスイッチ２０Ａ〜２０ＤのＩＰアドレスを設定して送信するようにしたものである。
【０１２３】
［障害箇所特定時の動作］
実施形態３に係るネットワーク制御システムでのネットワーク５０での障害発生時及び障害箇所特定時の動作について説明する。ここでは、通信用フローエントリ及び調査用フローエントリは既にスイッチ２０Ａ〜２０Ｄに設定されており、フロー情報管理部１３ｃはフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）を作成済みとする。また、端末情報１２ｃは、端末３０Ａと端末３０Ｂから受信したパケットの情報に基づいて、端末３０Ａ及び端末３０ＢのＭＡＣアドレス、ＩＰアドレス、ＶＬＡＮ、接続先ポート等の情報を保持しているとものとする。さらに、ここではスイッチ２０Ａとスイッチ２０Ｂとの間で転送ができない場合について説明する。
【０１２４】
図１１を参照すると、まず、ユーザは、ユーザ端末４０を用いてコントローラ１０に対して、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に合致するＩＰパケットを受信したときに、ＩＰパケットのＴＴＬ（Time To Live）の値から対応するスイッチ２０Ａ〜２０Ｄのいずれか１つを特定し、特定されたスイッチのＩＰアドレスをＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージに設定して、当該Ｔｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージをパケットの送信元の端末（ここでは端末３０Ａ）へ送信するように設定する（図１１のステップＥ１）。
【０１２５】
その後、端末３０Ａは、端末３０Ｂを宛先として、ＴＴＬが１であるＩＰパケットを送信する（図１１のステップＥ２）。ここでは、例としてＩＰパケットを使用しているが、ＵＤＰ（User Datagram Protocol）パケットやＴＣＰ（Transmission Control Protocol）パケットを使用してもよい。
【０１２６】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０ＡからＩＰパケットを受信すると、フローエントリ格納部２２からＩＰパケットの条件に合致するフローエントリを検索する（図１１のステップＥ３）。ここで、スイッチ２０Ａでは通信用フローエントリと調査用フローエントリの２つのフローエントリが、ＩＰパケットの条件に合致するが、調査用フローエントリの方が高優先に設定されているため、調査用フローエントリが抽出される。
【０１２７】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された調査用フローエントリに基づいて、ＩＰパケットに対応するＰＡＣＫＥＴ＿ＩＮメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＩＮメッセージに自身のスイッチ情報を含めてコントローラ１０に送信する（図１１のステップＥ４）。
【０１２８】
次に、コントローラ１０のフロー情報管理部１３ｃは、スイッチ２０ＡからのＰＡＣＫＥＴ＿ＩＮメッセージを受信すると、記憶部１２から当該ＰＡＣＫＥＴ＿ＩＮメッセージに対応するフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）を検索する（図１１のステップＥ５）。
【０１２９】
次に、コントローラ１０のフロー情報管理部１３ｃは、ＰＡＣＫＥＴ＿ＩＮメッセージに含まれたスイッチ情報（ここではOFS-A）に基づいて、抽出されたフロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）内にスイッチ２０Ａ（図３のノード名：OFS-A）から受信したパケット数を記録（図３の受信パケット数をカウント）する（図１１のステップＥ６）。
【０１３０】
次に、コントローラ１０のスイッチ管理部１３ａは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）に基づいて、端末３０Ａから端末３０Ｂへ送信されたパケットがスイッチ２０Ａまで到達したと判断し、スイッチ２０Ａのフローエントリ格納部２２から調査用フローエントリを削除する（図１１のステップＥ７）。
【０１３１】
次に、コントローラ１０のメッセージ処理部１３ｅは、ＰＡＣＫＥＴ＿ＩＮメッセージの送信元を特定し（ここでの送信元は端末３０Ａ）、端末３０Ａを宛先として、ＰＡＣＫＥＴ＿ＩＮメッセージに対応するＩＣＭＰのＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージを生成する（図１１のステップＥ８）。
【０１３２】
次に、コントローラ１０のメッセージ処理部１３ｅは、受信したＩＰパケットのＴＴＬが１であることから、送信元ＩＰアドレスとしてスイッチ２０ＡのＩＰアドレスを、Ｔｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージに設定する（図１１のステップＥ９）。
【０１３３】
次に、コントローラ１０のメッセージ処理部１３ｅは、端末３０Ａを宛先として、Ｔｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージに対応するＰＡＣＫＥＴ＿ＯＵＴメッセージを生成し、生成されたＰＡＣＫＥＴ＿ＯＵＴメッセージを、宛先の端末３０Ａが接続されたスイッチ２０Ａに送信する（図１１のステップＥ１０）。ここでのＰＡＣＫＥＴ＿ＯＵＴメッセージは、スイッチ２０Ａにおける端末３０Ａが接続されているポートから、Ｔｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージを送信させるためのメッセージである。
【０１３４】
次に、スイッチ２０Ａのパケット転送部２１は、コントローラ１０からのＰＡＣＫＥＴ＿ＯＵＴメッセージを受信することにより、当該ＰＡＣＫＥＴ＿ＯＵＴメッセージに従ってＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージを端末３０Ａに送信する（図１１のステップＥ１１）
【０１３５】
次に、図１２を参照すると、端末３０Ａは、スイッチ２０ＡからのＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージを受信することにより、端末３０Ｂを宛先とし、ＴＴＬが２であるＩＰパケットをスイッチ２０Ａに送信する（図１２のステップＥ１２）。これにより、端末３０ＡのユーザはＩＰパケットが到達したスイッチ２０ＡのＩＰアドレスを知ることができ、他のスイッチ２０Ｂ〜２０Ｄに対しても同じ動作を繰り返すことでＩＰパケットがどこまで到達したか知ることができる。
【０１３６】
次に、スイッチ２０Ａのパケット転送部２１は、端末３０ＡからのＩＰパケットを受信すると、フローエントリ格納部２２からＩＰパケットの条件に合致するフローエントリを検索する（図１２のステップＥ１３）。ここで、スイッチ２０Ａでは調査用フローエントリが削除されているため、通信用フローエントリが抽出される。
【０１３７】
次に、スイッチ２０Ａのパケット転送部２１は、抽出された通信用フローエントリに基づいて、スイッチ２０Ｂに対して、ＩＰパケットの転送を試みる（図１２のステップＥ１４）。
【０１３８】
ここでは、スイッチ２０Ａとスイッチ２０Ｂとの間で転送ができないので、スイッチ２０Ｂからコントローラ１０へＰＡＣＫＥＴ＿ＩＮメッセージが送信されることは無い。
【０１３９】
その後、コントローラ１０のフロー情報管理部１３ｃは、フロー情報（端末３０Ａから端末３０Ｂへの方向に関するフロー情報）の内容からスイッチ２０Ａがパケット受信、かつ、スイッチ２０Ｂ〜２０Ｄがパケット未受信であることから、スイッチ２０Ｂ〜２０Ｄ又はその周辺に障害原因があると特定する（図１２のステップＥ１５）。これにより、コントローラ１０のフロー情報管理部１３ｃは、ユーザ端末４０からフロー情報を要求されたときに、障害が発生した経路上のスイッチ２０Ａ〜２０Ｄからの受信パケット数を含んだフロー情報を提示することができる。
【０１４０】
なお、ここではスイッチ２０Ａとスイッチ２０Ｂとの間で転送ができない場合について説明したが、スイッチ２０Ｂとスイッチ２０Ｃとの間や、スイッチ２０Ｃとスイッチ２０Ｄとの間で転送ができない場合についても応用できることはいうまでもない。
【０１４１】
実施形態３によれば、コントローラ１０がスイッチ２０Ａ〜２０ＤのＩＰアドレスを送信することで、端末３０Ａのユーザは、例えば、ｔｒａｃｅｒｏｕｔｅを実行した場合に経路上のどのスイッチ２０Ａ〜２０Ｄまでパケットが到達したかを知ることが可能となる。
【０１４２】
［実施形態４］
実施形態４に係るネットワーク制御システムについて図面を用いて説明する。図１３は、実施形態４に係るネットワーク制御システムの構成を模式的に示したブロック図であるである。
【０１４３】
ネットワーク制御システム１は、端末３０Ａ、３０Ｂ間の経路上に設けられた複数のスイッチ２０Ａ〜２０Ｄをネットワーク制御装置１０で制御するシステムである。ネットワーク制御システム１は、ネットワーク制御装置１０と、複数のスイッチ２０Ａ〜２０Ｄと、送信元端末３０Ａと、宛先端末３０Ｂと、を備える。
【０１４４】
ネットワーク制御装置１０は、複数のスイッチ２０Ａ〜２０Ｄを制御する装置である。ネットワーク制御装置１０は、フロー情報管理部１３ｃと、フローエントリ管理部１３ｆと、を有する。
【０１４５】
フロー情報管理部１３ｃは、送信元端末１０Ａと宛先端末１０Ｂとの間の経路上の各スイッチ２０Ａ〜２０Ｄ（４つのスイッチに限るものではない）を流れるパケットのフロー情報を管理する。フロー情報管理部１３ｃは、送信元端末３０Ａから宛先端末３０Ｂへの第１パケットに対応する入力メッセージを、調査用フローエントリが設定されているスイッチ２０Ａ〜２０Ｄのいずれかから受信したときに、入力メッセージに対応するフロー情報を抽出する。フロー情報管理部１３ｃは、入力メッセージに含まれたスイッチ情報に基づいて、抽出されたフロー情報におけるスイッチ情報に対応するパケット数をカウントする。
【０１４６】
フローエントリ管理部１３ｆは、フロー情報に対応する各スイッチ２０Ａ〜２０Ｄに対して、スイッチ２０Ａ又は送信元端末３０Ａ若しくは宛先端末３０Ｂを転送先とする通信用フローエントリを設定し管理する。フローエントリ管理部１３ｆは、送信元端末３０Ａから宛先端末３０Ｂへの第１パケットに対応する入力メッセージを、通信用フローエントリが設定されているスイッチ２０Ａ〜３０Ｄのいずれかから受信したときに、フロー情報に対応する各スイッチ２０Ａ〜２０Ｄに対して、通信用フローエントリよりも優先的に、ネットワーク制御装置１０を転送先とする調査用フローエントリを設定する。フローエントリ管理部１３ｆは、入力メッセージに含まれたスイッチ情報に対応するスイッチ２０Ａ〜２０Ｄから調査用フローエントリを削除する。
【０１４７】
スイッチ２０Ａ〜２０Ｄは、送信元端末１０Ａと宛先端末１０Ｂとの間の経路に設けられるとともに、フローエントリに従って、パケットを転送、又は、メッセージを送信する。
【０１４８】
端末３０Ａ、３０Ｂは、パケットを送受信することが可能な情報端末である。端末３０Ａは、ネットワーク５０上のスイッチ２０Ａに通信可能に接続されている。端末３０Ｂは、ネットワーク５０上のスイッチ２０Ｄに通信可能に接続されている。
【０１４９】
次に、実施形態４に係るネットワーク制御システムにおけるネットワーク制御装置の動作について図面を用いて説明する。図１４は、実施形態４に係るネットワーク制御システムにおけるネットワーク制御装置の動作を模式的に示したフローチャート図である。
【０１５０】
まず、ネットワーク制御装置１０のフローエントリ管理部１３ｆは、送信元端末３０Ａと宛先端末３０Ｂとの間の経路上の各スイッチ２０Ａ〜２０Ｄ間を流れるパケットのフロー情報に対応する各スイッチ２０Ａ〜２０Ｄに対して、スイッチ２０Ａ〜２０Ｄ又は送信元端末３０Ａ若しくは宛先端末３０Ｂを転送先とする通信用フローエントリを設定する（ステップＦ１）。
【０１５１】
次に、ネットワーク制御装置１０のフローエントリ管理部１３ｆは、送信元端末３０Ａから宛先端末３０Ｂへの第１パケットに対応する入力メッセージを、通信用フローエントリが設定されているスイッチ２０Ａ〜２０Ｄのいずれかから受信したときに、フロー情報に対応する各スイッチ２０Ａ〜２０Ｄに対して、通信用フローエントリよりも優先的に、ネットワーク制御装置１０を転送先とする調査用フローエントリを設定する（ステップＦ２）。
【０１５２】
次に、ネットワーク制御装置１０のフロー情報管理部１３ｆは、送信元端末３０Ａから宛先端末３０Ｂへの第１パケットに対応する入力メッセージを、調査用フローエントリが設定されているスイッチ２０Ａから受信したときに、入力メッセージに対応するフロー情報を抽出し、入力メッセージに含まれたスイッチ情報（ここではスイッチ２０Ａの情報）に基づいて、抽出されたフロー情報におけるスイッチ情報に対応するパケット数をカウントする（ステップＦ３）。
【０１５３】
次に、ネットワーク制御装置１０のフローエントリ管理部１３ｆは、入力メッセージに含まれたスイッチ情報に対応するスイッチ２０Ａから調査用フローエントリを削除する（ステップＦ４）。これにより、スイッチ２０Ａは、通信用フローエントリに基づいてパケットを転送することになる。
【０１５４】
その後、ネットワーク制御装置１０は、スイッチ２０Ｂ〜２０ＤについてもステップＦ３及びステップＦ４を行う。このとき、ネットワーク制御装置１０は、ＰＡＣＫＥＴ＿ＩＮメッセージが送信されてこないときに、そのスイッチ２０Ｂ〜２０Ｄのいずれかの先で障害が発生したものと特定することができる。
【０１５５】
実施形態４によれば、ネットワーク制御装置１０によって制御される複数のスイッチ２０Ａ〜２０Ｄを有するネットワーク制御システム１において、障害が発生したときに端末３０Ａ、３０Ｂ間の経路上の各スイッチ２０Ａ〜２０Ｄに調査用フローエントリを設定し、発信元の端末３０Ａからのパケットが到達したスイッチから調査用フローエントリを削除することで、障害発生時にパケットが到達しているスイッチ２０Ａ〜２０Ｄ及びフローエントリを少ない労力で特定することができる。
【０１５６】
（付記）
本発明では、前記第１の視点に係るネットワーク制御装置の形態が可能である。
【０１５７】
前記第１の視点に係るネットワーク制御装置において、前記送信元端末から前記宛先端末への第１パケットに対応する入力メッセージを、フローエントリが設定されていない、又は、前記ネットワーク制御装置を転送先とする初期用フローエントリが設定された前記スイッチのいずれかから受信したときに、前記送信元端末と前記宛先端末との間の経路を計算し管理する経路制御部をさらに備え、前記フロー情報管理部は、前記経路制御部で計算された前記経路に基づいて前記フロー情報を生成し管理するようにすることができる。
【０１５８】
前記第１の視点に係るネットワーク制御装置において、前記フロー情報管理部は、ユーザ端末によって入力された前記フロー情報を管理するようにすることができる。
【０１５９】
前記第１の視点に係るネットワーク制御装置において、前記フローエントリ管理部は、前記フロー情報でカウントされたパケット数が所定の閾値に達したときに、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除するようにすることができる。
【０１６０】
前記第１の視点に係るネットワーク制御装置において、前記フローエントリ管理部は、ユーザ端末の操作によって、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチから前記調査用フローエントリを削除するようにすることができる。
【０１６１】
前記第１の視点に係るネットワーク制御装置において、前記フローエントリ管理部は、前記調査用フローエントリを削除する際、前記入力メッセージに含まれた前記スイッチ情報に対応する前記スイッチに削除メッセージを送信するようにすることができる。
【０１６２】
前記第１の視点に係るネットワーク制御装置において、前記送信元端末を宛先として、前記第１パケットに対応する前記入力メッセージに応答する第２パケットを生成し、生成された前記第２パケットを前記送信元端末に送信させるための出力メッセージを生成し、生成された前記出力メッセージを、前記送信元端末が接続された前記スイッチに送信する前記メッセージ処理部をさらに備えるようにすることができる。
【０１６３】
前記第１の視点に係るネットワーク制御装置において、前記出力メッセージは、ＯｐｅｎＦｌｏｗメッセージであるようにすることができる。
【０１６４】
前記第１の視点に係るネットワーク制御装置において、前記第１パケットは、Ｅｃｈｏメッセージであり、前記第２パケットは、Ｅｃｈｏ＿Ｒｅｐｌｙメッセージであるようにすることができる。
【０１６５】
前記第１の視点に係るネットワーク制御装置において、前記第１パケットは、ＴＴＬの値を含むＩＰパケットであり、前記第２パケットは、前記送信元端末のＩＰアドレスを含むＴｉｍｅ＿Ｅｘｃｅｅｄｅｄメッセージであるようにすることができる。
【０１６６】
前記第１の視点に係るネットワーク制御装置において、前記第１パケットは、ＵＤＰパケット又はＴＣＰパケットであるようにすることができる。
【０１６７】
前記第１の視点に係るネットワーク制御装置において、前記フロー情報管理部は、前記送信元端末から前記送信元端末への第１パケットに対応する入力メッセージが送信されてこないときに、前記フロー情報を抽出し、前記フロー情報の内容に基づいて障害箇所を特定するようにすることができる。
【０１６８】
前記第１の視点に係るネットワーク制御装置において、前記フロー情報管理部は、ユーザ端末からフロー情報が要求されたときに、前記フロー情報を前記ユーザ端末に提供するようにすることができる。
【０１６９】
本発明では、前記第２の視点に係るネットワーク制御システムの形態が可能である。
【０１７０】
本発明では、前記第３の視点に係るネットワーク制御方法の形態が可能である。
【０１７１】
本発明では、前記第４の視点に係るネットワーク制御プログラムの形態が可能である。
【０１７２】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（特許請求の範囲及び図面を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択（必要により不選択）が可能である。すなわち、本発明は、請求の範囲及び図面を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。また、本願に記載の数値及び数値範囲については、明記がなくともその任意の中間値、下位数値、及び、小範囲が記載されているものとみなされる。
【符号の説明】
【０１７３】
１  ネットワーク制御システム
１０  コントローラ（ネットワーク制御装置）
１１  通信部
１２  記憶部
１２ａ  スイッチ情報
１２ｂ  フロー情報
１２ｃ  端末情報
１３  制御部
１３ａ  スイッチ管理部
１３ｂ  経路制御部
１３ｃ  フロー情報管理部
１３ｄ  端末管理部
１３ｅ  メッセージ処理部
１３ｆ  フローエントリ制御部
２０Ａ〜２０Ｄ  スイッチ
２１  パケット転送部
２２  フローエントリ格納部
３０Ａ  端末（送信元端末）
３０Ｂ  端末（宛先端末）
４０  ユーザ端末
５０  ネットワーク
【図１】
2018164155.tif 000003
【図２】
2018164155.tif 000004
【図３】
2018164155.tif 000005
【図４】
2018164155.tif 000006
【図５】
2018164155.tif 000007
【図６】
2018164155.tif 000008
【図７】
2018164155.tif 000009
【図８】
2018164155.tif 000010
【図９】
2018164155.tif 000011
【図１０】
2018164155.tif 000012
【図１１】
2018164155.tif 000013
【図１２】
2018164155.tif 000014
【図１３】
2018164155.tif 000015
【図１４】
2018164155.tif 000016