JP4727594B2 - コンテンツ・ベースの情報検索アーキテクチャー - Google Patents

コンテンツ・ベースの情報検索アーキテクチャー Download PDF

Info

Publication number
JP4727594B2
JP4727594B2 JP2006552297A JP2006552297A JP4727594B2 JP 4727594 B2 JP4727594 B2 JP 4727594B2 JP 2006552297 A JP2006552297 A JP 2006552297A JP 2006552297 A JP2006552297 A JP 2006552297A JP 4727594 B2 JP4727594 B2 JP 4727594B2
Authority
JP
Japan
Prior art keywords
value
values
encoded
input
input value
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 - Fee Related
Application number
JP2006552297A
Other languages
English (en)
Other versions
JP2007524946A5 (ja
JP2007524946A (ja
Inventor
スリハリ カダンビ、
ジョゼフ キリアン、
プラナヴ エヌ. アシャー、
スリマット ティー. シャクラダー、
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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2007524946A publication Critical patent/JP2007524946A/ja
Publication of JP2007524946A5 publication Critical patent/JP2007524946A5/ja
Application granted granted Critical
Publication of JP4727594B2 publication Critical patent/JP4727594B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)

Description

本発明は、高速な情報検索アーキテクチャーに関する。
本実用特許出願は、「低コストかつ高速の連想記憶装置」(INEXPENSIVE AND FAST CONTENT ADDRESASABLE MEMORY)と題し、その内容は参照によって本明細書に含まれる、2004年2月5日出願の米国仮特許出願第60/541,983号の正式出願であり、その利益を主張する。
アドレスを使用して問い合わせを受ける従来のメモリに対して、連想記憶装置(CAM)はデータを使用して問い合わせを受ける装置である。CAMは、データが存在するか否かを調べるのに、そのコンテンツを検索し、データが存在すれば、該データと関連する情報を出力する。このような記憶装置は、高速な検索が要求されるインターネット・ルーター、プロセッサ・キャッシュ、データベース、および他の状況で用いられる。多くの商用ルーターは、問い合わせがすべてのエントリと一致するかを並行して調べる専用のメモリ・デバイスである3進CAM(TCAM)と呼ばれるCAMデバイスを使用している。TCAMは従来のSRAMあるいはDRAMよりも高価である。TCAMはビット当たり約16個のトランジスタを使用して作られる。したがって、ビット当たり約6個のトランジスタを有するSRAMよりも、およそ2倍から3倍密度が低い。TCAMは、かなりのキャパシタンスを伴う長い「一致ライン」を有し、その結果、その電力キャパシタンスが大きくなり、さらに重要なことに、その速度は相対的に遅くなる。しかし、現在の商用技術では効率的に検索を行うために従来のSRAMを使用する実行可能な技術がないので、TCAMはルーター製造業者にとって依然として魅力的な部品である。
連想記憶装置のように効率的に動作する多種多様な公知のデータ構造が存在し、それぞれ固有の相対的な利点と欠点を有する。たとえば、トライ・ベースの方法は各プレフイックスに対して2値のトライを作成し、2進トライは2種類のノード、すなわち、分岐ノードと要素ノードを有するツリーある。残念ながら、トライ・ベースの方法の拡張性とメモリ利用度は共にアドレス長の関数であり、これはIPv6のような長いアドレスで使用する場合には不利である。二分決定グラフのような他のデータ構造は、それらが固有の従属性を有し、大容量のメモリとアドレス長に拡張が容易ではないために、ハードウェアで合理的に実現できない。フィールド・プログラマブル・ゲートアレイ(FPGA)ベースの方法は、連想記憶装置を実現するために、メモリおよび適合性のある論理ブロック・リソースを使用する。これらの方法は、素早いプロトタイピングには良いが、大きなプレフイックスの高速処理の良い候補ではない。最近、ブルーム・フィルターがネットワーク・ルーターに対して提案されており、このブルーム・フィルターは、誤ポジティブ率(false positive rate)の小さいメンバーシップ問い合わせをサポートする公知のデータ構造である。 Dharmapurikar S, K.P., Taylor, D. E.の「ブルーム・フィルターを使用する最長プレフイックス・マッチング」(Longest Prefix Matching Using Bloom Filters)、Proceedings of the 2003 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications、2003年8月、を参照されたい。別個のブルーム・フィルターとハッシュ・テーブルが個々のプレフイックス長のそれぞれに対して維持され、入力問い合わせが、すべてのブルーム・フィルターにおいてメンバーシップをチェックされる。結果としてポジティブなメンバーシップになる任意のブルーム・フィルターは、そのプレフイックス長に対応するハッシュ・テーブルに入力問い合わせを転送する。この方法の欠点として、複数のハッシュ・テーブルが結果的に衝突し、したがって、予想できない性能が生じることがあることである。さらに、複数のハッシュ・テーブルは、最長プレフイックス・マッチングを行うために、プレフイックス長の降順に順次問い合わせされる。他の方法は、所与の数のプレフイックスに対して準最適な深度を有するバイナリ探索ツリーを作ることであり、その結果最悪の場合の検索時間に限界があり決定的(deterministic)ある。 P. Gupta、B. Prabhakar、および S. Boyd、の「最悪の場合の性能に限界がある準最適なルーティング検索」(Near-Optimal Routing Lookups with Bounded Worst Case Performance)、Proc. Infocom、Vol. 3、pp.1184-92、2000年3月、を参照されたい。残念ながら、この方法は異なるプレフイックスに対して確率に依存している。
したがって、既存の連想記憶装置の構造よりも高速、廉価、かつ拡張容易な他の構造に対する必要性が存在する。SRAMあるいはDRAMのような従来のメモリを利用できる実用的なコンテンツ・ベースの情報検索メカニズムに対する必要性も存在する。
従来の低価格なメモリ部品を利用しつつ、一定の問い合わせ時間で高速な検索を実現できるコンテンツ・ベースの情報検索アーキテクチャーがここに開示される。本発明の実施態様によれば、本アーキテクチャーは、ハッシング・モジュール、符号化された値の第1の表、検索値の第2の表、および関連する入力値の第3の表を有する。入力値は、第1の表中の符号化された値の位置に対応している複数のハッシュされた値を生成するために何回もハッシュされる。入力値から得られた符号化された値は、出力値が任意の単一の符号化された値から回復できないように、出力値を符号化する。たとえば、符号化された値は、出力値を生成するために、ビット毎の排他的論理和(XOR)演算を使用して複数の値を結合することによって、符号化できる。出力値は、第2の表中の検索値と第3の表中の関連する入力値を選択するよう働きをする。符号化された値の表は、出力値が第2および第3の表中のアドレスであるように構成することができる。第3の表中の関連する入力値が入力値と同じであれば、入力値は検索集合の一部であり、選択された検索値は入力値に対応する。第3の表中の関連する入力値が入力値と同じでなければ、入力値は検索集合の中には存在しない。第3の表はフィルターリングを行うために使用可能であり、符号化された値の第1の表は第2および第3の表中に索引付けを行うために使用される。第3の表は省略可能であるが、誤ポジティブの可能性がある。
本発明の他の態様の他の実施態様によれば、前記表群は、各バンクがハッシング・モジュールによって生成された複数のハッシュされた値の1つと関連する複数のバンクに分割できる。これは有利なことに、アクセス速度を改善し、マルチポート・メモリの必要性を不要にする。さらに、情報検索アーキテクチャーの異なる部分、たとえば、ハッシング・モジュールと符号化された値の表は、異なる段階にパイプライン方式で接続可能であり、その結果、従来のランダム・アクセス・メモリ・チップを使用した実現を可能にする。本アーキテクチャーはストリーム・ベースのデータ・フローを使用することが可能であり、深いパイプライン方式によって非常に高いスループットを実現することができる。
本発明の他の実施態様によれば、検索値の表と、関連する入力値の表は符号化された値の表より小さくすることが可能であり、その結果、
Figure 0004727594
を検索値の数として、数符号化された表の幅は少なくとも
Figure 0004727594
である。これは有利なことに、表に使われるメモリを減らす。符号化された値の表は、検索値の表に対する順次アドレス生成を使用して構成されるのが好ましい。
本発明の他の実施態様によれば、入力値をハッシンク・モジュールに渡す前に、入力値に対してプレフィルターリングを行うフィルターリング・モジュールを設けることができる。フィルターリング・モジュールは、入力値が入力値の何らかのフィルターリングされた集合のメンバーではない場合にのみ、入力値をハッシング・モジュールに転送する。たとえば、限定されるものではないが、入力値のフィルターリングされた集合は、検索集合のメンバーではないと認識される入力値とすることができる。これは、情報検索アーキテクチャーの中の表が、入力値が検索集合の一部である場合にのみアクセスされるので、大幅な電力削減につながることができる。たとえば、入力値が第3の表を使用することによって検索集合の一部ではないと認識されるとき、入力値のフィルターリングされた集合に値を加えることができる。フィルターリング・モジュールは他の目的のためにも使用できる。たとえば、フィルターリング・モジュールは、一定の入力値を、ハッシング・モジュールに転送される他のより有利な値の中に再配置するように構成できる。入力値のフィルターリングされた集合は、符号化された値の第1の表の構築を容易にするように選択できる。たとえば、入力値が最後に、符号化された値の第1の表中の1つの単集合の位置にも対応しない複数のハッシュされた値を生成すると、これは表の再構築を複雑にすることがある。この値を入力値のフィルターリングされた集合に加え、その値をスピルオーバー(spillover)・テーブルで別に処理するのが有利なことがある。
本発明の他の実施態様によれば、スピルオーバー・テーブルは、アーキテクチャーによって処理されるべきでないのが好ましい入力値を処理するように、情報検索アーキテクチャーと結合することが可能である。たとえば、スピルオーバー・テーブルは、アーキテクチャーの設定を困難にする、あるいは誤ポジティブのようにアーキテクチャーに対する困難の原因となる入力値のエントリを有する恐れがことがある。面倒な入力値は、スピルオーバー・テーブルによって、情報検索アーキテクチャーにとってもっと容易に処理できる値に再配置することができる。誤ポジティブをもたらす値のような、情報検索アーキテクチャーによって問題であると判別された値は、スピルオーバー・テーブルに帰還し、電力節減のために遮断することが可能である。
本アーキテクチャーの1つの有利な用途はネットワーク・ルーターである。ネットワーク・ルーターは、パケット・ヘッダに対して最長のプレフイックス・マッチングを行える複数のフィルターを実現するこのようなアーキテクチャーを使用して容易に構築することができる。ここで、入力値は予め指定された長さのプレフイックスであり、検索値は転送情報である。有利な構造は、並列に動作する各プレフイックス長に対して1つずつ、複数のフィルターを使用することである。これらフィルターのいくつかが一致を示す場合には、最長のプレフイックス一致を示すフィルターから転送情報を選択するために、プライオリティ・エンコーダを使用することができる。これらフィルターは対で実現でき、この場合、アップデート・フィルターは、オフラインで更新し、検索を行っているフィルターと交換可能である。
ここに開示した、コンテンツ・ベースの情報検索アーキテクチャーは、ハードウェアあるいはソフトウェアあるいは両者の有利な組み合わせで容易に実現できる。インプリメンテーションは有利なことに、埋込みメモリを使用する単一チップの解決法、あるいは外付けのSRAM/DRAMを使用するマルチチップの解決法で具体化できる。上述したアーキテクチャーは、関連する技術に対して多くの重要な利点を有する。上述のように、本構造はSRAMあるいはDRAMのような標準の廉価なメモリ部品を使用することが可能であり、その結果製造が容易である。本構造は、ハードウェア依存性のないストリーミング・データを使用し、また、高スループットを得るために深いパイプライン方式で接続可能であるから、高速が可能である。さらに、本構造は等価なTCAM部品よりも消費電力が著しく少ない。本発明の以上のまたは他の利点は、以下の詳細な説明と添付図面を参照することによって当業者にとって明白であろう。
図1は、本発明の一実施形態によるコンテンツ・ベース情報検索アーキテクチャーを示す図である。図1に示すように、入力値101が本アーキテクチャーによって受信され、処理される。入力値101の処理にもとづいて出力されるものは、表120から検索された検索値102、あるいは、入力値101が検索集合(lookup set)のメンバーではないとの信号103、104のいずれかである。
図1には、3つの表110、120、170があり、その構造と動作をここにおいてより詳細に説明する。図1の各表は同数のエントリを有するが、ここにさらに説明し、また本発明の他の実施形態によるように、各表は異なる数のエントリを有することもできる。表120は、ここではルックアップ・テーブルと呼ばれ、それぞれが検索値を格納する複数のエントリを有する。たとえばルーターの用途の場合には、検索値は異なるデスティネーション・アドレス・プレフイックスと組み合わされた次ホップ情報であってよい。表170は、ここでは誤ポジティブ表(あるいはフィルターリング・テーブル)と呼ばれ、表120の検索値に対応する入力値を格納する複数のエントリを有する。表110は、ここでは「符号化」表と呼ばれる。符号化表110は、以下により詳細に説明するように、特定の予め定義された検索集合内のすべての有効な入力値と、ルックアップ・テーブル120内の固有の位置との間に1対1のマッピングが存在するように構成される。
入力値101と関連する値102を検索するために、入力値101は、
Figure 0004727594
個の異なる値を生成するように、130において
Figure 0004727594
回ハッシュされる。ハッシュ130は、任意の有利なハッシュ関数を使用して実現可能である。たとえば、そして限定することなく、良好な疑似ランダム行動を有する非常に有効なハッシュを得るために、循環シフト、XOR、およびADDの組み合わせが使用できる。
Figure 0004727594
個の異なるハッシュ値、
Figure 0004727594
は、それぞれ符号化表110内の位置を指している。各
Figure 0004727594
は間隔
Figure 0004727594
内にあり、ここで
Figure 0004727594
は符号化表110およびルックアップ・テーブル120内のエントリの数である。符号化表110内の各エントリは、値
Figure 0004727594
を格納している。
Figure 0004727594
個のハッシュ値によって選択された値
Figure 0004727594
は、次式の値を得るために、140においてビットごとに排他的論理和演算される。
Figure 0004727594
この値は、入力値101が検索集合の一部であるか否かを調べるために、および/または、ルックアップ・テーブル120内の入力値101と関連する検索値を選択するために使用できる。これを図1に示す。図1において、この値は150において調べることができる。この値は、
Figure 0004727594
個のハッシュ関数の1つのインデックス、たとえば
Figure 0004727594
を表し、インデックス
Figure 0004727594
がハッシュ関数の数より大きいか否かを判定することによってチェックされる。もしそうであれば、入力
Figure 0004727594
はルックアップ・テーブルに格納されている集合のメンバーではなく、したがって、表には存在せず、信号103が生成される。他方、インデックス
Figure 0004727594
が有効なインデックスを指していれば、
Figure 0004727594
Figure 0004727594
でハッシュされるとき、インデックス
Figure 0004727594
Figure 0004727594
が格納される第2の表120の中にアドレス
Figure 0004727594
を生成する。ルックアップ・テーブル120内のアドレス
Figure 0004727594
は、160において正しいハッシュ関数の出力を選択するために、該インデックスを使用することによって得られる。次に、ルックアップ・テーブル120内のアドレス
Figure 0004727594
は、入力値
Figure 0004727594
と組み合わされた検索値
Figure 0004727594
を検索するために、使用することができる。
しかし、以下に説明するように、入力値101が検索集合の一部ではないのに、150におけるチェックに合格する確率が少しある。したがって、ルックアップ・テーブル120と同数のエントリを有することができる第3の表170が備えられている。符号化表110がセツトアツプされると、検索集合内の実際の入力値を表170に格納できる。入力値
Figure 0004727594
の場合、
Figure 0004727594
に対応するハッシュ関数インデックスを符号化表110中に符号化でき、検索情報
Figure 0004727594
はルックアップ・テーブル120のアドレス
Figure 0004727594
に格納でき、
Figure 0004727594
自身は表170のアドレス
Figure 0004727594
に格納できる。ヘッダ
Figure 0004727594
に対する検索がルックアップ・テーブル120の中に有効なポインタを生成すれば、
Figure 0004727594
は180において表170に格納された実際の関連する入力値と比較される。
Figure 0004727594
が異なっていれば、検索は誤ポジティブであり、信号104が生成される。
領域
Figure 0004727594
と範囲
Figure 0004727594
が所与のものとすると、図1に示す構造は、
Figure 0004727594
の任意の要素
Figure 0004727594
についての問合せが
Figure 0004727594
の検索値をもたらすように、任意の関数を符号化する
Figure 0004727594
働きをする。領域
Figure 0004727594
内にない任意の
Figure 0004727594
は、誤ポジティブなしとフラグを付けられる。
符号化表110の構築は、多くの異なる方法で進行することができる。入力値
Figure 0004727594
と、関連するインデックス値
Figure 0004727594
を所与のものとすれば、
Figure 0004727594
に対する下記の式は符号化表110の値に対する線形の制約条件を定めている。入力値の集合と、関連するインデックスは線形の制約条件の系(system of linear constraints)を定め、これらの線形の制約条件は、線形の制約条件を解く文献で公知の多くの方法の任意のものを使用して解くことが可能である。あるいは、非常に高い確率で動作する下記の非常に高速な方法を使用できる。符号化表110は、検索集合内のすべての要素
Figure 0004727594
とルックアップ・テーブル120内の固有のインデックス
Figure 0004727594
の間に1対1のマッピングが存在するように、構築される。このマッチング値
Figure 0004727594
は、ハッシング
Figure 0004727594
によって生成されたハッシュされた位置
Figure 0004727594
の1つであることが必要である。表エントリの任意の設定が所与のものとすれば、
Figure 0004727594
に関連する線形の制約条件は、次式を設定することによって満たすことが可能である。
Figure 0004727594
しかし、
Figure 0004727594
の符号化表11内のエントリを変えると、制約条件が既に満たされている異なる入力値に対する線形の制約条件の違反を起こすことがある。これを避けるために、入力要素の集合に対して順序付けが計算されるべきである。この順序付けは、他の入力値
Figure 0004727594
が順序において
Figure 0004727594
より先行していれば
Figure 0004727594
に関連するハッシュ値のいずれもが
Figure 0004727594
と等しくないという性質を有している。このようなマッチングと順序付けが所与のものとすれば、順序に従う入力要素に対する線形の制約条件は満たされることになる。さらに、各々の
Figure 0004727594
に対する制約条件は、既に満たされている制約条件を破ることなく
Figure 0004727594
を修正することによってのみ満たされることになる。この処理の終了時に、線形の制約条件は全て満たされることになる。
順序付けと
Figure 0004727594
は、以下のように計算することができる。
Figure 0004727594
を入力要素の集合であるとする。符号化表内の位置
Figure 0004727594
は、それが
Figure 0004727594
の中の正確に1つの
Figure 0004727594
に対するハッシュされた位置であれば、
Figure 0004727594
に対して単集合の位置であると言える。
Figure 0004727594
は、ハッシュされた位置が
Figure 0004727594
に対する単集合位置を含む
Figure 0004727594
内の
Figure 0004727594
からなる
Figure 0004727594
と、ハッシュされた位置が
Figure 0004727594
に対する単集合位置を含まない
Figure 0004727594
内の
Figure 0004727594
からなる
Figure 0004727594
の、2つの部分に分割することができる。
Figure 0004727594
内の各
Figure 0004727594
に対して、
Figure 0004727594
は単集合位置の1つであると設定される。
Figure 0004727594
内の各入力値は、
Figure 0004727594
内のすべての入力値の後であるように順序付けられる。
Figure 0004727594
内の順序付けは任意でよい。次に、
Figure 0004727594
に対するマッチングと順序付けは、再帰的に確認することができる。したがって、
Figure 0004727594
Figure 0004727594
の2つの集合に分割できる。
Figure 0004727594
はハッシュされた位置が
Figure 0004727594
に対する単集合位置を含む
Figure 0004727594
内の
Figure 0004727594
からなり、
Figure 0004727594
Figure 0004727594
の残りの要素からなる。
Figure 0004727594
に対して単集合位置ではない位置が、
Figure 0004727594
に対しては単集合位置である場合があることに留意すべきである。
Figure 0004727594
内のすべての入力値
Figure 0004727594
にマッチング値
Figure 0004727594
が与えられるまで、処理は続く。もしも処理の早い段階で、単集合位置にハッシュする要素が確認されなければ、処理は失敗したと見なされる。しかし、符号化表が十分に大きければ、このようなマッチングと順序付けが存在し、処理によって高い確率で確認されるであろう。実際、符号化表の大きさは、何らかの初期サイズ、たとえば、入力値の数のある一定の倍数に設定可能である。マッチングが確認されなければ、マッチングが確認されるまで、表のサイズを繰り返し大きくしてもよい。実際、これは、所与のメモリ・チップの異なる部分を割り当てることによって行われる。ハッシュされた位置の間の偶然の一致のために、十分に大きいサイズの表でも処理が失敗する可能性が僅かに存在する。この場合、使用されたハッシュ関数を変更することが可能である。シード(seed)を有するハッシュ関数を使用することができる。値を検索するには、符号化表の構築の間に使用したハッシュ関数と同じハッシュ関数を使用しなければならないことに留意されたい。
上記のすべての方法が失敗すれば、いくつかの入力値を抜かしてもよい。具体的にいうと、2つ入力ポインタを有する表
Figure 0004727594
内のエントリをチェックでき、入力ポインタの原因である要素の1つは要素の集合から除去できる。これは、
Figure 0004727594
をある
Figure 0004727594
に対する
Figure 0004727594
にし、その結果、セツトアツプ手順の収束の機会を増大させる。これは、利用可能なメモリに適合できないヘッダが除外されるTCAMに類似していることに留意されたい。本アーキテクチャーは、除外した入力値を報告し、それらを特殊な場合として処理することができる。以下にさらに説明するように、このような入力値はスピルオーバー・テーブルで処理できる。
図1に示すアーキテクチャーの1つの利点は、誤ポジティブを除外することができることである。誤ポジティブ表170とその関連する論理は省略可能であり、その場合には、僅かな確率で誤ポジティブを可能にする図2に示すアーキテクチャーとなる。図1のアーキテクチャーの実効速度は、追加の表170が誤ポジティブを除外するために使用されるか否かとは無関係であることに留意すべきである。
誤ポジティブは、情報検索アーキテクチャーにとって許容可能な条件であってもなくてもよい。誤ポジティブが発生する場合には、検索結果は、考えられる検索値の1つのランダムな選択であることに留意すべきである。このように、このような検索メカニズムを使用するルーターは、デフォルトのデスティネーションではなくランダムなデスティネーションに転送情報がないパケットを送信することになる。このような動作は、帯域制限された経路、たとえば、デスティネーションがサービス品質を指定されたパケットのみに使用されることを予想した経路に対して潜在的に余分なトラフィックを加えることがある。幸いにも、この確率は小さい。完全にランダムなハッシュ関数の場合、符号化表210が
Figure 0004727594
ビット幅であり、かつ
Figure 0004727594
個のハッシュ関数を有するならば、誤ポジティブの確率に対する理論的上限は次式で示すことができる。
Figure 0004727594
したがって、4つのハッシュ関数を有する32ビット幅の表の場合、誤ポジティブ率の限界は10億中4、すなわち、表に存在しない10億ヘッダごとに4ヘッダが誤ポジティブの恐れがあるが、他のヘッダは表に存在しないとしてフラグを正確に立てられるであろう。さらに、連続した誤ポジティブの確率は指数関数的に減少する。言い換えれば、所与の入力値が2つ以上の連続した誤ポジティブに遭遇する見込みは全くない。さらに、誤ポジティブに遭遇した2個のパケット・ヘッダ値が、帯域制限された同じ経路に沿って送信される見込みもない。
図1および図2に示す情報検索アーキテクチャーは、図4から図6に示すように、ネットワーク・ルーターへの応用に特に有利である。図4は、本発明のこの態様の実施形態によるネットワーク・ルーター400のアーキテクチャーを示す。
ルーター400は、インターネット・プロトコル(IP)データグラムのようなパケットを転送するために、最長プレフイックスマッチング(LPM)を使用するように構成されている。ルーティング表は、長さが
Figure 0004727594
であり、IPアドレスの最初の
Figure 0004727594
ビットからなる複数のプレフイックスを処理するようにセットアップされている。より短いプレフイックスはより長いプレフイックスを含むことが可能である、すなわち、より長いプレフイックスはより短いプレフイックスの転送情報を改良する(refine)ことが可能である。したがって、検索が、入力IPアドレスがより長い考えられるプレフイックスと一致するか否かを判定するように実行されなければならない。図4の基本的なアーキテクチャーは、各々固有のプレフイックス長に対して検索フィルター411,...415を有し、各検索フィルターは上述のコンテンツ・ベース情報検索アーキテクチャーにもとづいている。検索フィルター411,...415は、それらの指定された長さに対応するプレフイックスでセットアップされる。動作中、入力問い合わせ401はすべてのフィルター411,...415に並行して送られ、各フィルター411,...415からの結果はプライオリティ・エンコーダ440に送られる。いくつかのフィルターは「肯定出力」(すなわち、少ない誤ポジティブ確率でプレフイックスとの一致を示す)を表示するが、他のフィルターは肯定出力を表示しない。一致を示すフィルターの中から、最長のプレフイックスに対応する出力が、入力問い合わせに対する転送情報として使用される。
通常の転送動作に加えて、ルーターはそれらのテーブルを頻繁に更新する必要がある。エントリは連続的に除去され、他のエントリが加えられる。経路選択の更新を行うためには、フィルター421,...425の他の(平行な)集合を保持することが有利である。これらのフィルター421,...425はアップデート・テーブルと呼ばれ、他のフィルター411,...415は転送テーブルと呼ばれる。個々のプレフイックス長は、1つのアップデート・テーブルと1つの転送テーブルを有する。転送テーブルは能動的にパケットを転送し、アップデート・テーブルはルーティング・アップデートをオフラインで実行する。十分な数の更新が行われると、テーブルの役割は交換することができる。アップデート・テーブルは「オンラインにされ」、すなわち、転送テーブルにされ、転送テーブルはアップデート・テーブルの役目をする。2つのテーブル内のエントリは、交換の時点で同一であるべきことに留意されたい。これを保証するために、転送テーブルは交換の前にアップデート・テーブルからすべてのエントリを更新するべきである。
ネットワーク・ルーターにおいては、要素は常時除去され、かつ追加される。ルーター400への更新は、ハードウェアとソフトウェア技術の組み合わせを使用して行うことが可能である。たとえば、上記の連想記憶装置がヘッダの転送情報を追加し、除去し、変更することを可能にするために、次の方式が使用できる。
ヘッダの追加
新しいヘッダ
Figure 0004727594
が、いくつかの要素を使用して既にセツトアツプされている検索フィルターに追加されなければならない場合には、
Figure 0004727594
が確認されなければならない。もし
Figure 0004727594
が、表内にハッシュすべき他の
Figure 0004727594
も存在しないハッシュ値
Figure 0004727594
を有するならば、
Figure 0004727594
Figure 0004727594
に対する有望な候補である。しかし、
Figure 0004727594
がこのようなハッシュ値を有しなければ、フィルターを再びセットアップする必要がある(あるいは、後に述べるように、それをスピルオーバー・テーブルに挿入してもよい。)これは、埋め込みプロセッサあるいは付属プロセッサを使用して、たとえばソフトウェアで、行うことが可能である。これはアップデート・テーブルを使用してオフラインで行うことも可能であり、したがって、検索のスループットに影響を与える必要はない。
ヘッダの除去
要素の除去は、ソフトウェアの支援無しで可能である。各々のフィルター・テーブル・エントリは、「ダーティ・ビット(dirty bit)」および、そのエントリを指向するハッシュされた位置の番号のカウントを使用して増大することができる。要素
Figure 0004727594
が除去される場合、
Figure 0004727594
のすべてのハッシュされた位置に対応するダーティ・ビットはオンされる。同時に、該カウントはデクリメントされ、
Figure 0004727594
のエントリに対して1つ少ないハッシュされた位置点をを示す。要素
Figure 0004727594
の検索は、
Figure 0004727594
のハッシュされた位置のすべてのダーティ・ビットが1ではないことを保証しなければならない。新しい要素
Figure 0004727594
が表に追加された場合、そのハッシュされた位置のすべては、そのダーティ・ビットをリセットしなければならない。要素の除去は、追加される必要がある要素に対する
Figure 0004727594
を発見する確率を増加させることに留意されたい。
転送情報の変更
要素
Figure 0004727594
に対する転送情報の変更は、図1に示す実施形態では、ささいなことである。データ構造を別々な表110と120に分離することは、それが、符号化表110に影響を与えずに、ルックアップ・テーブル120を容易に更新することを可能にする点で有利である。ヘッダに対する転送情報を変更する必要があれば、ルックアップ・テーブル120内の関連する位置を更新することだけが必要である。これは、たとえば、ハードウェアで、容易に行える。
Figure 0004727594
が符号化表110に符号化される場合にのみ、構造全体を再度セットアップすることが必要である。
図5は、図1に示す情報検索アーキテクチャーの構造を利用する、本発明の他の実施形態による、ネットワーク・ルーター500の他のアーキテクチャーを示す。各プレフイックス長に対してデスティネーション・アドレス検索を完全に行って転送テーブル・フィルターを実現するよりも、プライオリティ・エンコーダ560が最長プレフイックス一致を選択した後にのみ関連するルックアップ・テーブル521,...または525上で検索を行うことが有利である。したがって、検索フィルターは符号化表511,...515、ならびに、望む場合には、誤ポジティブ表531,...535を実行することだけが必要である。さらに、図5に示すように、アップデート・テーブルは有利なことに、符号化表541,...545のオフライン版を使用して実行することのみが必要である。以下にさらに詳細に開示し説明するように、ルックアップ・テーブルは、オンライン/オフラインのアーキテクチャーに対してルックアップ・テーブルを2重化する必要のない方法で、符号化された表よりも小さく構築できる。
最悪の場合には、フィルターの数はネットワーク・アドレスのビット数と等しいであろう。たとえば、IPv6の場合、これは128個のフィルターとなる。しかし、この数は減らすことが可能である。たとえば、長いプレフイックスを収容するために短いプレフイックスを拡張するプレフイックス拡張がいくつかのプレフイックス長を除外するために使用できる。あるいは、極めて少数のメンバーでプレフイックス長を置換するために、簡単なハッシュ・テーブルあるいは直接検索アレイが使用できる。実際には、個々のプレフイックス長の数は僅かである。たとえば、各アドレスが32ビットであるIPv4は、およそ8個ないし10個の能動的なプレフイックス長を有し、IPv6では通常14個の個々のプレフイックス長を記録することが明らかになっている。これらは、上述の方式を使用して、さらに削減できる。
所与のルーターにおいて、すべてのプレフイックス長が等しい頻度では発生するとは限らない。通常、少数のプレフイックス多くの時間に発生し、いくつかのプレフイックス長は全く発生しない。したがって、いくつかのフィルターが相対的に「過密」である可能性がある。フィルターを設定し誤ポジティブ率を維持するために、いくつかのフィルターは他のフィルターよりも多くのメモリを必要とする。すべてのフィルター・チップに等しく近接して基板上にDRAMメモリを配置することは有利であるかもしれない。ルーターの構成の間に、すなわち、始動の前に、特定のフィルターにメモリ・バンクを適切に割り当てるために、IPアドレスのプロファイルを使用することができる。したがって、頻度の高いプレフイックス長を処理するフィルターに多くのバンクを割り当て、他のフィルターには少数のバンクを割り当てることが可能である。これは、経路選択アップデートの間に、動的に変更可能であることに留意されたい。たとえば、特定のフィルターのサイズが大きくなり他のフィルターのサイズが小さくなれば、いくつかのメモリ・バンクを「再割り当てする」ことができる。このようにして、基板は最高の自由度を保持するために実行中に再構成できる。図6は、関連するプロセッサ670および他の関連する回路に加えて、従来のDRAM651,...,654を使用し、上述のコンテンツ・ベースの情報検索アーキテクチャーを実行するいくつかの連想記憶装置641,...,644を示すライン・カード600のアーキテクチャーの例を示している。
図1および図2に示すアーキテクチャーは、図3に示すように、セグメント化されたメモリと細粒度パイプライン方式(fine-grained pipelining)を利用することによって、さらに最適化してもよい。
図1のように、入力値301は、
Figure 0004727594
個の異なる値を作るために、330において
Figure 0004727594
回ハッシュされる。しかし、
Figure 0004727594
個の異なるハッシュ値は、図1の110のような1つの一体の符号化表内の位置を指していない。高速なメモリ・アクセス速度を維持するために、各メモリ・バンクに対す読み出しおよび書き込みポートの数を減らすことが望ましい。図3に示すように、アーキテクチャー内の各表のメモリを
Figure 0004727594
個またはそれよりも多いバンクに分配することが有利なことがある。ここで、
Figure 0004727594
はハッシュ関数の数である。各ハッシュ関数は固有のメモリ・セグメントを示し、したがって、特定のバンクにアクセスする必要がある。同じように、符号化表310内の各バンク311,312,....315は、正確に1つの読み出しおよび書き込みポート(すなわち、標準のメモリ部品のように)のみを有する必要があり、したがって、マルチポート・メモリを不要にし、アクセス・スピードを改善する。この構造が、誤ポジティブ率あるいは所要のメモリ・サイズに不利な影響を与えないことはシミュレーションから示すことができる。
細粒度パイプライン方式のハードウェア・アーキテクチャーを生成するために、情報検索アーキテクチャーの構造を利用することも可能である。図3は、ハードウェアがパイプラインで接続される異なる段階を示す。図3に示すように、トライあるいはハッシュ・テーブルのハードウェア実現と異なり、この方法には依存あるいは不確定な衝突連鎖がない。ハードウェア実現は、データのストリーミングを可能にし、高度にパイプラインで接続されたインプリメンテーションを可能にし、またパイプラインで接続されたメモリ・アクセスを可能にする。したがって、メモリは従来のオフチップDRAMを使用して実現できる。毎秒4億回を超えるアクセスの有効スループットを可能にするダブル・データ・レートのDRAMおよびRAMBUSメモリは、魅力的な選択である。
ハッシュ関数およびXOR計算も、パイプライン方式としてもよい。図13は、ストリング・ハッシュ関数のインプリメンテーションと、考えられるパイプライン方式のインプリメンテーションを示す。1つのオペランドが定数であるので、乗算器は単純化されている。さらに、乗算器も同様にパイプライン方式としてもよい。複数のプレフイックスは異なる長さであるので、短いプレフイックス上で動作しているハッシュ関数は、他のハッシュ関数と「歩調を揃える」ために追加の遅延段階を必要とすることに留意されたい。この特徴は、ハッシュ関数に対して非常に有効なストリーム・ベースのアーキテクチャーを設計するために、使用することができる。図13は、ストリングハッシュ関数と、i’番目のハッシュ関数のためのパイプライン方式の実現例を示す。
本アーキテクチャーのハードウェア・インプリメンテーションで使用されるメモリの量は、埋め込みメモリとオフチップ・メモリとのトレードオフを決定するための重要な事項である。図1に示すアーキテクチャーのメモリ・サイズは、符号化表110とルックアップ・テーブル120、さらに、もし存在すればヘッダ・テーブル170の合成されたサイズである。符号化表110は、検索構造をセットアップするのを可能にするのに必要なだけ大きくする必要がある、すなわち、すべての要素は一致τを持たねばならない。さらに、符号化表110の幅
Figure 0004727594
は、誤ポジティブ率(これは、上述のように、
Figure 0004727594
に逆比例する)を減少させるために必要なだけ大きくするべきである。500,000個のエントリを含むセグメント化されたメモリを使用する実施形態は、それぞれ24ビット幅の百万個のエントリを符号化表110内に有するであろう。ルックアップ・テーブル120も、それぞれ対応する検索情報を保有している百万個のエントリを有するであろう(以下に説明する、小規模なルックアップ・テーブルのための実施形態が使用されない限り)。検索情報は通常小さい、すなわち8ビットであると仮定して、2つのテーブルを合計して約4MBであると予想できる。最近のASICおよびメモリ技術を使用して、メモリは埋め込みSRAMとしてオンチップで実現することが可能である。より多くのメモリが必要であれば、(たとえば、より多くのエントリをフィルターに格納する必要があれば)オフチップDRAMを使用してもよい。上述のように、ストリーミング・データおよびパイプライン方式のインプリメンテーションは、ダブル・データ・レートDRAMの使用が高スループットを達成することを可能にする。
メモリの使用量を減らす技術は、図1および図2に示すアーキテクチャーを、2つの表ではなく、符号化表とルックアップ・テーブルの単一の表を用いて実現することである。2つの表があれば、要素と関連する検索値を更新するフレキシビリティがもたらされる。たとえば、ネットワークの用途においてIPアドレスの転送情報を更新することのみが必要であれば、ルックアップ・テーブル120内の対応するエントリのみを修正する必要がある。しかし、多くのIPルートにおいて、更新は多くの場合新しいアドレスの挿入、あるいは古いアドレスの削除を伴う。もしそうならば、図1のルックアップ・テーブル120は不要にできる。代わりに、符号化表110は実際の値を使用して構成することができ、得られた値が正しい検索をもたらすように、他のエントリと適切に排他的論理和演算をすることができる。この技術は、メモリの25%を節約することができる。
メモリの使用量を減らす他の技術が図7Aおよび7Bに示されている。図7Aは、図1に関して既に説明したように、ルックアップ・テーブル720と誤ポジティブ表770が符号化表710と正確に同じ深度である実施形態を示している。それぞれが
Figure 0004727594
個のエントリを有し、符号化表は
Figure 0004727594
の幅を有する。ここで、
Figure 0004727594
は格納する必要があるエントリの数であり、
Figure 0004727594
はハッシュ関数の数である。本発明の他の実施形態にしたがって、および図7Bを参照すると、符号化表は有利な方法でそのサイズを変更することができる。ハッシュ関数を使用してインデックスをルックアップ・テーブルに供給する代わりに、符号化表(図7Bの715)は、ルックアップ・テーブル(図7Bの725)の中にインデックス全体を格納することができる。符号化表715は少し大きくなるが、ルックアップ・テーブル725と誤ポジティブ表775のサイズは共に小さくする。この結果、メモリをかなり節約することになる。
符号化表715のセットアップは、図1および図2に対して既に説明したのと類似の方法で進行することができる。主な相違は、アドレス・ジェネレータがルックアップ・テーブル725のために維持されることである。アドレス・ジェネレータは、零に初期化されるカウンタとして容易に実現できる。要素
Figure 0004727594
が符号化表715に加えられると、アドレス・ジェネレータからのアドレスは、
Figure 0004727594
に対するマッチング位置
Figure 0004727594
へと符号化される。これは、次のホップ情報、すなわち、より一般的には
Figure 0004727594
が格納されるルックアップ・テーブル725内のアドレスを表している。
Figure 0004727594
が一旦行われると、アドレス・ジェネレータは次の要素のために増分される。
ルックアップ・テーブル725に対してアドレスを順次生成させることの重要な利点は、上記のネットワーク・アプリケーションにおけるオフライン・フィルター用のルックアップ・テーブルと誤ポジティブ表を二重化することが不要になることである。この理由は、ルックアップ・テーブルと誤ポジティブ表に対する変更は非常に軽微でありく、表の2重化を必要としないからである。最悪の場合に、要素
Figure 0004727594
を加える必要があるとき、転送テーブル全体をセットアップする必要がある。既に表中にある要素に対するルックアップ・テーブル・インデックスは保持することができる。このように、ルックアップ・テーブルおよび誤ポジティブ表中の変更の必要がある唯一のエントリは、
Figure 0004727594
に対するエントリである。この変更は簡単であり、能動的なルックアップ・テーブルおよび能動的な誤ポジティブ表に直接行うことが可能である。
図7Bに示すように、そして本発明の他の実施形態によれば、符号化表715は索引付けメカニズムを担当し、フィルターリング・テーブル775はフィルターリングを担当する。したがって、これら表は検索の都度アクセスされ、これは消費電力に悪影響を与えることがある。
図8は、本発明の他の実施形態による他のアーキテクチャーを示す。ヘッダ・テーブルへのアクセスを制限するために、フィルター890が情報検索アーキテクチャー800の前に挿入される。フィルター890は、たとえば、ブルーム・フィルターのような、検索集合に対してメンバーシップ問い合わせを行う任意の有利なメカニズムを使用して実現できる。 Bloom B. H.の「許容誤差を有するハッシュ・コーディングにおける空間/時間トレードオフ」(Space/Time Trade-offs in Hash Coding with Allowable Errors)、Communications of the ACM, 13(7), p. 422-26 (1970年7月)を参照されたい。フィルター890は、プレフィルターリングを行い、表への唯一のアクセスがテーブルに存在すべきエントリ(ならびに、プレフィルター890によって許容されることがあるどんな誤ポジティブでも)であることを保証する。上述の最長プレフイックスマッチング用途の場合、この実施形態は追加の利益をもたらす。各検索は、存在するとしても、少数のプレフイックスにのみ存在している可能性がある。したがって、プレフイックス・フィルターの大部分はアクセスされることはないであろうし、その結果、著しく電力を節減する。
本アーキテクチャーは、図9、10、および11に示す、本発明者がスピルオーバー・テーブルと呼ぶ表を使用することによって、さらに改良することが可能である。スピルオーバー・テーブルとは、情報検索アーキテクチャーによって処理できない、あるいは、望ましくは情報検索アーキテクチャーによって処理されるべきではない少数の入力値を有する表である。図9を参照すると、入力値901は、上述のアーキテクチャーに類似していても、していなくてもよい何らかの情報検索アーキテクチャー910に送られる。921,922,...等のさまざまなエントリを有するスピルオーバー・テーブル920がさらに設けられる。入力値901がスピルオーバー・テーブル920内のエントリと一致すれば、入力値901の処理は、情報検索アーキテクチャー910の代わりに、スピルオーバー・テーブル920によって行われる。
このような表が有用であることには、さまざまな理由がある。
表のセットアップ
符号化表を構築する、前述したセットアップメカニズムは、単集合が再帰的なセットアッププロセスの各段階において発見されない場合には失敗する。これは、たとえば、2つの個々の要素のすべての
Figure 0004727594
個のハッシュ関数が正確に一致する、起こりそうにもない場合に、起こるであろう。単集合を発見できなければ、ハッシュ値の1つが最下位の入力ポインタを有する表エントリを示す要素を、情報検索アーキテクチャーから除去されるように選択することが可能である。この要素
Figure 0004727594
は次に、スピルオーバー・テーブルに挿入できる。ハッシュ関数の一致によって表のセットアップに失敗する確率は、スピルオーバー・テーブルのサイズと共に指数関数的に小さくなることを示すことができる。たとえば、百万エントリ・アーキテクチャーに対するセットアップに失敗する確率はおよそ10-14である。これは、サイズ10のセツトアツプ・テーブルを使用すれば、およそ10-140に減少する。
単集合がない要素の追加も、スピルオーバー・テーブルを使用して、さらに容易にできる。既にセットアップされている符号化表にこのような要素を加えるためには、符号化表は零から作り直す必要がある。しかし、要素は、スピルオーバー・テーブルにも加えることができる。削除および追加が通常均等に挿入されると仮定すれば、適度のサイズのスピルオーバー・テーブルを有する符号化表を完全に作り直す必要は滅多にないであろう。
要素の再配置
一般的な問題として、小さなスピルオーバー・テーブルが、表のセットアッププロセスを支援するために、任意の「問題となる」要素を他の要素の中に再配置するために、使用できる。これを、たとえば、図10に示す。入力値1001は、まずスピルオーバー・テーブル1020に送られる。入力値がスピルオーバー・テーブル1020内のエントリの1つと一致すれば、入力値1001は他の値1002の中に再配置される。この値1002はおそらく、ある方法で情報検索アーキテクチャー1010に対してより有利であり、正しい検索値を生成するためによって容易に処理できる。
誤ポジティブの格納
以上のような理由で、誤ポジティブは、識別されるために、すべてのテーブルへのアクセスを必要とする。検索が進行するにつれて、誤ポジティブをもたらす要素は、フィルターリング・アーキテクチャーの初めに近く位置するスピルオーバー・テーブルに格納できる。したがって、これらの要素の将来の検索は、アクセスを1回だけ必要とし、その結果相当量の電力を節減する。
図11は、図7Bに示したコンテンツ・ベース情報検索アーキテクチャー1100に加えて、小さなスピルオーバー・テーブル1195を有する、1190におけるプレフィルターリングの使用を示している。図12は、異なる処理要素の間の相互作用を例示するフローチャートを示す。図12に示すように、フィルターリング・テーブル1206において識別された誤ポジティブは、1201に戻される。表検索をさらに減少するために、1202においてプレフィルターリングも使用される。
上述した情報検索アーキテクチャーは、関連する技術に勝る多くの重要な利点を有している。上述したように、本構造はSRAMあるいはDRAMのような標準の廉価なメモリ部品を使用することが可能であり、その結果製造が容易である。本構造は、ハードウェア依存性のないストリーミング・データを使用し、高スループットを得るために深いパイプライン方式が可能であるので、高速な(おそらく毎秒1億エントリを超える速度で検索する)処理能力がある。さらに、本構造は等価なTCAM部品よりも6分の1の消費電力(ビット当たり約50nW)となる。格納されたヘッダ内の個々のプレフイックス長の数がヘッダの数と共に増加すると想定されるので、上記の構造のメモリ必要量は、TCAMにおいて必要とされるよりも速く増加することに留意すべきである。しかし、プレフイックス長の数が安定すると、メモリの増加率はTCAMと同等となるであろう。
本発明の発明者は、本構造が無損失ハッシュ・テーブルを容易に凌駕することと、誤ポジティブ率が、セグメント化されたメモリを有するフィルター、ならびに、セグメント化されたメモリを有しないフィルターに非常に類似していることを実証するシミュレーションを行った。本発明者は、表のサイズが、ハッシュ関数の数の増加と共に最初は小さくなり、その後に大きくなることも発見した。これは、ハッシュ関数の数の増加は、2つの相反する作用を有するためである。第1に、ハッシュ関数の数の増加は、より多くのエントリがハッシュされるので、単集合を発見する機会を改善する。しかし、より多くのハッシュ関数は、各エントリが指向される確率も増大させる。これは、単集合を発見する機会を減少させ、フィルターセットアッププロセスが収束する表のサイズを大きくする傾向がある。セグメント化されたメモリの使用も表のサイズを大きくする。ハッシュ関数は、そのメモリ・セグメント内に限定されているので、セグメント化されたより大きい表サイズが予想される。ある意味では、セグメント化されたメモリは、セグメント化されていないメモリのように「ランダム」ではない。これは単集合を発見する機会を減少させ、したがって、セットアップの間に収束する大きいメモリ・サイズを必要とする。
当業者が、ここに明示的に示されていないか、あるいは説明されていないが、本発明の原理を具体化し、本発明の要旨と範囲に含まれる数多くの装置や変形を案出することが可能であることを理解されよう。たとえば、そして限定するものではなく、ネットワーク・ルーター・アプリケーションおよび連想記憶装置を特に参照して、本発明を説明した。本発明はそれにもかかわらず、上述のように、他の用途にも容易に拡張可能である。
本発明の一態様の実施形態によるコンテンツ・ベース情報検索アーキテクチャーを示す図である。 誤ポジティブを可能にする他のコンテンツ・ベース情報検索アーキテクチャーを示す図である。 本発明の他の態様の実施形態によるコンテンツ・ベース情報検索アーキテクチャーにおけるセグメントされたメモリおよびパイプライン方式を示す図である。 本発明の他の態様の実施形態によって構築された最長プレフイックス・マッチング・ネットワーク・ルーターを示す図である。 本発明の他の実施形態によって構築された他のネットワーク・ルーター・アーキテクチャーを示す図である。 一例のルーター・ラインカードを示す図である。 小さい容量のメモリを使用する他のコンテンツ・ベース情報検索アーキテクチャーを示す図である。 小さい容量のメモリを使用する他のコンテンツ・ベース情報検索アーキテクチャーを示す図である。 プレフィルターリングのメカニズムを示す他のコンテンツ・ベース情報検索アーキテクチャーを示す図である。 スピルオーバー・テーブルの使用法を示す図である。 スピルオーバー・テーブルの使用法を示す図である。 プレフィルターリングおよびスピルオーバー・テーブルを使用するコンテンツ・ベース情報検索アーキテクチャーを示す図である。 図11に示すアーキテクチャーによって実行される処理のフローチャートである。 パイプライン方式のハッシュ関数の動作を示す図である。

Claims (42)

  1. 第1の入力値を受け取り、該第1の入力値から複数のハッシュされた値を生成するハッシング・モジュールと、
    複数の符号化された値を格納する第1の表であって、前記第1の入力値から生成された各ハッシュされた値は、符号化された値の前記表内の位置に対応する、第1の表と、
    複数の検索値を格納する第2の表と、
    検索集合内の複数の第2の入力値を格納する第3の表であって、そのような第2の入力値のそれぞれは前記第2の表中の検索値と関連する、第3の表と
    を有し、
    前記第1の表は、第1の入力値から生成された前記ハッシュされた値から得られた複数の前記符号化された値が、何らかの単一の符号化された値から回復できない値を生成し、また、該値が前記第2の表中の検索値と前記第3の表中の関連する第2の入力値を選択するように構成され、それによって、前記第1の入力値が前記第3の表中の前記第2の入力値と同じであれば、前記第1の入力値が前記検索集合内に存在すると確認する、
    コンテンツ・ベースの情報検索アーキテクチャー。
  2. 前記出力値が、複数の前記符号化された値を、ビット毎の排他的論理和演算を行うことによって結合することによって回復されるように、前記第1の表中の前記符号化された値が前記出力値を符号化する、請求項1記載の情報検索アーキテクチャー。
  3. 前記検索値は前記第2の表中の固有のアドレスに格納され、符号化された値の前記第1の表は、前記複数の符号化された値によって符号化された前記出力値が前記第2の表中のアドレスであるように構成されている、請求項1記載の情報検索アーキテクチャー。
  4. 前記第1の表は、前記第2の表が前記第1の表より小さいサイズを有するように、また、前記第1の表の幅が少なくとも
    Figure 0004727594
    (ここで、
    Figure 0004727594
    は検索値の数)であるように構成されている、請求項1記載の情報検索アーキテクチャー。
  5. 前記第1の表は複数のバンクに分割され、各バンクは前記ハッシング・モジュールによって生成された複数のハッシュされた値の1つと関連する、請求項1記載の情報検索アーキテクチャー。
  6. 前記ハッシング・モジュールと前記第1の表は、前記第2および第3の表から異なる段階にパイプライン方式で接続されている、請求項1記載の情報検索アーキテクチャー。
  7. 入力値を受け取り、前記入力値が入力値のフィルターリングされた集合のメンバーではない場合にのみ、前記入力値を前記ハッシング・モジュールへ転送するフィルターリング・モジュールをさらに有する、請求項1記載の情報検索アーキテクチャー。
  8. 入力値の前記フィルターリングされた集合は、入力値の前記検索集合のメンバーであると認識されない入力値である、請求項7記載の情報検索アーキテクチャー。
  9. 入力値の前記フィルターリングされた集合は、符号化された値の前記第1の表の構築を容易にするように選択された入力値である、請求項7記載の情報検索アーキテクチャー。
  10. 入力値の前記フィルターリングされた集合は、前記ハッシング・モジュールが前記1つの入力値から複数のハッシュ値を生成するときに、前記1つの入力値から生成された前記ハッシュされた値が符号化された値の前記第1の表中の1つの単集合の位置には対応しないように、少なくとも1つの入力値を有する、請求項9記載の情報検索アーキテクチャー。
  11. 少なくとも1つの入力値が、前記ハッシング・モジュールに次に転送される他の入力値に前記フィルターリング・モジュールによって再配置される、請求項7記載の情報検索アーキテクチャー。
  12. 前記第3の表中の前記関連する入力値が前記1つの入力値と同一ではないために、前記検索集合内に存在しないと認識された少なくとも1つの入力値が、前記フィルターリング・モジュールによって使用された入力値の前記フィルターリングされた集合に追加される、請求項7記載の情報検索アーキテクチャー。
  13. 前記第1の表は前記第2の表と前記第3の表中に索引付けを行うために使用され、前記第3の表はフィルターリングを行うために使用される、請求項1記載の情報検索アーキテクチャー。
  14. パケット・ヘッダ中の情報に対して検索を行うための少なくとも1つのフィルターを有するネットワーク・ルーターであって、前記フィルターは、
    前記パケット・ヘッダ中の前記情報を受け取り、前記パケット・ヘッダ中の前記情報から複数のハッシュされた値を生成するハッシング・モジュールと、
    複数の符号化された値を格納する第1の表であって、前記パケット・ヘッダ中の前記情報から生成された各ハッシュされた値は符号化された値の前記第1の表中の位置に対応し、前記第1の表は、前記パケット・ヘッダ中の前記情報から得られた複数の前記符号化された値が、任意の単一の符号化された値から回復できない値を生成し、また、該値が前記パケット・ヘッダに対する転送情報を選択するために使用されるように構成されている、第1の表と
    をさらに有する、ネットワーク・ルーター。
  15. 複数の前記符号化された値を、ビット毎の排他的論理和演算を行うことによって結合することによって前記出力値が回復されるように、前記第1の表中の複数の前記符号化された値が前記出力値を符号化する、請求項14記載のネットワーク・ルーター。
  16. 前記パケット・ヘッダ中の前記情報が予め指定された長さのプレフイックスである、請求項14記載のネットワーク・ルーター。
  17. 異なる予め指定された長さのプレフイックスに対して1つまたは複数の追加のフィルターをさらに有し、各フィルターが並列に検索を行う、請求項16記載のネットワーク・ルーター。
  18. 各フィルターに対してアップデート・フィルターをさらに有し、前記アップデート・フィルターは、オフラインで更新可能であり、前記フィルター中の前記第1の表と交換可能である前記第1の表のバージョンを有する、請求項17記載のネットワーク・ルーター。
  19. 各フィルターからの結果を受け取り、最長のプレフイックスを処理する前記フィルターからの前記結果にもとづいて転送情報を選択するプライオリティ・エンコーダをさらに有する、請求項17記載のネットワーク・ルーター。
  20. 前記第1の表が複数のバンクに分割されており、各バンクが前記ハッシング・モジュールによって生成された前記複数のハッシュされた値の1つに関連する、請求項14記載のネットワーク・ルーター。
  21. 前記ハッシング・モジュールと前記第1の表が、異なる段階にパイプライン方式で接続されている、請求項14記載のネットワーク・ルーター。
  22. 前記パケット・ヘッダ中の前記プレフイックスを受け取り、前記プレフイックスがプレフイックスのフィルターリングされた集合のメンバーではない場合にのみ、前記プレフイックスを前記ハッシング・モジュールへ転送するフィルターリング・モジュールをさらに有する、請求項16記載のネットワーク・ルーター。
  23. プレフイックスの前記フィルターリングされた集合は、プレフイックスの検索集合のメンバーであると認識されないプレフイックスである、請求項22記載のネットワーク・ルーター。
  24. プレフイックスの前記フィルターリングされた集合は、符号化された値の前記第1の表の構築を容易にするように選択されたプレフイックスである、請求項22記載のネットワーク・ルーター。
  25. プレフイックスの前記フィルターリングされた集合は、前記ハッシング・モジュールが前記1つのプレフイックスから複数のハッシュされた値を生成するときに、前記1つのプレフイックスから生成された前記ハッシュされた値が符号化された値の前記第1の表中の1つの単集合の位置には対応しないように、少なくとも1つのプレフイックスを有する、請求項24記載のネットワーク・ルーター。
  26. 少なくとも1つのプレフイックスが、前記ハッシング・モジュールに次に転送される他のプレフイックスに前記フィルターリング・モジュールによって再配置される、請求項22記載のネットワーク・ルーター。
  27. 前記転送情報を各プレフイックスと関連する転送値として格納する第2の表をさらに有する、請求項19記載のネットワーク・ルーター。
  28. 各フィルターが関連する第2の表を有する、請求項27記載のネットワーク・ルーター。
  29. 前記プライオリティ・エンコーダが、最長のプレフイックスを処理するフィルターを選択し、次に前記複数のフィルターによって共有される第2の表から前記転送情報を検索する、請求項27記載のネットワーク・ルーター。
  30. 複数の関連するプレフイックスを検索集合中に格納する第3の表をさらに有し、このような関連するプレフイックスの各々は前記第2の表中の転送値と関連し、前記出力値は前記第2の表中の転送値および前記第3の表から関連するプレフイックスを選択し、それによって、前記パケット・ヘッダ中の前記プレフイックスが前記第3の表中の前記関連するプレフイックスと同じであれば、前記パケット・ヘッダ中の前記プレフイックスが前記検索集合内に存在すると確認する、請求項27記載のネットワーク・ルーター。
  31. 前記フィルターの中の前記第1の表は、前記第2の表が前記第1の表より小さいサイズを有するように、また、前記第1の表の幅が少なくとも
    Figure 0004727594
    (ここで、
    Figure 0004727594
    は転送値の数である)であるように、構成されている、請求項30記載のネットワーク・ルーター。
  32. 前記パケット・ヘッダ中の前記プレフイックスを受け取り、前記プレフイックスがプレフイックスのフィルターリングされた集合のメンバーではない場合にのみ、前記プレフイックスを前記ハッシング・モジュールへ転送するフィルターリング・モジュールをさらに有し、前記第3の表中の前記関連するプレフイックスが1つの入力値と同じではないために前記検索集合内に存在しないと認識された前記少なくとも1つのプレフイックスが、前記フィルターリング・モジュールによって使用された、プレフイックスの前記フィルターリングされた集合に追加される、フィルターリング・モジュールをさらに有する、請求項30記載のネットワーク・ルーター。
  33. 入力値を受け取り、前記入力値から複数のハッシュされた値を生成するハッシング・モジュールと、
    複数の符号化された値を格納する表であって、前記入力値から生成された各ハッシュされた値は符号化された値の前記表中の位置に対応し、前記表は複数のバンクに分割され、各バンクは、前記ハッシング・モジュールによって生成された前記複数のハッシュされた値の1つと関連し、前記表は、任意の単一の符号化された値から回復できない値を生成するように構成されている、表と
    を有するコンテンツ・ベースの情報検索アーキテクチャー。
  34. 複数の前記符号化された値を、ビット毎の排他的論理和演算を行うことによって結合することによって前記出力値が回復されるように、前記符号化された値が前記出力値を符号化する、請求項33記載の情報検索アーキテクチャー。
  35. 前記表がマルチポートではないメモリに格納されている、請求項33記載の情報検索アーキテクチャー。
  36. 入力値を受け取り、前記入力値から複数のハッシュされた値を生成するハッシング・ユニットと、
    複数の符号化された値の表を格納するメモリ・ユニットであって、前記入力値から生成された各ハッシュされた値が符号化された値の前記表中の位置に対応するメモリ・ユニットと、
    前記符号化された値から出力値を回復する論理ユニットであって、前記入力値から得られた複数の前記符号化された値が、任意の単一の符号化された値から回復できない値を生成し、前記ハッシング・ユニット、前記メモリ・ユニット、および前記論理ユニットが異なる段階にパイプライン方式で接続されている、論理ユニットと
    を有するコンテンツ・ベースの情報検索アーキテクチャー。
  37. 複数の前記符号化された値を、ビット毎の排他的論理和演算を行うことによって結合することによって前記出力値が回復されるように、前記符号化された値が前記出力値を符号化する、請求項36記載の情報検索アーキテクチャー。
  38. 入力値を受け取り、前記入力値が入力値のフィルターリングされた集合のメンバーではない場合にのみ、前記入力値を転送するフィルターリング・モジュールと、
    前記転送された入力値を受け取り、前記転送された入力値から複数のハッシュされた値を生成するハッシング・モジュールと、
    複数の符号化された値を格納する表であって、前記転送された入力値から生成された各ハッシュされた値は符号化された値の前記表中の位置に対応し、前記表は、前記転送された入力値から得られた複数の前記符号化された値が、任意の単一の符号化された値から回復できない値を生成するように構成されている、複数の符号化された値を格納する表と
    を有するコンテンツ・ベースの情報検索アーキテクチャー。
  39. 入力値の前記フィルターリングされた集合は、符号化された値の前記表中の符号化された関連する出力値を有する入力値の検索集合のメンバーであると認識されない入力値である、請求項38記載の情報検索アーキテクチャー。
  40. 入力値の前記フィルターリングされた集合は、符号化された値の前記表の構成を容易にするように選択された入力値である、請求項38記載の情報検索アーキテクチャー。
  41. 入力値の前記フィルターリングされた集合は、前記ハッシング・モジュールが1つの入力値から複数のハッシュされた値を生成するとき、前記1つの入力値から生成された前記ハッシュされた値が符号化された値の前記表中の1つの単集合の位置には対応しないように、前記少なくとも1つの入力値を有する、請求項40記載の情報検索アーキテクチャー。
  42. 少なくとも1つの入力値が、前記ハッシング・モジュールに次に転送される他の入力値の中に前記フィルターリング・モジュールによって再配置される、請求項38記載の情報検索アーキテクチャー。
JP2006552297A 2004-02-05 2005-02-07 コンテンツ・ベースの情報検索アーキテクチャー Expired - Fee Related JP4727594B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US54198304P 2004-02-05 2004-02-05
US60/541,983 2004-02-05
US10/909,907 US7019674B2 (en) 2004-02-05 2004-08-02 Content-based information retrieval architecture
US10/909,907 2004-08-02
PCT/US2005/003698 WO2005076954A2 (en) 2004-02-05 2005-02-07 Content-based information retrieval architecture

Publications (3)

Publication Number Publication Date
JP2007524946A JP2007524946A (ja) 2007-08-30
JP2007524946A5 JP2007524946A5 (ja) 2008-04-03
JP4727594B2 true JP4727594B2 (ja) 2011-07-20

Family

ID=34830525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006552297A Expired - Fee Related JP4727594B2 (ja) 2004-02-05 2005-02-07 コンテンツ・ベースの情報検索アーキテクチャー

Country Status (3)

Country Link
US (1) US7019674B2 (ja)
JP (1) JP4727594B2 (ja)
WO (1) WO2005076954A2 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US20090006659A1 (en) * 2001-10-19 2009-01-01 Collins Jack M Advanced mezzanine card for digital network data inspection
US20090161568A1 (en) * 2007-12-21 2009-06-25 Charles Kastner TCP data reassembly
US7716330B2 (en) * 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7711844B2 (en) * 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7359328B1 (en) * 2003-03-11 2008-04-15 Nortel Networks Limited Apparatus for using a verification probe in an LDP MPLS network
EP1627331B1 (en) 2003-05-23 2017-09-20 IP Reservoir, LLC Intelligent data storage and processing using fpga devices
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US7602785B2 (en) * 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
US7564381B1 (en) * 2004-02-16 2009-07-21 Cisco Technology, Inc. System and method for code-based compression in a communications environment
WO2006023948A2 (en) * 2004-08-24 2006-03-02 Washington University Methods and systems for content detection in a reconfigurable hardware
US7606231B2 (en) * 2005-02-18 2009-10-20 Broadcom Corporation Pipeline architecture for a network device
EP1859378A2 (en) 2005-03-03 2007-11-28 Washington University Method and apparatus for performing biosequence similarity searching
US7249217B2 (en) * 2005-03-07 2007-07-24 Telefonaktiebolaget Lm Ericsson Content addressable memory (CAM) and method of downloading and banking filters
US7430560B1 (en) * 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
US7921088B1 (en) 2005-07-22 2011-04-05 X-Engines, Inc. Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US7730058B2 (en) * 2005-10-05 2010-06-01 Microsoft Corporation Searching for information utilizing a probabilistic detector
US7653670B2 (en) * 2005-11-28 2010-01-26 Nec Laboratories America, Inc. Storage-efficient and collision-free hash-based packet processing architecture and method
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US20070255823A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Method for low-overhead message tracking in a distributed messaging system
US8065530B2 (en) * 2006-09-11 2011-11-22 Research In Motion Limited Apparatus, and associated method, for paging an access terminal in a radio communication system
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7827218B1 (en) 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
US7830873B1 (en) * 2007-01-09 2010-11-09 Marvell Israel (M.I.S.L.) Ltd. Implementation of distributed traffic rate limiters
US7949657B2 (en) * 2007-12-11 2011-05-24 Microsoft Corporation Detecting zero-result search queries
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
KR100962653B1 (ko) * 2008-07-24 2010-06-11 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치
US7990973B2 (en) * 2008-08-13 2011-08-02 Alcatel-Lucent Usa Inc. Hash functions for applications such as network address lookup
US8018940B2 (en) * 2008-08-13 2011-09-13 Alcatel Lucent Network address lookup based on bloom filters
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8706619B1 (en) * 2010-06-25 2014-04-22 Amazon Technologies, Inc. Employing spillover tables for data updates
US20120275466A1 (en) * 2010-10-21 2012-11-01 Texas Instruments Incorporated System and method for classifying packets
JP5716554B2 (ja) 2011-06-06 2015-05-13 富士通株式会社 検索プログラム、検索方法、検索装置、およびノード
JP5741421B2 (ja) * 2011-12-19 2015-07-01 富士通株式会社 検索装置及び検索キー再配置方法
US9519614B2 (en) 2012-01-10 2016-12-13 Verizon Digital Media Services Inc. Multi-layer multi-hit caching for long tail content
US8370460B1 (en) 2012-01-10 2013-02-05 Edgecast Networks, Inc. Optimizing multi-hit caching for long tail content
US9384835B2 (en) 2012-05-29 2016-07-05 Globalfoundries Inc. Content addressable memory early-predict late-correct single ended sensing
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
EP2912579B1 (en) 2012-10-23 2020-08-19 IP Reservoir, LLC Method and apparatus for accelerated format translation of data in a delimited data format
US9331942B2 (en) * 2013-03-12 2016-05-03 Xpliant, Inc. Apparatus and method for processing alternately configured longest prefix match tables
CN104052669B (zh) * 2013-03-12 2018-12-07 凯为公司 用于处理交替配置的最长前缀匹配表的装置
US10110492B2 (en) * 2013-04-11 2018-10-23 Marvell Israel (M.I.S.L.) Ltd. Exact match lookup with variable key sizes
US10001993B2 (en) * 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10515231B2 (en) * 2013-11-08 2019-12-24 Symcor Inc. Method of obfuscating relationships between data in database tables
US9602428B2 (en) * 2014-01-29 2017-03-21 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for locality sensitive hash-based load balancing
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US9596181B1 (en) 2014-10-20 2017-03-14 Juniper Networks, Inc. Two stage bloom filter for longest prefix match
US11943142B2 (en) 2014-11-10 2024-03-26 Marvell Asia Pte, LTD Hybrid wildcard match table
US11218410B2 (en) 2014-11-10 2022-01-04 Marvell Asia Pte, Ltd. Hybrid wildcard match table
US10116564B2 (en) * 2014-11-10 2018-10-30 Cavium, Inc. Hybrid wildcard match table
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US10394784B2 (en) * 2016-12-22 2019-08-27 Intel Corporation Technologies for management of lookup tables
EP3560135A4 (en) 2016-12-22 2020-08-05 IP Reservoir, LLC PIPELINES INTENDED FOR AUTOMATIC ACCELERATED LEARNING BY EQUIPMENT
US20200167327A1 (en) * 2018-11-28 2020-05-28 Advanced Micro Devices, Inc. System and method for self-resizing associative probabilistic hash-based data structures
KR20200064264A (ko) 2018-11-28 2020-06-08 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
US11588734B2 (en) 2020-04-28 2023-02-21 Pensando Systems Inc. Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm
US11258707B1 (en) * 2020-08-21 2022-02-22 Pensando Systems Inc. Systems for building data structures with highly scalable algorithms for a distributed LPM implementation
TWI780696B (zh) * 2021-05-10 2022-10-11 創鑫智慧股份有限公司 查找表壓縮方法與查找表讀取方法及其計算設備、主機與裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105770A (ja) * 1998-09-28 2000-04-11 Matsushita Electric Ind Co Ltd ハッシュテーブル検索方法および装置
WO2004015933A1 (en) * 2002-08-07 2004-02-19 Infineon Technologies Ag Method for routing of data packets and routing apparatus

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US6160891A (en) * 1997-10-20 2000-12-12 Sun Microsystems, Inc. Methods and apparatus for recovering keys
US6087967A (en) * 1998-09-03 2000-07-11 International Business Machines Corporation Method for generating and reading a compressed all event trace file
US6611213B1 (en) * 1999-03-22 2003-08-26 Lucent Technologies Inc. Method and apparatus for data compression using fingerprinting
US6236341B1 (en) * 2000-03-16 2001-05-22 Lucent Technologies Inc. Method and apparatus for data compression of network packets employing per-packet hash tables
US6961728B2 (en) * 2000-11-28 2005-11-01 Centerboard, Inc. System and methods for highly distributed wide-area data management of a network of data sources through a database interface
US6624762B1 (en) * 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor
TW550903B (en) * 2002-04-23 2003-09-01 Via Tech Inc Method for filtering packets and the associated devices
US20050187898A1 (en) * 2004-02-05 2005-08-25 Nec Laboratories America, Inc. Data Lookup architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105770A (ja) * 1998-09-28 2000-04-11 Matsushita Electric Ind Co Ltd ハッシュテーブル検索方法および装置
WO2004015933A1 (en) * 2002-08-07 2004-02-19 Infineon Technologies Ag Method for routing of data packets and routing apparatus

Also Published As

Publication number Publication date
US20050174272A1 (en) 2005-08-11
US7019674B2 (en) 2006-03-28
JP2007524946A (ja) 2007-08-30
WO2005076954A3 (en) 2006-02-02
WO2005076954A2 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
JP4727594B2 (ja) コンテンツ・ベースの情報検索アーキテクチャー
US7437354B2 (en) Architecture for network search engines with fixed latency, high capacity, and high throughput
US9871728B2 (en) Exact match hash lookup databases in network switch devices
US6434144B1 (en) Multi-level table lookup
US7630373B2 (en) Packet transfer apparatus
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
US8295286B2 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
US7424468B2 (en) Internet protocol address look-up device
US8856203B1 (en) System and method for algorithmic TCAM packet classification
US7571156B1 (en) Network device, storage medium and methods for incrementally updating a forwarding database
JP5525273B2 (ja) 階層的に構造化された可変長識別子を有するパケットを転送するためのシステム
CN111937360B (zh) 最长前缀匹配
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
Warkhede et al. Multiway range trees: scalable IP lookup with fast updates
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
Le et al. Memory-efficient and scalable virtual routers using FPGA
US10515015B2 (en) Hash table-based mask length computation for longest prefix match caching
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
Le et al. Scalable high throughput and power efficient ip-lookup on fpga
JP2006246488A (ja) ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム
CN115086221B (zh) 一种报文处理方法、装置、转发设备和存储介质
KR100428247B1 (ko) 아이피 주소룩업에서 고속 엘피엠 탐색을 위한 파이프라인씨에이엠의 구성 방법
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup
KR100459542B1 (ko) 인터넷 프로토콜 주소 룩-업 장치
Tong et al. A memory efficient IPv6 lookup engine on FPGA

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100913

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110202

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110203

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110224

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110413

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: 20140422

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees