(57)【要約】【課題】長さが変化する識別子を有するパケットを処理する。【解決手段】ＨＳＶＬＩ６００のプレフィックス６２０は、「／ａ」、「／ａ／ｂ」、「／ａ／ｂ／ｃ」および「／ａ／ｂ／ｃ／ｄ」を含む。これらのプレフィックスの各々は、アドレス６５０といったｎビットの固定長アドレスに変換され得る。例えば、システムは「／ａ」を、ｋビットで表される構成要素の数６００としての「１」とｎ−ｋビットで表されるプレフィックスのハッシュ値６７０としての「ｈ（／ａ）」とを有するｎビット固定長アドレスに変換する。固定長アドレスの数を用いて完全合致探索エンジンを使用して効果的な最長プレフィックス合致を実行する。【選択図】図６
2010178341.tif 000002
【特許請求の範囲】
【請求項１】
階層的に構造化された可変長識別子（ＨＳＶＬＩ）を有するパケットを転送するための、プロセッサを含むコンピュータで実現される方法であって、
ＨＳＶＬＩが一片のコンテンツを表し、階層的に構造化されていて、最も一般的なレベルから最も特定的なレベルまで順序付けられた連続する構成要素を備えており、それぞれのＨＳＶＬＩの長さが一定でない前記ＨＳＶＬＩを多数の固定長アドレスに変換することと、
少なくとも前記固定長アドレスに基づいて多数の完全合致探索を実行することによって効果的な最長プレフィックス合致探索を実行することとを備える、方法。
【請求項２】
前記ＨＳＶＬＩを多数の固定長アドレスに変換することは、
それぞれのプレフィックスが最も一般的なレベルにおける構成要素から始まる１つ以上の連続する構成要素を表す前記ＨＳＶＬＩの多数のプレフィックスを生成することと、
前記ＨＳＶＬＩの各プレフィックスを少なくとも１つの固定長アドレスに変換することと
を備える、請求項１に記載の方法。
【請求項３】
各プレフィックスを変換することは、
前記固定長アドレスからの予め決められた数のビットで前記プレフィックス内の構成要素の数を表すことと、
前記固定長アドレスの残りビットで前記プレフィックスから導出されたハッシュ値を表すことと
を備える、請求項２に記載の方法。
【請求項４】
前記有効な最長プレフィックス合致を実行することは、
前記最短プレフィックスから前記最長プレフィックスまで下記の動作を繰り返し実行すること、すなわち、
完全合致探索を使用してそれぞれのプレフィックスに対応する前記固定長アドレスに関する転送情報を決定することと、
前記完全合致探索によって決定された最も多くの構成要素を有する前記プレフィックスに関連する転送情報を選択することと
を繰り返し実行することを備える、請求項２に記載の方法。
【請求項５】
前記完全合致探索は下記の表示の１つ以上、すなわち、
合致が発見されたかどうかと、
合致が発見されて、更なる合致が更なる構成要素を有するプレフィックスのために利用可能であるかどうかと、
更なる構成要素を有するプレフィックスに関して更なる合致を取得するために必要とされる更なる構成要素の数と、
前記プレフィックスに関する合致に対応するリテラル値であって、前記固定長アドレス内の多数の留保ビットにロードされ、それによって後続の探索を容易にしてアドレス不一致の機会を減らすことができるリテラル値と、の表示の１つ以上を含む結果を返す、請求項４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットプロトコル（ＩＰ）ルータやイーサネット（登録商標）スイッチのようなネットワーク装置は、複数の入力ポート（ネットワークインターフェース）の１つでパケットを受信する。次に、ネットワーク装置は、パケットのあて先アドレスに基づいて転送されるための出力ポートを探索する。ＩＰルータは一般的には、最長プリフィックス合致探索エンジンを利用する。これに対し、イーサネット（登録商標）スイッチは、完全合致探索エンジンを利用する。
なお、先行技術としては特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】米国特許出願第１２／１２３，３４４号
【発明の概要】
【発明が解決しようとする課題】
【０００３】
インターネットプロトコル（ＩＰ）ルータやイーサネット（登録商標）スイッチは、長さが変化する識別子を有するパケットを処理することはできない。
【課題を解決するための手段】
【０００４】
本開示は、一般的にはデータネットワーク上での通信を容易にすることに関する。特に本開示は、完全合致探索エンジンを階層的に構造化された可変長識別子に適応させるための方法に関する。
【０００５】
一実施形態は、階層的に構造化された可変長識別子（ＨＳＶＬＩ）を有するパケットを転送するためのシステムであって、コンピュータがプロセッサを含むシステムを提供する。動作時にシステムは、１つのＨＳＶＬＩを多数の固定長アドレスに変換するが、ＨＳＶＬＩは、一片のコンテンツを示し、階層的に構造化されており、最も一般的なレベルから最も特定的なレベルまで順序付けられた連続する構成要素を備える。更に、それぞれのＨＳＶＬＩの長さは一定ではない。システムは更に、少なくとも固定長アドレスに基づいて多数の完全合致探索を実行することによって効果的な最長プレフィックス合致探索を実行する。
【０００６】
この実施形態の一態様ではＨＳＶＬＩを多数の固定長アドレスに変換することは、ＨＳＶＬＩの多数のプレフィックスを生成することを含み、それぞれのプレフィックスは最も一般的なレベルにおける構成要素から始まる１つ以上の連続した構成要素を示す。システムは更に、ＨＳＶＬＩの各プレフィックスを少なくとも１つの固定長アドレスに変換する。
【０００７】
更なる態様では各プレフィックスを変換することは、固定長アドレスからの予め決められた数のビットでプレフィックス内の構成要素の数を表すことと、固定長アドレスの残りビットでプレフィックスから導出されたハッシュ値を表すこととを含む。
【０００８】
更なる態様では効果的な最長プレフィックス合致を実行することは、最短プレフィックスから最長プレフィックスまで下記の動作を繰り返し実行すること、すなわち完全合致探索を使用してそれぞれのプレフィックスに対応する固定長アドレスに関する転送情報を決定することと、完全合致探索によって決定された最も多い構成要素を有するプレフィックスに関連する転送情報を選択することとを繰り返し実行することを含む。
【０００９】
更なる態様では転送情報は、少なくとも１つの出力ポートを表す。
【００１０】
更なる態様では完全合致探索は、下記の指示のうちの１つ以上を、すなわち合致が発見されるかどうかと、合致が発見されて更なる合致が更なる構成要素を有するプレフィックスのために利用可能であるかどうかと、更なる構成要素を有するプレフィックスに関する更なる合致を取得するために必要とされる更なる構成要素の数と、プレフィックスに関する合致に対応するリテラル値であって、固定長アドレス内の多数の留保ビットにロードされることが可能であり、それによって後続の探索を容易にしてアドレス不一致の機会を減らすリテラル値とのうちの１つ以上を含む結果を返す。
【００１１】
この実施形態の一態様では完全合致探索エンジンは、ハッシュテーブル、直接探索アレイ、および２進コンテンツアドレス指定可能メモリ（ＣＡＭ）のうちの１つ以上を備える。
【００１２】
この実施形態の態様ではＨＳＶＬＩ内の一構成要素は、グローバルにルート指定可能な名前と組織名とバージョン識別子とダイジェストとのうちの１つ以上を備える。
【図面の簡単な説明】
【００１３】
【図１】一実施形態による、パケットが階層的に構造化された可変長識別子（ＨＳＶＬＩ）を有する例示的ネットワークを示す図である。
【図２】一実施形態による、完全合致探索エンジンをＨＳＶＬＩに適応させるための例示的システムのアーキテクチャを示す図である。
【図３】本発明の一実施形態による、完全合致探索エンジンを使用してＨＳＶＬＩに関する効果的な最長プレフィックス合致探索を実行するプロセスを例示するフローチャートを提示する図である。
【図４】一実施形態による、ＨＳＶＬＩを多数の固定長アドレスに変換するプロセスを例示するフローチャートを提示する図である。
【図５】一実施形態による、それぞれのプレフィックスを変換するプロセスを例示するフローチャートを提示する図である。
【図６】一実施形態による、多数の固定長アドレスに変換された例示的ＨＳＶＬＩを示す図である。
【図７】一実施形態による、多数の固定長アドレスを用いて完全合致探索エンジンを使用して効果的な最長プレフィックス合致を実行するプロセスを例示するフローチャートを提示する図である。
【図８Ａ】一実施形態による、完全合致探索エンジンの例示的概念図である。
【図８Ｂ】本発明の一実施形態による、ＨＳＶＬＩに関する後続の探索を容易にするために探索結果を使用するための例示的機構を示す図である。
【図９】一実施形態による、ＨＳＶＬＩを有するパケットを転送するための例示的装置を示す図である。
【発明を実施するための形態】
【００１４】
これらの図では、同様の参照数字は、同じ図要素を指す。
【００１５】
本発明の実施形態では可変長識別子に関する最長プレフィックス合致を実行するように完全合致探索エンジンを適応させるという問題は、識別子を多数の固定長キーにハッシュすることによって解決される。本発明の実施形態は、階層的に構造化された可変長識別子（ＨＳＶＬＩ）に最長プレフィックス合致探索を実行するために固定長アドレス（例えば、イーサネット（登録商標）ＭＡＣアドレス）のために既存の完全合致探索エンジンを適応させることを含む。
【００１６】
ＨＳＶＬＩは、一片のコンテンツを表し、階層的に構造化されており、最も一般的なレベルから最も特定的なレベルまで順序付けられた連続する構成要素を含む。それぞれのＨＳＶＬＩの長さは一定ではない。本発明の実施形態は、１つのＨＳＶＬＩを完全合致エンジンで使用可能な多数の固定長キーにハッシュし、その結果、既存のネットワーク装置を使用することによって高速転送を容易にすることを含む。したがって、このシステムは、最長プレフィックス合致に基づいてＨＳＶＬＩを有するパケットを転送するためにイーサネット（登録商標）スイッチといった修正された完全合致スイッチング装置を使用できる。
【００１７】
本発明の実施形態はまた、コンテンツ中心のネットワーク（ＣＣＮ）にも適用可能である。コンテンツ中心のネットワーク−ルート指定がアドレスよりもむしろ関心に基づいて行われるネットワーク−は、コンテンツ搬送に新しい手法を提示する。コンテンツが移動する端末間会話としてアプリケーションレベルで見られるネットワークトラヒックを有する代わりに、コンテンツはそれに与えられた名前にある程度基づいて要求または返却され、ネットワークはプロバイダから消費者にコンテンツをルート指定する責任を有する。コンテンツは通信システムで搬送され得るデータを含み、テキスト、画像、ビデオおよび／またはオーディオといった任意の形のデータであり得る。消費者とプロバイダは、ネットワークの内側または外側のコンピュータまたは自動化プロセスにおける人であり得る。このようなネットワークでは一片のコンテンツは、コンテンツ全体またはコンテンツのそれぞれの部分を指し得る。例えば、新聞記事は、データパケットとして具現された多数片のコンテンツによって表現される可能性がある。一片のコンテンツはまた、認証データ、創作データ、コンテンツ所有者などといった情報と共にこの一片のコンテンツを記述または増補するメタデータに関連付けられ得る。
【００１８】
コンテンツ中心のネットワークでは、従来のＩＰネットワークとは異なり、パケットはＨＳＶＬＩによって識別され得る。例えば、「ａｂｃｄ／ｂｏｂ／ｐａｐｅｒｓ／ｃｃｎ／ｎｅｗｓ」は、コンテンツの名前であることが可能であり、対応するパケットを識別する、すなわち「ＡＢＣＤ」と名づけられた組織における「Ｂｏｂ」と名づけられたユーザに関する新聞の「ｃｎｎ」収集物からの「ｎｅｗｓ」記事を識別する。
【００１９】
一片のコンテンツを要求するためにノードは、コンテンツの名前によってこのコンテンツへの関心を表明する（例えば、放送する）。一片のコンテンツへの関心は、コンテンツの名前または識別子によるコンテンツに関する問合せであり得る。コンテンツはネットワークにおいて利用可能である場合、コンテンツを記憶する任意のノードからこの元のノードにルートを引き戻される。ルート指定インフラストラクチャは、情報を有する可能性の高い有望なノードに関心を知的に伝播し、それから関心が移動した経路に沿って利用可能なコンテンツを運ぶ。
【００２０】
図１は、本発明の一実施形態によるネットワークの例示的アーキテクチャを示す。この例では、ネットワーク１８０は、ノード１００〜１４５を備える。ネットワークにおける各ノードは、１つ以上の他のノードに接続されている。ネットワーク接続１８５はこのような接続の一例である。ネットワーク接続は実線で示されているが、各線はまた、１つのノードをもう１つのノードに接続し得るサブネットワークまたはスーパーネットワークを表し得る。ネットワーク１８０は、コンテンツ中心ネットワーク、ローカルネットワーク、スーパーネットワークまたはサブネットワークであり得る。これらのネットワークの各々は、１つのネットワーク内のノードが他のネットワーク内のノードに到達できるように相互接続され得る。ネットワーク接続は、広帯域、無線、電話、衛星または任意のタイプのネットワーク接続であり得る。ノードは、コンピュータシステム、ユーザを表すエンドポイントおよび／または関心を生成し得る、またはコンテンツを創作し得るデバイスであり得る。
【００２１】
本発明の一実施形態によれば消費者は、一片のコンテンツへの関心を生成し、それから関心をネットワーク１８０内のノードに送る。一片のコンテンツは、ネットワークの内側または外側に位置し得る出版業者またはコンテンツプロバイダによってネットワーク１８０内のノードに記憶され得る。例えば、図１において一片のコンテンツへの関心は、ノード１０５から発生する。コンテンツがノードにおいて利用可能でない場合、関心は最初のノードに接続された１つ以上のノードに流れる。例えば、図１において、関心は利用可能なコンテンツを有さないノード１１５に流れる（関心フロー１５０）。次に、関心は、ノード１０５から再びコンテンツを有さないノード１２５に流れる（関心フロー１５５）。それから関心は、利用可能なコンテンツを有するノード１３０に流れる（関心フロー１６０）。それからコンテンツの流れは、コンテンツが配信されるノード１０５にコンテンツが到達するまで経路を逆に引き返す（コンテンツフロー１６５、１７０および１７５）。認証といった他のプロセスも、コンテンツの流れに含まれ得る。
【００２２】
ネットワーク１８０において、コンテンツホルダー（ノード１３０）と関心発生ノード（ノード１０５）との間の経路内の如何なる数の中間ノード（ノード１００〜１４５）でも、コンテンツがネットワークに亘って移動するときにコンテンツのローカルコピーをキャッシュすることに関与し得る。キャッシュすることは、ローカルにキャッシュされたコンテンツへのアクセスを暗に共有することによって他の加入者の近傍に位置する第２の加入者のためのネットワーク負荷を軽減する。
【００２３】
従来のパケット転送は、ノード（またはノードのインタフェース）に割り当てられたアドレスに基づいている。例えば、イーサネット（登録商標）転送ではイーサネット（登録商標）フレームの４８ビットＭＡＣアドレスは、フレームに関してスイッチの出力ポートを決定するための転送テーブルにおける完全合致探索のために使用される。しかしながら、このような完全合致探索は、ＨＳＶＬＩを有するパケットを転送するためには適当でない。第１にイーサネット（登録商標）スタイルの完全合致探索は固定長ＭＡＣアドレスを処理できるだけであるのに、ＨＳＶＬＩは可変長を有することが可能である。第２にイーサネット（登録商標）スタイルの探索エンジンは完全合致探索を実行できるだけであるのに、ＨＳＶＬＩの階層的構造は最長プレフィックス合致探索を必要とする。
【００２４】
これは、イーサネット（登録商標）スイッチが大規模ネットワーク（例えば、インターネット）に亘ってパケットをルート指定するように設計されておらず、小規模ネットワーク（例えば、ローカルエリアネットワーク）間でパケットを転送するようにだけ意図されているからである。その結果、階層的ルート指定は元のイーサネット（登録商標）プロトコルにおける要件になっていない。しかしながら、ＨＳＶＬＩを有するパケットは任意のサイズのネットワーク（例えば、インターネット）に亘って移動する可能性があり、階層的ルート指定が、より適している。階層的ルート指定のために最長プレフィックス合致探索は、完全合致探索より効率的で拡張性がある。この開示において最長プレフィックス合致探索は、ＨＳＶＬＩにおける最も高い階層から最も低い階層までの最も多数の構成要素を合致させる結果を返す探索を実行するプロセスを指す。
【００２５】
上記のようにＨＳＶＬＩはコンテンツを指しており、またＨＳＶＬＩはコンテンツに関する組織的構造を表すことができ、少なくともある程度人間にとって意味のあることが望ましい。ＨＳＶＬＩの個別の構成要素は任意の長さを有し得る。更に、ＨＳＶＬＩは明確に限定された構成要素を有し、任意のバイト列を含むことができ、人間可読文字に限定されない。
【００２６】
最長プレフィックス合致探索は、ＨＳＶＬＩを有するパケットを転送する際に重要である。例えば、「／ｐａｒｃ／ｈｏｍｅ／ｓｍｅｔｔｅｒｓ」への関心を示すＨＳＶＬＩは、「／ｐａｒｃ／ｈｏｍｅ／ｓｍｅｔｔｅｒｓ／ｔｅｓｔ．ｔｘｔ」と「／ｐａｒｃ／ｈｏｍｅ／ｓｍｅｔｔｅｒｓ／ｂａｒ．ｔｘｔ」の両者に合致する。最長合致は、名前構成要素の数の点から、これが最も特定的であるという理由で最善であると考えられる。本発明の実施形態は、可変長ＨＳＶＬＩを用いて最長プレフィックス合致探索を実行できるように既存の固定長完全合致探索エンジンを適応させるための機構を提供する。
【００２７】
図２は、一実施形態による完全合致探索エンジンを適応させるための例示的システムの概要を示す。ＨＳＶＬＩを有するパケットを転送するためのシステム２００は、ＨＳＶＬＩ変換器２２０と合致手段２４０とを含む。変換器２２０は、ＨＳＶＬＩ２１０を受信する。ＨＳＶＬＩは、最も一般的なレベルから最も特定的なレベルまで順序付けられた連続する構成要素の階層的構造を示す。例えば、ＨＳＶＬＩは、「／ａ」が最も一般的なレベルであって「／ａ／ｂ／ｃ／ｄ」が最も特定的なレベルである「／ａ／ｂ／ｃ／ｄ」である可能性がある。
【００２８】
次に、ＨＳＶＬＩの各構成要素はスイッチにおいて受信されるが、ＨＳＶＬＩ変換器２２０は完全合致探索エンジン２４０への入力として多数の固定長アドレス２３０を順次に生成する。完全合致探索エンジン２４０は、転送テーブルを探索してＨＳＶＬＩの最も多数の構成要素に合致する転送情報２５０を生成するために固定長アドレスを使用できる。したがって、ＨＳＶＬＩ内の異なる数の構成要素を用いて多数の完全合致を実行することによって、システム２００はＨＳＶＬＩのために効果的な最長プレフィックス合致を実行することができる。転送情報２５０は、パケットが転送され得る少なくとも１つの出力ポートを示し得る。
【００２９】
一実施形態では、ＨＳＶＬＩが受信されているときに、システムは、ＨＳＶＬＩをＨＳＶＬＩの１プレフィックスごとに１つの固定長アドレスとして多数の固定長アドレスにリアルタイムに変換できる。１つのプレフィックスは、最も一般的なレベルにおける構成要素から始まる１つ以上の連続する構成要素を示す。例えば、「／ａ／ｂ」は、「／ａ」が最も一般的なレベルにあって「ａ」、「ｂ」、「ｃ」および「ｄ」が連続する構成要素である「／ａ／ｂ／ｃ／ｄ」のプレフィックスである。１つのＨＳＶＬＩは、１つより多いプレフィックスを有することができる。例えば、「／ａ／ｂ／ｃ」も「／ａ／ｂ／ｃ／ｄ」のプレフィックスである。
【００３０】
それからシステムは、完全合致探索エンジンにおいて各プレフィックスの固定長符号化を探索する。その符号化が完全合致探索エンジンにおけるエントリーに合致する最長プレフィックスは、事実上の最長プレフィックス合致である。システムは、存在しても、どのプレフィックスが完全合致探索エンジンによって発見されるかを先見的に知らないので、多数のプレフィックスを生成する。
【００３１】
図３は本発明の一実施形態による、完全合致探索エンジンを使用してＨＳＶＬＩに関して効果的な最長プレフィックス合致探索を実行するプロセスを例示するフローチャートを提示する。動作時にシステムは、ＨＳＶＬＩを受信する（動作３００）。それからシステムは、今まで受信されたすべてのＨＳＶＬＩ構成要素に基づいて、ＨＳＶＬＩを固定長アドレスに変換する（動作３０２）。このような変換の更なる詳細は、下記のセクションで説明される。引き続いてシステムは、変換された固定長アドレスを用いて完全合致探索を実行する（動作３０４）。
【００３２】
それからシステムは、転送情報を有する合致が発見されたかどうかを決定する（動作３０６）。発見された場合、システムは合致を一時記憶域Ｒに記憶する（動作３０８）。システムは更に、ＨＳＶＬＩに関する更なる構成要素が受信されたかどうかを決定する（動作３１０）。受信された場合、システムは新しい固定長アドレスを生成し続ける（動作３０２）。更なる構成要素が受信されない場合、あるいは合致が発見されない場合（分岐動作３０６を参照のこと）、システムは効果的な最長プレフィックス合致探索の結果としてＲ内に記憶された合致を返す（動作３１２）。如何なる固定長アドレスに関しても合致が発見されなかった場合、システムはＮＵＬＬを返すことに留意されたい。
【００３３】
上記の例では、ＨＳＶＬＩの各構成要素が受信されるときに多数の完全合致探索が順次にリアルタイムに実行されることが仮定されている。構成要素の全部または一部が受信された後に探索を実行することも可能である。例えば、システムは、多数の完全合致探索を実行する前にＨＳＶＬＩのすべての構成要素が受信されるまで待機することができる。システムはまた、完全合致探索を実行する前にある一定数の（すべてではない）構成要素が受信されるまで待機することもできる。
【００３４】
システムがＨＳＶＬＩを多数の固定長アドレスに変換することを前述のセクションから想起すること。一実施形態では、システムは構成要素が次々に受信されるにつれてＨＳＶＬＩのプレフィックスを生成する。それから各プレフィックスは、固定長アドレスに変換される。図４は、一実施形態による、ＨＳＶＬＩを多数の固定長アドレスに変換するプロセスを例示するフローチャートを提示する。動作時にシステムは、ＨＳＶＬＩの構成要素を受信する（動作４００）。それからシステムは、受信されたすべての構成要素を有するＨＳＶＬＩに関してプレフィックスを生成する（動作４０２）。システムは更に、プレフィックスを固定長アドレスに変換する（動作４０４）。引き続いてシステムは、ＨＳＶＬＩの更なる構成要素が受信されたかどうかを決定する（動作４０６）。受信された場合システムは、上記のプロセス（動作４００）を繰り返す。そうでなければシステムは戻る。
【００３５】
一実施形態では、所定のプレフィックスを固定長アドレスに変換するために、システムは下記の動作を実行する。固定長アドレスがｎビット長であると仮定する（例えば、イーサネット（登録商標）ＭＡＣアドレスの場合にはｎ＝４８）。プレフィックスに含まれる構成要素の数を示すために、これらｎビットのうちからｋビットが留保される。それからシステムは、プレフィックスをハッシュしてハッシュ値を残りのｎ−ｋビットに位置づける。図５は、このプロセスを例示するフローチャートを提示する。動作時にシステムは、プレフィックス内の構成要素の数をｎビット固定長アドレスからのｋビットで表す（動作５００）。例えば、システムは、プレフィックス「／ａ／ｂ／ｃ」内の構成要素の数としての「３」をｋビットで表す。ｋという値は、ＨＳＶＬＩに関する構成要素の最大数に依存し得る。次に、システムは、プレフィックスから導出されたハッシュ値をｎビット固定長アドレスの残りｎ−ｋビットで表す（動作５１０）。システムは、プレフィックスに対して巡回冗長検査を含む種々のハッシング方法を使用できる。
【００３６】
図６は、一実施形態による、多数の固定長アドレスに変換された例示的ＨＳＶＬＩを示す。ＨＳＶＬＩ６００「／ａ／ｂ／ｃ／ｄ」は多数のプレフィックス６２０を生成できる。ＨＳＶＬＩ６００のプレフィックス６２０は、「／ａ」、「／ａ／ｂ」、「／ａ／ｂ／ｃ」および「／ａ／ｂ／ｃ／ｄ」を含む。これらのプレフィックスの各々は、アドレス６５０といったｎビットの固定長アドレスに変換され得る。例えば、システムは「／ａ」を、ｋビットで表される構成要素の数６００としての「１」とｎ−ｋビットで表されるプレフィックスのハッシュ値６７０としての「ｈ（／ａ）」とを有するｎビット固定長アドレスに変換する。「ｈ（／ａ）」はプレフィックス「／ａ」から導出されたハッシュ値である「ａのハッシュ」に関する簡略表記であることに留意されたい。上記のようにプレフィックスからハッシュ値を導出するために種々の方法が使用され得る。図６における他のプレフィックスも同様にｎビット固定長アドレスに変換され得る。
【００３７】
図７は、一実施形態による、固定長アドレスの数を用いて完全合致探索エンジンを使用して効果的な最長プレフィックス合致を実行するプロセスを例示するフローチャートを提示する。システムは、最短プレフィックスから最長プレフィックスまで下記の動作を繰り返し実行する（動作７００）。システムは先ず、それぞれのプレフィックスに対応する固定長アドレスに関する転送情報を完全合致探索によって決定する（動作７１０）。それからシステムは、最も長い合致したプレフィックスに関連する転送情報を選択する（動作７２０）。システムが最も長い合致したプレフィックスに関連する転送情報を選択するので、システムは完全合致探索を使用することによって最長合致プレフィックスを決定できる。
【００３８】
すべての構成要素が受信された後にシステムは動作７１０および７２０を繰り返し実行できることに留意されたい。例えば、システムは、最長プレフィックスから最短プレフィックスまでこれらの動作を実行できる。システムはまた、これらの動作を並行して実行することもできる。プレフィックスが処理される順序とは無関係に、システムは最長合致プレフィックスに関連する転送情報を返すことだけを必要とする。
【００３９】
図８Ａは、一実施形態による完全合致探索エンジンの例示的概念図を示す。この図は、ｋビットを有する構成要素の数（要素８１０）とｎ−ｋビットを有するプレフィックスのハッシュ値（要素８２０）の両方を記憶できるｎビット固定長アドレス８００を示す。この図はまた、１つ以上の出力ポートのインデックスを表し得る転送情報８３０を示す。例えば、「２３」は出力ポート番号２３を表す。エントリー８４０〜８６０は、探索テーブルに記憶され、完全合致探索エンジンによって探索され得るエントリーを示す。例えば、エントリー８４０は、「１」を表す最初のｋビットと「ｈ（／ａ）」を表す残りのｎ−ｋビットとを有するｎビット固定アドレスが出力ポート２３に対応することを示す。同様に、エントリー８５０は、「２」を表す最初のｋビットと「ｈ（／ａ／ｂ）」を表す残りのｎ−ｋビットとを有するｎビット固定アドレスが出力ポート６０に対応することを示す。
【００４０】
探索エンジンのこの概念図で続けて、ＨＳＶＬＩ「／ａ／ｂ／ｃ／ｄ」がそのすべてのプレフィックスから多数のｎビット固定長アドレスに適切に変換されたと想定する。それからシステムは、最長合致プレフィックスに関連する転送情報として「１２７」を返す。
【００４１】
上記のように、システムが最短プレフィックスから最長プレフィックスまで完全合致探索を実行する場合に、システムは今までに発見された最長プレフィックス合致を保持するために単一の記憶域Ｒを使用できる。システムが各プレフィックスを変換した後に、このシステムは探索を実行でき、合致が発見される場合Ｒの前の値を新しい転送情報で置き換えることができる。システムが最長プレフィックスに関して探索を実行した後に、Ｒは最長プレフィックス合致に対応する転送情報を保持する。
【００４２】
一実施形態では、転送情報は共通のサブプレフィックスに基づく探索エンジン内の次回利用可能な合致のインデックスを含み得る。例えば、図８においてエントリー８５０に関する転送情報は、エントリー８６０へのポインタを含み得る。システムは、探索エンジンが所定数の構成要素に関するエントリーを含まないときに所定数の構成要素による探索を回避することによってこの次回利用可能合致を活用することができる。例えば、システムは、３つの構成要素を有し、探索エンジン内には存在しない「／ａ／ｂ／ｃ」のｎビット変換を探索することを回避できる。図７における繰り返しは、転送情報によって表されたある一定のプレフィックス長さをスキップするように修正され得る。いったん探索エンジンが２つの構成要素を有する「／ａ／ｂ」のｎビット変換に合致すると、次回利用可能合致は４つの構成要素を有する「／ａ／ｂ／ｃ／ｄ」となり得る。転送情報の一部として返されると、次回利用可能合致のインデックスは、３つの構成要素を有する「／ａ／ｂ／ｃ」にｎビット変換を探索することをシステムが回避することを可能にする。
【００４３】
ある幾つかの実施形態では、探索結果はＨＳＶＬＩの構成要素が受信されたときに後続の探索を容易にできるあるフィードバック情報を含み得る。例えば、システムは、ｎビットのうちからｋビットを留保ビットとして割り当てることができる。探索結果は、後続の探索をガイドするために使用され得る演算子を含むことができる。図８Ｂは、本発明の一実施形態による、ＨＳＶＬＩに関する後続の探索を容易にするために探索結果を使用するための例示的機構を示す。この例では、ＨＳＶＬＩの構成要素が受信されると、システムは多数のｎビット固定長アドレスを生成する。各アドレスは、ｋ個の留保ビット８５０とプレフィックスのハッシュ値を記憶するためのｎ−ｋビット８６０とを含む。探索プロセスは、２つの０部分、すなわち演算子８６２と探索返却値８６４（出力ポート情報を含み得る）とを含む結果を生成する。演算子８６２の値に基づいてシステムは、ＨＳＶＬＩの更なる構成要素が受信されたときに後続の探索に関する種々の動作を実行できる。
【００４４】
一実施形態では、演算子８６２は、少なくとも下記の動作、すなわち「合致（ｍａｔｃｈ）」、「合致および終了」、「終了」、「リテラルをロードする」および「ｍ個の構成要素を必要とする」を表し得る。
【００４５】
演算子８６２が「合致」を示すとき、これは合致が探索によって識別されて、同じプレフィックスを有する探索テーブル内に更なる合致が存在し得ることを意味する。言い換えれば、システムは、探索がより長いプレフィックスに関する合致を生成し得ることが可能であるので、ＨＳＶＬＩの更なる構成要素が受信されたとき、もう１つの探索を実行するように期待される。
【００４６】
演算子８６２が「合致および終了」を表すとき、これは合致が識別されたが、より長いプレフィックスに関して探索テーブル内に他の合致が存在しないことを意味する。したがって、システムは、ＨＳＶＬＩの更なる構成要素が受信されたとき、更なる探索を実行することを必要としない。この表示はシステムに対する処理負荷を軽減できる。
【００４７】
演算子８６２が「終了」を表すとき、これは合致が識別されなくて、より長いプレフィックスに関して探索テーブル内に他の合致が存在しないことを意味する。したがって、システムは、同じＨＳＶＬＩに関する更なる探索を実行することを必要としない。
【００４８】
演算子８６２が「リテラルをロードする」を表すとき、これは現在プレフィックスのハッシュが合致における探索結果のためのキーとして使用されたことと、システムが後続の探索のために生成された固定長アドレスにおけるｋ個の留保ビットに予め決められた値（すなわちリテラル値）をロードするように期待されていることとを意味する。このオプションは、更なる構成要素が受信されたときに後続の探索がｋ個の留保ビットで表されたロードされたリテラルを含むキー基づいて行われるように、合致を最初に生成する１つ以上のハイレベル共通構成要素をプレフィックスが有するときに使用され得る。例えば、システムが名前「／ｐａｒｃ．ｃｏｍ／」の最初の構成要素を受信すると、システムはこのプレフィックスに基づいて正常な探索を出して合致を見つけ出す。探索結果は、同じ名前に関して生成された後続のプレフィックスがｋ個の留保ビットで表されたリテラル値を含むべきであることを表す。このようにして、留保ビットにロードされたリテラル値は、ハッシュ値不一致による後続の探索における不正合致を防止できる。
【００４９】
演算子８６２が「ｍ個の構成要素を必要とする」を表すと、これは現在プレフィックスの合致が識別されて、同じＨＳＶＬＩのためのより長いプレフィックスに関する次の合致がｍ個の構成要素を必要とするということを意味する。これに対応してシステムは、同じＨＳＶＬＩのためのｍ個の構成要素が受信されるまで、如何なる探索も実行する必要がない。ｍ個の構成要素に関して如何なる合致も発見されない場合、前の合致が最善の合致と見なされて、更なる探索は必要でないことに留意されたい。
【００５０】
一実施形態では、探索エンジンは、ｎビット固定長アドレスの完全合致探索を実行する。探索エンジンは、ハッシュテーブル、直接探索アレイおよび２進コンテンツアドレス指定可能メモリ（ＣＡＭ）のうちの１つ以上を含み得る。ＣＡＭは、このＣＡＭがすべてのコンテンツ場所に亘って並行して入力値を探索できて、１サイクル内で関連する値を有する合致を返せるように、各記憶域が１ビットごとのコンパレータを有するメモリである。２進ＣＡＭは、入力ワードに関して完全合致探索を実行し、これは例えば、所定の４８ビットＭＡＣアドレスに関して出力ポートを探索することを必要とするイーサネット（登録商標）スイッチにおいて使用され得る。直接探索アレイは、プレフィックスに関連するｎビットアドレスごとに転送情報を記憶する。ハッシュテーブルは、多数のｎビットアドレス間の不一致を可能にすることによってこの情報をよりコンパクトに記憶する。すなわち直接探索アレイは１対１写像であるが、ハッシュテーブルは多対１写像である。
【００５１】
図９は、一実施形態による、ＨＳＶＬＩを有するパケットを転送するための例示的装置を示す。ＨＳＶＬＩを有するパケットを転送するための装置９００は、プロセッサ９１０、メモリ９２０、記憶装置９３０、変換機構９４０および合致機構９５０を備えており、これらのすべては種々の手段を介して互いに通信できる。
【００５２】
ある幾つかの実施形態では、機構９４０〜９５０は、プロセッサ９１０の一部であり得る。更に、ある幾つかの実施形態では、システムは、別々のプロセッサおよびメモリを含まないこともあり得る。その代わり、これらの固有のタスクを実行することに加えて機構９４０〜９５０は、別々に、または一致して汎用または専用の計算エンジンの一部であり得る。
【００５３】
記憶装置９３０は、プロセッサ９１０によって実行されるプログラムを記憶する。具体的には、記憶装置９３０は、完全合致探索エンジンをＨＳＶＬＩに適応させるためのシステム（アプリケーション）を実現するプログラムを記憶する。動作時に、アプリケーションプログラムは、記憶装置９３０からメモリ９２０にロードされてプロセッサ９１０によって実行され得る。その結果、装置９００は上記の機能を実行できる。装置９００は、任意選択的な表示装置９８０、キーボード９６０およびポインティングデバイス９７０に接続され得る。
【００５４】
この詳細説明において説明されたデータ構造とコードは典型的には、コンピュータシステムによる使用のためのコードおよび／またはデータを記憶し得る任意のデバイスまたは媒体であり得るコンピュータ可読記憶媒体に記憶される。コンピュータ可読記憶媒体は、揮発性メモリ、不揮発性メモリ、例えば、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタルバーサタイル・ディスクまたはディジタルビデオディスク）といった磁気および光記憶デバイス、あるいは現在周知の、または後日開発されるコンピュータ可読媒体を記憶できる他の媒体を含むが、これらに限定されない。
【００５５】
詳細説明セクションで説明された方法およびプロセスは、上記のコンピュータ可読記憶媒体に記憶され得るコードおよび／またはデータとして具現され得る。コンピュータシステムがコンピュータ可読記憶媒体に記憶されたコードおよび／またはデータを読取って実行するとき、コンピュータシステムは、データ構造およびコードとして具現されて、コンピュータ可読記憶媒体に記憶された方法およびプロセスを実行する。
【００５６】
更に、本明細書で説明された方法およびプロセスは、ハードウエアモジュールまたは装置内に含まれ得る。これらのモジュールまたは装置は、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブル・ゲートアレイ（ＦＰＧＡ）、特定の時刻に特定のソフトウエアモジュールまたは一片のコードを実行する専用または共用プロセッサ、および／または現在周知の、または後日開発される他のプログラム可能な論理回路を含み得るが、これらに限定されない。ハードウエアモジュールまたは装置が駆動されると、これらは内部に含まれた方法およびプロセスを実行する。
【００５７】
種々の実施形態の前述の説明は、図解および説明だけの目的で提示されたものである。これらは、網羅的であることも本発明を開示された形に限定することも意図されていない。したがって、当業者には多くの修正版および変形版が明らかである。更に、上記の開示は、本発明を限定ようには意図されていない。
【００５８】
上記の説明は、当業者もこれらの実施形態を実行し使用することを可能にするために提示されており、特定の用途およびその要件に関連して提供されている。開示された実施形態の種々の修正版は当業者には直ちに明らかであり、また本明細書で定義された一般的原理は、本開示の精神および範囲から逸脱せずに他の実施形態および用途に適用可能である。したがって、本発明は、提示された実施形態に限定されず、本明細書に開示された原理および特徴に一致する最も広い範囲と認められるべきである。
【符号の説明】
【００５９】
１００、１０５、１１０、１１５、１２０、１２５、１３０、１３５、１４０、１４５  ノード
１５０、１５５、１６０  関心フロー
１６５、１７０、１７５  コンテンツフロー
１８０  ネットワーク
１８５  ネットワーク接続
２００  ＨＳＶＬＩを有するパケットを転送するためのシステム
２２０  変換器
２３０  多数の固定長アドレス
２４０  完全合致探索エンジン
２５０  転送情報
２６０  パケット転送手段
６２０  ＨＳＶＬＩのプレフィックス
６５０  ｎビット固定長アドレス
６６０  ｋビットで表された構成要素の数
６７０  ｎ−ｋビットで表されたプレフィックスのハッシュ値
８００  ｎビット固定長アドレス
８１０  ｋビットで表された構成要素の数
８２０  ｎ−ｋビットで表されたプレフィックスのハッシュ値
８３０  転送情報
８４０、８５０、８６０  エントリー
８５０  留保されたｋビット
８６０  ｎ−ｋビットで表されたプレフィックスのハッシュ値
８６２  演算子
８６４  探索返却値
９００  ＨＳＶＬＩを有するパケットを転送するための装置
９１０  プロセッサ
９２０  メモリ
９３０  記憶装置
９４０  変換機構
９５０  合致機構
９６０  キーボード
９７０  ポインティングデバイス
９８０  表示装置
９９０  ネットワーク
【図１】
2010178341.tif 000003
【図２】
2010178341.tif 000004
【図３】
2010178341.tif 000005
【図４】
2010178341.tif 000006
【図５】
2010178341.tif 000007
【図６】
2010178341.tif 000008
【図７】
2010178341.tif 000009
【図８Ａ】
2010178341.tif 000010
【図８Ｂ】
2010178341.tif 000011
【図９】
2010178341.tif 000012