JP6205463B2 - 検索装置、検索方法、プログラム、及び記録媒体 - Google Patents
検索装置、検索方法、プログラム、及び記録媒体 Download PDFInfo
- Publication number
- JP6205463B2 JP6205463B2 JP2016124838A JP2016124838A JP6205463B2 JP 6205463 B2 JP6205463 B2 JP 6205463B2 JP 2016124838 A JP2016124838 A JP 2016124838A JP 2016124838 A JP2016124838 A JP 2016124838A JP 6205463 B2 JP6205463 B2 JP 6205463B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- transition destination
- leaf
- bit
- internal node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 70
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 230000007704 transition Effects 0.000 claims description 160
- 230000006835 compression Effects 0.000 claims description 33
- 238000007906 compression Methods 0.000 claims description 33
- 238000000547 structure data Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000020169 heat generation Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- XOYCLJDJUKHHHS-LHBOOPKSSA-N (2s,3s,4s,5r,6r)-6-[[(2s,3s,5r)-3-amino-5-(5-methyl-2,4-dioxopyrimidin-1-yl)oxolan-2-yl]methoxy]-3,4,5-trihydroxyoxane-2-carboxylic acid Chemical compound O=C1NC(=O)C(C)=CN1[C@@H]1O[C@H](CO[C@H]2[C@@H]([C@@H](O)[C@H](O)[C@H](O2)C(O)=O)O)[C@@H](N)C1 XOYCLJDJUKHHHS-LHBOOPKSSA-N 0.000 description 1
- 102100040579 Guanidinoacetate N-methyltransferase Human genes 0.000 description 1
- 101000893897 Homo sapiens Guanidinoacetate N-methyltransferase Proteins 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記演算手段は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する、検索装置であり、
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納され、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記ビットベクトルにおける内部ノードを示すビットの値である0又は1の個数を数え、当該個数と前記第1のベース情報とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記ビットベクトルにおけるリーフノードを示すビットの値である1又は0の個数を数え、当該個数と前記第2のベース情報とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索装置が提供される。
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記検索方法は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する演算ステップを有し、
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納され、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、
前記演算ステップにおいて、前記検索装置は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記ビットベクトルにおける内部ノードを示すビットの値である0又は1の個数を数え、当該個数と前記第1のベース情報とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記ビットベクトルにおけるリーフノードを示すビットの値である1又は0の個数を数え、当該個数と前記第2のベース情報とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索方法が提供される。
本実施の形態では、本発明の検索技術の適用先の例として、ルータにおいて、受信したパケットの宛先アドレスをキーとして、ルーティングテーブル(より具体的にはフォワーディングテーブル)を最長一致で検索することにより、当該パケットの転送先とするネクストホップの情報を取得する処理を想定している。ただし、本発明の適用先はこれに限らず、本発明は最長一致に限らず、完全一致等の様々な種類の検索に適用できる。以下では、検索(探索)の対象とするデータを検索対象データと呼ぶ。また、宛先アドレス等の検索のキーとなるデータをキーデータと呼ぶ。
まず、本実施の形態に係る検索処理を実行する検索装置の構成例を説明する。図2は、本実施の形態に係る検索装置10の構成例を示す図である。
図4に、検索装置10の記憶部12に格納される検索対象データの例を示す。図4は、実施例1〜4に共通である。前述したように、本実施の形態では、マルチウェイ基数探索法をベースとした検索処理を行うことから、検索対象データは、木における各内部ノードのデータを保持するnode array(ノード配列)と、木における各リーフノードのデータであるleaf array(リーフ配列)を有する。配列として格納される各ノードのデータには、各配列のIndexを指定することでアクセスできる。
次に、実施例2として、実施例1で説明した方式に対して、リーフデータを圧縮できる方式を説明する。例えば、実施例1の方式をフォワーディングテーブルの検索に適用する際に、重複する値(ネクストホップ)を持つリーフノードが多く発生することが考えられる。実施例2は、実施例1の方式をベースとし、リーフノードを圧縮して保持できるようにしている。以下では、主に実施例1と異なる部分について説明する。
図11は、実施例3における内部ノードを示す図である。図11に示すように、実施例3においては、実施例1で説明したvector、base0、base1に加えて、maskが追加される。maskはvectorのビット長と同じビット長である。
次に、実施例4について説明する。実施例4は、実施例2、3よりも更にリーフノードを圧縮できる方式である。実施例4における内部データの構造を図14に示す。図14に示すように、実施例4の内部データは、既に説明したvector、leafvec、base0、base1に加えて、「A」で示すように、leaf maskとmasked leafが追加されたものである。記憶部12にはnode arrayとleaf arrayが格納されている。
以上、説明したように、本実施の形態では、木のデータ量を大幅に削減できることから、例えば汎用CPUのキャッシュ(例:L1、L2、L3キャッシュ)に検索対象データを格納して検索処理を実施でき、高速な検索処理を実現できる。特に、例として検索対象データが経路表である場合には、経路表内の経路数が大規模になった際に性能が低下してしまう問題点が解決される。また、処理が高速化されるため、アドレス長が長くなった際に性能が低下してしまう問題点も解決することが可能となる。
以上、説明したように、本実施の形態により、検索対象データを格納した記憶手段と、キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置であって、前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトルを含み、前記演算手段は、キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、遷移先のノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行することを特徴とする検索装置が提供される。
(第1項)
検索対象データを格納した記憶手段と、
キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記演算手段は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する
ことを特徴とする検索装置。
(第2項)
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納され、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記第1のベース情報と、前記ビットベクトルにおける内部ノードを示すビットの数とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記第2のベース情報と、前記ビットベクトルにおけるリーフノードを示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする第1項に記載の検索装置。
(第3項)
前記検索対象データにおける各内部ノードについて、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、同じ値を持つリーフノードは圧縮され、複数のリーフノードは、同じ値を持つ複数のリーフノードを含まず、
前記検索対象データにおける各内部ノードは、圧縮前のリーフノードの値が変化した格納位置を示すビットを有するリーフベクトルを含み、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先がリーフノードである場合に、前記第2のベース情報と、前記リーフベクトルにおける前記格納位置を示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする第1項に記載の検索装置。
(第4項)
前記演算手段は、前記ビットベクトルと前記リーフベクトルのうちの前記ビットベクトルを先に調べ、当該ビットベクトルのビットの値に基づき前記リーフベクトルを使用する
ことを特徴とする第3項に記載の検索装置。
(第5項)
前記検索対象データにおける各内部ノードについて、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、同じ値を持つリーフノードは圧縮され、複数のリーフノードは、同じ値を持つ複数のリーフノードを含まず、
前記検索対象データにおける各内部ノードは、圧縮前のリーフノードの値が変化した格納位置を示すビットを有するマスクベクトルを含み、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先がリーフノードである場合に、前記第2のベース情報と、前記マスクベクトルでマスクした前記ビットベクトルにおけるリーフノードを示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする第1項に記載の検索装置。
(第6項)
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納されており、同じ値を持つ内部ノードは圧縮され、複数の内部ノードは、同じ値を持つ複数の内部ノードを含まず、
前記検索対象データにおける各内部ノードは、圧縮前の内部ノードの値が変化した格納位置を示すビットを有するマスクベクトルを含み、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記第1のベース情報と、前記マスクベクトルでマスクした前記ビットベクトルにおける内部ノードを示すビットの数とを用いて当該遷移先の内部ノードにアクセスする
ことを特徴とする第1項に記載の検索装置。
(第7項)
前記検索対象データの各内部ノードについて、遷移先となるリーフノードにおける所定の値がマスクされ、当該マスクされた値が別の値に変更された後に、同じ値を持つリーフノードが圧縮されたことにより、複数のリーフノードは、同じ値を持つ複数のリーフノードを含まず、前記リーフノード配列において、格納位置が連続して格納されており、
前記検索対象データにおける各内部ノードは、前記マスクされた所定の値と、当該所定の値を持つリーフベクトルの圧縮前の位置を示すビットを有するリーフマスクと、圧縮前のリーフノードの値が変化した格納位置を示すビットからなるリーフベクトルとを含み、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先がリーフノードである場合に、前記ビットベクトルにおける当該ビットの位置と同じ位置に、前記リーフマスクにビットが立っているか否かを判定し、立っている場合に、前記所定の値を当該遷移先のリーフノードの値として取得し、立っていない場合に、前記第2のベース情報と、前記リーフベクトルにおける前記格納位置を示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする第1項に記載の検索装置。
(第8項)
前記演算手段は、当該演算手段により構成されるCPUのpopcnt命令を用いて前記ビットの数を算出する
ことを特徴とする第2項ないし第7項のうちいずれか1項に記載の検索装置。
(第9項)
前記演算手段と前記記憶手段は、64ビットCPU上で構成する
ことを特徴とする第1項ないし第8項のうちいずれか1項に記載の検索装置。
(第10項)
前記チャンクは、6ビット長であり、前記ビットベクトルは、64ビット長である
ことを特徴とする第1項ないし第9項のうちいずれか1項に記載の検索装置。
(第11項)
前記演算手段と前記記憶手段は、64ビットCPU上で構成し、前記チャンクは、6ビット長であり、前記ビットベクトルは、64ビット長であり、
前記演算手段は、前記64ビットCPUのpopcnt命令を用いて前記ビットの数を算出し、前記遷移先のノードへのアクセスを、ベース情報からの、当該ビットの数に基づくオフセットを用いて行う
ことを特徴とする第2項ないし第7項のうちいずれか1項に記載の検索装置。
(第12項)
前記演算手段は、前記キーデータから前記所定ビット長よりも長いビット長のチャンクを取得し、当該チャンクを用いて探索を行うことにより、ダイレクトにリーフノードに到達する
ことを特徴とする第1項ないし第11項のうちいずれか1項に記載の検索装置。
(第13項)
コンピュータを、第1項ないし第12項のうちいずれか1項に記載の前記検索装置における各手段として機能させるためのプログラム。
(第14項)
第1項ないし第12項のうちいずれか1項に記載の前記検索対象データを格納したコンピュータ読み取り可能な記録媒体。
(第15項)
検索対象データを格納した記憶手段と、キーデータに基づき前記検索対象データに対する検索処理を行う演算手段とを備える検索装置が実行する検索方法であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記検索方法は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行するステップを有する
ことを特徴とする検索方法。
11 演算部
12 記憶部
13 入力部
14 出力部
21 パケット処理部
22 宛先決定部
Claims (13)
- 検索対象データを格納した記憶手段と、
キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記演算手段は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する、検索装置であり、
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納され、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記ビットベクトルにおける内部ノードを示すビットの値である0又は1の個数を数え、当該個数と前記第1のベース情報とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記ビットベクトルにおけるリーフノードを示すビットの値である1又は0の個数を数え、当該個数と前記第2のベース情報とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索装置。 - 検索対象データを格納した記憶手段と、
キーデータに基づき前記検索対象データに対する検索処理を行う演算手段と、を備える検索装置であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記演算手段は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する、検索装置であり、
前記検索対象データにおける各内部ノードについて、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、同じ値を持つリーフノードは圧縮され、
前記検索対象データにおける各内部ノードは、圧縮前の所定のリーフノードの格納位置を示すビットを有するリーフベクトルを含み、
前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先がリーフノードである場合に、前記第2のベース情報と、前記リーフベクトルにおける前記格納位置を示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索装置。 - 前記演算手段は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記ビットベクトルにおける内部ノードを示すビットの値である0又は1の個数を数え、当該個数と前記第1のベース情報とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記リーフベクトルにおける前記格納位置を示すビットの値である1又は0の個数を数え、当該個数と前記第2のベース情報とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする請求項2に記載の検索装置。 - 前記演算手段は、前記ビットベクトルと前記リーフベクトルのうちの前記ビットベクトルを先に調べ、当該ビットベクトルのビットの値に基づき前記リーフベクトルを使用する
ことを特徴とする請求項2に記載の検索装置。 - 前記演算手段は、当該演算手段により構成されるCPUのpopcnt命令を用いて前記ビットの数を算出する
ことを特徴とする請求項1ないし4のうちいずれか1項に記載の検索装置。 - 前記演算手段と前記記憶手段は、64ビットCPU上で構成する
ことを特徴とする請求項1ないし5のうちいずれか1項に記載の検索装置。 - 前記チャンクは、6ビット長であり、前記ビットベクトルは、64ビット長である
ことを特徴とする請求項1ないし6のうちいずれか1項に記載の検索装置。 - 前記演算手段と前記記憶手段は、64ビットCPU上で構成し、前記チャンクは、6ビット長であり、前記ビットベクトルは、64ビット長であり、
前記演算手段は、前記64ビットCPUのpopcnt命令を用いて前記ビットの数を算出し、前記遷移先のノードへのアクセスを、ベース情報からの、当該ビットの数に基づくオフセットを用いて行う
ことを特徴とする請求項1ないし4のうちいずれか1項に記載の検索装置。 - 前記演算手段は、前記キーデータから前記所定ビット長よりも長いビット長のチャンクを取得し、当該チャンクを用いて探索を行うことにより、ダイレクトにリーフノードに到達する
ことを特徴とする請求項1ないし8のうちいずれか1項に記載の検索装置。 - コンピュータを、請求項1ないし9のうちいずれか1項に記載の前記検索装置における各手段として機能させるためのプログラム。
- 請求項1ないし9のうちいずれか1項に記載の前記検索対象データを格納したコンピュータ読み取り可能な記録媒体。
- 検索対象データを格納した記憶手段と、キーデータに基づき前記検索対象データに対する検索処理を行う演算手段とを備える検索装置が実行する検索方法であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記検索方法は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する演算ステップを有し、
前記検索対象データにおける各内部ノードについて、遷移先となる内部ノードは、前記内部ノード配列において、格納位置が連続して格納され、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、
前記演算ステップにおいて、前記検索装置は、
前記ビットベクトルのビットの値に基づき判定された遷移先が内部ノードである場合に、前記ビットベクトルにおける内部ノードを示すビットの値である0又は1の個数を数え、当該個数と前記第1のベース情報とを用いて当該遷移先の内部ノードにアクセスし、
遷移先がリーフノードである場合に、前記ビットベクトルにおけるリーフノードを示すビットの値である1又は0の個数を数え、当該個数と前記第2のベース情報とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索方法。 - 検索対象データを格納した記憶手段と、キーデータに基づき前記検索対象データに対する検索処理を行う演算手段とを備える検索装置が実行する検索方法であって、
前記記憶手段に格納される前記検索対象データは、内部ノード配列とリーフノード配列を有する多進木構造のデータであり、
前記検索対象データにおける各内部ノードは、遷移先が内部ノードであるかリーフノードであるかをビットで表したビットベクトル、遷移先の1つの内部ノードの格納位置を示す第1のベース情報、及び、遷移先の1つのリーフノードの格納位置を示す第2のベース情報を含み、
前記検索方法は、
キーデータから所定ビット長のチャンクを取得し、アクセスしている内部ノードの前記ビットベクトルにおける当該チャンクの値に対応するビットに基づき、当該内部ノードからの遷移先が内部ノードであるか、リーフノードであるかを判定し、判定された遷移先が内部ノードである場合に、前記第1のベース情報を用いて当該遷移先の内部ノードにアクセスし、遷移先がリーフノードである場合に、前記第2のベース情報を用いて当該遷移先のリーフノードにアクセスする処理を、遷移先がリーフノードになるまで繰り返し実行する演算ステップを有し、
前記検索対象データにおける各内部ノードについて、遷移先となるリーフノードは、前記リーフノード配列において、格納位置が連続して格納されており、同じ値を持つリーフノードは圧縮され、
前記検索対象データにおける各内部ノードは、圧縮前の所定のリーフノードの格納位置を示すビットを有するリーフベクトルを含み、
前記演算ステップにおいて、前記検索装置は、
前記ビットベクトルのビットの値に基づき判定された遷移先がリーフノードである場合に、前記第2のベース情報と、前記リーフベクトルにおける前記格納位置を示すビットの数とを用いて当該遷移先のリーフノードにアクセスする
ことを特徴とする検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016124838A JP6205463B2 (ja) | 2016-06-23 | 2016-06-23 | 検索装置、検索方法、プログラム、及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016124838A JP6205463B2 (ja) | 2016-06-23 | 2016-06-23 | 検索装置、検索方法、プログラム、及び記録媒体 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015048657A Division JP5960863B1 (ja) | 2015-03-11 | 2015-03-11 | 検索装置、検索方法、プログラム、及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016170818A JP2016170818A (ja) | 2016-09-23 |
JP6205463B2 true JP6205463B2 (ja) | 2017-09-27 |
Family
ID=56982487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016124838A Active JP6205463B2 (ja) | 2016-06-23 | 2016-06-23 | 検索装置、検索方法、プログラム、及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6205463B2 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001517024A (ja) * | 1997-09-15 | 2001-10-02 | エフィシャント ネットワーキング アクティエボラーグ | 高速ルーティング・ルックアップのための方法とシステム |
US6985483B2 (en) * | 2001-07-31 | 2006-01-10 | North Carolina State University | Methods and systems for fast packet forwarding |
-
2016
- 2016-06-23 JP JP2016124838A patent/JP6205463B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016170818A (ja) | 2016-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5960863B1 (ja) | 検索装置、検索方法、プログラム、及び記録媒体 | |
KR100962653B1 (ko) | 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치 | |
JP5529976B2 (ja) | 高速ipルックアップのためのシストリック・アレイ・アーキテクチャ | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US8880507B2 (en) | Longest prefix match using binary search tree | |
KR100586461B1 (ko) | 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 | |
JP4995125B2 (ja) | 固定長データの検索方法 | |
CN105141525B (zh) | IPv6路由查找方法及装置 | |
JP2012524932A (ja) | アドレス検索のためのデータ構造、方法、及びシステム | |
KR20020059238A (ko) | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된다중탐색 트리 구조의 자료를 탐색하는 방법 | |
US20160241473A1 (en) | Apparatus and Method for Processing Alternately Configured Longest Prefix Match Tables | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
WO2014047863A1 (en) | Generating a shape graph for a routing table | |
CN107729053B (zh) | 一种实现高速缓存表的方法 | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
JP6205463B2 (ja) | 検索装置、検索方法、プログラム、及び記録媒体 | |
Bahrambeigy et al. | Bloom-Bird: A scalable open source router based on Bloom filter | |
CN107204926B (zh) | 预处理cache的路由快速查找方法 | |
JP6888234B2 (ja) | 検索装置、検索プログラム、及び検索方法 | |
Bahrambeigy et al. | Towards Accelerating IP Lookups on Commodity PC Routers using Bloom Filter: Proposal of Bloom-Bird | |
JP2020004132A (ja) | 検索装置、検索方法、プログラム、及び記録媒体 | |
JP3754043B2 (ja) | データ検索装置 | |
KR20050043035A (ko) | 복수의 해슁 함수를 이용한 ip 어드레스 검색 방법 및하드웨어 구조 | |
Hung et al. | Parallel table lookup for next generation internet | |
JP2020201656A (ja) | 検索回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160623 |
|
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: 20170808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170904 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6205463 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |