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

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

Info

Publication number
JP3651589B2
JP3651589B2 JP2001091839A JP2001091839A JP3651589B2 JP 3651589 B2 JP3651589 B2 JP 3651589B2 JP 2001091839 A JP2001091839 A JP 2001091839A JP 2001091839 A JP2001091839 A JP 2001091839A JP 3651589 B2 JP3651589 B2 JP 3651589B2
Authority
JP
Japan
Prior art keywords
leaf
search
key
pattern
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.)
Expired - Fee Related
Application number
JP2001091839A
Other languages
English (en)
Other versions
JP2001357071A (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.)
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

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/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)

Description

【0001】
【発明の属する技術分野】
本発明は、一般的に、パターン・マッチング・アルゴリズムに関し、さらに詳しくは、ネットワーク処理装置に実装することができる完全マッチング・サーチ・アルゴリズムに関する。
【0002】
【従来の技術】
ますます複雑になるタスクをメディア速度でサポートするためのハードウェア統合処理の要求から、ネットワーク・プロセッサが生成された。ネットワーク・プロセッサは、1組の埋込み型プログラム可能プロトコル・プロセッサおよび相補型システム・コプロセッサにより機能柔軟性を備えた配線速度のフレーム処理および転送能力を提供する。ネットワーク・プロセッサは、今日のパーソナル・コンピュータにとってのマイクロプロセッサと同様に、ネットワークにとっての基本的ネットワーク構築ブロックになるものと期待される。ネットワーク・プロセッサは複数のデータ・ストリームの実時間処理を提供し、セキュリティの強化やIPパケット処理および転送能力をもたらす。さらに、それは、並列分散処理およびパイプライン処理設計などの高度アーキテクチャにより、速度改善をもたらす。これらの能力は効率的なサーチ・エンジンを可能にし、データ処理スループットを向上し、複雑なタスクの高速実行をもたらす。ネットワーク・プロセッサのプログラム可能な機能は、ネットワーク製品開発者に、新しい特注のアプリケーション特定的な集積回路(ASIC)の設計を必要とすることなく、新しいプロトコルおよび技術を実装するためのより容易な移行経路を提供する。
【0003】
ネットワーク・プロセッサは、インターネット・プロバイダまたはエンタープライズ・ネットワーク・プロバイダ向けの相互接続解決策を開発するための高度にカスタマイズ可能でスケーラブルな技術を提供する。ネットワーク・プロセッサは、ローエンド独立型装置から大型マルチラック解決策まで広範囲の解決策の基礎を提供する。この性質の規模変更は、高性能非ブロッキング・パケット・ルーティング・スイッチ技術、および他の産業スイッチ技術に適応できるIBM社のData Aligned Serial Link(DASL)インタフェースなど専有技術のインタフェースを使用することにより達成される。
【0004】
プログラム可能な通信集積回路として、ネットワーク・プロセッサは、非常に効率的なパケット分類、フレーム毎のマルチテーブル・ルックアップ、パケット変更、キュー/ポリシー管理、およびその他のパケット処理能力を提供する。ネットワーク・プロセッサは、スイッチング・エンジン、サーチ・エンジン、フレーム・プロセッサ、およびイーサネットMACを1つの装置に統合して、いずれかのプロトコル層でフレーム内容に基づき高容量メディア重みスイッチング・フレームを必要とする顧客の要求をサポートする。
【0005】
ハードウェア・アクセラレータは、フレーム転送、フレーム・フィルタリング、およびフレーム変更を実行する。複合範囲および動作仕様を持つ何百ものルールを実施するネットワーク・プロセッサの能力は、フィルタリング能力の新しいベンチマークを設定し、ネットワーク・プロセッサに基づくシステムを高容量サーバ・ファーム・アプリケーションに独特に適合させる。
【0006】
ネットワーク・プロセッサを用いて展開される典型的なシステムは、分散型ソフトウェア・モデルを使用し、各プログラム可能なネットワーク・プロセッサがタスクを同時に実行する。幾つかの機能は制御点(CP)プロセッサで実行され、これはネットワーク・プロセッサの内部または外部に置くことができる。CPは、レイヤ2およびレイヤ3のルーティング・プロトコル、ならびにレイヤ4およびレイヤ5のネットワーク・アプリケーションおよびシステム管理をサポートする。配線速度の転送およびフィルタリング機能は、ネットワーク・プロセッサ・ハードウェアおよび常駐ピココードの組合せによって実行される。
【0007】
多数の相互接続されたノードを含む通信ネットワークで、データは1つのノードから他のいずれかのノードまたはネットワークに送信することができる。ルータと呼ばれる特殊化されたノードは、データをその宛先に転送する能力を持つ。通信ネットワークを通して送信されるデータは、一般的にヘッダの一部として、宛先アドレスに関する情報を含む。各ルータはこの情報または少なくともその一部を、内部に格納されたアドレスのリストと比較する。格納されたアドレスと宛先アドレスとの間に一致が見つかると、ルータはその宛先ノードに通じる経路を確立する。ネットワークの規模および構造によって、データはその宛先に直接転送されるか、または他の中間ルータへ送信される。国際標準化機構(ISO)は、ルータが部分アドレスのルーティング情報を格納するルーティング規格を発表した。ルータはそこで、そのデータベースにある最もよく一致する部分アドレスにパケットを送信する。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)用のメディア・インタフェースを提供する。内部ハードウェア・アクセラレータは、性能および効率を高める。埋込み型プロセッサ複合体(EPC)12は、プロトコル・プロセッサおよびフレーム処理、構成、および管理サポートのための内部制御点プロセッサを含む。
【0023】
最高N個までの並列プロトコル・プロセッサが利用可能である。16個のプロトコル・プロセッサの実施形態の場合、16,384語の内部ピココード命令記憶装置および32,768語の外部ピココード命令記憶装置が利用可能である。毎秒212,800万個の命令(MIPS)の集合処理能力を提供することができる。さらに、各プロトコル・プロセッサは、高速パターン・サーチ、データ操作、内部チップ管理機能、フレーム・パージング、およびデータ先取りサポートを提供する、M個のハードウェア・アクセラレータ・コプロセッサにアクセスできる。好ましい実施形態では、プロトコル・プロセッサ用の制御記憶装置は、内部および外部メモリの両方、すなわち即時アクセス用の32Kの内部スタティック・ランダム・アクセス・メモリ(SRAM)28、高速アクセス用の外部ゼロ・バス・ターンアラウンド(ZBT)SRAM30、および大容量記憶要求用の外部二重データ・レート(DDR)ダイナミック・ランダム・アクセス・メモリ(DRAM)32によって提供される。
【0024】
接続された制御点プロセッサ34で作動する前処理アルゴリズムと共に埋込み型ハードウェア・アクセラレータを使用して、ネットワーク・プロセッサ10は、複合範囲、優先順位、および動作仕様を持つ100またはそれ以上のフィルタ・ルールにより、配線速度でフレームを処理することができる。これにより、ネットワーク・プロセッサに基づくシステムは、ゲートウェイ、サーバ・ファーム・アプリケーション、およびトラヒックの混合の処理に関連するフィルタリング・タスクによく適合するようになる。
【0025】
ネットワーク管理者がコヒーレントでユーザ・フレンドリーなインタフェースにフィルタ・ルールを入力すると、制御点ソフトウェアは自動論理検査を行う。安定度論理に基づき新規のフロー制御を使用して、ネットワーク・プロセッサ10は、伝送制御プロトコル(TCP)のコラプス無く、一般的に使用されるランダム早期廃棄法より高速の一時オーバサブスクリプションに耐える。ネットワーク・プロセッサ10はまた、帯域幅を自動的に割り当てることによって、Differentiated Servicesをも配信し、ネットワーク管理者は、瞬時または仮定トラヒック統計に基づき多数の閾値を設定する効果を予測する必要性から解放される。
【0026】
単一ネットワーク・プロセッサ10は、最高40までの高速イーサネット・ポートまたは4つまでのギガビット・イーサネット・ポートのメディア速度スイッチングを行う。それはまた、OC−48c、OC−48、4つのOC−12、または16のOC−3ポートをサポートするように構成することもできる。スケーラビリティのために、2つの3.5GbpsシリアルDASLリンクを使用して、2つのネットワーク・プロセッサを相互接続してポート密度を倍加するか、またはスイッチ構造を接続して最高64までのネットワーク・プロセッサによるスイッチング解を生成することができる。システムのアベイラビリティを高めるため、2つのDASLリンク、つまり1つの一次および1つの二次DASLリンクを、冗長スイッチ構造に接続することもできる。
【0027】
ネットワーク・プロセッサ10の1つの例示的実施形態は、図1に示す通り次の主要部分を含む。
1.最高16までのプログラム可能なプロセッサとコプロセッサを含む埋込み型プロセッサ複合体(EPC)12
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命令キャッシュ、専用論理演算装置(ALU)、およびコプロセッサを含み、全て133MHzで作動する。プロトコル・プロセッサのうち2つは特殊化されている。つまり、1つは誘導フレームの処理用であり(誘導フレーム・ハンドラ)、1つは制御メモリ内のルックアップ・データの構築用である(一般ツリー・ハンドラ)。
【0029】
図3は、プロトコル・プロセッサの例示的実施形態を示す。各々のプログラム可能なプロトコル・プロセッサ40に関連付けられるコプロセッサは、次の機能を果たす。
1.データ記憶コプロセッサ64は、フレーム・バッファ・メモリ42、44(イングレスおよびエグレス方向)をインタフェースして直接メモリ・アクセス(DMA)機能をもたらす。
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検査およびフレーム妥当性検証をも実行する。ディスパッチャ50は、フレーム・ルックアップのために利用可能なプロトコル・プロセッサ40に最高64バイトまでのフレーム情報を送信する。分類ハードウェア補助機構48は制御データを供給して、フレーム・フォーマットを識別する。プロトコル・プロセッサ40は制御データを使用して、固定マッチ・ツリー、最長プレフィックス・マッチ・ツリー、またはソフトウェア管理ツリーをはじめ、適用すべきツリー・サーチ・アルゴリズムを決定する。
【0037】
ルックアップは、ツリー・サーチ・エンジン(TSE)70を用いて実行される。TSE70は制御メモリ72へのアクセスを実行し、プロトコル・プロセッサ40が実行を続けることを可能にする。制御メモリ72は全てのテーブル、カウンタ、およびピココードによって必要とされるその他のデータを記憶する。効率のために、制御メモリ・アービタ52は、プロトコル・プロセッサ40と様々なオンチップおよびオフチップ制御メモリ・オプション54との間でメモリ・サイクルを割り当てることによって、制御メモリ動作を管理する。
【0038】
プロトコル・プロセッサ40は、データ記憶動作のために、一次データ・バッファ、スクラッチ・パッド・データ・バッファ、および制御レジスタ(集合的に72)を含む。ひとたび一致が見つかると、VLANヘッダ挿入またはオーバレイなど、イングレス・フレーム変更を適用することができる。これらの変更は、EPC12によっては実行されない。代りに、ハードウェア・フラッグがセットされた場合に、イングレス・スイッチ・インタフェース・ハードウェア18がこの変更を実行する。他のフレーム変更は、ピココードおよびデータ記憶コプロセッサ64により、イングレス・データ記憶装置42内に保持されたフレーム内容を変更することによって、達成することができる。
【0039】
フレームをスイッチ構造に送る前に、スイッチ・ヘッダおよびフレーム・ヘッダを構築するために、制御データが収集され使用される。制御データは、フレームの宛先などのスイッチ情報のみならず、エグレス・ネットワーク・プロセッサのための情報をも含み、それが宛先ポートのフレーム・ルックアップ、マルチキャストまたはユニキャスト・オペレーション、およびエグレス・フレーム変更を促進するのを助ける。
【0040】
図4は、例示的なイングレスおよびエグレス・フレームの流れを示す。完了後、エンキュー・コプロセッサ66は、フレームをキュー制御ブロック(QCB)74に入れるために必要なフォーマットを作成し、それらを完了ユニット46に転送する。完了ユニット46は、最高16のプロトコル・プロセッサ40からスイッチ構造キュー76へのフレームの順序を保証する。スイッチ構造キュー76からのフレームは、それらがスイッチ構造76によって転送されるときに、スイッチ・ヘッダおよびフレーム・ヘッダ・バイトを挿入して、64バイト・セルに区分化される。
【0041】
スイッチ構造76から受信したフレームは、リアセンブリ制御ブロック(RCB)80およびEDSエグレス44によって提供される情報を使用して、エグレス・データ記憶バッファ78に入れられ、EPC12に登録される。フレームの一部分は、フレーム・ルックアップを実行するために、ディスパッチャ50によってアイドル状態のプロトコル・プロセッサ40に送られる。フレーム・データは、分類ハードウェア補助機構48からのデータと共に、プロトコル・プロセッサ40にディスパッチされる。分類ハードウェア補助機構48は、イングレス・ネットワーク・プロセッサによって形成されたフレーム制御データを使用して、エグレス処理のための開始命令アドレスを決定するのに役立つ。
【0042】
エグレス・ツリー・サーチは、イングレス・サーチのためにサポートされるのと同じアルゴリズムをサポートする。ルックアップはTSE70で行われ、プロトコル・プロセッサ40は自由に実行を続けることができる。全ての制御メモリの動作は、プロセッサ複合体の間でメモリ・アクセスを割り当てる制御メモリ・アービタ52によって管理される。
【0043】
エグレス・フレーム・データは、データ記憶コプロセッサ64を通してアクセスされる。成功したルックアップの結果は、転送情報、および場合によってはフレーム変更情報を含む。エグレス・フレーム変更は、VLANヘッダの削除、活動時間の増分(IPX)または減分(IP)、IPヘッダ・チェックサムの再計算、イーサネット・フレームCRCオーバレイ、およびMAC宛先アドレスまたはソース・アドレスのオーバレイまたは挿入を含むことができる。IPヘッダ・チャックサムは、チェックサム・コプロセッサ62によって作成される。変更が埋込み型プロセッサ複合体12によって実行されるのではなく、ハードウェア・フラッグが形成され、PMMエグレス・ハードウェア24が変更を実行する。完了後、フレームをEDSエグレス・キュー44に登録するために、エンキュー・コプロセッサ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】
ツリーのサーチ・アルゴリズムは、キー102を含む入力パラメータに作用し、キーにハッシュ104を実行し、直接テーブル(DT)108にアクセスし、パターン・サーチ制御ブロック(PSCB)110、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、内部RAM)、キャッシングがイネーブルされるかどうか、キーおよびリーフのサイズ、ならびに実行すべきサーチ動作の種類を定義するエントリを含む。LUDefTableは、3つの別個のランダム・アクセス・メモリ、つまり一般プロセッサ・ツリー・ハンドラ(GTH)によってのみアクセス可能な1つのRAM、および相互の複製であり全てのピコプロセッサによってアクセス可能な2つのRAMとして実装される。
【0049】
ハッシュ関数104の出力は常に176ビットの数字であり、元の入力キー102とハッシュ関数104の出力との間に1対1の対応があるという特性を有する。以下で説明するように、この特性により、直接テーブル108の後に始まるツリーの深さは最小になる。
【0050】
図4の例の場合のように、ツリーに色がイネーブルされている場合、16ビットの色レジスタ124が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テーブルの各エントリはキーに対応し、その最初のlog2Nビットは、二進形でDTテーブルのそのエントリのインデックスと同じである。たとえば、16個のエントリのあるDTテーブルにおける5番目のエントリは、最初の3ビットが「0101」であるキーに対応する。最初のlog2NビットがDTのインデックスと同じであるキーに対応するリーフが無い場合、そのエントリは空と印される。これらのビットに一致するリーフが1つしか無い場合には、そのエントリの中にリーフのポインタがある。このポインタは、そのリーフが格納されているメモリのアドレスである。最初のビットが同一であるキーに対応するリーフが複数ある場合には、DTエントリはPSCB構造110を指し、また次の試験ビット(NBT)フィールド126をも含む。これらの2つの構造について、以下で説明する。
【0054】
DTテーブル108はメモリに実装され、そのサイズ(長さ)および開始点はプログラム可能である。別のプログラム可能な特徴は、直接リーフと呼ばれるものを使用することである。DTエントリでリーフを指し示した場合、その後でリーフを読み出さなければならないが、そうする代りにDTエントリの位置にリーフを格納することができる。これは、直接リーフと呼ばれる。これに伴う問題は、言うまでもなく、DTエントリにより多くのメモリを使用することによる速度のトレードオフである。メモリ・サイズ(その幅)はリーフを収容するのに充分でなければならず、かつ、全てのDTエントリにリーフが格納されるわけではない。しかし、キーの優れたハッシュ関数の結果、リーフのほとんどを単一のDTエントリに付加させることができるので、速度のトレードオフが大きくなることがある。
【0055】
要するに、DTエントリは空になることがある。この場合、このDTエントリにはリーフが付加されない。DTエントリは、このDTエントリに付加された単一のエントリを指し示すことができる。この場合、DTエントリはパターン・サーチ制御ブロック(PSCB)を指し示すことができ、またそのPSCBの次の試験ビット(NBT)を含むこともできる。このDTエントリに付加されるリーフが2つ以上ある。最後に、DTエントリは直接リーフを含むことができる。
【0056】
PSCBは、ツリーの分岐を表す。好ましい実施形態では、0分岐および1分岐がある。PSCBから発する分岐の数は、分岐を指定するために使用されるビット数によって異なる。nビットが使用される場合には、そのPSCBに2n個の分岐が定義される。各PSCBはまた、ビット位置pにも関連付けられる。PSCBから0分岐を通して到達できる全てのリーフは、パターンの位置pに「0」を持ち、1分岐を通して到達できるリーフは位置pに「1」を持つ。さらに、PSCBから到達することのできる全てのリーフは常に、ビット0・・・p−1が同一のパターンを持つ。つまり、パターンは位置pから異なり始める。PSCBに関連付けられるビット位置は前PSCBまたはDTエントリに格納され、NBT(つまり次の試験ビット)と呼ばれる。PSCBエントリのフォーマットは、DTエントリのフォーマットと同一である。それはランダム・アクセス・メモリに実装される。
【0057】
したがって、PSCBはツリーのリーフ・パターンが異なる位置に挿入されるだけである。PSCBの数、およびしたがってサーチ性能は、ツリー内のリーフの数にのみ依存し、パターンの長さには依存しないので、これにより効率的なサーチ演算が可能になる。PSCBレジスタ・フォーマットを図12に示す。
【0058】
要するに、PSCBエントリは空になることができ、リーフを指すことができ、または別のPSCBを指すことができ、かつ次の試験ビット(NBT)をPSCBに含むこともできる。FM PSCBは、以下で詳述する通り、1の幅、および1の高さによって定義される形状を持つ。
【0059】
PSCBは、2ビット以上に対応する分岐を表すことができる。この場合、たとえば、2ビットに対応するPSCBは、4つのPSCBエントリ、つまり00分岐エントリ、01分岐エントリ、10分岐エントリ、および11分岐エントリを持つことになる。各ツリーは、様々なビット数に対応するPSCBを持つことができる。この場合、前PSCBは、これらのビットが表すビット数のみならず、次のPSCBに対応するビット数をも持つことになる。
【0060】
実際の実装では、キーは専用キー・レジスタ102に挿入される。次いでそれはハッシュ化され104、結果はハッシュ化キー・レジスタ106に格納される。ハッシュ関数104はプログラム可能であり、関数の1つは空ハッシュ関数である(つまり、ハッシュ無し)。ハッシュ化キーの最初のnビットは、DTテーブル108のインデックスとして使用される。1つのプログラム可能な機能は、DTエントリのインデックスに使用されるビットの直後にビット・ベクトルを挿入することである。このビット・ベクトルは「色」値(レジスタ124)と呼ばれ、ハッシュ化キーおよび挿入された色値の結果は、ハッシュ化キー・レジスタ106内に格納される。
【0061】
FMツリーのリーフのフォーマットは、パターンを含む制御情報を含む。パターンは、リーフをツリー内で一意のものとして識別する。リーフはまた、ツリー・サーチを開始したアプリケーションによって必要とされるデータをも含む。リーフに含まれるデータはアプリケーションによって異なり、そのサイズまたはメモリ要件は、そのツリーのLUDefTableエントリによって定義される。図13は、FMツリーの固定リーフ・フォーマットを示す。
【0062】
DTエントリを処理するステップは次の通りである。
・DTエントリがメモリから読み出される。
・DTエントリが空エントリである場合、これは、最初の「n」ビットがハッシュ化キーと同一であるリーフがツリー内に無いことを意味しているので、サーチは失敗する。
・DTエントリにリーフのポインタがある場合には、DT108からのポインタをリーフのアドレスとして使用して、メモリからリーフが読み出される。リーフはレジスタに格納され、キーと比較される。このステップは、最後の比較と呼ばれる。完全一致が存在する場合、ツリー・サーチは成功する。それ以外では、ツリー・サーチは失敗する。
・DTエントリがPSCB110のポインタおよびNBTを持つ場合、NBTは最初に特定のレジスタに格納される。次いでNBT数は、キー内のNBT位置のビットを見つけるために使用される。そのビット(0または1)をPSCBのポインタと共に使用して、正確なPSCBエントリが抽出される。つまり、そのビットはポインタの終わりに付加され、PSCBのメモリ内の完全なアドレスを提供する。PSCBは読み出され、特定のレジスタに格納される。次いでハードウェアはPSCBエントリを処理する。この時点で、アルゴリズムはツリーを下方に辿るウォークを開始する。
【0063】
PSCBエントリを処理するステップは次の通りである。
・PSCBエントリが空エントリである場合、これは、最初のNBTビットがキーと同一であるリーフがツリー内に無いことを意味するので、サーチは失敗する。
・PSCBにリーフのポインタがある場合には、PSCBからのポインタをリーフのアドレスと使用して、メモリからリーフが読み出される。リーフはレジスタに格納され、キーと比較される。このステップは、最後の比較と呼ばれる。完全一致が存在する場合、ツリー・サーチは成功する。それ以外では、ツリー・サーチは失敗する。
・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ビットからだけでなく、ルックアップ定義テーブル(LUDefTable)で定義されるツリー特性に基づいても計算される。DTエントリは、ツリーのルートとみることができる。実際のツリー・データ構造は、ツリーの型に依存する。パトリシア・ツリー・データ構造はFMツリーに使用され、パトリシア・ツリーの延長はLPMおよびSMTツリーに使用される。
【0068】
8つのエントリのあるDT108の使用例を図6に示す。サーチ時間つまりアクセスしなければならないPSCBの数は、DT108を使用することによって減少できることが分かる。したがって、DTサイズを増加することによって、メモリの使用量とサーチ性能との間でトレードオフを行うことができる。
【0069】
性能上の理由から、DTエントリを読み出して、そこにリーフのポインタが含まれることを見出すだけでは不十分であり、その後でリーフ自体を読み出さなければならない。この状況は、DTエントリ当たりの単一リーフ・エントリが多数存在するFMツリーの場合、非常にしばしば発生する。直接リーフの概念は、より多くのメモリの使用量とより優れた性能との間のトレードオフを可能にする。
【0070】
ツリーは直接リーフをイネーブルすることができ、これはルックアップ定義テーブル(LUDefTable)で指定される。直接リーフをイネーブルしたツリーとディセーブルしたツリーとの相違を、図7に示す。直接リーフがイネーブルされ、DTエントリが単一リーフを含む場合、このリーフ130はDTエントリ自体に直接格納される。それ以外の場合、DTエントリはリーフのポインタを含む。
【0071】
形状設定はツリー・サーチ・メモリ(TSM)の特徴であり、リーフまたはPSCBのようなオブジェクトをTSMにどのように格納するかを指定するために使用される。形状は幅および高さパラメータによって定義される。オブジェクトの高さは、オブジェクトが格納される連続アドレス場所の数を示す。オブジェクトの幅は、オブジェクトが格納される連続バンクの数を示す。幅および高さについて、ハードウェアは自動的に適切な数の場所を読み出す。ピココードの観点から、オブジェクトはアクセスの最小単位である。幅は、SRAMに格納されたオブジェクトの場合、常に1としなければならない。幅は、DRAMのオブジェクトの場合、2以上にすることができる。単一メモリ場所内に収まる充分に小さいオブジェクトは、1の高さおよび1の幅を持つように定義される。直接リーフをディセーブルしたDTエントリの形状は常に(W=1、H=1)である。DTエントリがダイナミック・ランダム・アクセス・メモリ(DRAM)に格納される場合、それはちょうど64ビットを占有する。直接リーフをイネーブルしたDTエントリの形状は、リーフの形状に等しく、それはLUDefTableに指定される。一般的に、これは、DT108によって使用されるメモリを増加させる。それはまた、DTエントリのアドレス計算に対するリーフの形状の影響を生じさせる。
【0072】
DTエントリが読み出された後、DTエントリが直接リーフを含まず、空でもないと仮定して、DTエントリから始まるツリーをウォークすることによって、サーチが続行される。ツリー・ウォークは、リーフに達するまで幾つかの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は、本発明の完全一致サーチ・アルゴリズムの処理論理を示す。処理は、論理ブロック1000で入力キーの読出しから始まる。次いで入力キーに、論理ブロック1002に示すようにハッシュ関数が行われる。入力キーでハッシュ化を行なってハッシュ化キーを形成することは、任意選択である。ハッシュ関数は、ハッシュ化キーの最左端ビット、つまり直接テーブルをアドレス指定するために使用されるビットでエントロピーが最高となるように、選択される。ハッシュ関数は可逆である。つまり、ハッシュ化キーを入力キーに変換できる逆方向ハッシュ関数が存在する。次に、論理ブロック1004で、直接テーブルが読み出される。ハッシュ化キーの上位Nビット(それによりNは構成可能である)は、直接テーブルのインデックスとして使用される。読み出されたエントリが空である場合、サーチはKO(一致が見つからない)を返す。これは、終了ブロック1006によって示される。決定ブロック1008に示すように、エントリがリーフを指し示すか否かに関して決定が行われる。DTエントリがリーフを指し示す場合には、論理ブロック1010に示すように、そのリーフが読み出される。そうでない場合には、DTエントリはPSCBを指し示す。この場合、論理ブロック1012に示すように、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にとって、キャッシュ・ルックアップは通常のサーチと全く同一である。したがって、入力キーはHashedKeyにハッシュ化され、直接テーブル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イーサネット・ユニキャストMACテーブルである。イーサネット・ユニキャスト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エントリに関連付けられる単一のリーフがある。リーフ制御ブロック・アドレス(LCBA)は、このリーフのポインタを含む。
・直接リーフ。DTエントリに関連付けられる単一のリーフがあり、リーフはDTエントリ自体に格納される。リーフの第1フィールドはNLAロープでなければならず、これは直接リーフがループをイネーブルしなければならないことを暗示する。ループとは、ツリー内のリーフをひとつに連結するために使用される循環連結リストである。ピココードは「ロープをウォーク」して、ロープ内の全てのリーフを順次検査することができる。NLAの最初の2ビットは、自動的に「直接」と符号化するように、「10」を表すように予約されることに留意されたい。直接リーフは、これがLUDefTableでイネーブルされた場合に、所与のツリーのためにだけ使用される。
・FM PSCBは、2つのPSCBラインで構成され、各PSCBラインが図8に示す2つのフォーマットのうちの1つを持つことができることを除いては、FM DTエントリと同一の構造を持つ。2つのPSCBラインはメモリ内で連続的に割り当てられ、ツリーをウォークするための分岐として使用される。次の試験ビット(NBT)フィールドは、PSCBをウォークするためのビット比較として使用するキーのオフセットを意味し、2つのPSCBラインのどちらを使用するかを表す。
【0083】
7ビット値がツリーに格納される場合のFMツリーのサーチの一例を、図9に見ることができる。この例は、キーの最上位3ビット(MSB)をFM DT108へのハッシュとして使用することによって単純化される。このツリーに格納された5つのリーフ・エントリ(L0−L4)がある。
【0084】
第1例として、1110011のバイナリ入力キーを想定する。最初の3ビット「111」はDTエントリ7に指標を付け、ここでリーフL0を指すLCBAが存在する。リーフL0はTSE70によって読み出され、L0のパターンが入力パターンと比較される。この例では、厳密な一致が発生し、TSEはOK(成功)を返す。
【0085】
今、1001110の入力パターンを想定する。DTエントリ4は、NBTフィールドが3のPSCB0のポインタを含む。これは、キーの第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)各プロトコル・プロセッサは一次データ・バッファ、スクラッチ・パッド・データ・バッファ、およびデータ格納動作のための制御レジスタを含む、上記(24)に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
(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 スタティック・ランダム・アクセス・メモリ(SRAM)
30 ゼロ・バス・ターンアラウンドSRAM
32 ダイナミック・ランダム・アクセス・メモリ(DRAM)
34 接続点プロセッサ

Claims (33)

  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アドレス位置を格納する直接テーブルと、
    各々がサーチ・ツリーの分岐を表す複数のパターン・サーチ制御ブロックと、
    各リーフがサーチの結果のためのアドレス位置である複数のリーフと
    を含み、
    コンピュータ処理装置が、前記パターンまたはキーをハッシュ化してハッシュ化キーを生成し、前記ハッシュ化キーの最上位Nビットを前記直接テーブルのインデックスとして使用し、前記直接テーブルの直接テーブル・エントリのポインタが前記パターン・サーチ制御ブロックを指し示す場合、前記直接テーブル・エントリに含まれる次の試験ビットによって選択される前記ハッシュ化キー内のビットにより、リーフまたは別の次の分岐を指し示すパターン・サーチ制御ブロック・エントリのいずれかを選択するために、次のパターン・サーチ制御ブロックの分岐内容を読み出し、前記リーフに達した場合、リーフ内容を読み出し、前記リーフのパターンを前記ハッシュ化キーと比較し、前記リーフ・パターンの全てのビットと前記ハッシュ化キーとが一致する場合、前記リーフ内容を返す、可変長サーチ・キーの完全一致を見つけるための複数のデータ構造を含むコンピュータ読み出し可能な媒体。
  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つのサーチ・ツリーを表す複数のデータ構造であって、直接テーブルとパターン・サーチ制御ブロックとリーフとを含む前記データ構造を格納する複数のプログラム可能なメモリ装置と、
    各プロトコル・プロセッサの複数のメモリ装置へのアクセスを制御する制御メモリ・アービタと、
    前記プロトコル・プロセッサの実行と並行して作動して、メモリの読み書きおよびメモリ範囲検査を含むツリー・サーチ命令を実行するツリー・サーチ・エンジンと
    を含み、前記ツリー・サーチ・エンジンが、パターンまたはキーをハッシュ化してハッシュ化キーを生成し、前記ハッシュ化キーの最上位Nビットを前記直接テーブルのインデックスとして使用し、前記直接テーブルの非空エントリのポインタが、前記パターン・サーチ制御ブロックを指し示す場合、前記非空エントリに含まれる次の試験ビットによって選択される前記ハッシュ化キー内のビットにより、リーフまたは別の次の分岐を指し示すパターン・サーチ制御ブロック・エントリのいずれかを選択するために、次のパターン・サーチ制御ブロックの分岐内容を読み出し、前記リーフに達した場合、リーフ内容を読み出し、リーフ・パターンを前記ハッシュ化キーと比較し、前記リーフ・パターンの全てのビットと前記ハッシュ化キーとが一致する場合、前記リーフ内容を返す、可変長サーチ・キーの完全一致を決定するために半導体基板上に組み立てられた装置。
  25. 前記複数のメモリ装置は内部スタティック・ランダム・アクセス・メモリ、外部スタティック・ランダム・アクセス・メモリ、および外部ダイナミック・ランダム・アクセス・メモリの少なくとも1つをさらに含む、請求項24に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  26. 前記制御メモリ・アービタが、複数のプロトコル・プロセッサと複数のメモリ装置との間でメモリ・サイクルを割り当てることによって、制御メモリ動作を管理する、請求項24に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  27. 各プロトコル・プロセッサは一次データ・バッファ、スクラッチ・パッド・データ・バッファ、およびデータ格納動作のための制御レジスタを含む、請求項24に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  28. サーチ・キーに対して幾何学的ハッシュ関数を実行するハッシュ・ボックス・コンポーネントをさらに含む、請求項24に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  29. プログラム可能なサーチ・キー・レジスタおよびプログラム可能なハッシュ化キー・レジスタをさらに含む、請求項24に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  30. 複数の独立サーチ・ツリーの間で単一のデーブル・データ構造を共用することを可能にするプログラム可能な色キー・レジスタをさらに含む、請求項29に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  31. 色レジスタがイネーブルされている場合、その内容をハッシュ出力に付加して最終ハッシュ化キーを生成する、請求項30に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  32. 色レジスタがイネーブルされていない場合、同等の数のゼロをハッシュ出力に付加して最終ハッシュ化キーを生成する、請求項30に記載の完全一致を決定するために半導体基板上に組み立てられた装置。
  33. 可変長サーチ・キーの完全一致を決定するためのコンピュータ・プログラムが記録されたコンピュータ可読媒体であって、
    入力キーをサーチ文字列として読み出すステップと、
    ハッシュ化キーを入力キーに変換することができる可逆ハッシュ関数を使用して前記入力キーをハッシュ化するステップと、
    前記ハッシュ化キーの最上位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/543531 2000-04-06
US09/543,531 US6675163B1 (en) 2000-04-06 2000-04-06 Full match (FM) search algorithm implementation for a network processor

Publications (2)

Publication Number Publication Date
JP2001357071A JP2001357071A (ja) 2001-12-26
JP3651589B2 true 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)

Families Citing this family (134)

* 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
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 주식회사 케이티 네트워크 라우터의 고속 패킷 전달을 위한 병렬 룩업 엔진및 그 방법
US8195705B2 (en) * 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
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
CN1853379A (zh) * 2002-12-31 2006-10-25 肯奈克斯特公司 在异步传输模式信元传输中提供服务质量的系统和方法
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
JP3842250B2 (ja) * 2003-07-08 2006-11-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 経路制御装置、経路制御方法及びそのプログラム
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
US7366728B2 (en) * 2004-04-27 2008-04-29 International Business Machines Corporation System for compressing a search tree structure used in rule classification
US7412431B2 (en) * 2004-04-27 2008-08-12 International Business Machines Corporation Method for managing multi-field classification rules relating to ingress
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
JP2006099524A (ja) * 2004-09-30 2006-04-13 Nec Commun Syst Ltd データ構造およびデータ検索方法
US8005084B2 (en) * 2004-11-30 2011-08-23 Broadcom Corporation Mirroring in a network device
US7715384B2 (en) * 2004-11-30 2010-05-11 Broadcom Corporation Unicast trunking in a network device
US7554984B2 (en) * 2004-11-30 2009-06-30 Broadcom Corporation Fast filter processor metering and chaining
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
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
CN101266599B (zh) * 2005-01-31 2010-07-21 日电(中国)有限公司 输入方法和用户终端装置
EP1688900B1 (de) * 2005-02-07 2007-06-06 Siemens Schweiz AG Verfahren zur Bestimmung der Position von Geräten einer Gefahrenmeldeanlage
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
US7644082B2 (en) * 2006-03-03 2010-01-05 Perfect Search Corporation Abbreviated 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 无锡永中科技有限公司 用于树型结构文件的数据查找方法
US8150856B2 (en) * 2006-07-07 2012-04-03 S. Grants Co., Ltd. Bit string searching apparatus, searching method, and program
JP4271227B2 (ja) * 2006-10-30 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4271214B2 (ja) * 2006-07-07 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
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
US7676444B1 (en) 2007-01-18 2010-03-09 Netlogic Microsystems, Inc. Iterative compare operations using next success size bitmap
JP4402120B2 (ja) 2007-01-24 2010-01-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4514771B2 (ja) * 2007-05-18 2010-07-28 株式会社エスグランツ カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム
JP4514768B2 (ja) * 2007-04-19 2010-07-28 株式会社エスグランツ カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム
JP4439013B2 (ja) * 2007-04-25 2010-03-24 株式会社エスグランツ ビット列検索方法及び検索プログラム
EP2149845B1 (en) * 2007-04-19 2013-06-12 Kousokuya, Inc. Coupled node tree backup/restore apparatus, backup/restore method, and program
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
US7774347B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Vortex searching
US7912840B2 (en) * 2007-08-30 2011-03-22 Perfect Search Corporation Indexing and filtering using composite data stores
US7774353B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Search templates
CN101802822B (zh) * 2007-09-14 2012-10-24 新叶股份有限公司 比特序列检索装置、检索方法以及程序
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
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
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
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7738454B1 (en) * 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US7835357B2 (en) * 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
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
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
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
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
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
WO2011118566A1 (ja) * 2010-03-24 2011-09-29 日本電気株式会社 パケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラム
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 中国电子科技集团公司第三十二研究所 网络处理器中查找模块的实现方法及系统
EP3198485B1 (en) 2014-09-25 2018-09-12 Oracle International Corporation System and method for supporting zero-copy binary radix tree 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
EP3629927A1 (en) 2017-05-22 2020-04-08 UAB Brolis Semiconductors Tunable hybrid iii-v/ iv laser sensor system-on-a-chip for real-time monitoring of a blood constituent concentration level
EP3747092A1 (en) 2018-02-02 2020-12-09 Brolis Sensor Technology, UAB Wavelength determination for widely tunable lasers and laser systems thereof
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 アルプス電気株式会社 キートツプの製造方法
CA2284250C (en) 1989-09-01 2001-12-04 Amdahl Corporation Computer method for implementing a get instruction
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
US5787430A (en) 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
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
US20010055299A1 (en) * 1996-08-16 2001-12-27 Keith C. Kelly 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
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
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
US6460120B1 (en) * 1999-08-27 2002-10-01 International Business Machines Corporation Network processor, memory organization and methods
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
WO2001043345A2 (en) * 1999-12-10 2001-06-14 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US6671725B1 (en) * 2000-04-18 2003-12-30 International Business Machines Corporation Server cluster interconnection using network processor

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3651589B2 (ja) ネットワーク・プロセッサ用の完全一致(fm)サーチ・アルゴリズムの実装
US6947931B1 (en) Longest prefix match (LPM) algorithm implementation for a network processor
JP3651783B2 (ja) パターン範囲比較実行方法、コンピュータ可読媒体および装置
US7702630B2 (en) Longest prefix match lookup using hash function
US7007101B1 (en) Routing and forwarding table management for network processor architectures
Rottenstreich et al. The variable-increment counting Bloom filter
JP3734704B2 (ja) パケット分類エンジン
US7627570B2 (en) Highly scalable subscription matching for a content routing network
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
KR100466083B1 (ko) 인터페이스 디바이스를 포함하는 장치 및 데이터 플로우 핸들링 방법
US7325059B2 (en) Bounded index extensible hash-based IPv6 address lookup method
US7646771B2 (en) Compilation of access control lists
KR100498824B1 (ko) Vlsi 네트워크 프로세서 및 방법
CN111937360B (zh) 最长前缀匹配
US20050171937A1 (en) Memory efficient hashing algorithm
US6529897B1 (en) Method and system for testing filter rules using caching and a tree structure
US7317723B1 (en) Action based termination of multidimensional lookup
JP2003508957A (ja) ネットワーク・プロセッサ処理コンプレックス及び方法
Kirchner et al. Augustus: a CCN router for programmable networks
US20070255676A1 (en) Methods and apparatus for performing tree-based processing using multi-level memory storage
GB2371381A (en) Tree based search method
CN107094114A (zh) 用于模块化转发表可缩放性的技术

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