(57)【要約】  一実施形態によれば、ここに説明されるのは、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムおよび方法である。パケット分類フレームワークは、キー合成プリミティブと、キー合成規則プリミティブと、一致アクション論理構造と、次のアクションプリミティブとを含む、複数のハードウェアベースのプログラマブル分類プリミティブを含み得る。これらの分類プリミティブは、データパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされ得る。分類フレームワークは、ステートマシンを使用してデータパケット処理の状態を追跡し、データパケットの処理状態に基づいて分類プリミティブの挙動を動的に調節することができる。プログラマブル分類プリミティブにより、分類フレームワークは、ハードウェア変更をまったく必要とすることなく、複数のプロトコルのデータパケットを再帰的に構文解析することができる。
2020502829.tif 000002
【特許請求の範囲】
【請求項１】
高性能ネットワークにおけるネットワークデバイスにおいてプログラマブルパケット分類フレームワークを提供するためのシステムであって、
高性能ネットワークにおけるネットワークデバイスを含み、前記ネットワークデバイスは、キー合成プリミティブと、キー合成規則プリミティブと、１つ以上のルックアップテーブルと、一致アクションテーブルとを含む、複数の分類プリミティブを含み、
前記キー合成プリミティブは、前記キー合成規則プリミティブに基づいてルックアップキーを構築し、前記ルックアップキーをルックアップテーブルへ提示するように構成されており、
前記ルックアップテーブルにおける前記ルックアップキーとの一致は、前記一致アクションテーブルにおけるアクション一致をもたらし、
前記アクション一致は、次のルックアップキーを構築する際に使用するための情報に関連付けられている、システム。
【請求項２】
複数の分類プリミティブは、前記ネットワークデバイスで受信されたデータパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされている、請求項１に記載のシステム。
【請求項３】
複数の分類プリミティブの各々はプログラマブルであり、三値連想メモリ（ＴＣＡＭ）または静的ランダムアクセスメモリ（ＳＲＡＭ）に基づいている、請求項２に記載のシステム。
【請求項４】
前記データパケットは複数のプロトコルのうちの１つに基づいており、前記複数の分類プリミティブによって再帰的に構文解析されるように構成されている、請求項２に記載のシステム。
【請求項５】
前記キー合成規則プリミティブは、前記ネットワークデバイスにおけるＴＣＡＭに存在する構造であり、キーＩＤと、バイト選択アレイと、前記ルックアップキーの長さと、テーブルＩＤとを含む、先行する請求項のいずれか１項に記載のシステム。
【請求項６】
前記バイト選択アレイは、データパケットにおけるバイト位置を指す索引を含み、前記索引は、前記データパケットの開始位置、または処理中の現在のネットワーク層の開始位置に関連しており、もしくは、一致規則の結果導き出される、請求項５に記載のシステム。
【請求項７】
前記ネットワークデバイスは、インフィニバンドネットワークまたはイーサネットネットワークにおけるネットワークインターフェイスカードまたはスイッチである、先行する請求項のいずれか１項に記載のシステム。
【請求項８】
データパケット処理の状態を追跡するように構成されたステートマシンをさらに含む、先行する請求項のいずれか１項に記載のシステム。
【請求項９】
初めに前記ネットワークデバイスによってデータパケットが受信されると、ルックアップキーを構築するために、前記キー合成プリミティブによってデフォルトキー合成規則プリミティブが使用される、先行する請求項のいずれか１項に記載のシステム。
【請求項１０】
前記デフォルトキー合成規則プリミティブは、少なくとも、前記ネットワークデバイス上の到着ポートに基づいている、請求項９に記載のシステム。
【請求項１１】
高性能ネットワークにおけるネットワークデバイスにおいてプログラマブルパケット分類フレームワークを提供するための方法であって、
高性能ネットワークにおけるネットワークデバイスを提供するステップを含み、前記ネットワークデバイスは、キー合成プリミティブと、キー合成規則プリミティブと、１つ以上のルックアップテーブルと、一致アクションテーブルとを含む、複数の分類プリミティブを含み、前記方法はさらに、
前記キー合成プリミティブを使用して、前記キー合成規則プリミティブに基づいてルックアップキーを構築するステップと、
前記ネットワークデバイスにおけるルックアップテーブルにおいて前記ルックアップキーとの一致を検出するステップと、
前記一致アクションテーブルにおける一致に関連付けられた１つ以上のアクションをトリガするステップとを含み、
前記一致アクションテーブルにおける前記一致は、次のルックアップキーを構築する際に使用するための情報に関連付けられている、方法。
【請求項１２】
複数の分類プリミティブは、前記ネットワークデバイスで受信されたデータパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされている、請求項１１に記載の方法。
【請求項１３】
複数の分類プリミティブの各々はプログラマブルであり、三値連想メモリ（ＴＣＡＭ）または静的ランダムアクセスメモリ（ＳＲＡＭ）に基づいている、請求項１２に記載の方法。
【請求項１４】
前記データパケットは複数のプロトコルのうちの１つに基づいており、前記複数の分類プリミティブによって再帰的に構文解析されるように構成されている、請求項１２に記載の方法。
【請求項１５】
前記キー合成規則プリミティブは、前記ネットワークデバイスにおけるＴＣＡＭに存在する構造であり、キーＩＤと、バイト選択アレイと、前記ルックアップキーの長さと、テーブルＩＤとを含む、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１６】
前記バイト選択アレイは、データパケットにおけるバイト位置を指す索引を含み、前記索引は、前記データパケットの開始位置、または処理中の現在のネットワーク層の開始位置に関連しており、もしくは、一致規則の結果導き出される、請求項１５に記載の方法。
【請求項１７】
前記ネットワークデバイスは、インフィニバンドネットワークまたはイーサネットネットワークにおけるネットワークインターフェイスカードまたはスイッチである、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１８】
データパケット処理の状態を追跡するように構成されたステートマシンをさらに含む、請求項１１〜１７のいずれか１項に記載の方法。
【請求項１９】
初めに前記ネットワークデバイスによってデータパケットが受信されると、ルックアップキーを構築するために、前記キー合成プリミティブによってデフォルトキー合成規則プリミティブが使用される、請求項１１〜１８のいずれか１項に記載の方法。
【請求項２０】
高性能ネットワークにおけるネットワークデバイスにおいてプログラマブルパケット分類フレームワークを提供するための１組の命令を格納する、非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに複数のステップを実行させ、前記複数のステップは、
キー合成プリミティブと、キー合成規則プリミティブと、１つ以上のルックアップテーブルと、一致アクションテーブルとを含む、複数の分類プリミティブを有する、高性能ネットワークにおけるネットワークデバイスを構成するステップと、
前記キー合成プリミティブを使用して、前記キー合成規則プリミティブに基づいてルックアップキーを構築するステップと、
前記ネットワークデバイスにおけるルックアップテーブルにおいて前記ルックアップキーとの一致を検出するステップと、
前記一致アクションテーブルにおける一致に関連付けられた１つ以上のアクションをトリガするステップとを含み、
前記一致アクションテーブルにおける前記一致は、次のルックアップキーを構築する際に使用するための情報に関連付けられている、非一時的なコンピュータ読取可能記憶媒体。
【請求項２１】
コンピュータシステムによって実行されると、前記コンピュータシステムに請求項１１〜１９のいずれか１項に記載の方法を行なわせる、マシン読取可能フォーマットのプログラム命令を含む、コンピュータプログラム。
【請求項２２】
非一時的なマシン読取可能データ記憶媒体に格納された、請求項２１に記載のコンピュータプログラムを含む、コンピュータプログラム製品。
【請求項２３】
請求項１１〜１９のいずれか１項に記載の方法を行なうための手段を含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【０００２】
発明の分野：
この発明の実施形態は概して高性能ネットワークに関し、特に、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
高性能ネットワークは、異機種ネットワーク、たとえばイーサネット（登録商標）データセンターおよびインフィニバンド（InfiniBand）データセンターで構築可能であり、イーサネットゲートウェイがこれら２つのタイプのネットワーク間をつないでいる。業界では、高性能ネットワークにおける既存のネットワークの上にオーバーレイネットワークが作成されることを可能にする技術が進化してきた。オーバーレイネットワークは、データセンターが、ネットワークオーバーレイプロトコルを使用して、既存のネットワークの制限を超えてスケーリングすることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高性能ネットワークにおけるデータセンターの、またはデータセンターでのアプリケーションのスケーリングは、より新しいネットワークオーバーレイプロトコルの出現により、追加のパケット構文解析および処理の複雑性を要する。スケーリングされたデータセンターのより高いスループット要件についていくには、いくつかのネットワークプロトコルレベルオフロードを最も低いハードウェアコンポーネントのレベルで行なう必要がある。たとえば、ネットワークプロトコルレベルオフロードは、ネットワークインターフェイスカード（network interface card：ＮＩＣ）、スイッチ、またはＮＩＣとスイッチとの組合せ（作業はＮＩＣとスイッチとの間で共有される）によって行なわれ得る。オフロードエンジンがどこに存在するかに依存して、オフロードエンジンは、より高いスループットおよび短い待ち時間が達成され得るように、異なるように最適化される必要がある。
【０００５】
また、クラウドコンピューティングをサポートするために高性能ネットワークがますます使用されるにつれて、ますます多くの異なるタイプのオーバーレイプロトコルが、高性能ネットワークにおいて使用されるかもしれない。
【０００６】
そのため、フレームワークをサポートするハードウェアコンポーネントへの変更を必要とすることなく、さまざまなオーバーレイプロトコルをサポートするようにプログラムされ得るパケット処理フレームワークを提供することが有利であろう。また、パケット処理フレームワークがＮＩＣで使用されようと、スイッチで使用されようと、またはＮＩＣおよびスイッチの双方で使用されようと、パケット処理フレームワークが追加の最適化なしで高いスループットおよび短い待ち時間を有することも有利であろう。
【課題を解決するための手段】
【０００７】
概要：
一実施形態によれば、ここに説明されるのは、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムおよび方法である。パケット分類フレームワークは、キー合成プリミティブと、キー合成規則プリミティブと、一致アクション論理構造と、次のアクションプリミティブとを含む、複数のハードウェアベースのプログラマブル分類プリミティブを含み得る。これらの分類プリミティブは、データパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされ得る。分類フレームワークは、ステートマシンを使用してデータパケット処理の状態を追跡し、データパケットの処理状態に基づいて分類プリミティブの挙動を動的に調節することができる。プログラマブル分類プリミティブにより、分類フレームワークは、ハードウェア変更をまったく必要とすることなく、複数のプロトコルのデータパケットを再帰的に構文解析することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムを示す図である。
【図２】一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す図である。
【図３】一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す図である。
【図４】一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す図である。
【図５】一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するための方法を示す図である。
【図６】一実施形態に従った、例示的な高性能ネットワークを示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明：
高性能ネットワークでは、パケット分類とは、同じフローに属するすべてのデータパケットが予め規定されたルールに従い、同じ態様で処理されるように、データパケットを「フロー」へと類別するプロセスを指す。たとえば、パケット分類は、ファイアウォールおよびサービス品質といった非ベストエフォート型サービスにとって必要とされ得る。
【００１０】
上述のように、クラウドコンピューティングへのサポートは、高性能ネットワークにおけるデータ分類に、構文解析および処理の複雑性を追加し得る。
【００１１】
構文解析および処理の複雑性に対処するために、ここに説明されるのは、キー合成プリミティブと、キー合成規則プリミティブと、一致アクション論理構造と、次のアクションプリミティブとを含み得る、プログラマブルパケット分類フレームワークである。これらの分類プリミティブは、データパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされ得る。各分類プリミティブは、ネットワークデバイスにおける１組のアセンブリ命令であり得る。
【００１２】
ここに使用されるように、一実施形態によれば、キー合成プリミティブは、前の処理プリミティブまたは構造から渡されたキー合成規則に基づいて一致アクション論理構造用のルックアップキーを動的に作成するために使用され得る。
【００１３】
現在処理中のデータパケットのために、さまざまなバイトが選択され、キーアレイ構造になるよう連結され得る。バイト選択はキー合成規則に基づいていてもよく、それらは、データパケットにおけるバイト位置を指す索引を有するバイト選択アレイを特定することができる。索引は、データパケットの開始位置、または処理中の現在のネットワーク層の開始位置に関連していてもよく、もしくは、一致規則の結果導き出されてもよい。
【００１４】
一実施形態によれば、各ルックアップキーは、一致アクションテーブルにおける一致アクションルックアップのためにルックアップキーが使用されるコンテキストを判断するために使用される一意識別子（ＩＤ）に関連付けられ得る。各ルックアップキーはまた、サイズにも関連付けられてもよく、それは、ルックアップキーを構築するためにデータパケットのヘッダから選択されるべき関連バイトの数を判断するために使用され得る。
【００１５】
また、ここに使用されるように、一実施形態によれば、キー合成規則プリミティブは、ルックアップキーＩＤと、バイト選択アレイと、ルックアップキーの長さと、テーブルＩＤとを含む構造を表わし得る。一致アクションテーブルにおける各ルックアップは、データパケット処理の次のループ用のルックアップキーを構築する際に使用するための上述の構造をもたらし得る。キー合成規則構造／プリミティブは、一致アクションテーブルにおける各一致に従って、または、予めプログラムされた別の構造へのポインタを使用することによって間接的に、特定され得る。
【００１６】
一実施形態によれば、パケット処理パイプラインにおけるまさしく最初のループのために、同様の構造がデフォルトとして利用可能であり得る。たとえば、デフォルト構造は、ネットワークデバイス上の複数の物理的入口ポートから、到着ポートに基づいて導き出され得る。
【００１７】
また、ここに使用されるように、一実施形態によれば、一致アクション論理構造は、１つ以上の三値連想メモリ（ternary content-addressable memory：ＴＣＡＭ）と、１つ以上のルックアップテーブルとを、内部に含み得る。
【００１８】
上述のように、ルックアップキーを構築するために使用されるキー合成規則プリミティブにおいて、テーブルＩＤが特定され得る。テーブルＩＤに基づいて、対応するルックアップテーブルが、キー一致ルックアップのために選択され得る。選択されたルックアップテーブルにおいてキー一致が検出されるたびに、１つ以上のアクションがキー一致に一致させられ得る。選択されたルックアップテーブルにおける１つ以上のエントリがルックアップキーと一致し得る場合、一意的なアクションを判断するために、優先順位規則に基づいたＴＣＡＭ構造が使用され得る。
【００１９】
さらに、ここに使用されるように、次のアクションプリミティブが、上述のようにキーＩＤと次のテーブルＩＤとを含み得るキー合成規則構造を特定することができる。次のテーブルＩＤは、現在のルックアップテーブル、または異なるルックアップテーブルを表わし得る。
【００２０】
一実施形態によれば、次のアクションプリミティブは、ドロップする、転送する、リダイレクトするといった、パケット構文解析一致結果に特有のアクションと、より多くのフィールドを探すことによって、パケット処理を続ける必要があるか、または終了可能かを特定する、終了フラグまたは継続フラグとを含み得る。
【００２１】
加えて、次のアクションプリミティブは、ルックアップテーブルにおける特定のキー一致のために一致アクションテーブルにおいて複数の記録が利用可能であり得る場合に最終アクションを判断するために、パケット処理エンジンまたはパーサのための１つ以上の優先順位規則を特定することができる。
【００２２】
上述のパケット分類プリミティブにより、プログラマブルでフレキシブルなパケット分類フレームワークが、ネットワークデバイスにおいて提供され得る。同じルックアップテーブルを、異なるルックアップキーを用いて複数回使用することができるため、ＴＣＡＭの効率的な使用が達成され得る。また、パケット分類フレームワークは、再帰的ＴＣＡＭ／テーブルルックアップに基づいて微粒子フローベースでより深いパケット検査を行なうために使用され得る。
【００２３】
一実施形態によれば、分類フレームワークは、ステートマシンを使用してデータパケット処理の状態を追跡し、データパケットの処理状態に基づいて分類プリミティブの挙動を動的に調節することができる。
【００２４】
プログラマブル分類プリミティブにより、分類フレームワークは、ハードウェア変更をまったく必要とすることなく、複数のプロトコルのデータパケットを構文解析することができる。また、パケット分類フレームワークは、基盤ネットワーキング技術から独立しており、インフィニバンドまたはイーサネットまたは別のタイプのネットワーキング技術に一律に適用され得る。
【００２５】
図１は、一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムを示す。
【００２６】
図１に示すように、ネットワークデバイス１０１、たとえば、インフィニバンドまたはイーサネットにおけるネットワークインターフェイスカード（ＮＩＣ）またはスイッチは、複数のＴＣＡＭ、たとえば、ＴＣＡＭ  Ａ  １１７、ＴＣＡＭ  Ｂ  １１８、ＴＣＡＭ  Ｃ  １１９、およびＴＣＡＭ  Ｄ  １２０と、マイクロプロセッサ１０３と、静的ランダムアクセスメモリ（static random-access memory：ＳＲＡＭ）１０８とを含み得る。
【００２７】
一実施形態によれば、ＴＣＡＭ  Ａ、ＴＣＡＭ  Ｂ、およびＴＣＡＭ  Ｃの各々は、ルックアップテーブルを含み得る。ＴＣＡＭ  ＢおよびＴＣＡＭ  Ｃにおけるルックアップテーブルは、図面に示されていない。ＴＣＡＭ  Ａにおけるルックアップテーブル（たとえばルックアップテーブルＡ  １２１）は、複数のフィールド／列と、複数の事前入力された記録／エントリとを含み得る。
【００２８】
一実施形態によれば、ルックアップテーブルＡにおける複数のフィールド／列は、現在の状態１２７と、キーＩＤ１２９と、キー１３１と、キーマスク１３２とを含み得る。キーフィールドにおける各値は、オーバーレイプロトコルにおける１つ以上のヘッダフィールドに対応するバイトを含み得る。たとえば、キーフィールドにおけるある値は、仮想拡張可能ＬＡＮ（Virtual Extensible LAN：ＶＸＬＡＮ）のデータパケットにおける外部ＩＰヘッダと、１つ以上の追加のヘッダフィールドとを表わすバイトであり得る。
【００２９】
一実施形態によれば、現在の状態フィールドにおける各値は、キーがどのプロトコル層に関連付けられているかを示すバイトであり得る。たとえば、現在の状態についてのある値は、Ｌ３レイヤーであり得る。
【００３０】
図１にさらに示すように、ネットワークデバイス１０１は、データパケット（たとえばデータパケット１０５）が受信され得る複数の入口ポート１０７を含み得る。ＳＲＡＭ１０８は、パケットパーサ１０９と、ステートマシン１１１と、キー合成プリミティブ１４１とを含み得る。それらは各々、アセンブリ命令で記述されたプログラムであり得る。
【００３１】
一実施形態によれば、ステートマシンは、データパケットの処理状態を追跡できる。パケットパーサは、データパケット１０５を受信し、処理状態を用いてステートマシンを更新するためにステートマシンと通信し、または、ステートマシンから処理状態を受信することができる。パケットパーサはさらに、キー合成プリミティブ１４１を呼び出し、デフォルトキー合成規則（図１には図示せず）、または、ＴＣＡＭ  Ｄ１２０における一致アクションテーブル１２５から構成されたキー合成規則構造１３６からの規則に基づいて、ルックアップキー１４０を構築することができる。
【００３２】
一実施形態によれば、ルックアップキーは、デフォルトキー合成規則、または、一致アクションテーブルにおける一致に基づくキー合成規則によって特定されるようにルックアップテーブル内へと提示され得る。特定されたルックアップテーブルにおけるルックアップキーとの記録一致は、一致アクションテーブル１２５における記録一致をもたらし得る。
【００３３】
一実施形態によれば、一致アクションテーブルにおける一致は、１つ以上のアクション、たとえば、次のルックアップテーブルを続けること、終了すること、および他の処理ステップを含み得る。これらのアクションに対応するのは、パケット処理の次のループ用のキー合成規則構造を構築する際に使用するための複数のフィールドであり得る。複数のフィールドは、次のキー（ルックアップキー）１３３と、次のルックアップキーを構築するためにどのバイトを選択すべきかを示すキーアレイ選択１３５と、次のルックアップテーブル用のＩＤ１３７とを含み得る。
【００３４】
一実施形態によれば、ＴＣＡＭ  Ａ、ＴＣＡＭ  Ｂ、ＴＣＡＭ  Ｃ、およびＴＣＡＭ  Ｄの各々は、頻繁に使用されるフローまたは性能に敏感なフローに関連付けられたフローエントリを格納するように構成された１つ以上のハードウェアベースのパーティションと、分類リソーススケーラビリティのために１つ以上の追加メモリに格納された大型ルックアップテーブルにアクセスするためのファームウェアベースのパーティションとを有する、複数のレベルの分類リソースパーティションを含む、分類リソース階層構造の一部であり得る。まず、ハードウェアベースのパーティションにおけるフローエントリ一致の検索のために、ルックアップキーが使用され得る。ミスがある場合、さらに他の検索のために、ルックアップキーはファームウェアベースのパーティションへ提示され得る。ファームウェアベースのレベルからの結果が、さらに他の処理のために、ハードウェアベースのパーサへ発送し返され得る。フローエントリは、フローエントリの利用に基づいて、パーティション管理ブロックによってルックアップテーブル間を動かされ得る。
【００３５】
一実施形態によれば、分類リソースのハードウェアベースのパーティションは、レベル１パーティションにおける１つ以上のＴＣＡＭと、レベル２パーティションにおける１つ以上のハッシュテーブルとを含み得る。ファームウェアベースのパーティションは、分類リソースのレベル３パーティションを表わすことができ、複数のネットワーク処理要素（processing element：ＰＥ）を含む埋込み型プロセッササブシステムを含み得る。各ＰＥは、完全なマイクロプロセッサ、またはマイクロコントローラ、またはステートマシンベースのハードウェアエンジンに基づき得る。
【００３６】
一実施形態によれば、パーティション管理ブロックは、所与の性能目標が満たされ得るように、分類リソースの各パーティションにおけるルックアップテーブルおよびフローエントリを効率的に管理するための、ハードウェアベースのアクションとファームウェアベースのアクションとの混合であり得る。システムは、ルックアップテーブルに関連する管理アクションを容易にするように複数の機能をサポートすることができる。
【００３７】
分類リソース階層構造は、ＴＣＡＭと、ハッシュテーブルと、外部メモリまたは遠隔メモリに接続されたファームウェアベースのサブシステムとの階層構造として区分された大量の分類リソースを、各レベルでキャッシングして管理し、スケーリングするために使用され得る。階層構造における各レベルはフローエントリを格納でき、スループット、待ち時間、および消費電力の点で異なり得る。ここに説明されるフレームワークは、インフィニバンドまたはイーサネットなどの基盤ネットワーキング技術のタイプから独立しており、複数のネットワーク技術に一律に適用され得る。
【００３８】
一実施形態によれば、上述のように、複数のハードウェアベースのプログラマブル分類プリミティブは、データパケットの処理が完了するまで、ある分類プリミティブからの結果が次の分類プリミティブへ供給されることにより、論理的につなぎ合わされ得る。
【００３９】
図２は、一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す。
【００４０】
図２に示すように、パケットパーサはデータパケット２２１を受信できる。この特定の例示では、データパケットはＶＸＬＡＮデータパケットである。システムは、ＶＸＬＡＮフォーマットのデータパケットに限定されておらず、複数の他のプロトコルまたは他のフォーマットのデータパケットを構文解析するために同様に使用され得る。
【００４１】
たとえば、システムは、最短経路ブリッジング（Shortest Path Bridging：ＳＰＢ）、たくさんのリンクの透過的相互接続（Transparent Interconnection of Lots of Link：ＴＲＩＬＬ）、ロケータ／ＩＤ分離プロトコル（Locator/ID Separation Protocol：ＬＩＳＰ）、汎用ルーティングカプセル化を使用するネットワーク仮想化（Network Virtualization using Generic Routing Encapsulation：ＮＶＧＲＥ）、および、ステートレス・トランスポート・トンネリング（Stateless Transport Tunnelling：ＳＴＴ）というプロトコルに基づいてデータパケットを構文解析するために使用され得る。
【００４２】
一実施形態によれば、ＶＸＬＡＮは、レイヤー３ネットワーク上のレイヤー２オーバーレイカプセル化プロトコルである。ＶＸＬＡＮは、ＭＡＣアドレス・イン・ユーザ・データグラム・プロトコル（MAC Address-in-User Datagram Protocol：MAC-in-UDP）カプセル化を使用して、レイヤー２セグメントをデータセンターネットワーク中に拡張するための手段を提供することができる。ＶＸＬＡＮは、共有される共通の物理インフラストラクチャ上でフレキシブルで大規模なマルチテナント環境をサポートするためのソリューションを提供する。物理データセンターネットワーク上のトランスポートプロトコルは、ＩＰプラスＵＤＰである。
【００４３】
図２に示すようなＶＸＬＡＮデータパケットでは、元のレイヤー２フレーム２３１が追加されたＶＸＬＡＮヘッダ２２９を有しており、外部ＩＰヘッダ２２５およびＵＤＰヘッダ２２７によって示されるようなＵＤＰ−ＩＰパケットに配置される。このMAC-in-UDPカプセル化とレイヤー２外部ＭＡＣヘッダ２２３とにより、ＶＸＬＡＮは、レイヤー３ネットワーク上にレイヤー２ネットワークをトンネリングすることができる。
【００４４】
一実施形態によれば、ＶＸＬＡＮデータパケットは、２４ビットのＶＮＩＤと複数の予約ビットとからなる８バイトのＶＸＬＡＮヘッダを含み得る。ＶＸＬＡＮヘッダは、元のイーサネットフレームとともに、ＵＤＰペイロードに配置され得る。２４ビットのＶＮＩＤは、レイヤー２セグメントを識別するために、および、セグメント間のレイヤー２絶縁を維持するために使用され得る。ＶＮＩＤにおける全２４ビットにより、ＶＸＬＡＮは１６００万個のＬＡＮセグメントをサポートすることができる。
【００４５】
一実施形態によれば、パケットパーサがＶＸＬＡＮデータパケットを受信すると、それは、１つ以上のレイヤー２ヘッダが処理されるべきであることを示す状態２３５を用いてステートマシンを更新することができる。デフォルトキー合成規則構造２４３が、到着ポートに基づいて導き出され得る。パケットパーサは、キー合成プリミティブを呼び出し（２３３）、ＴＣＡＭベースのルックアップテーブルＡ  １２１でルックアップを行なう際に使用するためのルックアップキー２４０を構築することができる。
【００４６】
たとえば、デフォルトキー合成規則構造は、キーＩＤ＝０；長さ＝８；キーアレイ選択＝バイト：０−５、バイト１６−１７という情報を含み得る。
【００４７】
一実施形態によれば、デフォルトテーブルＩＤ（たとえばルックアップテーブルＡ）および上述の情報が、キー｛port, mac da, vlan｝を構築するために使用され得る。ここで、「port」は、ＶＸＬＡＮデータパケットが受信されるポート番号であり、「mac da」は、媒体アクセス制御（media access control：ＭＡＣ）宛先アドレスであり、「vlan」は、バーチャルＬＡＮのタイプである。
【００４８】
図２にさらに示すように、ルックアップテーブルＡにおけるルックアップキーとの一致は、一致アクションテーブルにおける一致をもたらし得る。
【００４９】
たとえば、一致アクションテーブルにおける一致は、１つ以上のアクション２１５、たとえば「ユーザキー＃２＆継続；次のオフセット＝０」と、次のテーブルＩＤ２１９、たとえば「ルックアップテーブルＢ」と、キーアレイ選択２１１、たとえば、Ｌ３バイト：１３−２０、１１；Ｌ４バイト：０−３と、次のキーＩＤ２１３、たとえば、キー＃２とを含み得る。上述の情報は、データパケット処理の次のループで使用するためのキー合成規則構造２３６を構築するために使用され得る。
【００５０】
一実施形態によれば、ルックアップテーブルにおける一致がいったん見つかると、アクションを実行し、キー合成規則構造を構築するために、ＴＣＡＭにおける１つ以上の命令セットがトリガされ得る。
【００５１】
図３は、一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す。
【００５２】
一実施形態によれば、データパケット処理の次のループは、ステートマシンにおけるＬ３レイヤーの状態３３５によって反映されるようなＬ３レイヤー処理である。パケットパーサは、キー合成プリミティブを呼び出し（３３３）、図２で説明されたようにキー合成規則構造２３６を使用してルックアップキー３４０を構築することができる。
【００５３】
図３に示すように、ルックアップキー３４０は｛id2, ipsa, ipda, proto, sport, dport｝であってもよく、それはバイトアレイであり得る。ルックアップキーは、ＩＰソースアドレスについての「ipsa」と、ＩＰ宛先アドレスについての「ipda」と、ＵＤＰなどのプロトコルについての「proto」と、vxlanなどの宛先ポートについてのdportとを含み得る。「ipsa」、「ipda」、「proto」、「sport」、および「dport」は、ルックアップキーを構築するために使用されるキー合成規則構造２３６のキーアレイ選択における索引を使用して、ＶＸＬＡＮデータパケットのヘッダから選択された情報を表わし得る。「id2」は、キー合成プリミティブによって挿入されたルックアップキーのＩＤである。
【００５４】
一実施形態によれば、あるルックアップキーのＩＤが、そのルックアップキーを表わすバイトアレイに含まれる場合、そのルックアップキーは、データパケット処理の直前のループで使用されたルックアップテーブルと同じルックアップテーブルへ提示され得る。
【００５５】
たとえば、直前のループはルックアップテーブルＡを使用しているため、ルックアップキー３４０は、一致のために再度ルックアップテーブルＡへ提示され得る。
【００５６】
一実施形態によれば、ルックアップテーブルＡにおけるルックアップキー一致は、一致アクションテーブルにおける一致をもたらし得る。
【００５７】
図３に示すように、一致アクションテーブルにおける一致は、１つ以上のアクション３１５、たとえば「ユーザキー＃３＆ループ；次のオフセット＝８」と、次のテーブルＩＤ３１９、たとえば「ルックアップテーブルＡ」と、キーアレイ選択３１１、たとえば、バイト：５−７、８−１３、２３−３２と、次のキーＩＤ３１３、たとえば、キー＃３とを含み得る。上述の情報は、データパケット処理の次のループで使用するためのキー合成規則構造３３６を構築するために使用され得る。
【００５８】
図４は、一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するためのシステムをさらに示す。
【００５９】
図４に示すように、パケットパーサは、キー合成プリミティブを呼び出し（４３３）、図３で構成されたキーの合成規則構造に基づいて新たなルックアップキー４４０を構築することができる。
【００６０】
一実施形態によれば、ルックアップキー４４０は、キーＩＤ「id3」と、データパケットにおけるバイト位置を指す索引を有するバイト選択アレイに基づいてデータパケット２２１のヘッダから選択された複数の他のヘッダフィールドとを含み得る。バイトアレイによって表わされるルックアップキー４４０は当該キーのＩＤを含むため、ルックアップキーは、直前のループ（すなわち、図３で説明されたループ）で使用されたのと同じルックアップテーブル（すなわち、ルックアップテーブルＡ  １２１）へ提示され得る。
【００６１】
図４に示すように、図４のパケットパーサ１０９は、データパケット２２１の元のＬ２フレームでヘッダフィールドを処理することができ、それは、ステートマシン１１１における内部Ｌ２レイヤーの状態４３５によって示される。
【００６２】
一実施形態によれば、ルックアップキー４４０がルックアップテーブルＡへ提示され、ルックアップテーブルにおける記録と一致させられた後で、次のルックアップキーを合成する際に使用するために次のキーＩＤ４１３、次のキー用のキーアレイ選択４１１、および次のテーブルＩＤ４１９からキー合成規則構造６２６を構築することによって、元のＬ２フレーム２３１の再帰的構文解析を開始するために、一致アクションテーブルにおけるアクション４１５がトリガされ得る。
【００６３】
一実施形態によれば、データパケット構文解析の再帰的性質は、データパケットが完全に解析されるまで、または、パケット処理の次の段階を特定するアクション、たとえばパケット処理を終了することに遭遇した場合に、継続し得る。
【００６４】
図５は、一実施形態に従った、高性能ネットワークにおけるネットワークデバイスで使用するためのプログラマブルパケット分類フレームワークを提供するための方法を示す。
【００６５】
図５に示すように、ステップ５１１で、高性能ネットワークにおけるネットワークデバイスが提供される。ネットワークデバイスは、キー合成プリミティブと、キー合成規則プリミティブと、１つ以上のルックアップテーブルと、一致アクションテーブルとを含む、複数の分類プリミティブを含む。
【００６６】
ステップ５１３で、キー合成プリミティブによって、ルックアップキーが、キー合成規則プリミティブに基づいて構築される。
【００６７】
ステップ５１５で、ネットワークデバイスにおけるルックアップテーブルにおいて、ルックアップキーとの一致が検出される。
【００６８】
ステップ５１７で、一致アクションテーブルにおける一致に関連付けられた１つ以上のアクションがトリガされる。一致アクションテーブルにおける一致は、次のルックアップキーを構築する際に使用するための情報に関連付けられている。
【００６９】
インフィニバンド（登録商標）
インフィニバンド（登録商標）（ＩＢ）は、上述のシステムおよび方法が使用され得る例示的な高性能ネットワークである。
【００７０】
インフィニバンド（登録商標）は、インフィニバンド・トレード・アソシエーション（InfiniBandTM Trade Association）によって開発されたオープン標準無損失ネットワーク技術である。この技術は、特に高性能コンピューティング（high-performance computing：ＨＰＣ）アプリケーションおよびデータセンタを対象とする、高スループットおよび短い待ち時間の通信を提供するシリアルポイントツーポイント全二重相互接続（serial point-to-point full-duplex interconnect）に基づいている。
【００７１】
インフィニバンド・アーキテクチャ（InfiniBandTM Architecture：ＩＢＡ）は、２層トポロジー分割をサポートする。より低い層では、ＩＢネットワークはサブネットと称され、１つのサブネットは、スイッチおよびポイントツーポイントリンクを使用して相互接続される一組のホストを含み得る。より高いレベルでは、１つのＩＢファブリックは、ルータを使用して相互接続され得る１つ以上のサブネットを構成する。
【００７２】
１つのサブネット内で、ホストは、スイッチおよびポイントツーポイントリンクを使用して接続され得る。加えて、サブネットにおける指定されたデバイス上に存在する、１つのマスター管理エンティティ、すなわちサブネットマネージャ（subnet manager：ＳＭ）があり得る。サブネットマネージャは、ＩＢサブネットを構成し、起動し、維持する役割を果たす。加えて、サブネットマネージャ（ＳＭ）は、ＩＢファブリックにおいてルーティングテーブル計算を行なう役割を果たし得る。ここで、たとえば、ＩＢネットワークのルーティングは、ローカルサブネットにおけるすべての送信元と宛先とのペア間の適正な負荷分散を目標とする。
【００７３】
サブネット管理インターフェイスを通して、サブネットマネージャは、サブネット管理パケット（subnet management packet：ＳＭＰ）と称される制御パケットを、サブネット管理エージェント（subnet management agent：ＳＭＡ）と交換する。サブネット管理エージェントは、すべてのＩＢサブネットデバイス上に存在する。ＳＭＰを使用することにより、サブネットマネージャは、ファブリックを発見し、エンドノードおよびスイッチを構成し、ＳＭＡから通知を受信することができる。
【００７４】
一実施形態によれば、ＩＢネットワークにおけるサブネット内ルーティングは、スイッチに格納されたＬＦＴに基づき得る。ＬＦＴは、使用中のルーティングメカニズムに従って、ＳＭによって計算される。サブネットでは、エンドノードおよびスイッチ上のホストチャネルアダプタ（Host Channel Adapter：ＨＣＡ）ポートが、ローカル識別子（local identifier：ＬＩＤ）を使用してアドレス指定される。ＬＦＴにおける各エントリは、宛先ＬＩＤ（destination LID：ＤＬＩＤ）と出力ポートとからなる。テーブルにおけるＬＩＤごとに１つのエントリのみがサポートされる。パケットがあるスイッチに到着すると、その出力ポートは、そのスイッチのフォワーディングテーブルにおいてＤＬＩＤを探すことによって判断される。パケットはネットワークにおいて所与の送信元−宛先ペア（ＬＩＤペア）間で同じ経路を通るため、ルーティングは決定論的である。
【００７５】
一般に、マスターサブネットマネージャを除く他のすべてのサブネットマネージャは、耐故障性のために待機モードで作動する。しかしながら、マスターサブネットマネージャが故障した状況では、待機中のサブネットマネージャによって、新しいマスターサブネットマネージャが取り決められる。マスターサブネットマネージャはまた、サブネットの周期的なスイープ（sweep）を行なってあらゆるトポロジー変化を検出し、それに応じてネットワークを再構成する。
【００７６】
さらに、サブネット内のホストおよびスイッチは、ローカル識別子（ＬＩＤ）を使用してアドレス指定可能であり、単一のサブネットは、４９１５１個のユニキャストＬＩＤに制限可能である。サブネット内で有効なローカルアドレスであるＬＩＤの他に、各ＩＢデバイスは、６４ビットのグローバル一意識別子（global unique identifier：ＧＵＩＤ）を有し得る。ＧＵＩＤは、ＩＢレイヤー３（Ｌ３）アドレスであるグローバル識別子（global identifier：ＧＩＤ）を形成するために使用され得る。
【００７７】
ＳＭは、ネットワーク初期化時間に、ルーティングテーブル（すなわち、サブネット内のノードの各ペア間の接続／ルート）を計算し得る。さらに、トポロジーが変化するたびに、ルーティングテーブルは、接続性および最適性能を確実にするために更新され得る。通常動作中、ＳＭは、トポロジー変化をチェックするためにネットワークの周期的なライトスイープ（light sweep）を実行し得る。ライトスイープ中に変化が発見された場合、または、ネットワーク変化を信号で伝えるメッセージ（トラップ）をＳＭが受信した場合、ＳＭは、発見された変化に従ってネットワークを再構成し得る。
【００７８】
たとえば、ＳＭは、リンクがダウンした場合、デバイスが追加された場合、またはリンクが除去された場合など、ネットワークトポロジーが変化する場合に、ネットワークを再構成し得る。再構成ステップは、ネットワーク初期化中に行なわれるステップを含み得る。さらに、再構成は、ネットワーク変化が生じたサブネットに制限されるローカルスコープを有し得る。また、ルータを用いる大型ファブリックのセグメント化は、再構成の範囲を制限し得る。
【００７９】
一実施形態に従ったインフィニバンド環境の例示を示す図１に、例示的なインフィニバンドファブリックを示す。図６に示す例では、ノードＡ６０１〜Ｅ６０５は、インフィニバンドファブリック６２０を使用して、それぞれのホストチャネルアダプタ６１１〜６１５を介して通信する。一実施形態によれば、さまざまなノード、たとえばノードＡ６０１〜Ｅ６０５は、さまざまな物理デバイスによって表わされ得る。一実施形態によれば、さまざまなノード、たとえばノードＡ６０１〜Ｅ６０５は、仮想マシンなどのさまざまな仮想デバイスによって表わされ得る。
【００８０】
本発明は、本開示の教示に従ってプログラムされる１つ以上のプロセッサ、メモリ、および／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して、便利に実現され得る。ソフトウェア技術に精通した当業者には明らかであるように、適切なソフトウェアコーディングが、本開示の教示に基づいて、熟練したプログラマによって容易に準備され得る。
【００８１】
いくつかの実施形態では、本発明は、本発明のプロセスのいずれかを実行するようにコンピュータをプログラムするために使用され得る命令が格納されている非一時的な記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および磁気光ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、（分子メモリＩＣを含む）ナノシステムを含む任意のタイプのディスク、もしくは、命令および／またはデータを格納するのに適した任意のタイプの媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００８２】
この発明の実施形態の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。当業者には、多くの修正および変形が明らかであろう。修正および変形は、開示された特徴のあらゆる関連する組合せを含む。実施形態は、この発明の原理およびその実際的な適用を最良に説明するために選択および説明されたものであり、それにより、他の当業者が、特定の使用に適したさまざまな修正を考慮して、さまざまな実施形態についてこの発明を理解することを可能にする。
【図１】
2020502829.tif 000003
【図２】
2020502829.tif 000004
【図３】
2020502829.tif 000005
【図４】
2020502829.tif 000006
【図５】
2020502829.tif 000007
【図６】
2020502829.tif 000008
【国際調査報告】
2020502829.tif 000009
2020502829.tif 000010