JP2018196075A - 検索装置、検索プログラム、及び検索方法 - Google Patents

検索装置、検索プログラム、及び検索方法 Download PDF

Info

Publication number
JP2018196075A
JP2018196075A JP2017100670A JP2017100670A JP2018196075A JP 2018196075 A JP2018196075 A JP 2018196075A JP 2017100670 A JP2017100670 A JP 2017100670A JP 2017100670 A JP2017100670 A JP 2017100670A JP 2018196075 A JP2018196075 A JP 2018196075A
Authority
JP
Japan
Prior art keywords
search
value
data
selection
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017100670A
Other languages
English (en)
Other versions
JP6888234B2 (ja
Inventor
朋哉 井上
Tomoya Inoue
朋哉 井上
祐輝 高野
Yuki Takano
祐輝 高野
信介 三輪
Shinsuke Miwa
信介 三輪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Institute of Information and Communications Technology
Original Assignee
National Institute of Information and Communications Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Institute of Information and Communications Technology filed Critical National Institute of Information and Communications Technology
Priority to JP2017100670A priority Critical patent/JP6888234B2/ja
Publication of JP2018196075A publication Critical patent/JP2018196075A/ja
Application granted granted Critical
Publication of JP6888234B2 publication Critical patent/JP6888234B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】データ並列性を保つことで、検索速度の向上を実現する。【解決手段】検索対象データ2と、複数の記憶値50を有する記憶構造5とを格納した記憶手段と、キーデータに基づいて検索処理を行う演算手段と、を備える検索装置1であって、検索対象データ2は、複数の検索値31を含む検索グループ3と、複数の評価データ41を有するアルファデータ4と、を有し、演算手段は、SIMD命令を用いて評価データ41のそれぞれとキーデータとの大小関係を同時に算出した結果から選択値S1を導出し、選択値S1に基づいて複数の選択検索値31sを選択するベクタ比較手段S110と、SIMD命令を用いて選択検索値31sのそれぞれとキーデータとの大小関係を同時に算出した結果から特定値S2を導出し、特定値S2に基づいて第1検索値31fを選択する最終検索手段S120と、第1記憶値を取得する取得手段S130と、を有する。【選択図】図1

Description

本発明は、検索装置、検索プログラム、及び検索方法に関する。
高速IPネットワークを実現するためには、高速なIPネットワークの検索が不可欠である。また、このようなIPネットワークの検索技術は、ルータだけでなくFirewallや侵入検知システム、ネットワークトラフィック監視装置等にも幅広く利用される基盤技術である。ハードウェアとしては、TCAM(Ternary Content Addressable Memory)を用いた専用ハードウェアが一般的であるが、回路ゲート数の問題から、規模と速度の向上には電源消費、回路密度、コストに関する課題が挙げられる。また、専用ハードウェアでは、他のソフトウェアと組み合わせられる柔軟性を備えていない。上記に加え、近年では、NFV(Network Functions Virtualization:ネットワーク機能仮想化)との組み合わせの観点等からもソフトウェアとの組み合わせが求められている。このような状況に対し、汎用の計算機ハードウェア(PC等)を用いて、ソフトウェアによりIPネットワーク等における経路検索を実行する技術として、例えばDXR、SAIL、Poptrie等が提案されている。特に、検索対象データの高速検索方法等として、特許文献1及び特許文献2が提案されている。
特許文献1では、検索対象データを格納した記憶手段と、キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置に関する技術が開示されている。前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトルを含む。前記演算手段は、キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、遷移先のノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する。
特許文献2では、予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための技術が開示されている。ツリーのノードを、上記複数のビット幅のうち、キーの値を表現可能な最小のビット幅を有するグループに分類して、上記ツリーを構築すること、及び、検索キーの値を有効数とする最小ビット幅のグループに対応する上記命令を使用して、上記検索キーの値を有効数とする最小ビット幅の上記グループからデータを検索することを含む。
特開2016−170526号公報 特開2015−118609号公報
ここで、汎用ハードウェアのCPUには、決められたビット幅の複数データに対し、1つの命令で同一処理を同時に適用するSIMD(Single Instruction Multiple Data)命令を備えていることがある。このSIMD命令を用いることで、検索対象データの高速検索が期待されている。しかしながら、特許文献1及び特許文献2のような木構造で表現される検索対象データに対してSIMD命令を用いた場合、データハザードや分岐ハザード等の発生が懸念として挙げられる。このため、データ並列性を保つことが困難となり、検索速度の向上の妨げとなる恐れがある。
そこで本発明は、上述した問題点に鑑みて案出されたものであり、その目的とするところは、データ並列性を保つことで、検索速度の向上を実現できる検索装置、検索プログラム、及び検索方法を提供することにある。
本発明者らは、上述した問題点を解決するために、範囲検索表で形成された検索対象データと、複数の記憶値を有する記憶構造とを格納した記憶手段と、キーデータに基づいて検索処理を行う演算手段と、を備え、検索対象データは、複数の記憶値のそれぞれに紐づく複数の検索値を含む検索グループと、キーデータとの比較対象となる複数の評価データを有するアルファデータと、を有し、演算手段は、複数の評価データを取得し、SIMD(Single Instruction Multiple Data)命令を用いて評価データのそれぞれの値とキーデータの値との大小関係を同時に算出した結果から選択値を導出し、選択値に基づいて検索グループから複数の選択検索値を選択するための上限値、下限値、及び選択幅を導出するベクタ比較手段と、下限値及び選択幅に基づいて選択検索値を取得し、SIMD命令を用いて選択検索値のそれぞれの値とキーデータの値との大小関係を同時に算出した結果から特定値を導出し、特定値に基づいて選択検索値から第1検索値を選択する最終検索手段と、第1検索値に基づいて複数の記憶値から第1記憶値を取得する取得手段と、を有する検索装置、各手段としてコンピュータを機能させるための検索プログラム、及び検索装置が実行する検索方法を発明した。
請求項1に記載の検索装置は、範囲検索表で形成された検索対象データと、複数の記憶値を有する記憶構造とを格納した記憶手段と、キーデータに基づいて検索処理を行う演算手段と、を備える検索装置であって、前記検索対象データは、前記複数の記憶値のそれぞれに紐づく複数の検索値を含む検索グループと、前記キーデータとの比較対象となる複数の評価データを有するアルファデータと、を有し、前記演算手段は、前記複数の評価データを取得し、SIMD(Single Instruction Multiple Data)命令を用いて前記評価データのそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から選択値を導出し、前記選択値に基づいて前記検索グループから複数の選択検索値を選択するための上限値、下限値、及び選択幅を導出するベクタ比較手段と、前記下限値及び前記選択幅に基づいて前記選択検索値を取得し、前記SIMD命令を用いて前記選択検索値のそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から特定値を導出し、前記特定値に基づいて前記選択検索値から第1検索値を選択する最終検索手段と、前記第1検索値に基づいて前記複数の記憶値から第1記憶値を取得する取得手段と、を有することを特徴とする。
請求項2に記載の検索装置は、請求項1記載の発明において、前記演算手段は、前記ベクタ比較手段のあと、前記選択幅と、予め設定されたバイナリ範囲の値とを比較し、前記選択幅が前記バイナリ範囲の値よりも大きい場合に、前記選択幅を減少させるバイナリ範囲検索手段を有することを特徴とする。
請求項3に記載の検索装置は、請求項1又は2記載の発明において、前記アルファデータは、前記複数の検索値の一部に紐づく複数のインデックスデータを有し、前記ベクタ比較手段は、前記選択値に基づいて、前記インデックスデータの有する第1データを前記下限値として設定し、前記選択値に基づいて、前記インデックスデータの有する第2データを前記上限値として設定し、前記上限値から前記下限値を減算した値を選択幅として設定することを有し、前記最終検索手段は、前記検索グループのうち、前記第1データに紐づく下限検索値から前記選択幅に対応する検索値までを、前記複数の選択検索値として取得することを有することを特徴とする。
請求項4に記載の検索装置は、請求項1〜3の何れか1項記載の発明において、前記複数の記憶値は、IPアドレスのプレフィックスを含む複数のインターバルベースと、IPアドレスのインデックスを含む複数のネクストホップインデックスベースと、を有し、前記記憶構造は、前記複数のインターバルベース及び前記ネクストホップインデックスベースを並列に配置した構造であることを特徴とする。
請求項5に記載の検索プログラムは、コンピュータを、請求項1〜4の何れか1項に記載の前記検索装置における各手段として機能させることを特徴とする。
請求項6に記載の検索方法は、範囲検索表で形成された検索対象データと、複数の記憶値を有する記憶構造とを格納した記憶手段と、キーデータに基づいて検索処理を行う演算手段と、を備える検索装置が実行する検索方法であって、前記検索対象データは、前記複数の記憶値のそれぞれに紐づく複数の検索値を含む検索グループと、前記キーデータとの比較対象となる複数の評価データを有するアルファデータと、を有し、前記演算手段は、前記複数の評価データを取得し、SIMD(Single Instruction Multiple Data)命令を用いて前記評価データのそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から選択値を導出し、前記選択値に基づいて前記検索グループから複数の選択検索値を選択するための上限値、下限値、及び選択幅を導出するベクタ比較手段と、前記下限値及び前記選択幅に基づいて前記選択検索値を取得し、前記SIMD命令を用いて前記選択検索値のそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から特定値を導出し、前記特定値に基づいて前記選択検索値から第1検索値を選択する最終検索手段と、前記第1検索値に基づいて前記複数の記憶値から第1記憶値を取得する取得手段と、を有することを特徴とする。
上述した構成からなる本発明によれば、ベクタ比較手段は、SIMD命令を用いて、評価データのそれぞれの値とキーデータの値との大小関係を同時に算出した結果から選択値を導出し、最終検索手段は、SIMD命令を用いて選択検索値のそれぞれの値とキーデータの値との大小関係を同時に算出した結果から特定値を導出する。このため、木構造で表現される検索対象データに対してSIMD命令を用いた場合等に比べて、データハザードや分岐ハザード等の発生を抑制した状態で、記憶値を取得することができる。これにより、データ並列性を保つことができ、検索速度の向上を実現することが可能となる。
また、上述した構成からなる本発明によれば、バイナリ範囲検索手段は、選択幅がバイナリ範囲の値よりも大きい場合に、選択幅を減少させる。このため、最終検索手段における選択検索値のそれぞれの値とキーデータの値との大小関係を同時に算出するとき、選択検索値の個数をSIMD命令におけるレジスタサイズに適合させることができる。これにより、選択検索値の選択数が多い場合においても、データ並列性を保つことができ、検索速度の向上を容易に実現することが可能となる。
また、上述した構成からなる本発明によれば、記憶構造は、インターバルベース及びネクストホップインデックスベースを並列に配置した構造である。このため、一対のインターバルベース及びネクストホップインデックスベースを1つの小構造として複数並列に配置した構成に比べて、SIMD命令におけるレジスタサイズを拡大させることができる。これにより、検索速度のさらなる向上を実現することが可能となる。
本実施形態における検索装置の一例を示す模式図である。 図2(a)は、本実施形態における検索対象データの一例を示す模式図であり、図2(b)は、本実施形態における記憶構造の一例を示す模式図であり、図2(c)は、本実施形態における記憶構造の変形例を示す模式図である。 本実施形態における検索装置の変形例を示す模式図である。 本実施形態における検索装置の演算手段の一例を示すフローチャートである。 本実施形態におけるベクタ比較手段の一例を示す模式図である。 本実施形態における最終検索手段の一例を示す模式図である。 本実施形態における検索装置の演算手段の変形例を示すフローチャートである。 図8(a)及び図8(b)は、本実施形態における検索装置の実施例を示すグラフである。 図9(a)及び図9(b)は、本実施形態における検索装置の実施例を示すグラフである。
実施形態
以下、本発明の実施形態としての検索装置について詳細に説明する。図1は、本実施形態の検索装置1の一例を示す模式図である。図2は、図1の記憶部12に記憶される各データ(情報)の一例を示す模式図である。
<検索装置1>
検索装置1は、図1に示すように、演算部11と、記憶部12と、入力部13と、出力部14と、インターフェース13i、14iとを備える。検索装置1として、例えばPC等の汎用の計算機ハードウェアが用いられる。この場合、演算部11及び記憶部12が、CPUを構成する。このとき、演算部11は、SIMD命令を用いた演算等を実行する。また、記憶部12は、CPUのキャッシュメモリに相当するほか、例えば記憶部12の一部がCPU外のメモリでもよい。このCPUは、本実施形態における各演算のアルゴリズムを有するプログラムに従って動作する。プログラムは、記憶部12に格納されるほか、例えば記憶部12以外に設置された任意のメモリ等に格納されてもよい。
演算部11は、検索するキーデータに基づき、図2に示す検索対象データ2に対して検索処理を実行する演算手段を有する機能部である。記憶部12は、検索対象データ2と、記憶構造5とを格納する記憶手段を有する機能部である。入力部13は、インターフェース13iを介して入力されたキーデータ等を入力する機能部である。出力部14は、演算部11により検索処理を実行した結果等を、インターフェース14iを介して出力する機能部である。
<検索装置1の変形例>
検索装置1として、例えば図3に示すルータ等が用いられてもよい。この場合、検索装置1は、処理部15と、設定部16と、複数のインターフェース15iとを備える。処理部15は、インターフェース15iを介してパケットを受信し、設定部16により決定された宛先(ネクストホップ)に対応するインターフェース15iからパケットを出力する。
設定部16は、ルーティングテーブルを格納する記憶部を備え、処理部15からパケットの宛先アドレスをキーデータとして受け取る。その後、キーデータに基づいてルーティングテーブルを検索することにより、パケットのネクストホップを決定し、ネクストホップの情報を処理部15に出力する。設定部16として、例えば図1に示した演算部11、記憶部12、入力部13、及び出力部14が用いられてもよい。
<検索対象データ2>
検索対象データ2は、図2(a)に示すように、検索グループ3と、アルファデータ4(Alpha Data)とを有する。検索対象データ2は、検索グループ3及びアルファデータ4を並列した範囲検索表で形成される。なお、検索グループ3及びアルファデータ4は、ベーステーブルポイント(Base Table Point)を境にして配置される。
検索グループ3は、複数の検索値31を含む。検索値31の個数(サイズ)は任意であり、例えば図2(a)では17個である。各検索値31は、記憶構造5の有する記憶値50に紐づいている。
アルファデータ4は、複数の評価データ41(k-aryed Data)と、複数のインデックスデータ42(Index Data)とを有する。評価データ41は、キーデータとの比較対象として用いられる。インデックスデータ42は、複数の検索値31の一部に紐づいている。
評価データ41及びインデックスデータ42の個数並びに評価データ41のビット幅は、SIMD命令におけるレジスタサイズに応じて任意に変更することができ、CPUのキャッシュメモリの使用容量を調整できる。このため、本実施形態における検索装置1では、CPUのキャッシュメモリを有効に用いることができる。なお、SIMD命令におけるレジスタサイズは、1つの命令で同一処理を同時に適用できるサイズを示す。
例えば、SIMD命令に128bitのレジスタが用いられ、レジスタサイズを4とした場合、図2(a)のように4個の評価データ41及び5個のインデックスデータ42が設定され、各評価データ41のビット幅は32bitで設定される。また、SIMD命令に256bitのレジスタが用いられ、レジスタサイズを16とした場合、16個の評価データ41及び17個のインデックスデータ42が設定され、各評価データ41のビット幅は16bitで設定される。
<記憶構造5>
記憶構造5は、図2(b)に示すように、複数の記憶値50を有する。記憶値50は、検索処理の実行により取得される。記憶値50は、複数のインターバルベース5aと、複数のネクストホップインデックスベース5bとを有する。インターバルベース5aは、例えばIPアドレスのプレフィックス情報を含む。ネクストホップインデックスベース5bは、例えばIPアドレスのインデックス情報を含む。
記憶構造5は、例えば複数のインターバルベース5aを並列に配置したインターバルベースアレイ51、及び、複数のネクストホップインデックスベース5bを並列に配置したネクストホップインデックスベースアレイ52が、並列に配置された構造である。このとき、各記憶値50のビット幅は、16bitで設定される。
<記憶構造5の変形例>
記憶構造5は、例えば図2(c)に示すように、一対のインターバルベース5a及びネクストホップインデックスベース5bを1つの小構造53として複数並列に配置した構造でもよい。このとき、各小構造53のビット幅は、32bitで設定される。
<検索装置1の演算手段>
次に、本実施形態における検索装置1の演算手段の一例について説明する。図4は、本実施形態における検索装置1の演算手段の一例を示すフローチャートである。
<ベクタ比較手段S110(VCI)>
先ず、ベクタ比較手段S110について説明する。演算部11は、記憶部12に格納された複数の評価データ41を取得する(ステップS111)。複数の評価データ41として、例えば図5に示すように、「0」、「40」、「80」、「140」の4個が取得される。
演算部11は、入力部13に入力された、又は、予め記憶部12に格納されたキーデータ(RS-Key)を取得する。キーデータとして、例えば「50」が取得される。なお、キーデータの値は、ユーザ等によって任意に設定される。演算部11は、このキーデータに基づいて検索処理を行い、対応する値を取得する。
その後、演算部11は、SIMD命令を用いて、取得した評価データ41のそれぞれの値とキーデータの値との大小関係を同時に算出した結果から選択値S1を導出する(ステップS112:SIMD Calculation)。演算部11は、SIMD命令におけるレジスタサイズ(本実施形態では4)に合わせて、大小関係を同時に算出し、ビット列で算出結果を示す。例えばキーデータの値が評価データ41の値以上の場合に、「1」を算出結果として示し、キーデータの値が評価データ41未満の場合に、「0」を算出結果として示す。図5に示す例では、評価データ41の「0」、「40」、「80」、及び「140」のそれぞれと、キーデータの「50」との大小関係を同時に算出した結果として、「1」、「1」、「0」、及び「0」を示す。
演算部11は、SIMD命令を用いて算出した結果から、選択値S1を導出する。選択値S1は、算出された各値を加算することによって導出される。図5に示す例では、選択値S1(Popcnt)として、「1」、「1」、「0」、及び「0」を加算した「2」が導出される。選択値S1は、検索グループ3から、選択対象となる複数の選択検索値31sを選択するために用いられる。
その後、演算部11は、選択値S1に基づいて、検索グループ3から複数の選択検索値31sを選択するための上限値、下限値、及び選択幅を導出する(ステップS113)。演算部11は、選択値S1に基づいてインデックスデータ42の有する第1データ42aを下限値として設定し、選択値S1に基づいてインデックスデータ42の有する第2データ42bを上限値として設定する(Selected Range)。また、演算部11は、上限値から下限値を減算した値を選択幅として設定する。
例えばインデックスデータ42の左端のデータ(評価データ41と隣接するデータ)を0番目のデータとした場合、「選択値(S1)−1」番目のデータ(第1データ42a)が下限値として設定され、「選択値(S1)」番目のデータ(第2データ42b)が上限値として設定される。図5に示す例では、選択値S1が「2」を示すため、1番目のデータ「4」(第1データ42a)が下限値として、2番目のデータ「8」(第2データ42b)が上限値として設定される。また、「8」から「4」を減算した「4」が、選択幅として設定される。
演算部11は、検索グループ3から、第1データ42aに紐づく下限検索値31bと、第2データ42bに紐づく上限検索値31uとを指定する。図5に示す例では、下限検索値31bとして「40」が指定され(Lower)、上限検索値31uとして「80」が指定される(Upper)。
<最終検索手段S120(VCF)>
次に、最終検索手段S120について説明する。演算部11は、下限値及び選択幅に基づいて複数の選択検索値31sを取得する(ステップS121:Load to SIMD Register)。演算部11は、下限値(第1データ42a)に紐づく下限検索値31bから選択幅に対応する検索値31までを、複数の選択検索値31sとして取得する。図6の例では、下限検索値31bの「40」から選択幅「4」に対応する検索値31の「50」、「60」、及び「70」までを、複数の選択検索値31sとして取得する。
その後、演算部11は、SIMD命令を用いて、取得した選択検索値31sのそれぞれの値とキーデータの値との大小関係を同時に算出した結果から特定値S2を導出する(ステップS122:SIMD Calculation)。演算部11は、SIMD命令におけるレジスタサイズ(本実施形態では4)に合わせて、大小関係を同時に算出し、ビット列で算出結果を示す。例えばキーデータの値が選択検索値31sの値以上の場合に、「1」を算出結果として示し、キーデータの値が選択検索値31s未満の場合に、「0」を算出結果として示す。図6に示す例では、選択検索値31sの「40」、「50」、「60」、及び「70」のそれぞれと、キーデータ「50」との大小関係を同時に算出した結果として、「1」、「1」、「0」、及び「0」を示す。
演算部11は、SIMD命令を用いて算出した結果から、特定値S2を導出する。特定値S2は、算出された各値を加算することによって導出される。図6に示す例では、特定値S2(Popcnt)として、「1」、「1」、「0」、及び「0」を加算した「2」が導出される。特定値S2は、選択検索値31sから、選択対象となる検索値31(第1検索値31f)を特定するために用いられる。
その後、演算部11は、特定値S2に基づいて選択検索値31sから第1検索値31fを選択する(ステップS123)。演算部11は、例えば上述した下限値を用いることで、選択検索値31sから第1検索値31fを選択できる。
例えば検索グループ3の左端の検索値31(インデックスデータ42と隣接する検索値31)を0番目の検索値31とした場合、「下限値+特定値(S2)−1」番目の検索値31が、第1検索値31fとして選択される(Lower + Popcnt - 1)。図6に示す例では、特定値S2に基づいて、「4(下限値)+2(特定値S2)−1=5」番目の「50」が、第1検索値31fとして選択される。
<取得手段S130>
次に、取得手段S130について説明する。演算部11は、選択された第1検索値31fに基づいて、複数の記憶値50から第1記憶値を取得する(ステップS131:Read Nexthop Index Base)。第1記憶値は、例えば図2(b)に示した複数のネクストホップインデックスベース5bのうちの1つである。
上述した各手段を実行することにより、検索装置1の演算手段が終了する。なお、上記ではベクタ比較手段S110を実行したあと、最終検索手段S120を実行する説明をしたが、例えばベクタ比較手段S110を実行したあと、さらにベクタ比較手段S110を実行してもよい。また、上記ではキーデータとして「50」を用いて説明したが、キーデータとして「51」〜「59」を用いた場合においても、第1検索値31fとして「50」を選択することができる。これにより、プレフィックス検索が可能となる。
<検索装置1の演算手段の変形例>
次に、本実施形態における検索装置1の演算手段の変形例について説明する。図7は、本実施形態における検索装置1の演算手段の変形例を示すフローチャートである。
検索装置1の演算手段の変形例と、上述した検索装置1の演算手段の一例との違いは、バイナリ範囲検索手段S140を有する点である。その他の構成に関しては、上述した内容と同様のため説明を省略する。
<バイナリ範囲検索手段S140(VELM)>
バイナリ範囲検索手段S140は、ベクタ比較手段S110を実行したあとに必要に応じて実行される。演算部11は、予め設定されたバイナリ範囲の値を記憶部12等から取得する。バイナリ範囲の値は、例えば格納されたベクトルの要素の数を示し、SIMD命令のレジスタサイズに依存する。例えばSIMD命令に256bitのレジスタが用いられ、レジスタサイズを16とした場合、バイナリ範囲の値は、16である。
演算部11は、選択幅と、バイナリ範囲の値とを比較する(ステップS141)。このとき、選択幅がバイナリ範囲の値よりも大きい場合には、演算部11は、選択幅を減少させ(ステップS142)、再び選択幅と、バイナリ範囲の値とを比較する。
選択幅がバイナリ範囲の値よりも大きい場合、例えば演算部11は、上述した上限値及び下限値における平均値「(上限値+下限値)/2」を算出する。その後、検索グループ3の左端の検索値31を0番目の検索値31として、「平均値」番目の検索値31を平均検索値として選択する。
次に、演算部11は、平均検索値とキーデータの値とを比較する。このとき、キーデータの値が平均検索値以上の場合、下限値として「平均値+1」を設定する。他方、キーデータの値が平均検索値未満の場合、上限値として「平均値」を設定する。
その後、上記で設定された下限値又は上限値を用いて、選択幅として「上限値−下限値」を設定する。これにより、バイナリ範囲検索手段S140を実行する前後において、選択幅を狭めることができる。これにより、選択検索値31sの個数をSIMD命令におけるレジスタサイズに適合させることができる。
なお、選択幅がバイナリ範囲の値以下の場合には、演算部11はバイナリ範囲検索手段S140を終了し、最終検索手段S120を実行する。その後、上述した最終検索手段S120及び取得手段S130を実行することにより、検索装置1の演算手段が終了する。
本実施形態によれば、ベクタ比較手段S110は、SIMD命令を用いて、評価データ41のそれぞれの値とキーデータの値との大小関係を同時に算出した結果から選択値S1を導出し、最終検索手段S120は、SIMD命令を用いて選択検索値31sのそれぞれの値とキーデータの値との大小関係を同時に算出した結果から特定値S2を導出する。このため、木構造で表現される検索対象データに対してSIMD命令を用いた場合等に比べて、データハザードや分岐ハザード等の発生を抑制した状態で、記憶値50を取得することができる。これにより、データ並列性を保つことができ、検索速度の向上を実現することが可能となる。
また、本実施形態によれば、バイナリ範囲検索手段S140は、選択幅がバイナリ範囲の値よりも大きい場合に、選択幅を減少させる。このため、最終検索手段S120における選択検索値31sのそれぞれの値とキーデータの値との大小関係を同時に算出するとき、選択検索値31sの個数をSIMD命令におけるレジスタサイズに適合させることができる。これにより、選択検索値31sの選択数が多い場合においても、データ並列性を保つことができ、検索速度の向上を容易に実現することが可能となる。
また、本実施形態によれば、記憶構造5は、インターバルベース5a及びネクストホップインデックスベース5bを並列に配置した構造である。このため、一対のインターバルベース5a及びネクストホップインデックスベース5bを1つの小構造53として複数並列に配置した構成に比べて、SIMD命令におけるレジスタサイズを拡大させることができる。これにより、検索速度のさらなる向上を実現することが可能となる。
実施例
次に、本発明の実施形態における検索装置1の実施例について説明する。図8及び図9は、本実施例及び参考例におけるルックアップ速度を比較したグラフを示す。図8及び図9の横軸は、条件別の本実施例及び参考例を示し、縦軸は、ルックアップ速度(Mlps:Mega lookup per second)を示す。
図8及び図9は、2016年9月1日時点のRouteViewsアーカイブのLINX(図8(a)、プレフィックスr:629530、ネクストホップn:441)、SAOPAULO(図8(b)、プレフィックスr:637319、ネクストホップn:889)、SYDNEY(図9(a)、プレフィックスr:631020、ネクストホップn:114)、DIXIE(図9(b)、プレフィックスr:606465、ネクストホップn:15)の経路表(RIB)データセットを使い、repeated traffic(同じ経路ばかり牽く、楽天的なケース)と、random traffic(違う経路ばかり牽く、最悪のケース)の2種類のパターンにより、参考例1〜3及び本実施例のルックアップ速度について比較したものである。
参考例1では従来技術のSAILを用いており、参考例2ではDXRを用いており、参考例3ではPoptrieを用いている。参考例1は、ダイレクトポインティングテーブルのビット幅Xについて、1つの条件(X=17)について測定し、参考例2、3及び本実施例は、ダイレクトポインティングテーブルのビット幅Xを5つの条件(X=17、18、19、20、21)について測定した。
図8及び図9に示す結果より、本実施例の検索速度は、参考例1よりも約126.4%高速であり、参考例2よりも約47.1%高速であり、参考例3よりも約23.9%高速であることを確認した。このため、本実施例は、参考例1〜3に比べて、様々な経路及び条件において高いルックアップ速度を示した。これにより、本実施例を用いることで、より高速な経路表等の検索を行えることを確認した。
上述した本実施形態によれば、データ並列性を保つことができ、検索速度の向上を実現できる。このため、実施形態における検索装置1、又は検索プログラムを備える汎用ハードウェアを用いたソフトウェアルータ、又はNFVを構成することによって、これまでより高速なルーティングやルックアップ性能を有することが可能となる。
なお、上述した検索装置1に格納されたプログラムは、例えば可搬メモリ等の記憶媒体に格納されてもよい。この場合、例えば可搬メモリから汎用の計算機ハードウェアにプログラムを格納させることで、任意の汎用の計算機ハードウェア(コンピュータ)を、検索装置1における各手段として機能させることで、上述した内容と同様に、データ並列性を保つことができ、検索速度の向上を実現することが可能となる。
また、本実施形態における検索方法は、上述した検索装置1が実行する記憶手段と演算手段とを備えることで、上述した内容と同様に、データ並列性を保つことができ、検索速度の向上を実現することが可能となる。
1 :検索装置
2 :検索対象データ
3 :検索グループ
4 :アルファデータ
5 :記憶構造
5a :インターバルベース
5b :ネクストホップインデックスベース
11 :演算部
12 :記憶部
13 :入力部
13i :インターフェース
14 :出力部
14i :インターフェース
15 :処理部
15i :インターフェース
16 :設定部
31 :検索値
31b :下限検索値
31f :第1検索値
31s :選択検索値
31u :上限検索値
41 :評価データ
42 :インデックスデータ
42a :第1データ
42b :第2データ
50 :記憶値
51 :インターバルベースアレイ
52 :ネクストホップインデックスベースアレイ
53 :小構造
S1 :選択値
S2 :特定値
S110 :ベクタ比較手段
S120 :最終検索手段
S130 :取得手段
S140 :バイナリ範囲検索手段

Claims (6)

  1. 範囲検索表で形成された検索対象データと、複数の記憶値を有する記憶構造とを格納した記憶手段と、
    キーデータに基づいて検索処理を行う演算手段と、
    を備える検索装置であって、
    前記検索対象データは、
    前記複数の記憶値のそれぞれに紐づく複数の検索値を含む検索グループと、
    前記キーデータとの比較対象となる複数の評価データを有するアルファデータと、
    を有し、
    前記演算手段は、
    前記複数の評価データを取得し、SIMD(Single Instruction Multiple Data)命令を用いて前記評価データのそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から選択値を導出し、前記選択値に基づいて前記検索グループから複数の選択検索値を選択するための上限値、下限値、及び選択幅を導出するベクタ比較手段と、
    前記下限値及び前記選択幅に基づいて前記選択検索値を取得し、前記SIMD命令を用いて前記選択検索値のそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から特定値を導出し、前記特定値に基づいて前記選択検索値から第1検索値を選択する最終検索手段と、
    前記第1検索値に基づいて前記複数の記憶値から第1記憶値を取得する取得手段と、
    を有すること
    を特徴とする検索装置。
  2. 前記演算手段は、前記ベクタ比較手段のあと、前記選択幅と、予め設定されたバイナリ範囲の値とを比較し、前記選択幅が前記バイナリ範囲の値よりも大きい場合に、前記選択幅を減少させるバイナリ範囲検索手段を有すること
    を特徴とする請求項1記載の検索装置。
  3. 前記アルファデータは、前記複数の検索値の一部に紐づく複数のインデックスデータを有し、
    前記ベクタ比較手段は、
    前記選択値に基づいて、前記インデックスデータの有する第1データを前記下限値として設定し、
    前記選択値に基づいて、前記インデックスデータの有する第2データを前記上限値として設定し、
    前記上限値から前記下限値を減算した値を選択幅として設定すること
    を有し、
    前記最終検索手段は、前記検索グループのうち、前記第1データに紐づく下限検索値から前記選択幅に対応する検索値までを、前記複数の選択検索値として取得すること
    を有すること
    を特徴とする請求項1又は2記載の検索装置。
  4. 前記複数の記憶値は、
    IPアドレスのプレフィックスを含む複数のインターバルベースと、
    IPアドレスのインデックスを含む複数のネクストホップインデックスベースと、
    を有し、
    前記記憶構造は、前記複数のインターバルベース及び前記ネクストホップインデックスベースを並列に配置した構造であること
    を特徴とする請求項1〜3の何れか1項記載の検索装置。
  5. コンピュータを、請求項1〜4の何れか1項に記載の前記検索装置における各手段として機能させることを特徴とする検索プログラム。
  6. 範囲検索表で形成された検索対象データと、複数の記憶値を有する記憶構造とを格納した記憶手段と、
    キーデータに基づいて検索処理を行う演算手段と、
    を備える検索装置が実行する検索方法であって、
    前記検索対象データは、
    前記複数の記憶値のそれぞれに紐づく複数の検索値を含む検索グループと、
    前記キーデータとの比較対象となる複数の評価データを有するアルファデータと、
    を有し、
    前記演算手段は、
    前記複数の評価データを取得し、SIMD(Single Instruction Multiple Data)命令を用いて前記評価データのそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から選択値を導出し、前記選択値に基づいて前記検索グループから複数の選択検索値を選択するための上限値、下限値、及び選択幅を導出するベクタ比較手段と、
    前記下限値及び前記選択幅に基づいて前記選択検索値を取得し、前記SIMD命令を用いて前記選択検索値のそれぞれの値と前記キーデータの値との大小関係を同時に算出した結果から特定値を導出し、前記特定値に基づいて前記選択検索値から第1検索値を選択する最終検索手段と、
    前記第1検索値に基づいて前記複数の記憶値から第1記憶値を取得する取得手段と、
    を有すること
    を特徴とする検索方法。
JP2017100670A 2017-05-22 2017-05-22 検索装置、検索プログラム、及び検索方法 Active JP6888234B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017100670A JP6888234B2 (ja) 2017-05-22 2017-05-22 検索装置、検索プログラム、及び検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017100670A JP6888234B2 (ja) 2017-05-22 2017-05-22 検索装置、検索プログラム、及び検索方法

Publications (2)

Publication Number Publication Date
JP2018196075A true JP2018196075A (ja) 2018-12-06
JP6888234B2 JP6888234B2 (ja) 2021-06-16

Family

ID=64571931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017100670A Active JP6888234B2 (ja) 2017-05-22 2017-05-22 検索装置、検索プログラム、及び検索方法

Country Status (1)

Country Link
JP (1) JP6888234B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020156058A (ja) * 2019-03-22 2020-09-24 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信装置、通信方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020156058A (ja) * 2019-03-22 2020-09-24 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信装置、通信方法及びプログラム
JP7088868B2 (ja) 2019-03-22 2022-06-21 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信装置、通信方法及びプログラム

Also Published As

Publication number Publication date
JP6888234B2 (ja) 2021-06-16

Similar Documents

Publication Publication Date Title
US7725510B2 (en) Method and system for multi-character multi-pattern pattern matching
US7418505B2 (en) IP address lookup using either a hashing table or multiple hash functions
CN110120942B (zh) 安全策略规则匹配方法及装置、防火墙设备及介质
EP3276501B1 (en) Traffic classification method and device, and storage medium
EP3270551B1 (en) Retrieval device, retrieval method, program, and recording medium
WO2015127721A1 (zh) 数据匹配的方法、装置及计算机存储介质
JP2009219012A (ja) 固定長データの検索方法
CN108460030B (zh) 一种基于改进的布隆过滤器的集合元素判断方法
Pao et al. A multi-pipeline architecture for high-speed packet classification
US11431626B2 (en) Forwarding rules among lookup tables in a multi-stage packet processor
JP6888234B2 (ja) 検索装置、検索プログラム、及び検索方法
WO2020083062A1 (zh) 一种基于二分边界值计算的非平衡二叉树构造方法
Kekely et al. Packet classification with limited memory resources
US20160301658A1 (en) Method, apparatus, and computer-readable medium for efficient subnet identification
Li et al. Deterministic and efficient hash table lookup using discriminated vectors
Kniesburges et al. Hashed Patricia Trie: Efficient longest prefix matching in peer-to-peer systems
Bahrambeigy et al. Bloom-Bird: A scalable open source router based on Bloom filter
WO2020022374A1 (ja) パケット検索装置、パケット検索方法、及びパケット検索プログラム
US10476785B2 (en) IP routing search
JP6205463B2 (ja) 検索装置、検索方法、プログラム、及び記録媒体
Zhian et al. Parallel processing priority trie-based IP lookup approach
CN108632131B (zh) 一种基于指纹型可变长布鲁姆过滤器的邮件地址匹配方法
WO2019160107A1 (ja) 検索装置、検索方法及び検索プログラム
JP2020201656A (ja) 検索回路
Bahrambeigy et al. Towards Accelerating IP Lookups on Commodity PC Routers using Bloom Filter: Proposal of Bloom-Bird

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200414

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210430

R150 Certificate of patent or registration of utility model

Ref document number: 6888234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250