(57)【要約】 【課題】集中制御型のネットワークにおける制御情報の一貫性の確認作業の効率化。【解決手段】通信システムは、通信ノードに制御情報を設定することにより前記通信ノードを制御する制御装置と、前記制御装置から設定された前記制御情報に従って受信パケットを処理する通信ノードと、を含む。前記制御装置は、前記制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報を埋め込み、前記通信ノードは、前記識別情報を含んだ状態で、前記制御情報を保持する。【選択図】図１
2015142344.tif 000002
【特許請求の範囲】
【請求項１】
通信ノードに制御情報を設定することにより前記通信ノードを制御する制御装置と、
前記制御装置から設定された前記制御情報に従って受信パケットを処理する通信ノードと、を含み、
前記制御装置は、前記制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報を埋め込み、
前記通信ノードは、前記識別情報を含んだ状態で、前記制御情報を保持すること、
を特徴とする通信システム。
【請求項２】
前記識別情報は、所定時間毎に更新される時刻情報を用いて作成される請求項１の通信システム。
【請求項３】
さらに、
前記制御装置から通信ノードに設定した制御情報を受信し、前記制御装置の予備系として待機する第２の制御装置と、を含み、
前記第２の制御装置は、前記第１の制御装置に代わって運用系として動作を開始する際に、前記識別情報の新しいものから順に、前記通信ノードと前記制御情報の整合処理を実施すること、を特徴とする請求項１又は２の通信システム。
【請求項４】
前記識別情報は、所定の時間間隔で１周するよう生成され、
前記第２の制御装置は、前記識別情報の新しいものから順に、前記識別情報が１周するまで前記識別情報の整合処理を実施する請求項３の通信システム。
【請求項５】
前記識別情報は、さらに、制御情報の優先度情報を含み、
前記第２の制御装置は、前記制御情報の設定時期に加えて、前記優先度情報を用いて制御情報の整合処理を実施する請求項３又は４の通信システム。
【請求項６】
前記識別情報は、前記制御情報中のマッチ条件中のクッキー情報の格納領域に格納され、
前記第２の制御装置は、前記通信ノードから、前記クッキー情報を指定して制御情報を取得し、自装置側の制御情報と照合する請求項３から５いずれか一の通信システム。
【請求項７】
通信ノードに制御情報を設定することにより前記通信ノードを制御する手段と、
前記制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報を埋め込む手段と、を備えた制御装置。
【請求項８】
制御装置から設定された制御情報に従って受信パケットを処理する手段と、
前記制御装置からの制御情報に含まれる識別情報を指定した要求に応じて、前記識別情報に対応する制御情報を送信する手段と、を備え、
前記識別情報により、制御情報の設定時期を特定可能となっている通信ノード。
【請求項９】
制御装置が、制御情報の設定時期を特定可能な識別情報を含んだ制御情報を作成するステップと、
前記制御装置が、通信ノードに前記識別情報を含んだ制御情報を設定するステップと、
を特徴とする制御情報の設定方法。
【請求項１０】
制御装置を構成するコンピュータに、
制御情報の設定時期を特定可能な識別情報を含んだ制御情報を作成する処理と、
通信ノードに前記識別情報を含んだ制御情報を設定する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、制御装置、通信ノード、制御情報の設定方法及びプログラムに関し、特に、制御装置が通信ノードに制御情報を設定することにより通信を実現する通信システム、制御装置、通信ノード、制御情報の設定方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１にオープンフローを用いたネットワークシステムの一例が開示されている。オープンフローでは、オープンフローコントローラ（以下、「ＯＦＣ」）と呼ばれる制御装置が、オープンフロースイッチ（以下、「ＯＦＳ」）と呼ばれる通信ノードにフローエントリ等と呼ばれる一種の制御情報を設定することで通信を実現している。
【０００３】
オープンフローについては、非特許文献１、２に詳細が記載されている。非特許文献２においては、フローエントリ中に、Ｃｏｏｋｉｅと呼ばれる識別情報を格納するＣｏｏｋｉｅフィールドが設けられ、コントローラによるフローエントリの操作時に、Ｃｏｏｋｉｅフィールドを指定することができるようになっている（非特許文献２の「Ａ．３．４  Ｍｏｄｉｆｙ  Ｓｔａｔｅ  Ｍｅｓｓａｇｅｓ」等参照）。特許文献１においては、このＣｏｏｋｉｅフィールドに、フローを識別するためのフロー識別子を格納し、サンプリング対象のフローの識別に利用している。
【０００４】
特許文献２には、運用系と待機系によって２重化されたデータベースシステムにおいて、運用系データベースと待機系データベースとが、更新時にデータに付与されるシーケンス番号を用いて同期及び整合を行う構成が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１２／０９８７８６号
【特許文献２】特開２０１０−１５２５９１号公報
【非特許文献】
【０００６】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２６（２０１４）年１月２２日検索］、インターネット〈URL: http://archive.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０２）、［ｏｎｌｉｎｅ］、［平成２６（２０１４）年１月２２日検索］、インターネット〈URL: http://archive.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下の分析は、本発明によって与えられたものである。上記オープンフロー等の制御装置を有する通信システムにおいて、制御装置が保持する制御情報と通信ノードに設定した制御情報との一貫性の維持が問題となる。例えば、制御装置と通信ノードとの間の物理リンクに障害が発生し、制御装置から設定した制御情報が、通信ノードに正しく設定されていない事態が起こりうる。この結果、通信ノードに、必要な制御情報が通信ノードに設定されずにパケットロスとなったり、場合によっては、パケットループが生じたりする可能性もある。また、同様の問題は、制御装置が運用系（現用系）と待機系（予備系）とに冗長化されている場合にも起こりうる。
【０００８】
上記制御情報エントリのようなエントリ同士の一貫性を確認する方法として特許文献２のように、データ更新時にインクリメントするシーケンス番号を付与して両者を照合していく方法が挙げられる。しかしながら、オープンフローにおいては、非特許文献２のように、オープンフローコントローラに適合するスイッチの仕様が詳細に決められており、シーケンス番号を格納するための専用領域を設けるだけに止まらず、該領域を読みだすための専用メッセージまで定義する必要が生じてしまう。
【０００９】
また仮に、上記のようなシーケンス番号を付与することが受け入れられたとしても、制御情報同士をどのように照合、比較していくかが問題となる。例えば、全件の制御情報を網羅的に照合する場合、通信ノードの数とそれぞれの通信ノードが保持する制御情報の数に応じて、時間が掛かってしまうという問題点がある。
【００１０】
本発明は、上記集中制御型のネットワークにおける制御情報の一貫性の確認作業を効率化できる通信システム、制御装置、通信ノード、制御情報の設定方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の視点によれば、通信ノードに制御情報を設定することにより前記通信ノードを制御する制御装置と、前記制御装置から設定された前記制御情報に従って受信パケットを処理する通信ノードと、を含み、前記制御装置は、前記制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報を埋め込み、前記通信ノードは、前記識別情報を含んだ状態で、前記制御情報を保持する通信システムが提供される。
【００１２】
第２の視点によれば、上記した通信システムに用いる制御装置及び通信ノードが提供される。
【００１３】
第３の視点によれば、制御装置が、制御情報の設定時期を特定可能な識別情報を含んだ制御情報を作成するステップと、前記制御装置が、通信ノードに前記識別情報を含んだ制御情報を設定するステップと、を特徴とする制御情報の設定方法が提供される。本方法は、通信ノードに制御情報を設定することにより通信ノードを制御する制御装置という、特定の機械に結びつけられている。
【００１４】
第４の視点によれば、制御装置を構成するコンピュータに、制御情報の設定時期を特定可能な識別情報を含んだ制御情報を作成する処理と、通信ノードに前記識別情報を含んだ制御情報を設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
本発明によれば、制御情報の設定時期を特定可能な識別情報を用いることで、集中制御型のネットワークにおける制御情報の一貫性の確認作業が効率化される。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態の構成を示す図である。
【図２】本発明の第１の実施形態の変形構成を示す図である。
【図３】本発明の第２の実施形態の通信システムの構成を示す図である。
【図４】本発明の第２の実施形態の通信システムの詳細構成を示すブロック図である。
【図５】本発明の第２の実施形態のＣｏｏｋｉｅ値の生成方法を説明するための図である。
【図６】本発明の第２の実施形態のＯＦＣ（運用系）の動作を表した流れ図である。
【図７】図３の状態において、新規エントリが追加された状態を示す図である。
【図８】本発明の第２の実施形態の通信システムの動作（障害発生時）を説明するための図である。
【図９】本発明の第２の実施形態のＯＦＣ（待機系）の動作を表した流れ図である。
【図１０】本発明の第２の実施形態のＯＦＣ（待機系）によるフローエントリの整合処理の別の例を説明するための図である。
【図１１】本発明の第２の実施形態のＯＦＣ（待機系）によるフローエントリの整合処理の別の例を説明するための図である。
【図１２】本発明の第３の実施形態において使用される識別情報の構成を示す図である。
【図１３】本発明の第３の実施形態における優先度を用いたフローエントリの整合処理の例を説明するための図である。
【図１４】本発明の第３の実施形態における優先度を用いたフローエントリの整合処理の別の例を説明するための図である。
【発明を実施するための形態】
【００１７】
［第１の実施形態］
本発明は、その一実施形態において、図１に示すように、通信ノード２０に制御情報を設定することにより通信ノード２０を制御する制御装置１０と、制御装置１０から設定された前記制御情報に従って受信パケットを処理する通信ノード２０と、を含む通信システムにて実現できる。より具体的には、制御装置１０は、制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報（図１のＴ１、Ｔ２）を埋め込む。通信ノード２０は、前記識別情報を含んだ状態で、前記制御情報を保持する。
【００１８】
このようにすることで、識別情報を手掛かりに、ネットワーク障害等が発生したタイミング付近（例えば、識別情報Ｔ２に対応する時間帯）で通信ノード２０に設定された制御情報から同期外れの確認処理を開始できる。この結果、制御装置１０と通信ノード２０との間で同期外れを早期に回復することが可能となる。
【００１９】
なお、図１では、制御装置１０と通信ノード２０間の同期外れの確認に用いる例を挙げて説明したが、例えば、図２に示すように、制御装置１０から通信ノード２０に設定した制御情報を受け取る検証装置３０を設ける構成も好ましく採用可能である。図２の構成によれば、制御装置１０に代わって検証装置３０が同期外れを確認することができる。また、検証装置３０において、障害の解析や制御装置１０の動作検証等を行う際にも前記識別情報を用いて分析を行うことが可能となる。
【００２０】
［第２の実施形態］
続いて、制御装置として複数のＯＦＣを用意して冗長化を行い、そのうちの１台を運用系（現用系）として動作させ、その他の装置を待機系（予備系）として待機させるようにした第２の実施形態について図面を参照して詳細に説明する。
【００２１】
図３は、本発明の第２の実施形態の構成を模式的に表した図である。図３を参照すると、運用系として動作するＯＦＣ（運用系）１００Ａと、運用系に代わって動作可能なＯＦＣ（待機系；第２の制御装置）１００Ｂと、１以上のＯＦＳ２００Ａ〜２００Ｃとが接続された構成が示されている。なお、以下の説明では、ＯＦＣ（運用系）１００Ａ、ＯＦＣ（待機系）１００Ｂを特に区別しない場合、「ＯＦＣ１００」と記す。同様に、ＯＦＳ２００Ａ〜２００Ｃを特に区別しない場合「ＯＦＳ２００」と記す。
【００２２】
ＯＦＣ（運用系）１００Ａは、ＯＦＳ２００に対してフローエントリを設定することにより、フロー制御を指示する。ＯＦＳ２００は、ＯＦＣ１００から設定されたフローエントリに基づいて、受信フレーム（パケット）を更新したり、他のＯＦＳ２００に転送したり、廃棄したりする。
【００２３】
また、ＯＦＣ（運用系）１００Ａは、ＯＦＣ（待機系）１００Ｂに対し、ＯＦＳ２００に設定したフローエントリそのものあるいはその内容を通知する。ＯＦＣ（待機系）１００Ｂは、受信したフローエントリを保持し、ＯＦＣ（運用系）１００Ａが障害で運用を継続できない場合に、保持していたフローエントリを基に、運用の引き継ぎを実施する。
【００２４】
図４は、ＯＦＣ１００とＯＦＳ２００の詳細な構成図である。ＯＦＣ（運用系）１００Ａは、ＯＦＳ制御部１１０Ａとフローエントリ管理テーブル１２０Ａとを備えている（ＯＦＣ（待機系）１００Ｂも同様）。ＯＦＳ２００は、フローエントリ処理部２１０とフローテーブル２２０とを備えている。
【００２５】
ＯＦＣ（運用系）１００ＡのＯＦＳ制御部１１０Ａは、ユーザからの指示あるいは所定の制御ポリシに従って動作し、「フローエントリ管理テーブル１２０Ａの更新」と「ＯＦＳ２００へのフローエントリの操作内容（追加、変更又は削除）の指示」と「ＯＦＣ（待機系）１００Ｂに対するフローエントリの更新内容の通知（同期）」を実施する。
【００２６】
ＯＦＣ（待機系）１００ＢのＯＦＳ制御部１１０Ｂは、ＯＦＣ（運用系）１００Ａから受信したフローエントリをフローエントリ管理テーブル１２０Ｂに保存する。
【００２７】
ＯＦＳ２００のフローエントリ処理部２１０は、ＯＦＣ（運用系）１００Ａから受信されたフローエントリをフローテーブル２２０に保存する。
【００２８】
フローエントリ管理テーブル１２０内のフローエントリ１２１Ａ、１２１Ｂおよびフローテーブル２２０内のフローエントリ２２１は、Ｃｏｏｋｉｅとマッチ条件とＡｃｔｉｏｎの情報を持つ。
マッチ条件はＯＦＳ２００に入力するフレーム（パケット）がこのフローエントリに適合しているかを判断するための情報である。Ａｃｔｉｏｎはマッチ条件に適合したフレーム（パケット）に適用する処理内容を示す情報である。Ｃｏｏｋｉｅは、ＯＦＣ１００がＯＦＳ２００へフローエントリを設定する際に生成する制御情報（フローエントリ）の識別情報である。本実施形態では、非特許文献２のＣｏｏｋｉｅを用いることとし、Ｃｏｏｋｉｅを指定してフローエントリの取得や操作ができるものとする。
【００２９】
図５は、ＯＦＣ１００によるＣｏｏｋｉｅ値の生成ルールの一例を示す図である。図５の例では、特定時刻を起点としてＴ秒間隔でＣｏｏｋｉｅ値を増大させることで、フローエントリの設定時期を特定可能なＣｏｏｋｉｅ値を生成している。なお、Ｃｏｏｋｉｅ値の上限値が定められており、（Ｎ−１）になった場合、次のタイミングではＣｏｏｋｉｅ値を初期値（０）戻す処理が行われる。このようにすることで、Ｃｏｏｋｉｅ値の長さを所定のビット数に抑えることが可能となっている。
【００３０】
図５に示すＣｏｏｋｉｅ値の生成ルールの場合、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から取得した時刻を、Ｎ×Ｔ秒で除算し、余りをさらにＴで除算（余りは切り捨て）することでＣｏｏｋｉｅ値を求めることができる。これにより、ＵＮＩＸ（登録商標）エポックタイムを起点として、Ｔ秒単位に０〜（Ｎ−１）の範囲で変化するＣｏｏｋｉｅ値を得ることができる。
【００３１】
なお、上記Ｃｏｏｋｉｅ値の生成式中の「Ｎ」は、事前に決められたＣｏｏｋｉｅ値が取りうる数であり、ＯＦＳ２００に設定されているフローエントリを分割する数ともなる。ＯＦＣ１００とＯＦＳ２００の間でフローエントリの整合処理は、分割単位であるＮごとに実施されることになる。Ｎを大きくすると、１回のフローエントリの整合処理で、ＯＦＳ２００から取得する際に使用するＯｐｅｎＦｌｏｗメッセージ数が多くなる。一方で、Ｎを小さくするとＯｐｅｎＦｌｏｗメッセージ数を少なくできるが、同値のＣｏｏｋｉｅ値を持つフローエントリが増えてしまう。これらを考慮してＮの大きさをチューニングする必要がある。
【００３２】
同様に、Ｃｏｏｋｉｅ値の更新時間間隔である「Ｔ」は、多数のフローが同一のＣｏｏｋｉｅ値とならないように分散するための値でもある。特定の時間帯にフローエントリが多数設定されることがあり、各フローエントリのＣｏｏｋｉｅ値がうまく分散されないと、多数のフローエントリが同時に取得され、フローエントリの整合処理の時間が長くなる場合がある。ＯＦＳ２００へのフローエントリのセットアップ性能が高いほど、一定期間に設定可能なフローエントリの数が多くなることから、Ｃｏｏｋｉｅ値を分散させるには、更新時間間隔Ｔを小さくする必要がある。従って、これらを考慮してＴの値もチューニングする必要がある。
【００３３】
再度図４を参照すると、フローエントリの設定やＯＦＣ１００間の通知により、ＯＦＣ（運用系）１００ＡとＯＦＣ（待機系）１００ＢとＯＦＳ２００とが同一のフローエントリ１２１Ａ、１２１Ｂ、２２１を保持している。ＯＦＳ２００Ａは、マッチ条件Ｍ１に適合するフレーム（パケット）を受信した場合、当該フレーム（パケット）に処理Ａ１を適用する。それぞれのフローエントリのＣｏｏｋｉｅ値は対応していることになるため、Ｃｏｏｋｉｅ値を指定してフローエントリ同士を照合することで、フローエントリの差分（同期外れ）を検出できることになる。
【００３４】
なお、図４に示したＯＦＣ（制御装置）及びＯＦＳ（通信ノード）の各部（処理手段）は、これらの装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００３５】
続いて、本実施形態の動作について図面を参照して、上記フローエントリの高速な照合処理の方法について詳細に説明する。図６は、フローエントリの設定契機が発生した際のＯＦＣ（運用系）１００Ａの動作を表した流れ図である。フローエントリの設定契機としては、図６のＳ１１に示すユーザの指示のほか、ＯＦＳからのフローエントリの設定要求の受信や所定の通信ポリシに従ったフローエントリの操作等が挙げられる。
【００３６】
図６を参照すると、まず、ＯＦＣ（運用系）１００Ａは、ユーザから指示を受けると（ステップＳ１１）、その内容に応じてフローエントリの追加又は変更を行うのか否かを確認する（ステップＳ１２）。
【００３７】
フローエントリの追加又はフローエントリの変更を行う場合（ステップＳ１２のＹｅｓ）、ＯＦＣ（運用系）１００Ａは、ＯＦＳ２００に対して追加または更新するフローエントリに付与するＣｏｏｋｉｅ値を計算する（ステップＳ１３）。一方、フローエントリの削除を行う場合、Ｃｏｏｋｉｅ値の計算は不要であり、ステップＳ１３に進む。
【００３８】
なお、本実施形態では、フローエントリの更新を行う場合にも、Ｃｏｏｋｉｅ値を更新することとしているが、非特許文献２のオープンフロースペックのＦｌｏｗＴａｂｌｅＭｏｄｉｆｉｃａｔｉｏｎメッセージのＭｏｄｉｆｙリクエストはＣｏｏｋｉｅの更新を許容していない。一方で、ＦｌｏｗＴａｂｌｅＭｏｄｉｆｉｃａｔｉｏｎメッセージのＡｄｄリクエストでは、Ｃｏｏｋｉｅの更新の許容をしているため、本実施形態では、フローエントリの更新の際に、更新前のフローに対してＦｌｏｗＴａｂｌｅＭｏｄｉｆｉｃａｔｉｏｎメッセージのＡｄｄリクエストでフローエントリの上書きを実施する。このように、本実施形態では、ＯＦＳ２００がＦｌｏｗＴａｂｌｅＭｏｄｉｆｉｃａｔｉｏｎメッセージのＡｄｄリクエストでＣｏｏｋｉｅの更新をサポートしていることを前提とするが、その他専用のメッセージを定義（ベンダ定義メッセージ）してＣｏｏｋｉｅの更新を実施することとしてもよい。
【００３９】
次に、ＯＦＣ（運用系）１００ＡのＯＦＳ制御部１１０Ａは、「フローエントリ管理テーブル１２０Ａの更新」と「ＯＦＳ２００へのフローエントリの操作内容（追加、変更又は削除）の指示」と「ＯＦＣ（待機系）１００Ｂに対するフローエントリの更新内容の通知（同期）」を実施する。
【００４０】
図７は、図３の状態において、さらに、ユーザの指示に基づいて、マッチ条件Ｍ２、アクションＡ２を持つフローエントリ１２２Ａ、１２２Ｂ、２２２が生成され、各装置に設定された状態を表している。また、図７の例では、前述の式を用いて、Ｃｏｏｋｉｅ値「２」が計算されており、各フローエントリのＣｏｏｋｉｅフィールドに設定されている。
【００４１】
図８は、その後、ＯＦＣ（運用系）１００Ａに障害が発生し、ＯＦＣ（待機系）１００ＢとＯＦＳ２００とが接続された状態を示している。
【００４２】
ＯＦＣ（運用系）１００Ａに障害が発生し、ＯＦＣ（運用系）１００Ａに代わってＯＦＣ（待機系）１００Ｂが制御を引き継ぐにあたり、ＯＦＣ（待機系）１００Ｂは、図９に示す処理（フローエントリの整合処理）を実施する。
【００４３】
図９を参照すると、ＯＦＣ（待機系）１００Ｂは、ＯＦＣ（運用系）１００Ａに障害が発生したことを検出すると（ステップＳ２１）、ＯＦＣ（運用系）１００Ａに代わってＯＦＳの制御を引き継ぐために、ＯＦＳ２００と接続する（ステップＳ２２）。
【００４４】
次に、ＯＦＣ（待機系）１００ＢのＯＦＳ制御部１１０Ｂは、フロー追加・更新時（図６のＳ１２）と同様の手法で、現在時刻からＣｏｏｋｉｅ値を計算する（ステップＳ２３）。
【００４５】
次に、ＯＦＣ（待機系）１００Ｂは、計算したＣｏｏｋｉｅ値から分割単位ごとのフローエントリの照合を開始する（ステップＳ２４）。
【００４６】
続いて、ＯＦＣ（待機系）１００ＢのＯＦＳ制御部１１０Ｂは、ＯＦＳ２００とのフローエントリの整合処理を実施する。ここでは、図５に示すように、ＯＦＳ２００にフローエントリをＮ分割して登録するため、分割単位ごとにＮ回の照合処理を実施することになる。
【００４７】
まず、ＯＦＣ（待機系）１００Ｂは、ＯＦＳ２００から該当Ｃｏｏｋｉｅ値のフローエントリを取得する（ステップＳ２５）。
【００４８】
次に、ＯＦＣ（待機系）１００Ｂは、取得したフローエントリとＯＦＣ（待機系）１００Ｂのフローエントリ管理テーブル１２０Ｂ内のフローエントリの差分を抽出する（ステップＳ２６）。
【００４９】
前ステップで、差分が抽出された場合、ＯＦＣ（待機系）１００Ｂは、抽出したフローエントリを基に、ＯＦＳ２００に対して自身のフローエントリと整合するよう、フローエントリの操作を指示する（ステップＳ２７）。
【００５０】
次に、ＯＦＣ（待機系）１００Ｂは、Ｃｏｏｋｉｅ値に対応する時刻の新しい方から古い方へ更新する。図５に示す例では、ＯＦＣ（待機系）１００ＢとＯＦＳ２００が接続した時点のＣｏｏｋｉｅ値５から、時間を遡る４、３、２、．．．の方向へＣｏｏｋｉｅ値を更新する。なお、Ｃｏｏｋｉｅ値が０となった場合、次の値はＣｏｏｋｉｅ値の最大値である（Ｎ−１）となる。
【００５１】
次に、ＯＦＣ（待機系）１００Ｂは、Ｃｏｏｋｉｅ値が１周したかどうかを確認する（ステップＳ２９）。Ｃｏｏｋｉｅ値が１周していない場合（ステップＳ２９のＮｏ）、ステップＳ２５に戻って同様の整合処理を繰り返す。このように、Ｃｏｏｋｉｅ値が１周して再び「５」となるまでステップＳ２５〜Ｓ２８の処理を繰り返すこととなる。
【００５２】
Ｃｏｏｋｉｅ値が１周している場合（ステップＳ２９のＹｅｓ）、一連の処理が完了する。
【００５３】
ここで、ステップＳ２５〜Ｓ２８で差分が抽出される場合の動作について図５を参照してより詳細に説明する。
【００５４】
図５のＣｏｏｋｉｅ値「４」のタイミングでＯＦＣ（運用系）１００Ａで障害が発生したものとする。その結果、図５のＣｏｏｋｉｅ値「４」のタイミングでＯＦＣ（運用系）１００ＡからＯＦＳ２００に送信されたフローエントリの設定指示がＯＦＳ２００に到達せず、図８に示すようにＯＦＣ１００側に、Ｃｏｏｋｉｅ値「４」、マッチ条件Ｍ４、アクションＡ４のフローエントリ１２４Ａ、１２４Ｂが設定される一方、ＯＦＳ２００Ａのフローテーブル２２０には該当するフローエントリが設定されなかったものとする。
【００５５】
前述のとおり、ＯＦＣ（待機系）１００Ｂと障害を検出したＣｏｏｋｉｅ値「５」の時点から照合を開始するが、この時点では、ＯＦＣ（待機系）１００にもＯＦＳ２００Ａにも該当するフローエントリは存在しないため差分も検出されない。
【００５６】
しかしながら、次のＣｏｏｋｉｅ値「４」を指定してＯＦＳ２００Ａからフローエントリを取得すると、ＯＦＣ（待機系）１００Ｂのフローエントリ管理テーブル１２０Ｂに存在するＣｏｏｋｉｅ値「４」のフローエントリ１２４Ｂが、ＯＦＳ２００Ａのフローテーブル２２０に存在しないため、差分として抽出される。この場合、ＯＦＣ（待機系）１００Ｂは、ＯＦＳ２００Ａに対して、Ｃｏｏｋｉｅ値「４」、マッチ条件Ｍ４、アクションＡ４のフローエントリの設定を指示する。
【００５７】
ＯＦＣ（待機系）１００Ｂは、同様にフローエントリの整合処理を継続するが、Ｃｏｏｋｉｅ値３〜１の差分は存在しない。Ｃｏｏｋｉｅ値が０となった段階でＯＦＣ（待機系）１００Ｂは、自装置側に存在しないＣｏｏｋｉｅ値「０」のフローエントリを差分として抽出する。この場合、ＯＦＣ（待機系）１００Ｂは、ＯＦＳ２００Ａに対して、Ｃｏｏｋｉｅ値「０」、マッチ条件Ｍ２、アクションＡ２のフローエントリの削除を指示する。その後も同様に、ＯＦＣ（待機系）１００Ｂは、フローエントリの整合処理を継続するが、Ｃｏｏｋｉｅ値（Ｎ−１）〜６の差分は存在しない。以上が完了した段階で、一連の整合処理が完了する。
【００５８】
最後に、上記Ｃｏｏｋｉｅ値を１周させて整合処理を網羅的に実施する意義について説明する。上記したようにフローエントリの追加又は変更時にＣｏｏｋｉｅ値を計算し、フローエントリを付加する構成を取った場合、ＯＦＣの障害発生と時間的に離れたタイミングでＯＦＣ１００−ＯＦＳ２００間のフローエントリの不一致が発生することも想定される。例えば、図１０に示すように、Ｃｏｏｋｉｅ値「５」におけるフローエントリＢの削除指示がＯＦＣ（待機系）１００Ｂには伝わったが、リンク障害等の理由でＯＦＳ２００にはフローエントリＢの削除指示が伝らなかったものとする。この場合、ＯＦＳ２００に該当フローエントリＢが残っているにも拘わらず、ＯＦＣ（待機系）１００Ｂは正常にフローエントリＢの削除更新が行われたものとしてフローエントリ管理テーブル１２０Ｂから該当エントリを削除してしまう。
【００５９】
このようなタイミングで発生する残存フローエントリＢは、図１０に示すように、フロー追加時のＣｏｏｋｉｅ値「２」を持つため、障害発生時刻の例えばＣｏｏｋｉｅ値「５」から開始する整合処理では検出できない。しかしながら、図１１に示すように、Ｃｏｏｋｉｅ値を１周させて網羅的に整合処理を実施することで、Ｃｏｏｋｉｅ値「２」とした整合処理で、ＯＦＣ（待機系）１００Ｂ側になく、ＯＦＳ２００Ａにのみ存在するフローエントリが差分として抽出される。これを受けて、ＯＦＣ（待機系）１００Ｂは、ＯＦＳ２００Ａに対し、前記差分として抽出されたＣｏｏｋｉｅ値「２」を持つフローエントリＢの削除を指示する。
【００６０】
以上のように、本実施形態によれば、運用系のＯＦＣの障害時などに発生するＯＦＣ１００とＯＦＳ２００の間のフロー情報の不一致を高速に解消できると効果が奏される。その理由は、フローエントリの作成又は更新時に、フローエントリの設定（更新）時期を特定可能な識別情報をＣｏｏｋｉｅフィールドに格納し、このＣｏｏｋｉｅフィールドの値を基に、なるべく新しいフローエントリを優先して照合するよう構成したことにある。
【００６１】
［第３の実施形態］
続いて、上記したＣｏｏｋｉｅ値に代表される識別情報にさらに、フローの優先度情報を埋め込み、整合処理の際に参照するようにした第３の実施形態について説明する。本実施形態は、第２の実施形態と同様の構成にて実現できるので、以下、その相違点を中心に説明する。
【００６２】
図１２は、本実施形態で使用する識別情報（Ｃｏｏｋｉｅ値）の構成例を示す図である。図１２の例では、識別情報（Ｃｏｏｋｉｅ値）の上位所定ビットをフロー種別情報の格納領域とし、残る下位ビットを追加又は変更が行われた時期を示す時間情報の格納領域としている。そして、本実施形態では、フローエントリの追加又は変更が行われた時期を示す時間情報に加えて、上記フロー種別情報を用いた整合処理を実施する。
【００６３】
図１３は、先に、フロー種別情報を用いて優先度の高いフロー種別Ｐ１を優先して整合処理を行う例を示している。その後は、第２の実施形態と同様に、ＯＦＣ（待機系）１００Ｂは、時間情報順に整合処理を実施していく。このようにすることで、優先度の高いフロー種別Ｐ１を優先して整合処理に掛けることが可能となる。
【００６４】
図１４は、第２の実施形態と同様に、時間情報順に整合処理を実施していくが、フロー種別により整合処理を省略する例を示している。このようにすることで、優先度の高いフロー種別Ｐ１を優先して整合処理に掛けることが可能となる。
【００６５】
なお、図１３、図１４において、フロー種別Ｐ１についての整合処理が完了した後、その次に優先度の高いフロー種別（例えば、フロー種別Ｑ１）を整合処理の対象としてもよいし、あるいは、いくつかのフロー種別をまとめて整合処理に掛けることも可能である。
【００６６】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【００６７】
また例えば、上記した実施形態では、ＯＦＣ（運用系）１００Ａに障害が発生し、ＯＦＣ（待機系）１００Ｂに制御が切り替わる際に整合処理を行うものとして説明したが、複数の制御装置（ＯＦＣ）にて制御装置が冗長化されている構成に限られない。例えば、所定時間毎の定期検査として、あるいは、機器の保守やネットワーク構成の変更に伴う制御装置の動作中断、再開後に、ＯＦＣ１００が、ＯＦＳ２００との間のフローエントリの一貫性を確認するといった用途にも用いることができる。
【００６８】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態の通信システムにおいて、
前記識別情報は、所定時間毎に更新される時刻情報を用いて作成される通信システム。
［第３の形態］
第１又は第２の形態の通信システムにおいて、
さらに、
前記制御装置から通信ノードに設定した制御情報を受信し、前記制御装置の予備系として待機する第２の制御装置と、を含み、
前記第２の制御装置は、前記第１の制御装置に代わって運用系として動作を開始する際に、前記識別情報の新しいものから順に、前記通信ノードと前記制御情報の整合処理を実施する通信システム。
［第４の形態］
第３の形態の通信システムにおいて、
前記識別情報は、所定の時間間隔で１周するよう生成され、
前記第２の制御装置は、前記識別情報の新しいものから順に、前記識別情報が１周するまで前記識別情報の整合処理を実施する通信システム。
［第５の形態］
第３又は第４の形態の通信システムにおいて、
前記識別情報は、さらに、制御情報の優先度情報を含み、
前記第２の制御装置は、前記制御情報の設定時期に加えて、前記優先度情報を用いて制御情報の整合処理を実施する通信システム。
［第６の形態］
第３から第５いずれか一の形態の通信システムにおいて、
前記識別情報は、前記制御情報中のマッチ条件中のクッキー情報の格納領域に格納され、
前記第２の制御装置は、前記通信ノードから、前記クッキー情報を指定して制御情報を取得し、自装置側の制御情報と照合する通信システム。
［第７の形態］
通信ノードに制御情報を設定することにより前記通信ノードを制御する手段と、
前記制御情報中の所定の領域に、当該制御情報の設定時期を特定可能な識別情報を埋め込む手段と、を備えた制御装置。
［第８の形態］
制御装置から設定された制御情報に従って受信パケットを処理する手段と、
前記制御装置からの制御情報に含まれる識別情報を指定した要求に応じて、前記識別情報に対応する制御情報を送信する手段と、を備え、
前記識別情報により、制御情報の設定時期を特定可能となっている通信ノード。
［第９の形態］
（上記第３の視点による制御情報の設定方法参照）
［第１０の形態］
（上記第４の視点によるプログラム参照）
なお、上記第７〜第１０の形態は、第１の形態と同様に、第２〜第６の形態に展開することが可能である。
【００６９】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００７０】
１０  制御装置
２０  通信ノード
３０  検証装置
１００、１００Ａ、１００Ｂ  ＯＦＣ
１１０Ａ、１１０Ｂ  ＯＦＳ制御部
１２０Ａ、１２０Ｂ  フローエントリ管理テーブル
２００、２００Ａ〜２００Ｃ  ＯＦＳ
２１０  フローエントリ処理部
２２０  フローテーブル
１２１Ａ〜１２４Ａ、１２１Ｂ〜１２４Ｂ、２２１〜２２３  フローエントリ
【図１】
2015142344.tif 000003
【図２】
2015142344.tif 000004
【図３】
2015142344.tif 000005
【図４】
2015142344.tif 000006
【図５】
2015142344.tif 000007
【図６】
2015142344.tif 000008
【図７】
2015142344.tif 000009
【図８】
2015142344.tif 000010
【図９】
2015142344.tif 000011
【図１０】
2015142344.tif 000012
【図１１】
2015142344.tif 000013
【図１２】
2015142344.tif 000014
【図１３】
2015142344.tif 000015
【図１４】
2015142344.tif 000016