JP3547625B2 - データ検索装置およびデータ検索方法 - Google Patents
データ検索装置およびデータ検索方法 Download PDFInfo
- Publication number
- JP3547625B2 JP3547625B2 JP25014298A JP25014298A JP3547625B2 JP 3547625 B2 JP3547625 B2 JP 3547625B2 JP 25014298 A JP25014298 A JP 25014298A JP 25014298 A JP25014298 A JP 25014298A JP 3547625 B2 JP3547625 B2 JP 3547625B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- search
- leaf
- searched
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
この発明は、例えば、中継するパケットに付加されたインターネットプロトコル(IP)層の宛先アドレス(宛先IPアドレス)を検査し、中継先を決定するルータなどのインターネットの中継装置に適用されるデータ検索装置およびデータ検索方法であって、ノードに接続され、パケットの宛先ネットワークアドレスなどの被検索データを有するリーフ、並びに、前段および次段の少なくとも一方に接続され、パケットの宛先アドレスである検索データの桁を指すビット番号を有するノードにより構成される検索木において、検索データに対応する被検索データを検索するデータ検索装置およびデータ検索方法に関するものである。
【0002】
【従来の技術】
図11は、従来のルータなどに記憶されたルーティングテーブルの一例を示す図である。図11において、1は宛先ネットワークIPアドレスであり、2は、各宛先ネットワークIPアドレス1に対応して設けられているネットワークマスクであり、4は、各宛先ネットワークIPアドレス1に対応して設けられている中継先アドレスである。そして、1つの宛先ネットワークIPアドレス1、1つのネットワークマスク2、および1つの中継先アドレス4により1つのエントリ6−i(i=1〜7)が構成される。なお、図中のアドレスおよびマスクは16進数で表されており、「0x」は16進数であることを示すものである。
【0003】
このようなルーティングテーブルを有するルータなどの中継装置においては、ネットワークを介してパケットを受け取ると、そのパケットに付加された宛先IPアドレスを検索データとして抽出し、ルーティングテーブルの各エントリ6−1〜6−7に対して、次の関係式が成り立つか否かを判断し、この関係式が成り立つエントリに含まれる中継先アドレス4に向けてそのパケットを送出する。
(宛先IPアドレス)&(ネットワークマスク)
=(宛先ネットワークIPアドレス)
ただし、「&」は、ビットごとの論理積を計算する演算子である。
【0004】
例えば、宛先IPアドレスが0x80050000〜0x8005FFFFのいずれかである場合には、宛先ネットワークIPアドレス1が0x80050000であり、ネットワークマスク2が0xFFFF0000であり、中継先アドレス4が0x80050722であるエントリ6−2について上記関係式が成立するので、宛先IPアドレスが0x80050000〜0x8005FFFFのいずれかであるパケットは、アドレスが0x80050722である中継先に向けて送出される。
【0005】
さらに、複数のエントリについて上記関係式が成立する場合には、ネットワークマスク2について値が1であるビット数の最も多いエントリが選択される。なお、このことはロンゲストマッチングと呼ばれる。
【0006】
例えば、検索データであるパケットの宛先IPアドレスが0x80209000である場合、図11において、エントリ6−1,6−3,6−5について上記関係式が成立するので、値が1であるビットの最も多いネットワークマスク2を有するエントリ6−5が選択され、そのパケットは、アドレスが0x8020920Bである中継先に向けて送出される。
【0007】
次に、例えば「A Tree−Based Packet Routing Table for Berkeley Unix」(Sklower著、Technical Report、University of California Berkeley、1994年)に記載のパトリシアツリーを利用したルーティングテーブルについて説明する。図12は、図11のルーティングテーブルと同一のルーティング情報を有するパトリシアツリーの一例を示す図であり、図13は、従来のデータ検索方法について説明するフローチャートである。
【0008】
図12において、3a〜3kは、パトリシアツリーのノードであり、6は検索データであり、5a〜5gは、上記エントリ6−1〜6−7をデータとしてそれぞれ有するリーフである。ただし、図12のリーフ5a〜5gには、中継先アドレス4の記載が省略されている。
【0009】
図12に示すパトリシアツリーにおいては、ノード3aが頂点のノードであり、リーフ5aを接続されている。そして、ノード3aにはビット番号「0」が割り当てられている。このビット番号iは、次段のノードを探索するときに使用され、検索データのMSB(Most Significant Bit)側から第i番目のビットの値に応じてノードが選択される。図12においては、検索データのMSB側から第i番目のビットの値が「1」である場合には、右側に接続された次段のノードが選択され、その第i番目のビットの値が「0」である場合には、左側に接続された次段のノードが選択される。
【0010】
リーフ5aには、図11のエントリ6−1と同一の宛先ネットワークIPアドレス1a、ネットワークマスク2a、および中継先アドレス4(図示せず)が保持されている。
【0011】
次に、ノード3hが次段右側のノードとしてノード3aに接続され、ビット番号「1」を割り当てられている。そして、ノード3jが次段右側のノードとしてノード3hに接続され、ビット番号「19」を割り当てられ、ノード3iが次段左側のノードとしてノード3hに接続され、ビット番号「10」を割り当てられている。さらに、ノード3gが次段右側のノードとしてノード3jに接続され、ビット番号「24」を割り当てられ、エントリ6−7と同一のデータを保持するリーフ5gを接続されている。また、ノード3fが次段左側のノードとしてノード3jに接続され、ビット番号「20」を割り当てられ、エントリ6−6と同一のデータを保持するリーフ5fを接続されている。
【0012】
同様に、ノード3cが次段右側のノードとしてノード3iに接続され、ビット番号「16」を割り当てられ、エントリ6−3と同一のデータを保持するリーフ5cを接続されている。また、ノード3bが次段左側のノードとしてノード3iに接続され、ビット番号「16」を割り当てられ、エントリ6−2と同一のデータを保持するリーフ5bを接続されている。
【0013】
さらに、ノード3kが次段右側のノードとしてノード3cに接続され、ビット番号「19」を割り当てられ、ノード3eが次段右側のノードとしてノード3kに接続され、ビット番号「20」を割り当てられ、エントリ6−5と同一のデータを保持するリーフ5eを接続されており、ノード3dが次段左側のノードとしてノード3kに接続され、ビット番号「20」を割り当てられ、エントリ6−4と同一のデータを保持するリーフ5dを接続されている。
【0014】
次に、このようなパトリシアツリーとして記憶されているリーフ5a〜5gのデータから、検索データに応じた所望のデータを検索するときの処理について、図13のフローチャートを参照して説明する。
【0015】
まず、ステップST1において、検索位置(対象ノード)が頂点のノード(図12では、ノード3a)に設定される。
【0016】
次に、ステップST2において、その対象ノードにリーフが接続されているか否かが判断され、リーフが接続されていると判断された場合には、ステップST3においてそのリーフの有するデータがスタックに記憶される。リーフが接続されていないと判断された場合には、ステップST3はスキップされる。
【0017】
そして、ステップST4において、検索データのうちの、MSBから、対象ノードに割り当てられているビット番号だけLSB(Least Significant Bit)側のビットの値が1であるか否かが判断される。そのビットの値が1である場合には、ステップST5において、対象ノードの次段右側にノードがあるか否かが判断され、対象ノードの次段右側にノードがあると判断された場合、ステップST6において、対象ノードが、その次段右側のノードに移動される。一方、そのビットの値が0である場合には、ステップST7において、対象ノードの次段左側にノードがあるか否かが判断され、対象ノードの次段左側にノードがあると判断された場合、ステップST8において、対象ノードが、その次段左側のノードに移動される。そして、ステップST6の処理またはステップST8の処理が終了した後、ステップST2に戻り、次の対象ノードに対してステップST2〜ステップST8の処理が同様に実行される。
【0018】
ステップST5において対象ノードの次段右側にノードがないと判断されるか、あるいは、ステップST7において対象ノードの次段左側にノードがないと判断された場合には、ステップST9に進む。
【0019】
そして、ステップST9において、スタックにリーフのデータが記憶されているか否かが判断され、リーフのデータがある場合には、ステップST10において、そのリーフのデータである宛先ネットワークIPアドレスとネットワークマスクを読み出し、ステップST11において、その宛先ネットワークIPアドレスとネットワークマスク、および検索データとしての宛先IPアドレスについて、上記関係式が成立するか否かが判断される。
【0020】
そして、その関係式が成立した場合には、ステップST12において、検索データとしての宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスが、そのリーフのデータに確定される。
【0021】
一方、ステップST11において上記関係式が成立しない場合には、ステップST9に戻り、スタックに記憶したリーフのデータを順次読み出し、上記関係式が成立するまで、同様の処理が実行される。なお、スタックに記憶したリーフのデータがすべて読み出され、スタックに記憶されているリーフのデータがなくなった場合には、ステップST9において、リーフのデータがないと判断され、検索処理が終了する。なお、この場合、検索に失敗したことになる。ただし、リーフ5aのようにデフォルトの中継先のためのデータを設けておくことにより、中継先が必ず確定されるようにすることができる。
【0022】
このようにして、各パケットに付加されている宛先IPアドレスを検索データとして、宛先ネットワークアドレスや中継先アドレスが検索される。
【0023】
ここで、具体的な検索の例として、中継装置に図12のパトリシアツリーが記憶されており、検索データである宛先IPアドレスが0x8020A324である場合における検索処理について説明する。なお、この宛先IPアドレスを2進数で表記すると、1000 0000 0010 0000 1010 0011 0010 0100となる。
【0024】
まず、検索位置(対象ノード)がノード3aに設定される(ステップST1)。次に、その対象ノードであるノード3aにリーフが接続されているか否かが判断される(ステップST2)。ノード3aにはリーフ5aが接続されているので、そのリーフの有するデータ(エントリ6−1と同一のデータ)がスタックに記憶される(ステップST3)。
【0025】
そして、ノード3aに割り当てられているビット番号が0であるので、検索データのうちの、MSBの値が1であるか否かが判断される(ステップST4)。検索データのMSBの値が1であるので、対象ノードであるノード3aの次段右側にノードがあるか否かが判断される(ステップST5)。ノード3aの次段右側にはノード3hがあるので、対象ノードが、ノード3aからノード3hへ移動される(ステップST6)。
【0026】
そして、対象ノードであるノード3hにリーフが接続されているか否かが判断される(ステップST2)。ノード3hにはリーフが接続されていないので、ステップST3の処理がスキップされる。ノード3hに割り当てられているビット番号が1であるので、検索データのうちの、MSBから第1番目のビットの値が1であるか否かが判断される(ステップST4)。検索データのMSBから第1番目のビットの値は0であるので、対象ノードであるノード3hの次段左側にノードがあるか否かが判断される(ステップST7)。ノード3hの次段左側にはノード3iがあるので、対象ノードが、ノード3hからノード3iへ移動される(ステップST8)。
【0027】
さらに、対象ノードであるノード3iにリーフが接続されているか否かが判断される(ステップST2)。ノード3iにはリーフが接続されていないので、ステップST3の処理がスキップされる。ノード3iに割り当てられているビット番号が10であるので、検索データのうちの、MSBから第10番目のビットの値が1であるか否かが判断される(ステップST4)。検索データのMSBから第10番目のビットの値が1であるので、対象ノードであるノード3iの次段右側にノードがあるか否かが判断される(ステップST5)。ノード3iの次段右側にはノード3cがあるので、対象ノードが、ノード3iからノード3cへ移動される(ステップST6)。
【0028】
さらに、対象ノードであるノード3cにリーフが接続されているか否かが判断される(ステップST2)。ノード3cにはリーフ5cが接続されているので、そのリーフ5cの有するデータ(エントリ6−3と同一のデータ)がスタックに記憶される(ステップST3)。次に、ノード3cに割り当てられているビット番号が16であるので、検索データのうちの、MSBから第16番目のビットの値が1であるか否かが判断される(ステップST4)。検索データのMSBから第16番目のビットの値が1であるので、対象ノードであるノード3cの次段右側にノードがあるか否かが判断される(ステップST5)。ノード3cの次段右側にはノード3kがあるので、対象ノードが、ノード3cからノード3kへ移動される(ステップST6)。
【0029】
さらに、対象ノードであるノード3kにリーフが接続されているか否かが判断される(ステップST2)。ノード3kにはリーフが接続されていないので、ステップST3の処理がスキップされる。ノード3kに割り当てられているビット番号が19であるので、検索データのうちの、MSBから第19番目のビットの値が1であるか否かが判断される(ステップST4)。検索データのMSBから第19番目のビットの値が0であるので、対象ノードであるノード3kの次段左側にノードがあるか否かが判断される(ステップST7)。ノード3kの次段左側にはノード3dがあるので、対象ノードが、ノード3kからノード3dへ移動される(ステップST8)。
【0030】
さらに、対象ノードであるノード3dにリーフが接続されているか否かが判断される(ステップST2)。ノード3dにはリーフ5dが接続されているので、そのリーフ5dの有するデータ(エントリ6−4と同一のデータ)がスタックに記憶される(ステップST3)。次に、ノード3dに割り当てられているビット番号が20であるので、検索データのうちの、MSBから第20番目のビットの値が1であるか否かが判断される(ステップST4)。検索データのMSBから第20番目のビットの値が0であるので、対象ノードであるノード3dの次段左側にノードがあるか否かが判断される(ステップST7)。ノード3dの次段左側にはノードがないので、対象ノードの移動は行われない。
【0031】
この時点で、エントリ6−4と同一のデータ、エントリ6−3と同一のデータ、エントリ6−1と同一のデータがスタックに記憶されている。
【0032】
次に、スタックにリーフのデータが記憶されているか否かが判断され(ステップST9)、この時点で3つのデータがあるので、最後に記憶したエントリ6−4と同一のデータである宛先ネットワークIPアドレス(=0x80208000)とネットワークマスク(=0xFFFFF000)を読み出し(ステップST10)、その宛先ネットワークIPアドレスとネットワークマスク、および検索データとしての宛先IPアドレスについて、上記関係式が成立するか否かが判断される(ステップST11)。
【0033】
ここで、(0x8020A324)&(0xFFFFF000)=0x8020A000≠0x80208000であるので、上記関係式が成立しないと判断し(ステップST11)、次に、エントリ6−3と同一のデータである宛先ネットワークIPアドレス(=0x80200000)とネットワークマスク(=0xFFFF0000)が読み出され(ステップST10)、その宛先ネットワークIPアドレスとネットワークマスク、および検索データとしての宛先IPアドレスについて、上記関係式が成立するか否かが判断される(ステップST11)。
【0034】
ここで、(0x8020A324)&(0xFFFF0000)=0x80200000であるので、上記関係式が成立したと判断し、検索データとしての宛先IPアドレス(=0x8020A324)に対応する、宛先ネットワークIPアドレスや中継先アドレスが、そのリーフのデータ(すなわち、エントリ6−3と同一のデータ)に確定される(ステップST12)。
【0035】
このようにして、図12に示すパトリシアツリーとしてルーティングテーブルが記憶され、検索データである宛先IPアドレスが0x8020A324である場合には、宛先ネットワークIPアドレスとして0x80200000が選択され、中継先アドレスとして0x8020843Eが選択される。
【0036】
なお、その他、本発明に関連する事項が例えば特開昭63−291117号公報、特開平2−1021号公報、特開平3−8083号公報、特開平4−316244号公報、および特開平8−320877号公報に記載されているが、これらより本発明を導出することは困難である。
【0037】
【発明が解決しようとする課題】
従来のデータ検索方法は以上のように構成されているので、対象ノードの移動ができなくなるまで、リーフのデータを記憶しながら対象ノードを移動させていった後に、記憶したリーフのデータと検索データとを順次比較していく必要があり、検索に要する時間を短縮することが困難であるなどの課題があった。
【0038】
この発明は上記のような課題を解決するためになされたもので、検索データの、対象ノードのビット番号に対応するビットの値に基づいて次段のノードを検索する検索処理と、対象ノードに接続されるリーフのデータと検索データとを比較する比較処理とを並列して実行して、ハードウェアによる処理に適した、検索に要する時間を短縮することが可能なデータ検索装置およびデータ検索方法を得ることを目的とする。
【0039】
【課題を解決するための手段】
この発明に係るデータ検索装置は、検索データの、対象ノードのビット番号が指す桁の値に基づいて次段のノードの中から次の対象ノードを検索する処理と、対象ノードに接続されるリーフの被検索データと検索データとを所定の桁について比較する処理とを並列して実行する処理手段と、処理手段での比較により所定の桁について被検索データと検索データとが一致した場合に被検索データを保持するデータ保持手段と、処理手段での検索により次段のノードが存在しない場合、および、処理手段での比較により所定の桁について被検索データと検索データとが一致しない場合に、データ保持手段が最後に保持した被検索データを検索結果として出力する出力手段とを備えるものである。
【0040】
この発明に係るデータ検索装置は、ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータを記憶する第1のリーフ情報記憶手段とを備え、処理手段により、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第1のリーフ情報記憶手段から、対象ノードに接続されるリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータにより指定された桁についてその被検索データと検索データとを比較するものである。
【0041】
この発明に係るデータ検索装置は、ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、ノードに対応して、そのノードに接続されたリーフへのポインタを記憶する第2のリーフ情報記憶手段と、リーフに対応して、被検索データ、およびその被検索データに付随するデータを記憶する第3のリーフ情報記憶手段とを備え、処理手段により、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第2のリーフ情報記憶手段から、対象ノードに接続されるリーフへのポインタを読み出し、そのポインタに基づいて第3のリーフ情報記憶手段から、そのリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータより指定された桁についてその被検索データと検索データとを比較するものである。
【0042】
この発明に係るデータ検索装置は、対象ノードのビット番号に基づいて、ノードに接続されるリーフの被検索データと検索データとを比較する桁を決定するものである。
【0043】
この発明に係るデータ検索装置は、ノードに対応して、ビット番号、および、次段のノードが末端のノードであり、かつリーフを接続されたものである場合にはそのリーフへのポインタ、そうでない場合には次段のノードへのポインタを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータを記憶する第1のリーフ情報記憶手段とを備え、処理手段により、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタまたはリーフへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第1のリーフ情報記憶手段から、対象ノードに接続されるリーフまたは末端のノードに接続されたリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータにより指定された桁についてその被検索データと検索データとを比較するものである。
【0044】
この発明に係るデータ検索装置は、ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータへのポインタを記憶する第4のリーフ情報記憶手段と、被検索データに付随するデータを記憶する第5のリーフ情報記憶手段とを備え、処理手段により、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第4のリーフ情報記憶手段から、対象ノードに接続されるリーフの被検索データおよびその被検索データに付随するデータへのポインタを読み出し、所定の桁についてその被検索データと検索データとを比較し、検索により次段のノードが存在しない場合および比較により所定の桁について被検索データと検索データとが一致しない場合に被検索データに付随するデータへのポインタに基づいて第5のリーフ情報記憶手段からその被検索データに付随するデータを読み出し、データ保持手段により、処理手段での比較により所定の桁について被検索データと検索データとが一致した場合に、被検索データを保持し、出力手段により、処理手段での検索により次段のノードが存在しない場合、および処理手段での比較により所定の桁について被検索データと検索データとが一致しない場合に、データ保持手段に最後に保持した被検索データおよび処理手段により読み出されたその被検索データに付随するデータを検索結果として出力するものである。
【0045】
この発明に係るデータ検索方法は、検索データの、対象ノードのビット番号が指す桁の値に基づいて次段のノードの中から次の対象ノードを検索する検索処理と、対象ノードに接続されるリーフの被検索データと検索データとを所定の桁について比較する比較処理とを並列して実行するステップと、比較処理により所定の桁について被検索データと検索データとが一致した場合に被検索データを保持するステップと、検索処理により次段のノードが存在しない場合、および、比較処理により所定の桁について被検索データと検索データとが一致しない場合に、最後に保持した被検索データを検索結果として出力するステップとを備えるものである。
【0046】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1は、この発明の実施の形態1によるデータ検索装置の構成例を示すブロック図である。図2は、実施の形態1によるデータ検索装置のノード用メモリに記憶されるデータの一例を示す図である。図3は、実施の形態1によるデータ検索装置のリーフ用メモリに記憶されるデータの一例を示す図である。
【0047】
図1において、30は、パトリシアツリーなどの検索木におけるノードの情報を記憶するノード用メモリ(ノード情報記憶手段)である。ノード用メモリ30は、ノード毎に、次段左側にノードがあるか否かを示すフラグ306、次段右側にノードがあるか否かを示すフラグ307、次段左側のノードのビット番号304、次段右側のノードのビット番号305、次段左側のノードへのポインタ302、および次段右側のノードへのポインタ303で構成されるレコード301を記憶している。なお、フラグ306,307の値は、ノードがある場合1に設定され、そうでない場合0に設定される。また、ポインタは、そのノードの情報が記憶されている場所のアドレスである。
【0048】
例えば図12の検索木のノードに対応する情報は、図2に示すような値として記憶される。図2においては、アドレス0に初期情報(処理の最初に参照される情報)が記憶され、アドレス2,3にノード3aに対応するレコード301が記憶され、アドレス4,5にノード3dに対応するレコード301が記憶され、アドレス6,7にノード3cに対応するレコード301が記憶されており、さらに、アドレス8,9にノード3hに対応するレコード301が記憶され、アドレス10,11にノード3kに対応するレコード301が記憶され、アドレス12,13にノード3iに対応するレコード301が記憶され、以下同様に、残りのノードに対応する情報が記憶されている。例えばノード3aの次段右側にはノードがないので、アドレス2には、フラグ306が0であるレコード301が記憶されている。このレコード301のビット番号304、および次段右側のノードへのポインタ302は、特に有意ではないので、値0に設定されている。
【0049】
31は、パトリシアツリーなどの検索木におけるリーフの情報を記憶するリーフ用メモリ(第1のリーフ情報記憶手段)である。リーフ用メモリ31は、リーフ毎に、被検索データとしての宛先ネットワークIPアドレス312、被検索データに付随するデータとしてのネットワークマスク313および被検索データに付随するデータとしての中継先アドレス314で構成されるエントリ311を記憶している。なお、リーフ用メモリ31における各エントリ311のアドレスは、そのエントリに対応するリーフが接続されるノードに対応するレコード301のノード用メモリ30におけるアドレスを2分の1にした値の端数を切り捨てた値になるように設定されている。なお、リーフを有さないノードに対応するリーフ用メモリ31の記憶場所には、有意な情報は記憶されていない(ここでは値0が記憶される)。
【0050】
例えば図12の検索木のリーフに対応する情報は、図3に示すような値として記憶される。図3においては、アドレス0には、初期情報(処理の最初に参照される情報)に対応して、リーフなしを示す値0が記憶され、アドレス1にノード3aに接続されたリーフ5aに対応するエントリ311が記憶され、アドレス2にノード3dに接続されたリーフ5dに対応するエントリ311が記憶され、アドレス3にノード3cに接続されたリーフ5cに対応するエントリ311が記憶されている。さらに、ノード3h、ノード3k、およびノード3iにはリーフが接続されていないので、アドレス4〜6には値0が記憶されている。以下同様に、残りのノードに対応してそれぞれ値が記憶されている。例えば、アドレス1には、リーフ5aに対応して、宛先アドレス312が0x00000000であり、ネットワークマスク323が0x00000000であり、中継先アドレスが0x8000A804であるエントリ311が記憶されている。
【0051】
33は、ノード用メモリ30およびシフタ34に供給されるアドレスを一時的に記憶するレジスタ(処理手段)である。34は、ノード用メモリ30に供給されるアドレスをLSB側に1ビットだけシフトさせ、シフト後の値をアドレスとしてリーフ用メモリ31に供給するシフタ(処理手段)である。なお、このシフタ34は、入力の各ビットを、そのビットから1ビットだけLSB側のビットとして単に出力し、入力のLSBの値を切り捨てるようにしてもよい。
【0052】
32は、検索データである宛先IPアドレスを受け取り、ノード用メモリ30およびリーフ用メモリ31から適宜情報を読み出し、後述のようにして、その宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスを選択し、検索結果として出力する制御回路(処理手段、データ保持手段、出力手段)である。なお、制御回路32は、互いに独立して動作する図示せぬ検索処理部と比較処理部を有し、検索処理部で後述の検索処理を実行し、比較処理部で後述の比較処理を実行する。
【0053】
次に動作について説明する。
図4は、この発明の実施の形態1によるデータ検索装置の動作について説明するフローチャートである。
【0054】
まずステップST21において、制御回路32は、検索位置(対象ノード)を頂点のノードに設定する。このとき、制御回路32は、レジスタ33に初期のアドレスとして0を記憶させ、ノード用メモリ30のアドレス0に記憶された初期情報を読み出し、その情報のうちの頂点のノードのアドレスに基づいて、頂点のノードの情報を読み出す。このとき、ノード用メモリ30により、頂点のノードに対応するフラグ306またはフラグ307、およびビット番号304またはビット番号305が制御回路32に出力され、次段左側のノードへのポインタ302または次段右側のノードへのポインタ303がレジスタ33に出力されるとともに、リーフ用メモリ31により、頂点のノードに対応するエントリ311が制御回路32に出力される。
【0055】
次に、ステップST22〜ステップST26の検索処理と、ステップST27〜ステップST29の比較処理が並列して実行される。すなわち、制御回路32は、検索処理部で検索処理を実行し、比較処理部で比較処理を実行する。
【0056】
まずステップST22においては、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードのビット番号だけLSB側のビットの値が1であるか否かを判断する。そのビットの値が1である場合には、制御回路32の検索処理部は、レジスタ33に供給された次の対象ノードのアドレスのLSBを0から1に変更する。なお、ノード用メモリ30の偶数アドレスには、各ノードについての次段左側のノードの情報が記憶されており、奇数アドレスには、次段右側のノードの情報が記憶されている。したがって、レジスタ33に記憶されたアドレスのLSBを0から1に変更することにより、次の対象ノードとしての次段右側のノードの情報がノード用メモリ30より出力される。
【0057】
ステップST23において、制御回路32の検索処理部は、ノード用メモリ30より供給されたその次段右側のノードの情報のうちのフラグ307に基づいて、対象ノードの次段右側にノードがあるか否かを判断し、対象ノードの次段右側にノードがあると判断した場合、ステップST24において、対象ノードが、その次段右側のノードに移動されたことになる。
【0058】
一方、そのビットの値が0である場合には、制御回路32の検索処理部は、レジスタ33に記憶されたアドレスを特に変更しない。したがって、次の対象ノードとしての次段左側のノードの情報がノード用メモリ30より出力される。
【0059】
ステップST25において、制御回路32の検索処理部は、ノード用メモリ30より供給されたその次段左側のノードの情報のうちのフラグ306に基づいて、対象ノードの次段左側にノードがあるか否かを判断し、対象ノードの次段左側にノードがあると判断した場合、ステップST26において、対象ノードが、その次段左側のノードに移動されたことになる。
【0060】
このようにして、ステップST22〜ステップST26の検索処理が実行される。この検索処理と並列に比較処理が実行される。まず、レジスタ33に記憶された対象ノードのアドレスに対応してシフタ34によりアドレスがリーフ用メモリ31に供給され、対象ノードに対応するエントリ311が制御回路32の比較処理部に供給される。
【0061】
そして、ステップST27において、制御回路32の比較処理部は、そのエントリ311のデータがすべて0であるか否かを判断し、そのエントリ311のデータのいずれかが0ではないと判断した場合、すなわち、対象ノードにリーフがあると判断した場合、ステップST28において、リーフ用メモリ31より供給されたエントリ311の各データに基づいて、次の関係式が成り立つか否かを判断する。
(検索データ)&(ネットワークマスク)
=(宛先ネットワークIPアドレス)
そして、この関係式が成り立つと判断した場合、ステップST29において、制御回路32の比較処理部は、そのリーフのエントリ311を記憶する。
【0062】
なお、ステップST27において供給されたエントリのデータがすべて0である場合には、ステップST28およびステップST29の処理はスキップされ、ステップST28において上記関係式が成り立たない場合には、ステップST29の処理はスキップされる。
【0063】
このようにして、ステップST27〜ステップST29の比較処理が実行される。そして、検索処理および比較処理が完了すると、ステップST30に進む。
【0064】
ステップST30において、制御回路32は、比較処理部によりステップST28の処理を実行したか否かを判断し、ステップST28の処理を実行していない(すなわち、対象ノードにリーフがない)と判断した場合、次の対象ノードに対して、ステップST22〜ステップST29の処理を同様に実行する。
【0065】
一方、ステップST28の処理を実行した(すなわち、対象ノードにリーフがある)と判断した場合、ステップST31において、制御回路32は、ステップST28において上記関係式が成り立ったか否かを判断し、ステップST28において上記関係式が成り立たったと判断した場合、同様に、次の対象ノードに対して、ステップST22〜ステップST29の処理を実行する。
【0066】
そして、ステップST23において次の対象ノードである次段右側のノードがないと判断されるか、あるいは、ステップST25において次の対象ノードである次段左側のノードがないと判断された場合、および、ステップST31においてステップST28の処理により上記関係式が成り立たなかったと判断した場合、ステップST32において、制御回路32は、比較処理部にリーフのエントリ311が記憶されているか否かを判断し、リーフのエントリ311が記憶されている場合には、ステップST33において、そのリーフのエントリ311である宛先ネットワークIPアドレス、ネットワークマスクおよび中継先アドレスを、検索データである宛先IPアドレスに対応するものとして出力する。
【0067】
なお、記憶されているリーフのデータがない場合には、ステップST32においてリーフのデータがないと判断され、検索処理が終了する。この場合、検索に失敗したことになり、例えば、該当するエントリがない旨の情報が検索結果として出力される。ただし、リーフ5aのようにデフォルトの中継先のためのデータを設けておくことにより、中継先が必ず確定されるようにすることができる。
【0068】
このようにして、各パケットに付加されている宛先IPアドレスを検索データとして、宛先ネットワークIPアドレスや中継先アドレスが検索される。
【0069】
ここで、具体的な検索の例として、中継装置に図12のパトリシアツリーに対応するデータが図2および図3に示すようにノード用メモリ30およびリーフ用メモリ31に記憶されており、検索データである宛先IPアドレスが0x8020A324である場合における検索処理について説明する。なお、この宛先IPアドレスを2進数で表記すると、1000 0000 0010 0000 1010 0011 0010 0100となる。
【0070】
まず、制御回路32は、検索位置(対象ノード)を頂点のノードに設定する。このとき、制御回路32は、レジスタ33に初期のアドレスとして0を記憶させ、ノード用メモリ30のアドレス0に記憶された初期情報(フラグ306=1,頂点のノード3aのビット番号304=0,頂点のノード3aへのポインタ302=2)を読み出す。このとき、その情報のうちの頂点のノードのアドレス(=2)がレジスタ33に供給され、フラグ306(=1)とビット番号304(=0)は制御回路32に供給される。そして、制御回路32は、レジスタ33のLSBの値を0から1に変更する。
【0071】
次に、次の対象ノードの検索処理と、対象ノードのリーフのデータと検索データとの比較処理が並列して実行される。
【0072】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3aのビット番号(=0)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビット(すなわちMSB)の値が1であるので、制御回路32の検索処理部は、レジスタ33に供給された次の対象ノードのアドレスのLSBを0から1に変更する。したがって、次に、ノード3aに対する情報のうちの、アドレス3に記憶された次段右側のノード(ノード3h)の情報(フラグ307=1,次段右側のノード(ノード3h)のビット番号305=1,次段右側のノード(ノード3h)へのポインタ303=8)がノード用メモリ30より出力される。
【0073】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ307の値が1であるので、対象ノードであるノード3aの次段右側にノードがあると判断する(ステップST23)。ここで、対象ノードが、その次段右側のノード3hに移動されたことになる(ステップST24)。
【0074】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31により、アドレス1に記憶された頂点のノード3aに対応するエントリ311(宛先ネットワークIPアドレス312=0x00000000,ネットマスク313=0x00000000,中継先アドレス314=0x8000A804)が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3aに対応するエントリ311のデータがすべて0であるか否かを判断し(ステップST27)、そのエントリ311のデータのうちの中継アドレスの値が0ではないので、すなわち対象ノードであるノード3aにリーフがあるので、リーフ用メモリ31より供給されたエントリ311の各データに基づいて、次の関係式が成り立つか否かを判断する(ステップST28)。(検索データ)&(ネットワークマスク)
=(宛先ネットワークIPアドレス)
【0075】
ここで(0x8020A324)&(0x00000000)=(0x00000000)であるので関係式が成り立つと判断し、制御回路32の比較処理部は、そのリーフのエントリ311を記憶する(ステップST29)。
【0076】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立ったので(ステップST31)、さらに検索処理および比較処理が実行される。
【0077】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3hのビット番号(=1)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビットの値が0であるので、次に、ノード3hに対する情報のうちの、アドレス8に記憶された次段左側のノード(ノード3i)の情報(フラグ306=1,次段左側のノード(ノード3i)のビット番号304=10,次段左側のノード(ノード3i)へのポインタ302=12)がノード用メモリ30より出力される。
【0078】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ306の値が1であるので、対象ノードであるノード3hの次段左側にノードがあると判断する(ステップST25)。ここで、対象ノードが、その次段左側のノード3iに移動されたことになる(ステップST26)。
【0079】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31によりアドレス4に記憶されたノード3hに対応するエントリ311が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3hに対応するエントリのデータがすべて0であるか否かを判断し(ステップST27)、そのエントリのデータのうちの中継アドレスの値が0であるので、すなわち対象ノードであるノード3hにリーフがないので、ここで比較処理を完了する。
【0080】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立つか否かの判断が実行されていないので(ステップST30)、さらに検索処理および比較処理が実行される。
【0081】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3iのビット番号(=10)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビットの値が1であるので、制御回路32の検索処理部は、レジスタ33に供給された次の対象ノードのアドレスのLSBを0から1に変更する。したがって、次に、ノード3iに対する情報のうちの、アドレス13に記憶された次段右側のノード(ノード3c)の情報(フラグ307=1,次段右側のノード(ノード3c)のビット番号305=16,次段右側のノード(ノード3c)へのポインタ303=6)がノード用メモリ30より出力される。
【0082】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ307の値が1であるので、対象ノードであるノード3iの次段右側にノードがあると判断する(ステップST23)。ここで、対象ノードが、その次段右側のノード3cに移動されたことになる(ステップST24)。
【0083】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31によりアドレス6に記憶されたノード3iに対応するエントリ311が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3iに対応するエントリ311のデータがすべて0であるか否かを判断し(ステップST27)、そのエントリ311のデータがすべて0であるので、すなわち対象ノードであるノード3iにリーフがないので、ここで比較処理を完了する。
【0084】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立つか否かの判断が実行されていないので(ステップST30)、さらに検索処理および比較処理が実行される。
【0085】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3cのビット番号(=16)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビットの値が1であるので、次に、ノード3cに対する情報のうちの、アドレス7に記憶された次段右側のノード(ノード3k)の情報(フラグ307=1,次段右側のノード(ノード3k)のビット番号305=19,次段右側のノード(ノード3k)へのポインタ303=10)がノード用メモリ30より出力される。
【0086】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ307の値が1であるので、対象ノードであるノード3cの次段右側にノードがあると判断する(ステップST23)。ここで、対象ノードが、その次段右側のノード3kに移動されたことになる(ステップST24)。
【0087】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31によりアドレス3に記憶されたノード3cに対応するエントリ311が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3cに対応するエントリ311のデータがすべて0であるか否かを判断し(ステップST27)、そのエントリ311のデータのうちの宛先ネットワークIPアドレス、ネットワークマスクおよび中継アドレスの値が0ではないので、すなわち対象ノードであるノード3cにリーフがあるので、リーフ用メモリ31より供給されたエントリの各データに基づいて、次の関係式が成り立つか否かを判断する(ステップST28)。
(検索データ)&(ネットワークマスク)
=(宛先ネットワークIPアドレス)
【0088】
ここで(0x8020A324)&(0xFFFF0000)=(0x80200000)であるので関係式が成り立つと判断し、制御回路32の比較処理部は、そのリーフのエントリ311を記憶する(ステップST29)。
【0089】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立ったので(ステップST31)、さらに検索処理および比較処理が実行される。
【0090】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3kのビット番号(=19)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビットの値が0であるので、次に、ノード3kに対する情報のうちの、アドレス10に記憶された次段左側のノード(ノード3d)の情報(フラグ306=1,次段左側のノード(ノード3d)のビット番号304=20,次段左側のノード(ノード3d)へのポインタ302=4)がノード用メモリ30より出力される。
【0091】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ306の値が1であるので、対象ノードであるノード3kの次段左側にノードがあると判断する(ステップST23)。ここで、対象ノードが、その次段左側のノード3dに移動されたことになる(ステップST24)。
【0092】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31によりアドレス5に記憶されたノード3kに対応するエントリ311が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3kに対応するエントリ311のデータがすべて0であるか否かを判断し(ステップST27)、そのエントリ311のデータがすべて0であるので、すなわち対象ノードであるノード3kにリーフがないので、ここで比較処理を完了する。
【0093】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立つか否かの判断が実行されてないので(ステップST30)、さらに検索処理および比較処理が実行される。
【0094】
まず、検索処理において、制御回路32の検索処理部は、検索データのうちの、MSBから対象ノードであるノード3dのビット番号(=20)だけLSB側のビットの値が1であるか否かを判断する(ステップST22)。そのビットの値が0であるので、次に、ノード3dに対する情報のうちの、アドレス4に記憶された次段左側のノードの情報(フラグ306=0,次段左側のノードのビット番号304=0,次段左側のノードへのポインタ302=0)がノード用メモリ30より出力される。
【0095】
制御回路32の検索処理部は、ノード用メモリ30より供給されたそのフラグ306の値が0であるので、対象ノードであるノード3cの次段左側にノードがないと判断する(ステップST23)。ここで検索処理を完了する。
【0096】
この検索処理と並列に比較処理が実行される。比較処理においては、リーフ用メモリ31によりアドレス2に記憶されたノード3dに対応するエントリ311が制御回路32に出力される。そして、制御回路32の比較処理部は、対象ノードであるノード3dに対応するエントリ311のデータがすべて0であるか否かを判断し(ステップST27)、そのエントリ311のデータのうちの宛先ネットワークIPアドレス、ネットワークマスクおよび中継アドレスの値が0ではないので、すなわち対象ノードであるノード3dにリーフがあるので、リーフ用メモリ31より供給されたエントリの各データに基づいて、次の関係式が成り立つか否かを判断する(ステップST28)。
(検索データ)&(ネットワークマスク)
=(宛先ネットワークIPアドレス)
【0097】
ここで(0x8020A324)&(0xFFFFF000)=(0x8020A000)≠(0x80208000)であるので関係式が成り立たないと判断する。したがって、ここで比較処理を完了する。
【0098】
このようにして、比較処理が実行される。そして、検索処理および比較処理が完了すると、上記関係式が成り立たなかったので(ステップST31)、検索処理および比較処理が終了される。
【0099】
そして、制御回路32は、比較処理部にリーフのデータが記憶されているか否かを判断し(ステップST32)、リーフ5cのエントリ311が記憶されているので、そのリーフ5cのエントリ311である宛先ネットワークIPアドレス(=0x80200000)、ネットワークマスク(=0xFFFF0000)および中継先アドレス(=0x8020843E)を、検索データである宛先IPアドレス(=0x8020A324)に対応するものとして出力する(ステップST33)。
【0100】
このようにして、宛先IPアドレス(0x8020A324)を検索データとしたときの宛先ネットワークアドレスや中継先アドレスが検索される。
【0101】
以上のように、この実施の形態1によれば、検索データの、対象ノードのビット番号に対応するビットの値に基づいて次段のノードを検索する検索処理と、対象ノードに接続されるリーフのデータと検索データとを比較する比較処理とを並列して実行するようにしたので、ハードウェアによる処理に適した、検索に要する時間を短縮することができるという効果が得られる。
【0102】
すなわち、従来のデータ検索方法においては、常に末端のノードまで検索処理を実行し、その後、スタックされたリーフのデータと検索データとの比較処理を順次実行しているが、この実施の形態においては、ノード毎に検索処理と比較処理が並列に実行されるので、比較処理により上記関係式が成り立たなくなった時点のノードまでで検索処理および比較処理を終了することができ、処理時間を短縮することができるという効果が得られる。また、検索処理と比較処理とは互いに独立しているため、すなわち両者の間でデータの授受が不要な処理であるため、専用ハードウェア(検索処理部および比較処理)により並列処理が簡単に実行することができるという効果が得られる。さらに、この実施の形態においては、従来のデータ検索方法のようにスタックを必要としないので、専用ハードウェアによる装置の実現がより簡単になる。そして、専用ハードウェアにより処理を実行することにより、いわゆるコンピュータを使用したソフトウェアでの処理に比較して、処理時間をさらに短縮することができるという効果が得られる。
【0103】
例えば、1つのノードに対して、ノード用メモリ30およびリーフ用メモリ31へのアクセスが1回ずつ実行されるので、そのアクセス時間以下の時間で制御回路32における処理を実行すれば、例えば1回のアクセス時間が10ナノ秒であるメモリを使用すると、32ビット長のIPアドレスが宛先アドレス、宛先ネットワークアドレスに採用されている場合、検索に要する時間は640(=(10+10)×32)ナノ秒以下になる。
【0104】
なお、実施の形態1においては、リーフの有無を、リーフ用メモリ31からの各データの値がすべて0であるか否かで判断しているが、リーフ用メモリ31に記憶されている各エントリ311にリーフの有無を示すフラグを設け、そのフラグの値に基づいてリーフの有無を判断するようにしてもよい。
【0105】
また、実施の形態1においては、1つのノードに対して、ノード用メモリ30の2つのワード(2つのアドレスによる記憶場所)を使用しているが、1ワードのビット数が大きいメモリを使用して、1つのノードに対して1つのワードを使用するようにしてもよい。その場合、シフタ34を削除することができる。
【0106】
実施の形態2.
図5は、この発明の実施の形態2によるデータ検索装置の構成例を示すブロック図である。実施の形態2によるデータ検索装置は、実施の形態1によるデータ検索装置のリーフ用メモリ31をリーフ用メモリ41に、制御回路32を制御回路42に変更したものであるので、そのリーフ用メモリ41および制御回路42についてだけ説明する。
【0107】
41は、パトリシアツリーなどの検索木におけるリーフの情報を記憶するリーフ用メモリである。リーフ用メモリ41は、リーフ毎に、宛先ネットワークIPアドレス312および中継先アドレス314で構成されるエントリ411を記憶している。なお、リーフ用メモリ41における各エントリ411のアドレスは、そのエントリ411に対応するリーフが接続されるノードに対応するレコード301のノード用メモリ30におけるアドレスを2分の1にした値の端数を切り捨てた値になるように設定されている。リーフを有さないノードに対応するリーフ用メモリ41の記憶場所には、有意な情報は記憶されていない(ここでは値0が記憶される)。
【0108】
42は、検索データである宛先IPアドレスを受け取り、ノード用メモリ30およびリーフ用メモリ41から適宜情報を読み出し、後述のようにして、その宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスを選択し、検索結果として出力する制御回路(処理手段、データ保持手段、出力手段)である。なお、制御回路42は、制御回路32と同様に、互いに独立して動作する図示せぬ検索処理部と比較処理部を有し、検索処理部で検索処理を実行し、比較処理部で比較処理を実行する。
【0109】
次に動作について説明する。
この実施の形態2によるデータ検索装置においては、制御回路42が、対象ノードのビット番号から、その対象ノードに接続されるリーフのデータの1つであるネットワークマスクを生成する。すなわち、制御回路42は、ノード用メモリ30より次段左側のノードのビット番号304、または次段右側のノードのビット番号305を供給されると、比較処理部において、その次段左側のノードに接続されるリーフのデータの一部としてのネットワークマスクを、MSB側のビット番号304,305だけの各ビットの値を1とし、その他のビットの値を0として生成する。例えば、次段右側のノードのビット番号305が16である場合、ネットワークマスクとして0xFFFF0000が生成される。
【0110】
なお、この実施の形態2による制御回路42の比較処理部は、リーフ用メモリ41より供給された宛先ネットワークIPアドレスおよび中継先アドレスの値が0である場合に、リーフがないと判断する。したがって、実際にはリーフがない場合において、上述のようにネットワークマスクが生成されても特に問題は生じない。
【0111】
その他の動作については実施の形態1によるものと同様であるので、その説明を省略する。
【0112】
以上のように、この実施の形態2によれば、リーフ用メモリ41にネットワークマスクを記憶しないので、リーフ用メモリ41の記憶容量を低減することができ、装置のコストを低減することができるという効果が得られる。
【0113】
なお、実施の形態2においては、リーフの有無を、リーフ用メモリ41からの各データの値がすべて0であるか否かで判断しているが、リーフ用メモリ41に記憶されている各エントリ411にリーフの有無を示すフラグを設け、そのフラグの値に基づいてリーフの有無を判断するようにしてもよい。
【0114】
実施の形態3.
図6は、この発明の実施の形態3によるデータ検索装置の構成例を示すブロック図である。図において、41Aは、パトリシアツリーなどの検索木におけるリーフの情報を記憶するリーフ用メモリ(第3のリーフ情報記憶手段)である。リーフ用メモリ41Aは、リーフ毎に、宛先ネットワークIPアドレス312および中継先アドレス314で構成されるエントリ411を記憶している。なお、リーフ用メモリ41Aは、リーフ用メモリ31,41とは異なり、実際に存在するリーフに対するエントリのみを記憶している。
【0115】
50は、各ノードに対応して、そのノードに接続されるリーフの有無を表すフラグ503およびそのリーフへのポインタ502で構成されるレコード501を記憶するリーフポインタ用メモリ(第2のリーフ情報記憶手段)である。53は、リーフポインタ用メモリ50より読み出されるアドレスを一時的に記憶し、リーフ用メモリ41Aに供給するレジスタ(処理手段)である。
【0116】
52は、検索データである宛先IPアドレスを受け取り、ノード用メモリ30、リーフポインタ用メモリ50、およびリーフ用メモリ41Aから適宜情報を読み出し、後述のようにして、その宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスを選択し、検索結果として出力する制御回路(処理手段、データ保持手段、出力手段)である。なお、制御回路52は、制御回路32,42と同様に、互いに独立して動作する図示せぬ検索処理部と比較処理部を有し、検索処理部で検索処理を実行し、比較処理部で比較処理を実行する。
【0117】
その他の構成要素については、実施の形態2によるものと同様であるので、その説明を省略する。
【0118】
次に動作について説明する。
この実施の形態3においては、リーフポインタ用メモリ50より、リーフの有無を表すフラグ503が制御回路52に供給され、そのリーフへのポインタ502(リーフ用メモリ41Aにおいて、そのリーフに対応するエントリ411が記憶されているアドレス)がレジスタ53に供給される。そして、そのポインタ502がリーフ用メモリ41Aに供給され、そのリーフに対応するエントリ411(宛先ネットワークIPアドレス312および中継先アドレス314)が制御回路52に供給される。そして、制御回路52の比較処理部は、比較処理において、フラグ503の値に基づいて、リーフの有無を判断する。
【0119】
その他の動作については実施の形態2によるものと同様であるので、その説明を省略する。
【0120】
以上のように、この実施の形態3によれば、実際に存在するリーフのみに対応してエントリを記憶するようにしたので、リーフ用メモリ41Aの記憶容量を低減することができ、装置のコストを低減することができるという効果が得られる。なお、その代わりにリーフポインタ用メモリ50が必要になるが、リーフ用メモリ41Aのビット幅(IPアドレスが32ビットの場合、64ビット)に比較して、リーフポインタ用メモリ50のビット幅(例えば、リーフ用メモリ41Aのアドレスが16ビットの場合、17ビット)が小さいため、総合的にメモリの記憶容量を低減することができる。
【0121】
なお、実施の形態3においては、リーフ用メモリ41Aよりエントリ411が制御回路52に供給され、比較処理が終了した後に、次のノードのデータがノード用メモリ30およびリーフポインタ用メモリ50より制御回路52に供給されるが、リーフ用メモリ41Aからのエントリの読み出しと、ノード用メモリ30およびリーフポインタ用メモリ50からの次のノードのデータの読み出しとを同時に行い、さらに、それらの読出しの処理と比較処理とをパイプライン化するようにしてもよい。
【0122】
実施の形態4.
図7は、この発明の実施の形態4によるデータ検索装置の構成例を示すブロック図である。図8は、実施の形態4によるデータ検索装置のノード用メモリに記憶されるデータの一例を示す図である。図9は、実施の形態4によるデータ検索装置のリーフ用メモリに記憶されるデータの一例を示す図である。
【0123】
図7において、70は、パトリシアツリーなどの検索木におけるノードの情報を記憶するノード用メモリ(ノード情報記憶手段)である。ノード用メモリ70は、ノード毎に、次段左側のノードが末端のノード(すなわち、次段にノードを有さないノード)であり、かつリーフを有するか否かを示すフラグ708、次段右側のノードが末端のノードであり、かつリーフを有するか否かを示すフラグ709、次段左側にノードがあるか否かを示すフラグ306、次段右側にノードがあるか否かを示すフラグ307、次段左側のノードのビット番号304、次段右側のノードのビット番号305、ポインタ702、およびポインタ703で構成されるレコード701を記憶している。ただし、末端のノードに対するレコード701は記憶されていない。なお、フラグ306,307の値は、ノードがある場合1に設定され、そうでない場合0に設定される。また、フラグ708,709の値は、次段のノードが末端であり、かつリーフを有する場合1に設定され、そうでない場合0に設定される。なお、上記ポインタとは、そのノードの情報が記憶されている場所のアドレスである。
【0124】
なお、ポインタ702は、フラグ708が0である場合、次段左側のノードへのポインタ(ノード用メモリ70において次段左側のノードのレコード701が記憶されているアドレス)であり、フラグ708が1である場合、次段左側の末端のノードに接続されるリーフへのポインタ(リーフ用メモリ31Aにおいて次段左側の末端のノードに接続されたリーフのエントリ311が記憶されているアドレスの2倍の値)である。ポインタ703は、フラグ709が0である場合、次段右側のノードへのポインタ(ノード用メモリ70において次段右側のノードのレコード701が記憶されているアドレス)であり、フラグ709が1である場合、次段右側の末端のノードに接続されるリーフへのポインタ(リーフ用メモリ31Aにおいて次段右側の末端のノードに接続されたリーフのエントリ311が記憶されているアドレスの2倍の値)である。
【0125】
例えば図12の検索木のノードに対応する情報は、図8に示すような値として記憶される。図8においては、アドレス0に初期情報(処理の最初に参照される情報)が記憶され、アドレス2,3にノード3aに対応するレコード701が記憶され、アドレス4,5にノード3cに対応するレコード701が記憶され、アドレス6,7にノード3hに対応するレコード701が記憶されており、さらに、アドレス8,9にノード3kに対応するレコード701が記憶され、アドレス10,11にノード3iに対応するレコード701が記憶され、以下同様に、残りのノードに対応するレコード701が記憶されている。そして、アドレス8,9,10に記憶されたポインタ702,703は、末端のノードに接続されたリーフへのポインタである。これらの値が256、258および260であるので、末端のノードに接続されたリーフ5d,5e,5bに対応するエントリ311は、リーフ用メモリ31Aのアドレス128,129,130にそれぞれ記憶されている。
【0126】
31Aは、パトリシアツリーなどの検索木におけるリーフの情報を記憶するリーフ用メモリ(第1のリーフ情報記憶手段)である。リーフ用メモリ31Aは、リーフ用メモリ31と同様に、リーフ毎に、宛先ネットワークIPアドレス312、ネットワークマスク313、および中継先アドレス314で構成されるエントリを記憶している。ただし、リーフ用メモリ31Aでは、末端のノードに接続されたリーフのエントリ311は、上述のフラグ708,709が1である場合のポインタ702,703に関連づけて記憶されている。
【0127】
例えば図12の検索木のリーフに対応する情報は、図9に示すような値として記憶される。図9においては、アドレス0には、初期情報(処理の最初に参照される情報)に対応して、リーフなしを示す値0が記憶され、アドレス1にノード3aに接続されたリーフ5aに対応するエントリ311が記憶され、アドレス2にノード3cに接続されたリーフ5cに対応するエントリ311が記憶される。さらに、ノード3h、ノード3k、およびノード3iにはリーフが接続されていないので、アドレス3〜5には値0が記憶されている。以下同様に、残りのノードに対応してそれぞれ値が記憶されている。そして、アドレス128,129,130に、末端のノードに接続されたリーフ5d,5e,5bに対応するエントリ311がそれぞれ記憶されている。
【0128】
72は、検索データである宛先IPアドレスを受け取り、ノード用メモリ70およびリーフ用メモリ31Aから適宜情報を読み出し、後述のようにして、その宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスを選択し、検索結果として出力する制御回路(処理手段、データ保持手段、出力手段)である。なお、制御回路72は、制御回路32と同様に、互いに独立して動作する図示せぬ検索処理部と比較処理部を有し、検索処理部で検索処理を実行し、比較処理部で比較処理を実行する。
【0129】
その他の構成要素については、実施の形態1によるものと同様であるので、その説明を省略する。
【0130】
次に動作について説明する。
この実施の形態4においては、ノード用メモリ70より、フラグ708,709、フラグ306,307,ビット番号304,305が制御回路72に供給され、ポインタ702,703がレジスタ33に供給される。そして、制御回路72は、フラグ708,709の値に基づいて、対象ノードが末端のノードであるのか否かを判断する。
【0131】
その他の動作については実施の形態1によるものと同様であるので、その説明を省略する。
【0132】
以上のように、この実施の形態4によれば、ノード用メモリ70に、次段のノードが末端のノードであり、かつリーフを有するか否かを示すフラグ708,709を記憶するとともに、その末端のノードの有するリーフへのポインタ702,703を記憶するようにしたので、末端のノードに対するレコード701をノード用メモリ70に記憶する必要がなくなり、メモリの記憶容量を低減することができ、装置のコストを低減することができるという効果が得られる。
【0133】
実施の形態5.
図10は、この発明の実施の形態5によるデータ検索装置の構成例を示すブロック図である。図において、81は、パトリシアツリーなどの検索木におけるリーフの情報を記憶するリーフ用メモリ(第4のリーフ情報記憶手段)である。リーフ用メモリ81は、リーフ毎に、宛先ネットワークIPアドレス312およびエントリ情報へのポインタ812(エントリ情報用メモリ80においてそのリーフのデータである中継先アドレスなどのエントリ情報が記憶されているアドレス)で構成されるエントリ811を記憶している。なお、リーフ用メモリ81における各エントリのアドレスは、そのエントリに対応するリーフが接続されるノードに対応するレコード301のノード用メモリ30におけるアドレスを2分の1にした値の端数を切り捨てた値になるように設定されている。リーフを有さないノードに対応するエントリ811の宛先ネットワークIPアドレス312およびエントリ情報へのポインタ812は、値0に設定される。
【0134】
80は、リーフ毎に、中継先アドレス314などのエントリ情報を記憶するエントリ情報用メモリ(第5のリーフ情報記憶手段)である。ただし、リーフがない場合、エントリ情報へのポインタ812として0が記憶されるので、アドレス0には、有意な情報は記憶されない。83は、リーフ用メモリ81より供給されるアドレス(エントリ情報へのポインタ812)が0でない場合、そのアドレスを一時的に記憶し、制御回路82から所定の信号が供給されると、そのアドレスをエントリ情報用メモリ80に供給するアドレス記憶部(処理手段)である。
【0135】
82は、検索データである宛先IPアドレスを受け取り、ノード用メモリ30、リーフ用メモリ81、およびエントリ情報用メモリ80から適宜情報を読み出し、後述のようにして、その宛先IPアドレスに対応する宛先ネットワークIPアドレスや中継先アドレスを選択し、検索結果として出力する制御回路(処理手段、データ保持手段、出力手段)である。なお、制御回路82は、制御回路32,42と同様に、互いに独立して動作する図示せぬ検索処理部と比較処理部を有し、検索処理部で検索処理を実行し、比較処理部で比較処理を実行する。
【0136】
その他の構成要素については実施の形態2によるものと同様であるので、その説明を省略する。
【0137】
次に動作について説明する。
この実施の形態5においては、対象ノードに接続されたリーフのデータである宛先ネットワークIPアドレス312がリーフ用メモリ81より制御回路82に供給され、その宛先ネットワークIPアドレス312と同一のエントリ811に属するポインタ812が、その値が0ではない場合には、アドレス記憶部83に記憶される。そして、検索データに対応する宛先ネットワークIPアドレス312が確定した後に、制御回路82は、所定の信号をアドレス記憶部83に供給し、記憶しているアドレスをエントリ情報用メモリ80に供給させる。そして、確定した宛先ネットワークIPアドレス312に対応した中継先アドレス314が、エントリ情報用メモリ80より制御回路82に供給される。
【0138】
そして、制御回路82は、確定した宛先ネットワークIPアドレスおよびエントリ情報用メモリ80からの中継先アドレス314を検索結果として出力する。また、制御回路82は、エントリ情報へのポインタ812の値が0ではない場合、リーフがあると判断し、そうでない場合、リーフがないと判断する。
【0139】
その他の動作については実施の形態2によるものと同様であるので、その説明を省略する。
【0140】
以上のように、この実施の形態5によれば、中継先アドレスなどのエントリ情報を検索処理および比較処理が終了した後に1回読み出すだけであるので、検索処理および比較処理ごとにエントリ情報の授受を実行しなくても済み、処理時間を短縮することができるという効果が得られる。さらに、この実施の形態5においては、エントリ情報として中継先アドレスだけが記憶されているが、他の情報を追加してもよい。そして、他の情報が追加された場合、エントリ情報の読み出し回数が低減されたことによる上記効果がより顕著になる。
【0141】
なお、上記実施の形態1〜5においては、各ノードのビット番号に対応して値を検査するビット数を1としているが、このときに複数のビット数nを検査するようにしてもよい。その場合には、1つのノードに、最大2のn乗の次段のノードが接続される(すなわち検索木をマルチウェイツリーとする)ようにしてもよい。
【0142】
【発明の効果】
以上のように、この発明によれば、検索データの、対象ノードのビット番号が指す桁の値に基づいて次段のノードの中から次の対象ノードを検索する検索処理と、対象ノードに接続されるリーフの被検索データと検索データとを所定の桁について比較する比較処理とを並列して実行し、比較処理により所定の桁について被検索データと検索データとが一致した場合に被検索データを保持し、検索処理により次段のノードが存在しない場合、および、比較処理により所定の桁について被検索データと検索データとが一致しない場合に、最後に保持した被検索データを検索結果として出力するように構成したので、ハードウェアによる処理に適した、検索に要する時間を短縮することができるという効果がある。ひいては、本発明をルータなどのパケット中継装置に適用することにより、パケットの中継を迅速に実行することができるという効果がある。
【0143】
この発明によれば、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第2のリーフ情報記憶手段から、対象ノードに接続されるリーフへのポインタを読み出し、そのポインタに基づいて第3のリーフ情報記憶手段から、そのリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータより指定された桁についてその被検索データと検索データとを比較するように構成したので、第3のリーフ情報記憶手段の記憶容量を低減することができ、装置のコストを低減することができるという効果がある。
【0144】
この発明によれば、対象ノードのビット番号に基づいて、ノードに接続されるリーフの被検索データと検索データとを比較する桁を決定するように構成したので、第1のリーフ情報記憶手段の記憶容量を低減することができ、装置のコストを低減することができるという効果がある。
【0145】
この発明によれば、処理手段により、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタまたは末端のノードに接続されたリーフへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第1のリーフ情報記憶手段から、対象ノードに接続されるリーフまたは末端のノードに接続されたリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータにより指定された桁についてその被検索データと検索データとを比較するように構成したので、末端のノードに対するデータをノード情報記憶手段に記憶する必要がなくなり、メモリの記憶容量を低減することができ、装置のコストを低減することができるという効果がある。
【0146】
この発明によれば、ノード情報記憶手段から、対象ノードに対応するビット番号を読み出し、そのビット番号が指す桁の値に基づいて次段のノードへのポインタをノード情報記憶手段から読み出して次段のノードの中から次の対象ノードを検索するとともに、第4のリーフ情報記憶手段から、対象ノードに接続されるリーフの被検索データおよびその被検索データに付随するデータへのポインタを読み出し、所定の桁についてその被検索データと検索データとを比較し、検索により次段のノードが存在しない場合および比較により所定の桁について被検索データと検索データとが一致しない場合に被検索データに付随するデータへのポインタに基づいて第5のリーフ情報記憶手段からその被検索データに付随するデータを読み出し、上記比較により所定の桁について被検索データと検索データとが一致した場合に、被検索データを保持し、上記検索により次段のノードが存在しない場合、および上記比較により所定の桁について被検索データと検索データとが一致しない場合に、最後に保持した被検索データおよび読み出されたその被検索データに付随するデータを検索結果として出力するように構成したので、付随するデータを検索処理および比較処理が終了した後に1回読み出すだけで済み、検索処理および比較処理ごとにその付随するデータの授受を実行しなくても済み、処理時間を短縮することができるという効果がある。
【図面の簡単な説明】
【図1】この発明の実施の形態1によるデータ検索装置の構成例を示すブロック図である。
【図2】この発明の実施の形態1によるデータ検索装置のノード用メモリに記憶されるデータの一例を示す図である。
【図3】この発明の実施の形態1によるデータ検索装置のリーフ用メモリに記憶されるデータの一例を示す図である。
【図4】この発明の実施の形態1によるデータ検索装置の動作について説明するフローチャートである。
【図5】この発明の実施の形態2によるデータ検索装置の構成例を示すブロック図である。
【図6】この発明の実施の形態3によるデータ検索装置の構成例を示すブロック図である。
【図7】この発明の実施の形態4によるデータ検索装置の構成例を示すブロック図である。
【図8】この発明の実施の形態4によるデータ検索装置のノード用メモリに記憶されるデータの一例を示す図である。
【図9】この発明の実施の形態4によるデータ検索装置のリーフ用メモリに記憶されるデータの一例を示す図である。
【図10】この発明の実施の形態5によるデータ検索装置の構成例を示すブロック図である。
【図11】従来のルータなどに記憶されたルーティングテーブルの一例を示す図である。
【図12】図11のルーティングテーブルと同一のルーティング情報を有するパトリシアツリーの一例を示す図である。
【図13】従来のデータ検索方法について説明するフローチャートである。
【符号の説明】
30,70 ノード用メモリ(ノード情報記憶手段)、31,31A リーフ用メモリ(第1のリーフ情報記憶手段)、32,42,52,72,82 制御回路(処理手段、データ保持手段、出力手段)、33,53 レジスタ(処理手段)、34 シフタ(処理手段)、41A リーフ用メモリ(第3のリーフ情報記憶手段)、50 リーフポインタ用メモリ(第2のリーフ情報記憶手段)、80 エントリ情報用メモリ(第5のリーフ情報記憶手段)、81 リーフ用メモリ(第4のリーフ情報記憶手段)、83 アドレス記憶部(処理手段)。
Claims (7)
- ノードに接続され、被検索データを有するリーフ、並びに、前段および次段の少なくとも一方に接続され、検索データの桁を指すビット番号を有するノードにより構成される検索木で、前記検索データに対応する被検索データを検索するデータ検索装置において、
検索データの、対象ノードのビット番号が指す桁の値に基づいて次段のノードの中から次の対象ノードを検索する処理と、前記対象ノードに接続されるリーフの被検索データと検索データとを所定の桁について比較する処理とを並列して実行する処理手段と、
前記処理手段での比較により所定の桁について前記被検索データと前記検索データとが一致した場合に前記被検索データを保持するデータ保持手段と、
前記処理手段での検索により前記次段のノードが存在しない場合、および、前記処理手段での比較により所定の桁について前記被検索データと前記検索データとが一致しない場合に、前記データ保持手段が最後に保持した被検索データを検索結果として出力する出力手段と
を備えることを特徴とするデータ検索装置。 - ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータを記憶する第1のリーフ情報記憶手段とを備え、
処理手段は、前記ノード情報記憶手段から、対象ノードに対応する前記ビット番号を読み出し、そのビット番号が指す桁の値に基づいて前記次段のノードへのポインタを前記ノード情報記憶手段から読み出して前記次段のノードの中から次の対象ノードを検索するとともに、前記第1のリーフ情報記憶手段から、前記対象ノードに接続されるリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータにより指定された桁についてその被検索データと検索データとを比較する
ことを特徴とする請求項1記載のデータ検索装置。 - ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、ノードに対応して、そのノードに接続されたリーフへのポインタを記憶する第2のリーフ情報記憶手段と、リーフに対応して、被検索データ、およびその被検索データに付随するデータを記憶する第3のリーフ情報記憶手段とを備え、
処理手段は、前記ノード情報記憶手段から、対象ノードに対応する前記ビット番号を読み出し、そのビット番号が指す桁の値に基づいて前記次段のノードへのポインタを前記ノード情報記憶手段から読み出して前記次段のノードの中から次の対象ノードを検索するとともに、前記第2のリーフ情報記憶手段から、前記対象ノードに接続されるリーフへのポインタを読み出し、そのポインタに基づいて前記第3のリーフ情報記憶手段から、そのリーフの前記被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータより指定された桁についてその被検索データと検索データとを比較する
ことを特徴とする請求項1記載のデータ検索装置。 - 処理手段は、対象ノードのビット番号に基づいて、ノードに接続されるリーフの被検索データと検索データとを比較する桁を決定する
ことを特徴とする請求項1記載のデータ検索装置。 - ノードに対応して、ビット番号、および、次段のノードが末端のノードであり、かつリーフを接続されたものである場合にはそのリーフへのポインタ、そうでない場合には前記次段のノードへのポインタを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータを記憶する第1のリーフ情報記憶手段とを備え、
処理手段は、前記ノード情報記憶手段から、対象ノードに対応する前記ビット番号を読み出し、そのビット番号が指す桁の値に基づいて前記次段のノードへのポインタまたは前記リーフへのポインタを前記ノード情報記憶手段から読み出して前記次段のノードの中から次の対象ノードを検索するとともに、前記第1のリーフ情報記憶手段から、前記対象ノードに接続されるリーフまたは前記末端のノードに接続されたリーフの被検索データおよびその被検索データに付随するデータを読み出し、その被検索データに付随するデータにより指定された桁についてその被検索データと検索データとを比較する
ことを特徴とする請求項1記載のデータ検索装置。 - ノードに対応して、ビット番号と、次段のノードへのポインタとを記憶するノード情報記憶手段と、リーフに対応して、被検索データおよびその被検索データに付随するデータへのポインタを記憶する第4のリーフ情報記憶手段と、前記被検索データに付随するデータを記憶する第5のリーフ情報記憶手段とを備え、
処理手段は、前記ノード情報記憶手段から、対象ノードに対応する前記ビット番号を読み出し、そのビット番号が指す桁の値に基づいて前記次段のノードへのポインタを前記ノード情報記憶手段から読み出して前記次段のノードの中から次の対象ノードを検索するとともに、前記第4のリーフ情報記憶手段から、前記対象ノードに接続されるリーフの被検索データおよびその被検索データに付随するデータへのポインタを読み出し、所定の桁についてその被検索データと検索データとを比較し、検索により前記次段のノードが存在しない場合および比較により所定の桁について前記被検索データと前記検索データとが一致しない場合に前記被検索データに付随するデータへのポインタに基づいて前記第5のリーフ情報記憶手段からその被検索データに付随するデータを読み出し、
データ保持手段は、前記処理手段での比較により所定の桁について前記被検索データと前記検索データとが一致した場合に、前記被検索データを保持し、
出力手段は、前記処理手段での検索により前記次段のノードが存在しない場合、および前記処理手段での比較により所定の桁について前記被検索データと前記検索データとが一致しない場合に、前記データ保持手段に最後に保持した被検索データおよび前記処理手段により読み出されたその被検索データに付随するデータを検索結果として出力する
ことを特徴とする請求項1記載のデータ検索装置。 - ノードに接続され、被検索データを有するリーフ、並びに、前段および後段の少なくとも一方に接続され、検索データの桁を指すビット番号を有するノードにより構成される検索木で、前記検索データに対応する被検索データを検索するデータ検索方法において、
検索データの、対象ノードのビット番号が指す桁の値に基づいて次段のノードの中から次の対象ノードを検索する検索処理と、前記対象ノードに接続されるリーフの被検索データと検索データとを所定の桁について比較する比較処理とを並列して実行するステップと、
前記比較処理により所定の桁について前記被検索データと前記検索データとが一致した場合に前記被検索データを保持するステップと、
前記検索処理により前記次段のノードが存在しない場合、および、前記比較処理により所定の桁について前記被検索データと前記検索データとが一致しない場合に、最後に保持した被検索データを検索結果として出力するステップと
を備えることを特徴とするデータ検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25014298A JP3547625B2 (ja) | 1998-09-03 | 1998-09-03 | データ検索装置およびデータ検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25014298A JP3547625B2 (ja) | 1998-09-03 | 1998-09-03 | データ検索装置およびデータ検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000083054A JP2000083054A (ja) | 2000-03-21 |
JP3547625B2 true JP3547625B2 (ja) | 2004-07-28 |
Family
ID=17203451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25014298A Expired - Lifetime JP3547625B2 (ja) | 1998-09-03 | 1998-09-03 | データ検索装置およびデータ検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3547625B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5960863B1 (ja) | 2015-03-11 | 2016-08-02 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 検索装置、検索方法、プログラム、及び記録媒体 |
-
1998
- 1998-09-03 JP JP25014298A patent/JP3547625B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000083054A (ja) | 2000-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7349382B2 (en) | Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base | |
EP1808987B1 (en) | Longest prefix matching using tree bitmap data structures | |
US7426518B2 (en) | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size | |
US7415463B2 (en) | Programming tree data structures and handling collisions while performing lookup operations | |
JP2001509978A (ja) | スイッチング装置における高速可変長ベストマッチルックアップ | |
US20040230583A1 (en) | Comparison tree data structures of particular use in performing lookup operations | |
GB2377519A (en) | Lookup Engine | |
EP1010304A4 (en) | APPARATUS AND METHOD FOR ROUTING DATA PACKETS THROUGH A COMMUNICATIONS NETWORK | |
WO2001005116A2 (en) | Routing method and apparatus | |
JPH10257084A (ja) | コンピュータ・ネットワーク内でデータ・フレームを経路指定するフレーム・ヘッダを解析する方法およびシステム | |
US6570866B1 (en) | High-speed flexible longest match retrieval | |
US7937495B2 (en) | System and method for modifying data transferred from a source to a destination | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
US6516319B1 (en) | Parallelized processing device for processing search keys based upon tree structure | |
JP3691018B2 (ja) | 最長一致検索回路および方法およびプログラムおよび記録媒体 | |
JP3547625B2 (ja) | データ検索装置およびデータ検索方法 | |
US6961337B2 (en) | Interleaved processing system for processing frames within a network router | |
JP3558151B2 (ja) | データ検索回路 | |
JP2003234762A (ja) | テーブル検索装置および方法およびプログラムおよび記録媒体 | |
JP2002259452A (ja) | 情報検索装置、情報検索用マルチプロセッサおよびルータ | |
JP2001520429A (ja) | Ramを使用してシフトレジスタをエミュレートする方法 | |
JPH1070573A (ja) | ルート情報検索回路 | |
JP2000041065A (ja) | データ検索回路 | |
JPH1075242A (ja) | ルーチングシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040129 |
|
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: 20040316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040414 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090423 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100423 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100423 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110423 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120423 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120423 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140423 Year of fee payment: 10 |
|
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 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
EXPY | Cancellation because of completion of term |