(57)【特許請求の範囲】
【請求項１】
線形検索を行う、ワイルドカードを含むエントリで構成されるフロー制御情報テーブルと、
ハッシュ検索を行う、完全一致エントリで構成されるパケット転送テーブルと、
前記フロー制御情報テーブルのワイルドカードでないフィールドに対して、受信パケット情報と一致判定をＧＰＵで並列実施することで、一致するエントリを検索する、およびパケット転送テーブルにハッシュ検索を行うことで、一致するエントリを検索する検索処理制御手段と、
を備え、
前記検索処理制御手段は、
前記フロー制御情報テーブルから複数エントリを選択し、各エントリのワイルドカードが設定されているフィールドに１を、それ以外には０を代入した一致判定行列を生成する手段と、
前記一致判定行列のカラム単位で０が設定されているフィールドの受信パケット情報との一致判定をＧＰＵで並列実施し、一致したフィールドに対応する前記一致判定行列の行列要素に１を代入する手段と、
前記一致判定行列で全てのフィールドが１であるエントリを一致エントリとする手段と、
を含むことを特徴とするフロー単位パケット転送のための宛先検索装置。
【請求項２】
前記検索処理制御手段は、
前記フロー制御情報テーブルに一致するエントリが存在した場合に、前記パケット転送テーブルに当該受信パケット情報に相当するエントリを追加することを特徴とする請求項１に記載の宛先検索装置。
【請求項３】
前記パケット転送テーブルは、削除フラグを備え、
前記検索処理制御手段は、検索されたエントリの削除フラグを「非対象」で上書きし、
前記削除フラグが「対象」であるエントリを削除し、前記削除フラグが「非対象」であるエントリの削除フラグを「対象」で上書きするパケット転送テーブル管理手段を、
さらに備えることを特徴とする請求項１又は請求項２に記載の宛先検索装置。
【請求項４】
線形検索を行う、ワイルドカードを含むエントリで構成されるフロー制御情報テーブルのワイルドカードでないフィールドに対して、受信パケット情報と一致判定をＧＰＵで並列実施することで、一致するエントリを検索するステップと、
完全一致エントリで構成されるパケット転送テーブルにハッシュ検索を行うことで、一致するエントリを検索するステップと、
前記フロー制御情報テーブルから複数エントリを選択し、各エントリのワイルドカードが設定されているフィールドに１を、それ以外には０を代入した一致判定行列を生成するステップと、
前記一致判定行列のカラム単位で０が設定されているフィールドの受信パケット情報との一致判定をＧＰＵで並列実施し、一致したフィールドに対応する前記一致判定行列の行列要素に１を代入するステップと、
前記一致判定行列で全てのフィールドが１であるエントリを一致エントリとするステップと、
を有することを特徴とするフロー単位パケット転送のための宛先検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロースイッチの宛先検索において、ワイルドカードを含むフローテーブル上の宛先検索を行うための、宛先検索装置および検索方法に関するものである。
【背景技術】
【０００２】
近年、通信制御をフロー単位で行うことにより、より粒度の細かいサービス品質制御を可能とするフローベースネットワーキングが検討されている。フローとは、ＩＰとポート番号で識別される、アプリケーション毎の一連の通信のまとまりであり、フローベースネットワーキングではユーザやアプリケーションに応じたＱｏＳ制御や経路制御が可能となる。
【０００３】
フローベースネットワーキングの中継ノードであるフロースイッチでは、フローテーブルに登録されたエントリを参照して、パケットを適切な転送先へ送出する。フローエントリは、エントリの優先度、受信ＩＦやヘッダの各情報に相当するフィールド（一致条件）、転送先情報によって構成される。
【０００４】
フローに対する柔軟な制御を可能とするため、ＧＰＵ等により高速化したソフトウェアベースのフロースイッチに関する検討が進められている。
【０００５】
従来の宛先検索に関する手法としては、ソフトウェアルータにおける経路表検索、フロールータにおける完全一致検索、線形検索といった方法が取られてきた。
【０００６】
非特許文献１では、Patricia-Treeという二分木検索の応用手法が述べられている。本手法はＩＰ経路検索における最長プレフィックス一致を実現する検索方法として、LinuxやFreeBSD等ＯＳの宛先検索に利用されている。
【０００７】
非特許文献２では、商用のフロールータにおけるフロー検索方法が述べられている。全てのフローを完全一致エントリとすることで、ハッシュによるフローの高速検索を可能としている。
【０００８】
上記課題を解決するため本発明のフロー単位パケット転送のための宛先検索装置は、線形検索を行う、ワイルドカードを含むエントリで構成されるフロー制御情報テーブルと、 ハッシュ検索を行う、完全一致エントリで構成されるパケット転送テーブルと、前記フロー制御情報テーブルのワイルドカードでないフィールドに対して、受信パケット情報と一致判定をＧＰＵで並列実施することで、一致するエントリを検索する、およびパケット転送テーブルにハッシュ検索を行うことで、一致するエントリを検索する検索処理制御手段と、を備え、
前記検索処理制御手段は、前記フロー制御情報テーブルから複数エントリを選択し、各エントリのワイルドカードが設定されているフィールドに１を、それ以外には０を代入した一致判定行列を生成する手段と、前記一致判定行列のカラム単位で０が設定されているフィールドの受信パケット情報との一致判定をＧＰＵで並列実施し、一致したフィールドに対応する前記一致判定行列の行列要素に１を代入する手段と、前記一致判定行列で全てのフィールドが１であるエントリを一致エントリとする手段と、を含む。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Donald R. Morrisonら著 "PATRICIA: Practical Algorithm To Retrieve Information Coded in Alpha numeric"  Journal of the ACM,Volume 15 Issue 4  1968年10月
【非特許文献２】L. G. Roberts著 "The Next Generation of IP - Flow Routing"  SSGRR 2003S  2003年7月
【非特許文献３】Sangjin Hanら著 "PacketShader: a GPU-accelerated Software Router"  Proceedings of ACM SIGCOMM 2010  2010年 8月
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、非特許文献１に代表される従来のＩＰ経路検索は、最長プレフィックス一致検索を前提としており、複数フィールドを一致条件に含むフローテーブルの検索には適用できない。非特許文献２に示される完全一致検索を適用するには、全てのフローに対してフローエントリを定義する必要がある。運用を考えると大量のフローエントリの設定はスケール性に乏しい。非特許文献３ではワイルドカード検索も考慮されているが、線形検索のためエントリ数が増えた場合に性能劣化の影響が大きくなる。
【００１１】
したがって、本発明では、ソフトウェアベースのフロースイッチにおいて、ワイルドカードを含むフローテーブルの検索処理を高速化するフロー単位パケット転送のための宛先検索装置および検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため本発明のフロー単位パケット転送のための宛先検索装置は、線形検索を行う、ワイルドカードを含むエントリで構成されるフロー制御情報テーブルと、ハッシュ検索を行う、完全一致エントリで構成されるパケット転送テーブルと、前記フロー制御情報テーブルのワイルドカードでないフィールドに対して、受信パケット情報と一致判定をＧＰＵで並列実施することで、一致するエントリを検索する、およびパケット転送テーブルにハッシュ検索を行うことで、一致するエントリを検索する検索処理制御手段とを備える。
【００１３】
また、前記検索処理制御手段は、最初に前記パケット転送テーブルを検索し、該当するエントリが存在しない場合に前記フロー制御情報テーブルを検索することも好ましい。
【００１５】
また、前記検索処理制御手段は、前記フロー制御情報テーブルに一致するエントリが存在した場合に、前記パケット転送テーブルに当該受信パケット情報に相当するエントリを追加することも好ましい。
【００１６】
また、前記パケット転送テーブルは、削除フラグを備え、前記検索処理制御手段は、検索されたエントリの削除フラグを「非対象」で上書きし、前記削除フラグが「対象」であるエントリを削除し、前記削除フラグが「非対象」であるエントリの削除フラグを「対象」で上書きするパケット転送テーブル管理手段をさらに備えることも好ましい。
【００１７】
上記課題を解決するため本発明のフロー単位パケット転送のための宛先検索方法は、線形検索を行う、ワイルドカードを含むエントリで構成されるフロー制御情報テーブルのワイルドカードでないフィールドに対して、受信パケット情報と一致判定をＧＰＵで並列実施することで、一致するエントリを検索するステップと、完全一致エントリで構成されるパケット転送テーブルにハッシュ検索を行うことで、一致するエントリを検索するステップと、前記フロー制御情報テーブルから複数エントリを選択し、各エントリのワイルドカードが設定されているフィールドに１を、それ以外には０を代入した一致判定行列を生成するステップと、前記一致判定行列のカラム単位で０が設定されているフィールドの受信パケット情報との一致判定をＧＰＵで並列実施し、一致したフィールドに対応する前記一致判定行列の行列要素に１を代入するステップと、前記一致判定行列で全てのフィールドが１であるエントリを一致エントリとするステップとを有する。
【発明の効果】
【００１８】
本発明のワイルドカードの適用により、フローテーブル上の管理エントリ数が削減されるという特徴によれば、アプリケーション単位や宛先ネットワーク単位等でフローエントリを集約して設定できるため、運用上のスケール性向上という効果が得られる。
【００１９】
また、ワイルドカードを含むフローテーブルをＧＰＵにより高速検索するという特徴によれば、処理スループットの向上により、コア網等、より大容量なネットワークへ適用可能になるという効果が得られる。
【図面の簡単な説明】
【００２０】
【図１】本発明のフロー宛先検索装置のシステム構成図を示す。
【図２】宛先検索手順を示すフローチャートを示す。
【図３】フロー制御情報テーブルの検索フローチャートを示す。
【図４】パケット転送テーブルの検索フローチャートを示す。
【図５】本発明の実施例における、フロー制御情報テーブルと一致判定行列の構成及び検索時の更新内容を示す。
【図６】本発明の実施例における、パケット転送テーブルの構成及び検索時の更新内容を示す。
【図７】本発明の実施例における、パケット転送テーブルの不要エントリの削除時の更新内容を示す。
【発明を実施するための形態】
【００２１】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。図１に、本発明のフロー宛先検索装置のシステム構成図を示す。
【００２２】
本発明のフロー宛先検索装置１は、パケット送受信部２からパケット情報を取得し、２つのフローテーブル（フロー制御情報テーブル１３、パケット転送テーブル１５）を参照し、一致するエントリを検索して、パケットの宛先情報を返す。また、制御ポリシーに従いフロー制御情報テーブル１３を管理する。
【００２３】
フロー宛先検索装置１は、検索処理制御部１１、フロー制御情報テーブル管理部１２、フロー制御情報テーブル１３、パケット転送テーブル管理部１４、パケット転送テーブル１５で構成される。フロー宛先検索装置１はパケット送受信部２と接続し、受信パケットの取得及び転送先の通知を行う。また、フロー宛先検索装置１は制御ポリシー管理部３と接続し、フロー制御情報の更新を受け付ける。
【００２４】
検索処理制御部１１は、受信パケットの情報に基づき適切な転送先情報を取得するため、パケット転送テーブル１５及びフロー制御情報テーブル１３を検索し、得られた転送先情報をパケット送受信部２に通知する。また、パケット転送テーブル１５に必要なエントリが無かった場合、エントリ追加処理を行う。
【００２５】
フロー制御情報テーブル１３は、フロー制御情報の定義をエントリとして保持している。各エントリは任意のフィールドにワイルドカードを指定可能であり、全てのエントリには一致優先度を示すエントリ優先度が設定される。本テーブルに対する検索は線形検索に基づき行われる。
【００２６】
パケット転送テーブル１５は、現在流れているフローの完全一致エントリ情報を保持している。パケットの一致情報から得られるハッシュ値をキーとする完全一致エントリと削除可能なフロー情報であるかどうかを示す削除フラグで構成されており、ハッシュによる検索が行われる。
【００２７】
フロー制御情報テーブル管理部１２は、制御ポリシー管理部３からの要求に基づき、フロー制御情報テーブル１３の更新を行う。
【００２８】
パケット転送テーブル管理部１４は、パケット転送テーブル１５上で既に使われなくなったフロー情報がないかを監視し、不要エントリの削除を行う。
【００２９】
フロー制御情報テーブル１３及びパケット転送テーブル１５は、データアクセスの高速性のため、ＧＰＵ上のメモリに展開しておいてもよい。
【００３０】
制御ポリシー管理部３は、フロー制御情報管理テーブル１３へのエントリ追加、削除を要求する。要求形態は、例えば運用者画面からの手動設定、ルーティングデーモン等からの経路情報更新、およびシグナリングデーモンからのフロー情報設定である。
【００３１】
図２は、宛先検索手順を示すフローチャート図である。以下、本フローチャートに基づき、フロー宛先検索装置１の動作を説明する。
【００３２】
ステップ１：パケット情報の受信、パケット送受信部２は、パケット情報（受信ＩＦ、ＭＡＣ、ＶＬＡＮ、ＩＰ、ポート番号）を受信し、検索処理制御部１１に送信する。
ステップ２：ハッシュ値計算、検索処理制御部１１は、パケット送受信部２から受け取った受信パケット情報に基づき、パケット転送テーブル検索用のハッシュ値計算を行う。
ステップ３：パケット転送テーブル検索、検索処理制御部１１は、算出されたハッシュ値に基づきパケット転送テーブル１５を検索する。
ステップ４：一致エントリ有無の判定、パケット転送テーブル１５に該当するエントリがあった場合には、ステップ５に進み、該当するエントリが無かった場合には、ステップ６に進む。
ステップ５：該当エントリの転送先情報を通知、検索処理制御部１１は、該当するエントリの転送先情報をパケット送受信部２に通知する。
ステップ６：フロー制御情報テーブルの検索、検索処理制御部１１は、フロー制御情報テーブル１３上で受信パケットに相当するエントリの検索を行う。
ステップ７：一致エントリ有無の判定、フロー制御情報テーブル１３に該当するエントリがあった場合には、ステップ８に進み、該当するエントリが無かった場合には、ステップ１０に進む。
ステップ８：パケット転送テーブルへの新規エントリ追加、検索処理制御部１１は、受信パケット情報と該当した転送先情報に基づきパケット転送テーブル１５に新規エントリを追加する。
ステップ９：該当エントリの転送先情報を通知、検索処理制御部１１は、該当するエントリの転送先情報をパケット送受信部２に通知する。
ステップ１０：不一致応答、転送先がないものとして、パケットは破棄される。
【００３３】
図３は、フロー制御情報テーブル１３の検索フローチャートを示す。以下、本フローチャートに基づいて、フロー制御情報テーブル１３の検索を説明する。
【００３４】
ステップ３１：一致判定行列生成、最初に優先度の高い方から複数エントリを選択し、それらエントリ群に対する一致判定行列を生成する。一致判定行列は、各フィールドの一致状況を保持するための行列である。各エントリのワイルドカードが設定されているフィールドに相当する行列要素には１を、それ以外には０を代入する。
ステップ３２：一致判定必要フィールド選出、一致判定行列上の各列において、０が設定されている部分は、エントリとの一致判定が必要となるフィールドであるため、選出する。
ステップ３３：フィールド一致判定処理、同一インストラクションで実行可能なカラム単位の受信パケット情報との一致判定を、ＧＰＵ上で並列実施する。エントリ群の全てのエントリに対しフィールドの一致判定が終了したら、一致したフィールドに相当する一致判定行列の行列要素に１を代入する。
ステップ３４：一致エントリ抽出、ここで、全フィールドが一致しているエントリ（全てが１になったエントリ）があれば、そのなかで最も優先度の高いエントリを当該パケットに対する一致エントリとする。一致エントリが存在しなければ、フロー制御情報テーブル１３の次のエントリ群に対する一致判定を繰り返していく。なお、エントリが全フィールド一致しているかの判定は、フィールドのビット論理積を全エントリに対して行うことから、ＧＰＵによる並列処理を行うことが望ましい。
【００３５】
図４に、パケット転送テーブル１５の検索フローチャートを示す。以下、本フローチャートに基づいて、パケット転送テーブル１５の検索を説明する。
【００３６】
ステップ４１：ハッシュ値による検索、検索処理制御部１１は受信パケット情報に対するハッシュ値をキーとして、パケット転送テーブル１５を検索する。
ステップ４２：一致条件判定、該当するハッシュ値に紐づくエントリがあった場合、一致条件がすべて等しいか判定する。等しい場合はステップ４３に進み、等しくない場合は、ステップ４４に進む。
ステップ４３：削除フラグ上書、等しければ一致エントリとし、テーブルの削除フラグを０（削除非対象）で上書きする。
ステップ４４：再検索、等しくなければ、適用しているハッシュのアルゴリズムに基づき、一致エントリの検索を続ける。例えば、オープンハッシュ法の場合、リハッシュによりハッシュ値を再計算して検索する。チェーンハッシュ法の場合、当該ハッシュ値に紐づくエントリで構成されるリストを順にたどって検索する。
【００３７】
なお、パケット転送テーブル１５は、新規フローが到着するたびにフロー制御情報テーブル１３の情報に基づきエントリが追加されるため、不要エントリを削除しないとテーブルの容量上限に達してしまい、新規エントリの追加ができなくなる。よって、下記の手順で不要エントリを削除する。パケット転送テーブル管理部１４は、宛先検索とは別に、各エントリの削除フラグを順次チェックし、削除フラグが１（削除対象）の場合は不要エントリとして情報を削除する。削除フラグが０（削除非対象）の場合はエントリを削除せず、削除フラグを１に上書きして次のエントリのチェックへ進む。そのため、次回チェック時までに参照されなかったエントリは、不要エントリとして削除される。
【００３８】
以下に、本発明の実施例を示す。図５は、本発明の実施例における、フロー制御情報テーブル検索を示す。図５（ａ）は、フロー制御情報テーブルの例であり、図５（ｂ）、図５（ｃ）は、一致判定行列の例を示す。
ステップ３１、図５（ｂ）は、図５（ａ）のフロー制御情報テーブルから生成された一致判定行列のエントリ群を示す。エントリ優先度１０から４０までが示される。図５（ａ）のワイルドカードフィールドには、１が代入され、それ以外は０が代入されている。なお、本例で、エントリ群は４行しかないが、実際には、もっと多くの行が選択され、多くの多重度でＧＰＵの並列計算が行われる。
ステップ３２、図５（ｂ）で、四角で囲まれているフィールドが選出されたエントリである。
ステップ３３、図５（ｃ）は、ＧＰＵの一致判定演算で、一致したフィールドに１が代入された一致判定行列を示す。図５（ｃ）で、四角で囲まれているフィールドが、１が代入されたエントリである。
ステップ３４、図５（ｃ）の例では、網掛けのエントリが、全フィールドが一致しているエントリである。もっと優先度が高い、優先度２０のエントリが一致エントリとして、抽出される。
【００３９】
図６は、本発明の実施例における、パケット転送テーブル検索を示す。
ステップ４１、受信パケット情報（ＩＦ＝ｅｔｈ１，Ｄ−ＭＡＣ＝Ｄ：Ｄ：Ｄ，Ｓ−ＭＡＣ＝Ｅ：Ｅ：Ｅ，．．．）から、ハッシュ値Ｈ（受信パケット情報）＝０ｘ０００１を求め、検索する。
ステップ４２、ハッシュ値０ｘ０００１は、図６で点線が引かれているエントリである。受信パケット情報と一致条件がすべて等しいか判定する。ここでは、全て等しいため、ステップ４３に進む。
ステップ４３、削除フラグを０で上書する。
【００４０】
図７に、本発明の実施例における、パケット転送テーブルの不要エントリ削除を示す。ハッシュ値０ｘ０００１と０ｘ００１０のエントリは、削除フラグが１であるため、巡回チェックで削除される。ハッシュ値０ｘ００００と０ｘ００１１のエントリは、削除フラグが０であるため、１に上書きされる。
【００４１】
本発明の宛先検索装置を用いた高速フロースイッチを通信キャリアのコア網に適用することにより、従来のインターネットでは不可能であったエンドツーエンドでのフロー単位制御が可能になる。それにより、アプリケーション毎に適した通信品質の提供が可能となり、サービス品質の向上を実現することができる。また、ネットワーク資源利用の効率化が可能となり、線路設備コストの抑制につながる。
【００４２】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。従って本発明の範囲は特許請求の範囲およびその均等範囲によってのみ規定されるものである。
【符号の説明】
【００４３】
１  フロー宛先検索装置
２  パケット送受信部
３  制御ポリシー管理部
１１  検索処理制御部
１２  フロー制御情報テーブル管理部
１３  フロー制御情報テーブル
１４  パケット転送テーブル管理部
１５  パケット転送テーブル
【図１】
0005814830.tif 000002
【図２】
0005814830.tif 000003
【図３】
0005814830.tif 000004
【図４】
0005814830.tif 000005
【図５】
0005814830.tif 000006
【図６】
0005814830.tif 000007
【図７】
0005814830.tif 000008