所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、前記オープンフローテーブルを参照して、受信パケットに対する処理内容を決定するオープンフロー機能部と、前記決定された処理内容に従って、前記受信パケットに対する処理を実行するアクション機能部とを具備するスイッチシステム。請求項1に記載のスイッチシステムであって、前記オープンフロー機能部は、前記受信パケットについて、前記複数のテーブルのうち、L2テーブル、L3テーブル、及びその他テーブルを検索し、該当するエントリを検索結果として出力するL2/L3/その他テーブル検索機能部と、前記受信パケットについて、前記複数のテーブルのうち、TCAMTernaryContentAddressableMemoryを検索し、該当するエントリを検索結果として出力するTCAM検索機能部と、TCAM、L2テーブル、L3テーブル、及びその他テーブルの間の優先順位を定義し、L2/L3/その他テーブル検索機能部及びTCAM検索機能部から検索結果を受け取り、前記優先順位に応じて、採用するエントリを決定し、前記受信パケットに対する処理内容を決定するオープンフロー処理解決部とを具備するスイッチシステム。請求項1又は2に記載のスイッチシステムであって、前記オープンフロー機能部は、前記オープンフローテーブルにおける優先順位の一定範囲ずつを各テーブルに割り当てる手段と、コントローラから前記オープンフローテーブルの制御が行われる際、前記コントローラから指定された優先順位の範囲内の値を基に、使用するテーブルを判別する手段とを具備するスイッチシステム。請求項1又は2に記載のスイッチシステムであって、前記オープンフロー機能部は、前記オープンフローテーブルを構成する各テーブルにテーブルIDを設定する手段と、コントローラから前記オープンフローテーブルの制御が行われる際、前記コントローラから指定されたテーブルIDを基に、使用するテーブルを判別する手段とを具備するスイッチシステム。オープンフロースイッチにおいて実施されるスイッチ制御方法であって、所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、前記オープンフローテーブルを参照して、受信パケットに対する処理内容を決定することと、前記決定された処理内容に従って、前記受信パケットに対する処理を実行することとを含むスイッチ制御方法。請求項5に記載のスイッチ制御方法であって、前記受信パケットについて、前記複数のテーブルのうち、L2テーブル、L3テーブル、及びその他テーブルを検索し、該当するエントリを検索結果とすることと、前記受信パケットについて、前記複数のテーブルのうち、TCAMTernaryContentAddressableMemoryを検索し、該当するエントリを検索結果とすることと、TCAM、L2テーブル、L3テーブル、及びその他テーブルの間の優先順位を定義し、前記優先順位に応じて、各テーブルの検索結果の中から採用するエントリを決定し、前記受信パケットに対する処理内容を決定することとを更に含むスイッチ制御方法。請求項5又は6に記載のスイッチ制御方法であって、前記オープンフローテーブルにおける優先順位の一定範囲ずつを各テーブルに割り当てることと、コントローラから前記オープンフローテーブルの制御が行われる際、前記コントローラから指定された優先順位の範囲内の値を基に、使用するテーブルを判別することとを更に含むスイッチ制御方法。請求項5又は6に記載のスイッチ制御方法であって、前記オープンフローテーブルを構成する各テーブルにテーブルIDを設定することと、コントローラから前記オープンフローテーブルの制御が行われる際、前記コントローラから指定されたテーブルIDを基に、使用するテーブルを判別することとを更に含むスイッチ制御方法。所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、前記オープンフローテーブルを参照して、受信パケットに対する処理内容を決定するステップと、前記決定された処理内容に従って、前記受信パケットに対する処理を実行するステップとをスイッチとして使用される計算機に実行させるためのプログラムを格納した記憶媒体。<第1実施形態>以下に、本発明の第1実施形態について添付図面を参照して説明する。[システム構成]図1に示すように、本発明に係るスイッチシステムは、コントローラ101と、スイッチ102を含む。コントローラ101は、オープンフロープロトコルに準拠した処理でスイッチ102を制御する。[スイッチの構成]スイッチ102は、プロトコル制御部103と、入力ポート104と、オープンフロー機能部105と、レガシーLegacy機能部108と、アクションAction機能部111と、出力ポート112を備える。プロトコル制御部103は、コントローラ101がオープンフロープロトコルに準拠した処理でスイッチ102を制御するための通信を行う際に、コントローラ101とスイッチ102の間でプロトコル制御を行う。プロトコル制御部103は、スイッチ102の内部に限らず、スイッチ102の前段でも良い。入力ポート104は、パケット入力用インタフェースである。入力ポート104は、オープンフロー有効ポートと、オープンフロー無効ポートを有する。オープンフロー有効ポートとは、オープンフロープロトコルに対応した入力ポートであり、オープンフロー無効ポートとは、オープンフロープロトコルに未対応の入力ポートである。オープンフロー機能部105は、オープンフロー有効ポートから入力したパケットを処理する。オープンフロー機能部105は、オープンフローテーブル管理部106と、オープンフロー処理解決部OpenFlowActionResolver107を備える。オープンフローテーブル管理部106は、スイッチ102が使用するオープンフローテーブルを保持する。オープンフローテーブルには、オープンフロープロトコルに準拠したパケットに対するアクションオープンフロー処理のアクションが定義されている。オープンフロー処理解決部107は、オープンフローテーブル管理部106の検索Lookup結果を基に、オープンフロー処理のアクションを決定する。レガシー機能部108は、オープンフロー無効ポートから入力したパケットを処理する。レガシー機能部108は、レガシーテーブルLegacyTable管理部109と、レガシー処理解決部LegacyActionResolver110を備える。レガシーテーブル管理部109は、スイッチ102が使用するレガシーテーブルである。レガシーテーブル管理部109は、オープンフロープロトコルに準拠していないパケット通常のパケット等に対するアクションレガシー処理のアクションを定義している。レガシー処理解決部110は、レガシーテーブル管理部109の検索結果を基に、該当するレガシー処理のアクションを決定する。レガシー処理については、通常のスイッチ機能を用いる。アクション機能部111では、オープンフロー機能部105、もしくはレガシー機能部108で決定されたアクションを実行する。出力ポート112は、パケット出力用インタフェースである。[オープンフロー処理とレガシー処理の違い]オープンフロー処理では、パケットの経路制御を外部のコントローラ経由で行う。コントローラは、ネットワーク全体を見て最適な経路を選択する。一方、レガシー処理では、通常のスイッチやルータで行われているように、自律分散で経路制御を行う。通常のスイッチやルータは、自身の近傍に関する情報からネットワーク状況を判断して最適経路を選択する。オープンフロー処理では、最大12種類の情報の組合せでパケット識別を行うことができる。一方、レガシー処理では、L2ネットワークであれば宛先MACアドレス、L3ネットワークであれば宛先IPアドレスというように、パケット識別に使用できる情報が少ない。このため、細かなフロー制御を行うことが難しい。例えば、レガシー処理では、同じ宛先IPアドレスでも、送信元TCPポート番号が異なれば、別のフローと判断して別の経路を選択する。[スイッチシステムの全体動作]以下に、図1のスイッチシステムの全体動作について説明する。[パケット入力]スイッチ102に新規パケットが流入した際、スイッチ102は、入力ポート104で、このパケットを受け取る。スイッチ102は、パケットを受け取った入力ポート104がオープンフロー有効ポートか否か確認する。例えば、スイッチ102は、スイッチ102自体又は入力ポート104の設定情報config等を参照して、入力ポート104がオープンフロー有効ポートか否か確認する。[パケット入力からオープンフロー処理への移行]スイッチ102は、入力ポートがオープンフロー有効ポートであった場合、パケットを、入力ポート104からオープンフロー機能部105に渡す。[オープンフロー処理]オープンフロー機能部105は、渡されたパケットについて、スイッチ102の複数のテーブルを保持するオープンフローテーブル管理部106において検索処理を行う。次に、オープンフロー機能部105は、オープンフロー処理解決部107において、検索結果、及び各テーブルの優先順位Priorityからパケットのアクションを決定する。なお、優先順位は、優先度と読み替えても良い。[オープンフロー処理からアクション実行への移行]オープンフロー機能部105は、決定されたアクションがPacket-INコントローラに対する該当パケットのアクション問い合わせであった場合例えば、該当するフローエントリが存在せずアクションが決定できなかった場合は、プロトコル制御部103を通じてコントローラ101に問い合わせ該当パケットの転送等を行う。最初は、レガシー処理の対象となるパケット以外の全てのパケットのアクションを、無条件でPacket-INとしておいても良い。オープンフロー機能部105は、問い合わせに対する応答として、Packet-OUTコントローラからのアクション問い合わせ結果を受け取り、その内容を該当パケットのアクションとして決定し、オープンフローテーブル管理部106が保持するテーブルに登録する。以降、オープンフロー機能部105は、オープンフロー処理解決部107において、このパケットと同じルールに該当するパケットに対して、このアクションを決定することになる。オープンフロー機能部105は、決定されたアクションに基づいて、該当パケットをアクション機能部111に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部105からアクション機能部111に移行する。[オープンフロー処理からレガシー処理への移行]オープンフロー機能部105は、決定されたアクションがNORMALレガシー機能部108を用いたパケット処理であった場合は、該当パケットをレガシー機能部108に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部105からレガシー機能部108に移行する。[パケット入力からレガシー処理への移行]また、スイッチ102は、入力ポート104がオープンフロー無効ポートであった場合、もしくは当該パケットに対して先に以前にオープンフロー機能部105で決定されたアクションがNORMALであった場合、パケットを、入力ポート104からレガシー機能部108に渡す。すなわち、該当パケットの処理の主体が、入力ポート104からレガシー機能部108に移行する。[レガシー処理]レガシー機能部108は、渡されたパケットについて、スイッチ102の複数のテーブルから構成されるレガシーテーブル管理部109において検索処理を行う。[レガシー処理からアクション実行への移行]次に、レガシー機能部108は、レガシー処理解決部110において、検索結果、及び各テーブルの優先順位Priorityからパケットのアクションを決定する。すなわち、該当パケットの処理の主体が、レガシー機能部108からアクション機能部111に移行する。なお、レガシー機能部108~レガシー処理解決部110でのレガシー処理については、通常のスイッチ機能を用いるため、本発明では詳細に触れない。[アクション実行]アクション機能部111は、該当パケットに対して、オープンフロー機能部105、もしくはレガシー機能部108で決定されたアクションを実行する。オープンフロー機能部105で決定されたアクションの例として、ヘッダーHeader情報の書き換え、指定された出力ポートからのパケット出力、パケット破棄等が考えられる。レガシー機能部108で決定されたアクションの例として、ルーティングrouting等によるパケット転送等が考えられる。但し、実際には、これらの例に限定されない。最後に、アクション機能部111は、実行されるアクションにパケット出力が含まれている場合は、その内容に従って、適切な出力ポート112から該当パケットを出力する。[コントローラによるオープンフローテーブルの制御]なお、コントローラ101は、プロトコル制御部103を通じて、スイッチ102のオープンフローテーブル管理部106の制御を行うことが可能である。ここで、オープンフローテーブル管理部106の制御とは、オープンフローテーブルに対するフローエントリの登録/変更/削除/一括削除等である。オープンフローテーブル管理部106がオープンフローテーブルとして保持するスイッチ102の各テーブルは、必ずしもオープンフロー仕様OpenFlowSpecで規定されている全ての操作に対応している訳ではない。このため、コントローラ101は、オープンフローテーブル管理部106がオープンフローテーブルとして保持する各テーブルで実現可能な機能設定可能なアクションを踏まえて制御を行う必要がある。[オープンフロー機能部の詳細]図2は、本発明のオープンフロー機能部105の詳細について説明するための図である。オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111は、図1に表されている機構機能と同一のものである。オープンフロー機能部105は、オープンフローテーブル管理部106と、オープンフロー処理解決部107を備える。オープンフローテーブル管理部106は、テーブル群113と、検索Lookup機能部114を備える。テーブル群113は、オープンフローテーブルを構成するテーブル群である。検索機能部114は、テーブル群113を用いて入力パケットの検索を行う。検索機能部114は、L2/L3/その他テーブルOF検索機能部115と、TCAMOF検索機能部116を備える。なお、OFとは、OpenFlowの略語である。L2/L3/その他テーブルOF検索機能部115は、入力パケットについて、L2テーブルOF、L3テーブルOF、及びその他テーブルOFを参照し、該当するエントリがないか検索する。その他テーブルOFの一例として、マルチキャストルーティングテーブル等が挙げられる。すなわち、L2/L3/その他テーブルOF検索機能部115は、入力パケットについて、プロトコル単位でテーブルの検索を実行する。TCAMOF検索機能部116は、入力パケットについて、TCAMOFを参照し、該当するエントリがないか検索する。すなわち、TCAMOF検索機能部116は、入力パケットについて、TCAMの検索を実行する。[オープンフロー機能部の動作]以下に、図2のオープンフロー機能部105の動作について説明する。入力ポート104は、オープンフロー有効ポートから入力されたパケットを、オープンフロー機能部105に渡す。オープンフロー機能部105は、渡されたパケットについて、スイッチ102の複数のテーブルから構成されるオープンフローテーブル管理部106において検索処理を行う。このとき、オープンフローテーブル管理部106の検索機能部114は、オープンフローテーブルを構成するテーブル群113に登録されたエントリ情報に基づいて検索を行う。具体的には、検索機能部114において、まず、L2/L3/その他テーブルOF検索機能部115が検索を行い、次いで、TCAMOF検索機能部116が検索を行う。検索機能部114は、この検索結果を、オープンフロー処理解決部107に渡す。オープンフロー処理解決部107は、検索結果、及び各テーブルの優先順位Priorityからパケットのアクションを決定する。[ハードウェアの例示]以下に、本発明に係るスイッチシステムを実現するための具体的なハードウェアの例について説明する。コントローラ101の例として、PCパソコン、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、コントローラ101は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシンVM:VirtualMachineでも良い。スイッチ102の例として、L3スイッチlayer3switch、L4スイッチlayer4switch、L7スイッチ/アプリケーションスイッチlayer7switch、或いは、マルチレイヤスイッチmulti-layerswitch等のネットワークスイッチnetworkswitchを想定している。他にも、スイッチ102の例として、ルータrouter、プロキシproxy、ゲートウェイgateway、ファイアウォールfirewall、ロードバランサloadbalancer:負荷分散装置、帯域制御装置/セキュリティ監視制御装置gatekeeper、基地局basestation、アクセスポイントAP:AccessPoint、通信衛星CS:CommunicationSatellite、或いは、複数の通信ポートを有する計算機等が考えられる。プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリとによって実現される。上記のプロセッサの例として、CPUCentralProcessingUnit、ネットワークプロセッサNP:NetworkProcessor、マイクロプロセッサmicroprocessor、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路IC:IntegratedCircuit等が考えられる。上記のメモリの例として、RAMRandomAccessMemory、ROMReadOnlyMemory、EEPROMElectricallyErasableandProgrammableReadOnlyMemoryやフラッシュメモリ等の半導体記憶装置、HDDHardDiskDriveやSSDSolidStateDrive等の補助記憶装置、又は、DVDDigitalVersatileDisk等のリムーバブルディスクや、SDメモリカードSecureDigitalmemorycard等の記憶媒体メディア等が考えられる。また、バッファbufferやレジスタregisterでも良い。或いは、DASDirectAttachedStorage、FC-SANFibreChannel-StorageAreaNetwork、NASNetworkAttachedStorage、IP-SANIP-StorageAreaNetwork等を用いたストレージ装置でも良い。また、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、電子機器等に搭載される1チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。或いは、プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシンVMでも良い。入力ポート104及び出力ポート112の例として、ネットワーク通信に対応した基板マザーボードやI/Oボード等の半導体集積回路、NICNetworkInterfaceCard等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口コネクタ等の通信ポート等が考えられる。また、入力ポート104及び出力ポート112が利用するネットワークの例として、インターネット、LANLocalAreaNetwork、無線LANWirelessLAN、WANWideAreaNetwork、バックボーンBackbone、ケーブルテレビCATV回線、固定電話網、携帯電話網、WiMAXIEEE802.16a、3G3rdGeneration、専用線leaseline、IrDAInfraredDataAssociation、Bluetooth登録商標、シリアル通信回線、データバス等が考えられる。なお、プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111の各々は、モジュールmodule、コンポーネントcomponent、或いは専用デバイス、又はこれらの起動呼出プログラムでも良い。但し、実際には、これらの例に限定されない。[オープンフロー処理解決部の詳細]図3は、本発明のオープンフロー処理解決部107の詳細について説明するための図である。オープンフロー処理解決部107、TCAMOF検索機能部116は、図2に表されている機構機能と同一のものである。オープンフロー処理解決部107は、TCAMOFのエントリマッピングを調整することにより、TCAMOF検索機能部116の一部として実現される。このため、実質的には、オープンフロー処理解決部107と、TCAMOF検索機能部116は、1つの機能ブロックTCAMOFLookupOpenFlowActionResolverとなる。この機能ブロックは、テーブル間優先順位117と、TCAMOF内部のエントリ118を有する。テーブル間優先順位117は、期待するアクション優先順位Priorityを示す。TCAMOF内部のエントリ118は、優先順位Priorityに対応するTCAMOF内のエントリマッピングを示す。TCAMOF内部のエントリ118は、TCAMOF検索用エントリ群119と、L2テーブルOF検索結果参照用エントリ120と、L3テーブルOF検索結果参照用エントリ121と、その他テーブルOF検索結果参照用エントリ122と、Miss-hit用エントリ123を含む。TCAMOF検索用エントリ群119は、TCAMOF検索機能部116におけるTCAMOF検索を実現するためのエントリの集合である。L2テーブルOF検索結果参照用エントリ120は、L2テーブルOFの検索結果を参照するためのエントリである。L3テーブルOF検索結果参照用エントリ121は、L3テーブルOFの検索結果を参照するためのエントリである。その他テーブルOF検索結果参照用エントリ122は、その他テーブルOFの検索結果を参照するためのエントリである。Miss-hit用エントリ123は、いずれのエントリにもヒットhitしなかったパケットをMiss-hitヒットせずとして取り扱うためのエントリである。すなわち、これらは上記のそれぞれのアクションを定義したエントリである。[オープンフロー処理解決部の動作]以下に、図3のオープンフロー処理解決部107の動作について説明する。オープンフローテーブル内の検索順序として、最後に、TCAMOF検索機能部116が検索を行う。なお、TCAMOF検索機能部116での検索の際に、L2/L3/その他テーブルの検索結果を参照することが可能なスイッチでは、TCAMOFのエントリマッピングを調整することにより、オープンフロー処理解決部107を実現することが可能である。例えば、テーブル間優先順位117のような期待するテーブルごとのアクション優先順位Priorityを、TCAMOF内部のエントリ118のようにマッピングすることにより対応することができる。図3の例の場合は、アクション優先順位Priority117は、優先順位Priorityの高い順から、全部対応TCAMOF相当→L2対応L2テーブルOF相当→L3対応L3テーブルOF相当→その他対応その他テーブル相当となっている。オープンフロー処理解決部107は、これをTCAMOF内のエントリマッピングとして、TCAMOFの検索優先順位Priorityの高い順から、TCAMOF検索機能実現用エントリ群119→L2テーブルOF検索結果参照用エントリ120→L3テーブルOF検索結果参照用エントリ121→その他テーブルOF検索結果参照用エントリ122→Miss-hit用エントリ123の順に並べれば良い。[TCAMOF検索機能実現用エントリ群]TCAMOF検索機能実現用エントリ群119は、検索機能のTCAMOF検索機能部116を実現するためのエントリ群である。オープンフロー処理解決部107は、入力パケットがTCAMOF検索機能実現用エントリ群119のいずれかにヒットした場合、そのエントリのアクションを、当該パケットに対するアクションとして選択する。[L2テーブルOF検索結果参照用エントリ]L2テーブルOF検索結果参照用エントリ120は、事前に行われたL2テーブルOFの検索の結果を踏まえ、入力パケットに対応するエントリがL2テーブルOF上に存在した場合にヒットするエントリである。例えば、L2テーブルOF検索時に入力パケットに対応するエントリがあった場合は、あるフラグX=1となり、TCAMOF上のL2テーブルOF検索結果参照用エントリ120では、このフラグX=1の場合に同エントリがヒットする。オープンフロー処理解決部107は、L2テーブルOF検索結果参照用エントリ120がヒットした場合、L2テーブルOFの該当エントリのアクションを、当該パケットに対するアクションとして選択する。[L3テーブルOF検索結果参照用エントリ]L3テーブルOF検索結果参照用エントリ121は、事前に行われたL3テーブルOFの検索の結果を踏まえ、入力パケットに対応するエントリがL3テーブルOF上に存在した場合にヒットするエントリである。例えば、L3テーブルOF検索時に入力パケットに対応するエントリがあった場合は、あるフラグY=1となり、TCAMOF上のL3テーブルOF検索結果参照用エントリ121では、このフラグY=1の場合に同エントリがヒットする。オープンフロー処理解決部107は、L3テーブルOF検索結果参照用エントリ121がヒットした場合、L3テーブルOFの該当エントリのアクションを、当該パケットに対するアクションとして選択する。[その他テーブルOF検索結果参照用エントリ]その他テーブルOF検索結果参照用エントリ122は、事前に行われたその他テーブルOFの検索の結果を踏まえ、入力パケットに対応するエントリがその他テーブルOF上に存在した場合にヒットするエントリである。例えば、その他テーブルOF検索時に入力パケットに対応するエントリがあった場合は、あるフラグZ=1となり、TCAMOF上のその他テーブルOF検索結果参照用エントリ122では、このフラグZ=1の場合に同エントリがヒットする。オープンフロー処理解決部107は、その他テーブルOF検索結果参照用エントリ122がヒットした場合、その他テーブルOFの該当エントリのアクションを、当該パケットに対するアクションとして選択する。[Miss-hit用エントリ]Miss-hit用エントリ123は、TCAMOFのいずれのエントリにも入力パケットがヒットしなかった場合にヒットするエントリである。ここでは、Miss-hit用エントリ123は、全てのパターンのパケットがヒットするエントリである。オープンフロー処理解決部107は、入力パケットがTCAMOFのいずれのエントリにもヒットせず、Miss-hit用エントリ123にのみヒットした場合、オープンフローの設定に応じて、Packet-INコントローラに対する該当パケットのアクション問い合わせ、もしくはNORMALレガシー機能部を用いたパケット処理を、当該パケットに対するアクションとして選択する。なお、各テーブルのアクション優先順位Priorityを変えたい場合は、TCAMOF内の該当エントリの順番を入れ替えれば良い。[オープンフローテーブル制御の概要]図4は、本発明におけるコントローラからのオープンフローテーブル制御の概要図である。コントローラ101、スイッチ102、プロトコル制御部103、テーブル群113は、図1、図2に表されている機構機能と同一のものである。スイッチ102は、TCAM124と、L2テーブル125と、L3テーブル126と、その他テーブル127を含む。TCAM124は、TCAMOFと、TCAMLegacyを含む。L2テーブル125は、L2テーブルOFと、L2テーブルLegacyを含む。L3テーブル126は、L3テーブルOFと、L3テーブルLegacyを含む。その他テーブル127は、その他テーブルOFと、その他テーブルLegacyを含む。TCAMOF、L2テーブルOF、L3テーブルOF、その他テーブルOFは、オープンフローテーブルを構成する。TCAMLegacy、L2テーブルLegacy、L3テーブルLegacy、その他テーブルLegacyは、レガシーテーブルを構成する。スイッチ102上のTCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127は、通常の場合、物理的には1つのテーブルである。本発明におけるスイッチ102では、この物理的に1つのテーブルTCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127を、オープンフローテーブルを構成するテーブル群113と、レガシーテーブルを構成するテーブル群128に論理的に分ける機能を有する。すなわち、スイッチ102は、物理的に1つのテーブルTCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127を、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルテーブル群113とレガシーテーブルテーブル群128を構築する。オープンフローテーブルを構成するテーブル群113は、TCAMOF、L2テーブルOF、L3テーブルOF、その他テーブルOFを含む。レガシーテーブルを構成するテーブル群128は、TCAMLegacy、L2テーブルLegacy、L3テーブルLegacy、その他テーブルLegacyを含む。[オープンフローテーブル制御の概要]以下に、図4のコントローラからのオープンフローテーブル制御の概要について説明する。コントローラ101は、プロトコル制御部103を通じて、スイッチ102のオープンフローテーブルの制御を行うことが可能である。スイッチ上のTCAM124、L2テーブル125、L3テーブル126、その他テーブル127は、通常の場合、物理的には各々1つのテーブルである。本発明におけるスイッチでは、これらのテーブルのリソースの一部をオープンフロー用に切り出して使用し、オープンフローテーブルを構成するテーブル群113とレガシーテーブルを構成するテーブル群128を論理的に構築する機能を有する。すなわち、スイッチ102は、TCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127を基に、論理的なオープンフローテーブルテーブル群113とレガシーテーブルテーブル群128を構築する。オープンフローテーブルを構成する各テーブルは、それぞれ実現できるオープンフロー機能が異なる。このため、コントローラ101は、1:各テーブルで実現可能なオープンフロー機能はどのようなものか、2:制御するエントリはオープンフローテーブルを構成するどのテーブルのものかを踏まえた上でオープンフローテーブル制御を行う必要がある。1については、コントローラ側:予め各テーブルで実現可能な機能を入力Inputしておいて、それ以外の制御を行おうとした場合にエラーを返す機構を持たせる、スイッチ側:コントローラからの制御命令について、対象となるテーブルが制御に対応する機能を有していない場合にエラーを返す機構を持たせるといった対応がある。2については、オープンフローテーブルにおける優先順位Priority0-64kの一定範囲ずつを各テーブルに割り当て、コントローラから制御を行う際はこの優先順位Priorityの範囲を基に、使用するテーブルを判別する、オープンフローテーブルを構成する各テーブルにIDを持たせ、コントローラから制御を行う際はこのIDを基に、使用するテーブルを判別するといった対応がある。[オープンフローテーブル制御の詳細1]図5は、本発明におけるコントローラからのオープンフローテーブル制御の第1方式の例の詳細について説明するための図である。ここでは、優先順位Priority範囲でテーブル指定する場合について説明する。コントローラ101、スイッチ102、オープンフローテーブル管理部106、テーブル群113は、図1、図2に表されている機構機能と同一のものである。オープンフロー機能部105のオープンフローテーブル管理部106は、オープンフローテーブルを構成するテーブル群113の各々のテーブルに、優先順位Priority範囲を割り当てる。優先順位Priority範囲でテーブル指定する場合、各々のテーブルの優先順位Priority範囲は重複してはならない。また、優先順位Priority範囲の合計は、オープンフローで規定されている優先順位Priority範囲を越えてはならない。コントローラ101は、各テーブルに割り当てられた優先順位Priority範囲内の値でテーブルを指定する。オープンフロー機能部105のオープンフローテーブル管理部106は、コントローラ101から指定された優先順位Priority範囲内の値を基に、使用するテーブルを判別する。[オープンフローテーブル制御の詳細2]図6は、本発明におけるコントローラからのオープンフローテーブル制御の第2方式の例の詳細について説明するための図である。ここでは、テーブルIDでテーブル指定する場合について説明する。コントローラ101、スイッチ102、オープンフローテーブル管理部106、テーブル群113は、図1、図2に表されている機構機能と同一のものである。オープンフロー機能部105のオープンフローテーブル管理部106は、オープンフローテーブルを構成するテーブル群113に、各々テーブルID129を割り当てる。テーブルIDでテーブル指定する場合、各々のテーブルIDは重複してはならない。一方、各テーブルで規定される優先順位Priority範囲は、重複しても問題ない。各テーブルはテーブルID129により別のテーブルとして識別され、各々のテーブルの優先順位Priorityはオープンフロー処理解決部107により決定されるためである。コントローラ101は、各テーブルに割り当てられたテーブルID129でテーブルを指定する。オープンフロー機能部105のオープンフローテーブル管理部106は、コントローラ101から指定されたテーブルID129を基に、使用するテーブルを判別する。[パケット流入時の処理の動作例1]図7A、図7Bは、本発明におけるパケット流入時のスイッチシステムの第1の動作例である。である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップS101~ステップS107は、パケット流入からの一連の動作の流れを示す。1ステップS101コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Drop}というTCAMOFエントリー1の登録を行う。スイッチ102は、テーブル群113のTCAMOFに、TCAMOFエントリー1の登録を行う。なお、Match条件は、L1~L4までの任意のヘッダー情報の組合せにより定義される。また、Actionは、Match条件に適合したパケットに対する中継/破棄、ヘッダー情報の書き換え等のアクションを定義したものである。2ステップS102コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Port1から出力}というL3テーブルOFエントリー1と、{Match条件:宛先IP=BB、Action:Port2から出力}というL3テーブルOFエントリー2の登録を行う。スイッチ102は、テーブル群113のL3テーブルOFに、L3テーブルOFエントリ1及びL3テーブルOFエントリー2を登録する。3ステップS103入力ポート104は、パケット流入時に、オープンフロー有効ポートに対して宛先IP=AAのパケットが流入した場合、オープンフロー機能部105に送信する。4ステップS104オープンフロー機能部105は、オープンフロー有効ポートに対して宛先IP=AAのパケットが流入した場合、当該パケットを処理する。5ステップS105まず、オープンフロー機能部105において、L2/L3/その他テーブルOF検索機能部115は、流入したパケットについて、L2/L3/その他テーブルOFでの検索を行う。この検索において、当該パケットは、L3テーブルOFエントリー1にヒットする。6ステップS106L2/L3/その他テーブルOF検索機能部115は、この検索結果を、オープンフロー処理解決部107に通知する。図7Bでは、オープンフロー処理解決部107と、TCAMOF検索機能部116は、1つの機能ブロックTCAMOFLookupOpenFlowActionResolverとして示す。7ステップS107TCAMOF検索機能部116は、流入したパケットについて、TCAMOFでの検索を行う。この検索において、当該パケットは、TCAMOFエントリー1が最初にヒットする。この時点でTCAMOFの検索処置は終了する。TCAMOF検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。8ステップS108オープンフロー処理解決部107は、L2/L3/その他テーブルOF検索機能部115とTCAMOF検索機能部116の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、TCAMOFの優先順位が一番高い。そのため、オープンフロー処理解決部107は、TCAMOFエントリー1のアクションDropを、流入したパケットに対するアクションとして決定し、決定したアクションDropを、アクション機能部111に通知する。9ステップS109アクション機能部111は、オープンフロー処理解決部107で決定されたアクションDropを実行する。ここでは、アクション機能部111は、アクションがDropであるため、パケットの出力を行わない。アクション機能部111は、流入したパケット及びこれと同一フローに属する以降のパケットを破棄する。[パケット流入時の処理の動作例2]図8A、図8Bは、本発明におけるパケット流入時のスイッチシステムの第2の動作例である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップS201~ステップS210は、パケット流入からの一連の動作の流れを示す。1ステップS201コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Drop}というTCAMOFエントリー1の登録を行う。スイッチ102は、テーブル群113のTCAMOFに、TCAMOFエントリー1の登録を行う。2ステップS202コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Port1から出力}というL3テーブルOFエントリー1と、{Match条件:宛先IP=BB、Action:Port2から出力}というL3テーブルOFエントリー2の登録を行う。スイッチ102は、テーブル群113のL3テーブルOFに、L3テーブルOFエントリ1及びL3テーブルOFエントリー2を登録する。3ステップS203入力ポート104は、パケット流入時に、オープンフロー有効ポートに対して宛先IP=BBのパケットが流入した場合、オープンフロー機能部105に送信する。4ステップS204オープンフロー機能部105は、オープンフロー有効ポートに対して宛先IP=BBのパケットが流入した場合、当該パケットを処理する。5ステップS205まず、オープンフロー機能部105において、L2/L3/その他テーブルOF検索機能部115は、当該パケットについて、L2/L3/その他テーブルOFでの検索を行う。この検索において、当該パケットは、L3テーブルOFエントリー2にヒットする。6ステップS206L2/L3/その他テーブルOF検索機能部115は、この検索結果を、オープンフロー処理解決部107に通知する。図8Bでは、オープンフロー処理解決部107と、TCAMOF検索機能部116は、1つの機能ブロックTCAMOFLookupOpenFlowActionResolverとして示す。7ステップS207TCAMOF検索機能部116は、流入したパケットについて、TCAMOFでの検索を行う。しかし、流入したパケットは、宛先IP=BBのパケットであるため、TCAMOFにはヒットするエントリがない。この時点でTCAMOFの検索処置は終了する。TCAMOF検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。この時点でTCAMOFの検索処置は終了する。TCAMOF検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。8ステップS208オープンフロー処理解決部107は、L2/L3/その他テーブルOF検索機能部115とTCAMOF検索機能部116の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、対象となるエントリがL3テーブルOFエントリー2しか存在しない。そのため、オープンフロー処理解決部107は、L3テーブルOFエントリー2のアクションPort2から出力を、流入したパケットに対するアクションとして決定し、決定したアクションPort2から出力を、アクション機能部111に通知する。9ステップS209アクション機能部111は、オープンフロー処理解決部107で決定されたアクションPort2から出力を実行する。10ステップS210アクション機能部111は、アクション機能部111は、流入したパケット及びこれと同一フローに属する以降のパケットを、Port2を持つ出力ポート112に出力する。11ステップS211出力ポート112は、アクション機能部111から出力されたパケットを、Port2から出力する。12ステップS212Port2から出力されたパケットは、ネットワーク上に流出し、宛先IP=BBに向けて伝送される。なお、図8A、図8Bにおいて、L2/L3/その他テーブルOF検索機能部115は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、ヒットした全てのエントリを検索結果としてオープンフロー処理解決部107に通知する。オープンフロー処理解決部107は、優先順位が一番高いTCAMOFにヒットするエントリが存在しない場合、L2/L3/その他テーブルOF検索機能部115の検索結果の中で優先順位が一番高いテーブルにヒットするエントリを採用する。また、図8A、図8Bにおいて、L2/L3/その他テーブルOF検索機能部115は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、テーブル間優先順位117に従い、これらのテーブルのうち優先順位が一番高いテーブルにヒットするエントリを検索結果としてオープンフロー処理解決部107に通知するようにしても良い。[オープンフローテーブル制御例1]図9は、優先順位Priority範囲でテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第1方式の例である。登録情報132は、コントローラ101からスイッチ102のオープンフローテーブル管理部106への登録情報である。登録結果133は、オープンフローテーブルを構成するテーブル群113への登録結果である。オープンフローテーブルを構成するテーブル群113を1つのテーブルに見立てた場合、スイッチ102は、優先順位Priorityにより期待するテーブルへの制御を行う。1ステップS301コントローラ101は、スイッチ102に対して、{優先順位Priority:50001、Match条件:XXXX、Action:YYYY}というエントリの登録を行う。2ステップS302スイッチ102は、コントローラ101からエントリが登録された場合、このエントリの優先順位Priorityに該当するテーブルであるL2テーブルOFを選択し、このL2テーブルOFに該当エントリを登録する。[オープンフローテーブル制御例2]図10は、テーブルIDでテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第2方式の例である。登録情報134は、コントローラからのオープンフローテーブルへの登録情報である。登録結果135は、オープンフローテーブルを構成するテーブル群への登録結果である。オープンフローテーブルを構成するテーブル群の各テーブルを、それぞれ別のオープンフローテーブルに見立てた場合、スイッチ102は、テーブルIDにより期待するテーブルへの制御を行う。1ステップS401コントローラ101は、スイッチ102に対して、{テーブルID:2、優先順位Priority:1、Match条件:XXXX、Action:YYYY}というエントリの登録を行う。2ステップS402スイッチ102は、コントローラ101からエントリが登録された場合、このエントリのテーブルIDに該当するテーブルであるL2テーブルOFを選択し、このL2テーブルOFに該当エントリを登録する。[第1実施形態の特徴]本実施形態によれば、オープンフロー処理解決部により複数のテーブル間のリソースを統合し、かつ、各テーブルの優先順位Priorityを比較してアクションAction解決を行うことができる。従って、スイッチの複数のテーブルのリソースを用いて大容量のオープンフローテーブルを構築することができる。これにより、スイッチにより大量のフローを制御することが可能となる。また、本実施形態によれば、オープンフローテーブルを1つの大容量のオープンフローテーブルとして使用する場合における優先順位Priority範囲や、オープンフローテーブルを構成するテーブル群の各テーブルを複数の異なるオープンフローテーブルとして使用する場合におけるテーブルIDを用いて、オープンフローテーブルを構成する各テーブルを識別することができる。従って、スイッチの複数のテーブルから構成されるオープンフローテーブルを1つの大容量のオープンフローテーブル、もしくは複数の異なるオープンフローテーブルとして使用することができる。これにより、複数のテーブルから構成されるオープンフローテーブルを柔軟に制御することが可能となる。<第2実施形態>以下に、本発明の第2実施形態について添付図面を参照して説明する。第2実施形態は、TCAMOF検索機能部にオープンフロー処理解決部を含めない場合の、オープンフロー処理解決部の実施例である。[実施例1]図11は、TCAMOF検索機能部116→L2/L3その他テーブルOF検索機能部115の順に検索が実施される場合のオープンフロー機能部105の詳細について説明するための図である。オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111、テーブル群113、検索機能部114、L2/L3/その他テーブルOF検索機能部115、TCAMOF検索機能部116は、図2に表されている機構機能と同一のものである。図11を参照して、TCAMOF検索機能部116→L2/L3その他テーブルOF検索機能部115の順に検索が実施される場合のオープンフロー機能部105の動作について説明する。図11は、オープンフローテーブル管理部106の検索機能部114において、TCAMOF検索機能部116が最後に検索を行わない事例である。図11では、TCAMOF検索機能部116→L2/L3その他テーブルOF検索機能部115の順に検索が実施されるため、TCAMOF検索機能部116にオープンフロー処理解決部107を含めることができない。[実施例2]図12は、L2/L3その他テーブルOF検索機能部115とTCAMOF検索機能部116の検索が同時に実施される場合のオープンフロー機能部105の詳細について説明するための図である。オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111、テーブル群113、検索機能部114、L2/L3/その他テーブルOF検索機能部115、TCAMOF検索機能部116は、図2に表されている機構機能と同一のものである。図12を参照して、L2/L3その他テーブルOF検索機能部115とTCAMOF検索機能部116の検索が同時に実施される場合のオープンフロー機能部105の動作について説明する。図12は、オープンフローテーブル管理部106の検索機能部114において、TCAMOF検索機能部116が最後に行われない事例である。L2/L3その他テーブルOF検索機能部115とTCAMOF検索機能部116の検索が同時に実施されるため、TCAMOF検索機能部116にオープンフロー処理解決部107を含めることができない。[実施例3]図13は、TCAMOF検索機能部116にオープンフロー処理解決部107を含められない場合におけるオープンフロー処理解決部107の実施例である。オープンフロー処理解決部107、アクション機能部111は、図2に表されている機構機能と同一のものである。オープンフロー処理解決部107は、検索受信部LookupReceiver130と、処理解決部ActionResolver131を備える。検索受信部LookupReceiver130は、各テーブルの検索結果を受け取る。処理解決部ActionResolver131は、各テーブルの検索結果を基に、オープンフロー処理を決定する。図13を参照して、TCAMOF検索機能部116にオープンフロー処理解決部107を含められない場合におけるオープンフロー処理解決部107の動作について説明する。TCAMOF検索機能部116にオープンフロー処理解決部107を含めることができない場合、スイッチ102に、図13で示されるようなオープンフロー処理解決部107を搭載する。オープンフロー処理解決部107において、検索受信部LookupReceiver130は、各テーブルの検索結果を受け取る。処理解決部ActionResolver131は、各テーブルの検索結果、及び予め設定されたテーブル優先順位Priorityによりオープンフローのアクションを決定し、決定されたアクションをアクション機能部111に通知する。[他の実施例]なお、上記の各実施形態において、スイッチ102はオープンフロースイッチであるものとして説明しているが、オープンフロースイッチは例示に過ぎない。実際には、オープンフロースイッチに限定されるものではなく、オープンフロースイッチと同様の機構機能を有するスイッチに対しても、本発明を適用することは可能である。<本発明の特徴>本発明は、複数のテーブルの集約によるオープンフローテーブルの拡張方法に関する。本発明は、スイッチの単一テーブル主にTCAMで実現されるオープンフローテーブルについて、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することによりオープンフローテーブルフローエントリ数の拡張を実現するものである。なお、オープンフローでは、これまで同一のNW機器ルータ/スイッチ等に実装されていた転送機能、制御機能を分離し、転送機能はNW機器に残し、制御機能は外出しのコントローラに任せる。コントローラは、遠隔からオープンフロープロトコルを用いてNW機器のオープンフローテーブルを操作することによりNW装置の挙動を制御する。オープンフローテーブルは、{Match条件、Action、統計情報}の3種の情報からなるフローエントリ群から構成される。オープンフローでは、この適合Match条件から制御対象とするフローを定義し、このフローを単位としてアクションActionや統計情報の取得を行うことができる。オープンフローの{Match条件、Action、統計情報}の概要は、以下の通りである。[Match条件]Ingressport入力ポート/SrcMAC送信元MACアドレス/DstMAC宛先MACアドレス/Ethertypeタイプフィールド/VLANID仮想LAN識別情報/VLANPriority仮想LAN優先順位/SrcIP送信元IPアドレス/DstIP宛先IPアドレス/IPprotocolIPプロトコル番号/IPToSupper6bit/SrcPort送信元ポート番号/DstPort宛先ポート番号[Action]Forwardある物理ポートから出力/All入力ポート以外全てから出力/Controllerコントローラ向けに出力/Local自装置のローカルスタック宛に出力/テーブルオープンフローテーブルの内容に従って出力/In_port入力ポートから出力/Normalレガシーテーブルの内容を用いて出力/Flood入力ポート、及びSpanningTreeのブロックポート以外全てから出力/Dropパケットを破棄/Modify-Fieldパケットのヘッダー情報を書き換え例えば、Modify-Fieldの場合は、VLANID、Vlan優先順位Priority、SrcMAC、DstMAC、SrcIP、DstIP、IPToS、SrcPort、DstPortを書き換え可能である。[統計情報]テーブル単位、フロー単位、物理ポート単位、キューQueue単位での各種統計情報。本発明は、スイッチのテーブル主にTCAMの容量自体を増やすことなく、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することにより、装置としてのオープンフローテーブル合計フローエントリ数の拡張を実現するものである。すなわち、スイッチ内部で複数のテーブルを使用して、コントローラからこれを大容量オープンフローテーブルとして用いることを可能とした。具体的には、各テーブルの機能Match条件/Action差分を吸収してオープンフローテーブルとしての統合を実現した。なお、スイッチの複数のテーブルは、それぞれ本来の用途例えば、L2テーブルであればL2中継、L3テーブルであればL3中継があるため、全てのリソースを使用するのではなく、その一部を切り出す形で使用する。以上のように、本発明の特徴は、複数のテーブルのMatch条件/Action差分を吸収して、オープンフローテーブルとして統合することと、その際の具体的なアクション決定方法を提供することである。本発明では、スイッチの複数のテーブルリソースの一部をオープンフローテーブルとして使用する。また、本発明では、スイッチの各テーブルを、実現可能な機能Match条件/Actionに応じて機能制限付きのオープンフローテーブルリソースとして取り扱っている。また、本発明では、オープンフロー処理解決部により、各テーブルリソースの機能差分Match条件/Actionを吸収して、オープンフローテーブルリソースとして統合している。また、本発明では、オープンフロー処理解決部において、TCAMを含むテーブル間の優先順位Priorityによりアクション決定を実現している。なお、TCAMOF検索が最後に行われるスイッチにおいては、オープンフロー処理解決部をTCAMOF検索機能部に含める形で実現している。更に、本発明では、複数のテーブルから構成されるオープンフローテーブルを、コントローラから柔軟に制御する。また、本発明では、複数のテーブルを1つのオープンフローテーブルとして使用する場合、優先順位Priorityの範囲でのテーブル識別を実現している。また、本発明では、複数テーブルを個別のオープンフローテーブルとして使用する場合、テーブルIDでのテーブル識別を実現している。以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。なお、本出願は、日本出願番号2010-200690に基づく優先権を主張するものであり、日本出願番号2010-200690における開示内容は引用により本出願に組み込まれる。