(57)【特許請求の範囲】
【請求項１】
パケットを転送する通信装置であって、
パケットの転送に用いられるフローエントリを複数の前記通信装置に送信可能な制御装置と、オープンフロープロトコルに基づいて通信可能な第１の手段と、
前記フローエントリと、前記通信装置により設定される転送ルールとに基づいて受信パケットを処理する第２の手段と、
を備え、
前記第１の手段は、
前記受信パケットに含まれる複数種類の情報に基づいて前記パケットを識別する識別ルールと、当該識別ルールに対応するパケットの処理ルールとを含む前記フローエントリを、前記制御装置に問い合わせることが可能であり、
前記問い合わせ結果である前記フローエントリを、前記制御装置から受信可能である
通信装置。
【請求項２】
前記第２の手段は、
前記受信パケットに対応する前記パケットの処理ルールに、前記転送ルールに基づいて当該パケットを処理する旨の指示が含まれている場合、当該転送ルールに基づいて当該受信パケットを処理する
ことを特徴とする請求項１の通信装置。
【請求項３】
前記受信パケットに対応する前記パケットの処理ルールの前記指示に「ＮＯＲＭＡＬ」が含まれる
ことを特徴とする請求項２の通信装置。
【請求項４】
パケットの転送に用いられるフローエントリを複数の前記通信装置に送信可能な制御装置と、オープンフロープロトコルに基づいて通信し、
前記フローエントリと、前記通信装置により設定される転送ルールとに基づいて受信パケットを処理し、
前記受信パケットに含まれる複数種類の情報に基づいて前記パケットを識別する識別ルールと、当該識別ルールに対応するパケットの処理ルールとを含む前記フローエントリを、前記制御装置に問い合わせ、
前記問い合わせ結果である前記フローエントリを、前記制御装置から受信する
ことを特徴とする通信方法。
【請求項５】
前記受信パケットに対応する前記パケットの処理ルールに、前記転送ルールに基づいて当該パケットを処理する旨の指示が含まれている場合、当該転送ルールに基づいて当該受信パケットを処理する
ことを特徴とする請求項４の通信方法。
【請求項６】
前記受信パケットに対応する前記パケットの処理ルールの前記指示に「ＮＯＲＭＡＬ」が含まれる場合、当該転送ルールに基づいて当該受信パケットを処理する
ことを特徴とする請求項５の通信方法。
【請求項７】
パケットを転送する通信装置であって、
パケットの転送に用いられるフローエントリを複数の前記通信装置に送信可能な制御装置と、オープンフロープロトコルに基づいて通信可能な第１の手段と、
前記フローエントリによるオープンフロー処理と、非オープンフロー処理とに基づいて受信パケットを処理する第２の手段と、
を備え、
前記第１の手段は、
前記受信パケットに含まれる複数種類の情報に基づいて前記パケットを識別する識別ルールと、当該識別ルールに対応するパケットの処理ルールとを含む前記フローエントリを、前記制御装置に問い合わせることが可能であり、
前記問い合わせ結果である前記フローエントリを、前記制御装置から受信可能である
通信装置。
【請求項８】
前記第２の手段は、
前記受信パケットに対応する前記パケットの処理ルールに、前記非オープンフロー処理に基づいて当該パケットを処理する旨の指示が含まれている場合、当該非オープンフロー処理に基づいて当該受信パケットを処理する
ことを特徴とする請求項７の通信装置。
【請求項９】
前記受信パケットに対応する前記パケットの処理ルールの前記指示に「ＮＯＲＭＡＬ」が含まれる
ことを特徴とする請求項８の通信装置。
【請求項１０】
パケットの転送に用いられるフローエントリを複数の前記通信装置に送信可能な制御装置と、オープンフロープロトコルに基づいて通信し、
前記フローエントリによるオープンフロー処理と、非オープンフロー処理とに基づいて受信パケットを処理し、
前記受信パケットに含まれる複数種類の情報に基づいて前記パケットを識別する識別ルールと、当該識別ルールに対応するパケットの処理ルールとを含む前記フローエントリを、前記制御装置に問い合わせ、
前記問い合わせ結果である前記フローエントリを、前記制御装置から受信する
ことを特徴とする通信方法。
【請求項１１】
前記受信パケットに対応する前記パケットの処理ルールに、前記非オープンフロー処理に基づいて当該パケットを処理する旨の指示が含まれている場合、当該非オープンフロー処理に基づいて当該受信パケットを処理する
ことを特徴とする請求項１０の通信方法。
【請求項１２】
前記受信パケットに対応する前記パケットの処理ルールの前記指示に「ＮＯＲＭＡＬ」が含まれる
ことを特徴とする請求項１１の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチシステムに関し、特に個々のスイッチが複数のテーブルを有するスイッチシステムに関する。
【背景技術】
【０００２】
ネットワークシステムにおける通信経路の制御については、近年、通信機器の制御プロトコルであるオープンフロー（ＯｐｅｎＦｌｏｗ）技術を使用した経路制御方式が研究されている。オープンフロー技術による経路制御が行われるネットワークを、オープンフローネットワークと呼ぶ。
【０００３】
オープンフローネットワークでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのオープンフローテーブル（ＯｐｅｎＦｌｏｗ  Ｔａｂｌｅ）を操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージを用いてスイッチを制御するためのセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。
【０００４】
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケットの受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。
【０００５】
オープンフローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の処理内容（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。
【０００６】
フローエントリのルールは、パケットの各プロトコル階層のヘッダー領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組合せにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。
【０００７】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダーを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダー情報が示されていれば、当該ヘッダー情報に基づいてパケットのヘッダを書き換える。
【０００８】
オープンフローネットワークにおけるスイッチは、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。
【０００９】
オープンフロースイッチの詳細については、非特許文献１、２に記載されている。
【００１０】
ネットワーク上の大量のフローを制御するには、大容量のオープンフローテーブルを有する必要がある。現状では、オープンフローテーブルに用いられるＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）はあまり大容量ではないため、必要十分な容量が確保できているとは言えない。また、オープンフローテーブルに使用されているスイッチのテーブル（主にＴＣＡＭ）の容量自体を増やすことは難しい。
【００１１】
上記の課題の解決方法の１つとして、外部ＴＣＡＭを使用するという方法があるが、これにはコストがかかる。また、１０Ｇ多ポート（データ伝送速度１０Ｇビット／秒に対応した複数のポートを有するネットワーク機器）のような高速転送の機器では、外部ＴＣＡＭの使用自体が不可という状況がある。少なくとも現状では、１０Ｇベースのスイッチで動作可能な外部ＴＣＡＭは存在しない。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】“Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  ０．９．０（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ９８）  Ｊｕｌｙ  ２０，  ２００９  Ｃｕｒｒｅｎｔ  Ｍａｉｎｔａｉｎｅｒ：  Ｂｒａｎｄｏｎ  Ｈｅｌｌｅｒ（ｂｒａｎｄｏｎｈ＠ｓｔａｎｆｏｒｄ．ｅｄｕ）”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ０．９．０．ｐｄｆ＞
【発明の概要】
【００１３】
本発明の目的は、既存のリソースであるスイッチの各テーブルを用いてオープンフローテーブルのエントリ数拡張を実現することにある。
【００１４】
本発明に係るスイッチシステムは、所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、オープンフローテーブルを参照して、受信パケットに対する処理内容を決定するオープンフロー機能部と、決定された処理内容に従って、受信パケットに対する処理を実行するアクション機能部とを具備する。
【００１５】
本発明に係るスイッチ制御方法は、オープンフロースイッチにおいて実施されるスイッチ制御方法であって、所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、オープンフローテーブルを参照して、受信パケットに対する処理内容を決定することと、決定された処理内容に従って、受信パケットに対する処理を実行することとを含む。
【００１６】
本発明に係るプログラムは、上記のスイッチ制御方法における処理を、スイッチとして使用される計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１７】
これにより、コントローラからスイッチ内部の複数のテーブルを、１つの大容量のオープンフローテーブルとして用いることを可能とする。
【図面の簡単な説明】
【００１８】
【図１】本発明に係るスイッチシステムの構成例を示す概念図である。
【図２】本発明の第１実施形態に係るオープンフロー機能部の詳細を示す概念図である。
【図３】本発明の第１実施形態に係るオープンフロー処理解決部の詳細を示す概念図である。
【図４】オープンフローテーブル制御の概要を示す図である。
【図５】オープンフローテーブル制御の第１方式の例の詳細を示す図である。
【図６】オープンフローテーブル制御の第２方式の例の詳細を示す図である。
【図７Ａ】パケット流入時のスイッチシステムの第１の動作例を示す図である。
【図７Ｂ】パケット流入時のスイッチシステムの第１の動作例を示す図である。
【図８Ａ】パケット流入時のスイッチシステムの第２の動作例を示す図である。
【図８Ｂ】パケット流入時のスイッチシステムの第２の動作例を示す図である。
【図９】オープンフローテーブル制御の第１方式の具体例を説明するための図である。
【図１０】オープンフローテーブル制御の第２方式の具体例を説明するための図である。
【図１１】本発明の第２実施形態に係るスイッチシステムの実施例１の詳細を示す概念図である。
【図１２】本発明の第２実施形態に係るスイッチシステムの実施例２の詳細を示す概念図である。
【図１３】本発明の第２実施形態に係るスイッチシステムの実施例３の詳細を示す概念図である。
【発明を実施するための形態】
【００１９】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２０】
［システム構成］
図１に示すように、本発明に係るスイッチシステムは、コントローラ１０１と、スイッチ１０２を含む。
【００２１】
コントローラ１０１は、オープンフロープロトコルに準拠した処理でスイッチ１０２を制御する。
【００２２】
［スイッチの構成］
スイッチ１０２は、プロトコル制御部１０３と、入力ポート１０４と、オープンフロー機能部１０５と、レガシー（Ｌｅｇａｃｙ）機能部１０８と、アクション（Ａｃｔｉｏｎ）機能部１１１と、出力ポート１１２を備える。
【００２３】
プロトコル制御部１０３は、コントローラ１０１がオープンフロープロトコルに準拠した処理でスイッチ１０２を制御するための通信を行う際に、コントローラ１０１とスイッチ１０２の間でプロトコル制御を行う。プロトコル制御部１０３は、スイッチ１０２の内部に限らず、スイッチ１０２の前段でも良い。
【００２４】
入力ポート１０４は、パケット入力用インタフェースである。入力ポート１０４は、オープンフロー有効ポートと、オープンフロー無効ポートを有する。オープンフロー有効ポートとは、オープンフロープロトコルに対応した入力ポートであり、オープンフロー無効ポートとは、オープンフロープロトコルに未対応の入力ポートである。
【００２５】
オープンフロー機能部１０５は、オープンフロー有効ポートから入力したパケットを処理する。
【００２６】
オープンフロー機能部１０５は、オープンフローテーブル管理部１０６と、オープンフロー処理解決部（ＯｐｅｎＦｌｏｗ  Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）１０７を備える。
【００２７】
オープンフローテーブル管理部１０６は、スイッチ１０２が使用するオープンフローテーブルを保持する。オープンフローテーブルには、オープンフロープロトコルに準拠したパケットに対するアクション（オープンフロー処理のアクション）が定義されている。
【００２８】
オープンフロー処理解決部１０７は、オープンフローテーブル管理部１０６の検索（Ｌｏｏｋｕｐ）結果を基に、オープンフロー処理のアクションを決定する。
【００２９】
レガシー機能部１０８は、オープンフロー無効ポートから入力したパケットを処理する。
【００３０】
レガシー機能部１０８は、レガシーテーブル（Ｌｅｇａｃｙ  Ｔａｂｌｅ）管理部１０９と、レガシー処理解決部（Ｌｅｇａｃｙ  Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）１１０を備える。
【００３１】
レガシーテーブル管理部１０９は、スイッチ１０２が使用するレガシーテーブルである。レガシーテーブル管理部１０９は、オープンフロープロトコルに準拠していないパケット（通常のパケット等）に対するアクション（レガシー処理のアクション）を定義している。
【００３２】
レガシー処理解決部１１０は、レガシーテーブル管理部１０９の検索結果を基に、該当するレガシー処理のアクションを決定する。レガシー処理については、通常のスイッチ機能を用いる。
【００３３】
アクション機能部１１１では、オープンフロー機能部１０５、もしくはレガシー機能部１０８で決定されたアクションを実行する。
【００３４】
出力ポート１１２は、パケット出力用インタフェースである。
【００３５】
［オープンフロー処理とレガシー処理の違い］
オープンフロー処理では、パケットの経路制御を外部のコントローラ経由で行う。コントローラは、ネットワーク全体を見て最適な経路を選択する。一方、レガシー処理では、通常のスイッチやルータで行われているように、自律分散で経路制御を行う。通常のスイッチやルータは、自身の近傍に関する情報からネットワーク状況を判断して最適経路を選択する。
【００３６】
オープンフロー処理では、最大１２種類の情報の組合せでパケット識別を行うことができる。一方、レガシー処理では、Ｌ２ネットワークであれば宛先ＭＡＣアドレス、Ｌ３ネットワークであれば宛先ＩＰアドレスというように、パケット識別に使用できる情報が少ない。このため、細かなフロー制御を行うことが難しい。例えば、レガシー処理では、同じ宛先ＩＰアドレスでも、送信元ＴＣＰポート番号が異なれば、別のフローと判断して別の経路を選択する。
【００３７】
［スイッチシステムの全体動作］
以下に、図１のスイッチシステムの全体動作について説明する。
【００３８】
［パケット入力］
スイッチ１０２に新規パケットが流入した際、スイッチ１０２は、入力ポート１０４で、このパケットを受け取る。
【００３９】
スイッチ１０２は、パケットを受け取った入力ポート１０４がオープンフロー有効ポートか否か確認する。例えば、スイッチ１０２は、スイッチ１０２自体又は入力ポート１０４の設定情報（ｃｏｎｆｉｇ）等を参照して、入力ポート１０４がオープンフロー有効ポートか否か確認する。
【００４０】
［パケット入力からオープンフロー処理への移行］
スイッチ１０２は、入力ポートがオープンフロー有効ポートであった場合、パケットを、入力ポート１０４からオープンフロー機能部１０５に渡す。
【００４１】
［オープンフロー処理］
オープンフロー機能部１０５は、渡されたパケットについて、スイッチ１０２の複数のテーブルを保持するオープンフローテーブル管理部１０６において検索処理を行う。
【００４２】
次に、オープンフロー機能部１０５は、オープンフロー処理解決部１０７において、検索結果、及び各テーブルの優先順位（Ｐｒｉｏｒｉｔｙ）からパケットのアクションを決定する。なお、優先順位は、優先度と読み替えても良い。
【００４３】
［オープンフロー処理からアクション実行への移行］
オープンフロー機能部１０５は、決定されたアクションが「Ｐａｃｋｅｔ−ＩＮ」（コントローラに対する該当パケットのアクション問い合わせ）であった場合（例えば、該当するフローエントリが存在せずアクションが決定できなかった場合）は、プロトコル制御部１０３を通じてコントローラ１０１に問い合わせ（該当パケットの転送等）を行う。最初は、レガシー処理の対象となるパケット以外の全てのパケットのアクションを、無条件で「Ｐａｃｋｅｔ−ＩＮ」としておいても良い。オープンフロー機能部１０５は、問い合わせに対する応答として、「Ｐａｃｋｅｔ−ＯＵＴ」（コントローラからのアクション問い合わせ結果）を受け取り、その内容を該当パケットのアクションとして決定し、オープンフローテーブル管理部１０６が保持するテーブルに登録する。以降、オープンフロー機能部１０５は、オープンフロー処理解決部１０７において、このパケットと同じルールに該当するパケットに対して、このアクションを決定することになる。
【００４４】
オープンフロー機能部１０５は、決定されたアクションに基づいて、該当パケットをアクション機能部１１１に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部１０５からアクション機能部１１１に移行する。
【００４５】
［オープンフロー処理からレガシー処理への移行］
オープンフロー機能部１０５は、決定されたアクションが「ＮＯＲＭＡＬ」（レガシー機能部１０８を用いたパケット処理）であった場合は、該当パケットをレガシー機能部１０８に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部１０５からレガシー機能部１０８に移行する。
【００４６】
［パケット入力からレガシー処理への移行］
また、スイッチ１０２は、入力ポート１０４がオープンフロー無効ポートであった場合、もしくは当該パケットに対して先に（以前に）オープンフロー機能部１０５で決定されたアクションが「ＮＯＲＭＡＬ」であった場合、パケットを、入力ポート１０４からレガシー機能部１０８に渡す。すなわち、該当パケットの処理の主体が、入力ポート１０４からレガシー機能部１０８に移行する。
【００４７】
［レガシー処理］
レガシー機能部１０８は、渡されたパケットについて、スイッチ１０２の複数のテーブルから構成されるレガシーテーブル管理部１０９において検索処理を行う。
【００４８】
［レガシー処理からアクション実行への移行］
次に、レガシー機能部１０８は、レガシー処理解決部１１０において、検索結果、及び各テーブルの優先順位（Ｐｒｉｏｒｉｔｙ）からパケットのアクションを決定する。すなわち、該当パケットの処理の主体が、レガシー機能部１０８からアクション機能部１１１に移行する。
【００４９】
なお、レガシー機能部１０８〜レガシー処理解決部１１０でのレガシー処理については、通常のスイッチ機能を用いるため、本発明では詳細に触れない。
【００５０】
［アクション実行］
アクション機能部１１１は、該当パケットに対して、オープンフロー機能部１０５、もしくはレガシー機能部１０８で決定されたアクションを実行する。
【００５１】
オープンフロー機能部１０５で決定されたアクションの例として、ヘッダー（Ｈｅａｄｅｒ）情報の書き換え、指定された出力ポートからのパケット出力、パケット破棄等が考えられる。レガシー機能部１０８で決定されたアクションの例として、ルーティング（ｒｏｕｔｉｎｇ）等によるパケット転送等が考えられる。但し、実際には、これらの例に限定されない。
【００５２】
最後に、アクション機能部１１１は、実行されるアクションに「パケット出力」が含まれている場合は、その内容に従って、適切な出力ポート１１２から該当パケットを出力する。
【００５３】
［コントローラによるオープンフローテーブルの制御］
なお、コントローラ１０１は、プロトコル制御部１０３を通じて、スイッチ１０２のオープンフローテーブル管理部１０６の制御を行うことが可能である。ここで、「オープンフローテーブル管理部１０６の制御」とは、オープンフローテーブルに対するフローエントリの登録／変更／削除／一括削除等である。
【００５４】
オープンフローテーブル管理部１０６がオープンフローテーブルとして保持するスイッチ１０２の各テーブルは、必ずしもオープンフロー仕様（ＯｐｅｎＦｌｏｗ  Ｓｐｅｃ）で規定されている全ての操作に対応している訳ではない。
【００５５】
このため、コントローラ１０１は、オープンフローテーブル管理部１０６がオープンフローテーブルとして保持する各テーブルで実現可能な機能（設定可能なアクション）を踏まえて制御を行う必要がある。
【００５６】
［オープンフロー機能部の詳細］
図２は、本発明のオープンフロー機能部１０５の詳細について説明するための図である。
【００５７】
オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、アクション機能部１１１は、図１に表されている機構・機能と同一のものである。
【００５８】
オープンフロー機能部１０５は、オープンフローテーブル管理部１０６と、オープンフロー処理解決部１０７を備える。
【００５９】
オープンフローテーブル管理部１０６は、テーブル群１１３と、検索（Ｌｏｏｋｕｐ）機能部１１４を備える。
【００６０】
テーブル群１１３は、オープンフローテーブルを構成するテーブル群である。
【００６１】
検索機能部１１４は、テーブル群１１３を用いて入力パケットの検索を行う。
【００６２】
検索機能部１１４は、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５と、ＴＣＡＭ（ＯＦ）検索機能部１１６を備える。
【００６３】
なお、「ＯＦ」とは、「ＯｐｅｎＦｌｏｗ」の略語である。
【００６４】
Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、入力パケットについて、Ｌ２テーブル（ＯＦ）、Ｌ３テーブル（ＯＦ）、及びその他テーブル（ＯＦ）を参照し、該当するエントリがないか検索する。その他テーブル（ＯＦ）の一例として、マルチキャストルーティングテーブル等が挙げられる。すなわち、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、入力パケットについて、プロトコル単位でテーブルの検索を実行する。
【００６５】
ＴＣＡＭ（ＯＦ）検索機能部１１６は、入力パケットについて、ＴＣＡＭ（ＯＦ）を参照し、該当するエントリがないか検索する。すなわち、ＴＣＡＭ（ＯＦ）検索機能部１１６は、入力パケットについて、ＴＣＡＭの検索を実行する。
【００６６】
［オープンフロー機能部の動作］
以下に、図２のオープンフロー機能部１０５の動作について説明する。
【００６７】
入力ポート１０４は、オープンフロー有効ポートから入力されたパケットを、オープンフロー機能部１０５に渡す。
【００６８】
オープンフロー機能部１０５は、渡されたパケットについて、スイッチ１０２の複数のテーブルから構成されるオープンフローテーブル管理部１０６において検索処理を行う。
【００６９】
このとき、オープンフローテーブル管理部１０６の検索機能部１１４は、オープンフローテーブルを構成するテーブル群１１３に登録されたエントリ情報に基づいて検索を行う。
【００７０】
具体的には、検索機能部１１４において、まず、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５が検索を行い、次いで、ＴＣＡＭ（ＯＦ）検索機能部１１６が検索を行う。
【００７１】
検索機能部１１４は、この検索結果を、オープンフロー処理解決部１０７に渡す。
【００７２】
オープンフロー処理解決部１０７は、検索結果、及び各テーブルの優先順位（Ｐｒｉｏｒｉｔｙ）からパケットのアクションを決定する。
【００７３】
［ハードウェアの例示］
以下に、本発明に係るスイッチシステムを実現するための具体的なハードウェアの例について説明する。
【００７４】
コントローラ１０１の例として、ＰＣ（パソコン）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、コントローラ１０１は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００７５】
スイッチ１０２の例として、Ｌ３スイッチ（ｌａｙｅｒ  ３  ｓｗｉｔｃｈ）、Ｌ４ス
イッチ（ｌａｙｅｒ  ４  ｓｗｉｔｃｈ）、Ｌ７スイッチ／アプリケーションスイッチ（
ｌａｙｅｒ  ７  ｓｗｉｔｃｈ）、或いは、マルチレイヤスイッチ（ｍｕｌｔｉ−ｌａｙ
ｅｒ  ｓｗｉｔｃｈ）等のネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）を想定している。他にも、スイッチ１０２の例として、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置／セキュリティ監視制御装置（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。
【００７６】
プロトコル制御部１０３、オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、レガシー機能部１０８、レガシーテーブル管理部１０９、レガシー処理解決部１１０、及びアクション機能部１１１は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリとによって実現される。
【００７７】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００７８】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００７９】
また、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、電子機器等に搭載される１チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
【００８０】
或いは、プロトコル制御部１０３、オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、レガシー機能部１０８、レガシーテーブル管理部１０９、レガシー処理解決部１１０、及びアクション機能部１１１は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ）でも良い。
【００８１】
入力ポート１０４及び出力ポート１１２の例として、ネットワーク通信に対応した基板（マザーボードやＩ／Ｏボード）等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００８２】
また、入力ポート１０４及び出力ポート１１２が利用するネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００８３】
なお、プロトコル制御部１０３、オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、レガシー機能部１０８、レガシーテーブル管理部１０９、レガシー処理解決部１１０、及びアクション機能部１１１の各々は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００８４】
但し、実際には、これらの例に限定されない。
【００８５】
［オープンフロー処理解決部の詳細］
図３は、本発明のオープンフロー処理解決部１０７の詳細について説明するための図である。
【００８６】
オープンフロー処理解決部１０７、ＴＣＡＭ（ＯＦ）検索機能部１１６は、図２に表されている機構・機能と同一のものである。
【００８７】
オープンフロー処理解決部１０７は、ＴＣＡＭ（ＯＦ）のエントリマッピングを調整することにより、ＴＣＡＭ（ＯＦ）検索機能部１１６の一部として実現される。
【００８８】
このため、実質的には、オープンフロー処理解決部１０７と、ＴＣＡＭ（ＯＦ）検索機能部１１６は、１つの機能ブロック（ＴＣＡＭ（ＯＦ）  Ｌｏｏｋｕｐ  ＆  ＯｐｅｎＦｌｏｗ  Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）となる。この機能ブロックは、テーブル間優先順位１１７と、ＴＣＡＭ（ＯＦ）内部のエントリ１１８を有する。
【００８９】
テーブル間優先順位１１７は、期待するアクション優先順位（Ｐｒｉｏｒｉｔｙ）を示す。ＴＣＡＭ（ＯＦ）内部のエントリ１１８は、優先順位（Ｐｒｉｏｒｉｔｙ）に対応するＴＣＡＭ（ＯＦ）内のエントリマッピングを示す。
【００９０】
ＴＣＡＭ（ＯＦ）内部のエントリ１１８は、ＴＣＡＭ（ＯＦ）検索用エントリ群１１９と、Ｌ２テーブル（ＯＦ）検索結果参照用エントリ１２０と、Ｌ３テーブル（ＯＦ）検索結果参照用エントリ１２１と、その他テーブル（ＯＦ）検索結果参照用エントリ１２２と、Ｍｉｓｓ−ｈｉｔ用エントリ１２３を含む。
【００９１】
ＴＣＡＭ（ＯＦ）検索用エントリ群１１９は、ＴＣＡＭ（ＯＦ）検索機能部１１６におけるＴＣＡＭ（ＯＦ）検索を実現するためのエントリの集合である。Ｌ２テーブル（ＯＦ）検索結果参照用エントリ１２０は、Ｌ２テーブル（ＯＦ）の検索結果を参照するためのエントリである。Ｌ３テーブル（ＯＦ）検索結果参照用エントリ１２１は、Ｌ３テーブル（ＯＦ）の検索結果を参照するためのエントリである。その他テーブル（ＯＦ）検索結果参照用エントリ１２２は、その他テーブル（ＯＦ）の検索結果を参照するためのエントリである。Ｍｉｓｓ−ｈｉｔ用エントリ１２３は、いずれのエントリにもヒット（ｈｉｔ）しなかったパケットを「Ｍｉｓｓ−ｈｉｔ（ヒットせず）」として取り扱うためのエントリである。すなわち、これらは上記のそれぞれのアクションを定義したエントリである。
【００９２】
［オープンフロー処理解決部の動作］
以下に、図３のオープンフロー処理解決部１０７の動作について説明する。
【００９３】
オープンフローテーブル内の検索順序として、最後に、ＴＣＡＭ（ＯＦ）検索機能部１１６が検索を行う。なお、ＴＣＡＭ（ＯＦ）検索機能部１１６での検索の際に、Ｌ２／Ｌ３／その他テーブルの検索結果を参照することが可能なスイッチでは、ＴＣＡＭ（ＯＦ）のエントリマッピングを調整することにより、オープンフロー処理解決部１０７を実現することが可能である。
【００９４】
例えば、テーブル間優先順位１１７のような期待するテーブルごとのアクション優先順位（Ｐｒｉｏｒｉｔｙ）を、ＴＣＡＭ（ＯＦ）内部のエントリ１１８のようにマッピングすることにより対応することができる。
【００９５】
図３の例の場合は、アクション優先順位（Ｐｒｉｏｒｉｔｙ）１１７は、優先順位（Ｐｒｉｏｒｉｔｙ）の高い順から、「全部対応（ＴＣＡＭ（ＯＦ）相当）」→「Ｌ２対応（Ｌ２テーブル（ＯＦ）相当）」→「Ｌ３対応（Ｌ３テーブル（ＯＦ）相当）」→「その他対応（その他テーブル相当）」となっている。
【００９６】
オープンフロー処理解決部１０７は、これをＴＣＡＭ（ＯＦ）内のエントリマッピングとして、ＴＣＡＭ（ＯＦ）の検索優先順位（Ｐｒｉｏｒｉｔｙ）の高い順から、「ＴＣＡＭ（ＯＦ）検索機能実現用エントリ群１１９」→「Ｌ２テーブル（ＯＦ）検索結果参照用エントリ１２０」→「Ｌ３テーブル（ＯＦ）検索結果参照用エントリ１２１」→「その他テーブル（ＯＦ）検索結果参照用エントリ１２２」→「Ｍｉｓｓ−ｈｉｔ用エントリ１２３」の順に並べれば良い。
【００９７】
［ＴＣＡＭ（ＯＦ）検索機能実現用エントリ群］
ＴＣＡＭ（ＯＦ）検索機能実現用エントリ群１１９は、検索機能のＴＣＡＭ（ＯＦ）検索機能部１１６を実現するためのエントリ群である。オープンフロー処理解決部１０７は、入力パケットがＴＣＡＭ（ＯＦ）検索機能実現用エントリ群１１９のいずれかにヒットした場合、そのエントリのアクションを、当該パケットに対するアクションとして選択する。
【００９８】
［Ｌ２テーブル（ＯＦ）検索結果参照用エントリ］
Ｌ２テーブル（ＯＦ）検索結果参照用エントリ１２０は、事前に行われたＬ２テーブル（ＯＦ）の検索の結果を踏まえ、入力パケットに対応するエントリがＬ２テーブル（ＯＦ）上に存在した場合にヒットするエントリである。
【００９９】
例えば、Ｌ２テーブル（ＯＦ）検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「Ｘ＝１」となり、ＴＣＡＭ（ＯＦ）上のＬ２テーブル（ＯＦ）検索結果参照用エントリ１２０では、このフラグ「Ｘ＝１」の場合に同エントリがヒットする。
【０１００】
オープンフロー処理解決部１０７は、Ｌ２テーブル（ＯＦ）検索結果参照用エントリ１２０がヒットした場合、Ｌ２テーブル（ＯＦ）の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【０１０１】
［Ｌ３テーブル（ＯＦ）検索結果参照用エントリ］
Ｌ３テーブル（ＯＦ）検索結果参照用エントリ１２１は、事前に行われたＬ３テーブル（ＯＦ）の検索の結果を踏まえ、入力パケットに対応するエントリがＬ３テーブル（ＯＦ）上に存在した場合にヒットするエントリである。
【０１０２】
例えば、Ｌ３テーブル（ＯＦ）検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「Ｙ＝１」となり、ＴＣＡＭ（ＯＦ）上のＬ３テーブル（ＯＦ）検索結果参照用エントリ１２１では、このフラグ「Ｙ＝１」の場合に同エントリがヒットする。
【０１０３】
オープンフロー処理解決部１０７は、Ｌ３テーブル（ＯＦ）検索結果参照用エントリ１２１がヒットした場合、Ｌ３テーブル（ＯＦ）の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【０１０４】
［その他テーブル（ＯＦ）検索結果参照用エントリ］
その他テーブル（ＯＦ）検索結果参照用エントリ１２２は、事前に行われたその他テーブル（ＯＦ）の検索の結果を踏まえ、入力パケットに対応するエントリがその他テーブル（ＯＦ）上に存在した場合にヒットするエントリである。
【０１０５】
例えば、その他テーブル（ＯＦ）検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「Ｚ＝１」となり、ＴＣＡＭ（ＯＦ）上のその他テーブル（ＯＦ）検索結果参照用エントリ１２２では、このフラグ「Ｚ＝１」の場合に同エントリがヒットする。
【０１０６】
オープンフロー処理解決部１０７は、その他テーブル（ＯＦ）検索結果参照用エントリ１２２がヒットした場合、その他テーブル（ＯＦ）の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【０１０７】
［Ｍｉｓｓ−ｈｉｔ用エントリ］
Ｍｉｓｓ−ｈｉｔ用エントリ１２３は、ＴＣＡＭ（ＯＦ）のいずれのエントリにも入力パケットがヒットしなかった場合にヒットするエントリである。
【０１０８】
ここでは、Ｍｉｓｓ−ｈｉｔ用エントリ１２３は、全てのパターンのパケットがヒットするエントリである。オープンフロー処理解決部１０７は、入力パケットがＴＣＡＭ（ＯＦ）のいずれのエントリにもヒットせず、Ｍｉｓｓ−ｈｉｔ用エントリ１２３にのみヒットした場合、オープンフローの設定に応じて、「Ｐａｃｋｅｔ−ＩＮ」（コントローラに対する該当パケットのアクション問い合わせ）、もしくは「ＮＯＲＭＡＬ」（レガシー機能部を用いたパケット処理）を、当該パケットに対するアクションとして選択する。
【０１０９】
なお、各テーブルのアクション優先順位（Ｐｒｉｏｒｉｔｙ）を変えたい場合は、ＴＣＡＭ（ＯＦ）内の該当エントリの順番を入れ替えれば良い。
【０１１０】
［オープンフローテーブル制御の概要］
図４は、本発明におけるコントローラからのオープンフローテーブル制御の概要図である。コントローラ１０１、スイッチ１０２、プロトコル制御部１０３、テーブル群１１３は、図１、図２に表されている機構・機能と同一のものである。
【０１１１】
スイッチ１０２は、ＴＣＡＭ１２４と、Ｌ２テーブル１２５と、Ｌ３テーブル１２６と、その他テーブル１２７を含む。
【０１１２】
ＴＣＡＭ１２４は、ＴＣＡＭ（ＯＦ）と、ＴＣＡＭ（Ｌｅｇａｃｙ）を含む。Ｌ２テーブル１２５は、Ｌ２テーブル（ＯＦ）と、Ｌ２テーブル（Ｌｅｇａｃｙ）を含む。Ｌ３テーブル１２６は、Ｌ３テーブル（ＯＦ）と、Ｌ３テーブル（Ｌｅｇａｃｙ）を含む。その他テーブル１２７は、その他テーブル（ＯＦ）と、その他テーブル（Ｌｅｇａｃｙ）を含む。
【０１１３】
ＴＣＡＭ（ＯＦ）、Ｌ２テーブル（ＯＦ）、Ｌ３テーブル（ＯＦ）、その他テーブル（ＯＦ）は、オープンフローテーブルを構成する。
【０１１４】
ＴＣＡＭ（Ｌｅｇａｃｙ）、Ｌ２テーブル（Ｌｅｇａｃｙ）、Ｌ３テーブル（Ｌｅｇａｃｙ）、その他テーブル（Ｌｅｇａｃｙ）は、レガシーテーブルを構成する。
【０１１５】
スイッチ１０２上のＴＣＡＭ１２４、Ｌ２テーブル１２５、Ｌ３テーブル１２６、及びその他テーブル１２７は、通常の場合、物理的には１つのテーブルである。
【０１１６】
本発明におけるスイッチ１０２では、この物理的に１つのテーブル（ＴＣＡＭ１２４、Ｌ２テーブル１２５、Ｌ３テーブル１２６、及びその他テーブル１２７）を、オープンフローテーブルを構成するテーブル群１１３と、レガシーテーブルを構成するテーブル群１２８に論理的に分ける機能を有する。すなわち、スイッチ１０２は、物理的に１つのテーブル（ＴＣＡＭ１２４、Ｌ２テーブル１２５、Ｌ３テーブル１２６、及びその他テーブル１２７）を、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブル（テーブル群１１３）とレガシーテーブル（テーブル群１２８）を構築する。
【０１１７】
オープンフローテーブルを構成するテーブル群１１３は、ＴＣＡＭ（ＯＦ）、Ｌ２テーブル（ＯＦ）、Ｌ３テーブル（ＯＦ）、その他テーブル（ＯＦ）を含む。
【０１１８】
レガシーテーブルを構成するテーブル群１２８は、ＴＣＡＭ（Ｌｅｇａｃｙ）、Ｌ２テーブル（Ｌｅｇａｃｙ）、Ｌ３テーブル（Ｌｅｇａｃｙ）、その他テーブル（Ｌｅｇａｃｙ）を含む。
【０１１９】
［オープンフローテーブル制御の概要］
以下に、図４のコントローラからのオープンフローテーブル制御の概要について説明する。
【０１２０】
コントローラ１０１は、プロトコル制御部１０３を通じて、スイッチ１０２のオープンフローテーブルの制御を行うことが可能である。
【０１２１】
スイッチ上のＴＣＡＭ１２４、Ｌ２テーブル１２５、Ｌ３テーブル１２６、その他テーブル１２７は、通常の場合、物理的には各々１つのテーブルである。
【０１２２】
本発明におけるスイッチでは、これらのテーブルのリソースの一部をオープンフロー用に切り出して使用し、オープンフローテーブルを構成するテーブル群１１３とレガシーテーブルを構成するテーブル群１２８を論理的に構築する機能を有する。すなわち、スイッチ１０２は、ＴＣＡＭ１２４、Ｌ２テーブル１２５、Ｌ３テーブル１２６、及びその他テーブル１２７を基に、論理的なオープンフローテーブル（テーブル群１１３）とレガシーテーブル（テーブル群１２８）を構築する。
【０１２３】
オープンフローテーブルを構成する各テーブルは、それぞれ実現できるオープンフロー機能が異なる。
【０１２４】
このため、コントローラ１０１は、「１：各テーブルで実現可能なオープンフロー機能はどのようなものか」、「２：制御するエントリはオープンフローテーブルを構成するどのテーブルのものか」を踏まえた上でオープンフローテーブル制御を行う必要がある。
【０１２５】
「１」については、「コントローラ側：予め各テーブルで実現可能な機能を入力（Ｉｎｐｕｔ）しておいて、それ以外の制御を行おうとした場合にエラーを返す機構を持たせる」、「スイッチ側：コントローラからの制御命令について、対象となるテーブルが制御に対応する機能を有していない場合にエラーを返す機構を持たせる」といった対応がある。
【０１２６】
「２」については、「オープンフローテーブルにおける優先順位（Ｐｒｉｏｒｉｔｙ）（０−６４ｋ）の一定範囲ずつを各テーブルに割り当て、コントローラから制御を行う際はこの優先順位（Ｐｒｉｏｒｉｔｙ）の範囲を基に、使用するテーブルを判別する」、「オープンフローテーブルを構成する各テーブルにＩＤを持たせ、コントローラから制御を行う際はこのＩＤを基に、使用するテーブルを判別する」といった対応がある。
【０１２７】
［オープンフローテーブル制御の詳細（１）］
図５は、本発明におけるコントローラからのオープンフローテーブル制御の第１方式の例の詳細について説明するための図である。ここでは、優先順位（Ｐｒｉｏｒｉｔｙ）範囲でテーブル指定する場合について説明する。
【０１２８】
コントローラ１０１、スイッチ１０２、オープンフローテーブル管理部１０６、テーブル群１１３は、図１、図２に表されている機構・機能と同一のものである。
【０１２９】
オープンフロー機能部１０５のオープンフローテーブル管理部１０６は、オープンフローテーブルを構成するテーブル群１１３の各々のテーブルに、優先順位（Ｐｒｉｏｒｉｔｙ）範囲を割り当てる。
【０１３０】
優先順位（Ｐｒｉｏｒｉｔｙ）範囲でテーブル指定する場合、各々のテーブルの優先順位（Ｐｒｉｏｒｉｔｙ）範囲は重複してはならない。また、優先順位（Ｐｒｉｏｒｉｔｙ）範囲の合計は、オープンフローで規定されている優先順位（Ｐｒｉｏｒｉｔｙ）範囲を越えてはならない。
【０１３１】
コントローラ１０１は、各テーブルに割り当てられた優先順位（Ｐｒｉｏｒｉｔｙ）範囲内の値でテーブルを指定する。
【０１３２】
オープンフロー機能部１０５のオープンフローテーブル管理部１０６は、コントローラ１０１から指定された優先順位（Ｐｒｉｏｒｉｔｙ）範囲内の値を基に、使用するテーブルを判別する。
【０１３３】
［オープンフローテーブル制御の詳細（２）］
図６は、本発明におけるコントローラからのオープンフローテーブル制御の第２方式の例の詳細について説明するための図である。ここでは、テーブルＩＤでテーブル指定する場合について説明する。
【０１３４】
コントローラ１０１、スイッチ１０２、オープンフローテーブル管理部１０６、テーブル群１１３は、図１、図２に表されている機構・機能と同一のものである。
【０１３５】
オープンフロー機能部１０５のオープンフローテーブル管理部１０６は、オープンフローテーブルを構成するテーブル群１１３に、各々テーブルＩＤ１２９を割り当てる。
【０１３６】
テーブルＩＤでテーブル指定する場合、各々のテーブルＩＤは重複してはならない。一方、各テーブルで規定される優先順位（Ｐｒｉｏｒｉｔｙ）範囲は、重複しても問題ない。各テーブルはテーブルＩＤ１２９により別のテーブルとして識別され、各々のテーブルの優先順位（Ｐｒｉｏｒｉｔｙ）はオープンフロー処理解決部１０７により決定されるためである。
【０１３７】
コントローラ１０１は、各テーブルに割り当てられたテーブルＩＤ１２９でテーブルを指定する。
【０１３８】
オープンフロー機能部１０５のオープンフローテーブル管理部１０６は、コントローラ１０１から指定されたテーブルＩＤ１２９を基に、使用するテーブルを判別する。
【０１３９】
［パケット流入時の処理の動作例（１）］
図７Ａ、図７Ｂは、本発明におけるパケット流入時のスイッチシステムの第１の動作例である。である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップＳ１０１〜ステップＳ１０７は、パケット流入からの一連の動作の流れを示す。
【０１４０】
（１）ステップＳ１０１
コントローラ１０１は、予めスイッチ１０２に対して、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＡＡ、Ａｃｔｉｏｎ：Ｄｒｏｐ｝というＴＣＡＭ（ＯＦ）エントリー（１）の登録を行う。スイッチ１０２は、テーブル群１１３のＴＣＡＭ（ＯＦ）に、ＴＣＡＭ（ＯＦ）エントリー（１）の登録を行う。
【０１４１】
なお、「Ｍａｔｃｈ条件」は、Ｌ１〜Ｌ４までの任意のヘッダー情報の組合せにより定義される。また、「Ａｃｔｉｏｎ」は、Ｍａｔｃｈ条件に適合したパケットに対する中継／破棄、ヘッダー情報の書き換え等のアクションを定義したものである。
【０１４２】
（２）ステップＳ１０２
コントローラ１０１は、予めスイッチ１０２に対して、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＡＡ、Ａｃｔｉｏｎ：Ｐｏｒｔ１から出力｝というＬ３テーブル（ＯＦ）エントリー（１）と、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＢＢ、Ａｃｔｉｏｎ：Ｐｏｒｔ２から出力｝というＬ３テーブル（ＯＦ）エントリー（２）の登録を行う。スイッチ１０２は、テーブル群１１３のＬ３テーブル（ＯＦ）に、Ｌ３テーブル（ＯＦ）エントリ（１）及びＬ３テーブル（ＯＦ）エントリー（２）を登録する。
【０１４３】
（３）ステップＳ１０３
入力ポート１０４は、パケット流入時に、オープンフロー有効ポートに対して宛先ＩＰ＝ＡＡのパケットが流入した場合、オープンフロー機能部１０５に送信する。
【０１４４】
（４）ステップＳ１０４
オープンフロー機能部１０５は、オープンフロー有効ポートに対して宛先ＩＰ＝ＡＡのパケットが流入した場合、当該パケットを処理する。
【０１４５】
（５）ステップＳ１０５
まず、オープンフロー機能部１０５において、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、流入したパケットについて、Ｌ２／Ｌ３／その他テーブル（ＯＦ）での検索を行う。この検索において、当該パケットは、Ｌ３テーブル（ＯＦ）エントリー（１）にヒットする。
【０１４６】
（６）ステップＳ１０６
Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、この検索結果を、オープンフロー処理解決部１０７に通知する。図７Ｂでは、オープンフロー処理解決部１０７と、ＴＣＡＭ（ＯＦ）検索機能部１１６は、１つの機能ブロック（ＴＣＡＭ（ＯＦ）  Ｌｏｏｋｕｐ  ＆  ＯｐｅｎＦｌｏｗ  Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）として示す。
【０１４７】
（７）ステップＳ１０７
ＴＣＡＭ（ＯＦ）検索機能部１１６は、流入したパケットについて、ＴＣＡＭ（ＯＦ）での検索を行う。この検索において、当該パケットは、ＴＣＡＭ（ＯＦ）エントリー（１）が最初にヒットする。この時点でＴＣＡＭ（ＯＦ）の検索処置は終了する。ＴＣＡＭ（ＯＦ）検索機能部１１６は、この検索結果を、オープンフロー処理解決部１０７に通知する。
【０１４８】
（８）ステップＳ１０８
オープンフロー処理解決部１０７は、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５とＴＣＡＭ（ＯＦ）検索機能部１１６の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、ＴＣＡＭ（ＯＦ）の優先順位が一番高い。そのため、オープンフロー処理解決部１０７は、ＴＣＡＭ（ＯＦ）エントリー（１）のアクション（Ｄｒｏｐ）を、流入したパケットに対するアクションとして決定し、決定したアクション（Ｄｒｏｐ）を、アクション機能部１１１に通知する。
【０１４９】
（９）ステップＳ１０９
アクション機能部１１１は、オープンフロー処理解決部１０７で決定されたアクション（Ｄｒｏｐ）を実行する。ここでは、アクション機能部１１１は、アクションが「Ｄｒｏｐ」であるため、パケットの出力を行わない。アクション機能部１１１は、流入したパケット及びこれと同一フローに属する以降のパケットを破棄する。
【０１５０】
［パケット流入時の処理の動作例（２）］
図８Ａ、図８Ｂは、本発明におけるパケット流入時のスイッチシステムの第２の動作例である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップＳ２０１〜ステップＳ２１０は、パケット流入からの一連の動作の流れを示す。
【０１５１】
（１）ステップＳ２０１
コントローラ１０１は、予めスイッチ１０２に対して、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＡＡ、Ａｃｔｉｏｎ：Ｄｒｏｐ｝というＴＣＡＭ（ＯＦ）エントリー（１）の登録を行う。スイッチ１０２は、テーブル群１１３のＴＣＡＭ（ＯＦ）に、ＴＣＡＭ（ＯＦ）エントリー（１）の登録を行う。
【０１５２】
（２）ステップＳ２０２
コントローラ１０１は、予めスイッチ１０２に対して、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＡＡ、Ａｃｔｉｏｎ：Ｐｏｒｔ１から出力｝というＬ３テーブル（ＯＦ）エントリー（１）と、｛Ｍａｔｃｈ条件：宛先ＩＰ＝ＢＢ、Ａｃｔｉｏｎ：Ｐｏｒｔ２から出力｝というＬ３テーブル（ＯＦ）エントリー（２）の登録を行う。スイッチ１０２は、テーブル群１１３のＬ３テーブル（ＯＦ）に、Ｌ３テーブル（ＯＦ）エントリ（１）及びＬ３テーブル（ＯＦ）エントリー（２）を登録する。
【０１５３】
（３）ステップＳ２０３
入力ポート１０４は、パケット流入時に、オープンフロー有効ポートに対して宛先ＩＰ＝ＢＢのパケットが流入した場合、オープンフロー機能部１０５に送信する。
【０１５４】
（４）ステップＳ２０４
オープンフロー機能部１０５は、オープンフロー有効ポートに対して宛先ＩＰ＝ＢＢのパケットが流入した場合、当該パケットを処理する。
【０１５５】
（５）ステップＳ２０５
まず、オープンフロー機能部１０５において、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、当該パケットについて、Ｌ２／Ｌ３／その他テーブル（ＯＦ）での検索を行う。この検索において、当該パケットは、Ｌ３テーブル（ＯＦ）エントリー（２）にヒットする。
【０１５６】
（６）ステップＳ２０６
Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、この検索結果を、オープンフロー処理解決部１０７に通知する。図８Ｂでは、オープンフロー処理解決部１０７と、ＴＣＡＭ（ＯＦ）検索機能部１１６は、１つの機能ブロック（ＴＣＡＭ（ＯＦ）  Ｌｏｏｋｕｐ  ＆  ＯｐｅｎＦｌｏｗ  Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）として示す。
【０１５７】
（７）ステップＳ２０７
ＴＣＡＭ（ＯＦ）検索機能部１１６は、流入したパケットについて、ＴＣＡＭ（ＯＦ）での検索を行う。しかし、流入したパケットは、宛先ＩＰ＝ＢＢのパケットであるため、ＴＣＡＭ（ＯＦ）にはヒットするエントリがない。この時点でＴＣＡＭ（ＯＦ）の検索処置は終了する。ＴＣＡＭ（ＯＦ）検索機能部１１６は、この検索結果を、オープンフロー処理解決部１０７に通知する。この時点でＴＣＡＭ（ＯＦ）の検索処置は終了する。ＴＣＡＭ（ＯＦ）検索機能部１１６は、この検索結果を、オープンフロー処理解決部１０７に通知する。
【０１５８】
（８）ステップＳ２０８
オープンフロー処理解決部１０７は、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５とＴＣＡＭ（ＯＦ）検索機能部１１６の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、対象となるエントリがＬ３テーブル（ＯＦ）エントリー（２）しか存在しない。そのため、オープンフロー処理解決部１０７は、Ｌ３テーブル（ＯＦ）エントリー（２）のアクション（Ｐｏｒｔ２から出力）を、流入したパケットに対するアクションとして決定し、決定したアクション（Ｐｏｒｔ２から出力）を、アクション機能部１１１に通知する。
【０１５９】
（９）ステップＳ２０９
アクション機能部１１１は、オープンフロー処理解決部１０７で決定されたアクション（Ｐｏｒｔ２から出力）を実行する。
【０１６０】
（１０）ステップＳ２１０
アクション機能部１１１は、アクション機能部１１１は、流入したパケット及びこれと同一フローに属する以降のパケットを、Ｐｏｒｔ２を持つ出力ポート１１２に出力する。
【０１６１】
（１１）ステップＳ２１１
出力ポート１１２は、アクション機能部１１１から出力されたパケットを、Ｐｏｒｔ２から出力する。
【０１６２】
（１２）ステップＳ２１２
Ｐｏｒｔ２から出力されたパケットは、ネットワーク上に流出し、宛先ＩＰ＝ＢＢに向けて伝送される。
【０１６３】
なお、図８Ａ、図８Ｂにおいて、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、ヒットした全てのエントリを検索結果としてオープンフロー処理解決部１０７に通知する。オープンフロー処理解決部１０７は、優先順位が一番高いＴＣＡＭ（ＯＦ）にヒットするエントリが存在しない場合、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５の検索結果の中で優先順位が一番高いテーブルにヒットするエントリを採用する。
【０１６４】
また、図８Ａ、図８Ｂにおいて、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、テーブル間優先順位１１７に従い、これらのテーブルのうち優先順位が一番高いテーブルにヒットするエントリを検索結果としてオープンフロー処理解決部１０７に通知するようにしても良い。
【０１６５】
［オープンフローテーブル制御例（１）］
図９は、優先順位（Ｐｒｉｏｒｉｔｙ）範囲でテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第１方式の例である。
【０１６６】
登録情報１３２は、コントローラ１０１からスイッチ１０２のオープンフローテーブル管理部１０６への登録情報である。登録結果１３３は、オープンフローテーブルを構成するテーブル群１１３への登録結果である。
【０１６７】
オープンフローテーブルを構成するテーブル群１１３を１つのテーブルに見立てた場合、スイッチ１０２は、優先順位（Ｐｒｉｏｒｉｔｙ）により期待するテーブルへの制御を行う。
【０１６８】
（１）ステップＳ３０１
コントローラ１０１は、スイッチ１０２に対して、｛優先順位（Ｐｒｉｏｒｉｔｙ）：５０００１、Ｍａｔｃｈ条件：ＸＸＸＸ、Ａｃｔｉｏｎ：ＹＹＹＹ｝というエントリの登録を行う。
【０１６９】
（２）ステップＳ３０２
スイッチ１０２は、コントローラ１０１からエントリが登録された場合、このエントリの優先順位（Ｐｒｉｏｒｉｔｙ）に該当するテーブルであるＬ２テーブル（ＯＦ）を選択し、このＬ２テーブル（ＯＦ）に該当エントリを登録する。
【０１７０】
［オープンフローテーブル制御例（２）］
図１０は、テーブルＩＤでテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第２方式の例である。
【０１７１】
登録情報１３４は、コントローラからのオープンフローテーブルへの登録情報である。登録結果１３５は、オープンフローテーブルを構成するテーブル群への登録結果である。
【０１７２】
オープンフローテーブルを構成するテーブル群の各テーブルを、それぞれ別のオープンフローテーブルに見立てた場合、スイッチ１０２は、テーブルＩＤにより期待するテーブルへの制御を行う。
【０１７３】
（１）ステップＳ４０１
コントローラ１０１は、スイッチ１０２に対して、｛テーブルＩＤ：＃２、優先順位（Ｐｒｉｏｒｉｔｙ）：１、Ｍａｔｃｈ条件：ＸＸＸＸ、Ａｃｔｉｏｎ：ＹＹＹＹ｝というエントリの登録を行う。
【０１７４】
（２）ステップＳ４０２
スイッチ１０２は、コントローラ１０１からエントリが登録された場合、このエントリのテーブルＩＤに該当するテーブルであるＬ２テーブル（ＯＦ）を選択し、このＬ２テーブル（ＯＦ）に該当エントリを登録する。
【０１７５】
［第１実施形態の特徴］
本実施形態によれば、オープンフロー処理解決部により複数のテーブル間のリソースを統合し、かつ、各テーブルの優先順位（Ｐｒｉｏｒｉｔｙ）を比較してアクション（Ａｃｔｉｏｎ）解決を行うことができる。
【０１７６】
従って、スイッチの複数のテーブルのリソースを用いて大容量のオープンフローテーブルを構築することができる。これにより、スイッチにより大量のフローを制御することが可能となる。
【０１７７】
また、本実施形態によれば、オープンフローテーブルを１つの大容量のオープンフローテーブルとして使用する場合における「優先順位（Ｐｒｉｏｒｉｔｙ）範囲」や、オープンフローテーブルを構成するテーブル群の各テーブルを複数の異なるオープンフローテーブルとして使用する場合における「テーブルＩＤ」を用いて、オープンフローテーブルを構成する各テーブルを識別することができる。
【０１７８】
従って、スイッチの複数のテーブルから構成されるオープンフローテーブルを１つの大容量のオープンフローテーブル、もしくは複数の異なるオープンフローテーブルとして使用することができる。これにより、複数のテーブルから構成されるオープンフローテーブルを柔軟に制御することが可能となる。
【０１７９】
＜第２実施形態＞
以下に、本発明の第２実施形態について添付図面を参照して説明する。
第２実施形態は、ＴＣＡＭ（ＯＦ）検索機能部にオープンフロー処理解決部を含めない場合の、オープンフロー処理解決部の実施例である。
【０１８０】
［実施例１］
図１１は、「ＴＣＡＭ（ＯＦ）検索機能部１１６」→「Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５」の順に検索が実施される場合のオープンフロー機能部１０５の詳細について説明するための図である。
【０１８１】
オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、アクション機能部１１１、テーブル群１１３、検索機能部１１４、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５、ＴＣＡＭ（ＯＦ）検索機能部１１６は、図２に表されている機構・機能と同一のものである。
【０１８２】
図１１を参照して、「ＴＣＡＭ（ＯＦ）検索機能部１１６」→「Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５」の順に検索が実施される場合のオープンフロー機能部１０５の動作について説明する。
【０１８３】
図１１は、オープンフローテーブル管理部１０６の検索機能部１１４において、ＴＣＡＭ（ＯＦ）検索機能部１１６が最後に検索を行わない事例である。
【０１８４】
図１１では、「ＴＣＡＭ（ＯＦ）検索機能部１１６」→「Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５」の順に検索が実施されるため、ＴＣＡＭ（ＯＦ）検索機能部１１６にオープンフロー処理解決部１０７を含めることができない。
【０１８５】
［実施例２］
図１２は、Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５とＴＣＡＭ（ＯＦ）検索機能部１１６の検索が同時に実施される場合のオープンフロー機能部１０５の詳細について説明するための図である。
【０１８６】
オープンフロー機能部１０５、オープンフローテーブル管理部１０６、オープンフロー処理解決部１０７、アクション機能部１１１、テーブル群１１３、検索機能部１１４、Ｌ２／Ｌ３／その他テーブル（ＯＦ）検索機能部１１５、ＴＣＡＭ（ＯＦ）検索機能部１１６は、図２に表されている機構・機能と同一のものである。
【０１８７】
図１２を参照して、Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５とＴＣＡＭ（ＯＦ）検索機能部１１６の検索が同時に実施される場合のオープンフロー機能部１０５の動作について説明する。
【０１８８】
図１２は、オープンフローテーブル管理部１０６の検索機能部１１４において、ＴＣＡＭ（ＯＦ）検索機能部１１６が最後に行われない事例である。
【０１８９】
Ｌ２／Ｌ３その他テーブル（ＯＦ）検索機能部１１５とＴＣＡＭ（ＯＦ）検索機能部１１６の検索が同時に実施されるため、ＴＣＡＭ（ＯＦ）検索機能部１１６にオープンフロー処理解決部１０７を含めることができない。
【０１９０】
［実施例３］
図１３は、ＴＣＡＭ（ＯＦ）検索機能部１１６にオープンフロー処理解決部１０７を含められない場合におけるオープンフロー処理解決部１０７の実施例である。
【０１９１】
オープンフロー処理解決部１０７、アクション機能部１１１は、図２に表されている機構・機能と同一のものである。
【０１９２】
オープンフロー処理解決部１０７は、検索受信部（Ｌｏｏｋｕｐ  Ｒｅｃｅｉｖｅｒ）１３０と、処理解決部（Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）１３１を備える。
【０１９３】
検索受信部（Ｌｏｏｋｕｐ  Ｒｅｃｅｉｖｅｒ）１３０は、各テーブルの検索結果を受け取る。処理解決部（Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）１３１は、各テーブルの検索結果を基に、オープンフロー処理を決定する。
【０１９４】
図１３を参照して、ＴＣＡＭ（ＯＦ）検索機能部１１６にオープンフロー処理解決部１０７を含められない場合におけるオープンフロー処理解決部１０７の動作について説明する。
【０１９５】
ＴＣＡＭ（ＯＦ）検索機能部１１６にオープンフロー処理解決部１０７を含めることができない場合、スイッチ１０２に、図１３で示されるようなオープンフロー処理解決部１０７を搭載する。
【０１９６】
オープンフロー処理解決部１０７において、検索受信部（Ｌｏｏｋｕｐ  Ｒｅｃｅｉｖｅｒ）１３０は、各テーブルの検索結果を受け取る。処理解決部（Ａｃｔｉｏｎ  Ｒｅｓｏｌｖｅｒ）１３１は、各テーブルの検索結果、及び予め設定されたテーブル優先順位（Ｐｒｉｏｒｉｔｙ）によりオープンフローのアクションを決定し、決定されたアクションをアクション機能部１１１に通知する。
【０１９７】
［他の実施例］
なお、上記の各実施形態において、スイッチ１０２はオープンフロースイッチであるものとして説明しているが、オープンフロースイッチは例示に過ぎない。実際には、オープンフロースイッチに限定されるものではなく、オープンフロースイッチと同様の機構・機能を有するスイッチに対しても、本発明を適用することは可能である。
【０１９８】
＜本発明の特徴＞
本発明は、複数のテーブルの集約によるオープンフローテーブルの拡張方法に関する。
【０１９９】
本発明は、スイッチの単一テーブル（主にＴＣＡＭ）で実現されるオープンフローテーブルについて、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することによりオープンフローテーブルフローエントリ数の拡張を実現するものである。
【０２００】
なお、オープンフローでは、これまで同一のＮＷ機器（ルータ／スイッチ等）に実装されていた転送機能、制御機能を分離し、転送機能はＮＷ機器に残し、制御機能は外出しのコントローラに任せる。コントローラは、遠隔からオープンフロープロトコルを用いてＮＷ機器のオープンフローテーブルを操作することによりＮＷ装置の挙動を制御する。オープンフローテーブルは、｛Ｍａｔｃｈ条件、Ａｃｔｉｏｎ、統計情報｝の３種の情報からなるフローエントリ群から構成される。オープンフローでは、この適合（Ｍａｔｃｈ）条件から制御対象とするフローを定義し、このフローを単位としてアクション（Ａｃｔｉｏｎ）や統計情報の取得を行うことができる。
【０２０１】
オープンフローの｛Ｍａｔｃｈ条件、Ａｃｔｉｏｎ、統計情報｝の概要は、以下の通りである。
【０２０２】
［Ｍａｔｃｈ条件］
「Ｉｎｇｒｅｓｓ  ｐｏｒｔ（入力ポート）」／「Ｓｒｃ  ＭＡＣ（送信元ＭＡＣアドレス）」／「Ｄｓｔ  ＭＡＣ（宛先ＭＡＣアドレス）」／「Ｅｔｈｅｒ  ｔｙｐｅ（タイプ・フィールド）」／「ＶＬＡＮ  ＩＤ（仮想ＬＡＮ識別情報）」／「ＶＬＡＮ  Ｐｒｉｏｒｉｔｙ（仮想ＬＡＮ優先順位）」／「Ｓｒｃ  ＩＰ（送信元ＩＰアドレス）」／「Ｄｓｔ  ＩＰ（宛先ＩＰアドレス）」／「ＩＰ  ｐｒｏｔｏｃｏｌ（ＩＰプロトコル番号）」／「ＩＰ  ＴｏＳ（ｕｐｐｅｒ  ６ｂｉｔ）」／「Ｓｒｃ  Ｐｏｒｔ（送信元ポート番号）」／「Ｄｓｔ  Ｐｏｒｔ（宛先ポート番号）」
【０２０３】
［Ａｃｔｉｏｎ］
「Ｆｏｒｗａｒｄ（ある物理ポートから出力）」／「Ａｌｌ（入力ポート以外全てから出力）」／「Ｃｏｎｔｒｏｌｌｅｒ（コントローラ向けに出力）」／「Ｌｏｃａｌ（自装置のローカルスタック宛に出力）」／「テーブル（オープンフローテーブルの内容に従って出力）」／「Ｉｎ＿ｐｏｒｔ（入力ポートから出力）」／「Ｎｏｒｍａｌ（レガシーテーブルの内容を用いて出力）」／「Ｆｌｏｏｄ（入力ポート、及びＳｐａｎｎｉｎｇ  Ｔｒｅｅのブロックポート以外全てから出力）」／「Ｄｒｏｐ（パケットを破棄）」／「Ｍｏｄｉｆｙ−Ｆｉｅｌｄ（パケットのヘッダー情報を書き換え）」
【０２０４】
例えば、「Ｍｏｄｉｆｙ−Ｆｉｅｌｄ」の場合は、「ＶＬＡＮ  ＩＤ」、「Ｖｌａｎ  優先順位（Ｐｒｉｏｒｉｔｙ）」、「Ｓｒｃ  ＭＡＣ」、「Ｄｓｔ  ＭＡＣ」、「Ｓｒｃ  ＩＰ」、「Ｄｓｔ  ＩＰ」、「ＩＰ  ＴｏＳ」、「Ｓｒｃ  Ｐｏｒｔ」、「Ｄｓｔ  Ｐｏｒｔ」を書き換え可能である。
【０２０５】
［統計情報］
「テーブル単位」、「フロー単位」、「物理ポート単位」、「キュー（Ｑｕｅｕｅ）単位」での各種統計情報。
【０２０６】
本発明は、スイッチのテーブル（主にＴＣＡＭ）の容量自体を増やすことなく、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することにより、装置としてのオープンフローテーブル合計フローエントリ数の拡張を実現するものである。すなわち、スイッチ内部で複数のテーブルを使用して、コントローラからこれを大容量オープンフローテーブルとして用いることを可能とした。
【０２０７】
具体的には、各テーブルの機能（Ｍａｔｃｈ条件／Ａｃｔｉｏｎ）差分を吸収してオープンフローテーブルとしての統合を実現した。なお、スイッチの複数のテーブルは、それぞれ本来の用途（例えば、Ｌ２テーブルであればＬ２中継、Ｌ３テーブルであればＬ３中継）があるため、全てのリソースを使用するのではなく、その一部を切り出す形で使用する。
【０２０８】
以上のように、本発明の特徴は、「複数のテーブルのＭａｔｃｈ条件／Ａｃｔｉｏｎ差分を吸収して、オープンフローテーブルとして統合すること」と、「その際の具体的なアクション決定方法を提供すること」である。
【０２０９】
本発明では、スイッチの複数のテーブルリソースの一部をオープンフローテーブルとして使用する。
【０２１０】
また、本発明では、スイッチの各テーブルを、実現可能な機能（Ｍａｔｃｈ条件／Ａｃｔｉｏｎ）に応じて「機能制限付きのオープンフローテーブルリソース」として取り扱っている。
【０２１１】
また、本発明では、オープンフロー処理解決部により、各テーブルリソースの機能差分（Ｍａｔｃｈ条件／Ａｃｔｉｏｎ）を吸収して、オープンフローテーブルリソースとして統合している。
【０２１２】
また、本発明では、オープンフロー処理解決部において、ＴＣＡＭを含むテーブル間の優先順位（Ｐｒｉｏｒｉｔｙ）によりアクション決定を実現している。
【０２１３】
なお、ＴＣＡＭ（ＯＦ）検索が最後に行われるスイッチにおいては、オープンフロー処理解決部をＴＣＡＭ（ＯＦ）検索機能部に含める形で実現している。
【０２１４】
更に、本発明では、複数のテーブルから構成されるオープンフローテーブルを、コントローラから柔軟に制御する。
【０２１５】
また、本発明では、複数のテーブルを１つのオープンフローテーブルとして使用する場合、優先順位（Ｐｒｉｏｒｉｔｙ）の範囲でのテーブル識別を実現している。
【０２１６】
また、本発明では、複数テーブルを個別のオープンフローテーブルとして使用する場合、テーブルＩＤでのテーブル識別を実現している。
【０２１７】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０２１８】
なお、本出願は、日本出願番号２０１０−２００６９０に基づく優先権を主張するものであり、日本出願番号２０１０−２００６９０における開示内容は引用により本出願に組み込まれる。
【図１】
0005962808.tif 000002
【図２】
0005962808.tif 000003
【図３】
0005962808.tif 000004
【図４】
0005962808.tif 000005
【図５】
0005962808.tif 000006
【図６】
0005962808.tif 000007
【図７Ａ】
0005962808.tif 000008
【図７Ｂ】
0005962808.tif 000009
【図８Ａ】
0005962808.tif 000010
【図８Ｂ】
0005962808.tif 000011
【図９】
0005962808.tif 000012
【図１０】
0005962808.tif 000013
【図１１】
0005962808.tif 000014
【図１２】
0005962808.tif 000015
【図１３】
0005962808.tif 000016