JP2020201656A - 検索回路 - Google Patents

検索回路 Download PDF

Info

Publication number
JP2020201656A
JP2020201656A JP2019107258A JP2019107258A JP2020201656A JP 2020201656 A JP2020201656 A JP 2020201656A JP 2019107258 A JP2019107258 A JP 2019107258A JP 2019107258 A JP2019107258 A JP 2019107258A JP 2020201656 A JP2020201656 A JP 2020201656A
Authority
JP
Japan
Prior art keywords
search
data
entry
prefix length
address
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.)
Pending
Application number
JP2019107258A
Other languages
English (en)
Inventor
松岡 秀人
Hideto Matsuoka
秀人 松岡
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2019107258A priority Critical patent/JP2020201656A/ja
Priority to US16/852,023 priority patent/US11250003B2/en
Priority to CN202010470782.0A priority patent/CN112055095A/zh
Publication of JP2020201656A publication Critical patent/JP2020201656A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/659Internet protocol version 6 [IPv6] addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/686Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】小容量のメモリで検索処理の実行が可能な検索回路を提供する。【解決手段】ある局面に従う複数のエントリデータが格納される検索テーブルに対して入力された検索キーが一致するか否かを検索する検索回路であって、検索テーブルに対してバイナリサーチを実行する検索処理部を含む。エントリデータは、検索データと、検索データのプレフィックス長データと、検索結果情報とを含む。検索処理部は、バイナリサーチに従って検索テーブルから複数回読み出したエントリデータに含まれる検索データとプレフィックス長データとで規定される検索データ群の1つの検索データと検索キーとが一致するか否かをそれぞれ判断し、複数回の判断結果に基づいて、プレフィックス長データが最大の一致する検索データに対応する検索結果情報を出力する。【選択図】図4

Description

この開示は、複数のエントリデータが格納される検索テーブルに対して入力された検索キーが一致するか否かを検索する検索回路に関する。
IPネットワークにおいて、ルーターなどのネットワーク機器は受信したパケットの転送先を決定するため機器内にFIB(Forwarding Information Base)という宛先IPアドレスと対応するパケットデータの転送先ポートを格納したデータベースを生成している。
ルーターは、パケットを受信するとパケットデータのヘッダー情報に付加されている宛先IPアドレスを検索キーとしてFIBを検索し、その検索結果でパケットの転送先を決定する。
FIBに格納されているIPアドレスは各々Prefix長と呼ばれる検索有効ビット長が定義されている。
FIBの検索では検索キーとなる宛先IPアドレスに一致するテーブルエントリのうち最も有効ビット長が長いエントリを検索結果として出力する。
このような検索方法をLPM(Longest-Prefix-Match)検索と呼ぶ。LPM検索を実施する場合に、CAM(内容参照メモリ:Content Addressable Memory)を利用する手法がある。
CAMを利用した場合、高い検索性能を実現できる反面、DRAMやSRAMなどの汎用メモリと比較すると高価であり、消費電力が大きいという課題がある。
近年IPネットワークの拡大とともにIPアドレスの数も増加し、それに比例して対応するFIB容量も拡大し続けている。そのため高価で消費電力の大きいCAMに大容量のFIBデータベースを格納して検索するのは困難になってきている。
IP Lookups using Multiway and Multicolumn Search
一方で、ツリービットマップ(Tree−Bit−Map)アルゴリズムなど様々な検索アルゴリズムに基づく検索方法にもとづいて、比較的安価で消費電力の小さいDRAMやSRAMなどを使用してLPM検索を実行する方法が提案されている(非特許文献1)。
しかし、近年IPv4アドレスの枯渇問題に起因して、より長いビット長をもつIPv6アドレスへの移行が始まっているが、検索性能が検索キー長に比例して低下する特徴があるツリービットマップ検索アルゴリズムを使用した方法では検索キー長がIPv4の32ビットから128ビットとなるIPv6では性能が低下する問題が発生する。
また、LPM検索の検索アルゴリズムとしてツリービットマップアルゴリズム以外にバイナリサーチ(Binary-Search)検索アルゴリズムを使用する方法も提案されている(非特許文献1)。
バイナリサーチ検索アルゴリズムでは検索性能は検索キー長ではなく検索データベースの容量に依存する。
IPv6アドレス検索時でもIPv4アドレス検索時と同等の性能を実現可能だが、一方で検索性能が容量に比例するため、より小容量のメモリでLPM検索を実現できれば検索性能が向上する。
本開示は、上記の課題を解決するためになされたものであって、小容量のメモリで検索処理の実行が可能な検索回路を提供する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある局面に従う複数のエントリデータが格納される検索テーブルに対して入力された検索キーが一致するか否かを検索する検索回路であって、検索テーブルに対してバイナリサーチを実行する検索処理部を含む。エントリデータは、検索データと、検索データのプレフィックス長データと、検索結果情報とを含む。検索処理部は、バイナリサーチに従って検索テーブルから複数回読み出したエントリデータに含まれる検索データとプレフィックス長データとで規定される検索データ群の1つの検索データと検索キーとが一致するか否かをそれぞれ判断し、複数回の判断結果に基づいて、プレフィックス長データが最大の一致する検索データに対応する検索結果情報を出力する。
一実施例によれば、本開示の検索メモリは、小容量のメモリで検索処理の実行が可能である。
実施形態1に基づく通信機器1の構成を説明する図である。 比較例として設けられる検索テーブルについて説明する図である。 比較例として検索テーブル201に対する検索処理について説明する図である。 実施形態1に従う検索回路10の機能ブロック図である。 実施形態1に従う検索テーブルの生成について説明する図である。 実施形態1に従う検索テーブル403に対する検索処理について説明する図である。 実施形態2に従う検索テーブルの生成について説明する図である。 実施形態2に従う検索テーブルの実装方式について説明する図である。 実施形態2に従う検索処理の順序について説明するフロー図である。 実施形態1に従う別の検索テーブルの生成について説明する図である。 実施形態3に従う検索テーブルの生成について説明する図である。 実施形態3に従う検索テーブル408に対する検索処理について説明する図である。
実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
(実施形態1)
<通信機器1の全体構成>
図1は、実施形態1に基づく通信機器1の構成を説明する図である。
図1に示されるように、通信機器1は、スイッチあるいはルータ等の通信装置である。
通信機器1は、インターネットと接続される。パケットデータの転送処理を実行する。
通信機器1は、複数のポート(Port−0〜Port−3)と、スイッチ2と、検索回路10とを含む。
スイッチ2は、ポートの接続先を切り替える。
本例においては、通信機器1は、パケットデータを受信して、検索回路10の検索処理により指定されたポートに対して受信したパケットデータを転送する転送処理を実行する場合が示されている。
ここで、検索回路10は、検索テーブル30を含み、その検索方法は、LPM(Longest-Prefix-Match)検索である。
検索テーブル30は、複数のエントリデータを格納する。一例として、宛先IPアドレス「32.48.09.00/24」が転送先ポート(Port−0)と関連付けられて格納されている。また、「32.48.10.00/23」が転送先ポート(Port−1)と関連付けられて格納されている。「32.48.08.00/21」が転送先ポート(Port−2)と関連付けられて格納されている。「32.48.00.00/16」が転送先ポート(Port−3)と関連付けられて格納されている。
ここで、検索キーとして、検索IPアドレス「32.48.09.03」を受信した場合が示されている。
受信した検索キーは、検索テーブル30に格納されている4つのエントリデータとそれぞれ一致する。
検索回路10は、検索キーとなる検索IPアドレスに一致するエントリデータのうち最も有効ビット長が長いエントリデータを検索結果として出力する。
本例においては、検索IPアドレスに一致するエントリデータのうち最も有効ビット長が長い24ビットのプレフィックス(Prefix)長をもつ「32.48.09.00/24」が検索結果として出力される。
したがって、対応する転送先であるポート(Port−0)へパケットデータを転送して宛先までデータを送付する。
<比較例に従うバイナリサーチ(Binary-Search)検索アルゴリズム>
比較例として、従来のバイナリサーチ検索アルゴリズムでLPM検索を実施する場合について説明する。
上記比較例は、非特許文献1に示される方式である。
図2は、比較例として設けられる検索テーブルについて説明する図である。
図2(A)を参照して、検索テーブル200は、複数のエントリデータを格納する。
一例として4つのエントリデータを格納する場合が示されている。
エントリデータは、4ビットのデータ長の検索データと、各検索データが検索キーと一致した場合に検索結果として出力する検索結果データとを含む。
検索テーブル200が、FIBであれば検索データが宛先IPアドレスに相当し、検索結果が転送先ポートに相当する。
検索テーブル200のエントリデータは、マスクされるビットを含んでいるため、各々のエントリデータはマスクされたビットに対応する複数の検索キーに一致する。
たとえば、検索テーブル200に格納されている各エントリデータは各々下記の下限値と上限値を境界値とする検索対象範囲をもっている。
比較例では、バイナリサーチで、LPM検索を実施する。
図2(B)には、非特許文献1に開示されるバイナリサーチでLPM検索を実施するための検索テーブル201が示されている。
検索テーブル200の各エントリデータが持つ下限値と上限値とを各々バイナリサーチ(Binary-Search)のデータとして小さい順にソートした検索テーブル201を生成する。
したがって、検索テーブル201は、検索テーブル200の倍の8個のエントリデータが格納される。
そして、検索テーブル201は、検索結果として検索キーに応じた2つの場合のデータをそれぞれ格納する。
検索結果は、検索キーが格納された検索データと一致した場合(Key=Data)の検索結果データと、検索キーが格納した検索データより大きい場合(Key>Data)の検索結果データとを含む。
図3は、比較例として検索テーブル201に対する検索処理について説明する図である。
図3(A)には、検索テーブル201が示されており、検索キー「0010」と、「0110」に対する検索処理を実行する場合が示されている。
検索キー「0010」の場合について説明する。
検索テーブル201に対して検索キー「0010」でもってバイナリサーチ(Binary−Search)した場合、テーブルアドレス「1」で検索キーと検索データが一致する(Key=Data)ので検索結果データ「P0」を出力する。
図3(B)には、検索過程が示されており、「判定」は検索キー(Key)が検索データ(Data)に対して小さい(Low)か、大きい(High)かを示す判定結果である。
バイナリサーチは、検索テーブル201の中間のテーブルアドレス「4」からスタートする。検索キーが検索データよりも小さい(Low)と判定した場合は、次のバイナリサーチは図3(B)に示したような順で下位アドレスを読み出し(Read)し、大きい(High)と判定した場合は上位アドレスを読み出す。
検索キー「0110」の場合についても同様に検索を行う。
しかしながら、検索テーブル201を検索キー「0110」でバイナリサーチした場合、検索キー「0110」に一致するテーブルエントリの検索データは存在しない。
このとき、検索結果は、テーブルアドレス「4」と「5」の中間値となる。つまり、エントリデータ「010*」(Entry1)の上限値とエントリデータ「0***」(Entry3)の上限値の中間値(0110)を指し示す。検索過程としては、検索キーは、エントリデータ(Entry1)の上限値であるテーブルアドレス「4」の検索データより大きい(Key(0110)>Data(0101))。また、エントリデータ(Entry3)の上限値であるテーブルアドレス「5」の検索データより小さい(Key(0110)<Data(0111))。したがって、検索結果はテーブルアドレス「4」と「5」の検索データの中間値となる。
当該比較例では、検索テーブル201に、バイナリサーチの検索結果が各検索データの中間値になった場合の検索結果データ201−2を設けている。例えば、テーブルアドレス「4」の検索データは図2に示される検索テーブル200のEntry1の上限値(H1)であり、且つ、検索テーブル200のEntry3の検索対象範囲(L3〜H3)に含まれている。したがって、検索キーがEntry1の上限値(テーブルアドレス「4」の検索データ(H1))より大きく、Entry3の上限値(テーブルアドレス「5」の検索データ(H3))までの範囲にある場合は、Entry3にHitすることになる。そこで検索テーブル201は、検索結果データ201−2を有し、テーブルアドレス「4」より大きい場合の検索結果としてEntry3の検索結果データである「P3」を格納する。
上述のとおり、検索キー「0110」のバイナリサーチにおける検索結果は、テーブルアドレス「4」と「5」の中間値となるため、テーブルアドレス「4」と、テーブルアドレス「4」に隣接するテーブルアドレス「5」とを検索対象範囲とする検索結果としてテーブルアドレス「4」の(Key>Data)の検索結果データ(201−2)である「P3」が判定結果として出力される。
なお、通常のバイナリサーチであれば、検索キーが検索テーブル201に格納される検索データと一致しない場合には、検索不一致(Missと呼ぶ)となる。
当該方式による検索テーブルの容量について説明する。
検索時に使用されるバイナリサーチを実行するための検索テーブル201は、元の検索テーブル200のエントリデータ1個あたり下限値と上限値との2個の検索データを格納する。
したがって、N個のエントリデータの検索テーブル200から検索テーブル201を生成するとワーストケースで2N個のテーブルアドレスが必要となる。
したがって、比較例に従う方式では、Nエントリデータの検索テーブルをLPM検索する場合には2Nのメモリ空間を持ったメモリを用意する必要がある。
さらに、検索テーブル201の各メモリアドレスには検索結果として出力するデータとして2個のデータを格納する。検索キーが検索データと一致した場合(Key=Data)の検索結果データと、検索キーが検索データより大きい場合(Key>Data)の検索結果データとを格納する。
例えば、検索テーブル200が1Mのエントリデータを持っていた場合、検索結果データとしてCAMと同様にエントリアドレスを出力する場合には、検索結果データには20ビットが必要となる。したがって、上記方式を採用する場合には、検索結果データとして40ビットが必要になる。
例えば、検索テーブル200がIPv4アドレスをベースとする検索テーブルであり、1Mのエントリデータを有する場合に、検索テーブル200から検索テーブル201を生成する場合には、下記のメモリ容量が必要となる。
表2のようにLPM検索に使用する検索テーブル201は元の検索テーブル200より2倍以上のメモリ容量を必要とする。
また、メモリアドレス空間もNから2Nに増加するためバイナリサーチを実行したときのメモリアクセス回数も元の検索テーブル200のエントリ数Nの回数と比較すると、メモリアドレス空間が2倍に増加した結果、メモリアクセス回数が1回増える結果となり、高速化できない課題がある。
さらに、検索テーブルを更新する場合には、エントリデータを大小順でソートする必要がある。例えば、N個のデータをもつ検索テーブルに対して、テーブルの最小位置に新規のエントリデータが追加される場合には、最小アドレス位置に新規のエントリデータを挿入する必要があるため既存のエントリデータをすべて移動させる必要がある。
検索テーブル201を構築する場合に、ワーストケースで発生するデータの移動回数はエントリ数に依存し、メモリアドレス空間がNから2Nに増加した場合、検索テーブルを構築する時間も増大する。
したがって、検索テーブルのエントリデータ数の削減が望まされる。
図4は、実施形態1に従う検索回路10の機能ブロック図である。
図4を参照して、検索回路10は、処理部20と、検索テーブル30とを含む。処理部20の機能として、本例においてはCPUがアクセス可能なメモリに格納されたプログラムを実行することにより各機能ブロックを実現する。
処理部20は、検索テーブル30に対する種々の処理を実行するものであり、検索処理部22と、結果格納部24と、テーブル生成部26とを含む。
検索処理部22は、検索テーブル30に対してバイナリサーチ処理を実行する。また、
検索処理部22は、バイナリサーチ処理に対する結果を結果格納部24に格納する。
テーブル生成部26は、元検索テーブルから検索処理部22のバイナリサーチ処理で使用する検索テーブル30のエントリデータを生成する。元の検索テーブルは、ユーザが設定してもよいし、検索実行システムがプログラムに基づいて生成されるものであってもよい。
テーブル生成部26は、データ取得部260と、検索データ設定部262と、エントリデータ設定部264と、エントリデータ追加設定部266とを含む。
データ取得部260は、元検索テーブルに含まれるエントリ候補データを取得する。
検索データ設定部262は、データ取得部260で取得したエントリ候補データが検索対象範囲となるデータの中から1つのデータを検索データとして設定する。
エントリデータ設定部264は、検索データと、プレフィックス長データとを関連付けて検索テーブル30のエントリデータとして設定する。
エントリデータ追加設定部266は、検索対象データが示す検索データ群に他の検索データが含まれるか否かを判断し、他の検索データが含まれる場合には、別のエントリデータを設定する。
<検索テーブルの生成について>
実施形態1に従う検索テーブルに格納するエントリデータは、検索データとプレフィックス(prefix)長データと検索結果情報とを含む。
検索テーブルの各エントリデータが有する検索データとプレフィックス長データとに基づいて、各エントリデータの対象とする検索データ群(検索対象範囲)を計算することが可能である。すなわち、検索データ群の検索データの上限値および下限値を算出することが可能である。例えば、検索データが「0100」でプレフィックス長が「3」の場合には、元の検索データが「010*」であることが分かる。したがって、検索データの検索対象範囲は上限値が「0101」であり下限値が「0100」であることが分かる。
本例においては、エントリデータに格納する検索データとして、例えば、検索データ群のうちの下限値を設定する場合について説明する。なお、下限値に限られず検索データ群の上限値および下限値の間の任意の値に設定することが可能である。
テーブル生成部26は、エントリ候補データで構成される元検索テーブルから検索テーブル30を生成する。
図5は、実施形態1に従う検索テーブルの生成について説明する図である。
図5(A)には、元検索テーブル400が示されている。
元検索テーブル400は、エントリアドレス0〜3のそれぞれに検索対象となる複数のエントリ候補データEntry0〜3を格納する。本例においては、4つのエントリ候補データが元検索テーブル400に格納されている。
エントリ候補データは、マスクされるビットを含む検索対象データと、検索対象データが検索キーと一致した場合に検索結果として出力する検索結果データとを含む。
図5(B)には、実施形態1に従う元検索テーブル400の検索対象範囲が示されている。
図5(B)に示されるように、各エントリ候補データの検索対象範囲が示されている。
具体的には、エントリ候補データEntry0の検索データ「001*」の検索対像範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と、エントリ候補データEntry2の検索データ「111*」の検索対象範囲と、エントリ候補データEntry3の検索データ「10**」の検索対象範囲が示されている。
この場合、各エントリ候補データの検索対象範囲は重ならない。すなわち、各エントリ候補データの検索対象範囲は、他のエントリ候補データの検索対象範囲によって分割されない。
図5(C)は、実施形態1に従う検索テーブル401を説明する図である。
検索データ設定部262は、元検索テーブル400の各エントリ候補データの検索対象データの検索対象範囲の下限値を検索テーブル401の検索データとする。そして、エントリデータ設定部264は、当該検索データと、プレフィックス長データおよび検索結果データとを関連付けたエントリデータを設定する。
そして、エントリデータ設定部264は、検索テーブル401にそれぞれ検索データ設定部262で設定されたエントリデータを格納する。
エントリデータ設定部264は、格納したエントリデータのソートを行い、テーブルアドレスが小さい位置に値の小さい検索データを含むエントリデータを格納する。
一例として、テーブルアドレス「0」にエントリ候補データEntry0に対応する検索データ「0010」、プレフィックス長データ「3」、検索結果データ「P0」が格納される。
一例として、テーブルアドレス「1」にエントリ候補データEntry1に対応する検索データ「0100」、プレフィックス長データ「3」、検索結果データ「P1」が格納される。
一例として、テーブルアドレス「2」にエントリ候補データEntry3に対応する検索データ「1000」、プレフィックス長データ「2」、検索結果データ「P3」が格納される。
一例として、テーブルアドレス「3」にエントリ候補データEntry2に対応する検索データ「1110」、プレフィックス長データ「3」、検索結果データ「P2」が格納される。
本例においては、各エントリ候補データの検索対象範囲は、他のエントリ候補データの検索対象範囲によって分割されないため新たなエントリデータを追加しない。
次に、エントリ候補データの検索対象範囲が他のエントリ候補データの検索対象範囲によって分割される場合について説明する。
図5(D)には、元検索テーブル402が示されている。
元検索テーブル402は、エントリアドレス0〜3のそれぞれに検索対象となる複数のエントリ候補データEntry0〜3を格納する。本例においては、4つのエントリ候補データが元検索テーブル402に格納されている。
エントリ候補データは、マスクされるビットを含む検索対象データと、検索対象データが検索キーと一致した場合に検索結果として出力する検索結果データとを含む。
図5(E)には、実施形態1に従う元検索テーブル402の検索対象範囲が示されている。
図5(E)に示されるように、各エントリ候補データの検索対象範囲が示されている。
具体的には、エントリ候補データEntry0の検索データ「001*」の検索対象範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と、エントリ候補データEntry2の検索データ「101*」の検索対象範囲と、エントリ候補データEntry3の検索データ「0***」の検索対象範囲が示されている。
この場合、エントリ候補データEntry3の検索データ「0***」の検索対象範囲は、エントリ候補データEntry0の検索データ「001*」の検索対象範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と重なる場合が示されている。
すなわち、エントリ候補データEntry3の検索データ「0***」の検索対象範囲は、エントリ候補データEntry0の検索データ「001*」およびエントリ候補データEntry1の検索データ「010*」により分割される。
実施形態1においては、上記のようにエントリ候補データEntry3が分割されるためEntry3の下限値を検索データ「0000」とするエントリ候補データEntry3−0とは別の検索データを含む新たなエントリ候補データEntry3−1を追加する。
エントリデータ追加設定部266は、新たなエントリ候補データを追加する。
エントリデータ追加設定部266は、エントリ候補データEntry3の検索データ「0***」の検索対象範囲のうち、エントリ候補データEntry0の検索データ「001*」およびエントリ候補データEntry1の検索データ「010*」の検索対象範囲を除く検索対象範囲のエントリデータEntry3−1を追加する。
この点で、エントリデータ追加設定部266は、エントリ候補データEntry1の検索対象範囲との境界を示すデータ「0110」を検索データとする。
そして、エントリデータ追加設定部266は、当該検索データとプレフィックス長データおよび検索結果データとを関連付けた新たなエントリデータを設定する。
エントリデータ追加設定部266は、検索データ「0110」と、プレフィックス長データ「1」および検索結果「P3」とを関連付けた新たなエントリデータを設定する。
図5(F)は、実施形態1に従う検索テーブル403を説明する図である。
検索データ設定部262は、元検索テーブル402の各エントリ候補データの検索対象データの検索対象範囲の下限値を検索テーブル403の検索データとする。そして、エントリデータ設定部264は、当該検索データと、プレフィックス長データおよび検索結果データとを関連付けたエントリデータを設定する。
そして、エントリデータ設定部264は、検索テーブル403にそれぞれ設定したエントリデータを格納する。また、エントリデータ追加設定部266は、新たなエントリデータを検索テーブル403に格納する。
エントリデータ設定部264は、格納すべきエントリデータのソートを行い、テーブルアドレスが小さい位置に値の小さい検索データを含むエントリデータを格納する。
実施形態1に従う検索テーブル403には、図5(F)に示されるように、エントリデータを追加した上で、ソートが行われたエントリデータが格納される。
一例として、テーブルアドレス「0」にエントリ候補データEntry3−0に対応する検索データ「0000」、プレフィックス長データ「1」、検索結果データ「P3」が格納される。
一例として、テーブルアドレス「1」にエントリ候補データEntry0に対応する検索データ「0010」、プレフィックス長データ「3」、検索結果データ「P0」が格納される。
一例として、テーブルアドレス「2」にエントリ候補データEntry1に対応する検索データ「0100」、プレフィックス長データ「3」、検索結果データ「P1」が格納される。
一例として、テーブルアドレス「3」にエントリ候補データEntry3−1に対応する検索データ「0110」、プレフィックス長データ「1」、検索結果データ「P3」が格納される。
一例として、テーブルアドレス「4」にエントリ候補データEntry2に対応する検索データ「1010」、プレフィックス長データ「3」、検索結果データ「P2」が格納される。
当該検索テーブルを用いて検索処理部22によるバイナリサーチが可能となる。
<実施形態に従うバイナリサーチ(Binary-Search)検索アルゴリズム>
図6は、実施形態1に従う検索テーブル403に対する検索処理について説明する図である。
検索処理部22は、検索テーブル403にアクセスし、検索処理を実行する。検索処理部22は、検索過程の情報を結果格納部24に格納する。
図6(A)には、検索テーブル403が示されている。
ここで、検索処理部22は、検索キー「0010」と、検索キー「0110」とに対する検索処理を実行する。
図6(B)には、結果格納部24に格納されている検索キー「0010」に対する検索過程の情報が示されている。
検索処理部22は、検索テーブル403の中間のテーブルアドレス「2」からサーチを開始する。
検索処理部22は、検索テーブル403の中間のテーブルアドレス「2」から読み出されたエントリデータの検索データおよびプレフィックス長データに基づいて、当該エントリデータの検索対象範囲の上限値を計算する。一例として上限値「0101」が算出される。検索データは、検索対象範囲の下限値が設定されているため検索対象範囲は、「0100」〜「0101」であることが分かる。
検索処理部22は、決定した検索対象範囲に基づいて検索キーが含まれるか否かの一致判定処理を実行する。
本例の場合には、検索処理部22は、検索キー「0010」がエントリデータの検索対象範囲に入っていないと判断する。すなわち、検索結果はミス(Miss)となる。
また、検索処理部22は、検索データ「0100」と検索キー「0010」との大小判定処理を実行する。この比較結果に基づいて次の検索アドレスを決定する。
検索処理部22は、大小判定処理により、検索キーが検索データよりも小さい(Low)場合には、次の検索対象として下位アドレスに対応するエントリデータを読み出す。
検索処理部22は、大小判定処理により、検索キーが検索データよりも大きい(High)場合には次の検索対象として上位アドレスに対応するエントリデータを読み出す。
このエントリデータでは検索キー「0010」<検索データ「0100」である。したがって、大小判定処理により小さい(Low)となるので下位アドレスであるテーブルアドレス「0」のデータを読み出す。
図6(B)の結果格納部24には、1回目のメモリアクセスとして、テーブルアドレス「2」を検索アドレスとした場合が示されている。検索データ「0100」に対して上限値「0101」が算出された場合が示されている。また、大小判定処理として小さい(Low)が判定結果として格納されている。また、一致判定処理としてミス(Miss)が格納されている。
次に、検索処理部22は、検索テーブル403の下位のテーブルアドレス「0」を読み出し、検索キー「0010」でサーチを実行する。
検索処理部22は、上記と同様に読み出されたエントリデータの検索データおよびプレフィックス長データとに基づいて、当該エントリデータの検索対象範囲の上限値を計算する。すなわち、テーブルアドレス「0」のエントリデータの検索対象範囲の上限値「0111」が算出される。したがって、当該エントリデータの検索対象範囲は「0000」〜「0111」であることが分かる。
検索処理部22は、決定した検索対象範囲に基づいて検索キーが含まれるか否かの一致判定処理を実行する。
本例の場合には、検索処理部22は、検索キー「0010」がエントリデータの検索対象範囲に入っていると判断する。すなわち、検索結果は一致(Hit)となる。
また、検索処理部22は、検索データ「0000」と検索キー「0010」との大小判定処理を実行する。この比較結果に基づいて次の検索アドレスを決定する。
このエントリデータでは、検索キー「0010」>検索データ「0000」である。したがって、大小判定処理により大きい(High)となるので上位アドレス「1」を読み出す。
図6(B)の結果格納部24には、2回目のメモリアクセスとして、テーブルアドレス「0」が検索アドレスとして読み出された場合が示されている。検索データ「0000」に対して上限値「0111」が算出された場合が示されている。したがって一致判定処理は一致(Hit)となる。ここで一致判定がHitのため結果格納部24に格納されている暫定検索結果はMissからP3に更新される。また、大小判定処理として大きい(High)が判定結果となるため、次のサーチ対象は上位のテーブルアドレスとなる。
次に、検索処理部22は、検索テーブル403の上位のテーブルアドレス「1」を読み出し、検索キー「0010」でサーチを実行する。
検索処理部22は、上記と同様に、読み出されたエントリデータの検索データおよびプレフィックス長データとに基づいて、読み出されたエントリデータの検索対象範囲の上限値を計算する。テーブルアドレス「1」のエントリデータの検索対象範囲の上限値は、読み出された検索データおよびプレフィックス長データに基づき「0011」となる。
検索処理部22は、決定した検索対象範囲に基づいて検索キーが含まれるか否かの一致判定処理を実行する。
本例の場合には、検索処理部22は、検索キー「0010」がエントリデータの検索対象範囲に入っていると判断する。すなわち、検索結果は一致(Hit)となる。
この場合、テーブルアドレス「1」が最終アドレスとなるため、検索アドレスを決定するための大小判定処理は実行しない。
図6(B)の結果格納部24には、3回目のメモリアクセスとして、テーブルアドレス「1」が検索アドレスとして読み出された場合が示されている。検索データ「0010」に対して上限値「0011」が算出された場合が示されている。また、一致判定処理として一致(Hit)が格納されている。また、暫定検索結果として検索結果データ「P0」が格納されている。
ここで、テーブルアドレス「1」のエントリデータのプレフィックス長データは「3」である。一方、結果格納部24に格納されているテーブルアドレス「0」のエントリデータのプレフィックス長データは「1」である。したがって、検索処理部22は、結果格納部24のデータをプレフィックス長が大きい(有効ビット長が長い)ためエントリデータのテーブルアドレス「1」のエントリデータ検索結果データ「P0」に更新する。一方、プレフィックス長が小さい場合は結果格納部24に格納される暫定検索結果は更新せず前回の結果を保持する。
検索処理部22は、一致判定結果がHitの場合、結果格納部24に格納されている前回までの暫定検索結果のプレフィックス長と比較してプレフィックス長が大きい場合に暫定検索結果を更新し続けることで最も大きいプレフィックス長をもつ検索結果が結果格納部24に保持される。検索処理部22は、最終アドレスのバイナリサーチ終了時の結果格納部24に格納された判定結果に基づいて最終的な検索結果データを出力する。
次に、検索処理部22は、検索キー「0110」に対する検索処理について説明する。
図6(C)には、結果格納部24に格納されている検索キー「0110」に対する検索過程の情報が示されている。
検索処理部22は、上記で説明したように検索テーブル403の中間のテーブルアドレス「2」からサーチを開始する。
図6(C)の結果格納部24には、1回目のメモリアクセスとして、テーブルアドレス「2」が検索アドレスとして読み出された場合が示されている。検索データ「0100」に対して上限値「0101」が算出された場合が示されている。また、大小判定処理として大きい(High)が判定結果として格納されている。また、一致判定処理としてミス(Miss)が格納されている。検索処理部22は、大小判定処理により、検索キーが検索データよりも大きい(High)場合には次のバイナリサーチは上位アドレスに対応するエントリデータを読み出す。この場合には、上位アドレスであるテーブルアドレス「4」を読み出す。
図6(C)の結果格納部24には、2回目のメモリアクセスとして、テーブルアドレス「4」が検索アドレスとして読み出された場合が示されている。検索データ「1010」に対して上限値「1011」が算出された場合が示されている。したがって、一致判定処理としてミス(Miss)となる。また、大小判定処理として小さい(Low)が判定結果となる。検索処理部22は、大小判定処理により、検索キーが検索データよりも小さい(Low)場合には次のバイナリサーチは下位アドレスに対応するエントリデータを読み出す。この場合には、下位アドレスであるテーブルアドレス「3」を読み出す。
図6(C)の結果格納部24には、3回目のメモリアクセスとして、テーブルアドレス「3」が検索アドレスとして読み出された場合が示されている。検索データ「0110」に対して上限値「0111」が算出された場合が示されている。したがって一致判定処理として一致(Hit)となる。そのため暫定検索結果は更新され、検索結果データ「P3」が格納される。
検索処理部22は、結果格納部24に格納された判定結果に基づいて最終的な検索結果データを出力する。
結果格納部24には3回目のメモリアクセスでHitとなったためテーブルアドレス「3」のエントリデータの検索結果データである「P3」が検索処理部22から出力される。
当該方式により、本実施形態1に従う検索テーブルに対するバイナリサーチを用いたLPM検索を実行することが可能である。
実施形態1に従う検索テーブルには、検索対象範囲の下限値のみが格納される。したがて、実施形態1に従う検索テーブルのテーブル容量は、従来方式の如く元検索テーブルのエントリ数の2倍にならないためテーブル容量を縮小することが可能である。すなわち、小容量のメモリで検索処理の実行が可能である。また、従来方式の如く検索結果データとして2つのデータを保持する必要がなく、1つの検索結果データのみを保持するためこの点でもテーブル容量を縮小することが可能である。
また、テーブル容量を縮小することによりメモリアクセス回数も削減することが可能であり、検索処理を高速化させることも可能である。
さらに、検索テーブルのエントリデータ数の削減によりテーブル構築の時間も短縮することが可能である。
(実施形態2)
実施形態1に従う検索テーブルの生成において、図5(D)において各エントリ候補データの検索対象範囲が他のエントリ候補データの検索対象範囲によって分割される場合には、エントリデータを追加する方式について説明した。このため各エントリ候補データの検索対象範囲が他のエントリ候補データの検索対象範囲によって分割されない場合に比べて、エントリデータ数が増加する。
実施形態2においては、このエントリデータ数の増加を抑制する方式について説明する。
上記の実施形態1においては、図5(D)において、エントリ候補データEntry3の検索データ「0***」の検索対象範囲は、エントリ候補データEntry0の検索データ「001*」の検索対象範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と重なる場合が示されている。
すなわち、エントリ候補データEntry3の検索データ「0***」の検索対象範囲は、エントリ候補データEntry0の検索データ「001*」およびエントリ候補データEntry1の検索データ「010*」により分割される。
実施形態1においては、エントリ候補データEntry3−0の検索データ「0000」とは別の検索データを含む新たなエントリ候補データEntry3−1を追加した。
一方で、エントリ候補データEntry3の検索データ「0***」を、検索対象範囲が重なるエントリ候補データEntry0の検索データ「001*」およびエントリ候補データEntry1の検索データ「010*」と別にすれば検索対象範囲が分割されない。
図7は、実施形態2に従う検索テーブルの生成について説明する図である。実施形態2における検索テーブルは、実施形態1と同様にテーブル生成部26によって生成される。
図7(A)には、元検索テーブル402が示されている。
図7(B)には、検索テーブル600,601が示されている。
実施形態2において、検索回路の構成は実施形態1で示した構成と同様であるのでその詳細な説明については省略する。
テーブル生成部26は、実施形態1と同様に、エントリ候補データに従って複数の検索テーブルを生成する。
検索データ設定部262は、実施形態1と同様に、各エントリ候補データに基づいてマスクされるビットを含む検索対象データの下限値を検索データとする。
エントリデータ設定部264は、当該検索データと、プレフィックス長データおよび検索結果データとを関連付けたエントリデータを設定する。
そして、エントリデータ設定部264は、検索テーブルにそれぞれ設定したエントリデータを格納する。
エントリデータ設定部264は、検索テーブルにそれぞれ設定したエントリデータを格納する際、検索対象範囲が他のエントリデータによって分割されるか否かを判断し、分割されると判断した場合には、他の検索テーブルにエントリデータを格納する。
本例の場合には、検索テーブル600のテーブルアドレス「0」にエントリ候補データEntry0に対応する検索データ「0010」、プレフィックス長データ「3」、検索結果データ「P0」が格納される。
また、検索テーブル600のテーブルアドレス「1」にエントリ候補データEntry1に対応する検索データ「0100」、プレフィックス長データ「3」、検索結果データ「P1」が格納される。
また、検索テーブル600のテーブルアドレス「2」にエントリ候補データEntry2に対応する検索データ「1010」、プレフィックス長データ「3」、検索結果データ「P2」が格納される。
一方で、エントリ候補データEntry3の検索データは、当該エントリ候補データEntry3と検索対象範囲が重なるエントリ候補データEntry0およびEntry1の検索データが格納された検索テーブル600とは異なる検索テーブル601に格納される。すなわち、検索テーブル601のテーブルアドレス「0」にエントリ候補データEntry3に対応する検索データ「0000」、プレフィックス長データ「1」、検索結果データ「P3」が格納される。
当該処理により、検索テーブル600,601のそれぞれにおいては、他のエントリデータによってデータの検索対象範囲が分割されない。
これによりエントリデータ数の増加を抑制することが可能である。
図8は、実施形態2に従う検索テーブルの実装方式について説明する図である。
図8(A)には、実施形態2に従う検索回路11が示されている。
検索回路11は、CPU40とメモリ50とを含む。
CPU40は、メモリ50と協働することにより処理部20の機能を実行する。
メモリ50は、検索テーブル600,601を含む。
処理部20は、メモリ50に格納されている検索テーブル600,601にアクセスすることにより上記の検索テーブルに対するバイナリサーチを実行することが可能である。
図8(B)には、実施形態2に従う検索回路12が示されている。
検索回路12は、CPU40と、メモリ51,52とを含む。メモリ51には、検索テーブル600が格納されている。また、メモリ52には、検索テーブル601が格納されている。
処理部20は、メモリ51,52にそれぞれ格納されている検索テーブル600,601にアクセスすることにより上記の検索テーブルに対するバイナリサーチを実行することが可能である。検索回路11ではメモリ50に検索テーブル600,601が格納されているため検索テーブル600,601に同時にバイナリサーチを実行することは不可能だが検索回路12では別々のメモリに格納されているため、検索テーブル600,601に並列にバイナリサーチを実行することが可能となる。そのため検索回路11と比較して検索性能が向上する。
図8(C)には、実施形態2に従う検索回路13が示されている。
検索回路13は、CPU40Aと、メモリ53とを含む。
メモリ53は、検索テーブル600を含む。
また、CPU40Aは、キャッシュメモリを内蔵しており、当該キャッシュメモリに検索テーブル601を格納する。
処理部20は、メモリ53に格納されている検索テーブル600にアクセスすることにより上記の検索テーブルに対するバイナリサーチを実行することが可能である。また、処理部20は、キャッシュメモリに格納されている検索テーブル601にアクセスすることにより上記の検索テーブルに対するバイナリサーチを実行することが可能である。
検索回路12と同様に検索テーブル600、601を並列に動作させることが可能なため検索動作を高速化させることが可能である。また検索テーブル601は検索テーブル600にくらべて小容量で実装可能なことが期待できるためキャッシュメモリに内蔵することで検索回路12で必要なメモリ52を削減できる。
図9は、実施形態2に従う検索処理の順序について説明するフロー図である。
図9を参照して、処理部20は、検索テーブル600に対してバイナリサーチを実行する(ステップS2)。
ステップS2において、処理部20は、検索テーブル600に対するサーチ処理において、一致判定処理結果が一致(Hit)であった場合(ステップS2においてHit)には、検索を終了する(ステップS8)。そして、処理部20は、検索テーブル600における一致(Hit)したエントリデータに対応する検索結果データを出力する。
一方、ステップS2において、処理部20は、検索テーブル600に対するサーチ処理において、一致判定処理結果がミス(Miss)であった場合(ステップS2においてMiss)には、検索テーブル601に対してバイナリサーチを実行する(ステップS4)。
ステップS4において、処理部20は、検索テーブル601に対するサーチ処理において、一致判定処理結果が一致(Hit)を示す場合(ステップS4においてHit)には、検索を終了する(ステップS10)。そして、処理部20は、検索テーブル601における一致(Hit)したエントリデータに対応する検索結果データを出力する。
一方、ステップS4において、処理部20は、検索テーブル601に対するサーチ処理において、一致判定処理結果がミス(Miss)となった場合(ステップS4においてMiss)には、検索を終了する。処理部20は、検索結果としてミス(Miss)を出力する(ステップS6)。
そして、処理を終了する(エンド)。
実施形態2に従う方式は、プリフィックス長データが大きいエントリデータを有する検索テーブルをプリフィックス長データが小さいエントリデータを有する検索テーブルよりも優先して検索処理する。
当該処理により、検索テーブルを分割したことに起因する検索処理時間の全体的な増加を抑制することが可能である。
(実施形態3)
上記の実施形態2では、エントリデータの追加を抑制してテーブル容量を縮小する方式について説明した。
実施形態3においては、実施形態2よりもさらにテーブル容量を縮小する方式について説明する。
具体的には、検索データの設定値を最適化することにより、エントリデータの増加を回避する。
図10は、実施形態1に従う別の検索テーブルの生成について説明する図である。実施形態3における検索テーブルは、実施形態1と同様にテーブル生成部26によって生成される。
図10(A)には、元検索テーブル404が示されている。
元検索テーブル404は、エントリアドレス0〜4のそれぞれに検索対象となる複数のエントリ候補データEntry0〜4を格納する。本例においては、5つのエントリ候補データが元検索テーブル404に格納されている。
エントリ候補データは、マスクされるビットを含む検索対象データと、検索対象データが検索キーと一致した場合に検索結果として出力する検索結果データとを含む。
ここで、上記で説明したように、エントリ候補データEntry44の検索データ「****」の検索対象範囲は、エントリ候補データEntry0の検索データ「000*」の検索対象範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と、エントリ候補データEntry2の検索データ「100*」の検索対象範囲と、エントリ候補データEntry3の検索データ「110*」の検索対象範囲と重なる。
すなわち、エントリ候補データEntry4の検索データ「****」の検索対象範囲は、エントリ候補データEntry0の検索データ「000*」、エントリ候補データEntry1の検索データ「010*」、エントリ候補データEntry2の検索データ「100*」、エントリ候補データEntry3の検索データ「110*」により分割される。
これにより、エントリ候補データEntry4−0の検索データ「0010」とは別の検索データを含む新たな複数のエントリ候補データEntry4−1〜Entry4−3を追加する必要がある。
図10(B)は、新たなエントリデータを追加した検索テーブル406を説明する図である。
一例として、テーブルアドレス「000」にエントリ候補データEntry0に対応する検索データ「0000」、プレフィックス長データ「3」、検索結果データ「P0」が格納される。
一例として、テーブルアドレス「001」にエントリ候補データEntry4−0に対応する検索データ「0010」、プレフィックス長データ「0」、検索結果データ「P4」が格納される。
一例として、テーブルアドレス「010」にエントリ候補データEntry1に対応する検索データ「0100」、プレフィックス長データ「3」、検索結果データ「P1」が格納される。
一例として、テーブルアドレス「011」にエントリ候補データEntry4−1に対応する検索データ「0110」、プレフィックス長データ「0」、検索結果データ「P4」が格納される。
一例として、テーブルアドレス「100」にエントリ候補データEntry2に対応する検索データ「1000」、プレフィックス長データ「3」、検索結果データ「P2」が格納される。
一例として、テーブルアドレス「101」にエントリ候補データEntry4−2に対応する検索データ「1010」、プレフィックス長データ「0」、検索結果データ「P4」が格納される。
一例として、テーブルアドレス「110」にエントリ候補データEntry3に対応する検索データ「1100」、プレフィックス長データ「3」、検索結果データ「P3」が格納される。
一例として、テーブルアドレス「111」にエントリ候補データEntry4−3に対応する検索データ「1110」、プレフィックス長データ「0」、検索結果データ「P4」が格納される。
したがって、実施形態1に従う方式においては、エントリデータが3個増加することになる。エントリ候補データEntry4が他のエントリ候補データEntry1〜3により分割されるために生じたものである。
一方で、エントリ候補データEntry4の検索データを他の検索データよりも優先して検索処理を実行できれば、それによる検索結果データを取得することができるためエントリデータを追加する必要はない。
この点で、上記の実施形態1において説明した検索データは、検索対象範囲の下限値に設定する場合について説明したが任意の値に設定することが可能である。検索データは検索対象範囲内の任意の値に設定することが可能である。
したがって、エントリ候補データEntry4の検索データを他の検索データよりも優先して検索処理を実行するように調整する。
次表に示すように、エントリ候補データEntry4が包含するプレフィックス長データがエントリ候補データEntry4より大きいエントリ候補データに対応する検索データを格納した場合が示されている。
上記表に示されるように、エントリ候補データEntry4の検索データが包含するエントリ候補データEntry0〜3の検索データがソートされる。
テーブルアドレスAdd「000(Min)」に対応してエントリ候補データEntry0の検索データ「0000」が格納される。また、テーブルアドレスAdd「011(Max)」に対応してエントリ候補データEntry3の検索データ「1100」が格納される。
したがって、エントリ候補データEntry4の検索データの挿入位置の範囲はEntry4が増加する分(Max)+1の範囲となり、「000(Min)」から「100(Max+1)」のどこかに挿入される。
ここで、エントリ候補データEntry4の検索データがテーブルアドレス「000〜100」の中で最初にバイナリサーチが実施される位置にソートされるようにするためには取りうるテーブルアドレスの範囲の中で変化しているアドレスの最上位ビットを1に設定したアドレスにエントリ候補データEntry4の検索データを挿入することである。
この例ではテーブルアドレスadd[2:0]の中で変化している最上位ビットはアドレスAdd[2]である。
したがって、テーブルアドレスAdd「100」がエントリ候補データEntry4の検索データの挿入位置となる。
そして、当該挿入位置に検索データを挿入するためにエントリ候補データEntry4の検索対象範囲内の検索データの1つである「1110」に設定する。
図11は、実施形態3に従う検索テーブルの生成について説明する図である。
図11(A)には、元検索テーブル404が示されている。
元検索テーブル404は、エントリアドレス0〜4のそれぞれに従ってエントリデータを生成するための候補となる複数のエントリ候補データEntry0〜4を格納する。本例においては、5つのエントリ候補データが元検索テーブル404に格納されている。
エントリ候補データは、マスクされるビットを含む検索対象データと、検索対象データが検索キーと一致した場合に検索結果として出力する検索結果データとを含む。
ここで、上記で説明したように、エントリ候補データEntry4の検索データ「****」の検索対象範囲は、エントリ候補データEntry0の検索データ「000*」の検索対象範囲と、エントリ候補データEntry1の検索データ「010*」の検索対象範囲と、エントリ候補データEntry2の検索データ「100*」の検索対象範囲と、エントリ候補データEntry3の検索データ「110*」の検索対象範囲と重なる。
すなわち、エントリ候補データEntry4の検索データ「****」の検索対象範囲は、エントリ候補データEntry0の検索データ「000*」、エントリ候補データEntry1の検索データ「010*」、エントリ候補データEntry2の検索データ「100*」、エントリ候補データEntry3の検索データ「110*」により分割される。
図11(B)は、実施形態3に従う検索テーブル408を説明する図である。
具体的には、エントリ候補データEntry4が包含するプレフィックス長データがエントリ候補データEntry4より大きいエントリ候補データに関して、当該エントリ候補データの検索対象データの下限値を検索データとする。
一例として、テーブルアドレス「000」にエントリ候補データEntry0に対応する検索データ「0000」、プレフィックス長データ「3」、検索結果データ「P0」が格納される。
一例として、テーブルアドレス「001」にエントリ候補データEntry1に対応する検索データ「0100」、プレフィックス長データ「3」、検索結果データ「P1」が格納される。
一例として、テーブルアドレス「010」にエントリ候補データEntry2に対応する検索データ「1000」、プレフィックス長データ「3」、検索結果データ「P2」が格納される。
一例として、テーブルアドレス「011」にエントリ候補データEntry3に対応する検索データ「1100」、プレフィックス長データ「3」、検索結果データ「P3」が格納される。
次に、プレフィックス長データが小さいエントリ候補データに関して、当該エントリ候補データの検索対象データEntry4のうちの1つを検索データとする。
本例においては、上記で説明したように、テーブルアドレスAdd「100」がエントリ候補データEntry4の検索データの挿入位置となるように、検索データを「1110」に設定する。
そして、一例として、テーブルアドレス「100」にエントリ候補データEntry4に対応する検索データ「1110」、プレフィックス長データ「0」、検索結果データ「P4」が格納される。
当該検索テーブルを用いて検索処理部22によるバイナリサーチが可能となる。
図12は、実施形態3に従う検索テーブル408に対する検索処理について説明する図である。
検索処理部22は、検索テーブル408にアクセスし、検索処理を実行する。検索処理部22は、検索過程の情報を結果格納部24に格納する。
図12(A)には、検索テーブル408が示されている。
ここで、検索処理部22は、検索キー「0111」に対する検索処理を実行する。
図12(B)には、結果格納部24に格納されている検索キー「0111」に対する検索過程の情報が示されている。
検索処理部22は、検索テーブル408の中間のテーブルアドレス「4(「100」)」からバイナリサーチを開始する。
結果格納部24には、1回目のメモリアクセスとして、テーブルアドレス「4」が検索アドレスとして読み出された場合が示されている。検索データ「1110」に対して上限値「1111」が算出される。これにより検索キーの一致判定結果はHitとなる場合が示されている。そのため、暫定検索結果として検索結果データ「P4」が格納されている。また、大小判定処理として小さい(Low)が判定結果として格納されている。検索処理部22は、大小判定処理により、検索キーが検索データよりも小さい(Low)場合には次のバイナリサーチは下位アドレスに対応するエントリデータを読み出す。この場合には、下位アドレス「2」を読み出す。
次に、検索処理部22は、2回目のメモリアクセスとして、検索テーブル408の下位のテーブルアドレス「2(010)」を読み出し、検索キー「0111」でバイナリサーチする。
検索処理部22は、上記と同様に読み出されたエントリデータの検索データおよびプレフィックス長データとに基づいて、検索対象範囲の上限値を計算する。
検索処理部22は、決定した検索対象範囲に基づいて検索キーが含まれるか否かの一致判定処理を実行する。
本例の場合には、検索処理部22は、検索キー「0111」がエントリデータの検索対象範囲に入っていないと判断する。すなわち、検索結果はミス(Miss)となる。したがって、検索結果データは更新されない。
また、検索処理部22は、検索データ(「1000」)と検索キー「0111」との大小判定処理を実行する。この比較結果に基づいて次の検索アドレスを決定する。
このエントリデータでは、検索キー(Key=0111)<検索データ(「1000」)である。したがって、大小判定処理により小さい(Low)となるので下位アドレス「1」を読み出す。
図12(B)の結果格納部24には、3回目のメモリアクセスとして、テーブルアドレス「1」が検索アドレスとして読み出された場合が示されている。検索データ「0100」に対して上限値「0101」が算出された場合が示されている。また、大小判定処理として大きい(High)が判定結果として格納されている。また、一致判定処理としてミス(Miss)となる。したがって、検索結果データは更新されない。
検索処理部22は、結果格納部24に格納された判定結果に基づいて最終的な検索結果データを出力する。
検索処理部22は、格納された検索結果データ「P4」を出力する。
当該処理により、本実施形態3に従う検索テーブルに対するバイナリサーチを実行することが可能である。
実施形態3においては、検索データの設定値を最適化することにより、エントリデータの増加を回避することが可能である。
したがって、実施形態1よりもさらにテーブル容量を縮小することが可能である。
上記においては、検索テーブルのテーブルアドレスとして3ビットのアドレス範囲が設定されている場合について説明したが4ビットのアドレス範囲が設定されている場合であっても同様に適用可能である。
上記表に示されるように、4ビットのアドレス範囲が設定される場合に、変化するアドレスの最上位ビットに従ってエントリデータの挿入位置を設定することが可能である。
当該位置になるように検索データを設定することにより、プレフィックス長データが小さい検索データを含むエントリデータについて、プレフィックス長データが大きい検索データを含むエントリデータよりも優先して検索処理を実行することが可能である。
上記の実施形態においては、処理部20の機能としてCPUにメモリに格納されたプログラムを実行することにより各機能ブロックを実現する構成について説明したが、特にこれに限られず専用回路を設けて各機能ブロックを実現することも可能である。
以上、本開示を実施形態に基づき具体的に説明したが、本開示は、実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1 通信機器、2 スイッチ、10,11,12,13 検索回路、20 処理部、22 検索処理部、24 結果格納部、26 テーブル生成部、30,200,201,401,402,403,406,408,600,601 検索テーブル、50,51,52,53 メモリ、260 データ取得部、262 検索データ設定部、264 エントリデータ設定部、266 エントリデータ追加設定部。

Claims (12)

  1. 複数のエントリデータが格納される検索テーブルに対して入力された検索キーが一致するか否かを検索する検索回路であって、
    前記検索テーブルに対してバイナリサーチを実行する検索処理部を含み、
    前記エントリデータは、検索データと、前記検索データのプレフィックス長データと、検索結果情報とを含み、
    前記検索処理部は、
    前記バイナリサーチに従って前記検索テーブルから複数回読み出したエントリデータに含まれる検索データと前記プレフィックス長データとで規定される検索データ群の1つの検索データと前記検索キーとが一致するか否かをそれぞれ判断し、
    前記複数回の判断結果に基づいて、前記プレフィックス長データが最大の一致する検索データに対応する検索結果情報を出力する、検索回路。
  2. 前記検索回路は、前記バイナリサーチに従って前記検索テーブルから複数回読み出したエントリデータに含まれる検索データと前記プレフィックス長データとで規定される検索データ群の1つの検索データと前記検索キーとが一致するか否かを判断した結果をそれぞれ格納するための結果格納部をさらに含む、請求項1記載の検索回路。
  3. 複数の検索テーブルが設けられ、
    前記検索処理部は、前記複数の検索テーブルに対してバイナリサーチをそれぞれ実行する、請求項1記載の検索回路。
  4. 前記検索処理部は、前記複数の検索テーブルに対して順番に、あるいは並列にバイナリサーチをそれぞれ実行する請求項3記載の検索回路。
  5. 前記検索回路は、前記複数のエントリデータを生成して前記検索テーブルに格納するためのテーブル生成部をさらに含む、請求項1記載の検索回路。
  6. 前記テーブル生成部は、
    マスクされるビットを含む検索対象データと、前記検索対象データのプレフィックス長データおよび検索結果情報を含むエントリ候補データを取得するデータ取得部と、
    前記データ取得部で取得した前記検索対象データが示す前記検索データ群のうちの1つのデータを前記検索データとして設定する検索データ設定部と、
    前記検索データと、前記プレフィックス長データおよび検索結果情報を関連付けて前記エントリデータとして設定するエントリデータ設定部とを含む、請求項5記載の検索回路。
  7. 前記検索データ設定部は、前記データ取得部で取得した前記検索対象データが示す前記検索データ群のうちの下限値のデータを前記検索データとして設定する、請求項6記載の検索回路。
  8. 前記テーブル生成部は、
    前記検索対象データが示す前記検索データ群に他の検索データが含まれるか否かを判断し、前記他の検索データが含まれる場合には、別のエントリデータを設定するエントリデータ追加設定部をさらに含む、請求項6記載の検索回路。
  9. 前記エントリデータ追加設定部は、
    前記検索対象データが示す前記検索データ群に前記他の検索データが少なくとも1つ以上含まれる場合には、前記他の検索データとの境界値を示すデータを前記検索データとして、前記プレフィックス長データおよび検索結果情報と関連付けて前記別のエントリデータとして設定する、請求項8記載の検索回路。
  10. 前記エントリデータ設定部は、
    前記検索対象データが示す前記検索データ群に他の検索データが含まれるか否かを判断し、前記他の検索データが含まれる場合には、前記検索データと、前記プレフィックス長データおよび検索結果情報とを関連付けて別の検索テーブルの前記エントリデータとして設定する、請求項6記載の検索回路。
  11. 前記検索データ設定部は、前記データ取得部で取得した前記検索対象データが示す前記検索データ群のうち、前記プレフィックス長データが小さい場合には、前記プレフィックス長データが大きい検索データよりも先に前記検索テーブルから読み出されるデータを前記検索データとして設定する、請求項6記載の検索回路。
  12. 前記検索データ設定部は、前記バイナリサーチにより前記検索テーブルが格納するエントリデータを指定するアドレスの範囲の中でプレフィックス長データが大きい検索データが格納されるアドレスの範囲に基づいて、プレフィックス長データが小さい検索データが格納されるアドレスを設定する、請求項11記載の検索回路。
JP2019107258A 2019-06-07 2019-06-07 検索回路 Pending JP2020201656A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019107258A JP2020201656A (ja) 2019-06-07 2019-06-07 検索回路
US16/852,023 US11250003B2 (en) 2019-06-07 2020-04-17 Search circuit
CN202010470782.0A CN112055095A (zh) 2019-06-07 2020-05-28 搜索电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019107258A JP2020201656A (ja) 2019-06-07 2019-06-07 検索回路

Publications (1)

Publication Number Publication Date
JP2020201656A true JP2020201656A (ja) 2020-12-17

Family

ID=73609468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019107258A Pending JP2020201656A (ja) 2019-06-07 2019-06-07 検索回路

Country Status (3)

Country Link
US (1) US11250003B2 (ja)
JP (1) JP2020201656A (ja)
CN (1) CN112055095A (ja)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7031320B2 (en) * 2000-12-22 2006-04-18 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables
WO2003001720A2 (en) * 2001-06-21 2003-01-03 Isc, Inc. Database indexing method and apparatus
JP3813136B2 (ja) * 2003-04-25 2006-08-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造
US7711893B1 (en) * 2004-07-22 2010-05-04 Netlogic Microsystems, Inc. Range code compression method and apparatus for ternary content addressable memory (CAM) devices
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US8358654B1 (en) * 2007-04-26 2013-01-22 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for rule testing
US8954661B2 (en) * 2010-11-02 2015-02-10 Intel Corporation Binary search pipeline
US9626399B2 (en) * 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9917776B2 (en) * 2014-10-16 2018-03-13 Cisco Technology, Inc. Hash-based address matching
JP2017174478A (ja) * 2016-03-23 2017-09-28 ルネサスエレクトロニクス株式会社 半導体装置、検索システムおよび検索方法
WO2018138062A1 (en) * 2017-01-24 2018-08-02 Rockley Photonics Limited Multi-field classifier
JP2019008845A (ja) * 2017-06-22 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
US10936625B2 (en) * 2017-12-27 2021-03-02 International Business Machines Corporation Progressive optimization for implicit cast predicates

Also Published As

Publication number Publication date
US20200387512A1 (en) 2020-12-10
US11250003B2 (en) 2022-02-15
CN112055095A (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
US7418505B2 (en) IP address lookup using either a hashing table or multiple hash functions
JP4614946B2 (ja) 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法
US8880507B2 (en) Longest prefix match using binary search tree
US7715385B2 (en) Default route coding
US6826561B2 (en) Method and apparatus for performing a binary search on an expanded tree
US7630367B2 (en) Approach for fast IP address lookups
US20060248095A1 (en) Efficient RAM lookups by means of compressed keys
US10171419B2 (en) IP route caching with two search stages on prefix length
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
EP3276501B1 (en) Traffic classification method and device, and storage medium
US8848707B2 (en) Method for IP longest prefix match using prefix length sorting
US20170366459A1 (en) Jump on a Match Optimization for Longest Prefix Match using a Binary Search Tree
US10515015B2 (en) Hash table-based mask length computation for longest prefix match caching
CN114884877B (zh) 一种哈希表和HOT相结合的IPv6路由查找方法
CN113315705A (zh) 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置
US20230041395A1 (en) Method and Device for Processing Routing Table Entries
CN109039911B (zh) 一种基于hash查找方式共享ram的方法及系统
JP2020201656A (ja) 検索回路
CN107204926B (zh) 预处理cache的路由快速查找方法
Rojas-Cessa et al. Parallel search trie-based scheme for fast IP lookup
US10476785B2 (en) IP routing search
KR20050043035A (ko) 복수의 해슁 함수를 이용한 ip 어드레스 검색 방법 및하드웨어 구조
Tahmasbi et al. CRTHT: A novel collision-free and storage-efficient hash-based method to find LMP
CN117914784A (zh) 并行查表装置、方法、设备及计算机可读存储介质
Rojas-Cessa et al. Implementation of a parallel-search trie-based scheme for fast IP lookup