(57)【要約】      （修正有）【課題】交互に構成された最長プレフィックスマッチテーブルを有するネットワークスイッチを提供すること。【解決手段】ネットワークスイッチは、トライの階層の中の個々のトライの交互的テーブル表示を格納するように構成可能なメモリを含む。プレフィックステーブルプロセッサは、入力ネットワークアドレスを用いて、個々のトライの交互的テーブル表示に並列でアクセスし、各交互的テーブル表示において最長プレフィックスマッチを検索して、ローカルプレフィックスマッチを得る。ローカルプレフィックスマッチから最長プレフィックスマッチが選択される。最長プレフィックスマッチは、関連付けられた次のホップインデックスベースアドレスおよびオフセット値を有する。【選択図】図１４
2014176099.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークスイッチであって、
該ネットワークスイッチは、
トライの階層の中の個々のトライの交互的テーブル表示を格納するように構成可能なメモリと、
プレフィックステーブルプロセッサであって、
該プレフィックステーブルプロセッサは、
入力ネットワークアドレスを用いて、該個々のトライの該交互的テーブル表示に並列でアクセスし、各交互的テーブル表示において最長プレフィックスマッチを検索して、ローカルプレフィックスマッチを得ることと、
該ローカルプレフィックスマッチから最長プレフィックスマッチを選択することであって、該最長プレフィックスマッチは、関連付けられた次のホップインデックスベースアドレスおよびオフセット値を有する、ことと
を行う、プレフィックステーブルプロセッサと、
該メモリ内の次のホップインデックステーブルにアクセスし、該次のホップインデックスベースアドレスおよびオフセット値を用いて、次のホップテーブルポインタを得る次のホップインデックプロセッサと、
該メモリ内の次のホップテーブルにアクセスし、該次のホップテーブルポインタを用いて、目的地ネットワークアドレスを得る次のホッププロセッサと
を含む、ネットワークスイッチ。
【請求項２】
前記交互的テーブル表示は、選択されたトライノードを識別するスパースモード表示を含む、請求項１に記載のネットワークスイッチ。
【請求項３】
前記スパースモード表示は、分岐識別およびストライド値を含む、請求項２に記載のネットワークスイッチ。
【請求項４】
前記交互的テーブル表示は、選択されたトライノードを識別するビットマップを有するビットマップモード表示を含む、請求項１に記載のネットワークスイッチ。
【請求項５】
前記ビットマップモード表示は、分岐識別およびストライド値を含む、請求項４に記載のネットワークスイッチ。
【請求項６】
前記交互的テーブル表示は、トライの底部において選択されたトライノードを識別するリーフプッシュ表示を含む、請求項１に記載のネットワークスイッチ。
【請求項７】
前記リーフプッシュ表示は、分岐識別およびストライド値を含む、請求項６に記載のネットワークスイッチ。
【請求項８】
前記プレフィックステーブルプロセッサは、決定論的ルックアップ待ち時間を有するハードウェアリソースである、請求項１に記載のネットワークスイッチ。
【請求項９】
前記交互的テーブル表示は、同じテーブルにおける異なるパケット種類を有するテーブルを含む、請求項１に記載のネットワークスイッチ。
【請求項１０】
前記異なるパケット種類は、ＩＰＶ４パケットおよびＩＰＶ６パケットを含む、請求項９に記載のネットワークスイッチ。
【請求項１１】
前記プレフィックステーブルプロセッサは、リモートホストに対する最長プレフィックスマッチと、直接に取り付けられたホストに対する正確なマッチとを識別する、請求項１に記載のネットワークスイッチ。
【請求項１２】
前記プレフィックステーブルプロセッサは、同じテーブルにおいて、リモートホストに対する最長プレフィックスマッチと、直接に取り付けられたホストに対する正確なマッチとを識別する、請求項１に記載のネットワークスイッチ。
【請求項１３】
前記次のホップインデックスプロセッサは、等価コストマルチパスルーチィングを容易にするために、次のホップテーブルエントリのブロックを処理する、請求項１に記載のネットワークスイッチ。
【請求項１４】
前記ブロックは、最大で１０２４個のパスを識別する、請求項１３に記載のネットワークスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連の出願への相互参照
本出願は、２０１３年３月１２日に出願された米国仮特許出願第６１／７７８，２９３号に対して優先権を主張する。上記文献の内容は、参照することによって本明細書において援用される。
【０００２】
発明の分野
本発明は、概してコンピュータネットワークにおいてトラフィックを処理することに関する。特に、本発明は、交互に構成された最長プレフィックスマッチテーブルを有するネットワークスイッチに関する。
【背景技術】
【０００３】
発明の背景
図１は、従来技術に従って利用された最長プレフィックスマッチプロセッサ１００を例示する。最長プレフィックスマッチプロセッサ１００は、転送テーブル１０４の中のエントリを見つけるための検索エンジン１０２を含む。転送テーブルの中の各エントリは、ネットワークパケットに対して次の目的地（ホップ）を示す関連付けられたスイッチ識別子を有する。
【０００４】
図２は、従来技術の転送テーブル２００の簡単化されたバージョンを例示する。転送テーブルは、エントリの組を有するプレフィックス列と、指定されたスイッチ識別子を有する次のホップの列とを有する。各プレフィックスエントリは、ネットワークアドレスのセグメントである。アスタリスク（＊）は、「構わない」状態を指定する。プレフィックスマッチがない場合、次のホップは、スイッチ（Ａ）として指定される。標的機械への最も具体的なパスを示すので、最長であるプレフィックスを有するマッチを得ることが望ましい。
【０００５】
図３は、最長プレフィックスマッチプロセッサ１００を有するスイッチ３０２によって受信されているパケット３００を例示する。最長プレフィックスマッチプロセッサは、別の機械へのホップ（例えば、スイッチＡ、ＣまたはＥ、または、機械Ｂ、Ｄ、ＦまたはＧ）を生成する。
【０００６】
図４は、２進法ツリーまたはトライ４００を例示する。図面の上方は、図面の下方に示されたトライ４００の簡単化された表示である三角形４００を例示する。トライ４００は、０および１によって示された異なるパスを有し、ここで、０は、左へのパスを示し、１は、右へのパスを示す。この技術を用いて、トライの中の任意のパスは、デジタル値で指定され得る。トライ４００の底部は、示されるように、（０）〜（７）の８つの目的地に分岐し得る４つのリーフノードを有する。目的地（０）は、３つの左分岐がこの目的地に到達するために使用されるので、０００として示される。目的地（３）は、１つの左分岐（０）の後に２つの右分岐（１１）があるので、０１１として示される。このように、各パスは、２進法値を用いて特定され得る。トライ４００は、３層のノードを有し、従って、３のストライドを有するように言われる。
【０００７】
図５は、トライ４００が、多くの他のトライと任意の複雑な階層関係であり得ることを例示する。例えば、トライ４００は、レベル０として考えられ得、その真下に、レベル１での４００＿１〜４００＿８の８つのトライを有する。このトライ拡張は、図５に示されるように、任意の数のレベルに対して処理され得る。各トライは、異なるサイズを有し得る。従って、任意長さのパスの表現がそのような構造を通して規定され得ることが理解され得る。
【０００８】
図６は、トライ６００の各ノードが指定された数を有し得ることを例示する。この例において、ノードは、示されるように、１〜７を番号付けされる。
【０００９】
図７は、次のホップ情報が暗黒ノード（ノード５および７）に存在するシナリオを例示する。ノード５へのパスは、２進法で０１として表され得、その一方で、ノード７へのパスは、２進法で１１として表され得る。図５を参照して、ノードパスは、複数のレベルを横断し得ること、および、特定のノードへの合成パスは、長い２進法値を用いて表され得ることが理解され得る。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述を考慮して、最長プレフィックスマッチを識別するための改善された技術を提供することに対して継続的なニーズがある。
【課題を解決するための手段】
【００１１】
発明の要約
ネットワークスイッチは、トライの階層の中の個々のトライの交互的テーブル表示を格納するように構成可能なメモリを含む。プレフィックステーブルプロセッサは、入力ネットワークアドレスを用いて、個々のトライの交互的テーブル表示に並列でアクセスし、各交互的テーブル表示において最長プレフィックスマッチを検索して、ローカルプレフィックスマッチを得る。ローカルプレフィックスマッチから最長プレフィックスマッチが選択される。最長プレフィックスマッチは、関連付けられた次のホップインデックスベースアドレスおよびオフセット値を有する。次のホップインデックプロセッサは、メモリ内の次のホップインデックステーブルにアクセスし、次のホップインデックスベースアドレスおよびオフセット値を用いて、次のホップテーブルポインタを得る。次のホッププロセッサは、メモリ内の次のホップテーブルにアクセスし、次のホップテーブルポインタを用いて、目的地ネットワークアドレスを得る。
【００１２】
本願明細書は、例えば、以下の項目も提供する。
（項目１）
ネットワークスイッチであって、
該ネットワークスイッチは、
トライの階層の中の個々のトライの交互的テーブル表示を格納するように構成可能なメモリと、
プレフィックステーブルプロセッサであって、
該プレフィックステーブルプロセッサは、
入力ネットワークアドレスを用いて、該個々のトライの該交互的テーブル表示に並列でアクセスし、各交互的テーブル表示において最長プレフィックスマッチを検索して、ローカルプレフィックスマッチを得ることと、
該ローカルプレフィックスマッチから最長プレフィックスマッチを選択することであって、該最長プレフィックスマッチは、関連付けられた次のホップインデックスベースアドレスおよびオフセット値を有する、ことと
を行う、プレフィックステーブルプロセッサと、
該メモリ内の次のホップインデックステーブルにアクセスし、該次のホップインデックスベースアドレスおよびオフセット値を用いて、次のホップテーブルポインタを得る次のホップインデックプロセッサと、
該メモリ内の次のホップテーブルにアクセスし、該次のホップテーブルポインタを用いて、目的地ネットワークアドレスを得る次のホッププロセッサと
を含む、ネットワークスイッチ。
（項目２）
上記交互的テーブル表示は、選択されたトライノードを識別するスパースモード表示を含む、上記項目に記載のネットワークスイッチ。
（項目３）
上記スパースモード表示は、分岐識別およびストライド値を含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目４）
上記交互的テーブル表示は、選択されたトライノードを識別するビットマップを有するビットマップモード表示を含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目５）
上記ビットマップモード表示は、分岐識別およびストライド値を含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目６）
上記交互的テーブル表示は、トライの底部において選択されたトライノードを識別するリーフプッシュ表示を含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目７）
上記リーフプッシュ表示は、分岐識別およびストライド値を含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目８）
上記プレフィックステーブルプロセッサは、決定論的ルックアップ待ち時間を有するハードウェアリソースである、上記項目のいずれかに記載のネットワークスイッチ。
（項目９）
上記交互的テーブル表示は、同じテーブルにおける異なるパケット種類を有するテーブルを含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目１０）
上記異なるパケット種類は、ＩＰＶ４パケットおよびＩＰＶ６パケットを含む、上記項目のいずれかに記載のネットワークスイッチ。
（項目１１）
上記プレフィックステーブルプロセッサは、リモートホストに対する最長プレフィックスマッチと、直接に取り付けられたホストに対する正確なマッチとを識別する、上記項目のいずれかに記載のネットワークスイッチ。
（項目１２）
上記プレフィックステーブルプロセッサは、同じテーブルにおいて、リモートホストに対する最長プレフィックスマッチと、直接に取り付けられたホストに対する正確なマッチとを識別する、上記項目のいずれかに記載のネットワークスイッチ。
（項目１３）
上記次のホップインデックスプロセッサは、等価コストマルチパスルーチィングを容易にするために、次のホップテーブルエントリのブロックを処理する、上記項目のいずれかに記載のネットワークスイッチ。
（項目１４）
上記ブロックは、最大で１０２４個のパスを識別する、上記項目のいずれかに記載のネットワークスイッチ。
（摘要）
ネットワークスイッチは、トライの階層の中の個々のトライの交互的テーブル表示を格納するように構成可能なメモリを含む。プレフィックステーブルプロセッサは、入力ネットワークアドレスを用いて、個々のトライの交互的テーブル表示に並列でアクセスし、各交互的テーブル表示において最長プレフィックスマッチを検索して、ローカルプレフィックスマッチを得る。ローカルプレフィックスマッチから最長プレフィックスマッチが選択される。最長プレフィックスマッチは、関連付けられた次のホップインデックスベースアドレスおよびオフセット値を有する。次のホップインデックプロセッサは、メモリ内の次のホップインデックステーブルにアクセスし、次のホップインデックスベースアドレスおよびオフセット値を用いて、次のホップテーブルポインタを得る。次のホッププロセッサは、メモリ内の次のホップテーブルにアクセスし、次のホップテーブルポインタを用いて、目的地ネットワークアドレスを得る。
【００１３】
本発明は、添付の図面に関連してなされる以下の詳細な説明に関連してより完全に理解される。
【図面の簡単な説明】
【００１４】
【図１】図１は、従来技術の最長プレフィックスマッチプロセッサを例示する。
【図２】図２は、従来技術の転送テーブルを例示する。
【図３】図３は、パケットを任意の数のスイッチまたは機械にルーティングする最長プレフィックスマッチプロセッサを有するスイッチを例示する。
【図４】図４は、従来技術の２進法ツリーを例示する。
【図５】図５は、任意の複雑なパスを有する２進法ツリーの入れ子構成を例示する。
【図６】図６は、本発明の実施形態に従って使用されたノード数を例示する。
【図７】図７は、選択されたノードでの次のホップ情報を有する２進法ツリーを例示する。
【図８】図８は、本発明の実施形態に従って利用されたスパースモードテーブル構成を例示する。
【図９】図９は、本発明の実施形態に従って利用されたビットマップモードテーブル構成を例示する。
【図１０】図１０は、本発明の実施形態に従って利用されたリーフプッシュモードテーブル構成を例示する。
【図１１】図１１は、本発明の実施形態に従って利用された次のホップインデックステーブルを例示する。
【図１２】図１２は、本発明の実施形態に従って利用された次のホップテーブルを例示する。
【図１３】図１３は、本発明の実施形態に従って実行されたパケット処理動作を例示する。
【図１４】図１４は、本発明の実施形態に従って利用された処理コンポーネントを例示する。
【発明を実施するための形態】
【００１５】
同様な参照番号は、図面のうちのいくつかの図にわたって対応するパーツを指す。
【００１６】
発明の詳細な説明
本発明は、スイッチ内に埋め込まれた最長プレフィックスマッチプロセッサである。最長プレフィックスマッチプロセッサは、交互に構成された最長プレフィックスマッチテーブルを利用し、最長プレフィックスマッチテーブルは、異なる最長プレフィックスマッチ検索ストラテジーおよび最適化ストラテジーに対して最適化され得る。１つの最長プレフィックスマッチテーブルが図８に示される。テーブルの第１の列は、パケット種類（この場合、ＩＰＶ４）を特定する。有利に、ＩＰＶ４およびＩＰＶ６パケット種類は、単一のテーブルの中に効率的に格納され得る。次の列は、格納モード（この場合、スパースモード）を特定する。スパースモードは、個々のトライに対して大きなストライドを容易にする。すなわち、スパースモードは、個々のトライが大きい構成に対して処理を容易にする。次の列は、分岐長を特定する。分岐長は、階層トライのルートノードから個々のトライの任意のルートノード（例えば、図５の２進法トライ（サブトライとも呼ばれる））へのパスの長さの指標である。ストライドは、トライのサイズ（例えば、２ｓｔｒｉｄｅ）を特定する。この例において、ストライドは、５、または２５または３２である。次の列は、次のホップインデックスベースアドレスである。本発明は、次のホップテーブルへの参照のための次のホップインデックスを利用する。これは、構成メモリリソースにおける最大柔軟性を可能にする。テーブルの次の列は、分岐ＩＤ（例えば、前述のように、ツリーを通るパスの２進法表示）である。図８の最後の列は、次のホップ情報を有するトライノードＩＤを特定する。図７は、トライノードと、次のホップ情報を有する対応するノードＩＤとの例を提供する。図８の第１の４つのフィールドは、固定の幅を有する。残りの２つのフィールド可変な幅を有する。
【００１７】
図９は、プレフィックスマッチテーブルのための交互的な構成を例示する。第１のフィールドは、パケット種類を特定する。次のフィールドは、ビットマップモードを特定する。次のフィールドは、前述のように、分岐長を特定する。次のフィールドは、ストライドを特定する。ビットマップモードにおいて、ストライド５のトライのための全てのノードは、２５−１または３１ビットのアレイで格納される。次の２つのフィールドは、ＮＨＩベースアドレスおよび分岐ＩＤである。分岐ＩＤは、前述のように、分岐パスを特定する。ＮＨＩベースアドレスは、１としてマーク付けられている、トライビットマップの最下位ビットに対応するベース位置を特定する。他のノードは、ベース位置からインクリメントされたＮＨＩテーブルの中へのそれらのポインタを有する。例えば、ベース位置がゼロである場合、１としてマーク付けられた第５のビットは、ベース位置から４つのエントリをインクリメントされ得る。最後のフィールドは、トライビットマップである。この例において、トライビットマップは、３１ビットマップである。ビットマップは、次のホップ情報を有する特定されたトライ内において異なる位置を特定する。
【００１８】
図１０は、プレフィックスマッチテーブルのための交互的な構成を例示する。第１のフィールドは、リーフプッシュモードを特定する。リーフプッシュにおいて、アレイ内において最下方ノードのみが示される。例えば、図６を参照して、ノード４、５、６および７のみが、アレイ内において示され得る。図６の他のノードが次のホップ情報を有する場合、様々な技術（例えば、制御されたプレフィックス拡張）が使用されて、その情報を最下方ノードに位置決めし得る。ＮＨＩテーブルは、この場合において対応する重複を作る必要がある。このモードは、特に、直接に接続されたホストに対するネットワークアドレスが、それらのホストが一般的に連番を有するので、同じテーブル内に格納される場合において特にメモリ効率的である。このモードは、全ての検索が同じレベルにおいて終了するので、有益である。
【００１９】
図１０のテーブルは、分岐長フィールド、ストライドフィールド、ＮＨＩベースアドレスフィールド、分岐ＩＤフィールドおよびトライ下方ビットマップフィールドも有する。５のストライドの場合において、全ビットマップは、２５−１または３１ビットを有し、結果として１６ノードの下方組をもたらす。従って、１６ビットマップは、これらの異なるノードの位置を特定するために使用され得る。
【００２０】
図１１は、次のホップインデックステーブルを例示する。テーブル内の異なるエントリは、ブロックサイズオフセットを加えた次のホップテーブルベースへのポインタを特定する。ベース位置は、テーブル内へのエントリポイントを特定し、その一方で、ブロックサイズは、そのベース位置からの追加のフィールドを特定する。次のホップテーブルエントリのブロックサイズは、等価コストマルチパス（ＥＣＭＰ）ルーティング（アドバンストネットワークルーティングストラテジー）のために使用される。ＩＰアドレスと共に、最長プレフィックスマッチエンジンへの各リクエストには、パス選択に対するＥＣＭＰハッシュ値を伴う。各ＥＣＭＰハッシュ値は、利用可能なブロックサイズよりも大きい場合もあり、従って最後のパス選択は、次のホップブロックサイズの入力ＥＣＭＰハッシュ値モジュロを加えた次のホップベースアドレスのように計算される。一実施形態において、最大で１０２４個のパスが、ＥＣＭＰに対してサポートされる。
【００２１】
ＮＨＩテーブルサイズは、トライ構成の関数である。テーブルサイズは、動的に構成および最適化され得る。
【００２２】
図１２は、次のホップテーブルを例示する。テーブル内の各エントリは、目的地の機械へのホップを特定する。
【００２３】
図１３は、本発明の実施形態に従って実行される処理動作を例示する。侵入ネットワークアドレス（例えば、インターネットプロトコルアドレス）１３００は、プレフィックステーブル０〜Ｎの組に適用され、テーブルの全てまたは一部分が、ソフトウェアによって構成され得る。各プレフィックステーブルは、プレフィックスエントリの組を含み、プレフィックスエントリの各々が、図８〜１０に関連して議論されたように、トライへのパスを特定し、そのトライの特徴を指定する。例としてプレフィックステーブル０  １３０２を用いて、侵入ネットワークアドレスのビットのソフトウェア構成された選択は、プレフィックステーブルアドレスにマッピングするために、ハッシュ機能に適用される１３０４。有利に、全てのマッチは、ハードウェアにおいて固定の待ち時間で処理される。次に、プレフィックステーブルメモリは、サブトライ０（例えば、図５に示されるような、任意の複雑な階層トライ構造の中の個々のトライ）に到達するために、読み取られる１３０６。次に、最長プレフィックスマッチは、そのサブトライ１３０８において実行される。この処理は、ローカルプレフィックスマッチを生成するために、０〜Ｎのプレフィックステーブルのすべてにわたって繰り返される。次に、その結果は、最長プレフィックスマッチ１３１０を選択するように処理される。次に、ＮＨＩテーブルが、１３１２を読み取られ、ＮＨＩテーブルは、結果として次のホップ１３１６を生成する次のホップテーブル１３１４へのアクセスをもたらす。
【００２４】
図１４は、本発明の実施形態に従って構成された最長プレフィックスマッチプロセッサ１４００を例示する。プロセッサ１４００は、プレフィックステーブルプロセッサ１４０２を含み、プレフィックステーブルプロセッサ１４０２は、異なる最長プレフィックスマッチテーブル（例えば図８〜１０示されたそれら）を特定し、その後アクセスするように構成されたハードウェアリソースである。テーブルは、メモリ１４０４内に存在し、メモリ１４０４は、ＳＲＡＭリソースのプールであり得る。プレフィックステーブルプロセッサ１４０２は、図１３の動作１３０４〜１３１０を連係させる。次に、次のホップインデックスプロセッサ１４０６は、メモリ１４０４の中の次のホップインデックステーブルにアクセスするように使用され得、ベースアドレスおよびオフセットを（もしあれば）次のホッププロセッサ１４０８に戻す。次のホッププロセッサ１４０８は、メモリ１４０４の中に格納された次のホップテーブルにアクセスし、結果１４１０として次のホップアドレスを生成する。プレフィックステーブルプロセッサ１４０２がトライミスまたは他のエラーを有する場合、エラーまたはデフォルト結果１４１０は、矢印１４１２で示されるように、直接に生成され得る。
【００２５】
説明の目的のために、上記説明は、本発明の全体的な理解を提供するように具体的な述語を使用した。しかしながら、当業者にとって、具体的な詳細は、本発明を実施するために必要とされないことが容易に理解できる。従って、本発明の具体的な実施形態の上記説明は、例示および説明の目的のために提示されている。それらは、網羅的であるように意図されず、または本発明を開示された精確な態様に限定するように意図されず、明らかに、多くの変更およびバリエーションは、上記教示を考慮して可能である。実施形態は、本発明の原理およびその実際のアプリケーションを説明するために、選択および説明され、それによって、実施形態は、当業者が、熟考された特定の使用に適するように、様々な変更と共に、本発明および様々な実施形態を最もよく利用することを可能にする。以下の請求項およびそれらの同等物は、本発明の範囲を規定する。
【図１】
2014176099.tif 000003
【図２】
2014176099.tif 000004
【図３】
2014176099.tif 000005
【図４】
2014176099.tif 000006
【図５】
2014176099.tif 000007
【図６】
2014176099.tif 000008
【図７】
2014176099.tif 000009
【図８】
2014176099.tif 000010
【図９】
2014176099.tif 000011
【図１０】
2014176099.tif 000012
【図１１】
2014176099.tif 000013
【図１２】
2014176099.tif 000014
【図１３】
2014176099.tif 000015
【図１４】
2014176099.tif 000016