JP2003516666A - 最長一致アドレスルックアップのための方法および装置 - Google Patents
最長一致アドレスルックアップのための方法および装置Info
- Publication number
- JP2003516666A JP2003516666A JP2001542955A JP2001542955A JP2003516666A JP 2003516666 A JP2003516666 A JP 2003516666A JP 2001542955 A JP2001542955 A JP 2001542955A JP 2001542955 A JP2001542955 A JP 2001542955A JP 2003516666 A JP2003516666 A JP 2003516666A
- Authority
- JP
- Japan
- Prior art keywords
- subtree
- mapper
- stored
- key
- entry
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 81
- 230000001419 dependent effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 48
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 4
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 241000712062 Patricia Species 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
- G06F16/902—Indexing; 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Error Detection And Correction (AREA)
- Facsimile Image Signal Circuits (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
は、受信したデータパケットを転送すべき次のホップを、各々の可能なデスティ
ネーションネットワークごとに示すルーティングテーブルを維持する。次のホッ
プとは、別のルータまたは最終的なデスティネーションであろう。
トはIPデスティネーションアドレスを含む。IPデスティネーションアドレス
はIPデータパケットの最終デスティネーションである。現在、IPバージョン
4(IPv4)およびIPバージョン6(IPv6)の2つのIPバージョンが
存在する。IPv4は、IPデスティネーションアドレスを記憶する、データパ
ケットに含まれるIPヘッダに32ビットのフィールドを設ける。ルータは、I
Pヘッダに記憶されたIPデスティネーションアドレスに依存して、接続された
受信データパケットを次のループのルータかまたは、デスティネーションがロー
カルネットワークであれば最終的なデスティネーションに転送する。
たらす。インターネットルータは典型的に、40億の可能なルートのうち5万を
記憶する。しかしながら、記憶されるルートの数は、インターネットの発展およ
びIPv6の広がりによって増加している。
および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)に同じネットワークアドレスを記憶
する。
ホストアドレスを自由化するために導入された。残余の未使用のネットワークは
、サイズ可変のブロックで組織に割当てられる。500個のアドレスを必要とす
る組織は500個の連続するアドレスを入手する。たとえば、ある組織に、12
8.32.xxで始まる500個の利用可能なアドレスを割当て可能である。ル
ータが記憶するルートの数は、クラスレス・インタードメイン・ルーティングの
導入以来増加した。クラスレス・インタードメイン・ルーティングは、一致する
ネットワークアドレスをサーチしてIPデスティネーションアドレスの対応する
次のホップを見出す代わりに、対応するルートを見出すのに最長プレフィックス
一致を必要とする。たとえば、サーチは、たとえば128.xx.xxなどのク
ラスBのIPアドレスの16MSBの後はもはやストップできない。なぜなら、
128.32.4.xxは別の組織に割当てられ得るからであり、これには次の
異なるホップを必要とする。
ナリツリーサーチの使用によるものである。バイナリツリーサーチは、1ビット
ずつ32のレベルまで32ビット入力を一致させ、32ビットのキーに一致する
エントリを見出すには32のサーチが必要である。一致をサーチするための別の
方法はパトリシアツリーの使用によるものである。パトリシアツリーは、バイナ
リツリーの葉までにエントリが存在しなければ、必要なサーチ数を減らす。
ためのまた別の方法が、1998年5月11日に出願された、ブロドニックら(
Brodnick et al.)による「高速ルーティングルックアップのための方法および
システム」(“Method and System for Fast Routing Lookups”)と題された、
PCT出願連続番号PCT/SE98/00854に記載されている。ブロドニ
ックが記載する方法は、重複するルートを記憶しないことで、記憶される次のホ
ップの数を減じる。次のホップの数を減じることにより、メモリの必要量を低減
し、それによりルートルックアップテーブルを高速キャッシュメモリに記憶でき
るようになる。
3つのレベルに分割することにより、サーチ数を3に減らした。第1のレベルの
インデックス付けされたエントリは、ルートをエントリからとる場合、サーチを
第1のレベルで終了可能であるかまたは、IPデスティネーションアドレスのさ
らなる部分を用いて、その後のレベルまでサーチを継続しなければならないかを
示す。
36)ビットマップを図示する。64Kビットマップ30は、深度16のバイナ
リツリーの葉またはノード44を表わし、ノード44当り1ビットである。ビッ
トマップは長さ16のビットマスクに分割される。64Kビットマップには212 =4096のビットマスクが存在する。図1Aに1つのビットマスクが示される
。ビットマップ30中のビットは、ノード44に対応するポインタのアレイに記
憶されたルートインデックスまたはサブツリーが存在すれば、‘1’にセットさ
れる。ノードが前のノード44とルートエントリを共有していれば、ビットマッ
プ30中のビットは、‘0’にセットされる。
図示する。ルックアップテーブルは、コードワード36のアレイ、ベースインデ
ックス34のアレイおよびマップテーブル40を含む。図1Bには32ビットの
IPアドレス38も示される。コードワード46は、ビットマップ30(図1A
)の各ビットマスクごとにコードワード36のアレイに記憶される。コードワー
ド46は6ビットの値46aおよび10ビットのオフセット46bを含む。ベー
スインデックス42は、コードワード36のアレイ中の4つのコードワード46
ごとに、ベースインデックス34のアレイに記憶される。
ーブル40を用いて、ポインタ(図示せず)のアレイ中のポインタを選択する。
ポインタは、ルートインデックスまたはインデックスを記憶してさらなるサーチ
を行なう。
ード46およびベースインデックス34のアレイ中のベースインデックス42を
選択することによって選択される。コードワード46は、IPアドレス38の最
初の12ビット50を用いて選択される。ベースインデックス42は、IPアド
レス38の最初の10ビット48を用いて選択される。マップテーブル32を用
いて、ポインタ群の中の正しいポインタが選択される。
2へのインデックスである。マップテーブル32は、ビットマスク内のビット数
を4ビットのオフセットにマッピングする。オフセットは、ポインタのアレイの
中の選択されたポインタ群内のポインタを特定する。10ビットの値46bはマ
ップテーブル32中の列を選択し、IPアドレス52のビット19:16は4ビ
ットのオフセット54を選択する。
である。すなわち、(1)16ビットのコードワード46を読出す;(2)16
ビットのベースアドレス42を読出す;(3)マップテーブル32から4ビット
のオフセット54を読出す;(4)ポインタインデックスがベースアドレス42
、コードワードオフセット46aおよび4ビットのオフセット54の和であるポ
インタインデックスでポインタを読出す。
3レベルのサーチには12のメモリアクセスが必要である。
るルートルックアップテーブルの複数サーチを必要とし、各サーチは、キャッシ
ュメモリの複数のメモリアクセスを必要とするので、スループットがキャッシュ
メモリの帯域幅によって制限される。
る。ルックアップテーブルは、第1レベルのマッパおよび第2レベルのマッパを
含む。第1レベルのマッパは、サーチリクエストにおいて与えられるキーの第1
の部分によってインデックス付けされた複数個の第1のメモリ場所を含む。イン
デックス付けされたエントリは、ルートがエントリから取られ、サーチが第1の
マッパで終わることができるか、または、キーのさらなる部分を用いてその後の
マッパにサーチが続行しなければならないかを示す。第2のメモリマッパは、第
1のメモリ場所のインデックス付けされた1つに記憶された第1のサブツリーセ
レクトおよびキーの第2の部分に基づいてインデックス付けされた複数個の第2
のメモリ場所を含む。ルックアップテーブルに対して発行された単一のサーチリ
クエストの結果、マッパの1つの場所に記憶されるキーに対応する値が得られる
。
ドレス論理とを含む。サブツリーメモリは、サブツリーセレクトによってインデ
ックス付けされたサブツリー記述子を記憶する。サブツリーマッパは、第2のメ
モリ場所を含み、マッパアドレス論理は、選択されたサブツリー記述子およびキ
ーの第2の部分に依存してサブツリーマッパのためのマッパインデックスを与え
る。
ップは、サブツリーにおける各可能なノードごとに1ビットを含む。ブロックポ
インタは、値を記憶するための第2のメモリ場所のブロックのベースアドレスを
記憶する。
ドが前のノードと値を共有することを示す。第2のメモリ場所のためのインデッ
クスは、ノードに対応するビットより前にビットマップに記憶された「1」の数
に依存する。
「1」の数に依存する。ブロックは、16個の第2のメモリ場所を含み、可能な
ノードの数は256個であり得る。
れた第2のサブツリーセレクトおよびキーの第3の部分に依存してインデックス
付けされた複数個の第3のメモリ場所を含む第3レベルのマッパを含み得る。キ
ーは32ビットであり、キーの第1の部分は16ビットであり、キーの第2の部
分は8ビットであり、キーの第3の部分は8ビットである。
れた第3のサブツリーセレクトおよびキーの第4の部分に依存してインデックス
付けされた複数個の第4のメモリ場所を含む第4レベルのマッパを含み得る。キ
ーは40ビットであり、キーの第1の部分は16ビットであり、キーの第2の部
分は8ビットであり、キーの第3の部分は8ビットであり、キーの第4の部分は
8ビットである。
れるように、この発明の好ましい実施例の以下のより特定的な説明から明らかに
なるであろう。図面中の同じ参照番号は異なる図面を通じて同じ部分を示す。図
面は、この発明の原則を図示するのに供される代わりに、縮尺を変更したり、強
調したりということを必ずしも行なわなくてよい。
ル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
に記憶される。
力110a−cの1つをルートインデックス102として選択する。マッパ出力
110a−cは、マッパ出力110a−cの最上位ビット(MSB)に依存して
選択される。マッパ出力110a−cがルートインデックス102を含む場合の
み、マッパ出力110a−cのMSBが‘1’となる。
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レベルを分割することが、現在のメモリ技術においては
最適であるように思われるが、この発明はこの構成に限定されるものではない。
なう代わりに、キー104の最初の16ビットと関連するルートインデックス1
02をマッパ106a(図2A)に記憶する。マッパ106a(図2A)は、キ
ー104の最初の16ビットのMSBによって直接にインデックス付けされる。
次のマッパ106bは、前のマッパ106aが、キー104と関連する次のホッ
プ情報にアクセスするのに用いるルートインデックス102を記憶しているか否
かに依存して、サーチされる。
は葉は、それぞれ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を見出すために
は、次のレベルのサーチが必要であることを示す。
よって判定することができる。バイナリツリー中の各ノードは、右側の子および
左側の子の2つの子を有して示される。親ノードが‘1’ならば右側の子が選択
される。親ノードが‘0’ならば左側の子が選択される。根114からノード1
16への経路をトレースすると、r1は、‘010’にセットされたMSBを有
するすべてのキーに対して、L1マッパ106a中にルートインデックス102
として記憶される。根ノード114からs0ノード1304への経路をトレース
すると、s0は、‘00011’にセットされたMSBを有するすべてのキーに
対して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を記憶する。
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は直接にマッピングされ
ない。
な入力ごとに記憶されない。ノードに対するルートインデックス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と関連し
てより詳細に後述される。
フィックスルックアップテーブル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でサーチが行なわれる。
れ、これはパイプライン208およびL3インダイレクトマッパ106cに転送
される。第3のレベルのサーチは、キー210cの次の8ビットおよびL2マッ
パエントリデータ220bに依存して、L3インダイレクトマッパ106cで行
なわれる。
8およびL4インダイレクトマッパ106dに与えられる。L3マッパエントリ
データ220cは、キー210dの最後の8ビットおよびL3マッパエントリデ
ータ220cに依存して、L4インダイレクトマッパ106dで行なわれる。
ー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は、ル
ートインデックスが含まれているか否かの表示を与えることができる。
るキー210による最長一致プレフィックステーブル200の複数サーチを並行
して行なうことができる。パイプライン208は、40ビットのルックアップテ
ーブル200の複数のサーチを、必要に応じて、他のマッパ106a−dの各々
のサーチが完了するまで、40ビットのキー210と関連の各マッパ106a−
dごとにマッパエントリデータ220a−dを記憶することによって並行して行
なって、40ビットキー210に対応するルートインデックスを見出すのを可能
にする。したがって、ダイレクト・マップト・マッパ106aへの単一のメモリ
アクセスを行なうことにより、受信したIPアドレスに対応するルートインデッ
クスに対するサーチリクエストがルックアップテーブル200に発せられる。別
のキーに対応するルートインデックスに対するその後のサーチは、ダイレクト・
マップト・マッパ106aのための次のメモリアクセスサイクルの中でルックア
ップテーブル200に発せられ得る。
マッパエントリのタイプを図示する。図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を選択する。
マッパ106bを図示する。マッパ106bは、サブツリーメモリ400、マッ
パアドレス論理402およびサブツリーマッパ418を含む。マッパ106aに
記憶されるキー210aの最初の部分によって選択されたサブツリーインデック
ス312は、サブツリーメモリ400に転送される。サブツリーメモリ400は
、サブツリーインデックス312が選択するサブツリーエントリ404を含む。
サブツリーエントリ404はデータフィールド406およびポインタフィールド
408を含む。
に示されるサブツリーのうちの1つのボトムレベルに対応する。マッパレベル_
2 112bが8つのレベルを有すれば、各サブツリー(図示せず)のボトムレ
ベルは、各ノードに1つの、最大256のルートを有する。
各ノードに対応する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と関連してより詳細に説明される。
ータ412とポインタフィールド408に記憶されたサブツリーポインタ414
とはマッパアドレス論理402に転送される。マッパアドレス論理402は、キ
ー210bの次の部分(次の8ビット)も受ける。
リーのボトムレベルのノードと関連のマッパエントリ、すなわちサブツリーデー
タ412およびサブツリーと関連のサブツリーポインタ414のマッパアドレス
416を判定する。マッパアドレス416は、サブツリーマッパ418中のマッ
パエントリを選択する。サブツリーマッパ418は、ダイレクト・マップト・マ
ッパ106aに対して、図4と関連して説明されたのと同じタイプのマッパエン
トリを含む。マッパデータエントリ220bの中身が、その後のサーチが必要で
あるか否かを決定する。マッパエントリデータ220bが、次のマッパレベル1
12c(図2B)中に別のサブツリーエントリ404が存在することを示すサブ
ツリーインデックス312(図4)を含めば、その後のサーチが必要である。
ドを選択する。サブツリーポインタ414は、サブツリー中のノードと関連のベ
ースアドレスを選択し、サブツリーデータ412は、ベースアドレスと関連のマ
ッパエントリのブロック内のオフセットを選択する。マッパアドレス論理402
は、図7と関連して後述される。
のレベルを含む。サブツリーは、3つのルートインデックスr1、r2およびr
3ならびに2つのサブツリーインデックスs0およびs1を含む。サブツリーの
ボトムレベルには32個のノード5001−50032が存在する。ボトムレベル
の各ノード5001−50032と関連のルートインデックスまたはサブツリーイ
ンデックスが以下の表1に示される。
、図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で
はルート変更がある。
はノード5066と共有される。したがって、ビット5025は、ルート変更を示
す‘1’であり、サブツリーマッパ418(図5)中のマッパエントリ5042
を選択する。ビット5026は、5025に記憶されるルートインデックスをこの
ノードに用いるべきであることを示す‘0’である。ノード5007に対しては
いずれのルートも与えられないため、ルート変更があり、デフォルトルートr0
を記憶するサブツリーマッパ418(図5)中のマッパエントリ5043を必要
として、ビット5027に‘1’が記憶される。
418(図5)で新たなマッパエントリは必要ない。ノード5008に対応する
ビット5028は‘0’にセットされる。ノード5009は前のノード5008と
は異なるルートを有し、サブツリーマッパ418(図5)で新たなマッパエント
リが必要である。ノード5009に対応するビット5029は‘1’にセットされ
、次の連続するメモリ場所中のサブツリーマッパ418(図5)に、r2を記憶
するマッパエントリ5044が加えられる。
マッパ418(図5)で新たなルートエントリが必要である。ノード50010に
対応するビット50210は‘1’にセットされ、s0を記憶するマッパエントリ
5045が、次の連続するメモリ場所中のサブツリーマッパ418(図5)に加
えられる。
マッパ418(図5)で新たなマッパエントリが必要である。ノード50011に
対応するビット50211は‘1’にセットされ、r2を記憶するマッパエントリ
5046が、次の連続するメモリ場所中のサブツリーマッパ418(図5)に加
えられる。
、サブツリーマッパ418(図5)で新たなマッパエントリは必要ない。ノード
50012に対応するビット50212およびノード50013に対応するビット50
213はデータフィールド406中で‘0’にセットされる。
ッパ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)で新たなマッパエントリは必要ない。
ッパ418(図5)で新たなマッパエントリが必要である。ノード50017に対
応する、データフィールド406中のビット50217は‘1’にセットされ、r
3を記憶するマッパエントリ5049がサブツリーマッパ418(図5)に加え
られる。
ブツリーマッパ418(図5)で新たなマッパエントリは必要ない。対応するビ
ット50218−50232は‘0’にセットされる。したがって、32個のノード
5001−50032について、ルートエントリ302(図4)またはサブツリー
エントリ304(図4)を記憶するには、マッパエントリ5041-9が9つ必要
である。
ータフィールド406に記憶される稠密サブツリー記述子に記憶される‘1’の
数を計算することにより、サブツリーマッパ418(図5)中でインデックス付
けされる。たとえば、ノード50028に対応するマッパエントリ5041−50
49を見出すには、データフィールド406のビット5021−50228に記憶さ
れる‘1’の数をカウントする。‘1’の数が8であると、対応するマッパエン
トリはデフォルトルートから8番目の場所、すなわち、マッパエントリ5049
である。
ーマッパ418(図5)中のサブツリー当りのマッパエントリ5041−5049 の数が減少する。
ルド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を特定のサブツリーに割当てる。メモリにアドレスのフリーリストを
与えるための方法は技術分野では周知である。
ブツリーマッパ418(図5)中のメモリの扱いがより容易になる。なぜなら割
当てられた16個の場所は連続しているからである。
ス論理402は、オフセット論理700、ポインタ論理702およびアダー論理
704を含む。オフセット論理700はノードセレクト論理706および1カウ
ント論理708を含む。ポインタ論理はベースアドレスセレクト論理710を含
む。
ーデータ412中のノード500(図6B)を選択する。対応するノード番号は
ノードセレクト718上を1カウント論理708に転送される。1カウント論理
708は、サブツリーデータフィールド406に記憶された‘1’の数を、選択
されたノード500に対応するビットまでカウントする。1の数はブロックセレ
クト712上をポインタ論理702へおよびブロックオフセット714上をアダ
ー論理704へ転送される。
タフィールド406に記憶される‘1’は最大で256個であり得る。8ビット
カウントフィールドは2つのフィールドに分割され、4つのMSBがブロックセ
レクト712を与え、4つの最下位ビット(LSB)がブロックオフセット71
4を与える。
番号68を選択し、サブツリーデータ412の最初の68ビットに記憶される‘
1’が27個存在すれば、カウントは1C Hex(00011100)、MS
B(0001)である。すなわち、ブロックセレクト714、セレクトブロック
6021(図6)およびLSB(1100)である。すなわち、ベースブロック
オフセットセレクトマッパエントリ50411(図6)であり、すなわちブロック
5021中の12番目のエントリである。
ブロックセレクト712に依存して、サブツリーポインタ414からベースアド
レス716を選択する。アダー論理704は、オフセット論理700から転送さ
れるブロックオフセット714をベースアドレス716に加算し、マッパアドレ
ス416を与える。マッパアドレス416はマッパ106b−d中のマッパエン
トリ504(図6B)のインデックスである。
(図3)に対して最長一致プレフィックスをサーチするためのステップを図示す
るフローチャートである。
インデックスとして転送される。処理はステップ802に継続する。
付けされた第1のレベルのマッパ中のマッパエントリ504(図6B)に記憶さ
れたマッパエントリデータ220a(図3)は、次のレベルのさらなるサーチが
必要であるか否かを判定する。必要ならば、処理はステップ804に継続する。
必要なければ、第1のレベルのマッパ中のインデックス付けされたマッパエント
リ504(図6B)中のルートエントリ302(図4)が、キーに対して、対応
する最長プレフィックスルートを記憶し、処理はステップ808に継続する。
ベルのマッパのためのインデックスは、前のレベルのマッパ中のインデックス付
けされたマッパエントリ504(図6B)中のサブツリーエントリ記述子304
(図4)に記憶されたサブツリーインデックス312と、キー210b−dの次
の部分とに依存する。処理はステップ806に継続する。
ントリ504(図6B)は、キーに対する、対応する最長プレフィックスルート
インデックスまたはさらなるサーチが必要であることを示すサブツリーインデッ
クスを記憶する。さらなるサーチが必要ならば、処理はステップ804に継続す
る。必要なければ、処理はステップ808に継続する。
4(図6B)に記憶されたルートインデックス102(図3)は、ルートインデ
ックス102(図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万個のための記憶を提供する
。
図6B)の数は、複数のルックアップテーブル200を設けることによって増や
すことができる。複数のルックアップテーブルは、ルックアップテーブル200
のうち1つの中のサブツリーマッパ418(図5)のマッパエントリ504(図
6B)に記憶された、サーチキー210に対応する値を求めて並行してサーチさ
れる。
、すなわちマスタルックアップテーブル200aおよびスレーブルックアップテ
ーブル200bが示される。しかしながら、ルックアップテーブルの数は示され
た2つに限定されるのではなく、1つよりも多くのスレーブルックアップテーブ
ル200bを加えることができる。
並行してサーチされる。サーチキー210に対応するルートインデックス102
(図3)は、ルックアップテーブル200a−bのうち1つの中のサブツリーマ
ッパ418(図5)またはルックアップテーブル200a、200bの両者の中
のダイレクトマッパ106aに記憶される。最終ルートインデックス900は、
両者のルックアップテーブル200a、200bの並行したサーチの後に見出さ
れる。
つを図示する。ルックアップテーブル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で終了する。
ーブルックアップテーブル200bは最終ルートインデックス900を共有する
。最終ルートインデックス900を記憶するルックアップテーブル200a、2
00bはルートインデックス102(図3)を与える。ルックアップテーブル2
00a、200bの各々が別個のデバイスならば、最終ルートインデックス90
0を共有することにより、各デバイスの外部ピンのカウントが減少する。いかな
るときにも、最終ルートインデックス900を駆動するのは、ルックアップテー
ブル200a、bのうち1つだけである。
a、200bの両者に記憶して、ルックアップテーブルの両者が同時に最終ルー
トインデックス900を駆動するエラー状態を回避するため、各ルックアップテ
ーブル200a、bはデバイスコード906を記憶する。3ビットのデバイスコ
ードにより、拡張ルックアップテーブルが8つのデバイスを含むことが可能にな
る。
3)を含むか否かを判定する。含んでいれば、ルックアップテーブル200a中
のドライバ論理902は、バスリクエスト信号(図示せず)上に、最終ルートイ
ンデックス900を駆動する意図を信号で伝える。2つ以上のルックアップテー
ブル200a、200bが同時にルートインデックス信号を駆動する意図を信号
で伝えれば、ルートインデックスは、ルックアップテーブル200a、200b
により、最も低いデバイスコードを与えられる。バスリクエスト信号を用いるこ
とによりバス競合を解決するための方法は技術分野で周知である。
エントリの数を増やすために深度拡張を与える別の実施例を図示する。図10C
に示される実施例では、2つのルックアップテーブル200c−d、すなわちマ
スタルックアップテーブル200cおよびスレーブルックアップテーブル200
dが値を記憶するために設けられる。しかしながら、ルックアップテーブルの数
は示された2つに限定されるものではなく、マッパエントリの数は、より多くの
スレーブルックアップテーブル200dを加えることによって増やすことができ
る。サーチキー[39:0]210に対応するルックアップテーブル200c−
dのうち1つの中のマッパエントリに記憶される値に対するサーチは、ルックア
ップテーブル200c−dで並行して行なわれる。
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に記憶しないようにする。
デックス論理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とし
て転送される。
ーブルックアップテーブル200dは、入結果1000aで標識付けられた共通
のバスを介して接続される。ルートインデックス102(図3)は、出結果10
02aの上を、スレーブルックアップテーブル200dから転送されるのみであ
る。1つよりも多くのスレーブルックアップテーブル200dが存在する場合、
最後のスレーブルックアップテーブルにより、拡張ルックアップテーブルに対す
るルートインデックス102(図3)が与えられる。この実施例は、図10Aと
関連して説明されたマルチドライバ最終ルートインデックス900の実現例を回
避するが、入結果1000a用に、より多くのデバイス外部ピンが必要である。
0c−d(図10C)中の、図2Bに示されたルートの分布のバイナリツリー表
示を図示する。
c(図10C)に記憶されたルートのバイナリツリー表示を図示する。図2Bに
示されたルートのバイナリツリー表示に示されるサブツリーBは、マスタルック
アップテーブル200aには含まれない。ノード1301−13022および13
024-32は、図3と関連して説明されたように、ルックアップテーブル200a
中のマッパ106aでコード化される。サブツリーBがインデックス付けされる
ノードは、それがマスタルックアップテーブル200aに記憶されれば、Xでグ
ラフィックに表わされ、プルーニングされたサブツリーを示す。マスタルックア
ップテーブル200a中のノード13023に対応するマッパエントリ504(図
6B)は、もはやサブツリーBへのサブツリーインデックス312(図4)を記
憶しない。代わりに、ノード13023に対応するマッパエントリが別のスレーブ
ルックアップテーブル200b中のサブツリーマッパ418(図5)に記憶され
ることを示すマスタルックアップテーブル200a中の、ノード13023に対応
するマッパエントリ504(図6B)に、ノーエントリ300(図4)が記憶さ
れる。
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の結果を記憶しない。
ーブマッパレベル_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上を転送される。
マスタルックアップテーブル200a中のマッパ106aのマッパエントリ50
4(図6B)中にサブツリーエントリ記述子304(図4)に記憶されたサブツ
リーAに対するサブツリーインデックス312(図4)となる。サブツリーイン
デックス312はマスタルックアップテーブル200a中のマッパ106bに転
送され、マスタルックアップテーブル200aに記憶されるルートエントリ30
2(図4)に対するサーチを継続する。
スタルックアップテーブル200a中のマッパ106aのマッパエントリ504
(図6B)に記憶されるサブツリーエントリ記述子304(図4)と、スレーブ
ルックアップテーブル200b中のマッパ106aのマッパエントリ504(図
6B)に記憶されるノーエントリ300(図4)とである。したがって、ルート
エントリ302(図4)に対するサーチは、スレーブルックアップテーブル20
0b中のマッパ106bで、キー210bの次の部分を用いて継続する。
エントリ504(図6B)に記憶されるべきルートエントリ302(図4)を分
散するための方法を図示するフローチャートである。同じ方法は、図10Cに示
されたルックアップテーブル200c−dに当てはまる。マッパエントリに記憶
されるべきルートエントリ302(図4)はまず、ルックアップテーブル200
a−bに記憶される前に、プロセッサ(図示せず)によってメモリに記憶される
。
ル200a−b(図10A)の各々に記憶されるべきルートエントリ302(図
4)の数がカウントされる。マッパレベル_1 1104a(図11B)に対す
るルートエントリ302(図4)は、ルックアップテーブル200a中のマッパ
106aに記憶される。マッパレベル_1 1104a(図11B)に対するサ
ブツリーエントリ(図4)は、ルックアップテーブル200a−200bの各々
の中のマッパ106aに記憶される。
の各々の中のマッパ106aのサブツリーエントリ304(図4)の各々ごとの
、記憶されるべきルートエントリ302(図4)の数を計算して、どのようにル
ートエントリ302(図4)をルックアップテーブル200a−b(図10A)
の中に分散すべきかを判定する。ルートエントリ302(図4)を記憶するのに
必要なマッパエントリ504(図6B)の総数を判定した後、処理はステップ1
202に継続する。
4(図6B)の総数を、ルックアップテーブル200a−b(図10A)の数で
除算して、各ルックアップテーブル200a−b(図10A)に記憶すべきルー
トエントリ302(図4)の数を定める。処理はステップ1204に継続する。
ップテーブル200a−b中のサブツリーマッパ418(図5)中のマッパエン
トリ504(図6B)に記憶される。処理はステップ1206に継続する。
A)中のサブツリーマッパ418(図5)のマッパエントリ504(図6B)に
記憶されたルートエントリの数が1/n未満ならば、なおここでnは利用可能な
ルックアップテーブル200a−b(図10A)の数であるが、プロセスはステ
ップ1204に続く。それ以上ならば、選択されたルックアップテーブル200
a−bはマッパエントリの総数の1/nを記憶しており、処理はステップ120
8に継続する。
エントリの総数の1/nを記憶し、選択されたルックアップテーブル200a−
bのいずれの残余のサブツリーノードに対しても、ノーエントリ300(図4)
を記憶する。それぞれのサブツリーに対するルートインデックスは、現在選択さ
れたルックアップテーブルに記憶されないからである。処理はステップ1210
に続く。
る。記憶されていなければ、処理はステップ1212に継続する。
選択される。処理はステップ1204に続く。
チの前に、ルックアップテーブル200a−b(図10A)の中に分散される。
サーチは、ルックアップテーブル200a−b(図10A)の各々の中で並行し
て行なわれる。ルックアップテーブルの各々の中で並行して実現されるサーチの
ための方法が、ルックアップテーブル200a−b(図10A)の1つのために
説明される。
1つにも記憶されるサーチキーに対応する値に対する、サーチキーによるサーチ
のための方法を図示するフローチャートである。
はサーチキー210を受ける。ルックアップテーブル200c−dの各々の中の
マッパ106aは、キー210aの最初の部分に対応する値を求めてサーチされ
る。処理はステップ1302に継続する。
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へ進む。
(図4)を記憶していれば、ルックアップテーブル200c−d内のさらなるサ
ーチが必要となり、処理はステップ1306へ進む。そうでなければ、このエン
トリはノーエントリを記憶しており、これがさらなるサーチが必要でないことを
示しているので、処理はステップ1310へ進む。
る。キー210b−dの次の部分および前のレベルのサーチの結果得られたサブ
ツリーインデックス312(図4)に依存して、次のレベルのマッパ106b−
d(図3)がサーチされる。処理はステップ1308へ進む。
果得られるマッパエントリに依存して、サーチを継続するか否かが判定される。
マッパエントリ504(図6B)がサブツリーエントリ記述子304(図4)を
記憶していれば、次のレベルのマッパ106b−dでサーチが継続され、処理は
ステップ1306へ進む。マッパエントリ504(図6B)がサブツリーエント
リ記述子304(図4)を記憶していなければ、さらなるサーチは必要なく、処
理はステップ1310へ進む。
けた入結果1000aと比較される。たとえば、ルックアップテーブルがスレー
ブルックアップテーブル200dの場合、マスタルックアップテーブル200c
でのサーチからの入結果は、入結果1000a上でルックアップテーブル200
dへ転送され、スレーブルックアップテーブル200dにおけるサーチの結果と
比較される。処理はステップ1312へ進む。
200dのサーチ結果が異なる場合、処理はステップ1314へ進む。入結果1
000aと現在のルックアップテーブル200dのサーチ結果との両者が同じで
あれば、別々のルックアップテーブル200c−d中のマッパエントリ504(
図6B)に2つの有効な結果が記憶されている。同じキー210に対して2つの
有効な結果を記憶すべきでなく、処理はステップ1316へ進む。
あるか否かが判定される。入結果1000aは、それがルートエントリ302(
図4)であれば有効である。入結果1000aは、それがノーエントリ300(
図4)またはサブツリーエントリ記述子304(図4)であれば無効である。サ
ブツリーエントリ記述子304(図4)、ルートエントリ302(図4)および
ノーエントリ300(図4)については図4に関連して既に説明した。入結果1
000aが無効であれば、処理はステップ1318へ進む。そうでなければ、処
理はステップ1320へ進む。
ップテーブル200dのサーチ結果は無効である。入結果1000aは現在のル
ックアップテーブル200dから出結果(出て行く結果)1002a上で転送さ
れる。入結果1000aは、現在のルックアップテーブル200dが最後のルッ
クアップテーブルであればルートインデックス102(図3)として転送され、
または、入結果1000aとして次のルックアップテーブルへ転送される。処理
が完了する。
クアップテーブルに記憶される。ルックアップテーブル200c−d中のルート
エントリの記憶中にエラーが起こる。エラーコードが生成されるのでこのエラー
は修正され得る。処理が完了する。
果も入結果1000aも有効でない。現在のルックアップテーブル200dのサ
ーチ結果は、たとえ無効であっても、入結果1000aとして次のルックアップ
テーブルへ転送される。処理が完了する。
記憶されたサーチキーに対応する値をサーチするための方法を表わすフローチャ
ートである。
両者における第1のレベルのマッパ106aが、キー210aの第1の部分に対
応する値についてサーチされる。処理はステップ1342へ進む。
パ106aをサーチした後に有効な結果の値が見つかれば、処理はステップ13
52へ進む。そうでなければ、処理はステップ1344へ進む。
パ106aをサーチした結果の値がサブツリーエントリ記述子304(図4)で
あれば、処理はステップ1346へ進む。そうでなければ、そのキーに対する有
効な値は現在のルックアップテーブルには記憶されておらず、処理は完了する。
チ中に見つかったサブツリーエントリ記述子304(図4)において識別された
サブツリーで継続される。次のレベルのマッパが、キー210b−cの次の部分
および次のレベルのサーチの結果得られるサブツリーセレクトに依存する値に対
してサーチされる。処理はステップ1348へ進む。
ーチが要求されるか否かが判定される。現在のサーチの結果得られるエントリは
、ルートエントリ302、ノーエントリ300(図4)またはサブツリーエント
リ記述子304(図4)を記憶し得る。このエントリがサブツリーエントリ記述
子304(図4)を記憶していれば、さらなるサーチが必要であり、処理はステ
ップ1346へ進む。このエントリがサブツリーエントリ記述子304(図4)
を記憶していなければ、処理はステップ1350へ進む。
)を記憶していれば、処理はステップ1352へ進む。そうでなければ、このエ
ントリは別のルックアップテーブルに記憶されている。処理が完了する。
ーブルに記憶されている。この有効な値は、キーに対応するルートインデックス
102(図3)として転送される。処理が完了する。
デックスのアクセスを、256のノードサブツリーにおいて各ノードに1つずつ
提供する。これらのルートインデックスはサブツリーマッパ418(図5)にお
けるマッパエントリ5041−504nに記憶される。サブツリーマッパ418(
図5)内のマッパエントリ504(図6B)に対するマッパアドレス416は、
データフィールド406に記憶された稠密サブツリー記述子と、サブツリーエン
トリ404内のポインタフィールド408に記憶されたサブツリーポインタとに
依存して決定される。稠密サブツリー記述子の形式については図6A−6Bに関
連して既に説明した。稠密サブツリー記述子は、256のノードサブツリーにお
ける各ノードに対してノードビット502(図6B)を記憶する。しかしながら
、すべてのサブツリーが、256個のノードの各々に対してある別個のルートイ
ンデックスを有する。たとえば、1つのサブツリーは1つのルートインデックス
のみを有し得る。
図4)によってインデックス付けされた第2のマッパレベル112bにおける疎
サブツリーAおよび稠密サブツリーBのバイナリツリーを表わした図である。マ
ッパ106a内のs1に対するサブツリーエントリ記述子304(図4)はサブ
ツリーAのサブツリーエントリ404に対するサブツリーインデックス312を
記憶する。マッパ106a内のs0に対するサブツリーエントリ記述子304(
図4)は、サブツリーBのサブツリーエントリ404に対するサブツリーインデ
ックス312を記憶する。
らr16と、6個のサブツリーエントリ、すなわちs2からs7を有する。サブ
ツリーBに対してルートエントリ302(図4)とサブツリーエントリ304(
図4)とを記憶するマッパエントリ504(図6B)に対応するマッパアドレス
416は、図6Bに関連して既に述べたように、稠密サブツリー記述子において
コード化される。
びr2を記憶する。これらが稠密サブツリー記述子に記憶されていれば、サブツ
リーエントリ404全体を用いてマッパエントリ504(図6B)に対する3つ
のマッパアドレス416、すなわちr0、r1およびr2が提供される。
記述子のうちの1つにある疎サブツリーをコード化し、サブツリーエントリ40
4内の稠密サブツリー記述子にある密に配置されたサブツリーをコード化するこ
とによって、増加し得る。
し、サブツリーエントリ404内のデータフィールド406は、図6A−6Bに
関して述べたように、稠密サブツリー記述子を記憶する。疎に配置されたサブツ
リーは15以下のマッパエントリ504(図6B)を有し、サブツリーエントリ
404内のデータフィールドは複数の疎サブツリー記述子を記憶する。疎に配置
されたサブツリーを疎サブツリー記述子に記憶する能力を与えることにより、サ
ブツリーメモリ400により多くのサブツリーを記憶することができ、よって、
ルックアップテーブル200中により多くのルートエントリを記憶することがで
きる。
406およびポインタフィールド408と、図4に示すサブツリーエントリ記述
子304(図4)とを、サブツリーエントリ404内に複数の疎サブツリー記述
子を記憶できるよう変形した例を表わす。
内のデータフィールド406は、図6Bに関連して述べたサブツリーの各ノード
ごとに1ビットを有する稠密サブツリー記述子の代わりに、複数の疎サブツリー
記述子14001−1400nを含む。疎サブツリー記述子14001−1400n の各々は、ノード記述子14021−1402nを含む。ノード記述子14021
−1402nは、サブツリーにおいて完全に符号化されたルートを表わす9ビッ
トの値である。ノード記述子14021−1402nは、サブツリー内の単一のノ
ードまたは複数のノードを表わす。
ドフィールド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の構成を表わす。
ド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)。
フィールド406内のビット数を疎サブツリー記述子14001−1400n内の
ビット数で除することにより、算出される。モード4について、データフィール
ド406内のビット数は256であり、疎サブツリー記述子内のビット数は63
である。したがって、疎サブツリー記述子14001−1400nの数は4である
(int(256/63)=4)。
、各サブツリーごとのノードの数に各サブツリーエントリ404ごとのサブツリ
ーの数を乗じたものである。モード4について計算すると、サブツリーエントリ
404ごとのノード記述子1402の総数は、疎サブツリー記述子14001−
1400nに記憶されたノード記述子14021−1402nが7個ある場合は2
8であり(7*4=28)、疎サブツリー記述子14001−1400nごとのノ
ード記述子1402が5個ある場合は20である(5*4=20)。
エントリ504(図6B)がいくつサブツリーエントリ404によって使用され
ているかが示される。マッパの値は、サブツリーごとのノードを1ずつ増分し、
かつ疎サブツリー記述子のサブツリーの数で乗じることにより、算出される。サ
ブツリーのデフォルトエントリを記憶するためには各サブツリーごとのノードの
数より1以上多いマッパエントリが要求されるので、サブツリーごとのノードは
1ずつ増分される。
ード記述子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が提供される。
404は、図6Bに関連して述べたようなデンス(稠密)モードで、またはスパ
ース(疎)モードで構成され得る。デンスモードについて図4に関して述べたサ
ブツリーマッパ418(図5)に記憶されるサブツリーエントリ記述子304(
図4)は、サブツリーエントリ404がデンスモードでコード化されるかまたは
スパースモードでコード化されるかの指示を提供することによりスパースモード
を可能にするよう変更される。この指示(indicator)は、タイプフィールド1
406により提供される。
モードまたはスパースモードかのいずれで構成されているかが示される。サブツ
リーエントリ404がスパースモードで構成されている場合、スパースサブツリ
ー記述子セレクトフィールド1408に記憶された値とサブツリーインデックス
314とが用いられて、スパースサブツリー記述子1400が選択される。スパ
ースサブツリー記述子セレクト1408については、図16を参照して後により
詳細に説明する。
504(図6B)を選択するようにブロックオフセット714を与えるための、
図8に示すオフセット論理700のスパースモード論理1502を表わす。スパ
ースモード論理1502は、サブツリーエントリ404中の疎サブツリー記述子
1400に記憶されたノード記述子1402に依存して、ブロックオフセット7
14を与える。オフセット論理700はまた、デンスモード論理1500も含む
。デンスモード論理1500は、密に配置されたサブツリーにおけるルートに対
してブロックオフセット714を与えるためのノードセレクト706および1カ
ウント論理708を含む。デンスモード論理1500については、図8に関連し
て既に説明した。
ドで構成されていると示す場合、サブツリーエントリ404からのサブツリーデ
ータ412はスパースモード論理1502へ転送される。スパースモードサブツ
リー論理1502については図18に関連して説明する。
02を表わす。スパースモード論理1502は、サブツリーセレクト論理160
0、マルチプレクサ1602、連想メモリ(「CAM」)1606および変換論
理1604を含む。選択されたサブツリーエントリ404内のデータフィールド
406に記憶された疎サブツリー記述子14001−1400nは、サブツリーデ
ータ412上でオフセット論理700へ転送される。オフセット論理700は疎
サブツリー記述子14001−1400nをスパースモード論理1502における
マルチプレクサ1602へ転送する。サブツリーデータ412中の疎サブツリー
記述子14001のうちの1つが、サブツリーセレクト論理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へ転送される。
たはデンスモードで構成され得る。スパースモードで構成された各サブツリーエ
ントリ404は、モード1404を介して疎サブツリー記述子1400ごとに異
なる数のノード記述子1402を記憶するよう構成され得る。スパースモードで
構成されたサブツリーエントリ404内の疎サブツリー記述子1400はすべて
、疎サブツリー記述子1400ごとに同数のノード記述子1402を記憶する。
ド化され得る。ノード記述子1402によって表わされる複数の8ビットノード
は、8ビットのうちのいくつかをマスキングすることにより識別される。マスク
ビットを各ノード記述子1402で記憶する代わりに、9個のビットノード記述
子1402を用いてノード記述子1402が表わす8ビット幅のノードを完全に
符号化する。この8ビット幅のノードは、ランビットレングス符号化を用いて9
ビット幅のノード記述子1402において符号化される。ランビットレングス符
号化により、そのノードの8ビットのうちのいずれがマスキングされるかが識別
できるようになる。
ビット幅のノード記述子14021−1402nを、「X」(ドントケア)にセッ
トされたビットを含む8ビットのCAM値1612へ変換し、この8ビットのC
AM値1612をCAM1606へロードする。9ビットのノード記述子140
2を変換論理1604により8ビットのCAM値1612へ変換する例を以下の
表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ビット値の次の各ビットへと直接コピーされる。
は「100100000」である。変換論理1604は、最初の「1」について
この9ビットコードを右から左へサーチすることにより、この9ビットコードを
変換する。5番目の数字が「1」を記憶している。この9ビットコードは、5つ
の最下位ビット(「LSB」)が「ドントケア」(「X」)にセットされた8ビ
ット値に変換される。9ビットのランビットレングス符号化を用いてノード記述
子1402を記憶することにより、各ノード記述子1402ごとに要求されるビ
ット数は最小になり、よって、ルックアップテーブル200中に記憶され得るノ
ード記述子1402の数が増加する。
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をエミュレートするハードウェア回路で実現され得る。
ブツリー記述子1400が記憶されるサブツリーエントリ404を決定する。特
定のモードの範囲内のノード記述子1402を記憶する疎サブツリー記述子14
00は、同じサブツリーエントリ404に記憶される。各サブツリーのデフォル
トルートに対して、デフォルトマッパアドレスが算出される。デフォルトの8ビ
ット値は、CAM1606内の第1の場所に永久に記憶され、デフォルトマッパ
アドレスを算出する。
ードされた後、CAM1606はキー210bの次の部分でサーチされる。キー
210bの次の部分において最大数のビットに一致するCAM1606内のエン
トリが選択される。CAMのサーチの結果得られた一致アドレスは、ブロックオ
フセット714として転送される。ブロックオフセット714を用いて、サブツ
リーマッパ418(図5)に記憶されたルートに対応するマッパエントリのマッ
パアドレス416が決定される。
ブロックオフセット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」にセットされる。
ードに対応し、r1は010XXXXXに一致するすべてのノードに対応する。
各ノード記述子14021および14022により要求されるビット数を最小にし
て疎サブツリー記述子1400中の各ルートを記述するために、ノード記述子1
4021および14022は、ランビットレングス符号化を用いてコード化される
。コード化の方法は、そのノードを完全に符号化するのに用いられるビット数よ
り1ビット多いものを用いる。最初の「X」(「ドントケア」)の場所に「1」
が挿入され、残りのXは0としてコード化される。すなわち、ルート10XXX
XXXは10100000に翻訳され、010XXXXXは010100000
に翻訳される。
14022の記憶部を表わす。ノード記述子14021および14022はサブツ
リーエントリ404に記憶され、モードフィールド1404は「1」にセットさ
れる。これは、疎サブツリー記述子1400に記憶された2つのノード記述子1
4021および14022があるからである。サブツリーの最長一致はr1である
。なぜなら、r1は最初の3ビットの一致を要求し、r2は最初の2ビットの一
致を要求するからである。ノード記述子14021および14022は疎サブツリ
ー記述子1400において最短一致から最長一致の順序で記憶され、最初にr2
のノード記述子14021が記憶されて次にr1のノード記述子14022が次に
記憶される。
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
04に記憶される。ノード記述子のビット17085に記憶された「0」は「X」
に変換され、8ビットのマスキングされた値のビット17105に記憶される。
ノード記述子のビット17086に記憶された「1」は無視される。ノード記述
子のビット17087に記憶された「0」は8ビットのマスキングされた値のビ
ット17106に記憶される。ノード記述子のビット17088に記憶された「1
」は8ビットのマスキングされた値のビット17107に記憶される。ノード記
述子のビット17089に記憶された「0」は8ビットのマスキングされた値の
ビット17108に記憶される。
憶部と、選択された疎サブツリー記述子1400に対してサブツリーマッパ41
8(図5)に記憶された対応のマッパエントリ5041−5043とを表わす。選
択されたサブツリー記述子1400に記憶された9ビットのノード記述子140
21および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に記憶される。
れる。このブロックオフセット714は、サブツリーマッパ418(図5)に記
憶されたマッパエントリ5041−5043のマッパアドレス416を決定するの
に用いられる。CAM1606は、最長一致を記憶するエントリ1702、17
04および1706についてキー210bの第2の部分でサーチされる。CAM
1606により提供されたブロックオフセット714は、選択されたサブツリー
エントリ404内のポインタフィールド408に記憶されたブロックベースアド
レス6001、6001のうちの1つに依存するサブツリーベースアドレスと組合
される。
論理1800を表わすブロック図である。ポインタロジック702は、サブツリ
ーマッパ418(図5)内のマッパエントリ504(図6B)のマッパアドレス
416を算出するのに用いられるベースアドレス716を選択する。ポインタ論
理702はデンスモードベースセレクト論理710およびスパースモードベース
セレクト論理1800を含み、それらのうちの1つが、前のマッパレベルから転
送された、サブツリーエントリ記述子304(図4)に記憶されたタイプ140
6の状態に依存して、選択される。既に述べたように、タイプ1406の状態は
、サブツリーエントリ404がデンスモードで構成されるか否かを示す。
複数の疎サブツリー記述子1400を記憶していれば、疎サブツリー記述子14
00のベースアドレス716を算出する。スパースモードベースセレクト論理1
800は、モードフィールド1404に記憶されたモード値1608と、サブツ
リーエントリ404内のブロックベースアドレスフィールド6001および60
02に記憶されたサブツリーポインタ414と、前のマッパレベルから転送され
たサブツリーエントリ記述子304(図4)に記憶された疎サブツリー記述子セ
レクト1408とを用いて、ベースアドレス716を算出する。ベースアドレス
716は以下のように算出される。
オフセット ここでベースオフセット=((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つ
のサブツリーの各々についてのサブツリーベースアドレスを表わす。
疎サブツリー記述子を表わす。図21は図15と関連して説明する。サブツリー
B(図21)の稠密サブツリー記述子がサブツリーエントリ4041内のデータ
フィールド4061に記憶される。サブツリーA(図21)の疎サブツリー記述
子14001は、サブツリーエントリ4042内のデータフィールド4062に記
憶される。稠密サブツリー記述子は、図6Bに関連して既に述べたように、サブ
ツリーBの最下レベルにおいて各ノードに対してノードビットを記憶する。スパ
ースモード記述子14001は、図19Bに関連して既に述べたように、ルート
r4およびr5に対応するノード記述子14021および14022を含む。サブ
ツリーインデックス312はサブツリーエントリ4041および4042を選択す
る。
リーエントリ記述子304(図4)に記憶されたサブツリーインデックス312
がサブツリーエントリ4041を選択する。s1(図15)に対するマッパ10
6a内のマッパエントリ504(図6B)におけるサブツリーエントリ記述子3
04(図4)に記憶されたサブツリーインデックス312は、サブツリーエント
リ4042を選択する。このように、サブツリーメモリ400は、疎サブツリー
および稠密サブツリーに対してサブツリーエントリ4041および4042を記憶
し得る。
るあるノードに対するルートを記憶するサブツリーマッパ418(図5)内のマ
ッパエントリ504(図6B)についてのマッパアドレス416(図5)を提供
するための方法を図示するフローチャートである。いずれのサブツリーエントリ
404も、複数の疎サブツリー記述子または単一の稠密サブツリー記述子を記憶
し得る。バイナリツリー内でルートがいかに分散されるかに依存して、疎サブツ
リー記述子と密サブツリー記述子とのいかなる組合せも可能である。サブツリー
メモリ400内のサブツリーエントリ404でスパースモードと稠密サブツリー
記述子とを混合させ一致させる柔軟性により、サブツリーメモリ400をより有
用化することが可能になる。
前のマッパレベルで選択されたサブツリーエントリ記述子304(図4)に記憶
されたタイプ1406(図16C)の状態から決定される。サブツリーエントリ
404タイプがスパースモードで構成される場合、処理はステップ1902へ進
む。そうでなければ、処理はステップ1914へ進む。
成される。スパースモードで構成されるサブツリーエントリ404は、複数の疎
サブツリー記述子1400を記憶する。サブツリーエントリ404に記憶された
疎サブツリー記述子1400の数は、モードフィールド1404の状態に依存す
る。オフセット論理700におけるスパースモード論理1502により、図14
に関連して前に述べたように前のマッパレベルから転送されたサブツリーエント
リ記述子304(図4)に記憶された疎サブツリー記述子セレクト1408とモ
ードフィールド1404の内容とに依存して、サブツリーエントリ404から疎
サブツリー記述子1400が選択される。処理はステップ1904へ進む。
ド記述子1402に記憶された9ビットコード化された値は8ビット値に変換さ
れ、最短一致から最長一致の順序で、CAM1606に記憶される。処理はステ
ップ1906へ進む。
エントリについてキー210bの次の部分でサーチされる。処理はステップ19
08へ進む。
AM1606における場所のアドレスが、ブロックオフセット714として転送
される。ブロックオフセット714を用いて、サブツリーマッパ418(図5)
内のマッパエントリ504(図6B)のマッパアドレス416(図5)が算出さ
れる。処理はステップ1910へ進む。
アドレス716(図20)は、前のマッパレベルから転送されたサブツリーエン
トリ記述子304(図4)に記憶された疎サブツリー記述子セレクト1408と
、選択されたサブツリーエントリ404に記憶されたモードフィールド1404
の内容とに依存して、算出される。処理はステップ1912へ進む。
8)内でブロックオフセット714とベースアドレス716とを加算することに
より算出される。サブツリーマッパ418(図5)内のマッパアドレス416に
より識別されたマッパエントリ504(図6B)は、ルートエントリ302(図
4)またはサブツリーエントリ記述子304(図4)のいずれかを記憶する。マ
ッパエントリ504(図6B)がルートエントリ302(図4)を記憶する場合
、サーチは完了する。マッパエントリ504(図6B)がサブツリーエントリ記
述子304(図4)を記憶する場合、キー210に対応する値のサーチが次のマ
ッパレベルにおいて継続される。
され、データフィールド406に単一の稠密サブツリー記述子を記憶する。ブロ
ックオフセット714は、図6Bに関連して前述したように、サブツリーエント
リ404内のデータフィールド406に記憶された稠密サブツリー記述子に記憶
された「1」の数をカウントすることにより、算出される。処理はステップ19
16へ進む。
リ404内のポインタフィールド408に16個のブロックベースアドレス60
0を記憶する。ブロックベースポインタ600のうちの1つが、図8と関連して
前述したポインタ論理702におけるデンスモードベースセレクト論理710に
より選択される。処理はステップ1912へ進む。
ツリーを表わす図である。このバイナリツリーは、マッパレベル_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で継続できるようにする。
で、疎サブツリーである。したがって、ノードr6およびh1のノード記述子1
402(図16A)は、図14Aに関連して既に述べたように、疎サブツリー記
述子1400に記憶される。サブツリーB2 2006の疎サブツリー記述子1
400はサブツリーエントリ404に記憶され、サブツリーメモリ400におい
てモードフィールド1404は1にセットされる。これは、疎サブツリー記述子
1400に記憶されたノード記述子1402が2つあるためである。
200に追加されることになる。新たなルートh1をルックアップテーブル内の
サブツリーB2 2006に直接追加することはできない。なぜなら、サブツリ
ーB2 2006に対するルートを追加することにより、疎サブツリー記述子1
400に記憶されたノード記述子1402の数が2から3へ増加するからである
。疎サブツリー記述子1400へノード記述子1402を追加するとモードフィ
ールド1404が「2」にセットされたサブツリーエントリ404において新た
な疎サブツリー記述子1400を割当てる必要が生じる。すなわち、新たなルー
トh1の追加により、サブツリーB22006をサブツリーB2′2008で置き
換える必要が生じる。
クアップテーブル200に記憶されたバイナリツリーのコピーもまた、ルックア
ップテーブル200とは別のプロセッサメモリ2400に記憶される。サブツリ
ーB2 2006について記憶されたルートはプロセッサメモリ2400内のサ
ブツリーB2′2008にコピーされ、新たなルートh2がサブツリーB2′20
08に追加される。
してサブツリーB2′2008をルックアップテーブル200に追加し、ルート
更新2404をテーブル更新ルーチン2406へ転送する。テーブル更新ルーチ
ン2406はルート更新2402に対してテーブル更新2410を生成し、更新
サイクル2412を転送し、ルックアップテーブル200をルート更新2404
で更新する。更新サイクル2412は、サブツリーマッパ418(図5)および
サブツリーメモリ400(図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の数に
関連する。
ブル200中のサブツリーメモリ400のサブツリーエントリ404に記憶され
た後、s5で表わされるサブツリーエントリ記述子304(図4)は、サブツリ
ーB22006の代わりにサブツリーB2′2008を指すように変更される。サ
ブツリーB2′2008がルックアップテーブルに追加される一方、サブツリー
B2 2006に記憶されたルートr6およびh1はs5を介してアクセスされ
得る。サブツリーB2′2008がルックアップテーブルに記憶された後、s5
は、サブツリーB2′2008およびルートr6を指すように変更され、新たな
ルートh2がアクセスされ得る。したがって、サブツリーB2 2006の、ル
ートr6およびh1に対応するルートインデックスについてのサーチを継続する
ことができ、一方、新たなルートh2はルックアップテーブル200に追加され
る。
るマッパエントリ504c4に記憶された、図23に示す新たなルートh2を表
わす。図25は、図24に示すバイナリツリーの図に関連して説明する。
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に対するサーチを開始する。
もまた疎サブツリーである。ノード記述子1402b1−1402b2は、サブツ
リーメモリ400b内のサブツリーエントリ404bにおける疎サブツリー記述
子1400b1に記憶される。サブツリーB2内の各ルートは、マッパエントリ5
04b2−504b3に記憶され、サブツリーB2のデフォルトルートがマッパエ
ントリ504b1に記憶される。
5についてノード記述子1402を記憶する疎サブツリー記述子1400aを記
憶しているサブツリーエントリ404aのアドレスが、サブツリーインデックス
312a上でサブツリーメモリ400aへ転送される。選択されたサブツリーエ
ントリ404aに記憶されたデータフィールド406およびポインタフィールド
408は、サブツリーデータ412aおよびサブツリーポインタ414a上でマ
ッパアドレス論理402aへ転送される。マッパアドレス論理402aは、s5
についてサブツリーエントリを記憶しているマッパエントリ504a4のマッパ
アドレス416aを生成する。マッパアドレス416aは、サブツリーデータ4
12a、サブツリーポインタ414aおよびキー210bの次の部分に依存する
。s5のサブツリーエントリは、サブツリーインデックス312b上でサブツリ
ーメモリ400bへ転送される。
子1402b2および1402b1を記憶する。B2についての疎サブツリー記述
子1400b1がサブツリーエントリ404bに記憶される。サブツリーエント
リ404bに記憶されたデータフィールド406およびポインタフィールド40
8は、サブツリーデータ412bおよびサブツリーポインタ414b上でマッパ
アドレス論理402bへ転送される。マッパアドレス論理402bは、h1につ
いてルートエントリを記憶しているマッパエントリ504b3のマッパアドレス
416bを生成する。マッパアドレス416bは、サブツリーデータ412b、
サブツリーポインタ414bおよびキー210cの次の部分に依存している。
パ418b内のこれまでに未使用のマッパエントリ602bのブロックが割当て
られ、サブツリーB2′2008についてルートr6、h1およびh2を記憶し
ているマッパエントリ504c2−504c4を記憶する。マッパエントリ504
c1は、サブツリーB2′2008のデフォルトエントリ、すなわち、マッパエン
トリ504b1に記憶されたものと同じ値を記憶する。マッパエントリ504c2 はルートr6のルートエントリ、すなわちマッパエントリ504b2に記憶され
たものと同じ値を記憶する。マッパエントリ504c3はルートh1のルートエ
ントリ、すなわちマッパエントリ504b3に記憶されたものと同じ値を記憶す
る。マッパエントリ504c4は、新たなルートh2に対するルートエントリを
記憶する。マッパエントリ504c1-4のブロックが書込まれている間に、マッ
パエントリ504b1−504b3に記憶されたルートエントリは、サブツリーマ
ッパ418a内の504a4にルートs5について記憶されたサブツリーエント
リを介して、アクセスされ得る。
ントリ504c1-4が記憶されており、疎サブツリー記述子1400c1がサブツ
リーメモリ400bに追加される。ノード記述子1402c1-3の数は16未満
であるので、ノード記述子1402c1-3は疎サブツリー記述子1400c1に記
憶される。サブツリーメモリ400b内のサブツリー記述子14001の場所は
、疎サブツリー記述子1400c1に関連付けられるノード記述子1402c1-3 の数に依存する。サブツリーB2 2006に新たなルートを追加することによ
り、疎サブツリー記述子1400c1に対して記憶されるノード記述子1402
c1−1402c3の数は2から3へ増加する。疎サブツリー記述子1400c1
はサブツリーエントリ404cに記憶され、各疎サブツリー記述子ごとに3つの
ノード記述子があり、モードフィールド1404は「2」にセットされる。疎サ
ブツリー記述子1400c1は、利用可能なスペースがあれば現在のモード3サ
ブツリーエントリ404cに記憶されるか、または新たなモード3サブツリーエ
ントリが割当てられる。B2′2008内のルートについてのノード記述子は、
モード3サブツリーエントリ404cの疎サブツリー記述子1400c1におけ
るノード記述子1402c1-3に記憶される。
ーメモリ400bに記憶された後、サブツリーB2′2008がアクセスされ得
る。B2′2008にアクセスを提供するために、サブツリーエントリ504a4 は、サブツリーエントリ404b内の疎サブツリー記述子1400b1の代わり
にサブツリーエントリ404c内の疎サブツリー記述子1400c1をインデッ
クス付けするよう変更される。マッパエントリ504c4に記憶されたルートh
2についてのルートエントリならびにそれぞれのマッパエントリ504c2およ
び504c3に記憶されたルートr6およびh1がアクセスされ得る。
当解除され、将来の割当のためにフリーリスト(図示せず)上に置かれる。また
疎サブツリー記述子1400b1ももはやアクセス不可能である。こうして、疎
サブツリー記述子1400b1は割当解除され、将来の割当のためにフリーリス
ト(図示せず)に置かれる。
当てられたサブツリーエントリ404に新たな稠密サブツリー記述子を記憶し、
対応のマッパエントリをサブツリーマッパ418に記憶することにより、また、
マッパエントリ504a4に記憶されたサブツリーエントリを新たに割当てられ
たサブツリーエントリ404のインデックス付けを行なうように変更することに
より、追加することもできる。
ためにインクリメンタルな更新を行なうためのステップを表わすフローチャート
である。
更新結果が疎サブツリーであるか稠密サブツリーであるかが判定される。ルート
更新後のサブツリーが稠密であれば、処理はステップ2218へ進む。ルート更
新後のサブツリーが疎であれば、処理はステップ2202へ進む。
定される。処理は2204へ進む。
分的にフルにされたサブツリーエントリ404のリストがサーチされ、新たな疎
サブツリー記述子1400c1が前に割当てられたサブツリーエントリ404に
記憶され得るか否かが判定される。たとえば、4つの疎サブツリー記述子140
0c1−1400c4がモード4サブツリーエントリ404に記憶され得る。3つ
のみが記憶される場合、サブツリーエントリ404は部分的にフルにされており
、部分的に満たされたサブツリーエントリ404のリストに記憶される。部分的
にフルなサブツリーエントリ404が利用可能であれば、処理はステップ220
8へ進む。そうでなければ、処理はステップ2206へ進む。
ー記述子1400c1を記憶するために割当てられ、マッパエントリ504c1−
504c4が、新たに割当てられたサブツリーエントリ404c内の疎サブツリ
ー記述子1400c1に記憶されたノード記述子1402c1−1402c3のマ
ッパエントリ504(図6B)を記憶するために、サブツリーマッパに割当てら
れる。サブツリーマッパ418(図5)内のマッパエントリ504c1−504
c4の割当てられたブロックに対するポインタは、新たなサブツリーエントリ4
04c内のポインタフィールド408に記憶される。処理はステップ2208へ
進む。
リーマッパ内の第1のマッパエントリ504c1の場所が、サブツリーエントリ
404c内のポインタフィールド408に記憶されたポインタおよびサブツリー
エントリ404c内のモードフィールド1404に記憶されたモードから判定さ
れる。処理はステップ2210へ進む。
ッパ418b内のマッパエントリ504c1−504c4に記憶される。処理はス
テップ2212へ進む。
ている疎サブツリー記述子1400c1がサブツリーエントリ404cに記憶さ
れる。処理はステップ2214へ進む。
ーエントリ記述子304(図4)は、サブツリーエントリ404cに記憶された
新たな疎サブツリー記述子1400c1のインデックス付けを行なうよう変更さ
れる。マッパエントリ504c4に記憶されたh2のルートエントリがここでア
クセス可能にある。処理はステップ2216へ進む。
ブツリー記述子1400bはもはやアクセス不可能である。マッパエントリ50
4b1−504b3は、サブツリーマッパ418bのマッパエントリ504(図6
B)のフリーリストに置かれ、他のルートを記憶するために割当てられ得る。サ
ブツリーエントリ404b内の第1の利用可能な場所は、部分的にフルなサブツ
リーエントリのリストにおいて更新される。処理が完了する。
モリ2400(図24)に記憶されたフリーのサブツリーエントリ404のリス
トから割当てられる。この新たなサブツリーエントリ404は、新たな稠密サブ
ツリー記述子を記憶するために割当てられる。サブツリーマッパ418bにおけ
るマッパエントリ504(図6B)のブロックが、ルートを記憶するために割当
てられる。割当てられたマッパエントリ504(図6B)のブロックに対するポ
インタは、サブツリーエントリ404(図5)内のポインタフィールド408(
図7)に記憶される。処理はステップ2220へ進む。
Bに関連して前述したように、新たなサブツリーエントリ404内のデータフィ
ールド406に書込まれる。処理はステップ2222へ進む。
エントリ404内のポインタフィールド408に記憶されたポインタにより識別
されたサブツリーマッパ418(図5)内のマッパエントリ504(図6B)に
記憶される。処理はステップ2224へ進む。
ーエントリ記述子304(図4)は、新たなサブツリーエントリ404cに記憶
された新たな稠密サブツリー記述子をインデックス付けするよう変更される。マ
ッパエントリ504c4に記憶されたh2に対するルートエントリがここでアク
セス可能になる。処理はステップ2226へ進む。
ールド408に記憶されたポインタによりインデックス付けされたマッパエント
リ504(図6B)は、プロセッサメモリ2400(図24)に記憶されたマッ
パエントリのフリーリストへ戻される。この古いサブツリーエントリ404bは
、プロセッサメモリ2400(図24)に記憶されたサブツリーエントリのフリ
ーリストに追加される。
ルックアップテーブルから削除するためにも同様の処理が行なわれる。たとえば
、h2 504c4をサブツリーB2′から削除するためには、ルートr6および
h1の2つのノード記述子を有する新たな疎サブツリー記述子を記憶し、モード
2サブツリーエントリに疎サブツリー記述子を記憶し、対応のサブツリーマッパ
を更新し、マッパエントリ504a4に記憶されたサブツリーエントリ記述子3
04(図4)を、新たなサブツリーエントリ404に記憶された更新されたサブ
ツリー記述子のインデックス付けを行なうよう変更する必要がある。
業者には、前掲の請求項に包含される本発明の範囲から離れることなく、形式お
よび内容の点で種々の変更をなすことができることがわかるであろう。
プを示す図である。
ルを示す図である。
ーブルを示す図である。
ンデックスのバイナリツリー表示を示す図である。
ックスルックアップテーブルを示す図である。
ッパエントリのタイプを示す図である。
するマッパを示す図である。
る、図5に示されたデータフィールドに記憶される稠密サブツリー記述子を示す
図である。
の図である。
示す図である。
めに深度拡張を与えるための別の実施例を示す図である。
を示す図である。
のマッパエントリの中の、図2Bに示されたルートインデックスのバイナリツリ
ー表示のノードの分布のバイナリツリー表示を示す図である。
のマッパエントリの中の、図2Bに示されたルートインデックスのバイナリツリ
ー表示のノードの分布のバイナリツリー表示を示す図である。
マッパエントリの中に値を分散するための方法を図示するフローチャートの図で
ある。
のうち1つに記憶されるサーチキーに対応する値をサーチするための方法を図示
するフローチャートの図である。
のうち1つに記憶されるサーチキーに対応する値をサーチするための方法を図示
するフローチャートの図である。
ッパレベル中の疎らなサブツリーおよび稠密なサブツリーのバイナリツリー表示
を示す図である。
ブツリーエントリのデータフィールドおよびポインタフィールドに対して変更を
加えて、サブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能
にするのを示す図である。
ブツリーエントリのデータフィールドおよびポインタフィールドに対する変更を
加えてサブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能に
するのを示す図である。
ブツリーエントリのデータフィールドおよびポインタフィールドに対する変更を
加えてサブツリーエントリ中への複数の疎らなサブツリー記述子の記憶を可能に
するのを示す図である。
ットを選択するための、図8に示されたオフセット論理中のスパースモードサブ
ツリー論理を示す図である。
図である。
セットの選択を示す図である。
セットの選択を示す図である。
セットの選択を示す図である。
セットの選択を示す図である。
ト論理を示すブロック図である。
疎サブツリー記述子を示す図である。
ノードに対してルートを記憶するサブツリーマッパ中のマッパエントリに対して
マッパアドレスを与えるための方法を図示するフローチャートの図である。
リー表示を示す図である。
ルートを示す図である。
るためのステップを図示するフローチャートの図である。
Claims (48)
- 【請求項1】 サーチリクエストにおいて与えられるキーの第1の部分によ
ってインデックス付けされた複数個の第1のメモリ場所を含む第1レベルのマッ
パと、 第1のメモリ場所のインデックス付けされた1つに記憶される第1のサブツリ
ーセレクトおよびキーの第2の部分に依存してインデックス付けされた複数個の
第2のメモリ場所を含む第2レベルのマッパとを含み、ルックアップテーブルに
対して発行された単一のサーチリクエストの結果、マッパの1つの場所に記憶さ
れる、キーに対応する値が得られる、ルックアップテーブル。 - 【請求項2】 第2のレベルのマッパはさらに、 第1のサブツリーセレクトによってインデックス付けされたサブツリー記述子
を記憶するサブツリーメモリと、 第2のメモリ場所を含むサブツリーマッパと、 選択されたサブツリー記述子およびキーの第2の部分に依存してサブツリーマ
ッパに対するマッパインデックスを与えるマッパアドレス論理とを含む、請求項
1に記載のルックアップテーブル。 - 【請求項3】 サブツリー記述子はさらに、 サブツリーのためのデフォルト値と、 ビットマップとを含み、前記ビットマップは、サブツリーにおける各可能なノ
ードごとに1ビットを含み、さらに、 複数個のブロックポインタを含み、各ブロックポインタは、値を記憶するため
の第2のメモリ場所のブロックのベースアドレスを記憶する、請求項2に記載の
ルックアップテーブル。 - 【請求項4】 「0」にセットされた、ノードに対応するビットマップ中の
1ビットは、ノードが前のノードと値を共有することを示す、請求項3に記載の
ルックアップテーブル。 - 【請求項5】 第2のメモリ場所のためのインデックスは、ノードに対応す
るビットより前にビットマップに記憶された「1」の数に依存する、請求項3に
記載のルックアップテーブル。 - 【請求項6】 サブツリーのためのマッパに記憶された値の数は、ビットマ
ップに記憶された「1」の数に依存する、請求項5に記載のルックアップテーブ
ル。 - 【請求項7】 ブロックは、16個の第2のメモリ場所を含む、請求項3に
記載のルックアップテーブル。 - 【請求項8】 可能なノードの数は、256個である、請求項3に記載のル
ックアップテーブル。 - 【請求項9】 第2のメモリ場所の1つに記憶される第2のサブツリーセレ
クトおよびキーの第3の部分に依存してインデックス付けされた複数個の第3の
メモリ場所を含む第3レベルのマッパをさらに含む、請求項1に記載のルックア
ップテーブル。 - 【請求項10】 第3のメモリ場所の1つに記憶される第3のサブツリーセ
レクトおよびキーの第4の部分に依存してインデックス付けされた複数個の第4
のメモリ場所を含む第4レベルのマッパをさらに含む、請求項9に記載のルック
アップテーブル。 - 【請求項11】 キーは32ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
る、請求項9に記載のルックアップテーブル。 - 【請求項12】 キーは40ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
り、キーの第4の部分は8ビットである、請求項10に記載のルックアップテー
ブル。 - 【請求項13】 サーチリクエストにおいて与えられるキーの第1の部分で
第1レベルのマッパ中の第1の場所を選択するステップと、 インデックス付けされた第1の場所に記憶された第1のサブツリーセレクトを
検出すると、キーの第2の部分および第1のサブツリーセレクトに依存して第2
レベルのマッパ中の第2の場所を選択するステップと、 キーに対する単一のサーチリクエストに応答してマッパの1つの場所に記憶さ
れる、キーに対応する値を転送するステップとを含む、キーに対する最長プレフ
ィックス一致を与えるための方法。 - 【請求項14】 第2の場所を選択するステップはさらに、 サブツリーメモリにおいて第1のサブツリーセレクトによってインデックス付
けされたサブツリー記述子を選択するステップと、 選択されたサブツリー記述子およびキーの第2の部分に依存してサブツリーマ
ッパのためのマッパインデックスを判定するステップと、 マッパインデックスでサブツリーマッパ中の第2のメモリ場所を選択するステ
ップとを含む、請求項13に記載の方法。 - 【請求項15】 サブツリー記述子を選択するステップは、 サブツリーのためのデフォルト値を設けるステップと、 ビットマップを設けるステップとを含み、前記ビットマップは、サブツリーに
おける各可能なノードごとに1ビットを含み、さらに、 複数個のブロックポインタを設けるステップを含み、各ブロックポインタは、
第2のメモリ場所のブロックのベースアドレスを記憶する、請求項14に記載の
方法。 - 【請求項16】 「0」にセットされた、ノードに対応するビットマップ中
の1ビットは、ノードが前のノードと値を共有することを示す、請求項15に記
載の方法。 - 【請求項17】 第2のメモリ場所のためのインデックスは、ノードに対応
するビットより前にビットマップに記憶された「1」の数に依存する、請求項1
5に記載の方法。 - 【請求項18】 サブツリーのためのマッパに記憶された値の数は、ビット
マップに記憶された「1」の数に依存する、請求項17に記載の方法。 - 【請求項19】 ブロックは、16個の第2のメモリ場所を含む、請求項1
5に記載の方法。 - 【請求項20】 可能なノードの数は、256個である、請求項15に記載
の方法。 - 【請求項21】 第2の場所に記憶された第2のサブツリーセレクトを検出
すると、キーの第3の部分および第2のサブツリーセレクトに依存して第3レベ
ルのマッパ中の第3の場所を選択するステップをさらに含む、請求項13に記載
の方法。 - 【請求項22】 第3の場所に記憶された第3のサブツリーセレクトを検出
すると、キーの第4の部分および第3のサブツリーセレクトに依存して第4レベ
ルのマッパ中の第4の場所を選択するステップをさらに含む、請求項21に記載
の方法。 - 【請求項23】 キーは32ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
る、請求項21に記載の方法。 - 【請求項24】 キーは40ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
り、キーの第4の部分は8ビットである、請求項22に記載の方法。 - 【請求項25】 サーチリクエストにおいて与えられるキーの第1の部分に
よってインデックス付けされた複数個の第1のメモリ場所を含む第1レベルのマ
ッパと、 第1のメモリ場所のインデックス付けされた1つに記憶される第1のサブツリ
ーセレクトおよびキーの第2の部分に依存してインデックス付けされた複数個の
第2のメモリ場所を含む第2レベルのマッパと、 ルックアップテーブルに対して発行された単一のサーチリクエストからマッパ
の1つの場所に記憶されたキーに対応する値を転送するための手段とを含む、ル
ックアップテーブル。 - 【請求項26】 第2レベルのマッパはさらに、 第1のサブツリーセレクトによってインデックス付けされたサブツリー記述子
を記憶するサブツリーメモリと、 第2のメモリ場所を含むサブツリーマッパと、 選択されたサブツリー記述子およびキーの第2の部分に依存してサブツリーマ
ッパのためのマッパインデックスを与えるための手段とを含む、請求項25に記
載のルックアップテーブル。 - 【請求項27】 サブツリー記述子はさらに、 サブツリーのためのデフォルト値と、 ビットマップとを含み、前記ビットマップは、サブツリーにおける各可能なノ
ードごとに1ビットを含み、さらに、 複数個のブロックポインタを含み、各ブロックポインタは、第2のメモリ場所
のブロックのベースアドレスを記憶する、請求項26に記載のルックアップテー
ブル。 - 【請求項28】 「0」にセットされた、ノードに対応するビットマップ中
の1ビットは、ノードが前のノードと値を共有することを示す、請求項27に記
載のルックアップテーブル。 - 【請求項29】 第2のメモリ場所のためのインデックスは、ノードに対応
するビットより前にビットマップに記憶された「1」の数に依存する、請求項2
7に記載のルックアップテーブル。 - 【請求項30】 サブツリーのためのマップに記憶された値の数は、ビット
マップに記憶された「1」の数に依存する、請求項29に記載のルックアップテ
ーブル。 - 【請求項31】 ブロックは、16個の第2のメモリ場所を含む、請求項2
7に記載のルックアップテーブル。 - 【請求項32】 可能なノードの数は、256個である、請求項27に記載
のルックアップテーブル。 - 【請求項33】 第2のメモリ場所の1つに記憶された第2のサブツリーセ
レクトおよびキーの第3の部分に依存してインデックス付けされた複数個の第3
のメモリ場所を含む第3レベルのマッパをさらに含む、請求項25に記載のルッ
クアップテーブル。 - 【請求項34】 第3のメモリ場所の1つに記憶された第3のサブツリーセ
レクトおよびキーの第4の部分に依存してインデックス付けされた複数個の第4
のメモリ場所を含む第4レベルのマッパをさらに含む、請求項33に記載のルッ
クアップテーブル。 - 【請求項35】 キーは32ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
る、請求項33に記載のルックアップテーブル。 - 【請求項36】 キーは40ビットであり、キーの第1の部分は16ビット
であり、キーの第2の部分は8ビットであり、キーの第3の部分は8ビットであ
り、キーの第4の部分は8ビットである、請求項35に記載のルックアップテー
ブル。 - 【請求項37】 サーチリクエストにおいて与えられるIPアドレスの第1
の部分によってインデックス付けされた複数個の第1のメモリ場所を含む第1レ
ベルのマッパと、 第1のメモリ場所のインデックス付けされた1つに記憶された第1のサブツリ
ーセレクトおよびIPアドレスの第2の部分に依存してインデックス付けされた
複数個の第2のメモリ場所を含む第2レベルのマッパとを含み、ルックアップテ
ーブルに対して発行された単一のサーチリクエストの結果、マッパの1つの場所
に記憶される、IPアドレスに対応する最長プレフィックス一致が得られる、I
Pアドレスのための最長プレフィックス一致を与えるルックアップテーブル。 - 【請求項38】 第2レベルのマッパはさらに、 第1のサブツリーセレクトによってインデックス付けされたサブツリー記述子
を記憶するサブツリーメモリと、 第2のメモリ場所を含むサブツリーマッパと、 選択されたサブツリー記述子およびIPアドレスの第2の部分に依存してサブ
ツリーマッパのためのマッパインデックスを与えるマッパアドレス論理とを含む
、請求項37に記載のルックアップテーブル。 - 【請求項39】 サブツリー記述子はさらに、 サブツリーのためのデフォルト値と、 ビットマップとを含み、前記ビットマップは、サブツリーにおける各可能なノ
ードごとに1ビットを含み、さらに、 複数個のブロックポインタを含み、各ブロックポインタは、最長プレフィック
ス一致を記憶するための第2のメモリ場所のブロックのベースアドレスを記憶す
る、請求項38に記載のルックアップテーブル。 - 【請求項40】 「0」にセットされた、ノードに対応するビットマップ中
の1ビットは、ノードが前のノードとブロックポインタを共有することを示す、
請求項39に記載のルックアップテーブル。 - 【請求項41】 第2のメモリ場所のためのインデックスは、ノードに対応
するビットより前にビットマップに記憶された「1」の数に依存する、請求項3
9に記載のルックアップテーブル。 - 【請求項42】 サブツリーのためのマッパに記憶された値の数は、ビット
マップに記憶された「1」の数に依存する、請求項41に記載のルックアップテ
ーブル。 - 【請求項43】 ブロックは、16個の第2のメモリ場所を含む、請求項3
9に記載のルックアップテーブル。 - 【請求項44】 可能なノードの数は、256個である、請求項39に記載
のルックアップテーブル。 - 【請求項45】 第2のメモリ場所の1つに記憶された第2のサブツリーセ
レクトおよびIPアドレスの第3の部分に依存してインデックス付けされた複数
個の第3のメモリ場所を含む第3レベルのマッパをさらに含む、請求項37に記
載のルックアップテーブル。 - 【請求項46】 第3のメモリ場所の1つに記憶された第3のサブツリーセ
レクトおよびIPアドレスの第4の部分に依存してインデックス付けされた複数
個の第4のメモリ場所を含む第4レベルのマッパをさらに含む、請求項45に記
載のルックアップテーブル。 - 【請求項47】 IPアドレスは32ビットであり、IPアドレスの第1の
部分は16ビットであり、IPアドレスの第2の部分は8ビットであり、IPア
ドレスの第3の部分は8ビットである、請求項45に記載のルックアップテーブ
ル。 - 【請求項48】 IPアドレスは40ビットであり、IPアドレスの第1の
部分は16ビットであり、IPアドレスの第2の部分は8ビットであり、IPア
ドレスの第3の部分は8ビットであり、IPアドレスの第4の部分は8ビットで
ある、請求項46に記載のルックアップテーブル。
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/001442 WO2001043370A2 (en) | 1999-12-10 | 2000-12-08 | Method and apparatus for longest match address lookup |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003516666A true JP2003516666A (ja) | 2003-05-13 |
JP2003516666A5 JP2003516666A5 (ja) | 2008-01-24 |
Family
ID=26865861
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001542932A Expired - Lifetime JP4741134B2 (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
JP2001542982A Withdrawn JP2003516670A (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
JP2001542955A Pending JP2003516666A (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
JP2001542933A Expired - Lifetime JP4565793B2 (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001542932A Expired - Lifetime JP4741134B2 (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
JP2001542982A Withdrawn JP2003516670A (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001542933A Expired - Lifetime JP4565793B2 (ja) | 1999-12-10 | 2000-12-08 | 最長一致アドレスルックアップのための方法および装置 |
Country Status (10)
Country | Link |
---|---|
US (5) | US20010042130A1 (ja) |
EP (4) | EP1250778A2 (ja) |
JP (4) | JP4741134B2 (ja) |
KR (4) | KR20020082465A (ja) |
CN (5) | CN100432991C (ja) |
AU (4) | AU2133801A (ja) |
CA (4) | CA2393760C (ja) |
DE (4) | DE10085389T1 (ja) |
GB (4) | GB2373083B (ja) |
WO (4) | WO2001043345A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007507915A (ja) * | 2003-07-25 | 2007-03-29 | サンドバースト コーポレーション | 分類子を識別する装置と方法 |
JP2020156058A (ja) * | 2019-03-22 | 2020-09-24 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、通信方法及びプログラム |
Families Citing this family (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4156112B2 (ja) * | 1998-12-25 | 2008-09-24 | 富士通株式会社 | 高速検索方法及び高速検索装置 |
CN100432991C (zh) * | 1999-12-10 | 2008-11-12 | 睦塞德技术公司 | 最长匹配地址查询的方法和装置 |
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 |
US20030140052A1 (en) * | 2001-12-18 | 2003-07-24 | Shawn Thomas | Method and system for asset transition quality control |
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 |
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 |
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 |
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 |
US7953634B2 (en) * | 2004-07-12 | 2011-05-31 | Fexco Merchant Services | 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 |
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 |
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 |
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 |
US7529726B2 (en) | 2005-08-22 | 2009-05-05 | International Business Machines Corporation | XML sub-document versioning method in XML databases using record storages |
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 |
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 |
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 |
US7987205B1 (en) * | 2006-11-27 | 2011-07-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations |
US8086641B1 (en) | 2006-11-27 | 2011-12-27 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same |
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 |
CN100531140C (zh) * | 2006-12-20 | 2009-08-19 | 中国科学院计算技术研究所 | 一种实现无回溯的最长前缀匹配搜索的方法和装置 |
US9178916B2 (en) | 2007-06-28 | 2015-11-03 | 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 |
US20110019662A1 (en) | 2007-06-28 | 2011-01-27 | Rebelvox Llc | Method for downloading and using a communication application through a web browser |
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 |
US8688789B2 (en) | 2009-01-30 | 2014-04-01 | Voxer Ip Llc | Progressive messaging apparatus and method capable of supporting near real-time communication |
US11095583B2 (en) | 2007-06-28 | 2021-08-17 | Voxer Ip Llc | Real-time messaging method and apparatus |
US20100198923A1 (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 |
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 | 數值資料範圍區間查詢方法及系統 |
CN102780624B (zh) | 2008-02-05 | 2016-02-03 | 华为技术有限公司 | 一种建立路由的方法和装置 |
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 |
US20100246669A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method for bandwidth optimization in data transmission using a surveillance device |
US20100245072A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method for providing remote monitoring services |
US20100245582A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method of remote surveillance and applications therefor |
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 |
US9203743B2 (en) * | 2010-03-24 | 2015-12-01 | Nec Corporation | Packet forwarding system, control device, forwarding device and method and program for preparing processing rules |
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 | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
US9485179B2 (en) | 2014-11-13 | 2016-11-01 | Cavium, Inc. | Apparatus and method for scalable and flexible table search in a network switch |
US9553829B2 (en) | 2014-11-13 | 2017-01-24 | Cavium, Inc. | Apparatus and method for fast search table update 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 |
US10063407B1 (en) | 2016-02-08 | 2018-08-28 | Barefoot Networks, Inc. | Identifying and marking failed egress links in data plane |
US10313231B1 (en) * | 2016-02-08 | 2019-06-04 | Barefoot Networks, Inc. | Resilient hashing for forwarding packets |
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 |
CN111367665B (zh) * | 2020-02-28 | 2020-12-18 | 清华大学 | 一种并行通信路由建立方法及系统 |
CN111799642A (zh) * | 2020-07-24 | 2020-10-20 | 无锡市德科立光电子技术有限公司 | 一种兼容sfp+封装的光纤放大器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0522297A (ja) * | 1991-07-09 | 1993-01-29 | Nec Corp | 通信ネツトワークシステム |
JPH10257066A (ja) * | 1997-03-13 | 1998-09-25 | Mitsubishi Electric Corp | ネットワークアドレス検索方式 |
WO1999014906A1 (en) * | 1997-09-15 | 1999-03-25 | Effnet Group Ab | Method and system for fast routing lookups |
JPH11191781A (ja) * | 1997-12-25 | 1999-07-13 | Nec Corp | 経路検索回路及び通信制御装置 |
JP2000151691A (ja) * | 1998-10-27 | 2000-05-30 | Cselt Spa (Cent Stud E Lab Telecomun) | インタ―ネット網等の高速通信網のノ―ドのル―ティング表構築のためのプレフィックス分析による情報探索用メモリ |
JP2001517024A (ja) * | 1997-09-15 | 2001-10-02 | エフィシャント ネットワーキング アクティエボラーグ | 高速ルーティング・ルックアップのための方法とシステム |
Family Cites Families (41)
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 |
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 |
CA2119788C (en) * | 1992-07-24 | 1996-12-31 | Peter L. Morse | Computer method and system for allocating and freeing memory |
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 |
WO1996037067A1 (en) * | 1995-05-18 | 1996-11-21 | Northern Telecom Limited | Telephony based delivery system of messages containing selected greetings |
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 |
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 |
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 |
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 |
WO1999050963A2 (en) * | 1998-03-31 | 1999-10-07 | Samsung Electronics Co., Ltd. | TURBO ENCODING/DECODING DEVICE AND METHOD FOR PROCESSING FRAME DATA ACCORDING TO QoS |
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 |
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 |
CN100432991C (zh) * | 1999-12-10 | 2008-11-12 | 睦塞德技术公司 | 最长匹配地址查询的方法和装置 |
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 |
-
2000
- 2000-12-08 CN CNB008189447A patent/CN100432991C/zh not_active Expired - Lifetime
- 2000-12-08 AU AU21338/01A patent/AU2133801A/en not_active Abandoned
- 2000-12-08 CA CA 2393760 patent/CA2393760C/en not_active Expired - Fee Related
- 2000-12-08 DE DE2000185389 patent/DE10085389T1/de not_active Ceased
- 2000-12-08 AU AU21337/01A patent/AU2133701A/en not_active Abandoned
- 2000-12-08 EP EP20000984688 patent/EP1250778A2/en not_active Withdrawn
- 2000-12-08 DE DE2000185390 patent/DE10085390T1/de not_active Ceased
- 2000-12-08 CA CA 2393764 patent/CA2393764A1/en not_active Abandoned
- 2000-12-08 JP JP2001542932A patent/JP4741134B2/ja not_active Expired - Lifetime
- 2000-12-08 JP JP2001542982A patent/JP2003516670A/ja not_active Withdrawn
- 2000-12-08 CA CA 2395151 patent/CA2395151C/en not_active Expired - Fee Related
- 2000-12-08 WO PCT/CA2000/001443 patent/WO2001043345A2/en active Application Filing
- 2000-12-08 WO PCT/CA2000/001442 patent/WO2001043370A2/en active Application Filing
- 2000-12-08 EP EP20000984689 patent/EP1250775A2/en not_active Withdrawn
- 2000-12-08 GB GB0213389A patent/GB2373083B/en not_active Expired - Lifetime
- 2000-12-08 CN CNB008189463A patent/CN1174587C/zh not_active Expired - Lifetime
- 2000-12-08 EP EP20000984690 patent/EP1250662A2/en not_active Withdrawn
- 2000-12-08 US US09/733,628 patent/US20010042130A1/en not_active Abandoned
- 2000-12-08 KR KR1020027007421A patent/KR20020082465A/ko not_active Application Discontinuation
- 2000-12-08 AU AU21339/01A patent/AU2133901A/en not_active Abandoned
- 2000-12-08 EP EP20000986911 patent/EP1250779A2/en not_active Withdrawn
- 2000-12-08 GB GB0213390A patent/GB2374174B/en not_active Expired - Lifetime
- 2000-12-08 DE DE2000185388 patent/DE10085388T1/de not_active Ceased
- 2000-12-08 US US09/733,627 patent/US6691218B2/en not_active Expired - Lifetime
- 2000-12-08 CN CN00818945A patent/CN1435030A/zh active Pending
- 2000-12-08 KR KR1020027007424A patent/KR100748773B1/ko active IP Right Grant
- 2000-12-08 US US09/733,629 patent/US7423981B2/en not_active Expired - Lifetime
- 2000-12-08 DE DE2000185387 patent/DE10085387T5/de not_active Withdrawn
- 2000-12-08 JP JP2001542955A patent/JP2003516666A/ja active Pending
- 2000-12-08 US US09/733,761 patent/US6539369B2/en not_active Expired - Lifetime
- 2000-12-08 JP JP2001542933A patent/JP4565793B2/ja not_active Expired - Lifetime
- 2000-12-08 WO PCT/CA2000/001441 patent/WO2001043400A2/en not_active Application Discontinuation
- 2000-12-08 GB GB0213391A patent/GB2373084A/en not_active Withdrawn
- 2000-12-08 CA CA 2397608 patent/CA2397608C/en not_active Expired - Fee Related
- 2000-12-08 CN CN200810149123.6A patent/CN101510839B/zh not_active Expired - Fee Related
- 2000-12-08 KR KR1020027007423A patent/KR100748772B1/ko active IP Right Grant
- 2000-12-08 AU AU23341/01A patent/AU2334101A/en not_active Abandoned
- 2000-12-08 GB GB0213387A patent/GB2373082B/en not_active Expired - Lifetime
- 2000-12-08 KR KR1020027007422A patent/KR100748771B1/ko active IP Right Grant
- 2000-12-08 WO PCT/CA2000/001444 patent/WO2001043346A2/en active Application Filing
- 2000-12-08 CN CNB008189471A patent/CN1278525C/zh not_active Expired - Lifetime
-
2003
- 2003-01-02 US US10/336,055 patent/US6836771B2/en not_active Expired - Lifetime
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0522297A (ja) * | 1991-07-09 | 1993-01-29 | Nec Corp | 通信ネツトワークシステム |
JPH10257066A (ja) * | 1997-03-13 | 1998-09-25 | Mitsubishi Electric Corp | ネットワークアドレス検索方式 |
WO1999014906A1 (en) * | 1997-09-15 | 1999-03-25 | Effnet Group Ab | Method and system for fast routing lookups |
JP2001517024A (ja) * | 1997-09-15 | 2001-10-02 | エフィシャント ネットワーキング アクティエボラーグ | 高速ルーティング・ルックアップのための方法とシステム |
JPH11191781A (ja) * | 1997-12-25 | 1999-07-13 | Nec Corp | 経路検索回路及び通信制御装置 |
JP2000151691A (ja) * | 1998-10-27 | 2000-05-30 | Cselt Spa (Cent Stud E Lab Telecomun) | インタ―ネット網等の高速通信網のノ―ドのル―ティング表構築のためのプレフィックス分析による情報探索用メモリ |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007507915A (ja) * | 2003-07-25 | 2007-03-29 | サンドバースト コーポレーション | 分類子を識別する装置と方法 |
JP2020156058A (ja) * | 2019-03-22 | 2020-09-24 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、通信方法及びプログラム |
JP7088868B2 (ja) | 2019-03-22 | 2022-06-21 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、通信方法及びプログラム |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4741134B2 (ja) | 最長一致アドレスルックアップのための方法および装置 | |
US7966421B2 (en) | Method and apparatus for logically expanding the length of a search key | |
US7633960B2 (en) | Dense mode coding scheme | |
US20050171959A1 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
US20070115968A1 (en) | Default route coding | |
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 |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071128 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071128 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100511 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100511 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100521 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100810 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101125 |