特許第5950811号(P5950811)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許5950811条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法
<>
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000002
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000003
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000004
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000005
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000006
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000007
  • 特許5950811-条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5950811
(24)【登録日】2016年6月17日
(45)【発行日】2016年7月13日
(54)【発明の名称】条件テーブルからクエリエントリに一致する条件エントリを検索する検索装置、フロースイッチ装置、プログラム及び方法
(51)【国際特許分類】
   H04L 12/717 20130101AFI20160630BHJP
   H04L 12/741 20130101ALI20160630BHJP
【FI】
   H04L12/717
   H04L12/741
【請求項の数】10
【全頁数】19
(21)【出願番号】特願2012-272846(P2012-272846)
(22)【出願日】2012年12月13日
(65)【公開番号】特開2014-120827(P2014-120827A)
(43)【公開日】2014年6月30日
【審査請求日】2015年8月4日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100135068
【弁理士】
【氏名又は名称】早原 茂樹
(72)【発明者】
【氏名】松本 延孝
(72)【発明者】
【氏名】林 通秋
【審査官】 速水 雄太
(56)【参考文献】
【文献】 特開2008−165746(JP,A)
【文献】 特開2000−083055(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/717
H04L 12/741
(57)【特許請求の範囲】
【請求項1】
複数の要素の列からなる条件エントリが複数個並べられた条件テーブルと、
前記条件エントリと同種の要素の列からなるクエリエントリを入力し、該クエリエントリが前記条件テーブルのいずれかの条件エントリと一致するか否かを判定するエントリ判定部と、
複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部とを有する検索装置において、
前記条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
前記エントリ判定部は、線形判定手段を有し、
前記線形判定手段は、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、前記条件テーブルについて、優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する条件エントリ分類手段と、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定するプロセッサ数決定手段と、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、前記クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる個別ステップ処理手段と、
前記個別ステップ処理手段によって両エントリが一致したと判定されるまで、前記個別ステップ処理手段を、前記条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すエントリ検索手段と
を含むことを特徴とする検索装置。
【請求項2】
前記プロセッサ部は、ハードウェアとしてのSIMD(Single Instruction, Multiple Data)型又はSIMT(Single Instruction, Multiple Thread)型のものであることを特徴とする請求項1に記載の検索装置。
【請求項3】
前記プロセッサ部は、汎用GPU(Graphic Processor Unit)であり、
前記プロセッサ数決定手段は、単位グループのSM(Streaming MultiProcessor)における演算プロセッサ数を決定する
ことを特徴とする請求項2に記載の検索装置。
【請求項4】
前記条件テーブルに含まれる条件エントリは、任意の要素についてワイルドカードで定義可能であることを特徴とする請求項1から3のいずれか1項に記載の検索装置。
【請求項5】
前記エントリ検索手段によって両エントリが一致したと判定された際に、前記条件テーブルの当該条件エントリにおけるヒット率を増分するヒット率更新手段を更に含むことを特徴とする請求項1から4のいずれか1項に記載の検索装置。
【請求項6】
前記条件エントリ分類手段は、前記条件テーブルにおける優先度順に累積した累積ヒット率が、処理ステップ毎に平滑化されるように、前記条件テーブルを分類することを特徴とする請求項1から5のいずれか1項に記載の検索装置。
【請求項7】
前記条件テーブルの各条件エントリは、クエリエントリと一致した際に実行すべき内容を表す実行要素を含んでおり、
前記エントリ判定部は、前記線形判定手段とは別に、ハッシュ判定手段を更に有し、
前記ハッシュ判定手段は、
前記線形判定手段によってクエリエントリと任意の条件エントリとが一致したと判定された際に、当該クエリエントリに含まれる複数の要素から、ハッシュ関数に基づくハッシュ値を算出するハッシュ値算出手段と、
算出されたハッシュ値と、当該クエリエントリに含まれる複数の要素と、一致した条件エントリの実行要素とを、ハッシュテーブルとして登録するハッシュテーブル更新手段と、
を有し、
前記エントリ判定部は、前記クエリエントリが入力された際に、最初に前記ハッシュ判定手段によってハッシュテーブルに登録されたいずれの条件エントリとも完全一致しなかった場合に、前記線形判定手段における条件エントリとの一致を判定する
ことを特徴とする請求項1から6のいずれか1項に記載の検索装置。
【請求項8】
請求項1から7のいずれか1項に記載の検索装置は、フロースイッチ装置であり、
前記クエリエントリは、入力された通信パケットにおけるフローヘッダ識別子であり、
前記条件テーブルは、フローテーブルであり、
前記条件エントリは、フローエントリであり、
前記フローエントリに規定された、クエリエントリと一致した際に実行すべき内容を表す実行要素は、
当該クエリエントリのパケットを出力すべきポートの指定、
当該クエリエントリのパケットの所定ヘッダの書き換えの指示、及び/又は、
当該クエリエントリのパケットのスケジューリング若しくは帯域制御の指示
であることを特徴とするフロースイッチ装置。
【請求項9】
装置に搭載された、複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部を、検索用に機能させるプログラムにおいて、
複数の要素の列からなる条件エントリが複数個並べられた条件テーブルと、
前記条件エントリと同種の要素の列からなるクエリエントリを入力し、該クエリエントリが前記条件テーブルのいずれかの条件エントリと一致するか否かを判定するエントリ判定部とを有すると共に、
前記条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
前記エントリ判定部は、線形判定手段を有し、
前記線形判定手段は、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、前記条件テーブルについて優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する条件エントリ分類手段と、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定するプロセッサ数決定手段と、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、前記クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる個別ステップ処理手段と、
前記個別ステップ処理手段によって両エントリが一致したと判定されるまで、前記個別ステップ処理手段を、前記条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すエントリ検索手段と
を含むようにプロセッサ部を機能させることを特徴とする検索プログラム。
【請求項10】
複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部を用いた検索方法において、
複数の要素の列からなる条件エントリが複数個並べられた条件テーブルを有し、該条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
前記条件エントリと同種の要素の列からなるクエリエントリを入力する第1のステップと、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、前記条件テーブルについて優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する第2のステップと、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定する第3のステップと、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、前記クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる第4のステップと
を有し、
第4のステップによって両エントリが一致したと判定されるまで、第4のステップを、前記条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すことを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、条件テーブルからクエリエントリに一致する条件エントリを検索する技術に関する。特に、フロースイッチ装置について、フローテーブル(条件テーブル)を用いて、入力されたパケットのフローヘッダ識別子(クエリエントリ)に一致するフローエントリ(条件エントリ)を検索し、そのフローエントリに登録された転送先へ当該パケットを経路制御する技術に関する。
【背景技術】
【0002】
従来、ネットワークの構成や機能を変更する場合、専門のネットワーク運用管理者が、ベンダ独自のコマンドを用いて、スイッチやルータのプロトコルの設定を変更する必要があった。これに対し、SDN(Software-Defined Network)という概念が注目されてきている。SDNによれば、仮想化ネットワークを用いて、その構成や機能の設定をソフトウェアによってプログラマブルに制御することができる。これは、ネットワーク全体における各機能レイヤを分離し、オープンなインタフェースでつなぐアーキテクチャによって構成される。ネットワーク運用管理者は、異なるプロトコルを持つネットワーク機器を統合管理した物理的資源の設定を、稼働状況や経路制御ポリシに合わせて、アプリケーションによって迅速に変更することができる。
【0003】
SDNの中核として、フローベースネットワーキングが必要とされる。これは、通信パケットの経路をフロー単位で制御することによって、ユーザやアプリケーション毎に細かい粒度のQoS(Quality of Service)を制御することができる。「フロー」とは、当該パケットに対する、例えば入力ポート、MAC(Media Access Control)アドレス、VLAN(Virtual Local Area Network)識別子、IP(Internet Protocol)アドレスやポート番号の組み合わせで識別される通信のまとまりをいう。即ち、アプリケーション毎の一連の通信のまとまりを意味する。これら要素の組み合わせが識別されることよって、当該パケットの経路が制御される。
【0004】
フローベースネットワーキングによれば、中継ノードとして、COTS(Commercial Off The Shelf)によるフロースイッチ装置が用いられることが想定される。このようなフロースイッチ装置は、高いプログラム性や機能拡張性を有すると共に、汎用機器を用いるために比較的低コストで実現される。「フロースイッチ装置」は、入力されたパケットのフローヘッダ識別子(クエリエントリ)と一致する、フローテーブル(条件テーブル)に予め登録されたフローエントリ(条件エントリ)を検索し、そのフローエントリに基づいて当該パケットの経路(転送先)を制御する。フローテーブルは、各フローエントリを、経路制御ポリシに基づいて優先度順に並べたものである。
【0005】
従来、専用的なフロースイッチ装置であっても、一般的な宛先検索の技術が適用されていた。即ち、経路制御ポリシとしての複数のフローエントリの中から、入力されたパケットのフローヘッダ識別子に一致するフローエントリを検索するために、優先度順に線形的な完全一致検索の技術が適用されている。
【0006】
フロースイッチ装置の用途とは異なるが、例えばPatricia-Treeという二分木検索を用いた技術がある(非特許文献1参照)。この技術によれば、Linux(登録商標)やFreeBSD(登録商標)等のOS(Operating System)における宛先検索に利用されており、IP(Internet Protocol)アドレスに基づく経路を検索するべく、最長プレフィックスの一致を検索するものである。
【0007】
また、商用のフロールータであって、入力された全てのパケットのフローヘッダ識別子から、完全一致とするハッシュ値を算出し、そのハッシュテーブルを用いてフローエントリを高速に検索する技術もある(例えば非特許文献2参照)。
【0008】
更に、GPU(Graphic Processer Unit)を用いて、ソフトウェアルータにおけるフローテーブルから宛先を高速に検索する技術もある(例えば非特許文献3参照)。この技術によれば、フローエントリとの完全一致にはハッシュ検索を適用している。
【0009】
更に、フロースイッチ装置とは別の用途として、線形的な完全一致検索を実現するために、並列処理可能な複数演算部を備え、実行プログラムの負荷情報に応じて各演算部に対する処理分担を決定する技術もある(例えば特許文献1参照)。この技術によれば、実行プログラムそれぞれの負荷情報が予め与えられており、必要な並列度を考慮して最適なプロセッサリソースの割当てを実行することができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2008−165746号公報
【非特許文献】
【0011】
【非特許文献1】Donald R. Morrisonら著 "PATRICIA:Practical Algorithm To Retrieve Information Coded in Alpha numeric" Journal of the ACM,Volume 15 Issue 4 1968年10月
【非特許文献2】L. G. Roberts著 "The Next Generation ofIP - Flow Routing" SSGRR 2003S 2003年7月
【非特許文献3】Sangjin Hanら著 "PacketShader: aGPU-accelerated Software Router" Proceedings of ACM SIGCOMM2010 2010年 8月
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、非特許文献1に記載された技術によれば、最長プレフィックスの一致を検索することを前提としたIP経路検索であって、複数のフローエントリを含むフローテーブルの検索には適用することができない。また、非特許文献2に記載された技術によれば、完全一致検索を適用するためには、入力された全てのパケットのフローヘッダ識別子(クエリエントリ)に対して、フローエントリ(条件エントリ)を定義する必要がある。これは、スケーラビリティの観点から、ネットワーク管理を想定した大量のフローエントリに対する適用は難しい。更に、非特許文献3に記載された技術も、優先度順の線形検索のために、フローエントリ(条件エントリ)が大量になるほど、検索処理時間や計算リソースに対する性能劣化が大きくなる。
【0013】
また、特許文献1に記載された技術によれば、各プロセッサの負荷情報を予め明確にする必要があるが、フローテーブルの検索の場合、入力されたパケットに対する検索負荷を予め明確とすることができない。即ち、実際に一致するまで何エントリ分の検索が必要か(期待値)が明確でないために、最適なリソースを割り当てることができない。
【0014】
そこで、本発明によれば、条件テーブル(フローテーブル)からクエリエントリ(入力されたパケットのフローヘッダ識別子)に一致する条件エントリ(フローエントリ)を検索する際に、実際に一致するまで何エントリ分の検索が必要か(期待値)を考慮して、リソース割り当てを制御することができる検索装置、フロースイッチ装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明によれば、複数の要素の列からなる条件エントリが複数個並べられた条件テーブルと、
条件エントリと同種の要素の列からなるクエリエントリを入力し、該クエリエントリが条件テーブルのいずれかの条件エントリと一致するか否かを判定するエントリ判定部と、
複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部とを有する検索装置において、
条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
エントリ判定部は、線形判定手段を有し、
線形判定手段は、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、条件テーブルについて、優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する条件エントリ分類手段と、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定するプロセッサ数決定手段と、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる個別ステップ処理手段と、
個別ステップ処理手段によって両エントリが一致したと判定されるまで、個別ステップ処理手段を、条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すエントリ検索手段と
を含むことを特徴とする。
【0016】
本発明の検索装置における他の実施形態によれば、プロセッサ部は、ハードウェアとしてのSIMD(Single Instruction, Multiple Data)型又はSIMT(Single Instruction, Multiple Thread)型のものであることも好ましい。
【0017】
本発明の検索装置における他の実施形態によれば、
プロセッサ部は、汎用GPU(Graphic Processor Unit)であり、
プロセッサ数決定手段は、単位グループのSM(Streaming MultiProcessor)における演算プロセッサ数を決定する
ことも好ましい。
【0018】
本発明の検索装置における他の実施形態によれば、
条件テーブルに含まれる条件エントリは、任意の要素についてワイルドカードで定義可能であることも好ましい。
【0019】
本発明の検索装置における他の実施形態によれば、
エントリ検索手段によって両エントリが一致したと判定された際に、条件テーブルの当該条件エントリにおけるヒット率を増分するヒット率更新手段を更に含むことも好ましい。
【0020】
本発明の検索装置における他の実施形態によれば、
条件エントリ分類手段は、条件テーブルにおける優先度順に累積した累積ヒット率が、処理ステップ毎に平滑化されるように、条件テーブルを分類することも好ましい。
【0021】
本発明の検索装置における他の実施形態によれば、
条件テーブルの各条件エントリは、クエリエントリと一致した際に実行すべき内容を表す実行要素を含んでおり、
エントリ判定部は、線形判定手段とは別に、ハッシュ判定手段を更に有し、
ハッシュ判定手段は、
線形判定手段によってクエリエントリと任意の条件エントリとが一致したと判定された際に、当該クエリエントリに含まれる複数の要素から、ハッシュ関数に基づくハッシュ値を算出するハッシュ値算出手段と、
算出されたハッシュ値と、当該クエリエントリに含まれる複数の要素と、一致した条件エントリの実行要素とを、ハッシュテーブルとして登録するハッシュテーブル更新手段と、
を有し、
エントリ判定部は、クエリエントリが入力された際に、最初にハッシュ判定手段によってハッシュテーブルに登録されたいずれの条件エントリとも完全一致しなかった場合に、線形判定手段における条件エントリとの一致を判定する
ことも好ましい。
【0022】
本発明によれば、前述した検索装置は、フロースイッチ装置であり、
クエリエントリは、入力された通信パケットにおけるフローヘッダ識別子であり、
条件テーブルは、フローテーブルであり、
条件エントリは、フローエントリであり、
フローエントリに規定された、クエリエントリと一致した際に実行すべき内容を表す実行要素は、
当該クエリエントリのパケットを出力すべきポートの指定、
当該クエリエントリのパケットの所定ヘッダの書き換えの指示、及び/又は、
当該クエリエントリのパケットのスケジューリング若しくは帯域制御の指示
であることを特徴とする。
【0023】
本発明によれば、装置に搭載された、複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部を、検索用に機能させるプログラムにおいて、
複数の要素の列からなる条件エントリが複数個並べられた条件テーブルと、
条件エントリと同種の要素の列からなるクエリエントリを入力し、該クエリエントリが条件テーブルのいずれかの条件エントリと一致するか否かを判定するエントリ判定部とを有すると共に、
条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
エントリ判定部は、線形判定手段を有し、
線形判定手段は、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、条件テーブルについて優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する条件エントリ分類手段と、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定するプロセッサ数決定手段と、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる個別ステップ処理手段と、
個別ステップ処理手段によって両エントリが一致したと判定されるまで、個別ステップ処理手段を、条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すエントリ検索手段と
を含むようにプロセッサ部を機能させることを特徴とする。
【0024】
本発明によれば、複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なプロセッサ部を用いた検索方法において、
複数の要素の列からなる条件エントリが複数個並べられた条件テーブルを有し、該条件テーブルにおける各条件エントリは、当該条件エントリとクエリエントリとが一致した回数に基づくヒット率を含んでおり、
条件エントリと同種の要素の列からなるクエリエントリを入力する第1のステップと、
エントリ判定のために許容される最大処理ステップ回数が予め設定されており、条件テーブルについて優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する第2のステップと、
分類された処理ステップ毎に、当該処理ステップに含まれる条件エントリ数を、所要の演算プロセッサ数として決定する第3のステップと、
各演算プロセッサに対して条件エントリそれぞれを割り当てて、クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる第4のステップと
を有し、
第4のステップによって両エントリが一致したと判定されるまで、第4のステップを、条件テーブルの条件エントリの降順に、最大処理ステップ回数まで繰り返すことを特徴とする。
【発明の効果】
【0025】
本発明の検索装置、フロースイッチ装置、プログラム及び方法によれば、条件テーブルからクエリエントリに一致する条件エントリを検索する際に、実際に一致するまで何エントリ分の検索が必要か(期待値)を考慮して、リソース割り当てを制御することができる。
【図面の簡単な説明】
【0026】
図1】本発明の検索装置がフロースイッチ装置に適用されたシステム構成図である。
図2】本発明におけるフロースイッチ装置(検索装置)の機能構成図である。
図3】本発明のフローテーブル(条件テーブル)における各フローエントリ(条件エントリ)の説明図である。
図4】本発明のエントリ判定部における線形判定部の機能構成図である。
図5】本発明における条件エントリの分類を表すグラフである。
図6】個別ステップ処理部における検索処理を表す説明図である。
図7】本発明におけるハッシュ判定部及び線形判定部を含むエントリ判定部のフローチャートである。
【発明を実施するための形態】
【0027】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【0028】
本発明の検索装置、フロースイッチ装置、プログラム及び方法によれば、条件テーブルの複数の条件エントリの中から、クエリエントリと一致する条件エントリを検索する様々な技術に適用することができる。
【0029】
図1は、本発明の検索装置がフロースイッチ装置に適用されたシステム構成図である。
【0030】
本発明の検索装置を、以下のようにフロースイッチ装置の用途に適用することができる。
クエリエントリ:入力されたパケットのフローヘッダ識別子
フローエントリ:条件エントリ
フローテーブル:多数の条件エントリを優先度順に並べた条件テーブル
エントリの各要素:フロー制御のためのヘッダ識別子
(例えばMACアドレス、IPアドレス、ポート番号等)
本発明によれば、フローテーブルの複数のフローエントリの中から、入力されたパケットのフローヘッダ識別子と一致すると共に優先度が最も高いフローエントリを検索することができる。尚、フローテーブルは、優先度順に線形に検索されるものである。
【0031】
図1によれば、例えばトランスポートネットワーク内に、フロースイッチ装置が備えられている。フロースイッチ装置は、トランスポートネットワークに限られず、アクセスネットワークのゲートウェイや、機能プールの各アプライアンス装置への経路を制御し、様々なネットワークを統合的に利用する。
【0032】
また、フロースイッチ装置は、ネットワークの経路制御ポリシとしてフローテーブル(条件テーブル)を記憶している。このフローテーブルは、外部のフロー制御装置から、各フロースイッチ装置へ配信される。尚、フロー制御装置は、例えばネットワーク構成管理装置から、そのネットワーク運用制御ポリシに基づいて、各フロースイッチ装置に対するフローテーブルを作成する。ネットワーク構成管理装置が、ネットワーク運用制御ポリシを変更することによって、フロー制御装置が適宜、各フロースイッチ装置に対するフローテーブルのフローエントリを更新(追加、削除、変更等)する。
【0033】
フロースイッチ装置は、入力されたパケット毎に、宛先検索(フローテーブルのフローエントリに対するクエリエントリの一致検索)が必要となる。この宛先検索を高速化するために、本発明によれば、一度に検索処理を実行するフローエントリの数を柔軟に制御するべく、ホスト側CPU(Central Processer Unit)に加えて、汎用GPU(Graphic Processor Unit)を用いている。従来、フロースイッチ装置は、ベンダ特有の専用ハードウェアで構成されていたが、本発明によれば、GPUを搭載した汎用パーソナルコンピュータで高速な宛先検索を実現することができる。これは、膨大な数のフロースイッチ装置を設備導入しなければならない通信事業者にとって、設備投資コストの抑制につながる。
【0034】
図2は、本発明におけるフロースイッチ装置(検索装置)の機能構成図である。
【0035】
図2によれば、フロースイッチ装置は、ハードウェアのプロセッサ部として、ホスト側CPU1と、汎用GPU2とを有する。CPUを搭載した一般的なパーソナルコンピュータによれば、例えばPCIバスを介して、汎用GPUを搭載したボードを接続することができる。また、CPUとGPUとを統合したプロセッサも、汎用的なものとして市販されている。
【0036】
「GPU」は、画像(グラフィック)処理専用のプロセッサチップとして市販されている。近年、HPC(High Performance Computing)技術の発展によって、GPUに対して直接的に並列プログラミングをすることが可能となった。GPUは、複数の演算プロセッサを含み且つ所要のプロセッサ数を任意に変更可能なものである。各演算プロセッサは、例えばスレッドプロセッサとも称され、データ並列型の演算を実現する。本発明も、フロースイッチ装置における高速演算処理を要する宛先検索に、並列プログラミングによって汎用GPUを利用したものである。
【0037】
特に、本発明で用いられるGPUは、ハードウェアとしてのSIMD(Single Instruction, Multiple Data、単一命令多重データ)型又はSIMT(Single Instruction, Multiple Thread、単一命令複数スレッド)型のものである。SIMDは、1回の命令(ステップ)で複数データに対して同時に処理する技術をいう。SIMDの幅は、ソフトウェアから操作することができる。また、SIMTは、マルチプロセッサの各スレッドを、個別の命令アドレスと状態レジスタを持って独立に処理するスカラプロセッサコアに対応付けたものである。
【0038】
図2によれば、CPU1は、クエリ入力部10からクエリエントリを入力する。フロースイッチ装置の場合、クエリエントリは、入力されたパケットのフローヘッダ識別子である。また、CPU1は、エントリ判定部11と、ホスト側メモリ12と、ハッシュテーブル13とを有する。これら機能は、CPU1に対するプログラミングによって実現される。エントリ判定部11は、制御バスを介してGPU2と接続され、ホスト側メモリ12も、DMA(Direct Memory Access)バスを介してGPU2と接続される。
【0039】
エントリ判定部11は、パケットのフローヘッダ識別子(クエリエントリ)を入力し、フローテーブル(条件テーブル)のいずれかのフローエントリ(条件エントリ)と一致するか否かを判定する。ここで、フローヘッダ識別子(クエリエントリ)と、フローエントリ(条件エントリ)とは、例えばベクトルのように、同種の要素の列からなる。
【0040】
また、図2によれば、GPU2は、スレッド実行制御部21と、SM(Streaming MultiProcessor)22と、スレッド側メモリ23と、フローテーブル(条件テーブル)24とを有する。スレッド実行制御部21は、CPU1のエントリ判定部11からの命令によって、SM22における所要の演算プロセッサ数を任意に変更する。また、スレッド側メモリ23は、CPU1のホスト側メモリ12との間で、DMAバスを介して接続される。フローテーブル24は、データアクセスの高速性のために、GPU2上のメモリに展開しておくのが好ましい。
【0041】
図3は、本発明のフローテーブル(条件テーブル)における各フローエントリ(条件エントリ)の説明図である。
【0042】
フローテーブルは、優先度順に線形に検索されるものである。フローテーブルは、複数の要素の列からなる多数のフローエントリ(条件エントリ)が、経路制御ポリシに基づいて優先度順に並べられている。図3によれば、1024個のフローエントリが、優先度順に並べられている。
【0043】
フローエントリの各要素には、フローヘッダ識別子が定義されており、ワイルドカード「*」(どのようなフローヘッダ識別子も一致したと判定する)を指定することができる。図3によれば、フローエントリの要素として、以下のものが定義されている。
入力ポート
宛先MACアドレス、送信元MACアドレス
VLAN−ID
送信元IPアドレス、宛先IPアドレス
送信元ポート番号、宛先ポート番号
【0044】
本発明によれば、フローエントリにワイルドカードを指定することができるので、フローテーブル上のフローエントリ(条件エントリ)の数が削減される。アプリケーション単位や宛先ネットワーク単位等で、フローエントリを集約して設定することができるために、運用ネットワークのスケール性を向上させることができる。
【0045】
また、各フローエントリには、実行要素として、転送先情報も定義されている。実行要素とは、フローエントリの条件としての要素が全て一致した場合、実行すべき内容を表す。フロースイッチ装置の場合、実行要素の内容としては、具体的には、以下のものがある。
当該クエリエントリのパケットを出力すべきポートの指定
当該クエリエントリのパケットの所定ヘッダの書き換えの指示
当該クエリエントリのパケットのスケジューリング若しくは帯域制御の指示
【0046】
更に、本発明におけるフローテーブルには、各フローエントリに、当該フローエントリと、入力されたパケットのフローヘッダ識別子(クエリエントリ)とが一致した回数に基づく「ヒット率」も含まれている。
【0047】
図3によれば、エントリ優先度順に1〜1024を並べた横軸に対して、ヒット率を縦軸としたグラフが表されている。このグラフによれば、エントリ優先度が高いフローエントリほど、ヒット率も高いことが理解できる。尚、エントリ優先度は、通信事業者の経路制御ポリシに応じて設定されたものであって、エントリ優先度が高いほどヒット率が高いとは限らない。
【0048】
図4は、本発明のエントリ判定部における線形判定部の機能構成図である。
【0049】
図4によれば、線形判定部11rは、条件エントリ分離部11r1と、プロセッサ数決定部11r2と、個別ステップ処理部11r3と、エントリ検索部11r4と、ヒット率更新部11r5とを有する。
【0050】
線形判定部11rは、フローテーブル(条件テーブル)の検索のために、GPU2の複数の演算プロセッサを並列に実行する。ここで、GPUでは同一ステップで並列に実行可能な演算プロセッサの数には上限があるために、それぞれのタスクをどのように演算プロセッサに割り当てるかが、検索処理時間に影響する。特に、優先度順検索型のフローテーブルは、各フローエントリに対する一致を並列に判定するために、並列に実行可能な演算プロセッサの数によって、検索処理時間と消費計算リソースとに影響する。
【0051】
[条件エントリ分離部11r1]
条件エントリ分離部11r1には、エントリ判定のために許容される最大処理ステップ回数が予め設定されている。例えば最大処理ステップ回数=8回を目標として設定する。最大処理ステップ回数が少ないほど、一度に要する演算プロセッサの並列個数が多くなるが、検索時間が短くなる。一方で、最大処理ステップ回数が多いほど、一度に要する演算プロセッサの並列個数が少ないが、検索時間が長くなる。
【0052】
その上で、条件エントリ分離部11r1は、フローテーブル(条件テーブル)について、優先度順にヒット率を累積した累積ヒット率を、最大処理ステップ回数で分類する。ここで、条件エントリ分離部11r1は、フローテーブルにおける優先度順に累積した累積ヒット率が、処理ステップ毎に平滑化されるように、フローテーブルを分類する。例えば「100/最大処理ステップ回数」を、ステップ毎に累積するものであってもよい。
(処理ステップ回数) (累積ヒット率)
ステップ1 12.5%
ステップ2 25.0%
ステップ3 37.5%
ステップ4 50.0%
ステップ5 62.5%
ステップ6 75.0%
ステップ7 87.5%
ステップ8 100.0%
【0053】
[プロセッサ数決定部11r2]
プロセッサ数決定部11r2は、分類された処理ステップ毎に、当該処理ステップに含まれるフローエントリ(条件エントリ)数を、所要の演算プロセッサ数として決定する。即ち、プロセッサ数決定部11r2は、GPU2における単位グループのSM(Streaming MultiProcessor)における演算プロセッサ数を決定することとなる。
【0054】
図5は、本発明における条件エントリの分類を表すグラフである。
【0055】
図5(a)によれば、エントリ優先度が高い部分(フローテーブルの先頭部分)ほど、高いヒット率のフローエントリが集中していることが理解できる。これは、累積エントリ数12.5%に含まれるフローエントリの数が少ないことを意味する。即ち、フローエントリの数と同数の、少ない演算プロセッサが用いられることとなる。図5(a)によれば、例えば以下のように、演算プロセッサ数が決定される。
フローテーブルのフローエントリの総数=1024個
GPUに搭載された演算プロセッサ数(並列演算数)=512個
最大処理ステップ回数=8回
(処理ステップ回数) (累積ヒット率) (演算プロセッサの並列個数)
ステップ1 12.5% 9
ステップ2 25.0% 23
ステップ3 37.5% 56
ステップ4 50.0% 125
ステップ5 62.5% 125
ステップ6 75.0% 142
ステップ7 87.5% 272
ステップ8 100.0% 272
尚、各ステップの累積ヒット率に含まれるフローエントリ数が、演算プロセッサの最大数を超える場合、その最大数の演算プロセッサが並列に用いられることとなる。
【0056】
図5(b)によれば、エントリ優先度700程度の部分で、高いヒット率のフローエントリが集中していることが理解できる。これは、エントリ優先度700程度の部分における累積エントリ数12.5%に含まれるフローエントリの数が少ないことを意味する。
【0057】
図5(c)によれば、エントリ優先度900程度の部分で、高いヒット率のフローエントリが集中していることが理解できる。これは、エントリ優先度900程度の部分における累積エントリ数12.5%に含まれるフローエントリの数が少ないことを意味する。
【0058】
優先度順の線形検索によれば、ステップ1から順に検索を進めていき、クエリエントリに一致する条件エントリが発見された時点で、検索処理を終了することができる。また、図5(a)〜(c)からも明らかなとおり、ステップ毎に使用される演算プロセッサ数が異なっている。即ち、あるパケットのフローヘッダ識別子(クエリエントリ)にとってフローエントリ(条件エントリ)の検索に最適な演算プロセッサ数は、一致するフローエントリの優先度に依存することとなる。例えばN番目のフローエントリが優先度の最も高いものである場合、N−1番目までは一致しないことが検出できればよい。即ち、N個の演算プロセッサで並列検索を実行した場合、1ステップで検索が終了することとなる。
【0059】
例えば図5(a)の場合、ステップ1で条件エントリと一致する確率が高く、検索処理時間が短くなる可能性が高く、更にその際に使用される演算プロセッサ数も少なくて済む。一方で、図5(c)の場合、ステップ7程度で条件エントリと一致する確率が高く、検索処理時間は比較的長くなる可能性が高いが、その際に使用される演算プロセッサ数が少なくて済む。
【0060】
[個別ステップ処理部11r3]
個別ステップ処理部11r3は、各演算プロセッサに対して条件エントリそれぞれを割り当てて、クエリエントリと当該条件エントリとが一致するか否かを一度に判定させる。前述した例によれば、以下のように検索される。
ステップ1は、9個の演算プロセッサを用いて、9個のフローエントリ#1〜#9を並列に検索する。
ステップ2は、23個の演算プロセッサを用いて、23個のフローエントリ#10〜#56を並列に検索する。
ステップ3は、56個の演算プロセッサを用いて、56個のフローエントリ#57〜#112を並列に検索する。
・・・・・
ステップ8は、272個の演算プロセッサを用いて、272個のフローエントリ#752〜#1024を並列に検索する。
【0061】
[エントリ検索部11r4]
エントリ検索部11r4は、個別ステップ処理手段によって両エントリが一致したと判定されるまで、個別ステップ処理部11r3を、フローテーブル(条件テーブル)のフローエントリ(条件エントリ)の降順に、最大処理ステップ回数まで繰り返す。
【0062】
[ヒット率更新部11r5]
ヒット率更新部11r5は、エントリ検索部11r4によって両エントリが一致したと判定された際に、フローテーブル(条件テーブル)の当該フローエントリ(条件エントリ)におけるヒット率を増分する。
【0063】
このように、本発明のエントリ判定部11は、クエリエントリ(フローヘッダ識別子)に対するフローエントリ(条件エントリ)を検索する際に、各ステップの中で同時に実行されるGPUの演算プロセッサの並列個数を最適化することができる。即ち、各フローエントリにおける過去のヒット率から、全体的傾向の中で、ステップ毎に「平均的によさそうな演算プロセッサの並列個数(期待値)」を導出することができる。一般に、フロースイッチ装置の場合、固定的なフローテーブルを経路制御ポリシに応じて設定しても、各フローエントリのヒット率の傾向は、日単位、週単位、年単位等の時間経過に応じて変化する。本発明によれば、ヒット率の傾向が変化しても尚、各ステップの中で同時に実行される演算プロセッサ数を最適化することができる。
【0064】
図4におけるエントリ検索部11r4は、個別ステップ処理部11r3を、例えば以下のコードのように制御する。このコードは、ホスト側CPU1によって実行される。
uint num_group[] = {9, 23, 56, ...};
/*プロセッサ数決定部によって決定された、ステップ毎の演算プロセッサの並列個数*/
uint num_field = 9; /*エントリの一致判定条件の要素数*/
void search_table () {
bool judge_matrix[][];
uint ret[];
uint match_id = 0;
uint idx = 1;
for (uint step = 0; ; step++) { /*ステップ毎の繰り返し*/
create_judge_matrix(judge_matrix);
check_field<<<1, num_field * num_group[step]>>>(idx, pkt, judge_matrix);
/*各要素の一致判定*/
check_entry<<<1, num_group[step]>>>(idx, ret, judge_matrix);
/*エントリの一致判定*/
match_id = get_highest_priority(ret);
if (match_id > 0) break;
idx += num_group[step];
clear_array(ret);
}
};
【0065】
個別ステップ処理部11r3からの制御によって、例えば以下のコードが、GPUの各演算プロセッサによって実行される。
__global__ void check_field (uint start, struct packet pkt, uint **matrix) {
uint tid = blockIdx.x * blockDim.x + threadIdx.x;
uint fid = tid % num_field;
uint eid = (tid - fid) / num_field;
if (is_matched(pkt[fid], flow_table(start + eid, fid))) {
/* start + eid番目のフローエントリとpktのフィールドfidが一致するか
どうかを判定*/
matrix[eid][fid] = 1;
} else {
matrix[eid][fid] = 0;
}
}
__global__ void check_entry (uint start, uint *ret, uint **matrix) {
uint eid = blockIdx.x * blockDim.x + threadIdx.x;
if (is_allmatched(matrix[eid])) { ret[eid] = start + eid; }
/* start + eid番目のフローエントリにpktがヒットしたかどうかを判定*/
else { ret[eid] = 0; }
}
【0066】
図6は、個別ステップ処理部における検索処理を表す説明図である。
【0067】
個別ステップ処理部11r3は、例えば以下のように処理を進める。
(S1:一致判定行列の生成)
最初に、優先度の高い方から順に、各ステップに含まれる複数のフローエントリを選択し、それらフローエントリ群に対する一致判定行列を生成する。一致判定行列は、各要素の一致状況を保持するための行列である。一致判定行列について、各フローエントリのワイルドカードの要素には「1」を、それ以外には「0」を代入する。図6(b)は、図6(a)のフローテーブルから生成された一致判定行列のフローエントリ群を表す。
【0068】
(S2:一致判定に必要な要素の選出)
一致判定行列における各フローエントリについて、クエリエントリとの一致判定が必要となる要素である、「0」の要素のみを選出する。
【0069】
(S3:要素一致の判定)
そして、検索対象となるフローヘッダ識別子(クエリエントリ)を一致判定行列に当てて、一致を判定する。各ステップで、同時に実行されるフローエントリ群の全てについて、一致した要素に相当する一致判定行列の行列要素に「1」を代入する。図6(c)によれば、一致した要素に「1」が代入された一致判定行列を表す。
【0070】
(S4:一致エントリの抽出)
一致判定行列について、全ての要素が「1」となっているフローエントリの中で、最も優先度の高いフローエントリを、当該クエリエントリに対する一致したフローエントリとする。全ての要素が「1」となっているフローエントリが存在しなければ、フローテーブルの次のステップのフローエントリ群に対する一致判定を繰り返していく。尚、フローエントリが全要素で一致しているかの判定は、要素のビット論理積を全フローエントリに対して実行するものであるために、GPUによる並列処理が望ましい。図6(c)によれば、全ての要素が「1」となっているフローエントリの中で、最も優先度が高い、優先度2のフローエントリが検出される。
【0071】
図7は、本発明におけるハッシュ判定部及び線形判定部を含むエントリ判定部のフローチャートである。
【0072】
前述した図2によれば、エントリ判定部11は、線形判定部11rとは別に、ハッシュ判定部11hを更に有する。図7によれば、ハッシュ判定部11hを用いて以下のように処理を実行する。
【0073】
(S71)最初に、ハッシュ判定部11hによって、入力されたフローヘッダ識別子(クエリエントリ)の各要素から、ハッシュ値を算出する。そのハッシュ値をキーとして、ハッシュテーブル13を検索する。そのハッシュ値に紐付くフローエントリ(条件エントリ)が検出された場合、そのフローエントリの実行要素に基づく経路制御が実行される。尚、ハッシュテーブルに対する検索処理は、そのフローエントリの数に拘わらず高速に実行される。
【0074】
(S72)逆に、一致しなかった場合には、線形判定部11rにおけるフローエントリ(条件エントリ)と一致するか否かを判定する。ここで一致しなかった場合には、不一致とする判定結果を出力する。逆に、ここで一致した場合には、当該クエリエントリに含まれる複数の要素から、ハッシュ関数に基づくハッシュ値を算出する(ハッシュ値算出部)。そして、算出されたハッシュ値と、当該クエリエントリに含まれる複数の要素と、一致した条件エントリの実行要素とを、ハッシュテーブルに新たに登録する(ハッシュテーブル更新部)。そして、そのフローエントリの実行要素に基づく経路制御が実行される。尚、優先順検索型のフローテーブルに対する検索処理は、各フローエントリに対して線形に判定されるために、処理時間に対するボトルネックとなる。そこで、本発明によれば、あえて、最初にハッシュ判定した後、一致しなかったクエリエントリに対してのみ線形判定を実行する。
【0075】
図7のような処理工程を経る理由として、一般に、優先度順検索型フローテーブルの検索処理のみを用いて、必要以上に多くの演算プロセッサを割り当てた場合、無駄な検索処理が大量に発生することとなり、計算リソースを効率的に利用することができなくなる。一方で、ハッシュ型フローテーブルの検索処理の場合、フローエントリの要素に基づくハッシュ値を、ハッシュテーブルに登録する必要がある。そこで、本発明によれば、優先度順検索型フローテーブルとハッシュ型フローテーブルとを平行して検索処理に利用すると共に、優先度順検索型フローテーブルへの演算プロセッサの割り当てに過不足が生じないように最適に調整することができる。
【0076】
以上、詳細に説明したように、本発明の検索装置、フロースイッチ装置、プログラム及び方法によれば、条件テーブルからクエリエントリに一致する条件エントリを検索する際に、実際に一致するまで何エントリ分の検索が必要か(期待値)を考慮して、リソース割り当てを制御することができる。確率的に無駄なフローエントリとの一致検索を削減することができる。その分、他の計算リソースに、他の演算プロセッサを割り当てることができ、全体的な処理性能を向上させることができる。
【0077】
特に、本発明の検索装置等は、汎用GPUを用いることができるので、専用ハードウェアからCOTSノードへの置き換えることができ、ネットワーク設備のコストを低減させることができる。
【0078】
また、本発明の検索装置等は、フローテーブルから高速に宛先検索をすることできるフロースイッチ装置を、汎用的なパーソナルコンピュータに実装することもできるので、通信事業者網におけるエンドツーエンドでのフロー単位の経路制御が可能となる。次いでは、アプリケーション毎に適した通信品質の提供も可能となり、サービス品質の向上を実現することもできる。
【0079】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【0080】
1 CPU
11 エントリ判定部
11r 線形判定部
11r1 条件エントリ分離部
11r2 プロセッサ数決定部
11r3 個別ステップ処理部
11r4 エントリ検索部
11r5 ヒット率更新部
11h ハッシュ判定部
12 ホスト側メモリ
13 ハッシュテーブル
2 GPU
21 スレッド実行制御部
22 SM
23 スレッド側メモリ
24 条件テーブル(フローテーブル)
図1
図2
図3
図4
図5
図6
図7