(57)【要約】【課題】複数の制御装置により通信装置を制御すること。【解決手段】  本通信装置は、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を記憶手段から検索する第一の手段と、所定の領域に基づいて、複数の制御装置のうち、受信パケットに対応する処理を問合せる制御装置を決定する第二の手段とを備える。【選択図】図２１
2015508944.tif 000002
【特許請求の範囲】
【請求項１】
パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、
受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する第一の手段と、
前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する第二の手段と、
を備える、通信装置。
【請求項２】
前記第二の手段は、前記第一の手段が制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１の通信装置。
【請求項３】
前記第二の手段は、前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１又は２に記載の通信装置。
【請求項４】
前記第二の手段は、前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
前記第一の手段は、前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記第二の手段は、前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せる、
請求項１乃至４のいずれか１項に記載の通信装置。
【請求項６】
前記第一の手段が前記受信パケットに対応する処理を検索した場合に、前記所定の領域の一部を書き換えて、前記第一の手段に再検索を実行させる第三の手段を備える、
請求項１乃至５のいずれか１項に記載の通信装置。
【請求項７】
前記第二の手段は、前記所定の領域のうち、前記規則に一致した情報に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
通信装置が、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶手段に記憶する工程と、
受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する工程と、
前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する工程と、
を含む、通信方法。
【請求項９】
制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項８に記載の通信方法。
【請求項１０】
前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項８又は９に記載の通信方法。
【請求項１１】
前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項８乃至１０のいずれか１項に記載の通信方法。
【請求項１２】
前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せる、
請求項８乃至１１のいずれか１項に記載の通信方法。
【請求項１３】
前記受信パケットに対応する処理を検索した場合に、前記所定の領域の一部を書き換えて、再検索を実行する、
請求項８乃至１２のいずれか１項に記載の通信方法。
【請求項１４】
前記所定の領域のうち、前記規則に一致した情報に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項８乃至１３のいずれか１項に記載の通信方法。
【請求項１５】
複数の制御装置と、
通信装置と、を備え、
前記通信装置は、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、
受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する第一の手段と、
前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する第二の手段と、を有する、通信システム。
【請求項１６】
通信装置に設けられたコンピュータに対して、
パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶手段に記憶する処理と、
受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する処理と、
前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する処理と、
を実行させる、プログラム。
【請求項１７】
制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１６に記載のプログラム。
【請求項１８】
前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１６又は１７に記載のプログラム。
【請求項１９】
前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定する、
請求項１６乃至１８のいずれか１項に記載のプログラム。
【請求項２０】
前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せる、
請求項１６乃至１９のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１２−０４２７４１号（２０１２年２月２９日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ネットワークに接続する通信装置、通信方法、通信システムおよびプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている。このオープンフローについては、非特許文献１、非特許文献２、また特許文献１、特許文献２に記載されている。オープンフローでは、オープンフロースイッチ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ、以下ＯＦＳ）の機能と、それに対する制御装置であるオープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ、以下ＯＦＣ）との通信方法が規定されている。ＯＦＳとＯＦＣは、セキュアチャネルと呼ばれる制御パスによって接続される。また、ＯＦＳは、単一のＯＦＣによって制御される。
【０００３】
ＯＦＳは、内部にフローテーブルを持つ。フローテーブルには、少なくともパケットのフローを識別するためのヘッダフィールドと、パケットに対する処理の組が、エントリとして登録される。パケットを識別するためのヘッダフィールドは、マッチングルールとも呼ばれる。ヘッダフィールドは複数のタプルから構成され、それぞれにワイルドカードを指定できる。ワイルドカードを指定することにより、集合としてフローの範囲を表すことができる。例えば、あるエントリのヘッダフィールドの送信元ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスだけを指定しておき、残りのタプルをワイルドカードに設定したとする。このとき、設定したエントリは、指定したＩＰアドレスから送信されるすべてのフローの集合を表すことになる。すなわち、指定したＩＰアドレスから送信されるパケットは、その宛先によらずすべてが設定したエントリに対応する。
【０００４】
また、パケットに対する処理は、アクションとも呼ばれる。アクションには少なくとも、指定ポートへの転送、ＯＦＣへの転送、入力ポートへの折り返し転送、廃棄等がある。
指定ポートへの転送はパケットの次段のスイッチへの転送に用いられる。ＯＦＣへの転送は、主にパケットの処理方法の問い合わせに用いられる。
【０００５】
ＯＦＳは、パケットを受信すると、まずフローテーブルを検索する。受信パケットにマッチするエントリが存在する場合には、マッチしたエントリのアクションに従ってパケットを処理する。エントリには優先度を設定することができ、パケットが複数のエントリにマッチする場合には、優先度が最も高いエントリのアクションが適用される。
【０００６】
フローテーブルに受信パケットにマッチするエントリが存在しない場合、ＯＦＳは、ＯＦＣに対して、受信パケットにどのような処理をするかを問い合わせる。その際、ＯＦＳは、セキュアチャネルを介して、パケットの一部または全部をＯＦＣに転送する。処理の問い合わせを受けたＯＦＣは、必要に応じてフローテーブルにエントリを追加し、ＯＦＳに処理方法を通知する。
【０００７】
また、特許文献３および特許文献４には、制御機能を有する制御装置と、転送機能を有し、制御装置によって制御されるスイッチとが設けられるネットワークアーキテクチャが開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−０８２８３４号公報
【特許文献２】特開２０１１−１０１２４５号公報
【特許文献３】特開２００６―１３５９７１号公報
【特許文献４】特開２００６−１３５９７５号公報
【非特許文献】
【０００９】
【非特許文献１】Nick  McKeown  ほか７名、OpenFlow:  Enabling  Innovation  in  Campus  Networks、［２０１１年６月２８日検索］、インターネット＜URL：  http://www.openflowswitch.org/documents/openflow-wp-latest.pdf＞
【非特許文献２】OpenFlow  Switch  Specification  Version  1.１.0  (Wire  Protocol  0x01)、２００９年１２月３１日、［２０１２年２月１６日検索］、インターネット＜URL:  http://www.openflowswitch.org/documents/openflow-spec-v1.１.0.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記の特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
非特許文献１、非特許文献２、特許文献１、特許文献２に開示されたオープンフローや、特許文献３や特許文献４に開示されたアーキテクチャは、単一のコントローラによってスイッチの動作が細かく制御されることを前提としたネットワークシステムである。
【００１１】
よって、上記の先行技術文献は、複数のコントローラがある場合に、複数のコントローラによってスイッチや通信端末などの通信装置を制御する手法を開示していない。
【課題を解決するための手段】
【００１２】
本発明の第１の視点に係る通信装置は、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する第一の手段と、前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する第二の手段とを備える。
【００１３】
本発明の第２の視点に係る通信方法は、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶手段に記憶し、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索し、前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する。
【００１４】
本発明によると、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する第一の手段と、前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する第二の手段とを備える、パケット転送装置が提供される。
【００１５】
本発明の第３の視点に係る通信システムは、複数の制御装置と、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する記憶手段と、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する第一の手段と、前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する第二の手段とを含む通信装置とを備える。
【００１６】
本発明の第４の視点に係るプログラムは、通信装置に設けられたコンピュータに、パケットを識別するための規則と、該規則に対応するパケットの処理とを記憶する処理と、受信パケットの所定の領域を参照し、該受信パケットに対応する処理を前記記憶手段から検索する処理と、前記所定の領域に基づいて、複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定する処理とを実行させる。
なお、プログラムは、非一時的なコンピュータ可読記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００１７】
本発明の少なくとも１つの視点によれば、スイッチや通信端末などの通信装置を制御するコントローラまたは制御装置が複数存在する場合であっても、複数のコントローラまたは制御装置によって、スイッチや通信端末などの通信装置を制御することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施形態による通信装置の構成例を示す図である。
【図２】第１の実施形態による動作例を示すフローチャートである。
【図３】第２の実施形態による通信システムの構成例を示す図である。
【図４】第２の実施形態によるスイッチの構成例を示す図である。
【図５】第２の実施形態によるスイッチの構成例を示す図である。
【図６】第２の実施形態によるフローテーブルの構成例を示す図である。
【図７】第２の実施形態によるエントリ編集コマンドの例を示す図である。
【図８】第２の実施形態によるスイッチの構成例を示す図である。
【図９】第２の実施形態によるエントリ付加情報の例を示す図である。
【図１０】第２の実施形態による動作例を示すフローチャートである。
【図１１】第２の実施形態による動作例を示すフローチャートである。
【図１２】第２の実施形態による動作例を示すフローチャートである。
【図１３】第２の実施形態による動作例を示すフローチャートである。
【図１４】第３の実施形態によるスイッチの構成例を示す図である。
【図１５】第３の実施形態によるフローテーブルの構成例を示す図である。
【図１６】第３の実施形態による動作例を示すフローチャートである。
【図１７】第４の実施形態によるスイッチの構成例を示す図である。
【図１８】第４の実施形態によるコントローラフローテーブルの構成例である。
【図１９】第４の実施形態による動作例を示すフローチャートである。
【図２０】第４の実施形態による動作例を示すフローチャートである。
【図２１】第５の実施形態の構成例を示す図である。
【図２２】第５の実施形態の構成例を示す図である。
【図２３】第５の実施形態の構成例を示す図である。
【図２４】第５の実施形態の構成例を示す図である。
【図２５】第５の実施形態の動作例を示すフローチャートである。
【図２６】第６の実施形態の構成例を示す図である。
【図２７】第６の実施形態の構成例を示す図である。
【図２８】第６の実施形態の構成例を示す図である。
【図２９】第６の実施形態の構成例を示す図である。
【図３０】第６の実施形態の動作例を示すフローチャートである。
【図３１】第７の実施形態の動作例を説明する図である。
【発明を実施するための形態】
【００１９】
次に、実施形態について図面を参照して詳細に説明する。
【００２０】
［第１の実施形態］
［構成］
図１は、第１の実施形態による通信装置１０００の構成例を示している。図１によれば、通信装置１０００は、記憶手段１００１と、検索手段１００２と、問い合わせ手段１００３と、を含む。また、通信装置１０００は、図示されていない制御装置と接続しているものとする。さらに、通信装置１０００は、制御装置によって制御されている。
【００２１】
記憶手段１００１は、パケットを識別する情報と、パケットに対する処理とを対応付けて記憶する。
【００２２】
検索手段１００２は、パケットを受信した場合に、受信パケットに対応する処理を記憶手段１００１から検索する。
【００２３】
問い合わせ手段１００３は、検索手段１００２が検索した処理が、制御装置に対する問い合わせであった場合に、以下の動作を行う。問い合わせ手段１００３は、まず、受信パケットに対応する記憶手段１００１のエントリに基づいて、問い合わせを行う制御装置を決定する。続いて、問い合わせ手段１００３は、決定した制御装置を宛先として、問い合わせを行う。
【００２４】
［動作］
以下、図２のフローチャートを用いて第１の実施形態の動作について説明する。
【００２５】
まず、検索手段１００２は、受信パケットに対応する処理を記憶手段１００１から検索する（Ｓ１００１）。
【００２６】
次に、問い合わせ手段１００３は、検索手段１００２が検索した処理が、制御装置に対する問い合わせであった場合に、受信パケットに対応する記憶手段１００１のエントリに基づいて、問い合わせを行う制御装置を決定する（Ｓ１００２）。
【００２７】
続いて、問い合わせ手段１００３は、Ｓ１００２で決定した制御装置を宛先として、問い合わせを行う（Ｓ１００３）。
【００２８】
以上の通り、第１の実施形態では、通信装置１０００が記憶手段１００１、検索手段１００２、問い合わせ手段１００３を有するとして説明した。しかしながら、上記の各手段は、通信装置に限らず、通信端末など、その他の通信機器が備えていても良い。
【００２９】
［効果］
以上説明した通り、第１の実施形態によれば、通信装置は、受信パケットの処理問い合わせ先の制御装置を決定して、問い合わせを行っている。その結果、問い合わせを受けた制御装置は、受信パケットに対する処理を決定することができる。従って、第１の実施形態によれば、通信装置を制御する制御装置が複数存在する場合であっても、受信パケットを制御する制御装置を１つに決定することができるため、複数の制御装置による通信装置の制御が可能となる。
【００３０】
［第２の実施形態］
［構成］
図３は、第２の実施形態における通信システム１の構成例を示す図である。通信システム１は、図示されていないネットワークに接続された複数のコントローラ１１と、複数のスイッチ１２を備えている。図３の例では、コントローラ１１は、コントローラ１１−Ａ、コントローラ１１−Ｂ、コントローラ１１−Ｃ、コントローラ１１−Ｄの４個存在する。以降、特に区別する必要のない限りは、この４個のコントローラをコントローラ１１と呼称する。
【００３１】
スイッチ１２は、制御パスによって複数のコントローラ１１と接続される。コントローラ１１は、コントローラ１１が制御するスイッチ１２と接続され、制御メッセージのやり取りを行う。
【００３２】
図３の例では、スイッチ１２は２個存在し、それぞれがコントローラ１１−Ａとコントローラ１１−Ｂに接続している。また、図３のコントローラ１１−Ｃからコントローラ１１−Ａと、コントローラ１１−Ｄからコントローラ１１−Ｂの２区間は、破線矢印で接続関係が示されている。これは、あるコントローラが、他のコントローラが制御する通信範囲を制限できても良いことを示している。
【００３３】
図４は、スイッチ１２の構成例を示している。図４によれば、スイッチ１２は、制御通信手段１２１と、フローテーブル管理手段１２２と、フロー識別手段１２３と、データ処理手段１２４と、フローテーブル１２５を備える。
【００３４】
制御通信手段１２１は、コントローラ１１と、フローテーブル管理手段１２２と、フロー識別手段１２３と接続される。制御通信手段１２１は、コントローラ１１から制御メッセージを受け取ると、フローテーブル管理手段１２２に制御指示を送る。フローテーブル管理手段１２２が制御結果を返すと、制御通信手段１２１は、必要に応じてコントローラ１１に制御メッセージを送る。
【００３５】
図５は、制御通信手段１２１の構成例を示した図である。図５によれば、制御通信手段１２１は、処理問い合わせ手段１２１１を備える。
【００３６】
処理問い合わせ手段１２１１は、パケットの処理内容の問い合わせとコントローラの指定を受け、コントローラへ処理の問い合わせを行う。
【００３７】
フローテーブル管理手段１２２は、フローテーブル１２５に記載された情報を管理する。このフローテーブル管理手段１２２については、後に詳しく説明する。
【００３８】
フロー識別手段１２３は、データ処理手段１２４に到着したパケットの属するフローを識別する。フロー識別手段１２３は、フローテーブル１２５と接続されている。また、フロー識別手段１２３は、識別したフローに対する処理をフローテーブル１２５から検索する。
【００３９】
フローテーブル１２５は、フローの処理内容を記憶する。フローテーブル１２５の構成は、例えば図６のようなものである。フローテーブル１２５のエントリには、少なくとも優先度、マッチングルール、アクションが含まれる。優先度のａ、ｋ、ｎ、ｍは自然数であり、大小関係は、ｋ＜ｎ＜ｍ＜ａであるとする。従って、図６の例では、優先度の降順にエントリが並べられている。マッチングルールには、背景技術の項で述べた通り、ＩＰアドレスやＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等のタプルが記憶されている。アクションには、マッチングルールに適合したパケットをどのように処理するかが記載されている。
【００４０】
第２の実施形態では、マッチングルールに適合したパケットに対して、コントローラを指定して処理を問い合わせるというアクションを登録することができる。例えば、フローＡに属するパケットに対しては、コントローラＡに処理の問い合わせを行い、フローＣに属するパケットに対しては、コントローラＢに処理の問い合わせを行う。これにより、例えば、スイッチ１２がフローＡに属するパケットを受信した場合には、コントローラＡに処理を問い合わせるので、コントローラＡはフローＡに対する操作権限を得ることになる。なお、アクションとしては、背景技術で述べた処理を登録することも可能である。例えば、フローＢに属するパケットに対しては、指定のポートへ転送するという処理が行われる。
【００４１】
データ処理手段１２４は、スイッチ１２が接続する他のスイッチ等から、パケットを受信する。データ処理手段１２４は、パケットを受信すると、パケットの一部分、全部、またはコピーをフロー識別手段１２３に送信する。フロー識別手段１２３は、フローテーブル１２５のエントリとのマッチングを行うことでフローの識別を行い、アクションを出力する。データ処理手段１２４は、マッチしたエントリのアクションを受信し、パケットの処理を行う。
【００４２】
コントローラ１１が、スイッチ１２のフローテーブル１２５のエントリに操作権限を設定する方法について以下に説明する。コントローラ１１は、フローテーブル１２５のエントリの操作をスイッチ１２に指示する制御メッセージの付加情報として、操作権限情報を記述する。もしくは、コントローラ１１は、制御メッセージとは別に、操作権限を指定する特別なメッセージをスイッチ１２に送信しても良い。
【００４３】
図７は、コントローラ１１からスイッチ１２に送信されるエントリ編集コマンドの一例を示したものである。図７のエントリは、優先度はａ、マッチングルールがフローＡのパケットに対して、アクションとしてコントローラＡに処理を問い合わせることを規定している。コントローラ１１は、スイッチ１２に図７のエントリを送信して、スイッチ１２のフローテーブル１２５に図７のエントリを設定させる。また、「Ｏｔｈｅｒｓ：ＲｅａｄＯｎｌｙ」の項は、図７のエントリの操作権限を示している。操作権限のターゲットは、コントローラＡ、Ｂ等、個別で指定できても良いし、コントローラのグループで指定できても良い。また、権限を指定するコントローラと他のコントローラの関係を利用したマクロで指定できても良い。図７の例では、権限を指定するコントローラ以外のコントローラからは、読み込みのみ許可することを指定している。図７のエントリ編集コマンドは、その操作権限をコントローラＡに与えるものであるので、「Ｏｔｈｅｒｓ：ＲｅａｄＯｎｌｙ」は、コントローラＡ以外のコントローラは読み込みのみ許可されることを示している。
【００４４】
次に、フローテーブル管理手段１２２について説明する。図８に示すように、フローテーブル管理手段１２２は、権限管理・判定手段１２２１と、エントリ付加情報記憶手段１２２２と、フローテーブル操作手段１２２３を備える。
【００４５】
まず、権限管理・判定手段１２２１は、エントリ操作権限管理・判定手段１２２１１とフロー範囲判定手段１２２１２を備える。エントリ操作権限管理・判定手段１２２１１は、制御通信手段１２１、フロー範囲判定手段１２２１２、エントリ付加情報記憶手段１２２２、フローテーブル操作手段１２２３と接続される。また、フロー範囲判定手段１２２１２は、フローテーブル操作手段１２２３と接続される。さらに、エントリ付加情報記憶手段１２２２はフローテーブル操作手段１２２３と接続される。フローテーブル操作手段１２２３は、フローテーブル１２５と接続される。
【００４６】
権限管理・判定手段１２２１は、図７に示したようなコントローラ１１からのエントリの操作要求に対して権限の判定を行い、判定結果に従って処理を行う。
【００４７】
エントリ付加情報記憶手段１２２２には、フローテーブル１２５のエントリに対応する権限情報が記憶されている。権限情報としては、例えば、コントローラごとに一意に定まるパーミッションと、所有者情報（即ち、エントリを設定したコントローラを示す情報）などが含まれる。
【００４８】
エントリ操作権限管理・判定手段１２２１１は、エントリの操作権限を管理するとともに、コントローラ１１からのエントリに対する操作要求に対して操作の可否を判定する。
エントリ操作権限管理・判定手段１２２１１は、フローテーブル１２５のエントリに、制御通信手段１２１を通して操作権限が設定されるとき、エントリ付加情報記憶手段１２２２に操作権限の情報を記憶する。制御通信手段１２１を通してコントローラ１１がエントリを参照・編集するときは、エントリ操作権限管理・判定手段１２２１１は、エントリ付加情報記憶手段１２２２の操作権限情報を参照する。さらに、エントリ操作権限管理・判定手段１２２１１は、エントリの編集がマッチングルールの変更を含むときはフロー範囲判定手段１２２１２に問い合わせ、返された判定結果を含めて、操作の可否を判定する。
【００４９】
フロー範囲判定手段１２２１２は、コントローラ１１がエントリを登録する際に、コントローラ１１による制御の可否を判定する。具体的には、制御を許可されているフロー範囲内に、コントローラ１１が制御を要求する範囲が収まっているかを判定する。例えば、フロー範囲判定手段１２２１２は、マッチングルール（即ちフローの識別条件）の包含関係を参酌して、コントローラ１１による制御可否を判定する。フロー範囲判定手段１２２１２は、例えば、所定の送信元ＩＰアドレスに合致するか否かのみをマッチングルール（送信元ＩＰアドレス以外は任意（ワイルドカード））とするフローは、所定の送信元ＩＰアドレス、所定のＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）タグに合致するか否かをマッチングルールとするフローを包含すると判定する。
【００５０】
許可するフロー範囲は、例えば、そのコントローラに問い合わせるアクションを持つエントリのマッチングルールの和集合とすることが考えられる。また、無効化するフロー範囲は、その他のコントローラに問い合わせるアクションを持つ、許可範囲の根拠になったエントリよりも高い優先度のマッチングルールとすることが考えられる。
【００５１】
図９は、フローテーブル１２５のエントリと、エントリ付加情報記憶手段１２２３に対応して記憶されているエントリ付加情報の一例を示したものである。図９を用いて、フロー範囲判定手段１２２１２で行う判断の一例を示す。まず、フローテーブルの一列目は優先度、二列目はマッチングルール、三列目はアクションを示している。また、エントリ付加情報の一列目はフローテーブル１２５の対応するエントリの操作権限、二列目は対応するエントリの所有者を示している。図９の例でも、図６と同様に、優先度の降順にエントリが並べられている。図９の例では、コントローラＡは、コントローラＢが通信を制御するフローの範囲を制限するものとする。アクションの列の「コントローラ：Ａ」は、スイッチ１２が、フローＡにマッチするパケットを受信した場合に、コントローラＡに対して処理を問い合わせることを意味する。このとき、コントローラＢが、フローＢというマッチングルールを持つエントリを登録できる条件は、２つある。まず１つは、フローＢが示すフローの範囲が、コントローラＢに問い合わせるアクションを持つコントローラＡのエントリのマッチングルールであるフローＣが示すフロー範囲に包含されることである。２つ目は、エントリの優先度の大小関係が、ａ−ｎ＜ａ−ｋ＜ａとなることである。
【００５２】
［動作］
図１０、図１１、図１２、図１３は、第２の実施形態における、通信システム１の動作を示すフローチャートである。以下、これらのフローチャートを用いて、第２の実施形態の動作について説明する。
【００５３】
図１０は、第２の実施形態において、スイッチ１２がパケットを受信した際の動作を示すフローチャートである。
【００５４】
まず、データ処理手段１２４は、ネットワーク上の図示しない他の通信装置からのパケットを受信する（Ｓ１１）。次に、フロー識別手段１２３は、受信パケットがフローテーブル１２５のエントリのマッチングルールにマッチするか否かを判断する（Ｓ１２）。
【００５５】
受信パケットにマッチするフローテーブル１２５のエントリが存在する場合、フロー識別手段１２３は、マッチしたエントリのアクションが、コントローラ指定の処理問い合わせであるか否かを判断する（Ｓ１３）。
【００５６】
マッチしたエントリのアクションが、コントローラ指定の処理問い合わせであると判断された場合、処理問い合わせ手段１２１１は、指定されたコントローラに対する処理問い合わせを行う（Ｓ１４）。
【００５７】
コントローラ指定の処理問い合わせではないと判断された場合、データ処理手段１２４は、マッチしたエントリのアクションに従って、パケットを処理する（ステップＳ１６）。データ処理手段１２４は、例えば、受信パケットを他の通信装置に転送したり、受信パケットを破棄したりする。
【００５８】
Ｓ１２でパケットがフローテーブルのエントリのマッチングルールにマッチしないと判断された場合、制御通信手段１２１は、デフォルトとして設定されているコントローラに処理の問い合わせを行う（Ｓ１５）。
【００５９】
図１１および図１２は、スイッチ１２がコントローラ１１からエントリ編集コマンドを受信した際の動作を示すフローチャートである。
【００６０】
まず、制御通信手段１２１は、コントローラ１１からエントリ編集コマンドを受信する（Ｓ２１）。
【００６１】
続いて、フローテーブル管理手段１２２は、受信したコマンドが、フローテーブル１２５にエントリを追加するコマンドであるか否かを判断する（Ｓ２２）。
【００６２】
Ｓ２２において、受信したコマンドが、フローテーブルにエントリを追加するコマンドではないと判断された場合、Ｓ２３の動作が行われる。エントリ操作権限管理・判定手段１２２１１は、エントリ付加情報記憶手段１２２２に記憶されている権限情報を参照する（Ｓ２３）。その後、エントリ操作権限管理・判定手段１２２１１は、コマンドを送信したコントローラに編集対象のエントリへの要求操作が許可されているかを判断する（Ｓ２４）。
【００６３】
Ｓ２２において、エントリ編集コマンドが、フローテーブルにエントリを追加するコマンドであると判断された場合、Ｓ２６の処理を行う。Ｓ２６の処理については後述する。
【００６４】
Ｓ２４で、編集対象のエントリへの要求操作が許可されていると判断された場合、権限管理・判定手段１２２１は、Ｓ２５の処理を行う。権限管理・判定手段１２２１は、エントリ編集コマンドが、エントリの優先度またはマッチングルールを変更するコマンドであるか否かを判断する（Ｓ２５）。
【００６５】
また、Ｓ２４において、エントリ編集コマンドを送信したコントローラに編集対象のエントリへの要求操作が許可されていないと判断された場合、操作コマンドを拒否する（ステップＳ３０）。
【００６６】
Ｓ２５で、エントリの優先度またはマッチングルールを変更するコマンドであると判断された場合、フロー範囲判定手段１２２１２は、Ｓ２６の処理を行う。フロー範囲判定手段１２２１２は、エントリ編集コマンドで要求されている変更後のエントリの優先度やマッチングルールが、要求元のコントローラに許可されている範囲内であるか否かを判断する（Ｓ２６）。
【００６７】
Ｓ２６で、エントリ編集コマンドで要求されている変更後のエントリの優先度やマッチングルールが、コントローラに許可されている範囲内であると判断された場合、エントリ操作権限管理・判定手段１２２１１は、Ｓ２７の処理を行う。エントリ操作権限管理・判定手段１２２１１は、エントリ操作権限指定に新規追加があるか、もしくは変更があるか、または新規追加も変更もないかを判断する（Ｓ２７）。
【００６８】
Ｓ２７で、エントリ操作権限指定に新規追加または変更があると判断された場合、エントリ操作権限管理・判定手段１２２１１は、Ｓ２８の処理を行う。エントリ操作権限管理・判定手段１２２１１において、エントリ付加情報記憶手段１２２２のエントリ操作権限を編集する（ステップＳ２８）。その後、フローテーブル操作手段１２２３が、操作コマンドを実行する（ステップＳ２９）。また、Ｓ２７で、エントリ操作権限指定に新規追加または変更がないと判断された場合には、Ｓ２８の処理を飛ばして、Ｓ２９の処理が行われる。
【００６９】
コントローラ１１は、スイッチ１２の管理等のため、スイッチ１２に対してフローテーブルを参照するコマンドを送信することができる。以下、このコマンドをフローテーブル参照コマンドと呼ぶ。図１３は、スイッチ１２がコントローラ１１からフローテーブル参照コマンドを受信したときの動作を示すフローチャートである。
【００７０】
まず、スイッチ１２は、コントローラ１１から、制御通信手段１２１を介して、フローテーブル参照コマンドを受信する（Ｓ３１）。
【００７１】
次に、エントリ操作権限管理・判定手段１２２１１は、エントリ付加情報記憶手段１２２２に記憶されている権限情報を参照する（Ｓ３２）。
【００７２】
Ｓ３２の後、エントリ操作権限管理・判定手段１２２１１は、コマンド送信元のコントローラに参照権限があるエントリを抽出する（Ｓ３３）。
【００７３】
フローテーブル操作手段１２２３は、Ｓ３３で抽出したエントリをフローテーブル１２５から取得する（Ｓ３４）。
【００７４】
エントリ操作権限管理・判定手段１２２１１において、ステップＳ３２で抽出したエントリに対応するエントリ付加情報を、エントリ付加情報記憶部１２２２から取得する（Ｓ３５）。
【００７５】
次に、エントリ操作権限管理・判定手段１２２１１は、Ｓ３５で取得したエントリ付加情報を複製する（Ｓ３６）。
【００７６】
さらに、エントリ操作権限管理・判定手段１２２１１は、Ｓ３６で複製したエントリ付加情報の中の権限情報を、参照を要求するコントローラが持つ権限に変換する（Ｓ３７）。
【００７７】
最後に、制御通信手段１２１は、Ｓ３４で取得したエントリと、Ｓ３７で変換したエントリ付加情報を、参照を要求するコントローラ１１に送信する（Ｓ３８）。
【００７８】
［効果］
以上説明した通り、第２の実施形態における通信システム１は、フローテーブル１２５のエントリのアクションとして、コントローラ１１のうちいずれかを指定するアクションを用いている。これにより、フロー範囲ごとに、パケットの処理を問い合わせるコントローラを分けることが可能となる。その結果、例えば、ある特定のフローに対して制御するコントローラを１つに定めるような制御が可能になる。
【００７９】
また、スイッチ１２は、エントリごとにコントローラ１１の権限情報を保持して、フローテーブル１２５のエントリに対する操作を制限している。これにより、コントローラ１１が制御可能なフロー範囲を制限している。従って、異なるコントローラによる制御ポリシの意図しない上書きを防ぐことが可能になる。
【００８０】
以上の動作によって、スイッチ１２を、制御範囲と権限範囲を定め、複数のコントローラ１１から直接制御することが可能になる。従って、第２の実施形態によれば、スイッチ１２を制御するコントローラ１１が複数存在する場合であっても、受信パケットを制御するコントローラ１１を１つに決定することができるため、複数のコントローラ１１によるスイッチ１２の制御が可能となる。
【００８１】
［第３の実施形態］
［構成］
以下、第３の実施形態について説明する。第３の実施形態は、第２の実施形態と比較して、スイッチ１２のフローテーブル管理手段１２２と、フローテーブル１２５が変更されている。従って、以下では、フローテーブル管理手段１２２からの変更点に焦点を当てて説明し、第２の実施形態と同様の構成および動作については説明を省略する。
【００８２】
図１４は、第３の実施形態によるフローテーブル管理手段２２２を示すブロック図である。図１４によれば、フローテーブル管理手段２２２は、権限管理・判定手段２２２１と、フローテーブル操作手段１２２２を備える。権限管理・判定手段２２２１は、エントリ操作権限管理・判定手段２２２１１と、フロー範囲判定手段２２２１２を含む。エントリ操作権限管理・判定手段２２２１１は、制御通信手段１２１と、フロー範囲判定手段２２２１２と、フローテーブル操作手段１２２２と接続されている。
【００８３】
また、第２の実施形態のフローテーブル管理手段１２２と比較すると、エントリ付加情報記憶手段１２２２が削除されている。第３の実施形態では、フローテーブル２２５が、第２の実施形態のエントリ付加情報記憶手段１２２２が記憶していた情報を記憶している。図１５は、第３の実施形態によるフローテーブル２２５の一例を示している。図１５によれば、フローテーブル２２５には、第２の実施形態のフローテーブル１２５が記憶する情報に追加して、権限情報が記憶されている。
【００８４】
［動作］
第３の実施形態によるスイッチ１２では、コントローラ１１からエントリ編集コマンドを受信時の動作において、エントリ付加情報を参照または編集する必要がある場合には、フローテーブル２２５を参照または編集すれば良い。
【００８５】
図１６は、第３の実施形態によるスイッチ１２がフローテーブル参照コマンドを受信した場合の動作を示すフローチャートである。図１６に示す動作は、図１３の第２の実施形態の動作と比べて、Ｓ３４以降の動作に違いがある。なお、その他の第２の実施形態と同様の動作については、それぞれ図１３と同一の符号を付し、詳細な説明を省略する。
【００８６】
エントリ操作権限管理・判定手段２２２１１は、Ｓ３３とＳ３４によって取得されたエントリを複製する（Ｓ２３６）。
【００８７】
続いて、エントリ操作権限管理・判定手段２２２１１は、Ｓ２３６において複製したエントリが持つ権限情報を、参照を要求するコントローラが持つ権限に変換する（Ｓ２３７）。
【００８８】
最後に、制御通信手段１２１は、Ｓ２３７で変換したエントリを、参照を要求するコントローラ１１に通知する（Ｓ２３８）。
【００８９】
［効果］
第３の実施形態における通信システム１は、第２の実施形態の通信システム１と同様の効果を奏する。すなわち、第３の実施形態によるフローテーブル２２５のエントリのアクションとして、コントローラ１１のうちいずれかを指定するアクションを用いている。これにより、フロー範囲ごとに、パケットの処理を問い合わせるコントローラを分けることが可能となる。その結果、例えば、ある特定のフローに対して制御するコントローラを１つに定めるような制御が可能になる。
【００９０】
また、スイッチ１２は、エントリごとにコントローラ１１の権限情報を保持して、フローテーブル２２５のエントリに対する操作を制限している。これにより、コントローラ１１が制御可能なフロー範囲を制限している。従って、異なるコントローラによる制御ポリシの意図しない上書きを防ぐことが可能になる。
【００９１】
以上の動作によって、スイッチ１２を、制御範囲と権限範囲を定め、複数のコントローラ１１から直接制御することが可能になる。従って、第３の実施形態によれば、スイッチ１２を制御するコントローラ１１が複数存在する場合であっても、受信パケットを制御するコントローラ１１を１つに決定することができるため、複数のコントローラ１１によるスイッチ１２の制御が可能となる。
【００９２】
［第４の実施形態］
［構成］
図１７は、第４の実施形態によるスイッチ３２を示している。図１７に示されるように、第４の実施形態によるスイッチ３２は、制御通信手段３２１とフローテーブル管理手段３２２とフローテーブル３２５が、第２の実施形態と異なっている。なお、その他の構成要素は第２の実施形態および第３の実施形態と同様である。また、第２の実施形態と同様の構成要素については、図４、図５、図８と同一の符号を付し、詳細な説明を省略する。
【００９３】
第４の実施形態では、フローテーブル３２５には、コントローラを指定した処理問い合わせをアクションとして登録しなくてもよい。フローテーブル３２５のアクションに、コントローラを指定した処理問い合わせを登録しない場合について、以下に説明する。
【００９４】
第４の実施形態では、制御通信手段３２１は、処理問い合わせ手段１２１１と、処理問い合わせ先振り分け手段３２１２と、コントローラフローテーブル３２１３を備える。また、第４の実施形態では、第２の実施形態と比べて、フローテーブル管理手段３２２には、処理問い合わせ先管理手段３２２４が追加されている。
【００９５】
以下、第４の実施形態で新たに追加された要素について説明する。まず、処理問い合わせ先振り分け手段３２１２は、コントローラ１１へのパケットの処理内容の問い合わせに対して、どのコントローラに問い合わせるのかを選択する。また、処理問い合わせ先振り分け手段３２１２は、コントローラを指定していない処理問い合わせ指示を、コントローラを指定した処理問い合わせ指示に変換する。
【００９６】
図１８は、コントローラフローテーブル３２１３の一例を示している。図１８によれば、コントローラフローテーブル３２１３は、少なくとも優先度と、マッチングルールと、宛先となるコントローラの識別子をエントリとして持つ。コントローラの識別子は、コントローラに対して一意に定まるものであればどのようなものでも良い。
【００９７】
また、処理問い合わせ先管理手段３２２４は、処理問い合わせ先の振り分け基準を管理し、エントリのアクション部分を変換する。
【００９８】
［動作］
図１９、図２０は、第４の実施形態におけるスイッチ３２の動作を示すフローチャートである。第２の実施形態と同様の動作については、それぞれ図１０と同一の符号を付し、詳細な説明を省略する。
【００９９】
図１９は、スイッチ３２がパケットを受信した際の動作を示すフローチャートである。
まず、スイッチ３２は、パケットを受信し、フローテーブルのエントリのマッチングルールにマッチするか否かを判断する（Ｓ１１、Ｓ１２）。
【０１００】
Ｓ１２で、受信パケットがフローテーブルのエントリのマッチングルールにマッチすると判断された場合、フロー識別手段１２３は、マッチしたマッチングルールのエントリのアクションが、コントローラへの処理問い合わせであるか否かを判断する（Ｓ１３）。
【０１０１】
Ｓ１３で、マッチしたエントリのアクションが、コントローラへの処理問い合わせであると判断された場合、Ｓ３１７の処理が行われる。処理問い合わせ先振り分け手段３２１２は、受信パケットの処理を問い合わせるべきコントローラを、コントローラフローテーブル３２１３を参照して検索する（Ｓ３１７）。具体的には、処理問い合わせ先振り分け手段３２１２は、受信パケットがマッチしたマッチングルールに対応するコントローラフローテーブル３２１３のマッチングルールを有するエントリを検索する。処理問い合わせ先振り分け手段３２１２は、検索したエントリの宛先コントローラを、問い合わせ先として取得する。
【０１０２】
次に、処理問い合わせ先振り分け手段３２１２が、宛先を指定しないコントローラへの処理問い合わせを、検索したコントローラを宛先として指定した処理問い合わせに変換する（Ｓ３１８）。
【０１０３】
その後、処理問い合わせ手段１２１１は、指定されたコントローラに対する処理問い合わせを行う（Ｓ１４）。
【０１０４】
図２０は、スイッチ３２がコントローラ１１から処理問い合わせ先を指定するエントリの登録を指示されたときの動作を示すフローチャートである。第２の実施形態および第３の実施形態では、エントリの登録指示を受けた場合には、そのままフローテーブルに登録していたが、第４の実施形態では、コントローラフローテーブル３２１３への登録も必要となる。
【０１０５】
まず、制御通信手段３２１は、コントローラ１１から、処理の問い合わせ先を指定するエントリの登録指示を受信する（Ｓ３４１）。
【０１０６】
次に、権限管理・判定手段１２２１は、第２の実施形態と同様に、エントリの権限判定を行う（Ｓ３４２）。
【０１０７】
続いて、処理問い合わせ先管理手段３２２４は、コントローラフローテーブル３２１３に、マッチングルールをキー、コントローラの識別子をバリューとするエントリを登録し、エントリに優先度を付ける（Ｓ３４３）。
【０１０８】
さらに、処理問い合わせ先管理手段３２２４は、エントリ登録指示中のアクションを、コントローラを指定しない処理問い合わせに置換する（Ｓ３４４）。
【０１０９】
最後に、フローテーブル操作手段１２２３は、フローテーブル３２５にエントリを登録する（Ｓ３４５）。
【０１１０】
［効果］
第４の実施形態における通信システム１は、第２の実施形態および第３の実施形態の通信システム１と同様の効果を奏する。すなわち、第４の実施形態によるフローテーブル３２５のエントリ中の、コントローラに対する処理問い合わせのアクションに対して、スイッチ３２は、問い合わせの宛先となるコントローラがどれであるかをコントローラフローテーブル３２１３に記憶している。これにより、フロー範囲ごとに、パケットの処理を問い合わせるコントローラを分けることが可能となる。その結果、例えば、ある特定のフローに対して制御するコントローラを１つに定めるような制御が可能になる。
【０１１１】
また、スイッチ３２は、エントリごとにコントローラ１１の権限情報を保持して、フローテーブル３２５のエントリに対する操作を制限している。これにより、コントローラ１１が制御可能なフロー範囲を制限している。従って、異なるコントローラによる制御ポリシの意図しない上書きを防ぐことが可能になる。
【０１１２】
以上の動作によって、スイッチ３２を、制御範囲と権限範囲を定め、複数のコントローラ１１から直接制御することが可能になる。従って、第４の実施形態によれば、スイッチ３２を制御するコントローラ１１が複数存在する場合であっても、受信パケットを制御するコントローラ１１を１つに決定することができるため、複数のコントローラ１１によるスイッチ３２の制御が可能となる。
［第５の実施形態］
［構成］
図２１は、第５の実施形態の通信装置５の構成例を示す。
【０１１３】
通信装置５は、検索手段５０、問合せ手段５１及び記憶手段５２を有する。
【０１１４】
通信装置５は、複数のコントローラ１１と通信し、コントローラ１１からの制御に従ってパケットを処理する。
【０１１５】
なお、通信装置５は、モバイル端末、モバイルルータ、サーバ等の通信機能を有する装置、若しくは、ネットワーク上でパケットを転送する装置（スイッチやルータ等）である。なお、モバイルルータは、例えば、携帯電話の３Ｇ回線や無線ＬＡＮのネットワークを中継する端末である。また、通信装置５は、モバイル端末、モバイルルータ、サーバ等にソフトウェアとして実装されてもよい。
【０１１６】
図２２は、記憶手段５２が記憶しているテーブル５２０の構成例を示す。テーブル５２０の各エントリは、例えば、パケットを識別するための規則（即ち、パケットが属するフローを識別するための規則）と、通信装置５がパケットの処理方法を問い合わせする制御装置（コントローラ）を識別するためのコントローラ識別条件と、規則に対応するパケットの処理方法とを含む。なお、図２２において、“Ａｃｔｉｏｎ”の領域に“コントローラ”と記載されているエントリは、コントローラへの問い合わせ処理を規定するエントリである。
【０１１７】
他の実施形態（第１から第４の実施形態）では、受信パケットに対応する処理（“Ａｃｔｉｏｎ”）がコントローラへの問い合わせ処理である場合、通信装置は、エントリの“Ａｃｔｉｏｎ”領域で指定されたコントローラに対して問い合わせを行う。
【０１１８】
第５の実施形態では、通信装置５は、エントリ含まれるコントローラ識別条件に従って、問い合わせを行うコントローラ１１を決定する。
【０１１９】
図２２のマッチングルール（“Ｍａｔｃｈｉｎｇ  Ｒｕｌｅ”）に“Ｆｌｏｗ  Ａ”と記載されている場合、そのマッチングルールは、フローＡに属するパケットを識別するための条件を規定している。例えば、マッチングルールは、送信元ＩＰアドレスが“ｘ”、送信先ＩＰアドレスが“ｙ”であるという条件を規定する。
【０１２０】
検索手段５０は、記憶手段５２のテーブル５２０から受信パケットに対応する処理を検索する。検索手段５０は、例えば、受信パケットのヘッダと、エントリの規則（マッチングルール）とを照合し、受信パケットに対応するエントリを検索する。検索手段５０は、受信パケットに対応するエントリが検索された場合、検索されたエントリに規定されている処理方法に従って、受信パケットを処理する。検索手段５０は、エントリに従って、例えば、受信パケットを通信装置５の通信ポートに転送する処理、受信パケットのヘッダの書き換え処理、受信パケットの廃棄、他のテーブルにおける検索等の処理を実行する。
【０１２１】
問い合わせ手段５１は、複数のコントローラ１１の少なくとも１つと通信する。問い合わせ手段５１は、コントローラ１１と通信することで、テーブル５２０に設定するためのエントリの問い合わせ等を行う。コントローラ１１は、問い合わせに対して、通信装置５に設定するエントリを決定し、通信装置５に通知する。通信装置５は、通知されたエントリを、テーブル５２０に記憶する。
【０１２２】
検索手段５０が検索した処理が、コントローラへの問い合わせ処理である場合、問い合わせ手段５１は、受信パケットの所定の領域に基づいて、複数のコントローラのうち、問い合わせを行うコントローラ１１を決定する。
【０１２３】
受信パケットの所定の領域は、受信パケットのヘッダフィールドである。検索手段５０は、所定の領域と、エントリのマッチングルールとを照合し、受信パケットに対応するエントリを検索する。検索された処理がコントローラへの問い合わせ処理である場合、問い合わせ手段５１は、受信パケットの所定の領域（例えばヘッダフィールド）のうち、エントリに規定されたコントローラ識別条件に対応する情報に基づいて、コントローラ１１を決定する。例えば、コントローラ識別条件としてＶＬＡＮ  ＩＤ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  ＩＤ）が規定されている場合、問い合わせ手段５１は、受信パケットのＶＬＡＮ  ＩＤを参照して、コントローラ１１を決定する。なお、コントローラ識別条件は、ＶＬＡＮ  ＩＤに限らず、任意の条件を設定することができる。
【０１２４】
図２３は、コントローラ識別条件がパケットの入力ポート（“Ｉｎｇｒｅｓｓ  Ｐｏｒｔ”）である場合のテーブル５２０の例を示す。
【０１２５】
図２３の一番目のエントリは、フローＡに属するパケットに対応するコントローラ識別条件として、入力ポート番号が“１”であることを規定する。また、図２３の一番目のエントリは、フローＡに対応する処理として、コントローラへの問い合わせ処理を規定する。
【０１２６】
問い合わせ手段５１は、受信パケットの所定の領域のうち、コントローラ識別条件に対応する情報に従って、コントローラ１１を決定する。問い合わせ手段５１は、コントローラ識別条件に従って、受信パケットの入力ポート番号が“１”である場合に対応するコントローラ１１に対して問い合わせを行う。
【０１２７】
なお、問い合わせ手段５１は、コントローラ識別条件と、問い合わせ対象のコントローラの識別子との対応を管理するコントローラ識別テーブル５１０を有してもよい。問い合わせ手段５１は、コントローラ識別条件が入力ポート番号である場合に、各ポート番号毎に、対応するコントローラの識別子を管理するコントローラ識別テーブル５１０を有する。図２４は、コントローラ識別テーブル５１０の例を示す。
【０１２８】
問い合わせ手段５１は、テーブル５１０からコントローラの識別子を抽出し、識別子に対応するコントローラ１１に対して問い合わせを行う。
［動作］
図２５は、第５の実施形態の動作例を示すフローチャートである。
【０１２９】
通信装置５は、受信パケットに対応する処理を記憶手段５２から検索する（Ｓ５０）。
【０１３０】
通信装置５は、検索された処理がコントローラへの問い合わせ処理である場合、受信パケットの所定の領域のうち、コントローラ識別条件に対応する情報に基づいて、複数の制御装置のうち、問い合わせを行う制御装置を決定する（Ｓ５１）。
【０１３１】
通信装置５は、決定した制御装置に対して、受信パケットの処理を問合せる（Ｓ５２）。
［効果］
第５の実施形態の通信装置５は、受信パケットの所定の領域（ヘッダフィールド）に基づいて、問い合わせを行うコントローラ１１を決定する。よって、コントローラ１１は、コントローラへの問い合わせ処理を含むエントリを通信装置５に通知する場合、コントローラ識別条件を指定するだけでよく、コントローラの識別子を指定しなくてもよい。従って、通信装置５が、コントローラ識別条件に対応するコントローラを柔軟に変更できる。
［第６の実施形態］
［構成］
図２６は、第６の実施形態の通信装置６の構成例を示す。
【０１３２】
通信装置６は、検索手段６０、問合せ手段６１及び記憶手段６２を有する。
【０１３３】
通信装置６は、複数のコントローラ１１と通信し、コントローラ１１からの制御に従ってパケットを処理する。
【０１３４】
なお、通信装置６は、モバイル端末、モバイルルータ、サーバ等の通信機能を有する装置、若しくは、ネットワーク上でパケットを転送する装置（スイッチやルータ等）である。なお、モバイルルータは、例えば、携帯電話の３Ｇ回線や無線ＬＡＮのネットワークを中継する端末である。また、通信装置６は、モバイル端末、モバイルルータ、サーバ等にソフトウェアとして実装されてもよい。
【０１３５】
図２７は、記憶手段６２が記憶しているテーブル６２０の構成例を示す。テーブル６２０の各エントリは、例えば、パケットを識別するための規則（即ち、パケットが属するフローを識別するための規則）と、その規則に対応するパケットの処理方法とを含む。なお、図２７において、“Ａｃｔｉｏｎ”の領域に“コントローラ”と記載されているエントリは、コントローラへの問い合わせ処理を規定するエントリである。
【０１３６】
他の実施形態（第１から第４の実施形態）では、受信パケットに対応する処理（“Ａｃｔｉｏｎ”）がコントローラへの問い合わせ処理である場合、通信装置は、エントリの“Ａｃｔｉｏｎ”領域で指定されたコントローラに対して問い合わせを行う。
【０１３７】
第６の実施形態では、通信装置６は、パケットを識別するためのマッチングルール（“Ｍａｔｃｈｉｎｇ  Ｒｕｌｅ”）に含まれる条件（コントローラ識別条件）を用いて、問い合わせを行うコントローラ１１を決定する。つまり、第６の実施形態の通信装置６は、マッチングルールの一部を利用して、問い合わせを行うコントローラ１１を決定する。
【０１３８】
図２７のマッチングルールに“Ｆｌｏｗ  Ａ”と記載されている場合、そのマッチングルールは、フローＡに属するパケットを識別するための条件を規定している。例えば、マッチングルールは、送信元ＩＰアドレスが“ｘ”、送信先ＩＰアドレスが“ｙ”、ＶＬＡＮ  ＩＤが“ｚ”であるという条件を規定する。第６の実施形態では、通信装置６は、マッチングルールの一部（例えば、ＶＬＡＮ  ＩＤ）を、コントローラ識別条件として利用する。
【０１３９】
検索手段６０は、記憶手段６２のテーブル６２０から受信パケットに対応する処理を検索する。検索手段６０は、例えば、受信パケットのヘッダと、エントリの規則（マッチングルール）とを照合し、受信パケットに対応するエントリを検索する。検索手段６０は、受信パケットに対応するエントリが検索された場合、検索されたエントリに規定されている処理方法に従って、受信パケットを処理する。検索手段６０は、エントリに従って、例えば、受信パケットを通信装置６の通信ポートに転送する処理、受信パケットのヘッダの書き換え処理、受信パケットの廃棄、他のテーブルにおける検索等の処理を実行する。
【０１４０】
問い合わせ手段６１は、複数のコントローラ１１の少なくとも１つと通信する。問い合わせ手段６１は、コントローラ１１と通信することで、テーブル６２０に設定するためのエントリの問い合わせ等を行う。
【０１４１】
検索手段６０が検索した処理が、コントローラへの問い合わせ処理である場合、問い合わせ手段６１は、マッチングルールに基づいて、複数のコントローラのうち、問い合わせを行うコントローラ１１を決定する。
【０１４２】
テーブル６２０のマッチングルールは、コントローラを識別するためのコントローラ識別条件を含む。問い合わせ手段６１は、コントローラ識別条件に基づき、問い合わせ対象のコントローラ１１を決定する。コントローラ識別条件は、例えば、受信パケットの入力ポート（“Ｉｎｇｒｅｓｓ  Ｐｏｒｔ”）や、ＶＬＡＮ  ＩＤ等である。但し、コントローラ識別条件は、Ｉｎｇｒｅｓｓ  ｐｏｒｔやＶＬＡＮ  ＩＤに限らず、任意の条件を設定することができる。
【０１４３】
例えば、受信パケットを識別するためのマッチングルールが、受信パケットのヘッダの領域Ａの値が“ａ”かつ領域Ｂの値が“ｂ”、という条件であり、領域Ｂがコントローラ識別条件として用いられると仮定する。この場合、問い合わせ手段６１は、領域Ｂの値が“ｂ”である場合に対応するコントローラ１１に対して受信パケットの処理を問合せる。
【０１４４】
図２８は、コントローラ識別条件がパケットの入力ポート（“Ｉｎｇｒｅｓｓ  Ｐｏｒｔ”）である場合のテーブル６２０の例を示す。
【０１４５】
図２８の一番目のエントリは、フローＡに属するパケットを識別するための条件として、入力ポート番号が“１”であることを含む。また、図２８の一番目のエントリは、フローＡに対応する処理として、コントローラへの問い合わせ処理を規定する。
【０１４６】
問い合わせ手段６１は、マッチングルールに規定された条件のうち、入力ポート番号をコントローラ識別条件として利用する。問い合わせ手段６１は、フローＡに属するパケットについて、入力ポート番号が“１”である場合に対応するコントローラ１１に対して問い合わせを行う。
【０１４７】
なお、問い合わせ手段６１は、コントローラ識別条件と、問い合わせ対象のコントローラの識別子との対応を管理するコントローラ識別テーブル６１０を有してもよい。問い合わせ手段６１は、例えば、コントローラ識別条件が入力ポート番号である場合に、ポート番号毎に、対応するコントローラの識別子を管理するコントローラ識別テーブル６１０を有する。図２９は、コントローラ識別テーブル６１０の例を示す。
【０１４８】
問い合わせ手段６１は、テーブル６１０から、マッチングルールの一部であるコントローラ識別条件の内容に応じて、対応するコントローラの識別子を抽出し、識別子に対応するコントローラ１１に対して問い合わせを行う。
［動作］
図３０は、第６の実施形態の動作例を示すフローチャートである。
【０１４９】
通信装置６は、受信パケットに対応する処理を記憶手段６２から検索する（Ｓ６０）。
【０１５０】
通信装置６は、検索された処理がコントローラへの問い合わせ処理である場合、検索された処理に対応するマッチングルールに基づいて、複数の制御装置のうち、問い合わせを行う制御装置を決定する（Ｓ６１）。
【０１５１】
通信装置６は、決定した制御装置に対して、受信パケットの処理を問合せる（Ｓ６２）。
［効果］
第６の実施形態の通信装置６は、マッチングルールの一部を利用して、問い合わせを行うコントローラ１１を決定する。よって、第６の実施形態の通信装置６は、コントローラを識別するための情報をエントリに追加することを回避できる。従って、第６の実施形態の通信装置６は、テーブルのエントリの情報量を削減できるという効果が得られる。
［第７の実施形態］
［構成］
第７の実施形態の通信装置の構成は、第６の実施形態の通信装置６と同様なので、詳細な説明は省略する。
［動作］
図３１を参照し、第７の実施形態の動作例を説明する。なお、図３１では、コントローラ識別条件として、入力ポート番号を用いるが、これは例示である。よって、コントローラ識別条件は、入力ポート番号に限定されない。
【０１５２】
検索手段６０は、受信パケットに対応するエントリを、記憶手段６２から検索する。
【０１５３】
受信パケットは、通信装置６のポート番号が“１”のポートから入力したものとする。
また、受信パケットの所定の領域（ヘッダフィールド）は、条件βに合致するものとする。条件βは、例えば、送信元ＩＰアドレスが“ａ”で、宛先ＩＰアドレスが“ｂ”であるとする。受信パケットはポート番号“１”から入力したので、ヘッダフィールドの“Ｉｎｇｒｅｓｓ  Ｐｏｒｔ”には“１”が格納される。
【０１５４】
検索手段６０は、受信パケットの所定の領域の条件β及び入力ポート番号“１”に基づき、マッチングルールが“Ｆｌｏｗ  Ｃ”のエントリを検索する。検索されたエントリの“Ａｃｔｉｏｎ”には、“Ｒｅ−ｉｎｐｕｔ”というアクションが規定されている。“Ｒｅ−ｉｎｐｕｔ”というアクションは、エントリにマッチしたパケットのヘッダフィールドを書き換えて、再度、テーブルの検索を実行する処理である。図３１の例では、アクション“Ｒｅ−ｉｎｐｕｔ”は、受信パケットのヘッダフィールドの入力ポート番号を“５”に書き換えて、再度テーブルを検索することを規定しているものとする。
【０１５５】
検索手段６０は、アクション“Ｒｅ−ｉｎｐｕｔ”に従い、受信パケットの入力ポート番号を“５”に書き換えて、再検索を実行する。
【０１５６】
検索手段６０は、再検索の結果、マッチングルールが“Ｆｌｏｗ  Ｄ”のエントリを検索する。“Ｆｌｏｗ  Ｄ”は、マッチングルールが、条件βかつポート番号“５”なので、ヘッダフィールドを書き換えられた受信パケットがマッチする。
【０１５７】
マッチングルールが“Ｆｌｏｗ  Ｄ”のエントリに規定されている“Ａｃｔｉｏｎ”は、コントローラへの問い合わせ処理である。よって、問い合わせ手段６１は、受信パケットの処理を、入力ポート番号“５”に対応するコントローラ１１に問合せる。
【０１５８】
本実施形態においては再検索を行うアクションを用いて説明したが，例えば，入力されたパケットを再び検索するようなポートを用い，該ポートに出力することでも実施できる。
図３１の例のように、Ｆｌｏｗ  ＡとＦｌｏｗ  Ｃは、マッチングルールの一部が共通する。つまり、Ｆｌｏｗ  ＡとＣは、マッチングルールの一部である入力ポート番号が“１”である。一方、Ｆｌｏｗ  ＡとＣは、入力ポート番号以外のマッチングルールが異なる（Ｆｌｏｗ  Ａは条件α、Ｆｌｏｗ  Ｃは条件β）。
【０１５９】
この場合、入力ポート番号以外のマッチングルールが異なるにも関わらず、問い合わせ手段６１は、Ｆｌｏｗ  Ａに属するパケットと、Ｆｌｏｗ  Ｃに属するパケットの両方を、同じコントローラ１１に問い合わせをする。Ｆｌｏｗ  Ａに属するパケットと、Ｆｌｏｗ  Ｃに属するパケットは、入力ポート番号が同じだからである。
【０１６０】
入力ポート番号以外が異なるので、問い合わせ手段６１は、Ｆｌｏｗ  Ａに属するパケットとＦｌｏｗ  Ｃに属するパケットの処理を、それぞれ別のコントローラ１１に問い合わせをした方がよい場合もありうる。この場合、図３１で例示したアクション“Ｒｅ−ｉｎｐｕｔ”を利用することで、問い合わせ手段６１は、コントローラ識別条件のみが同一の異なるフローに属するパケットのそれぞれについて、異なるコントローラ１１に問い合わせをすることができる。
［効果］
第７の実施形態では、通信装置６は、コントローラ識別条件のみが同一の異なるフローに属するパケットのそれぞれについて、異なるコントローラ１１に問い合わせをすることができる。よって、第７の実施形態は、パケットの処理を問合せるコントローラ１１を柔軟に選択できる。
【０１６１】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、本願発明の構成は、各実施形態を組み合わせた実施形態も含む。
【０１６２】
上記の各実施形態のスイッチは、通信端末や、その他の通信機器類等に適宜適用することが可能であり、スイッチに限られるものではない。
【０１６３】
また、上記の実施形態では、オープンフローを適用したネットワークについて説明したが、これに限られるものではない。オープンフロー以外であっても、制御サーバ等がスイッチの集中管理を行うようなネットワークであれば、適用可能である。
【０１６４】
また、上記の実施形態によるスイッチ、またはスイッチと同等の機能を有する通信端末、もしくはその他の通信機器は、その有する機能をハードウェアで実現することも可能である。また、上記の実施形態によるスイッチ、またはスイッチと同等の機能を有する通信端末、もしくはその他の通信機器は、コンピュータと、コンピュータ上で実行されるプログラムとで実現することも可能である。プログラムは、磁気ディスクや半導体メモリ等の記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。このようにコンピュータの動作を制御し、コンピュータを上述の各実施形態におけるスイッチ、またはスイッチと同等の機能を有する通信端末や通信機器として機能させ、前述した処理を行わせる。
【０１６５】
なお、本発明によると、以下に付記する発明がもたらされる。
［付記１］
上記第１の視点に係る通信装置のとおりである。
［付記２］
前記通信装置において、前記第二の手段は、前記第一の手段が制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記３］
前記通信装置において、前記第二の手段は、前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記４］
前記通信装置において、前記第二の手段は、前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記５］
前記通信装置において、前記第一の手段は、前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記第二の手段は、前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せるようにしてもよい。
［付記６］
前記通信装置において、前記第一の手段が前記受信パケットに対応する処理を検索した場合に、前記所定の領域の一部を書き換えて、前記第一の手段に再検索を実行させる第三の手段を備えていてもよい。
［付記７］
前記通信装置において、前記第二の手段は、前記所定の領域のうち、前記規則に一致した情報に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記８］
上記第２の視点に係る通信方法のとおりである。
［付記９］
前記通信方法において、制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１０］
前記通信方法において、前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１１］
前記通信方法において、前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１２］
前記通信方法において、前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せるようにしてもよい。
［付記１３］
前記通信方法において、前記受信パケットに対応する処理を検索した場合に、前記所定の領域の一部を書き換えて、再検索を実行するようにしてもよい。
［付記１４］
前記通信方法において、前記所定の領域のうち、前記規則に一致した情報に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１５］
上記第３の視点に係る通信システムのとおりである。
［付記１６］
上記第４の視点に係るプログラムのとおりである。
［付記１７］
前記プログラムにおいて、制御装置への問い合わせを行う処理を検索したことに応じて、前記所定の領域に基づいて、前記複数の制御装置のうち、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１８］
前記プログラムにおいて、前記所定の領域に含まれる情報のうち、前記複数の制御装置の識別のために用いる情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記１９］
前記プログラムにおいて、前記所定の領域に含まれる少なくとも１の情報に基づいて、前記受信パケットに対応する処理を問合せる制御装置を決定するようにしてもよい。
［付記２０］
前記プログラムにおいて、前記受信パケットに含まれる所定の領域と、前記規則とを比較することで、前記記憶手段から前記受信パケットに対応する処理を検索し、
前記所定の領域に含まれる少なくとも１つの情報に対応する制御装置に、前記受信パケットに対応する処理を問合せるようにしてもよい。
【０１６６】
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【０１６７】
本書における用語「手段」は、各手段の機能を実現する機能ユニットないし動作ユニットであってハードウェア、ソフトウェアまたはこれらの組合せによって実装し得るユニットを指す。したがって、用語「手段」は、本明細書の全開示に亘って用語「ユニット」と表現してもよい。
【符号の説明】
【０１６８】
１    通信システム
１１    コントローラ
１２、３２    スイッチ
１２１、３２１    制御通信手段(ユニット)
１２２、２２２、３２２    フローテーブル管理手段（ユニット）
１２３    フロー識別手段（ユニット）
１２４    データ処理手段（ユニット）
１２５、２２５、３２５    フローテーブル
１２１１    処理問い合わせ手段（ユニット）
１２２１、２２２１    権限管理・判定手段（ユニット）
１２２２    エントリ付加情報記憶手段（ユニット）
１２２３    フローテーブル操作手段（ユニット）
３２１２    処理問い合わせ先振り分け手段（ユニット）
３２１３    コントローラフローテーブル
３２２４    処理問い合わせ先管理手段（ユニット）
１２２１１、２２２１１    エントリ操作権限管理・判定手段（ユニット）
１２２１２、２２２１２    フロー範囲判定手段（ユニット）
５      通信装置
５０    検索手段（ユニット）
５１    問い合わせ手段（ユニット）
５２    記憶手段（ユニット）
５１０  コントローラ識別テーブル
５２０  テーブル
６      通信装置
６０    検索手段（ユニット）
６１    問い合わせ手段（ユニット）
６２    記憶手段（ユニット）
６１０  コントローラ識別テーブル
６２０  テーブル
【図１】
2015508944.tif 000003
【図２】
2015508944.tif 000004
【図３】
2015508944.tif 000005
【図４】
2015508944.tif 000006
【図５】
2015508944.tif 000007
【図６】
2015508944.tif 000008
【図７】
2015508944.tif 000009
【図８】
2015508944.tif 000010
【図９】
2015508944.tif 000011
【図１０】
2015508944.tif 000012
【図１１】
2015508944.tif 000013
【図１２】
2015508944.tif 000014
【図１３】
2015508944.tif 000015
【図１４】
2015508944.tif 000016
【図１５】
2015508944.tif 000017
【図１６】
2015508944.tif 000018
【図１７】
2015508944.tif 000019
【図１８】
2015508944.tif 000020
【図１９】
2015508944.tif 000021
【図２０】
2015508944.tif 000022
【図２１】
2015508944.tif 000023
【図２２】
2015508944.tif 000024
【図２３】
2015508944.tif 000025
【図２４】
2015508944.tif 000026
【図２５】
2015508944.tif 000027
【図２６】
2015508944.tif 000028
【図２７】
2015508944.tif 000029
【図２８】
2015508944.tif 000030
【図２９】
2015508944.tif 000031
【図３０】
2015508944.tif 000032
【図３１】
2015508944.tif 000033
【国際調査報告】
2015508944.tif 000034