JP4482259B2 - 4ウェイハッシュ表のための方法および装置 - Google Patents
4ウェイハッシュ表のための方法および装置 Download PDFInfo
- Publication number
- JP4482259B2 JP4482259B2 JP2001527500A JP2001527500A JP4482259B2 JP 4482259 B2 JP4482259 B2 JP 4482259B2 JP 2001527500 A JP2001527500 A JP 2001527500A JP 2001527500 A JP2001527500 A JP 2001527500A JP 4482259 B2 JP4482259 B2 JP 4482259B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- index
- entry
- hash
- valid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の背景】
コンピュータネットワークにおいては、ネットワーキングスイッチが、スイッチに接続される多数の入来ポートからデータパケットを受信し、スイッチに接続される多数の出口ポートにデータパケットを転送する。スイッチは、入来ポートの1つで受信されるデータパケットに含まれる宛先アドレスに依存して、データパケットが転送される出口ポートを決定する。
【0002】
データパケットが宛先アドレスに基づいて転送されるべき出口ポートは、ネットワーキングスイッチにおける転送テーブル中の転送エントリに記憶される。転送テーブルは、特定の宛先アドレスと関連付けられる転送エントリのために検索される。
【0003】
一般的に、スイッチを介してアクセス可能である可能性ある宛先アドレスの各々について転送テーブルにエントリを設けることは実行可能でない。たとえば、48ビットのイーサネット(R)宛先アドレス、すなわち、メディアアクセスコントロール(“MAC”)アドレスについて、248個の転送エントリが、可能性あるMACアドレスのすべてのための転送情報を記憶するために転送テーブルに必要とされる。代わりに、MACアドレスの一部のみがハッシュ表に記憶される。ハッシュ機能を宛先アドレスに対して行ってより少ない数を設け、これを用いてハッシュ表をインデックス付けする。
【0004】
宛先アドレスに対してハッシュ機能を行う結果として、複数の宛先アドレスが同じインデックスに対応付けられ得る、すなわち、エイリアシングが起こり得る。したがって、ハッシュ表のある場所へのエントリの挿入は、もしその場所が既に別の宛先のための転送エントリを記憶しているのであれば、妨げられる可能性がある。
【0005】
エイリアシングの問題に対するアプローチの1つは、転送エントリが第1のインデックスで見つからないならば第2のインデックスを設けるために宛先アドレスのための第2のハッシュ関数を生成することである。しかしながら、複数のレベルのハッシングの結果、転送エントリの検索に遅れを加えることにより非決定的な検索をもたらしてしまう。
【0006】
エイリアシングを低減し決定的な検索を提供するための周知の技術の1つは、各インデックスごとに2つ以上の場所を与えることである。これは複数バケット技術とも呼ばれる。複数バケットを実現するハッシュ表において、予め定められた数の場所またはバケットが各インデックスごとに設けられる。
【0007】
図1Aは、先行技術の複数バケットハッシュ表136のブロック図を示す。ハッシュ表136は、215個のインデックス(インデックスビット14:0による)134を含む。各インデックス134ごとに4個のバケット138A−Dがある。バケット134A−Dの各々は、1つの転送エントリを記憶する。ハッシュ表136のサイズは、場所138A−Dのサイズおよびインデックス134の合計数によって決定される。たとえば、各バケット138A−Dが1バイト幅であるならば、128キロバイト(32キロバイト×4)のハッシュ表が必要とされる。
【0008】
しかしながら、複数バケットハッシュ表はメモリの非効率的な使用をもたらし、インデックスのすべての場所が使用されているならば、転送エントリの挿入は阻止され得る。したがって、使用されていない場所がハッシュ表中の他のインデックスで利用可能であったとしても、インデックスに対応付けられる宛先アドレスのためのさらなる転送エントリが、ハッシュ表中のそのインデックスで記憶されることができない。
【0009】
【発明の概要】
ネットワークスイッチは、複数個のハッシュ表を含み、その各々が異なった計算されたインデックスで同時にアクセスされる。インデックスは、宛先アドレスに依存してキーからハッシュ関数論理によって計算される。キーのための転送エントリが、そのキーのための計算されたインデックスによって識別される場所の1つに挿入される。パケットが受信されると、4個のハッシュ表にアクセスするためにインデックスが計算され、マッチングキーを有するもののために、位置決めされた転送エントリが検索される。挿入プロセス中の転送エントリの適切な記憶により、マッチ検索は、1検索サイクルで完了可能である。
【0010】
転送エントリは、好ましくは、使用されていない場所を検出した後、挿入選択論理によって、計算されたインデックスによって識別される使用されていない場所に挿入される。しかしながら、挿入選択論理が、キーのための計算されたインデックスによって識別される場所のすべてが使用されていると決定したならば、挿入選択論理は、使用されている場所の1つを上書きし得る。
【0011】
好ましい実施例では、キーのための計算されたインデックスによって識別される場所のすべてが使用されていると決定すると、挿入選択論理は、別のキーを有する転送エントリの1つを、他のキーに利用可能な別の場所に移動させ、新しい転送エントリを挿入する。そのエントリの移動が、さらに別のエントリの移動をもたらし得るので、転送エントリは再帰的(recursively)に再順序付け(reorder)され得る。
【0012】
パケットが受信されると、キーマッチ論理が、計算されたインデックスによって特定される場所の1つにおける転送エントリに記憶された検索キーのためにハッシュ表を検索し、マッチング転送エントリを与える。挿入プロセスにおける再順序付けのために、インデックス付けされた場所の1つにおける適切な転送エントリを保証することができる。
【0013】
ハッシュ関数論理は、好ましくは、キーのためのCRCを生成し、インデックスとしてCRCの一部を選択することにより、ハッシュ表ごとにインデックスを計算する。ハッシュ表および対応するインデックスの数は、好ましくは、4個である。
【0014】
この発明の以上および他の目的、特徴ならびに利点は、添付の図面に説明されるこの発明の好ましい実施例の以下のより特定的な説明から明らかとなり、同様の参照文字は異なった図を通じて同じ部分を指す。図面は縮尺どおりであるとは限らず、代わりに、この発明の原理を説明することに重きが置かれる。
【0015】
【詳細な説明】
図1Bは、この発明の原理に従う転送エントリを記憶するための、ネットワークスイッチにおけるハッシュ表190A−Dを示すブロック図である。ハッシュ表190A−Dの各々は、213個のインデックスを設けており、転送エントリを記憶するために各インデックスごとに1つの場所がある。組合されたハッシュ表190A−Dは、1215(213×22)個のインデックスを有する。したがって、4つのハッシュ表190A−Dは、先行技術の複数バケットハッシュ表のサイズの4分の1であるハッシュ表中に、図1Aに示す先行技術の複数バケットハッシュ表と同じ数のインデックスを設けている。各インデックスごとの場所の数および1場所当りのビットの数は、設計選択であり、この発明を限定するものではない。
【0016】
4つの異なったインデックスが、宛先アドレスに依存してハッシュ関数論理によって同時に計算される。ハッシュ関数論理は、図3を参照してさらに記載される。計算されたインデックスの各々は、異なったハッシュ表190A−Dに与えられる。たとえば、Key_Aに依存して4個の異なったインデックス、すなわち、Key_Aインデックス1−4 172A−Dが生成される。キーのための転送エントリは、4つの計算されたインデックスの1つによって識別される場所の1つに挿入され、そのため、その後のそのキーの検索の際、キーは1検索サイクルで位置決めされる。
【0017】
たとえば、1検索サイクルでKey_Aのための転送エントリを与えるために、Key_Aは、Key_Aインデックス1−4 176A−Dによって識別される場所138、146、156、164の1つに記憶されなければならない。場所138、146、156、164のすべてが他の挿入キーのための転送エントリを記憶しているならば、Key_Aを記憶するための場所138、146、156、164の1つを与えるために、転送キーの1つが、ハッシュ表190A−Dの1つの別の場所に移動される。ハッシュ表190A−Dに記憶される転送エントリを再順序付けするための方法は、図8と関連付けられて記載される。
【0018】
図示のとおり、4個のKey_Aインデックス172A−Dは、ハッシュ表_1 190A中の場所138、ハッシュ表_2 190B中の場所146、ハッシュ表_3 190C中の場所156およびハッシュ表_4 190D中の場所164を識別する。場所138、146、156、164のすべては、Key_A以外のキーのための転送エントリを記憶している。Key_Bは場所138に記憶され、Key_Cは場所146に記憶され、Key_Dは場所156に記憶され、Key_Eは場所164に記憶される。使用されていないまたは空の場所がハッシュ表において利用可能である;たとえば、場所140、142、144はハッシュ表1 190Aにおいて使用されていない。
【0019】
決定的な検索、すなわち、待合せなしの切換を提供するために、Key_Aは、Key_Aのためのインデックス172A−Dによって識別される場所の1つに記憶されなければならない。したがって、Key_Aのための転送エントリが空にされた場所に記憶可能となるように、場所138、146、156、164に記憶されるキーの1つが使用されていない場所に移動されなければならず、移動されたキーのための転送エントリは、移動されたキーの他のインデックスの1つによって識別される場所に記憶される。
【0020】
KeyAは、KeyBと場所138を共有する。場所138に記憶されるKeyBのためのエントリは、したがって、Key_Bのための他のインデックス174B−Dのいずれかによって識別される空の場所に移動され得る。図示のとおり、Key_Bのための他のインデックス174B−Dによって識別される他の場所148、158、166は使用されている;したがって、Key_Bは、他の場所148、158、166の1つに移動することができない。しかしながら、Key_Cのための他のインデックスの2つ176A、176Dによって識別される場所の2つ140、168は空である。したがって、Key_Cのための転送エントリは、場所146から場所168または140に移動され得る。Key_Cのための転送エントリを移動した後、Key_Aのための転送エントリが、key_Aインデックス_2 172Bによって識別される場所146に挿入される。Key_AまたはKey_Cのための転送エントリのための検索は決定的である、すなわち、検索の各々は1検索サイクルで完了可能である。同様に、Key_Dのための転送エントリは、Key_Aを挿入するための場所156を与えるために場所156から場所142、150または170に移動されているかもしれず、または、Key_Eのための転送エントリは、Key_Aを挿入するための場所164を与えるために場所164から場所144、152または162に移動されているかもしれない。
【0021】
したがって、ハッシュ表190A−Dに記憶された各転送エントリごとに決定的な検索を行うために、宛先アドレスのための転送エントリが宛先アドレスのための計算されたインデックスの1つのいずれかで記憶されるように、ハッシュ表190A−Dに記憶された転送エントリは再順序付けされる。
【0022】
図1Aに表わされる先行技術の手法に対するこの発明の手法の比較は、各々が図1Aに表わされる4個のバケット各々を含むように図1Bの個々のインデックス場所の拡張を考慮することにより促進される。そのような構成は、図1Aと同じ32K×4メモリを使用する。ハッシュ表への各インデックスは、宛先アドレスへの適切なマッチであり得る4個の転送エントリを提供するが、図1Aの単一インデックスとは対照的に、各キーごとにハッシュ表への4個のインデックスがある。
【0023】
この発明では、他の宛先アドレスとの各インデックスの共有がより大きくなる。図1Bの手法において転送エントリを挿入する際、共有がより大きくなるために任意の1つのインデックスでの競合がより起こりやすくなるが、全体として見ると、1キー当りの複数のインデックスおよび複数のバケットを有する図1Bの手法では、挿入プロセスにおいてもはや初期競合はない。有利には、この手法はさらにシフトの可能性を提供するが、他の態様では特定のキーと共有されない他の場所への転送エントリを妨げてしまい、そのため挿入プロセスにおける実行可能性がより大きくなる。特定のインデックスで競合しているであろういかなるキーも、転送エントリが移動され得る任意の他のインデックスでは競合しにくくなるであろう。この利点は、複数のバケットが使用されるかどうかに関係なく得られ、図1Bの単一バケット手法は、4倍だけの必要とされるメモリ領域の低減とともにこれを達成する。
【0024】
挿入プロセスは、実現化例に依存する再帰のレベルと比例して再配置のためのさらなる処理時間を必要とし得るが、挿入を処理するために必要とされる時間は、ルーティングプロセス中に単一サイクルでマッチを見つけるための必要性ほど重大ではない。この発明では、そのようなマッチは実質的により確実である。実際には、マッチは、全体のメモリサイズの範囲内でほぼ確かである。
【0025】
図1Cは、図1Bに示すハッシュ表が使用使用され得る共通メモリスイッチ100のブロック図である。入来ポート102で受信されるすべてのデータは、1つ以上の出口ポート112に切換えられるより前にセグメントバッファメモリ108に記憶される。パケット記憶マネージャ106は、セグメントバッファメモリ108への書込および読出アクセスを制御する。
【0026】
スイッチ100は、入来ポートエンジン104および出口ポートエンジン110を含む。データパケットは、入来ポート102で直列に受信される。入来ポートエンジン104は、受信されたデータパケットのヘッダを検出し処理し、入来ポートエンジン104の転送論理128においてデータパケットのための転送エントリに記憶される転送ベクトル114を選択する。転送ベクトル114は、ビットマップであり、1ビットが複数個の出口ポート112の各々に対応し、データパケットがヘッダの宛先アドレスに依存してその出口ポート112に転送されるべきかどうかを示す。転送ベクトル114は、パケット記憶マネージャ106に転送される。たとえば、転送アドレスXを有するデータパケットは、出口ポート_1 112Aを介して宛先アドレス136Aを有するネットワークノードに転送され、宛先アドレスYを有するデータパケットは、出口ポート_N 112Nを介して宛先アドレスY136Cを有するネットワークノードに転送され、宛先アドレスZを有するデータパケットは、出口ポート_N 112Nを介して宛先アドレスZ 136Bを有するネットワークノードに転送される。
【0027】
パケット記憶マネージャ106は、セグメントバッファメモリ108へのアクセスを与える。パケット記憶マネージャ106は、セグメントバッファ108に読出動作および書込動作のためのセグメントバッファメモリアドレス122を与え、記憶された各データパケットのセグメントバッファメモリ108中の場所をマネージャ106内に記憶する。出口エンジン110は、どれでデータパケットを伝送すべきか、選択制御信号120により複数個の出口ポート112の1つを選択し、記憶されたデータパケットを選択された出口ポート112に与える。
【0028】
セグメントバッファメモリ108は、すべての入来ポート102および出口ポート112によって共有される共通メモリである。スイッチ100は非阻止性であり、すなわち、入来ポート102のいずれかに到着したデータパケットは、出口ポート112のいずれかに転送されることを阻止されない。スイッチ100は、入来ポート102で受信されたデータパケットの入来ポートエンジン104による処理と、出口ポート112のための出口ポートエンジン110による記憶されたデータパケットの処理とを同時に行う。
【0029】
図1Dは、入来ポート102で受信され得る先行技術のイーサネット(R)データパケット120を例示するブロック図である。イーサネット(R)データパケットは、ヘッダ122と、データフィールド134と、フレームチェックシーケンス132とを含む。ヘッダ122は、宛先アドレス124と、発信元アドレス126と、長さまたはタイプフィールド130とを含む。発信元アドレス126および宛先アドレス124は、それぞれ発信元および宛先の物理的装置を識別する一意の48ビットのアドレスである。データパケットは、12ビットのVLAN識別子(“VID”)(図示せず)も含んでよい。データパケット120のサイズは、46バイトから1500バイトまでさまざまであり得る、データフィールド134のサイズに依存する。
【0030】
図2は、この発明の原理に従う図1Cにおける非阻止性の共通メモリスイッチ100の入来ポートエンジン104に示される転送論理128の検索論理216のブロック図である。検索論理216は、4個のハッシュ表190A−Dを含む。ハッシュ表190A−Dの数は、設計選択でありこの発明を限定するものではない。
【0031】
検索論理216は、ハッシュ関数論理200およびキーマッチ論理204も含む。ハッシュ関数論理200は、検索キー206に依存して4個のインデックス208A−Dを同時に生成する。検索キー206は、キャッシュメモリのタグと同様である。キーマッチ論理204は、インデックス208A−Dによって識別される4個の場所のうちどれが検索キー206と関連付けられる転送エントリを記憶するかを決定する。マッチング転送エントリを見つけると、マッチング転送エントリの転送ベクトル114部分は、パケット記憶マネージャ106に転送される(図1C)。
【0032】
データパケットのヘッダの宛先アドレスに対応する転送エントリを検索するために、データパケットが入来ポート102(図1C)の1つから受信されると、入来ポートエンジン104はデータパケット120のヘッダ122(図1D)を調べる。48ビット宛先アドレス124(図1D)のコピーが12ビットVLAN識別子(“VDI”)と連結され、60ビット検索キー206を形成する。宛先アドレスとVDIの連結は、設計選択でありこの発明を限定するものではなく、そのため、検索キーは宛先アドレス124(図1D)であってもよい。検索キー206は、ハッシュ関数論理200に転送される。ハッシュ関数論理200は、検索キー206に対してハッシュ機能を行うことの結果として、4個の13ビットのインデックス208A−Dを与える。
【0033】
この発明は、図1Dに示すイーサネット(R)データパケット120について記載される。しかしながら、この発明はイーサネット(R)データパケットに限られるものでなく、任意の他のタイプのデータパケットのための転送エントリを挿入し検索するために使用されてもよい。
【0034】
図3は、図2に示すハッシュ関数論理200を例示するブロック図である。ハッシュ関数論理200は、サイクリックリダンダンシチェック(“CRC”)生成論理300およびハッシュ表インデックス論理302を含む。ハッシュ関数は、CRC生成論理300において検索キー206に対して行なわれるCRC関数である。CRC生成論理は、当業者には周知である。ハッシュ関数はCRC生成に限られるものでなく、使用されるハッシュ関数は、当業者によって使用されるいずれのハッシュ関数であってもよい。CRC生成論理300は、60ビット検索キー206から32ビットCRC304を生成する。
【0035】
32ビットCRC304は、ハッシュ表インデックス論理302に転送される。ハッシュ表インデックス論理302は、32ビットCRC304から4個のインデックス208A−Dを生成する。4個のインデックス208A−Dの各々は、13ビットを有し、したがって、ハッシュ表190A−Dの各々における8K場所をアドレスするために8Kアドレスを与える。4個のインデックス208A−Dは、32ビットCRC304のビットを以下のとおり4個のインデックス208A−Dに対応付けることにより生成される:CRC304のビット12:0は、インデックス_1 208Aのビット12:0に対応付けられ;CRC304のビット18:6は、インデックス_2 208Bのビット12:0に対応付けられ;CRC304のビット25:13は、インデックス_3 208Cのビット12:0に対応付けられ、CRC304のビット31:19は、インデックス_4 208Dのビット12:0に対応付けられる。
【0036】
図2に戻って、インデックス208A−Dが、ハッシュ関数論理200によって生成された後、インデックス208A−Dによって特定されるハッシュ表190A−Dの場所に記憶されるエントリ210A−Dは、キーマッチ論理204に転送される。検索キー206もキーマッチ論理204に転送される。
【0037】
図4は、図2に示すハッシュ表190A−Dの場所のいずれか1つに記憶される転送エントリ210のフォーマットを示すブロック図である。転送エントリ210は、データパケットがどこに転送されるべきかを示すフィールドを含む。転送エントリ210は以下のフィールドを含む:古さフラグ402、遠隔キャッシュリフレッシュフラグ404、学習ポート番号406、アドレス関連QoS有効408、アドレス関連QoS410、論理的ポート転送ベクトル412、静的エントリ標識フラグ414、タイプフラグ416、有効エントリ標識フラグ418、およびキー420を含む。
【0038】
1ビットの古さフラグ402は、転送エントリ210の古さを示す。1ビットの遠隔キャッシュリフレッシュフラグ404は、タイムアウトが可能化されるかどうかを示す。学習ポート番号406は、どのインターフェイス上で、転送エントリのキー420に記憶されたMACアドレスが学習されたかを示す。たとえば、MACアドレスがローカルな外部アクセスポート上で学習されたならば、これは、物理的な入来ポート番号104である。アドレス関連クオリティ・オブ・サービス(“QoS”)フィールド410は、アドレスのための管理割当ての質を示す。1ビットのアドレスQoS関連有効408フラグは、QoSフィールド410が将来の待合せを考慮して使用されるべきかどうかを示す。32ビットの論理的ポート転送ベクトル412は、データパケットがどのポートに転送されるべきかを示す。1ビットの静的エントリ標識フラグ414は、転送エントリ210が静的かまたは動的であるかを示す。1ビットのタイプフラグ416は、転送エントリ210がレベル2転送エントリについて使用可能であるかどうかを示す。1ビットの有効エントリ標識フラグ418は、転送エントリ210が有効であるかどうかを示す。60ビットのキー420は、転送エントリ210と関連付けられる検索キー206を記憶する。
【0039】
図2に戻って、キーマッチ論理204は、ハッシュ表190A−Dから転送された転送エントリ210A−Dの各々に記憶されるキーエントリ420を検索キー206と比較する。マッチしていれば、その転送エントリからの32ビットの論理的ポート転送ベクトル412(図4)が、転送ベクトル114でパケット記憶マネージャ106(図1)に転送される。マッチしていなければ、ミス信号214が生成され、ミスは、入来ポートエンジン104においてノーマッチファウンド論理(図示せず)によって処理される。
【0040】
図5は、ハッシュ表190A−Dの1つにおいて検索キー206とマッチする転送エントリ210を検索するための検索論理216のステップを例示する流れ図である。
【0041】
ステップ500で、検索論理216は検索要求を待つ。検索要求があれば、処理はステップ502に続く。なければ、検索論理216は引続き検索要求を待つ。
【0042】
ステップ502で、ハッシュ関数論理200は、検索キー206から4個のインデックス208A−Dを生成し、4個のインデックス208A−Dをハッシュ表190A−Dに転送する。処理はステップ504に続く。
【0043】
ステップ504で、インデックス208A−Dによって特定されるハッシュ表210A−D中の場所に記憶される転送エントリ210A−Dは、キーマッチ論理204に転送される。ステップ506に続く。
【0044】
ステップ506で、キーマッチ論理204は、転送エントリ210A−Dの各々に記憶されるキー420(図4)を検索キー206と比較し、マッチするかどうかを決定する。マッチしていれば、処理はステップ508に続く。していなければ、処理はステップ510に続く。
【0045】
ステップ508で、検索キー206のための転送エントリ210A−Dが見つけられる。転送エントリ210に記憶される論理的ポート転送ベクトル412(図4)は、転送ベクトル114(図1C)でパケット記憶マネージャ106(図1C)に転送される。データパケットは、パケット記憶マネージャ106、セグメントバッファメモリ108および出口ポートエンジン110を介して予め定められた出口ポート112に転送される。処理はステップ500に続く。
【0046】
ステップ510で、検索キー206とマッチする転送エントリ210A−Dが見つけられなかった。入来ポートエンジン104は、たとえば、データパケットを出口ポート112のすべてにフラッド(flood)する、すなわち、送ることによりミスを処理する。この処理は、ブリッジングプロトコルの一部である。処理はステップ500に続く。
【0047】
図6は、ハッシュ表190A−Dの1つにおける場所に転送エントリ210を挿入するための転送論理128(図1C)における挿入論理208を例示するブロック図である。48ビット宛先アドレス124(図1D)のコピーが12ビットVLAN識別子(“VID”)と連結され60ビット挿入キー606を形成する。宛先アドレスとVIDの連結は、設計選択でありこの発明を限定するものではない。検索キー206に対して行なわれたのと同じハッシュ機能が挿入キー606に対して行なわれる。ハッシュ関数は、図3と関連付けて検索キー206について既に記載された。4個のインデックス208A−Dがハッシュ関数の結果として生成される。インデックスの各々は、挿入キー606が挿入され得るそれぞれのハッシュ表190A−D中の場所を識別する。
【0048】
インデックス208A−Dによって識別されるハッシュ表190A−D中の場所に記憶された転送エントリ210A−Dの内容は、転送エントリ挿入論理600に転送される。転送エントリ挿入論理600は、転送エントリ210A−Dの内容および上書き信号602の状態に依存して、インデックス208A−Dによって識別されるどの場所に挿入キー606を挿入すべきかを決定する。
【0049】
転送エントリ挿入論理600は、インデックス208A−Dによって識別される場所のうちどれが使用されていないかを決定する。使用されていない場所が見つかると、挿入キー606を含む転送エントリ210が、使用されていない場所へのインデックス208によって識別される使用されていない場所に挿入される。使用されていない場所が見つからず、かつ上書き信号602が上書きが可能化されることを示すならば、インデックス208A−Dの1つがランダムに選択され、挿入キー606を含む転送エントリが、選択されたインデックス208によって識別される場所に挿入される。
【0050】
すべての場所が使用されており、かつ上書き信号602が上書きが可能化されないことを示すのであれば、インデックス208A−Dによって識別される使用されていない場所を与えて挿入キー606を含む転送エントリを挿入するために、ハッシュ表190A−Dに記憶される転送エントリの再順序付けが行なわれる。ハッシュ表190A−Dにおいて転送エントリ210A−Dを再順序付けするための方法は、図8と関連付けて記載される。
【0051】
図7は、ハッシュ表190A−Dの1つの場所に挿入キー606を含む転送エントリ210を挿入するための図6に示す挿入論理608のステップを例示する流れ図である。
【0052】
ステップ700で、ハッシュ関数論理200は、ハッシュ表190A−Dの1つにおける場所に転送エントリを挿入する要求を受取る。処理はステップ702に続く。
【0053】
ステップ702で、ハッシュ関数論理200は、挿入キー606から4個のインデックス208A−Dを並列に同時に生成する。インデックス208A−Dの生成は、図3と関連付けて既に記載された。処理はステップ704に続く。
【0054】
ステップ704で、生成されたインデックス208A−Dによって識別されるハッシュ表190A−D中の場所の内容が、転送エントリ挿入論理600に転送される。処理はステップ706に続く。
【0055】
ステップ716で、挿入キー606が、生成されたインデックス208A−Dによって識別される場所に既に記憶されているならば、転送エントリ挿入がその場所で上書きされる。
【0056】
ステップ706で、転送エントリ挿入論理600(図6)は、場所が使用されていないかどうかを、転送された内容から判断する。たとえば、転送エントリ210中の有効エントリフィールド418(図4)を調べることによる。場所の1つが使用されていなければ、処理はステップ708に続く。生成されたインデックス208A−Dによって識別される場所のすべてが使用されているならば、処理はステップ710に続く。
【0057】
ステップ708で、転送エントリ挿入論理600(図6)は、使用されていない場所を識別する生成されたインデックス190A−Dの1つによって識別される場所に挿入キー606を含む転送エントリ210を挿入する。
【0058】
ステップ710で、転送エントリ挿入論理600(図6)は、上書き信号602(図6)の状態に依存して上書きが可能化されるかどうか判断する。単一サイクルの挿入が必要とされ、かつハッシュ表の転送エントリが連続的に更新されているならば、たとえば、ハッシュ表190A−Dがイーサネット(R)ブリッジに使用されるのであれば、上書きが設定される。上書きが可能化されるならば、処理はステップ712に続く。上書きが可能化されなければ、処理はステップ714に続く。
【0059】
ステップ712で、転送エントリ挿入論理600(図6)は、挿入キー606を含む転送エントリをどこに上書きすべきか、生成されたインデックス208A−Dのいずれか1つによって識別される使用されている場所を選択する。
【0060】
ステップ714で、転送エントリ挿入論理600(図6)は、転送エントリの1つをハッシュ表190A−Dの1つにおける別のインデックスによって特定される場所に移動するために、生成されたインデックス208A−Dによって識別される場所に記憶された転送エントリ210A−Dの再順序付けを行なう。再順序付けするための方法は、図8と関連付けて記載される。再順序付けが完了し、かつ、生成されたインデックス208A−Dによって識別される場所の1つに使用されていない場所が与えられた後、挿入キー606を含む転送エントリ210が使用されていない場所に挿入される。
【0061】
図8は、Key_Aのためのインデックス172A−Dによって識別される場所にKey_Aを挿入するために図1Bに示すハッシュ表190A−D中の転送エントリを再順序付けするための図6に示す転送エントリ挿入論理600のステップを例示する流れ図である。
【0062】
ステップ800で、Key_AがKey_Aのためのインデックス172A−Dによって識別される場所に記憶されていないことを判断すると、転送エントリ挿入論理600(図6)は、Key_Aのためのインデックス172A−Dによって識別される場所のいずれかが使用されていないかどうかを判断する。使用されていない場所があれば、転送エントリの再順序付けは必要とされず、処理がステップ814に続く。すべての場所が使用されているならば、Key_Aを記憶すべき、Key_Aのためのインデックス172A−Dの1つによって識別される使用されていない場所を与えるために、再順序付けが必要とされ、処理はステップ802に続く。
【0063】
ステップ802で、転送エントリ挿入論理600(図6)は、Key_Aインデックス_1 172AおよびKey_Bインデックス_1 174Aによって識別される場所138に記憶されるKey_Bから、Key_Bが記憶され得るKey_Bのための他のインデックス174B−Dを決定する。転送エントリ挿入論理600は、Key_Bに対してハッシュ機能を行なってKey_Bのためのインデックス174B−Dを生成することにより、または、Key_Bを用いて、Key_Bが場所138に挿入されたときKey_Bのためのインデックス174B−Dが記憶された再帰的インデックス表(図示せず)をインデックス付けすることにより、Key_Bのための他のインデックス174B−Dを決定し得る。Key_Bと関連付けられる他のインデックス174B−Dを決定すると、処理はステップ804に続く。
【0064】
ステップ804で、転送エントリ挿入論理600(図6)は、Key_Bのためのインデックス174B−Cによって識別される場所148、158、166に記憶される転送エントリを調べる。図1Bに示すように、Key_Fが、Key_Bインデックス_2 174BおよびKey_Fインデックス_2 182Bによって識別される場所148に記憶され、Key_Hが、Key_Bインデックス_3 174CおよびKey_Hインデックス_3 186Cによって識別される場所158に記憶され、Key_Iが、Key_Bインデックス_4 174DおよびKey_Iインデックス_4 188Dによって識別される場所166に記憶される。Key_Bのための他のインデックス174B−Dによって識別される場所148、158、166のすべてが図1Bに示すように使用中であれば、処理はステップ806に続く。転送エントリ挿入論理600(図6)が、Key_Bのための他のインデックス174B−Dによって識別される場所148、158、166の1つが使用されていないことを見出すならば、処理はステップ816に続く。
【0065】
ステップ806で、転送エントリ挿入論理600(図6)は、場所146に記憶されたKey_Cから、Key_Cが記憶され得る、Key_Aインデックス_2 172BおよびKey_Cインデックス_2 176Bによって識別される場所以外のKey_Cのための他のインデックス806A、806C−Dを決定する。Key_Cと関連付けられる他のインデックスを決定すると、処理はステップ808に続く。
【0066】
ステップ808で、転送エントリ挿入論理600(図6)は、Key_Cのためのインデックス176A、176D−Cによって識別される場所に記憶される転送エントリを調べる。図8に示すように、Key_Cインデックス_1 176Aによって識別される場所140は使用されておらず、Key_Gは、Key_Cインデックス_3 176CおよびKey_Gインデックス_3 184Cによって識別される場所160に記憶され、Key_Cインデックス_4 176Dによって識別される場所168は使用されていない。Key_Cのためのインデックス176A、176C−Dによって識別される場所140、160、168のいずれかが図8に示すように使用されていないならば、処理はステップ810に続く。転送エントリ挿入論理600(図6)が、Key_Cのためのインデックス176A、176C−Dによって識別される場所142、160、168のいずれも不使用でないことを見出すならば、処理はステップ818に続く。
【0067】
ステップ810で、転送エントリ挿入論理(図6)は、Key_Cを、Key_Cインデックス_2 172BおよびKey_Aインデックス_2 172Bによって識別される場所146から、Key_Cインデックス_1 176Aによって識別される場所140に移動する。Key_Aは、Key_Aインデックス_2 172Bによって識別される場所146に挿入される。
【0068】
ステップ814で、Key_Aは、Key_Aインデックス172A−Dの1つによって識別される使用されていない場所に挿入される。
【0069】
ステップ816で、転送エントリ挿入論理600(図6)は、Key_Bを、Key_Aインデックス_1 172AおよびKey_Bインデックス_1 174Aによって識別される場所138から、Key_Bのためのインデックス174B−Dの1つによって識別される使用されていない場所に移動する。Key_Aは、Key_Aインデックス1 172AおよびKey_Bインデックス_1 174Aによって識別される場所138に挿入される。
【0070】
ステップ818で、転送エントリ挿入論理600(図6)は、Key_Aインデックス_3 172CおよびKey_Dインデックス_3 178Dによって識別される場所156に記憶されるKey_Dから、Key_Dが記憶され得る、Key_Dのための他のインデックス806A−B、806Dを決定する。Key_Dのための他のインデックスを決定すると、処理はステップ820に続く。
【0071】
ステップ820で、転送エントリ挿入論理600(図6)は、Key_Dのための他のインデックス806A−B、806Dによって識別される場所に記憶されるキーを調べる。図1Bに示すように、Key_Dインデックス806A−B、806Dによって識別される場所142、150、170のすべてが使用されていない。Key_Dのためのインデックス806A−B、806Dによって識別される場所142、150、170のいずれかが、図8に示すように使用されていないならば、処理はステップ822に続く。転送エントリ挿入論理600(図6)が、Key_Dのためのインデックス806A−B、806Dによって識別される場所142、150、170のいずれも不使用でないことを見出すならば、処理はステップ824に続く。
【0072】
ステップ822で、転送エントリ挿入論理600(図6)は、Key_Dを、Key_Aインデックス_3 172Cによって識別される場所156から、Key_Dインデックス806A−B、806Dによって識別される使用されていない場所142、150、170の1つに移動する。Key_Aが、Key_Dインデックス3 178Cによって識別される場所156に挿入される。
【0073】
ステップ824で、転送エントリ挿入論理600(図6)は、Key_Aインデックス_4 172DおよびKey_Eインデックス_4 180Dによって識別される場所164に記憶されるKey_Eから、Key_Eが記憶され得る、Key_Eのための他のインデックス180A−C、180Dを決定する。Key_Eと関連付けられる他のインデックスを決定すると、処理はステップ826に続く。
【0074】
ステップ826で、転送エントリ挿入論理600(図6)は、Key_Eのための他のインデックス180A−Cによって識別される場所に記憶されるキーを調べる。図1Bに示すように、Key_Eのためのインデックス180A−Cによって識別される場所144、152、162は使用されていない。Key_Eのためのインデックス180A−Cによって識別される場所144、152、162のいずれかが、図1Bに示すように使用されていなければ、処理はステップ828に続く。転送エントリ挿入論理600(図6)が、Key_Eのためのインデックス180A−Cによって識別される場所144、152、168のいずれも不使用でないことを見出すと、処理はステップ830に続く。
【0075】
ステップ828で、転送エントリ挿入論理600(図6)は、Key_Eを、Key_Aインデックス_4 172DおよびKey_Eインデックス_4 180Dによって識別される場所164から、Key_Eのための他のインデックス180A−Cによって識別される場所144、152、162の1つに移動する。好ましくは、Key_Eは、検出された最初の空の場所、すなわち、Key_Eのためのインデックス180A−CがA−Cの順に検索されるならば場所144に挿入される。Key_Aは、Key_Aインデックス_4 172Dによって識別される場所164に挿入される。
【0076】
ステップ830で、インデックス選択論理600(図6)は、Key_Aインデックス172A−Dの1つでの転送エントリが空にされ、かつKey_Aが挿入されるまで、Key_F、Key_G、Key_HおよびKey_Iと関連付けられる転送エントリのすべてを調べることにより、Key_B、Key_C、Key_DおよびKey_E転送エントリによって共有される他の場所に記憶される転送エントリを調べることにより、使用されていない場所を検索し続ける。
【0077】
一般的に、キーのためのインデックスによって識別される場所は、予め定められた順序、たとえばA−Dの順序で検索される。キーは、見出された最初の空の場所に挿入される。したがって、エントリは、インデックス_1 208Aによって識別される場所に挿入され、その後に、インデックス_2 208B、インデックス_3 208Cおよびインデックス_4 208Dによって識別される場所が続く。
【0078】
ハッシュ表において転送エントリを再順序付けすることは、ハッシュ表の効率的な利用をもたらし、ハッシュ表がほぼ一杯であるとき転送エントリがハッシュ表に挿入可能である確率を増大させる。
【0079】
この発明は、その好ましい実施例を参照して特定的に示され記載されたが、前掲の特許請求の範囲によって含まれるこの発明の範囲から逸脱することなしに、形態および詳細のさまざまな変更がこれになされ得ることが、当業者には理解される。
【図面の簡単な説明】
【図1A】 転送エントリを与えるための先行技術の複数バケットハッシュ表のブロック図である。
【図1B】 この発明の原理に従う転送エントリを与えるためのハッシュ表を示すブロック図である。
【図1C】 図1Bのハッシュ表が使用可能である非阻止性の共通メモリスイッチのブロック図である。
【図1D】 入来ポートで受信され得る先行技術のイーサネット(R)データパケットのブロック図である。
【図2】 図1Cの非阻止性の共通メモリスイッチに示される転送論理におけるハッシュ表を含む検索論理を示すブロック図である。
【図3】 図2に示すハッシュ関数論理を示すブロック図である。
【図4】 図1Bに示すハッシュ表のいずれか1つに記憶される転送エントリのフォーマットを示すブロック図である。
【図5】 ハッシュ表の1つに検索キーとマッチする転送エントリを検索するための検索論理のステップを示す流れ図である。
【図6】 ハッシュ表の1つにおいて新しいエントリを挿入するための挿入論理を示すブロック図である。
【図7】 使用されているエントリを上書きすることによりハッシュ表の1つに転送エントリを挿入するための図6に示す挿入論理のステップを示す流れ図である。
【図8】 ハッシュ表中の場所を空けて転送エントリを挿入するためにハッシュ表に記憶される転送エントリを再帰的に再順序付けするための図6に示す挿入論理のステップを示す流れ図である。
Claims (21)
- 複数個のハッシュ表を含み、複数個のハッシュ表のうちの個々のハッシュ表は複数個の記憶場所を含み、複数個の記憶場所の個々の記憶場所はインデックスによってアクセス可能であるエントリを記憶することができ、さらに、
キーを受けるとともに、キーから複数個のハッシュ表のうちの個々のハッシュ表の中に別個のインデックスを計算し、それによって複数個のハッシュ表のうちの個々のハッシュ表内の少なくとも1つの可能性のある記憶場所へキーを対応付けるように構成され、キーの数は複数個のハッシュ表における場所の合わせた数よりも大きく、さらに、
いずれの可能性のある記憶場所もすでに有効なエントリを有していることが認識されたことに応答して、有効なエントリの1つを、第2の別個のインデックスを用いて、可能性のある記憶場所から、有効なエントリの1つが利用可能な異なった記憶場所へ移動するように構成された挿入論理を含む、ネットワークスイッチ。 - エントリ挿入論理は、移動されるべき有効なエントリのうちの1つから、複数個のハッシュ表のうちの個々のハッシュ表の中に、第2の別個のインデックスを計算するとともに、計算された第2の別個のインデックスの1つによって示された、異なった記憶場所へ、移動されるべき有効なエントリの1つを移動する、請求項1に記載のネットワークスイッチ。
- エントリ挿入論理は、計算された第2の別個のインデックスによって示された場所の1つが使用されていないことの検出に応答して、移動されるべき有効なエントリの1つを、その使用されていない場所へ移動する、請求項2に記載のネットワークスイッチ。
- 計算されたインデックスによって識別される記憶場所を第2のために検索し、有効なマッチするエントリを見つけたことに応答して、有効なマッチするエントリを回収するキーマッチ論理をさらに含む、請求項1に記載のネットワークスイッチ。
- ハッシュ関数論理は、キーのためのCRCを生成し、かつ複数個のハッシュ表の中でインデックスとしてCRCの変化する下位の一部を対応付けることにより、インデックスを計算する、請求項1に記載のネットワークスイッチ。
- 複数個のハッシュ表を含み、複数個のハッシュ表の個々のハッシュ表は複数個の記憶場所を含み、個々の記憶場所はインデックスによってアクセス可能な1つのエントリを記憶することができ、さらに、
キーを受けるとともに、キーから複数個のハッシュ表のうちの個々のハッシュ表の中に別個のインデックスを計算し、それによって複数個のハッシュ表のうちの個々のハッシュ表内の少なくとも1つの可能性のある記憶場所へキーを対応付けるための手段を含み、可能性のあるキーの数は、複数個のハッシュ表における場所の合わせた数より大きく、さらに
いずれの可能性のある記憶場所もすでに有効なエントリを有していることを認識するとともに、有効エントリの1つを第2の別個のインデックスを用いて、可能性のある記憶場所から、有効なエントリの1つが利用可能な異なった記憶場所に移動するための手段を含む、ネットワークスイッチ。 - 認識するとともに移動するための手段は、移動されるべき有効なエントリのうちの1つから、複数個のハッシュ表のうちの個々のハッシュ表の中に、第2の別個のインデックスを計算するとともに、計算された第2の別個のインデックスの1つによって示された、異なった記憶場所へ、移動されるべき有効なエントリの1つを移動する、請求項6に記載のネットワークスイッチ。
- 認識するとともに移動するための手段は、計算された第2の別個のインデックスによって示された場所の1つが使用されていないことの検出に応答して、移動されるべき有効なエントリの1つを、その使用されていない場所へ移動する、請求項7に記載のネットワークスイッチ。
- 計算されたインデックスによって識別される記憶場所を第2のために検索し、有効なマッチするエントリを見つけたことに応答して、有効なマッチするエントリを回収するための手段をさらに含む、請求項6に記載のネットワークスイッチ。
- 計算するための手段は、キーのためのCRCを生成し、かつ複数のハッシュ表の中でインデックスとしてCRCの変化する下位の一部を対応付けることによりインデックスを計算する、請求項6に記載のネットワークスイッチ。
- ハッシュ表の数は4個である、請求項1または6のいずれかに記載のネットワークスイッチ。
- 複数個のハッシュ表を設けるステップを含み、複数のハッシュ表のうちの個々のハッシュ表は複数個の記憶場所を含み、複数個の記憶場所のうちの個々の記憶場所はインデックスによってアクセス可能なエントリを記憶することができ、さらに、
複数個のハッシュ表に記憶する前のキーを受けるステップと、
キーから複数個のハッシュ表のうちの個々のハッシュ表の中に別個のインデックスを計算するステップとを含み、それによって複数個のハッシュ表のうちの個々のハッシュ表内の少なくとも1つの可能性のある記憶場所へキーを対応付けるように構成され、キーの数は、複数個のハッシュ表における場所の合わせた数よりも大きく、さらに、
いずれの可能性のある記憶場所もすでに有効なエントリを有していることを認識するとともに有効なエントリのうちの1つを移動するステップを含む、ネットワークスイッチにおいて転送エントリを記憶するための方法。 - 移動されるべき有効なエントリのうちの1つから、複数個のハッシュ表のうちの個々のハッシュ表の中に、第2の別個のインデックスを計算するとともに、計算された第2の別個のインデックスの1つによって示された、異なった記憶場所へ、移動されるべき有効なエントリの1つを移動するステップをさらに含む、請求項12に記載の方法。
- 計算された第2の別個のインデックスによって示された場所の1つが使用されていないことの検出に応答して、移動されるべき有効なエントリの1つを、その使用されていない場所へ移動するステップをさらに含む、請求項13に記載の方法。
- 計算されたインデックスによって識別される記憶場所を第2のために検索し、有効なマッチするエントリを見つけたことに応答して、有効なマッチするエントリを回収するステップとをさらに含む、請求項12に記載の方法。
- 計算するステップはさらに、
キーのためのCRCを生成するとともに、複数のハッシュ表の中でインデックスとしてCRCの変化する下位の一部を対応付けるステップを含む、請求項12に記載の方法。 - ハッシュ表の数は4個である、請求項12に記載の方法。
- 複数個のハッシュ表を含み、複数個のハッシュ表のうちの個々のハッシュ表は複数個の記憶場所を含み、複数個の記憶場所の個々の記憶場所はインデックスによってアクセス可能であるエントリを記憶することができ、さらに、
キーを受けるとともに、キーから複数個のハッシュ表のうちの個々のハッシュ表の中に別個のインデックスを計算し、それによって複数個のハッシュ表のうちの個々のハッシュ表内の少なくとも1つの可能性のある記憶場所へキーを対応付けるように構成され、キーの数は複数個のハッシュ表における場所の合わせた数よりも大きく、さらに、
複数個のハッシュ表にキーを挿入し、いずれの可能性のある記憶場所もすでに有効なエントリを有していることが認識されたことに応答して、上書きするための記憶場所として有効なエントリの1つを選択し、選択された有効な記憶場所のエントリを新しいエントリで上書きするように構成された挿入論理を含む、ネットワークスイッチ。 - 挿入論理は、上書きするための記憶場所として有効なエントリの1つをランダムに選択する、請求項18に記載のネットワークスイッチ。
- 複数個のハッシュ表を設けるステップを含み、複数のハッシュ表のうちの個々のハッシュ表は複数個の記憶場所を含み、複数個の記憶場所のうちの個々の記憶場所はインデックスによってアクセス可能なエントリを記憶することができ、さらに、
複数個のハッシュ表に記憶する前のキーを受けるステップと、
キーから複数個のハッシュ表のうちの個々のハッシュ表の中に別個のインデックスを計算するステップを含み、それによって複数個のハッシュ表のうちの個々のハッシュ表内の少なくとも1つの可能性のある記憶場所へキーを対応付けるように構成され、キーの数は、複数個のハッシュ表における場所の合わせた数よりも大きく、さらに、
いずれの可能性のある記憶場所もすでに有効なエントリを有していることが認識されたことに応答して、上書きするための記憶場所として有効なエントリの1つを選択するとともに、選択された有効な記憶場所のエントリを新しいエントリで上書きするステップを含む、ネットワークスイッチにおいて転送エントリを記憶するための方法。 - 上書きするための記憶場所として有効なエントリの1つを選択するステップは、上書きするための記憶場所として有効なエントリの1つをランダムに選択するステップを含む、請求項20に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/409,184 | 1999-09-30 | ||
US09/409,184 US6775281B1 (en) | 1999-09-30 | 1999-09-30 | Method and apparatus for a four-way hash table |
PCT/CA2000/001061 WO2001024440A2 (en) | 1999-09-30 | 2000-09-18 | Method and apparatus for a four-way hash table |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003510963A JP2003510963A (ja) | 2003-03-18 |
JP2003510963A5 JP2003510963A5 (ja) | 2007-10-11 |
JP4482259B2 true JP4482259B2 (ja) | 2010-06-16 |
Family
ID=23619397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001527500A Expired - Lifetime JP4482259B2 (ja) | 1999-09-30 | 2000-09-18 | 4ウェイハッシュ表のための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (3) | US6775281B1 (ja) |
JP (1) | JP4482259B2 (ja) |
CN (1) | CN1179523C (ja) |
AU (1) | AU7264400A (ja) |
CA (1) | CA2385331C (ja) |
GB (1) | GB2370187B (ja) |
WO (1) | WO2001024440A2 (ja) |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7810152B2 (en) * | 2002-05-08 | 2010-10-05 | Broadcom Corporation | System and method for securely controlling access to device functions |
US7549056B2 (en) | 1999-03-19 | 2009-06-16 | Broadcom Corporation | System and method for processing and protecting content |
US6775281B1 (en) * | 1999-09-30 | 2004-08-10 | Mosaid Technologies, Inc. | Method and apparatus for a four-way hash table |
DE60116195T2 (de) * | 2000-07-07 | 2006-09-07 | Broadcom Corp., Irvine | Vorrichtung und Verfahren zur Verschleierung von Eingangsparametern |
US6633567B1 (en) * | 2000-08-31 | 2003-10-14 | Mosaid Technologies, Inc. | Method and apparatus for searching a filtering database with one search operation |
JP2002334114A (ja) * | 2001-05-10 | 2002-11-22 | Allied Tereshisu Kk | テーブル管理方法及び装置 |
US6990102B1 (en) | 2001-05-10 | 2006-01-24 | Advanced Micro Devices, Inc. | Parallel lookup tables for locating information in a packet switched network |
US7099325B1 (en) * | 2001-05-10 | 2006-08-29 | Advanced Micro Devices, Inc. | Alternately accessed parallel lookup tables for locating information in a packet switched network |
US7586940B1 (en) | 2001-07-24 | 2009-09-08 | Cisco Technology, Inc. | Forwarding packets in a gateway performing network address translation (NAT) |
US7203317B2 (en) * | 2001-10-31 | 2007-04-10 | Hewlett-Packard Development Company, L.P. | System for enabling lazy-revocation through recursive key generation |
US7058642B2 (en) * | 2002-03-20 | 2006-06-06 | Intel Corporation | Method and data structure for a low memory overhead database |
US7277426B2 (en) | 2002-05-24 | 2007-10-02 | Mosaid Technologies, Inc. | Method and apparatus for reordering entries in a multi probe lookup |
US7274694B1 (en) * | 2003-01-09 | 2007-09-25 | Cisco Technology, Inc. | Defining link aggregation across a stack |
US7069268B1 (en) * | 2003-01-13 | 2006-06-27 | Cisco Technology, Inc. | System and method for identifying data using parallel hashing |
JP3823089B2 (ja) * | 2003-01-27 | 2006-09-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 |
US7408930B2 (en) * | 2003-02-07 | 2008-08-05 | Fujitsu Limited | Address learning to enable high speed routing table lookups |
CN100378725C (zh) * | 2003-09-04 | 2008-04-02 | 摩托罗拉公司 | 一种产生用于提供与文本对应的语音的信号的方法 |
US7047453B2 (en) * | 2003-11-13 | 2006-05-16 | Nokia, Inc. | Method and apparatus for managing network traffic using cyclical redundancy check hash functions |
US7474653B2 (en) * | 2003-12-05 | 2009-01-06 | Hewlett-Packard Development Company, L.P. | Decision cache using multi-key lookup |
US8085772B2 (en) | 2003-12-31 | 2011-12-27 | Intel Corporation | Packet forwarding |
US7359381B2 (en) * | 2004-01-30 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Parallel hardware arrangement for correlating an external transport address pair with a local endpoint association |
US7634655B2 (en) * | 2004-02-13 | 2009-12-15 | Microsoft Corporation | Efficient hash table protection for data transport protocols |
US7424016B2 (en) * | 2005-04-05 | 2008-09-09 | Cisco Technology, Inc. | Distributing a stream of packets across available output paths within a network |
US7680806B2 (en) * | 2005-05-17 | 2010-03-16 | Cisco Technology, Inc. | Reducing overflow of hash table entries |
US7822033B1 (en) * | 2005-12-30 | 2010-10-26 | Extreme Networks, Inc. | MAC address detection device for virtual routers |
US7894451B2 (en) | 2005-12-30 | 2011-02-22 | Extreme Networks, Inc. | Method of providing virtual router functionality |
CN100407705C (zh) * | 2006-04-12 | 2008-07-30 | 华为技术有限公司 | 一种路由器控制方法和系统 |
TWI324471B (en) * | 2006-06-01 | 2010-05-01 | Via Tech Inc | Mac address management method |
US8345685B2 (en) * | 2006-06-09 | 2013-01-01 | Ethernety Networks Ltd | Method and device for processing data packets |
CN100452043C (zh) * | 2006-09-06 | 2009-01-14 | 南京中兴软创科技有限责任公司 | 一种多索引散列表的存储和检索方法 |
DE102007018403B4 (de) * | 2007-04-17 | 2009-06-25 | Vita-X Ag | Computersystem und Verfahren zur Speicherung von Daten |
US8312541B2 (en) * | 2007-07-17 | 2012-11-13 | Cisco Technology, Inc. | Detecting neighbor discovery denial of service attacks against a router |
US20090025351A1 (en) * | 2007-07-26 | 2009-01-29 | Harry T. Faeldan | Tri-wheeled modular housing telescopic grass trimmer |
US8463610B1 (en) * | 2008-01-18 | 2013-06-11 | Patrick J. Bourke | Hardware-implemented scalable modular engine for low-power speech recognition |
US7852486B2 (en) * | 2008-02-07 | 2010-12-14 | Board Of Regents, The University Of Texas System | Wavelength and intensity monitoring of optical cavity |
US7916735B2 (en) | 2008-12-02 | 2011-03-29 | At&T Intellectual Property I, L.P. | Method for applying macro-controls onto IP networks using intelligent route indexing |
CN101692651B (zh) * | 2009-09-27 | 2014-12-31 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
US20110249676A1 (en) * | 2010-04-09 | 2011-10-13 | Bijendra Singh | Method and System for Forwarding and Switching Traffic in a Network Element |
US8880554B2 (en) * | 2010-12-03 | 2014-11-04 | Futurewei Technologies, Inc. | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment |
US8605732B2 (en) | 2011-02-15 | 2013-12-10 | Extreme Networks, Inc. | Method of providing virtual router functionality |
EP2515499B1 (de) * | 2011-04-21 | 2015-10-28 | Wibu-Systems AG | Verfahren zum Erzeugen eines kryptographischen Schlüssels für ein geschütztes digitales Datenobjekt auf Basis von aktuellen Komponenten eines Rechners |
JP5610227B2 (ja) * | 2011-05-18 | 2014-10-22 | 株式会社日立製作所 | 計算機及び識別子管理方法 |
WO2013020002A1 (en) | 2011-08-02 | 2013-02-07 | Cavium, Inc. | Incremental update of rules for packet classification |
US8775776B2 (en) | 2012-01-18 | 2014-07-08 | International Business Machines Corporation | Hash table using hash table banks |
US8787373B2 (en) | 2012-01-19 | 2014-07-22 | International Business Machines Corporation | Multicast miss notification for a distributed network switch |
CN102682116B (zh) * | 2012-05-14 | 2014-06-11 | 中兴通讯股份有限公司 | 基于哈希表的表项处理方法及其装置 |
US8854973B2 (en) | 2012-08-29 | 2014-10-07 | International Business Machines Corporation | Sliced routing table management with replication |
US9124527B2 (en) * | 2012-08-29 | 2015-09-01 | International Business Machines Corporation | Sliced routing table management |
US9215171B2 (en) | 2012-08-29 | 2015-12-15 | International Business Machines Corporation | Hashing-based routing table management |
US8792494B2 (en) | 2012-09-14 | 2014-07-29 | International Business Machines Corporation | Facilitating insertion of device MAC addresses into a forwarding database |
CN103874047B (zh) * | 2012-12-17 | 2017-08-04 | 华为终端有限公司 | 服务信息发现方法及设备 |
US8854972B1 (en) * | 2013-01-25 | 2014-10-07 | Palo Alto Networks, Inc. | Security device implementing flow lookup scheme for improved performance |
US10474652B2 (en) * | 2013-03-14 | 2019-11-12 | Inpixon | Optimizing wide data-type storage and analysis of data in a column store database |
US9276846B2 (en) * | 2013-03-15 | 2016-03-01 | Cavium, Inc. | Packet extraction optimization in a network processor |
US9154934B2 (en) | 2013-03-28 | 2015-10-06 | Futurewei Technologies, Inc. | System and method for pre-association discovery |
CN104579948A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种报文分片处理方法及装置 |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US10419267B2 (en) * | 2014-01-22 | 2019-09-17 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Network control software notification with advance learning |
CN105099913B (zh) * | 2014-04-21 | 2018-07-20 | 新华三技术有限公司 | 一种报文转发方法及设备 |
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
JP6520259B2 (ja) | 2015-03-18 | 2019-05-29 | 富士通株式会社 | 通信装置及び通信制御方法 |
US9898069B1 (en) | 2016-03-31 | 2018-02-20 | Amazon Technologies, Inc. | Power reduction methods for variable sized tables |
US10003555B1 (en) | 2016-05-06 | 2018-06-19 | Amazon Technologies, Inc. | Power management of routing tables using vertical scaling |
US10200312B1 (en) | 2016-05-06 | 2019-02-05 | Amazon Technologies, Inc. | Power management of routing tables using horizontal scaling |
US11539622B2 (en) | 2020-05-04 | 2022-12-27 | Mellanox Technologies, Ltd. | Dynamically-optimized hash-based packet classifier |
US11782895B2 (en) * | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
US11917042B2 (en) | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5032987A (en) | 1988-08-04 | 1991-07-16 | Digital Equipment Corporation | System with a plurality of hash tables each using different adaptive hashing functions |
JPH0285927A (ja) * | 1988-09-22 | 1990-03-27 | Hitachi Vlsi Eng Corp | 記憶装置 |
US5027350A (en) | 1988-10-20 | 1991-06-25 | Hewlett-Packard | Method and apparatus for providing a local area network bridge |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5473607A (en) * | 1993-08-09 | 1995-12-05 | Grand Junction Networks, Inc. | Packet filtering for data networks |
US6091725A (en) * | 1995-12-29 | 2000-07-18 | Cisco Systems, Inc. | Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network |
US5802054A (en) | 1996-08-15 | 1998-09-01 | 3Com Corporation | Atomic network switch with integrated circuit switch nodes |
US5949786A (en) * | 1996-08-15 | 1999-09-07 | 3Com Corporation | Stochastic circuit identification in a multi-protocol network switch |
US5914938A (en) | 1996-11-19 | 1999-06-22 | Bay Networks, Inc. | MAC address table search unit |
US6034958A (en) * | 1997-07-11 | 2000-03-07 | Telefonaktiebolaget Lm Ericsson | VP/VC lookup function |
US6223172B1 (en) * | 1997-10-31 | 2001-04-24 | Nortel Networks Limited | Address routing using address-sensitive mask decimation scheme |
US6430184B1 (en) * | 1998-04-10 | 2002-08-06 | Top Layer Networks, Inc. | System and process for GHIH-speed pattern matching for application-level switching of data packets |
US6775281B1 (en) * | 1999-09-30 | 2004-08-10 | Mosaid Technologies, Inc. | Method and apparatus for a four-way hash table |
US6690667B1 (en) * | 1999-11-30 | 2004-02-10 | Intel Corporation | Switch with adaptive address lookup hashing scheme |
US6865577B1 (en) * | 2000-11-06 | 2005-03-08 | At&T Corp. | Method and system for efficiently retrieving information from a database |
-
1999
- 1999-09-30 US US09/409,184 patent/US6775281B1/en not_active Expired - Lifetime
-
2000
- 2000-09-18 CA CA002385331A patent/CA2385331C/en not_active Expired - Lifetime
- 2000-09-18 AU AU72644/00A patent/AU7264400A/en not_active Abandoned
- 2000-09-18 WO PCT/CA2000/001061 patent/WO2001024440A2/en active Application Filing
- 2000-09-18 JP JP2001527500A patent/JP4482259B2/ja not_active Expired - Lifetime
- 2000-09-18 CN CNB008137080A patent/CN1179523C/zh not_active Expired - Lifetime
- 2000-09-18 GB GB0207003A patent/GB2370187B/en not_active Expired - Lifetime
-
2002
- 2002-06-28 US US10/187,472 patent/US6862287B2/en not_active Expired - Lifetime
-
2005
- 2005-02-28 US US11/069,635 patent/US7990958B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2001024440A2 (en) | 2001-04-05 |
AU7264400A (en) | 2001-04-30 |
GB0207003D0 (en) | 2002-05-08 |
US20050147113A1 (en) | 2005-07-07 |
GB2370187A (en) | 2002-06-19 |
CN1377543A (zh) | 2002-10-30 |
CA2385331A1 (en) | 2001-04-05 |
US6775281B1 (en) | 2004-08-10 |
JP2003510963A (ja) | 2003-03-18 |
GB2370187B (en) | 2003-12-10 |
US20030026259A1 (en) | 2003-02-06 |
WO2001024440A3 (en) | 2001-11-08 |
US7990958B2 (en) | 2011-08-02 |
CA2385331C (en) | 2008-08-12 |
US6862287B2 (en) | 2005-03-01 |
CN1179523C (zh) | 2004-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4482259B2 (ja) | 4ウェイハッシュ表のための方法および装置 | |
US8855121B2 (en) | Congestion management in a network | |
US6606681B1 (en) | Optimized content addressable memory (CAM) | |
US6052683A (en) | Address lookup in packet data communication networks | |
US5920886A (en) | Accelerated hierarchical address filtering and translation using binary and ternary CAMs | |
JP3453148B2 (ja) | スイッチング装置における高速可変長ベストマッチルックアップ | |
US5909440A (en) | High speed variable length best match look-up in a switching device | |
CA2434876C (en) | Method and apparatus for ternary content addressable memory (tcam) table management | |
US6192051B1 (en) | Network router search engine using compressed tree forwarding table | |
US6665297B1 (en) | Network routing table | |
US7443841B2 (en) | Longest prefix matching (LPM) using a fixed comparison hash table | |
CN111937360B (zh) | 最长前缀匹配 | |
GB2462493A (en) | Storing and retrieving data from a hash table which has a plurality of columns comprising determining if an entry is empty or not for each column | |
JP2000151691A (ja) | インタ―ネット網等の高速通信網のノ―ドのル―ティング表構築のためのプレフィックス分析による情報探索用メモリ | |
US6697380B1 (en) | Multiple key lookup arrangement for a shared switching logic address table in a network switch | |
WO2002098055A2 (en) | Load balancing in ip address lookup | |
EP1232612B1 (en) | Table lookup mechanism for address resolution in a packet network switch | |
US20040210588A1 (en) | Methods and apparatus for address lookup | |
KR20040046424A (ko) | 3 단계 테이블로 구성된 아이피 주소 룩업 시스템 및 그방법 | |
US20010015976A1 (en) | Table-type data retrieval mechanism, packet processing system using the same, and table-type data retrieval method for said packet processing system | |
KR100459542B1 (ko) | 인터넷 프로토콜 주소 룩-업 장치 | |
KR100460188B1 (ko) | 인터넷 프로토콜 주소 룩-업 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070827 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070827 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090713 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100209 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100223 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100319 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130326 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4482259 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130326 Year of fee payment: 3 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130326 Year of fee payment: 3 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D04 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130326 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140326 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |