JP2006246488A - ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム - Google Patents
ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム Download PDFInfo
- Publication number
- JP2006246488A JP2006246488A JP2006058509A JP2006058509A JP2006246488A JP 2006246488 A JP2006246488 A JP 2006246488A JP 2006058509 A JP2006058509 A JP 2006058509A JP 2006058509 A JP2006058509 A JP 2006058509A JP 2006246488 A JP2006246488 A JP 2006246488A
- Authority
- JP
- Japan
- Prior art keywords
- prefix
- prefixes
- length
- stored
- address
- 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
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
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】ネットワーク検索エンジンのメモリ使用効率を向上する。
【解決手段】インデックス・テーブル32は、入力アドレスと関連する関数がエンコードされた値を格納するための2以上の格納場所を有する。エンコードされた値は、前記入力アドレスに対するハッシュ値を用いて、全てのエンコードされた値によって関数を復元することができるように生成されたものである。フィルタリング・テーブル64は、少なくとも2つの異なる長さの複数のプリフィックスを格納し、かつインデックス・テーブル32に格納されたエントリによって索引付けされる。リザルト・テーブル35は、複数のネクスト・ホップ・アドレスを格納し、かつインデックス・テーブル32に格納されたエントリによって索引付けされる。さらに、フィルタリング・テーブル64は、格納されるプリフィックスのプリフィックス長を格納可能なフィールド642を有する。
【選択図】図6
【解決手段】インデックス・テーブル32は、入力アドレスと関連する関数がエンコードされた値を格納するための2以上の格納場所を有する。エンコードされた値は、前記入力アドレスに対するハッシュ値を用いて、全てのエンコードされた値によって関数を復元することができるように生成されたものである。フィルタリング・テーブル64は、少なくとも2つの異なる長さの複数のプリフィックスを格納し、かつインデックス・テーブル32に格納されたエントリによって索引付けされる。リザルト・テーブル35は、複数のネクスト・ホップ・アドレスを格納し、かつインデックス・テーブル32に格納されたエントリによって索引付けされる。さらに、フィルタリング・テーブル64は、格納されるプリフィックスのプリフィックス長を格納可能なフィールド642を有する。
【選択図】図6
Description
本発明は、ネットワーク検索エンジンにおけるプリフィックスの最適化方法に関する。
以下に示す文献には、有益な背景技術情報が記載されている。これらの文献は、本明細書内で参照されることによって、本開示に組み込まれる。以下では、これらの文献を角括弧つきの参照符号によって引用することとする。例えば[3]は、Dharmapurikar等の文献を示す。
1.P Gupta, B Prabhakar, S Boyd、「Near-Optimal Routing Lookups with Bounded Worst Case Performance」、in Infocomm. 2000. Tel Aviv、イスラエル
2.P Gupta, N McKeown、「Algorithms for Packet Classification」、 IEEE Network、2001年、第15巻、第2号、p.24-32
3.S. Dharmapurikar, P. Krishnamurthy, D E Taylor、「Longest prefix matching using bloom filters」、in Proceedings of the 2003 conference on Applications, technologies, architectures, and protocols for computer communications、2003年8月
4.B. Chazelle , J.Kilian, R.Rubinfeld, A. Tal、「The Bloomier Filter: An Efficient Data Structure for Static Support Lookup Tables」、Proceedings, Symposium on Discrete Algorithms (SODA)、2004年
5.V.Srinivasan, G.Varghese、「Fast Address Lookups Using Controlled Prefix Expansion」、ACM Transactions on Computer Systems (TOCS)、1999年、第17巻、第1号、p.1-40
6.V. Srinivasan, G.Varghese、「Method and Apparatus for Fast Hierarchical Address Lookup using Controlled Expansion of Prefixes」、米国特許第6,011,795号
1.P Gupta, B Prabhakar, S Boyd、「Near-Optimal Routing Lookups with Bounded Worst Case Performance」、in Infocomm. 2000. Tel Aviv、イスラエル
2.P Gupta, N McKeown、「Algorithms for Packet Classification」、 IEEE Network、2001年、第15巻、第2号、p.24-32
3.S. Dharmapurikar, P. Krishnamurthy, D E Taylor、「Longest prefix matching using bloom filters」、in Proceedings of the 2003 conference on Applications, technologies, architectures, and protocols for computer communications、2003年8月
4.B. Chazelle , J.Kilian, R.Rubinfeld, A. Tal、「The Bloomier Filter: An Efficient Data Structure for Static Support Lookup Tables」、Proceedings, Symposium on Discrete Algorithms (SODA)、2004年
5.V.Srinivasan, G.Varghese、「Fast Address Lookups Using Controlled Prefix Expansion」、ACM Transactions on Computer Systems (TOCS)、1999年、第17巻、第1号、p.1-40
6.V. Srinivasan, G.Varghese、「Method and Apparatus for Fast Hierarchical Address Lookup using Controlled Expansion of Prefixes」、米国特許第6,011,795号
ビデオ会議やリアルタイム映画配信等の広帯域を要求するアプリケーションの普及によって、インターネットに接続されるホスト(端末)数の増加とともに、インターネットを流れるトラフィックが急速に増加している。これらの広帯域アプリケーションの十分な品質を確保するために、通信回線の広帯域化が進められている。しかしながら、端末相互間におけるエンド・ツー・エンドでのパフォーマンスを向上するためには、通信回線速度の向上だけでなく、IP(Internet Protocol)パケットのフィルタリング及びルーティングを行うネットワーク・ルータの性能向上が不可欠である。
ネットワーク・ルータにおいて重大なボトルネックとなる処理は、IPアドレス・ルックアップである。ここで、IPアドレス・ルックアップとは、IPパケットを宛先に向けて転送する処理を意味しており、一般にIPフォワーディングと呼ばれている。アドレス・ルックアップが高速化されれば、パケット・クラシフィケーション等のネットワーク・ルータで実行される他の処理の高速化も可能となる。
ネットワーク・ルータが行うアドレス・ルクアップとは、アドレス・プリフィックスの集合の中から、入力されたIPパケットのヘッダに含まれる宛先アドレスに最長一致するアドレス・プリフィックス(以下、最長プリフィックスと呼ぶ)を決定する処理である。なお、1つのアドレス・プリフィックスは、1つのインターネット・アドレス又はその前半部分であるネットワーク・アドレスに対応する。以下では、アドレス・プリフィックスを単にプリフィックスと呼ぶ。
通常、プリフィックスは長さによって表現される。プリフィックスの長さがLであることは、アドレス全体のうちの上位のLビットがプリフィックスとして有効であることを意味する。有効でない他のビットは無視される、言い換えると、"don't-care"とみなされる。本明細書では、プリフィックスを整数(例えば、ネットワーク・アドレス)で表現する。また、プリフィックスに含まれる有効なビットの数をプリフィックス長と呼ぶこととする。図1は、8ビット、16ビット、24ビット及び32ビットの4つのプリフィックス長に分類された32ビットのIPアドレスに対するプリフィックス集合の例を示したものである。なお、図1では、IPアドレスの標準的な表記方法に則って、8ビット毎にピリオドで区切り、ピリオドで区切った8ビットを10進数の整数値で表記している。例えば、127.x.x.x→Aという表記において、"x"はIPアドレスのうち、8ビットのプリフィックス(10進数表記で127、ビット表記で01111111)を除く任意部分であることを示している。また、矢印の後の"A"は、プリフィックス"127.x.x.x"に含まれる宛先アドレスを有するパケットの転送先を示しており、具体的にはネクスト・ホップ・アドレス又はネットワーク・ルータの出力ポートに相当する。本明細書においてIPアドレス及びプリフィック集合を示す際は、図1と同様の表記方法をとるものとする。
図1のプリフィックス集合1は、4つのサブセット(部分集合)11乃至14を有する。部分集合11は、プリフィックス長が8ビットのプリフィックスの集合である。同様に、部分集合12は16ビット、部分集合13は24ビット、部分集合14は32ビットのプリフィックス長のプリフィックスの集合である。つまり、プリフィックス長は、1又は複数のプリフィックスを含む部分集合のコンテナに相当するものである。このため、以下では、プリフィックス長で分類した部分集合をプリフィックスの容器(bin)を示すものと考える。
上述した最長プリフィックスの決定処理は、最長プリフィックス一致判定(LPM:Longest Prefix Matching)と呼ばれている。LPMを行うための主要な解決策は、コンテント・アドレサブル・メモリ(CAM:Content-Addressable Memories)、ツリーベースのアルゴリズム[1,2]、及びハッシュベースのアルゴリズム[3]の3つである。
文献[4]では、Bloomierフィルタのコンセプトに基づいたCAMが、ネットワーク検索エンジン及びネットワーク・ルータを構成するアーキテクチャとして論じられている。このCAMのアーキテクチャはLPMに適用可能なものである。さらに、より複雑なパケット・クラシフィケーションの問題を解決するために、文献[4]に開示されたアーキテクチャを並列化して使用することも考えられている。このため、LPMを実行する基本的なアーキテクチャにおいて、LPM実行時のメモリ使用量を低減することができれば、上記の文献[4]で議論されているようなアーキテクチャにおけるLPMだけでなく、パケット・クラシフィケーションにも有効である。
また、本出願の発明者らによる米国特許出願11/133,226には、特定のアーキテクチャに依存せず、LPMに対して汎用的に使用可能なプリフィックス処理技術が記載されている。この技術は、ツリーベースのアプローチ及びハッシュベースのアプローチの双方に有効である。また、文献[5]には、特定のネットワーク検索エンジンのアーキテクチャに依存のものであるが、2つのLPMにおけるプリフィックス最適化手法が記載されている。
また、本出願の発明者らは、米国特許出願10/909,907において、エンベデッドDRAM技術に基づいたハッシュベースの検索アーキテクチャを開示している。当該アーキテクチャは、低遅延、低消費電力、低コスト、高パフォーマンスという特徴がある。また、当該アーキテクチャは、汎用の検索エンジンに適用可能であり、LPM及びパケット・クラシフィケーションに適用することも容易である。以下では、本発明の背景として、米国特許出願10/909,907に開示された検索アーキテクチャを適用したネットワーク検索エンジンを、従来のネットワーク検索エンジンとして説明する。
従来のネットワーク検索エンジンは、Bloomierフィルタと呼ばれるコンテントの読み出しが可能なデータ構造に基づいており、情報の格納及び検索を迅速に行うことができる。例えば、エレメントtの関数f(t)を従来のネットワーク検索エンジンに格納する場合は、様々なtの値とこれに対応するf(t)の値を格納することによって行われる。このアイデアによって、与えられたtに対応するf(t)を迅速に読み出すことが可能である。従来のネットワーク検索エンジンでは、このf(t)の読み出しを一定の時間で行うことができる。以下では、一定時間での読み出しを行う手法について、いくつかの定義とともに説明する。
関数f(t)の一定時間での読み出しが可能となるように従来のネットワーク検索エンジンのデータ構造中に関数f(t)を格納することを、"ファンクション・エンコーディング"と呼ぶ。また、与えられたエレメントtに対応する関数f(t)を従来のネットワーク検索エンジンから読み出すことを、"ルックアップ"と呼ぶ。
ファンクション・エンコーディングは、複数のエレメントtに対応する複数の関数f(t)の値を格納することによって行われる。従来のネットワーク検索エンジンのデータ構造中に格納される複数のエレメントをまとめて"エレメント集合"と呼ぶ。
従来のネットワーク検索エンジンの主要部分は、関数f(t)をエンコードして格納可能な、Bloomierフィルタに基づくデータ構造によって構成されている。このデータ構造は、K個のハッシュ関数によって索引付けされるテーブルを有している。このテーブルを、"インデックス・テーブル"と定義する。ある1つのエレメントに対して演算されたK個のハッシュ値をまとめて、"ハッシュ・ネイバーフッド"と呼ぶ。また、あるエレメントtのハッシュ・ネイバーフッドをHN(t)と表す。
あるエレメントに対して得られたハッシュ値が、エレメント集合に含まれるその他のエレメントのハッシュ・ネイバーフッド内に含まれていない場合、そのハッシュ値を"シングルトン"と呼ぶ。
インデックス・テーブルは、エレメント集合に含まれる全てのエレメントtに対して
、関数f(t)のようなエレメントtに対応付けられた情報がハッシュ・ネイバーフッドに属する固有のアドレスに安全に格納されるように構築されている。この固有のアドレスをτ(t)と表す。また、あるエレメントt1と異なるエレメントt2に対応付けられた情報は、τ(t1)に格納されてはならない。むしろ、t2はt2に対してユニークなアドレスτ(t2)を有する必要がある。したがって、エレメント集合に含まれる個々のエレメントtに対して固有のアドレスτ(t)を探すことが望まれる。このための手続きの一例を以下に説明する。
、関数f(t)のようなエレメントtに対応付けられた情報がハッシュ・ネイバーフッドに属する固有のアドレスに安全に格納されるように構築されている。この固有のアドレスをτ(t)と表す。また、あるエレメントt1と異なるエレメントt2に対応付けられた情報は、τ(t1)に格納されてはならない。むしろ、t2はt2に対してユニークなアドレスτ(t2)を有する必要がある。したがって、エレメント集合に含まれる個々のエレメントtに対して固有のアドレスτ(t)を探すことが望まれる。このための手続きの一例を以下に説明する。
あるエレメントtが与えられた場合、上述のルックアップを行うことにより、アドレスτ(t)に格納された情報が取り出される必要がある。ルックアップで取り出される情報には、例えば、関数f(t)がある。あるエレメントtに対して、アドレスτ(t)を生成するハッシュ関数をhτ(t)と記述する。アドレスτ(t)は、エレメントtのハッシュ・ネイバーフッドに含まれるものであるが、アドレスτ(t)から情報を取り出す際には、ハッシュ関数hτ(t)について知ることはできない。ハッシュ関数hτ(t)は、ファンクション・エンコーディングを行う場合にだけ知ることができる。
関数hτ(t)を知ることなく確実に関数f(t)を取り出すため、ハッシュ演算によって得られるアドレスτ(t)が示す全ての格納場所に格納される値に対して簡単な論理演算を行えるように、ある情報をエレメントtのハッシュ・ネイバーフッドに含まれる全ての格納場所に格納する。具体的には、エレメント集合に含まれる、あるエレメントtに対するハッシュ演算によってτ(t)を得た時に、以下の(1)式に示す値V(t)を演算してアドレスτ(t)の格納場所に格納する。
式(1)において、"^"は、排他的論理和(XOR)演算を表している。Hi(t)は、エレメントtのi番目のハッシュ値を表している。D[Hi(t)]は、インデックス・テーブルのアドレスHi(t)に格納されたデータである。Kは、ハッシュ関数の数を表している。I(t)は、エレメントtに対応する情報を示している。つまり、I(t)は、ネットワーク検索エンジンに格納し、かつ読み出しを行う対象となるものである。最後に、hτ(t)は、上述したように、エレメントtに対してアドレスτ(t)を生成するハッシュ関数を表す。このように、V(t)は、エレメントtの関数I(t)がエンコードされた値である。以下では、V(t)をエンコード値と呼ぶ。
ルックアップの実行時は、エレメントtが与えられると、エレメントtに対して演算した全てのハッシュ値によって示される格納場所(以下、ハッシュ位置と呼ぶ)に格納された値に対してXOR演算を行うことにより、エレメントtに対応する情報I(t)を取り出すことができる。つまり、ルックアップ時には、以下の(2)式に示す演算を行う。
続いて以下では、全てのエレメントtに対してτ(t)を見つける手順、及び上記のEOR演算によってファンクション・エンコーディングを行う手順について説明する。
Bloomierフィルタリングでは、τ(t)を見つけるために、greedyアルゴリズムとして知られているアルゴリズムを使用する。このアルゴリズムの詳細は文献[4]に詳しく記載されている。以下では、当該アルゴリズムの概要を説明する。
始めに、順序Γが、従来のネットワーク検索エンジンに格納されるエレメントに対して定義される。順序Γは、エレメントtのハッシュ演算を行う順序を規定する。より詳しくは、順序Γ中のあるエレメントtに対応するハッシュ値は、順序Γの中でエレメントtより前に位置するエレメントに対するハッシュ演算によっては生成されない値となっている。順序Γが決定されると、エレメントtとそのハッシュ位置に格納されるエンコード値V(t)が同じ順序で処理される。これは、得られたハッシュ位置をτ(t)とする際の十分な条件である。その理由は以下の通りである。
まず順序Γで指定された最初のエレメントt1に対して、他のエレメントのハッシュ・ネイバーフッドに含まれていないハッシュ位置が決定される。つまり、他のエレメントに対するファンクション・エンコーディングは未だ行われていないため、t1に対応する情報を決定されたハッシュ位置に確実に格納することができる。順序Γで指定される2番目のエレメントt2は、エレメントt1のハッシュ・ネイバーフッドに含まれないハッシュ位置を有する。エレメントt1に対するエンコードは既に行われているため、t2に対応する情報を安全にハッシュ位置に格納することができる。つまり、関数のエンコードを実行している間は、エレメントに対応する1つのハッシュ位置のみがエンコード値の書き込みによって変更される。このため、t2に対するファンクション・エンコーディングによって、エレメントt1に対応して書込み又は読み出しが行われる格納場所を上書きされることはない。この処理が、全てのエレメントに対して順序どおりに行われる。
このような順序Γは、以下に示すgreedyアルゴリズムによって決定することができる。当該アルゴリズムを図2に示す。エレメント集合21の中からハッシュ値がシングルトンであるエレメントt1を判定し、スタック・メモリ22の底にエレメントt1を格納して、t1をエレメント集合21から削除する(ステップS202及びS203)。後は、この処理を、エレメント集合21が空になるまで、再帰的に繰り返せばよい(ステップS201)。最終的に得られるスタック・メモリは、エレメント集合に含まれるエレメントが順序Γで格納された状態となる。なお、図2のステップS204及びS205は、上述した順序Γ決定後の関数f(t)のエンコード手順を示している。
Bloomフィルタと同様に、基本的なBloomerフィルタも僅かな確率ではあるが誤検出(false positives)を生じる。このことは、インデックス・テーブルにエンコードされたエレメント集合に含まれていないエレメントt´がルックアップされた場合に、上記の式(2)による演算によって、一見したところでは妥当なI(t)の値が得られる場合があることを意味する。このため、従来のネットワーク検索エンジンでは、フィルタリング・テーブルと呼ばれる第2のテーブルを用いることによって、このような誤検出(false positives)を防止している。
フィルタリング・テーブルは、インデックス・テーブルにエンコードされたエレメント数と同数のエントリを有している。フィルタリング・テーブルの格納場所ごとに、インデックス・テーブルにエンコードされている実在の1つのエレメントが格納される。ルックアップの際には、ルックアップによって得られたエレメントとフィルタリング・テーブルに格納された実在のエレメントとを比較することによって、誤検出(false positives)を防止することができる。
従来のネットワーク検出エンジンでは、フィルタリング・テーブルの生成は以下のように行われる。ファンクション・エンコーディングの際、エレメントtに対応する情報I(t)が、フィルタリング・テーブルのアドレスとして指定され、当該アドレス位置にエレメントtが格納される。次に、誤検出(false positives)の判定手順を説明する。以下では、エレメント集合に実在しないエレメントt´に対するルックアップが行われた場合を考える。インデックス・テーブルからI(t´)が読み出されたとき、フィルタリング・テーブルのアドレスI(t´)に格納されたエレメントt´´が読み出される。そして、従来のネットワーク検索エンジンに入力されたt´と、読み出されたエレメントt´´が比較される。この比較の結果が不一致であれば、ルックアップが誤検出(false positives)であることが判定できる。このことを実行する有利な方法は、フィルタリング・テーブルのアドレスを順序Γのエレメント順序に従って配置することである。
続いて以下では当該ネットワーク検出エンジンの主要部であるサブ・セルの構成について説明する。従来のサブ・セル3の構成を図3に示す。サブ・セル3は、3つのテーブルを有している。具体的には、上述したインデックス・テーブル32及びフィルタリング・テーブル34、並びに第3のテーブルであるリザルト・テーブル35を有する。上述したように、あるエレメントtの関数f(t)がインデックス・テーブル32内にエンコードされており、エレメントtに対応する値がフィルタリング・テーブル34に格納されている。
あるエレメントt´に対するルックアップを行う際は、入力されたt´と比較するために、インデックス・テーブル32より取り出されたI(t´)をアドレスに指定して、フィルタリング・テーブル34からエレメントt´´が読み出される。なお、エレメントt´´に加えて、関数f(t´)を、アドレスI(t´)で指定されるフィルタリング・テーブル34の格納場所に保存してもよい。関数f(t)は、ネットワーク検索の結果として出力されるものであり、リザルト・テーブル35は、関数f(t)を保存するものである。このため、フィルタリング・テーブル34のうちの関数f(t)を保存した部分をリザルト・テーブル35と呼ぶ。
なお、リザルト・テーブル35を実装する際には、フィルタリング・テーブル34と独立した別個のメモリとして実現することもできる。しかしながら、フィルタリング・テーブル34とリザルト・テーブル35は時間的に同時並行的にアクセスされるものであり、同じ数のエントリを有している。
以下、図3のその他の構成要素を説明する。ハッシュ演算部31は、入力されたヘッダに含まれており、エレメントtに相当する宛先アドレスに対するハッシュ演算を行ってハッシュ値τ(t)を出力する。論理演算部33は、τ(t)によってアドレスされたインデックス・テーブル32の格納場所のデータを読み出し、上述した式(2)の演算を実行して関数I(t)を算出する。比較部36は、I(t)によってアドレスされたフィルタリング・テーブル34の格納場所に格納されたプリフィックスを読み出し、入力されたアドレス(宛先アドレス)と比較し、プリフィックスの一致の有無を示す信号(valid信号)を出力する。当該比較によって、宛先アドレスとプリフィックスが一致した場合は、"有効"を示すvalid信号を出力する。他方、宛先アドレスとプリフィックスが一致しない場合は、"無効"を示すvalid信号を出力する。これと並行して、I(t)によってアドレスされたリザルト・テーブル35の格納場所に格納されたネクスト・ホップ・アドレスが出力される。
次に、一般的な最長プリフィックス一致判定(LPM)の処理について説明する。上述したようにプリフィックスは、インターネット・アドレス(IPアドレス)又はその前半部分であるネットワーク・アドレスに対応する。例えば、"100.10"は、IPアドレス"100.10.1.2"のプリフィックスである。プリフィックスのデータベースには、プリフィックス"100.10"についてのフォワーディング情報を含まれている。しかしながら、当該データベースは、さらに長いプリフィックス"100.10.1.2"に対する詳細なフォワーディング情報を有している可能性がある。したがって、ネットワーク検索エンジンに入力されたIPアドレスに対するネクスト・ホップを決定するためには、データベース内の全てのプリフィックスとの比較を行い、入力されたIPアドレスと最長一致するプリフィックスに対応するフォワーディング情報を発見しなければならない。
一例として、".com"を宛先に指定するパケットをポートAに転送するルータを考える。このルータが、"nec.com"ドメインにはポートBを介してより容易にアクセスできるロケーションに配置されていると仮定すると、当該ルータは、"nec.com"を宛先に指定するパケットをポートBにルーティングする必要がある。したがって、"nec.com"を宛先アドレスとする入力パケットはポートBに転送され、その他の".com"ドメインを宛先アドレスとする入力パケットはポートAに転送される。
図1に例示したプリフィックス集合では、ヘッダに指定された宛先アドレスが"127.0.0.0"のパケットは、プリフィックス長32ビットまでの最長一致判定によって、ポートMに転送されることを示している。一方、宛先アドレスが"127.0.0.1"のパケットは、プリフィックス長24ビットまでの最長一致判定によって、ポートHに転送される。
従来のネットワーク検索エンジンでLPMを行うためには、プリフィックス長ごとに図3に示した3つのテーブルを有するサブ・セルを並列化した構成が採用される。このようなネットワーク検索エンジン4の構成を図4に示す。サブ・セル3A乃至3Dはそれぞれ、インデックス・テーブル、フィルタリング・テーブル及びリザルト・テーブルの3つのテーブルを有するが、このうちリザルト・テーブルは当該サブ・セルのチップの外部に置くことも可能である。
プリフィックスは、その長さによって分類され、別個のサブ・セルに格納されている。図4では、サブ・セル3Aにはプリフィックス長8ビット、サブ・セル3Bにはプリフィックス長16ビット、サブ・セル3Cにはプリフィックス長24ビット、サブ・セル3Dにはプリフィックス長32ビットのプリフィックスが格納されるものとする。入力パケットの転送先を決定するネットワーク検索を行う際には、入力パケットのヘッダ情報が全てのサブ・セルに並行して送られる。そして、個々のサブ・セルによる判定結果が、優先度判定部41に送られる。個々のサブ・セルが出力する判定結果には、プリフィックスの一致の有無を示す情報(valid信号)と、ネクスト・ホップ・アドレスNH1乃至NH4が含まれる。上述したように、サブ・セル3A乃至3Dは、宛先アドレスとプリフィックスが一致した場合に"有効"を示すvalid信号を出力する。他方、宛先アドレスとプリフィックスが一致しない場合は"無効"を示すvalid信号を出力する。
優先度判定部41は、サブ・セル3A乃至3Dの出力のうち、宛先アドレスとプリフィックスとの一致を示した出力の中から最も長いプリッフィクスを判定し、最も長いプリッフィクス一致によって決定されたネクスト・ホップ・アドレスを、入力パケットに対するフォワーディング情報として出力する。
米国特許第6011795号明細書
図4に示した従来のネットワーク検索エンジン4では、プリフィックスが格納されるサブ・セル3A乃至3Dはプリフィックス長に応じて決定される。つまり、1つのサブ・セルに含まれるプリフィックス長は1通りである。このような構成は、特定のプリフィックス長を持つプリフィックスの数が比較的少ない場合に、無駄の多い構成といえる。つまり、各サブ・セルに含まれる3つのテーブルはメモリ・モジュールによって構成されるものであるが、プリフィックスの数が比較的少ないサブ・セルでは、メモリの使用効率が低下するという課題がある。
本発明にかかるネットワーク・ルータは、少なくとも1つのインデックス・テーブル、少なくとも1つのフィルタリング・テーブル、及び少なくとも1つのリザルト・テーブルを有する。前記インデックス・テーブルは、入力アドレスに関連する関数がエンコードされた値が格納された2以上の格納場所を有する。ここで、前記エンコードされた値は、前記入力アドレスに対するハッシュ演算で得られるハッシュ値を用いて、全ての前記エンコードされた値によって前記関数を復元することができるように生成される。前記フィルタリング・テーブルは、少なくとも2つの異なる長さの複数のプリフィックスを格納することができる。前記複数のプリフィックスは、ネットワーク・アドレスに対応する。また、前記フィルタリング・テーブルは、前記インデックス・テーブルに格納されたエントリによって索引付けされる。前記リザルト・テーブルは、複数のネクスト・ホップ・アドレスを格納するものであり、前記インデックス・テーブルに格納されたエントリによって索引付けされる。さらに、前記フィルタリング・テーブルの少なくとも1つのレコードは、当該少なくとも1つのレコードに格納されるプリフィックスのプリフィックス長を格納可能なプリフィックス長フィールドを有する。
本発明の別態様である方法は、ネットワーク検索エンジンにおけるアドレス処理方法である。当該方法は以下の(1)〜(6)の手順を含む。(1)入力アドレスを入力する。(2)前記入力アドレスに対するハッシュ演算を行ってハッシュ値を生成する。(3)前記ハッシュ値に基づいて、インデックス・テーブルに格納されたエントリを選択する。(4)選択された前記エントリに基づいて、少なくとも2つの異なる長さの複数のプリフィックスを格納するフィールドと当該複数のプリフィックスの長さを格納するフィールドとを有するフィルタリング・テーブルから、1のプリフィックス及び当該1のプリフィックスのプリフィックス長を索引付けする。(5)選択された前記エントリに基づいて、複数のネクスト・ホップ・アドレスが格納されたリザルト・テーブルから、1のネクスト・ホップ・アドレスを索引付けする。(6)前記索引付けされたプリフィックスと前記入力アドレスの間で、前記索引付けされたプリフィックス長に相当する部分の一致判定を行う。
さらに、本発明の別態様であるコンピュータ・プログラムは、コンピュータを上述した本発明にかかるアドレス処理方法を実行する手段として機能させるための命令を含むものである。
本発明にかかるネットワーク・ルータは、少なくとも2つの異なる長さの複数のプリフィックス、及び当該複数のプリフィックスの長さを格納するフィルタリング・テーブルを有している。これにより、1つのインデックス・テーブル、1つのフィルタリング・テーブル、及び1つのリザルト・テーブルを含む1つのサブ・セルに、長さの異なるプリフィックスを共存させることが可能となる。このような構成により、例えば、プリフィックス集合に含まれるプリフィックスのうち特定のプリフィックス長のものが比較的少ない場合に、これらの比較的少ないプリフィックスをプリフィックス長が異なる他のプリフィックスを扱うサブ・セルに移動できる。これによって、上記3つのテーブルを構成するメモリの利用効率を向上させることができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
発明の実施の形態1.
本実施の形態にかかるネットワーク検索エンジンは、プリフィックス長が異なる複数のプリフィックスを1つのサブ・セルに共存させるよう改良したものである。以下では、本実施の形態にかかるネットワーク検索エンジンについて、図5乃至図8を用いて説明する。
本実施の形態にかかるネットワーク検索エンジンは、プリフィックス長が異なる複数のプリフィックスを1つのサブ・セルに共存させるよう改良したものである。以下では、本実施の形態にかかるネットワーク検索エンジンについて、図5乃至図8を用いて説明する。
図5に改良されたプリフィックス集合5を示す。図1においては、プリフィックス長32ビットの部分集合14には比較的少ないプリフィックス、具体的には1つのプリフィックス"127.0.0.0"しか存在していない。図5のプリフィックス集合5では、プリフィックス長32ビットの部分集合に存在していたプリフィックス"127.0.0.0"が、プリフィックス長16ビットの部分集合52に移動されている。移動前の部分集合52には、移動されたプリフィックス"127.0.0.0"のサブ・プリフィックスが存在していないため、移動されたプリフィックス"127.0.0.0"と元の16ビットのプリフィックスとの間でコンフリクトを生じることがない。ここで、サブ・プリフィックスとは、あるプリフィックスの上位ビットで示されるプリフィックス長の短いプリフィックスを意味しており、例えば、プリフィックス"127.0"はプリフィックス"127.0.0.0"のサブ・プリフィックスの1つである。これにより、図5に示すプリフィックス集合5では、プリフィックス長32ビットの部分集合が不要となり、これに割り当てるメモリを削減し、また、プリフィックス長16ビットの部分集合52に割り当てるメモリの使用効率を向上することができる。
このように、サブ・プリフィックスのコンフリクトを生じないことを条件に、長さの異なるプリフィックスを1つの集合内、言い換えると1つのフィルタリング・テーブル内、さらい言い換えると1つのサブ・セル内に共存させることにより、メモリ利用効率の向上が可能となる。
1つのサブ・セル内においてプリフィックス長の異なる複数のプリフィックスを扱うように改良された本実施の形態にかかるサブ・セル6の構成を図6に示す。サブ・セル6では、フィルタリング・テーブル64にプリフィックス長フィールド642が追加されている。プリフィックス長フィールド642には、プリフィックス・フィールド641に格納される個々のエレメント(プリフィックス)に対応付けてプリフィックス長が格納されている。フィルタリング・テーブル64を生成するためには、例えば、上述したファンクション・エンコーディングの工程において、フィルタリング・テーブル64のアドレスI(t)で示される格納場所にエレメントtが格納される際には、エレメントtのプリフィックス長も同様にアドレスI(t)の格納場所に格納すればよい。
ハッシュ関数を生成する際には、32ビットのプリフィックス"127.0.0.0"が16ビットのプリフィックスとして扱われる。つまり、32ビットのエレメントのうち上位の16ビット分だけがハッシュ関数に使用される。また、フィルタリング・テーブル64の適切な格納場所に、32ビットのプリフィックス"127.0.0.0"とそのプリフィックス長(32ビット)が格納される。これによって、ルックアップの実行時には、入力されたエレメント(宛先アドレス)とフィルタリング・テーブル内の32ビットのプリフィックス"127.0.0.0"の全体とが一致した場合にのみ、ルックアップが有効と判断することができる。
つまり、フィルタリング・テーブル64のプリフィックス長フィールド642から読み出されたビット数によって、入力された宛先アドレスと比較されるべきプリフィックス長を知ることができる。具体的には、図6に示すマスク部68において、入力ヘッダに含まれる宛先アドレスとフィルタリング・テーブル64から取り出されたプリフィックスが、同じくフィルタリング・テーブル64から取り出されたプリフィックス長によってマスクされて、比較部36に出力される。
なお、図6に示すサブ・セル6は、通常は長さ16ビットのプリフィクスを格納するサブ・セルを示している。このため、ルックアップの実行時は、はじめに16ビットマスク部67において、入力された宛先アドレスのうちハッシュ演算の対象となる先頭の16ビット以外がマスクされる。
このようなサブ・セル6が備えるフィルタリング・テーブル64中に、32ビットのプリフィックス"127.0.0.0"が格納されている。ここで、32ビットのプリフィックス"127.0.0.0"のサブ・プリフィックスである"127.0.x.x"が、フィルタリング・テーブル64のエントリに存在しないことに注意する必要がある。もしこのサブ・プリフィックスが存在するのであれば、このサブ・セル6にプリフィックス"127.0.0.0"を格納することは許されない処理となる。
また、図6のサブ・セル6は、3種類の出力を行う。プリフィックスの一致の有無を示す情報(valid信号)及びネクスト・ホップ・アドレスを出力する点は図3に示した従来のサブ・セルと同様であるが、これに加えて一致したプリフィックス長(MPL)を出力する。MPLは、後述する優先度判定部72において最長プリフィックス一致判定(LPM)を行うための情報として使用される。
本実施の形態にかかるネットワーク検索エンジン7の構成を図7に示す。ネットワーク検索エンジン7は、宛先アドレス等の入力エレメントに対する最長プリフィックス一致判定(LPM)を行ってネクスト・ホップ・アドレス等の入力エレメントに対応付けられた関数を出力するものであり、図5に示した従来のネットワーク検索エンジン5を改良したものである。
ネットワーク検索エンジン7は、図6に示したサブ・セル6が並列に配置されている。ネットワーク検索エンジン7に入力された入力パケットのヘッダ情報が、全てのサブ・セル6A乃至6Cに並行して送られる。そして、個々のサブ・セルによる判定結果が、優先度判定部72に送られる。上述のように、サブ・セルが優先度判定部72に出力する判定結果には、valid信号、ネクスト・ホップ・アドレス、及び一致したプリフィックス長(MPL)が含まれる。
優先度判定部72は、valid信号が有効であるサブ・セルから入力されたMPLを比較することにより、最長のMPLを判定する。そして、最長のMPLと同じサブ・セルから入力されたネクスト・ホップ・アドレスを、最長プリフィックス一致判定(LPM)によって得られたネクスト・ホップ・アドレスとして出力する。
このような構成による利点は、プリフィックス集合に含まれるプリフィックスのうち特定のプリフィックス長のものが比較的少ない場合に、これらの比較的少ないプリフィックスをプリフィックス長が異なる他のプリフィックスを扱うサブ・セルに移動できる点である。これによって、サブ・セル内のフィルタリング・テーブルの利用効率を向上させ、サブ・セルの有効利用が可能となる。
発明の実施の形態2.
従来のネットワーク検索エンジン5が備えるサブ・セル3においては、フィルタリング・テーブル34の大きさ(深さ)、つまりエントリ数は、サブ・セル内に格納されるプリフィックスの数と同数以上である必要があった。これに対して本実施の形態のネットワーク検索エンジンが備えるサブ・セル9は、フィルタリング・テーブルに格納するエントリ数を、サブ・セル9内に格納されるプリフィックスの数より小さくすることが可能である点が特徴である。
従来のネットワーク検索エンジン5が備えるサブ・セル3においては、フィルタリング・テーブル34の大きさ(深さ)、つまりエントリ数は、サブ・セル内に格納されるプリフィックスの数と同数以上である必要があった。これに対して本実施の形態のネットワーク検索エンジンが備えるサブ・セル9は、フィルタリング・テーブルに格納するエントリ数を、サブ・セル9内に格納されるプリフィックスの数より小さくすることが可能である点が特徴である。
以下では、共通のサブ・プリフィックス長Lを有する長さPビットのプリフィックスの完全集合Sを考える。ここで完全集合とは、上記の条件を満足する2P−L通りのプリフィックスが全て含まれているプリフィックス集合を意味する。本実施の形態のネットワーク検索エンジンでは、ファンクション・エンコーディングの工程において、この完全集合Sに含まれるプリフィックスのうち、同じネクスト・ホップ・アドレスと対応付けられる最大部分集合を抽出する。さらに、最大部分集合に含まれるプリフィックスをフィルタリング・テーブルの1つの格納場所に集約して格納する。
一例として、図8に示すプリフィックス集合8を考える。プリフィックス集合8は、プリフィックス長Pが4ビットであり、サブ・プリフィックス長Lが2ビットである場合の完全集合Sである。プリフィックス集合8には、共通のサブ・プリフィックスが"00"である4つのプリフィックス"0000"、"0001"、"0010"、及び"0011"が属している。このうち、3つのプリフィックス"0000"、"0001"、及び"0010"のネクスト・ホップは"E"であり、"0011"のネクスト・ホップは"F"であるものとする。上述した従来のネットワーク検索エンジン5が備えるサブ・セル3においては、これらのプリフィックスを、フィルタリング・テーブル34の個別の格納場所にそれぞれ格納する必要があった。これに対して、本実施の形態のネットワーク検索エンジンが備えるサブ・セル9では、ネクスト・ホップが共通する3つのプリフィックスは、フィルタリング・テーブルの1つの格納場所に集約して格納することができる。
本実施の形態にかかるネットワーク検索エンジンが有するサブ・セル9の構成を図9に示す。なお、サブ・セル9が有する構成要素のうち、フィルタリング・テーブル944及びビットマスク部97を除く他の構成要素は発明の実施の形態1のサブ・セルが有する構成要素と同様であるため、同じ符号を付して詳細な説明を省略する。また、本実施の形態にかかるネットワーク検索エンジンの全体構成は発明の実施の形態1と同様であるため説明を省略する。
本実施の形態のフィルタリング・テーブル94は、プリフィックスが格納されるプリフィックス・フィールド941に加えて、発明の実施の形態1のフィルタリング・テーブル64と同様にプリフィックス長を格納するプリフィックス長フィールド942を有している。プリフィックス長フィールド942は、誤検出(false positives)を防止するために入力アドレスと比較すべきサブ・プリフィックスの長さが格納される。図8のプリフィックス集合の場合は、3つのプリフィックス"0000"、"0001"、及び"0010"を集約したプリフィックス"00xx"に対応するプリフィックス長フィールド942の値は"2"ビットである。他方、プリフィックス"0011"に対応するプリフィックス長フィールド942の値は"4"ビットである。
図8に示した3つのプリフィックス"0000"、"0001"、及び"0010"に対するハッシュ演算部31でのハッシュ演算結果は、インデックス・テーブル32の異なる格納場所をそれぞれ指定するものである。このため、本実施の形態では、それぞれのハッシュ演算結果(ハッシュ値)で指定されるインデックス・テーブル32の格納場所には、同じ値がエンコードされるものとする。これによって、それぞれのハッシュ値は異なるものの、インデックス・テーブル32にエンコードされた値によって指定されるフィルタリング・テーブル94のアドレスは同一にできる。
これにより、3つのプリフィックス"0000"、"0001"、及び"0010"の場合は、先頭の2ビット"00"だけが入力アドレスと比較され、プリフィックス"0011"の場合は、4ビット全体が入力アドレスと比較される。
なお、図9に示すサブ・セル9は、通常は長さ4ビットのプリフィクスを格納するサブ・セルを示している。このため、ルックアップの実行時は、はじめに4ビットマスク部97において、入力された宛先アドレスのうちハッシュ演算の対象となる先頭の4ビット以外がマスクされる。
上述した構成によって、フィルタリング・テーブル94に格納するエントリ数を、サブ・セル内に格納されるプリフィックスの数より小さくすることができる。したがって、フィルタリング・テーブル94に必要とされるメモリ容量の削減が可能となる。
その他の実施の形態.
発明の実施の形態1及び2に示したネットワーク検索エンジンの構成は、文献[5,6]に開示されたプリフィックスの前処理技術や、本出願の発明者らによる米国特許出願11/133,226に開示されたプリフィックスの前処理技術と組み合わせると有効である。
発明の実施の形態1及び2に示したネットワーク検索エンジンの構成は、文献[5,6]に開示されたプリフィックスの前処理技術や、本出願の発明者らによる米国特許出願11/133,226に開示されたプリフィックスの前処理技術と組み合わせると有効である。
なお、文献[5,6]は、ツリーベースの解決策及びハッシュベースの解決策に適したプリフィックス展開技術を提案している。当該展開技術は、与えられたプリフィックスを、予め定められたプリフィックス長の集合に属するように展開するものである。例えば、32ビットのIPv4アドレスであれば、8ビットの倍数の4種類のプリフィクス長(8、16、24、32ビット)に展開する。このようなプリフィックス展開によって、与えられたプリフィックス集合は、上記のIPv4アドレスの例であれば、4つのプリフィックス・テーブルによって構成することができる。このとき、各テーブルは、8ビットのアクセスワードによってアドレス可能であって、8ビットで表される網羅的な28個のビット・パターンをテーブル要素に有する。一般的には、アクセスワードがnビットであれば、2n個のプリフィックスをテーブル要素とするLmax/n個のプリフィックス・テーブルによって構成することができる。ここでLmaxは入力アドレス長である。このような、プリフィックスの前処理を行って、プリフィックス・テーブルを構成することにより、LPM探索時のプリフィックス・テーブルへのアクセス回数、つまりメモリアクセス回数を抑制するものである。
このような、予め定められたプリフィックス長に展開するプリフィックスの前処理技術を、上述したBloomierフィルタのデータ構造に基づくネットワーク検索エンジンに適用すする場合を考える。上記のプリフィックスの前処理を行った後のプリフィックスは、限られた数のプリフィックス長しか持たないため、限られた数のプリフィックスを処理するサブ・セルのみを設ければよいことになる。
例えば、32ビットのアドレスであれば、プリフィックスの前処理を行わなければ32種類のサブ・セルを設ける必要がある。これに対して、プリフィックスの前処理を行って、例えば8,16,24及び32ビットの4通りのプリフィックス長のみに集約すれば、4つのサブ・セルを設けるのみで良く、回路規模を削減できる。
しかしながら、プリフィックスの前処理によって、サブ・セル数を削減できても、各サブ・セルが処理するプリフィックス長は1通りのみである。従って、上述した発明の実施の形態1のネットワーク検索エンジンによって、フィルタリング・テーブルにプリフィックスと対応付けてプリフィックス長を格納し、1つのサブ・セルに複数のプリフィックス長を共存させることにより、メモリ利用効率の向上が可能となる。
また、さらに、上述したプリフィックスの前処理によって、サブ・セル数を削減できても、各サブ・セルが有するフィルタリング・テーブル及びリザルト・テーブルのエントリ数を削減することができない。つまり、集約後のプリフィックス長に含まれる全てのパターンを網羅したエントリを有するフィルタリング・テーブルを備えて、誤検出(false positives)を除去する必要があるため、テーブルを保持するためのメモリサイズが大きいという問題ある。
これに対して、上述した発明の実施の形態2のネットワーク検索エンジンであれば、同じネクスト・ホップ・アドレスと対応付けられる複数のプリフィックスを、フィルタリング・テーブルの1つのエントリ、つまり格納場所に集約して格納することが可能である。これにより、フィルタリング・テーブルのサイズを小さくでき、同様にリザルト・テーブルのサイズを小さくできる。
上述した発明の実施の形態1及び2によって、プリフィックスの前処理技術を適用したプリフィックス集合を、さらに効率よくサブ・セル内に格納することができる。
なお、上述した各実施の形態にかかるネットワーク検索エンジンは、IPパケット等のルーティングを行うネットワーク・ルータにおいて、入力パケットの転送先を決定するルーティング処理を行うルーティング・エンジンとして使用可能なものである。なお、上述した実施の形態で示したフィルタリング・テーブル及びリザルト・テーブルで示される1つのエントリは、プリフィックス、プリフィックス長、及びネクスト・ホップ・アドレスを示しており、ルーティング・プロトコルによって算出されるルーティング・テーブルと同じ構成である。このため、エントリの追加、削除又は変更を行う際に、集約後のプリフィックス長に含まれる全てのパターンを網羅したエントリを有するフィルタリング・テーブルの有する別体系のアドレスを参照するといった必要性も生じない。また、各サブ・セルは、ネットワーク・ルータとしての必要性に応じて、ルーティング・プロトコルによって算出されるルーティング・テーブルのコピーを各々のサブ・セルで持っても、複数のサブ・セルで1つのテーブルを共有しても良い。
また、発明の実施の形態1及び2にかかるネットワーク検索エンジンは、コンピュータ・システムを用いて実現することが可能である。したがって、発明の実施の形態1及び2にかかるネットワーク検索エンジンの処理をコンピュータに実行させるコンピュータ・プログラムも本発明の範囲に含まれるものである。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
6、6A〜6C サブ・セル
7 ネットワーク検索エンジン
31 ハッシュ演算部
32 インデックス・テーブル
33 論理演算部
35 リザルト・テーブル
36 比較部
64、94 フィルタリング・テーブル
641、941 プリフィックス・フィールド
642、942 プリフィックス長フィールド
67 16ビットマスク部
68 マスク部
72 優先度判定部
97 4ビットマスク部
7 ネットワーク検索エンジン
31 ハッシュ演算部
32 インデックス・テーブル
33 論理演算部
35 リザルト・テーブル
36 比較部
64、94 フィルタリング・テーブル
641、941 プリフィックス・フィールド
642、942 プリフィックス長フィールド
67 16ビットマスク部
68 マスク部
72 優先度判定部
97 4ビットマスク部
Claims (16)
- 少なくとも1つのインデックス・テーブル、少なくとも1つのフィルタリング・テーブル、及び少なくとも1つのリザルト・テーブルを有するネットワーク・ルータであって、
前記インデックス・テーブルは、入力アドレスに関連する関数がエンコードされた値を格納するための2以上の格納場所を有し、
前記エンコードされた値は、前記入力アドレスに対するハッシュ演算で得られるハッシュ値を用いて、全ての前記エンコードされた値によって前記関数を復元することができるように生成されたものであり、
前記フィルタリング・テーブルは、少なくとも2つの異なる長さの複数のプリフィックスを格納し、かつ前記インデックス・テーブルに格納されたエントリによって索引付けされ、
前記リザルト・テーブルは、複数のネクスト・ホップ・アドレスを格納し、かつ前記インデックス・テーブルに格納されたエントリによって索引付けされ、
前記フィルタリング・テーブルの少なくとも1つのレコードは、当該少なくとも1つのレコードに格納されるプリフィックスのプリフィックス長を格納可能なプリフィックス長フィールドを有する、ネットワーク・ルータ。 - 前記プリフィックス長は、前記プリフィックスと前記入力アドレスの一致判定を行う際に比較すべきビット数を示す、請求項1に記載のネットワーク・ルータ。
- 前記複数のプリフィックスのうちのプリフィックス長の長いプリフィックスのサブ・プリフィックスは、前記複数のプリフィックスのうちのプリフィックス長の短いプリフィックスと一致せず、
前記プリフィックス長の長いプリフィックスを、前記フィルタリング・テーブルにおける前記短いプリフィック長のプリフィックスに対応する格納場所に格納することが可能である、請求項1に記載のネットワーク・ルータ。 - 前記ハッシュ演算に用いられるハッシュ関数は、前記複数のプリフィックスのうちの長さの長いプリフィックスのプリフィックス長より短いビット数を用いるものである、請求項1に記載のネットワーク・ルータ。
- 前記フィルタリング・テーブルに格納されるプリフィックスは、プリフィックスの集合に含まれるプリフィックスのうち、同じネクスト・ホップ・アドレスを有するプリフィックスの最大部分集合をまとめたものであり、前記最大部分集合は共通のサブ・プリフィックスを有する、請求項1に記載のネットワーク・ルータ。
- 前記最大部分集合に含まれるプリフィックスは、前記フィルタリング・テーブルの1つの格納場所に格納される、請求項5に記載のネットワーク・ルータ。
- ネットワーク検索エンジンにおけるアドレス処理方法であって、
入力アドレスを入力し、
前記入力アドレスに対するハッシュ演算を行ってハッシュ値を生成し、
前記ハッシュ値に基づいて、インデックス・テーブルに格納されたエントリを選択し、
選択された前記エントリに基づいて、少なくとも2つの異なる長さの複数のプリフィックスを格納するフィールドと当該複数のプリフィックスの長さを格納するフィールドとを有するフィルタリング・テーブルから、1のプリフィックス及び当該1のプリフィックスのプリフィックス長を索引付けし、
選択された前記エントリに基づいて、複数のネクスト・ホップ・アドレスが格納されたリザルト・テーブルから、1のネクスト・ホップ・アドレスを索引付けし、
前記索引付けされたプリフィックスと前記入力アドレスの間で、前記索引付けされたプリフィックス長に相当する部分の一致判定を行う、アドレス処理方法。 - 前記複数のプリフィックスのうちのプリフィックス長の長いプリフィックスのサブ・プリフィックスは、前記複数のプリフィックスのうちのプリフィックス長の短いプリフィックスと一致せず、
前記プリフィックス長の長いプリフィックスが、前記フィルタリング・テーブルにおける前記短いプリフィック長のプリフィックスに対応する格納場所に格納されている、請求項7に記載の方法。 - 前記ハッシュ演算に用いられるハッシュ関数は、前記複数のプリフィックスのうちの長さの長いプリフィックスのプリフィックス長より短いビット数を用いるものである、請求項7に記載の方法。
- 前記フィルタリング・テーブルに格納されるプリフィックスは、同じネクスト・ホップ・アドレスを有するプリフィックスの最大部分集合をまとめたものであり、前記最大部分集合は共通のサブ・プリフィックスを有する、請求項7に記載の方法。
- 前記最大部分集合に含まれるプリフィックスは、前記フィルタリング・テーブルの1つの格納場所に格納されている、請求項10に記載の方法。
- コンピュータを、
入力アドレスを受信する手段、
前記入力アドレスに対するハッシュ演算を行ってハッシュ値を生成する手段、
前記ハッシュ値に基づいて、インデックス・テーブルに格納されたエントリを選択する手段、
選択された前記エントリに基づいて、少なくとも2つの異なる長さの複数のプリフィックスを格納するフィールドと当該複数のプリフィックスの長さを格納するフィールドとを有するフィルタリング・テーブルから、1のプリフィックス及び当該1のプリフィックスのプリフィックス長を索引付けする手段、
選択された前記エントリに基づいて、複数のネクスト・ホップ・アドレスが格納されたリザルト・テーブルから、1のネクスト・ホップ・アドレスを索引付けする手段、
及び、
前記索引付けされたプリフィックスと前記入力アドレスの間で、前記索引付けされたプリフィックス長に相当する部分の一致判定を行う手段、
として機能させるためのコンピュータ・プログラム。 - 前記複数のプリフィックスのうちのプリフィックス長の長いプリフィックスのサブ・プリフィックスは、前記複数のプリフィックスのうちのプリフィックス長の短いプリフィックスと一致せず、
前記プリフィックス長の長いプリフィックスが、前記フィルタリング・テーブルにおける前記短いプリフィック長のプリフィックスに対応する格納場所に格納されている、請求項12に記載のコンピュータ・プログラム。 - 前記ハッシュ演算に用いられるハッシュ関数は、前記複数のプリフィックスのうちの長さの長いプリフィックスのプリフィックス長より短いビット数を用いるものである、請求項12に記載のコンピュータ・プログラム。
- 前記フィルタリング・テーブルに格納されるプリフィックスは、同じネクスト・ホップ・アドレスを有するプリフィックスの最大部分集合をまとめたものであり、前記最大部分集合は共通のサブ・プリフィックスを有する、請求項12に記載のコンピュータ・プログラム。
- 前記最大部分集合に含まれるプリフィックスは、前記フィルタリング・テーブルの1つの格納場所に格納されている、請求項15に記載のコンピュータ・プログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65816805P | 2005-03-04 | 2005-03-04 | |
US11/133,227 US20060198379A1 (en) | 2005-03-04 | 2005-05-20 | Prefix optimizations for a network search engine |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006246488A true JP2006246488A (ja) | 2006-09-14 |
Family
ID=36944077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006058509A Pending JP2006246488A (ja) | 2005-03-04 | 2006-03-03 | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20060198379A1 (ja) |
JP (1) | JP2006246488A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009123050A (ja) * | 2007-11-16 | 2009-06-04 | Nec Electronics Corp | 情報検索装置、及び情報検索装置へのエントリ情報の登録方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7990973B2 (en) * | 2008-08-13 | 2011-08-02 | Alcatel-Lucent Usa Inc. | Hash functions for applications such as network address lookup |
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 |
US9313103B2 (en) * | 2013-03-08 | 2016-04-12 | Qualcomm Incorporated | Systems and methods for discovering devices in a neighborhood aware network |
US9647941B2 (en) * | 2013-10-04 | 2017-05-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Hierarchical hashing for longest prefix matching |
WO2017014724A1 (en) | 2015-07-17 | 2017-01-26 | Hewlett Packard Enterprise Development Lp | Combining prefix lengths into a hash table |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000358064A (ja) * | 1999-06-17 | 2000-12-26 | Nippon Telegr & Teleph Corp <Ntt> | ルーティングテーブル検索装置および検索法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6563823B1 (en) * | 1997-10-30 | 2003-05-13 | Marconi Communications, Inc. | Multi-resolution tree for longest match address lookups |
US7203837B2 (en) * | 2001-04-12 | 2007-04-10 | Microsoft Corporation | Methods and systems for unilateral authentication of messages |
US8295286B2 (en) * | 2003-12-31 | 2012-10-23 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
US7746865B2 (en) * | 2004-12-07 | 2010-06-29 | Intel Corporation | Maskable content addressable memory |
-
2005
- 2005-05-20 US US11/133,227 patent/US20060198379A1/en not_active Abandoned
-
2006
- 2006-03-03 JP JP2006058509A patent/JP2006246488A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000358064A (ja) * | 1999-06-17 | 2000-12-26 | Nippon Telegr & Teleph Corp <Ntt> | ルーティングテーブル検索装置および検索法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009123050A (ja) * | 2007-11-16 | 2009-06-04 | Nec Electronics Corp | 情報検索装置、及び情報検索装置へのエントリ情報の登録方法 |
Also Published As
Publication number | Publication date |
---|---|
US20060198379A1 (en) | 2006-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7019674B2 (en) | Content-based information retrieval architecture | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
US8938469B1 (en) | Dynamically adjusting hash table capacity | |
US6434144B1 (en) | Multi-level table lookup | |
US7630373B2 (en) | Packet transfer apparatus | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
US7313666B1 (en) | Methods and apparatus for longest common prefix based caching | |
US20040230583A1 (en) | Comparison tree data structures of particular use in performing lookup operations | |
US20040254909A1 (en) | Programming routes and access control lists in comparison tree data structures and their use such as in performing lookup operations | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
Bando et al. | FlashTrie: beyond 100-Gb/s IP route lookup using hash-based prefix-compressed trie | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US8010557B2 (en) | Retrieving method for fixed length data | |
US9049157B1 (en) | Method and device for improving scalability of longest prefix match | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
CN111937360A (zh) | 最长前缀匹配 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
JP2006246489A (ja) | データベースへのプリフィックス集合の格納方法、及びそれをコンピュータに実行させるためのプログラム | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
CN104301227B (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
CN111865804B (zh) | 一种通过硬件发包机制提升路由下发效率的方法及系统 | |
Ghosh et al. | A hash based architecture of longest prefix matching for fast IP processing | |
CN114911728A (zh) | 一种数据查找方法、装置及集成电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100820 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100831 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110208 |