JP2015529061A - 高速コンテンツルーティング - Google Patents
高速コンテンツルーティング Download PDFInfo
- Publication number
- JP2015529061A JP2015529061A JP2015525480A JP2015525480A JP2015529061A JP 2015529061 A JP2015529061 A JP 2015529061A JP 2015525480 A JP2015525480 A JP 2015525480A JP 2015525480 A JP2015525480 A JP 2015525480A JP 2015529061 A JP2015529061 A JP 2015529061A
- Authority
- JP
- Japan
- Prior art keywords
- line card
- message
- input line
- network device
- destination 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
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000012546 transfer Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 14
- 239000004744 fabric Substances 0.000 description 11
- 241000614201 Adenocaulon bicolor Species 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6402—Hybrid switching fabrics
-
- 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/7453—Address table lookup; Address filtering using hashing
- H04L45/7459—Address table lookup; Address filtering using hashing using Bloom filters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
様々な例示的実施形態は、以下のステップのうちの1つまたは複数を含む方法および関連するネットワークノードに関し、そのステップとは、ネットワークデバイスの第1の入力ラインカードで、メッセージを受信するステップであって、メッセージが宛先アドレスを含む、受信するステップと、メッセージを、第1の入力ラインカードによって、第2の入力ラインカードに、第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されているとの決定に基づいて、送信するステップと、第2の入力ラインカードによって、また宛先アドレスと関連するルーティング情報に基づいて、メッセージが、ネットワークデバイスの第1の出力ラインカードを介して別のネットワークデバイスに転送されるべきであると決定するステップと、メッセージを、第2の入力ラインカードによって、第1の出力ラインカードに、メッセージが転送されるべきであるとの決定に基づいて、送信するステップと、メッセージを、第1の出力ラインカードによって、別のネットワークデバイスに送信するステップとである。
Description
本明細書で開示される様々な例示的実施形態は、一般に、コンピュータネットワーキングに関する。
インターネットは、マシン同士を相互接続する媒体から、マシンを映像や写真などのコンテンツと接続する媒体へと発展した。インターネットはIPアドレスによるルーティング情報などの様々な技術の上に発展したが、インターネットの現在の状態を考えると、将来のアーキテクチャは別の仕組みを利用する可能性がある。多くの提案の中にある共通原則は、これらの将来のアーキテクチャがマシン自体にではなく、提供されるコンテンツにその中心があることであろう。
コンテンツ中心のネットワーキングは、場所ではなく名前によってコンテンツが要求される、より最近のパラダイムである。このパラダイムは、名前ベースのルーティングを利用でき、ルータは、「コンテンツ名」に基づいて、トラフィックを宛先サーバに転送することができる。したがって、インターネットルータは、転送されるコンテンツに関する明示的な情報を提供され得る。
Songらによる、また2009年にIEEEによって発行された「IPv6 Lookups using Distributed and Load Balanced Bloom Filters for 100Gbps Core Router Line Cards」
名前ベースのルーティングの1つの成果は、IPアドレスが、変形形態の数において制約され、地理的にまとめられている一方で、コンテンツ名は、同様の名前でコンテンツをホストするサーバの場所にかかわらず、事実上いかなる値ももつことができ、どこに位置するサーバも指し示すことができることである。したがって、名前ベースのルーティングテーブルのエントリの数は、IPv4またはIPv6のルーティングテーブルよりも数桁大きいものであり得る。これは、効率的にテーブルを格納すること、およびトラフィックをテーブルを使用して迅速に転送することにおける新しい課題を提示する。
様々な例示的実施形態の簡潔な概要が以下に提示される。以下の概要において何らかの簡略化および省略が行われる場合があるが、それは本発明の範囲を限定するためではなく、様々な例示的実施形態の何らかの態様を取り上げて紹介することが意図されている。当業者が本発明の概念を形にし、使用できるようにするのに十分な、本発明の例示的な好ましい実施形態に関する詳細を、後節で説明する。
様々な例示的実施形態は、メッセージを転送するためにネットワークデバイスによって実行される方法に関し、その方法は、ネットワークデバイスの第1の入力ラインカードで、宛先に向けて転送されるべきメッセージを受信するステップであって、メッセージが宛先アドレスを含む、受信するステップと、第1の入力ラインカードによって、ネットワークデバイスの第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されていると決定するステップと、メッセージを、第1の入力ラインカードによって、第2の入力ラインカードに、第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されているとの決定に基づいて、送信するステップと、第2の入力ラインカードによって、また宛先アドレスと関連するルーティング情報に基づいて、メッセージが、ネットワークデバイスの第1の出力ラインカードを介して別のネットワークデバイスに転送されるべきであると決定するステップと、メッセージを、第2の入力ラインカードによって、第1の出力ラインカードに、メッセージが、ネットワークデバイスの第1の出力ラインカードを介して別のネットワークデバイスに転送されるべきであるとの決定に基づいて、送信するステップと、メッセージを、第1の出力ラインカードによって、別のネットワークデバイスに送信するステップとを含む。
第1の出力ラインカードが、第1の入力ラインカードおよび第2の入力ラインカードのうちの1つを備える、様々な実施形態が述べられる。
宛先アドレスがコンテンツ名である、様々な実施形態が述べられる。
メッセージを第2のラインに送信するステップが、メッセージを、第1の入力ラインカードによって、第2の入力ラインカードの入力ポートに送信するステップを含む、様々な実施形態が述べられる。
第1の入力ラインカードによって、ネットワークデバイスの第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されていると決定するステップが、ハッシュ化された宛先アドレスを生成するために、少なくとも宛先アドレスの一部に関してハッシュ関数を実行するステップと、第2の入力ラインカードの割り当てられた識別子が、ハッシュ化された宛先アドレスに対応すると決定するステップとを含む、様々な実施形態が述べられる。
第1の入力ラインカードが、転送情報の第1のセットを格納し、第2の入力ラインカードが、転送情報の第1のセットと異なる転送情報の第2のセットを格納する、様々な実施形態が述べられる。
様々な例示的実施形態は、メッセージを転送するためのネットワークデバイスに関し、そのネットワークデバイスは、ルーティング情報を格納するように構成されたルーティング情報ベース(RIB:Routing Information Base)記憶装置と、複数のラインカードと、プロセッサとを備え、プロセッサが、第1の識別子を複数のラインカードのうちの第1の入力ラインカードと関連付け、第2の識別子を複数のラインカードのうちの第2の入力ラインカードと関連付けるラインカードテーブルを生成し、転送情報の第1のセットを、ルーティング情報および第1の識別子に基づいて生成し、転送情報の第1のセットと異なる転送情報の第2のセットを、ルーティング情報および第2の識別子に基づいて生成し、ラインカードテーブルおよび転送情報の第1のセットを、第1の入力ラインカードに提供し、またラインカードテーブルおよび転送情報の第2のセットを、第2の入力ラインカードに提供するように構成されている。
転送情報の第1のセットを、ルーティング情報および第1の識別子に基づいて生成する際に、プロセッサが、アドレスプレフィックスおよび関連付けられた転送情報を、ルーティング情報に基づいて生成し、値を生成するために、アドレスプレフィックスに関して、数学的演算を実行し、値が第1の識別子にマッチすると決定し、またアドレスプレフィックスを、第1の識別子にマッチする値に基づいて、転送情報の第1のセットに含めるように構成された、様々な実施形態が述べられる。
プロセッサが、第2の入力ラインカードが故障したことの表示を受信し、第1の識別子を第1の入力ラインカードと関連付け、第2の識別子を、複数のラインカードのうちの第1の出力ラインカードと関連付ける更新されたラインカードテーブルを生成し、転送情報の第3のセットを、ルーティング情報および第2の識別子に基づいて生成し、また更新されたラインカードテーブルおよび転送情報の第3のセットを、第1の出力ラインカードに提供するようにさらに構成された、様々な実施形態が述べられる。
第1の入力ラインカードが、ラインカードテーブルを記憶するように構成された第1のメモリと、宛先デバイスに向けて転送されるべき、宛先アドレスを含むメッセージを受信し、第2の識別子および宛先アドレスに基づいて、第2の入力ラインカードがメッセージを処理すべきと決定し、またメッセージを、第2の入力ラインカードに、第2の入力ラインカードがメッセージを処理すべきと決定するのに基づいて、送信するように構成された、第1の処理マネージャとを備える、様々な実施形態が述べられる。
第2の入力ラインカードが、第2の入力ラインカードがメッセージを処理すべきと決定するように構成された第2の処理マネージャと、第1の出力ラインカードがメッセージを別のネットワークデバイスに転送し、メッセージを第1の出力ラインカードに送信すると決定するように構成された、転送モジュールとを備える、様々な実施形態が述べられる。
第2の入力ラインカードが、キャッシュテーブルを記憶するように構成されたメモリをさらに備え、転送モジュールが、第1の出力ラインカードがメッセージを他のネットワークデバイスに転送すべきと決定する際に、キャッシュテーブルが宛先アドレスと関連付けられたエントリを格納すると決定し、エントリが第1の出力ラインカードを識別すると決定するように構成された、キャッシュである、様々な実施形態が述べられる。
第2の入力ラインカードが、転送情報の第2のセットを記憶するように構成されたハッシュテーブル記憶装置をさらに備え、転送モジュールが、第1の出力ラインカードがメッセージを他のネットワークデバイスに転送すべきと決定する際に、宛先アドレスの最長マッチングプレフィックスを有する、転送情報の第2のセットのエントリを識別し、エントリが第1の出力ラインカードを識別すると決定するように構成された、最長プレフィックスマッチング(LPM:Longest Prefix Matching)ブロックである、様々な実施形態が述べられる。
宛先アドレスの最長マッチングプレフィックスを有する、転送情報の第2のセットのエントリを識別する際に、LPMブロックが、最長マッチングプレフィックスの長さを判定するために、分散ブルームフィルタのセットを利用する、様々な実施形態が述べられる。
様々な例示的実施形態は、メッセージを転送するためのネットワークデバイスに関し、そのネットワークデバイスは、転送情報の第1のセットを格納する第1の入力ラインカードと、転送情報の第1のセットと異なる転送情報の第2のセットを格納する第2の入力ラインカードとを備え、そこでは、第1の入力ラインカードが、転送されるべきメッセージを受信し、メッセージを第2の入力ラインカードに送信するように構成され、第2の入力ラインカードが、メッセージを転送情報の第2のセットに基づいて転送するように構成される。
転送情報の第1のセットおよび転送情報の第2のセットがコンテンツアドレスプレフィックスの転送情報を格納する、様々な実施形態が述べられる。
ネットワークデバイスが、スイッチングファブリックを備え、メッセージを転送情報の第2のセットに基づいて転送する際に、第2の入力ラインカードが、メッセージをスイッチングファブリックを介して送信するように構成される、様々な実施形態が述べられる。
第1の入力ラインカードが、メッセージと関連付けられた宛先アドレスが、第2の入力ラインカードに割り当てられていると決定するように構成された、様々な実施形態が述べられる。
メッセージと関連付けられた宛先アドレスが、第2の入力ラインカードに割り当てられていると決定する際に、第1の入力ラインカードが、ハッシュ値を、少なくとも宛先アドレスの一部に基づいて生成し、インデックスを、ハッシュ値、およびネットワークデバイス向けに構成されたいくつかのラインカードに基づいて生成し、またインデックスが第2の入力ラインカードに対応すると決定するように構成された、様々な実施形態が述べられる。
転送情報の第2のセットが、長さが異なる複数のアドレスプレフィックスの転送情報を含み、メッセージを転送情報の第2のセットに基づいて転送する際に、第2の入力ラインカードが、メッセージの宛先アドレスを抽出し、最初のプレフィックスの長さを判定するために分散ブルームフィルタのセットを宛先アドレスに適用し、また少なくとも、最初のプレフィックスの長さを有するアドレスプレフィックスの転送情報を評価することで、転送情報の第2のセットの検索を開始するように構成された、様々な実施形態が述べられる。
様々な例示的実施形態をより理解するために、以下の添付図面を参照する。
理解を容易にするために、実質的に同じもしくは同様の構造または実質的に同じもしくは同様の機能を有する要素を示すために、同一の参照番号が使用されている。
上述のように、出現しつつある様々なルーティングパラダイムは、インターネットおよび他のネットワーク上でトラフィックをルーティングする際に使用されるルーティングテーブルの拡大を提案する。より規模の大きいテーブルは、より大きくより高速なメモリおよびより高速なプロセッサによって提供可能であるが、この手法は、おそらく非常に高額である。したがって、ルーティングテーブルおよび/または様々なルーティング動作を複数のハードウェアエンティティに分散させることができる経路解決の方法を実装することが望ましい可能性がある。以下の説明を考えれば、様々な追加の目的および利益が明らかであろう。当業者であれば、本明細書で説明する様々な例は、名前ベースのルーティングに関して説明されているが、説明する方法およびシステムは、例えば、IPv4またはIPv6プロトコルによるルーティングなどの他の環境で有用であり得ることが明らかであろう。
ここで図面を参照すると、様々な例示的実施形態の開示された広範な態様がある。図面では同様の参照番号は、同様の構成要素またはステップを表す。
図1は、メッセージをルーティングするための例示的ネットワーク100を示す。様々な実施形態において、例示的ネットワーク100は、インターネットまたはその一部であってもよい。当業者には、例示的ネットワーク100が、いくつかの点で、簡略化されていることが明らかであろう。例えば、例示的ネットワーク100は、多数の追加のクライアント、サーバ、ルータ、スイッチ、および/または他のネットワークデバイスを含んでもよい。図に示すように、例示的ネットワーク100は、いくつかのネットワークデバイス、すなわち、1つのクライアントデバイス110、2つのサーバ120、130、および5つのルータ140a−eを含んでもよい。本明細書において使用される用語「ルータ」は、データメッセージを受信してデータメッセージをその最終的な宛先に向けて転送することができる任意のネットワークデバイスを指すと理解することができる。したがって、用語「ルータ」は、例えば、スイッチ(レイヤ2)や本来のルータ(レイヤ3)などの、ネットワークのOSIモデルの任意のレイヤで動作するネットワークデバイスを包含することができる。さらに、用語「メッセージ」は、例えば、フレームやパケットなどの、あるデバイスから別のデバイスに転送される、データの任意のチャンクを包含すると理解されよう。
図に示すように、ルータ140a−eは、メッセージがこれらのデバイス間で交換できるように、クライアントデバイス110、サーバ120、およびサーバ130を相互接続することができる。先に述べたように、例示的ネットワーク100は簡略化された構成なので、したがって、図に示されているネットワークデバイス間に通信を提供する、いくつかの中間ルータおよび/または他のネットワークデバイス(図示せず)が存在する場合がある。例えば、ルータ140cは、サーバ120に、1つまたは複数の中間ネットワークデバイス(図示せず)を経由して接続される場合がある。
クライアントデバイス110は、ネットワークを介してコンテンツを要求し、受信することができる任意のデバイスであり得る。例えば、クライアントデバイス110には、パーソナルコンピュータ、ラップトップ、携帯電話、タブレット、または他のデバイスが含まれてもよい。サーバ120、130はそれぞれ、要求を受信し、コンテンツを供給することができる任意のデバイスであり得る。例えば、サーバ120、130にはそれぞれ、パーソナルコンピュータ、スタンドアロンサーバ、ブレードサーバ、または他のデバイスが含まれてもよい。サーバ120、130はそれぞれ、いくつかのコンテンツ項目のホストとして機能することができ、各項目は、少なくとも1つのコンテンツ名によって識別される。図に示すように、例えば、サーバ120は、「TUX/notes.txt」、「JDOE/notes.txt」、および「/JDOE/VIDEOS/JD2012/vid.avi」と識別される3つのコンテンツ項目のホストとして機能してもよい。別の例として、サーバ130も、「/JDOE/PAPERS/PaperA.pdf」、「/JDOE/PAPERS/PaperB.pdf」、および「/JDOE/VIDEOS/abc.mpg」と識別される3つのコンテンツ項目のホストとして機能してもよい。クライアントデバイス110は、要求メッセージを送信することにより、これらの項目のいずれかの配信を要求することができ、要求メッセージは次いで、ルータ140a−eによって適切なサーバ120、130にルーティング可能である。このルーティングは、要求されたコンテンツの名前に基づいて実行することができる。したがって、コンテンツ名は、要求メッセージの宛先アドレスと見なされ得る。サーバ120、130は次いで、適切なコンテンツの位置を特定するための要求を使用し、コンテンツをクライアントデバイス110にルータ150a−eを介して送り返すことができる。
例として、図1は、要求メッセージ150をルータ140aに送信するクライアントデバイス110を示す。要求メッセージ150は、「/JDOE/VIDEOS/abc.mpg」という宛先アドレスを含むことができる。したがって、メッセージ150は、サーバ130によって格納されているコンテンツを要求することができる。要求メッセージ150を受信すると、ルータ140aは次いで、要求メッセージ150をその最終的な宛先に向けて進めるために、どのルータ、すなわちどの「ネクストホップ」に、要求メッセージ150が転送されるべきかを判定できるよう、様々なルーティング動作を実行することができる。この能力を提供するために、ルータ140a−eはそれぞれ、ネットワーク100向けのルーティングテーブルを含んでもよい。あるいは、ルータ140a−eは共に、分散ルーティングテーブルを実装してもよい。したがって、各ルータ140a−eは、このルータ140a−eのセットと関連付けられたルーティングテーブルの、全体ではないが、一部を含んでもよい。例えば、各ルータ140a−eは、ルータ140a−eが使用可能なルーティングレコードを格納できるように割り当てたアドレス範囲を割り当てられてもよい。様々な代替実施形態において、ネットワーク100は、ルータではなく、分散ルーティングテーブルの一部を含む、1つまたは複数のネットワークデバイスを含んでもよい。例えば、ネットワーク100は、分散ルーティングテーブルの一部を格納するとともに、ルータ140a−eが他のルータ140a−eにメッセージ転送の支援を行うであろうやり方に類似した方法でルータ140a−eに対しメッセージ転送を支援する、専用サーバ(図示せず)を含んでもよい。複数のネットワークデバイス間のルーティングテーブルの分散に関するさらなる詳細は、2012年3月15日に出願された同時係属出願第13/421,389号に記載されており、その全体は、引用によりあらゆる目的で本明細書に組み込まれている。
様々な代替実施形態において、要求メッセージ150は、要求されたコンテンツの特定の「チャンク」をアドレス指定してもよい。例えば、要求メッセージ150は、「/JDOE/VIDEOS/abc.mpg/chunk2」を要求してもよい。特定のコンテンツ項目のすべてのチャンクが同じ場所に格納されている様々な実施形態においては、メッセージの処理に使用される宛先アドレスは、チャンク識別子を省略してもよく、したがって、「/JDOE/VIDEOS/abc.mpg」に基づいてルーティングする。例えば、コンテンツが複数のサーバ間で分散され得る実施形態などの様々な代替実施形態においては、ルータは、チャンク識別子に基づいてもルーティングでき、したがって、この例では、「/JDOE/VIDEOS/abc.mpg/chunk2」に基づいてルーティングする。
図2は、メッセージをルーティングするための例示的ネットワークデバイス200を示す。ネットワークデバイス200は、例示的ネットワーク100のルータ140a−eのうちの1つまたは複数に対応することができる。したがって、ネットワークデバイス200は、メッセージをコンテンツ名などの宛先アドレスに基づいてルーティングするように構成可能である。図に示すように、例示的ネットワークデバイスは、制御プレーン210およびデータプレーン220を備えることができる。制御プレーン210は、ルーティング情報ベース(RIB)記憶装置212、プロセッサ214、およびメモリ216を備えることができる。データプレーンは、複数のラインカード222a−b、224a−b、226a−b、および複数のスイッチングファブリック230、232を備えることができる。
RIB記憶装置212は、RIBなどのルーティング情報を記憶するように構成されたデバイスであり得る。RIB記憶装置212には、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリデバイス、および/または類似の記憶媒体などのマシン可読記憶媒体が含まれてもよい。例えば、RIB記憶装置212には、様々なネクストホップデバイスを経由してどの宛先アドレスに到達できるかに関する情報を記憶しているSRAMが含まれてもよい。RIB記憶装置212の例示的コンテンツは、図3に関連して以下でより詳細に示される。
プロセッサ214は、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または他のデバイスなどの処理デバイスであり得る。プロセッサ214は、様々な制御プレーン機能を実行するように構成可能である。メモリ216は、プロセッサ214をサポートすることができる任意のメモリデバイスを備えてもよい。例えば、メモリ216は、1つまたは複数のSRAMチップを備えてもよい。
様々な実施形態において、プロセッサ214は、転送情報の1つまたは複数のセットをRIB記憶装置212のコンテンツに基づいて生成し、転送情報ベース(FIB:Forwarding Information Base)などの、転送情報の1つまたは複数のセットをラインカード222a−b、224a−b、226a−bに提供するように構成可能である。この生成は、知られている各アドレスプレフィックスに対する最善の経路の選択、および適切な出力ポートまたはラインカードとのネットホップデバイスの関連付けを含んでもよい。
様々な実施形態において、プロセッサ214は、転送情報の別々のセットをラインカード222a−b、224a−b、226a−bのそれぞれに提供するように構成可能である。図4に関連して以下でより詳細に示されるように、プロセッサ214は、各ラインカード222a−b、224a−b、226a−bに、全転送情報のサブセットを提供してもよい。プロセッサ214はまた、各ラインカード222a−b、224a−b、226a−bに、どのラインカード222a−b、224a−b、226a−bが所与の宛先アドレスを有するメッセージの処理に有用な転送情報を与えられているかを判定するのに有用なラインカードテーブルを提供してもよい。
ラインカード222a−b、224a−b、226a−bはそれぞれ、1つまたは複数の入力ポートおよび1つまたは複数の出力ポートを有する、メッセージの受信ならびに転送を行うことができるデバイスを構成することができる。各ラインカード222a−b、224a−b、226a−bは、入力ラインカード222a、224a、226aおよび出力ラインカード222b、224b、226bとして有用であり得る。入力ラインカード222a、224a、226aはそれぞれ、メッセージを別の外部デバイスまたはスイッチングファブリック230、232から受信して、次にメッセージを適切な出力ラインカード222b、224b、226bにスイッチングファブリック230、232を介して送信するように構成可能である。出力ラインカード222b、224b、226bは、メッセージをスイッチングファブリック230、232から受信して、メッセージをネクストホップのネットワークデバイスに出力するように構成可能である。このように、本明細書において使用される用語「入力ラインカード」および「出力ラインカード」は、入力機能および出力機能をそれぞれ実行する同じタイプの物理デバイスを指し得る。さらに、「ラインカード」は、「入力ラインカード」と「出力ラインカード」の両方になってもよい。データプレーン220は、多数の追加のラインカード(図示せず)を備えてもよい。様々な実施形態において、データプレーン220は、500個または1000個のラインカード(図示せず)を含んでもよい。
スイッチングファブリック230、232は、メッセージをラインカード222b、224b、226b間で転送するように構成された、ハードウェア、またはマシン可読媒体上で符号化されたマシン実行可能命令を含むことができる。データプレーン220が、より少ないまたは追加のスイッチングファブリック(図示せず)を含んでもよいことが理解されよう。様々な実施形態において、データプレーン220は、8個または16個のスイッチングファブリック(図示せず)を含んでもよい。
図5−10に関連して以下でより詳細に説明されるように、入力ラインカード222a、224a、226aは、適切な出力ラインカード222b、224b、226bをローカルの転送情報ベース(FIB)に基づいて選択することができる。メッセージを受信すると、入力ラインカード222a、224a、226aは、最初に、ローカルのFIBが、メッセージを転送するのに有用な転送情報を含む可能性があるかを判定するために、ローカルのラインカードテーブルを調べることができる。転送情報を含む可能性がない場合、入力ラインカード222a、224a、226aは、メッセージを、この転送情報にアクセスできる別の入力ラインカード222a、224a、226aに転送することができる。例えば、メッセージ経路240によって示されるように、入力ラインカード1 222aは、メッセージを受信して、入力ラインカード2 224aが、メッセージを転送するのに有用な転送情報を格納している可能性があるかを判定することができる。その後、入力ラインカード1 222aは、メッセージを入力ラインカード2 224aにスイッチングファブリック230、232のうちの1つを介して転送することができる。次に、ラインカード2 224aは、出力ラインカード1 22bがメッセージをネクストホップに転送すべきか判定するために、ローカルに格納された転送情報を使用することができる。これは、例えば、各ラインカード222a−b、224a−b、226a−bが、別々のデバイスに接続された複数のポートを備えているという場合であり得る。入力ラインカード2は次いで、メッセージを出力ラインカード1 222bに伝達でき、出力ラインカード1 222bは次いで、メッセージを別のネットワークデバイスに転送することができる。
場合によっては、ラインカード222a−b、224a−b、226a−bは、ラインカード222a−b、224a−b、226a−bが、そのための有用な転送情報を格納しているメッセージを受信することがある。例えば、メッセージフロー250において、ラインカードN 226aは、メッセージを外部デバイスから受信して、ローカルに格納された転送情報に基づいて、ラインカード2 224bがメッセージをネクストホップに転送すべきであると判定することができる。入力ラインカードN 226aは次いで、メッセージを直接、出力ラインカード2 224bに転送でき、出力ラインカード2 224bは、メッセージをネクストホップデバイスに転送することができる。
図3は、ルーティング情報を格納するための例示的データ配置300を示す。データ配置300は、例えば、オブジェクト、配列、リンクリスト、ツリー、および/またはハッシュテーブルなどの様々なデータ構造を使用して実装可能である。データ配置300は、例えば、例示的ネットワークデバイス200のRIB記憶装置212に記憶可能である。データ配置300は、コンテンツプレフィックスフィールド310、ネクストホップフィールド320、およびメトリックフィールド330などのいくつかのフィールドを含むことができる。
コンテンツプレフィックスフィールド310は、少なくともコンテンツ名または他の宛先アドレスの一部を格納することができる。コンテンツプレフィックスフィールド310の値は、エントリが、値にマッチするトラフィックに適用されることを示すことができる。ネクストホップフィールド320は、関連付けられたプレフィックスにマッチするトラフィックをその宛先に向けてルーティングすることができるネクストホップデバイスの識別情報を格納することができる。様々な実施形態において、ネクストホップフィールド320は、代替方法として、またはさらに、トラフィックにマッチするための、出力ラインカードおよび/もしくは出力ポートの表示を格納することができる。メトリックフィールド330は、どの経路が最も速いか、最も安いか、もしくはさもなければ特定のプレフィックスにとって好ましいかを判定するのに有用な1つまたは複数のメトリックを格納することができる。
例として、データ配置300は、いくつかのエントリ340−380を含んでいるように示される。データ配置300は、多数の追加のエントリ390を含んでもよい。第1のエントリ340は、コンテンツプレフィックス「/TUX」にマッチするトラフィックがネクストホップ「b」に転送されてもよく、またこの経路と関連付けられたメトリックが「2」の値に設定されていることを示すことができる。次のエントリ350はまた、コンテンツプレフィックス「/TUX」にマッチするトラフィックに適用されてもよく、ネクストホップ「d」が同様に、「3」というメトリックでではあるものの、このトラフィックを宛先に向けて転送することができることを示している。転送情報を生成すると、プロセッサ214は、「/TUX」プレフィックスにマッチするトラフィックの転送に使用されるよう、これらのエントリ340、350のうちの1つを選択することができる。この場合、プロセッサ214は、「2」というより低いメトリック値をエントリが保持しているので、第1のエントリ340を選択することができる。このように、プロセッサ214は、ラインカード222a−b、224a−b、226a−bに対し、提供された転送情報を通じてこのトラフィックをネクストホップbに転送するように指示することができる。
第3および第4のエントリ360、370は、同様に、プレフィックス「/JDOE」にマッチするトラフィックに対して使用可能な経路およびコストを指定することができる。すべてのエントリが、同じ長さのプレフィックスを含むことができるわけではない。第5のエントリ380によって示されるように、コンテンツプレフィックス「/JDOE/PAPERS」にマッチするトラフィックは、ネクストホップ「d」に「1」のメトリックコストで転送可能である。所与のメッセージがプレフィックス「/JDOE」と「/JDOE/PAPERS」の両方にマッチする場合があるが、本明細書で説明されるネットワークデバイスは、「最長プレフィックスマッチング」を利用することができ、それによってメッセージを最長のマッチングプレフィックスに従ってルーティングする。図3の例では、情報が転送情報としてラインカード222a−b、224a−b、226a−bに提供された場合、メッセージは、第5のエントリ380の情報に従って転送されるはずである。
図4は、ラインカード間で転送情報の分散を行うための例示的方法400を示す。方法400は、プロセッサ214などの、ネットワークデバイス200の構成要素によって実行可能である。方法400は、例えば、RIBが変わったときや、ラインカードの故障または他の理由によってアクティブなラインカードの数が変わったときなど、転送情報がラインカード222a−b、224a−b、226a−bに提供されるべきときにはいつも実行可能である。
方法400は、ステップ405を起点とし、ステップ410に進むことができ、そこで、プロセッサ214は、整数を各アクティブなラインカード222a−b、224a−b、226a−bに割り当てることができる。このステップは、システムのすべてのラインカード222a−b、224a−b、226a−b、アクティブなラインカード222a−b、224a−b、226a−bのみ、または故障実績のないラインカード222a−b、224a−b、226a−bのみへの整数の割当てを含んでもよい。次に、ステップ415で、プロセッサ214は、割り当てられた整数に基づいてラインカードテーブルを生成することができる。ラインカードテーブルは、例えば、各ラインカード222a−b、224a−b、226a−bの識別情報を、割り当てられた整数と関連付けるテーブルであってもよい。
ステップ420で、プロセッサ214は、マスタFIBを、RIBから、当技術分野で知られている任意の方法に従って生成することができる。このステップは、例えば、様々なアドレスプレフィックスに対する様々なネクストホップと関連付けられたメトリック、様々なアドレスプレフィックスの統合、またはネクストホップデバイスの、対応する出力ラインカードもしくは出力ポートへの置換えを評価することを含んでもよい。
プロセッサ214は次いで、ステップ425で、FIBエントリを検索することにより、各ラインカード222a−b、224a−b、226a−b向けのFIBを作成するための、マスタFIBにわたる反復適用を開始することができる。次に、プロセッサ214は、ステップ430で、どのラインカード222a−b、224a−b、226a−bがRIBエントリを受信すべきかを判定することができる。この例では、プロセッサ214は、エントリによって保持されているコンテンツプレフィックスの第1の構成要素「b1」を検索してもよい。例えば、エントリがプレフィックス「/JDOE/VIDEOS」と関連している場合、プロセッサ214は、構成要素「/JDOE」を検索することができる。次に、プロセッサ214は、例えば、CRC−64などのハッシュ関数を使用して構成要素をハッシュしてハッシュ値h(b1)を生成することができる。プロセッサは次いで、h(b1)を、Nを法としてその値を求めることにより、インデックス「i」を生成することができ、ここでNはアクティブなラインカードの数である。得られるインデックス「i」は、整数「i」の割当て先のラインカードを判定するために、ステップ415で生成されたラインカードテーブルと共に使用することができる。整数「i」をラインカード222a−b、224a−b、226a−bにマッチさせた後、プロセッサ214は、ステップ435で、FIBエントリを、整数i向けに送信されるべきFIB、すなわちFIBiに追加することができる。次に、ステップ440で、プロセッサ214は、マスタFIBが、処理すべき追加のエントリを含んでいるかを判定することができる。含んでいる場合、プロセッサ214は、ステップ425に戻ることができる。そうでない場合、方法400は、ステップ445に進むことができる。
ステップ445で、プロセッサ214は、変数「j」を「0」の値に初期設定することにより、アクティブなラインカードにわたり反復適用を開始することができる。次に、ステップ450で、プロセッサ214は、ラインカードテーブルおよびFIBjを、ステップ410で整数「j」を割り当てられたラインカード222a−b、224a−b、226a−bに転送することができる。次いで、プロセッサ214は、ステップ455で、「j」の値を増加させ、ステップ460で、追加のアクティブなラインカード222a−b、224a−b、226a−bが処理されるべき状態のままでないかを判定することができる。「j」の現在の値がアクティブなラインカードの数n以上でない場合、プロセッサ214は、ステップ450に戻ることができる。そうでない場合、方法400は、ステップ465で、終了に進むことができる。
方法に対する様々な修正が可能であることが理解されよう。例えば、マスタFIBを生成し、次いでそのFIBをサブセットに分割するのではなく、プロセッサが、各ラインカード222a−b、224a−b、226a−bに対して直接または同時にFIBを生成することができる。様々な追加の修正が明らかであろう。
図5は、例示的ラインカード500を示す。ラインカード500は、例示的ネットワークデバイス200のラインカード222a−b、224a−b、226a−bのうちの1つまたは複数に対応し得る。ラインカード500は、処理マネージャ510、キャッシュ520、最長プレフィックスマッチング(LPM)ブロック530、SRAM540、およびハッシュテーブル記憶装置550を備えることができる。LPMブロックは、分散ブルームフィルタモジュール532および経路検索器534を備えることができる。
処理マネージャ510は、転送されるべきメッセージを受信し、ラインカード500もしくは他の何らかのラインカード500がメッセージを処理すべきかを判定するように構成された、ハードウェア、および/またはマシン可読記憶媒体上の実行可能命令を含むことができる。図9に関連して以下でより詳細に説明されるように、ラインカードは、宛先アドレスをメッセージから抽出し、少なくともアドレスの一部に関して数学的演算を実行し、またSRAM540に記憶されたラインカードテーブルを使用して、どのラインカードがメッセージを処理するように構成されたFIBを含むかを判定することができる。処理マネージャ510が、別のラインカードがメッセージを処理すべきと判定した場合、処理マネージャ510は、メッセージを当該他のラインカードに伝達することができる。そうでない場合、処理マネージャ510は、メッセージをキャッシュ520に伝達して、メッセージの処理を開始することができる。
キャッシュ520は、SRAM540に記憶されたキャッシュテーブルが、現在のメッセージのアドレスにマッチするエントリを含むかを判定するように構成された、ハードウェア、および/またはマシン可読記憶媒体上の実行可能命令を含むことができる。エントリを含む場合、キャッシュ520は、キャッシュエントリによって識別されるように、メッセージを出力ラインカードに転送することができる。キャッシュヒットがない場合、キャッシュ520は、メッセージをLPMブロック530の分散ブルームフィルタモジュール532に転送することができる。
分散ブルームフィルタモジュール532は、SRAM540に記憶されたブルームフィルタを利用して、現在のメッセージに対する最長プレフィックスマッチのありえそうな長さを判定するように構成された、ハードウェア、および/またはマシン可読記憶媒体上の実行可能命令を含むことができる。分散ブルームフィルタモジュール532は、例えば、その全体が引用によりあらゆる目的で本明細書に組み込まれている、Songらによる、また2009年にIEEEによって発行された「IPv6 Lookups using Distributed and Load Balanced Bloom Filters for 100Gbps Core Router Line Cards」に記載されている分散ブルームフィルタ手順を適用することができる。分散ブルームフィルタモジュール532は次いで、最長プレフィックスマッチのありえそうな長さの表示と共に、メッセージを経路検索器534に転送することができる。
経路検索器534は、メッセージの最長プレフィックスマッチを求めて、ハッシュテーブル記憶装置550に記憶されたFIBを検索することができる。分散ブルームフィルタモジュール532が示す長さに基づいて、経路検索器534は、示された長さのマッチングプレフィックスを探すことにより、FIBの検索を開始することができる。分散ブルームフィルタモジュール532が偽陽性に遭遇した場合、経路検索器534は、最終的にメッセージの最長プレフィックスマッチを有するエントリを特定するまで、徐々に、検索されているプレフィックスの長さを短縮することができる。LPMブロック530は次いで、特定されたエントリによって示されるように、メッセージを出力ラインカードに転送することができる。
SRAM540は、ラインカード500に有用な様々なデータを記憶するように構成された、ハードウェア、および/またはマシン可読記憶媒体上の実行可能命令を含むことができる。SRAM540の例示的コンテンツは、図6に関連して以下でより詳細に示される。SRAMは、複数の2ポート32KビットSRAMブロックを含んでもよい。例えば、DRAMやフラッシュメモリなど、様々な他のタイプのメモリが使用されてもよいことが理解されよう。
ハッシュテーブル記憶装置550は、ラインカード500のFIBを記憶するように構成された、ハードウェア、および/またはマシン可読記憶媒体上の実行可能命令を含むことができる。したがって、ハッシュテーブル記憶装置には、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリデバイス、および/または類似の記憶媒体などのマシン可読記憶媒体が含まれてもよい。ハッシュテーブル記憶装置550の例示的コンテンツは、図8に関連して以下でより詳細に示される。
ハッシュテーブル記憶装置550は、ラインカード500の他の構成要素から物理的に切り離されたデバイスとして実装される「オフチップメモリ」を構成することができる。処理マネージャ510、キャッシュ520、LPMブロック530、およびSRAM540は、例えば、マイクロプロセッサ、FPGA、またはASICなどのシングルチップとして実装することができる。
図6は、ラインカードの例示的メモリ内容600を示す。例示的メモリ内容600は、SRAM540の内容を示すことができる。図に示すように、メモリ内容600は、ラインカードテーブル610、キャッシュテーブル620、および複数のブルームフィルタ630を含むことができる。ラインカードテーブル610は、制御プレーンから受信可能であり、各アクティブなラインカードを、割り当てられた整数と関連付けることができる。キャッシュテーブル620は、最長プレフィックスマッチング動作をバイパスする際に使用するいくつかのキャッシュエントリを格納することができる。キャッシュテーブル620の例示的コンテンツは、図7に関連して以下でより詳細に示される。ブルームフィルタ630は、最長プレフィックスマッチの長さを推定する際に使用されるように、ブルームフィルタの選択された数、すなわち「k」を含んでもよい。数「k」は、ブルームフィルタを評価するときに偽陽性の可能性を低減する、または最小化するために、例えば、ブルームフィルタ式に基づいて、選択されてもよい。
図7は、キャッシュデータを格納するための例示的データ配置700を示す。データ配置700は、例えば、オブジェクト、配列、リンクリスト、ツリー、および/またはハッシュテーブルなどの様々なデータ構造を使用して実装可能である。データ配置700は、例えば、例示的ラインカード500のSRAM540に記憶可能である。データ配置700は、コンテンツ名フィールド710や出力カードフィールド720などのいくつかのフィールドを含むことができる。コンテンツ名フィールド710は、キャッシュエントリが適用され得る先の宛先アドレスを示すことができる。出力カードフィールド720は、適用可能な宛先アドレスを保持するパケットを転送するために適切な出力ラインカードまたは出力ポートを示すことができる。出力カードフィールド720は、ラインカード識別子によって出力ラインカードを直接識別できるか、例えば、ネクストホップデバイスや出力ポートによって出力ラインカードを間接的に識別できる。
例として、例示的データ配置700は、2つのキャッシュエントリ730、740を格納しているように示される。データ配置700は、多数の追加のエントリ750を含んでもよい。第1のキャッシュエントリ730は、宛先アドレス「/JDOE/PAPERS/PaperA.pdf」を含むメッセージが、出力ラインカード2 240bに対応し得るラインカード「2」を介して転送されるべきであることを示すことができる。第2のキャッシュエントリ740は、宛先アドレス「/JDOE/notes.txt」を含むメッセージが、出力ラインカード1 220bに対応し得るラインカード「1」を介して転送されるべきであることを示すことができる。
図8は、FIBなどの転送情報を格納するための例示的データ配置800を示す。データ配置800は、例えば、オブジェクト、配列、リンクリスト、ツリー、および/またはハッシュテーブルなどの様々なデータ構造を使用して実装可能である。データ配置800は、例えば、例示的ラインカード500のハッシュテーブル記憶装置550に記憶可能である。データ配置800は、バケットフィールド840、コンテンツプレフィックスフィールド820、および出力カードフィールド830などのいくつかのフィールドを含むことができる。バケットフィールドは、バケット識別子を示すことができる。明らかであろうが、用語「バケット」は、ハッシュテーブルのアドレス指定できる要素を指すことができる。各バケットは、転送情報の複数のセットを含んでもよい。コンテンツプレフィックスフィールド820は、転送情報が当てはまるコンテンツプレフィックスを示すことができる。コンテンツプレフィックスは、ハッシュ値として格納可能である。出力カードフィールド830は、適用可能な宛先アドレスを保持するパケットを転送するために適切な出力ラインカードまたは出力ポートを示すことができる。出力カードフィールド830は、ラインカード識別子によって出力ラインカードを直接識別できるか、例えば、ネクストホップデバイスや出力ポートを示すことによって出力ラインカードを間接的に識別できる。
例として、例示的データ配置800は、「p」個のバケット840−880を格納しているように示される。第1のバケット840は、CRC−64ハッシュなどの、プレフィックス「/JDOE」のハッシュを格納し、またマッチングメッセージが出力カード「1」を介して転送されるべきであることを示す、転送情報の単一のセットを含んでもよい。第2のバケット850は、ルーティング情報の2つのセットを含んでもよい。第2のバケットは、最長プレフィックスマッチ「/TUX」の場合、メッセージは出力カード「1」を介して転送されるべきであり、最長プレフィックスマッチ「/JDOE/VIDEOS」の場合、メッセージは出力カード「2」を介して転送されるべきであることを示してもよい。転送情報のこれらの2つのセットは、適切なバケットを決定するために使用される数学的演算が、両方のプレフィックスに対してバケット「2」を識別できるため、同じバケットを占めることができる。例えば、「p」を法とした、どちらのプレフィックスのハッシュ値も、2の値を生じさせることができる。残りのバケット860−880の例示的データの意味は、以上の説明を考えれば、明らかであろう。
図9は、メッセージを転送するための例示的方法900を示す。例示的方法は、例えば、ラインカード500の構成要素によって実行可能である。方法900は、ステップ905を起点とし、ステップ910に進むことができ、そこで、処理マネージャ510は、転送されるべきメッセージを受信することができる。メッセージは、別のネットワークデバイスから、または別のラインカードからスイッチングファブリックを介して、受信することができる。次に、ステップ915で、処理マネージャは、第1の構成要素、すなわち「b1」を、メッセージによって保持されているコンテンツ名から抽出することができる。次いで、ステップ920では、処理マネージャは、b1に基づいてラインカードインデックス「i」を生成することができる。この手順は、方法400のステップ430で転送情報を分散させるためにプロセッサ214によって使用される手順に類似していることがある。処理マネージャは、b1をハッシュし、nを法としてハッシュを計算することができ、ここでnはアクティブなラインカードの数である。このインデックスを使用すると、処理マネージャ510は、ステップ925で、レコード「i」をラインカードテーブルから検索し、ステップ930で、レコードが、処理マネージャ510が属するラインカードを識別するかを判定することができる。レコードが別のラインカードを示した場合、処理マネージャは、ステップ935で、メッセージを、識別されたラインカードの入力ポートに転送でき、方法900は、ステップ975で、終了に進むことができる。識別されたラインカードは次いで、メッセージをさらに処理するために、方法900を実行することができる。
一方、レコードが現在のラインカードを識別した場合、方法900は、ステップ940に進むことができ、そこで、キャッシュ520が、キャッシュテーブルを検索して、任意のエントリが、受信されたメッセージのコンテンツ名にマッチするかを判定することができる。キャッシュヒットがあった場合、キャッシュ520は、ステップ950で、適切な出力ラインカードをキャッシュエントリから決定することができる。そうでない場合、LPMブロック530は、ステップ955で、適切な出力ラインカードを決定するために、最長プレフィックスマッチングをFIBを使用して実行することができる。例示的LPM手順は、図10に関連して以下でより詳細に示される。適切な出力ラインカードを識別した後、LPMブロック530は、転送情報を将来使用するためにキャッシュするかどうかを判定することができる。様々な実施形態において、LPMブロック530は、すべての特定されたレコードをキャッシュしてもよい。他の実施形態において、LPMブロック530は、所定の長さを超えるコンテンツ名にマッチするレコードのみをキャッシュしてもよい。例えば、ステップ960で、LPMブロックは、メッセージによって保持されているコンテンツ名の長さが事前設定された閾値「T」より長いかどうかを判定することができる。コンテンツ名の長さが「T」を超える場合、LPMブロック530は、ステップ965で、コンテンツ名および識別された出力カードをキャッシュすることができる。最後に、ステップ970で、ラインカード500は、メッセージを、識別されたラインカードの出力ポートに転送でき、方法900は、ステップ975で、終了に進むことができる。
図10は、最長プレフィックスマッチングを実行するための例示的方法1000を示す。方法1000は、LPMブロック530の構成要素によって実行可能である。方法1000は、ステップ1005を起点とし、ステップ1010に進むことができ、そこで、分散ブルームフィルタモジュール532は、いくつかのハッシュ関数、すなわち「k」を、コンテンツ名のそれぞれのあり得るプレフィックスに適用することができる。例えば、コンテンツ名「/JDOE/VIDEOS/JD2012/vid.avi」の場合、分散ブルームフィルタモジュール532は、プレフィックス「/JDOE」、「/JDOE/VIDEOS」、「/JDOE/VIDEOS/JD2012」、および「/JDOE/VIDEOS/JD2012/vid.avi」を、「k」ハッシュ関数のそれぞれを使用してハッシュすることができる。
次に、ステップ1015で、分散ブルームフィルタモジュール532は、適切なブルームフィルタを各ハッシュ化されたプレフィックスに適用することができる。例えば、プレフィックスに適用された各ハッシュ関数は、別々のブルームフィルタと関連付け可能である。つまり第1のハッシュ関数に従ってハッシュ化された各プレフィックスは、第1のブルームフィルタに適用されてよく、第2のハッシュ関数に従ってハッシュ化された各プレフィックスは、第2のブルームフィルタに適用されてよい、など。各ブルームフィルタの適用の結果は、そのブルームフィルタに従って各プレフィックスがFIBにマッチを有する可能性があるかを示すビットフィールドになってもよい。例えば、ビットフィールド「0110」は、プレフィックス「/JDOE/VIDEOS」および「/JDOE/VIDEOS/JD2012」がFIBマッチを有する可能性があり、一方、プレフィックス「/JDOE」および「/JDOE/VIDEOS/JD2012/vid.avi」はマッチするものを有していないことを示すことができる。分散ブルームフィルタモジュール532は次いで、ステップ1020で、単一のマスタビットフィールドを生成するために「k」ビットフィールドのそれぞれを組み合わせることができる。例えば、分散ブルームフィルタモジュール532は、「k」ビットフィールドのすべての論理「AND」を生成することができる。マスタビットフィールドは、ステップ1025で、ありえそうな最長プレフィックスマッチの長さ「m」を識別するために、分散ブルームフィルタモジュール532によって使用可能である。例えば、マスタビットフィールドの第1の「1」の位置は、ありえそうな最長プレフィックスマッチの長さに対応可能である。
次に、経路検索器534は、第1に、ステップ1030で、コンテンツ名の第1の「m」構成要素をハッシュして、FIBで最長プレフィックスマッチを検索し始めることができる。次に、経路検索器534は、ステップ1035で、値「f」をハッシュ値またはその一部に基づいて、「p」、すなわちバケットの総数を法として、計算することにより、どのバケットにアクセスすべきかを判定することができる。経路検索器534は次いで、ステップ1040で、バケット「f」をFIBから検索し、バケットが、コンテンツ名の第1の「m」構成要素にマッチするルーティング情報を含むかを判定することができる。バケットがマッチするものを含まない場合、経路検索器534は、ステップ1050で、最長マッチングプレフィックスの長さの次の候補を決定するために、マスタビットフィールドを使用することができる。経路検索器534は次いで、ステップ1030に戻ることができる。経路検索器534がFIBでマッチするエントリを特定すると、経路検索器534は、メッセージを出力するために、マッチするエントリによって示されたラインカードが使用されるべきかを判定することができる。方法1000は次いで、ステップ1060で、終了に進むことができる。
以上の説明によれば、様々な実施形態が、メッセージをルーティングするために規模の大きいルーティングテーブルの有効利用を可能にすることは明らかであろう。例えば、転送情報を複数のラインカード間で分散させることにより、ネクストホップ探索のタスクは、そうしたデバイス間で分散可能であり、それによって、規模の大きいルーティングテーブルをサポートする効率的な方法を提供する。さらに、宛先アドレスのサブセットを複数のラインカードのそれぞれに割り当てることにより、ネクストホップ探索は、効率的で信頼性のある方法で委譲可能である。
以上の説明から、本発明の様々な例示的実施形態がハードウェアまたはファームウェアに実装されてもよいことは明らかであろう。さらに、様々な例示的実施形態は、本明細書で詳述された動作を実行するために、少なくとも1つのプロセッサによって読取りおよび実行が可能な、マシン可読記憶媒体上に記憶された命令として実行されてもよい。マシン可読記憶媒体は、情報を、パーソナルコンピュータもしくはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスなどのマシンが読み取ることができる形式で記憶するための任意のメカニズムを含んでもよい。したがって、有形の、持続的な、マシン可読記憶媒体には、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリデバイス、および類似の記憶媒体が含まれてもよい。
当業者であれば、本明細書における任意のブロック図は、本発明の原理を具体化する例示的な回路の概念図を表すことが理解されよう。同様に、任意のフローチャート、フローダイアグラム、状態遷移図、擬似コード等は、実質的に、マシン可読媒体において示すことができ、したがって、そのようなコンピュータまたはプロセッサが明示的に示されるかどうかを問わず、コンピュータまたはプロセッサによって実行できる様々なプロセスを表すことが理解されよう。
様々な例示的実施形態が、そのある特定の例示的態様を特に参照して詳細に説明されてきたが、本発明は、他の実施形態も可能であり、その詳細は、様々な明白な関連において修正形態も可能であることを理解されたい。当業者には容易に明らかになるように、変形形態および修正形態は、本発明の趣旨および範囲内にとどまりながら生じ得る。したがって、前述の開示、説明、および図は、例示のみを目的としており、本発明をいかなる形でも限定するものではなく、本発明は、特許請求の範囲によってのみ定義される。
Claims (14)
- ネットワークデバイスの第1の入力ラインカードで、宛先に向けて転送されるべきメッセージを受信するステップ(910)であって、メッセージが宛先アドレスを含む、受信するステップと、
第1の入力ラインカードによって、ネットワークデバイスの第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されていると決定するステップ(920、925、930)と、
メッセージを、第1の入力ラインカードによって、第2の入力ラインカードに、第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されているとの決定に基づいて、送信するステップ(935)と、
第2の入力ラインカードによって、また宛先アドレスと関連するルーティング情報に基づいて、メッセージが、ネットワークデバイスの第1の出力ラインカードを介して別のネットワークデバイスに転送されるべきであると決定するステップ(950、955)と、
メッセージを、第2の入力ラインカードによって、第1の出力ラインカードに、メッセージが、ネットワークデバイスの第1の出力ラインカードを介して別のネットワークデバイスに転送されるべきであるとの決定に基づいて、送信するステップ(970)と、
メッセージを、第1の出力ラインカードによって、別のネットワークデバイスに送信するステップと
を含む、メッセージを転送するためにネットワークデバイスによって実行される方法。 - 第1の出力ラインカードが、第1の入力ラインカードおよび第2の入力ラインカードのうちの1つを備える、請求項1に記載の方法。
- 宛先アドレスがコンテンツ名である、請求項1に記載の方法。
- メッセージを第2のラインカードに送信するステップ(935)が、メッセージを、第1の入力ラインカードによって、第2の入力ラインカードの入力ポートに送信するステップを含む、請求項1に記載の方法。
- 第1の入力ラインカードが、転送情報の第1のセットを格納し、第2の入力ラインカードが、転送情報の第1のセットと異なる転送情報の第2のセットを格納する、請求項1に記載の方法。
- 第1の入力ラインカードによって、ネットワークデバイスの第2の入力ラインカードが宛先アドレスと関連するルーティング情報を備えて構成されていると決定するステップ(920、925、930)が、
ハッシュ化された宛先アドレスを生成するために、少なくとも宛先アドレスの一部に関してハッシュ関数を実行するステップ(920)と、
第2の入力ラインカードの割り当てられた識別子が、ハッシュ化された宛先アドレスに対応すると決定するステップ(925、930)と
を含む、請求項1から5のいずれか一項に記載の方法。 - ルーティング情報を記憶するように構成されたルーティング情報ベース(RIB)記憶装置(212)と、
複数のラインカード(222)と、
プロセッサ(214)とを備え、プロセッサ(214)が、
第1の識別子を複数のラインカードのうちの第1の入力ラインカード(222)と関連付け、第2の識別子を複数のラインカードのうちの第2の入力ラインカード(222)と関連付けるラインカードテーブルを生成し、
転送情報の第1のセットを、ルーティング情報および第1の識別子に基づいて生成し、
転送情報の第1のセットと異なる転送情報の第2のセットを、ルーティング情報および第2の識別子に基づいて生成し、
ラインカードテーブルおよび転送情報の第1のセットを、第1の入力ラインカード(222)に提供し、また
ラインカードテーブルおよび転送情報の第2のセットを、第2の入力ラインカード(222)に提供するように構成された、メッセージを転送するためのネットワークデバイス。 - 転送情報の第1のセットを、ルーティング情報および第1の識別子に基づいて生成する際に、プロセッサ(214)が、
アドレスプレフィックスおよび関連付けられた転送情報を、ルーティング情報に基づいて生成し、
値を生成するために、アドレスプレフィックスに関して、数学的演算を実行し、
値が第1の識別子にマッチすると決定し、また
アドレスプレフィックスを、第1の識別子にマッチする値に基づいて、転送情報の第1のセットに含めるように構成された、請求項7に記載のネットワークデバイス。 - プロセッサ(214)が、
第2の入力ラインカード(222)が故障したことの表示を受信し、
第1の識別子を第1の入力ラインカード(222)と関連付け、第2の識別子を、複数のラインカードのうちの第1の出力ラインカードと関連付ける更新されたラインカードテーブルを生成し、
転送情報の第3のセットを、ルーティング情報および第2の識別子に基づいて生成し、また
更新されたラインカードテーブルおよび転送情報の第3のセットを、第1の出力ラインカード(222)に提供するようにさらに構成された、請求項7に記載のネットワークデバイス。 - 第1の入力ラインカード(222)が、
ラインカードテーブルを記憶するように構成された第1のメモリ(540)と、
宛先デバイスに向けて転送されるべき、宛先アドレスを含むメッセージを受信し、
第2の識別子および宛先アドレスに基づいて、第2の入力ラインカードがメッセージを処理すべきと決定し、また
メッセージを、第2の入力ラインカードに、第2の入力ラインカードがメッセージを処理すべきと決定するのに基づいて、送信するように構成された、第1の処理マネージャ(510)と
を備える、請求項7から9のいずれか一項に記載のネットワークデバイス。 - 第2の入力ラインカード(222)が、
第2の入力ラインカードがメッセージを処理すべきと決定するように構成された第2の処理マネージャ(510)と、
第1の出力ラインカードがメッセージを別のネットワークデバイスに転送し、メッセージを第1の出力ラインカードに送信すると決定するように構成された、転送モジュール(520、530)と
を備える、請求項10に記載のネットワークデバイス。 - 第2の入力ラインカード(222)が、キャッシュテーブルを記憶するように構成されたメモリ(540)をさらに備え、
転送モジュールが、第1の出力ラインカードがメッセージを他のネットワークデバイスに転送すべきと決定する際に、
キャッシュテーブルが宛先アドレスと関連付けられたエントリを格納すると決定し、エントリが第1の出力ラインカードを識別すると決定するように構成された、キャッシュ(520)である、請求項11に記載のネットワークデバイス。 - 第2の入力ラインカード(222)が、転送情報の第2のセットを記憶するように構成されたハッシュテーブル記憶装置をさらに備え、
転送モジュールが、第1の出力ラインカード(222)がメッセージを他のネットワークデバイスに転送すべきと決定する際に、
宛先アドレスの最長マッチングプレフィックスを有する、転送情報の第2のセットのエントリを識別し、
エントリが第1の出力ラインカードを識別すると決定するように構成された、最長プレフィックスマッチング(LPM)ブロック(530)である、請求項11に記載のネットワークデバイス。 - 宛先アドレスの最長マッチングプレフィックスを有する、転送情報の第2のセットのエントリを識別する際に、LPMブロック(530)が、最長マッチングプレフィックスの長さを判定するために、分散ブルームフィルタのセット(532)を利用する、請求項13に記載のネットワークデバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/563,381 | 2012-07-31 | ||
US13/563,381 US9178806B2 (en) | 2012-07-31 | 2012-07-31 | High-speed content routing |
PCT/US2013/052474 WO2014022264A1 (en) | 2012-07-31 | 2013-07-29 | High-speed content routing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015529061A true JP2015529061A (ja) | 2015-10-01 |
Family
ID=48953453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015525480A Pending JP2015529061A (ja) | 2012-07-31 | 2013-07-29 | 高速コンテンツルーティング |
Country Status (6)
Country | Link |
---|---|
US (1) | US9178806B2 (ja) |
EP (1) | EP2880827A1 (ja) |
JP (1) | JP2015529061A (ja) |
KR (1) | KR20150037938A (ja) |
CN (1) | CN104685837A (ja) |
WO (1) | WO2014022264A1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103874157B (zh) * | 2012-12-12 | 2017-07-07 | 华为技术有限公司 | 路由转发、建立路由表、和获取内容的方法及其装置 |
US9172743B2 (en) * | 2012-12-31 | 2015-10-27 | Futurewei Technologies, Inc. | Scalable storage systems with longest prefix matching switches |
CN104219125B (zh) * | 2013-05-31 | 2017-12-05 | 华为技术有限公司 | 信息为中心网络icn中转发报文的方法、装置及系统 |
US9356861B2 (en) * | 2014-03-17 | 2016-05-31 | Alcatel Lucent | Secondary lookup for scaling datapath architecture beyond integrated hardware capacity |
EP2947839B1 (en) * | 2014-05-21 | 2019-10-16 | Alcatel Lucent | Method and apparatus to forward a request for content |
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 |
US9596181B1 (en) * | 2014-10-20 | 2017-03-14 | Juniper Networks, Inc. | Two stage bloom filter for longest prefix match |
US10129088B2 (en) | 2015-06-17 | 2018-11-13 | Extreme Networks, Inc. | Configuration of rules in a network visibility system |
US10771475B2 (en) | 2015-03-23 | 2020-09-08 | Extreme Networks, Inc. | Techniques for exchanging control and configuration information in a network visibility system |
US10911353B2 (en) | 2015-06-17 | 2021-02-02 | Extreme Networks, Inc. | Architecture for a network visibility system |
US10530688B2 (en) * | 2015-06-17 | 2020-01-07 | Extreme Networks, Inc. | Configuration of load-sharing components of a network visibility router in a network visibility system |
CN107040393B (zh) | 2015-08-21 | 2020-10-09 | 新华三技术有限公司 | 一种路由管理方法和设备 |
CN107347035B (zh) * | 2016-05-06 | 2020-05-08 | 华为技术有限公司 | 路由查找方法、装置、分配节点、查找节点及入口节点 |
US10212248B2 (en) | 2016-10-03 | 2019-02-19 | Cisco Technology, Inc. | Cache management on high availability routers in a content centric network |
US20180176129A1 (en) * | 2016-12-15 | 2018-06-21 | Fujitsu Limited | Communication method, control device, and system |
US10447585B2 (en) * | 2016-12-19 | 2019-10-15 | Futurewei Technologies, Inc. | Programmable and low latency switch fabric for scale-out router |
US10225201B2 (en) * | 2017-01-27 | 2019-03-05 | Futurewei Technologies, Inc. | Scalable multicast for notification-driven content delivery in information centric networks |
US10587515B2 (en) * | 2017-02-07 | 2020-03-10 | Futurewei Technologies, Inc. | Stateless information centric forwarding using dynamic filters |
US10367712B2 (en) * | 2017-03-20 | 2019-07-30 | Citrix Systems, Inc. | Auto tuning of hybrid wan links by adaptive duplication of packets on alternate links |
IT202000017023A1 (it) * | 2020-07-14 | 2022-01-14 | Mainstreaming S P A | Metodo per distribuire file attraverso una content delivery network basato anche su algoritmi di intelligenza artificiale, sistema telematico e server che consentono di implementarlo |
JP7335216B2 (ja) * | 2020-09-24 | 2023-08-29 | Kddi株式会社 | コンテンツ配信システムの転送装置及びプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100215047A1 (en) * | 2009-02-20 | 2010-08-26 | Cisco Technology, Inc., A Corporation Of California | Subsets of the forward information base (fib) distributed among line cards in a switching device |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760327B1 (en) * | 1999-12-01 | 2004-07-06 | Cisco Technology, Inc. | Rate adjustable backplane and method for a telecommunications node |
US7110394B1 (en) * | 2001-06-25 | 2006-09-19 | Sanera Systems, Inc. | Packet switching apparatus including cascade ports and method for switching packets |
US7149214B2 (en) | 2003-11-04 | 2006-12-12 | Cisco Technology, Inc. | Dynamic unknown L2 flooding control with MAC limits |
CN101098238B (zh) * | 2007-06-29 | 2010-12-22 | 华为技术有限公司 | 一种数据通信系统、交换网板及方法 |
US8218557B2 (en) | 2010-04-09 | 2012-07-10 | Telefonaktiebolaget L M Ericsson (Publ) | Scalable distributed user plane partitioned two-stage forwarding information base lookup for subscriber internet protocol host routes |
-
2012
- 2012-07-31 US US13/563,381 patent/US9178806B2/en not_active Expired - Fee Related
-
2013
- 2013-07-29 CN CN201380040126.5A patent/CN104685837A/zh active Pending
- 2013-07-29 KR KR20157002532A patent/KR20150037938A/ko not_active Application Discontinuation
- 2013-07-29 WO PCT/US2013/052474 patent/WO2014022264A1/en active Application Filing
- 2013-07-29 JP JP2015525480A patent/JP2015529061A/ja active Pending
- 2013-07-29 EP EP13747920.0A patent/EP2880827A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100215047A1 (en) * | 2009-02-20 | 2010-08-26 | Cisco Technology, Inc., A Corporation Of California | Subsets of the forward information base (fib) distributed among line cards in a switching device |
Also Published As
Publication number | Publication date |
---|---|
KR20150037938A (ko) | 2015-04-08 |
US9178806B2 (en) | 2015-11-03 |
US20140036918A1 (en) | 2014-02-06 |
CN104685837A (zh) | 2015-06-03 |
EP2880827A1 (en) | 2015-06-10 |
WO2014022264A1 (en) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9178806B2 (en) | High-speed content routing | |
US9729669B2 (en) | Method and system for fast and large-scale longest prefix matching | |
US20140280823A1 (en) | Wire-speed pending interest table | |
US9019971B2 (en) | Systems, methods and algorithms for named data network routing with path labeling | |
EP2721787B1 (en) | Principal-identity-domain based naming scheme for information centric networks | |
EP2869510B1 (en) | Express header for packets with hierarchically structured variable-length identifiers | |
KR20190033631A (ko) | 압축 포워딩 테이블 | |
US9183322B2 (en) | Increasing internet protocol version 6 host table scalability in top of rack switches for data center deployments | |
US9391896B2 (en) | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network | |
JP5918361B2 (ja) | 解決による経路指定 | |
JP5022412B2 (ja) | 経路情報管理システム、経路情報管理方法、およびプログラム | |
KR102397923B1 (ko) | 정보 중심 네트워크(icn)에서 플로우 스위칭 장치 및 방법 | |
Azgin et al. | H 2 N4: Packet forwarding on hierarchical hash-based names for content centric networks | |
KR102110524B1 (ko) | 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법 | |
JP4477073B2 (ja) | リソース検索システムおよびリソース検索用情報処理装置 | |
Once | Information Centric Networking | |
KR20090022473A (ko) | 3계층 스위칭을 위한 포워딩 테이블 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160126 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160830 |