(57)【特許請求の範囲】
【請求項１】
パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行う複数のスイッチと、
前記複数のスイッチの各々に対して、前記複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定し、前記各スイッチから、前記巡回用フローエントリを削除した旨の通知を受信した場合、前記複数のスイッチ間の障害を検出するコントローラと
を含み、
前記コントローラは、
前記巡回用フローエントリに、パケットが入ってきたポートに当該パケットを転送する旨のアクションと、マッチするパケットが到着しなくなってからの有効期間を示す遊休時間と、を指定して前記各スイッチに設定する手段と、
前記巡回パケットを作成して前記各スイッチに送信する手段と、
前記各スイッチから、前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信する手段と、
前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信した際に、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを利用して一定のリトライ回数でトポロジー検査を行う手段と、
前記ＬＬＤＰパケットを利用したトポロジー検査でも相互接続関係を確認できない場合、前記複数のスイッチ間に障害が発生したと判断する手段と
を具備する
ネットワークシステム。
【請求項２】
複数のスイッチの各々に対して、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを設定する手段と、
前記複数のスイッチの各々に対して、前記複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定する手段と、
前記各スイッチから、前記巡回用フローエントリを削除した旨の通知を受信した場合、前記複数のスイッチ間の障害を検出する手段と、
前記巡回用フローエントリに、パケットが入ってきたポートに当該パケットを転送する旨のアクションと、マッチするパケットが到着しなくなってからの有効期間を示す遊休時間と、を指定して前記各スイッチに設定する手段と、
前記巡回パケットを作成して前記各スイッチに送信する手段と、
前記各スイッチから、前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信する手段と、
前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信した際に、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを利用して一定のリトライ回数でトポロジー検査を行う手段と、
前記ＬＬＤＰパケットを利用したトポロジー検査でも相互接続関係を確認できない場合、前記複数のスイッチ間に障害が発生したと判断する手段と
を具備する
コントローラ。
【請求項３】
計算機により実施されるトポロジー管理方法であって、
コントローラとして、複数のスイッチの各々に対して、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを設定することと、
前記複数のスイッチの各々に対して、前記複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定することと、
前記各スイッチから、前記巡回用フローエントリを削除した旨の通知を受信した場合、前記複数のスイッチ間の障害を検出することと、
前記巡回用フローエントリに、パケットが入ってきたポートに当該パケットを転送する旨のアクションと、マッチするパケットが到着しなくなってからの有効期間を示す遊休時間と、を指定して前記各スイッチに設定することと、
前記巡回パケットを作成して前記各スイッチに送信することと、
前記各スイッチから、前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信することと、
前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信した際に、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを利用して一定のリトライ回数でトポロジー検査を行うことと、
前記ＬＬＤＰパケットを利用したトポロジー検査でも相互接続関係を確認できない場合、前記複数のスイッチ間に障害が発生したと判断することと
を含む
トポロジー管理方法。
【請求項４】
コントローラとして、複数のスイッチの各々に対して、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを設定するステップと、
前記複数のスイッチの各々に対して、前記複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定するステップと、
前記各スイッチから、前記巡回用フローエントリを削除した旨の通知を受信した場合、前記複数のスイッチ間の障害を検出するステップと、
前記巡回用フローエントリに、パケットが入ってきたポートに当該パケットを転送する旨のアクションと、マッチするパケットが到着しなくなってからの有効期間を示す遊休時間と、を指定して前記各スイッチに設定するステップと、
前記巡回パケットを作成して前記各スイッチに送信するステップと、
前記各スイッチから、前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信するステップと、
前記遊休時間が経過した巡回用フローエントリを削除した旨の通知を受信した際に、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）パケットを利用して一定のリトライ回数でトポロジー検査を行うステップと、
前記ＬＬＤＰパケットを利用したトポロジー検査でも相互接続関係を確認できない場合、前記複数のスイッチ間に障害が発生したと判断するステップと
を計算機に実行させるためのプログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にネットワークシステムを構成するスイッチの物理トポロジーの管理方法に関する。
【背景技術】
【０００２】
［ＣＤ分離型ネットワークの説明］
ネットワークシステムの制御方式の１つとして、外部の制御装置（コントロールプレーン）からノード装置（データプレーン）を制御するＣＤ（Ｃ：コントロールプレーン／Ｄ：データプレーン）分離型ネットワークが提案されている。【０００３】
ＣＤ分離型ネットワークの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークが挙げられる。オープンフロー技術の詳細については、非特許文献１（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ１．１．０）に記載されている。なお、オープンフローネットワークは一例に過ぎない。【０００４】
［オープンフローネットワークの説明］
オープンフローネットワークでは、オープンフローコントローラ（ＯＦＣ：ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）が、オープンフロースイッチ（ＯＦＳ：ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）のフローテーブルを操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージであるオープンフローメッセージ（ＯｐｅｎＦｌｏｗ  Ｍｅｓｓａｇｅ）を用いてスイッチを制御するためのセキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。【０００５】
以下、記載の簡略化のため、オープンフローコントローラ（ＯＦＣ）を「コントローラ（ＯＦＣ）」と表記し、オープンフロースイッチ（ＯＦＳ）を「スイッチ（ＯＦＳ）」と表記する。また、コントローラとスイッチとの間で、セキュアチャンネルにより構成されたネットワークを、「セキュアチャンネルネットワーク」と呼ぶ。【０００６】
オープンフローネットワークにおけるスイッチ（ＯＦＳ）とは、オープンフローネットワークを構成し、コントローラ（ＯＦＣ）の制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケット（ｐａｃｋｅｔ）の受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【０００７】
パケットは、フレーム（ｆｒａｍｅ）と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位（ＰＤＵ：Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）の違いに過ぎない。パケットは、「ＴＣＰ／ＩＰ」（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のＰＤＵである。一方、フレームは、「Ｅｔｈｅｒｎｅｔ（登録商標）」のＰＤＵである。【０００８】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の動作（アクション）を定義したフローエントリ（Ｆｌｏｗ  Ｅｎｔｒｙ）が登録されたテーブルである。【０００９】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（ｄｓｔ：Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（ｓｒｃ：Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部（又は全部）を、正規表現やワイルドカード「＊」等で表現したものを設定することもできる。【００１０】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチ（ＯＦＳ）は、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチ（ＯＦＳ）は、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいて、パケットのヘッダを書き換える。【００１１】
スイッチ（ＯＦＳ）は、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。【００１２】
なお、オープンフローでは、コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）側のフローエントリを把握・管理するため、スイッチ（ＯＦＳ）側のフローエントリのコピー（複写）を保持している。例えば、コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）のフローテーブルと同じフローテーブルを保持している。【００１３】
［オープンフローネットワークにおけるトポロジー検出の現状］
オープンフローネットワークでは、コントローラ（ＯＦＣ）は、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）やＯＦＤＰ（ＯｐｅｎＦｌｏｗ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）等のトポロジーディスカバリープロトコル（Ｔｏｐｏｌｏｇｙ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）を利用し、隣接スイッチ（ＯｓＦＳ）間の接続情報を収集する。なお、ＯＦＤＰは、ＬＬＤＰを拡張したオープンフロー用のトポロジー検出プロトコルである。【００１４】
また、コントローラ（ＯＦＣ）は、収集した隣接スイッチ（ＯＦＳ）間の接続情報に基づいて、オープンフローネットワーク全体のトポロジーを検出する。オープンフローネットワーク全体のトポロジーの例として、スイッチ（ＯＦＳ）間の接続情報や、接続用ポートの情報等が考えられる。【００１５】
コントローラ（ＯＦＣ）は、検出したスイッチ（ＯＦＳ）の接続情報に基づいて、スイッチ（ＯＦＳ）間の相互接続ポートや、各スイッチ（ＯＦＳ）と通信端末機器（ホスト）との接続ポートに、適切なフローエントリを設定することで、オープンフローネットワーク内の通信を実現する。【００１６】
更に、運用中に、相互接続ポート間のリンクダウン以外の障害を検出するため、コントローラ（ＯＦＣ）は、各スイッチ（ＯＦＳ）に対して、定期的に、ＬＬＤＰやＯＦＤＰ等のトポロジーディスカバリーパケット（ＴＤＰ：Ｔｏｐｏｌｏｇｙ  Ｄｉｓｃｏｖｅｒｙ  Ｐａｃｋｅｔ）を送信するように指示する。【００１７】
各スイッチ（ＯＦＳ）は、ポート状態メッセージ（ＰＳＭ：Ｐｏｒｔ  Ｓｔａｔｕｓ  Ｍｅｓｓａｇｅ）をコントローラ（ＯＦＣ）に送信する。【００１８】
コントローラ（ＯＦＣ）は、各スイッチ（ＯＦＳ）から送信されたポート状態メッセージ（ＰＳＭ）の通知を受信する。これにより、相互接続ポート間のリンクダウンの障害の発生時にはリンクダウンの障害を検出する。【００１９】
以上のように、コントローラ（ＯＦＣ）は、検出したオープンフローネットワークトポロジーを維持・更新する。【００２０】
［既存のオープンフローネットワークにおけるトポロジー検出・維持の手順］
図１を参照して、既存のオープンフローネットワークにおけるトポロジー検出・維持の手順について説明する。【００２１】
ここでは、説明の簡略化のため、１台のコントローラ（ＯＦＣ）と、２台のスイッチ（ＯＦＳ）で構成されるオープンフローネットワークを例に説明する。【００２２】
既存のオープンフローネットワークは、コントローラ（ＯＦＣ）１０と、スイッチ（ＯＦＳ）２０−１と、スイッチ（ＯＦＳ）２０−２を含む。【００２３】
コントローラ（ＯＦＣ）１０は、セキュアチャンネルネットワーク１００を介して、スイッチ（ＯＦＳ）２０−１及びスイッチ（ＯＦＳ）２０−２と接続されている。セキュアチャンネルネットワーク１００には、コントローラ（ＯＦＣ）とスイッチ（ＯＦＳ）間のコントロール信号が流れる。コントロール信号の１つに、オープンフローメッセージがある。【００２４】
コントローラ（ＯＦＣ）１０は、パケット出力メッセージ（ＰＯＭ：Ｐａｃｋｅｔ−Ｏｕｔ  Ｍｅｓｓａｇｅ）３０−１にトポロジーディスカバリーパケット（ＴＤＰ）３０−２を格納し、セキュアチャンネルネットワーク１００を介して、パケット出力メッセージ（ＰＯＭ）３０−１をスイッチ（ＯＦＳ）２０−１に送信する。なお、パケット出力メッセージ（ＰＯＭ）３０−１は、オープンフローメッセージの１つである。【００２５】
スイッチ（ＯＦＳ）２０−１は、接続ポート２１−１を備える。スイッチ（ＯＦＳ）２０−２は、接続ポート２１−２を備える。接続ポート２１−１及び接続ポート２１−２は、スイッチ（ＯＦＳ）間の接続ポートである。接続ポート２１−１及び接続ポート２１−２は、スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２を接続する。【００２６】
スイッチ（ＯＦＳ）２０−１は、パケット出力メッセージ（ＰＯＭ）３０−１に格納されたトポロジーディスカバリーパケット（ＴＤＰ）３０−２を取得し、トポロジーディスカバリーパケット（ＴＤＰ）３０−２を接続ポート２１−１に伝送する。【００２７】
トポロジーディスカバリーパケット（ＴＤＰ）３０−２は、スイッチ（ＯＦＳ）２０−１の接続ポート２１−１からスイッチ（ＯＦＳ）２０−２の接続ポート２１−２に到達する。【００２８】
スイッチ（ＯＦＳ）２０−２は、受信したトポロジーディスカバリーパケット（ＴＤＰ）３０−２をパケット入力メッセージ（ＰＩＭ：Ｐａｃｋｅｔ−Ｉｎ  Ｍｅｓｓａｇｅ）３０−３に格納し、セキュアチャンネルネットワーク１００を介して、パケット入力メッセージ（ＰＩＭ）３０−３をコントローラ（ＯＦＣ）１０に送信する。なお、パケット入力メッセージ（ＰＩＭ）３０−３は、オープンフローメッセージの１つである。【００２９】
以下に、具体的な処理について説明する。【００３０】
［初期設定処理］
まず、トポロジー検出処理の開始前に行うべき初期設定処理について説明する。【００３１】
コントローラ（ＯＦＣ）１０は、各スイッチ（ＯＦＳ）に、トポロジーディスカバリーパケット（ＴＤＰ）用のフローエントリを設定する。【００３２】
コントローラ（ＯＦＣ）１０は、このフローエントリの整合領域（ＭＦ：Ｍａｔｃｈ  Ｆｉｅｌｄ）に、トポロジーディスカバリーパケット（ＴＤＰ）３０−２がマッチする整合値（ＭＶ：Ｍａｔｃｈ  Ｖａｌｕｅ）を指定する。すなわち、整合領域（ＭＦ）の整合値（ＭＶ）がフローエントリのルールとなる。【００３３】
コントローラ（ＯＦＣ）１０は、このフローエントリのアクション領域（ＡＦ：Ａｃｔｉｏｎ  Ｆｉｅｌｄ）に、アクション（Ａｃｔｉｏｎ）として、「コントローラ（ＯＦＣ）１０に対して、トポロジーディスカバリーパケット（ＴＤＰ）に関するパケット入力メッセージ（ＰＩＭ）を送信する」と指定する。すなわち、アクション領域（ＡＦ）のアクションがフローエントリのアクションとなる。【００３４】
したがって、各スイッチ（ＯＦＳ）は、受信したトポロジーディスカバリーパケット（ＴＤＰ）３０−２が、上記のフローエントリにマッチした場合、コントローラ（ＯＦＣ）１０に対して、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に関するパケット入力メッセージ（ＰＩＭ）３０−３を送信することになる。【００３５】
このとき、各スイッチ（ＯＦＳ）は、このパケット入力メッセージ（ＰＩＭ）３０−３のデータ領域（ＤＦ：Ｄａｔａ  Ｆｉｅｌｄ）に、トポロジーディスカバリーパケット（ＴＤＰ）３０−２を格納する。【００３６】
また、各スイッチ（ＯＦＳ）は、このパケット入力メッセージ（ＰＩＭ）３０−３に、当該スイッチ（ＯＦＳ）の「ＤＰＩＤ」と「Ｐｏｒｔ」を格納する。【００３７】
「ＤＰＩＤ」（Ｄｅｌｉｖｅｒｙ  Ｐｏｉｎｔ  Ｉｄｅｎｔｉｆｉｅｒ）は、スイッチ（ＯＦＳ）の識別情報である。【００３８】
ここでは、スイッチ（ＯＦＳ）２０−１の「ＤＰＩＤ」を、「ＯＦＳ１−ＤＰＩＤ」とする。また、スイッチ（ＯＦＳ）２０−２の「ＤＰＩＤ」を、「ＯＦＳ２−ＤＰＩＤ」とする。【００３９】
「Ｐｏｒｔ」は、スイッチ（ＯＦＳ）の接続ポートの識別情報である。【００４０】
ここでは、スイッチ（ＯＦＳ）２０−１の接続ポート２１−１の「Ｐｏｒｔ」を、「Ｐｏｒｔ１」とする。また、スイッチ（ＯＦＳ）２０−２の接続ポート２１−２の「Ｐｏｒｔ」を、「Ｐｏｒｔ２」とする。【００４１】
［トポロジー検出処理］
次に、初期設定処理の完了後に行われるトポロジー検出処理について説明する。【００４２】
コントローラ（ＯＦＣ）１０は、初期設定処理完了後、各スイッチ（ＯＦＳ）のリンクアップしたポートに、セキュアチャンネルネットワーク経由で、オープンフローメッセージとして、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に関するパケット出力メッセージ（ＰＯＭ）３０−１を送信する。【００４３】
このとき、コントローラ（ＯＦＣ）１０は、送信するパケット出力メッセージ（ＰＯＭ）３０−１のアクション領域（ＡＦ）に、アクションとして、「当該リンクアップしたポートからトポロジーディスカバリーパケット（ＴＤＰ）を送信する」と指定する。【００４４】
また、コントローラ（ＯＦＣ）１０は、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に、パケット出力メッセージ（ＰＯＭ）３０−１の送信先であり、このトポロジーディスカバリーパケット（ＴＤＰ）３０−２の送信元となるスイッチ（ＯＦＳ）の「ＤＰＩＤ」と「Ｐｏｒｔ」を指定する。【００４５】
図１の例では、パケット出力メッセージ（ＰＯＭ）３０−１の送信先であり、トポロジーディスカバリーパケット（ＴＤＰ）３０−２の送信元となるスイッチ（ＯＦＳ）は、スイッチ（ＯＦＳ）２０−１である。【００４６】
したがって、コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０−１に対して、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に関するパケット出力メッセージ（ＰＯＭ）３０−１を送信する。【００４７】
このとき、コントローラ（ＯＦＣ）１０は、このパケット出力メッセージ（ＰＯＭ）３０−１のデータ領域（ＤＦ）に、トポロジーディスカバリーパケット（ＴＤＰ）３０−２を格納する。【００４８】
また、コントローラ（ＯＦＣ）１０は、このパケット出力メッセージ（ＰＯＭ）３０−１のアクション領域（ＡＦ）に、アクションとして、「スイッチ（ＯＦＳ）２０−１の接続ポート２１−１からトポロジーディスカバリーパケット（ＴＤＰ）３０−２を送信する」と指定する。【００４９】
また、コントローラ（ＯＦＣ）１０は、このトポロジーディスカバリーパケット（ＴＤＰ）３０−２に、当該スイッチ（ＯＦＳ）２０−１の「ＤＰＩＤ」と「Ｐｏｒｔ」として、「ＯＦＳ１−ＤＰＩＤ」と「Ｐｏｒｔ１」を格納する。「ＯＦＳ１−ＤＰＩＤ」は、スイッチ（ＯＦＳ）２０−１の識別情報である。このスイッチ（ＯＦＳ）２０−１は、このトポロジーディスカバリーパケット（ＴＤＰ）３０−２の送信元となるスイッチ（ＯＦＳ）である。「Ｐｏｒｔ１」は、接続ポート２１−１の識別情報である。この接続ポート２１−１は、トポロジーディスカバリーパケット（ＴＤＰ）３０−２の送信ポートである。【００５０】
スイッチ（ＯＦＳ）２０−１は、コントローラ（ＯＦＣ）１０から、上記のパケット出力メッセージ（ＰＯＭ）３０−１を受信する。【００５１】
スイッチ（ＯＦＳ）２０−１は、パケット出力メッセージ（ＰＯＭ）３０−１のデータ領域（ＤＦ）に格納されたトポロジーディスカバリーパケット（ＴＤＰ）３０−２を取得する。【００５２】
スイッチ（ＯＦＳ）２０−１は、このパケット出力メッセージ（ＰＯＭ）３０−１のアクション領域（ＡＦ）に指定されたアクションに基づき、このトポロジーディスカバリーパケット（ＴＤＰ）３０−２を接続ポート２１−１から送信する。【００５３】
図１に示すように、スイッチ（ＯＦＳ）２０−１の接続ポート２１−１は、スイッチ（ＯＦＳ）２０−２の接続ポート２１−２と接続されている。したがって、スイッチ（ＯＦＳ）２０−１の接続ポート２１−１から送信されたトポロジーディスカバリーパケット（ＴＤＰ）３０−２は、スイッチ（ＯＦＳ）２０−２の接続ポート２１−２に到達する。【００５４】
スイッチ（ＯＦＳ）２０−２は、接続ポート２１−２で、トポロジーディスカバリーパケット（ＴＤＰ）３０−２を受信する。【００５５】
スイッチ（ＯＦＳ）２０−２は、受信したトポロジーディスカバリーパケット（ＴＤＰ）３０−２が、初期設定処理で設定されたフローエントリにマッチした場合、コントローラ（ＯＦＣ）１０に対して、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に関するパケット入力メッセージ（ＰＩＭ）３０−３を送信する。【００５６】
このとき、スイッチ（ＯＦＳ）２０−２は、このパケット入力メッセージ（ＰＩＭ）３０−３に、当該スイッチ（ＯＦＳ）２０−２の「ＤＰＩＤ」と「Ｐｏｒｔ」として、「ＯＦＳ２−ＤＰＩＤ」と「Ｐｏｒｔ２」を格納する。「ＯＦＳ２−ＤＰＩＤ」は、スイッチ（ＯＦＳ）２０−２の識別情報である。このスイッチ（ＯＦＳ）２０−２は、パケット入力メッセージ（ＰＩＭ）３０−３の送信元となるスイッチ（ＯＦＳ）である。「Ｐｏｒｔ２」は、接続ポート２１−２の識別情報である。この接続ポート２１−２は、トポロジーディスカバリーパケット（ＴＤＰ）３０−２の受信ポートである。【００５７】
また、スイッチ（ＯＦＳ）２０−２は、このパケット入力メッセージ（ＰＩＭ）３０−３のデータ領域（ＤＦ）に、トポロジーディスカバリーパケット（ＴＤＰ）３０−２を格納する。【００５８】
コントローラ（ＯＦＣ）１０は、上記のパケット入力メッセージ（ＰＩＭ）３０−３を受信する。【００５９】
コントローラ（ＯＦＣ）１０は、このパケット入力メッセージ（ＰＩＭ）３０−３に格納された送信元のスイッチ（ＯＦＳ）２０−２の「ＯＦＳ２−ＤＰＩＤ」と「Ｐｏｒｔ２」を取得する。【００６０】
また、コントローラ（ＯＦＣ）１０は、このパケット入力メッセージ（ＰＩＭ）３０−３のデータ領域（ＤＦ）に格納されたトポロジーディスカバリーパケット（ＴＤＰ）３０−２を取得し、トポロジーディスカバリーパケット（ＴＤＰ）３０−２に格納されたスイッチ（ＯＦＳ）２０−１の「ＯＦＳ１−ＤＰＩＤ」と「Ｐｏｒｔ１」を取得する。【００６１】
これにより、コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０−１の接続ポート２１−１がスイッチ（ＯＦＳ）２０−２の接続ポート２１−２と接続していることを検出する。【００６２】
また、コントローラ（ＯＦＣ）１０は、上記と同様の仕組みで、逆方向にトポロジーディスカバリーパケット（ＴＤＰ）３０−２を流し、スイッチ（ＯＦＳ）２０−２の接続ポート２１−２がスイッチ（ＯＦＳ）２０−１の接続ポート２１−１と接続していることを検出する。【００６３】
更に、コントローラ（ＯＦＣ）１０は、運用中に、一定的なインターバル／リトライ回数で、上記のトポロジーディスカバリーパケット（ＴＤＰ）３０−２と、上記の仕組みを利用し、検出したトポロジーを維持・更新する。【００６４】
なお、ＤＰＩＤ、パケット入力メッセージ（ＰＩＭ）３０−３、パケット出力メッセージ（ＰＯＭ）３０−１、フローエントリの仕様については、非特許文献１（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ１．１．０）によって規定されている。【００６５】
［検出したトポロジーの維持・更新における問題点］
上記の既存のオープンフローネットワークにおけるトポロジー検出・維持の手順は、オープンフローネットワークにおけるトポロジーの初期検出には有用であるが、検出したトポロジーを維持・更新する場合には、以下の（１）〜（３）のような問題点がある。【００６６】
（１）セキュアチャンネルネットワークへの負荷が高まる。【００６７】
コントローラ（ＯＦＣ）は、検出したトポロジーを維持・更新するために、各スイッチ（ＯＦＳ）の全リンクアップしたポートに定期的にトポロジーディスカバリーパケット（ＴＤＰ）をセキュアチャンネルネットワークに流す必要がある。【００６８】
また、各スイッチ（ＯＦＳ）も受信したトポロジーディスカバリーパケット（ＴＤＰ）をセキュアチャンネルネットワーク経由でコントローラ（ＯＦＣ）に流す必要がある。【００６９】
１つの双方向接続関係を維持・更新するため、一回のトポロジー走査で４個のトポロジーディスカバリーパケット（ＴＤＰ）がセキュアチャンネルネットワーク上に流れる。【００７０】
（２）検出したトポロジーを維持・更新はコントローラ（ＯＦＣ）走査方法を利用するので、トポロジー変更があると、その変更を検出するために時間がかかる。【００７１】
トポロジー変更を検出するタイミングは、運用中にコントローラ（ＯＦＣ）がトポロジーディスカバリーパケット（ＴＤＰ）を出すインターバル時間と、スイッチ（ＯＦＳ）からのトポロジーディスカバリーパケット（ＴＤＰ）のリプライタイムアウトに依存する。【００７２】
インターバル時間とリプライタイムアウトが短ければ短いほど素早く検出できるが、その代わりに、セキュアチャンネルネットワーク上のスイッチ（ＯＦＳ）への負荷が増大し、発生していないトポロジー変更を誤検出するリスクが増大する。【００７３】
（３）既存の多くのスイッチ（ＯＦＳ）は、従来のレガシースイッチ（ｌｅｇａｃｙ  ｓｗｉｔｃｈ）に、オープンフローに対応したファームウェア（ｆｉｒｍｗａｒｅ）を実装することで実現されている。【００７４】
例えば、スイッチ（ＯＦＳ）は、オープンフローメッセージの処理において、「パケットがマッチしたフローエントリを検索し、マッチしたフローエントリに指定されたアクションに従ってパケットを処理する部分」以外の処理部分については、従来のレガシースイッチの汎用プロセッサを利用し、ソフトウェア（ｓｏｆｔｗａｒｅ）で実現している。【００７５】
汎用プロセッサのリソースは非常に限られているので、処理する必要があるオープンフローメッセージのロード（ｌｏａｄ：読込）が増大すると、計算リソース不足で、オープンフローメッセージの処理が遅延したり、オープンフローメッセージ自体が消失（ロスト）したりする可能性が大きい。【００７６】
そのため、このようなスイッチ（ＯＦＳ）を利用したオープンフローネットワークでは、上記の既存のオープンフローネットワークにおけるトポロジー検出・維持の手順を利用すると、コントローラ（ＯＦＣ）は、発生していないトポロジー変更を誤検出し、システムを通信不能の状態に陥らせる可能性が非常に高い。【００７７】
関連する技術として、特許文献１（特開２００３−１４３１６９号公報）にルーティングブリッジシステムが開示されている。このルーティングブリッジシステムでは、複数のノードをリング状に接続したリング状ネットワークが接続ノードを介して複数接続されたネットワークの、データリンクレイヤのアドレスを用いてデータの送信経路を決定する。各ノードは、所属するリング上の各ノード間のノード間スパニングツリーの作成を行うノードツリー作成部を備える。各接続ノードは、所属する各リング上の各ノード間のノード間スパニングツリーの作成を行うノードツリー作成部と、各リングを論理リンクに見立てた、各リング間のリング間スパニングツリーの作成を行うリング間ツリー作成部を備える。【００７８】
また、特許文献２（特開２００６−３４０３６１号公報）にホームネットワークのコネクショントポロジーの決定方法が開示されている。このホームネットワークのコネクショントポロジーの決定方法は、多重のハブ及びスイッチの周辺に配置されている複数のノードによって構成されているホームネットワークのコネクショントポロジーを決定するための方法である。この方法は、該複数のノードによってトポロジー決定メッセージをランダムなシーケンスにおいて１つずつ伝送し、該トポロジー決定メッセージの受信に基づいてノードの全てのコネクショントポロジーを１つずつ決定し、ノードの全てのローカルノードのリストを生成しかつ更新するステップを有している。トポロジー決定メッセージは、２つの連続するパケットを含んでいる。第１のパケットは、それをトポロジー決定パケットと識別する予め定めたペイロードを備えているブロードキャストパケットである。第２のパケットは、同じコンテント及び非実在デスティネーションＭＡＣアドレスを備えているユニキャストパケットである。【００７９】
また、特許文献３（特開２００８−１７２４４９号公報）にネットワークの論理トポロジーを検出するトポロジー検出方法が開示されている。この関連技術では、通信装置は、ポート番号と送信元ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとを対応付けた転送情報を記録している。管理装置が、ＴＴＬ（Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ）を１から順に１増分する毎に、該ＴＴＬを含むトレース要求を通信装置へ送信する。次に、通信装置が、ＴＴＬ＝１のトレース要求に対して、転送情報を含むトレース応答を管理装置へ返信する。そして、管理装置が、受信したトレース応答から転送情報を取得し、ネットワークの装置トポロジーにおけるポートトポロジを導出する。【００８０】
また、特許文献４（特開２００９−１１１９７６号公報）に無線メッシュ型ネットワークの構成及び最適化が開示されている。この関連技術では、ネットワーク設計ツールは、無線ネットワーク内でのノード及び機器の追加、除去、及び位置決めのための対話式グラフィックインターフェースと、閾値、ネットワークトポロジ選択、経路指定設定、及び無線メッシュ型ネットワーク内での通信経路及びスケジュールの生成及び最適化に関連するその他の構成パラメータを指定するための複数の対話式画面を含むメニューと、を提供する。ネットワーク設計ツールは、最適化規則の集合をユーザが入力するパラメータと共にネットワークモデルに自動的に適用して効率のよいネットワーク構成データを生成する。
【先行技術文献】
【特許文献】
【００８１】
【特許文献１】特開２００３−１４３１６９号公報
【特許文献２】特開２００６−３４０３６１号公報
【特許文献３】特開２００８−１７２４４９号公報
【特許文献４】特開２００９−１１１９７６号公報
【非特許文献】
【００８２】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ”，［ｏｎｌｉｎｅ］，Ｆｅｂｒｕａｒｙ  ２８，  ２０１１，インターネット（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．１．０．ｐｄｆ）
【発明の概要】
【００８３】
本発明の目的は、オープンフローネットワーク等において、コントローラがスイッチ間のネットワークが高遅延な状況でのスイッチの物理トポロジーの維持・更新を行うネットワークシステムを提供することである。
【００８４】
本発明に係るネットワークシステムは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行う複数のスイッチと、複数のスイッチの各々に対して、フローエントリの設定を行うコントローラとを含む。コントローラは、複数のスイッチの各々に対して、複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定し、各スイッチから、巡回用フローエントリを削除した旨の通知を受信した場合、複数のスイッチ間の障害を検出する。
【００８５】
本発明に係るコントローラは、複数のスイッチの各々に対して、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを設定する機構と、複数のスイッチの各々に対して、複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定する機構と、各スイッチから、巡回用フローエントリを削除した旨の通知を受信した場合、複数のスイッチ間の障害を検出する機構とを備える。
【００８６】
本発明に係るトポロジー管理方法は、計算機により実施されるトポロジー管理方法であって、コントローラとして、複数のスイッチの各々に対して、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリを設定することと、複数のスイッチの各々に対して、複数のスイッチ間で相互に送受信される巡回パケットが到着しなくなった場合に削除される巡回用フローエントリを設定することと、各スイッチから、巡回用フローエントリを削除した旨の通知を受信した場合、複数のスイッチ間の障害を検出することとを含む。
【００８７】
本発明に係るプログラムは、上記のトポロジー管理方法における処理を、コントローラとして使用される計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００８８】
これにより、オープンフローネットワーク等において、トポロジーを維持・更新する際のセキュアチャンネルネットワーク上のスイッチの負荷を低減する。
【図面の簡単な説明】
【００８９】
【図１】既存のオープンフローネットワークにおけるトポロジー検出・維持の手順について説明するための図である。
【図２】本発明に係るネットワークシステムの構成例を示す図である。
【図３】本発明に係るトポロジーキープアライブパケットの仕様について説明するための図である。
【図４】本発明に係るパケット出力メッセージについて説明するための図である。
【図５】本発明に係るトポロジーキープアライブフローエントリの仕様について説明するための図である。
【図６】本発明に係るフローエントリ変更メッセージの仕様について説明するための図である。
【図７】本発明に係るフローエントリ削除済メッセージの仕様について説明する。
【図８】本発明に係るネットワークシステムの実施例について説明するための図である。
【発明を実施するための形態】
【００９０】
本発明は、ＣＤ分離型ネットワークを対象としている。ここでは、ＣＤ分離型ネットワークの１つであるオープンフローネットワークを例に説明する。但し、実際には、オープンフローネットワークに限定されない。
【００９１】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００９２】
本実施形態では、検出したトポロジーを維持・更新するために、「トポロジーキープアライブフローエントリ（ＴＫＡＦＥ：Ｔｏｐｏｌｏｇｙ  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ）」と、「トポロジーキープアライブパケット（ＴＫＡＰ：Ｔｏｐｏｌｏｇｙ  ＫｅｅｐＡｌｉｖｅ  Ｐａｃｋｅｔ）」を規定して利用する。
【００９３】
トポロジーキープアライブパケット（ＴＫＡＰ）は、検出したトポロジーを維持・更新するために予め規定された巡回パケットであり、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチするパケットである。
【００９４】
「トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）」や、「トポロジーキープアライブパケット（ＴＫＡＰ）」については後に詳述する。
【００９５】
［システム構成］
図２を参照して、本発明に係るネットワークシステムの構成例について説明する。
【００９６】
本発明に係るネットワークシステムは、コントローラ（ＯＦＣ）１０と、スイッチ（ＯＦＳ）２０（２０−ｉ、ｉ＝１〜ｎ：ｎは任意）を含む。
【００９７】
コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０（２０−ｉ、ｉ＝１〜ｎ）の各々（以下、各スイッチ（ＯＦＳ）２０）に対して、フローエントリを設定する。
【００９８】
コントローラ（ＯＦＣ）１０は、セキュアチャンネルネットワーク１００を介して、各スイッチ（ＯＦＳ）２０と接続されている。セキュアチャンネルネットワーク１００には、コントローラ（ＯＦＣ）とスイッチ（ＯＦＳ）間のコントロール信号が流れる。
【００９９】
各スイッチ（ＯＦＳ）２０は、パケットを受信した際、コントローラ（ＯＦＣ）１０から設定されたフローエントリと受信パケットを比較し、受信パケットのヘッダ領域（ＨＦ：Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の値が、フローエントリの整合領域（ＭＦ）の整合値（ＭＶ）とマッチした場合、このフローエントリのアクション領域（ＡＦ）に指定されたアクションを実行する。
【０１００】
［コントローラ（ＯＦＣ）の構成］
次に、コントローラ（ＯＦＣ）１０の構成例について説明する。
【０１０１】
コントローラ（ＯＦＣ）１０は、トポロジー管理部１１と、トポロジー検出部１２と、パケット梱包・振り分け処理部１３と、パケット送信部１４と、パケット受信部１５を備える。
【０１０２】
トポロジー管理部１１は、トポロジー情報保存データベースを管理しており、コントローラ（ＯＦＣ）１０が検出したオープンフローネットワークのトポロジー情報をトポロジー情報保存データベースに保存する。また、トポロジー管理部１１は、トポロジー検出部１２からトポロジー情報の更新を指示された場合、指示の内容に従って、トポロジー情報保存データベースに保存されているトポロジー情報を更新する。
【０１０３】
トポロジー検出部１２は、既存のトポロジー検出機能を有し、トポロジーを検出・維持・更新する。すなわち、トポロジー検出部１２は、従来通り、トポロジーディスカバリーパケット（ＴＤＰ）を作成し、トポロジーを検出・維持・更新することができる。また、トポロジー検出部１２は、検出したトポロジーを維持・更新するために、本実施形態において規定するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）と、トポロジーキープアライブパケット（ＴＫＡＰ）を作成する。トポロジー検出部１２は、作成した情報をパケット梱包・振り分け処理部１３に渡す。更に、トポロジー検出部１２は、パケット梱包・振り分け処理部１３から受け取ったトポロジー変更通知メッセージを解析し、トポロジー管理部１１に対し、トポロジー情報保存データベースに保存されているトポロジー情報の更新を指示する。
【０１０４】
パケット梱包・振り分け処理部１３は、トポロジー検出部１２から受け取った情報で実際のパケットを梱包し、パケット送信部１４に渡す。例えば、パケット梱包・振り分け処理部１３は、各スイッチ（ＯＦＳ）２０にトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を追加（登録）するためのフローエントリ変更メッセージ（ＭＦＥＭ：Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｍｅｓｓａｇｅ）を作成し、このフローエントリ変更メッセージ（ＭＦＥＭ）をパケット送信部１４に渡す。或いは、パケット梱包・振り分け処理部１３は、トポロジー検出部１２から受け取ったトポロジーキープアライブパケット（ＴＫＡＰ）をパケット出力メッセージ（ＰＯＭ）に格納し、このパケット出力メッセージ（ＰＯＭ）をパケット送信部１４に渡す。また、パケット梱包・振り分け処理部１３は、パケット受信部１５から受け取ったパケットを解析し、適切なモジュールに振り分ける。例えば、パケット梱包・振り分け処理部１３は、パケット受信部１５から受け取ったパケット入力メッセージ（ＰＩＭ）を解析してトポロジー変更通知メッセージを取得／作成し、このトポロジー変更通知メッセージをトポロジー検出部１２に渡す。
【０１０５】
パケット送信部１４は、セキュアチャンネルネットワーク１００を介して、パケット梱包・振り分け処理部１３から受け取ったパケットを各スイッチ（ＯＦＳ）２０に送信する。例えば、パケット送信部１４は、パケット出力メッセージ（ＰＯＭ）を各スイッチ（ＯＦＳ）２０に送信する。
【０１０６】
パケット受信部１５は、セキュアチャンネルネットワーク１００を介して、各スイッチ（ＯＦＳ）２０からパケットを受信し、受信パケットをパケット梱包・振り分け処理部１３に渡す。例えば、パケット受信部１５は、各スイッチ（ＯＦＳ）２０からパケット入力メッセージ（ＰＩＭ）を受信し、このパケット入力メッセージ（ＰＩＭ）をパケット梱包・振り分け処理部１３に渡す。
【０１０７】
［トポロジーキープアライブパケットの仕様］
図３を参照して、本発明に係るトポロジーキープアライブパケット（ＴＫＡＰ）の仕様について説明する。
【０１０８】
トポロジーキープアライブパケット（ＴＫＡＰ）として、以下の条件を満たす任意のパケットを利用することが可能である。
【０１０９】
（１）ブロードキャスト（ＢＣ）・マルチキャスト（ＭＣ）と一般的に使われているパケットタイプ以外の任意のタイプのパケット
【０１１０】
（２）非特許文献１（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ１．１．０）に規定されたフローエントリの整合領域（ＭＦ）、或いは、その一部を定義したパケット
【０１１１】
本実施形態では、パケットのオーバヘッドを小さくするため、単純なＭＡＣヘッダフレーム（Ｅｔｈｅｒ  Ｈｅａｄｅｒ  Ｆｒａｍｅ）を使用する。図３では、ＭＡＣヘッダ（Ｅｔｈｅｒ  Ｈｅａｄｅｒ）領域以外の領域の記載を省略する。
【０１１２】
トポロジー検出部１２は、ＭＡＣヘッダ（Ｅｔｈｅｒ  Ｈｅａｄｅｒ）領域のＭＡＣ送信元（Ｅｔｈｅｒ  ｓｒｃ）領域、ＭＡＣ送信先（Ｅｔｈｅｒ  ｄｓｔ）領域、及びフレームタイプ（Ｅｔｈｅｒ  Ｔｙｐｅ）領域の各々に、以下のような値を指定する。
【０１１３】
トポロジー検出部１２は、ＭＡＣ送信元（Ｅｔｈｅｒ  ｓｒｃ）領域に、ワイルドカードの「＊」を指定する。
【０１１４】
トポロジー検出部１２は、ＭＡＣ送信先（Ｅｔｈｅｒ  ｄｓｔ）領域に、「ブロードキャスト（ＢＣ）・マルチキャスト（ＭＣ）以外のＭＡＣアドレス」（Ｎｏｔ  ＢＣ／ＭＣ）を指定する。
【０１１５】
トポロジー検出部１２は、フレームタイプ（Ｅｔｈｅｒ  Ｔｙｐｅ）領域に、ＩＡＮＡ（Ｉｎｔｅｒｎｅｔ  Ａｓｓｉｇｎｅｄ  Ｎｕｍｂｅｒ  Ａｕｔｈｏｒｉｔｙ）に規定された「Ｅｘｐｅｒｉｍｅｎｔａｌ  Ｔｙｐｅ」の「０ｘ１１１１」を指定する。
【０１１６】
［パケット出力メッセージの仕様］
図４を参照して、本発明に係るパケット出力メッセージ（ＰＯＭ）の仕様について説明する。
【０１１７】
パケット出力メッセージ（ＰＯＭ）は、ヘッダ領域（ＨＦ）と、アクション領域（ＡＦ）と、データ領域（ＤＦ）を有する。
【０１１８】
ヘッダ領域（ＨＦ）は、本メッセージがパケット出力メッセージ（ＰＯＭ）である旨を示す情報を格納するための領域である。
【０１１９】
アクション領域（ＡＦ）は、データ領域（ＤＦ）に格納されたパケットを送出する送信ポートを指定するための領域である。
【０１２０】
データ領域（ＤＦ）は、トポロジーキープアライブパケット（ＴＫＡＰ）を格納するための領域である。
【０１２１】
ここでは、コントローラ（ＯＦＣ）１０は、パケット出力メッセージ（ＰＯＭ）のヘッダ領域（ＨＦ）に、「Ｔｙｐｅ  ｉｓ  Ｐａｃｋｅｔ  Ｏｕｔ」を指定する。「Ｔｙｐｅ  ｉｓ  Ｐａｃｋｅｔ  Ｏｕｔ」は、本メッセージがパケット出力メッセージ（ＰＯＭ）である旨を示す情報である。
【０１２２】
各スイッチ（ＯＦＳ）２０は、このパケット出力メッセージ（ＰＯＭ）を受信した場合、パケット出力メッセージ（ＰＯＭ）のデータ領域（ＤＦ）に格納されたトポロジーキープアライブパケット（ＴＫＡＰ）を、アクション領域（ＡＦ）に指定された送信ポートから送出する。
【０１２３】
［トポロジーキープアライブフローエントリの仕様］
図５を参照して、本発明に係るトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の仕様について説明する。
【０１２４】
トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）は、整合領域（ＭＦ）と、クッキー領域（ＣＦ：Ｃｏｏｋｉｅ  Ｆｉｅｌｄ）と、アクション領域（ＡＦ）を有する。
【０１２５】
［整合領域］
まず、整合領域（ＭＦ）について説明する。
【０１２６】
整合領域（ＭＦ）は、パケットのマッチングに使用されるエントリー項目を示す領域である。エントリー項目は、整合領域（ＭＦ）のサブフィールドである。コントローラ（ＯＦＣ）１０は、整合領域（ＭＦ）に示されたエントリー項目毎に、整合値（ＭＶ）を指定する。
【０１２７】
なお、整合領域（ＭＦ）のエントリー項目には、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）、メタデータ（Ｍｅｔａ  ｄａｔａ）、ＭＡＣ送信元（Ｅｔｈｅｒ  ｓｒｃ）、ＭＡＣ送信先（Ｅｔｈｅｒ  ｄｓｔ）、フレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）、仮想ＬＡＮ識別子（ＶＬＡＮ  ｉｄ）、仮想ＬＡＮ優先度（ＶＬＡＮ  ｐｒｉｏｒｉｔｙ）、ＭＰＬＳラベル（ＭＰＬＳ  ｌａｂｅｌ）、ＭＰＬＳトラフィッククラス（ＭＰＬＳ  ｔｒａｆｆｉｃ  ｃｌａｓｓ）、ＩＰ送信元（ＩＰ  ｓｒｃ）、ＩＰ送信先（ＩＰ  ｄｓｔ）、ＩＰプロトコル（ＩＰ  Ｐｒｏｔｏｃｏｌ）、ＩＰサービスタイプ（ＩＰ  ＴｏＳ  ｂｉｔｓ）、送信元ポート（ＴＣＰ／ＵＤＰ  ｓｒｃ  Ｐｏｒｔ）、及び送信先ポート（ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔ）等がある。
【０１２８】
入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）は、最初に本パケットを受信したポートを示す。メタデータ（Ｍｅｔａ  ｄａｔａ）は、本パケットに関する情報を示す。ＭＡＣ送信元（Ｅｔｈｅｒ  ｓｒｃ）、ＭＡＣ送信先（Ｅｔｈｅｒ  ｄｓｔ）、フレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）は、それぞれ、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス、上位層のプロトコルを識別するための１６ビットの情報を示す。ＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）は、ラベルスイッチング方式を用いたパケット転送技術である。ＭＰＬＳラベル（ＭＰＬＳ  ｌａｂｅｌ）は、ＩＰヘッダの代わりに利用される固定長の識別標識を示す。ＭＰＬＳトラフィッククラス（ＭＰＬＳ  ｔｒａｆｆｉｃ  ｃｌａｓｓ）は、異なるクラス又は優先順位の特定と識別を行うための情報を示す。ＩＰ送信元（ＩＰ  ｓｒｃ）、ＩＰ送信先（ＩＰ  ｄｓｔ）、ＩＰプロトコル（ＩＰ  Ｐｒｏｔｏｃｏｌ）、ＩＰサービスタイプ（ＩＰ  ＴｏＳ  ｂｉｔｓ）は、それぞれ、送信元ＩＰアドレス、送信先ＩＰアドレス、ＩＰプロトコル番号、ＴＯＳオクテット（ＩＰパケットのヘッダ中に含まれる８ビットのオクテット部分）を示す。ＴＯＳオクテットは、通信のサービス品質（ＱｏＳ）を制御する目的で，処理の優先度を指定するために使う。送信元ポート（ＴＣＰ／ＵＤＰ  ｓｒｃ  Ｐｏｒｔ）、及び送信先ポート（ＴＣＰ／ＵＤＰ  ｄｓｔ  Ｐｏｒｔ）は、それぞれ、送信元ポート番号、送信先ポート番号を示す。
【０１２９】
本実施形態では、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）とフレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）のみ、マッチングに使用する。
【０１３０】
コントローラ（ＯＦＣ）１０は、各スイッチ（ＯＦＳ）２０にトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を設定する際、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）とフレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）以外の整合領域（ＭＦ）のエントリー項目の整合値（ＭＶ）に「ＡＮＹ」を指定する。
【０１３１】
整合値（ＭＶ）が「ＡＮＹ」である整合領域（ＭＦ）のエントリー項目は、任意の値（全ての値）にマッチするため、パケットのマッチングには使用されない。
【０１３２】
これにより、各スイッチ（ＯＦＳ）２０は、受信パケットとトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）とを比較し、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）及びフレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）について、双方の値がマッチした場合、受信パケットとトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がマッチしたと判断する。
【０１３３】
ここでは、コントローラ（ＯＦＣ）１０は、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の整合値（ＭＶ）に、特定のポート（Ｓｐｅｃｉｆｉｅｄ  Ｐｏｒｔ）を指定する。この特定のポート（Ｓｐｅｃｉｆｉｅｄ  Ｐｏｒｔ）は、コントローラ（ＯＦＣ）１０が検出した各スイッチ（ＯＦＳ）２０のポートのうち、他の各スイッチ（ＯＦＳ）２０と繋がるポートを示す。
【０１３４】
また、コントローラ（ＯＦＣ）１０は、フレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）の整合値（ＭＶ）に「０ｘ１１１１」を指定する。「０ｘ１１１１」は、本実施形態におけるトポロジーキープアライブパケット（ＴＫＡＰ）のフレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）を示す。
【０１３５】
［クッキー領域］
次に、クッキー領域（ＣＦ）について説明する。
【０１３６】
クッキー領域（ＣＦ）は、付加情報等のデータを一時保存しておくためのクッキー（Ｃｏｏｋｉｅ）を示す領域である。クッキーには、クッキー値（ＣＶ：Ｃｏｏｋｉｅ  Ｖａｌｕｅ）が指定される。
【０１３７】
コントローラ（ＯＦＣ）１０は、クッキーのクッキー値（ＣＶ）に、６４ビットの識別子を指定する。
【０１３８】
この６４ビットの識別子は、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を設定したコントローラ（ＯＦＣ）１０が内部管理しているフローエントリを特定するための識別子である。オープンフローでは、コントローラ（ＯＦＣ）１０は、各スイッチ（ＯＦＳ）２０側のフローエントリを把握・管理するため、各スイッチ（ＯＦＳ）２０側のフローエントリのコピー（複写）を保持している。
【０１３９】
［アクション領域］
次に、アクション領域（ＡＦ）について説明する。
【０１４０】
アクション領域（ＡＦ）は、当該フローエントリの特性に関するプロパティー項目（ｐｒｏｐｅｒｔｉｅｓ）を示す領域である。プロパティー項目は、アクション領域（ＡＦ）のサブフィールドである。コントローラ（ＯＦＣ）１０は、アクション領域（ＡＦ）に示されたプロパティー項目毎に、特性を示す値（特性値）を指定する。
【０１４１】
なお、アクション領域（ＡＦ）のプロパティー項目には、優先度（Ｅｎｔｒｙ  Ｐｒｉｏｒｉｔｙ）、遊休時間（Ｉｄｌｅ  ｔｉｍｅ）、固定時間（Ｈａｒｄ  ｔｉｍｅ）、フラグ（Ｆｌａｇ）、アクション（Ａｃｔｉｏｎ）等がある。
【０１４２】
コントローラ（ＯＦＣ）１０は、優先度（Ｅｎｔｒｙ  Ｐｒｉｏｒｉｔｙ）に「０ｘｆｆｆｆ」を指定する。優先度（Ｅｎｔｒｙ  Ｐｒｉｏｒｉｔｙ）は、フローエントリ自体の優先度を示す。「０ｘｆｆｆｆ」は、最も高い優先度（最優先）を示す。すなわち、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）は、最優先のフローエントリとなる。これにより、各スイッチ（ＯＦＳ）２０は、受信パケットに対して、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を最優先に比較し、マッチした場合、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）のアクションを実行する。
【０１４３】
また、コントローラ（ＯＦＣ）１０は、遊休時間（Ｉｄｌｅ  ｔｉｍｅ）に「０ｘ０００３」を指定し、固定時間（Ｈａｒｄ  ｔｉｍｅ）に「０ｘ００００」を指定する。時間の指定において、「０ｘ０００３」は「３秒」を示す。これにより、各スイッチ（ＯＦＳ）２０は、トポロジーキープアライブパケット（ＴＫＡＰ）を受信してから、３秒以内に、次のトポロジーキープアライブパケット（ＴＫＡＰ）を受信しなかった場合、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がエクスパイヤ（ｅｘｐｉｒｅ：期限満了、失効）したものと判断し、フローテーブルから当該トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除（エージアウト）する。
【０１４４】
また、コントローラ（ＯＦＣ）１０は、フラグ（Ｆｌａｇ）に、「送信フロー削除フラグ（ＳＦＲＦ：Ｓｅｎｄ  Ｆｌｏｗ  Ｒｅｍｏｖｅｄ  Ｆｌａｇ）＝ｏｎ」を指定する。すなわち、送信フロー削除フラグ（ＳＦＲＦ）を「ｏｎ」（有効）にする。これにより、各スイッチ（ＯＦＳ）２０は、エクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した後、エクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した旨を示すオープンフローメッセージをコントローラ（ＯＦＣ）１０に送信する。本実施形態では、各スイッチ（ＯＦＳ）２０は、エクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した後、後述するフローエントリ削除済メッセージ（ＦＥＲＭ：Ｆｌｏｗ  Ｅｎｔｒｙ  Ｒｅｍｏｖｅｄ  Ｍｅｓｓａｇｅ）をコントローラ（ＯＦＣ）１０に送信する。
【０１４５】
また、コントローラ（ＯＦＣ）１０は、アクション（Ａｃｔｉｏｎ）に、「マッチしたパケットを受信ポートに送り戻す動作」（Ｓｅｎｄ  ｔｏ  ｉｎ−ｐｏｒｔ）を指定する。「マッチしたパケットを受信ポートに送り戻す動作」とは、接続ポートで受信したパケットが当該フローエントリにマッチした場合、当該パケットを、当該接続ポートに送り戻す動作を示す。これにより、各スイッチ（ＯＦＳ）２０は、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチしたトポロジーキープアライブパケット（ＴＫＡＰ）を、受信ポートに送り戻す。したがって、トポロジーキープアライブパケット（ＴＫＡＰ）は、相互接続され、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が設定されたスイッチ（ＯＦＳ）２０間を巡回する。
【０１４６】
［フローエントリ変更メッセージの仕様］
図６を参照して、コントローラ（ＯＦＣ）１０が各スイッチ（ＯＦＳ）２０にトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を追加（登録）するためのフローエントリ変更メッセージ（ＭＦＥＭ）の仕様について説明する。
【０１４７】
フローエントリ変更メッセージ（ＭＦＥＭ）は、ヘッダ領域（ＨＦ）と、整合領域（ＭＦ）と、クッキー領域（ＣＦ）と、アクション領域（ＡＦ）を有する。
【０１４８】
ヘッダ領域（ＨＦ）は、本メッセージがフローエントリ変更メッセージ（ＭＦＥＭ）である旨を示す情報を格納するための領域である。
【０１４９】
ここでは、コントローラ（ＯＦＣ）１０は、フローエントリ変更メッセージ（ＭＦＥＭ）のヘッダ領域（ＨＦ）に、「Ｔｙｐｅ  ｉｓ  Ｍｏｄｉｆｙ  Ｓｔａｔｅ」を指定する。「Ｔｙｐｅ  ｉｓ  Ｍｏｄｉｆｙ  Ｓｔａｔｅ」は、本メッセージがフローエントリ変更メッセージ（ＭＦＥＭ）である旨を示す情報である。
【０１５０】
整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）については、基本的に、図５で説明したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）と同様である。
【０１５１】
なお、アクション領域（ＡＦ）のプロパティー項目には、更に、命令（Ｃｏｍｍａｎｄ）が追加されている。
【０１５２】
コントローラ（ＯＦＣ）１０は、新規のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を追加する場合、命令（Ｃｏｍｍａｎｄ）に、「フローエントリの追加」（Ａｄｄ  Ｆｌｏｗ  ｅｎｔｒｙ）を指定する。また、コントローラ（ＯＦＣ）１０は、既存のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を修正する場合、命令（Ｃｏｍｍａｎｄ）に、「フローエントリの変更」（Ｍｏｄｉｆｙ  Ｆｌｏｗ  ｅｎｔｒｙ）を指定する。
【０１５３】
また、コントローラ（ＯＦＣ）１０は、整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目に、設定値を指定する。
【０１５４】
各スイッチ（ＯＦＳ）２０は、このフローエントリ変更メッセージ（ＭＦＥＭ）を受信した場合、アクション領域（ＡＦ）の命令（Ｃｏｍｍａｎｄ）を確認する。
【０１５５】
各スイッチ（ＯＦＳ）２０は、アクション領域（ＡＦ）の命令（Ｃｏｍｍａｎｄ）に「フローエントリの変更」（Ｍｏｄｉｆｙ  Ｆｌｏｗ  ｅｎｔｒｙ）が指定されている場合、整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目を参照し、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在するか確認する。
【０１５６】
各スイッチ（ＯＦＳ）２０は、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在しない場合、或いは、アクション領域（ＡＦ）の命令（Ｃｏｍｍａｎｄ）に「フローエントリの追加」（Ａｄｄ  Ｆｌｏｗ  ｅｎｔｒｙ）が指定されている場合、このフローエントリ変更メッセージ（ＭＦＥＭ）の整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目に指定された値に基づいて、新規のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を追加する。
【０１５７】
各スイッチ（ＯＦＳ）２０は、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在する場合、このフローエントリ変更メッセージ（ＭＦＥＭ）の整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目に指定された値を、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）に反映する。すなわち、フローエントリ変更メッセージ（ＭＦＥＭ）の上記の各領域に指定された値を、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の該当する領域に上書きする。
【０１５８】
これにより、コントローラ（ＯＦＣ）１０は、作成／修正したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を、各スイッチ（ＯＦＳ）２０側に設定することができる。
【０１５９】
なお、コントローラ（ＯＦＣ）１０が、既存のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除する場合には、命令（Ｃｏｍｍａｎｄ）に、「フローエントリの削除」（Ｄｅｌｅｔｅ  Ｆｌｏｗ  ｅｎｔｒｙ）を指定すれば良い。「フローエントリの削除」（Ｄｅｌｅｔｅ  Ｆｌｏｗ  ｅｎｔｒｙ）の手順は、「フローエントリの変更」（Ｍｏｄｉｆｙ  Ｆｌｏｗ  ｅｎｔｒｙ）の手順と同様である。
【０１６０】
［フローエントリ削除済メッセージの仕様］
図７を参照して、各スイッチ（ＯＦＳ）２０がエクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した後に、コントローラ（ＯＦＣ）１０に送信するフローエントリ削除済メッセージ（ＦＥＲＭ）の仕様について説明する。
【０１６１】
ヘッダ領域（ＨＦ）は、本メッセージがフローエントリ削除済メッセージ（ＦＥＲＭ）である旨を示す情報を格納するための領域である。
【０１６２】
ここでは、各スイッチ（ＯＦＳ）２０は、フローエントリ削除済メッセージ（ＦＥＲＭ）のヘッダ領域（ＨＦ）に、「Ｔｙｐｅ  ｉｓ  Ｆｌｏｗ  Ｒｅｍｏｖｅｄ」を指定する。「Ｔｙｐｅ  ｉｓ  Ｆｌｏｗ  Ｒｅｍｏｖｅｄ」は、本メッセージがフローエントリ削除済メッセージ（ＦＥＲＭ）である旨を示す情報である。
【０１６３】
整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）については、基本的に、図６で説明したフローエントリ変更メッセージ（ＭＦＥＭ）と同様である。
【０１６４】
各スイッチ（ＯＦＳ）２０は、命令（Ｃｏｍｍａｎｄ）に、「フローエントリの削除」（Ｄｅｌｅｔｅ  Ｆｌｏｗ  ｅｎｔｒｙ）を指定する。
【０１６５】
また、各スイッチ（ＯＦＳ）２０は、整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目に、削除対象となるトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）に指定されている値（既定値）を指定する。
【０１６６】
コントローラ（ＯＦＣ）１０は、このフローエントリ削除済メッセージ（ＦＥＲＭ）を受信した場合、ヘッダ領域（ＨＦ）、又は、アクション領域（ＡＦ）の命令（Ｃｏｍｍａｎｄ）の少なくとも一方を確認する。
【０１６７】
コントローラ（ＯＦＣ）１０は、ヘッダ領域（ＨＦ）に「Ｔｙｐｅ  ｉｓ  Ｆｌｏｗ  Ｒｅｍｏｖｅｄ」が指定されている場合、又は、アクション領域（ＡＦ）の命令（Ｃｏｍｍａｎｄ）に「フローエントリの削除」（Ｄｅｌｅｔｅ  Ｆｌｏｗ  ｅｎｔｒｙ）が指定されている場合、クッキー領域（ＣＦ）のクッキーに格納された６４ビットの識別子を参照し、或いは、整合領域（ＭＦ）、クッキー領域（ＣＦ）、及びアクション領域（ＡＦ）の各項目を参照し、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在するか確認する。
【０１６８】
コントローラ（ＯＦＣ）１０は、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在しない場合、このフローエントリ削除済メッセージ（ＦＥＲＭ）を無視・破棄する。
【０１６９】
コントローラ（ＯＦＣ）１０は、該当するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）が存在する場合、そのトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除する。
【０１７０】
これにより、各スイッチ（ＯＦＳ）２０は、エクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の削除を、コントローラ（ＯＦＣ）１０側に反映することができる。
【０１７１】
＜実施例＞
図８を参照して、本発明に係るネットワークシステムの実施例について説明する。
【０１７２】
本実施例では、１台のコントローラ（ＯＦＣ）１０と４台のスイッチ（ＯＦＳ）２０でオープンフローネットワークが構成されている。
【０１７３】
コントローラ（ＯＦＣ）１０は、セキュアチャンネルネットワーク１００を介して、４台のスイッチ（ＯＦＳ）２０の各々と接続されている。セキュアチャンネルネットワーク１００には、コントローラ（ＯＦＣ）とスイッチ（ＯＦＳ）間のコントロール信号が流れる。
【０１７４】
４台のスイッチ（ＯＦＳ）２０を、それぞれ、スイッチ（ＯＦＳ）２０−１、スイッチ（ＯＦＳ）２０−２、スイッチ（ＯＦＳ）２０−３、及びスイッチ（ＯＦＳ）２０−４とする。
【０１７５】
ここでは、スイッチ（ＯＦＳ）２０−１の「ＤＰＩＤ」を、「ＯＦＳ１−ＤＰＩＤ」とする。スイッチ（ＯＦＳ）２０−２の「ＤＰＩＤ」を、「ＯＦＳ２−ＤＰＩＤ」とする。スイッチ（ＯＦＳ）２０−３の「ＤＰＩＤ」を、「ＯＦＳ３−ＤＰＩＤ」とする。スイッチ（ＯＦＳ）２０−４の「ＤＰＩＤ」を、「ＯＦＳ４−ＤＰＩＤ」とする。
【０１７６】
また、スイッチ（ＯＦＳ）２０−１の接続ポートの１つである「Ｐｏｒｔ１」は、スイッチ（ＯＦＳ）２０−２の接続ポートの１つである「Ｐｏｒｔ２」と接続されている。スイッチ（ＯＦＳ）２０−２の接続ポートの１つである「Ｐｏｒｔ３」は、スイッチ（ＯＦＳ）２０−３の接続ポートの１つである「Ｐｏｒｔ４」と接続されている。スイッチ（ＯＦＳ）２０−３の接続ポートの１つである「Ｐｏｒｔ５」は、スイッチ（ＯＦＳ）２０−４の接続ポートの１つである「Ｐｏｒｔ６」と接続されている。スイッチ（ＯＦＳ）２０−４の接続ポートの１つである「Ｐｏｒｔ７」は、スイッチ（ＯＦＳ）２０−１の接続ポートの１つである「Ｐｏｒｔ８」と接続されている。
【０１７７】
［トポロジー初期検出］
まず、トポロジーを初期検出した際の動作について説明する。
【０１７８】
コントローラ（ＯＦＣ）１０のトポロジー検出部１２は、既存のトポロジー検出機能を利用して、繋がっているスイッチ（ＯＦＳ）２０の相互接続関係を収集し、オープンフローネットワークのトポロジーを検出する。
【０１７９】
トポロジー検出部１２は、検出したトポロジー情報を、以下のように、トポロジー管理部１１のトポロジー情報保存データベースに格納する。
【０１８０】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１  ｔｏ  ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８１】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２  ｔｏ  ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８２】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ３  ｔｏ  ＯＦＳ３−ＤＰＩＤ：  Ｐｏｒｔ４），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８３】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ３−ＤＰＩＤ：  Ｐｏｒｔ４  ｔｏ  ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ３），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８４】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ３−ＤＰＩＤ：  Ｐｏｒｔ５  ｔｏ  ＯＦＳ４−ＤＰＩＤ：  Ｐｏｒｔ６），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８５】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ４−ＤＰＩＤ：  Ｐｏｒｔ６  ｔｏ  ＯＦＳ３−ＤＰＩＤ：  Ｐｏｒｔ５），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８６】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ４−ＤＰＩＤ：  Ｐｏｒｔ７  ｔｏ  ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ８），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８７】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ８  ｔｏ  ＯＦＳ４−ＤＰＩＤ：  Ｐｏｒｔ７），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ００００００００００００００００））
【０１８８】
［トポロジー維持・更新］
次に、トポロジーを維持・更新する際の動作について説明する。
【０１８９】
トポロジー検出部１２は、トポロジーを初期検出した後、トポロジー管理部１１のトポロジー情報データベースに格納した各スイッチ（ＯＦＳ）とポート（Ｐｏｒｔ）の組み合わせを順次に取り出し、そのスイッチ（ＯＦＳ）とポート（Ｐｏｒｔ）の組み合わせに基づいて、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を作成する。
【０１９０】
また、トポロジー検出部１２は、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の作成と同時に、作成したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を識別するためのクッキーを生成する。
【０１９１】
本実施例では、トポロジー検出部１２は、まず「ＯＦＳ１−ＤＰＩＤ」の「Ｐｏｒｔ１」に基づいて、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を生成する。
【０１９２】
トポロジー検出部１２は、生成したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の整合領域（ＭＦ）の各エントリー項目について、以下のような値を指定する。
【０１９３】
トポロジー検出部１２は、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の整合値（ＭＶ）に「Ｐｏｒｔ１」を指定する。
【０１９４】
トポロジー検出部１２は、フレームタイプ（Ｅｔｈｅｒ  ｔｙｐｅ）の整合値（ＭＶ）に「０ｘ１１１１」を指定する。
【０１９５】
トポロジー検出部１２は、優先度（Ｅｎｔｒｙ  Ｐｒｉｏｒｉｔｙ）に「０ｘｆｆｆｆ」を指定する。
【０１９６】
トポロジー検出部１２は、遊休時間（Ｉｄｌｅ  ｔｉｍｅ）に「０ｘ０００３」を指定する。
【０１９７】
トポロジー検出部１２は、固定時間（Ｈａｒｄ  ｔｉｍｅ）に「０ｘ００００」を指定する。
【０１９８】
トポロジー検出部１２は、フラグ（Ｆｌａｇ）に、「送信フロー削除フラグ（ＳＦＲＦ）＝ｏｎ」を指定する。すなわち、送信フロー削除フラグ（ＳＦＲＦ）を「ｏｎ」（有効）にする。
【０１９９】
また、トポロジー検出部１２は、上記の指定と同時に、クッキーを生成し、クッキーのクッキー値（ＣＶ）に、フローエントリを特定するための６４ビットの識別子を指定する。
【０２００】
本実施例では、クッキーのクッキー値（ＣＶ）に、「ＯＦＳ１−ＤＰＩＤ」の「Ｐｏｒｔ１」のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を識別するために生成した「０ｘ０００００００００００００００１」を指定する。
【０２０１】
トポロジー検出部１２は、クッキーを生成した後、生成したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）、クッキー値（ＣＶ）、送信先のスイッチ（ＯＦＳ）２０−１の「ＤＰＩＤ」等の情報をパケット梱包・振り分け処理部１３に渡し、新規のフローエントリを追加するためのフローエントリ変更メッセージ（ＭＦＥＭ）に梱包する旨の指示を出す。
【０２０２】
パケット梱包・振り分け処理部１３は、トポロジー検出部１２から受け取った情報及び指示に基づいて、図６で説明したフローエントリ変更メッセージ（ＭＦＥＭ）を作成する。また、パケット梱包・振り分け処理部１３は、作成したフローエントリ変更メッセージ（ＭＦＥＭ）と、送信先スイッチ（ＯＦＳ）のＩＰアドレスと、セキュアチャンネルポートのポート番号を、パケット送信部１４に渡す。
【０２０３】
パケット送信部１４は、パケット梱包・振り分け処理部１３から受け取った情報に基づいて、フローエントリ変更メッセージ（ＭＦＥＭ）を、セキュアチャンネルポートから、送信先スイッチ（ＯＦＳ）に送信する。
【０２０４】
本実施例では、パケット送信部１４は、フローエントリ変更メッセージ（ＭＦＥＭ）をスイッチ（ＯＦＳ）２０−１に送信する。
【０２０５】
トポロジー検出部１２は、非特許文献１（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ１．１．０）によって規定されている「Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙ」の同期の仕組みで、スイッチ（ＯＦＳ）２０−１に対するトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の追加が成功したことを知り、追加に成功したトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）のクッキー値（ＣＶ）をトポロジー情報データベースに追加する。
【０２０６】
本実施例では、トポロジー検出部１２は、トポロジー管理部１１のトポロジー情報データベースに、以下のようにクッキー値（ＣＶ）を追加する。
【０２０７】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１  ｔｏ  ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ０００００００００００００００１））
【０２０８】
また、本実施例では、トポロジー検出部１２は、「ＯＦＳ１−ＤＰＩＤ」の「Ｐｏｒｔ１」と相互接続している「ＯＦＳ２−ＤＰＩＤ」の「Ｐｏｒｔ２」に対して、上記と同様な手順で、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を追加し、クッキー値（ＣＶ）をトポロジー情報データベースに設定する。
【０２０９】
トポロジー検出部１２は、トポロジー管理部１１のトポロジー情報データベースに、以下のようなクッキー値（ＣＶ）を追加する。
【０２１０】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２  ｔｏ  ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ０００００００００００００００２））
【０２１１】
トポロジー検出部１２は、相互接続しているスイッチ（ＯＦＳ）の両方に対して、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の追加に成功した後に、トポロジーキープアライブパケット（ＴＫＡＰ）と、図４で説明したパケット出力メッセージ（ＰＯＭ）を両方のスイッチ（ＯＦＳ）に送信する旨の指示を、パケット梱包・振り分け処理部１３に渡す。
【０２１２】
パケット梱包・振り分け処理部１３は、トポロジー検出部１２から受け取った情報及び指示に基づいて、トポロジーキープアライブパケット（ＴＫＡＰ）をパケット出力メッセージ（ＰＯＭ）のデータ領域（ＤＦ）に格納する。
【０２１３】
パケット出力メッセージ（ＰＯＭ）のアクション領域（ＡＦ）に、スイッチ（ＯＦＳ）間の相互接続ポートからデータ領域（ＤＦ）のパケットを送信する動作を指定する。
【０２１４】
本実施例では、パケット梱包・振り分け処理部１３は、スイッチ（ＯＦＳ）２０−１に対して、アクション領域（ＡＦ）に「Ｐｏｒｔ１からパケットを送信する動作」を指定したパケット出力メッセージ（ＰＯＭ）を作成する。また、スイッチ（ＯＦＳ）２０−２に対して、アクション領域（ＡＦ）に「Ｐｏｒｔ２からパケットを送信する動作」を指定したパケット出力メッセージ（ＰＯＭ）を作成する。
【０２１５】
パケット梱包・振り分け処理部１３は、これらのパケット出力メッセージ（ＰＯＭ）と、送信先スイッチ（ＯＦＳ）のＩＰアドレスと、セキュアチャンネルポートのポート番号を、パケット送信部１４に渡す。
【０２１６】
パケット送信部１４は、パケット梱包・振り分け処理部１３から受け取った情報に基づいて、これらのパケット出力メッセージ（ＰＯＭ）を、それぞれ該当する送信先スイッチ（ＯＦＳ）に送信する。
【０２１７】
本実施例では、パケット送信部１４は、スイッチ（ＯＦＳ）２０−１に対して、アクション領域（ＡＦ）に「Ｐｏｒｔ１からパケットを送信する動作」を指定したパケット出力メッセージ（ＰＯＭ）を送信する。また、スイッチ（ＯＦＳ）２０−２に対して、アクション領域（ＡＦ）に「Ｐｏｒｔ２からパケットを送信する動作」を指定したパケット出力メッセージ（ＰＯＭ）を送信する。
【０２１８】
スイッチ（ＯＦＳ）２０−１は、受け取ったパケット出力メッセージ（ＰＯＭ）に従って、図３で説明したトポロジーキープアライブパケット（ＴＫＡＰ）を「Ｐｏｒｔ１」から送信する。
【０２１９】
スイッチ（ＯＦＳ）２０−２は、受け取ったパケット出力メッセージ（ＰＯＭ）に従って、図３で説明したトポロジーキープアライブパケット（ＴＫＡＰ）を「Ｐｏｒｔ２」から送信する。
【０２２０】
また、トポロジーキープアライブパケット（ＴＫＡＰ）は、スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２の各々に設定されたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチするので、障害が発生しない限り、トポロジーキープアライブパケット（ＴＫＡＰ）は、スイッチ（ＯＦＳ）２０−１の「Ｐｏｒｔ１」とスイッチ（ＯＦＳ）２０−２の「Ｐｏｒｔ２」との間で往復する。
【０２２１】
以上の仕組みで、コントローラ（ＯＦＣ）１０は、検出した全部のスイッチ（ＯＦＳ）とポート（Ｐｏｒｔ）の組み合わせに対して、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の登録と、トポロジーキープアライブパケット（ＴＫＡＰ）の送信を実施する。
【０２２２】
［障害発生時］
次に、スイッチ（ＯＦＳ）間の相互接続ポートやネットワークに障害が発生した際の動作について説明する。
【０２２３】
スイッチ（ＯＦＳ）間の相互接続ポートやネットワークに障害が発生すると、トポロジーキープアライブパケット（ＴＫＡＰ）は、正しくスイッチ（ＯＦＳ）間の相互接続ポートに到着できなくなる。すなわち、スイッチ（ＯＦＳ）において、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチするパケットが到着しなくなる。
【０２２４】
スイッチ（ＯＦＳ）は、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチするパケットが到着しない時間が、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の遊休時間（Ｉｄｌｅ  ｔｉｍｅ）に設定した時間以上になると、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がエクスパイヤしたと判断し、このトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除する。
【０２２５】
スイッチ（ＯＦＳ）は、エクスパイヤしたトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した後に、コントローラ（ＯＦＣ）１０に対して図７で説明したフローエントリ削除済メッセージ（ＦＥＲＭ）を送信する。
【０２２６】
コントローラ（ＯＦＣ）１０のトポロジー検出部１２は、スイッチ（ＯＦＳ）から送信されたフローエントリ削除済メッセージ（ＦＥＲＭ）のクッキー値（ＣＶ）でトポロジー情報データベースに格納したトポロジー情報を検索することで、どのスイッチ（ＯＦＳ）のどのポート（Ｐｏｒｔ）のトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がエクスパイヤしたことを知り、該当のトポロジー情報をデータベースから削除する。
【０２２７】
本実施例では、スイッチ（ＯＦＳ）２０−１の「Ｐｏｒｔ１」とスイッチ（ＯＦＳ）２０−２の「Ｐｏｒｔ２」（相互接続しているポート）の間に障害が発生した場合を例として説明する。
【０２２８】
障害が発生すると、スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２の各々に、スイッチ（ＯＦＳ）２０−１の「Ｐｏｒｔ１」とスイッチ（ＯＦＳ）２０−２の「Ｐｏｒｔ２」との間のトポロジーキープアライブパケット（ＴＫＡＰ）が届かなくなる。
【０２２９】
スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２は、それぞれ、このトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）にマッチするトポロジーキープアライブパケット（ＴＫＡＰ）が届かなくなってから３秒が経つと、このトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がエクスパイヤしたと判断し、このトポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除する。
【０２３０】
スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２は、それぞれ、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）を削除した後、フローエントリ削除済メッセージ（ＦＥＲＭ）をコントローラ（ＯＦＣ）１０に送信する。
【０２３１】
コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０−１とスイッチ（ＯＦＳ）２０−２の各々から、それぞれフローエントリ削除済メッセージ（ＦＥＲＭ）を受信する。
【０２３２】
コントローラ（ＯＦＣ）１０は、それぞれのフローエントリ削除済メッセージ（ＦＥＲＭ）に格納されたクッキー値（ＣＶ）に基づいて、相互接続がなくなっていると判断し、相互接続情報をトポロジー情報データベースから削除することで、トポロジー変更を更新する。
【０２３３】
なお、スイッチ（ＯＦＳ）２０−１から受信したフローエントリ削除済メッセージ（ＦＥＲＭ）に格納されたクッキー値（ＣＶ）は、「０ｘ０００００００００００００００１」である。
【０２３４】
また、スイッチ（ＯＦＳ）２０−２から受信したフローエントリ削除済メッセージ（ＦＥＲＭ）に格納されたクッキー値（ＣＶ）は、「０ｘ０００００００００００００００２」である。
【０２３５】
本実施例では、コントローラ（ＯＦＣ）１０は、以下の相互接続情報をトポロジー情報データベースから削除することで、トポロジー変更を更新する。
【０２３６】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１  ｔｏ  ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ０００００００００００００００１））
【０２３７】
（Ｃｏｎｎｅｃｔｉｏｎ  （ＯＦＳ２−ＤＰＩＤ：  Ｐｏｒｔ２  ｔｏ  ＯＦＳ１−ＤＰＩＤ：  Ｐｏｒｔ１），  ＫｅｅｐＡｌｉｖｅ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｃｏｏｋｉｅ  （０ｘ０００００００００００００００２））
【０２３８】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【０２３９】
本実施形態では、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）がエクスパイヤした際に、即時に相互接続ポートに障害が発生したと判断せずに、ＬＬＤＰパケットを利用して一定のリトライ回数でトポロジー検査を行う。
【０２４０】
すなわち、二重の検査を行い、ＬＬＤＰパケットを利用したトポロジー検査でも相互接続関係を確認できない場合に、スイッチ（ＯＦＳ）間の相互接続ポートに障害が発生したと判断する。
【０２４１】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【０２４２】
＜本発明の特徴＞
次に、本発明の特徴について説明する。
【０２４３】
本発明に係るネットワークシステムは、例えばオープンフローネットワークにおいて、コントローラ（ＯＦＣ）がスイッチ（ＯＦＳ）間のネットワークが高遅延な状況でのスイッチの物理トポロジーの維持・更新を行うネットワークシステムに関する。
【０２４４】
コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）間の初期接続の完了後に、各スイッチ（ＯＦＳ）の相互接続ポートに対して、アクション領域（ＡＦ）に「パケットが入ってきたポートにパケットを転送する動作」（Ｓｅｎｄ  ｔｏ  ｉｎ−ｐｏｒｔ）を指定し、遊休時間経過領域（Ｉｄｌｅ  ｔｉｍｅｏｕｔ  Ｆｉｅｌｄ）に遊休時間を指定した巡回用のフローエントリを設定する。なお、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）は、巡回用のフローエントリの１つである。
【０２４５】
コントローラ（ＯＦＣ）は、パケット出力メッセージ（ＰＯＭ）を利用して、予め規定された巡回パケットを各スイッチ（ＯＦＳ）の相互接続ポートに送る。なお、トポロジーキープアライブパケット（ＴＫＡＰ）は、巡回パケットの１つである。
【０２４６】
巡回パケットは、アクション領域（ＡＦ）に「Ｓｅｎｄ  ｔｏ  ｉｎ−ｐｏｒｔ」が指定されている巡回用のフローエントリにマッチし、各スイッチ（ＯＦＳ）の相互接続ポート間で往復する。
【０２４７】
ＯＰＳ間の相互接続ポートに障害発生時に、巡回パケットが各スイッチ（ＯＦＳ）の相互接続ポートに届かなくなる。
【０２４８】
各スイッチ（ＯＦＳ）において、アクション領域（ＡＦ）に「Ｓｅｎｄ  ｔｏ  ｉｎ−ｐｏｒｔ」が指定されている巡回用のフローエントリにマッチするパケットがなくなる。
【０２４９】
各スイッチ（ＯＦＳ）は、巡回用のフローエントリの遊休時間経過領域（Ｉｄｌｅ  ｔｉｍｅｏｕｔ  Ｆｉｅｌｄ）に指定されている遊休時間の経過後に、当該巡回用のフローエントリを削除（エージアウト）する。
【０２５０】
また、スイッチ（ＯＦＳ）は、巡回用のフローエントリを削除（エージアウト）したことを示すエージアウトメッセージを、コントローラ（ＯＦＣ）へ通知する。
【０２５１】
コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）から通知された巡回用のフローエントリのエージアウトメッセージに基づいて、該当スイッチ（ＯＦＳ）間の相互接続ポートに障害が発生したと判断する。
【０２５２】
なお、本発明に係るネットワークシステムでは、オープンフローネットワークにおいて、コントローラ（ＯＦＣ）が検出したトポロジーを維持し、トポロジー変更を検出するために、コントローラ（ＯＦＣ）が頻繁的に走査パケットを流す仕組みを利用するのではなく、トポロジー変更をスイッチ（ＯＦＳ）が主動的にコントローラ（ＯＦＣ）に通知する仕組みを利用する。そのため、セキュアチャンネルネットワーク上のスイッチ（ＯＦＳ）への負荷を軽減することができる。
【０２５３】
また、本発明に係るネットワークシステムでは、トポロジーキープアライブフローエントリ（ＴＫＡＦＥ）の遊休時間（Ｉｄｌｅ  ｔｉｍｅ）と、エクスパイヤと、フローエントリ削除済メッセージ（ＦＥＲＭ）の仕組みを利用する。そのため、セキュアチャンネルネットワーク上のスイッチ（ＯＦＳ）に負荷を与えることなく、トポロジー変更の検出を素早くするように調整することができる。
【０２５４】
また、本発明に係るネットワークシステムでは、セキュアチャンネルに流すトポロジー変更を通知するパケットが、１つのスイッチ（ＯＦＳ）間の相互接続ポートに対して１つしか存在しない。そのため、セキュアチャンネルが高負荷の状態でも、トポロジー変更の検出が漏れる可能性を、既存のトポロジー検出技術よりも低くすることができる。
【０２５５】
また、本発明に係るネットワークシステムでは、スイッチ（ＯＦＳ）が、トポロジーキープアライブパケット（ＴＫＡＰ）を汎用プロセッサ以外のＬＳＩ等で処理する。そのため、スイッチ（ＯＦＳ）の汎用プロセッサのリスース不足が原因で、発生していない物理トポロジーの変更を誤って検出してしまう可能性を軽減することができる。
【０２５６】
更に、本発明に係るネットワークシステムでは、オープンフロープロトコル（ＯｐｅｎＦｌｏｗ  Ｐｒｏｔｏｃｏｌ）に対応したスイッチ（ＯＦＳ）を利用すれば、スイッチ（ＯＦＳ）に新たな機能（ハードウェア実装、ソフトウェア実装）を追加する必要がなく、コントローラへのソフトウェア実装だけで実現することができる。
【０２５７】
＜ハードウェアの例示＞
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
【０２５８】
コントローラ（ＯＦＣ）の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、コントローラ（ＯＦＣ）は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、コントローラ（ＯＦＣ）は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【０２５９】
スイッチ（ＯＦＳ）の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。また、物理マシン上に構築された仮想マシン（ＶＭ）により実現される仮想スイッチでも良い。
【０２６０】
コントローラ（ＯＦＣ）及びスイッチ（ＯＦＳ）の各々は、車両や船舶、航空機等の移動体に搭載されていても良い。
【０２６１】
図示しないが、コントローラ（ＯＦＣ）及びスイッチ（ＯＦＳ）の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
【０２６２】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。
【０２６３】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）等でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【０２６４】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。したがって、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例も考えられる。
【０２６５】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【０２６６】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【０２６７】
なお、コントローラ（ＯＦＣ）の内部の構成要素は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【０２６８】
但し、実際には、これらの例に限定されない。
【０２６９】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０２７０】
なお、本出願は、日本出願番号２０１２−０１６２２５に基づく優先権を主張するものであり、日本出願番号２０１２−０１６２２５における開示内容は引用により本出願に組み込まれる。
【図１】
0005846221.tif 000002
【図２】
0005846221.tif 000003
【図３】
0005846221.tif 000004
【図４】
0005846221.tif 000005
【図５】
0005846221.tif 000006
【図６】
0005846221.tif 000007
【図７】
0005846221.tif 000008
【図８】
0005846221.tif 000009