(57)【特許請求の範囲】
【請求項１】
優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、
所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリが、前記複数の優先度グループのうちのどの優先度グループに属するかと、前記優先度グループ内の位置を決定する第２レベルの優先度と、により前記フローテーブルへの格納位置を決定するエントリ管理部と、
前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、
を備えたパケット処理装置。
【請求項２】
前記第２レベルの優先度によって決定される位置に空きが無い場合、前記エントリ管理部は、前記第２レベルの優先度によって決定される位置を起点として、同一優先度のグループの最寄の空き領域の方向に、前記新規フローエントリと同一の優先度グループに属するフローエントリをずらして前記新規フローエントリを格納する請求項１のパケット処理装置。
【請求項３】
前記エントリ管理部は、前記フローテーブルのエントリと１対１に対応する管理用エントリを持つエントリ管理テーブルを用いて、前記フローテーブルに設定したフローエントリを管理する請求項１又は２のパケット処理装置。
【請求項４】
前記第２のレベルの優先度として、前記所定の制御装置から新規フローエントリを受信した順序を用いる請求項１のパケット処理装置。
【請求項５】
前記エントリ管理部は、新規フローエントリを受信した際に、前記フローテーブルに、前記新規フローエントリが属する優先度グループの空き領域が無い場合、前記新規フローエントリが属する優先度グループよりも下位の優先度グループの空き領域に前記新規フローエントリを格納する請求項１から４いずれか一のパケット処理装置。
【請求項６】
前記第２のレベルの優先度に対応する前記新規フローエントリが属する優先度グループのグループ内の位置の空き領域が無い場合、前記新規フローエントリを格納する優先度グループとして、空き領域を有する優先度グループのうち優先度が最も下位の優先度グループの空き領域に前記新規フローエントリを格納する請求項５のパケット処理装置。
【請求項７】
優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、を備えてパケット処理装置における新規フローエントリの配置方法であって、
所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリに含まれる優先度情報に基づいて、前記新規フローエントリが属する優先度グループを判別するステップと、
前記新規フローエントリに含まれる優先度情報に基づいて、前記判別した優先度グループ内の位置を決定する第２レベルの優先度を判別するステップと、
前記フローテーブルの、前記優先度グループと前記第２レベルの優先度に対応する領域に前記新規フローエントリを格納するステップと、を含むフローエントリの配置方法。
【請求項８】
優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、を備えてパケット処理装置に搭載されたコンピュータに、
所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリに含まれる優先度情報に基づいて、前記新規フローエントリが属する優先度グループを判別する処理と、
前記新規フローエントリに含まれる優先度情報に基づいて、前記判別した優先度グループ内の位置を決定する第２レベルの優先度を判別する処理と、
前記フローテーブルの、前記優先度グループと前記第２レベルの優先度に対応する領域に前記新規フローエントリを格納する処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−２７６７３４号（２０１２年１２月１９日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、パケット処理装置、フローエントリの配置方法及びプログラムに関し、特に、複数のフローエントリを保持してパケットを処理するパケット処理装置、フローエントリの配置方法及びプログラムに関する。
【背景技術】
【０００２】
非特許文献１、２に、オープンフローという技術が提案されている。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献２に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチ条件（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、処理内容を定義したインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）と、の組が定義される（非特許文献２の「５．２  Ｆｌｏｗ  Ｔａｂｌｅ」の項参照）。【０００３】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチ条件（非特許文献２の「５．３  Ｍａｔｃｈｉｎｇ」参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対してエントリ設定の要求、即ち、受信パケットを処理するための制御情報の送信要求（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する。オープンフロースイッチは、処理内容が定められたフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを制御情報として用いてパケット転送を行う。【０００４】
また、特許文献１には、ネットワークから情報を収集する情報蓄積手段と、情報の優先度を判定する優先度判定手段と、情報に対してユーザの興味に応じた重要度を判定する重要度判定手段と、ユーザの興味を示す情報を管理する興味情報管理手段と、優先度に応じて情報の出力・蓄積を判定する優先度比較手段と、情報を重要度の高い順に並び替える並び替え手段と、前記情報を重要度に応じた詳細度に変換する詳細度決定手段と、簡約化した情報を生成する簡約手段と、蓄積された情報の整理を行う履歴管理手段と、収集された情報の蓄積をする情報蓄積手段と、出力している情報の優先度を記録する優先度監視手段と、端末に蓄積された情報の出力およびネットワークからの情報の収集のタイミングを制御する提示タイミング制御手段とを備え、ネットワークから収集した情報を適切なタイミングと分量で提示するという情報提示装置が開示されている。【０００５】
また、特許文献２には、ＡＴＭスイッチング装置に記憶されているＡＴＭセルをそのセルが持っているデッドラインによって管理しつつ送信させるためのバッファ制御用シフトレジスタ（優先処理機能を有するシフトレジスタ）が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−８１０９９号公報
【特許文献２】特開平７−２５４９０６号公報
【非特許文献】
【０００７】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年１１月２４日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．３．１  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０４）、［ｏｎｌｉｎｅ］、［平成２４（２０１２）年１２月１１日検索］、インターネット〈URL: https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.1.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以下の分析は、本発明によって与えられたものである。非特許文献１、２のオープンフロースイッチにおいて、フローエントリを優先度順に並べて保持し、フローエントリの検索を高速化するものが知られている。【０００９】
上記機能を持つオープンフロースイッチは、オープンフローコントローラから、新しいフローエントリを受け取ると、次のように、フローテーブルに格納する。オープンフロースイッチは、まず、既存のフローエントリの優先度と、新規フローエントリの優先度とを比較する。前記比較の結果、オープンフロースイッチは、新規フローエントリと優先度が最も近い高優先度側のフローエントリと、低優先度側のフローエントリと、を検出する。そして、オープンフロースイッチは、これら２つのフローエントリの登録場所を算出し、新規フローエントリをその中間位置に格納する。【００１０】
このとき、フローテーブルの前記２つのフローエントリが連続して格納されていて、中間位置に空き領域が無い場合がある。この場合、オープンフロースイッチは、前記格納位置に最も近い空き領域を探し、所定エントリ数分既存フローエントリの格納位置をシフトさせる処理を行っている。このときのシフト量は、例えば、シフト先の空き領域のサイズに応じて決定している。【００１１】
このため、新規フローエントリの優先度が特定の値に偏った場合、フローテーブル内のフローエントリの並び替えの頻度が多くなるという問題点がある。また、新規フローエントリの優先度によっては、１回のフローエントリ登録に伴うフローエントリのシフトによる並び替えが多量になり、並び替えのための処理時間が大きくなり、新規フローエントリの登録に要する時間が長くなるという問題点もある。【００１２】
本発明は、上記したオープンフロースイッチに代表されるフローエントリを優先度順に並べて保持するパケット処理装置における新規フローエントリの登録時の並び替えコストの低減に貢献できるパケット処理装置、フローエントリの配置方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
第１の視点によれば、優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリが、前記複数の優先度グループのうちのどの優先度グループに属するかと、前記優先度グループ内の位置を決定する第２レベルの優先度と、により前記フローテーブルへの格納位置を決定するエントリ管理部と、前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、を備えたパケット処理装置が提供される。【００１４】
第２の視点によれば、優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、を備えてパケット処理装置における新規フローエントリの配置方法であって、所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリに含まれる優先度情報に基づいて、前記新規フローエントリが属する優先度グループを判別するステップと、前記新規フローエントリに含まれる優先度情報に基づいて、前記判別した優先度グループ内の位置を決定する第２レベルの優先度を判別するステップと、前記フローテーブルの、前記優先度グループと前記第２レベルの優先度に対応する領域に前記新規フローエントリを格納するステップと、を含むフローエントリの配置方法が提供される。本方法は、フローエントリを優先度順に並べて保持してパケットを処理するパケット処理装置という、特定の機械に結びつけられている。【００１５】
第３の視点によれば、優先度グループの順に割り当てられた領域にフローエントリを格納可能なフローテーブルと、前記フローテーブルの先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索して、前記受信パケットに適用する処理を決定するエントリ検索部と、を備えてパケット処理装置に搭載されたコンピュータに、所定の制御装置から新規フローエントリを受信した場合、前記新規フローエントリに含まれる優先度情報に基づいて、前記新規フローエントリが属する優先度グループを判別する処理と、前記新規フローエントリに含まれる優先度情報に基づいて、前記判別した優先度グループ内の位置を決定する第２レベルの優先度を判別する処理と、前記フローテーブルの、前記優先度グループと前記第２レベルの優先度に対応する領域に前記新規フローエントリを格納する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１６】
本発明によれば、フローエントリを優先度順に並べて保持するパケット処理装置における新規フローエントリの登録時の並び替えコストを低減することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態のパケット処理装置の構成を示す図である。
【図２】本発明の第１の実施形態のパケット処理装置の詳細構成を示す図である。
【図３】本発明の第１の実施形態のパケット処理装置のエントリ検索部に保持されるフローテーブルの一例を示す図である。
【図４】本発明の第１の実施形態のパケット処理装置のエントリ管理部に保持されるエントリ管理テーブルの一例を示す図である。
【図５】図３のエントリ管理テーブルと図４のフローテーブルとの対応関係を示す図である。
【図６】本発明の第１の実施形態の動作を表したシーケンス図である。
【図７】図５に示す状態において、新たに新規フローエントリＦを受信した場合の各テーブルの変化（シフト不要）を表した図である。
【図８】図６のステップＳ００３においてエントリのシフト処理が必要と判断した場合の動作を表したシーケンス図である。
【図９】図７に示す状態において、新たに新規フローエントリＧを受信した場合の各テーブルの変化（シフト要）を表した図である。
【図１０】図９の続図である。
【図１１】図１０の続図である。
【発明を実施するための形態】
【００１８】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００１９】
本発明は、その一実施形態において、エントリ管理部（図１の２２）と、フローテーブル（図１の２１１）を先頭から走査して、受信パケットに適合するマッチ条件を持つエントリを検索し、前記受信パケットに適用する処理を決定するエントリ検索部（図１の２１）と、を備えたパケット処理装置にて実現できる。
【００２０】
より具体的には、フローテーブル（図１の２１１）は、優先度グループの順に割り当てられた領域にフローエントリを格納可能となっている。そして、エントリ管理部（図１の２２）は、所定の制御装置（図１の１０）から新規フローエントリを受信した場合、新規フローエントリが、前記複数の優先度グループのうちのどの優先度グループに属するかと、前記優先度グループ内の位置を決定する第２レベルの優先度により前記フローテーブルへの格納位置を決定する。
【００２１】
前述のように、フローテーブル（図１の２１１）は、優先度グループの順に領域が割り当てられているため、新規フローエントリが属する優先度の領域に空き領域が存在すれば、優先度に基づく並び替えは不要となる。また、新規フローエントリが属する優先度グループの該当位置に空き領域が存在しない場合であっても、最寄りの空き領域を探してフローエントリをずらす（シフトさせる）処理を行えばよく、新規フローエントリの登録時の並び替えコストを低減することができる。
【００２２】
［第１の実施形態］
図１は、本発明の第１の実施形態のパケット処理装置の構成を示す図である。図１を参照すると、パケット処理装置２０に対してフローテーブル２１１へのフローエントリの設定を指示するフローエントリ設定メッセージを送信する制御装置１０と、前記制御装置１０から受信したフローエントリを参照して、他のパケット処理装置、端末、サーバ等から受信したパケットを処理するパケット処理装置２０とを含む構成が示されている。
【００２３】
制御装置１０は、パケット処理装置２０からフローエントリの設定要求や予め定めた通信ポリシに従って、パケット処理装置２０に設定するフローエントリを作成し、パケット処理装置２０に対してフローエントリ設定メッセージを送信する。なお、フローエントリとしては、パケットヘッダと照合するマッチ条件（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と、処理内容を定義したインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）と、を対応付けたものを用いることができる。なお、このような制御装置１０としては、非特許文献１、２のオープンフローコントローラを用いることができる。
【００２４】
パケット処理装置２０は、フローテーブル２１１から受信パケットに適合するマッチ条件を持つフローエントリを検索するエントリ検索部２１と、フローテーブル２１１におけるフローエントリの配置等を管理するエントリ管理部２２とを備えている。このような制御装置１０としては、非特許文献１、２のオープンスイッチと同等の機能を有する物理スイッチのほか、仮想化サーバ上で動作する仮想スイッチ、あるいは、ユーザ端末上で動作して上位アプリケーションからのパケットを処理するソフトウェアスイッチ等が挙げられる。
【００２５】
図２は、上記パケット処理装置の詳細構成を示す図である。図２の例では、フローテーブル２１１は、優先度が高い順に、Ｎ個のフローエントリを格納可能となっている。エントリ検索部２１は、他のパケット処理装置、端末、サーバ等からパケットを受信すると、フローテーブル２１１のうち優先度の最も高いエントリ１から順番に、受信パケットのヘッダ等と、フローエントリのマッチ条件とを照合してゆく。前記照合の結果、図２のエントリＸで受信パケットとマッチ条件が一致した場合、エントリ検索部２１は、前記マッチ条件が一致したフローエントリのインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）に記述された処理内容（受信パケットの転送、ヘッダ書換え等）を実行する。また、前記のように受信パケットに適合するフローエントリが見つかった場合（図２の「条件一致」）、エントリ検索部２１は、エントリＸ以降のフローエントリとの照合を省略する（図２の「検索省略」）。
【００２６】
図３は、フローテーブル２１１の一例を示す図である。本実施形態のフローテーブル２１１には、優先度グループの順に複数の領域が割り当てられ、優先度グループ順にフローエントリを格納可能となっている。また、同一の優先度グループ内に属するフローエントリ同士のグループ内優先度（第２レベルの優先度）の高低は、個々の優先度グループに割り当てられた領域内での格納位置（本実施形態の場合、優先度が高いほど上位に格納される）にて表される。例えば、図３のエントリ１、エントリ２は、共に既存フローエントリの中では最も優先順位の高い優先度グループ＝２に属しており、エントリ１の方がエントリ２よりもグループ内優先度（第２レベルの優先度）が高いため、エントリ１、エントリ２の順にフローエントリが設定されている。同様に、図３のエントリ（Ｎ−１）、エントリＮは、共に既存フローエントリの中では最も優先順位の低い優先度グループ＝８に属しており、エントリ（Ｎ−１）の方がエントリＮよりもグループ内優先度（第２レベルの優先度）が高いため、エントリ（Ｎ−１）、エントリＮの順にフローエントリが設定されている。なお、図３において「：」が記されている領域は空きエントリであるものとする。
【００２７】
また、フローテーブル２１１の各優先度グループに割り当てるフローエントリ格納用の領域の数は、事前に決めていてもよいし、運用中に動的に変更してもよい。これにより、フローテーブル２１１の各優先度グループの空きエントリの数が容易に把握できるようになる。
【００２８】
エントリ管理部２２は、フローテーブル２１１に設定されているフローエントリの内容や位置を管理するエントリ管理テーブル２２２と、前記エントリ管理テーブル２２２に基づいて、フローテーブル２１１への書込み要求等の操作を行うエントリ設定部２２１とを備えている。
【００２９】
図４は、エントリ管理テーブル２２２の一例を示す図である。図４を参照すると、フローテーブル２１１に格納された個々のフローエントリについて、優先度グループ、グループ内優先度（第２レベルの優先度）、フローエントリの内容と、エントリ番号とを対応付けたエントリが示されている。例えば、エントリ管理テーブル２２２のＮｏ．１のエントリは、図３のフローテーブル２１１のエントリ（Ｎ−１）の格納位置（優先度）とフローエントリの内容とを対応付けた内容となっている。
【００３０】
図５は、図３のフローテーブル２１１と図４のエントリ管理テーブル２２２との対応関係を示す図である。エントリ設定部２２１は、制御装置１０から新規フローエントリ設定メッセージを受信すると、その内容から優先度グループ及びグループ内優先度を求め、エントリ管理テーブル２２２に登録し、フローテーブル２１１の優先度グループ及びグループ内優先度によって特定される位置に、フローエントリを登録する。また、エントリ設定部２２１は、制御装置１０からフローエントリ削除指示メッセージを受信すると、エントリ管理テーブル２２２を参照して、フローテーブル２１１の該当フローエントリを削除した後、エントリ管理テーブル２２２の前記削除したフローエントリに対応するエントリを削除する。
【００３１】
なお、新規フローエントリを登録する場合において、例えば図３のエントリ１とエントリ２の間、エントリ（Ｎ−１）とエントリＮとの間のように、フローテーブル２１１において、優先度グループ及びグループ内優先度によって特定される位置に空きが無い場合が起こりうる。この場合、エントリ設定部２２１は、最寄りの空き領域を探してフローエントリをシフトさせて、当該新規フローエントリを格納する領域を確保する。例えば、制御装置１０から、図３のエントリ１とエントリ２の間に格納すべきフローエントリを受け取った場合、エントリ設定部２２１は、エントリ２を一段下にずらし、これまでエントリ２が格納されていた場所に、新規フローエントリを格納する。
【００３２】
なお、図１、２に示したパケット処理装置２０のエントリ検索部２２は、パケット処理装置２０を構成するコンピュータに、そのハードウェアを用いて、上記したエントリ管理テーブル２２２と連動したフローテーブル２１１の操作処理を実行させるコンピュータプログラムにより実現することもできる。
【００３３】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図６は、本発明の第１の実施形態の動作を表したシーケンス図である。制御装置１０が、パケット処理装置２０からフローエントリの設定要求や予め定めた通信ポリシに従って、パケット処理装置２０に設定するフローエントリを作成し、パケット処理装置２０に対してフローエントリ設定メッセージを送信する（ステップＳ００１）。
【００３４】
新規フローエントリ設定メッセージを受信すると、パケット処理装置２０は、新規フローエントリが属する優先度グループと、グループ内の優先度（第２レベルの優先度）を特定する（ステップＳ００２）。優先度グループ及びグループ内の優先度の特定方法としては種々の方法が考えられるが、例えば、制御装置１０からの新規フローエントリ設定メッセージにて指定された優先度情報の上位ビットを優先度グループの特定に用い、下位ビットをグループ内の優先度の特定に用いることができる。
【００３５】
次に、パケット処理装置２０は、前記特定した優先度グループとグループ内の優先度に対応するフローテーブル２１１の位置に空きがあるか否か、即ち、既存エントリのシフト操作が必要か否かを確認する（ステップＳ００３）。
【００３６】
前記確認の結果、前記特定した優先度グループとグループ内の優先度に対応するフローテーブル２１１の位置に空きがある、即ち、既存エントリのシフト操作を行わなくとも、新規フローエントリを格納可能である場合（ステップＳ００３のＮｏ）、パケット処理装置２０は、フローテーブル２１１の該当位置に新規フローエントリを登録し（ステップＳ００４、Ｓ００５）、エントリ管理テーブル２２２の該当エントリのエントリ番号欄にフローテーブル２１１上の位置（エントリ番号）を記録する（ステップＳ００６）。
【００３７】
図７は、図５に示す状態において、新たにグループ優先度“４”、グループ内優先度“２”を持つ新規フローエントリＦを受信した場合の各テーブルの変化を表した図である。パケット処理装置２０は、フローテーブル２１１のグループ優先度“４”、グループ内優先度“２”に対応する位置に空き領域があるか否かを確認する。図５の時点では、フローテーブル２１１のグループ優先度“４”、グループ内優先度“２”に対応する位置は空いているので、パケット処理装置２０は、フローテーブル２１１の上から（Ｘ−１）番目の領域にフローエントリＦを登録する。また、パケット処理装置２０は、エントリ管理テーブル２２２のフローエントリＦのエントリ番号として（Ｘ−１）を登録する。
【００３８】
図８は、図６のステップＳ００３の確認の結果、特定した優先度グループとグループ内の優先度に対応するフローテーブル２１１の位置に空きがない、即ち、既存エントリのシフト操作が必要であると判定した場合（ステップＳ００３のＹｅｓ）の動作を示すシーケンス図である。この場合、パケット処理装置２０は、フローテーブル２１１の該当位置に最も近い同一優先度グループの空き領域を検索する（ステップＳ１０１）。前記検索の結果、同一優先度グループの空き領域が見つからなかった場合、パケット処理装置２０は、フローエントリ設定メッセージを破棄し、制御装置１０に対し、エラーを返す（ステップＳ１０３）。制御装置１０は、前記エラー応答を受けて、フローテーブル２１１からの不要なフローエントリの削除等を検討することになる。
【００３９】
一方、前記検索の結果、同一優先度グループの空き領域が見つかった場合、パケット処理装置２０は、前記特定した優先度グループとグループ内の優先度に対応する位置を起点として、前記空き領域の方向に、同一の優先度グループに属するフローエントリをずらして空き領域を作成する（ステップＳ１０４）。その後、パケット処理装置２０は、図６のステップＳ００４以下に戻って、フローテーブル２１１への新規フローエントリの登録、エントリ管理テーブル２２２の更新を実行する。
【００４０】
図９は、図７に示す状態において、新たにグループ優先度“２”、グループ内優先度“４”を持つ新規フローエントリＧを受信した場合の各テーブルの変化を表した図である。パケット処理装置２０は、フローテーブル２１１のグループ優先度“２”、グループ内優先度“４”に対応する位置に空き領域があるか否かを確認する。図７の時点では、グループ優先度“２”に属するエントリ１（グループ内優先度“２”）、 エントリ２（グループ内優先度“６”）が連続して格納されており、グループ内優先度“４”フローテーブル２１１のグループ優先度“２”、グループ内優先度“４”に対応する位置は空いていない。
【００４１】
そこで、パケット処理装置２０は、図１０に示すように、フローテーブル２１１のエントリ２の後に空き領域があることを検出し、エントリ２の格納位置を一つ下にずらすシフト処理を実行する。また、これに併せて、パケット処理装置２０は、エントリ管理テーブル２２２の従来エントリ番号２であったエントリのエントリ番号を「３」に修正する。なお、ここでのシフト操作としては、新規フローエントリの分だけ、即ち１つだけシフトさせてもよいし、将来の利用を見越して複数の領域を空けるようシフトさせてもよい。
【００４２】
前記シフト処理によって空き領域が確保できると、パケット処理装置２０は、図１１に示すように、フローテーブル２１１のエントリ番号２として、新規フローエントリＧ（新エントリ２）を登録する。また、パケット処理装置２０は、エントリ管理テーブル２２２の新規フローエントリＧのエントリ番号欄に「２」に記録する。
【００４３】
以上の説明から明らかなように、本実施形態によれば、優先度順にフローエントリを並べることによるマッチング処理の高速性と、新規フローエントリの登録時の並び替えコストの低減とを両立することができる。
【００４４】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成や要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【００４５】
例えば、上記した実施形態では、制御装置１０からの新規フローエントリ設定メッセージにて指定された優先度情報の下位ビットをグループ内の優先度として用いるものとして説明したが、制御装置１０からのフローエントリ設定メッセージの到着順序をグループ内優先度（第２レベルの優先度）として用いることもできる。このようにすることで、フローエントリのシフト処理の発生頻度をより抑えることが可能になる。
【００４６】
また、上記した実施形態では、新規フローエントリを格納する同一優先度グループの空き領域が見つからなかった場合、パケット処理装置２０は、フローエントリ設定メッセージを破棄し、制御装置１０に対し、エラーを返すものとして説明したが、以下のような変形実施を行うこともできる。
【００４７】
（１）フローテーブル２１１の他の優先度グループに空きが有る場合は、当該空き領域に新規フローエントリを登録する。併せてフローテーブル２１１の該当優先度グループに割り当てられた領域に、前記新規フローエントリを登録した領域を追加する（空き領域のあった他の優先度グループに割り当てられた領域から、前記前記新規フローエントリを登録した領域を削除する）。また、この場合において、空き領域のある優先度グループが複数ある場合、最も優先度の低い優先度グループや最も優先度の近い優先度グループを選択することができる。なお、この場合において、特定の優先度グループへの領域の割り当てが集中しないよう、該当優先度グループのフローエントリを削除したタイミングで、空き領域の割り当てを元の優先度グループに戻してもよい。
【００４８】
（２）フローテーブル２１１のすべての優先度グループに空きがない場合は、所定の基準で選択したフローエントリを削除し、制御装置１０に対して報告する。なお、前記所定の基準としては、優先度グループ及びグループ内優先度が低いもの、最も最近使われなかったもの（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等の基準により削除対象のフローエントリを選択することができる。
【００４９】
（３）また、フローエントリ２１１のいくつかの領域を、初期状態においていずれの優先度グループにも属さない共用領域として確保しておいてもよい。このようにすれば、フローテーブル２１１の領域をより効率よく利用できる。
【００５０】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点によるパケット処理装置参照）
［第２の形態］
第１の形態のパケット処理装置において、
前記第２レベルの優先度によって決定される位置に空きが無い場合、前記エントリ管理部は、前記第２レベルの優先度によって決定される位置を起点として、同一優先度のグループの最寄の空き領域の方向に、前記新規フローエントリと同一の優先度グループに属するフローエントリをずらして前記新規フローエントリを格納するパケット処理装置。
［第３の形態］
第１又は第２の形態のパケット処理装置において、
前記エントリ管理部は、前記フローテーブルのエントリと１対１に対応する管理用エントリを持つエントリ管理テーブルを用いて、前記フローテーブルに設定したフローエントリを管理するパケット処理装置。
［第４の形態］
第１の形態のパケット処理装置において、
前記第２のレベルの優先度として、前記所定の制御装置から新規フローエントリを受信した順序を用いるパケット処理装置。
［第５の形態］
第１から第４いずれか一の形態のパケット処理装置において、
前記エントリ管理部は、新規フローエントリを受信した際に、前記フローテーブルに、前記新規フローエントリが属する優先度グループの空き領域が無い場合、前記新規フローエントリが属する優先度グループよりも下位の優先度グループの空き領域に前記新規フローエントリを格納するパケット処理装置。
［第６の形態］
第５の形態のパケット処理装置において、
前記第２のレベルの優先度に対応する前記新規フローエントリが属する優先度グループのグループ内の位置の空き領域が無い場合、前記新規フローエントリを格納する優先度グループとして、空き領域を有する優先度グループのうち優先度が最も下位の優先度グループの空き領域に前記新規フローエントリを格納するパケット処理装置。
［第７の形態］
（上記第２の視点によるフローエントリの配置方法参照）
［第８の形態］
（上記第３の視点によるプログラム参照）
なお、上記第７、第８の形態は、第１の形態と同様に、第２〜第６の形態に展開することが可能である。
【００５１】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００５２】
１０  制御装置
２０  パケット処理装置
２１  エントリ検索部  
２２  エントリ管理部
２１１  フローテーブル
２２１  エントリ設定部
２２２  エントリ管理テーブル
【図１】
0005967222.tif 000002
【図２】
0005967222.tif 000003
【図３】
0005967222.tif 000004
【図４】
0005967222.tif 000005
【図５】
0005967222.tif 000006
【図６】
0005967222.tif 000007
【図７】
0005967222.tif 000008
【図８】
0005967222.tif 000009
【図９】
0005967222.tif 000010
【図１０】
0005967222.tif 000011
【図１１】
0005967222.tif 000012