JP2005198285A - ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法 - Google Patents

ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法 Download PDF

Info

Publication number
JP2005198285A
JP2005198285A JP2004374336A JP2004374336A JP2005198285A JP 2005198285 A JP2005198285 A JP 2005198285A JP 2004374336 A JP2004374336 A JP 2004374336A JP 2004374336 A JP2004374336 A JP 2004374336A JP 2005198285 A JP2005198285 A JP 2005198285A
Authority
JP
Japan
Prior art keywords
hash
prefix
hash table
prefixes
address lookup
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
Application number
JP2004374336A
Other languages
English (en)
Inventor
Suresh Rajgopal
ラゴパル スレッシュ
Lun-Bin Huang
ホワン ルン−ビン
Nicholas Richardson
リチャードソン ニコラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
Original Assignee
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ST MICROELECTRONICS Inc, STMicroelectronics lnc USA filed Critical ST MICROELECTRONICS Inc
Publication of JP2005198285A publication Critical patent/JP2005198285A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】 改良したIPアドレスルックアップ技術を提供する。
【解決手段】 インターネットプロトコルアドレスプレフィックスを、第一ハッシュ及び単一リハッシュの両方に対して衝突が発生した後にオンデマンドでハッシュテーブルを割当てたメモリブロック内へハッシュさせる。各ハッシュテーブルに対して割当てられたメモリブロックの数は制限されており、付加的なプレフィックスはオーバーフロー内容参照可能メモリにより取扱われる。各ハッシュテーブルは特定長のプレフィックスのみを包含しており、異なるハッシュテーブルは異なる長さのプレフィックスを包含している。可能なプレフィックス長のサブセットのみがハッシュテーブルにより収容され、プレフィックスの残部は内容参照可能メモリ又は同様の代替的なアドレスルックアップファシリティにより取扱われる。
【選択図】 図1

Description

本発明は、大略、インターネットプロトコルアドレスプレフィックスルックアップに関するものであって、更に詳細には、インターネットプロトコルアドレスプレフィックスルックアップを実施するためにハッシングを使用する技術に関するものである。
インターネットプロトコル(IP)のようなパケットを基礎とした通信プロトコル用のネットワークルータは、そのパケットに対する意図されたデスティネーション即ち宛先へのルート即ち経路に沿っての次のネイバー(neighbor)へ入ってくる情報を指向させる。これを行うために、典型的に、該ルートに沿っての各ルータは、デスティネーションIPプレフィックスに対する適宜の次ホップアドレスを決定するためにルーチングテーブルに関してアドレスプレフィックス(通常、単に「プレフィックス」と呼称される)ルックアップ動作を実施せねばならない。このような動作は、埋設型ネットワークプロセッサか、又は、より一般的には、別個のネットワークサーチエンジンの何れかにより実施される。デスティネーションプレフィックス及び関連する次ホップ情報からなるプレフィックス(ルーチング)テーブルに関するサーチを実施することに加えて、ネットワークサーチエンジンは、又、典型的に、プレフィックステーブルを維持するタスク(即ち、プレフィックスの挿入及び削除)を行う。
当初、ネットワークサーチエンジン用のハードウエアは三重内容参照可能メモリ(TCAM)を使用しており、それは、ビット比較器と2個のメモリ要素、即ちデータを格納するために1つと比較マスクを格納する他のもの、からなるタイプのメモリである。TCAMは、比較結果を「常に一致」(即ち、「don’t care」)へオーバーライドさせるべくプログラムすることが可能なマスク値の制御下でデータメモリ内に格納されている値に対して入ってくるデータを比較する。動作において、TCAMを基礎としたネットワークサーチエンジンは、ルーチングテーブルの全てのプレフィックスを特定の優先付けした順番でTCAMアレイ内に格納することにより機能し、各プレフィックスの関連する次ホップ情報は別のメモリ内の対応する(リンクされた)位置内に格納される。プレフィックスルックアップ期間中に、キーが該TCAMアレイのコンパランド(比較オペランド)上に配置され且つ該メモリ内の全てのプレフィックスに対して比較される。全ての比較からの一致結果のアレイが優先度論理ユニットを介して送られて最高の優先度の一致を決定し、その勝利した一致を使用して次ホップメモリをアドレスし、そこから対応する次ホップ情報が読取られ且つリターンされる。
然しながら、TCAMを基礎としたソリューションは通常低速であり、高価であり、且つ動作期間中にかなりのパワーを消費する。より最近には、汎用プロセッサ及び一般的なメモリを使用するソフトウエアを基礎としたサーチエンジンが開発されている。このような装置においては、ルーチングテーブルプレフィックス及び次ホップ情報は何らかのアルゴリズムに従って構築されたデータ構造でメモリ内に格納される。該汎用プロセッサを使用して一連のメモリ読取り及び比較演算を介してサーチが実施される。
従って、改良したIPアドレスルックアップスキームに対する必要性が存在している。
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、第一ハッシュ及び単一リハッシュの両方に対する衝突の後にオンデマンドでハッシュテーブルに割当てられたメモリブロック内へのインターネットプロトコルアドレスプレフィックスのハッシングを、ネットワークルータにおいて使用するために、提供することを主要な目的としている。
各ハッシュテーブルに対して割当てられるメモリブロックの数は制限されており、付加的なプレフィックスはオーバーフロー内容参照可能メモリにより取扱われる。各ハッシュテーブルは特定長のプレフィックスのみを包含し、異なるハッシュテーブルは異なる長さのプレフィックスを包含する。可能なプレフィックス長からなるサブセットのみが該ハッシュテーブルにより収容され、プレフィックスの残部は該内容参照可能メモリ又は同様の代替的なアドレスルックアップファシリティにより取扱われる。
本明細書において本発明の原理を説明するために以下に説明する図1乃至6及び種々の実施例は単に例示的なものであって本発明の技術的範囲を制限するような態様で解釈すべきものではない。当業者により理解されるように、本発明の原理は任意の適宜に構成された装置で実現することが可能である。
図1は本発明の一実施例に基づくハッシュを基礎としたネットワークサーチエンジンを使用した処理システムを示している。処理システム100は、インターネットプロトコル(IP)ネットワークルータの一部を実現しており且つ外部メモリ103及び104へ結合されているネットワークパケットサーチエンジン(NPSE)102へ結合されているシステムプロセッサ/制御器即ちネットワーク処理ユニット(NPU)101を包含している。メモリ103はオーバーフロー内容参照可能メモリ(CAM)であり、一方外部メモリ103は次ホップ情報を保持する。NPSE102はシステム制御器101からのアドレス及び/又はコマンド及び次ホップアドレスをルックアップするためのプレフィックスを受取り、且つ次ホップアドレスをシステム制御器101へリターンする。システム制御器101はバックプレーン105へ結合されており且つネットワークインターフェース106を介してネットワーク(不図示)へ結合している。
本発明においては、NPSE102が可能な範囲において、オンチップSRAMメモリ107内のハッシュテーブルを使用してIPルックアップを実施する。ハッシングはテーブル又はアレイに対して非逐次的(ほぼランダム)アクセスを可能とするためのよく知られた技術であり、広範囲の値を小型のメモリ内に格納することが必要である場合に有用である。ハッシング用の例示的なアプリケーションは、データベース、コンパイラ、アッセンブラを包含している。コンパイラにおいて、例えば、ハッシングは、全ての可能な6キャラクタワードからなるより大きな空間(366)からアルファニューメリックキャラクタ(26+10)からなる小さな(数百)セットのトークン又はキーワードを認識するために使用される。動作において、ハッシング関数Hが「キー」と呼ばれる入力データ値に対して適用されてハッシュテーブル内へのインデックスを生成し、該テーブルは該トークン又はキーワードを格納し且つ該トークン又はキーワードをルックアップするために使用される。
ハッシング関数Hは、それがハッシュテーブルを介してキーを一様に及び/又はランダムに分布させるようなものでなければならない。多数のキーが小さな組のトークンに対してマップされるので、2つのキーが、ハッシュされた場合に、同一のテーブルインデックスを発生する場合が生じる運命にあり、その状態は「衝突」と呼ばれる。良好なハッシング関数は衝突を最小とするが、発生する衝突は2つの態様で取扱うことが可能であり、即ち、クローズド(closed)ハッシュテーブルアプローチにおいては、ハッシング衝突は、別の関数でのリハッシングによるか又は使用可能なエントリを見付け出すために線形的に該テーブルをステップスルーすることの何れかにより解決し、一方オープン(open)ハッシュテーブルアプローチにおいては、各テーブルエントリに対してアイテムのリストを維持し且つ所望の識別子を見付け出すために衝突が発生する場合にトラバースする。クローズドハッシュテーブルはテーブルの寸法より多くのエントリを収容することは不可能であるが、オープンハッシュテーブルの場合にはそうではない。
ハッシングはIPルックアップに必要な幾つかの基準を満足し、且つ、幾つかの態様においては、ハッシュテーブルは通常のスタチックランダムアクセスメモリ107内に存在することが可能であるので、高価なメモリセル条件なしで内容参照可能メモリと同様に動作する。ハッシングはハッシュ関数を計算するのに必要な時間及びアレイ内へのインデックスに依存して、CAMにおけるような高速のルックアップでメモリへの直接的なアクセスを提供する。アップデート(挿入又は削除)はCAMにおけるように高速である。良好なハッシュ関数がある場合には、格納条件はCAMにおけるようにハッシュテーブル内に格納することが必要なプレフィックスの数と共に線形的に増加するに過ぎない。
然しながら、ハッシングがIPルックアップに対する実行可能なソリューションを提供する前に2つの問題に対処せねばならない。第一に、ハッシング期間中の衝突は効率的に取扱われねばならない。第二に、ハッシングはコンパランドとの正確な一致に対する自然なソリューションであるが、IPルックアップは最長のプレフィックスの一致を必要とする。
最長プレフィックス一致問題を解決するためにハッシングを使用するための1つの提案においては、プレフィックス長により組織化されたハッシュテーブルでルーチングテーブルを構築することである。サーチは最長のプレフィックス長でハッシュテーブルにおいて開始し、同一長の全てのプレフィックスに関しハッシュテーブル内においてバイナリサーチを実施する。一致が見つからない場合には、サーチは次に最も長い長さのハッシュテーブルで継続し、最長の一致したプレフィックスが見つかるまで反復的アルゴリズムにおいて以下同様に継続する。この反復的ソリューションはソフトウエアにおいて良好に動作するが、パイプライン化でのハードウエア実現の表示を与えるものではなかった。更に、該ソリューションはダイナミックランダムアクセスメモリ(DRAM)を使用し、それは使用可能なメモリの量に関して異なる組の拘束を課している。
別の提案されたハッシュを基礎としたIPルックアップスキームは、並列ハッシュテーブルでプログラマブル論理装置(PLD)における複数のハードウエアハッシング関数実現例を使用する。提案された特定のアーキテクチャはマルチキャストパケット及びパケットフローの分類に対処しており、従って、正確な一致のみを関心事としており、最長の一致を関心事としているものではない。
本発明においては、オンチップSRAM107が少なくとも1つのハッシュ関数108を使用して作成され且つアクセスされるハッシュテーブル109を保持しており、オーバーフローCAM103が衝突を取扱う。衝突を最小とさせるために、使用可能なメモリ資源及びリハッシュを効率的に使用するためにオンデマンドのブロックを基礎としたアロケーションスキームによってSRAM107の使用を最大化させる。プレフィックス長により組織化された複数のハッシュテーブルに亘ってのハードウエアにおける並列ルックアップは単一のハッシュからの正確な一致結果を最長プレフィックス一致へ変換させる基本的な問題に対処することを助ける。ハッシュテーブルにおける仮想バンクアドレス変化は異なるプレフィックス長に亘り寸法決定する。メモリをクロスバーの使用を介して必要とされるように何れかのバンクへ動的に割当てられる小さなブロックへ分割することにより、ハッシュテーブル寸法は、各データセットに対して調節することが可能であり且つサーチエンジンの容量は全ての条件下で最大化される。
本発明のハードウエアソリューションは、オプチカルキャリアレベル192(OC−192)データレートにおいて及びそれを超えてのパケットルックアップをサポートするため、及び現在のTCAMシステムのパワー及びコストの僅かな部分で中程度のアップデートレートを取扱うために、256,000インターネットプロトコルバージョン4(IPv4)プレフィックスを超えて大きなルーチングテーブルを収容すべく設計されている。
図2は本発明の一実施例に基づいてハッシュを基礎としたIPルックアップスキームにおけるハッシュテーブルを使用するプロセスを示したハイレベルのフローチャートである。ブロックを基礎としたルックアップスキームは、IP次ホップアドレスルックアップを実施するために、CAM103の小さな量と共に、SRAM107を使用する。SRAM107を最大に使用することを確保することは衝突を最小とすることを可能とする。そのために、本発明における最初の最適化は、コンパランドの最初のハッシュからの結果をリハッシュするために付加的なハッシング関数を使用することである。SRAMの速度制限のために、リハッシュは1つのリハッシュのみに制限される。即ち、コンパランドは、2つの異なるハッシュ関数108を使用して2度(高々)ハッシュされる。好適には、与えられたプレフィックスに対するハッシュテーブルエントリのアロケーション即ち割当ては、異なるプレフィックスに対して以前に割当てていたエントリとの衝突が発生しない限り最初のハッシュの結果を基礎とする。その場合には、最初のハッシュの結果は2番目の異なるハッシング関数を使用してリハッシュされる。
図3は本発明の一実施例に基づくハッシュを基礎としたIPルックアップスキームにおけるハッシュテーブルに対してのメモリのブロックを基礎としたアロケーション即ち割当てを更に詳細に例示した模式図である。本発明において衝突を最小とさせるための2番目の最適化は、各ハッシュテーブルに対してブロックを基礎としたSRAMアロケーション即ち割当てを使用することである。SRAMの小さく固定したブロックが、最初に、与えられたハッシュテーブルに対して割当てられる。リハッシュがもはや空のスロットを発生するものでない場合には(即ち、既存のブロックが満杯)、別のブロックが割当てられ且つそのIPアドレスは2番目のブロック内へハッシュされる。このオンデマンドブロックアロケーションは、衝突を最小としながら使用可能なSRAMの使用を効率的なものとさせる。無限のSRAMの場合には、ブロックを継続的に割当て且つ衝突を完全に回避することが可能である。然しながら、ある点において、SRAMは不充分な使用を示し始め且つ付加的なブロックのアロケーションはもはや効率的なものでなくなる。その点において、衝突を取扱うために更なるブロックを割当てるのではなく、付加的なプレフィックスエントリがオーバーフローCAM103へディスパッチされる。
付加的なプレフィックスがオーバーフローCAM103へディスパッチされる点を選択する上でのゴールは、SRAM107に関する使用を最大としながらオーバーフローCAM103の寸法を最小とさせることである。与えられたハッシュテーブルに対してのブロックの割当てを何時停止するかを決定するために異なる基準を設定することが可能であり、その最も簡単な方法は、固定した(最大)数のブロックnを前もって割当て且つこれらブロックの全てがハッシュテーブルに対して割当てられた場合に停止することであり、これは設計リスクを減少させるアプローチである。
ブロックを基礎としたアロケーションスキームは、マルチレベルハッシングアプローチとして考えることが可能であり、その場合に、レベルの数は非常に大きく(割当てることが可能なブロックの最大数と同じ)且つSRAMの寸法は各レベルにおいて同一である。このアプローチは、ハードウエア実現に対するメモリアーキテクチャの組織化を容易なものとさせる。
図2を参照すると、メモリの少なくとも1個の割当てられたブロックを有しているハッシュテーブルを使用するプロセス200は、そのハッシュテーブルへ付加されるべき新たなプレフィックスで開始する(ステップ201)。この新たなプレフィックスはハッシュテーブル内のメモリの唯一存在している即ち最も最近に割当てられたブロックに対してハッシュされ(ステップ202)、且つそのハッシュ結果が当該ブロックにおける既存のエントリと衝突するか否かの判別がなされる(ステップ203)。衝突しない場合には、そのプレフィックスがハッシュテーブルへ付加される(ステップ204)。然しながら、衝突する場合には、そのハッシュ結果は2番目のハッシュ関数を使用してリハッシュされ(ステップ205)且つそのリハッシュ結果が当該ブロック内の既存のエントリと衝突するか否かについての判別が再度なされる(ステップ206)。衝突が識別されない場合には、そのプレフィックスがハッシュテーブルへ付加される(ステップ204)。
リハッシュの後に衝突が存在する場合には、最大数のブロックが既にハッシュテーブルに対して割当てられているか否かの判別が行われる(ステップ207)。そうでない場合には、メモリの付加的なブロックがハッシュテーブルへ割当てられ且つそのプレフィックスが新たに割当てられたブロック内にハッシュされる(ステップ208)。然しながら、そうである場合には、そのプレフィックスはオーバーフローCAMへディスパッチされる(ステップ209)。次いで、本プロセスは、別のプレフィックスがハッシュテーブルへ付加することが必要とされるまでアイドルとなる(ステップ210)。
図4は本発明の一実施例に基づいてハッシュを基礎としたIPルックアップスキームにおいて最長プレフィックス一致を実施するためのメカニズムを示している。ハッシュテーブルで最長プレフィックス一致を実施することの基本的な問題は、各異なるプレフィックス長に対しハッシュテーブルT4−T32を作成することにより本発明において対処されている。従って、長さ24ビットの全てのプレフィックスはハッシュテーブルT24内にハッシュされ、且つその他のプレフィックス長についても以下同様である。上述したメモリアロケーションスキームは、各プレフィックス長と関連するハッシュテーブルに対して使用される。
動作について説明すると、32ビットIPアドレスに対する最長プレフィックス一致が必要とされる場合には、32ビットプレフィックスに対するハッシュテーブルT32内のエントリに対する比較のためにアドレス全体をハッシュすることに加えて、そのアドレスの全てのより小さなプレフィックス長(31,30,29,28等)がそれらの夫々のハッシュテーブル(T31,T30,T29,T28,等)内のエントリとの比較のために並列的に同時的にハッシュされる。各ハッシュテーブルT4−T32からの一致信号(M32,M31,M30,M29,M28,等)がプライオリティエンコーダ400へパスされて複数の一致を解消し且つ最長プレフィックス一致を決定する。このように、ハッシングにより決定された正確なマッチング即ち一致を異なるプレフィックス長に関して結合させることが可能である。異なる長さのプレフィックス及び該マッチ信号から派生され且つハッシュテーブルT4−T32の何れにおいても一致を表わすものでない信号が、ハッシュテーブルが許容された最大数のブロックを使用した場合に、オーバーフロー処理のためにCAM103へパスされる。
全てのハッシュテーブルの格納の複雑性を最小とするために、付加的な最適化が必要とされる。典型的に、IPv4プレフィックスの非常に僅か(<1%)が1−16ビットレンジにあり、そのことは自律的システムマップ(ASMap)ルーチングテーブル分布から理解され且つ異なるルーチングテーブル分布の分析において独立的に検証される。従って、ハッシングは、好適には、16−32ビット長範囲におけるプレフィックスに対してのみ選択的に使用される。残りのプレフィックス長(1−15)は、オーバーフローCAM103を使用して、又はマルチビット(圧縮されているか又は圧縮されていない)トライを使用することにより取扱うことが可能である。ハッシュテーブルが使用されるプレフィックス長の選択は、オプションとして、プログラム可能なものとすることが可能である。
ハッシュテーブルにおける各エントリは、単にプレフィックス(最大で32ビット)及び有効ビットを包含することが必要である(全部で33ビット)。各プレフィックスに対する次ホップデータがサーチエンジン102からオフチップで、ハッシュテーブルブロックアドレス及びそのオフセットからオンチップで発生される次ホップインデックスによりアクセスされる拡張メモリ104内に格納される。該インデックスは次ホップアドレスとして又は次ホップアドレスを発生するマッピングテーブルに対するアドレスとしてオフチップへ移行する。このことは、次ホップデータ(及びルート毎情報)をオンチップで格納する必要性を取除く。最近のルータは与えられたルートに関する統計を収集するために付加的なメモリを必要とするので、ルート毎情報をオフチップで実現することが最善であり、且つシステム設計者に対して柔軟性を提供する。オフチップルート毎情報の格納は外部メモリ104に関して何らかの条件を課すものであるが、このような通常のメモリはより廉価である。
図5は本発明の一実施例に基づくブロックを基礎としたメモリアロケーション、最長プレフィックス一致、ハッシングIPルックアップスキームに対する例示的な実現例を示している。ブロックを基礎としたハッシングIPルックアップサーチメカニズム500は、長さ17−32のプレフィックスに対する選択的ハッシング及び基本的メモリブロック寸法1KX32を使用したブロックを基礎としたメモリアロケーションで実現した512Kエントリルーチングテーブルを包含している。メモリ501は、各プレフィックス長に対して1個ずつ17個のバンクを具備するクロスバー構造として組織化されている。全ての17個のハッシュ関数H16−H32は、10ビットブロックオフセットアドレスを発生するために並列的に計算される。
各メモリブロック0−511は関連する17ビットブロックコンフィギュレーションレジスタ(BCR)501を有しており、それは存在する場合に対応するメモリブロックが割当てられるプレフィックス長/ハッシュ関数のコンフィギュレーションを包含しており、且つ割当てられたメモリブロックに対するルーチングのために適宜のハッシュ関数から10ビットブロックオフセットアドレスの選択を司る。
各メモリブロックは、入ってくるプレフィックスからのビットの適宜のサブセットをハッシュ関数により発生されたブロックオフセットアドレスにおけるSRAMから読取ったブロックエントリとマッチングさせ且つヒット又はミスを発生する出力において比較器を具備する1KX32SRAMメモリである。ルックアップ期間中に、全てのプレフィックス長に対する全てのブロックが並列的にアクセスされる。該メモリブロックは、又、シーケンシャルな読取り/書込み動作をサポートしており、その期間中に、アドレスがハッシュ関数出力からくることはない。
図6は本発明の一実施例に基づくハッシングIPルックアップスキームに対するルックアップパイプラインを例示している。7ステージパイプライン600は17個のプレフィックス長の全てに対して並列的に実行される。ハッシュステージH1,H2はIPアドレスをハッシュし且つブロックオフセットアドレスを発生する。コンフィギャステージ即ち形態特定ステージC1,C2はブロックコンフィギュレーションレジスタを使用してブロックオフセットアドレスを適宜のメモリブロックに対してコンフィギャ即ち形態特定し且つ経路付けを行う。
ルックアップステージL1,L2は与えられたプレフィックス長に対して割当てられた全てのメモリブロックに対するメモリブロックへアクセスし、一方比較ステージCMP1,CMP2はメモリエントリを当該IPアドレスのプレフィックスサブセットと比較し且つマッチ即ち一致を発生する。マッチステージMATCHはマッチした即ち一致したラインを選択し(一致が識別された場合)且つ一致したプレフィックスを発生する。最長プレフィックスマッチステージLPMは優先度選択を実行して一致したプレフィックスの中で最長のプレフィックスを決定し、且つ次ホップステージNEXTHOPはブロックインデックス及びブロックオフセットアドレスから次ホップインデックスを発生する。
図示した実現例600において、第二ハッシュ関数H2とのリハッシュはパイプライン化されており且つ第一ハッシュ関数H1の結果が既知となる前に実施される。最大の処理能力を保証するために、ハッシュ関数H1及びH2及びルックアップの計算(即ち、最初の4個のステージ、H1/H2,C1/C2,L1/L2,CMP1/CMP2)は、全て、ルックアップがクロックサイクル毎に実施されることを保証するためにルックアップエンジンの基本周波数の2倍で実行することを必要とする。従って、第三ステージLOOKUPにおいてアクセスされるSRAMメモリブロックは2倍速いことが必要であり、即ち1つのクロックサイクルにおいて2つの読取りを実施することが必要である。200メガヘルツ(MHz)基本周波数は、200Mルックアップ/秒の処理能力を与えるためにはSRAMメモリブロックに対して少なくとも2.5ナノ秒(ns)アクセス時間を必要とする(即ち、400MHz)。次ホップデータのキューイング及びフェッチングは5−6サイクル程度かかる場合があり、ラウンドトリップレイテンシは12−13サイクルとなる。
既存のプレフィックスをアップデートすることは、次ホップインデックスへアクセスするためにルックアップを行うことを必要とし、該インデックスは、次いで、次ホップ情報をアップデートするために使用することが可能である。プレフィックスの挿入及び削除は、最初に、そのプレフィックスが存在しないか(挿入の場合)又は存在するか(削除の場合)を検証するためにルックアップを必要とする。そのプレフィックスの有無が検証されると、そのプレフィックスを挿入することが可能である。
プレフィックス挿入期間中、適宜のプレフィックス長と関連する全ての割当てられたSRAMメモリブロック内のアドレスされたエントリの有効ビットがシーケンシャルに検査される。そのビットがアサート即ち活性化されると、そのメモリブロックに対するアドレスされた位置が占有され、且つ次メモリブロックに対するアドレスされた位置が検査される。本プロセスは、アドレスされた位置において空のエントリを有するブロックまで(有効ビットはアサートされない)、又は最大数のメモリブロックがプレフィックス長に割当てられ且つ検査されるまで継続して行われる。このことは、ルックアップ動作がそのプレフィックスと関連するメモリブロックのうちのただ1つから一意的な一致を発生するように入ってくるプレフィックスを1つのメモリブロックのみに配置させることを確保する。
アップデートはルックアップほど頻繁なものでないことが予測され、従ってそのタスクを完了するためにルックアップサイクルの周期的なスティーリング即ち取合いが予測されるに過ぎない。考慮すべき幾つかの最悪なアップデート条件は、1つのプレフィックス長に割当てられている全てのメモリブロックが既に有効なエントリを包含している場合には、挿入をCAMにおいて実施することが必要であり、そのプレフィックスと関連する全てのブロックのトラバーサルとそれに続くCAM挿入を必要とする、ことを包含している。CAMも満杯である場合には、ブロックの再割当てが必要となり、そのことは計算上高価なものである場合がある。何故ならば、CAMエントリをSRAMメモリブロックへ戻すこと又は他のプレフィックスのために不充分に使用されているSRAMブロックを解放すること−両方ともリハッシュが関与する−が必要とされるからである。この状況は、好適には、メモリ管理及びブロック再割当てをバックグラウンドで開始することが可能であるようにCAMが満杯となる前に検知すべきである。
本発明はIPアドレスプレフィックスルックアップに対してハッシングを使用することを可能としている。オンデマンドでのブロックを基礎としたメモリ割当ては、与えられたハッシュテーブルに対して割当てられるブロックの最大数に対する制限を有しており、メモリアーキテクチャ組織化を簡単化させる。リハッシュ(1度のみ)及びオーバーフローCAMは衝突を取扱うために使用される。最長プレフィックスマッチ即ち一致は各プレフィックス長に対する並列ルックアップ及び結果的に得られるマッチのプライオリティエンコーディングにより識別される。
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
本発明の一実施例に基づくハッシュを基礎としたネットワークサーチエンジンを使用する処理システムを示した概略図。 本発明の一実施例に基づくハッシュを基礎としたIPルックアップスキームにおいてハッシュテーブルを使用するプロセスを示したハイレベルのフローチャート。 本発明の一実施例に基づくハッシュを基礎としたIPルックアップスキームにおけるハッシュテーブルに対するメモリのブロックを基礎とした割当てをより詳細に示した概略図。 本発明の一実施例に基づくブロックを基礎としたメモリの割当てハッシュを基礎としたIPルックアップスキーム内の最長プレフィックスマッチを決定するメカニズムを示した概略図。 本発明の一実施例に基づくブロックを基礎としたメモリ割当て最長プレフィックスマッチハッシングIPルックアップスキームに対する例示的具体例を示した概略図。 本発明の一実施例に基づくハッシングIPルックアップスキームに対するルックアップパイプラインを示した概略図。
符号の説明
100:処理システム
101:ネットワーク処理ユニット(NPU)
102:ネットワークパケットサーチエンジン(NPSE)
103,104:外部メモリ
105:バックプレーン
106:ネットワークインターフェース
107:オンチップSRAMメモリ

Claims (20)

  1. アドレスルックアップ構造において、
    アドレスルックアップ用のプレフィックスを格納する少なくとも1個のハッシュテーブル、
    前記少なくとも1個のハッシュテーブル内において発生する衝突に対しての少なくとも幾つかのプレフィックスを格納する内容参照可能メモリ、
    を有していることを特徴とするアドレスルックアップ構造。
  2. 請求項1において、前記少なくとも1個のハッシュテーブルが、前記少なくとも1個のハッシュテーブル内において衝突が発生しない全ての所要のプレフィックスを保持するのに充分な最小数のメモリブロック内に包含されていることを特徴とするアドレスルックアップ構造。
  3. 請求項1において、前記少なくとも1個のハッシュテーブルが所定の制限した数のメモリブロック内に包含されていることを特徴とするアドレスルックアップ構造。
  4. 請求項1において、前記少なくとも1個のハッシュテーブルが2つのハッシュ関数のうちの1つによりハッシュされるプレフィックスを包含しており、前記2つのハッシュ関数のうちの第一のもので衝突が発生する場合に前記2つのハッシュ関数のうちの第二のものが使用されることを特徴とするアドレスルックアップ構造。
  5. 請求項1において、前記少なくとも1つのハッシュテーブルが、各々が異なる長さのプレフィックスを包含している複数個のハッシュテーブルを有していることを特徴とするアドレスルックアップ構造。
  6. 請求項5において、更に、
    1つのプレフィックスの異なる長さの部分と前記複数個のハッシュテーブルのうちの2つ又はそれ以上の各々におけるプレフィックスとの間で複数の一致が発生する場合に最長のプレフィックスを選択するプライオリティエンコーダ、
    を有していることを特徴とするアドレスルックアップ構造。
  7. 請求項5において、前記複数個のハッシュテーブルがアドレッシングスキームの下で可能な異なる長さのプレフィックスのサブセットのみを包含しており、且つ前記異なる長さのプレフィックスの残部が前記内容参照可能メモリ内に格納されていることを特徴とするアドレスルックアップ構造。
  8. 請求項1に基づくアドレスルックアップ構造を包含するネットワークルータにおいて、更に、
    前記少なくとも1個のハッシュテーブルを包含しており且つ前記内容参照可能メモリへ結合されており前記少なくとも1個のハッシュテーブルを使用してアドレスルックアップを実施するネットワークサーチエンジン、
    前記ネットワークサーチエンジンへ結合されており且つ前記ネットワークサーチエンジンにより発生される次ホップインデックスによりインデックスされるルート毎情報を包含している外部メモリ、
    を有していることを特徴とするネットワークルータ。
  9. 請求項8に基づくネットワークルータを複数個相互接続していることを特徴とするネットワーク。
  10. アドレスルックアップ構造において、
    複数個のハッシュテーブルであって、各々が該複数個内の他のハッシュテーブル内のプレフィックスと異なる長さのプレフィックスを包含しており、アドレス長以下の異なるプレフィックス長からなるサブセットのみを集合的に包含している複数個のハッシュテーブル、
    前記複数個のハッシュテーブルにより収容されていない異なるアドレス長からなる残部を取扱う付加的なアドレスルックアップファシリティ、
    を有していることを特徴とするアドレスルックアップ構造。
  11. 請求項10において、前記付加的なアドレスルックアップファシリティが内容参照可能メモリを有していることを特徴とするアドレスルックアップ構造。
  12. 請求項10において、前記複数個のハッシュテーブルの各々が少なくとも第一ハッシュ関数を使用して夫々のハッシュテーブル内に包含されている各プレフィックスのハッシングに基づいて割当てられた1つ又はそれ以上のメモリブロック内に包含されており、
    夫々のハッシュテーブルへ割当てられている多数のメモリブロックは予め定めた数を超えるものではなく、
    夫々のハッシュテーブル内のプレフィックスに対応する長さのプレフィックスの残部が該付加的なアドレスルックアップファシリティにより取扱われる、
    ことを特徴とするアドレスルックアップ構造。
  13. 請求項10において、更に、
    前記複数個のハッシュテーブル内において識別された一致から最長のプレフィックスの一致を選択するプライオリティエンコーダ、
    を有していることを特徴とするアドレスルックアップ構造。
  14. アドレスルックアップを動作させる方法において、
    少なくとも幾つかのアドレスプレフィックスを少なくとも1つのハッシュテーブル内に格納し、
    前記少なくとも1個のハッシュテーブル内において発生する衝突に対するアドレスプレフィックスを内容参照可能メモリ内に格納する、
    ことを包含していることを特徴とする方法。
  15. 請求項14において、更に、
    前記少なくとも1個のハッシュテーブル内において衝突が発生することのない全ての所要のプレフィックスを保持するのに充分な最小数のメモリブロック内に前記少なくとも1個のハッシュテーブルを維持する、
    ことを包含していることを特徴とする方法。
  16. 請求項14において、更に、
    前記少なくとも1個のハッシュテーブルを所定の制限した数のメモリブロック内に維持する、
    ことを包含していることを特徴とする方法。
  17. 請求項14において、更に、
    前記少なくとも1個のハッシュテーブル内のプレフィックスを2つのハッシュ関数のうちの1つでハッシングし、前記2つのハッシュ関数のうちの第一のもので衝突が発生する場合に前記2つのハッシュ関数のうちの第二のものを使用する、
    ことを包含していることを特徴とする方法。
  18. 請求項14において、更に、
    複数個のハッシュテーブルの各々において、前記複数個のハッシュテーブルのうちの他のものに包含されているプレフィックスと異なる長さのプレフィックスを格納する、
    ことを包含していることを特徴とする方法。
  19. 請求項18において、更に、
    1つのプレフィックスの異なる長さの部分と前記複数個のハッシュテーブルのうちの2つ又はそれ以上の各々におけるプレフィックスとの間で複数の一致が発生する場合に最長のプレフィックスを選択する、
    ことを包含していることを特徴とする方法。
  20. 請求項18において、更に、
    アドレッシングスキームの下で可能な異なるプレフィックス長からなるサブセットのみに対応するプレフィックスを前記複数個のハッシュテーブル内に格納し、
    プレフィックスの残部を前記内容参照可能メモリ内に格納する、
    ことを包含していることを特徴とする方法。
JP2004374336A 2003-12-31 2004-12-24 ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法 Pending JP2005198285A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/750,012 US8295286B2 (en) 2003-12-31 2003-12-31 Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware

Publications (1)

Publication Number Publication Date
JP2005198285A true JP2005198285A (ja) 2005-07-21

Family

ID=34574800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004374336A Pending JP2005198285A (ja) 2003-12-31 2004-12-24 ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法

Country Status (4)

Country Link
US (1) US8295286B2 (ja)
EP (1) EP1551141B1 (ja)
JP (1) JP2005198285A (ja)
DE (1) DE602004010480D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007110613A (ja) * 2005-10-17 2007-04-26 Nippon Telegr & Teleph Corp <Ntt> データ転送装置、アドレス情報検索回路、及びアドレス情報検索方法

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865508B2 (en) * 2004-04-23 2011-01-04 Tvworks, Llc Data structures and methods adapted for heterogeneous clients in an information distribution system
US7908295B2 (en) 2004-04-23 2011-03-15 Tvworks, Llc Extending data records for dynamic data and selective acceptance based on hardware profile
US11336971B2 (en) 2004-04-23 2022-05-17 Comcast Cable Communications Management, Llc Application programming interface combining asset listings
US7849064B2 (en) * 2004-04-23 2010-12-07 Tvworks, Llc Application programming interface combining asset listings
US7624446B1 (en) * 2005-01-25 2009-11-24 Symantec Corporation Efficient signature packing for an intrusion detection system
US20060198379A1 (en) * 2005-03-04 2006-09-07 Nec Laboratories America, Inc. Prefix optimizations for a network search engine
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US7680806B2 (en) * 2005-05-17 2010-03-16 Cisco Technology, Inc. Reducing overflow of hash table entries
US20060294126A1 (en) * 2005-06-23 2006-12-28 Afshin Ganjoo Method and system for homogeneous hashing
US7469317B2 (en) * 2006-09-12 2008-12-23 Alcatel Lucent Method and system for character string searching
US8640215B2 (en) * 2007-03-23 2014-01-28 Microsoft Corporation Secure isolation of application pools
US8018933B2 (en) * 2007-06-27 2011-09-13 Microsoft Corporation Reliable multicast with automatic session startup and client backfil support
US9240898B1 (en) * 2008-02-28 2016-01-19 Marvell Israel (M.I.S.L.) Ltd. Integrating VLAN-unaware devices into VLAN-enabled networks
US8078646B2 (en) * 2008-08-08 2011-12-13 Oracle International Corporation Representing and manipulating RDF data in a relational database management system
US8271635B2 (en) * 2009-06-17 2012-09-18 Microsoft Corporation Multi-tier, multi-state lookup
US8565239B2 (en) * 2009-07-14 2013-10-22 Broadcom Corporation Node based path selection randomization
US8503456B2 (en) * 2009-07-14 2013-08-06 Broadcom Corporation Flow based path selection randomization
US9280609B2 (en) * 2009-09-08 2016-03-08 Brocade Communications Systems, Inc. Exact match lookup scheme
CN101827137B (zh) * 2010-04-13 2013-01-30 西安邮电学院 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法
US9438418B1 (en) * 2011-05-06 2016-09-06 Altera Corporation Systems and methods for generating a key difficult to clone
US8756246B2 (en) 2011-05-26 2014-06-17 Oracle International Corporation Method and system for caching lexical mappings for RDF data
US8787373B2 (en) 2012-01-19 2014-07-22 International Business Machines Corporation Multicast miss notification for a distributed network switch
US9195607B1 (en) * 2012-05-15 2015-11-24 Inphi Corporation Content matching using a multi-hash function for replacement of a faulty memory cell
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
US9172743B2 (en) * 2012-12-31 2015-10-27 Futurewei Technologies, Inc. Scalable storage systems with longest prefix matching switches
US9331942B2 (en) * 2013-03-12 2016-05-03 Xpliant, Inc. Apparatus and method for processing alternately configured longest prefix match tables
CN104052669B (zh) * 2013-03-12 2018-12-07 凯为公司 用于处理交替配置的最长前缀匹配表的装置
US9270592B1 (en) 2014-01-24 2016-02-23 Google Inc. Hash collision avoidance in network routing
US9608913B1 (en) * 2014-02-24 2017-03-28 Google Inc. Weighted load balancing in a multistage network
CN104866502B (zh) 2014-02-25 2020-10-13 深圳市中兴微电子技术有限公司 数据匹配的方法及装置
US20160103858A1 (en) * 2014-10-13 2016-04-14 Freescale Semiconductor, Inc. Data management system comprising a trie data structure, integrated circuits and methods therefor
US10798000B2 (en) * 2014-12-22 2020-10-06 Arista Networks, Inc. Method and apparatus of compressing network forwarding entry information
US9680749B2 (en) * 2015-02-27 2017-06-13 Arista Networks, Inc. System and method of using an exact match table and longest prefix match table as a combined longest prefix match
EP3269100A4 (en) * 2015-07-17 2018-10-31 Hewlett-Packard Enterprise Development LP Combining prefix lengths into a hash table
US10917345B2 (en) * 2015-07-17 2021-02-09 Hewlett Packard Enterprise Development Lp Generating a hash table in accordance with a prefix length
US9401959B1 (en) * 2015-12-18 2016-07-26 Dropbox, Inc. Network folder resynchronization
US10341242B2 (en) 2016-12-13 2019-07-02 Oracle International Corporation System and method for providing a programmable packet classification framework for use in a network device
US10404594B2 (en) * 2016-12-13 2019-09-03 Oracle International Corporation System and method for providing partitions of classification resources in a network device
CN109245879A (zh) * 2018-09-06 2019-01-18 杭州光芯科技有限公司 一种存储和查找ip地址映射关系的双哈希算法
WO2020076679A1 (en) * 2018-10-09 2020-04-16 Northwestern University Distributed digital currency mining to perform network tasks
WO2020144655A1 (en) * 2019-01-10 2020-07-16 Marvell Israel (M.I.S.L) Ltd. Exact match and ternary content addressable memory (tcam) hybrid lookup for network device
CN111107068B (zh) * 2019-12-09 2021-03-09 江苏云涌电子科技股份有限公司 一种fpga高效规则匹配方法及终端
JP2022035056A (ja) * 2020-08-20 2022-03-04 富士通株式会社 情報処理装置およびパケット制御方法
US11914647B2 (en) * 2022-06-06 2024-02-27 Google Llc Efficient hash table lookup

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5920900A (en) * 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US6067547A (en) * 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US7194740B1 (en) * 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US6434662B1 (en) * 1999-11-02 2002-08-13 Juniper Networks, Inc. System and method for searching an associative memory utilizing first and second hash functions
US6665297B1 (en) * 1999-12-09 2003-12-16 Mayan Networks Corporation Network routing table
US6625612B1 (en) * 2000-06-14 2003-09-23 Ezchip Technologies Ltd. Deterministic search algorithm
US7116664B2 (en) * 2002-05-13 2006-10-03 International Business Machines Corporation Lookups by collisionless direct tables and CAMs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007110613A (ja) * 2005-10-17 2007-04-26 Nippon Telegr & Teleph Corp <Ntt> データ転送装置、アドレス情報検索回路、及びアドレス情報検索方法
JP4642628B2 (ja) * 2005-10-17 2011-03-02 日本電信電話株式会社 データ転送装置、アドレス情報検索回路、及びアドレス情報検索方法

Also Published As

Publication number Publication date
US8295286B2 (en) 2012-10-23
EP1551141B1 (en) 2007-12-05
DE602004010480D1 (de) 2008-01-17
EP1551141A1 (en) 2005-07-06
US20050141519A1 (en) 2005-06-30

Similar Documents

Publication Publication Date Title
JP2005198285A (ja) ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法
US7782853B2 (en) 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
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
JP5529976B2 (ja) 高速ipルックアップのためのシストリック・アレイ・アーキテクチャ
US8880507B2 (en) Longest prefix match using binary search tree
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7054993B1 (en) Ternary content addressable memory device
US6434144B1 (en) Multi-level table lookup
USRE43552E1 (en) Block programmable priority encoder in a cam
US7986696B1 (en) Method and apparatus for longest prefix matching
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
Bando et al. Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps
US8180958B2 (en) Key selection device and process for content-addressable memory
CN101620623A (zh) 内容可寻址存储器表项管理方法和装置
US6917954B2 (en) Load balancing in IP address lookup
Song et al. Nxg05-2: Fast filter updates for packet classification using tcam
Kaxiras et al. IPStash: a set-associative memory approach for efficient IP-lookup
US7924839B2 (en) Mechanism to reduce lookup latency in a pipelined hardware implementation of a trie-based IP lookup algorithm
JP2006246488A (ja) ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム
WO2011097385A2 (en) Duo-dual tcam architecture for routing tables with incremental update
JP5631278B2 (ja) 内容参照メモリ
Yazdani et al. Performing IP lookup on very high line speed
Fu et al. An effective IP routing lookup algorithm based on network processor
Eliofotou Hardware for IPv6 Longest Prefix Matching