JP2003516670A - 最長一致アドレスルックアップのための方法および装置 - Google Patents

最長一致アドレスルックアップのための方法および装置

Info

Publication number
JP2003516670A
JP2003516670A JP2001542982A JP2001542982A JP2003516670A JP 2003516670 A JP2003516670 A JP 2003516670A JP 2001542982 A JP2001542982 A JP 2001542982A JP 2001542982 A JP2001542982 A JP 2001542982A JP 2003516670 A JP2003516670 A JP 2003516670A
Authority
JP
Japan
Prior art keywords
subtree
mapper
entry
stored
descriptor
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.)
Withdrawn
Application number
JP2001542982A
Other languages
English (en)
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.)
Mosaid Technologies Inc
Original Assignee
Mosaid Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mosaid Technologies Inc filed Critical Mosaid Technologies Inc
Publication of JP2003516670A publication Critical patent/JP2003516670A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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
    • 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
    • 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
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Error Detection And Correction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

(57)【要約】 ルックアップテーブルの深さを増大させるための方法および装置を提供する。ルックアップテーブルは、少なくとも2つのルックアップユニットを含む。キーに対応する最終結果値のサーチリクエストが、並列にルックアップユニットの各々に対して発行される。ルックアップユニットの各々は、最終結果値のために並列にマルチレベルサーチを行なう。ルックアップユニットの1つのみに記憶された最終結果値は、ルックアップユニットの1つによって与えられる。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
インターネットはルータで接続された1セットのネットワークである。ルータ
は、受信したデータパケットを転送すべき次のホップを、各々の可能なデスティ
ネーションネットワークごとに示すルーティングテーブルを維持する。次のホッ
プとは、別のルータまたは最終的なデスティネーションであろう。
【0002】 ルータのポートで受信されるインターネットプロトコル(IP)データパケッ
トはIPデスティネーションアドレスを含む。IPデスティネーションアドレス
はIPデータパケットの最終デスティネーションである。現在、IPバージョン
4(IPv4)およびIPバージョン6(IPv6)の2つのIPバージョンが
存在する。IPv4は、IPデスティネーションアドレスを記憶する、データパ
ケットに含まれるIPヘッダに32ビットのフィールドを設ける。ルータは、I
Pヘッダに記憶されたIPデスティネーションアドレスに依存して、接続された
受信データパケットを次のループのルータかまたは、デスティネーションがロー
カルネットワークであれば最終的なデスティネーションに転送する。
【0003】 32ビットIPv4デスティネーションアドレスは40億の可能なルートをも
たらす。インターネットルータは典型的に、40億の可能なルートのうち5万を
記憶する。しかしながら、記憶されるルートの数は、インターネットの発展およ
びIPv6の広がりによって増加している。
【0004】 もともと、IPアドレス空間は3つのクラスのIPアドレス、すなわちA,B
およびCに分割されていた。各々のIPアドレス空間はネットワークアドレスお
よびホストアドレスに分割された。クラスAは、126のネットワークおよびネ
ットワーク当り1600万個のホストを許容した。クラスBは、ネットワーク当
り64,000個のホストを備えて、16382個のネットワークを許容し、ク
ラスCは、ネットワーク当り256個のホストを備えて、200万個のネットワ
ークを許容した。しかしながら、IPアドレス空間を異なるクラスに分割するこ
とにより、利用可能なIPアドレスの数が減少してしまった。クラスCはネット
ワーク当り最大で256個のホストしか許容しないが、これは大抵の組織にとっ
ては少なすぎる。したがって、大抵の組織にクラスBアドレスを割当てて、64
,000個のホストアドレスをとった。このホストアドレスは、それらを割当て
られた組織が使用しなくても、他の組織が使用不可能なものである。クラスBの
IPアドレスを有する組織のホストのすべては、たとえば、27.32.xx.
xxなどの、16の最上位ビット(MBS)に同じネットワークアドレスを記憶
する。
【0005】 クラスレス・インタードメイン・ルーティング(CIDR)は、未使用のIP
ホストアドレスを自由化するために導入された。残余の未使用のネットワークは
、サイズ可変のブロックで組織に割当てられる。500個のアドレスを必要とす
る組織は500個の連続するアドレスを入手する。たとえば、ある組織に、12
8.32.xxで始まる500個の利用可能なアドレスを割当て可能である。ル
ータが記憶するルートの数は、クラスレス・インタードメイン・ルーティングの
導入以来増加した。クラスレス・インタードメイン・ルーティングは、一致する
ネットワークアドレスをサーチしてIPデスティネーションアドレスの対応する
次のホップを見出す代わりに、対応するルートを見出すのに最長プレフィックス
一致を必要とする。たとえば、サーチは、たとえば128.xx.xxなどのク
ラスBのIPアドレスの16MSBの後はもはやストップできない。なぜなら、
128.32.4.xxは別の組織に割当てられ得るからであり、これには次の
異なるホップを必要とする。
【0006】 キーに対して最長プレフィックス一致をサーチするための1つの方法は、バイ
ナリツリーサーチの使用によるものである。バイナリツリーサーチは、1ビット
ずつ32のレベルまで32ビット入力を一致させ、32ビットのキーに一致する
エントリを見出すには32のサーチが必要である。一致をサーチするための別の
方法はパトリシアツリーの使用によるものである。パトリシアツリーは、バイナ
リツリーの葉までにエントリが存在しなければ、必要なサーチ数を減らす。
【0007】 IPデスティネーションアドレスと関連する次のホップを効率的にサーチする
ためのまた別の方法が、1998年5月11日に出願された、ブロドニックら(
Brodnick et al.)による「高速ルーティングルックアップのための方法および
システム」(“Method and System for Fast Routing Lookups”)と題された、
PCT出願連続番号PCT/SE98/00854に記載されている。ブロドニ
ックが記載する方法は、重複するルートを記憶しないことで、記憶される次のホ
ップの数を減じる。次のホップの数を減じることにより、メモリの必要量を低減
し、それによりルートルックアップテーブルを高速キャッシュメモリに記憶でき
るようになる。
【0008】 ブロドニックらは、バイナリツリーを3レベルに分割する。バイナリツリーを
3つのレベルに分割することにより、サーチ数を3に減らした。第1のレベルの
インデックス付けされたエントリは、ルートをエントリからとる場合、サーチを
第1のレベルで終了可能であるかまたは、IPデスティネーションアドレスのさ
らなる部分を用いて、その後のレベルまでサーチを継続しなければならないかを
示す。
【0009】 図1Aは、バイナリツリーの第1のレベルを表わす先行技術の64K(655
36)ビットマップを図示する。64Kビットマップ30は、深度16のバイナ
リツリーの葉またはノード44を表わし、ノード44当り1ビットである。ビッ
トマップは長さ16のビットマスクに分割される。64Kビットマップには212 =4096のビットマスクが存在する。図1Aに1つのビットマスクが示される
。ビットマップ30中のビットは、ノード44に対応するポインタのアレイに記
憶されたルートインデックスまたはサブツリーが存在すれば、‘1’にセットさ
れる。ノードが前のノード44とルートエントリを共有していれば、ビットマッ
プ30中のビットは、‘0’にセットされる。
【0010】 図1Bは、キャッシュメモリに実現される先行技術のルックアップテーブルを
図示する。ルックアップテーブルは、コードワード36のアレイ、ベースインデ
ックス34のアレイおよびマップテーブル40を含む。図1Bには32ビットの
IPアドレス38も示される。コードワード46は、ビットマップ30(図1A
)の各ビットマスクごとにコードワード36のアレイに記憶される。コードワー
ド46は6ビットの値46aおよび10ビットのオフセット46bを含む。ベー
スインデックス42は、コードワード36のアレイ中の4つのコードワード46
ごとに、ベースインデックス34のアレイに記憶される。
【0011】 コードワード36のアレイ、ベースインデックス34のアレイおよびマップテ
ーブル40を用いて、ポインタ(図示せず)のアレイ中のポインタを選択する。
ポインタは、ルートインデックスまたはインデックスを記憶してさらなるサーチ
を行なう。
【0012】 ポインタのアレイ中のポインタ群は、コードワード36のアレイ中のコードワ
ード46およびベースインデックス34のアレイ中のベースインデックス42を
選択することによって選択される。コードワード46は、IPアドレス38の最
初の12ビット50を用いて選択される。ベースインデックス42は、IPアド
レス38の最初の10ビット48を用いて選択される。マップテーブル32を用
いて、ポインタ群の中の正しいポインタが選択される。
【0013】 選択されたコードワード36中の10ビットの値46bは、マップテーブル3
2へのインデックスである。マップテーブル32は、ビットマスク内のビット数
を4ビットのオフセットにマッピングする。オフセットは、ポインタのアレイの
中の選択されたポインタ群内のポインタを特定する。10ビットの値46bはマ
ップテーブル32中の列を選択し、IPアドレス52のビット19:16は4ビ
ットのオフセット54を選択する。
【0014】 このように、ポインタのサーチには、以下のキャッシュメモリアクセスが必要
である。すなわち、(1)16ビットのコードワード46を読出す;(2)16
ビットのベースアドレス42を読出す;(3)マップテーブル32から4ビット
のオフセット54を読出す;(4)ポインタインデックスがベースアドレス42
、コードワードオフセット46aおよび4ビットのオフセット54の和であるポ
インタインデックスでポインタを読出す。
【0015】 バイナリツリーの各レベルで同じメモリアクセスが必要である。したがって、
3レベルのサーチには12のメモリアクセスが必要である。
【0016】
【発明の概要】
デイビッド・エイ・ブラウン(David A. Brown)による「最長一致アドレスル
ックアップのための方法および装置」(“Method and Apparatus for Longest M
atch Address Lookup”)と題する代理人書類番号2037.2004−001
は、キーに対応する値に対して複数レベルのサーチを行なうためのルックアップ
テーブルを記載する。ルックアップテーブルに記憶可能であるルートインデック
スの数は、ルックアップテーブル中のメモリ場所の数によって制限される。
【0017】 この発明の原理に従えば、第1のルックアップユニットおよび第2のルックア
ップユニットを含むルックアップテーブルが提供される。第1のルックアップユ
ニットは、キーを受け、第1のルックアップユニットにおけるマルチレベルサー
チにより第1の結果を与える。第2のルックアップユニットは、キーを受け、第
2のルックアップユニットにおけるマルチレベルサーチにより第2の結果を与え
る。第1のルックアップユニットおよび第2のルックアップユニットの両方が、
並列にキーを受け、ユニットの1つのみが、第1の結果および第2の結果に依存
してルックアップユニットの1つのみに記憶されたキーに対する最終結果を与え
る。
【0018】 最終結果は、ルックアップテーブルに記憶されるべき最終結果の総数に依存し
てテーブル間で分散される。キーは、IPアドレスであってもよく、最終結果は
IPアドレスのためのルートインデックスである。
【0019】 キーによってインデックス付けされた第1のルックアップユニット中の第1の
メモリ場所が、最終結果を記憶し、キーによってインデックス付けされた第2の
ルックアップユニット中の第2のメモリ場所が、最終結果が第1のルックアップ
ユニットに記憶されているという表示を記憶する。第1のルックアップユニット
および第2のルックアップユニットの各々は、複数個のマッパレベルを含み、マ
ッパレベルの各々は、結果を記憶するためのメモリ場所を含む。
【0020】 ある実施例においては、第1のルックアップユニット中の複数個のマッパレベ
ルのいずれか1つの場所に記憶されたキーに対応する最終結果は、第2のルック
アップユニットに転送され、ルックアップユニットによって与えられる。
【0021】 代替の実施例では、キーに対応する最終結果が、最終結果が記憶されるルック
アップユニットによって与えられる。
【0022】 この発明の以上およびその他の目的、特徴および利点は、添付の図面に図示さ
れるように、この発明の好ましい実施例の以下のより特定的な説明から明らかに
なるであろう。図面中の同じ参照番号は異なる図面を通じて同じ部分を示す。図
面は、この発明の原則を図示するのに供される代わりに、縮尺を変更したり、強
調したりということを必ずしも行なわなくてよい。
【0023】
【詳細な説明】
この発明の好ましい実施例の説明は以下のとおりである。
【0024】 デンスモード 図2Aは、この発明の原則に従う最長一致プレフィックスルックアップテーブ
ル100を図示する。ルックアップテーブル100はキー104のルートインデ
ックス102を与える。ルートインデックス102を用いて、IPデスティネー
ションアドレスに向けた次のホップにアクセスする。図2Aに示された実施例で
は、キー104は32ビット幅であるが、キー104は32ビットに限定される
ものではない。ルックアップテーブル100は3つのマッパ106a−cを含む
。各々のマッパ106a−cは別個にアドレス指定されたメモリを含む。キー1
04に対応するデフォルトルートインデックスまたはルートインデックス102
は、マッパ106a−cのうち1つの中の場所に記憶される。各マッパからのマ
ッパ出力110a−cは、多数のマッパをサーチする必要がある場合、キーにつ
いてすべてのマッパ106a−cにアクセスするまで、遅延メモリ150a−c
に記憶される。
【0025】 マルチプレクサ108は、マルチプレクサ108の入力に転送されるマッパ出
力110a−cの1つをルートインデックス102として選択する。マッパ出力
110a−cは、マッパ出力110a−cの最上位ビット(MSB)に依存して
選択される。マッパ出力110a−cがルートインデックス102を含む場合の
み、マッパ出力110a−cのMSBが‘1’となる。
【0026】 図2Bは、図2Aに示されたルックアップテーブル100のマッパ106a−
cに記憶されたエントリのバイナリツリー表示を図示する。図2Bは図2Aと関
連して説明される。32ビットのキー104は32レベルのバイナリツリーとし
て表わすことができる。バイナリツリー実現例は、1ビットずつ32レベルまで
サーチするには、32のサーチを必要とする。サーチ数を減らすため、バイナリ
ツリーの32のレベルは3つのマッパレベル112a−cに分割され、各マッパ
レベル112a−cはマッパ106a−c(図2A)に対応する。マッパレベル
_1 112aは、バイナリツリーの32のレベルのうち最初の16個を含む。
しかしながら、簡潔さのため、図2Bには16のレベルのうち5つしか示されな
い。マッパレベル_2 112bは、32レベルのバイナリツリーの次の8レベ
ルを含み、図2Bには8つのレベルのうち3つが示される。マッパレベル_3は
、32レベルのバイナリツリーのうち最後の8レベルを含み、図1Bには8つの
レベルのうち3つが示される。各マッパレベル112a−cは複数のノードを含
む。16レベル(キー104の16のMSB)がマッパレベル−1 112aに
あり、8レベルがマッパレベル_2 112bにありかつ8レベルがマッパレベ
ル_3にあるように32レベルを分割することが、現在のメモリ技術においては
最適であるように思われるが、この発明はこの構成に限定されるものではない。
【0027】 キー104の最初の16ビットに対して1ビットずつ別個の16のサーチを行
なう代わりに、キー104の最初の16ビットと関連するルートインデックス1
02をマッパ106a(図2A)に記憶する。マッパ106a(図2A)は、キ
ー104の最初の16ビットのMSBによって直接にインデックス付けされる。
次のマッパ106bは、前のマッパ106aが、キー104と関連する次のホッ
プ情報にアクセスするのに用いるルートインデックス102を記憶しているか否
かに依存して、サーチされる。
【0028】 図2Bに示されるように、マッパレベル_1 112aに示されるノードまた
は葉は、それぞれr0およびr1と標識付けられた2つのルート114、116
と、それぞれs0およびs1と標識付けられたマッパレベル_2 112bへの
2つのポインタ1304および13023とを含む。各ルート114、116ごと
のルートインデックス102はL1マッパ106aに記憶される。また、L2マ
ッパ106bに向けたアドレスポインタ120はサブツリーインデックス130 4 に対して記憶され、L2マッパ106bに向けたアドレスポインタ(図示せず
)はサブツリー13023に対して記憶される。サブツリーインデックス1304
に対して、マッパ106a中のマッパエントリ1404に記憶されるアドレスポ
インタ120は、キー104と関連のルートインデックス102を見出すために
は、次のレベルのサーチが必要であることを示す。
【0029】 ツリー中のいずれのノードの値も、根114からの経路をトレースすることに
よって判定することができる。バイナリツリー中の各ノードは、右側の子および
左側の子の2つの子を有して示される。親ノードが‘1’ならば右側の子が選択
される。親ノードが‘0’ならば左側の子が選択される。根114からノード1
16への経路をトレースすると、r1は、‘010’にセットされたMSBを有
するすべてのキーに対して、L1マッパ106a中にルートインデックス102
として記憶される。根ノード114からs0ノード1304への経路をトレース
すると、s0は、‘00011’にセットされたMSBを有するすべてのキーに
対してL1マッパ106aに記憶される。
【0030】 L1マッパ106aはダイレクト・マップト・マッパであり、マッパレベル_
1 112aのボトムレベルの各ボトムレベルノードまたは葉ごとにルートイン
デックス102を記憶する。マッパレベル_1 112aのボトムレベルは、3
2レベルバイナリツリーの16番目のレベルである。16番目のレベルは64K
のノードを有する。しかしながら、例示の目的のため、マッパレベル_1 11
2aのボトムレベルは、32レベルのバイナリツリーのレベル−5として示され
る。L1マッパ106aに示されるルートインデックス102は、マッパレベル
_1 112aのレベル−5の1301−13032ノードに対応する。根ノード
114からレベル_5のノード1301、1302、1303への経路をトレース
すると、ルートインデックス102はr0である。したがって、r0は、L1マ
ッパ106aの場所1401、1402、1403に、すなわち、インデックス0
0000、00001および00010に記憶される。ノード1304はサブツ
リーインデックスs0を記憶し、したがって、s0は、アドレス00011に、
L1マッパ106aの中の場所1404に記憶される。同様に、レベル−5のノ
ード1305−1308に対するルートインデックス102はr0であり、したが
って、L1マッパ106aの中のアドレス00100、00101、00110
および00111の場所1405、1406、1407、1408はr0を記憶する
。レベル−5のノード1309−13012に対するルートインデックス102は
r1であり、したがって、L1マッパ106aの中のアドレス01000および
010001の場所1409、14010はr1を記憶する。
【0031】 L1マッパ106a中の各々の場所は、直接にもしくはレベル−5のノード3
001-32の親を介してレベル−5のノード3001−30032に割当てられるル
ートインデックス102または次のマッパ106b−cへのアドレスポインタを
記憶する。マッパレベル_3 106cは、32レベルのバイナリツリーのボト
ムレベルで、ノード138のh0およびノード140のh1の2つのホストノー
ドを含む。ホストノードのサーチは、キー104のすべてのビットのサーチを必
要とする。図2Aに示されるように、h0に対するルートインデックス102は
、L3_マッパ106c中の場所1464に記憶される。L1マッパ106aと
異なり、L2マッパ106bおよびL3マッパ106cは直接にマッピングされ
ない。
【0032】 マッパ106bおよび106cでは、ルートインデックス102は各々の可能
な入力ごとに記憶されない。ノードに対するルートインデックス102がマッパ
106b−cに以前に記憶されたルートインデックス102と異なる場合にのみ
、ルートインデックス102が記憶される。マッパレベル_2 112bに示さ
れる第1のサブツリーAのレベル−3ノードを見ると、ノード1321およびノ
ード1322に対するルートインデックス102はr0であり、したがって、r
0に対するルートインデックスは、L2マッパ106bの中のノード1321
よびノード1322の両者について、場所1421に記憶される。ノード1322
に対するサブツリーインデックスs0は場所1422に記憶される。レベル−3
のノード1324およびレベル−3のノード1325および1326と関連のルー
トインデックス102はr0であり、これは、前のノード1322に対して記憶
されたs0とは異なる。したがって、r0はL2マッパ106b中の次の場所1
423に記憶される。ルートr2は、ノード1327に対して、L2マッパ106
b中の場所1424に記憶される。なぜなら、ノード1327は前のノード132 6 と同じルートを共有しないからである。サブツリーインデックスs3は次のレ
ベル−3のノード1327に対して記憶される。したがって、s3はL2マッパ
106bの中の場所1425に記憶される。前のノードからルート変更があると
きにだけルートインデックスを記憶することにより、ルートインデックス102
を記憶するのに必要なメモリが低減される。示されるように、マッパレベル_2
112bの第1のサブツリーAのレベル−3の8つのノード1321-8につい
てルートインデックスを記憶するためには、L2マッパ106bの中の場所は5
つしか必要でない。ノンダイレクトマッパ106b、106cは、図5と関連し
てより詳細に後述される。
【0033】 図3は、この発明の原則に従う40ビットのキー210のための最長一致プレ
フィックスルックアップテーブル200を図示する。1つの実施例では、40ビ
ットのキーは、8ビットのプレフィックスおよび32ビットのIPアドレスを含
む。8ビットのプレフィックスは、32ビットのIPアドレスと関連する仮想私
設網(VPN)識別子であり得る。ルックアップテーブル200は4つのマッパ
106a−dを含む。マッパ106aは、図2Aと関連して説明されたように、
ダイレクト・マップト・マッパである。マッパ106b−dはインダイレクトマ
ッパである。マッパ106aは、40ビットのキー210の16のMSBに対応
する、L2マッパ106bに対するサブツリーインデックスまたはルートインデ
ックス102を記憶する。したがって、L1マッパは、第1のマッパレベル11
2a(図2B)中の64Kのノードの各々ごとに1つの、64Kの可能な場所を
有する。L1マッパ106a中の対応する場所に記憶されるL1マッパエントリ
データ220aは、パイプライン208およびL2インダイレクトマッパ106
bに転送される。L1マッパエントリデータ220aが、キー210bの次の8
ビットを用いる次のレベルのサーチが必要であることを示せば、キー210bの
次の8ビットおよびL1マッパエントリデータ220aに依存して、L2インダ
イレクトマッパ106bでサーチが行なわれる。
【0034】 第2のレベルのサーチの結果がL2マッパエントリデータ220b上に与えら
れ、これはパイプライン208およびL3インダイレクトマッパ106cに転送
される。第3のレベルのサーチは、キー210cの次の8ビットおよびL2マッ
パエントリデータ220bに依存して、L3インダイレクトマッパ106cで行
なわれる。
【0035】 サーチの結果は、L3マッパエントリデータ220c上を、パイプライン20
8およびL4インダイレクトマッパ106dに与えられる。L3マッパエントリ
データ220cは、キー210dの最後の8ビットおよびL3マッパエントリデ
ータ220cに依存して、L4インダイレクトマッパ106dで行なわれる。
【0036】 第4のサーチの結果はL4マッパエントリデータ220d上に与えられる。キ
ー210に対する最長一致プレフィックスと関連するルートインデックス102
は、マッパ106a−dのうちの1つの中のただ1つの場所に記憶される。した
がって、パイプライン208に転送されるルートインデックス102は、ただ1
つのマッパエントリデータ220a−dに含まれる。マッパ106a−dのうち
1つ、たとえばマッパ106bにルートインデックス102を見出すと、残余の
マッパ106c−dのサーチは必要ではなく、マッパ106c−dはアクセスさ
れない。パイプライン208は、マッパエントリデータ220a−dのうち1つ
に含まれるルートインデックス102を選択するためのマルチプレクサ108(
図2A)を含む。たとえば、マッパエントリデータ220a−dのMSBは、ル
ートインデックスが含まれているか否かの表示を与えることができる。
【0037】 マッパ106a−dと関連してパイプライン208を用いることにより、異な
るキー210による最長一致プレフィックステーブル200の複数サーチを並行
して行なうことができる。パイプライン208は、40ビットのルックアップテ
ーブル200の複数のサーチを、必要に応じて、他のマッパ106a−dの各々
のサーチが完了するまで、40ビットのキー210と関連の各マッパ106a−
dごとにマッパエントリデータ220a−dを記憶することによって並行して行
なって、40ビットキー210に対応するルートインデックスを見出すのを可能
にする。したがって、ダイレクト・マップト・マッパ106aへの単一のメモリ
アクセスを行なうことにより、受信したIPアドレスに対応するルートインデッ
クスに対するサーチリクエストがルックアップテーブル200に発せられる。別
のキーに対応するルートインデックスに対するその後のサーチは、ダイレクト・
マップト・マッパ106aのための次のメモリアクセスサイクルの中でルックア
ップテーブル200に発せられ得る。
【0038】 図4は、図3に示されたダイレクト・マップト・マッパ106aに記憶可能な
マッパエントリのタイプを図示する。図2Bに示されたバイナリツリー中のいず
れのノードに対するマッパエントリも、ノーエントリ300、ルートエントリ3
02またはサブツリーエントリ記述子304を記憶することができる。マッパエ
ントリ300、302、304の各タイプは、サブツリーフラグ306を含む。
サブツリーフラグ306の状態は、マッパエントリがサブツリーエントリ記述子
304であるか否かを示す。サブツリーフラグ306が‘1’にセットされれば
、マッパエントリはサブツリーエントリ記述子304であり、サブツリーインデ
ックス312を含む。サブツリーインデックス312は、次のノンダイレクト・
マップト・マッパ106b−dに記憶されるサブツリーエントリ記述子304の
アドレスである。サブツリーエントリは図4と関連して後述される。サブツリー
フラグ306が‘0’ならば、ノーエントリフラグ314をチェックして、マッ
パエントリがノーエントリ300であるかまたはルートエントリ302であるか
を判定する。ノーエントリフラグ314が‘0’ならば、エントリはノーエント
リ300である。ノーエントリフラグ314が‘1’ならばエントリはルートエ
ントリ302であり、ルートインデックスフィールド310中に、キー104と
関連のルートインデックス102(図3)を記憶する。マルチプレクサ108(
図2A)は、サブツリーフラグ306を用いて、ルートインデックス102(図
3)を含むマッパエントリデータ220a−dを選択する。
【0039】 図5は、図2Bに示されたマッパレベル_2 112b中のノードに対応する
マッパ106bを図示する。マッパ106bは、サブツリーメモリ400、マッ
パアドレス論理402およびサブツリーマッパ418を含む。マッパ106aに
記憶されるキー210aの最初の部分によって選択されたサブツリーインデック
ス312は、サブツリーメモリ400に転送される。サブツリーメモリ400は
、サブツリーインデックス312が選択するサブツリーエントリ404を含む。
サブツリーエントリ404はデータフィールド406およびポインタフィールド
408を含む。
【0040】 図2Bに戻って、サブツリーエントリ404は、マッパレベル_2 112b
に示されるサブツリーのうちの1つのボトムレベルに対応する。マッパレベル_
2 112bが8つのレベルを有すれば、各サブツリー(図示せず)のボトムレ
ベルは、各ノードに1つの、最大256のルートを有する。
【0041】 続いて図5で、サブツリーエントリ404は、サブツリーのボトムレベル上の
各ノードに対応する256の可能なルートインデックス102(図3)へのアク
セスを提供する。ルートインデックス102(図3)はサブツリーマッパ418
に記憶される。256の可能なルートインデックスへのアクセスを提供するため
、稠密サブツリー記述子がデータフィールド406に記憶される。データフィー
ルド406は256ビット幅であり、サブツリーのボトムレベルで各ノードごと
に1ビットを与える。データフィールド406は、図6Aおよび図6Bと関連し
てより詳細に後述される。ポインタフィールド408は256ビット幅であり、
16の16ビットポインタの記憶を可能にする。各ポインタは、サブツリーマッ
パ418中に、連続した16のマッパエントリに対するベースアドレスを記憶し
て、256のルートインデックスへのアクセスを与える。したがって、ポインタ
フィールド408は、サブツリーのボトムレベルの各ノードごとにサブツリーマ
ッパ418中のマッパエントリへのポインタを間接的に与えることができる。ポ
インタフィールド408は図6と関連してより詳細に説明される。
【0042】 データフィールド406中の稠密サブツリー記述子に記憶されたサブツリーデ
ータ412とポインタフィールド408に記憶されたサブツリーポインタ414
とはマッパアドレス論理402に転送される。マッパアドレス論理402は、キ
ー210bの次の部分(次の8ビット)も受ける。
【0043】 マッパアドレス論理402は、キー212bの次の8ビットに依存するサブツ
リーのボトムレベルのノードと関連のマッパエントリ、すなわちサブツリーデー
タ412およびサブツリーと関連のサブツリーポインタ414のマッパアドレス
416を判定する。マッパアドレス416は、サブツリーマッパ418中のマッ
パエントリを選択する。サブツリーマッパ418は、ダイレクト・マップト・マ
ッパ106aに対して、図4と関連して説明されたのと同じタイプのマッパエン
トリを含む。マッパデータエントリ220bの中身が、その後のサーチが必要で
あるか否かを決定する。マッパエントリデータ220bが、次のマッパレベル1
12c(図2B)中に別のサブツリーエントリ404が存在することを示すサブ
ツリーインデックス312(図4)を含めば、その後のサーチが必要である。
【0044】 キー210bの第2の部分は、選択されたサブツリーのボトムレベル中のノー
ドを選択する。サブツリーポインタ414は、サブツリー中のノードと関連のベ
ースアドレスを選択し、サブツリーデータ412は、ベースアドレスと関連のマ
ッパエントリのブロック内のオフセットを選択する。マッパアドレス論理402
は、図7と関連して後述される。
【0045】 図6Aはサブツリーのバイナリツリー表示である。示されたサブツリーは5つ
のレベルを含む。サブツリーは、3つのルートインデックスr1、r2およびr
3ならびに2つのサブツリーインデックスs0およびs1を含む。サブツリーの
ボトムレベルには32個のノード5001−50032が存在する。ボトムレベル
の各ノード5001−50032と関連のルートインデックスまたはサブツリーイ
ンデックスが以下の表1に示される。
【0046】
【表1】
【0047】 図6Bは、図6Aに示されたサブツリーのボトムレベル中のノードに対応する
、図5に示されたデータフィールド406に記憶された稠密サブツリー記述子を
図示する。データフィールド406は、図6Aに示されたサブツリーのボトムレ
ベル中の各ノード500ごとに1ビットの、32ビットを含む。データフィール
ド406中のビット5021−50232は以下のように割当てられる。前のノー
ドのルートインデックスを用いるならば、データフィールド406中のビットを
‘0’にセットし、サブツリーマッパ418(図5)に記憶された次のルートイ
ンデックスを用いるならば、‘1’にセットして次のマッパエントリアドレスを
増分する。ルートが特定されなければ、データフィールド402中の最初のビッ
トは、マッパエントリ5041に記憶されたデフォルトルートr0を選択する。
特定されたルートがないため、こうして、ビット5021を‘0’にセットして
デフォルトルートを選択する。マッパエントリ5041に記憶されたデフォルト
ルートr0は、次の3つのノード5002−5004に対して選択され、すなわち
、対応するビット5022−5004はデータフィールド406中で‘0’にセッ
トされて、5021が用いた前のルートインデックスを用いる。ノード5005
はルート変更がある。
【0048】 マッパエントリ5042に記憶される、ノード5005に用いられるルートr1
はノード5066と共有される。したがって、ビット5025は、ルート変更を示
す‘1’であり、サブツリーマッパ418(図5)中のマッパエントリ5042
を選択する。ビット5026は、5025に記憶されるルートインデックスをこの
ノードに用いるべきであることを示す‘0’である。ノード5007に対しては
いずれのルートも与えられないため、ルート変更があり、デフォルトルートr0
を記憶するサブツリーマッパ418(図5)中のマッパエントリ5043を必要
として、ビット5027に‘1’が記憶される。
【0049】 ノード5008は前のノード5007と同じルートを共有し、サブツリーマッパ
418(図5)で新たなマッパエントリは必要ない。ノード5008に対応する
ビット5028は‘0’にセットされる。ノード5009は前のノード5008
は異なるルートを有し、サブツリーマッパ418(図5)で新たなマッパエント
リが必要である。ノード5009に対応するビット5029は‘1’にセットされ
、次の連続するメモリ場所中のサブツリーマッパ418(図5)に、r2を記憶
するマッパエントリ5044が加えられる。
【0050】 ノード50010は、前のノード5009とは異なるルートを有し、サブツリー
マッパ418(図5)で新たなルートエントリが必要である。ノード50010
対応するビット50210は‘1’にセットされ、s0を記憶するマッパエントリ
5045が、次の連続するメモリ場所中のサブツリーマッパ418(図5)に加
えられる。
【0051】 ノード50011は、前のノード50010とは異なるルートを有し、サブツリー
マッパ418(図5)で新たなマッパエントリが必要である。ノード50011
対応するビット50211は‘1’にセットされ、r2を記憶するマッパエントリ
5046が、次の連続するメモリ場所中のサブツリーマッパ418(図5)に加
えられる。
【0052】 ノード50012および50013は、前のノード50011と同じルートを共有し
、サブツリーマッパ418(図5)で新たなマッパエントリは必要ない。ノード
50012に対応するビット50212およびノード50013に対応するビット50
13はデータフィールド406中で‘0’にセットされる。
【0053】 ノード50014は前のノード50013とは異なるルートを有し、サブツリーマ
ッパ418(図5)で新たなマッパエントリが必要である。ノード50014に対
応するデータフィールド406中のビット50214は‘1’にセットされ、s1
を記憶するマッパエントリ5047がサブツリーマッパ418(図5)に加えら
れる。ノード50015は前のノード50014とは異なるルートを有し、サブツリ
ーマッパ418(図5)で新たなマッパエントリが必要である。ノード50015 に対応する、データフィールド中のビット50215は‘1’にセットされ、サブ
ツリーマッパ418(図5)に、r2を記憶するマッパエントリ5048が加え
られる。ノード50016は前のノード50015と同じルートを共有し、サブツリ
ーマッパ418(図5)で新たなマッパエントリは必要ない。
【0054】 ノード50017は前のノード50016とは異なるルートを有し、サブツリーマ
ッパ418(図5)で新たなマッパエントリが必要である。ノード50017に対
応する、データフィールド406中のビット50217は‘1’にセットされ、r
3を記憶するマッパエントリ5049がサブツリーマッパ418(図5)に加え
られる。
【0055】 ノード50018−50032はすべてノード50017と同じルートを共有し、サ
ブツリーマッパ418(図5)で新たなマッパエントリは必要ない。対応するビ
ット50218−50232は‘0’にセットされる。したがって、32個のノード
5001−50032について、ルートエントリ302(図4)またはサブツリー
エントリ304(図4)を記憶するには、マッパエントリ5041-9が9つ必要
である。
【0056】 ノード5001−50032に対応するマッパエントリ5041−5049は、デ
ータフィールド406に記憶される稠密サブツリー記述子に記憶される‘1’の
数を計算することにより、サブツリーマッパ418(図5)中でインデックス付
けされる。たとえば、ノード50028に対応するマッパエントリ5041−50
9を見出すには、データフィールド406のビット5021−50228に記憶さ
れる‘1’の数をカウントする。‘1’の数が8であると、対応するマッパエン
トリはデフォルトルートから8番目の場所、すなわち、マッパエントリ5049
である。
【0057】 ルート変更がある場合にのみマッパエントリを記憶することにより、サブツリ
ーマッパ418(図5)中のサブツリー当りのマッパエントリ5041−5049 の数が減少する。
【0058】 図7は図5に示されたポインタフィールド408を図示する。ポインタフィー
ルド408は、サブツリーマッパ418(図5)中の連続する16のマッパエン
トリ場所5041−50416(図6B)のブロックのベースアドレスを記憶する
ためのブロックベースアドレスフィールド6001、6002を含む。連続する1
6のマッパエントリのブロック6021、6022中のサブツリーマッパ418(
図5)にメモリが割当てられる。8レベルのサブツリーは異なるルートを256
まで有することができ、256のすべてのルートを記憶するためには、ブロック
6021、6022が16個必要である。必要なブロック602の数は、サブツリ
ーに対するルートの数に依存する。ブロックベースアドレス6021、6022
ブロックベースアドレス(図示せず)のフリーリストから除くことにより、ブロ
ック602を特定のサブツリーに割当てる。メモリにアドレスのフリーリストを
与えるための方法は技術分野では周知である。
【0059】 16のマッパエントリ5041-16のメモリブロックを割当てることにより、サ
ブツリーマッパ418(図5)中のメモリの扱いがより容易になる。なぜなら割
当てられた16個の場所は連続しているからである。
【0060】 図8は、図5に示されたマッパアドレス論理402を図示する。マッパアドレ
ス論理402は、オフセット論理700、ポインタ論理702およびアダー論理
704を含む。オフセット論理700はノードセレクト論理706および1カウ
ント論理708を含む。ポインタ論理はベースアドレスセレクト論理710を含
む。
【0061】 ノードセレクト論理706は、キー210bの8ビットに対応する、サブツリ
ーデータ412中のノード500(図6B)を選択する。対応するノード番号は
ノードセレクト718上を1カウント論理708に転送される。1カウント論理
708は、サブツリーデータフィールド406に記憶された‘1’の数を、選択
されたノード500に対応するビットまでカウントする。1の数はブロックセレ
クト712上をポインタ論理702へおよびブロックオフセット714上をアダ
ー論理704へ転送される。
【0062】 8ビット幅のカウントフィールドを必要とする256ビットのサブツリーデー
タフィールド406に記憶される‘1’は最大で256個であり得る。8ビット
カウントフィールドは2つのフィールドに分割され、4つのMSBがブロックセ
レクト712を与え、4つの最下位ビット(LSB)がブロックオフセット71
4を与える。
【0063】 たとえば、8ビットキー210bが‘01000100’である場合、ノード
番号68を選択し、サブツリーデータ412の最初の68ビットに記憶される‘
1’が27個存在すれば、カウントは1C Hex(00011100)、MS
B(0001)である。すなわち、ブロックセレクト714、セレクトブロック
6021(図6)およびLSB(1100)である。すなわち、ベースブロック
オフセットセレクトマッパエントリ50411(図6)であり、すなわちブロック
5021中の12番目のエントリである。
【0064】 ベースアドレスセレクト論理710は、オフセット論理700から転送される
ブロックセレクト712に依存して、サブツリーポインタ414からベースアド
レス716を選択する。アダー論理704は、オフセット論理700から転送さ
れるブロックオフセット714をベースアドレス716に加算し、マッパアドレ
ス416を与える。マッパアドレス416はマッパ106b−d中のマッパエン
トリ504(図6B)のインデックスである。
【0065】 図9は、この発明の原則に従う、ルックアップテーブル200中のキー210
(図3)に対して最長一致プレフィックスをサーチするためのステップを図示す
るフローチャートである。
【0066】 ステップ800で、キー210a(図3)の最初の部分がマッパ106aへの
インデックスとして転送される。処理はステップ802に継続する。
【0067】 ステップ802で、キー210a(図3)の最初の部分によってインデックス
付けされた第1のレベルのマッパ中のマッパエントリ504(図6B)に記憶さ
れたマッパエントリデータ220a(図3)は、次のレベルのさらなるサーチが
必要であるか否かを判定する。必要ならば、処理はステップ804に継続する。
必要なければ、第1のレベルのマッパ中のインデックス付けされたマッパエント
リ504(図6B)中のルートエントリ302(図4)が、キーに対して、対応
する最長プレフィックスルートを記憶し、処理はステップ808に継続する。
【0068】 ステップ804で、次のレベルのマッパ106b−dがサーチされる。次のレ
ベルのマッパのためのインデックスは、前のレベルのマッパ中のインデックス付
けされたマッパエントリ504(図6B)中のサブツリーエントリ記述子304
(図4)に記憶されたサブツリーインデックス312と、キー210b−dの次
の部分とに依存する。処理はステップ806に継続する。
【0069】 ステップ806で、次のレベルのマッパ中のインデックス付けされたマッパエ
ントリ504(図6B)は、キーに対する、対応する最長プレフィックスルート
インデックスまたはさらなるサーチが必要であることを示すサブツリーインデッ
クスを記憶する。さらなるサーチが必要ならば、処理はステップ804に継続す
る。必要なければ、処理はステップ808に継続する。
【0070】 ステップ808で、マッパ106a−dのうち1つの中のマッパエントリ50
4(図6B)に記憶されたルートインデックス102(図3)は、ルートインデ
ックス102(図3)としてルックアップテーブル200から転送される。処理
は完了する。
【0071】 深度拡張(depth expansion) 図3に示されたルックアップテーブル200に記憶可能なルートインデックス
102(図3)の数は、サブツリーマッパ418(図5)中の利用可能なマッパ
エントリ504(図6B)の数によって限定される。たとえば、各々のサブツリ
ーマッパ418(図5)が128Kのマッパエントリを含みかつルックアップテ
ーブル中にサブツリーマッパ418(図5)が2つ存在すれば、ルックアップテ
ーブル200中に最大で256Kのルートインデックス102(図3)を記憶可
能である。128Kのマッパエントリを有するサブツリーマッパ418(図5)
は17ビットのインデックスを必要とする。512Kのマッパエントリを有する
サブツリーマッパ418(図5)は19ビットのインデックスを必要とする。ル
ックアップテーブル200中の2つの512Kサブツリーマッパ418(図5)
は、32ビットIPv4デスティネーションアドレスのために、可能な40億個
のルートインデックス102(図3)のうち100万個のための記憶を提供する
【0072】 ルートインデックス102(図3)を記憶するためのマッパエントリ504(
図6B)の数は、複数のルックアップテーブル200を設けることによって増や
すことができる。複数のルックアップテーブルは、ルックアップテーブル200
のうち1つの中のサブツリーマッパ418(図5)のマッパエントリ504(図
6B)に記憶された、サーチキー210に対応する値を求めて並行してサーチさ
れる。
【0073】 図10Aは深度拡張のための実施例を図示する。2つのルックアップテーブル
、すなわちマスタルックアップテーブル200aおよびスレーブルックアップテ
ーブル200bが示される。しかしながら、ルックアップテーブルの数は示され
た2つに限定されるのではなく、1つよりも多くのスレーブルックアップテーブ
ル200bを加えることができる。
【0074】 ルックアップテーブル200a−bの各々は、同じサーチキー210によって
並行してサーチされる。サーチキー210に対応するルートインデックス102
(図3)は、ルックアップテーブル200a−bのうち1つの中のサブツリーマ
ッパ418(図5)またはルックアップテーブル200a、200bの両者の中
のダイレクトマッパ106aに記憶される。最終ルートインデックス900は、
両者のルックアップテーブル200a、200bの並行したサーチの後に見出さ
れる。
【0075】 図10Bは、図10Aに示された実施例のルックアップテーブル200aの1
つを図示する。ルックアップテーブル200a−bの各々は、図3と関連してル
ックアップテーブル200について既に説明されたようなマッパ106a−dお
よびパイプライン208ならびにドライバ論理902を含む。ルックアップテー
ブル200aは、サーチキーに対応するルートインデックスを求めて、マッパ1
06a−d中の複数レベルサーチを行なう。各レベルのサーチ結果は、マッパエ
ントリデータ220a−d上をパイプライン208に転送される。パイプライン
208は、サーチ904の結果をドライバ論理902に転送する。ルックアップ
テーブル200a−bの各々の中のマッパ106aのマッパエントリ504(図
6B)はサブツリーエントリ304(図4)を記憶するが、ルートエントリ30
2(図4)は、マスタルックアップテーブル200a中のマッパ106aにしか
記憶されない。ルートエントリ302の代わりに、スレーブルックアップテーブ
ル200b中のマッパ106aのマッパエントリ504(図6B)にノーエント
リ300(図4)が記憶される。マッパ106a中でただ1つのルックアップテ
ーブルにルートインデックスを配することにより、ルックアップテーブルを選択
して最終ルートインデックス900を与えることを回避する。この結果、スレー
ブルックアップテーブル200b中のメモリ64Kが与えられる。これは、ルー
トインデックスを記憶するのに用いることはできないが、図3と関連して説明さ
れたように、同じルックアップテーブルをマスタルックアップテーブルとしてま
たはスレーブルックアップテーブルとして構成できるようにする。代替的な実施
例では、マッパ106aを有しないスレーブルックアップデバイスを設けること
ができる。ルートインデックス102(図3)をマッパ106a中のルートエン
トリ302(図4)に記憶すれば、サーチは、マスタルックアップテーブル20
0a中のマッパ106aで終了する。
【0076】 図10Aに示されたように、マスタルックアップテーブル200aおよびスレ
ーブルックアップテーブル200bは最終ルートインデックス900を共有する
。最終ルートインデックス900を記憶するルックアップテーブル200a、2
00bはルートインデックス102(図3)を与える。ルックアップテーブル2
00a、200bの各々が別個のデバイスならば、最終ルートインデックス90
0を共有することにより、各デバイスの外部ピンのカウントが減少する。いかな
るときにも、最終ルートインデックス900を駆動するのは、ルックアップテー
ブル200a、bのうち1つだけである。
【0077】 サーチキー210と関連のルートインデックスをルックアップテーブル200
a、200bの両者に記憶して、ルックアップテーブルの両者が同時に最終ルー
トインデックス900を駆動するエラー状態を回避するため、各ルックアップテ
ーブル200a、bはデバイスコード906を記憶する。3ビットのデバイスコ
ードにより、拡張ルックアップテーブルが8つのデバイスを含むことが可能にな
る。
【0078】 ドライバ論理902は、サーチ904の結果がルートインデックス102(図
3)を含むか否かを判定する。含んでいれば、ルックアップテーブル200a中
のドライバ論理902は、バスリクエスト信号(図示せず)上に、最終ルートイ
ンデックス900を駆動する意図を信号で伝える。2つ以上のルックアップテー
ブル200a、200bが同時にルートインデックス信号を駆動する意図を信号
で伝えれば、ルートインデックスは、ルックアップテーブル200a、200b
により、最も低いデバイスコードを与えられる。バスリクエスト信号を用いるこ
とによりバス競合を解決するための方法は技術分野で周知である。
【0079】 図10Cは、サーチキー210に対応する値を記憶するのに利用可能なマッパ
エントリの数を増やすために深度拡張を与える別の実施例を図示する。図10C
に示される実施例では、2つのルックアップテーブル200c−d、すなわちマ
スタルックアップテーブル200cおよびスレーブルックアップテーブル200
dが値を記憶するために設けられる。しかしながら、ルックアップテーブルの数
は示された2つに限定されるものではなく、マッパエントリの数は、より多くの
スレーブルックアップテーブル200dを加えることによって増やすことができ
る。サーチキー[39:0]210に対応するルックアップテーブル200c−
dのうち1つの中のマッパエントリに記憶される値に対するサーチは、ルックア
ップテーブル200c−dで並行して行なわれる。
【0080】 図10Dは、図10Cに示された実施例のスレーブルックアップテーブル20
0dを図示する。各々のルックアップテーブルは、図3と関連してルックアップ
テーブル200について説明されたような、マッパ106a−dを含む。ルック
アップテーブル200c−dの各々の中のマッパ106aのマッパエントリは、
サブツリーエントリ304(図4)を記憶する。各々のルックアップテーブルc
−dは、マッパ106a中のマッパエントリ504(図6B)に記憶されたサブ
ツリーエントリ記述子304(図4)に記憶されたサブツリーインデックス31
2を次のマッパ106b−dに転送する。しかしながら、ルートインデックス1
02(図3)は、マスタルックアップテーブル200c中のマッパ16aにのみ
記憶される。スレーブルックアップテーブル200d中のマッパ106aにノー
エントリを記憶して、キーに対応するルートインデックスを1つよりも多くのル
ックアップテーブル200b、200dに記憶しないようにする。
【0081】 スレーブルックアップ200dの複数レベルのサーチ904の結果は最終イン
デックス論理1004に転送される。最終インデックス論理1004は、複数レ
ベルサーチ904の結果およびマスタルックアップテーブル200cから転送さ
れた入結果(incoming result)1000aを出結果(outgoing result)100
2aとして転送する。ルートインデックス102(図3)が複数レベルサーチ9
04の結果に含まれれば、複数レベルサーチの結果が出結果1002aとして転
送される。ルートインデックス102(図3)が入結果1000aに含まれれば
、入結果1000aが出結果1002aとして転送される。ルートインデックス
102(図3)が入結果1000aまたは複数レベルサーチ904の結果のいず
れにも含まれなければ、複数レベルサーチ904の結果が出結果1002aとし
て転送される。
【0082】 図10Cに示されるように、マスタルックアップテーブル200cおよびスレ
ーブルックアップテーブル200dは、入結果1000aで標識付けられた共通
のバスを介して接続される。ルートインデックス102(図3)は、出結果10
02aの上を、スレーブルックアップテーブル200dから転送されるのみであ
る。1つよりも多くのスレーブルックアップテーブル200dが存在する場合、
最後のスレーブルックアップテーブルにより、拡張ルックアップテーブルに対す
るルートインデックス102(図3)が与えられる。この実施例は、図10Aと
関連して説明されたマルチドライバ最終ルートインデックス900の実現例を回
避するが、入結果1000a用に、より多くのデバイス外部ピンが必要である。
【0083】 図11A−Bは、ルックアップテーブル200a−b(図10A)または20
0c−d(図10C)中の、図2Bに示されたルートの分布のバイナリツリー表
示を図示する。
【0084】 図11Aは、マスタルックアップテーブル200a(図10A)または200
c(図10C)に記憶されたルートのバイナリツリー表示を図示する。図2Bに
示されたルートのバイナリツリー表示に示されるサブツリーBは、マスタルック
アップテーブル200aには含まれない。ノード1301−13022および13
24-32は、図3と関連して説明されたように、ルックアップテーブル200a
中のマッパ106aでコード化される。サブツリーBがインデックス付けされる
ノードは、それがマスタルックアップテーブル200aに記憶されれば、Xでグ
ラフィックに表わされ、プルーニングされたサブツリーを示す。マスタルックア
ップテーブル200a中のノード13023に対応するマッパエントリ504(図
6B)は、もはやサブツリーBへのサブツリーインデックス312(図4)を記
憶しない。代わりに、ノード13023に対応するマッパエントリが別のスレーブ
ルックアップテーブル200b中のサブツリーマッパ418(図5)に記憶され
ることを示すマスタルックアップテーブル200a中の、ノード13023に対応
するマッパエントリ504(図6B)に、ノーエントリ300(図4)が記憶さ
れる。
【0085】 図11Bは、スレーブルックアップテーブル200b(図10A)または20
0d(図10C)中のサブツリーマッパ418(図5)中のマッパエントリ50
4(図6B)に記憶されるルートのバイナリツリー表示を図示する。スレーブル
ックアップテーブル200bに記憶されるルートのバイナリツリー表示は、サブ
ツリーAが含まれないという点で、図2Bに示されたバイナリツリー表示と異な
っている。したがって、図2Bと関連して説明されたように、ノード1301
1303および1305−13032がコード化される。スレーブルックアップテー
ブル200b中のノード1304に対応するマッパエントリ504(図6B)は
、もはやサブツリーAへのサブツリーインデックス312(図4)を記憶しない
。代わりに、スレーブルックアップテーブル200b中のノード1304に対応
するマッパエントリは、ノード1304に対応するマッパエントリが別のルック
アップテーブルに記憶されることを示すノーエントリ300(図4)を記憶する
。サブツリーAへのサブツリーインデックスおよびしたがってホスト138(図
11A)へのルートインデックスはマスタルックアップテーブル200aに記憶
され、サブツリーBへのサブツリーインデックスおよびしたがってホスト140
へのルートインデックスはスレーブルックアップテーブル200bに記憶される
。スレーブルックアップテーブル200b、200dはサブツリーに対する結果
のみを記憶する。すなわち、スレーブルックアップテーブル200b、200d
は第1のレベルのマッパ106aの結果を記憶しない。
【0086】 図11Aおよび図11Bを参照して、キー210aの最初の部分による、スレ
ーブマッパレベル_1 1104aまたはマスタマッパレベル_1 1102(
図3)中のノード1309−13012のいずれに対するサーチの結果も、マスタ
ルックアップテーブル200a、200c中のマッパ106aのマッパエントリ
504(図6B)中のルートエントリ302(図4)と、スレーブルックアップ
テーブル200b、200d中のマッパ106aのマッパエントリ504(図6
B)に記憶されるノーエントリ300(図4)とに記憶されるr1 116とな
る。マスタルックアップテーブル200a、200cに記憶されるルートエント
リ302(図4)は、入結果1000a上をスレーブルックアップテーブル20
0b、200dに転送され、スレーブルックアップテーブル200b、200d
により出結果1002a上を転送される。
【0087】 キー210aの最初の部分による、ノード1304に対するサーチの結果は、
マスタルックアップテーブル200a中のマッパ106aのマッパエントリ50
4(図6B)中にサブツリーエントリ記述子304(図4)に記憶されたサブツ
リーAに対するサブツリーインデックス312(図4)となる。サブツリーイン
デックス312はマスタルックアップテーブル200a中のマッパ106bに転
送され、マスタルックアップテーブル200aに記憶されるルートエントリ30
2(図4)に対するサーチを継続する。
【0088】 キー210の最初の部分による、ノード13023に対するサーチの結果は、マ
スタルックアップテーブル200a中のマッパ106aのマッパエントリ504
(図6B)に記憶されるサブツリーエントリ記述子304(図4)と、スレーブ
ルックアップテーブル200b中のマッパ106aのマッパエントリ504(図
6B)に記憶されるノーエントリ300(図4)とである。したがって、ルート
エントリ302(図4)に対するサーチは、スレーブルックアップテーブル20
0b中のマッパ106bで、キー210bの次の部分を用いて継続する。
【0089】 図12は、図10Aに示されたルックアップテーブル200a−b中のマッパ
エントリ504(図6B)に記憶されるべきルートエントリ302(図4)を分
散するための方法を図示するフローチャートである。同じ方法は、図10Cに示
されたルックアップテーブル200c−dに当てはまる。マッパエントリに記憶
されるべきルートエントリ302(図4)はまず、ルックアップテーブル200
a−bに記憶される前に、プロセッサ(図示せず)によってメモリに記憶される
【0090】 ルートエントリ302(図4)がメモリに記憶される間、ルックアップテーブ
ル200a−b(図10A)の各々に記憶されるべきルートエントリ302(図
4)の数がカウントされる。マッパレベル_1 1104a(図11B)に対す
るルートエントリ302(図4)は、ルックアップテーブル200a中のマッパ
106aに記憶される。マッパレベル_1 1104a(図11B)に対するサ
ブツリーエントリ(図4)は、ルックアップテーブル200a−200bの各々
の中のマッパ106aに記憶される。
【0091】 ステップ1200で、ルックアップテーブル200a−200b(図10A)
の各々の中のマッパ106aのサブツリーエントリ304(図4)の各々ごとの
、記憶されるべきルートエントリ302(図4)の数を計算して、どのようにル
ートエントリ302(図4)をルックアップテーブル200a−b(図10A)
の中に分散すべきかを判定する。ルートエントリ302(図4)を記憶するのに
必要なマッパエントリ504(図6B)の総数を判定した後、処理はステップ1
202に継続する。
【0092】 ステップ1202で、サブツリーに対して記憶されるべきマッパエントリ50
4(図6B)の総数を、ルックアップテーブル200a−b(図10A)の数で
除算して、各ルックアップテーブル200a−b(図10A)に記憶すべきルー
トエントリ302(図4)の数を定める。処理はステップ1204に継続する。
【0093】 ステップ1204で、ルートエントリ302(図4)は、選択されたルックア
ップテーブル200a−b中のサブツリーマッパ418(図5)中のマッパエン
トリ504(図6B)に記憶される。処理はステップ1206に継続する。
【0094】 ステップ1206で、選択されたルックアップテーブル200a−b(図10
A)中のサブツリーマッパ418(図5)のマッパエントリ504(図6B)に
記憶されたルートエントリの数が1/n未満ならば、なおここでnは利用可能な
ルックアップテーブル200a−b(図10A)の数であるが、プロセスはステ
ップ1204に続く。それ以上ならば、選択されたルックアップテーブル200
a−bはマッパエントリの総数の1/nを記憶しており、処理はステップ120
8に継続する。
【0095】 ステップ1208で、選択されたルックアップテーブル200a−bはマッパ
エントリの総数の1/nを記憶し、選択されたルックアップテーブル200a−
bのいずれの残余のサブツリーノードに対しても、ノーエントリ300(図4)
を記憶する。それぞれのサブツリーに対するルートインデックスは、現在選択さ
れたルックアップテーブルに記憶されないからである。処理はステップ1210
に続く。
【0096】 ステップ1210で、すべてのルートエントリが記憶されれば、処理は完了す
る。記憶されていなければ、処理はステップ1212に継続する。
【0097】 ステップ1212で、次のルックアップテーブル200a−b(図10A)が
選択される。処理はステップ1204に続く。
【0098】 ルートエントリは、IPアドレスに対応するルートインデックスに対するサー
チの前に、ルックアップテーブル200a−b(図10A)の中に分散される。
サーチは、ルックアップテーブル200a−b(図10A)の各々の中で並行し
て行なわれる。ルックアップテーブルの各々の中で並行して実現されるサーチの
ための方法が、ルックアップテーブル200a−b(図10A)の1つのために
説明される。
【0099】 図13は、図10Cに示されたルックアップテーブル200c−dのいずれの
1つにも記憶されるサーチキーに対応する値に対する、サーチキーによるサーチ
のための方法を図示するフローチャートである。
【0100】 ステップ1300で、ルックアップテーブル200c−d(図10C)の各々
はサーチキー210を受ける。ルックアップテーブル200c−dの各々の中の
マッパ106aは、キー210aの最初の部分に対応する値を求めてサーチされ
る。処理はステップ1302に継続する。
【0101】 ステップ1302において、マッパ106a内のマッパエントリ504(図6
B)に記憶されたエントリが読出される。マスタルックアップテーブル200c
中のマッパエントリ504(図6B)は、ノーエントリ300(図4)、ルート
エントリ302(図4)またはサブツリーエントリ記述子304(図4)を記憶
し得る。スレーブルックアップテーブル200d内のマッパエントリ504(図
6B)は、ノーエントリ300(図4)およびサブツリーエントリ記述子304
(図4)を記憶し得る。それぞれのルックアップテーブル200内のマッパエン
トリがルートエントリ302(図4)を記憶していれば、そのエントリは有効な
値であり、ルックアップテーブル200c−200d内の後続のマッパ106b
−dのさらなるサーチは必要はなく、処理はステップ1310へ進む。そうでな
ければ、処理はステップ1304へ進む。
【0102】 ステップ1304において、このエントリがサブツリーエントリ記述子304
(図4)を記憶していれば、ルックアップテーブル200c−d内のさらなるサ
ーチが必要となり、処理はステップ1306へ進む。そうでなければ、このエン
トリはノーエントリを記憶しており、これがさらなるサーチが必要でないことを
示しているので、処理はステップ1310へ進む。
【0103】 ステップ1306において、選択されたサブツリーにおいてサーチが継続され
る。キー210b−dの次の部分および前のレベルのサーチの結果得られたサブ
ツリーインデックス312(図4)に依存して、次のレベルのマッパ106b−
d(図3)がサーチされる。処理はステップ1308へ進む。
【0104】 ステップ1308において、現在のレベルのマッパ106b−dのサーチの結
果得られるマッパエントリに依存して、サーチを継続するか否かが判定される。
マッパエントリ504(図6B)がサブツリーエントリ記述子304(図4)を
記憶していれば、次のレベルのマッパ106b−dでサーチが継続され、処理は
ステップ1306へ進む。マッパエントリ504(図6B)がサブツリーエント
リ記述子304(図4)を記憶していなければ、さらなるサーチは必要なく、処
理はステップ1310へ進む。
【0105】 ステップ1310において、サーチの結果が別のルックアップテーブルから受
けた入結果1000aと比較される。たとえば、ルックアップテーブルがスレー
ブルックアップテーブル200dの場合、マスタルックアップテーブル200c
でのサーチからの入結果は、入結果1000a上でルックアップテーブル200
dへ転送され、スレーブルックアップテーブル200dにおけるサーチの結果と
比較される。処理はステップ1312へ進む。
【0106】 ステップ1312において、入結果1000aと現在のルックアップテーブル
200dのサーチ結果が異なる場合、処理はステップ1314へ進む。入結果1
000aと現在のルックアップテーブル200dのサーチ結果との両者が同じで
あれば、別々のルックアップテーブル200c−d中のマッパエントリ504(
図6B)に2つの有効な結果が記憶されている。同じキー210に対して2つの
有効な結果を記憶すべきでなく、処理はステップ1316へ進む。
【0107】 ステップ1314において、入結果1000aがチェックされ、それが有効で
あるか否かが判定される。入結果1000aは、それがルートエントリ302(
図4)であれば有効である。入結果1000aは、それがノーエントリ300(
図4)またはサブツリーエントリ記述子304(図4)であれば無効である。サ
ブツリーエントリ記述子304(図4)、ルートエントリ302(図4)および
ノーエントリ300(図4)については図4に関連して既に説明した。入結果1
000aが無効であれば、処理はステップ1318へ進む。そうでなければ、処
理はステップ1320へ進む。
【0108】 ステップ1318において、入結果1000aは有効であり、現在のルックア
ップテーブル200dのサーチ結果は無効である。入結果1000aは現在のル
ックアップテーブル200dから出結果(出て行く結果)1002a上で転送さ
れる。入結果1000aは、現在のルックアップテーブル200dが最後のルッ
クアップテーブルであればルートインデックス102(図3)として転送され、
または、入結果1000aとして次のルックアップテーブルへ転送される。処理
が完了する。
【0109】 ステップ1316において、2つの有効な結果の値がキーに対して別々のルッ
クアップテーブルに記憶される。ルックアップテーブル200c−d中のルート
エントリの記憶中にエラーが起こる。エラーコードが生成されるのでこのエラー
は修正され得る。処理が完了する。
【0110】 ステップ1320において、現在のルックアップテーブル200dのサーチ結
果も入結果1000aも有効でない。現在のルックアップテーブル200dのサ
ーチ結果は、たとえ無効であっても、入結果1000aとして次のルックアップ
テーブルへ転送される。処理が完了する。
【0111】 図14は、図10Aに示すルックアップテーブル200a−dのうちの1つに
記憶されたサーチキーに対応する値をサーチするための方法を表わすフローチャ
ートである。
【0112】 ステップ1340において、ルックアップテーブル200aおよび200bの
両者における第1のレベルのマッパ106aが、キー210aの第1の部分に対
応する値についてサーチされる。処理はステップ1342へ進む。
【0113】 ステップ1342において、キー210aの第1の部分で第1のレベルのマッ
パ106aをサーチした後に有効な結果の値が見つかれば、処理はステップ13
52へ進む。そうでなければ、処理はステップ1344へ進む。
【0114】 ステップ1344において、キー210aの第1の部分で第1のレベルのマッ
パ106aをサーチした結果の値がサブツリーエントリ記述子304(図4)で
あれば、処理はステップ1346へ進む。そうでなければ、そのキーに対する有
効な値は現在のルックアップテーブルには記憶されておらず、処理は完了する。
【0115】 ステップ1346において、有効な値のサーチは、前のレベルのマッパのサー
チ中に見つかったサブツリーエントリ記述子304(図4)において識別された
サブツリーで継続される。次のレベルのマッパが、キー210b−cの次の部分
および次のレベルのサーチの結果得られるサブツリーセレクトに依存する値に対
してサーチされる。処理はステップ1348へ進む。
【0116】 ステップ1348において、このサーチ結果により、次のレベルのマッパのサ
ーチが要求されるか否かが判定される。現在のサーチの結果得られるエントリは
、ルートエントリ302、ノーエントリ300(図4)またはサブツリーエント
リ記述子304(図4)を記憶し得る。このエントリがサブツリーエントリ記述
子304(図4)を記憶していれば、さらなるサーチが必要であり、処理はステ
ップ1346へ進む。このエントリがサブツリーエントリ記述子304(図4)
を記憶していなければ、処理はステップ1350へ進む。
【0117】 ステップ1350において、このエントリがルートインデックス102(図3
)を記憶していれば、処理はステップ1352へ進む。そうでなければ、このエ
ントリは別のルックアップテーブルに記憶されている。処理が完了する。
【0118】 ステップ1352において、キーに対応する有効な値が現在のルックアップテ
ーブルに記憶されている。この有効な値は、キーに対応するルートインデックス
102(図3)として転送される。処理が完了する。
【0119】 スパースモード 図5を参照して、サブツリーエントリ404は256までの可能なルートイン
デックスのアクセスを、256のノードサブツリーにおいて各ノードに1つずつ
提供する。これらのルートインデックスはサブツリーマッパ418(図5)にお
けるマッパエントリ5041−504nに記憶される。サブツリーマッパ418(
図5)内のマッパエントリ504(図6B)に対するマッパアドレス416は、
データフィールド406に記憶された稠密サブツリー記述子と、サブツリーエン
トリ404内のポインタフィールド408に記憶されたサブツリーポインタとに
依存して決定される。稠密サブツリー記述子の形式については図6A−6Bに関
連して既に説明した。稠密サブツリー記述子は、256のノードサブツリーにお
ける各ノードに対してノードビット502(図6B)を記憶する。しかしながら
、すべてのサブツリーが、256個のノードの各々に対してある別個のルートイ
ンデックスを有する。たとえば、1つのサブツリーは1つのルートインデックス
のみを有し得る。
【0120】 図15は、第1のマッパレベル112aにおけるサブツリーエントリ304(
図4)によってインデックス付けされた第2のマッパレベル112bにおける疎
サブツリーAおよび稠密サブツリーBのバイナリツリーを表わした図である。マ
ッパ106a内のs1に対するサブツリーエントリ記述子304(図4)はサブ
ツリーAのサブツリーエントリ404に対するサブツリーインデックス312を
記憶する。マッパ106a内のs0に対するサブツリーエントリ記述子304(
図4)は、サブツリーBのサブツリーエントリ404に対するサブツリーインデ
ックス312を記憶する。
【0121】 密に配置されたサブツリーBは11個のルートインデックス、すなわちr6か
らr16と、6個のサブツリーエントリ、すなわちs2からs7を有する。サブ
ツリーBに対してルートエントリ302(図4)とサブツリーエントリ304(
図4)とを記憶するマッパエントリ504(図6B)に対応するマッパアドレス
416は、図6Bに関連して既に述べたように、稠密サブツリー記述子において
コード化される。
【0122】 疎に配置されたサブツリーAは2個のルートインデックス、すなわちr1およ
びr2を記憶する。これらが稠密サブツリー記述子に記憶されていれば、サブツ
リーエントリ404全体を用いてマッパエントリ504(図6B)に対する3つ
のマッパアドレス416、すなわちr0、r1およびr2が提供される。
【0123】 ルックアップテーブル200に記憶されたルートの数は、複数の疎サブツリー
記述子のうちの1つにある疎サブツリーをコード化し、サブツリーエントリ40
4内の稠密サブツリー記述子にある密に配置されたサブツリーをコード化するこ
とによって、増加し得る。
【0124】 密に配置されたサブツリーは16以上のマッパエントリ504(図6B)を有
し、サブツリーエントリ404内のデータフィールド406は、図6A−6Bに
関して述べたように、稠密サブツリー記述子を記憶する。疎に配置されたサブツ
リーは15以下のマッパエントリ504(図6B)を有し、サブツリーエントリ
404内のデータフィールドは複数の疎サブツリー記述子を記憶する。疎に配置
されたサブツリーを疎サブツリー記述子に記憶する能力を与えることにより、サ
ブツリーメモリ400により多くのサブツリーを記憶することができ、よって、
ルックアップテーブル200中により多くのルートエントリを記憶することがで
きる。
【0125】 図16A−Cは、図5に示すサブツリーエントリ404内のデータフィールド
406およびポインタフィールド408と、図4に示すサブツリーエントリ記述
子304(図4)とを、サブツリーエントリ404内に複数の疎サブツリー記述
子を記憶できるよう変形した例を表わす。
【0126】 図16Aを参照して、スパースモードで構成されたサブツリーエントリ404
内のデータフィールド406は、図6Bに関連して述べたサブツリーの各ノード
ごとに1ビットを有する稠密サブツリー記述子の代わりに、複数の疎サブツリー
記述子14001−1400nを含む。疎サブツリー記述子14001−1400n の各々は、ノード記述子14021−1402nを含む。ノード記述子14021
−1402nは、サブツリーにおいて完全に符号化されたルートを表わす9ビッ
トの値である。ノード記述子14021−1402nは、サブツリー内の単一のノ
ードまたは複数のノードを表わす。
【0127】 図16Bを参照して、疎サブツリー記述子の記憶をサポートするために、モー
ドフィールド1404がサブツリーエントリ404内のポインタフィールド40
8に加えられる。ポインタフィールド408は、ブロックベースアドレス600 1 およびブロックベースアドレス6002も記憶しており、各ブロックが16個の
割当てられたマッパアドレス416を含み、これらのアドレスは各サブツリーエ
ントリ404ごとに合計32のマッパアドレス416を提供する。モードフィー
ルド1404はモード値を記憶する。モードフィールド1404に記憶されたモ
ード値は、サブツリーエントリ404に記憶された疎サブツリー記述子1400 1 −1400nの数と、疎サブツリー記述子14001−1400nの各々に記憶さ
れたノード記述子14021−1402nの数とを示す。表2は、各モードについ
てのサブツリーエントリ404の構成を表わす。
【0128】
【表2】
【0129】 表2を参照して、たとえば、サブツリーエントリ404内のポインタフィール
ド408におけるモードフィールド1404に記憶されたモード値が「4」にセ
ットされる場合、サブツリーエントリ404の疎サブツリー記述子1400の各
々は5から7のノード記述子14021−1402nを記憶する。各ノード記述子
14021−1402nは9ビットを記憶する。疎サブツリー記述子1400に記
憶されたビットの総数は、疎サブツリー記述子14001−1400nごとのノー
ド記述子14021−1402nの数を9(ノード記述子14021−1402n
とのビット数)で乗じることにより計算される。モード4に対して疎サブツリー
記述子1400ごとのビット数を計算すると、7個のノード記述子1402を有
する疎サブツリー記述子1400は63ビットを記憶している(7ノード記述子
*9ビット=63)。
【0130】 サブツリーエントリ404ごとの疎サブツリー記述子1400の数は、データ
フィールド406内のビット数を疎サブツリー記述子14001−1400n内の
ビット数で除することにより、算出される。モード4について、データフィール
ド406内のビット数は256であり、疎サブツリー記述子内のビット数は63
である。したがって、疎サブツリー記述子14001−1400nの数は4である
(int(256/63)=4)。
【0131】 サブツリーエントリ404ごとのノード記述子14021−1402nの総数は
、各サブツリーごとのノードの数に各サブツリーエントリ404ごとのサブツリ
ーの数を乗じたものである。モード4について計算すると、サブツリーエントリ
404ごとのノード記述子1402の総数は、疎サブツリー記述子14001
1400nに記憶されたノード記述子14021−1402nが7個ある場合は2
8であり(7*4=28)、疎サブツリー記述子14001−1400nごとのノ
ード記述子1402が5個ある場合は20である(5*4=20)。
【0132】 表2のマッパエントリの列には、サブツリーマッパ418(図5)内のマッパ
エントリ504(図6B)がいくつサブツリーエントリ404によって使用され
ているかが示される。マッパの値は、サブツリーごとのノードを1ずつ増分し、
かつ疎サブツリー記述子のサブツリーの数で乗じることにより、算出される。サ
ブツリーのデフォルトエントリを記憶するためには各サブツリーごとのノードの
数より1以上多いマッパエントリが要求されるので、サブツリーごとのノードは
1ずつ増分される。
【0133】 表2のモード4の行を参照して、疎サブツリー記述子1400ごとに7個のノ
ード記述子1402があれば、各サブツリーエントリ404ごとに32((7+
1)*4=32)のマッパエントリが要求され、疎サブツリー記述子1400ご
とに5個のノード記述子1402があれば、疎サブツリー記述子1400ごとに
24((5+1)*4=24)のノード記述子1402が要求される。サブツリ
ーごとのノードの数およびサブツリーエントリ404ごとのサブツリーの数は、
サブツリーエントリ404ごとのノード記述子の最大数が30を超えないように
選択される。これは、サブツリーマッパ418(図5)内のマッパアドレス41
6が16ブロック刻みで割当てられるからである。ポインタフィールド408に
記憶された2つのブロックベースアドレス6001および6002を記憶すること
により、32のマッパアドレス416が提供される。
【0134】 図16Cを参照して、サブツリーメモリ400における各サブツリーエントリ
404は、図6Bに関連して述べたようなデンス(稠密)モードで、またはスパ
ース(疎)モードで構成され得る。デンスモードについて図4に関して述べたサ
ブツリーマッパ418(図5)に記憶されるサブツリーエントリ記述子304(
図4)は、サブツリーエントリ404がデンスモードでコード化されるかまたは
スパースモードでコード化されるかの指示を提供することによりスパースモード
を可能にするよう変更される。この指示(indicator)は、タイプフィールド1
406により提供される。
【0135】 タイプフィールド1406の状態により、サブツリーエントリ404がデンス
モードまたはスパースモードかのいずれで構成されているかが示される。サブツ
リーエントリ404がスパースモードで構成されている場合、スパースサブツリ
ー記述子セレクトフィールド1408に記憶された値とサブツリーインデックス
314とが用いられて、スパースサブツリー記述子1400が選択される。スパ
ースサブツリー記述子セレクト1408については、図16を参照して後により
詳細に説明する。
【0136】 図17は、疎に配置されたサブツリーにおけるノードに対してマッパエントリ
504(図6B)を選択するようにブロックオフセット714を与えるための、
図8に示すオフセット論理700のスパースモード論理1502を表わす。スパ
ースモード論理1502は、サブツリーエントリ404中の疎サブツリー記述子
1400に記憶されたノード記述子1402に依存して、ブロックオフセット7
14を与える。オフセット論理700はまた、デンスモード論理1500も含む
。デンスモード論理1500は、密に配置されたサブツリーにおけるルートに対
してブロックオフセット714を与えるためのノードセレクト706および1カ
ウント論理708を含む。デンスモード論理1500については、図8に関連し
て既に説明した。
【0137】 タイプフィールド1406の状態がサブツリーエントリ404がスパースモー
ドで構成されていると示す場合、サブツリーエントリ404からのサブツリーデ
ータ412はスパースモード論理1502へ転送される。スパースモードサブツ
リー論理1502については図18に関連して説明する。
【0138】 図18は、図17のオフセット論理700に示されるスパースモード論理15
02を表わす。スパースモード論理1502は、サブツリーセレクト論理160
0、マルチプレクサ1602、連想メモリ(「CAM」)1606および変換論
理1604を含む。選択されたサブツリーエントリ404内のデータフィールド
406に記憶された疎サブツリー記述子14001−1400nは、サブツリーデ
ータ412上でオフセット論理700へ転送される。オフセット論理700は疎
サブツリー記述子14001−1400nをスパースモード論理1502における
マルチプレクサ1602へ転送する。サブツリーデータ412中の疎サブツリー
記述子14001のうちの1つが、サブツリーセレクト論理1600により生成
されたセレクト1614によって選択される。
【0139】 サブツリーセレクト論理1600はセレクト1614を生成し、前のマッパレ
ベルにおいて選択されたマッパエントリから転送された疎サブツリー記述子セレ
クト1408の状態と、選択されたサブツリーエントリ404内のポインタフィ
ールド408に記憶されたモード1404とに依存して、疎サブツリー記述子1
4001を選択する。表3は、モード4サブツリーエントリ404について、マ
ルチプレクサ1602から、選択された疎サブツリー記述子1610上で転送さ
れた、選択された疎サブツリー記述子14001およびそれぞれのサブツリーデ
ータビット412を表わす。表2のモード4の行を参照して、モード4サブツリ
ーエントリ404には4つの疎サブツリー記述子が記憶され得る。4つの疎サブ
ツリー記述子1400の各々は63ビットであり、7から5個のノード記述子1
402を記憶し得る。よって、これら4つの疎サブツリー記述子1400の各々
は63ビット境界から始まる。第1の疎サブツリー記述子14001はデータフ
ィールド406のビット62:0に記憶される。第2の疎サブツリー記述子14
002はデータフィールド406のビット125:63に記憶される。第3の疎
サブツリー記述子14003はデータフィールド406のビット188:126
に記憶され、第4の疎サブツリー記述子14004はデータフィールド中のビッ
ト251:189に記憶される。データフィールド406におけるそれぞれのビ
ットは、疎サブツリー記述子セレクト1408により選択される。たとえば、表
3を見ると、疎サブツリー記述子セレクト1408が「0001」であれば、第
2の疎サブツリー記述子14002が選択され、256ビットのサブツリーデー
タ412のビット125:63が、マルチプレクサ1602を介して、選択され
た疎サブツリー記述子1610上で変換論理1604へ転送される。
【0140】
【表3】
【0141】 サブツリーメモリ400内の各サブツリーエントリ404はスパースモードま
たはデンスモードで構成され得る。スパースモードで構成された各サブツリーエ
ントリ404は、モード1404を介して疎サブツリー記述子1400ごとに異
なる数のノード記述子1402を記憶するよう構成され得る。スパースモードで
構成されたサブツリーエントリ404内の疎サブツリー記述子1400はすべて
、疎サブツリー記述子1400ごとに同数のノード記述子1402を記憶する。
【0142】 ノード記述子1402はサブツリーにおける複数のノードを表わすようにコー
ド化され得る。ノード記述子1402によって表わされる複数の8ビットノード
は、8ビットのうちのいくつかをマスキングすることにより識別される。マスク
ビットを各ノード記述子1402で記憶する代わりに、9個のビットノード記述
子1402を用いてノード記述子1402が表わす8ビット幅のノードを完全に
符号化する。この8ビット幅のノードは、ランビットレングス符号化を用いて9
ビット幅のノード記述子1402において符号化される。ランビットレングス符
号化により、そのノードの8ビットのうちのいずれがマスキングされるかが識別
できるようになる。
【0143】 変換論理1604は、選択された疎サブツリー記述子1400に記憶された9
ビット幅のノード記述子14021−1402nを、「X」(ドントケア)にセッ
トされたビットを含む8ビットのCAM値1612へ変換し、この8ビットのC
AM値1612をCAM1606へロードする。9ビットのノード記述子140
2を変換論理1604により8ビットのCAM値1612へ変換する例を以下の
表4に示す。
【0144】
【表4】
【0145】 9ビットコードの列は、ノード記述子1402に記憶された値を表わす。表4
の第1行目を見ると、ノード記述子1402に記憶された9ビットコードは「1
01100100」であり、対応する8ビット値「101100XX」がCAM
1606に記憶される。変換論理1604は、9ビットのコードを「1」にセッ
トされた第1のビットに対して右から左へサーチすることにより、この9ビット
コードを変換する。9ビットコード中のビットを右から左へ見ると、最初の2つ
のビットが「0」にセットされ、3番目のビットが「1」にセットされている。
変換論理1604は、最初の「1」の右側に「0」が2つあるので、「100」
を2つのドントケア(「XX」)に変換する。1つ目の「1」は無視され、残り
のビットが8ビット値の次の各ビットへと直接コピーされる。
【0146】 表4の第2行目を見ると、ノード記述子1402に記憶された9ビットコード
は「100100000」である。変換論理1604は、最初の「1」について
この9ビットコードを右から左へサーチすることにより、この9ビットコードを
変換する。5番目の数字が「1」を記憶している。この9ビットコードは、5つ
の最下位ビット(「LSB」)が「ドントケア」(「X」)にセットされた8ビ
ット値に変換される。9ビットのランビットレングス符号化を用いてノード記述
子1402を記憶することにより、各ノード記述子1402ごとに要求されるビ
ット数は最小になり、よって、ルックアップテーブル200中に記憶され得るノ
ード記述子1402の数が増加する。
【0147】 9ビットのノード記述子1402を8ビット値に変換した後、変換論理160
4はこの8ビット値をCAM1606内へロードする。この8ビット値は、ノー
ド記述子1402が選択された疎サブツリー記述子1400に記憶されたのと同
じ順序で、すなわち最短一致から最長一致の順序で、CAM1606内にロード
される。CAM1606は、疎サブツリー記述子1400ごとのノード記述子1
402の最大数を記憶するための記憶部を提供する。したがって、CAM160
6は8ビット幅×16エントリの深さであり、デフォルトマッパアドレスおよび
モード5疎サブツリー記述子1400に対する最大数のノード記述子1402を
記憶するために15のエントリを提供する。CAM1606にはターナリの能力
(ternary capability)と複数一致リゾルバ(multi-match resolver)とが内蔵
されている。真の連想メモリを提供するのとは対照的に、小さなサイズのCAM
1606が、ゲートの形態で実現され得る。すなわち、CAM1606は、CA
Mをエミュレートするハードウェア回路で実現され得る。
【0148】 疎サブツリー記述子1400に記憶されたノード記述子1402の数は、疎サ
ブツリー記述子1400が記憶されるサブツリーエントリ404を決定する。特
定のモードの範囲内のノード記述子1402を記憶する疎サブツリー記述子14
00は、同じサブツリーエントリ404に記憶される。各サブツリーのデフォル
トルートに対して、デフォルトマッパアドレスが算出される。デフォルトの8ビ
ット値は、CAM1606内の第1の場所に永久に記憶され、デフォルトマッパ
アドレスを算出する。
【0149】 選択された疎サブツリー1400に対する8ビット値がCAM1606内へロ
ードされた後、CAM1606はキー210bの次の部分でサーチされる。キー
210bの次の部分において最大数のビットに一致するCAM1606内のエン
トリが選択される。CAMのサーチの結果得られた一致アドレスは、ブロックオ
フセット714として転送される。ブロックオフセット714を用いて、サブツ
リーマッパ418(図5)に記憶されたルートに対応するマッパエントリのマッ
パアドレス416が決定される。
【0150】 図19A−Dは、疎に配置されたサブツリー1700内のあるノードに対する
ブロックオフセット714の選択を図示する。図17Aは疎に配置されたサブツ
リー1700におけるルートを図示したものである。サブツリー1700内のノ
ードは3つのルートr0、r1およびr2のうちの1つに対応しており、r0は
サブツリー1700のデフォルトルートである。2つのルートr1およびr2は
、疎サブツリー記述子1400のノード記述子14021および14022で符号
化される。デフォルトルートr0の値は、CAM1606内の第1のエントリ1
702に永久に記憶される。表2を参照して、2つのノード記述子1402を備
える疎サブツリー記述子1400は、サブツリーエントリ404に記憶され、モ
ードフィールド1404は「1」にセットされる。
【0151】 サブツリー1700を見ると、r2は10XXXXXXに一致するすべてのノ
ードに対応し、r1は010XXXXXに一致するすべてのノードに対応する。
各ノード記述子14021および14022により要求されるビット数を最小にし
て疎サブツリー記述子1400中の各ルートを記述するために、ノード記述子1
4021および14022は、ランビットレングス符号化を用いてコード化される
。コード化の方法は、そのノードを完全に符号化するのに用いられるビット数よ
り1ビット多いものを用いる。最初の「X」(「ドントケア」)の場所に「1」
が挿入され、残りのXは0としてコード化される。すなわち、ルート10XXX
XXXは10100000に翻訳され、010XXXXXは010100000
に翻訳される。
【0152】 図19Bは、疎サブツリー記述子1400中のノード記述子14021および
14022の記憶部を表わす。ノード記述子14021および14022はサブツ
リーエントリ404に記憶され、モードフィールド1404は「1」にセットさ
れる。これは、疎サブツリー記述子1400に記憶された2つのノード記述子1
4021および14022があるからである。サブツリーの最長一致はr1である
。なぜなら、r1は最初の3ビットの一致を要求し、r2は最初の2ビットの一
致を要求するからである。ノード記述子14021および14022は疎サブツリ
ー記述子1400において最短一致から最長一致の順序で記憶され、最初にr2
のノード記述子14021が記憶されて次にr1のノード記述子14022が次に
記憶される。
【0153】 図19Cは、ノード記述子14022の8ビットのマスキングされた値170
6への変換を表わす。ノード記述子ビット17081−17089を左から右へ見
ると、最初の「1」がビット17086に記憶され、これは8ビットのマスキン
グ値1706のマスクビットの終わりを記している。ノード記述子14022
8ビットのマスキングされた値1706に変換するために、以下のビット変換が
行なわれる。ノード記述子のビット17081に記憶された「0」は「X」に変
換され、8ビットのマスキングされた値のビット17101に記憶される。ノー
ド記述子のビット17082に記憶された「0」は「X」に変換され、8ビット
のマスキングされた値のビット17102に記憶される。ノード記述子のビット
17083に記憶された「0」は、「X」に変換され、8ビットのマスキングさ
れた値のビット17103に記憶される。ノード記述子のビット17084に記憶
された「0」は「X」に変換され、8ビットマスキングされた値のビット171
4に記憶される。ノード記述子のビット17085に記憶された「0」は「X」
に変換され、8ビットのマスキングされた値のビット17105に記憶される。
ノード記述子のビット17086に記憶された「1」は無視される。ノード記述
子のビット17087に記憶された「0」は8ビットのマスキングされた値のビ
ット17106に記憶される。ノード記述子のビット17088に記憶された「1
」は8ビットのマスキングされた値のビット17107に記憶される。ノード記
述子のビット17089に記憶された「0」は8ビットのマスキングされた値の
ビット17108に記憶される。
【0154】 図19Dは、CAM1606内のノード記述子14021および14022の記
憶部と、選択された疎サブツリー記述子1400に対してサブツリーマッパ41
8(図5)に記憶された対応のマッパエントリ5041−5043とを表わす。選
択されたサブツリー記述子1400に記憶された9ビットのノード記述子140
1および14022は変換論理1604(図18)に変換され、CAM1606
内へロードされる。CAM1606内の第1のエントリ1702は、図19Aの
サブツリー1700に示すr0に対するデフォルトエントリである。第2のエン
トリ1704は、選択された疎サブツリー記述子1400に記憶された第1のノ
ード記述子14021から変換される。第2のエントリ1704は、r2に対し
て変換される最短の一致である。選択されたサブツリー記述子1400に記憶さ
れた第2のノード記述子14022は、010100000から010XXXX
Xへ変換され、CAM1606内の第3のエントリ1706に記憶される。
【0155】 CAM1606のサーチの結果、ブロックオフセット714(図18)が得ら
れる。このブロックオフセット714は、サブツリーマッパ418(図5)に記
憶されたマッパエントリ5041−5043のマッパアドレス416を決定するの
に用いられる。CAM1606は、最長一致を記憶するエントリ1702、17
04および1706についてキー210bの第2の部分でサーチされる。CAM
1606により提供されたブロックオフセット714は、選択されたサブツリー
エントリ404内のポインタフィールド408に記憶されたブロックベースアド
レス6001、6001のうちの1つに依存するサブツリーベースアドレスと組合
される。
【0156】 図20は、図8に示すポインタ論理702中のスパースモードベースセレクト
論理1800を表わすブロック図である。ポインタロジック702は、サブツリ
ーマッパ418(図5)内のマッパエントリ504(図6B)のマッパアドレス
416を算出するのに用いられるベースアドレス716を選択する。ポインタ論
理702はデンスモードベースセレクト論理710およびスパースモードベース
セレクト論理1800を含み、それらのうちの1つが、前のマッパレベルから転
送された、サブツリーエントリ記述子304(図4)に記憶されたタイプ140
6の状態に依存して、選択される。既に述べたように、タイプ1406の状態は
、サブツリーエントリ404がデンスモードで構成されるか否かを示す。
【0157】 スパースモードベースセレクト論理1800は、サブツリーエントリ404が
複数の疎サブツリー記述子1400を記憶していれば、疎サブツリー記述子14
00のベースアドレス716を算出する。スパースモードベースセレクト論理1
800は、モードフィールド1404に記憶されたモード値1608と、サブツ
リーエントリ404内のブロックベースアドレスフィールド6001および60
2に記憶されたサブツリーポインタ414と、前のマッパレベルから転送され
たサブツリーエントリ記述子304(図4)に記憶された疎サブツリー記述子セ
レクト1408とを用いて、ベースアドレス716を算出する。ベースアドレス
716は以下のように算出される。
【0158】 (疎サブツリー記述子の)ベースアドレス=ブロックベースアドレス+ベース
オフセット ここでベースオフセット=((1+ノード/サブツリー)*疎サブツリー記述
子セレクト) たとえば、スパースモード4で構成されたサブツリーエントリ404における
サブツリー番号2の開始時のベースアドレス716を見つけるためには、最初に
ベースオフセットが計算される。サブツリー番号2に対する疎サブツリー記述子
セレクト1408は「1」であり、ノード/サブツリーの数は7である(表2参
照)。ベースオフセットは8((1+7)*1)である。ブロックベースアドレ
ス6001および6002の各々が、サブツリーエントリ404に対して割当てら
れた16のマッパアドレスのブロックのベースアドレスである。サブツリー番号
2のベースオフセットは8であり、これは16より小さいので、サブツリー2の
ブロックベースアドレスはブロックベースアドレス6001になり、疎サブツリ
ー記述子のベースアドレス716はブロックベースアドレス6001+8になる
。以下の表5に、モード4で構成されたサブツリーエントリ404における4つ
のサブツリーの各々についてのサブツリーベースアドレスを表わす。
【0159】
【表5】
【0160】 図21は、サブツリーメモリ400に記憶された稠密サブツリー記述子および
疎サブツリー記述子を表わす。図21は図15と関連して説明する。サブツリー
B(図21)の稠密サブツリー記述子がサブツリーエントリ4041内のデータ
フィールド4061に記憶される。サブツリーA(図21)の疎サブツリー記述
子14001は、サブツリーエントリ4042内のデータフィールド4062に記
憶される。稠密サブツリー記述子は、図6Bに関連して既に述べたように、サブ
ツリーBの最下レベルにおいて各ノードに対してノードビットを記憶する。スパ
ースモード記述子14001は、図19Bに関連して既に述べたように、ルート
r4およびr5に対応するノード記述子14021および14022を含む。サブ
ツリーインデックス312はサブツリーエントリ4041および4042を選択す
る。
【0161】 s0(図15)に対してマッパ106a内のマッパエントリ504中のサブツ
リーエントリ記述子304(図4)に記憶されたサブツリーインデックス312
がサブツリーエントリ4041を選択する。s1(図15)に対するマッパ10
6a内のマッパエントリ504(図6B)におけるサブツリーエントリ記述子3
04(図4)に記憶されたサブツリーインデックス312は、サブツリーエント
リ4042を選択する。このように、サブツリーメモリ400は、疎サブツリー
および稠密サブツリーに対してサブツリーエントリ4041および4042を記憶
し得る。
【0162】 図22は、疎に配置されたサブツリーおよび密に配置されたサブツリーにおけ
るあるノードに対するルートを記憶するサブツリーマッパ418(図5)内のマ
ッパエントリ504(図6B)についてのマッパアドレス416(図5)を提供
するための方法を図示するフローチャートである。いずれのサブツリーエントリ
404も、複数の疎サブツリー記述子または単一の稠密サブツリー記述子を記憶
し得る。バイナリツリー内でルートがいかに分散されるかに依存して、疎サブツ
リー記述子と密サブツリー記述子とのいかなる組合せも可能である。サブツリー
メモリ400内のサブツリーエントリ404でスパースモードと稠密サブツリー
記述子とを混合させ一致させる柔軟性により、サブツリーメモリ400をより有
用化することが可能になる。
【0163】 ステップ1900において、選択されたサブツリーエントリ404の構成は、
前のマッパレベルで選択されたサブツリーエントリ記述子304(図4)に記憶
されたタイプ1406(図16C)の状態から決定される。サブツリーエントリ
404タイプがスパースモードで構成される場合、処理はステップ1902へ進
む。そうでなければ、処理はステップ1914へ進む。
【0164】 ステップ1902において、サブツリーエントリ404はスパースモードで構
成される。スパースモードで構成されるサブツリーエントリ404は、複数の疎
サブツリー記述子1400を記憶する。サブツリーエントリ404に記憶された
疎サブツリー記述子1400の数は、モードフィールド1404の状態に依存す
る。オフセット論理700におけるスパースモード論理1502により、図14
に関連して前に述べたように前のマッパレベルから転送されたサブツリーエント
リ記述子304(図4)に記憶された疎サブツリー記述子セレクト1408とモ
ードフィールド1404の内容とに依存して、サブツリーエントリ404から疎
サブツリー記述子1400が選択される。処理はステップ1904へ進む。
【0165】 ステップ1904において、選択された疎サブツリー記述子1400内のノー
ド記述子1402に記憶された9ビットコード化された値は8ビット値に変換さ
れ、最短一致から最長一致の順序で、CAM1606に記憶される。処理はステ
ップ1906へ進む。
【0166】 ステップ1906において、CAM1606が、最長の一致を記憶するCAM
エントリについてキー210bの次の部分でサーチされる。処理はステップ19
08へ進む。
【0167】 ステップ1908において、キー210bの次の部分の最長一致を記憶するC
AM1606における場所のアドレスが、ブロックオフセット714として転送
される。ブロックオフセット714を用いて、サブツリーマッパ418(図5)
内のマッパエントリ504(図6B)のマッパアドレス416(図5)が算出さ
れる。処理はステップ1910へ進む。
【0168】 ステップ1910において、選択された疎サブツリー記述子1400のベース
アドレス716(図20)は、前のマッパレベルから転送されたサブツリーエン
トリ記述子304(図4)に記憶された疎サブツリー記述子セレクト1408と
、選択されたサブツリーエントリ404に記憶されたモードフィールド1404
の内容とに依存して、算出される。処理はステップ1912へ進む。
【0169】 ステップ1912において、マッパアドレス416は、アダー論理704(図
8)内でブロックオフセット714とベースアドレス716とを加算することに
より算出される。サブツリーマッパ418(図5)内のマッパアドレス416に
より識別されたマッパエントリ504(図6B)は、ルートエントリ302(図
4)またはサブツリーエントリ記述子304(図4)のいずれかを記憶する。マ
ッパエントリ504(図6B)がルートエントリ302(図4)を記憶する場合
、サーチは完了する。マッパエントリ504(図6B)がサブツリーエントリ記
述子304(図4)を記憶する場合、キー210に対応する値のサーチが次のマ
ッパレベルにおいて継続される。
【0170】 ステップ1914において、サブツリーエントリ404はデンスモードで構成
され、データフィールド406に単一の稠密サブツリー記述子を記憶する。ブロ
ックオフセット714は、図6Bに関連して前述したように、サブツリーエント
リ404内のデータフィールド406に記憶された稠密サブツリー記述子に記憶
された「1」の数をカウントすることにより、算出される。処理はステップ19
16へ進む。
【0171】 ステップ1916において、サブツリーエントリ404は、サブツリーエント
リ404内のポインタフィールド408に16個のブロックベースアドレス60
0を記憶する。ブロックベースポインタ600のうちの1つが、図8と関連して
前述したポインタ論理702におけるデンスモードベースセレクト論理710に
より選択される。処理はステップ1912へ進む。
【0172】 インクリメンタルな更新 図23は、ルックアップテーブル200に追加される新たなルートのバイナリ
ツリーを表わす図である。このバイナリツリーは、マッパレベル_1 2000
、マッパレベル_2 2002およびマッパレベル_3 2004について、ル
ックアップテーブル200に記憶されたルートを表わす。マッパレベル_2 2
002は、サブツリーAおよびBに対するルートを記憶する。マッパレベル_3
2004はサブツリーA1、A2、B1およびB2に対するルートを記憶する。s
5は、サブツリーマッパ418(図5)に記憶されたサブツリーエントリ記述子
304(図4)を表わす。s5に対するサブツリーエントリ記述子304(図4
)はサブツリーB2に対するポインタを記憶し、キー210に対する最長一致の
ルートのサーチをマッパレベル_3 2004で継続できるようにする。
【0173】 サブツリーB2 2006は、2つのルート、r6およびh1のみを有するの
で、疎サブツリーである。したがって、ノードr6およびh1のノード記述子1
402(図16A)は、図14Aに関連して既に述べたように、疎サブツリー記
述子1400に記憶される。サブツリーB2 2006の疎サブツリー記述子1
400はサブツリーエントリ404に記憶され、サブツリーメモリ400におい
てモードフィールド1404は1にセットされる。これは、疎サブツリー記述子
1400に記憶されたノード記述子1402が2つあるためである。
【0174】 サブツリーB2′2008に示す新たなルートh2は、ルックアップテーブル
200に追加されることになる。新たなルートh1をルックアップテーブル内の
サブツリーB2 2006に直接追加することはできない。なぜなら、サブツリ
ーB2 2006に対するルートを追加することにより、疎サブツリー記述子1
400に記憶されたノード記述子1402の数が2から3へ増加するからである
。疎サブツリー記述子1400へノード記述子1402を追加するとモードフィ
ールド1404が「2」にセットされたサブツリーエントリ404において新た
な疎サブツリー記述子1400を割当てる必要が生じる。すなわち、新たなルー
トh1の追加により、サブツリーB22006をサブツリーB2′2008で置き
換える必要が生じる。
【0175】 図24は、プロセッサメモリ2400に記憶された更新ルートを表わす。ルッ
クアップテーブル200に記憶されたバイナリツリーのコピーもまた、ルックア
ップテーブル200とは別のプロセッサメモリ2400に記憶される。サブツリ
ーB2 2006について記憶されたルートはプロセッサメモリ2400内のサ
ブツリーB2′2008にコピーされ、新たなルートh2がサブツリーB2′20
08に追加される。
【0176】 ルート更新ルーチン2402は、ルート更新命令2404のシーケンスを生成
してサブツリーB2′2008をルックアップテーブル200に追加し、ルート
更新2404をテーブル更新ルーチン2406へ転送する。テーブル更新ルーチ
ン2406はルート更新2402に対してテーブル更新2410を生成し、更新
サイクル2412を転送し、ルックアップテーブル200をルート更新2404
で更新する。更新サイクル2412は、サブツリーマッパ418(図5)および
サブツリーメモリ400(図5)における適切なメモリ場所にルート更新を書込
む。
【0177】 図23を参照して、更新サイクル2412はサブツリーマッパ418(図5)
の一部分を割当て、新たなサブツリーB2′2008のルートをマッパエントリ
504(図6B)に記憶するための命令を含む。サブツリーB2′2008は、
ルートh1およびr6ならびに新たなルートh2に対してマッパエントリ504
(図6B)に記憶されたルートエントリを含む。サブツリーB2′2008に対
するルートエントリがサブツリーマッパ418(図5)内のマッパエントリ50
4(図6B)に記憶された後、ルートに対するノード記述子1402が作成され
、疎サブツリー記述子1400に記憶される。疎サブツリー記述子1400はサ
ブツリーエントリ404に記憶される。サブツリーエントリ404のモード14
04は、疎サブツリー記述子1400に記憶されたノード記述子1402の数に
関連する。
【0178】 サブツリーB2′2008の疎サブツリー記述子1400がルックアップテー
ブル200中のサブツリーメモリ400のサブツリーエントリ404に記憶され
た後、s5で表わされるサブツリーエントリ記述子304(図4)は、サブツリ
ーB22006の代わりにサブツリーB2′2008を指すように変更される。サ
ブツリーB2′2008がルックアップテーブルに追加される一方、サブツリー
2 2006に記憶されたルートr6およびh1はs5を介してアクセスされ
得る。サブツリーB2′2008がルックアップテーブルに記憶された後、s5
は、サブツリーB2′2008およびルートr6を指すように変更され、新たな
ルートh2がアクセスされ得る。したがって、サブツリーB2 2006の、ル
ートr6およびh1に対応するルートインデックスについてのサーチを継続する
ことができ、一方、新たなルートh2はルックアップテーブル200に追加され
る。
【0179】 図25は、ルックアップテーブル200中のサブツリーマッパ418bにおけ
るマッパエントリ504c4に記憶された、図23に示す新たなルートh2を表
わす。図25は、図24に示すバイナリツリーの図に関連して説明する。
【0180】 マッパレベル_2 2002におけるサブツリーBは3つのルート、すなわち
r3、s4およびs5を有する。サブツリーBは16未満のルートを有するので
、疎サブツリーである。サブツリーBのr3、s4およびs5に対するノード記
述子1402a1−1402a3は、サブツリーメモリ400a内のサブツリーエ
ントリ404aにおける疎サブツリー記述子1400a1に記憶される。マッパ
エントリ504a2−504a4は、サブツリーB内の各ルートに対してサブツリ
ーマッパ418aに記憶される。サブツリーBのデフォルトルートは、サブツリ
ーマッパ418a内のマッパエントリ504a1に記憶される。マッパエントリ
504a2−504a4の各々は、そのノードに対するルートエントリ302(図
4)またはサブツリーエントリ記述子304(図4)を記憶する。サブツリーエ
ントリ記述子304(図4)は、ルートs4については504a3に、s5につ
いては504a4に記憶される。s5についてマッパエントリ504a4に記憶さ
れたサブツリーエントリ記述子304(図4)は、サブツリーメモリ400bに
サブツリーインデックス312bを与え、次のレベルのサーチ、すなわちマッパ
レベル_3 2004に対するサーチを開始する。
【0181】 サブツリーB2は、2つのルートすなわちh1およびr6を有するので、これ
もまた疎サブツリーである。ノード記述子1402b1−1402b2は、サブツ
リーメモリ400b内のサブツリーエントリ404bにおける疎サブツリー記述
子1400b1に記憶される。サブツリーB2内の各ルートは、マッパエントリ5
04b2−504b3に記憶され、サブツリーB2のデフォルトルートがマッパエ
ントリ504b1に記憶される。
【0182】 サブツリーB22006内でルートh1についてサーチするために、ルートs
5についてノード記述子1402を記憶する疎サブツリー記述子1400aを記
憶しているサブツリーエントリ404aのアドレスが、サブツリーインデックス
312a上でサブツリーメモリ400aへ転送される。選択されたサブツリーエ
ントリ404aに記憶されたデータフィールド406およびポインタフィールド
408は、サブツリーデータ412aおよびサブツリーポインタ414a上でマ
ッパアドレス論理402aへ転送される。マッパアドレス論理402aは、s5
についてサブツリーエントリを記憶しているマッパエントリ504a4のマッパ
アドレス416aを生成する。マッパアドレス416aは、サブツリーデータ4
12a、サブツリーポインタ414aおよびキー210bの次の部分に依存する
。s5のサブツリーエントリは、サブツリーインデックス312b上でサブツリ
ーメモリ400bへ転送される。
【0183】 サブツリーメモリ400bは、サブツリーB2 2006についてノード記述
子1402b2および1402b1を記憶する。B2についての疎サブツリー記述
子1400b1がサブツリーエントリ404bに記憶される。サブツリーエント
リ404bに記憶されたデータフィールド406およびポインタフィールド40
8は、サブツリーデータ412bおよびサブツリーポインタ414b上でマッパ
アドレス論理402bへ転送される。マッパアドレス論理402bは、h1につ
いてルートエントリを記憶しているマッパエントリ504b3のマッパアドレス
416bを生成する。マッパアドレス416bは、サブツリーデータ412b、
サブツリーポインタ414bおよびキー210cの次の部分に依存している。
【0184】 ルートh2をサブツリーB2 2006に追加するためには、サブツリーマッ
パ418b内のこれまでに未使用のマッパエントリ602bのブロックが割当て
られ、サブツリーB2′2008についてルートr6、h1およびh2を記憶し
ているマッパエントリ504c2−504c4を記憶する。マッパエントリ504
1は、サブツリーB2′2008のデフォルトエントリ、すなわち、マッパエン
トリ504b1に記憶されたものと同じ値を記憶する。マッパエントリ504c2 はルートr6のルートエントリ、すなわちマッパエントリ504b2に記憶され
たものと同じ値を記憶する。マッパエントリ504c3はルートh1のルートエ
ントリ、すなわちマッパエントリ504b3に記憶されたものと同じ値を記憶す
る。マッパエントリ504c4は、新たなルートh2に対するルートエントリを
記憶する。マッパエントリ504c1-4のブロックが書込まれている間に、マッ
パエントリ504b1−504b3に記憶されたルートエントリは、サブツリーマ
ッパ418a内の504a4にルートs5について記憶されたサブツリーエント
リを介して、アクセスされ得る。
【0185】 サブツリーマッパ418bにはサブツリーB2′2008についてのマッパエ
ントリ504c1-4が記憶されており、疎サブツリー記述子1400c1がサブツ
リーメモリ400bに追加される。ノード記述子1402c1-3の数は16未満
であるので、ノード記述子1402c1-3は疎サブツリー記述子1400c1に記
憶される。サブツリーメモリ400b内のサブツリー記述子14001の場所は
、疎サブツリー記述子1400c1に関連付けられるノード記述子1402c1-3 の数に依存する。サブツリーB2 2006に新たなルートを追加することによ
り、疎サブツリー記述子1400c1に対して記憶されるノード記述子1402
1−1402c3の数は2から3へ増加する。疎サブツリー記述子1400c1
はサブツリーエントリ404cに記憶され、各疎サブツリー記述子ごとに3つの
ノード記述子があり、モードフィールド1404は「2」にセットされる。疎サ
ブツリー記述子1400c1は、利用可能なスペースがあれば現在のモード3サ
ブツリーエントリ404cに記憶されるか、または新たなモード3サブツリーエ
ントリが割当てられる。B2′2008内のルートについてのノード記述子は、
モード3サブツリーエントリ404cの疎サブツリー記述子1400c1におけ
るノード記述子1402c1-3に記憶される。
【0186】 疎サブツリー記述子1400c1およびノード記述子1402c1-3がサブツリ
ーメモリ400bに記憶された後、サブツリーB2′2008がアクセスされ得
る。B2′2008にアクセスを提供するために、サブツリーエントリ504a4 は、サブツリーエントリ404b内の疎サブツリー記述子1400b1の代わり
にサブツリーエントリ404c内の疎サブツリー記述子1400c1をインデッ
クス付けするよう変更される。マッパエントリ504c4に記憶されたルートh
2についてのルートエントリならびにそれぞれのマッパエントリ504c2およ
び504c3に記憶されたルートr6およびh1がアクセスされ得る。
【0187】 マッパエントリ504b1−504b3はもはやアクセス不可能であるので、割
当解除され、将来の割当のためにフリーリスト(図示せず)上に置かれる。また
疎サブツリー記述子1400b1ももはやアクセス不可能である。こうして、疎
サブツリー記述子1400b1は割当解除され、将来の割当のためにフリーリス
ト(図示せず)に置かれる。
【0188】 疎サブツリーにルートを追加することについて説明した。ルートは、新たに割
当てられたサブツリーエントリ404に新たな稠密サブツリー記述子を記憶し、
対応のマッパエントリをサブツリーマッパ418に記憶することにより、また、
マッパエントリ504a4に記憶されたサブツリーエントリを新たに割当てられ
たサブツリーエントリ404のインデックス付けを行なうように変更することに
より、追加することもできる。
【0189】 図26は、図25に示すルックアップテーブル200にあるルートを追加する
ためにインクリメンタルな更新を行なうためのステップを表わすフローチャート
である。
【0190】 ステップ2200において、サブツリーごとのルートの数が算出され、ルート
更新結果が疎サブツリーであるか稠密サブツリーであるかが判定される。ルート
更新後のサブツリーが稠密であれば、処理はステップ2218へ進む。ルート更
新後のサブツリーが疎であれば、処理はステップ2202へ進む。
【0191】 ステップ2202において、サブツリーは疎である。疎サブツリーモードが決
定される。処理は2204へ進む。
【0192】 ステップ2204において、サブツリーマッパ418(図5)に記憶された部
分的にフルにされたサブツリーエントリ404のリストがサーチされ、新たな疎
サブツリー記述子1400c1が前に割当てられたサブツリーエントリ404に
記憶され得るか否かが判定される。たとえば、4つの疎サブツリー記述子140
0c1−1400c4がモード4サブツリーエントリ404に記憶され得る。3つ
のみが記憶される場合、サブツリーエントリ404は部分的にフルにされており
、部分的に満たされたサブツリーエントリ404のリストに記憶される。部分的
にフルなサブツリーエントリ404が利用可能であれば、処理はステップ220
8へ進む。そうでなければ、処理はステップ2206へ進む。
【0193】 ステップ2206において、新たなサブツリーエントリ404cが疎サブツリ
ー記述子1400c1を記憶するために割当てられ、マッパエントリ504c1
504c4が、新たに割当てられたサブツリーエントリ404c内の疎サブツリ
ー記述子1400c1に記憶されたノード記述子1402c1−1402c3のマ
ッパエントリ504(図6B)を記憶するために、サブツリーマッパに割当てら
れる。サブツリーマッパ418(図5)内のマッパエントリ504c1−504
4の割当てられたブロックに対するポインタは、新たなサブツリーエントリ4
04c内のポインタフィールド408に記憶される。処理はステップ2208へ
進む。
【0194】 ステップ2208において、疎サブツリー記述子1400c1に対するサブツ
リーマッパ内の第1のマッパエントリ504c1の場所が、サブツリーエントリ
404c内のポインタフィールド408に記憶されたポインタおよびサブツリー
エントリ404c内のモードフィールド1404に記憶されたモードから判定さ
れる。処理はステップ2210へ進む。
【0195】 ステップ2210において、疎サブツリーのルートエントリが、サブツリーマ
ッパ418b内のマッパエントリ504c1−504c4に記憶される。処理はス
テップ2212へ進む。
【0196】 ステップ2212において、ノード記述子1402c1−1402c3を記憶し
ている疎サブツリー記述子1400c1がサブツリーエントリ404cに記憶さ
れる。処理はステップ2214へ進む。
【0197】 ステップ2214において、マッパエントリ504a4に記憶されたサブツリ
ーエントリ記述子304(図4)は、サブツリーエントリ404cに記憶された
新たな疎サブツリー記述子1400c1のインデックス付けを行なうよう変更さ
れる。マッパエントリ504c4に記憶されたh2のルートエントリがここでア
クセス可能にある。処理はステップ2216へ進む。
【0198】 ステップ2216において、マッパエントリ504b1−504b3および疎サ
ブツリー記述子1400bはもはやアクセス不可能である。マッパエントリ50
4b1−504b3は、サブツリーマッパ418bのマッパエントリ504(図6
B)のフリーリストに置かれ、他のルートを記憶するために割当てられ得る。サ
ブツリーエントリ404b内の第1の利用可能な場所は、部分的にフルなサブツ
リーエントリのリストにおいて更新される。処理が完了する。
【0199】 ステップ2218において、新たなサブツリーエントリ404がプロセッサメ
モリ2400(図24)に記憶されたフリーのサブツリーエントリ404のリス
トから割当てられる。この新たなサブツリーエントリ404は、新たな稠密サブ
ツリー記述子を記憶するために割当てられる。サブツリーマッパ418bにおけ
るマッパエントリ504(図6B)のブロックが、ルートを記憶するために割当
てられる。割当てられたマッパエントリ504(図6B)のブロックに対するポ
インタは、サブツリーエントリ404(図5)内のポインタフィールド408(
図7)に記憶される。処理はステップ2220へ進む。
【0200】 ステップ2220において、新たな稠密サブツリー記述子が、図6Aおよび6
Bに関連して前述したように、新たなサブツリーエントリ404内のデータフィ
ールド406に書込まれる。処理はステップ2222へ進む。
【0201】 ステップ2222において、稠密サブツリーのルートエントリが、サブツリー
エントリ404内のポインタフィールド408に記憶されたポインタにより識別
されたサブツリーマッパ418(図5)内のマッパエントリ504(図6B)に
記憶される。処理はステップ2224へ進む。
【0202】 ステップ2224において、マッパエントリ504a4に記憶されたサブツリ
ーエントリ記述子304(図4)は、新たなサブツリーエントリ404cに記憶
された新たな稠密サブツリー記述子をインデックス付けするよう変更される。マ
ッパエントリ504c4に記憶されたh2に対するルートエントリがここでアク
セス可能になる。処理はステップ2226へ進む。
【0203】 ステップ2226において、古いサブツリーエントリ404内のポインタフィ
ールド408に記憶されたポインタによりインデックス付けされたマッパエント
リ504(図6B)は、プロセッサメモリ2400(図24)に記憶されたマッ
パエントリのフリーリストへ戻される。この古いサブツリーエントリ404bは
、プロセッサメモリ2400(図24)に記憶されたサブツリーエントリのフリ
ーリストに追加される。
【0204】 ルートをルックアップテーブルに追加する処理について述べてきた。ルートを
ルックアップテーブルから削除するためにも同様の処理が行なわれる。たとえば
、h2 504c4をサブツリーB2′から削除するためには、ルートr6および
h1の2つのノード記述子を有する新たな疎サブツリー記述子を記憶し、モード
2サブツリーエントリに疎サブツリー記述子を記憶し、対応のサブツリーマッパ
を更新し、マッパエントリ504a4に記憶されたサブツリーエントリ記述子3
04(図4)を、新たなサブツリーエントリ404に記憶された更新されたサブ
ツリー記述子のインデックス付けを行なうよう変更する必要がある。
【0205】 この発明はその好ましい実施例を参照して具体的に図示し説明してきたが、当
業者には、前掲の請求項に包含される本発明の範囲から離れることなく、形式お
よび内容の点で種々の変更をなすことができることがわかるであろう。
【図面の簡単な説明】
【図1A】 バイナリツリーの第1のレベルを表わす先行技術のビットマッ
プを示す図である。
【図1B】 キャッシュメモリで実現される先行技術のルックアップテーブ
ルを示す図である。
【図2A】 この発明の原則に従う最長一致プレフィックスルックアップテ
ーブルを示す図である。
【図2B】 図2Aに示されるルックアップテーブルに記憶されるルートイ
ンデックスのバイナリツリー表示を示す図である。
【図3】 この発明の原則に従う40ビットキーに対する最長一致プレフィ
ックスルックアップテーブルを示す図である。
【図4】 図2Aに示されるダイレクト・マップト・マッパに記憶可能なマ
ッパエントリのタイプを示す図である。
【図5】 図2Bに示されるマッパレベル_2 112b中のノードに対応
するマッパを示す図である。
【図6A】 サブツリーのバイナリツリー表示の図である。
【図6B】 図6Aに示されたサブツリーのボトムレベルのノードに対応す
る、図5に示されたデータフィールドに記憶される稠密サブツリー記述子を示す
図である。
【図7】 図5に示されたptrフィールドを示す図である。
【図8】 図5に示されたマッパアドレス論理を示す図である。
【図9】 最長一致をサーチするためのステップを図示するフローチャート
の図である。
【図10A】 深度拡張を与えるための実施例を示す図である。
【図10B】 図10Aに示された実施例のルックアップテーブルの1つを
示す図である。
【図10C】 値を記憶するのに利用可能なマップエントリの数を増やすた
めに深度拡張を与えるための別の実施例を示す図である。
【図10D】 図10Cに示された実施例のスレーブルックアップテーブル
を示す図である。
【図11A】 図10Aおよび図10Cに示されたルックアップテーブル中
のマッパエントリの中の、図2Bに示されたルートインデックスのバイナリツリ
ー表示のノードの分布のバイナリツリー表示を示す図である。
【図11B】 図10Aおよび図10Cに示されたルックアップテーブル中
のマッパエントリの中の、図2Bに示されたルートインデックスのバイナリツリ
ー表示のノードの分布のバイナリツリー表示を示す図である。
【図12】 図10Aおよび図10Cに示されたルックアップテーブル中の
マッパエントリの中に値を分散するための方法を図示するフローチャートの図で
ある。
【図13】 図10Cに示されたルックアップテーブル中のマッパエントリ
のうち1つに記憶されるサーチキーに対応する値をサーチするための方法を図示
するフローチャートの図である。
【図14】 図10Aに示されたルックアップテーブル中のマッパエントリ
のうち1つに記憶されるサーチキーに対応する値をサーチするための方法を図示
するフローチャートの図である。
【図15】 第1のマッパレベルによってインデックス付けされる第2のマ
ッパレベル中の疎らなサブツリーおよび稠密なサブツリーのバイナリツリー表示
を示す図である。
【図16A】 図5に示されるサブツリーエントリおよび図4に示されるサ
ブツリーエントリのデータフィールドおよびポインタフィールドに対して変更を
加えて、サブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能
にするのを示す図である。
【図16B】 図5に示されるサブツリーエントリおよび図4に示されるサ
ブツリーエントリのデータフィールドおよびポインタフィールドに対する変更を
加えてサブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能に
するのを示す図である。
【図16C】 図5に示されるサブツリーエントリおよび図4に示されるサ
ブツリーエントリのデータフィールドおよびポインタフィールドに対する変更を
加えてサブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能に
するのを示す図である。
【図17】 疎らに配されたサブツリー中のノードに対してブロックオフセ
ットを選択するための、図8に示されたオフセット論理中のスパースモードサブ
ツリー論理を示す図である。
【図18】 図17のオフセット論理に示されたスパースモード論理を示す
図である。
【図19A】 疎らに配されたサブツリー中のノードに対するブロックオフ
セットの選択を示す図である。
【図19B】 疎らに配されたサブツリー中のノードに対するブロックオフ
セットの選択を示す図である。
【図19C】 疎らに配されたサブツリー中のノードに対するブロックオフ
セットの選択を示す図である。
【図19D】 疎らに配されたサブツリー中のノードに対するブロックオフ
セットの選択を示す図である。
【図20】 図8に示されたポインタ論理中のスパースモードベースセレク
ト論理を示すブロック図である。
【図21】 サブツリーメモリに記憶される、稠密サブツリー記述子および
疎サブツリー記述子を示す図である。
【図22】 疎らに配されたサブツリーおよび密に配されたサブツリー中の
ノードに対してルートを記憶するサブツリーマッパ中のマッパエントリに対して
マッパアドレスを与えるための方法を図示するフローチャートの図である。
【図23】 ルックアップテーブルに加えるべき新たなルートのバイナリツ
リー表示を示す図である。
【図24】 プロセッサメモリに記憶される更新ルートを示す図である。
【図25】 ルックアップテーブルに記憶される、図23に示された新たな
ルートを示す図である。
【図26】 図25に示されたルックアップテーブルに新たなルートを加え
るためのステップを図示するフローチャートの図である。
【手続補正書】
【提出日】平成14年6月25日(2002.6.25)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,US,UZ, VN,YU,ZA,ZW

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 キーを受け、第1のルックアップユニットにおけるマルチレ
    ベルサーチにより第1の結果を与える第1のルックアップユニットと、 キーを受け、第2のルックアップユニットにおけるマルチレベルサーチにより
    第2の結果を与える第2のルックアップユニットとを含み、第1のルックアップ
    ユニットおよび第2のルックアップユニットの両方が、並列にキーを受け、ユニ
    ットの1つのみが、第1の結果および第2の結果に依存してルックアップユニッ
    トの1つのみに記憶されたキーに対する最終結果を与える、ルックアップテーブ
    ル。
  2. 【請求項2】 キーに対する最終結果は、ルックアップテーブルに記憶され
    るべき最終結果の総数に依存してルックアップユニット間で分散される、請求項
    1に記載のルックアップテーブル。
  3. 【請求項3】 キーはIPアドレスであり、最終結果はルートインデックス
    である、請求項1に記載のルックアップテーブル。
  4. 【請求項4】 キーによってインデックス付けされた第1のルックアップユ
    ニット中の第1のメモリ場所は、最終結果を記憶し、キーによってインデックス
    付けされた第2のルックアップユニット中の第2のメモリ場所は、最終結果が第
    1のルックアップユニットに記憶されているという表示を記憶する、請求項1に
    記載のルックアップテーブル。
  5. 【請求項5】 第1のルックアップユニットおよび第2のルックアップユニ
    ットの各々は、複数個のマッパレベルを含み、マッパレベルの各々は、結果を記
    憶するためのメモリ場所を含む、請求項1に記載のルックアップテーブル。
  6. 【請求項6】 第1のルックアップユニット中の複数個のマッパレベルのい
    ずれか1つの場所に記憶されたキーに対応する最終結果は、第2のルックアップ
    ユニットに転送され、第2のルックアップユニットによって与えられる、請求項
    4に記載のルックアップテーブル。
  7. 【請求項7】 キーに対応する最終結果は、最終結果が記憶されるルックア
    ップユニットによって与えられる、請求項1に記載のルックアップテーブル。
  8. 【請求項8】 第1のルックアップユニットおよび第2のルックアップユニ
    ットによって並列にキーを受けるステップと、 第1のルックアップユニットによりマルチレベルサーチを行なって第1の結果
    を得るステップと、 第2のルックアップユニットによりマルチレベルサーチを行なって第2の結果
    を得るステップと、 第1の結果および第2の結果に依存してユニットの1つによってキーに対する
    最終結果を与えるステップとを含む、キーに対する最終結果を与えるための方法
  9. 【請求項9】 ルックアップテーブルに記憶されるべき最終結果の総数に依
    存してユニット間で最終結果を分散するステップをさらに含む、請求項8に記載
    の方法。
  10. 【請求項10】 キーはIPアドレスであり、最終結果はルートインデック
    スである、請求項8に記載の方法。
  11. 【請求項11】 キーによってインデックス付けされた第1のルックアップ
    ユニット中の第1のメモリ場所は、最終結果を記憶し、キーによってインデック
    ス付けされた第2のルックアップユニット中の第2のメモリ場所は、最終結果が
    第1のルックアップユニットに記憶されているという表示を記憶する、請求項7
    に記載の方法。
  12. 【請求項12】 第1のルックアップユニットおよび第2のルックアップユ
    ニットの各々は、複数個のマッパレベルを含み、マッパレベルの各々は、結果を
    記憶するためのメモリ場所を含む、請求項8に記載の方法。
  13. 【請求項13】 第1のルックアップユニット中の複数個のマッパレベルの
    1つの場所に記憶されたキーに対応する結果は、第2のルックアップに転送され
    、第2のルックアップユニットによって与えられる、請求項12に記載の方法。
  14. 【請求項14】 キーに対応する最終結果は、最終結果が記憶されるルック
    アップユニットによって与えられる、請求項8に記載の方法。
  15. 【請求項15】 キーを受け、第1のルックアップユニットにおけるマルチ
    レベルサーチにより第1の結果を与える第1のルックアップユニットと、 キーを受け、第2のルックアップユニットにおけるマルチレベルサーチにより
    第2の結果を与える第2のルックアップユニットと、 第1の結果および第2の結果に依存して第1のルックアップユニットおよび第
    2のルックアップユニットの両方によって並列に受けたキーに対してルックアッ
    プユニットの1つのみに記憶された最終結果を与えるための手段とを含む、ルッ
    クアップテーブル。
  16. 【請求項16】 キーに対する最終結果は、ルックアップテーブルに記憶さ
    れるべき最終結果の総数に依存してルックアップユニット間で分散される、請求
    項15に記載のルックアップテーブル。
  17. 【請求項17】 キーはIPアドレスであり、最終結果はルートインデック
    スである、請求項15に記載のルックアップテーブル。
  18. 【請求項18】 キーによってインデックス付けされた第1のルックアップ
    ユニット中の第1のメモリ場所は結果を記憶し、キーによってインデックス付け
    された第2のルックアップユニット中の第2のメモリ場所は、結果が第1のルッ
    クアップユニットに記憶されているという表示を記憶する、請求項15に記載の
    ルックアップテーブル。
  19. 【請求項19】 第1のルックアップユニットおよび第2のルックアップユ
    ニットの各々は、複数個のマッパレベルを含み、マッパレベルの各々は、記憶す
    るためのメモリ場所を含む、請求項15に記載のルックアップテーブル。
  20. 【請求項20】 第1のルックアップユニット中の複数個のマッパレベルの
    1つの場所に記憶されたキーに対応する最終結果は、第2のルックアップユニッ
    トに転送され、第2のルックアップユニットによって与えられる、請求項19に
    記載のルックアップテーブル。
  21. 【請求項21】 キーに対応する最終結果は、最終結果が記憶されるルック
    アップユニットによって与えられる、請求項15に記載のルックアップテーブル
JP2001542982A 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置 Withdrawn JP2003516670A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17023299P 1999-12-10 1999-12-10
US60/170,232 1999-12-10
US21296600P 2000-06-21 2000-06-21
US60/212,966 2000-06-21
PCT/CA2000/001441 WO2001043400A2 (en) 1999-12-10 2000-12-08 Method and apparatus for longest match address lookup

Publications (1)

Publication Number Publication Date
JP2003516670A true JP2003516670A (ja) 2003-05-13

Family

ID=26865861

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2001542933A Expired - Lifetime JP4565793B2 (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置
JP2001542955A Pending JP2003516666A (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置
JP2001542982A Withdrawn JP2003516670A (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置
JP2001542932A Expired - Lifetime JP4741134B2 (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2001542933A Expired - Lifetime JP4565793B2 (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置
JP2001542955A Pending JP2003516666A (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2001542932A Expired - Lifetime JP4741134B2 (ja) 1999-12-10 2000-12-08 最長一致アドレスルックアップのための方法および装置

Country Status (10)

Country Link
US (5) US6691218B2 (ja)
EP (4) EP1250779A2 (ja)
JP (4) JP4565793B2 (ja)
KR (4) KR100748771B1 (ja)
CN (5) CN101510839B (ja)
AU (4) AU2133701A (ja)
CA (4) CA2393760C (ja)
DE (4) DE10085390T1 (ja)
GB (4) GB2373082B (ja)
WO (4) WO2001043345A2 (ja)

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4156112B2 (ja) * 1998-12-25 2008-09-24 富士通株式会社 高速検索方法及び高速検索装置
WO2001043345A2 (en) * 1999-12-10 2001-06-14 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
US6996808B1 (en) * 2000-02-12 2006-02-07 Microsoft Corporation Function injector
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US7089240B2 (en) * 2000-04-06 2006-08-08 International Business Machines Corporation Longest prefix match lookup using hash function
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7047317B1 (en) * 2000-06-14 2006-05-16 Altera Corporation High performance network address processor system
US6555511B2 (en) * 2000-06-19 2003-04-29 Lance L. Renfrow Stable hydrotropic surfactants comprising alkylamino propionate
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
US7111071B1 (en) * 2000-06-29 2006-09-19 Intel Corporation Longest prefix match for IP routers
JP2002026973A (ja) * 2000-07-12 2002-01-25 Nec Corp 経路検索システム及びその方法並びにそれに使用するルータ装置
US8161081B2 (en) 2001-03-16 2012-04-17 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
KR100488414B1 (ko) * 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US6826669B1 (en) * 2001-05-08 2004-11-30 Lewiz Communications Multi-protocol memory lookup system and method
US6917954B2 (en) * 2001-05-30 2005-07-12 Mosaid Technologies, Inc. Load balancing in IP address lookup
US7062493B1 (en) * 2001-07-03 2006-06-13 Trilogy Software, Inc. Efficient technique for matching hierarchies of arbitrary size and structure without regard to ordering of elements
WO2003010774A1 (fr) * 2001-07-24 2003-02-06 Terminus Technology Limited Systeme de memoire associative, dispositif reseau et systeme reseau
US20030031179A1 (en) * 2001-08-08 2003-02-13 Jintae Oh Self-updateable longest prefix matching method and apparatus
US7143382B2 (en) * 2001-08-23 2006-11-28 Cadence Design Systems, Inc. Method and apparatus for storing routes
US6665202B2 (en) 2001-09-25 2003-12-16 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same
US6636857B2 (en) 2001-12-18 2003-10-21 Bluecurrent, Inc. Method and system for web-based asset management
US6691171B1 (en) * 2002-02-01 2004-02-10 Micrel, Inc. Method and system for address lookup in data communication
US7274698B2 (en) * 2002-03-15 2007-09-25 Broadcom Corporation Multilevel parser for conditional flow detection in a network device
US7764687B1 (en) * 2002-03-28 2010-07-27 Meriton Networks Us Inc. Longest prefix match search technique
US20030210654A1 (en) * 2002-05-07 2003-11-13 Dongguk University Method of parallel packet switching
US7325071B2 (en) * 2002-06-04 2008-01-29 Lucent Technologies Inc. Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks
US6925464B2 (en) * 2002-06-13 2005-08-02 Intel Corporation Method and system for performing inserts and lookups in memory
JP4048861B2 (ja) * 2002-07-23 2008-02-20 日本電気株式会社 アドレス検索装置
US6934252B2 (en) * 2002-09-16 2005-08-23 North Carolina State University Methods and systems for fast binary network address lookups using parent node information stored in routing table entries
US7346009B2 (en) 2002-09-30 2008-03-18 Mosaid Technologies, Inc. Dense mode coding scheme
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US8018935B2 (en) * 2002-12-12 2011-09-13 Intel Corporation Address search
US7890633B2 (en) * 2003-02-13 2011-02-15 Oracle America, Inc. System and method of extending virtual address resolution for mapping networks
US7443854B2 (en) * 2003-04-02 2008-10-28 Intel Corporation Methods and apparatus to route packets in a policy driven networked environment
US9014195B2 (en) * 2003-05-02 2015-04-21 Vitesse Semiconductor Corporation Packet forwarding method and system
US7260675B1 (en) 2003-07-15 2007-08-21 Integrated Device Technology, Inc. CAM-based search engines that support pipelined multi-database search operations using encoded multi-database identifiers
US7058757B1 (en) * 2003-07-15 2006-06-06 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support distributed CAM control and methods of operating same
US7840696B2 (en) * 2003-07-25 2010-11-23 Broadcom Corporation Apparatus and method for classifier identification
US7299227B2 (en) * 2003-09-09 2007-11-20 Stmicroelectronics, Inc. Method and system for providing cascaded trie-based network packet search engines
US7028106B2 (en) * 2003-12-05 2006-04-11 Hewlett-Packard Development Company, L.P. Remapping routing information entries in an expander
US8868745B1 (en) * 2003-12-22 2014-10-21 Avaya Inc. Method and system for providing configurable route table limits in a service provider for managing VPN resource usage
US7937413B2 (en) * 2004-05-04 2011-05-03 International Business Machines Corporation Self-adaptive prefix encoding for stable node identifiers
US7483426B2 (en) * 2004-05-13 2009-01-27 Micrel, Inc. Look-up table expansion method
CA2573632A1 (en) * 2004-07-12 2006-01-19 Fexco Direct currency conversion
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
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
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
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
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
CN100366023C (zh) * 2004-07-28 2008-01-30 国家数字交换系统工程技术研究中心 路由查找装置
KR100735577B1 (ko) 2004-08-12 2007-07-04 삼성전자주식회사 무선 네트워크의 적응형 키검색장치 및 방법
US7590130B2 (en) * 2004-12-22 2009-09-15 Exar Corporation Communications system with first and second scan tables
US20060133383A1 (en) * 2004-12-22 2006-06-22 Russell Homer Communications system with scan table identification
US7590119B2 (en) * 2005-01-27 2009-09-15 Cisco Technology, Inc. Method and apparatus for context-based prefix updates in border gateway protocol
US20060187923A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Dynamic filter processor key generation based on packet type
US7876747B2 (en) * 2005-03-04 2011-01-25 Cisco Technology, Inc. Method and apparatus for efficient load distribution on link aggregations
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US8543614B2 (en) * 2005-08-22 2013-09-24 International Business Machines Corporation Packing nodes into records to store XML XQuery data model and other hierarchically structured data
US8572125B2 (en) 2005-08-22 2013-10-29 International Business Machines Corporation Scalable storage schemes for native XML column data of relational tables
US7529726B2 (en) * 2005-08-22 2009-05-05 International Business Machines Corporation XML sub-document versioning method in XML databases using record storages
CN100401723C (zh) * 2005-10-13 2008-07-09 华为技术有限公司 一种快速索引方法
US7869411B2 (en) * 2005-11-21 2011-01-11 Broadcom Corporation Compact packet operation device and method
US7889676B1 (en) * 2006-04-13 2011-02-15 Infoblox Inc. Systems and methods for storing and retrieving data
CN100421114C (zh) * 2006-04-21 2008-09-24 华为技术有限公司 基于关键字进行数据匹配查询的方法
US7817629B2 (en) * 2006-05-12 2010-10-19 Agere Systems Inc. Methods and apparatus for performing network operations on packets of data in response to content of particular user-specified protocol header fields
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
US8189585B2 (en) * 2006-10-10 2012-05-29 Cisco Technology, Inc. Techniques for virtual private network fast convergence
US8194664B2 (en) * 2006-10-10 2012-06-05 Cisco Technology, Inc. Two-level load-balancing of network traffic over an MPLS network
US7937541B2 (en) * 2006-10-12 2011-05-03 International Business Machines Corporation Speed selective table scan operation
SE531557C2 (sv) * 2006-10-20 2009-05-19 Oricane Ab Förfarande, klassificeringsanordning, datorprogramprodukt och system för att representera en del av n w-bit-intervall hörande till d-bit data i ett datakommunikationsnätverk
EP2074534B1 (en) * 2006-10-20 2017-01-25 Oricane AB Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network
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
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
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
CN100531140C (zh) * 2006-12-20 2009-08-19 中国科学院计算技术研究所 一种实现无回溯的最长前缀匹配搜索的方法和装置
US20110019662A1 (en) 2007-06-28 2011-01-27 Rebelvox Llc Method for downloading and using a communication application through a web browser
US9178916B2 (en) 2007-06-28 2015-11-03 Voxer Ip Llc Real-time messaging method and apparatus
US20100198988A1 (en) 2009-01-30 2010-08-05 Rebelvox Llc Methods for using the addressing, protocols and the infrastructure of email to support near real-time communication
US8825772B2 (en) * 2007-06-28 2014-09-02 Voxer Ip Llc System and method for operating a server for real-time communication of time-based media
US11095583B2 (en) 2007-06-28 2021-08-17 Voxer Ip Llc Real-time messaging method and apparatus
US8180029B2 (en) 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8688789B2 (en) 2009-01-30 2014-04-01 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US8645477B2 (en) 2009-01-30 2014-02-04 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
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
US20090100219A1 (en) * 2007-10-15 2009-04-16 Anurag Bhargava Method and apparatus for efficient cam lookup for internet protocol addresses
CN101420415B (zh) * 2007-10-23 2012-08-22 华为技术有限公司 形成路由表的方法及装置
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
TWI413910B (zh) * 2008-01-25 2013-11-01 Univ Nat Taiwan 數值資料範圍區間查詢方法及系統
CN101505262B (zh) * 2008-02-05 2011-07-20 华为技术有限公司 一种构造节点Id的方法和装置
US8335780B2 (en) * 2008-03-11 2012-12-18 James Madison Kelley Scalable high speed relational processor for databases and networks
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
US7933885B1 (en) 2008-04-25 2011-04-26 Netlogic Microsystems, Inc. Longest matching prefix search engine with hierarchical decoders
US8036141B2 (en) * 2008-08-15 2011-10-11 At&T Intellectual Property I, L.P Apparatus and method for managing a network
DE102008059204B9 (de) * 2008-11-27 2011-05-05 Infineon Technologies Ag Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz
US8849927B2 (en) 2009-01-30 2014-09-30 Voxer Ip Llc Method for implementing real-time voice messaging on a server node
US20100245582A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method of remote surveillance and applications therefor
US20100245072A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for providing remote monitoring services
US20100246669A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for bandwidth optimization in data transmission using a surveillance device
US9049157B1 (en) * 2009-08-16 2015-06-02 Compass Electro-Optical Systems Ltd Method and device for improving scalability of longest prefix match
US8363662B2 (en) 2010-03-19 2013-01-29 Cisco Technology, Inc. Alternate down paths for directed acyclic graph (DAG) routing
WO2011118566A1 (ja) * 2010-03-24 2011-09-29 日本電気株式会社 パケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラム
US8751687B2 (en) 2010-04-30 2014-06-10 Microsoft Corporation Efficient encoding of structured data
WO2011137914A1 (en) * 2010-05-04 2011-11-10 Mingoa Limited Identification and verification of management points in telecommunications systems
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
US20140185614A1 (en) * 2012-12-28 2014-07-03 General Instrument Corporation Multiple domain addressing in message routing
CN104052669B (zh) * 2013-03-12 2018-12-07 凯为公司 用于处理交替配置的最长前缀匹配表的装置
US9331942B2 (en) * 2013-03-12 2016-05-03 Xpliant, Inc. Apparatus and method for processing alternately configured longest prefix match tables
CN104426770A (zh) * 2013-09-09 2015-03-18 中兴通讯股份有限公司 路由查找方法及装置、B-Tree树结构的构建方法
JP5950285B2 (ja) * 2013-12-19 2016-07-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
US9553829B2 (en) 2014-11-13 2017-01-24 Cavium, Inc. Apparatus and method for fast search table update in a network switch
US9485179B2 (en) 2014-11-13 2016-11-01 Cavium, Inc. Apparatus and method for scalable and flexible table search in a network switch
US10091056B1 (en) * 2015-08-06 2018-10-02 Amazon Technologies, Inc. Distribution of modular router configuration
US9584155B1 (en) 2015-09-24 2017-02-28 Intel Corporation Look-ahead hash chain matching for data compression
US10419282B1 (en) 2015-09-24 2019-09-17 Amazon Technologies, Inc. Self-configuring network devices
US10313231B1 (en) * 2016-02-08 2019-06-04 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
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
CN106549872B (zh) * 2016-10-31 2019-05-24 西安空间无线电技术研究所 最长前缀匹配与精确匹配结合的星载快速路由查找系统
US10237206B1 (en) 2017-03-05 2019-03-19 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
US10404619B1 (en) 2017-03-05 2019-09-03 Barefoot Networks, Inc. Link aggregation group failover for multicast
CN107169054A (zh) * 2017-04-26 2017-09-15 四川长虹电器股份有限公司 基于前缀森林的ip索引方法
US10224957B1 (en) 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression
JP7088868B2 (ja) * 2019-03-22 2022-06-21 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信装置、通信方法及びプログラム
CN111367665B (zh) * 2020-02-28 2020-12-18 清华大学 一种并行通信路由建立方法及系统
CN111799642A (zh) * 2020-07-24 2020-10-20 无锡市德科立光电子技术有限公司 一种兼容sfp+封装的光纤放大器

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4450525A (en) * 1981-12-07 1984-05-22 Ibm Corporation Control unit for a functional processor
US4661658A (en) * 1985-02-12 1987-04-28 International Business Machines Corporation Offline PIN validation with DES
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
US5261088A (en) 1990-04-26 1993-11-09 International Business Machines Corporation Managing locality in space reuse in a shadow written B-tree via interior node free space list
JPH0522297A (ja) * 1991-07-09 1993-01-29 Nec Corp 通信ネツトワークシステム
US5359724A (en) * 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
US5329618A (en) * 1992-04-02 1994-07-12 Fibronics Ltd. Look-up table for a bridge in a data communications system
JPH06511582A (ja) * 1992-07-24 1994-12-22 マイクロソフト コーポレイション メモリを割り当てそして解放するコンピュータ方法及びシステム
US5323389A (en) 1992-08-14 1994-06-21 Fore Systems, Inc. ATM cell interface and method for dispatching an ATM cell
US5386413A (en) * 1993-03-19 1995-01-31 Bell Communications Research, Inc. Fast multilevel hierarchical routing table lookup using content addressable memory
CA2643234C (en) * 1993-10-29 2012-05-15 Microsoft Corporation Method and system for generating a computer program
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5854196A (en) * 1994-08-23 1998-12-29 The Procter & Gamble Company Detergent compositions
US5754854A (en) * 1994-11-14 1998-05-19 Microsoft Corporation Method and system for providing a group of parallel resources as a proxy for a single shared resource
JP3101767B2 (ja) * 1995-05-18 2000-10-23 ノーテル・ネットワークス・コーポレーション 選択された挨拶を含むメッセージ電話ベース配送システム
US5699276A (en) * 1995-12-15 1997-12-16 Roos; Charles E. Utility meter providing an interface between a digital network and home electronics
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
JP3520709B2 (ja) * 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US6034958A (en) * 1997-07-11 2000-03-07 Telefonaktiebolaget Lm Ericsson VP/VC lookup function
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
US6512766B2 (en) * 1997-08-22 2003-01-28 Cisco Systems, Inc. Enhanced internet packet routing lookup
JPH1166096A (ja) * 1997-08-25 1999-03-09 Nippon Telegr & Teleph Corp <Ntt> データ蓄積方法、そのデータ蓄積方法によって蓄積されたデータベース及びそのデータベースの検索方法
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
SK3692000A3 (en) * 1997-09-15 2000-09-12 Effnet Group Ab Method and system for fast routing lookups
US6141655A (en) * 1997-09-23 2000-10-31 At&T Corp Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template
US6563823B1 (en) * 1997-10-30 2003-05-13 Marconi Communications, Inc. Multi-resolution tree for longest match address lookups
US6223172B1 (en) * 1997-10-31 2001-04-24 Nortel Networks Limited Address routing using address-sensitive mask decimation scheme
JP3186681B2 (ja) * 1997-12-25 2001-07-11 日本電気株式会社 経路検索回路及び通信制御装置
JP3570606B2 (ja) * 1998-02-12 2004-09-29 日本電信電話株式会社 データ検索装置および方法
JP3166700B2 (ja) * 1998-03-12 2001-05-14 日本電気株式会社 ルータ及び最長一致検索装置
US6085188A (en) * 1998-03-30 2000-07-04 International Business Machines Corporation Method of hierarchical LDAP searching with relational tables
EP1337063B1 (en) * 1998-03-31 2008-11-05 Samsung Electronics Co., Ltd. Turbo encoding / decoding device and method for processing frame data
US6067574A (en) * 1998-05-18 2000-05-23 Lucent Technologies Inc High speed routing using compressed tree process
US6247014B1 (en) * 1998-07-01 2001-06-12 Nortel Networks Limited Method and apparatus for performing hash lookups using valid bit tables with pointers
US6526055B1 (en) * 1998-10-20 2003-02-25 Sun Microsystems, Inc. Method and apparatus for longest prefix address lookup
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
TW468116B (en) * 1999-02-08 2001-12-11 Wen-Shian Chen High speed Internet protocol address lookups method for saving memory
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
US6678274B1 (en) 1999-07-30 2004-01-13 Riverstone Networks, Inc. Method and system for managing forwarding tables
EP1083768A1 (en) * 1999-09-08 2001-03-14 TELEFONAKTIEBOLAGET LM ERICSSON (publ) A method for facilitating data transmission
US6744775B1 (en) * 1999-09-27 2004-06-01 Nortel Networks Limited State information and routing table updates in large scale data networks
US6687247B1 (en) * 1999-10-27 2004-02-03 Cisco Technology, Inc. Architecture for high speed class of service enabled linecard
WO2001043345A2 (en) * 1999-12-10 2001-06-14 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7106732B2 (en) * 2000-12-27 2006-09-12 Mosaid Technologies Incorporated Default route coding

Also Published As

Publication number Publication date
EP1250779A2 (en) 2002-10-23
WO2001043400A3 (en) 2001-11-08
GB2373082A (en) 2002-09-11
US20010042130A1 (en) 2001-11-15
US6836771B2 (en) 2004-12-28
JP2003516660A (ja) 2003-05-13
CA2397608A1 (en) 2001-06-14
WO2001043400A2 (en) 2001-06-14
US20020116526A1 (en) 2002-08-22
CN1435030A (zh) 2003-08-06
GB0213387D0 (en) 2002-07-24
CN100432991C (zh) 2008-11-12
AU2133701A (en) 2001-06-18
WO2001043345A2 (en) 2001-06-14
EP1250778A2 (en) 2002-10-23
KR100748771B1 (ko) 2007-08-13
DE10085388T1 (de) 2003-07-17
AU2133901A (en) 2001-06-18
WO2001043370A3 (en) 2001-11-08
WO2001043346A3 (en) 2001-11-29
GB2373082B (en) 2004-03-17
CA2397608C (en) 2010-08-24
GB0213391D0 (en) 2002-07-24
DE10085389T1 (de) 2003-07-17
DE10085390T1 (de) 2003-04-30
JP2003516666A (ja) 2003-05-13
GB2373083A (en) 2002-09-11
WO2001043345A3 (en) 2001-11-29
CN1435032A (zh) 2003-08-06
JP2003516661A (ja) 2003-05-13
CN1435031A (zh) 2003-08-06
US6691218B2 (en) 2004-02-10
EP1250662A2 (en) 2002-10-23
DE10085387T5 (de) 2004-07-01
CN101510839A (zh) 2009-08-19
CA2393764A1 (en) 2001-06-14
WO2001043370A2 (en) 2001-06-14
CA2393760C (en) 2010-07-13
GB2374174A (en) 2002-10-09
CN1278525C (zh) 2006-10-04
CA2395151C (en) 2008-07-22
AU2334101A (en) 2001-06-18
KR100748772B1 (ko) 2007-08-13
AU2133801A (en) 2001-06-18
KR20020081680A (ko) 2002-10-30
EP1250775A2 (en) 2002-10-23
US20010044876A1 (en) 2001-11-22
GB0213390D0 (en) 2002-07-24
US20010043602A1 (en) 2001-11-22
GB2374174B (en) 2004-03-03
CA2395151A1 (en) 2001-06-14
JP4565793B2 (ja) 2010-10-20
US20030126113A1 (en) 2003-07-03
KR20020081679A (ko) 2002-10-30
KR100748773B1 (ko) 2007-08-13
GB0213389D0 (en) 2002-07-24
CN1174587C (zh) 2004-11-03
CA2393760A1 (en) 2001-06-14
KR20020081681A (ko) 2002-10-30
GB2373083B (en) 2004-03-17
CN101510839B (zh) 2014-07-09
KR20020082465A (ko) 2002-10-31
WO2001043346A2 (en) 2001-06-14
CN1434950A (zh) 2003-08-06
US7423981B2 (en) 2008-09-09
GB2373084A (en) 2002-09-11
JP4741134B2 (ja) 2011-08-03
US6539369B2 (en) 2003-03-25

Similar Documents

Publication Publication Date Title
JP4741134B2 (ja) 最長一致アドレスルックアップのための方法および装置
US7966421B2 (en) Method and apparatus for logically expanding the length of a search key
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7633960B2 (en) Dense mode coding scheme
US7146371B2 (en) Performance and memory bandwidth utilization for tree searches using tree fragmentation
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US6917954B2 (en) Load balancing in IP address lookup
Li et al. Comparative studies of address lookup algorithms for IPv6

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080304