JP2000083054A - データ検索装置およびデータ検索方法 - Google Patents

データ検索装置およびデータ検索方法

Info

Publication number
JP2000083054A
JP2000083054A JP25014298A JP25014298A JP2000083054A JP 2000083054 A JP2000083054 A JP 2000083054A JP 25014298 A JP25014298 A JP 25014298A JP 25014298 A JP25014298 A JP 25014298A JP 2000083054 A JP2000083054 A JP 2000083054A
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.)
Granted
Application number
JP25014298A
Other languages
English (en)
Other versions
JP3547625B2 (ja
Inventor
和幸 ▲か▼島
Kazuyuki Kashima
Keiichi Soda
圭一 曽田
Yoshihiro Moriki
嘉宏 森木
Tachiki Ichihashi
立機 市橋
Shinichi Kato
愼一 加藤
Tetsuya Abe
哲哉 安部
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.)
Mitsubishi Electric Corp
Nippon Telegraph and Telephone Corp
Original Assignee
Mitsubishi Electric Corp
Nippon Telegraph and Telephone Corp
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 Mitsubishi Electric Corp, Nippon Telegraph and Telephone Corp filed Critical Mitsubishi Electric Corp
Priority to JP25014298A priority Critical patent/JP3547625B2/ja
Publication of JP2000083054A publication Critical patent/JP2000083054A/ja
Application granted granted Critical
Publication of JP3547625B2 publication Critical patent/JP3547625B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 【課題】 ルータなどにおけるパケットの中継先の検索
に要する時間を低減させることが困難であった。 【解決手段】 検索データの、対象ノードのビット番号
に対応するビットの値に基づいて次段のノードを検索す
る検索処理(ステップST22〜ステップST26)
と、対象ノードに接続されるリーフのデータと検索デー
タとを比較する比較処理(ステップST27〜ステップ
ST29における)とを並列して実行して、該当するリ
ーフが検出されると検索を終了し、検索に要する時間を
短縮する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、例えば、中継す
るパケットに付加されたインターネットプロトコル(I
P)層の宛先アドレス(宛先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アドレスが0x8005
0000〜0x8005FFFFのいずれかである場合
には、宛先ネットワークIPアドレス1が0x8005
0000であり、ネットワークマスク2が0xFFFF
0000であり、中継先アドレス4が0x800507
22であるエントリ6−2について上記関係式が成立す
るので、宛先IPアドレスが0x80050000〜0
x8005FFFFのいずれかであるパケットは、アド
レスが0x80050722である中継先に向けて送出
される。
【0005】さらに、複数のエントリについて上記関係
式が成立する場合には、ネットワークマスク2について
値が1であるビット数の最も多いエントリが選択され
る。なお、このことはロンゲストマッチングと呼ばれ
る。
【0006】例えば、検索データであるパケットの宛先
IPアドレスが0x80209000である場合、図1
1において、エントリ6−1,6−3,6−5について
上記関係式が成立するので、値が1であるビットの最も
多いネットワークマスク2を有するエントリ6−5が選
択され、そのパケットは、アドレスが0x802092
0Bである中継先に向けて送出される。
【0007】次に、例えば「A Tree−Based
Packet RoutingTable for
Berkeley Unix」(Sklower著、T
echnical Report、Universit
y 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は、次
段のノードを探索するときに使用され、検索データのM
SB(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と同一のデータを保持するリーフ5
gを接続されている。また、ノード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では、ノード3
a)に設定される。
【0016】次に、ステップST2において、その対象
ノードにリーフが接続されているか否かが判断され、リ
ーフが接続されていると判断された場合には、ステップ
ST3においてそのリーフの有するデータがスタックに
記憶される。リーフが接続されていないと判断された場
合には、ステップST3はスキップされる。
【0017】そして、ステップST4において、検索デ
ータのうちの、MSBから、対象ノードに割り当てられ
ているビット番号だけLSB(Least Signi
ficant 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において、検索データとしての宛先I
Pアドレスに対応する宛先ネットワークIPアドレスや
中継先アドレスが、そのリーフのデータに確定される。
【0021】一方、ステップST11において上記関係
式が成立しない場合には、ステップST9に戻り、スタ
ックに記憶したリーフのデータを順次読み出し、上記関
係式が成立するまで、同様の処理が実行される。なお、
スタックに記憶したリーフのデータがすべて読み出さ
れ、スタックに記憶されているリーフのデータがなくな
った場合には、ステップST9において、リーフのデー
タがないと判断され、検索処理が終了する。なお、この
場合、検索に失敗したことになる。ただし、リーフ5a
のようにデフォルトの中継先のためのデータを設けてお
くことにより、中継先が必ず確定されるようにすること
ができる。
【0022】このようにして、各パケットに付加されて
いる宛先IPアドレスを検索データとして、宛先ネット
ワークアドレスや中継先アドレスが検索される。
【0023】ここで、具体的な検索の例として、中継装
置に図12のパトリシアツリーが記憶されており、検索
データである宛先IPアドレスが0x8020A324
である場合における検索処理について説明する。なお、
この宛先IPアドレスを2進数で表記すると、1000
0000 0010 0000 1010 0011
0010 0100となる。
【0024】まず、検索位置(対象ノード)がノード3
aに設定される(ステップST1)。次に、その対象ノ
ードであるノード3aにリーフが接続されているか否か
が判断される(ステップST2)。ノード3aにはリー
フ5aが接続されているので、そのリーフの有するデー
タ(エントリ6−1と同一のデータ)がスタックに記憶
される(ステップST3)。
【0025】そして、ノード3aに割り当てられている
ビット番号が0であるので、検索データのうちの、MS
Bの値が1であるか否かが判断される(ステップST
4)。検索データのMSBの値が1であるので、対象ノ
ードであるノード3aの次段右側にノードがあるか否か
が判断される(ステップST5)。ノード3aの次段右
側にはノード3hがあるので、対象ノードが、ノード3
aからノード3hへ移動される(ステップST6)。
【0026】そして、対象ノードであるノード3hにリ
ーフが接続されているか否かが判断される(ステップS
T2)。ノード3hにはリーフが接続されていないの
で、ステップST3の処理がスキップされる。ノード3
hに割り当てられているビット番号が1であるので、検
索データのうちの、MSBから第1番目のビットの値が
1であるか否かが判断される(ステップST4)。検索
データのMSBから第1番目のビットの値は0であるの
で、対象ノードであるノード3hの次段左側にノードが
あるか否かが判断される(ステップST7)。ノード3
hの次段左側にはノード3iがあるので、対象ノード
が、ノード3hからノード3iへ移動される(ステップ
ST8)。
【0027】さらに、対象ノードであるノード3iにリ
ーフが接続されているか否かが判断される(ステップS
T2)。ノード3iにはリーフが接続されていないの
で、ステップST3の処理がスキップされる。ノード3
iに割り当てられているビット番号が10であるので、
検索データのうちの、MSBから第10番目のビットの
値が1であるか否かが判断される(ステップST4)。
検索データのMSBから第10番目のビットの値が1で
あるので、対象ノードであるノード3iの次段右側にノ
ードがあるか否かが判断される(ステップST5)。ノ
ード3iの次段右側にはノード3cがあるので、対象ノ
ードが、ノード3iからノード3cへ移動される(ステ
ップST6)。
【0028】さらに、対象ノードであるノード3cにリ
ーフが接続されているか否かが判断される(ステップS
T2)。ノード3cにはリーフ5cが接続されているの
で、そのリーフ5cの有するデータ(エントリ6−3と
同一のデータ)がスタックに記憶される(ステップST
3)。次に、ノード3cに割り当てられているビット番
号が16であるので、検索データのうちの、MSBから
第16番目のビットの値が1であるか否かが判断される
(ステップST4)。検索データのMSBから第16番
目のビットの値が1であるので、対象ノードであるノー
ド3cの次段右側にノードがあるか否かが判断される
(ステップST5)。ノード3cの次段右側にはノード
3kがあるので、対象ノードが、ノード3cからノード
3kへ移動される(ステップST6)。
【0029】さらに、対象ノードであるノード3kにリ
ーフが接続されているか否かが判断される(ステップS
T2)。ノード3kにはリーフが接続されていないの
で、ステップST3の処理がスキップされる。ノード3
kに割り当てられているビット番号が19であるので、
検索データのうちの、MSBから第19番目のビットの
値が1であるか否かが判断される(ステップST4)。
検索データのMSBから第19番目のビットの値が0で
あるので、対象ノードであるノード3kの次段左側にノ
ードがあるか否かが判断される(ステップST7)。ノ
ード3kの次段左側にはノード3dがあるので、対象ノ
ードが、ノード3kからノード3dへ移動される(ステ
ップST8)。
【0030】さらに、対象ノードであるノード3dにリ
ーフが接続されているか否かが判断される(ステップS
T2)。ノード3dにはリーフ5dが接続されているの
で、そのリーフ5dの有するデータ(エントリ6−4と
同一のデータ)がスタックに記憶される(ステップST
3)。次に、ノード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)を読み出し(ステップST
10)、その宛先ネットワークIPアドレスとネットワ
ークマスク、および検索データとしての宛先IPアドレ
スについて、上記関係式が成立するか否かが判断される
(ステップST11)。
【0033】ここで、(0x8020A324)&(0
xFFFFF000)=0x8020A000≠0x8
0208000であるので、上記関係式が成立しないと
判断し(ステップST11)、次に、エントリ6−3と
同一のデータである宛先ネットワークIPアドレス(=
0x80200000)とネットワークマスク(=0x
FFFF0000)が読み出され(ステップST1
0)、その宛先ネットワークIPアドレスとネットワー
クマスク、および検索データとしての宛先IPアドレス
について、上記関係式が成立するか否かが判断される
(ステップST11)。
【0034】ここで、(0x8020A324)&(0
xFFFF0000)=0x80200000であるの
で、上記関係式が成立したと判断し、検索データとして
の宛先IPアドレス(=0x8020A324)に対応
する、宛先ネットワークIPアドレスや中継先アドレス
が、そのリーフのデータ(すなわち、エントリ6−3と
同一のデータ)に確定される(ステップST12)。
【0035】このようにして、図12に示すパトリシア
ツリーとしてルーティングテーブルが記憶され、検索デ
ータである宛先IPアドレスが0x8020A324で
ある場合には、宛先ネットワークIPアドレスとして0
x80200000が選択され、中継先アドレスとして
0x8020843Eが選択される。
【0036】なお、その他、本発明に関連する事項が例
えば特開昭63−291117号公報、特開平2−10
21号公報、特開平3−8083号公報、特開平4−3
16244号公報、および特開平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、次段左側のノードのビット番号30
4、次段右側のノードのビット番号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,1
1にノード3kに対応するレコード301が記憶され、
アドレス12,13にノード3iに対応するレコード3
01が記憶され、以下同様に、残りのノードに対応する
情報が記憶されている。例えばノード3aの次段右側に
はノードがないので、アドレス2には、フラグ306が
0であるレコード301が記憶されている。このレコー
ド301のビット番号304、および次段右側のノード
へのポインタ302は、特に有意ではないので、値0に
設定されている。
【0049】31は、パトリシアツリーなどの検索木に
おけるリーフの情報を記憶するリーフ用メモリ(第1の
リーフ情報記憶手段)である。リーフ用メモリ31は、
リーフ毎に、被検索データとしての宛先ネットワークI
Pアドレス312、被検索データに付随するデータとし
てのネットワークマスク313および被検索データに付
随するデータとしての中継先アドレス314で構成され
るエントリ311を記憶している。なお、リーフ用メモ
リ31における各エントリ311のアドレスは、そのエ
ントリに対応するリーフが接続されるノードに対応する
レコード301のノード用メモリ30におけるアドレス
を2分の1にした値の端数を切り捨てた値になるように
設定されている。なお、リーフを有さないノードに対応
するリーフ用メモリ31の記憶場所には、有意な情報は
記憶されていない(ここでは値0が記憶される)。
【0050】例えば図12の検索木のリーフに対応する
情報は、図3に示すような値として記憶される。図3に
おいては、アドレス0には、初期情報(処理の最初に参
照される情報)に対応して、リーフなしを示す値0が記
憶され、アドレス1にノード3aに接続されたリーフ5
aに対応するエントリ311が記憶され、アドレス2に
ノード3dに接続されたリーフ5dに対応するエントリ
311が記憶され、アドレス3にノード3cに接続され
たリーフ5cに対応するエントリ311が記憶されてい
る。さらに、ノード3h、ノード3k、およびノード3
iにはリーフが接続されていないので、アドレス4〜6
には値0が記憶されている。以下同様に、残りのノード
に対応してそれぞれ値が記憶されている。例えば、アド
レス1には、リーフ5aに対応して、宛先アドレス31
2が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により、頂点のノードに対応するエントリ3
11が制御回路32に出力される。
【0055】次に、ステップST22〜ステップST2
6の検索処理と、ステップ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 0
010 0000 1010 0011 0010 0
100となる。
【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=0x00
000000,中継先アドレス314=0x8000A
804)が制御回路32に出力される。そして、制御回
路32の比較処理部は、対象ノードであるノード3aに
対応するエントリ311のデータがすべて0であるか否
かを判断し(ステップST27)、そのエントリ311
のデータのうちの中継アドレスの値が0ではないので、
すなわち対象ノードであるノード3aにリーフがあるの
で、リーフ用メモリ31より供給されたエントリ311
の各データに基づいて、次の関係式が成り立つか否かを
判断する(ステップST28)。 (検索データ)&(ネットワークマスク)=(宛先ネッ
トワークIPアドレス)
【0075】ここで(0x8020A324)&(0x
00000000)=(0x00000000)である
ので関係式が成り立つと判断し、制御回路32の比較処
理部は、そのリーフのエントリ311を記憶する(ステ
ップST29)。
【0076】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立ったので(ステップST31)、さらに検
索処理および比較処理が実行される。
【0077】まず、検索処理において、制御回路32の
検索処理部は、検索データのうちの、MSBから対象ノ
ードであるノード3hのビット番号(=1)だけLSB
側のビットの値が1であるか否かを判断する(ステップ
ST22)。そのビットの値が0であるので、次に、ノ
ード3hに対する情報のうちの、アドレス8に記憶され
た次段左側のノード(ノード3i)の情報(フラグ30
6=1,次段左側のノード(ノード3i)のビット番号
304=10,次段左側のノード(ノード3i)へのポ
インタ302=12)がノード用メモリ30より出力さ
れる。
【0078】制御回路32の検索処理部は、ノード用メ
モリ30より供給されたそのフラグ306の値が1であ
るので、対象ノードであるノード3hの次段左側にノー
ドがあると判断する(ステップST25)。ここで、対
象ノードが、その次段左側のノード3iに移動されたこ
とになる(ステップST26)。
【0079】この検索処理と並列に比較処理が実行され
る。比較処理においては、リーフ用メモリ31によりア
ドレス4に記憶されたノード3hに対応するエントリ3
11が制御回路32に出力される。そして、制御回路3
2の比較処理部は、対象ノードであるノード3hに対応
するエントリのデータがすべて0であるか否かを判断し
(ステップST27)、そのエントリのデータのうちの
中継アドレスの値が0であるので、すなわち対象ノード
であるノード3hにリーフがないので、ここで比較処理
を完了する。
【0080】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立つか否かの判断が実行されていないので
(ステップST30)、さらに検索処理および比較処理
が実行される。
【0081】まず、検索処理において、制御回路32の
検索処理部は、検索データのうちの、MSBから対象ノ
ードであるノード3iのビット番号(=10)だけLS
B側のビットの値が1であるか否かを判断する(ステッ
プST22)。そのビットの値が1であるので、制御回
路32の検索処理部は、レジスタ33に供給された次の
対象ノードのアドレスのLSBを0から1に変更する。
したがって、次に、ノード3iに対する情報のうちの、
アドレス13に記憶された次段右側のノード(ノード3
c)の情報(フラグ307=1,次段右側のノード(ノ
ード3c)のビット番号305=16,次段右側のノー
ド(ノード3c)へのポインタ303=6)がノード用
メモリ30より出力される。
【0082】制御回路32の検索処理部は、ノード用メ
モリ30より供給されたそのフラグ307の値が1であ
るので、対象ノードであるノード3iの次段右側にノー
ドがあると判断する(ステップST23)。ここで、対
象ノードが、その次段右側のノード3cに移動されたこ
とになる(ステップST24)。
【0083】この検索処理と並列に比較処理が実行され
る。比較処理においては、リーフ用メモリ31によりア
ドレス6に記憶されたノード3iに対応するエントリ3
11が制御回路32に出力される。そして、制御回路3
2の比較処理部は、対象ノードであるノード3iに対応
するエントリ311のデータがすべて0であるか否かを
判断し(ステップST27)、そのエントリ311のデ
ータがすべて0であるので、すなわち対象ノードである
ノード3iにリーフがないので、ここで比較処理を完了
する。
【0084】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立つか否かの判断が実行されていないので
(ステップST30)、さらに検索処理および比較処理
が実行される。
【0085】まず、検索処理において、制御回路32の
検索処理部は、検索データのうちの、MSBから対象ノ
ードであるノード3cのビット番号(=16)だけLS
B側のビットの値が1であるか否かを判断する(ステッ
プST22)。そのビットの値が1であるので、次に、
ノード3cに対する情報のうちの、アドレス7に記憶さ
れた次段右側のノード(ノード3k)の情報(フラグ3
07=1,次段右側のノード(ノード3k)のビット番
号305=19,次段右側のノード(ノード3k)への
ポインタ303=10)がノード用メモリ30より出力
される。
【0086】制御回路32の検索処理部は、ノード用メ
モリ30より供給されたそのフラグ307の値が1であ
るので、対象ノードであるノード3cの次段右側にノー
ドがあると判断する(ステップST23)。ここで、対
象ノードが、その次段右側のノード3kに移動されたこ
とになる(ステップST24)。
【0087】この検索処理と並列に比較処理が実行され
る。比較処理においては、リーフ用メモリ31によりア
ドレス3に記憶されたノード3cに対応するエントリ3
11が制御回路32に出力される。そして、制御回路3
2の比較処理部は、対象ノードであるノード3cに対応
するエントリ311のデータがすべて0であるか否かを
判断し(ステップST27)、そのエントリ311のデ
ータのうちの宛先ネットワークIPアドレス、ネットワ
ークマスクおよび中継アドレスの値が0ではないので、
すなわち対象ノードであるノード3cにリーフがあるの
で、リーフ用メモリ31より供給されたエントリの各デ
ータに基づいて、次の関係式が成り立つか否かを判断す
る(ステップST28)。 (検索データ)&(ネットワークマスク)=(宛先ネッ
トワークIPアドレス)
【0088】ここで(0x8020A324)&(0x
FFFF0000)=(0x80200000)である
ので関係式が成り立つと判断し、制御回路32の比較処
理部は、そのリーフのエントリ311を記憶する(ステ
ップST29)。
【0089】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立ったので(ステップST31)、さらに検
索処理および比較処理が実行される。
【0090】まず、検索処理において、制御回路32の
検索処理部は、検索データのうちの、MSBから対象ノ
ードであるノード3kのビット番号(=19)だけLS
B側のビットの値が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に対応するエントリ3
11が制御回路32に出力される。そして、制御回路3
2の比較処理部は、対象ノードであるノード3kに対応
するエントリ311のデータがすべて0であるか否かを
判断し(ステップST27)、そのエントリ311のデ
ータがすべて0であるので、すなわち対象ノードである
ノード3kにリーフがないので、ここで比較処理を完了
する。
【0093】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立つか否かの判断が実行されてないので(ス
テップST30)、さらに検索処理および比較処理が実
行される。
【0094】まず、検索処理において、制御回路32の
検索処理部は、検索データのうちの、MSBから対象ノ
ードであるノード3dのビット番号(=20)だけLS
B側のビットの値が1であるか否かを判断する(ステッ
プST22)。そのビットの値が0であるので、次に、
ノード3dに対する情報のうちの、アドレス4に記憶さ
れた次段左側のノードの情報(フラグ306=0,次段
左側のノードのビット番号304=0,次段左側のノー
ドへのポインタ302=0)がノード用メモリ30より
出力される。
【0095】制御回路32の検索処理部は、ノード用メ
モリ30より供給されたそのフラグ306の値が0であ
るので、対象ノードであるノード3cの次段左側にノー
ドがないと判断する(ステップST23)。ここで検索
処理を完了する。
【0096】この検索処理と並列に比較処理が実行され
る。比較処理においては、リーフ用メモリ31によりア
ドレス2に記憶されたノード3dに対応するエントリ3
11が制御回路32に出力される。そして、制御回路3
2の比較処理部は、対象ノードであるノード3dに対応
するエントリ311のデータがすべて0であるか否かを
判断し(ステップST27)、そのエントリ311のデ
ータのうちの宛先ネットワークIPアドレス、ネットワ
ークマスクおよび中継アドレスの値が0ではないので、
すなわち対象ノードであるノード3dにリーフがあるの
で、リーフ用メモリ31より供給されたエントリの各デ
ータに基づいて、次の関係式が成り立つか否かを判断す
る(ステップST28)。 (検索データ)&(ネットワークマスク)=(宛先ネッ
トワークIPアドレス)
【0097】ここで(0x8020A324)&(0x
FFFFF000)=(0x8020A000)≠(0
x80208000)であるので関係式が成り立たない
と判断する。したがって、ここで比較処理を完了する。
【0098】このようにして、比較処理が実行される。
そして、検索処理および比較処理が完了すると、上記関
係式が成り立たなかったので(ステップST31)、検
索処理および比較処理が終了される。
【0099】そして、制御回路32は、比較処理部にリ
ーフのデータが記憶されているか否かを判断し(ステッ
プST32)、リーフ5cのエントリ311が記憶され
ているので、そのリーフ5cのエントリ311である宛
先ネットワークIPアドレス(=0x8020000
0)、ネットワークマスク(=0xFFFF0000)
および中継先アドレス(=0x8020843E)を、
検索データである宛先IPアドレス(=0x8020A
324)に対応するものとして出力する(ステップST
33)。
【0100】このようにして、宛先IPアドレス(0x
8020A324)を検索データとしたときの宛先ネッ
トワークアドレスや中継先アドレスが検索される。
【0101】以上のように、この実施の形態1によれ
ば、検索データの、対象ノードのビット番号に対応する
ビットの値に基づいて次段のノードを検索する検索処理
と、対象ノードに接続されるリーフのデータと検索デー
タとを比較する比較処理とを並列して実行するようにし
たので、ハードウェアによる処理に適した、検索に要す
る時間を短縮することができるという効果が得られる。
【0102】すなわち、従来のデータ検索方法において
は、常に末端のノードまで検索処理を実行し、その後、
スタックされたリーフのデータと検索データとの比較処
理を順次実行しているが、この実施の形態においては、
ノード毎に検索処理と比較処理が並列に実行されるの
で、比較処理により上記関係式が成り立たなくなった時
点のノードまでで検索処理および比較処理を終了するこ
とができ、処理時間を短縮することができるという効果
が得られる。また、検索処理と比較処理とは互いに独立
しているため、すなわち両者の間でデータの授受が不要
な処理であるため、専用ハードウェア(検索処理部およ
び比較処理)により並列処理が簡単に実行することがで
きるという効果が得られる。さらに、この実施の形態に
おいては、従来のデータ検索方法のようにスタックを必
要としないので、専用ハードウェアによる装置の実現が
より簡単になる。そして、専用ハードウェアにより処理
を実行することにより、いわゆるコンピュータを使用し
たソフトウェアでの処理に比較して、処理時間をさらに
短縮することができるという効果が得られる。
【0103】例えば、1つのノードに対して、ノード用
メモリ30およびリーフ用メモリ31へのアクセスが1
回ずつ実行されるので、そのアクセス時間以下の時間で
制御回路32における処理を実行すれば、例えば1回の
アクセス時間が10ナノ秒であるメモリを使用すると、
32ビット長のIPアドレスが宛先アドレス、宛先ネッ
トワークアドレスに採用されている場合、検索に要する
時間は640(=(10+10)×32)ナノ秒以下に
なる。
【0104】なお、実施の形態1においては、リーフの
有無を、リーフ用メモリ31からの各データの値がすべ
て0であるか否かで判断しているが、リーフ用メモリ3
1に記憶されている各エントリ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である場合、ネットワークマスクとして0xFFF
F0000が生成される。
【0110】なお、この実施の形態2による制御回路4
2の比較処理部は、リーフ用メモリ41より供給された
宛先ネットワークIPアドレスおよび中継先アドレスの
値が0である場合に、リーフがないと判断する。したが
って、実際にはリーフがない場合において、上述のよう
にネットワークマスクが生成されても特に問題は生じな
い。
【0111】その他の動作については実施の形態1によ
るものと同様であるので、その説明を省略する。
【0112】以上のように、この実施の形態2によれ
ば、リーフ用メモリ41にネットワークマスクを記憶し
ないので、リーフ用メモリ41の記憶容量を低減するこ
とができ、装置のコストを低減することができるという
効果が得られる。
【0113】なお、実施の形態2においては、リーフの
有無を、リーフ用メモリ41からの各データの値がすべ
て0であるか否かで判断しているが、リーフ用メモリ4
1に記憶されている各エントリ411にリーフの有無を
示すフラグを設け、そのフラグの値に基づいてリーフの
有無を判断するようにしてもよい。
【0114】実施の形態3.図6は、この発明の実施の
形態3によるデータ検索装置の構成例を示すブロック図
である。図において、41Aは、パトリシアツリーなど
の検索木におけるリーフの情報を記憶するリーフ用メモ
リ(第3のリーフ情報記憶手段)である。リーフ用メモ
リ41Aは、リーフ毎に、宛先ネットワークIPアドレ
ス312および中継先アドレス314で構成されるエン
トリ411を記憶している。なお、リーフ用メモリ41
Aは、リーフ用メモリ31,41とは異なり、実際に存
在するリーフに対するエントリのみを記憶している。
【0115】50は、各ノードに対応して、そのノード
に接続されるリーフの有無を表すフラグ503およびそ
のリーフへのポインタ502で構成されるレコード50
1を記憶するリーフポインタ用メモリ(第2のリーフ情
報記憶手段)である。53は、リーフポインタ用メモリ
50より読み出されるアドレスを一時的に記憶し、リー
フ用メモリ41Aに供給するレジスタ(処理手段)であ
る。
【0116】52は、検索データである宛先IPアドレ
スを受け取り、ノード用メモリ30、リーフポインタ用
メモリ50、およびリーフ用メモリ41Aから適宜情報
を読み出し、後述のようにして、その宛先IPアドレス
に対応する宛先ネットワークIPアドレスや中継先アド
レスを選択し、検索結果として出力する制御回路(処理
手段、データ保持手段、出力手段)である。なお、制御
回路52は、制御回路32,42と同様に、互いに独立
して動作する図示せぬ検索処理部と比較処理部を有し、
検索処理部で検索処理を実行し、比較処理部で比較処理
を実行する。
【0117】その他の構成要素については、実施の形態
2によるものと同様であるので、その説明を省略する。
【0118】次に動作について説明する。この実施の形
態3においては、リーフポインタ用メモリ50より、リ
ーフの有無を表すフラグ503が制御回路52に供給さ
れ、そのリーフへのポインタ502(リーフ用メモリ4
1Aにおいて、そのリーフに対応するエントリ411が
記憶されているアドレス)がレジスタ53に供給され
る。そして、そのポインタ502がリーフ用メモリ41
Aに供給され、そのリーフに対応するエントリ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に供給されるが、リーフ用メモリ41
Aからのエントリの読み出しと、ノード用メモリ30お
よびリーフポインタ用メモリ50からの次のノードのデ
ータの読み出しとを同時に行い、さらに、それらの読出
しの処理と比較処理とをパイプライン化するようにして
もよい。
【0122】実施の形態4.図7は、この発明の実施の
形態4によるデータ検索装置の構成例を示すブロック図
である。図8は、実施の形態4によるデータ検索装置の
ノード用メモリに記憶されるデータの一例を示す図であ
る。図9は、実施の形態4によるデータ検索装置のリー
フ用メモリに記憶されるデータの一例を示す図である。
【0123】図7において、70は、パトリシアツリー
などの検索木におけるノードの情報を記憶するノード用
メモリ(ノード情報記憶手段)である。ノード用メモリ
70は、ノード毎に、次段左側のノードが末端のノード
(すなわち、次段にノードを有さないノード)であり、
かつリーフを有するか否かを示すフラグ708、次段右
側のノードが末端のノードであり、かつリーフを有する
か否かを示すフラグ709、次段左側にノードがあるか
否かを示すフラグ306、次段右側にノードがあるか否
かを示すフラグ307、次段左側のノードのビット番号
304、次段右側のノードのビット番号305、ポイン
タ702、およびポインタ703で構成されるレコード
701を記憶している。ただし、末端のノードに対する
レコード701は記憶されていない。なお、フラグ30
6,307の値は、ノードがある場合1に設定され、そ
うでない場合0に設定される。また、フラグ708,7
09の値は、次段のノードが末端であり、かつリーフを
有する場合1に設定され、そうでない場合0に設定され
る。なお、上記ポインタとは、そのノードの情報が記憶
されている場所のアドレスである。
【0124】なお、ポインタ702は、フラグ708が
0である場合、次段左側のノードへのポインタ(ノード
用メモリ70において次段左側のノードのレコード70
1が記憶されているアドレス)であり、フラグ708が
1である場合、次段左側の末端のノードに接続されるリ
ーフへのポインタ(リーフ用メモリ31Aにおいて次段
左側の末端のノードに接続されたリーフのエントリ31
1が記憶されているアドレスの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,1
1にノード3iに対応するレコード701が記憶され、
以下同様に、残りのノードに対応するレコード701が
記憶されている。そして、アドレス8,9,10に記憶
されたポインタ702,703は、末端のノードに接続
されたリーフへのポインタである。これらの値が25
6、258および260であるので、末端のノードに接
続されたリーフ5d,5e,5bに対応するエントリ3
11は、リーフ用メモリ31Aのアドレス128,12
9,130にそれぞれ記憶されている。
【0126】31Aは、パトリシアツリーなどの検索木
におけるリーフの情報を記憶するリーフ用メモリ(第1
のリーフ情報記憶手段)である。リーフ用メモリ31A
は、リーフ用メモリ31と同様に、リーフ毎に、宛先ネ
ットワークIPアドレス312、ネットワークマスク3
13、および中継先アドレス314で構成されるエント
リを記憶している。ただし、リーフ用メモリ31Aで
は、末端のノードに接続されたリーフのエントリ311
は、上述のフラグ708,709が1である場合のポイ
ンタ702,703に関連づけて記憶されている。
【0127】例えば図12の検索木のリーフに対応する
情報は、図9に示すような値として記憶される。図9に
おいては、アドレス0には、初期情報(処理の最初に参
照される情報)に対応して、リーフなしを示す値0が記
憶され、アドレス1にノード3aに接続されたリーフ5
aに対応するエントリ311が記憶され、アドレス2に
ノード3cに接続されたリーフ5cに対応するエントリ
311が記憶される。さらに、ノード3h、ノード3
k、およびノード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より、フラグ70
8,709、フラグ306,307,ビット番号30
4,305が制御回路72に供給され、ポインタ70
2,703がレジスタ33に供給される。そして、制御
回路72は、フラグ708,709の値に基づいて、対
象ノードが末端のノードであるのか否かを判断する。
【0131】その他の動作については実施の形態1によ
るものと同様であるので、その説明を省略する。
【0132】以上のように、この実施の形態4によれ
ば、ノード用メモリ70に、次段のノードが末端のノー
ドであり、かつリーフを有するか否かを示すフラグ70
8,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は、リーフ毎に、中継先アドレス31
4などのエントリ情報を記憶するエントリ情報用メモリ
(第5のリーフ情報記憶手段)である。ただし、リーフ
がない場合、エントリ情報へのポインタ812として0
が記憶されるので、アドレス0には、有意な情報は記憶
されない。83は、リーフ用メモリ81より供給される
アドレス(エントリ情報へのポインタ812)が0でな
い場合、そのアドレスを一時的に記憶し、制御回路82
から所定の信号が供給されると、そのアドレスをエント
リ情報用メモリ80に供給するアドレス記憶部(処理手
段)である。
【0135】82は、検索データである宛先IPアドレ
スを受け取り、ノード用メモリ30、リーフ用メモリ8
1、およびエントリ情報用メモリ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アドレスおよびエントリ情報用メモリ8
0からの中継先アドレス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 シフタ(処理手段)、41
A リーフ用メモリ(第3のリーフ情報記憶手段)、5
0 リーフポインタ用メモリ(第2のリーフ情報記憶手
段)、80 エントリ情報用メモリ(第5のリーフ情報
記憶手段)、81 リーフ用メモリ(第4のリーフ情報
記憶手段)、83 アドレス記憶部(処理手段)。
フロントページの続き (72)発明者 曽田 圭一 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 (72)発明者 森木 嘉宏 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 (72)発明者 市橋 立機 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 (72)発明者 加藤 愼一 東京都新宿区西新宿三丁目19番2号 日本 電信電話株式会社内 (72)発明者 安部 哲哉 東京都新宿区西新宿三丁目19番2号 日本 電信電話株式会社内

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 ノードに接続され、被検索データを有す
    るリーフ、並びに、前段および次段の少なくとも一方に
    接続され、検索データの桁を指すビット番号を有するノ
    ードにより構成される検索木で、前記検索データに対応
    する被検索データを検索するデータ検索装置において、 検索データの、対象ノードのビット番号が指す桁の値に
    基づいて次段のノードの中から次の対象ノードを検索す
    る処理と、前記対象ノードに接続されるリーフの被検索
    データと検索データとを所定の桁について比較する処理
    とを並列して実行する処理手段と、 前記処理手段での比較により所定の桁について前記被検
    索データと前記検索データとが一致した場合に前記被検
    索データを保持するデータ保持手段と、 前記処理手段での検索により前記次段のノードが存在し
    ない場合、および、前記処理手段での比較により所定の
    桁について前記被検索データと前記検索データとが一致
    しない場合に、前記データ保持手段が最後に保持した被
    検索データを検索結果として出力する出力手段とを備え
    ることを特徴とするデータ検索装置。
  2. 【請求項2】 ノードに対応して、ビット番号と、次段
    のノードへのポインタとを記憶するノード情報記憶手段
    と、リーフに対応して、被検索データおよびその被検索
    データに付随するデータを記憶する第1のリーフ情報記
    憶手段とを備え、 処理手段は、前記ノード情報記憶手段から、対象ノード
    に対応する前記ビット番号を読み出し、そのビット番号
    が指す桁の値に基づいて前記次段のノードへのポインタ
    を前記ノード情報記憶手段から読み出して前記次段のノ
    ードの中から次の対象ノードを検索するとともに、前記
    第1のリーフ情報記憶手段から、前記対象ノードに接続
    されるリーフの被検索データおよびその被検索データに
    付随するデータを読み出し、その被検索データに付随す
    るデータにより指定された桁についてその被検索データ
    と検索データとを比較することを特徴とする請求項1記
    載のデータ検索装置。
  3. 【請求項3】 ノードに対応して、ビット番号と、次段
    のノードへのポインタとを記憶するノード情報記憶手段
    と、ノードに対応して、そのノードに接続されたリーフ
    へのポインタを記憶する第2のリーフ情報記憶手段と、
    リーフに対応して、被検索データ、およびその被検索デ
    ータに付随するデータを記憶する第3のリーフ情報記憶
    手段とを備え、 処理手段は、前記ノード情報記憶手段から、対象ノード
    に対応する前記ビット番号を読み出し、そのビット番号
    が指す桁の値に基づいて前記次段のノードへのポインタ
    を前記ノード情報記憶手段から読み出して前記次段のノ
    ードの中から次の対象ノードを検索するとともに、前記
    第2のリーフ情報記憶手段から、前記対象ノードに接続
    されるリーフへのポインタを読み出し、そのポインタに
    基づいて前記第3のリーフ情報記憶手段から、そのリー
    フの前記被検索データおよびその被検索データに付随す
    るデータを読み出し、その被検索データに付随するデー
    タより指定された桁についてその被検索データと検索デ
    ータとを比較することを特徴とする請求項1記載のデー
    タ検索装置。
  4. 【請求項4】 処理手段は、対象ノードのビット番号に
    基づいて、ノードに接続されるリーフの被検索データと
    検索データとを比較する桁を決定することを特徴とする
    請求項1記載のデータ検索装置。
  5. 【請求項5】 ノードに対応して、ビット番号、およ
    び、次段のノードが末端のノードであり、かつリーフを
    接続されたものである場合にはそのリーフへのポイン
    タ、そうでない場合には前記次段のノードへのポインタ
    を記憶するノード情報記憶手段と、リーフに対応して、
    被検索データおよびその被検索データに付随するデータ
    を記憶する第1のリーフ情報記憶手段とを備え、 処理手段は、前記ノード情報記憶手段から、対象ノード
    に対応する前記ビット番号を読み出し、そのビット番号
    が指す桁の値に基づいて前記次段のノードへのポインタ
    または前記リーフへのポインタを前記ノード情報記憶手
    段から読み出して前記次段のノードの中から次の対象ノ
    ードを検索するとともに、前記第1のリーフ情報記憶手
    段から、前記対象ノードに接続されるリーフまたは前記
    末端のノードに接続されたリーフの被検索データおよび
    その被検索データに付随するデータを読み出し、その被
    検索データに付随するデータにより指定された桁につい
    てその被検索データと検索データとを比較することを特
    徴とする請求項1記載のデータ検索装置。
  6. 【請求項6】 ノードに対応して、ビット番号と、次段
    のノードへのポインタとを記憶するノード情報記憶手段
    と、リーフに対応して、被検索データおよびその被検索
    データに付随するデータへのポインタを記憶する第4の
    リーフ情報記憶手段と、前記被検索データに付随するデ
    ータを記憶する第5のリーフ情報記憶手段とを備え、 処理手段は、前記ノード情報記憶手段から、対象ノード
    に対応する前記ビット番号を読み出し、そのビット番号
    が指す桁の値に基づいて前記次段のノードへのポインタ
    を前記ノード情報記憶手段から読み出して前記次段のノ
    ードの中から次の対象ノードを検索するとともに、前記
    第4のリーフ情報記憶手段から、前記対象ノードに接続
    されるリーフの被検索データおよびその被検索データに
    付随するデータへのポインタを読み出し、所定の桁につ
    いてその被検索データと検索データとを比較し、検索に
    より前記次段のノードが存在しない場合および比較によ
    り所定の桁について前記被検索データと前記検索データ
    とが一致しない場合に前記被検索データに付随するデー
    タへのポインタに基づいて前記第5のリーフ情報記憶手
    段からその被検索データに付随するデータを読み出し、 データ保持手段は、前記処理手段での比較により所定の
    桁について前記被検索データと前記検索データとが一致
    した場合に、前記被検索データを保持し、 出力手段は、前記処理手段での検索により前記次段のノ
    ードが存在しない場合、および前記処理手段での比較に
    より所定の桁について前記被検索データと前記検索デー
    タとが一致しない場合に、前記データ保持手段に最後に
    保持した被検索データおよび前記処理手段により読み出
    されたその被検索データに付随するデータを検索結果と
    して出力することを特徴とする請求項1記載のデータ検
    索装置。
  7. 【請求項7】 ノードに接続され、被検索データを有す
    るリーフ、並びに、前段および後段の少なくとも一方に
    接続され、検索データの桁を指すビット番号を有するノ
    ードにより構成される検索木で、前記検索データに対応
    する被検索データを検索するデータ検索方法において、 検索データの、対象ノードのビット番号が指す桁の値に
    基づいて次段のノードの中から次の対象ノードを検索す
    る検索処理と、前記対象ノードに接続されるリーフの被
    検索データと検索データとを所定の桁について比較する
    比較処理とを並列して実行するステップと、 前記比較処理により所定の桁について前記被検索データ
    と前記検索データとが一致した場合に前記被検索データ
    を保持するステップと、 前記検索処理により前記次段のノードが存在しない場
    合、および、前記比較処理により所定の桁について前記
    被検索データと前記検索データとが一致しない場合に、
    最後に保持した被検索データを検索結果として出力する
    ステップとを備えることを特徴とするデータ検索方法。
JP25014298A 1998-09-03 1998-09-03 データ検索装置およびデータ検索方法 Expired - Lifetime JP3547625B2 (ja)

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 true JP2000083054A (ja) 2000-03-21
JP3547625B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762826B2 (en) 2015-03-11 2023-09-19 Ntt Communications Corporation Search apparatus, search method, program and recording medium

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762826B2 (en) 2015-03-11 2023-09-19 Ntt Communications Corporation Search apparatus, search method, program and recording medium

Also Published As

Publication number Publication date
JP3547625B2 (ja) 2004-07-28

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
US7219184B2 (en) Method and apparatus for longest prefix matching in processing a forwarding information database
US6212183B1 (en) Multiple parallel packet routing lookup
EP1808987B1 (en) Longest prefix matching using tree bitmap data structures
US5920886A (en) Accelerated hierarchical address filtering and translation using binary and ternary CAMs
CN101577662B (zh) 一种基于树形数据结构的最长前缀匹配方法和装置
US7103708B2 (en) Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry
KR100429743B1 (ko) 네트워크라우터에사용하기위한마스크기능을갖는연상메모리
US7237059B2 (en) Performing lookup operations on associative memory entries
JP4995125B2 (ja) 固定長データの検索方法
US20050248970A1 (en) Distributed content addressable memory
US6570866B1 (en) High-speed flexible longest match retrieval
JPH09503609A (ja) ビット・マッピングの装置および方法
JP2000196672A (ja) ネットワ―ク間中継装置
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
JP2003224581A (ja) 最長一致検索回路および方法およびプログラムおよび記録媒体
US7154892B2 (en) Method and apparatus for managing LPM-based CAM look-up table, and recording medium therefor
JP2000083054A (ja) データ検索装置およびデータ検索方法
US6961337B2 (en) Interleaved processing system for processing frames within a network router
JPH10255485A (ja) 連想メモリおよびネットワークフレーム中継器
CN113343034A (zh) Ip查找方法、系统及存储介质
US6341346B1 (en) Method for comparison between a pattern sequence and a variable length key
US8683177B2 (en) Content addressable memory (CAM) device and method for updating data
JPH10222535A (ja) データ検索回路
JP2001144801A (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