(57)【特許請求の範囲】
【請求項１】
パケットの処理規則を検索する複数の制御装置と、
前記制御装置から通知された処理規則に従ってパケットを処理する複数のパケット処理手段と、
パケット処理手段の各々に対して、当該パケット処理手段を制御する制御装置を割当てる割当手段と、
前記複数の制御装置により共有され、前記処理規則に関する情報を格納するデータベースと、を含み、
前記制御装置の各々は、パケット処理手段から処理規則の通知を要求されると、前記データベースを参照して前記パケットを処理するための処理規則を検索し、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に、検索した処理規則を通知する、
通信システム。
【請求項２】
前記制御装置の各々は、制御対象のパケット処理手段に対応する情報を前記データベースから検索し、検索された情報に基づいて、前記制御対象のパケット処理手段に送信する前記処理規則を決定する、
請求項１の通信システム。
【請求項３】
前記制御装置の各々は、制御対象のパケット処理手段が変更されたことに応じて、前記データベースの参照領域を変更する、
請求項１又は２の通信システム。
【請求項４】
前記データベースは、前記情報を、複数のパケット処理手段の各々に対応する領域に区分して格納する、
請求項１乃至３のいずれか一項に記載の通信システム。
【請求項５】
前記制御装置の各々は、所定の周期で前記データベースを参照し、前記割当手段により割当てられたパケット処理手段に通知する処理規則があるか否かを確認する、
請求項１乃至４のいずれか一項に記載の通信システム。
【請求項６】
前記制御装置の各々は、前記データベースの内容が変更されたことを示す通知を受信したことに応じて、前記データベースを参照する、
請求項１乃至５のいずれか一項に記載の通信システム。
【請求項７】
前記割当手段は、所定の規則に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
請求項１乃至６のいずれかの一項に記載の通信システム。
【請求項８】
前記割当手段は、制御装置の負荷状況に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
請求項１乃至７のいずれか一項に記載の通信システム。
【請求項９】
前記割当手段は、パケット処理手段の位置に関する情報に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
請求項１乃至８のいずれか一項に記載の通信システム。
【請求項１０】
前記割当手段は、それぞれのパケット処理手段に割り当てられた制御装置を他の制御装置に変更する機能を有する、
請求項１乃至９のいずれか一項に記載の通信システム。
【請求項１１】
前記割当手段は、制御装置が停止した場合に、前記停止した制御装置に代わってパケット処理手段を制御する制御装置を決定する、
請求項１乃至１０のいずれか一項に記載の通信システム。
【請求項１２】
パケットの処理を制御する制御装置であって、
パケット処理手段から処理規則の通知を要求されると、前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を検索する第一の手段と、
検索した前記処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する第二の手段と、
を含む制御装置。
【請求項１３】
前記第一の手段は、前記制御装置に割当てられたパケット処理手段に対応する情報を前記データベースから検索し、検索された情報に基づいて、当該パケット処理手段に送信する前記処理規則を決定する、
請求項１２の制御装置。
【請求項１４】
前記第一の手段は、制御対象のパケット処理手段が変更されたことに応じて、前記データベースの参照領域を変更する、
請求項１２又は１３の制御装置。
【請求項１５】
前記データベースは、前記情報を、複数のパケット処理手段の各々に対応する領域に区分して格納する、
請求項１３の制御装置。
【請求項１６】
前記制御装置は、所定の周期で前記データベースを参照し、割当手段により割当てられたパケット処理手段に通知する処理規則があるか否かを確認する、
請求項１２乃至１５のいずれか一項に記載の制御装置。
【請求項１７】
前記制御装置は、前記データベースの内容が変更されたことを示す通知を受信したことに応じて、前記データベースを参照する、
請求項１２乃至１６のいずれか一項に記載の制御装置。
【請求項１８】
複数の制御装置がパケットの処理を制御する通信方法であって、
複数のパケット処理手段の各々に、当該パケット処理手段を制御する制御装置を割当て、
前記制御装置の各々が、パケット処理手段から処理規則の通知を要求されると、複数の制御装置で共有されるデータベースを参照して、前記パケットを処理するための処理規則を検索し、
前記制御装置の各々が、割当てられたパケット処理手段に対して、検索した前記処理規則を通知する、
通信方法。
【請求項１９】
パケットの処理を制御する制御装置における制御方法であって、
パケット処理手段から処理規則の通知を要求されると、前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を検索し、
検索した前記処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する、
制御方法。
【請求項２０】
パケットの処理を制御する制御装置に、
パケット処理手段から処理規則の通知を要求されると、前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を検索する処理と、
検索した前記処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、日本国特許出願：特願２０１２−１３５０３１号（２０１２年６月１４日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、制御装置、通信方法、制御方法及びプログラムに関し、制御装置の制御に従ってパケットを処理する通信システム、制御装置、通信方法、制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータがスイッチやルータ等の通信機器によるパケット転送を集中制御する技術が提案されている。
【０００３】
特許文献１は、通信システムのスイッチが、制御装置から通知された指示に従って、パケットを処理する技術を開示する。制御装置は、通信システム上の複数のスイッチを集中制御する。
【０００４】
非特許文献１は、複数の制御装置が通信システム上の複数のスイッチの制御を分担する技術を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００８／０９５０１０号
【非特許文献】
【０００６】
【非特許文献１】Ｒｏｂ  Ｓｈｅｒｗｏｏｄほか６名、“ＦｌｏｗＶｉｓｏｒ：Ａ  Ｎｅｔｗｏｒｋ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｌａｙｅｒ”、［Ｏｎｌｉｎｅ］、［平成２４（２０１２）年５月２８日検索］、インターネット〈ＵＲＬ：  http://www.openflow.org/downloads/technicalreports/openflow-tr-2009-1-flowvisor.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。特許文献１のように、制御装置が複数の通信機器（スイッチやルータ等）を集中制御すると、制御装置の負荷が増大する可能性がある。制御装置の負荷増大は、通信システムのパフォーマンス低下の要因となる可能性がある。
【０００８】
非特許文献１のように、複数の制御装置で通信機器の制御を分担することが開示されているが、制御装置の障害回避等の、複数の制御装置の運用管理を容易にする構成については開示がない。
【課題を解決するための手段】
【０００９】
本発明の第１の視点において、通信システムは、パケットの処理規則を検索する複数の制御装置と、制御装置から通知された処理規則に従ってパケットを処理する複数のパケット処理手段と、パケット処理手段の各々に対して、当該パケット処理手段を制御する制御装置を割当てる割当手段と、複数の制御装置により共有され、前記処理規則に関する情報を格納するデータベースと、を含み、制御装置の各々は、パケット処理手段から処理規則の通知を要求されると、前記データベースを参照して前記パケットを処理するための処理規則を検索し、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に、検索した処理規則を通知する。
【００１０】
本発明の第２の視点において、制御装置は、パケットの処理を制御する制御装置であって、パケット処理手段から処理規則の通知を要求されると、制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を検索する第一の手段と、検索した処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する第二の手段と、を含む。
【００１１】
本発明の第３の視点において、通信方法は、複数の制御装置がパケットの処理を制御する通信方法であって、複数のパケット処理手段の各々に、当該パケット処理手段を制御する制御装置を割当て、制御装置の各々が、パケット処理手段から処理規則の通知を要求されると、複数の制御装置で共有されるデータベースを参照して、前記パケットを処理するための処理規則を検索し、制御装置の各々が、割当てられたパケット処理手段に対して、検索した前記処理規則を通知する。
【００１２】
本発明の第４の視点において、制御方法は、パケットの処理を制御する制御装置における制御方法であって、パケット処理手段から処理規則の通知を要求されると、制御装置と他の制御装置とで共有されるデータベースを参照し、パケットの処理方法に関する処理規則を検索し、決定した前記処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する。
【００１３】
本発明の第５の視点において、プログラムは、パケットの処理を制御する制御装置に、パケット処理手段から処理規則の通知を要求されると、制御装置と他の制御装置とで共有されるデータベースを参照し、パケットの処理方法に関する処理規則を検索する処理と、検索した前記処理規則を、前記制御装置に割当てられたパケット処理手段のうち、処理規則の通知を要求した前記パケット処理手段に対して通知する処理と、を実行させる。このプログラムは、コンピュータが読み取り可能な、非トランジェントな記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明は、制御装置の負荷を分散させ、複数の制御装置の運用管理を容易化できるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態のシステム構成の例を示す図である。
【図２】第１の実施形態の動作例を示す図である。
【図３】第１の実施形態の動作例を示す図である。
【図４】制御装置が参照するデータベースの例を示す図である。
【図５】第１の実施形態の動作例を示すフローチャートである。
【図６】割当ユニットの構成の例を示す図である。
【図７】割当ユニットが有するデータベースの例を示す図である。
【図８】割当ユニットが有するデータベースの例を示す図である。
【図９】割当ユニットが有するデータベースの例を示す図である。
【図１０】制御装置が参照するデータベースの例を示す図である。
【図１１】第３の実施形態の動作例を示す図である。
【図１２】第３の実施形態の動作例を示す図である。
【図１３】第４の実施形態に関連する技術を説明する図である。
【図１４】第４の実施形態に関連する技術を説明する図である。
【図１５】第４の実施形態の制御装置の構成の例を示す図である。
【図１６】第４の実施形態のパケット処理ユニットの構成の例を示す図である。
【図１７】第４の実施形態の動作例を示すシーケンス図である。
【図１８】第５の実施形態のシステム構成の例を示す図である。
【図１９】第５の実施形態の動作例を示す図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
図１は、第１の実施形態の通信システムの構成例を示す。図１は例示であり、本発明の通信システムの構成は、図１に限定されない。
【００１７】
通信システムは、複数の制御装置１、割当ユニット２、複数のパケット処理ユニット３、制御情報ＤＢ（Ｄａｔａｂａｓｅ）４を含む。制御装置１の各々は、制御情報ＤＢ４を共有し、制御情報ＤＢ４を参照してパケット処理ユニット３を制御する。各制御装置１がデータベースを共有するので、各制御装置１は、パケット処理ユニットを制御するための制御情報を記憶しなくてもよい。よって、制御対象となるパケット処理ユニットの切り替えた場合や、障害が発生した制御装置１を交換した場合等に、各制御装置１は、制御装置間で制御情報の引継ぎ等の処理を実行しなくてもよく、制御装置の運用管理が容易となる。
【００１８】
それぞれのパケット処理ユニット３は、制御装置１から通知された処理規則に従ってパケットを処理する。例えば、パケット処理ユニット３は、制御装置１から通知された処理規則に従って、パケットの転送、パケットヘッダの書き換え、パケットの廃棄等の処理を実行する。なお、パケット処理ユニット３は、例えば、スイッチやルータ等の通信機器である。また、パケット処理ユニット３は、スイッチやルータ等の通信機器と同等の機能をソフトウェア（仮想スイッチ）で構成されてもよい。
【００１９】
図２は、制御装置１がパケット処理ユニット３に通知する処理規則の例を示す。
【００２０】
制御装置１は、例えば、パケットの処理方法と、その処理方法の対象となるパケットを識別するための条件（照合ルール）とを含む処理規則を、パケット処理ユニットに送信する。照合ルールは、例えば、所定の宛先に送信されるパケット、所定の送信元から送信されたパケット等、パケットに含まれる情報に基づいて特定されるルールである。
【００２１】
パケット処理ユニット３は、照合ルールに適合するパケットを、その照合ルールに対応する処理方法に従って処理する。
【００２２】
割当ユニット２は、それぞれのパケット処理ユニット３に対して、当該パケット処理ユニット３を制御する制御装置１を割り当てる。割当ユニット２は、例えば、図３の例のように、パケット処理ユニット３−１に対して、制御装置１−１を割り当てる。なお、割当ユニット２は、システムに存在する制御装置１とパケット処理ユニット３とを管理しているものとする。
【００２３】
なお、割当ユニット２は、パケット処理ユニット３から処理規則の問い合わせが送信される度に、パケット処理ユニット３に対して割り当てる制御装置１を決定してもよい。また、割当ユニット２は、制御装置１がパケット処理ユニットに対して処理規則を送信する度に、処理規則を送信した制御装置１に対応するパケット処理ユニット３を決定してもよい。つまり、割当ユニット２は、任意の契機で、各パケット処理ユニット３に対して制御装置を割り当ててよい。
【００２４】
割当ユニット２は、制御装置１に対応するパケット処理ユニット３を複数選択してもよい。
【００２５】
パケット処理ユニット３は、割当ユニット２により割り当てられた制御装置１から通知された指示に従って、パケットを処理する。つまり、制御装置１は、割当ユニット２により割り当てられたパケット処理ユニット３のみを制御すればよい。なお、割当ユニット２は、制御装置１に複数のパケット処理ユニット３を割り当ててもよい。
【００２６】
割当ユニット２は、例えば、パケット処理ユニット３の識別情報（例えば、ＩＰアドレスやＤａｔａｐａｔｈ  ＩＤ等）に基づいて、各パケット処理ユニット３に対して、対応する制御装置１を割り当てる。また、割当ユニット２は、例えば、それぞれの制御装置１の間で負荷が分散されるように、制御装置１を割り当てる。例えば、割当ユニット２は、ラウンドロビンで、パケット処理ユニット３に対して制御装置１を割り振る。
【００２７】
制御情報ＤＢ４は、各制御装置１が、割り当てられたパケット処理ユニット３に通知する処理規則に関する情報を管理する。なお、制御情報ＤＢ４は、複数のデータベースで構成され、複数のデータベースがそれぞれの制御装置１に共有されてもよい。複数のデータベースで構成することで、制御情報ＤＢ４が冗長化される。
【００２８】
図４は、制御情報ＤＢ４が記憶する情報の例を示す。図４は例であり、制御情報ＤＢ４が記憶する情報は、図４に限定されない。制御情報ＤＢ４は、例えば、パケット処理ユニット３に通知するための処理規則の候補を管理する。また、例えば、制御情報ＤＢ４は、制御装置１が処理規則を生成するために用いる情報（制御ポリシー等）を管理してもよい。
【００２９】
図４の例では、制御情報ＤＢ４は、パケット処理ユニット３に通知する処理規則の候補を管理する。各処理規則は、例えば、照合ルールと処理方法を含む。パケット処理ユニット３は、処理規則に規定される処理方法に従って、パケットを処理する。パケット処理ユニット３は、照合ルールと受信パケットとを対比する。パケット処理ユニット３は、受信パケットが照合ルールにマッチする場合、その照合ルールに対応する処理方法で受信パケットを処理する。照合ルールは、例えば、パケットを通信フローとして識別するための条件である。通信フローは、所定の条件で識別される一連のパケットの流れである。照合ルールは、例えば、所定の宛先に送信されるパケット、所定の送信元から送信されたパケット等、パケットに含まれる情報に基づいて特定されるルールである。
【００３０】
それぞれの制御装置１は、制御情報ＤＢ４を参照し、割り当てられたパケット処理ユニット３に対して通知する処理規則を決定する。また、それぞれの制御装置１は、制御情報ＤＢ４の内容を更新してもよい。
【００３１】
図５は、第１の実施形態の動作例を示すフローチャートである。
【００３２】
割当ユニット２は、パケット処理ユニット３に対して制御装置１を割り当てる（Ｓ１）。
【００３３】
制御装置１は、複数の制御装置により共有される制御情報ＤＢ４を参照し、割り当てられたパケット処理ユニット３に通知するための処理規則を決定する（Ｓ２）。
【００３４】
制御装置１は、決定した処理規則をパケット処理ユニット３に送信する（Ｓ３）。パケット処理ユニット３は、割り当てられた制御装置１から通知された処理規則に従って、パケットを処理する。
【００３５】
それぞれの制御装置１が担当するパケット処理ユニット３の数が分散されるため、制御装置１の負荷が分散される。
【００３６】
また、制御装置１に障害が発生した場合、例えば、他の制御装置１が、障害が発生した制御装置１に代替して動作する。この場合、制御装置１は、共有された制御情報ＤＢ４を参照するだけで障害が発生した制御装置１に代わって動作することができ、制御装置１は、障害が発生した制御装置からの情報の引継ぎ等の動作を考慮しなくてもよい。よって、本実施形態は、システムの障害回避を容易に実現できる。
［第２の実施形態］
第２の実施形態の通信システムの構成例は、図１と同様である。
【００３７】
図６は、第２の実施形態における割当ユニット２の構成例を示す。第２の実施形態では、割当ユニット２がパケット処理ユニット３に制御装置１を割り当てる動作例を説明する。
【００３８】
割当ユニット２は、制御部２０、管理ＤＢ（Ｄａｔａ  Ｂａｓｅ）２１を含む。
【００３９】
制御部２０は、管理ＤＢ２１を参照し、パケット処理ユニット３に割り当てる制御装置１を決定する。
【００４０】
図７は、管理ＤＢ２１が有するデータベースの例を示す。管理ＤＢ２１が有するデータベースの構成は、図７に限定されない。
【００４１】
管理ＤＢ２１は、例えば、制御装置１毎に、制御装置１の負荷と、制御装置１に割り当てられているパケット処理ユニット３とを管理する。制御部２０は、それぞれの制御装置１の負荷を考慮して、パケット処理ユニット３に制御装置１を割り当てる。制御部２０は、例えば、パケット処理ユニット３に、最も負荷が低い制御装置１を割り当てる。なお、管理ＤＢ２１は、各制御装置の動作状態（例えば、動作中もしくは停止中であることを示すステータス）を管理してもよい。
【００４２】
制御部２０は、例えば、通信システムの起動時や、通信システムに新たなパケット処理ユニット３が追加されたときに、管理ＤＢ２１を参照して、制御装置１の割り当てを行う。制御部２０は、通信システムに新たな制御装置１が追加されたときに、通信システム全体で、パケット処理ユニット３に対する制御装置１の割り当てを変更してもよい。
【００４３】
制御部２０は、管理ＤＢ２１を参照して各制御装置１の負荷状況をモニタし、負荷状況に応じて、パケット処理ユニット３に対する制御装置１の割り当てを動的に変更してもよい。制御部２０は、例えば、各制御装置１の負荷が、システム全体の制御装置１の負荷の平均値に近づくように、パケット処理ユニット３の割り当てを動的に変更する。例えば、制御部２０は、ある制御装置１の負荷が、それぞれの制御装置の負荷の平均値よりも所定のしきい値以上高くなった場合、パケット処理ユニット３の割り当てを変更する。また、例えば、制御部２０は、ある制御装置１の負荷が、それぞれの制御装置の負荷の平均値よりも所定にしきい値以上低い場合、パケット処理ユニット３の割り当てを変更する。
【００４４】
割当ユニット２は、パケット処理ユニット３の位置に関する情報に基づいて、制御装置の割り当てを行ってもよい。
【００４５】
割当ユニット２は、位置に関する情報として、例えば、制御装置１とパケット処理ユニット３との間の距離を参照して、制御装置１の割当てを行ってもよい。管理ＤＢ２１は、図８の例のように、制御装置１とパケット処理ユニット３との間の距離に関する情報を管理する。管理ＤＢ２１は、例えば、各制御装置１について、通信システムに含まれるそれぞれのパケット処理ユニット３との間の距離を管理する。なお、割当ユニット２は、図７で例示した負荷状況と、図８で例示した距離とを考慮して、制御装置１の割り当てを行ってもよい。
【００４６】
制御装置１とパケット処理ユニット３との間の距離は、例えば、制御装置とパケット処理ユニットの位置関係に依存した距離や、通信システムのネットワーク構成（ネットワークトポロジ）に基づいて決定される距離である。また、制御装置１とパケット処理ユニット３との間の距離は、通信ホップ数であってもよい。
【００４７】
制御部２０は、例えば、パケット処理ユニット３に割り当てる候補となる制御装置１のうち、パケット処理ユニット３との距離が最小となる制御装置を、パケット処理ユニットに割り当てる。
【００４８】
割当ユニット２は、位置に関する情報として、制御装置１とパケット処理ユニット３との間の通信コストを参照して、制御装置１の割当を行ってもよい。管理ＤＢ２１は、図９の例のように、制御装置１とパケット処理ユニット３との間の通信コストに関する情報を管理する。管理ＤＢ２１は、例えば、各制御装置１について、通信システムに含まれるそれぞれのパケット処理ユニット３との間の通信コストを管理する。なお、割当ユニット２は、図７で例示した負荷状況と、図９で例示した通信コストとを考慮して、制御装置１の割り当てを行ってもよい。
【００４９】
通信コストは、例えば、制御装置１とパケット処理ユニット３との間のラウンドトリップタイムや、制御装置１とパケット処理ユニット３との間の通信ホップ数等から求められる。
【００５０】
制御部２０は、例えば、パケット処理ユニット３に割り当てる候補となる制御装置１のうち、パケット処理ユニット３との通信コストが最小となる制御装置を、パケット処理ユニットに割り当てる。
【００５１】
割当ユニット２が負荷を考慮して制御装置を割り当てるので、パケット処理ユニットを制御するための各制御装置の負荷が分散される。また、パケット処理ユニットの位置に基づいて制御装置を割り当てるので、パケット処理ユニットと制御装置間の通信スループットが向上する。
［第３の実施形態］
図１０は、制御情報ＤＢ４の構成例を示す。
【００５２】
制御情報ＤＢ４は、例えば、図１０の例のように、パケット処理ユニット３毎に、制御情報を管理する。各制御装置１は、割り当てられたパケット処理ユニット３に対応する領域を参照し、パケット処理ユニット３に通知する処理規則を決定する。また、各制御装置１は、割り当てられたパケット処理ユニット３に対応する領域の情報を更新してもよい。
【００５３】
制御装置１は、例えば、パケット処理ユニット３から処理規則の通知を要求された場合に、制御情報ＤＢ４を参照して処理規則を決定する。また、制御装置１は、例えば、定期的に制御情報ＤＢ４を参照し、パケット処理ユニット３に通知すべき処理規則が確認された場合、パケット処理ユニット３に処理規則を通知してもよい。また、制御装置１は、制御情報ＤＢ４から、データベースが更新されたことを示す制御メッセージを受信したことに応じて、制御情報ＤＢ４を参照してもよい。
【００５４】
図１１は、あるパケット処理ユニット３に割り当てられた制御装置１が切り替わった場合の動作例を示す。図１１の例では、パケット処理ユニット３−１に割り当てられた制御装置が、制御装置１−１から制御装置１−２に切り替わった例を示す。
【００５５】
割当ユニット２は、例えば、制御装置１に障害が発生した場合、障害が発生した制御装置に代替してパケット処理ユニット３を制御する制御装置１を決定する。割当ユニット２は、障害が発生した制御装置１を、決定した制御装置１に切り替える。
【００５６】
制御装置１−１は、パケット処理ユニット３−１用の制御情報の参照を停止する。パケット処理ユニット３−１の制御を新たに担当する制御装置１−２は、パケット処理ユニット３−１用の制御情報の参照を開始し、パケット処理ユニット３−１の制御を引き継ぐ。
なお、制御装置１−１と１−２が制御情報ＤＢ４を共有しているため、制御装置１−２は、制御装置１−１との間で制御の引継ぎに関する処理を実行しなくてもよい。
【００５７】
図１２は、システムに新たな制御装置１が追加された場合の動作例を示す。図１２の例では、システムに制御装置１−ｘが追加された例を示す。
【００５８】
割当ユニット２は、追加された制御装置１−ｘに、パケット処理ユニット３−ｘを割り当てる。制御装置１−ｘは、パケット処理ユニット３−ｘ用の制御情報を参照し、パケット処理ユニット３−ｘを制御する。
【００５９】
第３の実施形態のように、各制御装置が制御情報ＤＢ４を共有することで、制御装置の増設によるスケールアウトや、障害回避が容易になる。制御装置は、単に共有データベースを参照するだけで、パケット処理ユニット３の制御を開始できるからである。制御装置１が複数のパケット処理ユニット３を集中制御する場合、制御装置１の負荷増大を抑止するため、制御装置１の数を増加させることが考えられる。第３の実施形態により、システム運用者は、非常に容易に制御装置１を増設することができる。また、障害回避のために制御装置を切り替える場合、データベースの参照先を変更するだけで、制御装置を切り替えることができ、システム運用者は、非常に容易に制御装置を切り替えることができる。
【００６０】
また、各制御装置１が個別に制御情報を持たないので、パケット処理ユニット３の割当変更も容易になる。パケット処理ユニット３の割り当てが変更された場合、制御装置１は、制御情報ＤＢ４の参照先を変更するだけでよい。各制御装置１が個別に制御情報を持つ場合、割当変更時には、制御情報の移行が必要となる。しかし、各制御装置１が制御情報ＤＢ４を共有する構成とすることで、制御情報の移行等の処理は実行しなくてもよい。
［第４の実施形態］
第４の実施形態は、本願開示を、集中制御型のアーキテクチャを有するオープンフロー（ＯｐｅｎＦｌｏｗ）という技術を改良して実施する例を示す。
【００６１】
図１３及び図１４を参照し、オープンフローについて説明する。
【００６２】
オープンフローは、通信をエンドツーエンドのフローとして認識し、フロー単位で経路制御、障害回復、負荷分散等を実行する。図１３に、オープンフローにより構成された通信システムの概要を示す。なお、フローとは、例えば、所定の属性を有する一連の通信パケット群である。オープンフロースイッチ６００は、オープンフロー技術を採用したネットワークスイッチである。オープンフローコントローラ７００は、オープンフロースイッチ６００を制御する情報処理装置である。
【００６３】
オープンフロースイッチ６００は、オープンフローコントローラ７００との間に設定されたセキュアチャネル７０１を介して、オープンフローコントローラと通信する。オープンフローコントローラ７００は、セキュアチャネル７０１を介して、オープンフロースイッチ６００のフローテーブル６０１の設定を行う。なお、セキュアチャネル７０１は、スイッチとコントローラ間の通信の盗聴や改ざん等を防止するための処置がなされた通信経路である。
【００６４】
図１４は、フローテーブル６０１の各エントリ（フローエントリ）の構成例を示す。フローエントリは、スイッチが受信したパケットの情報（例えば、宛先ＩＰアドレスやＶＬＡＮ  ＩＤ等）と照合するためのマッチングルールと、パケットフロー毎の統計情報である統計情報（Ｃｏｕｎｔｅｒｓ）と、マッチングルールにマッチするパケットの処理方法を規定するアクション（Ａｃｔｉｏｎｓ）とで構成される。
【００６５】
オープンフロースイッチ６００は、パケットを受信すると、フローテーブル６０１を参照する。オープンフロースイッチ６００は、受信したパケットのヘッダ情報にマッチするフローエントリを検索する。受信パケットのヘッダ情報にマッチするエントリが検索された場合、オープンフロースイッチ６００は、検索されたエントリのアクションフィールドに定義された処理方法に従って、受信パケットを処理する。処理方法は、例えば、“受信パケットを所定のポートから転送する”、“受信したパケットを廃棄する”、“受信パケットのヘッダの一部を書き換えて、所定のポートから転送する”といったことが規定されている。
【００６６】
一方、受信パケットのヘッダ情報にマッチするエントリが見つからない場合、オープンフロースイッチ６００は、例えば、セキュアチャネル７０１を介して、オープンフローコントローラ７００に対して受信パケットを転送する。オープンフロースイッチ６００は、受信パケットを転送することにより、コントローラに対して、受信パケットの処理方法を規定したフローエントリの設定を要求する。なお、受信パケットが、オープンフローコントローラ７００へフローエントリの設定を要求することを規定したエントリにマッチした場合、オープンフロースイッチ６００は、オープンフローコントローラ７００に対してフローエントリの設定を要求してもよい。
【００６７】
オープンフローコントローラ７００は、受信パケットの処理方法を決定し、決定した処理方法を含むフローエントリをフローテーブル６０１に設定する。その後、オープンフロースイッチ６００は、設定されたフローエントリにより、受信パケットと同一のフローに属する後続のパケットを処理する。
【００６８】
第４の実施形態のシステム構成は、第１、第２もしくは第３の実施形態と同様である。
図１５、図１６は、それぞれ、第４の実施形態の制御装置１Ａとパケット処理ユニット３Ａの構成の例を示す。図１５の制御装置は、第３の実施形態のように、制御情報ＤＢ４を他の制御装置と共有する構成を有する。
【００６９】
図１５は、第４の実施形態の制御装置１Ａの構成の例を示す。制御装置１Ａは、通信部１０、制御部１１、割当管理ＤＢ１２を含む。
【００７０】
通信部１０は、制御装置１Ａに割り当てられたパケット処理ユニット３Ａと通信する。
通信部１０は、パケット処理ユニット３Ａに、処理規則を通知する。通信部１０は、パケット処理ユニット３Ａから、処理規則の送信要求を受信する。通信部１０は、パケット処理ユニット３Ａとの間に構築された制御チャネルを介して、パケット処理ユニット３Ａと通信する。
【００７１】
割当管理ＤＢ１２は、制御装置１Ａに割り当てられているパケット処理ユニット３Ａを管理する。例えば、割当管理ＤＢ１２は、制御装置１Ａに割り当てられたパケット処理ユニットの識別情報を管理する。
【００７２】
制御部１１は、割当管理ＤＢ１２を参照し、制御装置１Ａに割り当てられたパケット処理ユニット３Ａを確認する。制御部１１は、制御情報ＤＢ４から、制御装置１Ａに割り当てられたパケット処理ユニット３Ａに関する制御情報を参照する。制御部１１は、参照した制御情報に基づいて、パケット処理ユニット３Ａに通知する処理規則を決定する。制御部１１は、例えば、パケット処理ユニット３Ａからの要求に応じて、処理規則を決定する。また、制御部１１は、例えば、自律的に制御情報ＤＢ４を参照し、予めパケット処理ユニット３Ａに処理規則を通知してもよい。
【００７３】
図１６は、第４の実施形態のパケット処理ユニット３Ａの構成の例を示す。パケット処理ユニット３Ａは、通信部３０、パケット処理部３１、処理規則ＤＢ３２を含む。
【００７４】
パケット処理部３１は、パケットを受信すると、処理規則ＤＢ３２から、受信したパケットに対応する処理規則を検索する。パケット処理部３１は、例えば、処理規則の照合ルールと受信パケットのヘッダ情報とを比較し、パケットにマッチする照合ルールを有する処理規則を検索する。
【００７５】
パケット処理部３１は、受信したパケットに対応する処理規則に規定された処理方法に従って、パケットを処理する。
【００７６】
パケット処理部３１は、例えば、受信したパケットに対応する処理規則が存在しない場合や、検索された処理規則が制御装置への問い合わせを指示している場合に、制御装置に、受信パケットに対応する処理規則を問い合わせる。
【００７７】
割当ユニット２は、パケット処理ユニット３Ａから受信した問い合わせを、パケット処理ユニット３Ａに割り当てられている制御装置１Ａに転送する。割当ユニット２は、例えば、パケット処理ユニット３Ａに割り当てられている制御装置１Ａを管理するデータベースを有する。例えば、割当ユニット２は、パケット処理ユニット３Ａに割り当てられた制御情報の識別情報や通信アドレス（例えばＩＰアドレス）を管理するデータベースを有する。
【００７８】
図１７は、第４の実施形態の動作例を示すシーケンス図である。図１７は例であり、第４の実施形態の動作は図１７に限定されない。
【００７９】
割当ユニット２は、パケット処理ユニット３Ａに対して、制御装置１Ａを割り当てる。
割当ユニット２は、例えば、第２の実施形態に示された方法に基づいて、パケット処理ユニット３Ａに割り当てる制御装置１Ａを決定する。
【００８０】
パケット処理ユニット３Ａは、割り当てられた制御装置１Ａに対して、受信パケットに対応する処理規則を問い合わせる。
【００８１】
問い合わせを受信した制御装置１Ａは、処理規則を決定し、決定した処理規則をパケット処理ユニット３Ａに通知する。
【００８２】
パケット処理ユニット３Ａは、通知された処理規則に従ってパケットを処理する。
【００８３】
第４の実施形態によれば、オープンフロー技術を利用して、本発明を実施することができる。
［第５の実施形態］
図１８は、第５の実施形態のシステム構成の例を示す。
【００８４】
第５の実施形態のシステムは、複数の制御装置１Ｂ、割当ユニット２、仮想スイッチ（ｖＳｗｉｔｃｈ）３Ｂ、サーバ５、物理スイッチ６、仮想マシン（ＶＭ;Virtual Machine）７を含む。
【００８５】
仮想スイッチ３Ｂは、サーバ５で動作するソフトウェアで構成されたネットワークスイッチである。仮想スイッチ３Ｂは、他の実施形態のパケット処理ユニット３に対応する機能を有する。つまり、仮想スイッチ３Ｂは、制御装置１Ｂによる制御に基づいて、パケットを処理する。なお、仮想スイッチ３Ｂは、例えば、物理スイッチ６で構成されるネットワークの端点（エッジ）に位置する。
【００８６】
複数の制御装置１Ｂは、制御情報ＤＢ４を共有する。
【００８７】
サーバ５では、ソフトウェアにより構成されたコンピュータである仮想マシン（ＶＭ）７が動作している。仮想マシン７は、仮想スイッチ３Ｂを介して、他の仮想マシン７と通信する。
【００８８】
割当ユニット２は、各仮想スイッチ３Ｂに対して、制御装置１Ｂを割り当てる。仮想スイッチ３Ｂは、割り当てられた制御装置１Ｂから通知された処理規則に従って、パケットを処理する。
【００８９】
サーバ５は、例えば、物理スイッチ６で構成されたネットワークの端部（エッジ）に位置する。この場合、制御装置１Ｂは、ネットワークのエッジに存在する仮想スイッチ３Ｂの動作を制御する。
【００９０】
仮想マシン７は、物理スイッチ６上に構築された仮想ネットワークを介して、他の仮想マシン７と通信する。仮想ネットワークは、例えば、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）やＮＶＧＲＥ（Ｎｅｔｗｏｒｋ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｕｓｉｎｇ  Ｇｅｎｅｒｉｃ  Ｒｏｕｔｉｎｇ  Ｅｎｃａｐｓｕｌａｔｉｏｎ）等のプロトコルに基づいて構築される。
【００９１】
図１９を参照し、仮想マシン７間の通信動作の例を説明する。
【００９２】
他の仮想マシン７と通信する場合、仮想マシン７は、物理スイッチ６上に構築された仮想ネットワークを介して通信する。図１９の例では、仮想マシン７−１と仮想マシン７−３との通信は、仮想ネットワークＩＤが“Ａ”のトンネルを介して実行され、仮想マシン７−２と仮想マシン７−４との通信は、仮想ネットワークＩＤが“Ｂ”のトンネルを介して実行される。
【００９３】
仮想スイッチ３Ｂ−１に割り当てられた制御装置１Ｂは、例えば、仮想マシン７−３宛のパケットに仮想ネットワークＩＤ“Ａ”のタグ（例えば、ＶＬＡＮタグ）を付与することを規定した処理規則を、仮想スイッチ３Ｂ−１に通知する。仮想スイッチ３Ｂ−１は、例えば、仮想マシン７−１から仮想マシン７−３宛のパケットを受信すると、制御装置１Ｂの指示に従い、パケットに対して仮想ネットワークＩＤ“Ａ”を示すタグを付与してパケットを転送する。
【００９４】
仮想スイッチ３Ｂ−２に割り当てられた制御装置１Ｂは、例えば、仮想マシン７−４宛のパケットに仮想ネットワークＩＤ“Ｂ”のタグ（例えば、ＶＬＡＮタグ）を付与することを規定した処理規則を、仮想スイッチ３Ｂ−２に通知する。仮想スイッチ３Ｂ−２は、例えば、仮想マシン７−２から仮想マシン７−４宛のパケットを受信すると、制御装置１Ｂの指示に従い、パケットに対して仮想ネットワークＩＤ“Ｂ”を示すタグを付与してパケットを転送する。
【００９５】
物理スイッチ６は、仮想ネットワークＩＤタグに基づくパケットの転送方法の設定（例えば、仮想ネットワークＩＤ“Ａ”のパケットを転送すべきポート番号）を予め有しているものとする。
【００９６】
第５の実施形態のように、制御装置１Ｂが仮想スイッチ３Ｂのみを制御する構成により、制御装置１Ｂの負荷増大を抑止できる。また、通信システムの既存設備（例えば、物理スイッチ６）を置き換えることなく、制御装置による集中制御型のネットワークを導入できる。
【００９７】
最後に、本発明の好ましい形態を以下に要約する。
［形態１］
パケットの処理規則を決定する複数の制御装置と、
前記制御装置から通知された処理規則に従ってパケットを処理する複数のパケット処理手段と、
パケット処理手段の各々に対して、当該パケット処理手段を制御する制御装置を割当てる割当手段と、
前記複数の制御装置により共有され、前記処理規則に関する情報を格納するデータベースと、を含み、
前記制御装置の各々は、前記データベースを参照して前記処理規則を決定する、
通信システム。
［形態２］
前記制御装置の各々は、制御対象のパケット処理手段に対応する情報を前記データベースから検索し、検索された情報に基づいて、前記制御対象のパケット処理手段に送信する前記処理規則を決定する、
形態１の通信システム。
［形態３］
前記制御装置の各々は、制御対象のパケット処理手段が変更されたことに応じて、前記データベースの参照領域を変更する、
形態１又は２の通信システム。
［形態４］
前記データベースは、前記情報を、複数のパケット処理手段の各々に対応する領域に区分して格納する、
形態１乃至３のいずれか一項に記載の通信システム。
［形態５］
前記制御装置の各々は、所定の周期で前記データベースを参照し、前記割当手段により割当てられたパケット処理手段に通知する処理規則があるか否かを確認する、
形態１乃至４のいずれか一項に記載の通信システム。
［形態６］
前記制御装置の各々は、前記データベースの内容が変更されたことを示す通知を受信したことに応じて、前記データベースを参照する、
形態１乃至５のいずれか一項に記載の通信システム。
［形態７］
前記割当手段は、所定の規則に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
形態１乃至６のいずれかの一項に記載の通信システム。
［形態８］
前記割当手段は、制御装置の負荷状況に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
形態１乃至７のいずれか一項に記載の通信システム。
［形態９］
前記割当手段は、パケット処理手段の位置に関する情報に基づいて、それぞれのパケット処理手段に対して、当該パケット処理手段を制御する制御装置を割当てる、
形態１乃至８のいずれか一項に記載の通信システム。
［形態１０］
前記割当手段は、それぞれのパケット処理手段に割り当てられた制御装置を他の制御装置に変更する機能を有する、
形態１乃至９のいずれか一項に記載の通信システム。
［形態１１］
前記割当手段は、制御装置が停止した場合に、前記停止した制御装置に代わってパケット処理手段を制御する制御装置を決定する、
形態１乃至１０のいずれか一項に記載の通信システム。
［形態１２］
パケットの処理を制御する制御装置であって、
前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を決定する第一の手段と、
決定した処理規則を、複数のパケット処理手段のうち、前記制御装置に割当てられたパケット処理手段に対して通知する第二の手段と、
を含む制御装置。
［形態１３］
前記第一の手段は、前記制御装置に割当てられたパケット処理手段に対応する情報を前記データベースから検索し、検索された情報に基づいて、当該パケット処理手段に送信する前記処理規則を決定する、
形態１２の制御装置。
［形態１４］
前記第一の手段は、制御対象のパケット処理手段が変更されたことに応じて、前記データベースの参照領域を変更する、
形態１２又は１３の制御装置。
［形態１５］
前記データベースは、前記情報を、複数のパケット処理手段の各々に対応する領域に区分して格納する、
形態１２乃至１４のいずれか一項に記載の制御装置。
［形態１６］
前記制御装置は、所定の周期で前記データベースを参照し、割当手段により割当てられたパケット処理手段に通知する処理規則があるか否かを確認する、
形態１２乃至１５のいずれか一項に記載の制御装置。
［形態１７］
前記制御装置は、前記データベースの内容が変更されたことを示す通知を受信したことに応じて、前記データベースを参照する、
形態１２乃至１６のいずれか一項に記載の制御装置。
［形態１８］
複数の制御装置がパケットの処理を制御する通信方法であって、
複数のパケット処理手段の各々に、当該パケット処理手段を制御する制御装置を割当て、
前記制御装置の各々が、複数の制御装置で共有されるデータベースを参照して、パケットを処理するための処理規則を決定し、
前記制御装置の各々が、割当てられたパケット処理手段に対して、決定した処理規則を通知する、
通信方法。
［形態１９］
パケットの処理を制御する制御装置における制御方法であって、
前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を決定し、
決定した処理規則を、複数のパケット処理手段のうち、前記制御装置に割当てられたパケット処理手段に対して通知する、
制御方法。
［形態２０］
パケットの処理を制御する制御装置に、
前記制御装置と他の制御装置とで共有されるデータベースを参照し、前記パケットの処理方法に関する処理規則を決定する処理と、
決定した処理規則を、複数のパケット処理手段のうち、前記制御装置に割当てられたパケット処理手段に対して通知する処理と、
を実行させるプログラム。
【００９８】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００９９】
１、１Ａ、１Ｂ      制御装置
１０    通信部
１１、２０    制御部
１２    割当管理ＤＢ
２      割当ユニット
２１    管理ＤＢ
３、３Ａ      パケット処理ユニット
３Ｂ    仮想スイッチ
３０    通信部
３１    パケット処理部
３２    処理規則ＤＢ
４      制御情報ＤＢ
５      サーバ
６      物理スイッチ
７      仮想マシン（ＶＭ）
６００  オープンフロースイッチ
６０１  フローテーブル
７００  オープンフローコントローラ
７０１  セキュアチャネル
【図１】
0006323339.tif 000002
【図２】
0006323339.tif 000003
【図３】
0006323339.tif 000004
【図４】
0006323339.tif 000005
【図５】
0006323339.tif 000006
【図６】
0006323339.tif 000007
【図７】
0006323339.tif 000008
【図８】
0006323339.tif 000009
【図９】
0006323339.tif 000010
【図１０】
0006323339.tif 000011
【図１１】
0006323339.tif 000012
【図１２】
0006323339.tif 000013
【図１３】
0006323339.tif 000014
【図１４】
0006323339.tif 000015
【図１５】
0006323339.tif 000016
【図１６】
0006323339.tif 000017
【図１７】
0006323339.tif 000018
【図１８】
0006323339.tif 000019
【図１９】
0006323339.tif 000020