JP4614946B2 - 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法 - Google Patents

限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法 Download PDF

Info

Publication number
JP4614946B2
JP4614946B2 JP2006509416A JP2006509416A JP4614946B2 JP 4614946 B2 JP4614946 B2 JP 4614946B2 JP 2006509416 A JP2006509416 A JP 2006509416A JP 2006509416 A JP2006509416 A JP 2006509416A JP 4614946 B2 JP4614946 B2 JP 4614946B2
Authority
JP
Japan
Prior art keywords
sub
prefixes
database
prefix
databases
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
JP2006509416A
Other languages
English (en)
Other versions
JP2006527526A (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.)
Cypress Semiconductor Corp
Original Assignee
Cypress Semiconductor 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 Cypress Semiconductor Corp filed Critical Cypress Semiconductor Corp
Publication of JP2006527526A publication Critical patent/JP2006527526A/ja
Application granted granted Critical
Publication of JP4614946B2 publication Critical patent/JP4614946B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • 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/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、コンピュータ・ネットワーキングに関する。より具体的には、本発明は、各サブデータベースが、ポインタ・テーブルに格納されたスピア・プレフィクスに対する最長一致サーチを行うことによって対象サブデータベースを選択するポインタ・テーブルを使用して選択可能な、所定サイズの所定数のサブデータベースに分化されたルックアップ・テーブルの転送データベースに関する。
以下の説明および実施形態は、本項に含めることにより従来技術であるとは認められない。
コンピュータ・ネットワーキングは、一般に、相互接続されたコンピュータのネットワークを介したパケット通信として一般に認められている。ネットワーキングの1つの目的は、パケットを送信元から宛先に迅速に転送することである。したがって、ネットワーク自体内に、本明細書で交換可能にゲートウェイ、ブリッジ、交換機、またはルータと呼ぶ、1または複数のデバイスが存在する。
転送デバイスは一般にルックアップ・テーブルを含む。着信アドレスを、ルックアップ・テーブルに格納されているプレフィクス・エントリと比較する。一致するものがあれば、関連付けられた情報パケットが転送デバイスの適切なポートに送られる。ネットワークのリンクが変わると、ルーティング・プロトコルが転送デバイス間で情報を交換し、対応するルックアップ・テーブル内のプレフィクス・エントリを変更する。この変更によって、ルックアップ・テーブル内のプレフィクスだけでなく、それらのプレフィクスが指すネクスト・ホップ識別子も変更される。これにより、リンクがインターネットまたはイントラネットの様々な部分で行き来するにつれて、転送デバイスを介したルーティングを動的に変更することができる。
パケットに関連付けられたインターネット・プロトコル(IP)アドレスは、一般に、ネットワーク・フィールドとホスト・フィールドを含む。クラス・ベースのインターネット・アドレス指定アーキテクチャでは、ネットワーク・フィールドとホスト・フィールドに専用に割り当てられるビット数は可変である。クラスレス・ドメイン間ルーティング(Classless Inter-Domain Routing:CIDR)と呼ばれる、クラスを使用しないアドレス指定アーキテクチャの出現により、ネットワーク・フィールドとホスト・フィールドとの間の境界が可変になっている。クラス・アドレス指定アーキテクチャとクラスレス・アドレス指定アーキテクチャに加えて、現在、IPアドレス指定インターネット・プロトコルにはいくつかのバージョンがある。たとえば、IPバージョン4(IPv4)は32ビットのアドレス指定プレフィクスを使用するのに対し、IPバージョン6(IPv6)は128ビットのアドレス指定プレフィクスを使用する。たとえば、IPv4アドレス指定を使用する場合は、転送デバイスは、ネクスト・ホップを決定する際に、32ビットのアドレス指定フィールドのうち、先頭8、16、または24ビットのみを考慮に入れる。
ネクスト・ホップを決定する一般的な方法は、最長一致プレフィクスと呼ばれる技法を使用することである。この技法では、たとえば192.2.8.64という32ビットのIPアドレスを、ルックアップ・テーブル内のプレフィクス・エントリ(以下、「プレフィクス」)と対照する。プレフィクス192.2.0.0/16は、プレフィクス192.0.0.0/8よりも、一致プレフィクスが長い。これは、主として、前者のプレフィクス長が16ビットであり、後者のプレフィクス長が8ビットしかないことによる。この場合、転送デバイスは、パケットを送るネクスト・ホップ・アドレスを決定する際に、192.2*の先頭2バイトを考慮する。
最長一致プレフィクス比較を行う方法は多数ある。たとえば、ポインタまたはハッシュを使用することができる。2進数列の最初の数ビットを、テーブルにポインタとして格納することができる。各ポインタ・エントリは、当該ポインタ内のプレフィクスを追跡するだけでなく、最長プレフィクス一致を実現するのに必要な後続の2進エントリも指す。ポインタはサブデータベース内の数百個のプレフィクスを指す場合があるが、多くのサブデータベースには、着信アドレスと一致するものが全くないか、またはわずかである。したがって、ヒューリスティック(発見的)ではあるが、先行ポインタを使用してプレフィクスのデータベースを分割しても、データベースの最適な分割は保証されない。さらに、この従来の技法は、最悪のルックアップ・パフォーマンスを保証しない。
データベースの分割に使用される他の技法としては、木構造またはトライを使用する技法がある。多くの異なる木構成があり、単純な木は、しばしば2分木と呼ばれ、より複雑な木は2分木の圧縮された形態である。木内でアドレスをサーチする場合、サーチはルート・ノードから開始する。ルート・ノードから始めて、「1」ポインタまたは「0」ポインタを辿って木内の次のノードまたは2進ビット位置に進む。たとえばアドレスが001*で始まる場合、サーチはルートから開始して、下方の各頂点ノードに進む。「0」分岐ポインタから開始して次の「0」分岐ポインタへと進み、最後に「1」分岐ポインタに至る。このサーチは、葉ノードに達するか、または障害が発生するまで続く。この2分木を圧縮してサーチ・オペレーションを強化することができる。パトリシア木は、分岐の長さを比較的わずかな葉ノードしかない長さに短縮するために使用される圧縮の一形態である。
上記の技法の欠点は、いずれのポインタから延びるサブデータベースにもサイズの制限を設けないことである。このため、サブデータベースに対して所与の記憶量を配分することが困難であり、また同様に、(サブデータベース全体のルックアップに対する最悪ケースのわずかな保証以外は)ルックアップの性能や速度も保証しない。
各ノード内のプレフィクスまたはサーチ可能なサブデータベースをより最適に配分すれば、サーチをより最適に実現可能なはずである。したがって、サーチ時に対象サブデータベースのみを指すポインタとして機能する「スピア(spear)プレフィクス」を使用する、特別な形態のサーチ可能データベースを構成する必要がある。所期の配分は、各サブデータベース内のプレフィクス数に制限を設けることと、ルックアップ・テーブル内のサブデータベース数に制限を設けることを必要とする。サブデータベースの数とサブデータベースのサイズを制御することによって、ルックアップ・オペレーションがより決定性になり、最悪ルックアップ時間の保証をすることができる。制限された数のサブデータベースを、メモリなどの物理デバイスにより最適に配分することができ、その際、そのメモリの専用部分を対応するサブデータベースに合わせたサイズにすることができる。これにより、特定の1回のルックアップ時に、1個のサブデータベースのみにアクセスするだけで済むため、ルックアップ・オペレーションの電力消費が低減される。
上記の問題は、サブデータベースをより最適に配分することができるシステム、方法、メモリによって大部分解決される。サブデータベース内のプレフィクスの数は、T個以下に制限することが好ましく、Tは所望の速度および電力消費に従って選定し、通常は、データベース内の合計プレフィクス数Nよりもはるかに少ない。さらに、データベース内のサブデータベースの数は、Nに正比例し、Tに反比例し、N/Tから(2N/T)+1までの間に制限することが好ましい。
データベースをサブデータベースに分割することにより、1個のサブデータベースのみをサーチするだけで済む。対象サブデータベースは、分割エンジンとも呼ぶポインタ部を使用して選択する。分割エンジンは、ポインタ群を格納するポインタ・テーブルを含む。各ポインタは、対応するプレフィクスを有し、以下、これを「スピア(spear)プレフィクス」と呼ぶ。スピア・プレフィクスという用語を用いて、ルートからサブデータベースを突く(spear)ために使用されるポインタの機能を示す。スピア・プレフィクスは、以下に説明するように本明細書で、最長一致スピア・プレフィクス一致によって対象サブデータベースを決定することができるようにするために固有に使用される、特殊機能プレフィクスであるという点で、通常のデータベース・プレフィクスとは区別される。説明を簡潔にするために、データベースのN個のプレフィクスに関連付けられたデータベース・プレフィクスを、以下、単に「プレフィクス」と呼び、ポインタ・テーブルに格納され、ポインタ部によって使用される特殊なプレフィクスを、以下「スピア・プレフィクス」と呼ぶ。
一実施形態によると、一方法が提供される。この方法を使用して、データベースを複数のサブデータベースに分割することによって転送データベースを形成する。サブデータベースのサイズと数とが適切に制限されていれば適切なサブデータベースを指示する、スピア・プレフィクス・エントリのセットと関連付けられたポインタとを形成することができる。ポインタは、ルート・ノードからの1と0とから成る2進数列を追跡するだけでなく、対象サブデータベースも指示する。
他の実施態様によると、サブデータベースに分割された転送データベース内のプレフィクスを突き止める他の方法が提供される。この方法では、たとえばポインタ・テーブル内のポインタを使用し、その中に格納されているスピア・プレフィクスの最長一致を適用する。次に、当該最長スピア・プレフィクスに関連付けられたポインタを使用して、転送データベース内の選択されたサブデータベースを指示することができる。次に、データベース・プレフィクス(または単に「プレフィクス」)の最長一致を使用して、選択されたサブデータベース内の最長プレフィクスを判断することができる。ポインタ・テーブル内の最長スピア・プレフィクスと、それによって選択されたサブデータベース内の最長プレフィクスを検出することにより、関連付けられたデータ・パケットを転送するネクスト・ホップを決定する。
他の実施態様によると、コンピュータ可読記憶媒体を有する転送デバイスが企図される。この記憶媒体は、分割プログラムと、ポインタ・テーブルと、ルックアップ・テーブルとを含む。ルート・ノードから複数の葉ノードに延びる分岐を有する木を形成するために分割プログラムがプロセッサによって呼び出される。次に、このプログラムは、T個未満のプレフィクスを有する各葉ノードに、葉ノード内の累積プレフィクス数を有し、ルートと葉ノードとの間のノードがN個のプレフィクスであるサブデータベースを形成することができる。サーチ・オペレーション時、ポインタ・テーブルにアクセスし、当該アドレスのサーチ時にポインタを入手する。ポインタ・テーブルは、ルックアップ・テーブルの、選択されたサブデータベースを含む部分のみを指示する。したがって、ポインタ・テーブルは、対応するサブデータベースを「突く(スピア)」ために使用される2分木の分岐に対応するものと考えることができ、サブデータベースは2分木の葉ノードと考えることができる。
本発明のその他の目的および利点は、添付図面を参照し、以下の詳細な説明を読めば明らかになろう。
本発明には、様々な修正および代替態様が可能であるが、本発明の特定の実施形態を例として図面に示し、本明細書で詳細に説明する。しかし、図面およびその詳細な説明は、本発明を、開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲によって規定される本発明の主旨および範囲に含まれるすべての修正、同等物、および代替物を含む。
より効率的な転送データベースを構成し、当該データベースを使用して最長プレフィクス一致を実行する方法、装置、およびメモリ製品について説明する。転送デバイスはより迅速にパケットを転送することができるが、これは、転送データベース内の最も適切なプレフィクスをサーチする最長一致サーチが、それぞれがほぼ同じサイズ(すなわちプレフィクス数)のサブデータベース内で行われるためである。したがって、最長一致サーチは、すべてのサブデータベースではなく1個のサブデータベースでのみ行われる。選択されたサブデータベースは、ポインタ・テーブル内で特殊スピア・プレフィクスの最長一致サーチを行った結果である。スピア・プレフィクスは、データベース・プレフィクス(または単に「プレフィクス」)よりも数が大幅に少ないため、ポインタ・テーブル内で比較的少数の2進の1と0をサーチするだけで済む。ポインタ・テーブルで一致最長スピア・プレフィクスが決定した後は、1個のサブデータベースのみを使用して転送データベース内の最も適切なエントリを検出することにより、サーチ処理が大幅に迅速化される。
図1に、コンピュータ・ネットワーク10内の、場合によっては多数ある転送デバイス12を示す。コンピュータ14間に介在するインターネットまたはイントラネットのトポロジは異なる場合がある。コンピュータ14aがコンピュータ14bにデータ・パケットを送りたい場合、パケットは、ネットワーク10内の1または複数の転送デバイス12を通過しなければならない。転送デバイス12aがパケットを受け取る。このパケットはたとえば転送デバイス12b(またはコンピュータ14b)の宛先アドレスを含む。パケットが宛先により近い転送デバイス(またはホップ)に到達するように、ネットワーク10内のどこにパケットを送信するかを決定することが、基本的に転送デバイス12a内のルックアップ・テーブルの機能である。最適には、転送デバイス12a内のルックアップ・テーブルが宛先アドレスを受け取り、そのアドレスまたはキーをルックアップ・テーブル内のプレフィクスと比較する。各プレフィクスには、ネクスト・ホップ識別子が関連付けられている。したがって、たとえば、最長プレフィクス一致比較を使用してプレフィクスが宛先と一致した後は、当該パケットは、より宛先に近いネクスト・ホップに送られる。
図2に、ルータ、ゲートウェイ、ブリッジ、交換機などの転送デバイス12の一例を示す。転送デバイス12は、しばしばパケット転送エンジンと呼ばれ、スイッチング・ファブリック20と、複数のライン・カード22を含む。スイッチング・ファブリック20は、公知であり、すべてのライン・カードを相互接続するクロスバ交換機を含む。少なくとも1個のライン・カードがルーティング・プロセッサを含む。したがって、転送デバイス12は、以下の2つの機能を実行するとみなせる。すなわち、(i)発信ポートを識別するために、パケットの宛先アドレスに基づいてルートのルックアップを行い、(ii)パケットを適切な出力ポートにスイッチする。
ルーティング機能は、主として着信ライン・カード(たとえばライン・カード22a)上で行うことができ、適切な出力ポートまたはライン・カードへのパケットのスイッチは、スイッチング・ファブリック20内で行うことができる。パケットの宛先アドレス(Destination Address(DA))が、入出力インタフェースを介してライン・カード22aに入力することができる。各ライン・カードは、一般に、メディア・アクセス制御部(Media Access Controller (MAC))24、アドレス解決部(Address Resolution Unit(ARU))26、およびメモリ・デバイス28を含む。MAC24は、CSMA/CD、FDDI、ATM通信プロトコルなどの多くの異なる通信プロトコルを受け付けるように構成することができる。入力MAC24aからパケットが読み取られると、スイッチング・ファブリック20を介してパケットの進路を操作するために必要な転送制御情報が、パケットの先頭および/または最後に付加される。
入力ライン・カード上のARU26は、好ましくは、最長プレフィクス一致比較技法を使用してルーティング機能を実行する。ARUは、クラスレスまたはクラス・ベースのルーティング機能を実行することができ、可変長サブネット・マスク(Variable Length Subnet Masks:VLSM)に対応する。各ARUは、RIP、OSPF、BGPなどの周知のルーティング・プロトコルを使用して、ネットワークのルートが追加または削除されると、再構成される。メモリ・デバイス28は、DRAM、SRAM、コンテント・アドレス可能メモリ(Content-Addressable Memory:CAM))など、様々な種類のランダム・アクセス・メモリ(RAM)で実現可能であり、マスキングCAMの一般的な形態は、ターナリ(3値)CAM(Ternary CAMまたはTCAM)である。メモリ28は、ルックアップ・テーブルを含むことができる。ルックアップ・テーブルをライン・カード22内に配置すれば、着信パケットについてのルックアップをローカルで行うことができ、転送デバイス12の中央演算処理装置に負担がかからない。
図3に、ルックアップ・テーブル全体の構成または構造を示す。ルックアップ・テーブルは、分割エンジンまたはポインタ部32の後段の転送データベース30全体と考えることができる。データベース30は、複数のサブデータベース34に分化または分割される。データベースをサブデータベース34に分割するために使用される機構について、図5ないし図8を参照しながら以下に説明する。また、各サブデータベース内のプレフィクスの数を、最大プレフィクス数または閾値「T」と、最小プレフィクス数または「T/2」との間に制限する方法を説明する一例も示す。したがって、図3には、T個のプレフィクス36を有する可能性があるサブデータベース34aが示されている。サブデータベース34bは、最小数のプレフィクス36を有することができる。各サブデータベース内のプレフィクス数が制御されるだけでなく、データベース30内のサブデータベース34の数も制御される。
ルックアップ・テーブルの一部として、またはルックアップ・テーブルの前段に、ポインタ部32がある。ポインタ部32は、ポインタのリストを有するポインタ・テーブルを含む。各ポインタは、対応するサブデータベースの適切な固有2進数列への分岐または「スピア」を表す2進数列を含む。たとえば、1つのポインタ38は、プレフィクス01*を指すことができ、*はドント・ケアまたはマスクエントリを表す。プレフィクス01*は、特殊な形態のプレフィクスであり、N個のデータベースとは全く異なる。プレフィクス01*は、本明細書に示す例ではサブデータベース34aを突く(spear)ように機能するため、以下、このプレフィクスをスピア・プレフィクスと呼ぶ。着信アドレス(DA)が0で始まり、次に1が続く場合、ポインタ38はサブデータベース「D」を指す。このサブデータベースには、2進数列01で始まり、限定された範囲の他の2進数の組合せが続く、限定された数のプレフィクスが含まれている。図3にポインタ40として他のポインタが示されており、参照番号34bで示すサブデータベース「I」を指している。サブデータベース「I」は、スピア・プレフィクス1100で始まる2進数列であって、後続の2進順列がサブデータベース「I」のプレフィクス・エントリ数に含まれる2進数列を有することができる。図3の例で01*、1100*、および*として示されているポインタ群は、アドレス解決全体の一部として構成され、ポインタ部32のポインタ・テーブル内に格納される。
図2および図3に示す各機能単位は、ソフトウェアまたはファームウェアによって指示された一連のオペレーションを実行する、ハードワイヤード回路、特殊用途向け集積回路(ASIC)、1または複数の論理回路、プロセッサ、またはプログラム式コンピュータの任意の構成要素、あるいはこれらの組合せとすることができる。重要なのは、本発明が、これらの機能単位の特定の実施形態には限定されず、したがって、機能単位はハードウェア、ファームウェア、またはソフトウェアを使用してそれぞれの機能を実現することができることである。
図4に、転送デバイス12内のメモリ・アロケーションの例を示す。図4に示すように、転送デバイスは、ネットワーク内の他の転送デバイスと通信する複数の入出力ポート40を備える。メモリ28内の分割プログラム44をフェッチさせるために、図示された実施態様におけるパケット・プロセッサ42が呼び出される。分割プログラムがプロセッサ42上で実行されると、ルックアップ・テーブルのデータベースが、制限されたサイズと数のサブデータベースに分割される。データベースが分割される仕組みについては後述する。分割後、プロセッサ42はルックアップ・テーブル46内でサブデータベースを構成し、ポインタをポインタ・テーブル48に格納する。アドレス・サーチを行うときは、入出力ポート40を介して着信アドレスがポインタ・テーブル48に送られる。
当該アドレスの始めの方の2進ビットのセット内の最長プレフィクスとの一致に基づいて、適切なポインタが選択される。このビット・セットは、スピア・プレフィクスを表し、ポインタは、ポインタ・テーブルに格納されているスピア・プレフィクスのセット内の最長スピア・プレフィクスとの突合せによって選択される。したがって、選択されたポインタは、ルックアップ・テーブル46内の適切なサブデータベースを指す。当該サブデータベース内のみでさらに最長プレフィクス一致オペレーションを行って、最長一致プレフィクスを判断する。判断されると、当該最長一致プレフィクスは対応するネクスト・ホップエントリを指すことになる。図3に示すように、このルックアップ・オペレーションの結果がセレクタに送られ、セレクタは、図2のスイッチング・ファブリックによって認識可能なネクスト・ホップ識別子を選択する。このネクスト・ホップ・アドレス・セレクタを、図3に参照番号39で示し、メモリ38に格納されているネクスト・ホップ・テーブルを参照番号49で示す。
図5に、分割プログラム44(図4)が2分木50を使用してポインタ・エントリまたはスピア・プレフィクスを生成する方法と、各サブデータベース内のプレフィクスとを示す。図のように、転送データベース内のプレフィクス・アドレスは、2分木データ構造50で表すことができる。各ノードまたは頂点が、1と0とから成る2進ストリングを表す。ルート(R)は、*として表されている空ストリングである。各ノードからは2個のポインタが出ている。最初のポインタは、現在2進ストリングと0とから成り、2番目のポインタは、現在2進ストリングと1とから成る。
転送データベースを制限されたサブデータベースに分化するために、一例を示す。この例では、転送データベースは、300個のプレフィクスから成っている。代わりにN個のプレフィクスとしても知られている。300個のプレフィクスの空ノードまたはルート・ノードRから開始すると、60個のプレフィクスがそれぞれのより上位ビット位置の0で始まることができ、240個のプレフィクスがより上位ビット位置の2進1で始まる。したがって、ノードAは、60個のプレフィクスを有することができ、ノードBは240個のプレフィクスを有することができる。ルート・ノードに関連付けられたプレフィクスがもはやないため、数値300は、「X」で示すことによって取り消される。
他の例を示すと、いずれのサブデータベース内にも50以下のプレフィクスしかないようにしたい場合がある。したがって、ノードA、Bはそれぞれ50個を超えるプレフィクスを含むため、両方のノードをさらに分割する必要がある。ノードAのプレフィクスは、0値を有する次の2進ビットに関連付けられた12個のプレフィクスと、関連付けられた2進値1を有する次のビットを備える48個のプレフィクスとを含む。ノードDにはT=50個以上のプレフィクスがないため、ノードDはサブデータベースを表すと言え、ノードDを指すポインタは、格納された2進数列01*を有することになる。したがって、ノードDのスピア・プレフィクスは01*であり、したがってノードDは、プレフィクス数がT未満であるためにサブデータベースになり、後述するように、プレフィクス数はT/2より多い。上位ビット位置の01の比較を実現するマスキング・オペレーションによって、アドレスに48個のプレフィクスを含むサブデータベースDを指示させる。この48個のプレフィクスに対してさらに最長プレフィクス一致を行う必要がある。
ノードAプレフィクスをさらに分化する必要があるほかに、ノードBプレフィクスも分割する必要がある。0である次のビット値に8個のプレフィクスを関連付けることができ、1である次のビット値に232個のプレフィクスを関連付けることができる。したがって、ノードFは、図のようにさらにノードGとHに分割しなければならない。ノードGとノードHは、両者ともプレフィクス数が最大プレフィクス数を超えるため(すなわち、この例では図のようにノードGは70個のプレフィクスを有し、ノードHは162個のプレフィクスを有する)、さらに分割する必要がある。さらに分割した後、ノードGからノードIとJが生じ、各ノードのプレフィクスを最大限度プレフィクス数よりも少なくすることができる(すなわち、ノードIは28個のプレフィクスを有するものとして図示され、ノードJは42個のプレフィクスを有するものとして図示されている)。ノードIにおけるサブデータベースとノードJにおけるサブデータベースとを指示するために、ポインタ・テーブルにスピア・プレフィクス・ポインタを1100*および1101*として格納する必要がある。この例では50個である最大プレフィクス・エントリ数より少ないプレフィクスを有するノードが生成されるまで、図のようにノードKについてさらに分割を行わなければならない。したがって、ノードKの157個のプレフィクスから、ノードOで34個のプレフィクスを生成し、ノードQで38個のプレフィクス、ノードSで42個のプレフィクス、ノードNで43個のプレフィクスを生成する。
最大限界未満のプレフィクスとなるノードは、葉ノードとみなすことができる。したがって、この例では、葉ノードはノードC、D、E、I、J、O、Q、S、N、Lを含む。しかし、すべての葉ノードがサブデータベースを含むわけではない。葉ノードによっては、最小数よりも少ない数のプレフィクスを含むものもある。たとえば、最小プレフィクス数はT/2個とすることができ、この例では25個である。図5に示すように、この分割プログラムの結果、ノードC、E、Lのプレフィクスが25個未満となる。
最長一致プレフィクス・オペレーションを最適化するために、2進チェーンを上方に辿って最小境界に満たないプレフィクスを含むノードをマージすることが望ましい。図のように、ノードC内の12個のプレフィクスを上位のノードAにマージすることができる。しかし、ノードAのプレフィクスは下位のノードCとノードDとに移されたため、ノードAにはプレフィクスが含まれていない。マージ・オペレーションの結果としてのノードAのプレフィクス数は、許容最小数よりも少ないため、さらにマージを行わなければならない。2番目の破線で示すように、ノードAからルート・ノードに再度、上方マージを行う必要がある。同じマージ・オペレーションを、ノードEからノードB、ノードBからルート・ノードRに行う。ノードL内のプレフィクスも、ノードH、ノードF、次にノードBに進む破線によって、上方にマージされる様子が示されている。もし、ノードEからのプレフィクス数がノードLからのプレフィクス数と合わせて25個を超えるとすれば、マージ・オペレーションはノードBで終了することになる。しかし、ノードE内の8個のプレフィクスと、ノードL内の5個のプレフィクスを合わせても25個を超えず、したがって、ルート・ノードRまで上方にマージする必要があり、ルート・ノードRでノードCからの12個のプレフィクスと合わされる。上方に向かってルート・ノードRまでマージされたプレフィクスの累積数は最小の25個に等しいが、累積数が25に満たない場合でも、ルート・ノードはマージ・オペレーションの例外となる。したがって、25個未満のプレフィクスがルート・ノードまで上方に辿ってマージされた場合、空ポインタを有するルート・ノードからそれ以上の上方マージを行う必要はない。
分割とそれに続くマージ・オペレーションの結果、図5の2分木50から、限定されたサブデータベースを有する8個のノードが生成される。ノードD、I、J、O、Q、S、N、Rの各サブデータベース内のプレフィクス数を各ノードの右に示し、当該サブデータベースを指すポインタ・テーブル内のポインタ・エントリを各ノードの下に示す。図の例では、この8個のサブデータベースは、T個以下、T/2個以上のプレフィクスを有する。Tは、最長プレフィクス一致を最適に行うのに必要な分化の数に応じて任意の所定数とすることができる。さらに、サブデータベースの数は、2N/T+1個を超えず、N/T未満でない数を選定する。図の例では、2N/T+1=600/50+1、すなわち13である。また、N/T=300/50、すなわち6である。8個のサブディレクトリが生成されたため、8は6から13までの境界内に収まる。
次に図6を参照すると、分割プログラムがさらに詳細に示されている。図6は、図4の分割プログラムによって使用される一連のステップを示す。これらのステップは、具体的には、分割プログラムの分割段階を示す。図7に、分割プログラムのマージ段階を示す。分割段階では、分割プログラムはステップ60で開始し、木またはトライを下方に進む。ステップ62で、上位ビット部分の値を検査し、ステップ64に示すように、その部分の0値と1値に対応するプレフィクスが、トライを下方に辿った次のノードに関連付けられる。決定ブロック66に示すように、分割ステップ64の結果の各ノードを検査し、当該ノード内のプレフィクスが閾値Tプレフィクス数以下であるか否かを判断する。閾値以下である場合、分割オペレーションは終了し、ステップ74に進む。それ以外の場合は、次の2進値を検査し68、ステップ70に示すように次のノード対に関連付けられたプレフィクスを再度分割する。次に、決定ブロック72で、その結果の各ノード内のプレフィクスの数を検査し、その数が閾値T以下であるか否かを判断する。閾値以下の場合、分割段階は終了する。それ以外の場合、ステップ62〜68と同様に、すべてのノードのプレフィクス数が閾値T以下になるまでステップ68〜72が繰り返される。以下の疑似コードは、分割プログラムの分割段階を示し、スピアエントリ(「SE」)は制限された数のプレフィクスを含むノード(すなわちサブデータベース)を指すポインタを示し、TsplitはTに等しい。
アルゴリズムSplit(R,Tsplit)
ListPending ={R}
While(ListPendingが空でない)

ListPendingからノードAを削除する
n=|subtrie(A)|
If(n>Tspli){
/*Aを分割する*/
Aの左側の子(空でない場合)と右側の子(空でない場合)をListPendingに入れる}

else{ノードAを候補SEとしてマークする}
/*アルゴリズムSplit()の終わり*/
図7に、分割オペレーションが終了74した後のステップから開始される、分割プログラムのマージ段階を示す。マージ段階は、ステップ76で分割されたプレフィクスを含む各ノードを見ることによって開始する。決定ブロック78に示すように、ノードがたとえばT/2未満のプレフィクスを含む場合、当該ノードを上方にマージする必要がある。しかし、各ノードのプレフィクスがたとえば最小閾値T/2を超える場合は、ステップ84に示すようにマージ・オペレーションが終了する。それ以外の場合、マージ・オペレーションはステップ80に進む。決定木82に示すように、すべてのノード内のすべてのプレフィクス数を検査して、プレフィクスが最小限界以上であることが確認されるまで、次に続くノードについて決定木78を繰り返す。最終的に、すべてのノードを検査し、マージ・オペレーションは終了する。このマージ・オペレーションを表す疑似コードを以下に示す。ここで、Tmergeはこの例ではT/2である。
アルゴリズムMergeUsingRecursion(R,Tmerge)
L=RecurseMerge(R,Tmerge);
If(Lが空でない[すなわち非ゼロ])RをSEとし、LをそのLSNとする
/*アルゴリズムMergeUsingRecursionの終わり*/

/*上記のアルゴリズムで以下の再帰関数を使用する。[]のインスタンスは、このコンテキストでは該当しないため、すべて削除されたい。*/
関数リスト[int]RecurseMerge(A,Tmerge)

If(AがNULL)NULL[0]を返す;
If(Aがすでにマークされた候補SE)

if(|subtrie(A)|≧Tmerge){AをSEとしてマークする;NULL[0]を返す}
else{A[1]を返す;}

L1=RecurseMerge(A−>leftChild,Tmerge);
L2=RecurseMerge(A−>rightCild,Tmerge);
L=L1+L2;/*連結オペレーション[または整数の場合は整数加算オペレーション]をリストする*/
If(Aにプレフィクスがある){ret=({A}+L)[1+L}
else{ret=L;}
if(ret≧Tmerge)

/*ret<=2*Tmerge−1であることが保証される。これは、Tmerge「T/2」の場合、<=Tである)*/
AをSEとしてマークし、LをそのLSNとしてマーク;
return NULL[0]

else return(ret);
/*アルゴリズムRecurseMege()の終わり*/
分割プログラムが分割段階とマージ段階とを完了した後は、ポインタ・テーブルとルックアップ・テーブルが適切に書きこまれ、値が格納されて、ルックアップ・オペレーションに進むことができる。判断ブロック96で一致するものが見つからない場合、ブロック94で入手したポインタと共に格納されている、予め計算済みの現時点での最長一致を使用しなければならない。図8に、ポインタ・ルックアップ時とサブデータベース・ルックアップ時の両方で有用な処置をとることによってルックアップを進めることができる、1つの方法を示す。Tを大きくすれば、転送データベース内のサブデータベースの数が少なくなる。Tは、サーチ速度の高速化、記憶量低減、前処理時間短縮、更新時間短縮など、特定のプレフィクス一致特性を実現するために望ましい任意の値に設定することができる。したがって、Tに調整を加えることによって、サーチ機構に拡張性と柔軟性をもたせることができると共に、最悪サーチの保証をすることができる。
ステップ90でルックアップが開始し、ステップ92に示すように、ポインタ・テーブルで最長一致プレフィクス一致に進む。ステップ94に示すように、最長プレフィクス一致の結果として得られたポインタを、特定のサブデータベースを指示するポインタとして選択する。次に、ステップ96に示すように、選択されたサブデータベースに対して最長一致プレフィクス一致を行い、着信アドレスのプレフィクスと一致するプレフィクスを判断する。一致するものが見つかったら、ステップ98に示すように、当該アドレスについてのルックアップ・オペレーションを終了する。
ポインタ・テーブルで最長一致プレフィクス・オペレーションを行い、次に、サブデータベースにおける最長一致プレフィクスが続く機構は、上位ビット位置から開始して2進パターンを下位ビットに向かって進むマスキング・オペレーションの結果として実現することができる。したがって、マスク長は、一致が見つかるまで縮小または短縮することができる。任意の形態のマスキングと、任意の周知の最長プレフィクス一致技法を使用することができ、それらはすべて、図8のブロック92および96に含まれるものと企図される。
以上、本明細書では、本発明について特定の実施形態を参照しながら説明した。しかし、本発明のより広義の主旨および範囲から逸脱することなく、本発明に様々な修正および変更を加えることができることが、当業者には明らかであろう。したがって、本明細書および図面は、限定的なものではなく例示的なものとみなされるべきである。
通信ネットワークを示す構成図である。 図1の通信ネットワーク内のパケット転送エンジン(たとえば交換機またはルータ)を示すブロック図である。 アドレスの上位ビットをポインタ・テーブル内のプレフィクスと一致させ、次に、そのアドレスの下位ビットをポインタ部によって指示されたサブデータベース内のプレフィクスと一致させることによって、アドレスに、対応するサブデータベースを指示させる、ポインタ部を示すブロック図である。 パケット・プロセッサが図3のポインタ・テーブルと、ルックアップ・テーブル内のサブデータベースを構成するために使用する分割プログラムを記憶するために使用される、ルータ内のコンピュータ記憶媒体を示すブロック図である。 N/T個以上、(2N/T)+1個以下のサブデータベースに区分されたデータベース内のN個のプレフィクスを有し、2進エントリが各サブデータベースを指す、2分木を示す構成図である。 データベースを上限数のプレフィクスを有するサブデータベースに分化するために使用される分割プログラムを示す流れ図である。 プレフィクス数が、下限プレフィクス数を下回る場合に、2分木を遡ってサブデータベースをマージする分割プログラムを示す流れ図である。 ポインタ・テーブル内のプレフィクスの中から一致する最長プレフィクス検出することによって開始し、ポインタ・テーブルによって指示された1個のサブデータベース(または複数のサブデータベース)を選択し、次に、選択された1個のサブデータベース(または複数のデータベース)内のプレフィクスの中から一致する最長プレフィクスを検出する、ルックアップ・オペレーションを示す流れ図である。

Claims (19)

  1. 通信ネットワークにおいてデータのパケットを送るための転送データベースの形成方法であって、
    プレフィクス内の1つまたはそれ以上のマスクされないビット値に排他的に基づいて、それぞれT個以下のプレフィクスを有する前記データベース内のN個(ここで、TはNより小さい所定の値である)のプレフィクスをNに比例しTに反比例する数に制限された数のサブデータベースに分割することと、
    ポインタの第1のセットを形成することとを含み、
    前記サブデータベースの少なくとも1つは1個を超えるプレフィクスを有し、ポインタの前記第1のセットのそれぞれは前記サブデータベースのそれぞれ1つを指す、前記転送データベースの形成方法。
  2. 前記ポインタの第1のセットと前記ポインタの第1のセットによって指示された前記サブデータベースとの中間にあり、前記サブデータベースの対応する1つのサブデータベースを指示する、ポインタの第2のセットを再帰的に形成することをさらに含む請求項1に記載の方法。
  3. 前記分割は、N個のプレフィクスの最上位ビットから開始し、N個のプレフィクスを反復的に分割することによって、ルート・ノードと複数の葉ノードとの間に延びる木を形成することを含み、各葉ノードはT個以下のプレフィクスを有する請求項1に記載の方法。
  4. 最小プレフィクス数未満のプレフィクスを有する第1の葉ノードを、前記第1の葉ノードより前記ルート・ノードに近く配置された第2の葉ノードにマージすることをさらに含む請求項3に記載の方法。
  5. 前記プレフィクスの最小数がT/2である請求項に記載の方法。
  6. 前記サブデータベース数はNと(2N/T)+1との間に制限される請求項に記載の方法。
  7. 前記形成は、N個のプレフィクスの最上位ビットから開始し、より下位のビットのビット値を各サブデータベースの最上位ビットに達するまで加算することを含む請求項1に記載の方法。
  8. それぞれの前記サブデータベースを同じ物理ブロックの別々にアクセス可能な部分に配置することをさらに含む請求項1に記載の方法。
  9. コンピュータ可読記憶媒体に記憶され請求項1に記載の方法に従って解釈されるルックアップ・テーブル。
  10. ルータまたは交換機、または前記ルータまたは交換機のライン・カードまたは入出力ポート、または前記ルータまたは交換機のスイッチ・ファブリック内にあり請求項1に記載の方法を実行する、コンピュータまたは特殊用途向け集積回路(ASIC)。
  11. 処理主体によって実行されると、前記処理主体に、
    プレフィクス内の1つまたはそれ以上のマスクされないビット値に排他的に基づいて、それぞれT個以下のプレフィクスを有する前記データベース内のN個(ここで、TはNより小さい所定の値である)のプレフィクスを、Nに比例しTに反比例する数に制限された数のサブデータベースに分割させ、
    ポインタの第1のセットを形成させる命令を格納し、
    前記サブデータベースの少なくとも1つは1個を超えるプレフィクスを有し、ポインタの前記第1のセットのそれぞれは前記サブデータベースのそれぞれを指す、コンピュータ可読記憶媒体。
  12. 前記処理主体によって実行されると、前記処理主体に、
    前記サブデータベースのそれぞれをデータ記憶装置のそれぞれ別々の部分に配置させる命令をさらに格納する請求項11に記載のコンピュータ可読記憶媒体。
  13. 前記処理主体に、データベース内のN個のプレフィクスをサブデータベースに分割させる命令は、前記処理主体に、
    N個のプレフィクスの最上位ビットから開始し、N個のプレフィクスを反復的に分割することによって、ルート・ノードと複数の葉ノードとの間に延びる木を形成させる命令であり、各葉ノードはT個以下のプレフィクスを有する請求項11に記載のコンピュータ可読記憶媒体。
  14. 前記処理主体によって実行されると、前記処理主体に、
    最小プレフィクス数未満のプレフィクスを有する第1の葉ノードを、前記第1の葉ノードより前記ルート・ノードに近く配置された第2の葉ノードにマージさせる命令をさらに格納する請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記プレフィクスの最小数がT/2である請求項14に記載のコンピュータ可読記憶媒体。
  16. 前記サブデータベース数はNと(2N/T)+1との間に制限される請求項14に記載のコンピュータ可読記憶媒体。
  17. 前記処理主体に、ポインタの第1のセットを形成させる命令は、前記処理主体に、
    N個のプレフィクスの最上位ビットから開始し、より下位のビットのビット値を各サブデータベースの最上位ビットに達するまで加算させる命令である請求項11に記載のコンピュータ可読記憶媒体。
  18. 前記処理主体によって実行されると、前記処理主体に、
    それぞれの前記サブデータベースを同じ物理ブロックの別々にアクセス可能な部分に配置させる命令をさらに格納する請求項11に記載のコンピュータ可読記憶媒体。
  19. 前記処理主体によって実行されると、前記処理主体に、
    前記ポインタの第1のセットと前記ポインタの第1のセットによって指示された前記サブデータベースとの中間にあり、前記サブデータベースのセットの対応する1つのサブデータベースを指示する、ポインタの第2のセットを再帰的に形成させる命令をさらに含む請求項11に記載のコンピュータ可読記憶媒体。
JP2006509416A 2003-03-28 2004-03-26 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法 Expired - Fee Related JP4614946B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,887 US7426518B2 (en) 2003-03-28 2003-03-28 System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
PCT/US2004/009531 WO2004088548A1 (en) 2003-03-28 2004-03-26 System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size

Publications (2)

Publication Number Publication Date
JP2006527526A JP2006527526A (ja) 2006-11-30
JP4614946B2 true JP4614946B2 (ja) 2011-01-19

Family

ID=32989833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006509416A Expired - Fee Related JP4614946B2 (ja) 2003-03-28 2004-03-26 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法

Country Status (5)

Country Link
US (2) US7426518B2 (ja)
EP (1) EP1611533A1 (ja)
JP (1) JP4614946B2 (ja)
CN (1) CN1784678A (ja)
WO (1) WO2004088548A1 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020089937A1 (en) 2000-11-16 2002-07-11 Srinivasan Venkatachary Packet matching method and system
US7571156B1 (en) * 2003-03-28 2009-08-04 Netlogic Microsystems, Inc. Network device, storage medium and methods for incrementally updating a forwarding database
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US7418519B1 (en) * 2003-05-29 2008-08-26 Nortel Networks Limited Technique for prefix limit exchange for route advertisement
US7437354B2 (en) * 2003-06-05 2008-10-14 Netlogic Microsystems, Inc. Architecture for network search engines with fixed latency, high capacity, and high throughput
US7934198B2 (en) * 2003-10-17 2011-04-26 Netlogic Microsystems, Inc. Prefix matching structure and method for fast packet switching
US7515588B2 (en) * 2004-03-18 2009-04-07 Intel Corporation Method and apparatus to support a large internet protocol forwarding information base
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7725450B1 (en) 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US7653619B1 (en) 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7646773B2 (en) * 2004-08-02 2010-01-12 Extreme Networks Forwarding database in a network switch device
US7461200B1 (en) * 2004-09-23 2008-12-02 Netlogic Microsystems, Inc. Method and apparatus for overlaying flat and tree based data sets onto content addressable memory (CAM) device
US20060248375A1 (en) 2005-04-18 2006-11-02 Bertan Tezcan Packet processing switch and methods of operation thereof
EP1821571A1 (en) * 2006-02-15 2007-08-22 Oticon A/S Loop antenna for in the ear audio device
US7817652B1 (en) * 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
US7747904B1 (en) 2006-05-12 2010-06-29 Integrated Device Technology, Inc. Error management system and method for a packet switch
US7706387B1 (en) 2006-05-31 2010-04-27 Integrated Device Technology, Inc. System and method for round robin arbitration
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
GB2452760A (en) * 2007-09-14 2009-03-18 Data Connection Ltd Storing and searching data in a database tree structure for use in data packet routing applications.
US7886176B1 (en) 2007-09-24 2011-02-08 Integrated Device Technology, Inc. DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
EP2560327B1 (en) * 2010-04-12 2014-06-04 Huawei Technologies Co., Ltd. Routing table establishment method and device
US8438330B2 (en) 2010-05-17 2013-05-07 Netlogic Microsystems, Inc. Updating cam arrays using prefix length distribution prediction
US9406381B2 (en) * 2010-08-01 2016-08-02 Gsi Technology Israel Ltd. TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules
US9305115B1 (en) 2010-10-04 2016-04-05 Broadcom Corporation Method and apparatus for reducing power consumption during rule searches in a content search system
US8862603B1 (en) 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons
US9002859B1 (en) 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
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
CA2823839A1 (en) 2011-01-10 2012-07-19 Roy W. Ward Systems and methods for high-speed searching and filtering of large datasets
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US8861241B1 (en) 2011-09-01 2014-10-14 Netlogic Microsystems, Inc. Content search system having embedded power control units
US8639875B1 (en) 2011-09-06 2014-01-28 Netlogic Microsystems, Inc. Content search system having multiple pipelines
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US8990204B1 (en) 2012-01-17 2015-03-24 Roy W. Ward Processing and storage of spatial data
CN102663051B (zh) * 2012-03-29 2014-12-10 浪潮(北京)电子信息产业有限公司 搜索内容可寻址存储器的方法和系统
US9680747B2 (en) 2012-06-27 2017-06-13 Futurewei Technologies, Inc. Internet protocol and Ethernet lookup via a unified hashed trie
ES2626061T3 (es) 2012-12-25 2017-07-21 Huawei Technologies Co., Ltd. Método de creación de tablas de búsqueda y método de consulta, y su controlador, dispositivo de reenvío y sistema
CN105229980B (zh) 2013-04-11 2018-11-16 马维尔以色列(M.I.S.L.)有限公司 利用可变关键字大小的精确匹配查找的方法及设备
US9602407B2 (en) * 2013-12-17 2017-03-21 Huawei Technologies Co., Ltd. Trie stage balancing for network address lookup
US9935831B1 (en) * 2014-06-03 2018-04-03 Big Switch Networks, Inc. Systems and methods for controlling network switches using a switch modeling interface at a controller
CN106202084A (zh) * 2015-04-30 2016-12-07 阿里巴巴集团控股有限公司 数据存储方法和数据存储装置
CN105763454B (zh) * 2016-02-25 2018-11-27 比威网络技术有限公司 基于二维路由策略的数据报文转发方法及装置
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US10700974B2 (en) * 2018-01-30 2020-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic allocation of memory for packet processing instruction tables in a network device
US11327974B2 (en) * 2018-08-02 2022-05-10 Mellanox Technologies, Ltd. Field variability based TCAM splitting
US11003715B2 (en) 2018-09-17 2021-05-11 Mellanox Technologies, Ltd. Equipment and method for hash table resizing
CN110210307B (zh) * 2019-04-30 2023-11-28 中国银联股份有限公司 人脸样本库部署方法、基于人脸识别业务处理方法及装置
CN110324403A (zh) * 2019-05-23 2019-10-11 平安科技(深圳)有限公司 动态分库路由方法、装置、服务器及存储介质
US11539622B2 (en) 2020-05-04 2022-12-27 Mellanox Technologies, Ltd. Dynamically-optimized hash-based packet classifier
US11782895B2 (en) 2020-09-07 2023-10-10 Mellanox Technologies, Ltd. Cuckoo hashing including accessing hash tables using affinity table
US11917042B2 (en) 2021-08-15 2024-02-27 Mellanox Technologies, Ltd. Optimizing header-based action selection
US11929837B2 (en) 2022-02-23 2024-03-12 Mellanox Technologies, Ltd. Rule compilation schemes for fast packet classification
US11968285B2 (en) 2022-02-24 2024-04-23 Mellanox Technologies, Ltd. Efficient memory utilization for cartesian products of rules

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994001828A1 (en) * 1992-07-02 1994-01-20 Wellfleet Communications Data packet processing method and apparatus
EP0863640A3 (en) * 1997-03-04 2005-09-21 Texas Instruments Incorporated Improved physical layer interface device
JP3520709B2 (ja) * 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US5991758A (en) * 1997-06-06 1999-11-23 Madison Information Technologies, Inc. System and method for indexing information about entities from different information sources
US6181698B1 (en) * 1997-07-09 2001-01-30 Yoichi Hariguchi Network routing table using content addressable memory
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
US6223172B1 (en) * 1997-10-31 2001-04-24 Nortel Networks Limited Address routing using address-sensitive mask decimation scheme
US6212184B1 (en) * 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
IT1305140B1 (it) * 1998-10-27 2001-04-10 Cselt Centro Studi Lab Telecom Memoria per la ricerca di informazioni mediante analisi di prefissi inparticolare per la realizzazione di tabelle di instradamento in nodi
US6266262B1 (en) 1998-11-05 2001-07-24 Lara Technology, Inc. Enhanced binary content addressable memory for longest prefix address matching
US6081440A (en) 1998-11-05 2000-06-27 Lara Technology, Inc. Ternary content addressable memory (CAM) having fast insertion and deletion of data values
US6385649B1 (en) * 1998-11-06 2002-05-07 Microsoft Corporation Routers and methods for optimal routing table compression
JP4156112B2 (ja) * 1998-12-25 2008-09-24 富士通株式会社 高速検索方法及び高速検索装置
US6237061B1 (en) 1999-01-05 2001-05-22 Netlogic Microsystems, Inc. Method for longest prefix matching in a content addressable memory
US6963924B1 (en) * 1999-02-01 2005-11-08 Nen-Fu Huang IP routing lookup scheme and system for multi-gigabit switching routers
US6460112B1 (en) 1999-02-23 2002-10-01 Netlogic Microsystems, Llc Method and apparatus for determining a longest prefix match in a content addressable memory device
US6499081B1 (en) 1999-02-23 2002-12-24 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a segmented content addressable memory device
JP2000242532A (ja) * 1999-02-23 2000-09-08 Fujitsu Ltd 出力ファイル制御装置、その装置を用いたデータ処理システム及びその装置での処理をコンピュータで行わせるためのプログラムを格納した記憶媒体
US6892272B1 (en) 1999-02-23 2005-05-10 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a content addressable memory device
US6192051B1 (en) * 1999-02-26 2001-02-20 Redstone Communications, Inc. Network router search engine using compressed tree forwarding table
US6298340B1 (en) * 1999-05-14 2001-10-02 International Business Machines Corporation System and method and computer program for filtering using tree structure
JP3216630B2 (ja) * 1999-06-09 2001-10-09 日本電気株式会社 通信制御装置
US6505270B1 (en) 1999-07-02 2003-01-07 Lara Technology, Inc. Content addressable memory having longest prefix matching function
US6801981B1 (en) 2000-06-14 2004-10-05 Netlogic Microsystems, Inc. Intra-row configurability of content addressable memory
US6795892B1 (en) 2000-06-14 2004-09-21 Netlogic Microsystems, Inc. Method and apparatus for determining a match address in an intra-row configurable cam device
US6799243B1 (en) 2000-06-14 2004-09-28 Netlogic Microsystems, Inc. Method and apparatus for detecting a match in an intra-row configurable cam system
US6751701B1 (en) 2000-06-14 2004-06-15 Netlogic Microsystems, Inc. Method and apparatus for detecting a multiple match in an intra-row configurable CAM system
US6662184B1 (en) * 1999-09-23 2003-12-09 International Business Machines Corporation Lock-free wild card search data structure and method
US6542391B2 (en) 2000-06-08 2003-04-01 Netlogic Microsystems, Inc. Content addressable memory with configurable class-based storage partition
US6934795B2 (en) 1999-09-23 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with programmable word width and programmable priority
US6813680B1 (en) 2000-06-14 2004-11-02 Netlogic Microsystems, Inc. Method and apparatus for loading comparand data into a content addressable memory system
US6374326B1 (en) * 1999-10-25 2002-04-16 Cisco Technology, Inc. Multiple bank CAM architecture and method for performing concurrent lookup operations
US6154384A (en) * 1999-11-12 2000-11-28 Netlogic Microsystems, Inc. Ternary content addressable memory cell
US6502163B1 (en) 1999-12-17 2002-12-31 Lara Technology, Inc. Method and apparatus for ordering entries in a ternary content addressable memory
US6615210B1 (en) * 2000-02-04 2003-09-02 Broad Web Corporation Bit stream ternary match scheme
TW498650B (en) * 2000-03-22 2002-08-11 Ind Tech Res Inst Flexible and highly efficient packet classification method
JP2002016638A (ja) * 2000-06-29 2002-01-18 Mitsubishi Electric Corp ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体
US6792502B1 (en) * 2000-10-12 2004-09-14 Freescale Semiconductor, Inc. Microprocessor having a content addressable memory (CAM) device as a functional unit therein and method of operation
US20020089937A1 (en) * 2000-11-16 2002-07-11 Srinivasan Venkatachary Packet matching method and system
EP1386432A4 (en) * 2001-03-21 2009-07-15 John A Stine PROTOCOL OF ACCESS AND ROUTING FOR AD HOC NETWORKS, IN WHICH THE COLLISION RESOLUTION AND THE DISSEMINATION OF NODE STATES ARE USED
US6735600B1 (en) * 2001-03-30 2004-05-11 Lsi Logic Corporation Editing protocol for flexible search engines
US20030031179A1 (en) * 2001-08-08 2003-02-13 Jintae Oh Self-updateable longest prefix matching method and apparatus
KR100413528B1 (ko) * 2001-11-30 2004-01-03 한국전자통신연구원 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체
US7050317B1 (en) 2002-03-15 2006-05-23 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same
US7441074B1 (en) * 2002-08-10 2008-10-21 Cisco Technology, Inc. Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation
US7162481B2 (en) * 2002-12-06 2007-01-09 Stmicroelectronics, Inc. Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US7571156B1 (en) * 2003-03-28 2009-08-04 Netlogic Microsystems, Inc. Network device, storage medium and methods for incrementally updating a forwarding database
TWI227395B (en) * 2003-06-02 2005-02-01 Genesys Logic Inc Method for parallel processing of memory data and error correction code and related device thereof
US7174441B2 (en) 2003-10-17 2007-02-06 Raza Microelectronics, Inc. Method and apparatus for providing internal table extensibility with external interface
US7934198B2 (en) * 2003-10-17 2011-04-26 Netlogic Microsystems, Inc. Prefix matching structure and method for fast packet switching
US7194573B1 (en) * 2003-10-31 2007-03-20 Integrated Device Technology, Inc. CAM-based search engine devices having advanced search and learn instruction handling
US7249228B1 (en) * 2004-03-01 2007-07-24 Cisco Technology, Inc. Reducing the number of block masks required for programming multiple access control list in an associative memory
US7461200B1 (en) * 2004-09-23 2008-12-02 Netlogic Microsystems, Inc. Method and apparatus for overlaying flat and tree based data sets onto content addressable memory (CAM) device
US7339810B1 (en) * 2005-03-24 2008-03-04 Netlogic Microsystems, Inc. Device and method for ensuring current consumption in search engine system
US7694068B1 (en) 2005-12-08 2010-04-06 Netlogic Microsystems, Inc. Re-entrant processing in a content addressable memory
US7624226B1 (en) 2005-12-20 2009-11-24 Netlogic Microsystems, Inc. Network search engine (NSE) and method for performing interval location using prefix matching
US7555593B1 (en) * 2006-01-31 2009-06-30 Netlogic Microsystems, Inc. Simultaneous multi-threading in a content addressable memory
US7933282B1 (en) * 2007-02-08 2011-04-26 Netlogic Microsystems, Inc. Packet classification device for storing groups of rules

Also Published As

Publication number Publication date
US20080275872A1 (en) 2008-11-06
US20040193619A1 (en) 2004-09-30
EP1611533A1 (en) 2006-01-04
US7426518B2 (en) 2008-09-16
US8073856B2 (en) 2011-12-06
CN1784678A (zh) 2006-06-07
JP2006527526A (ja) 2006-11-30
WO2004088548A1 (en) 2004-10-14

Similar Documents

Publication Publication Date Title
JP4614946B2 (ja) 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法
US7571156B1 (en) Network device, storage medium and methods for incrementally updating a forwarding database
US7437354B2 (en) Architecture for network search engines with fixed latency, high capacity, and high throughput
CA2434876C (en) Method and apparatus for ternary content addressable memory (tcam) table management
US9819637B2 (en) Efficient longest prefix matching techniques for network devices
US6985483B2 (en) Methods and systems for fast packet forwarding
EP1623557B1 (en) A bounded index extensible hash-based ipv6 address lookup method
US5946679A (en) System and method for locating a route in a route table using hashing and compressed radix tree searching
US20060083247A1 (en) Prefix lookup using address-directed hash tables
CN111937360B (zh) 最长前缀匹配
US20040085953A1 (en) Longest prefix matching (LPM) using a fixed comparison hash table
JP2002207771A (ja) 最長プレフィクス一致のための高速でフレキシブルなサーチ・エンジン
KR100512949B1 (ko) 필드레벨 트리를 이용한 패킷분류장치 및 방법
US7739445B1 (en) Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device
US6925503B2 (en) Method and system for performing a longest prefix match search
EP3319279B1 (en) Ip routing lookup
KR100428247B1 (ko) 아이피 주소룩업에서 고속 엘피엠 탐색을 위한 파이프라인씨에이엠의 구성 방법
US7376657B1 (en) Fast IPv6 address lookup using skip level processing on multi-bit tries
KR100460188B1 (ko) 인터넷 프로토콜 주소 룩-업 방법
KR100459542B1 (ko) 인터넷 프로토콜 주소 룩-업 장치
JP3639553B2 (ja) ルーティング処理装置およびルーティング方法
WO2005013566A1 (ja) データ検索方法及び装置
Erdem et al. MIPS extension for a TCAM based parallel architecture for fast IP lookup
JP2020201656A (ja) 検索回路

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20061016

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061016

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100412

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100419

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100512

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100519

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100614

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100707

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101019

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees