JP2001357071A - ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装 - Google Patents

ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装

Info

Publication number
JP2001357071A
JP2001357071A JP2001091839A JP2001091839A JP2001357071A JP 2001357071 A JP2001357071 A JP 2001357071A JP 2001091839 A JP2001091839 A JP 2001091839A JP 2001091839 A JP2001091839 A JP 2001091839A JP 2001357071 A JP2001357071 A JP 2001357071A
Authority
JP
Japan
Prior art keywords
leaf
search
key
tree
exact match
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
JP2001091839A
Other languages
English (en)
Other versions
JP3651589B2 (ja
Inventor
Brian Mitchell Bass
ブライアン・ミッチェル・バス
Jean Louis Calvignac
ジャン・ルイ・カルヴィニャク
Marco C Heddes
マーコ・シー・ヘデス
Maragukosu Antonios
アントニオス・マラグコス
Michael Steven Siegel
マイケル・スティーブン・スィーゲル
Fabrice Jean Verplanken
ファブリス・ジャン・ヴェルプランケン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001357071A publication Critical patent/JP2001357071A/ja
Application granted granted Critical
Publication of JP3651589B2 publication Critical patent/JP3651589B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/742Route cache; Operation thereof
    • 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/7453Address table lookup; Address filtering using hashing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (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)
  • Small-Scale Networks (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 サーチ・パターンとサーチ・ツリーのリーフ
に格納されたパターンとの間の完全一致を見つけるため
の新規のデータ構造、方法、および装置を提供する。 【解決手段】 キーを入力し、キーに対しハッシュ関数
を実行し、直接テーブル(DT)にアクセスし、パター
ン・サーチ制御ブロック(PSCB)を通してリーフに
達するまでツリーのウォーク・スルーを行う。キーおよ
び検索のために必要な対応する情報の両方が、パトリシ
ア・ツリー構造に格納され、ハッシュ関数は、キーのビ
ットからハッシュ・キーのビットへn−>nのマッピン
グを行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的に、パター
ン・マッチング・アルゴリズムに関し、さらに詳しく
は、ネットワーク処理装置に実装することができる完全
マッチング・サーチ・アルゴリズムに関する。
【0002】
【従来の技術】ますます複雑になるタスクをメディア速
度でサポートするためのハードウェア統合処理の要求か
ら、ネットワーク・プロセッサが生成された。ネットワ
ーク・プロセッサは、1組の埋込み型プログラム可能プ
ロトコル・プロセッサおよび相補型システム・コプロセ
ッサにより機能柔軟性を備えた配線速度のフレーム処理
および転送能力を提供する。ネットワーク・プロセッサ
は、今日のパーソナル・コンピュータにとってのマイク
ロプロセッサと同様に、ネットワークにとっての基本的
ネットワーク構築ブロックになるものと期待される。ネ
ットワーク・プロセッサは複数のデータ・ストリームの
実時間処理を提供し、セキュリティの強化やIPパケッ
ト処理および転送能力をもたらす。さらに、それは、並
列分散処理およびパイプライン処理設計などの高度アー
キテクチャにより、速度改善をもたらす。これらの能力
は効率的なサーチ・エンジンを可能にし、データ処理ス
ループットを向上し、複雑なタスクの高速実行をもたら
す。ネットワーク・プロセッサのプログラム可能な機能
は、ネットワーク製品開発者に、新しい特注のアプリケ
ーション特定的な集積回路(ASIC)の設計を必要と
することなく、新しいプロトコルおよび技術を実装する
ためのより容易な移行経路を提供する。
【0003】ネットワーク・プロセッサは、インターネ
ット・プロバイダまたはエンタープライズ・ネットワー
ク・プロバイダ向けの相互接続解決策を開発するための
高度にカスタマイズ可能でスケーラブルな技術を提供す
る。ネットワーク・プロセッサは、ローエンド独立型装
置から大型マルチラック解決策まで広範囲の解決策の基
礎を提供する。この性質の規模変更は、高性能非ブロッ
キング・パケット・ルーティング・スイッチ技術、およ
び他の産業スイッチ技術に適応できるIBM社のData A
ligned Serial Link(DASL)インタフェースなど専
有技術のインタフェースを使用することにより達成され
る。
【0004】プログラム可能な通信集積回路として、ネ
ットワーク・プロセッサは、非常に効率的なパケット分
類、フレーム毎のマルチテーブル・ルックアップ、パケ
ット変更、キュー/ポリシー管理、およびその他のパケ
ット処理能力を提供する。ネットワーク・プロセッサ
は、スイッチング・エンジン、サーチ・エンジン、フレ
ーム・プロセッサ、およびイーサネット(登録商標)M
ACを1つの装置に統合して、いずれかのプロトコル層
でフレーム内容に基づき高容量メディア重みスイッチン
グ・フレームを必要とする顧客の要求をサポートする。
【0005】ハードウェア・アクセラレータは、フレー
ム転送、フレーム・フィルタリング、およびフレーム変
更を実行する。複合範囲および動作仕様を持つ何百もの
ルールを実施するネットワーク・プロセッサの能力は、
フィルタリング能力の新しいベンチマークを設定し、ネ
ットワーク・プロセッサに基づくシステムを高容量サー
バ・ファーム・アプリケーションに独特に適合させる。
【0006】ネットワーク・プロセッサを用いて展開さ
れる典型的なシステムは、分散型ソフトウェア・モデル
を使用し、各プログラム可能なネットワーク・プロセッ
サがタスクを同時に実行する。幾つかの機能は制御点
(CP)プロセッサで実行され、これはネットワーク・
プロセッサの内部または外部に置くことができる。CP
は、レイヤ2およびレイヤ3のルーティング・プロトコ
ル、ならびにレイヤ4およびレイヤ5のネットワーク・
アプリケーションおよびシステム管理をサポートする。
配線速度の転送およびフィルタリング機能は、ネットワ
ーク・プロセッサ・ハードウェアおよび常駐ピココード
の組合せによって実行される。
【0007】多数の相互接続されたノードを含む通信ネ
ットワークで、データは1つのノードから他のいずれか
のノードまたはネットワークに送信することができる。
ルータと呼ばれる特殊化されたノードは、データをその
宛先に転送する能力を持つ。通信ネットワークを通して
送信されるデータは、一般的にヘッダの一部として、宛
先アドレスに関する情報を含む。各ルータはこの情報ま
たは少なくともその一部を、内部に格納されたアドレス
のリストと比較する。格納されたアドレスと宛先アドレ
スとの間に一致が見つかると、ルータはその宛先ノード
に通じる経路を確立する。ネットワークの規模および構
造によって、データはその宛先に直接転送されるか、ま
たは他の中間ルータへ送信される。国際標準化機構(I
SO)は、ルータが部分アドレスのルーティング情報を
格納するルーティング規格を発表した。ルータはそこ
で、そのデータベースにある最もよく一致する部分アド
レスにパケットを送信する。ISO規格は、所定の桁数
または所定のヘッダ長を使用してノードの階層構造を構
築することを可能にする。主ルータはアドレスの最初の
部分によってアドレス指定され、サブルータは中間部分
によって、かつ最終宛先はアドレスの最後の数桁によっ
て指定される。したがって、いずれかのルータが、デー
タの送信先の階層のレベルに割り当てられた桁を読み取
れば充分である。
【0008】受信パケットのルーティングは、付随する
アドレス文字列に基づく。アドレス文字列は、アドレス
文字列と共に、どのルータがパケットの配信における次
のルータであるかなど他の関連詳細を含むデータベース
で、サーチ・キーとして使用される。データベースはル
ーティング・テーブルと呼ばれ、現在のルータと次のル
ータとの間のリンクは、パケットの進行における次のホ
ップと呼ばれる。ルーティング・テーブル・サーチ・プ
ロセスは、アドレスの構造のみならず、テーブルの編成
にも依存する。たとえば非階層構造を有する7ビット以
下のサイズのサーチ・キーは、一連のアドレス・エント
リとして編成されたルーティング・テーブルでは最も効
率的に見つかる。サーチ・キーは、テーブルで正しいエ
ントリをつき止めるための索引として使用される。より
大きいサイズ、たとえば32ビットのサーチ・キーの場
合、対応するルーティング・テーブルは、10,000
個を超えるエントリを持つことができる。データベース
を索引によって直接サーチする単純なテーブルとして編
成すると、テーブルの大部分が空になるので、大量のメ
モリ空間を無駄にすることになる。
【0009】従来のルータは、サーチ・プロセスを幾つ
かのステップに分割する。第1ステップは、ルータが宛
先ホスト・コンピュータに直接接続されているかどうか
を決定することである。この場合、メッセージは宛先か
ら1ホップであり、その方向に経路選択しなければなら
ない。宛先コンピュータがそのルータに直接接続されて
いない場合、次のステップは、宛先ネットワークのトポ
ロジカル方向を決定することである。トポロジカル・レ
イアウトから方向が決定されると、メッセージはその方
向に経路選択される。そうでない場合、最終ステップ
は、メッセージをデフォルト・リンクに沿って経路選択
することである。
【0010】一般的に、第1ステップは、ルータに直接
接続された32ビットのアドレスのホスト・コンピュー
タを含むテーブル内の線形サーチを使用して実行され
る。ローカル・トポロジを反映して、アドレス・テーブ
ル内の各エントリは、アドレス指定されたコンピュータ
に直接通じている対応する出力インタフェースに接続さ
れる。宛先アドレスをルータが受け取ると、32ビット
全部が、テーブル内の宛先アドレスの各々と比較され
る。一致が見つかると、メッセージは、指定されたルー
タ・インタフェースを介して、対応する宛先に直接送信
される。
【0011】第2ステップ、つまり宛先ネットワークの
方向を決定するステップは通常、ネットワーク・アドレ
スの数のためにそのようなテーブルの管理および使用が
困難になるので、テーブル内の線形サーチによって行わ
れることはない。従来の技術では、アドレス文字列がネ
ットワーク・アドレス、サブネット・アドレス、および
ホスト識別の3つの階層レベルに一致すると、ルータ
は、ハッシュ化、パトリシア・ツリー・サーチ、および
マルチレベル・サーチなど、幾つかの周知の技術の1つ
を使用して決定を行った。ハッシュ化で、ハッシュ関数
はアドレスのネットワーク部分を縮小し、小さい管理可
能な索引を生成する。ハッシュ索引は、ハッシュ・テー
ブルに索引を付け、一致するハッシュ・エントリを探索
するために使用される。ハッシュ・テーブルの各ハッシ
ュ・エントリに対応するのが、対応するネットワークの
トポロジカル方向を指し示す出力インタフェースのアド
レスである。ハッシュ・ネットワーク部分とハッシュ・
エントリとの間に一致が見つかると、メッセージは、対
応するインタフェースおよび宛先ネットワークの方向に
向けられる。
【0012】ハッシュ化により、大きい管理不能なフィ
ールドは、小さい管理可能な索引に縮小される。しか
し、このプロセスでは、2つまたはそれ以上のフィール
ドから同一ハッシュ索引が生成されることがある。これ
らのフィールドはハッシュ・テーブルの同一場所に格納
しなければならないので、このできごとは衝突と呼ばれ
る。衝突中にエントリを区別するために、さらなるサー
チが必要である。したがって、衝突は、ハッシュ・サー
チを用いることから得られる効率を低下し、全ての許容
アドレスが単一の索引に縮小される最悪の場合には、ハ
ッシュ化はサーチ・プロセスとして事実上役立たないと
みなされる。
【0013】パトリシア・ツリー・サーチは、ハッシュ
法によって生じる衝突を回避する。このサーチ法は、全
てのアドレス文字列およびたとえば関連ルート情報など
の付随情報をバイナリ・ツリーに格納する必要がある。
このサーチ・プロセスは、アドレスをアドレス文字列内
の最上位ビット位置から1ビットずつ、ツリー・ノード
と比較する。一致したビット値は、左または右子ノード
のいずれかに進むようにサーチを誘導し、このプロセス
がアドレスの次のビットに対して繰り返される。サーチ
時間は、格納された最長アドレス文字列のサイズに比例
する。パトリシア・ツリー・サーチでは、平均サーチ時
間と最悪の場合のサーチ時間との間の差は、あまり大き
くない。さらに、ルーティング・テーブルは極めて効率
的に編成される。それは、ハッシュ法の匹敵するルーテ
ィング・テーブルより少ないメモリを必要とする。パト
リシア・ツリー・サーチは、最悪の場合のサーチをハッ
シュ法よりよく処理するが、大抵の場合、一致をつき止
めるまでの時間がかなり長くかかる。したがって、多く
の従来のルータは、ハッシュ化とパトリシア・ツリー・
サーチの組合せを使用する。この組合せはマルチレベル
・サーチと呼ばれる。
【0014】マルチレベル・サーチは、ハッシュ化とパ
トリシア・ツリー・サーチを結合したものである。キャ
ッシュは、最も最近に、かつおそらく最も一般的に経路
選択されたネットワーク・アドレスの部分セットを含む
ハッシュ・テーブルを格納し、パトリシア・ツリーはネ
ットワーク・アドレスの全セットを格納する。メッセー
ジを受信すると、宛先アドレスはテーブル上にハッシュ
化される。それが予め定められた時間内につき止められ
ない場合、アドレスは、アドレスが格納されていれば見
つかることを確実にするパトリシア・ツリー・サーチ・
エンジンに渡される。
【0015】従来の技術には、固定マッチ・ツリー、最
長プレフィックス・マッチ・ツリー、およびソフトウェ
ア管理ツリーをはじめ、多数の既知のツリー・サーチ・
アルゴリズムがある。固定マッチ・ツリーは、レイヤ2
イーサネットMACテーブルなど、厳密な一致を要求す
る固定サイズ・パターンに使用される。最長プレフィッ
クス・マッチ・ツリーは、IPサブネット転送など、部
分一致だけを必要とする可変長パターンに使用される。
ソフトウェア管理ツリーは、フィルタ・ルールなど範囲
またはビット・マスクとして定義されるパターンに使用
される。一般的に、ルックアップはツリー・サーチ・エ
ンジン(TSE)を用いて実行される。
【0016】
【発明が解決しようとする課題】本発明の目的は、パト
リシア・ツリーのための完全一致ツリー・サーチ・アル
ゴリズムをハードウェア内に実装することである。この
アルゴリズムの目的を果たすことができるようにメモリ
構造をどのようにセットアップし、これらの構造をハー
ドウェアがどのように処理するかを記載する。
【0017】本発明の別の目的は、以前のポインタに関
する記憶を必要とせず、試験する次のビットまたはビッ
ト群と共に正方向ポインタのみを使用し、それによりノ
ードの記憶空間を縮小するサーチ機構を提供することで
ある。
【0018】
【課題を解決するための手段】主要な概念は、キーを入
力し、キーに対してハッシュ関数を実行し、直接テーブ
ル(DT)にアクセスし、パターン・サーチ制御ブロッ
ク(PSCB)を通してツリーのウォーク・スルーを実
行して、リーフで終了するというものである。
【0019】解決される問題は、少数のレジスタおよび
正規メモリに配置することができ、次いで比較的単純な
ハードウェア・マクロによって操作できるパトリシア・
ツリー構造を構築するために使用できる、1組のデータ
構造の設計である。パトリシア・ツリーに、キーおよび
検索のために必要な対応する情報の両方が格納される。
【0020】キーは、探索され照合される情報である。
最初に、キーがレジスタに入れられ、ハッシュ化され
る。その結果がハッシュ・キーであり、実際のサーチは
ハッシュ・キーに対して行われる。ハッシュ関数は空ハ
ッシュとすることができ、その場合ハッシュ・キーはキ
ーと全く同一となる。ハッシュ関数は、キーのビットか
らハッシュ・キーのビットへn−>nのマッピングを行
う。
【0021】ハッシュ・キーおよび関連情報をツリーに
格納するために使用されるデータ構造は、リーフと呼ば
れる。リーフを検索することが、このアルゴリズムの目
的である。各リーフは、入力キーと厳密に一致する単一
のキーに対応する。この実現ではリーフはキーを含み、
格納すべき追加情報がそれに付加される。リーフの長さ
は、キーの長さの場合と同様に、プログラム可能であ
る。リーフはランダム・アクセス・メモリに格納され、
単一メモリ・エントリとして実現される。キーが直接テ
ーブル(DT)内にある場合には、それは直接リーフと
呼ばれる。
【0022】
【発明の実施の形態】本発明について、本発明が埋め込
まれたネットワーク・プロセッサの文脈で説明する。ネ
ットワーク・プロセッサ10は、単一チップ上のプログ
ラム可能なスイッチングおよびルーティング・システム
であり、そのアーキテクチャを図1に示す。それは、ス
イッチ・インタフェースに接続するためのData Aligned
Serial Link(DASL)のみならず、10/100イ
ーサネット、ギガビット・イーサネット、およびPacket
Over SONET(POS)用のメディア・インタフェース
を提供する。内部ハードウェア・アクセラレータは、性
能および効率を高める。埋込み型プロセッサ複合体(E
PC)12は、プロトコル・プロセッサおよびフレーム
処理、構成、および管理サポートのための内部制御点プ
ロセッサを含む。
【0023】最高N個までの並列プロトコル・プロセッ
サが利用可能である。16個のプロトコル・プロセッサ
の実施形態の場合、16,384語の内部ピココード命
令記憶装置および32,768語の外部ピココード命令
記憶装置が利用可能である。毎秒212,800万個の
命令(MIPS)の集合処理能力を提供することができ
る。さらに、各プロトコル・プロセッサは、高速パター
ン・サーチ、データ操作、内部チップ管理機能、フレー
ム・パージング、およびデータ先取りサポートを提供す
る、M個のハードウェア・アクセラレータ・コプロセッ
サにアクセスできる。好ましい実施形態では、プロトコ
ル・プロセッサ用の制御記憶装置は、内部および外部メ
モリの両方、すなわち即時アクセス用の32Kの内部ス
タティック・ランダム・アクセス・メモリ(SRAM)
28、高速アクセス用の外部ゼロ・バス・ターンアラウ
ンド(ZBT)SRAM30、および大容量記憶要求用
の外部二重データ・レート(DDR)ダイナミック・ラ
ンダム・アクセス・メモリ(DRAM)32によって提
供される。
【0024】接続された制御点プロセッサ34で作動す
る前処理アルゴリズムと共に埋込み型ハードウェア・ア
クセラレータを使用して、ネットワーク・プロセッサ1
0は、複合範囲、優先順位、および動作仕様を持つ10
0またはそれ以上のフィルタ・ルールにより、配線速度
でフレームを処理することができる。これにより、ネッ
トワーク・プロセッサに基づくシステムは、ゲートウェ
イ、サーバ・ファーム・アプリケーション、およびトラ
ヒックの混合の処理に関連するフィルタリング・タスク
によく適合するようになる。
【0025】ネットワーク管理者がコヒーレントでユー
ザ・フレンドリーなインタフェースにフィルタ・ルール
を入力すると、制御点ソフトウェアは自動論理検査を行
う。安定度論理に基づき新規のフロー制御を使用して、
ネットワーク・プロセッサ10は、伝送制御プロトコル
(TCP)のコラプス無く、一般的に使用されるランダ
ム早期廃棄法より高速の一時オーバサブスクリプション
に耐える。ネットワーク・プロセッサ10はまた、帯域
幅を自動的に割り当てることによって、Differentiated
Servicesをも配信し、ネットワーク管理者は、瞬時ま
たは仮定トラヒック統計に基づき多数の閾値を設定する
効果を予測する必要性から解放される。
【0026】単一ネットワーク・プロセッサ10は、最
高40までの高速イーサネット・ポートまたは4つまで
のギガビット・イーサネット・ポートのメディア速度ス
イッチングを行う。それはまた、OC−48c、OC−
48、4つのOC−12、または16のOC−3ポート
をサポートするように構成することもできる。スケーラ
ビリティのために、2つの3.5GbpsシリアルDA
SLリンクを使用して、2つのネットワーク・プロセッ
サを相互接続してポート密度を倍加するか、またはスイ
ッチ構造を接続して最高64までのネットワーク・プロ
セッサによるスイッチング解を生成することができる。
システムのアベイラビリティを高めるため、2つのDA
SLリンク、つまり1つの一次および1つの二次DAS
Lリンクを、冗長スイッチ構造に接続することもでき
る。
【0027】ネットワーク・プロセッサ10の1つの例
示的実施形態は、図1に示す通り次の主要部分を含む。 1.最高16までのプログラム可能なプロセッサとコプ
ロセッサを含む埋込み型プロセッサ複合体(EPC)1
2 2.フレームがイーサネット物理層装置からスイッチ構
造へ移動するためのエンキュー・デキュー・スケジュー
リング論理14(EDSイングレス) 3.フレームがスイッチ構造からイーサネット物理層装
置へ移動するためのエンキュー・デキュー・スケジュー
リング論理16(EDSエグレス) 4.別のネットワーク・プロセッサまたは中間スイッチ
への相互接続のためのイングレス・スイッチ・インタフ
ェース(スイッチ・イングレス)18およびエグレス・
スイッチ・インタフェース(スイッチ・エグレス)20
のDASLリンク 5.イーサネットまたはPOS物理層装置26からフレ
ームを受信する物理MACマルチプレクサ22(PMM
イングレス)、およびイーサネットまたはPOS物理層
装置26へフレームを送信する物理MACマルチプレク
サ24(PMMエグレス)
【0028】図2は、埋込み型プロセッサ複合体の例示
的実施形態を示す。それは16のプロトコル・プロセッ
サを含み、2128MIPSの処理力を提供する。各プ
ロトコル・プロセッサ40は、3ステージ・パイプライ
ン(取出し、復号、および実行)、汎用レジスタ、専用
レジスタ、8命令キャッシュ、専用論理演算装置(AL
U)、およびコプロセッサを含み、全て133MHzで
作動する。プロトコル・プロセッサのうち2つは特殊化
されている。つまり、1つは誘導フレームの処理用であ
り(誘導フレーム・ハンドラ)、1つは制御メモリ内の
ルックアップ・データの構築用である(一般ツリー・ハ
ンドラ)。
【0029】図3は、プロトコル・プロセッサの例示的
実施形態を示す。各々のプログラム可能なプロトコル・
プロセッサ40に関連付けられるコプロセッサは、次の
機能を果たす。 1.データ記憶コプロセッサ64は、フレーム・バッフ
ァ・メモリ42、44(イングレスおよびエグレス方
向)をインタフェースして直接メモリ・アクセス(DM
A)機能をもたらす。 2.チェックサム・コプロセッサ62は、ヘッダのチェ
ックサムを計算する。 3.エンキュー・コプロセッサ66は、キー・フレーム
・パラメータを含む256ビット作業レジスタへのアク
セスを制御する。このコプロセッサは完了ユニット46
とインタフェースして、フレームをスイッチおよびター
ゲット・ポート・キューに入れる。 4.インタフェース・コプロセッサは、デバッグまたは
統計情報の収集のため、全てのプロトコル・プロセッサ
を内部レジスタ、カウンタ、およびメモリにアクセスさ
せる。 5.文字列コピー・コプロセッサは、EPC内における
データの効率的な移動を可能にする。 6.カウンタ・コプロセッサは、プロトコル・プロセッ
サ40のためのカウンタの更新を管理する。 7.ポリシー・コプロセッサはフロー制御情報を検討
し、事前に割り当てられた帯域幅と一致するか検査す
る。
【0030】ハードウェア・アクセラレータ48は、フ
レーム転送、フレーム・フィルタリング、フレーム変
更、およびツリー・サーチを実行する。ネットワーク・
プロセッサに組み込まれるその他の機能として、革新的
フィルタ・ルール処理、ハッシュ関数、およびフロー制
御が含まれる。
【0031】プロトコル・プロセッサ40は、複合範囲
および動作仕様を持つ100またはそれ以上のフレーム
・フィルタ・ルールを実施することができる。フィルタ
リングはネットワーク・セキュリティのために不可欠で
あり、ネットワーク・プロセッサ・ハードウェア補助機
構48は、これらの複合ルール・セットを配線速度で実
施する。フィルタ・ルールは、IPヘッダ情報に基づ
き、フレームを拒絶または許可し、あるいはサービスの
品質(QoS)を割り当てることができる。ルールを前
処理するための制御点ソフトウェアは、論理エラーを自
動的に訂正する。論理的に正しいルール・セットが入力
された後、パケット・ヘッダ情報からキーが形成され、
ネットワーク・プロセッサのソフトウェア管理されるツ
リーを用いて、配線速度で試験される。
【0032】幾何学的ハッシュ関数はIPヘッダの統計
的構造を利用して、理想的ランダム・ハッシュより優れ
た性能を発揮する。したがって、低衝突率は、追加的解
決サーチ無しで、完全一致テーブルの高速ルックアップ
を可能にする。
【0033】プロトコル・プロセッサの実行と並行して
作動して、ツリー・サーチ・エンジン70はツリー・サ
ーチ命令(メモリ読出し、書込み、または読み書き)、
メモリ範囲検査、および不正メモリ・アクセス通知を実
行する。図14は、ツリー・サーチ・エンジンの例示的
実施形態を示す。
【0034】ネットワーク・プロセッサ10内で2つの
システム制御オプションが利用可能である。内部プロセ
ッサ34は、システムの制御点(CP)プロセッサとし
て機能することができ、または代替的に、初期化および
構成のために4つのイーサネット・マクロの1つに外部
プロセッサ接続することができる。CPプロセッサ34
は、誘導フレームと呼ばれる特殊なイーサネット・フレ
ームを構築することによって、ネットワーク・プロセッ
サ内の他のプロセッサ・エンティティと通信する。誘導
フレームはDASLリンクをまたいで他の装置へ転送す
ることができ、単一のイーサネット・ポートに接続され
た1つのCPプロセッサが、サブシステム内に含まれる
全てのネットワーク・プロセッサ装置と通信してそれら
を制御することを可能にする。各ネットワーク・プロセ
ッサ10の内部プロセッサ34はまた、別個の32ビッ
トPCIバスを用いて通信することもできる。
【0035】ネットワーク・プロセッサ10は通常サブ
システム・ボード上にあり、プロトコル層(つまりレイ
ヤ2、レイヤ3、レイヤ4およびより高いレイヤ)のフ
レーム処理を行う。CPサブシステム内のCPプロセッ
サ34上で作動するソフトウェアは、管理および経路発
見機能を提供する。CPコード、プロトコル・プロセッ
サ上で作動するピココード、および誘導フレーム・ハン
ドラ上で作動するピココードは、このシステムの初期
化、転送経路の維持、およびシステムの管理を可能にす
る。分散システムとして、CPおよび各ネットワーク・
プロセッサ・サブシステムは、効率および性能の向上の
ため、誘導フレームを使用して並行して作動したり通信
する複数のプロセッサを含む。
【0036】データ・フレームはPMM22によってメ
ディアから受信され、データ記憶バッファ42に転送さ
れる。PMMはまた、受信プロセス中にCRC検査およ
びフレーム妥当性検証をも実行する。ディスパッチャ5
0は、フレーム・ルックアップのために利用可能なプロ
トコル・プロセッサ40に最高64バイトまでのフレー
ム情報を送信する。分類ハードウェア補助機構48は制
御データを供給して、フレーム・フォーマットを識別す
る。プロトコル・プロセッサ40は制御データを使用し
て、固定マッチ・ツリー、最長プレフィックス・マッチ
・ツリー、またはソフトウェア管理ツリーをはじめ、適
用すべきツリー・サーチ・アルゴリズムを決定する。
【0037】ルックアップは、ツリー・サーチ・エンジ
ン(TSE)70を用いて実行される。TSE70は制
御メモリ72へのアクセスを実行し、プロトコル・プロ
セッサ40が実行を続けることを可能にする。制御メモ
リ72は全てのテーブル、カウンタ、およびピココード
によって必要とされるその他のデータを記憶する。効率
のために、制御メモリ・アービタ52は、プロトコル・
プロセッサ40と様々なオンチップおよびオフチップ制
御メモリ・オプション54との間でメモリ・サイクルを
割り当てることによって、制御メモリ動作を管理する。
【0038】プロトコル・プロセッサ40は、データ記
憶動作のために、一次データ・バッファ、スクラッチ・
パッド・データ・バッファ、および制御レジスタ(集合
的に72)を含む。ひとたび一致が見つかると、VLA
Nヘッダ挿入またはオーバレイなど、イングレス・フレ
ーム変更を適用することができる。これらの変更は、E
PC12によっては実行されない。代りに、ハードウェ
ア・フラッグがセットされた場合に、イングレス・スイ
ッチ・インタフェース・ハードウェア18がこの変更を
実行する。他のフレーム変更は、ピココードおよびデー
タ記憶コプロセッサ64により、イングレス・データ記
憶装置42内に保持されたフレーム内容を変更すること
によって、達成することができる。
【0039】フレームをスイッチ構造に送る前に、スイ
ッチ・ヘッダおよびフレーム・ヘッダを構築するため
に、制御データが収集され使用される。制御データは、
フレームの宛先などのスイッチ情報のみならず、エグレ
ス・ネットワーク・プロセッサのための情報をも含み、
それが宛先ポートのフレーム・ルックアップ、マルチキ
ャストまたはユニキャスト・オペレーション、およびエ
グレス・フレーム変更を促進するのを助ける。
【0040】図4は、例示的なイングレスおよびエグレ
ス・フレームの流れを示す。完了後、エンキュー・コプ
ロセッサ66は、フレームをキュー制御ブロック(QC
B)74に入れるために必要なフォーマットを作成し、
それらを完了ユニット46に転送する。完了ユニット4
6は、最高16のプロトコル・プロセッサ40からスイ
ッチ構造キュー76へのフレームの順序を保証する。ス
イッチ構造キュー76からのフレームは、それらがスイ
ッチ構造76によって転送されるときに、スイッチ・ヘ
ッダおよびフレーム・ヘッダ・バイトを挿入して、64
バイト・セルに区分化される。
【0041】スイッチ構造76から受信したフレーム
は、リアセンブリ制御ブロック(RCB)80およびE
DSエグレス44によって提供される情報を使用して、
エグレス・データ記憶バッファ78に入れられ、EPC
12に登録される。フレームの一部分は、フレーム・ル
ックアップを実行するために、ディスパッチャ50によ
ってアイドル状態のプロトコル・プロセッサ40に送ら
れる。フレーム・データは、分類ハードウェア補助機構
48からのデータと共に、プロトコル・プロセッサ40
にディスパッチされる。分類ハードウェア補助機構48
は、イングレス・ネットワーク・プロセッサによって形
成されたフレーム制御データを使用して、エグレス処理
のための開始命令アドレスを決定するのに役立つ。
【0042】エグレス・ツリー・サーチは、イングレス
・サーチのためにサポートされるのと同じアルゴリズム
をサポートする。ルックアップはTSE70で行われ、
プロトコル・プロセッサ40は自由に実行を続けること
ができる。全ての制御メモリの動作は、プロセッサ複合
体の間でメモリ・アクセスを割り当てる制御メモリ・ア
ービタ52によって管理される。
【0043】エグレス・フレーム・データは、データ記
憶コプロセッサ64を通してアクセスされる。成功した
ルックアップの結果は、転送情報、および場合によって
はフレーム変更情報を含む。エグレス・フレーム変更
は、VLANヘッダの削除、活動時間の増分(IPX)
または減分(IP)、IPヘッダ・チェックサムの再計
算、イーサネット・フレームCRCオーバレイ、および
MAC宛先アドレスまたはソース・アドレスのオーバレ
イまたは挿入を含むことができる。IPヘッダ・チャッ
クサムは、チェックサム・コプロセッサ62によって作
成される。変更が埋込み型プロセッサ複合体12によっ
て実行されるのではなく、ハードウェア・フラッグが形
成され、PMMエグレス・ハードウェア24が変更を実
行する。完了後、フレームをEDSエグレス・キュー4
4に登録するために、エンキュー・コプロセッサ46を
使用して必要なフォーマットが構築され、それらが完了
ユニット46に転送される。完了ユニット46は、最高
16のプロトコル・プロセッサから、エグレス・イーサ
ネットMACに供給するEDSエグレス・キュー44へ
のフレーム順序を保証する。完成したフレームは最終的
に、PMMエグレス・ハードウェア24によってイーサ
ネットMACまたはPOSインタフェースに送られ、物
理ポートから送り出される。
【0044】図14に示すように、ツリー・サーチ・エ
ンジン(TSE)70は、ツリーの概念を使用して情報
を格納したり検索する。検索つまりツリー・サーチのみ
ならず、挿入や削除も、たとえばMACソース・アドレ
ス、またはIPソース・アドレスとIP宛先アドレスの
連結などのビット・パターンであるキーに基づいて行わ
れる。本発明で使用するための例示的ツリー・データ構
造100を図5に示す。情報は、少なくともキー102
を含むリーフ116、118、120、122と呼ばれ
る制御ブロックに格納される(格納されたビット・パタ
ーンは実際にはハッシュ化キーである)。リーフはエー
ジング情報、またはユーザ情報などの追加情報をも含む
ことができ、それは、目標ブレードまたは目標ポート番
号などの転送情報とすることができる。リーフのフォー
マットはピココードによって定義され、オブジェクトは
内部または外部制御記憶装置に入れられる。
【0045】ツリーのサーチ・アルゴリズムは、キー1
02を含む入力パラメータに作用し、キーにハッシュ1
04を実行し、直接テーブル(DT)108にアクセス
し、パターン・サーチ制御ブロック(PSCB)11
0、112、114を通してツリーのウォーク・スルー
を実行し、リーフ116、118、120、122で終
了する。各種のツリーはそれ自体のサーチ・アルゴリズ
ムを持ち、異なるルールに従ってツリーのウォークを行
わせる。たとえば固定マッチ(FM)ツリーの場合、デ
ータ構造はパトリシア・ツリー・である。リーフが見つ
かると、このリーフは、入力キー102と一致すること
ができる唯一の可能な候補である。「最後の比較」演算
で、入力キー102はリーフに格納されたパターンと比
較される。これにより、リーフが本当に入力キー102
と一致するかどうかが確認される。このサーチの結果
は、リーフが見つかり、かつ一致が発生した場合には成
功(OK)であり、その他の場合は全て失敗(KO)で
ある。
【0046】サーチ演算の入力は、次のパラメータを含
む。 キー サーチまたは挿入/削除の前に、専用ピココー
ド命令を使用して、176ビット・キーを構築しなけれ
ばならない。キー・レジスタは1つしか無い。しかし、
ツリー・サーチが始動した後、ピココードによってキー
・レジスタを使用して、TSE70でサーチを実行する
と同時に次のサーチのためのキーを構築することができ
る。これは、TSE70がキーをハッシュ化し、結果を
内部192ビットHashedKeyレジスタ106に格納する
からである。 キー長 この8ビット・レジスタは、キー長から1ビ
ットを引いたものを含む。それは、キーの構築中に、ハ
ードウェアによって自動的に更新される。 LUDefIndex これは、サーチが行われるツリーの完全
な定義を含むルックアップ定義テーブル(LuDefTable)
内の8ビット・インデックスである。LUDefTableの内部
構造を図11に示す。 TSRNr サーチ結果は、1ビット・ツリー・サー
チ結果領域TSR0またはTSR1に格納することがで
きる。これは、TSRNrによって指定される。TSE
がサーチを行っている間、ピココードは他のTSRにア
クセスして、前のサーチの結果を分析することができ
る。 色 色がイネーブルされた(LUDefTableで指定され
る)ツリーの場合、ハッシュ演算中に、16ビット色レ
ジスタ124の内容がキーに挿入される。
【0047】FMツリーの場合、入力キーは、図4に示
すようにHashedKey106にハッシュ化される。利用可
能な幾つかの固定アルゴリズムがある。使用されるアル
ゴリズムは、LUDefTableで指定される。
【0048】ルックアップ定義テーブルは、ツリー・サ
ーチ・メモリを管理する主要構造である。LUDefTableは
内部メモリ構造であり、ツリーを形成するために128
のエントリを含む。LUDefTableは、ツリーが存在する物
理メモリ(たとえばDRAM、SRAM、内部RA
M)、キャッシングがイネーブルされるかどうか、キー
およびリーフのサイズ、ならびに実行すべきサーチ動作
の種類を定義するエントリを含む。LUDefTableは、3つ
の別個のランダム・アクセス・メモリ、つまり一般プロ
セッサ・ツリー・ハンドラ(GTH)によってのみアク
セス可能な1つのRAM、および相互の複製であり全て
のピコプロセッサによってアクセス可能な2つのRAM
として実装される。
【0049】ハッシュ関数104の出力は常に176ビ
ットの数字であり、元の入力キー102とハッシュ関数
104の出力との間に1対1の対応があるという特性を
有する。以下で説明するように、この特性により、直接
テーブル108の後に始まるツリーの深さは最小にな
る。
【0050】図4の例の場合のように、ツリーに色がイ
ネーブルされている場合、16ビットの色レジスタ12
4が176ビットのハッシュ関数出力に挿入され、ファ
イル結果はHashedKey106と呼ばれる192ビットの
数字となる。挿入は、直接テーブル108の直後に行わ
れる。直接テーブル108に2N個のエントリが含まれ
る場合には、図4に示すように、16ビットの色値がビ
ット位置Nに挿入される。ハッシュ関数の出力は、挿入
された色値と一緒に、HashedKeyレジスタ106に格納
される。ツリーに対して色がディセーブルされている場
合、176ビットのハッシュ関数が変更されずに使用さ
れ、ハッシュ出力に16個のゼロが付加され、192ビ
ットの最終HashedKeyが生成される。
【0051】色は、複数の独立ツリーの間で単一の直接
テーブル108を共用するために使用することができ
る。たとえば色の1つの用途は、MACソース・アドレ
ス(SA)テーブル内のVLAN IDとすることがで
きる。この場合、入力キー102はMAC SAとな
り、色124はVLAN IDとなる(VLAN ID
は12ビットなので、色の4ビットは使用されず、つま
りゼロに設定される)。ハッシュ関数104の後、使用
されるパターンは48+16=64ビットである。色は
今やパターンの一部であり、異なるVLANのMACア
ドレスを区別する。
【0052】ハッシュ関数104は、その出力における
大部分のエントロピーが最上位ビットに入るように定義
される。HashedKeyレジスタ106の最上位のNビット
は、直接テーブル(DT)108内のインデックスを計
算するために使用される。
【0053】ツリーを実装する第1構造は、直接テーブ
ル(DT)108と呼ばれる。N個の要素を持つDTテ
ーブルの各エントリはキーに対応し、その最初のlog
2Nビットは、二進形でDTテーブルのそのエントリの
インデックスと同じである。たとえば、16個のエント
リのあるDTテーブルにおける5番目のエントリは、最
初の3ビットが「0101」であるキーに対応する。最
初のlog2NビットがDTのインデックスと同じであ
るキーに対応するリーフが無い場合、そのエントリは空
と印される。これらのビットに一致するリーフが1つし
か無い場合には、そのエントリの中にリーフのポインタ
がある。このポインタは、そのリーフが格納されている
メモリのアドレスである。最初のビットが同一であるキ
ーに対応するリーフが複数ある場合には、DTエントリ
はPSCB構造110を指し、また次の試験ビット(N
BT)フィールド126をも含む。これらの2つの構造
について、以下で説明する。
【0054】DTテーブル108はメモリに実装され、
そのサイズ(長さ)および開始点はプログラム可能であ
る。別のプログラム可能な特徴は、直接リーフと呼ばれ
るものを使用することである。DTエントリでリーフを
指し示した場合、その後でリーフを読み出さなければな
らないが、そうする代りにDTエントリの位置にリーフ
を格納することができる。これは、直接リーフと呼ばれ
る。これに伴う問題は、言うまでもなく、DTエントリ
により多くのメモリを使用することによる速度のトレー
ドオフである。メモリ・サイズ(その幅)はリーフを収
容するのに充分でなければならず、かつ、全てのDTエ
ントリにリーフが格納されるわけではない。しかし、キ
ーの優れたハッシュ関数の結果、リーフのほとんどを単
一のDTエントリに付加させることができるので、速度
のトレードオフが大きくなることがある。
【0055】要するに、DTエントリは空になることが
ある。この場合、このDTエントリにはリーフが付加さ
れない。DTエントリは、このDTエントリに付加され
た単一のエントリを指し示すことができる。この場合、
DTエントリはパターン・サーチ制御ブロック(PSC
B)を指し示すことができ、またそのPSCBの次の試
験ビット(NBT)を含むこともできる。このDTエン
トリに付加されるリーフが2つ以上ある。最後に、DT
エントリは直接リーフを含むことができる。
【0056】PSCBは、ツリーの分岐を表す。好まし
い実施形態では、0分岐および1分岐がある。PSCB
から発する分岐の数は、分岐を指定するために使用され
るビット数によって異なる。nビットが使用される場合
には、そのPSCBに2n個の分岐が定義される。各P
SCBはまた、ビット位置pにも関連付けられる。PS
CBから0分岐を通して到達できる全てのリーフは、パ
ターンの位置pに「0」を持ち、1分岐を通して到達で
きるリーフは位置pに「1」を持つ。さらに、PSCB
から到達することのできる全てのリーフは常に、ビット
0・・・p−1が同一のパターンを持つ。つまり、パタ
ーンは位置pから異なり始める。PSCBに関連付けら
れるビット位置は前PSCBまたはDTエントリに格納
され、NBT(つまり次の試験ビット)と呼ばれる。P
SCBエントリのフォーマットは、DTエントリのフォ
ーマットと同一である。それはランダム・アクセス・メ
モリに実装される。
【0057】したがって、PSCBはツリーのリーフ・
パターンが異なる位置に挿入されるだけである。PSC
Bの数、およびしたがってサーチ性能は、ツリー内のリ
ーフの数にのみ依存し、パターンの長さには依存しない
ので、これにより効率的なサーチ演算が可能になる。P
SCBレジスタ・フォーマットを図12に示す。
【0058】要するに、PSCBエントリは空になるこ
とができ、リーフを指すことができ、または別のPSC
Bを指すことができ、かつ次の試験ビット(NBT)を
PSCBに含むこともできる。FM PSCBは、以下
で詳述する通り、1の幅、および1の高さによって定義
される形状を持つ。
【0059】PSCBは、2ビット以上に対応する分岐
を表すことができる。この場合、たとえば、2ビットに
対応するPSCBは、4つのPSCBエントリ、つまり
00分岐エントリ、01分岐エントリ、10分岐エント
リ、および11分岐エントリを持つことになる。各ツリ
ーは、様々なビット数に対応するPSCBを持つことが
できる。この場合、前PSCBは、これらのビットが表
すビット数のみならず、次のPSCBに対応するビット
数をも持つことになる。
【0060】実際の実装では、キーは専用キー・レジス
タ102に挿入される。次いでそれはハッシュ化され1
04、結果はハッシュ化キー・レジスタ106に格納さ
れる。ハッシュ関数104はプログラム可能であり、関
数の1つは空ハッシュ関数である(つまり、ハッシュ無
し)。ハッシュ化キーの最初のnビットは、DTテーブ
ル108のインデックスとして使用される。1つのプロ
グラム可能な機能は、DTエントリのインデックスに使
用されるビットの直後にビット・ベクトルを挿入するこ
とである。このビット・ベクトルは「色」値(レジスタ
124)と呼ばれ、ハッシュ化キーおよび挿入された色
値の結果は、ハッシュ化キー・レジスタ106内に格納
される。
【0061】FMツリーのリーフのフォーマットは、パ
ターンを含む制御情報を含む。パターンは、リーフをツ
リー内で一意のものとして識別する。リーフはまた、ツ
リー・サーチを開始したアプリケーションによって必要
とされるデータをも含む。リーフに含まれるデータはア
プリケーションによって異なり、そのサイズまたはメモ
リ要件は、そのツリーのLUDefTableエントリによって定
義される。図13は、FMツリーの固定リーフ・フォー
マットを示す。
【0062】DTエントリを処理するステップは次の通
りである。 ・DTエントリがメモリから読み出される。 ・DTエントリが空エントリである場合、これは、最初
の「n」ビットがハッシュ化キーと同一であるリーフが
ツリー内に無いことを意味しているので、サーチは失敗
する。 ・DTエントリにリーフのポインタがある場合には、D
T108からのポインタをリーフのアドレスとして使用
して、メモリからリーフが読み出される。リーフはレジ
スタに格納され、キーと比較される。このステップは、
最後の比較と呼ばれる。完全一致が存在する場合、ツリ
ー・サーチは成功する。それ以外では、ツリー・サーチ
は失敗する。 ・DTエントリがPSCB110のポインタおよびNB
Tを持つ場合、NBTは最初に特定のレジスタに格納さ
れる。次いでNBT数は、キー内のNBT位置のビット
を見つけるために使用される。そのビット(0または
1)をPSCBのポインタと共に使用して、正確なPS
CBエントリが抽出される。つまり、そのビットはポイ
ンタの終わりに付加され、PSCBのメモリ内の完全な
アドレスを提供する。PSCBは読み出され、特定のレ
ジスタに格納される。次いでハードウェアはPSCBエ
ントリを処理する。この時点で、アルゴリズムはツリー
を下方に辿るウォークを開始する。
【0063】PSCBエントリを処理するステップは次
の通りである。 ・PSCBエントリが空エントリである場合、これは、
最初のNBTビットがキーと同一であるリーフがツリー
内に無いことを意味するので、サーチは失敗する。 ・PSCBにリーフのポインタがある場合には、PSC
Bからのポインタをリーフのアドレスと使用して、メモ
リからリーフが読み出される。リーフはレジスタに格納
され、キーと比較される。このステップは、最後の比較
と呼ばれる。完全一致が存在する場合、ツリー・サーチ
は成功する。それ以外では、ツリー・サーチは失敗す
る。 ・PSCBがPSCBのポインタおよびNBTを持つ場
合、NBTは最初に特定のレジスタに格納され、これは
現在のNBTになる。次いでこのNBT数は、キー内の
NBT位置のビットを見つけるために使用される。その
ビット(0または1)をPSCBのポインタと共に使用
して、正確な次のPSCBエントリが抽出される。その
ビットはポインタの終わりに付加され、PSCBのメモ
リ内の完全なアドレスを提供する。PSCBは読み出さ
れ、特定のレジスタに格納される。次いでハードウェア
は、PSCBエントリのこの処理を繰り返す。
【0064】ツリー・ウォーク中、リーフの全てのビッ
トが試験されるのではなく、PSCB(ツリーの分岐)
があるビットだけが試験される。したがって、リーフが
見つかったら、リーフのパターンをキーと比較して、全
てのビットが一致することを確認しなければならない。
これが、このアルゴリズムの演算の最後の比較の理由で
ある。サーチの成否は、完了フラッグと共にOK/KO
フラッグによって印される。完了フラッグがトリガされ
ると、このFMツリー・サーチ・エンジンを使用するプ
ログラムまたはハードウェアは、OK/KOフラッグを
調べることができる。
【0065】「プログラム可能」と記載されたものは全
て、そのツリーに対応する特定のレジスタ値に設定する
ことができる。エンジンがN個のツリーをサポートする
必要がある場合には、これらの値がN個、レジスタ・ア
レイに入れられる。このレジスタには、プログラム可能
な値、つまり使用するハッシュ関数、DTテーブルの開
始、そのサイズ等が符号化される。
【0066】ハードウェアの1つの能力として、キーの
自動挿入(ハードウェア挿入)がある。(ハッシュ化さ
れた)キーのサーチを進めながら、不一致(KO)があ
った場合、ハードウェアを使用して進行中にPSCBを
形成することによって、そのポイントにリーフを自動的
に挿入することができる。この場合、完全一致ツリーの
概念をキャッシュとして使用することができる。
【0067】サーチは、直接テーブル108へのアクセ
スにより開始される。つまり、DTエントリは直接テー
ブル108から読み出される。DTエントリを読み出す
ために使用されるアドレスは、HashedKeyの最高位Nビ
ットからだけでなく、ルックアップ定義テーブル(LUDe
fTable)で定義されるツリー特性に基づいても計算され
る。DTエントリは、ツリーのルートとみることができ
る。実際のツリー・データ構造は、ツリーの型に依存す
る。パトリシア・ツリー・データ構造はFMツリーに使
用され、パトリシア・ツリーの延長はLPMおよびSM
Tツリーに使用される。
【0068】8つのエントリのあるDT108の使用例
を図6に示す。サーチ時間つまりアクセスしなければな
らないPSCBの数は、DT108を使用することによ
って減少できることが分かる。したがって、DTサイズ
を増加することによって、メモリの使用量とサーチ性能
との間でトレードオフを行うことができる。
【0069】性能上の理由から、DTエントリを読み出
して、そこにリーフのポインタが含まれることを見出す
だけでは不十分であり、その後でリーフ自体を読み出さ
なければならない。この状況は、DTエントリ当たりの
単一リーフ・エントリが多数存在するFMツリーの場
合、非常にしばしば発生する。直接リーフの概念は、よ
り多くのメモリの使用量とより優れた性能との間のトレ
ードオフを可能にする。
【0070】ツリーは直接リーフをイネーブルすること
ができ、これはルックアップ定義テーブル(LUDefTabl
e)で指定される。直接リーフをイネーブルしたツリー
とディセーブルしたツリーとの相違を、図7に示す。直
接リーフがイネーブルされ、DTエントリが単一リーフ
を含む場合、このリーフ130はDTエントリ自体に直
接格納される。それ以外の場合、DTエントリはリーフ
のポインタを含む。
【0071】形状設定はツリー・サーチ・メモリ(TS
M)の特徴であり、リーフまたはPSCBのようなオブ
ジェクトをTSMにどのように格納するかを指定するた
めに使用される。形状は幅および高さパラメータによっ
て定義される。オブジェクトの高さは、オブジェクトが
格納される連続アドレス場所の数を示す。オブジェクト
の幅は、オブジェクトが格納される連続バンクの数を示
す。幅および高さについて、ハードウェアは自動的に適
切な数の場所を読み出す。ピココードの観点から、オブ
ジェクトはアクセスの最小単位である。幅は、SRAM
に格納されたオブジェクトの場合、常に1としなければ
ならない。幅は、DRAMのオブジェクトの場合、2以
上にすることができる。単一メモリ場所内に収まる充分
に小さいオブジェクトは、1の高さおよび1の幅を持つ
ように定義される。直接リーフをディセーブルしたDT
エントリの形状は常に(W=1、H=1)である。DT
エントリがダイナミック・ランダム・アクセス・メモリ
(DRAM)に格納される場合、それはちょうど64ビ
ットを占有する。直接リーフをイネーブルしたDTエン
トリの形状は、リーフの形状に等しく、それはLUDefTab
leに指定される。一般的に、これは、DT108によっ
て使用されるメモリを増加させる。それはまた、DTエ
ントリのアドレス計算に対するリーフの形状の影響を生
じさせる。
【0072】DTエントリが読み出された後、DTエン
トリが直接リーフを含まず、空でもないと仮定して、D
Tエントリから始まるツリーをウォークすることによっ
て、サーチが続行される。ツリー・ウォークは、リーフ
に達するまで幾つかのPSCB(パターン・サーチ制御
ブロック)を通過することができる。
【0073】FMツリーのサーチ中にPSCBに遭遇す
ると、ツリー・サーチ・エンジン・ハードウェア70
は、HashedKeyのビットpの値によって、0分岐または
1分岐にツリー・ウォークを続行する。
【0074】ツリー・ウォーク中、HashedKeyの全ての
ビットが試験されるのではなく、PSCBがあるビット
だけが試験される。したがって、リーフが見つかった
ら、リーフのパターンをまだHashedKeyと比較して、全
てのビットが一致することを確認しなければならない。
リーフに格納されているのはHashedKeyであって、元の
入力キーではないことに注意されたい。FMリーフが見
つかったら、次の操作が実行される。 ステップ1:リーフ・パターンがHashedKeyと比較され
る。一致が発生すると、操作はステップ2に進む。そう
でない場合、リーフが別のリーフへのチェーン・ポイン
タを含むならば、このリーフが読み出され、パターンが
再びHashedKeyと比較される。一致せず、かつNLAフ
ィールドが無ければ、サーチは失敗(KO)で終了す
る。 ステップ2:ベクトル・マスクがイネーブルされている
場合、VectorIndex数を持つビットがリーフのベクトル
・マスクから読み出される。このビットは、サーチ結果
の一部として返される。サーチは成功(OK)で終了す
る。
【0075】図10は、本発明の完全一致サーチ・アル
ゴリズムの処理論理を示す。処理は、論理ブロック10
00で入力キーの読出しから始まる。次いで入力キー
に、論理ブロック1002に示すようにハッシュ関数が
行われる。入力キーでハッシュ化を行なってハッシュ化
キーを形成することは、任意選択である。ハッシュ関数
は、ハッシュ化キーの最左端ビット、つまり直接テーブ
ルをアドレス指定するために使用されるビットでエント
ロピーが最高となるように、選択される。ハッシュ関数
は可逆である。つまり、ハッシュ化キーを入力キーに変
換できる逆方向ハッシュ関数が存在する。次に、論理ブ
ロック1004で、直接テーブルが読み出される。ハッ
シュ化キーの上位Nビット(それによりNは構成可能で
ある)は、直接テーブルのインデックスとして使用され
る。読み出されたエントリが空である場合、サーチはK
O(一致が見つからない)を返す。これは、終了ブロッ
ク1006によって示される。決定ブロック1008に
示すように、エントリがリーフを指し示すか否かに関し
て決定が行われる。DTエントリがリーフを指し示す場
合には、論理ブロック1010に示すように、そのリー
フが読み出される。そうでない場合には、DTエントリ
はPSCBを指し示す。この場合、論理ブロック101
2に示すように、PSCBの適切な部分が読み出され
る。完全一致サーチの場合、PSCBは2つのエント
リ、つまり0部分と1部分を含む。前PSCB(または
DTエントリ)は、ビット番号(NBT:試験する次の
ビット)を含む。NBTは、どのPSCBエントリを使
用するかを選択するハッシュ化キー内のビット(つまり
0または1)を選択する。PSCBエントリは、リーフ
のポインタまたは別のPSCBのポインタのいずれかを
含む。次いで、処理は決定ブロック1008にループバ
ックする。決定ブロック1008でリーフが見つかり、
論理ブロック1010で読み出されると、論理ブロック
1014で示すように、リーフに格納されたパターンが
1ビットずつハッシュ化キーと比較される。決定ブロッ
ク1016に示すように、全てのビットが一致すると、
サーチは、終了ブロック1018に示すように、OK
(一致の成功)を返す。次いで、リーフの内容はアプリ
ケーションに渡される。一致しない場合、終了ブロック
1020に示すように、サーチはKO(失敗)を返す。
この処理論理の延長として、ハッシュ化キーからのbビ
ットでどのエントリをPSCBから読み出すかを選択す
るように、PSCBは2b個のエントリで構成すること
ができる。これにより、より多くのメモリ使用量を犠牲
にして、性能が増強される。
【0076】ツリーのサーチ性能を増強するために、キ
ャッシュを使用することができる。キャッシュの使用
は、LUDefTableでツリー毎にイネーブルすることができ
る。サーチ中、ツリー・サーチ・エンジン70は最初に
キャッシュを検査して、HashedKeyと一致するリーフが
存在するかどうかを決定する。そのようなリーフが見つ
かると、それが返され、それ以上のサーチは必要ない。
そのようなリーフが見つからなければ、通常のサーチが
開始される。
【0077】ツリー・サーチ・エンジン・ハードウェア
70にとって、キャッシュ・ルックアップは通常のサー
チと全く同一である。したがって、入力キーはHashedKe
yにハッシュ化され、直接テーブル108のアクセスが
実行される。直接テーブル108はキャッシュとして作
動する。キャッシュ・サーチがOK(成功)を返すと、
サーチは終了する。そうでなければ、ツリー・サーチ・
エンジン70は、ハッシュ演算が行われないことを除い
て、全ツリーの第2サーチを開始する。HashedKeyレジ
スタ106の内容は再使用される。
【0078】キャッシュ・サーチを使用する場合、それ
はLUDefTableで指定することができる。キャッシュ・サ
ーチがLUDefTableエントリIを使用し、サーチがKO
(失敗)で終了すると、LUDefTableエントリI+1を使
用して、別のサーチが自動的に開始される。原則的に、
これにより複数のサーチを連鎖的に行うことができる
が、LUDefTableのエントリI+1の下にツリー全体を格
納することが推薦される。
【0079】ツリー・サーチ・エンジン70は、FMツ
リー、LPMツリー、およびSMTツリーでのハードウ
ェア・サーチ作業を行う。三種類全ての場合に、ツリー
を初期化し、維持するために変化する量のソフトウェア
が必要になる。FMツリーおよびLPMツリーのみが、
制御点プロセッサ34の介在無く、リーフの挿入および
除去を実行できる能力を持つ。この機能の使用により、
スケーラブルな構成が可能になり、かつ、必要な場合に
は、依然としてCP34がリーフを挿入または除去する
ことができる柔軟性を備えている。
【0080】FMツリーは、テーブルで固定サイズ・パ
ターンを効率的にサーチするための機構を提供する。こ
れの一例は、レイヤ2イーサネット・ユニキャストMA
Cテーブルである。イーサネット・ユニキャストMAC
アドレスは固定長の6バイトであり、厳密に一致しなけ
ればならず、さもなければ宛先は不明である。
【0081】FMツリーは、ハッシング関数から著しい
利益が得られるので、最も性能の良いツリーである。ツ
リー・サーチ・エンジンは、衝突率が非常に低い複数の
固定ハッシング関数を提供する。DT108が充分に大
きいと仮定すると、複数のリーフが単一のDTエントリ
に関連付けられる確率は非常に低い。これは1+イプシ
ロン・ルールであり、ここでイプシロンはDTエントリ
における衝突数を表す。1つのリーフを持つDTエント
リは、イプシロン=0である。したがって、ハッシング
関数を用いて、FMツリーを使用すると、イプシロンの
値は非常に小さくなるはずである。
【0082】FMツリーのDTエントリの構造は、図8
に見ることができる。各DTエントリは36ビット幅で
あり、次のフォーマットの1つを含む。 ・空のDTエントリ。このDTエントリに関連付けられ
るリーフは無い。 ・次のPSCBのポインタ。DTエントリは、PSCB
のポインタを含む。次のPSCBアドレス(NPA)フ
ィールドおよび次の試験ビット(NBT)フィールドが
有効である。 ・リーフのポインタ。DTエントリに関連付けられる単
一のリーフがある。リーフ制御ブロック・アドレス(L
CBA)は、このリーフのポインタを含む。 ・直接リーフ。DTエントリに関連付けられる単一のリ
ーフがあり、リーフはDTエントリ自体に格納される。
リーフの第1フィールドはNLAロープでなければなら
ず、これは直接リーフがループをイネーブルしなければ
ならないことを暗示する。ループとは、ツリー内のリー
フをひとつに連結するために使用される循環連結リスト
である。ピココードは「ロープをウォーク」して、ロー
プ内の全てのリーフを順次検査することができる。NL
Aの最初の2ビットは、自動的に「直接」と符号化する
ように、「10」を表すように予約されることに留意さ
れたい。直接リーフは、これがLUDefTableでイネーブル
された場合に、所与のツリーのためにだけ使用される。 ・FM PSCBは、2つのPSCBラインで構成さ
れ、各PSCBラインが図8に示す2つのフォーマット
のうちの1つを持つことができることを除いては、FM
DTエントリと同一の構造を持つ。2つのPSCBラ
インはメモリ内で連続的に割り当てられ、ツリーをウォ
ークするための分岐として使用される。次の試験ビット
(NBT)フィールドは、PSCBをウォークするため
のビット比較として使用するキーのオフセットを意味
し、2つのPSCBラインのどちらを使用するかを表
す。
【0083】7ビット値がツリーに格納される場合のF
Mツリーのサーチの一例を、図9に見ることができる。
この例は、キーの最上位3ビット(MSB)をFM D
T108へのハッシュとして使用することによって単純
化される。このツリーに格納された5つのリーフ・エン
トリ(L0−L4)がある。
【0084】第1例として、1110011のバイナリ
入力キーを想定する。最初の3ビット「111」はDT
エントリ7に指標を付け、ここでリーフL0を指すLC
BAが存在する。リーフL0はTSE70によって読み
出され、L0のパターンが入力パターンと比較される。
この例では、厳密な一致が発生し、TSEはOK(成
功)を返す。
【0085】今、1001110の入力パターンを想定
する。DTエントリ4は、NBTフィールドが3のPS
CB0のポインタを含む。これは、キーの第4ビット
「1」(ビット0はMSBつまり最上位ビット)がツリ
ーのどの分岐を選ぶかを決定することを意味する。第4
ビットは「1」なので、PSCB0の下半分が使用され
る。それが「0」であった場合、PSCB0の上半分が
使用される。各PSCBは基本的にPSCBラインの2
要素配列であり、ここで「0」のNBT値は第1要素を
指標付けし、「1」のNBT値は第2要素を指標付けす
る。したがって、PSCB0のPSCBライン1は、6
のNBTおよびPSCB2を指す次のPSCBアドレス
(NPA)を含むので、サーチが続行される。NBTが
7であり、入力パターンのビット7が「0」である場
合、L3のポインタを含むPSCB2の上半分が使用さ
れる。リーフL3を読出し、L3のパターンと入力パタ
ーンの完全比較作業を実行すると、OK(成功)が返さ
れる。
【0086】入力パターン1001100のサーチは、
前の例の場合と全く同じツリー内の経路を辿るが、最後
の比較作業は一致しないので、サーチはKO(失敗)を
返す。
【0087】本発明は、ハードウェア、ソフトウェア、
または2つの組合せで実現することができる。ここで説
明する方法を実行するために適応させた任意の種類のコ
ンピュータ・システムまたはその他の装置が適合する。
ハードウェアとソフトウェアの一般的な組合せは、ロー
ドされ実行したときに、ここで説明する方法を実行する
ようにコンピュータ・システムを制御する、汎用コンピ
ュータ・システムとすることができる。本発明はまた、
ここで説明した方法の実現を可能にする全ての機能を含
み、コンピュータ・システムにロードされたときにこれ
らの方法を実行することができる、コンピュータ・プロ
グラム製品に埋め込むこともできる。
【0088】本発明の文脈におけるコンピュータ・プロ
グラム命令またはコンピュータ・プログラムとは、情報
処理能力を有するシステムに特定の関数をすぐに、また
はa)別の言語、コードまたは表記法への変換、および
b)異なるマテリアル形式での複製、のいずれかまたは
両方が行われた後で、実行させるように意図された1組
の命令のいずれかの言語、コード(つまりピココード命
令)、または表記法による表現を意味する。
【0089】当業者は、本発明の精神および範囲から逸
脱することなく、本発明の好ましい実施形態に多くの変
更が可能であることを理解されるであろう。さらに、他
の機能を相応じて使用することなく、本発明の特徴の幾
つかを使用することが可能である。したがって、本発明
の範囲は請求の範囲によってのみ画定されるので、好ま
しい実施形態の上記の説明は、本発明の原理を解説する
ことを目的として、本発明を制限することなく、提供す
るものである。
【0090】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0091】(1)入力キーをサーチ文字列として読み
出す動作と、ハッシュ関数を使用して前記入力キーをハ
ッシュ化してハッシュ化キーを生成する動作と、前記ハ
ッシュ化キーの最上位Nビットを、各々の非空エントリ
がサーチ・ツリーの次の分岐またはリーフのポインタを
含むサーチ・ツリーの複数のルート・ノードを表すテー
ブルのインデックスとして使用する動作と、非空テーブ
ル・エントリのポインタが、対応するサーチ・ツリーの
リーフまたは次の分岐を指し示すかどうかを決定する動
作と、ポインタが対応するサーチ・ツリーのリーフを指
し示さない場合、次の分岐内容を読み出す動作と、対応
するサーチ・ツリーのリーフに達した場合、リーフ内容
を読み出し、リーフのパターンを前記ハッシュ化キーと
比較して、前記リーフ・パターンが前記ハッシュ化キー
と一致するかどうかを決定する動作と、前記リーフ・パ
ターンが前記ハッシュ化キーと一致する場合、要求する
アプリケーションに見つかったリーフの内容を返す動作
とを含む、コンピュータ処理装置によって可変長サーチ
・キーの完全一致を決定するための方法。 (2)前記サーチ・ツリーの複数のルート・ノードを表
すテーブルが2N個のエントリを含む、上記(1)に記
載の完全一致を決定するための方法。 (3)前記コンピュータ処理装置がネットワーク・プロ
セッサである、上記(1)に記載の完全一致を決定する
ための方法。 (4)前記対応するサーチ・ツリーの次の分岐の内容が
別の次の分岐を指し示す、上記(1)に記載の完全一致
を決定するための方法。 (5)前記次の分岐の内容が対応するサーチ・ツリーの
リーフを指し示す、上記(1)に記載の完全一致を決定
するための方法。 (6)前記リーフ・パターンが前記ハッシュ化キーと一
致せず、かつ別のリーフのポインタを含まない場合、一
致見つからずの標識を返すことをさらに含む、上記
(1)に記載の完全一致を決定するための方法。 (7)テーブルのインデックスが空エントリのインデッ
クスである場合、一致見つからずの標識を返すことをさ
らに含む、上記(1)に記載の完全一致を決定するため
の方法。 (8)色レジスタの内容を前記ハッシュ化キーに付加し
て最終ハッシュ化キーを提供することをさらに含む、上
記(1)に記載の完全一致を決定するための方法。 (9)ゼロの文字列を前記ハッシュ化キーに付加して最
終ハッシュ化キーを提供することをさらに含む、上記
(1)に記載の完全一致を決定するための方法。 (10)前記次の分岐のビット数が前記ハッシュ化キー
の長さを超える場合、完全一致のサーチを終了する動作
をさらに含む、上記(1)に記載の完全一致を決定する
ための方法。 (11)前記入力キーに対して使用される前記ハッシュ
関数が、前記ハッシュ化キーを前記入力キーに変換でき
る可逆ハッシュ関数である、上記(1)に記載の完全一
致を決定するための方法。 (12)前記リーフが別のリーフへのチェーン・ポイン
タを含む場合、別のリーフに格納されたパターンを読み
出し、前記パターンを前記ハッシュ化キーと比較する動
作と、前記格納されたパターンが前記ハッシュ化キーと
一致せず、かつ前記チェーンの次のリーフのポインタを
含まない場合、一致見つからずの標識を返す動作とをさ
らに含む、上記(1)に記載の完全一致を決定するため
の方法。 (13)前記リーフが別のリーフのチェーン・ポインタ
を含む場合、別のリーフに格納されたパターンを読み出
し、前記パターンを前記ハッシュ化キーと比較する動作
と、前記格納されたパターンが前記ハッシュ化キーと一
致する場合、一致発見の標識を返す動作とをさらに含
む、上記(1)に記載の完全一致を決定するための方
法。 (14)サーチすべきパターンまたはキーと、サーチ・
ツリーの第1アドレス位置を格納する直接テーブルと、
各々がサーチ・ツリーの分岐を表す複数のパターン・サ
ーチ制御ブロックと、各リーフがサーチの結果のための
アドレス位置である複数のリーフとを含む、可変長サー
チ・キーの完全一致を見つけるための複数のデータ構造
を含むコンピュータ読み出し可能な媒体。 (15)ツリー・サーチ・メモリを管理するルックアッ
プ定義テーブルをさらに含む、上記(14)に記載の完
全一致を見つけるための複数のデータ構造を含むコンピ
ュータ読み出し可能な媒体。 (16)前記ルックアップ定義テーブルは、ツリーが存
在する物理的メモリ、キーおよびリーフのサイズ、およ
び実行すべきサーチの種類を定義するエントリを含む、
上記(15)に記載の完全一致を見つけるための複数の
データ構造を含むコンピュータ読み出し可能な媒体。 (17)前記ルックアップ定義テーブルが複数のメモリ
に実装される、上記(14)に記載の完全一致を見つけ
るための複数のデータ構造を含むコンピュータ読み出し
可能な媒体。 (18)直接テーブル・エントリのフォーマットがサー
チ制御ブロック、次のパターン・サーチ制御ブロックを
指し示す次のパターン・アドレス、リーフまたは結果を
指し示すリーフ制御ブロック・アドレス、次の試験ビッ
ト、および直接リーフのうちの少なくとも1つを含む、
上記(14)に記載の完全一致を見つけるための複数の
データ構造を含むコンピュータ読み出し可能な媒体。 (19)パターン・サーチ制御ブロックのフォーマット
がサーチ制御ブロック、次のパターン・サーチ制御ブロ
ックを指し示す次のパターン・アドレス、リーフまたは
結果を指し示すリーフ制御ブロック・アドレス、および
次の試験ビットのうちの少なくとも1つを含む、上記
(14)に記載の完全一致を見つけるための複数のデー
タ構造を含むコンピュータ読み出し可能な媒体。 (20)リーフ・データ構造が1つのリーフ連鎖ポイン
タ、プレフィックス長、サーチ・キーと比較すべきパタ
ーン、および可変ユーザ・データのうちの少なくとも1
つを含む、上記(14)に記載の完全一致を見つけるた
めの複数のデータ構造を含むコンピュータ読み出し可能
な媒体。 (21)前記直接リーフは直接テーブル・エントリに直
接格納され、かつサーチ制御ブロックおよびサーチ・キ
ーと比較されるパターンを含む、上記(18)に記載の
完全一致を見つけるための複数のデータ構造を含むコン
ピュータ読み出し可能な媒体。 (22)パターン・サーチ制御ブロックが、サーチ・ツ
リーのリーフ・パターンが異なる位置に挿入される、上
記(14)に記載の完全一致を見つけるための複数のデ
ータ構造を含むコンピュータ読み出し可能な媒体。 (23)パターン・サーチ制御ブロックは1の幅および
1の高さによって定義される形状を持ち、かつ少なくと
も36ビットのライン長を有するメモリに格納される、
上記(14)に記載の完全一致を見つけるための複数の
データ構造を含むコンピュータ読み出し可能な媒体。 (24)フレーム処理を行う複数のプロトコル・プロセ
ッサおよび内部制御点プロセッサを含む埋込み式プロセ
ッサ複合体と、各プロトコル・プロセッサにアクセスで
き、高速パターン・サーチ、データ操作、およびフレー
ム・パージングをもたらす複数のハードウェア・アクセ
ラレータ・コプロセッサと、少なくとも1つのサーチ・
ツリーを表す複数のデータ構造であって、直接テーブル
とパターン・サーチ制御ブロックとリーフとを含む前記
データ構造を格納する複数のプログラム可能なメモリ装
置と、各プロトコル・プロセッサの複数のメモリ装置へ
のアクセスを制御する制御メモリ・アービタとを含む、
可変長サーチ・キーの完全一致を決定するために半導体
基板上に組み立てられた装置。 (25)プロトコル・プロセッサの実行と並行して作動
して、メモリの読み書きおよびメモリ範囲検査を含むツ
リー・サーチ命令を実行するツリー・サーチ・エンジン
をさらに含む、上記(24)に記載の完全一致を決定す
るために半導体基板上に組み立てられた装置。 (26)前記複数のメモリ装置は内部スタティック・ラ
ンダム・アクセス・メモリ、外部スタティック・ランダ
ム・アクセス・メモリ、および外部ダイナミック・ラン
ダム・アクセス・メモリの少なくとも1つをさらに含
む、上記(24)に記載の完全一致を決定するために半
導体基板上に組み立てられた装置。 (27)前記制御メモリ・アービタが、複数のプロトコ
ル・プロセッサと複数のメモリ装置との間でメモリ・サ
イクルを割り当てることによって、制御メモリ動作を管
理する、上記(24)に記載の完全一致を決定するため
に半導体基板上に組み立てられた装置。 (28)各プロトコル・プロセッサは一次データ・バッ
ファ、スクラッチ・パッド・データ・バッファ、および
データ格納動作のための制御レジスタを含む、上記(2
4)に記載の完全一致を決定するために半導体基板上に
組み立てられた装置。 (29)サーチ・キーに対して幾何学的ハッシュ関数を
実行するハッシュ・ボックス・コンポーネントをさらに
含む、上記(24)に記載の完全一致を決定するために
半導体基板上に組み立てられた装置。 (30)プログラム可能なサーチ・キー・レジスタおよ
びプログラム可能なハッシュ化キー・レジスタをさらに
含む、上記(24)に記載の完全一致を決定するために
半導体基板上に組み立てられた装置。 (31)複数の独立サーチ・ツリーの間で単一のデーブ
ル・データ構造を共用することを可能にするプログラム
可能な色キー・レジスタをさらに含む、上記(30)に
記載の完全一致を決定するために半導体基板上に組み立
てられた装置。 (32)色レジスタがイネーブルされている場合、その
内容をハッシュ出力に付加して最終ハッシュ化キーを生
成する、上記(31)に記載の完全一致を決定するため
に半導体基板上に組み立てられた装置。 (33)色レジスタがイネーブルされていない場合、同
等の数のゼロをハッシュ出力に付加して最終ハッシュ化
キーを生成する、上記(31)に記載の完全一致を決定
するために半導体基板上に組み立てられた装置。 (34)入力キーをサーチ文字列として読み出すプログ
ラム命令と、ハッシュ化キーを入力キーに変換すること
ができる可逆ハッシュ関数を使用して前記入力キーをハ
ッシュ化するプログラム命令と、前記ハッシュ化キーの
最上位Nビットを、各非空エントリがサーチ・ツリーの
次の分岐またはリーフへのポインタを含むサーチ・ツリ
ーの複数のルート・ノードを表すテーブルのインデック
スとして使用するプログラム命令と、非空テーブル・エ
ントリのポインタが対応するサーチ・ツリーのリーフま
たは次の分岐を指し示すかどうかを決定するプログラム
命令と、ポインタが対応するサーチ・ツリーのリーフを
指し示さない場合、次の分岐の内容を読み出すプログラ
ム命令と、対応するサーチ・ツリーのリーフに達したと
きにリーフ内容を読み出し、リーフのパターンをハッシ
ュ化キーと比較して、リーフ・パターンがハッシュ化キ
ーと一致するか否かを決定するプログラム命令と、リー
フ・パターンがハッシュ化キーと一致する場合、要求す
るアプリケーションに見つかったリーフの内容を返すプ
ログラム命令とを含む、可変長サーチ・キーの完全一致
を決定するためのコンピュータ・プログラム製品を含む
コンピュータ読み出し可能な媒体。 (35)サーチ・ツリーの複数のルート・ノードを表す
テーブルが2N個のエントリを含む、上記(34)に記
載の完全一致を決定するためのコンピュータ・プログラ
ム製品。 (36)前記コンピュータ処理装置がネットワーク・プ
ロセッサである、上記(34)に記載の完全一致を決定
するためのコンピュータ・プログラム製品。 (37)前記対応するサーチ・ツリーの次の分岐の内容
が別の次の分岐を指し示す、上記(34)に記載の完全
一致を決定するためのコンピュータ・プログラム製品。 (38)前記次の分岐の内容が対応するサーチ・ツリー
のリーフを指し示す、上記(34)に記載の完全一致を
決定するためのコンピュータ・プログラム製品。 (39)リーフ・パターンがハッシュ化キーと一致せ
ず、かつ別のリーフのポインタを含まない場合、一致見
つからずの標識を返すプログラム命令をさらに含む、上
記(34)に記載の完全一致を決定するためのコンピュ
ータ・プログラム製品。 (40)テーブルのインデックスが空エントリのインデ
ックスである場合、一致見つからずの標識を返すプログ
ラム命令をさらに含む、上記(34)に記載の完全一致
を決定するためのコンピュータ・プログラム製品。 (41)色レジスタの内容をハッシュ化キーに付加して
最終ハッシュ化キーを提供するプログラム命令をさらに
含む、上記(34)に記載の完全一致を決定するための
コンピュータ・プログラム製品。 (42)文字列またはゼロをハッシュ化キーに付加して
最終ハッシュ化キーを提供するプログラム命令をさらに
含む、上記(34)に記載の完全一致を決定するための
コンピュータ・プログラム製品。 (43)次の分岐のビット数がハッシュ化キーの長さを
超える場合、完全一致のサーチを終了するプログラム命
令をさらに含む、上記(34)に記載の完全一致を決定
するためのコンピュータ・プログラム製品。 (44)リーフが別のリーフのチェーン・ポインタを含
む場合、別のリーフに格納されたパターンを読み出し、
前記パターンをハッシュ化キーと比較するプログラム命
令と、格納されたパターンがハッシュ化キーと一致せ
ず、かつチェーンの次のリーフのポインタを含まない場
合、一致見つからずの標識を返すプログラム命令とをさ
らに含む、上記(34)に記載の完全一致を決定するた
めのコンピュータ・プログラム製品。 (45)リーフが別のリーフのチェーン・ポインタを含
む場合、別のリーフに格納されたパターンを読み出し、
前記パターンをハッシュ化キーと比較するプログラム命
令と、格納されたパターンがハッシュ化キーと一致する
場合、一致発見の標識を返すプログラム命令とをさらに
含む、上記(34)に記載の完全一致を決定するための
コンピュータ・プログラム製品。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態によるネットワーク
・プロセッサの例示的アーキテクチャを示すブロック図
である。
【図2】本発明の好ましい実施形態による埋込み型プロ
セッサ複合体の例示的実施形態を示すブロック図であ
る。
【図3】本発明の好ましい実施形態による例示的プロト
コル・プロセッサ構造を示すブロック図である。
【図4】本発明の好ましい実施形態による例示的イング
レスおよびエグレス・フレームの流れを示すブロック図
である。
【図5】本発明の好ましい実施形態による完全マッチ・
サーチ・アルゴリズムのためのツリー・データ構造を示
す略図である。
【図6】本発明の好ましい実施形態による直接テーブル
を使用することの例示的データ構造への効果を示す略図
である。
【図7】本発明の好ましい実施形態による直接リーブを
使用可能にすることの例示的データ構造への効果を示す
略図である。
【図8】本発明の好ましい実施形態による完全マッチ・
サーチ・ツリーのDTエントリおよびパターン・サーチ
制御ブロック(PSCB)ライン・フォーマットの例示
的構造を示す表である。
【図9】本発明の好ましい実施形態による完全マッチ・
サーチを使用するサーチの例を示す略図である。
【図10】本発明の好ましい実施形態による完全マッチ
(FM)サーチ・アルゴリズムの処理論理を示す図であ
る。
【図11】本発明の好ましい実施形態による例示的参照
定義テーブルの内部構造を示す表である。
【図12】PSCBレジスタの内部フォーマットを示す
表である。
【図13】FMツリーの固定リーフ・フォーマットを示
す表である。
【図14】本発明の好ましい実施形態によるツリー・サ
ーチ・エンジンの例示的アーキテクチャを示すブロック
図である。
【符号の説明】
10 ネットワーク・プロセッサ 12 埋込み型プロセッサ複合体 14 エンキュー・デキュー・スケジューリング論理 18 イングレス・スイッチ・インタフェース 20 エグレス・スイッチ・インタフェース 28 スタティック・ランダム・アクセス・メモリ(S
RAM) 30 ゼロ・バス・ターンアラウンドSRAM 32 ダイナミック・ランダム・アクセス・メモリ(D
RAM) 34 接続点プロセッサ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブライアン・ミッチェル・バス アメリカ合衆国27502 ノースカロライナ 州アペックス オールド・スターブリッ ジ・ドライブ4021 (72)発明者 ジャン・ルイ・カルヴィニャク アメリカ合衆国27511 ノースカロライナ 州ケアリ スプリング・ホロー・レーン 112 (72)発明者 マーコ・シー・ヘデス アメリカ合衆国27612 ノースカロライナ 州ローリー グランド・マナー・コート 4109 ナンバー308 (72)発明者 アントニオス・マラグコス アメリカ合衆国27612 ノースカロライナ 州ローリー プリンセトン・ミル・パーク ウェイ3321 アパートメント201 (72)発明者 マイケル・スティーブン・スィーゲル アメリカ合衆国27615 ノースカロライナ 州ローリー ラウリー・ドライブ10625 (72)発明者 ファブリス・ジャン・ヴェルプランケン フランス06610 ラゴード ルート・ド・ カーニュ9152

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】入力キーをサーチ文字列として読み出す動
    作と、 ハッシュ関数を使用して前記入力キーをハッシュ化して
    ハッシュ化キーを生成する動作と、 前記ハッシュ化キーの最上位Nビットを、各々の非空エ
    ントリがサーチ・ツリーの次の分岐またはリーフのポイ
    ンタを含むサーチ・ツリーの複数のルート・ノードを表
    すテーブルのインデックスとして使用する動作と、 非空テーブル・エントリのポインタが、対応するサーチ
    ・ツリーのリーフまたは次の分岐を指し示すかどうかを
    決定する動作と、 ポインタが対応するサーチ・ツリーのリーフを指し示さ
    ない場合、次の分岐内容を読み出す動作と、 対応するサーチ・ツリーのリーフに達した場合、リーフ
    内容を読み出し、リーフのパターンを前記ハッシュ化キ
    ーと比較して、前記リーフ・パターンが前記ハッシュ化
    キーと一致するかどうかを決定する動作と、 前記リーフ・パターンが前記ハッシュ化キーと一致する
    場合、要求するアプリケーションに見つかったリーフの
    内容を返す動作とを含む、コンピュータ処理装置によっ
    て可変長サーチ・キーの完全一致を決定するための方
    法。
  2. 【請求項2】前記サーチ・ツリーの複数のルート・ノー
    ドを表すテーブルが2N個のエントリを含む、請求項1
    に記載の完全一致を決定するための方法。
  3. 【請求項3】前記コンピュータ処理装置がネットワーク
    ・プロセッサである、請求項1に記載の完全一致を決定
    するための方法。
  4. 【請求項4】前記対応するサーチ・ツリーの次の分岐の
    内容が別の次の分岐を指し示す、請求項1に記載の完全
    一致を決定するための方法。
  5. 【請求項5】前記次の分岐の内容が対応するサーチ・ツ
    リーのリーフを指し示す、請求項1に記載の完全一致を
    決定するための方法。
  6. 【請求項6】前記リーフ・パターンが前記ハッシュ化キ
    ーと一致せず、かつ別のリーフのポインタを含まない場
    合、一致見つからずの標識を返すことをさらに含む、請
    求項1に記載の完全一致を決定するための方法。
  7. 【請求項7】テーブルのインデックスが空エントリのイ
    ンデックスである場合、一致見つからずの標識を返すこ
    とをさらに含む、請求項1に記載の完全一致を決定する
    ための方法。
  8. 【請求項8】色レジスタの内容を前記ハッシュ化キーに
    付加して最終ハッシュ化キーを提供することをさらに含
    む、請求項1に記載の完全一致を決定するための方法。
  9. 【請求項9】ゼロの文字列を前記ハッシュ化キーに付加
    して最終ハッシュ化キーを提供することをさらに含む、
    請求項1に記載の完全一致を決定するための方法。
  10. 【請求項10】前記次の分岐のビット数が前記ハッシュ
    化キーの長さを超える場合、完全一致のサーチを終了す
    る動作をさらに含む、請求項1に記載の完全一致を決定
    するための方法。
  11. 【請求項11】前記入力キーに対して使用される前記ハ
    ッシュ関数が、前記ハッシュ化キーを前記入力キーに変
    換できる可逆ハッシュ関数である、請求項1に記載の完
    全一致を決定するための方法。
  12. 【請求項12】前記リーフが別のリーフへのチェーン・
    ポインタを含む場合、別のリーフに格納されたパターン
    を読み出し、前記パターンを前記ハッシュ化キーと比較
    する動作と、 前記格納されたパターンが前記ハッシュ化キーと一致せ
    ず、かつ前記チェーンの次のリーフのポインタを含まな
    い場合、一致見つからずの標識を返す動作とをさらに含
    む、請求項1に記載の完全一致を決定するための方法。
  13. 【請求項13】前記リーフが別のリーフのチェーン・ポ
    インタを含む場合、別のリーフに格納されたパターンを
    読み出し、前記パターンを前記ハッシュ化キーと比較す
    る動作と、 前記格納されたパターンが前記ハッシュ化キーと一致す
    る場合、一致発見の標識を返す動作とをさらに含む、請
    求項1に記載の完全一致を決定するための方法。
  14. 【請求項14】サーチすべきパターンまたはキーと、 サーチ・ツリーの第1アドレス位置を格納する直接テー
    ブルと、 各々がサーチ・ツリーの分岐を表す複数のパターン・サ
    ーチ制御ブロックと、 各リーフがサーチの結果のためのアドレス位置である複
    数のリーフとを含む、可変長サーチ・キーの完全一致を
    見つけるための複数のデータ構造を含むコンピュータ読
    み出し可能な媒体。
  15. 【請求項15】ツリー・サーチ・メモリを管理するルッ
    クアップ定義テーブルをさらに含む、請求項14に記載
    の完全一致を見つけるための複数のデータ構造を含むコ
    ンピュータ読み出し可能な媒体。
  16. 【請求項16】前記ルックアップ定義テーブルは、ツリ
    ーが存在する物理的メモリ、キーおよびリーフのサイ
    ズ、および実行すべきサーチの種類を定義するエントリ
    を含む、請求項15に記載の完全一致を見つけるための
    複数のデータ構造を含むコンピュータ読み出し可能な媒
    体。
  17. 【請求項17】前記ルックアップ定義テーブルが複数の
    メモリに実装される、請求項14に記載の完全一致を見
    つけるための複数のデータ構造を含むコンピュータ読み
    出し可能な媒体。
  18. 【請求項18】直接テーブル・エントリのフォーマット
    がサーチ制御ブロック、次のパターン・サーチ制御ブロ
    ックを指し示す次のパターン・アドレス、リーフまたは
    結果を指し示すリーフ制御ブロック・アドレス、次の試
    験ビット、および直接リーフのうちの少なくとも1つを
    含む、請求項14に記載の完全一致を見つけるための複
    数のデータ構造を含むコンピュータ読み出し可能な媒
    体。
  19. 【請求項19】パターン・サーチ制御ブロックのフォー
    マットがサーチ制御ブロック、次のパターン・サーチ制
    御ブロックを指し示す次のパターン・アドレス、リーフ
    または結果を指し示すリーフ制御ブロック・アドレス、
    および次の試験ビットのうちの少なくとも1つを含む、
    請求項14に記載の完全一致を見つけるための複数のデ
    ータ構造を含むコンピュータ読み出し可能な媒体。
  20. 【請求項20】リーフ・データ構造が1つのリーフ連鎖
    ポインタ、プレフィックス長、サーチ・キーと比較すべ
    きパターン、および可変ユーザ・データのうちの少なく
    とも1つを含む、請求項14に記載の完全一致を見つけ
    るための複数のデータ構造を含むコンピュータ読み出し
    可能な媒体。
  21. 【請求項21】前記直接リーフは直接テーブル・エント
    リに直接格納され、かつサーチ制御ブロックおよびサー
    チ・キーと比較されるパターンを含む、請求項18に記
    載の完全一致を見つけるための複数のデータ構造を含む
    コンピュータ読み出し可能な媒体。
  22. 【請求項22】パターン・サーチ制御ブロックが、サー
    チ・ツリーのリーフ・パターンが異なる位置に挿入され
    る、請求項14に記載の完全一致を見つけるための複数
    のデータ構造を含むコンピュータ読み出し可能な媒体。
  23. 【請求項23】パターン・サーチ制御ブロックは1の幅
    および1の高さによって定義される形状を持ち、かつ少
    なくとも36ビットのライン長を有するメモリに格納さ
    れる、請求項14に記載の完全一致を見つけるための複
    数のデータ構造を含むコンピュータ読み出し可能な媒
    体。
  24. 【請求項24】フレーム処理を行う複数のプロトコル・
    プロセッサおよび内部制御点プロセッサを含む埋込み式
    プロセッサ複合体と、 各プロトコル・プロセッサにアクセスでき、高速パター
    ン・サーチ、データ操作、およびフレーム・パージング
    をもたらす複数のハードウェア・アクセラレータ・コプ
    ロセッサと、 少なくとも1つのサーチ・ツリーを表す複数のデータ構
    造であって、直接テーブルとパターン・サーチ制御ブロ
    ックとリーフとを含む前記データ構造を格納する複数の
    プログラム可能なメモリ装置と、 各プロトコル・プロセッサの複数のメモリ装置へのアク
    セスを制御する制御メモリ・アービタとを含む、可変長
    サーチ・キーの完全一致を決定するために半導体基板上
    に組み立てられた装置。
  25. 【請求項25】プロトコル・プロセッサの実行と並行し
    て作動して、メモリの読み書きおよびメモリ範囲検査を
    含むツリー・サーチ命令を実行するツリー・サーチ・エ
    ンジンをさらに含む、請求項24に記載の完全一致を決
    定するために半導体基板上に組み立てられた装置。
  26. 【請求項26】前記複数のメモリ装置は内部スタティッ
    ク・ランダム・アクセス・メモリ、外部スタティック・
    ランダム・アクセス・メモリ、および外部ダイナミック
    ・ランダム・アクセス・メモリの少なくとも1つをさら
    に含む、請求項24に記載の完全一致を決定するために
    半導体基板上に組み立てられた装置。
  27. 【請求項27】前記制御メモリ・アービタが、複数のプ
    ロトコル・プロセッサと複数のメモリ装置との間でメモ
    リ・サイクルを割り当てることによって、制御メモリ動
    作を管理する、請求項24に記載の完全一致を決定する
    ために半導体基板上に組み立てられた装置。
  28. 【請求項28】各プロトコル・プロセッサは一次データ
    ・バッファ、スクラッチ・パッド・データ・バッファ、
    およびデータ格納動作のための制御レジスタを含む、請
    求項24に記載の完全一致を決定するために半導体基板
    上に組み立てられた装置。
  29. 【請求項29】サーチ・キーに対して幾何学的ハッシュ
    関数を実行するハッシュ・ボックス・コンポーネントを
    さらに含む、請求項24に記載の完全一致を決定するた
    めに半導体基板上に組み立てられた装置。
  30. 【請求項30】プログラム可能なサーチ・キー・レジス
    タおよびプログラム可能なハッシュ化キー・レジスタを
    さらに含む、請求項24に記載の完全一致を決定するた
    めに半導体基板上に組み立てられた装置。
  31. 【請求項31】複数の独立サーチ・ツリーの間で単一の
    デーブル・データ構造を共用することを可能にするプロ
    グラム可能な色キー・レジスタをさらに含む、請求項3
    0に記載の完全一致を決定するために半導体基板上に組
    み立てられた装置。
  32. 【請求項32】色レジスタがイネーブルされている場
    合、その内容をハッシュ出力に付加して最終ハッシュ化
    キーを生成する、請求項31に記載の完全一致を決定す
    るために半導体基板上に組み立てられた装置。
  33. 【請求項33】色レジスタがイネーブルされていない場
    合、同等の数のゼロをハッシュ出力に付加して最終ハッ
    シュ化キーを生成する、請求項31に記載の完全一致を
    決定するために半導体基板上に組み立てられた装置。
  34. 【請求項34】入力キーをサーチ文字列として読み出す
    プログラム命令と、 ハッシュ化キーを入力キーに変換することができる可逆
    ハッシュ関数を使用して前記入力キーをハッシュ化する
    プログラム命令と、 前記ハッシュ化キーの最上位Nビットを、各非空エント
    リがサーチ・ツリーの次の分岐またはリーフへのポイン
    タを含むサーチ・ツリーの複数のルート・ノードを表す
    テーブルのインデックスとして使用するプログラム命令
    と、 非空テーブル・エントリのポインタが対応するサーチ・
    ツリーのリーフまたは次の分岐を指し示すかどうかを決
    定するプログラム命令と、 ポインタが対応するサーチ・ツリーのリーフを指し示さ
    ない場合、次の分岐の内容を読み出すプログラム命令
    と、 対応するサーチ・ツリーのリーフに達したときにリーフ
    内容を読み出し、リーフのパターンをハッシュ化キーと
    比較して、リーフ・パターンがハッシュ化キーと一致す
    るか否かを決定するプログラム命令と、 リーフ・パターンがハッシュ化キーと一致する場合、要
    求するアプリケーションに見つかったリーフの内容を返
    すプログラム命令とを含む、可変長サーチ・キーの完全
    一致を決定するためのコンピュータ・プログラム。
JP2001091839A 2000-04-06 2001-03-28 ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装 Expired - Fee Related JP3651589B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/543,531 US6675163B1 (en) 2000-04-06 2000-04-06 Full match (FM) search algorithm implementation for a network processor
US09/543531 2000-04-06

Publications (2)

Publication Number Publication Date
JP2001357071A true JP2001357071A (ja) 2001-12-26
JP3651589B2 JP3651589B2 (ja) 2005-05-25

Family

ID=24168430

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001091839A Expired - Fee Related JP3651589B2 (ja) 2000-04-06 2001-03-28 ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装

Country Status (4)

Country Link
US (3) US6675163B1 (ja)
JP (1) JP3651589B2 (ja)
KR (1) KR100477391B1 (ja)
CN (1) CN1148687C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
JP2005513895A (ja) * 2001-12-11 2005-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・プロセッサおよびコンピュータ・システム用ハイブリッド・サーチ・メモリ
JP2006099524A (ja) * 2004-09-30 2006-04-13 Nec Commun Syst Ltd データ構造およびデータ検索方法
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
CN1305278C (zh) * 2003-07-08 2007-03-14 国际商业机器公司 路径控制器、路径控制方法

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US6928162B1 (en) * 2000-04-07 2005-08-09 International Business Machines Corporation Method and system for manipulating and telescoping a hash function
US7966421B2 (en) * 2000-06-21 2011-06-21 SAtech Group, A.B. Limited Liability Company Method and apparatus for logically expanding the length of a search key
AU2001285161A1 (en) * 2000-08-21 2002-03-04 United States Postal Services Delivery point validation system
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
KR100488414B1 (ko) * 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US20030026246A1 (en) * 2001-06-06 2003-02-06 Zarlink Semiconductor V.N. Inc. Cached IP routing tree for longest prefix search
US7054855B2 (en) * 2001-07-03 2006-05-30 International Business Machines Corporation Method and system for performing a pattern match search for text strings
US6947958B2 (en) * 2001-09-19 2005-09-20 Sony Corporation System and method for documenting composite data products
KR100456671B1 (ko) * 2001-11-24 2004-11-10 주식회사 케이티 네트워크 라우터의 고속 패킷 전달을 위한 병렬 룩업 엔진및 그 방법
US6963868B2 (en) * 2002-06-03 2005-11-08 International Business Machines Corporation Multi-bit Patricia trees
US7451182B2 (en) * 2002-06-28 2008-11-11 Intel Corporation Coordinating operations of network and host processors
US7219211B1 (en) * 2002-11-19 2007-05-15 Juniper Networks, Inc. Precompute logic for software packet processing
US7117196B2 (en) * 2002-11-22 2006-10-03 International Business Machines Corporation Method and system for optimizing leaf comparisons from a tree search
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
US7146371B2 (en) * 2002-12-05 2006-12-05 International Business Machines Corporation Performance and memory bandwidth utilization for tree searches using tree fragmentation
AU2003300303A1 (en) * 2002-12-31 2004-07-29 Globespanvirata Incorporated System and method for providing quality of service in asynchronous transfer mode cell transmission
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US6917618B2 (en) * 2003-04-02 2005-07-12 Cisco Technology, Inc. Arrangement in a router for generating a route based on a pattern of a received packet
CN1826598A (zh) * 2003-07-21 2006-08-30 皇家飞利浦电子股份有限公司 在文档中搜索的方法
US7464331B2 (en) * 2003-08-18 2008-12-09 Microsoft Corporation System and method for validating hierarchically-organized messages
US7634500B1 (en) 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7243165B2 (en) * 2004-01-14 2007-07-10 International Business Machines Corporation Parallel pattern detection engine
US7433355B2 (en) * 2004-02-09 2008-10-07 Alcatel Lucent Filter based longest prefix match algorithm
US7454396B2 (en) * 2004-04-27 2008-11-18 International Business Machines Corporation Method for compressing multi-field rule specifications
US7412431B2 (en) * 2004-04-27 2008-08-12 International Business Machines Corporation Method for managing multi-field classification rules relating to ingress
US7366728B2 (en) * 2004-04-27 2008-04-29 International Business Machines Corporation System for compressing a search tree structure used in rule classification
IL161874A (en) * 2004-05-07 2012-09-24 Yves Villaret System and method for searching strings of records
US7266548B2 (en) * 2004-06-30 2007-09-04 Microsoft Corporation Automated taxonomy generation
US8005084B2 (en) * 2004-11-30 2011-08-23 Broadcom Corporation Mirroring in a network device
US7830892B2 (en) 2004-11-30 2010-11-09 Broadcom Corporation VLAN translation in a network device
US8014390B2 (en) * 2004-11-30 2011-09-06 Broadcom Corporation Policy based routing using a fast filter processor
US7715384B2 (en) 2004-11-30 2010-05-11 Broadcom Corporation Unicast trunking in a network device
US7680107B2 (en) * 2004-11-30 2010-03-16 Broadcom Corporation High speed trunking in a network device
US7826481B2 (en) * 2004-11-30 2010-11-02 Broadcom Corporation Network for supporting advance features on legacy components
US7554984B2 (en) * 2004-11-30 2009-06-30 Broadcom Corporation Fast filter processor metering and chaining
CN101266599B (zh) * 2005-01-31 2010-07-21 日电(中国)有限公司 输入方法和用户终端装置
DK1688900T3 (da) * 2005-02-07 2007-10-08 Siemens Schweiz Ag Fremgangsmåde til bestemmelse af positionen af indretninger i et faredetekteringsanlæg
US7769858B2 (en) * 2005-02-23 2010-08-03 International Business Machines Corporation Method for efficiently hashing packet keys into a firewall connection table
CN1878164A (zh) * 2005-06-08 2006-12-13 华为技术有限公司 E.164号码域名存储和查询方法
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US7583590B2 (en) * 2005-07-15 2009-09-01 Telefonaktiebolaget L M Ericsson (Publ) Router and method for protocol process migration
US7353332B2 (en) * 2005-10-11 2008-04-01 Integrated Device Technology, Inc. Switching circuit implementing variable string matching
US7984180B2 (en) * 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7843927B1 (en) * 2006-12-22 2010-11-30 Extreme Networks, Inc. Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device
US20070162481A1 (en) * 2006-01-10 2007-07-12 Millett Ronald P Pattern index
US8116312B2 (en) 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US8266152B2 (en) * 2006-03-03 2012-09-11 Perfect Search Corporation Hashed indexing
US8176052B2 (en) * 2006-03-03 2012-05-08 Perfect Search Corporation Hyperspace index
US7792812B1 (en) * 2006-03-31 2010-09-07 Netlogic Microsystems, Inc. Search engine devices that support high speed parallel decoding of digital search tries
CN100371936C (zh) * 2006-04-03 2008-02-27 无锡永中科技有限公司 用于树型结构文件的数据查找方法
JP4271227B2 (ja) * 2006-10-30 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4271214B2 (ja) * 2006-07-07 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8150856B2 (en) * 2006-07-07 2012-04-03 S. Grants Co., Ltd. Bit string searching apparatus, searching method, and program
US20080052270A1 (en) * 2006-08-23 2008-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Hash table structure and search method
US7783654B1 (en) 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
CN100530182C (zh) * 2006-10-17 2009-08-19 中兴通讯股份有限公司 一种通信系统中字符串匹配信息的处理方法
US7805460B2 (en) * 2006-10-26 2010-09-28 Polytechnic Institute Of New York University Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string
JP4379894B2 (ja) * 2006-11-28 2009-12-09 株式会社エスグランツ カップルドノードツリーの分割/結合方法及びプログラム
US7720826B2 (en) * 2006-12-29 2010-05-18 Sap Ag Performing a query for a rule in a database
US7636717B1 (en) 2007-01-18 2009-12-22 Netlogic Microsystems, Inc. Method and apparatus for optimizing string search operations
JP4402120B2 (ja) 2007-01-24 2010-01-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4514768B2 (ja) * 2007-04-19 2010-07-28 株式会社エスグランツ カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム
JP4514771B2 (ja) * 2007-05-18 2010-07-28 株式会社エスグランツ カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム
EP2149845B1 (en) * 2007-04-19 2013-06-12 Kousokuya, Inc. Coupled node tree backup/restore apparatus, backup/restore method, and program
JP4439013B2 (ja) * 2007-04-25 2010-03-24 株式会社エスグランツ ビット列検索方法及び検索プログラム
US8266062B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Server side reversible hash for telephone-based licensing mechanism
JP4527753B2 (ja) * 2007-07-03 2010-08-18 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8312541B2 (en) * 2007-07-17 2012-11-13 Cisco Technology, Inc. Detecting neighbor discovery denial of service attacks against a router
US7912840B2 (en) * 2007-08-30 2011-03-22 Perfect Search Corporation Indexing and filtering using composite data stores
US7774347B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Vortex searching
US7774353B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Search templates
JP4527807B2 (ja) * 2007-09-14 2010-08-18 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
CN100527134C (zh) * 2007-12-04 2009-08-12 威盛电子股份有限公司 多模式搜寻的方法与系统
JP4502223B2 (ja) * 2007-12-05 2010-07-14 株式会社エスグランツ ビット列のマージソート装置、方法及びプログラム
JP4498409B2 (ja) * 2007-12-28 2010-07-07 株式会社エスグランツ データベースのインデックスキー更新方法及びプログラム
JP4567754B2 (ja) * 2008-01-17 2010-10-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US9128868B2 (en) * 2008-01-31 2015-09-08 International Business Machines Corporation System for error decoding with retries and associated methods
US8114117B2 (en) * 2008-09-30 2012-02-14 Tyco Healthcare Group Lp Compression device with wear area
JP4514810B2 (ja) * 2008-05-18 2010-07-28 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8032495B2 (en) * 2008-06-20 2011-10-04 Perfect Search Corporation Index compression
US8051085B1 (en) 2008-07-18 2011-11-01 Netlogic Microsystems, Inc. Determining regular expression match lengths
US7738454B1 (en) 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US7835357B2 (en) * 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US7796541B1 (en) 2008-09-30 2010-09-14 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US8190769B1 (en) 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
CN101556610B (zh) * 2009-05-04 2011-12-21 中兴通讯股份有限公司 网络处理器使用的建表和查表方法
US8953603B2 (en) * 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
KR100964207B1 (ko) 2009-11-13 2010-06-17 동국대학교 산학협력단 해시 기반 문서의 색인화 및 검색 방법 및 장치
US8331373B2 (en) 2010-03-15 2012-12-11 Extreme Networks, Inc. Methods, systems, and computer readable media for automatically selecting between internet protocol switching modes on a per-module basis in a packet forwarding device
US9203743B2 (en) * 2010-03-24 2015-12-01 Nec Corporation Packet forwarding system, control device, forwarding device and method and program for preparing processing rules
US8599853B2 (en) 2010-04-16 2013-12-03 Wipro Limited System and method for an exact match search using pointer based pipelined multibit trie traversal technique
CN101834907B (zh) * 2010-05-21 2012-09-05 郑州金翔软件科技有限公司 端到端纠错码存储覆盖网系统的实现方法
US8880507B2 (en) 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
CN102012911B (zh) * 2010-11-19 2012-11-14 清华大学 基于约束优化的专家匹配方法及系统
US8312066B2 (en) * 2010-11-30 2012-11-13 Telefonaktiebolaget L M Ericsson (Publ) Hash collision resolution with key compression in a MAC forwarding data structure
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
US8615015B1 (en) * 2010-12-30 2013-12-24 Juniper Networks, Inc. Apparatus, systems and methods for aggregate routes within a communications network
US10069720B2 (en) 2011-06-06 2018-09-04 Alcatel Lucent Routing by resolution
US8880494B2 (en) * 2011-07-28 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match scheme
KR101411266B1 (ko) * 2011-09-27 2014-06-25 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 그를 이용한 이벤트 처리 엔진 및 그 시스템
CN102609545A (zh) * 2012-03-14 2012-07-25 福建榕基软件股份有限公司 树型结构中快速搜索定位树结点的方法
US9172743B2 (en) * 2012-12-31 2015-10-27 Futurewei Technologies, Inc. Scalable storage systems with longest prefix matching switches
KR101461821B1 (ko) * 2013-08-29 2014-11-13 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 이를 수행하는 이벤트 처리 시스템
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
KR102158389B1 (ko) * 2013-11-06 2020-09-21 삼성전자주식회사 컨텐츠 중심 네트워크에서 패킷 특성을 고려하는 노드의 동작 방법 및 노드
JP6209098B2 (ja) * 2014-02-07 2017-10-04 富士通株式会社 データ管理プログラム、データ管理方法、及びデータ管理システム
CN104301228A (zh) * 2014-09-12 2015-01-21 中国电子科技集团公司第三十二研究所 网络处理器中查找模块的实现方法及系统
US9934246B2 (en) 2014-09-25 2018-04-03 Oracle International Corporation System and method for supporting a reference store in a distributed computing environment
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US11200217B2 (en) 2016-05-26 2021-12-14 Perfect Search Corporation Structured document indexing and searching
JP7187489B2 (ja) 2017-05-22 2022-12-12 ブロリス センサー テクノロジー,ユーエイビー 血液成分濃度レベルのリアルタイムモニタリング用の波長可変ハイブリッドiii-v/ivレーザセンサシステムオンチップ
JP7162066B2 (ja) 2018-02-02 2022-10-27 ブロリス センサー テクノロジー,ユーエイビー 広帯域波長可変レーザー及びそのレーザーシステムの波長判定
CN113282800B (zh) * 2021-05-29 2024-05-31 北京威努特技术有限公司 一种基于信息熵的动态多模匹配方法及装置
CN117874308B (zh) * 2024-03-12 2024-05-24 北京全路通信信号研究设计院集团有限公司 一种列控数据获取方法、装置、电子设备及存储介质

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121495A (en) 1988-02-02 1992-06-09 Bell Communications Research, Inc. Methods and apparatus for information storage and retrieval utilizing hashing techniques
US5202985A (en) * 1988-04-14 1993-04-13 Racal-Datacom, Inc. Apparatus and method for displaying data communication network configuration after searching the network
CA2000006C (en) * 1989-01-23 1994-07-12 Walter W. Chang Combinatorial signatures for data encoding and searching
JP2698154B2 (ja) 1989-03-31 1998-01-19 アルプス電気株式会社 キートツプの製造方法
ATE182014T1 (de) 1989-09-01 1999-07-15 Amdahl Corp Programmierbarer rechner mit automatischer übersetzung zwischen quell - und zielkode mit versionüberwachung
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
EP0520116A1 (en) * 1991-06-28 1992-12-30 International Business Machines Corporation Method and apparatus for performing pattern search functions
JPH05167640A (ja) 1991-12-11 1993-07-02 Oki Electric Ind Co Ltd 通信プロトコル実装方式
US5519858A (en) * 1992-01-10 1996-05-21 Digital Equipment Corporation Address recognition engine with look-up database for storing network information
US5418947A (en) 1992-12-23 1995-05-23 At&T Corp. Locating information in an unsorted database utilizing a B-tree
US5918225A (en) 1993-04-16 1999-06-29 Sybase, Inc. SQL-based database system with improved indexing methodology
EP0804769B1 (en) 1994-06-30 2000-02-02 International Business Machines Corporation Variable length data sequence matching method and apparatus
US5546390A (en) * 1994-12-29 1996-08-13 Storage Technology Corporation Method and apparatus for radix decision packet processing
US5815737A (en) * 1995-06-05 1998-09-29 Pmc-Sierra, Inc. Approach for identifying a subset of asynchronous transfer mode (ATM) VPI/VCI values in the complete VPI/VCI range
US5857196A (en) 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
US5852820A (en) * 1996-08-09 1998-12-22 Digital Equipment Corporation Method for optimizing entries for searching an index
US6347085B2 (en) * 1996-08-16 2002-02-12 Netspeak Corporation Method and apparatus for establishing communications between packet-switched and circuit-switched networks
US5940396A (en) * 1996-08-21 1999-08-17 3Com Ltd. Method of routing in an asynchronous transfer mode network
US5819291A (en) 1996-08-23 1998-10-06 General Electric Company Matching new customer records to existing customer records in a large business database using hash key
JP3284064B2 (ja) 1996-11-28 2002-05-20 日本電信電話株式会社 デジタル探索装置
US5978795A (en) * 1997-01-14 1999-11-02 Microsoft Corporation Temporally ordered binary search method and system
JP3520709B2 (ja) 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US6035326A (en) * 1997-05-07 2000-03-07 International Business Machines Corporation Mapping table lookup optimization system
US5893086A (en) 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US5946679A (en) 1997-07-31 1999-08-31 Torrent Networking Technologies, Corp. System and method for locating a route in a route table using hashing and compressed radix tree searching
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
JPH11122285A (ja) * 1997-10-16 1999-04-30 Fujitsu Ltd Lan電話交換装置及びシステム
US5946676A (en) * 1997-11-03 1999-08-31 Ithaca Media Corporation Information delivery system
US6012061A (en) 1997-11-25 2000-01-04 International Business Machines Corp. Method and apparatus for deleting nodes in Patricia trees
US6161144A (en) * 1998-01-23 2000-12-12 Alcatel Internetworking (Pe), Inc. Network switching device with concurrent key lookups
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes
US6396842B1 (en) * 1998-04-30 2002-05-28 3Com Corporation Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6876653B2 (en) * 1998-07-08 2005-04-05 Broadcom Corporation Fast flexible filter processor based architecture for a network device
US6560640B2 (en) * 1999-01-22 2003-05-06 Openwave Systems, Inc. Remote bookmarking for wireless client devices
GB9912129D0 (en) 1999-05-26 1999-07-28 3Com Corp Communication device with forwarding database having having a trie search facility
US6789116B1 (en) * 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
US6460120B1 (en) * 1999-08-27 2002-10-01 International Business Machines Corporation Network processor, memory organization and methods
JP2003516666A (ja) * 1999-12-10 2003-05-13 モサイド・テクノロジーズ・インコーポレイテッド 最長一致アドレスルックアップのための方法および装置
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6671725B1 (en) * 2000-04-18 2003-12-30 International Business Machines Corporation Server cluster interconnection using network processor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
JP2005513895A (ja) * 2001-12-11 2005-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・プロセッサおよびコンピュータ・システム用ハイブリッド・サーチ・メモリ
US8195705B2 (en) 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
CN1305278C (zh) * 2003-07-08 2007-03-14 国际商业机器公司 路径控制器、路径控制方法
US7460540B2 (en) 2003-07-08 2008-12-02 International Business Machines Corporation Path controller, path control method, and program therefor
US7817582B2 (en) 2003-07-08 2010-10-19 International Business Machines Corporation Path controller, path control method, and program therefor
JP2006099524A (ja) * 2004-09-30 2006-04-13 Nec Commun Syst Ltd データ構造およびデータ検索方法

Also Published As

Publication number Publication date
US7120630B2 (en) 2006-10-10
JP3651589B2 (ja) 2005-05-25
US7139753B2 (en) 2006-11-21
US20050076010A1 (en) 2005-04-07
US6675163B1 (en) 2004-01-06
KR100477391B1 (ko) 2005-03-17
CN1148687C (zh) 2004-05-05
KR20010103588A (ko) 2001-11-23
US20050177552A1 (en) 2005-08-11
CN1316696A (zh) 2001-10-10

Similar Documents

Publication Publication Date Title
JP3651589B2 (ja) ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装
JP3651783B2 (ja) パターン範囲比較実行方法、コンピュータ可読媒体および装置
US6947931B1 (en) Longest prefix match (LPM) algorithm implementation for a network processor
US7702630B2 (en) Longest prefix match lookup using hash function
US7627570B2 (en) Highly scalable subscription matching for a content routing network
TWI287723B (en) Method and data structure for a low memory overhead database
US7325059B2 (en) Bounded index extensible hash-based IPv6 address lookup method
Che et al. DRES: Dynamic range encoding scheme for TCAM coprocessors
US6985483B2 (en) Methods and systems for fast packet forwarding
US7007101B1 (en) Routing and forwarding table management for network processor architectures
CN111937360B (zh) 最长前缀匹配
US20050171937A1 (en) Memory efficient hashing algorithm
Warkhede et al. Multiway range trees: scalable IP lookup with fast updates
Iyer et al. ClassiPl: an architecture for fast and flexible packet classification
JP2003508957A (ja) ネットワーク・プロセッサ処理コンプレックス及び方法
Ficara et al. Enhancing counting bloom filters through huffman-coded multilayer structures
JPH06261078A (ja) テーブル検索方法及びルータ装置
Yu et al. Forwarding engine for fast routing lookups and updates
Patgiri et al. Shed More Light on Bloom Filter's Variants
US20070255676A1 (en) Methods and apparatus for performing tree-based processing using multi-level memory storage
JP2001237881A (ja) テーブル型データ検索機構及びそれを用いるパケット処理システム並びにそのテーブル型データ検索方法
GB2371381A (en) Tree based search method
Jing et al. An Efficient Name Look-up Architecture Based on Binary Search in NDN Networking
Yu et al. A space-and time-efficient hash table hierarchically indexed by Bloom filters
YU et al. HIGH SPEED FLOW MATCHING ALGORITHM BASED ON HASH_TREE

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040127

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20040217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040217

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040427

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040726

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041112

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050107

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050215

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

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees