(57)【特許請求の範囲】
【請求項１】
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、
制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備え、
前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報の設定を行い、
設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報の設定を行う、制御装置。
【請求項２】
前記作成した制御情報が前記第１の制御情報である場合、前記通信ノードに前記第１の制御情報の設定を行ってから、前記他の制御装置との同期を実行する、請求項１に記載の制御装置。
【請求項３】
前記第２の制御情報は、予め設定された通信ノード間のパケット転送経路を構成するための制御情報であり、
前記第１の制御情報は、前記第２の制御情報によって生成されるパケット転送経路に接続する一時的な経路を構成するための制御情報である、請求項１または２に記載の制御装置。
【請求項４】
前記第１の制御情報に有効期間を設定する、請求項１ないし３のいずれか１項に記載の制御装置。
【請求項５】
少なくとも前記第２の制御情報に、設定時の時間を示すタイムスタンプを付加する、請求項１ないし４のいずれか１項に記載の制御装置。
【請求項６】
前記タイムスタンプを用いて、前記自装置側で管理している制御情報と、前記制御対象の通信ノードに設定されている制御情報とを、それぞれ取得し、照合処理を実行する制御情報整合部をさらに備える、請求項５に記載の制御装置。
【請求項７】
制御情報のcookieフィールドに前記タイムスタンプを記録する、請求項５または６に記載の制御装置。
【請求項８】
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備え、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報の設定を行い、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報の設定を行う制御装置と、
前記設定された制御情報に基づいて受信パケットを処理する通信ノードと、
を含む、通信システム。
【請求項９】
制御装置が、同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取るステップと、
制御対象の通信ノードに設定する制御情報を作成するステップと、
前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定するステップと、
設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定するステップと、
を含む、同期方法。
【請求項１０】
前記作成した制御情報が前記第１の制御情報である場合、前記通信ノードに前記第１の制御情報の設定を行ってから、前記他の制御装置との同期を実行する、請求項９に記載の同期方法。
【請求項１１】
前記第２の制御情報は、予め設定された通信ノード間のパケット転送経路を構成するための制御情報であり、
前記第１の制御情報は、前記第２の制御情報によって生成されるパケット転送経路に接続する一時的な経路を構成するための制御情報である、請求項９または１０に記載の同期方法。
【請求項１２】
前記制御装置は、前記第１の制御情報に有効期間を設定する、請求項９ないし１１のいずれか１項に記載の同期方法。
【請求項１３】
前記制御装置は、少なくとも前記第２の制御情報に、設定時の時間を示すタイムスタンプを付加する請求項９ないし１２のいずれか１項に記載の同期方法。
【請求項１４】
制御装置に設けられたコンピュータに対して、
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る処理と、
制御対象の通信ノードに設定する制御情報を作成する処理と、
前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定する処理と、
設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定する処理と、
を実行させる、プログラム。
【請求項１５】
前記作成した制御情報が前記第１の制御情報である場合、前記通信ノードに前記第１の制御情報の設定を行ってから、前記他の制御装置との同期を実行する処理を、前記コンピュータに実行させる、請求項１４に記載のプログラム。
【請求項１６】
前記第２の制御情報は、予め設定された通信ノード間のパケット転送経路を構成するための制御情報であり、
前記第１の制御情報は、前記第２の制御情報によって生成されるパケット転送経路に接続する一時的な経路を構成するための制御情報である、請求項１４または１５に記載のプログラム。
【請求項１７】
前記第１の制御情報に有効期間を設定する処理を前記コンピュータに実行させる、請求項１４ないし１６のいずれか１項に記載のプログラム。
【請求項１８】
少なくとも前記第２の制御情報に、設定時の時間を示すタイムスタンプを付加する処理を、前記コンピュータに実行させる、請求項１４ないし１７のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１３−０４９１６９号（２０１３年３月１２日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、制御装置、通信システム、同期方法及びプログラムに関し、特に、通信ノードに対し制御情報を設定する制御装置、通信システム、同期方法及びプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（OpenFlow）という技術が提案されている（非特許文献１、２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献２に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチ条件（Match Fields）と、フロー統計情報（Counters）と、処理内容を定義したインストラクション（Instructions）と、の組が定義される（非特許文献２の「5.2 Flow Table」の項参照）。【０００３】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチ条件（非特許文献２の「5.3 Matching」参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、パケット受信通知（Packet-Inメッセージ）を送信する。オープンフロースイッチは、処理内容が定められたフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを制御情報として用いてパケット転送を行う。【０００４】
特許文献１には、ネットワーク内で保証されたサービス品質（ＱｏＳ：Quality of Service）フローを開始するための第１要求を受信し、ネットワークコーディネータから、ネットワークに接続された複数のノードに第２要求をブロードキャストし、少なくとも一つの入口ノードから第２要求に対する第１応答を受信するステップを含む通信のシステム及び方法が開示されている。【０００５】
特許文献２には、取得したタイミングを示すタイムスタンプ情報と関連付けられたトランスポートパケット列を出力するトランスポートパケット出力装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１０−５１８７５６号公報
【特許文献２】特開２００６−１０８７７４号公報
【非特許文献】
【０００７】
【非特許文献１】Nick McKeownほか7名、“OpenFlow: Enabling Innovation in Campus Networks”、[online]、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“OpenFlow Switch Specification” Version 1.3.1 (Wire Protocol 0x04)、[online]、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.1.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以下の分析は、本発明によって与えられたものである。上記したオープンフローに代表される集中制御型のネットワークでは、制御装置（コントローラ）に障害が発生すると新規フローの設定、トポロジ変化への追従が行えなくなるため制御装置（コントローラ）を冗長化することが望ましい。【０００９】
上記のように制御装置（コントローラ）を複数用意した構成では、アクティブ系の制御装置（コントローラ）が通信ノード（スイッチ）に対して指示した内容を、待機系の制御装置（コントローラ）に通知し同期を取る必要が生じる。この同期を、データベースにおける３相コミットのように厳密に行った場合、同期にかかるコストが増大し、例えば、大量の制御情報（フローエントリ）が短期間で生成されると同期に時間がかかり、通信ノード（スイッチ）への設定が遅れるという問題点がある。【００１０】
一方、アクティブ系の制御装置（コントローラ）から待機系の制御装置（コントローラ）に対し、通信ノード（スイッチ）に対して指示した内容を通知するに止め、厳密な同期を行わない方法も考えられる。この場合、タイミングの問題で指示内容が待機系の制御装置（コントローラ）には伝わっているが、通信ノード（スイッチ）に設定されていないという状況が起こりうる。また反対に、待機系の制御装置（コントローラ）には指示内容が伝わっていないが、通信ノード（スイッチ）には反映されている状況も起こりうる。特に待機系の制御装置（コントローラ）には指示内容が伝わっていない場合、系が切り替わる際の制御装置（コントローラ）間の状態整合処理において、状態が整合していない制御情報（フローエントリ）の特定が困難となってしまうという問題点がある。【００１１】
本発明は、上記集中制御型のネットワークの冗長化された制御装置間の同期処理の効率化に貢献できるようにした制御装置、通信システム、同期方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
第１の視点によれば、同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備え、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報の設定を行い、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報の設定を行う制御装置が提供される。【００１３】
第２の視点によれば、上記した制御装置と、前記設定された制御情報に基づいて受信パケットを処理する通信ノードと、を含む通信システムが提供される。【００１４】
第３の視点によれば、制御装置が、同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取るステップと、制御対象の通信ノードに設定する制御情報を作成するステップと、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定するステップと、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定するステップと、を含む同期方法が提供される。本方法は、集中制御型のネットワークの制御装置という、特定の機械に結びつけられている。【００１５】
第４の視点によれば、制御装置に設けられたコンピュータに対して、同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る処理と、制御対象の通信ノードに設定する制御情報を作成する処理と、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定する処理と、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１６】
本発明によれば、集中制御型のネットワークの冗長化された制御装置間の同期処理の効率化に貢献することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態の構成を示す図である。
【図２】本発明の第１の実施形態の制御装置の構成を示す図である。
【図３】本発明の第１の実施形態の制御装置の動作（スイッチ接続時）を表したシーケンス図である。
【図４】本発明の第１の実施形態の制御装置の動作（スイッチ離脱時）を表したシーケンス図である。
【図５】本発明の第１の実施形態の制御装置の動作（第１の制御情報の設定）を表したシーケンス図である。
【図６】本発明の第１の実施形態の制御装置の動作（第１の制御情報の削除）を表したシーケンス図である。
【図７】本発明の第２の実施形態の制御装置の構成を示す図である。
【図８】本発明の第２の実施形態の制御装置が付加するタイムスタンプを説明するための図である。
【図９】本発明の第２の実施形態の制御装置の動作（スイッチ離脱時）を表したシーケンス図である。
【図１０】本発明の第２の実施形態の制御装置による制御情報の整合処理の範囲を説明するための図である。
【図１１】本発明の第２の実施形態の制御装置の動作（制御情報の整合処理）を表したシーケンス図である。
【発明を実施するための形態】
【００１８】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００１９】
本発明は、その一実施形態において、図１に示すように、同期して動作する他の制御装置（図１の待機系制御装置）に対し通信ノードに設定した制御情報を送信し同期を取る同期部１３０Ａと、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部１１０Ａと、を備えた制御装置１００Ａにて実現できる。
【００２０】
より具体的には、前記制御装置１００Ａは、制御情報作成部１１０Ａにて作成された制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報の設定を行う。一方、制御情報作成部１１０Ａにて作成された制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報の設定を行う。
【００２１】
以上のようにすることで、通信ノードからの通知に応じて一時的に設定する第１の制御情報については、同期完了を待たずフローの設定を行えるため、設定時間を短縮できる。一方で、それ以外の第２の制御情報は、ネットワークの立ち上げ時や構成変更時といった特定のタイミングで設定される。このため、厳密な同期を行ってもユーザへのサービスへの影響は少ない。また、このような同期処理の切替を行うことにより、ネットワークの立ち上げ時や構成変更時に設定される半ば恒久的に設定される制御情報（第２の制御情報）の同期を確実に行うことができる。一方、通信ノードからの通知に応じて一時的に設定する第１の制御情報の同期が確実に取れない状況が起こりうるが、第１の制御情報の設定漏れ等は、その都度、通信ノードから通知を上げればよく、システム全体への影響は軽微である。
【００２２】
［第１の実施形態］
続いて、本発明をオープンフローネットワークに適用した第１の実施形態について図面を参照して詳細に説明する。始めに、以下の説明で用いる用語について説明する。オープンフロースイッチ（以下、「スイッチ」）からのパケット受信通知メッセージ（非特許文献２のPacket-Inメッセージ）の受信を契機に作成される制御情報（フローエントリ）を「テンポラリフローエントリ」（第１の制御情報）と呼ぶ。一方、ネットワークの構成変更等のタイミングで作成され、構成が変化しない限り半ば永続的にスイッチに設定される制御情報（フローエントリ）を「パーマネントフローエントリ」（第２の制御情報）と呼ぶ。
【００２３】
テンポラリフローエントリ及びパーマネントフローエントリは、それぞれ次のように言い換えることもできる。
【００２４】
テンポラリフローエントリ：
・適切なパーマネントフローエントリへ振り分ける働きを持つフローエントリ
・Idle timeout（最後に使用された時刻を基準とするタイムアウト）等が設定され、通信がなくなると消えてしまうフローエントリ
・通信が発生する毎に作成され、パーマネントフローエントリと比較してエントリ数が多い。短時間に大量の通信が発生すると、大量のエントリが一気に作成される可能性がある。
・スイッチへの設定が失敗しても、スイッチが該当エントリがないことを検出して、再度パケットインすることで復旧可能なフローエントリ
・待機系の制御装置（コントローラ）との同期に失敗していても、当該制御装置（コントローラ）が待機系で動作している間は問題とならない。また、当該制御装置（コントローラ）が稼動系に切り替わっても、そのときまでにスイッチ側のエントリがタイムアウトで削除されていれば問題とならない。
【００２５】
パーマネントフローエントリ：
・特定のスイッチから特定のスイッチ間等の定常的な転送のために設定されるフローエントリ。スイッチ間の複数のリンクを集約したリンクアグリケーションを構成するためにも用いられる。
・スイッチ間のトポロジの変化に合わせ、作成、削除されるフローエントリ。原則として、それ以外の理由では変更を行わず、タイムアウトも設定しない。
・コントローラが認識するフローエントリの設定状態と、スイッチに実際に設定されているフローエントリの設定状態とが一致していることが要請される。
・通信量に左右されず、テンポラリフローエントリに比べエントリ数は少なくて済む。
【００２６】
図２は、上記したテンポラリフローエントリとパーマネントフローエントリとをスイッチに設定する本発明の第１の実施形態の制御装置１００の構成を示す図である。図２を参照すると、制御情報作成部１１０と、制御情報管理部１２０と、同期部１３０と、プロトコル処理部１５０と、宛先データベース１６０と、を備えた制御装置１００が示されている。
【００２７】
制御情報作成部１１０は、プロトコル処理部１５０を介して、スイッチ２００と通信し、通信に必要となる制御情報（フローエントリ）を作成する。
【００２８】
さらに、制御情報作成部１１０は、次の（１−１）〜（２−２）の機能を有している。
（１−１）接続しているスイッチからトポロジ把握用のパケット（例えば、ＬＬＤＰ（Link Layer Discovery Protocol）パケット）の送出を指示し、当該スイッチに接続されている対向スイッチからPacket-Inメッセージを受信することで、トポロジを把握する。なお、制御情報作成部１１０自身が、トポロジを保持しなくとも、制御装置１００が、検出したトポロジを記憶するためのトポロジデータベースなどを備えている場合には、当該データベースを利用すればよい。
（１−２）前記トポロジの検出の結果に基づいて、必要なパーマネントフローエントリを作成する。また、必要に応じ、パーマネントフローエントリの変更、削除の要否を決定する。
（２−１）エッジスイッチから受信したPacket-Inメッセージに基づき、ネットワーク外に接続しているポートから通信を送ってきた端末を検出し、その端末位置情報を宛先データベース１６０に登録する。
（２−２）エッジスイッチから受信したPacket-Inメッセージに対し、宛先データベース１６０を検索し、宛先となる端末やサーバが接続されているスイッチとそのポートを特定し、（１−２）で設定済みのパーマネントフローエントリに繋ぐための入口側のテンポラリフローエントリと、（１−２）で設定済みのパーマネントフローエントリにて運ばれる出口側のスイッチに設定するテンポラリフローエントリを作成する。
【００２９】
制御情報作成部１１０は、パーマネントフローエントリを作成した場合、先に制御情報管理部１２０にパーマネントフローエントリを送信して同期を待って、スイッチ２００へ設定する。一方、テンポラリフローエントリを作成した場合、制御情報作成部１１０は、先に、スイッチ２００に設定し、その後に、制御情報管理部１２０に送る。
【００３０】
制御情報管理部１２０は、制御情報作成部１１０からパーマネントフローエントリ又はテンポラリフローエントリを受け取ると、同期部１３０の該当キューに格納し、同期依頼を発行する。
【００３１】
同期部１３０は、パーマネントフローエントリ又はテンポラリフローエントリの設定をそれぞれ別のキューで管理し、待機系の制御装置１００−２に対し、パーマネントフローエントリを優先的に送信し同期処理を実行する。パーマネントフローエントリがキューに無い場合、同期部１３０は、テンポラリフローエントリの同期を行う。また、パーマネントフローエントリについては同期完了を待ち合わせる処理が行われるため、同期部１３０は、同期完了時に、同期を依頼したコンポーネント（制御情報管理部１２０）に対し、同期の完了を通知する機能を有する。
【００３２】
プロトコル処理部１５０は、非特許文献２のオープンフロープロトコルを用いてスイッチ２００と制御メッセージを授受する。例えば、制御情報管理部１２０から制御情報（フローエントリ）の設定要求を受けた場合、プロトコル処理部１５０は、スイッチ２００に対し、非特許文献２のModify Flow Entryメッセージ（Add）、Modify Flow Entryメッセージ（Modify）、Modify Flow Entryメッセージ（Delete）といった制御メッセージを送信して、制御情報（フローエントリ）の追加、変更、削除を指示する。
【００３３】
宛先データベース１６０は、スイッチ２００のポートに接続されている端末や外部ネットワークに関する情報を保持する。
【００３４】
なお、図２に示した制御装置１００の各部（処理手段）は、制御装置１００を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００３５】
続いて、本実施形態の動作について図面を参照して詳細に説明する。はじめに、制御装置１００によるパーマネントフローエントリの設定について説明する。
【００３６】
［パーマネントフローエントリの設定］
図３は、スイッチ接続等のトポロジ変化を契機とする制御装置の動作を表したシーケンス図である。図３を参照すると、制御装置１００は、所定のタイミングが到来すると、トポロジの変化を検出するためにスイッチ２００に対し、トポロジ検出用のパケット（ＬＬＤＰパケット等）の送出を指示する（ステップＳ１００、Ｓ１０１）。
【００３７】
そして、前記トポロジ検出用のパケットを受信した別のスイッチ２００から、Packet-Inメッセージを受信することで、制御装置１００は、トポロジに変換が生じたか否かを判定する（ステップＳ１０２、Ｓ１０３）。ここでは、ネットワークに新たなスイッチ２００が接続するなどして、トポロジに変化が生じたものとして説明する。
【００３８】
Packet-Inメッセージを受信した制御装置１００は、制御情報作成部１１０又は別途設けたトポロジデータベースに保持されているトポロジ情報を更新する（ステップＳ１０４）。
【００３９】
次に、制御装置１００は、前記トポロジ変更に伴い、必要となるパーマネントフローエントリを作成し、又は、既設定のパーマネントフローエントリの書き換える内容を決定する（ステップＳ１０５）。
【００４０】
次に、制御装置１００は、先に待機系の制御装置１００−２に対し、パーマネントフローエントリの変更内容（追加、変更等）を送信し、同期を要求する（ステップＳ１０６、Ｓ１０７）。
【００４１】
待機系の制御装置１００−２から同期の完了の通知を受けたことを条件に（ステップＳ１０８、Ｓ１０９）、制御装置１００は、スイッチ２００に対し、パーマネントフローエントリの追加、変更等を指示する（ステップＳ１１０、Ｓ１１１）。
【００４２】
図４は、スイッチ離脱等のトポロジ変化を契機とする制御装置の動作を表したシーケンス図である。図４を参照すると、制御装置１００は、図３と同様に、所定のタイミングが到来すると、トポロジの変化を検出するためにスイッチ２００に対し、トポロジ検出用のパケット（ＬＬＤＰパケット等）の送出を指示する（ステップＳ２００、Ｓ２０１）。
【００４３】
そして、前記トポロジ検出用のパケットを受信した別のスイッチ２００から、Packet-Inメッセージを受信することで、制御装置１００は、トポロジに変換が生じたか否かを判定する（ステップＳ２０２、Ｓ２０３）。ここでは、ネットワークからスイッチ２００が離脱するなどして、トポロジに変化が生じたものとして説明する。
【００４４】
Packet-Inメッセージを受信した制御装置１００は、制御情報作成部１１０又は別途設けたトポロジデータベースに保持されているトポロジ情報を更新する（ステップＳ２０４）。
【００４５】
次に、制御装置１００は、前記トポロジ変更に伴い、不要となるパーマネントフローエントリを求め、又は、既設定のパーマネントフローエントリの書き換える内容を決定する（ステップＳ２０５）。
【００４６】
次に、制御装置１００は、先に待機系の制御装置１００−２に対し、削除対象のパーマネントフローエントリを通知し、同期を要求する（ステップＳ２０６、Ｓ２０７）。
【００４７】
待機系の制御装置１００−２から同期の完了の通知を受けたことを条件に（ステップＳ２０８、Ｓ２０９）、制御装置１００は、スイッチ２００に対し、パーマネントフローエントリの削除を指示する（ステップＳ２１０、Ｓ２１１）。
【００４８】
続いて、制御装置１００によるテンポラリフローエントリの設定について説明する。
【００４９】
［テンポラリフローエントリの設定］
図５は、スイッチからのパケット受信通知（Packet-Inメッセージ）の受信を契機とする制御装置の動作を表したシーケンス図である。
【００５０】
図５を参照すると、まず、スイッチ２００が、既存の制御情報（フローエントリ）のマッチ条件に適合しないなどの新規パケットを受信すると、制御装置１００に対し、Packet-Inメッセージを送信する（ステップＳ３００、Ｓ３０１）。
【００５１】
Packet-Inメッセージを受信した制御装置１００は、宛先データベース１６０に、パケットの送信元情報を保存する（ステップＳ３０２）。さらに、制御装置１００は、宛先データベース１６０を参照して、パケットの宛先の装置等が接続されているスイッチとその接続ポートを特定する（ステップＳ３０３）。ここでは、パケットの宛先の装置等からのパケットを受信済みであり、宛先データベース１６０に宛先に該当するエントリが登録されていたものとする。
【００５２】
次に、制御装置１００は、転送元と転送先のスイッチが判明するため、ネットワークの入口側スイッチと出口側スイッチに設定するテンポラリフローエントリを作成する（ステップＳ３０４）。
【００５３】
次に、制御装置１００は、スイッチ２００に対し、テンポラリフローエントリの追加、変更等を指示する（ステップ３０５、Ｓ３０６）。
【００５４】
その後、制御装置１００は、テンポラリフローエントリを制御情報管理部１２０に送信し、待機系の制御装置１００−２との同期を依頼する（ステップＳ３０７、Ｓ３０８）。
【００５５】
なお、上記のようにして設定されたテンポラリフローエントリは、アイドルタイムアウトなどの契機により削除される。この場合、スイッチ２００から制御情報（フローエントリ）の削除通知が送信される。制御装置１００は、制御情報（フローエントリ）の削除通知を受信すると、自身の制御情報管理部１２０から該当する制御情報（フローエントリ）を削除するとともに、同期部１３０を介して、待機系の制御装置１００−２に同期を依頼する。ここでのテンポラリフローエントリの同期も厳密に行う必要はない。必要があれば、スイッチ２００及び待機系の制御装置１００−２で各エントリに、設定後一定期間の経過を条件に当該制御情報の削除を行うHard timeout値を設定すればよい。
【００５６】
次に、スイッチ２００からではなく、ネットワークのユーザからフローの削除依頼（通信終了通知）を受け取った場合のテンポラリフローエントリの同期処理について説明する。
【００５７】
図６は、テンポラリフローエントリの明示的な削除要求を受けた場合の制御装置１００の動作を表したシーケンス図である。制御装置１００は、ネットワークのユーザからテンポラリフローエントリの削除依頼を受けると（ステップＳ３５０）、制御情報管理部１２０に削除依頼を受けたテンポラリフローエントリが登録されているか否かを確認する（ステップＳ３５１、Ｓ３５２）。
【００５８】
削除依頼を受けたテンポラリフローエントリが登録されている場合、制御装置１００は、スイッチ２００に対し、該当するテンポラリフローエントリの削除を指示する（ステップＳ３５３、Ｓ３５４）。そして、スイッチ２００側のテンポラリフローエントリの削除完了が確認できたところで、制御装置１００は、制御情報管理部１２０から該当するテンポラリフローエントリを削除するとともに、同期部１３０を介して、待機系の制御装置１００−２に対し、同期を依頼する（ステップＳ３５７、Ｓ３５８）。なお、この場合、削除中に系切り替えが発生すると、スイッチ２００側のテンポラリフローエントリは削除されているが、待機系の制御装置１００−２のテンポラリフローエントリの削除が完了しないケースが生じうるが、当該テンポラリフローエントリが削除されているスイッチ２００側のPacket-Inメッセージにより復旧できるため問題はない。
【００５９】
以上のように、本実施形態によれば、同期対象の制御情報（フローエントリ）をテンポラリフローエントリと、パーマネントフローエントリとに分けて、効率的に同期処理とスイッチへの反映を行うことができる。具体的には、テンポラリフローエントリについては、スイッチ２００への設定時間を短縮できる。また、パーマネントフローエントリも、テンポラリフローエントリより優先して同期され、加えて、テンポラリフローエントリの同期処理自体、同期完了を待つことなく完結するため、それほど遅延することなく、スイッチ２００に設定されることになる。
【００６０】
［第２の実施形態］
続いて、上記した第１の実施形態の制御装置に制御情報（フローエントリ）へのタイムスタンプ付加機能を追加して、系切替時の照合処理を効率よく行いうるようにした第２の実施形態について図面を参照して詳細に説明する。
【００６１】
上記した第１の実施形態の場合、系切替の実施タイミングによっては、スイッチ２００に実際に設定されている制御情報（フローエントリ）と、稼動系及び待機系の制御装置１００、１００−２が認識している制御情報（フローエントリ）の設定状態に差異が生じうる。
【００６２】
とりわけ、パーマネントフローエントリについては厳密な同期が要請されるため、両者の制御情報（フローエントリ）の設定状態を突合する状態整合処理が必要となる。このとき、スイッチ２００及び制御装置１００、１００−２に設定されているすべての制御情報（フローエントリ）を対象にすると、状態整合処理が重くなり完了までにかなり長い時間がかかってしまう。
【００６３】
そこで、本実施形態では、上記した第１の実施形態の制御装置１００に制御情報整合部１４０を追加し、また、制御情報の同期タイミングに変更を加えている。その他の構成は第１の実施形態と同様であるため、以下、その相違点を中心に説明する。
【００６４】
図７は、本発明の第２の実施形態の制御装置の構成を示す図である。図７を参照すると、本発明の第２の実施形態の制御装置１００Ｂは、第１の実施形態の制御装置１００に、制御情報整合部１４０を追加した構成となっている。
【００６５】
制御情報整合部１４０は、系切り替え後に、新たに稼動系となった制御装置１００−２と、スイッチ２００間の制御情報（フローエントリ）の設定状態を照合する。具体的には、制御情報整合部１４０は、制御情報管理部１２０と、スイッチ２００との双方から、指定した時間範囲のタイムスタンプを持つ制御情報（フローエントリ）を取得し、両者を照合して、差分がある場合、該当する制御情報（フローエントリ）の修正を行う。
【００６６】
本実施形態の制御情報作成部１１０Ｂは、上記状態整合処理を行うために、図８に示すよう、待機系制御装置１００−２との同期時と、スイッチ２００への制御情報（フローエントリ）の設定時に、制御情報（フローエントリ）の作成時を示すタイムスタンプを設定する。なお、本実施形態では、制御情報（フローエントリ）のcookieの下位ビットをタイムスタンプの格納領域として使用する（非特許文献２の「5.2 Flow Table」のTable1参照）。もちろん、その他の拡張フィールドを設けて、タイムスタンプ情報を格納するようにしてもよい。
【００６７】
また、上記状態整合処理を行うために、パーマネントフローエントリの削除時の処理手順が変更される。図９は、本発明の第２の実施形態の制御装置１００Ｂのパーマネントフローエントリの削除時の動作を表したシーケンス図である。図４に示した第１の実施形態の手順と異なるのは、トポロジの変更を検出して（ステップＳ２０４）、不要となるパーマネントフローエントリを求め、又は、既設定のパーマネントフローエントリの書き換える内容を決定した後（ステップＳ２０５）の動作である。
【００６８】
第１の実施形態では、不要となったパーマネントフローエントリをそのまま削除したがタイムスタンプが古いままであると状態整合時に直近に異動のあった制御情報（フローエントリ）が漏れてしまう可能がある。そこで、本実施形態では、実際に削除を行う前に、一度タイムスタンプの更新を行う（図９のステップＳ２１６〜Ｓ２１９）。そして、その後、制御装置１００Ｂは、スイッチ２００に対し、パーマネントフローエントリの削除を指示し（図９のステップＳ２２０〜Ｓ２２３）、その応答を待って、制御情報管理部１２０から削除している（図９のステップＳ２２４〜Ｓ２２５）。
【００６９】
続いて、本実施形態の制御装置１００Ｂによる状態整合処理について説明する。なお、第１の実施形態では、制御情報（フローエントリ）の同期の際に、パーマネントフローエントリと、テンポラリフローエントリとを区別して処理を行ったが、本実施形態の状態整合処理は、両者を特に区別せず、まとめて照合することとしている。
【００７０】
上記のように設定時に付加されたタイムスタンプは、制御情報管理部１２０と、スイッチ２００との双方から、制御情報（フローエントリ）を取得する際の抽出条件として使用される。なお、本実施形態では、前述のとおり、制御情報（フローエントリ）のcookieの下位ビットにタイムスタンプを格納することとしているため、オープンフロースイッチ仕様書Ｖ１．１以降のcookieのフィルタリング機能を用いて、取得する制御情報（フローエントリ）を指定することができる（非特許文献２のB.9.6「Other changes」の「Cookie Enhancements Proposal-cookie mask for filtering」参照）。
【００７１】
続いて、本実施形態で用いる制御情報（フローエントリ）の取得条件について説明する。図１０を参照すると、状態整合開始時（現在時刻）と、その時刻から保証期間として定められた１０００００秒（１０進数で表すと３２秒）遡った保証期間前との２つの時点が示されている。なお、図１０の値はすべて２進数で表されている。ここでは、保証期間全体をカバーするフィルタリング条件で制御情報（フローエントリ）を取得し状態整合処理を行うことを考える。
【００７２】
図１１は、系切替などのタイミングで開始される状態整合処理のシーケンス図を示す。まず、制御装置１００Ｂは、開始時間（現在時刻）を取得し、制御情報（フローエントリ）を取得する第１の条件を作成する（ステップＳ４００）。この第１の条件は、保証期間の長さに合わせ、タイムスタンプの上位ビットから任意の長さをマスクすることで作成できる（図１０の「１０１１ｘｘｘｘｘ」参照）。また、前記第１の条件による取得だけでは、図１０の保証期間全体をカバーできないため、現在時刻から保証期間前までの時間をカバーする第２の条件を作成する（図１０の「１０１０ｘｘｘｘｘ」参照）。
【００７３】
次に、制御装置１００Ｂは、前記作成した第１、第２の条件で、制御情報管理部１２０から、指定した範囲のタイムスタンプを持つ制御情報（フローエントリ）を取得する（ステップＳ４０１〜Ｓ４０４）。
【００７４】
同様に、制御装置１００Ｂは、スイッチ２００からも、第１、第２の条件で、制御情報（フローエントリ）を取得する（Ｓ４０５〜Ｓ４１２）。
【００７５】
次に、制御装置１００Ｂは、双方の制御情報（フローエントリ）を照合し、差分を求める（ステップＳ４１３）。そして、前記照合の結果、何らかの差分が見つかった場合、制御装置１００Ｂは、差分を修正する制御メッセージを生成し、スイッチ２００に送信する。具体的には、前記照合の結果、スイッチ２００に設定されているが、制御情報管理部１２０に存在しない制御情報（フローエントリ）が見つかった場合、制御装置１００Ｂは、スイッチ２００に対して該当制御情報（フローエントリ）の削除を指示する。一方、制御情報管理部１２０に存在するが、スイッチ２００に設定されていない制御情報（フローエントリ）が見つかった場合、制御装置１００Ｂは、スイッチ２００に対して該当する制御情報（フローエントリ）の設定を指示する。また、それぞれ対応する制御情報（フローエントリ）が設定されているが、アクションやcookieの値などが異なる場合、制御装置１００Ｂは、スイッチ２００に対し、制御情報（フローエントリ）の変更を指示し、内容を一致させる（ステップＳ４１４〜Ｓ４１５）。
【００７６】
以上のように機能を追加した本発明の第２の実施形態によれば、第１の実施形態の効果に加えて、系切り替え時に発生する状態不整合を短期間で修正できるようになる、という効果が奏される。
【００７７】
なお、上記した第２の実施形態では、cookieのフィルタリング機能を用いることを前提として説明したが、タイムスタンプの格納領域は、この例に限定されるものではない。また、制御情報（フローエントリ）の取得条件も、図１０に示した考え方と同様に、任意の期間（始点と終点でも良い）を設定して照合することができる。
【００７８】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態で用いた制御装置の構成や動作シーケンス等はあくまで一例である。
【００７９】
例えば、上記した第１の実施形態では、スイッチに対し、テンポラリフローエントリの設定や削除を指示してから、待機系の制御装置１００−２と同期を行うものとして説明したが、前述のとおり、テンポラリフローエントリの厳密な同期は必要ないので順序を逆にすることが可能である。また、パーマネントフローエントリについても、待機系の制御装置１００−２からの同期完了通知を待つものとして説明したが、スイッチ２００への設定を先に行っても良い（但し、同期が失敗した場合は、スイッチ２００に設定したパーマネントフローエントリを削除するロールバック処理が必要となる）。
【００８０】
また、上記した第１、第２の実施形態では、オープンフロースイッチとその制御装置（コントローラ）に適用した例を挙げて説明したが、類似のフロー種別を持つ集中制御型のネットワークや、スイッチに設定されている制御情報の状態整合が必要なネットワークにも適用可能である。
【００８１】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備え、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報の設定を行い、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報の設定を行う制御装置。
［第２の形態］
第１の形態の制御装置において、
前記作成した制御情報が前記第１の制御情報である場合、
前記通信ノードに前記第１の制御情報の設定を行ってから、前記他の制御装置との同期を実行する制御装置。
［第３の形態］
第１又は第２の形態の制御装置において、
前記第２の制御情報は、予め設定された通信ノード間のパケット転送経路を構成するための制御情報であり、
前記第１の制御情報は、前記第２の制御情報によって生成されるパケット転送経路に接続する一時的な経路を構成するための制御情報である制御装置。
［第４の形態］
第１から第３いずれか一の形態の制御装置において、
前記第１の制御情報に有効期間を設定する制御装置。
［第５の形態］
第１から第４いずれか一の形態の制御装置において、
少なくとも前記第２の制御情報に、設定時の時間を示すタイムスタンプを付加する制御装置。
［第６の形態］
第５の形態の制御装置において、さらに、
前記タイムスタンプを用いて、前記自装置側で管理している制御情報と、前記制御対象の通信ノードに設定されている制御情報とを、それぞれ取得し、照合処理を実行する制御情報整合部を備える制御装置。
［第７の形態］
第５又は第６の形態の制御装置において、
制御情報のcookieフィールドに前記タイムスタンプを記録する制御装置。
［第８の形態］
上記第１の視点による制御装置と、前記設定された制御情報に基づいて受信パケットを処理する通信ノードと、を含む通信システム。
［第９の形態］
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備えた制御装置が、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定するステップと、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定するステップと、を含む同期方法。
［第１０の形態］
同期して動作する他の制御装置に対し通信ノードに設定した制御情報を送信し同期を取る同期部と、制御対象の通信ノードに設定する制御情報を作成する制御情報作成部と、を備えたコンピュータに、前記作成した制御情報が前記制御対象の通信ノードからの通知に応じて一時的に設定する第１の制御情報である場合、前記他の制御装置との同期を待たずに、前記通信ノードに対し前記第１の制御情報を設定する処理と、設定対象の制御情報が、前記第１の制御情報以外の第２の制御情報である場合、前記他の制御装置との同期が取れてから、前記通信ノードに対し前記第２の制御情報を設定する処理と、を実行させるプログラム。
なお、上記第８〜第１０の形態は、第１の形態と同様に、第２〜第７の形態に展開することが可能である。
【００８２】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００８３】
１００、１００Ａ、１００Ｂ、１００−２  制御装置
１１０、１１０Ａ、１１０Ｂ  制御情報作成部
１２０  制御情報管理部
１３０、１３０Ａ  同期部
１４０  制御情報整合部
１５０  プロトコル処理部
１６０  宛先データベース
２００  スイッチ
【図１】
0005950021.tif 000002
【図２】
0005950021.tif 000003
【図３】
0005950021.tif 000004
【図４】
0005950021.tif 000005
【図５】
0005950021.tif 000006
【図６】
0005950021.tif 000007
【図７】
0005950021.tif 000008
【図８】
0005950021.tif 000009
【図９】
0005950021.tif 000010
【図１０】
0005950021.tif 000011
【図１１】
0005950021.tif 000012