(57)【特許請求の範囲】
【請求項１】
１次テーブルと２次テーブルとを有するルックアップメモリであって、前記２次テーブルがターナリ（ｔｅｒｎａｒｙ）ルールの第１のセットを含み、前記１次テーブルがバイナリ（ｂｉｎａｒｙ）ルールのセットを含み、各バイナリルールが、ターナリルールの第２のセットからの少なくとも１つのターナリルールのバイナリバージョンである、前記ルックアップメモリと、
前記ルックアップメモリに結合されるサーチエンジンと、
を含む装置であって、
前記サーチエンジンが、
データワードを受信するように構成されるコントローラと、
前記ルックアップメモリと前記コントローラとに結合されるハッシュロジックと、
を含み、
前記ハッシュロジックが、各データワードが前記バイナリルールの少なくとも１つに整合するかを判定するために前記１次テーブルのバイナリサーチを実行するように構成され、ハッシュロジックと１次テーブルとによる非整合がある場合、前記サーチエンジンが、前記非整合に関連付けられる前記データワードがターナリルールの前記第１のセットからの前記ターナリルールの少なくとも１つに整合するかを判定するために前記２次テーブルのターナリサーチを実行するように構成される、装置。
【請求項２】
請求項１に記載の装置であって、
前記１次テーブルが、ダイナミックメモリとスタッシュ（ｓｔａｓｈ）メモリとを更に含む、装置。
【請求項３】
請求項２に記載の装置であって、
前記スタッシュメモリがＣＡＭ（ｃｏｎｔｅｘｔ−ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）である、装置。
【請求項４】
請求項３に記載の装置であって、
前記ダイナミックメモリがスタティックランダムアクセスメモリ（ＳＲＡＭ）である、装置。
【請求項５】
請求項４に記載の装置であって、
前記２次テーブルがターナリＣＡＭ（ＴＣＡＭ）を更に含む、装置。
【請求項６】
請求項４に記載の装置であって、
前記装置が、
共有メモリと、
複数のポートマネージャと、
を更に含み、
各ポートマネージャが、
入力データパケットを受信するように構成され、前記共有メモリと前記サーチエンジンとに結合される、通信回路要素と、
前記通信回路要素に結合されるパーサと、
を含み、
前記パーサが、各入力データパケットをパースし、そのヘッダーを抽出するように構成され、各データワードが少なくとも１つのヘッダーに関連付けられる、装置。
【請求項７】
請求項６に記載の装置であって、
前記装置が、前記サーチエンジンと通信するアクションテーブルを更に含む、装置。
【請求項８】
請求項７に記載の装置であって、
前記通信回路要素が、
前記パーサに結合される媒体アクセスコントローラ（ＭＡＣ）と、
前記共有メモリと前記ＭＡＣとの間に結合される送信パイプラインと、
前記共有メモリと前記ＭＡＣとの間に結合される受信パイプラインと、
前記パーサと前記サーチエンジンとの間に結合されるサーチインタフェースと、
を更に含む、装置。
【請求項９】
請求項８に記載の装置であって、
前記ハッシュロジックが、鍵付きハッシュ関数を各データワードに適用する、装置。
【請求項１０】
方法であって、
複数のパケットを受け取ることであって、各パケットがボディとヘッダーとを有する、前記複数のパケットを受け取ることと、
そのヘッダーを抽出するために各パケットをパースすることと、
ハッシュ関数を各ヘッダーに適用することと、
各ハッシュされたヘッダーを１次テーブル内にストアされた複数のバイナリルールと比較することであって、各バイナリルールがターナリルールの第１のセットからの少なくとも１つのターナリルールのバイナリバージョンである、前記比較することと、
前記複数のルールとの各非整合に対して、各非整合に関連付けられるヘッダーを用いて２次テーブルを検索することであって、前記２次テーブルがターナリルールの第２のセットを含む、前記検索することと、
を含む、方法。
【請求項１１】
請求項１０に記載の方法であって、
前記１次テーブルがＳＲＡＭとＣＡＭとを更に含む、方法。
【請求項１２】
請求項１１に記載の方法であって、
前記２次テーブルがＴＣＡＭである、方法。
【請求項１３】
請求項１２に記載の方法であって、
前記２次テーブルを検索する工程が、前記ＴＣＡＭ内の複数のバンクを同時に検索することを更に含む、方法。
【請求項１４】
請求項１１に記載の方法であって、
前記方法が、
各非整合に対して新しいルールと新しいアクションとを生成することと、
前記新しいルールと新しいアクションとを前記ＳＲＡＭにストアすることと、
を更に含む、方法。
【請求項１５】
請求項１４に記載の方法であって、
前記ハッシュ関数が鍵付きハッシュ関数である、方法。
【請求項１６】
バイナリルールのセットを含む１次テーブルであって、各バイナリルールがターナリルールの第１のセットからの少なくとも１つのターナリルールのバイナリバージョンである、前記１次テーブルと、
ターナリルールの第２のセットを含む２次テーブルと、
スイッチング回路であって、
共有メモリと、
サーチエンジンであって、
データワードを受け取るように構成されるコントローラと、
ルックアップメモリと前記コントローラとに結合されるハッシュロジックであって、各データワードが前記バイナリルールの少なくとも１つと整合するかを判定するために前記１次テーブルのバイナリサーチを行なうように構成され、ハッシュロジックと１次テーブルとによる非整合がある場合に、前記サーチエンジンが、前記非整合に関連するデータワードが前記ターナリルールの第２のセットからの少なくとも１つのターナリルールと整合するかを判定するように構成される、前記ハッシュロジックと、
を含む、前記サーチエンジンと、
複数のポートマネージャであって、各々が前記サーチエンジンと通信する、前記複数のポートマネージャと、
を含む、スイッチング回路と、
前記スイッチング回路と通信する入出力（Ｉ／Ｏ）回路と、
を含む、装置。
【請求項１７】
請求項１６に記載の装置であって、
前記１次テーブルがＳＲＡＭとＣＡＭとを更に含む、装置。
【請求項１８】
請求項１７に記載の装置であって、
入力データパケットを受け取るように前記Ｉ／Ｏ回路に結合されるＭＡＣと、
前記共有メモリと前記ＭＡＣとの間に結合される送信パイプラインと、
前記共有メモリと前記ＭＡＣとの間に結合される受信パイプラインと、
前記受信パイプラインに結合されるパーサであって、各入力データパケットをパースしてそのヘッダを抽出するように構成され、各データワードが少なくと１つのヘッダに関連付けられる、前記パーサと、
前記パーサと前記サーチエンジンとの間に結合されるサーチインターフェースと、
を更に含む、装置。
【請求項１９】
請求項１８に記載の装置であって、
前記Ｉ／Ｏ回路が、
複数の物理層（ＰＨＹ）回路であって、各ＰＨＹ回路が前記スイッチング回路と通信する、前記複数のＰＨＹ回路と、
複数のポートであって、各ポートが前記ＰＨＹ回路の少なくと１つと通信する、前記複数のポートと、
を更に含む、装置。
【請求項２０】
請求項１９に記載の装置であって、
前記２次テーブルがＴＣＡＭを更に含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概してパケットスイッチングに関し、更に特定して言えば、トップオブラック（ＴＯＲ）スイッチに関連する。
【背景技術】
【０００２】
図１は、パケットスイッチングネットワークのための従来の配路モデルを図示する。このモデルでは、コアネットワーク１１２が、コアルータ１０４−１〜１０４−Ｎを介してインターネット１０２で通信する。コアネットワーク１１２は概して、中間スイッチ１０６−１〜１０６−Ｍを用いてコアルータ１０４−１〜１０４−Ｎと通信する。通常、２つの中間スイッチ（即ち、１０６−１及び１０６−２）がコアルータ（即ち、１０４−１）と通信する。中間スイッチ１０６−１〜１０６−Ｍはその後、各々各アグリゲートスイッチ１０８−１〜１０８−Ｋと通信することができ、これらは、各々ＴＯＲスイッチ１１０−１〜１１０−Ｌと通信する。これらのＴＯＲスイッチ１１０−１〜１１０−Ｌはその後、各々幾つかの（即ち、２０個の）サーバーと通信し得る。
【０００３】
ここで注目するのは、ＴＯＲスイッチ１１０−１〜１１０−Ｋであり、ＴＯＲスイッチ（これは１１０で示す）の一例の図を図２及び図３で見ることができる。通常、データセンターの一部として、サーバーが「ラック」に保持され、ＴＯＲスイッチ１１０が、フォワーディングスイッチとして動作するようにラック内（典型的に頂部に）に配置される。図示するように、このＴＯＲスイッチ１１０は概して、プロセッサ２０２、スイッチング回路２０４、ターナリＴＣＡＭ（ｔｅｒｎａｒｙ  ｃｏｎｔｅｘｔ−ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）メモリ２１０、及び入力／出力（Ｉ／Ｏ）回路要素（これは概して、物理層（ＰＨＹ）回路２０６−１〜２０６−Ｊ及びポート２０８−１〜２０８−Ｐを含む）で構成され、スイッチング回路２０４は、入力キュー３０２、パーサ３０４、サーチエンジン３０６、プロセッサインタフェース３０８、アクション回路３１０、及び出力キュー３１２を概して含む。オペレーションにおいて、データパケット（これは各々概してヘッダー及びボディを有する）がポート２０８−１〜２０８−Ｐ及びＰＨＹ回路２０６−１〜２０６−Ｊを介して受信される。これらのパケットは入力キュー３０２（これは典型的に、先入れ先出し（ＦＩＦＯ）回路である）にストアされ、パーサ３０４は、これらのキューされたパケットからヘッダーを抽出することができる。抽出されたヘッダーを用いて、サーチエンジン２１０は、ヘッダーに関連付けられるルールを判定するためＴＣＡＭ２１０を検索することができ、各ルールが或るアクションに関連付けられている。識別されると、アクション回路は、アクションに関連付けられた識別されたルールに従ってパケット（通常はヘッダー）を改変する。改変されたパケットはその後、送信されるべく出力キュー３１２（これは、典型的にＦＩＦＯ回路である）に置かれる。
【０００４】
サーチエンジン３０６は、ＴＣＡＭ２１０を用いてパケットルックアップを実行する。ＴＣＡＭ２１０は、ターナリパケット−フォワーディングルール（即ち、アクセス制御リスト、宛先ＩＰルール、及びネットフロールール）の大きなデータベースにわたる整合を可能にする高速メモリである。だが、ＴＣＡＭ２１０は、他のメモリタイプ（ＳＲＡＭ又は埋め込みＤＲＡＭなど）に較べて数倍の電力及び領域を消費するため、大きなＴＣＡＭをオンチップで埋め込むことが困難となっている。その結果、ＴＯＲスイッチ１１０−１〜１１０−Ｌがフォワーディングルールを設定するため、ＴＯＲスイッチ１１０−１〜１１０−Ｌは、電力及び領域の不利益を受けるだけでなく、柔軟性も制限される。従って、低コストであり一層高い柔軟性を備えた、改善されたＴＯＲスイッチが求められている。
【０００５】
幾つかの他の従来のシステムは下記文献に記載されている。
【特許文献１】米国特許番号第７，０２８，０９８号
【特許文献２】米国特許番号第７，２３４，０１９号
【特許文献３】米国特許番号第７，３８２，７８７号
【特許文献４】米国特許公開番号２００５／０２６２２９４
【特許文献５】米国特許公開番号２０１１／０１６１５８０
【非特許文献１】Mysore et al., "PortLand: A Scalable Fault-Tolerant layer 2 DataCenter Network Fabric," SIGCOMM 2009, August 17-21, 2009.
【発明の概要】
【０００６】
例示の一実施例は或る装置を提供する。この装置は、一次テーブル及び二次テーブルを有するルックアップメモリ、及びルックアップメモリに結合されるサーチエンジンを含む。二次テーブルがターナリ（ternary）ルールの第１のセットを含み、一次テーブルがバイナリ（binary）ルールのセットを含み、各バイナリルールが、ターナリルールの第２のセットからの少なくとも１つのターナリルールのバイナリバージョンである。サーチエンジンは、データワードを受信するように構成されるコントローラと、ルックアップメモリ及びコントローラに結合されるハッシュロジックとを含む。ハッシュロジックは、各データワードがバイナリルールの少なくとも１つに整合するかを判定するため、一次テーブルのバイナリサーチを実行するように構成され、ハッシュロジック及び一次テーブルによる非整合がある場合、サーチエンジンが、非整合に関連付けられるデータワードがターナリルールの第１のセットからのターナリルールの少なくとも１つに整合するかを判定するため、二次テーブルのターナリサーチを実行するように構成される。
【０００７】
一実施例に従って、一次テーブルが、ダイナミックメモリ及びスタッシュ（ｓｔａｓｈ）を更に含む。
【０００８】
一実施例に従って、スタッシュがＣＡＭ（ｃｏｎｔｅｘｔ−ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）である。
【０００９】
一実施例に従って、ダイナミックメモリが、スタティックランダムアクセスメモリ（ＳＲＡＭ）である。
【００１０】
一実施例に従って、二次テーブルがターナリＣＡＭ（ＴＣＡＭ）を更に含む。
【００１１】
一実施例に従って、この装置は、共有メモリ、複数のポートマネージャ、及び通信回路要素に結合されるパーサを更に含む。各ポートマネージャが、入力データパケットを受信するように構成され、且つ、共有メモリ及びサーチエンジンに結合される、通信回路要素を含む。パーサが、各入力データパケットをパースし、そのヘッダーを抽出するように構成され、各データワードが少なくとも１つのヘッダーに関連付けられる。
【００１２】
一実施例に従って、この装置は、サーチエンジンと通信するアクションテーブルを更に含む。
【００１３】
一実施例に従って、通信回路要素は、 パーサに結合される媒体アクセスコントローラ（ＭＡＣ）、共有メモリとＭＡＣとの間に結合される送信パイプライン、共有メモリとＭＡＣとの間に結合される受信パイプライン、及びパーサとサーチエンジンとの間に結合されるサーチインタフェースを更に含む。
【００１４】
一実施例に従って、ハッシュロジックは、鍵付きハッシュ関数を各データワードに適用する。
【００１５】
一実施例に従って或る方法が提供される。この方法は、各パケットがボディ及びヘッダーを有する複数のパケットを受け取ること、そのヘッダーを抽出するため各パケットをパースすること、ハッシュ関数を各ヘッダーに適用すること、各ハッシュされたヘッダーを一次テーブル内にストアされた複数のバイナリルールと比較することであって、各バイナリルールが、ターナリルールの第１のセットからの少なくとも１つのターナリルールのバイナリバージョンであること、及び複数のルールとの各非整合に対して、各非整合に関連付けられるヘッダーを用いて二次テーブルを検索することを含み、二次テーブルがターナリルールの第２のセットを含む。
【００１６】
一実施例に従って、二次テーブルを検索することが、ＴＣＡＭ内の複数のバンクを同時に検索することを更に含む。
【００１７】
一実施例に従って、この方法が、各非整合に対して新しいルール及び新しいアクションを生成すること、及び新しいルール及び新しいアクションをＳＲＡＭにストアすることを更に含む。
【００１８】
一実施例に従って、ハッシュ関数は鍵付きハッシュ関数である。
【００１９】
一実施例に従って或る装置が提供される。この装置は、バイナリルールのセットを含む一次テーブル、ターナリルールの第１のセットを含む二次テーブル、スイッチング回路、及びスイッチング回路と通信する入力／出力（Ｉ／Ｏ）回路を含む。各バイナリルールは、ターナリルールの第１のセットからの少なくとも１つのターナリルールのバイナリバーションである。スイッチング回路は、共有メモリと、サーチエンジンと、各々サーチエンジンと通信する複数のポートマネージャとを有する。サーチエンジンは、データワードを受信するように構成されるコントローラ、及びルックアップメモリとコントローラとに結合されるハッシュロジックを含む。ハッシュロジックは、各データワードがバイナリルールの少なくとも１つに整合するかを判定するために、一次テーブルのバイナリサーチを実行するように構成され、ハッシュロジックと一次テーブルによる非整合がある場合、サーチエンジンは、非整合に関連付けられるデータワードがターナリルールの第１のセットからのターナリルールの少なくとも１つのターナリルールに整合するかを判定するために、二次テーブルのターナリサーチを実行するように構成される。
【００２０】
一実施例に従って、Ｉ／Ｏ回路要素は、複数の物理層（ＰＨＹ）回路及び複数のポートを更に含み、各ＰＨＹ回路がスイッチング回路と通信し、各ポートがＰＨＹ回路の少なくとも１つと通信する。
【図面の簡単な説明】
【００２１】
例示の実施例を添付の図面を参照して説明する。
【００２２】
【図１】図１は、スイッチドパケットネットワークのための従来の配路モデルを図示する。
【００２３】
【図２】図２は、図１の従来のＴＯＲスイッチを図示する。
【００２４】
【図３】図３は、図２のＴＯＲスイッチからのスイッチング回路を図示する。
【００２５】
【図４】図４は、本発明の原理の一実施例に従って配路モデルの一例を図示する。
【００２６】
【図５】図５は、図４のＴＯＲスイッチの一例を図示する。
【００２７】
【図６】図６は、図５のＴＯＲスイッチからのスイッチング回路の一例を図示する。
【００２８】
【図７】図７は、図６のスイッチング回路のポートマネージャの一例を図示する。
【００２９】
【図８】図８は、図５及び図６のサーチエンジン及びルックアップメモリの例を図示する。
【図９】図９は、図５及び図６のサーチエンジン及びルックアップメモリの例を図示する。
【００３０】
【図１０】図１０は、パケット記述子の一例を図示する。
【００３１】
【図１１】図１１は、図５のアクションテーブルの一例を図示する。
【００３２】
【図１２】図１２は、ルックアップ記述子の一例を図示する。
【００３３】
【図１３】図１３は、バッファ記述子の一例を図示する。
【発明を実施するための形態】
【００３４】
ネットワーク柔軟性を高めるため、新たなイーサネットネットワーク規格が開発されてきている。この規格は、オープンフロースイッチコンソーシアムによるオープンフロープロトコル、及びバージョン１．１．０として知られており（これは２０１１年２月２８日にリリースされた）、あらゆる目的のため参照によりここに組み込まれている。図４において、この新たな規格のための配路モデルの一例を見ることができる。図示するように、このモデルは、ＴＯＲスイッチ４００−１〜４００−Ｌを制御することが可能なネットワークコントローラ４０１があることを除き、図１に示すモデルに類似する。ネットワークコントローラ４０１は、他の特徴（アグリゲートスイッチ内のものなど）を制御し得るが、これらの制御は簡潔にするためここでは省略されている。この構成では、ネットワークコントローラ４０１は、フォワーディングルールを設定することができ、ＴＯＲスイッチ４００−１〜４００−Ｌはスイッチングを実行する。これによりデータセンターがそれら自体の配路及びフロー管理プロトコルを実装することが可能となる。
【００３５】
ＴＣＡＭの強い依存は、ＴＯＲスイッチ４００−１〜４００−Ｌを用いることで避けられ得るが、ＴＣＡＭへの依存を低減するようにハードウェアメモリにおけるデータ構造を設計することを試みることは困難となり得る。このようなアーキテクチャを用いるシステムは効率が悪い（実際のアドレスをストアするために用いられるより多くのメモリを浪費する）可能性があり、そのため、これを実装することができるように、ＴＯＲスイッチ４００−１〜４００−Ｌ（図５において４００で示す）は、ルックアップメモリ４０４（これは概して、一次テーブル４０６及び二次テーブル４０８を有する）と通信することが可能なスイッチング回路４０２（これは典型的に、集積回路又はＩＣである）を用いる。二次テーブル４０８は概してターナリエントリをストアし、一次テーブル４０６は概してバイナリエントリをストアする。これによりスイッチング回路４０２（これは、図６〜図１３に詳細に示す）が「一次」サーチを実行し、一次テーブル４０６を用いてより一般的な事象を検索すること、そして、「一次」サーチが失敗すると、二次テーブル４０８を用いて「二次」サーチを実行することが可能となる。
【００３６】
まず、スイッチング回路４０２のポートマネージャ５０８−１〜５０８−Ｊに移ると、例示の実装を図７で見ることができる（これは５０８で示す）。これらのポートマネージャ５０８−１〜５０８−Ｊは、双方向リンク（これは、例えば、２０１０年６月２５日のＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）規格８０２．１１ａｐ及び２０１０年６月２２日ＩＥＥＥ規格８０２．１１ｂａに記載される、１０ＧＢａｓｅ−ＫＲ又は４０ＧＢａｓｅ−ＫＲなどであり得る）をＰＨＹ（即ち、２０６−１）に媒体アクセスコントローラ又はＭＡＣ６１０を介して提供する。このＭＡＣ６１０は、送信パイプライン（これは、送信共有バッファインタフェース６０２及び送信先入れ先出し（ＦＩＦＯ）メモリ及びコントローラ６０４を概して含む）及び受信パイプライン（これは、受信共有バッファインタフェース６０６及び受信ＦＩＦＯ及びコントローラ６０８を概して含む）を介して共有メモリ５０２に結合される。また、スイッチング回路４０２のためのサーチ構造の一部として、ポートマネージャ５０８−１〜５０８−Ｊは更に、受信パイプラインと相互作用又は通信する、パケットＦＩＦＯ及びコントローラ６１２、ヘッダーリプレーサ６１４、パーサ６１６、及びサーチインタフェースを含む。
【００３７】
まず受信したパケットの扱いを見ると、パケットはまず、ポートマネージャ５０８−１〜５０８−Ｊの一つのＭＡＣ６１０により受信される。各受信したパケットは一時的に受信ＦＩＦＯ及びコントローラ６０８にストアされる。各パケットに対し、各パケットのためのパケット記述子８００がつくられて受信共有バッファインタフェース６０６にストアされる一方、パケットは共有メモリ５０２に転送される。これらのパケット記述子８００（その一例を図１０で見ることができる）は概して、次のパケット記述子ポインタフィールド８０２（これは、次の又は後続のパケットのためパケット記述子を示す）、バッファ記述子ポインタ８０４、パケット長さ８０６、及びアクションセットポインタ８０８を含み、共有メモリ５０２により用いられるバッファ記述子１１００との関連を提供する。バッファ記述子１１００（その一例を図１３で見ることができる）は概して、共有メモリ５０２内のパケットに対する「アドレス」であり、バッファ記述子識別子フィールド１１０２、リンキング情報フィールド１１０４（これは概して、インタフェース６０６内のダイレクトメモリアクセスコントローラにより書き込まれる）、バッファポインタフィールド１１０６（これは概してパケットコンテンツへのポインタである）、次のポインタフィールド１１０８（これは概して、次のバッファ記述子である）、及び長さフィールド１１１０（これは概して、共有メモリ５０２において用いられるバッファの長さである）を概して含む。
【００３８】
パケットが共有メモリ５０２にストアされている一方で、パケットヘッダーに関連付けられるルックアップ又はサーチも実行される。各パケットが受信ＦＩＦＯ及びコントローラ６０８に渡されるとき、パーサ６１６（これは、概してプログラム可能である）は更にパケットを受け取り、連結されたヘッダーフィールドのストリングを構築するように各パケットに対するパケットヘッダーを抽出する。ルックアップ記述子１０００（その一例を図１２に示す）がその後、各パケットに対して形成され得、サーチインタフェース６１８にストアされ得る。ルックアップ記述子１０００は、パケット記述子ポインタフィールド１００２（これは概して関連するパケット記述子８００を指示する）、バッファ記述子ポインタフィールド１００４（これは概して関連するバッファ記述子１１００を指示する）、整合フィールド１００８（これは概して、パーサ６１６からの連結されたヘッダーフィールドである）、及びアクションセット９０２（これは、概してパケットで実行されるべきアクションのセットである）を概して含む。パケットに対する（図１１の例において図示するような）アクションセット９０２−１〜９０２−Ｔは更に、概してアクションテーブル５１０にストアされ、サーチエンジン５０６により更新される。
【００３９】
各パケットに対するルックアップ記述子１０００に基づいて、サーチエンジン５０６は、取るべき適切なアクションを判定するためサーチを実行することができる。これを行うため、サーチエンジン５０６は、「一次」バイナリエントリサーチには一次テーブル４０６を、「二次」ターナリエントリサーチには二次テーブル４０８を用いる。通常、「一次」サーチ（これは通常、「二次」経路より「電力消耗」が少ない）の後には、「一次」サーチが失敗した場合に「二次」サーチが続く。そのため、一次テーブルは、二次テーブルの利用を制限することにより電力消費を低減するフィルタとして考えることができる。典型的に、ターナリルールが二次テーブル４０８−Ａにストアされ得、ダイナミックメモリ４１０は実際のパケットに見られるターナリルールのバイナリバージョンをストアすることができる。バイナリエントリがストアされるダイナミックメモリ４１０の位置は、バイナリエントリにハッシュ関数を実行することにより演算され得る。これは、各フローに対し個別のパケットの到達よりずっと小さな頻度で新しいフローが開始されるという見通しにより駆動される。そのため、ハッシュテーブル内のフローセットアップが桁違いに遅いペースで成され得る。
【００４０】
「一次」経路で、バイナリルールのための一次テーブル４０６に対するサーチがハッシュロジック７０４を用いて実行され、ここで、ダイナミックメモリ４１０は、バイナリルールをスタッシュ４１２と共にストアする。スタッシュ４１２の目的は、複数のエントリが偶然同一のハッシュ関数出力を生成するとき衝突したエントリをストアすることである。１つ又は複数のメモリアレイ又はバンク（例えば、図８及び図９に示すスタティックランダムアクセスメモリ（ＳＲＡＭ）４１４−１〜４１４−１又はエンベディッドダイナミックランダムアクセスメモリ（ｅＤＲＡＭ））は、ダイナミックメモリ４１０を含み得、スタッシュ４１２は概してＣＡＭ４１６で構成される。典型的に、コントローラ７０２は、ルックアップ記述子（即ち、１０００）に基づいてデータワードをハッシュロジック７０４に適用する。ハッシュロジック７０４は、ハッシュ関数（これはセキュリティの目的のため鍵付きであり得る）をルックアップ記述子の整合フィールド（１００８）に適用して、ダイナミックメモリ４０６のバイナリサーチが実行され得るようにする。ハッシュロジック７０４は概して、独立したハッシュ関数を有する複数のサブテーブル４１４−１〜４１４−１を備えたマルチレベルハッシュテーブルを実装する。典型的に、ダイナミックメモリ４０６は、整合フィールドを優先度と関連付けるエントリ（これはルールと呼ぶことができる）を有するテーブルをストアする。整合はその後、各サブテーブルのため戻され得る。また、例示の整合フィールドのリストを下記表１で見ることができる。
【表１】
0005921666.tif 000002
【００４１】
上述のように、ハッシュロジック７０４はセキュリティの目的のため鍵付きであり得る。一例として、ハッシュロジック７０４は概して、ハッシュ関数ｈ１〜ｈｄを有するサブテーブルＴ１〜Ｔｄを備えたマルチレベルハッシュテーブルを実装する。サブテーブルＴｗを備えたバイナリストリングｘ上の鍵付きハッシュは例えば下記であり得る。
（１）  ｈｗ（ｘ）＝（（ａｗｘ+ｂｗ）ｍｏｄＰ）ｍｏｄＮｗ
ここで、Ｐは、鍵ペアに対するａｗ及びｂｗ（これらは各々Ｐより小さい）である、大きな素数であり、ＮｗはサブテーブルＴｗにおける最大数のエントリである。サブテーブルＴ１〜Ｔｄに対する並列サーチがその後実行され得る。
【００４２】
維持の一部として、一次テーブル４０６、ハッシュロジック７０４は更に、バイナリストリング又はルールを一次テーブル４０６に付加することもできる。バイナリテーブルエントリ又はバイナリストリングｘ（例えば）を一次テーブル４０６に付加するため、各サブテーブルｗに対してハッシュ関数ｈｗ（ｘ）が計算され、ストリングｘを、その位置が空いているときサブテーブルｗのいずれかの位置ｈｗ（ｘ）に置く試みが成される。空いている位置ｈｗ（ｘ）がない場合、ストリングｘがスタッシュ４１２に挿入される。代替として、ハッシュロジック７０４がｃｕｃｋｏｏハッシュとして実装されるとき、ストリングｘはｈ１（ｘ）に挿入され得、ｈ１（ｘ）を占めていたストリングｙがストリングｙとしてサブテーブルｗのいずれかの空き位置ｈｗ（ｙ）の一つに再ハッシュされる。全位置ｈｗ（ｙ）が占有されている場合、ストリングｙがスタッシュ４１２に挿入される。実質上、ハッシュロジック７０４はバイナリエントリを一次テーブル４０６に付加し、一次テーブル４０６からバイナリエントリをルックアップし得る。
【００４３】
例えば、「一次」サーチの間、パケットに対しヘッダーに関連付けられるハッシュされたデータワードに整合するルールが見つからない（これは非整合と呼ぶこともできる）とき、更なる処理が実行される。非整合起こると、関連するルックアップ記述子（即ち、１０００）はパケット記述子キュー７０６にストアされ、これは概して、一次テーブル４０６及び二次テーブル４０８のルックアップ間の速度差のため一時メモリとして動作する。一次及び二次テーブルのルックアップに速度差がない（電力差のみがある）場合、キュー７０６は省略され得る。
【００４４】
その後、二次テーブル４０８（これは、図８の二次テーブル４０８−Ａ内のＴＣＡＭバンク４１８−１〜４１８−Ｒで形成され得るか、又は図９の二次テーブル４０８−Ｂ内のＳＲＡＭバンク４２０−１〜４２０−Ｒで形成され得る）のターナリサーチが、ルックアップ記述子（即ち、１０００）の整合フィールド（１００８）を用いて実行される。典型的に、二次テーブル４０８は、各々ターナリルールテーブルを含み得る（図８及び図９に図示するように）メモリの幾つかのバンクで形成される。ルックアップ記述子（これは「一次」経路における整合を生成しない）の複製コピーはその後、ターナリルールテーブルを実質的に同時に検索するために用いられ得る。他のサーチ方法も用いられ得る。整合はその後、アクションテーブル５１０のための命令を生成し得る。また、二次テーブル４０８内で見つけられた各整合に対し、新たなバイナリサーチルールが将来の利用のためダイナミックメモリ４０６につくられ得る。更に具体的には、実際のパケットに見られるターナリルールのバイナリバージョンが一次テーブル４０６に挿入される。整合が見つからない場合、非整合に関連付けられるパケットヘッダーが封止され得、更なる処理のためプロセッサ４０２又はネットワークコントローラ４０１に送られ、或いは、パケットがドロップされる。
【００４５】
通常、「二次」経路に非整合がある場合、「二次」経路のテーブルに対する改変が有用であり得る。多くの場合において、「二次」経路に非整合があるとき、適切なルールが、二次テーブル４０８にない可能性があり、そのため、プロセッサ４０２又はネットワークコントローラ４０１は、新しいルールを「挿入」し得る。通常、二次テーブル４０８にわたる負荷平衡を達成するため、新しいルールがラウンドロビン方式で二次テーブル４０８のバンクに付加される。また、二次テーブル４０８における又は一次テーブル４０６におけるルールが、「ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ」手法又は何らかの他の統計に基づいて取り除かれ得る又は取り戻され得る。
【００４６】
一旦、各パケットのヘッダーに関連付けられるルール又はアクションが解決されると、パケットは更なる処理及び／又は配路のため改変され得る。これは概してヘッダーリプレーサ６１４によって達成される。典型的に、ヘッダーリプレーサ６１４は、パケットＦＩＦＯ及びコントローラ６１２及び受信ＦＩＦＯ及びコントローラ６０８を用いて、アクションセットポインタ８０８をアクションテーブル５１０内の適切なアクションセットに関連付けることにより、各パケットに対するパケット記述子８００を改変する。
【００４７】
送信パケットを用いて、ポートマネージャ５０８−１〜５０８−Ｊにおける扱いが受信したパケットに較べて幾らかシンプルになる。通常、配路のためのパケットの処理は、送信前に終了する。配路が判定されると、宛先ポート２０８−１〜２０８−Ｐは通常パケットである。その結果、適切なポートマネージャ５０８−１〜５０８−Ｊは、送信共有バッファインタフェース６０２を用いて共有メモリ５０２からパケット情報をリコールし、この完了したパケットは送信ＦＩＦＯ及びコントローラ６０４に一時的にストアされる。ＭＡＣ６１０はその後、そのパケットを適切なＰＨＹ（即ち、２０６−１）に分配する。
【００４８】
本発明に関連する技術に習熟した者であれば、本発明の特許請求の範囲内で、説明した例示の実施例に変形が成され得ること、及び他の実施例を実装し得ることが分かるであろう。
【図１】
0005921666.tif 000003
【図２】
0005921666.tif 000004
【図３】
0005921666.tif 000005
【図４】
0005921666.tif 000006
【図５】
0005921666.tif 000007
【図６】
0005921666.tif 000008
【図７】
0005921666.tif 000009
【図８】
0005921666.tif 000010
【図９】
0005921666.tif 000011
【図１０】
0005921666.tif 000012
【図１１】
0005921666.tif 000013
【図１２】
0005921666.tif 000014
【図１３】
0005921666.tif 000015