(57)【特許請求の範囲】
【請求項１】
パケット処理装置において、該パケット処理装置は、
パケットプロセッサから複数のルックアップ要求を受信するよう動作する要求待ち行列を含み、各要求が、対応する受信パケットからの種々の情報要素を含むと共に、ルートルックアップとパケット分類との両方がその要求に含まれるそれら情報要素に基づいて実行されており、該要求待ち行列は内部に空エントリの数を示すよう動作する関連ステータス情報を有しており、前記パケット処理装置はさらに、
該要求待ち行列に連結され、該要求待ち行列から要求の選択された情報要素を受信するよう動作するＲＬＥ入力待ち行列と、ＲＬＥ出力待ち行列とを有するルートルックアップエンジン（ＲＬＥ）であって、各要求の該選択された情報要素に基づいて、該要求に対応する前記パケットがどのように送られるべきかを示すフォワーディング情報を探索するよう動作し、該探索が完了した際に該ＲＬＥ出力待ち行列に該フォワーディング情報を配置するよう動作するルートルックアップエンジン（ＲＬＥ）と、
該要求待ち行列に連結され、該要求待ち行列から要求の選択された情報要素を受信するよう動作するＰＣＥ入力待ち行列と、ＰＣＥ出力待ち行列とを有するパケット分類エンジンであって、各要求の該選択された情報要素に基づいて分類プロセスを実行すると共に、該要求に対応する該パケットに関する分類情報を生成するよう動作し、該分類プロセスが完了した際に、該ＰＣＥ出力待ち行列に該分類情報を配置するよう動作するパケット分類エンジン（ＰＣＥ）と、
該ＲＬＥ出力待ち行列と、該ＰＣＥ出力待ち行列とに連結される結果待ち行列であって、（ｉ）各要求から結果として得られる該フォワーディング情報および該分類情報を受信し、（ｉｉ）各要求に対する１つの結果に該受信したフォワーディング情報および分類情報を含み、（ｉｉｉ）対応する通信トランザクションにおいて該パケットプロセッサに各結果を供給し、そして（ｉｖ）ステータス情報を使用して内部の空エントリの数を示すよう動作する結果待ち行列と、を含むことを特徴とするパケット処理装置。
【請求項２】
前記ＰＣＥが、ルールメモリエントリを含むルールメモリを含み、各ルールメモリエントリが、前記分類プロセスに適用される対応する分類基準を表すものであり、各結果に含まれる前記分類情報が、該結果が生成された前記要求によって対応する分類基準が満たされるルールメモリエントリのアドレスを含む請求項１に記載のパケット処理装置。
【請求項３】
前記ＰＣＥによって使用される前記情報要素のセットおよび前記ＲＬＥによって使用される前記情報要素のセットが、部分的に重複するがまったく同じではないものである請求項１記載のパケット処理装置。
【請求項４】
前記部分的に重複する情報要素が、受信パケットからの宛先アドレスを含んでいる請求項３に記載のパケット処理装置。
【請求項５】
該ステータス情報を該結果待ち行列からの結果と結合して結合された結果を生成するよう動作し、かつ、１つの対応する通信トランザクションの一部として前記パケットプロセッサに該結合された結果を供給するよう動作する読出しロジックを更に含む請求項１に記載のパケット処理装置。
【請求項６】
前記読出しロジックが、バスを介して前記パケットプロセッサに連結されており、前記結合された結果は、複数の逐次的バスサイクルに亙ってマルチワードブロックとして該パケットプロセッサに供給される請求項５に記載のパケット処理装置。
【請求項７】
前記結合された結果のブロックが、固定サイズブロックであり、この固定サイズブロックが前記パケットプロセッサに供給される時点で前記結果待ち行列において入手可能な数の結果エントリと、該結果ブロックをその固定サイズにパッドするために必要な数のステータスエントリとを含んでいる請求項６に記載のパケット処理装置。
【請求項８】
前記読出しロジックが、バスを介して前記パケットプロセッサに連結されており、同様に該バスを介して該パケットプロセッサに連結された追加の待ち行列を更に具備し、各追加の待ち行列が、空エントリの数を示す関連するステータス情報を有し、該追加の待ち行列の該ステータス情報もまた、前記結合された結果に含まれている請求項５に記載のパケット処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ通信ネットワークの分野に関する。
【０００２】
【従来の技術】
データ通信ネットワークでは、ネットワークを通してパケットを経路指定するために、スイッチなどのネットワーク装置が使用される。一般に、各スイッチは、各々が異なるネットワークセグメントに接続された多数のラインインタフェースを有している。パケットが所定のラインインタフェースで受信される場合、フォワーディングロジックは、パケットがいずれのラインインタフェースから送信されるべきかを決定し、パケットは、適当な出力ラインインタフェースに転送されることにより、ネットワークのその宛先に向かって送信される。
【０００３】
ラインインタフェースにおいて、マイクロプロセッサと共に専門のフォワーディングロジックを採用することが知られている。マイクロプロセッサは、パケット処理およびフォワーディング全体に対して責任を有している。フォワーディングロジックは、高速メモリに１つまたは複数のフォワーディングテーブルを格納する。フォワーディングテーブルは、一般にパケット内に含まれる宛先アドレスに基づいて、パケットがいかに送られるべきかを示す情報を含む。フォワーディングテーブルは、スイッチで実行しているバックグラウンドプロセスによって保持される。ラインインタフェースでパケットが受信されると、マイクロプロセッサは、パケットから選択された情報を含むルックアップ要求を生成し、フォワーディングロジックにルックアップ要求を発行する。フォワーディングロジックは、１つまたは複数のフォワーディングテーブルの専用の探索を実行し、マイクロプロセッサにルックアップ結果を返す。ルックアップ結果は、フォワーディング情報が見つかったか否かの指示を含み、見つかっている場合、フォワーディング情報自体を含む。マイクロプロセッサは、そのフォワーディング情報を使用してパケットを送る。このアーキテクチャが使用されることにより、マイクロプロセッサのみを使用して達成され得るものよりも高いパケットフォワーディングレートが達成される。
【０００４】
また、スイッチなどのネットワーク装置においてパケットフィルタリングを実行することも知られている。パケットフィルタリングは、トラフィックの監視およびセキュリティの目標など、種々のネットワーク管理目標を達成するために使用することができる。フィルタリング基準は、ネットワーク管理者によって確立され、フィルタリング動作を実行するスイッチまたは他の装置に提供される。スイッチによって受信されるパケットがチェックされることにより、確立されたフィルタのいずれかに対しそれらパケットの特徴が基準に一致するか否かが判断される。１つまたは複数のフィルタに対する基準を満たすパケットに対し、それらフィルタに関連する予め決められた動作が実行される。たとえば、環境によっては、所定のネットワークノードから発信しているパケットがネットワークにおいて送られずに破棄されることが望ましい場合がある。基準が、パケットソースアドレスが特定の値、すなわちパケットが破棄されるべきノードのアドレスに正確に一致しているということである、フィルタを定義することができる。そのフィルタに関連する動作は、パケットの破棄である。ソースアドレスがこの基準を満たすパケットが受信されると、それは、正常な方法で送られずに破棄される。
【０００５】
パケットをフィルタリングするために使用されてもよい、多数の異なる種類の基準がある。これら基準は、範囲チェック、すなわち、パケットの値がある値の範囲内にあるか否かをチェックすることと共に、完全な一致を含む。基準として、ソースアドレス、宛先アドレス、ポート識別子、サービスのタイプなど多数のパケットパラメータを使用することができる。有用であるために、パケットフィルタリングプロセスは、これらおよび他の基準の種々の組合せを用いて、フィルタが柔軟に定義されるようにしなければならない。
【０００６】
【発明が解決しようとする課題】
パケットフィルタリングは、このような固有の複雑さを有するため、従来、パケットフィルタリングをサポートしているスイッチまたは他のネットワーク装置内のソフトウェアにおいて、広くまたは排他的に実行されてきた。しかしながら、高いパケットフォワーディング性能が要求される場合、ソフトウェアベースのフィルタリングはボトルネックをもたらす。ネットワーク管理者は、たとえば、以前のシステムがラインレートにおいて頑強なパケットフィルタリングが可能でなかったため、ネットワーク反応性とネットワークセキュリティとの間の望ましくないトレードオフを考慮しなければならなかった。
【０００７】
【課題を解決するための手段】
本発明によれば、パケットフィルタリングの目的でパケット分類と共に高速フォワーディング探索を提供する、ネットワーク装置におけるパケット処理ロジックが、開示されている。フォワーディング性能を低下させる通信ボトルネックの発生を防止するために、パケット処理マイクロプロセッサと専用の探索および分類ロジックとの間に、新規な要求および応答アーキテクチャが使用される。
【０００８】
パケット処理ロジックは、パケットプロセッサからルックアップ要求を受信する要求待ち行列を含み、各要求は、受信パケットからの種々の情報要素を含み、各要求は、要求に含まれる情報要素に基づいてルートルックアップとパケット分類との両方が実行されるべきであることを示す。ルートルックアップエンジン（ＲＬＥ）は、要求から選択された情報要素を受信する要求待ち行列に連結された入力を有する。同様に、パケット分類エンジン（ＰＣＥ）は、要求待ち行列に連結された入力を有する。各要求における情報要素に基づいて、ＲＬＥは、要求に対応するパケットがいかに送られるべきかを示すフォワーディング情報を探索し、ＰＣＥは、分類プロセスを実行し、要求に対応するパケットに関する分類情報を生成する。各要求に対し、ＲＬＥからのフォワーディング情報とＰＣＥからの分類情報とが結合され、結果待ち行列に格納される１つの結果となる。各結果は、１つの通信トランザクションにおいてパケットプロセッサに供給される。
【０００９】
この共有の要求および結果アーキテクチャにより、パケットプロセッサとＰＣＥおよびＲＬＥとの間の通信の効率および速度が向上し、高速パケットフォワーディングおよび分類が可能になる。
【００１０】
本発明の他の態様、特徴および利点は、以下の詳細な説明において開示されている。
【００１１】
【発明の実施の形態】
図１において、ネットワークスイッチ１０が、それぞれのネットワークセグメント１４に接続された多数のラインインタフェース１２を含むものとして示されている。ラインインタフェース１２は、パケットフォワーディングに対しラインインタフェース１２間の接続を提供するために使用されるスイッチファブリック１６に接続されている。スイッチファブリック１６の動的構成を含むスイッチ１０の動作全体は、スイッチ制御１８によって制御される。概して、種々のネットワーク１４は異なるタイプのものであってよい。たとえば、ある種のネットワークセグメント１４は、ＯＣ−３／ＳＴＭ−１およびＯＣ−１２／ＳＴＭ−４など、種々の標準信号速度のいずれで動作する光リンクであってもよい。他のネットワークセグメント１４は、たとえば同軸ケーブルを採用し異なるフォーマットの信号を搬送する非光リンクであってよい。
【００１２】
各ラインインタフェース１２は、当然のことながら、それが接続している特定のタイプのネットワークセグメント１４と共に動作するよう設計されている。各ラインインタフェース１２の１次タスクは、他のラインインタフェース１２に接続されたネットワークセグメント１４で送るために、接続されたネットワークセグメント１４から受信したパケットまたはフレームを、スイッチファブリック１６を介して別のラインインタフェース１２に転送することと、接続されたネットワークセグメント１４で送るために、スイッチファブリック１６を介して他のラインインタフェース１２からパケットを受信することと、である。
【００１３】
図２は、１つのタイプのラインインタフェース１２の構造を示す。このインタフェースは、４つの別々の光インタフェースポートを含み、それらは各々、物理的入力／出力およびフレーミング回路２０（以下、物理的Ｉ／Ｏブロック２０とする）とフォワーディングエンジン２２とを含む。フォワーディングエンジン２２は、すべて、図１のスイッチファブリック１６とインタフェースするスイッチファブリックインタフェースロジック２４に接続されている。また、フォワーディングエンジンは、ラインインタフェースＩ／Ｏプロセッサ（ＩＯＰ）２６とも通信する。タイミング制御ロジック２８およびＤＣ電源回路３０もまた含まれている。
【００１４】
各フォワーディングエンジン２２は、接続された物理的Ｉ／Ｏブロック２０とスイッチファブリックインタフェース２４との間の双方向データ経路を提供する。受信されたパケットは、図１のスイッチファブリック１６を介して他のラインインタフェース１２に転送されるために、複数の固定サイズのＡＴＭのようなセルに分割される。スイッチファブリックインタフェース２４を介してスイッチファブリック１６から受信されたセルは、接続された物理的Ｉ／Ｏブロック２０に出力転送されるために、パケットに再組立される。
【００１５】
ＩＯＰ２６は、バックグラウンド機能、すなわち、パケットベースでは実行されないパケットのフォワーディングをサポートする機能を実行する汎用プロセッサである。ＩＯＰ２６によって実行される１つの機能は、図１のスイッチ制御１８からパケットフォワーディング情報およびパケットフィルタリング情報を受信し、フォワーディングエンジン２２にその情報を分配する。このプロセスについては、後述する。
【００１６】
図３は、フォワーディングエンジン２２のブロック図を示す。インバウンド分割および再組立（ＳＡＲ）ロジックブロック４０（以下、単にインバウンドＳＡＲ４０とする）は、図２の物理的Ｉ／Ｏブロック２０からスイッチファブリック１６へのデータ経路を提供し、アウトバウンドＳＡＲロジックブロック４２（以下、単にアウトバウンドＳＡＲ４２とする）は、スイッチファブリック１６からそれぞれの物理的Ｉ／Ｏブロック２０へのデータ経路を提供する。各ＳＡＲ４０、４２は、分割または再組立機能を実行する際に使用されるそれぞれの制御メモリ４４、４６およびパケットメモリ４８、５０に連結されている。
【００１７】
ＳＡＲ４０、４２は、共に６４ビットＰＣＩバス５４を介してパケットヘッダディストリビュータ（ＰＨＤ）特定用途向け集積回路（ＡＳＩＣ）５２（以下、単にＰＨＤ  ＡＳＩＣ５２とする）に接続されている。後に詳述するように、ＰＨＤ  ＡＳＩＣ５２は、ＰＣＩバス５４と別の６４ビットバス５６との間のＦＩＦＯ待ち行列インタフェースを提供する。バス５６は、ＰＨＤ  ＡＳＩＣ５２をフォワーディングプロセッサ（ＦＰ）５８およびフォワーディングプロセッサメモリ６０と接続する。また、ＰＨＤ  ＡＳＩＣ５２は、別のバス６２により図２のＩＯＰ２６にも接続されている。
【００１８】
図４は、図３のＰＨＤ５２の構造を示す。ＦＰ５８宛てのパケットヘッダおよび他のメッセージの一時的なバッファリングのために、１組の受信待ち行列またはＲＸ待ち行列６４が使用される。示されているように、４つのＲＸ待ち行列６４、すなわち高優先度トラフィックのための２つの待ち行列と低優先度トラフィックのための２つの待ち行列とがある。高優先度トラフィックの例は、認定速度（ｃｏｍｍｉｔｔｅｄ  ｒａｔｅ）など、高サービス品質（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ（ＱＯＳ））保証を有するトラフィックである。低優先度トラフィックは、ベストエフォート（ｂｅｓｔ−ｅｆｆｏｒｓ）など、ＱＯＳが低いかまたはＱＯＳの無い保証を有するトラフィックである。各優先度レベルに対し、インバウンドＳＡＲ４０から発信しているトラフィックに対する１つの待ち行列（「０」とラベル付けされている）と、アウトバウンドＳＡＲ４２から発信しているトラフィックに対する他の待ち行列（「１」とラベル付けされている）と、がある。ＦＰ５８からＳＡＲ４０、４２宛てのパケットヘッダおよび他のメッセージの一時的なバッファリングのために、１組の送信待ち行列またはＴＸ待ち行列６６が使用される。ルートおよび分類エンジン６８は、ＦＰ５８の代りにルートルックアップおよびあらゆるパケットフィルタリングチェックを実行する。パケットフィルタリング動作については後述する。ルートおよび分類エンジン６８は、信号線６９を介して待ち行列６４，６６からステータス情報を受信し、この情報を後述する方法でＦＰ５８に対し入手可能にする。
【００１９】
フォワーディングエンジン２２の動作全体を、図３および図４に関して述べる。パケットは、図２の関連する物理層回路、すなわち物理的Ｉ／Ｏブロック２０からインバウンドＳＡＲ４０によって受信され、パケットメモリ４８に格納される。インバウンドＳＡＲ４０は、パケットヘッダをＰＨＤ５２のＲＸ待ち行列６４の適当な１つに転送する。ＦＰ５８は、ＰＨＤ５２をポーリングすることにより、待ち行列ステータスを決定し、ＲＸ待ち行列６４からパケットヘッダを適宜検索する。ヘッダ処理の一部として、ＦＰ５８は、ルートおよび分類要求において各ヘッダからのいくつかの情報要素をルートおよび分類エンジン６８に送信する。ルートおよび分類エンジン６８は、要求におけるヘッダ要素に対しルートルックアップおよび種々のパケットフィルタリングチェックを実行し、これらチェックの結果を結果待ち行列（後述する）に配置する。ＦＰ５８は、結果待ち行列からルートルックアップおよび分類結果を取得し、これら結果を用いてパケットに対し新たなヘッダを生成する。新たなヘッダは、パケットが分割後に送られるべき内部回路を識別する情報と共に、ＴＸ待ち行列６６の１つを介してＰＨＤ５２に戻すよう転送される。インバウンドＳＡＲ４０は、新たなヘッダを検索し、受信したパケットのペイロード部と共にパケットメモリ４８に配置し、新たなパケットを分割して、結果としてのセルを、ＦＰ５８によって指定される内部回路の図１のスイッチファブリック１６に転送する。
【００２０】
アウトバウンド方向では、アウトバウンドＳＡＲ４２は、図１のスイッチファブリック１６からパケットを受信し、これらパケットを再組立してパケットメモリ５０に入れる。パケットヘッダはＰＨＤ５２に送信され、ＦＰ５８によってＰＨＤ５２から検索される。大抵のパケットに対し、ルートルックアップおよびフィルタリングチェックはインバウンド処理の間に既に実行されているため、これら動作は繰返されない。しかしながら、プロトコルによっては、インバウンドとアウトバウンドとの両方のパケットに対しルックアップおよびフィルタリングを要求するものがあり、そのためにこれら動作は、ルートおよび分類エンジン６８と共にＦＰ５８によって任意に実行される。適当な場合は、ＦＰ５８は、分割されたアウトバウンドパケットが受信される内部回路の識別に部分的に基づいて、パケットに対する新たなヘッダを定式化する。この新たなヘッダは、送信回路情報と共にＰＨＤ５２に書込まれる。ＰＨＤ５２は、新たなヘッダをアウトバウンドＳＡＲ４２に転送する。アウトバウンドＳＡＲ４２は、パケットペイロードと共に新たなヘッダをパケットメモリ５０に配置し、図２の関連する物理層インタフェース、すなわち物理的Ｉ／Ｏブロック２０にパケットを送信する。
【００２１】
図５は、ルートおよび分類エンジン６８の構造を示す。図３のＦＰ５８からの要求は、１つの要求待ち行列７０に配置され、結果は、１つの結果待ち行列７２に戻される。各待ち行列７０、７２は、１６個までの要求／結果エントリを保持する。ルートルックアップエンジン（ＲＬＥ）７４は、一般にヘッダに含まれる宛先アドレス（ＤＡ）に基づいて、ルートルックアップを実行する。パケット分類エンジン（ＰＣＥ）７６は、パケットヘッダに含まれる指定された情報に基づいて、パケットフィルタリングチェックを実行する。ＰＣＥ７６の動作は、後により詳細に説明する。入力ＦＩＦＯバッファ７８は、要求待ち行列７０とＲＬＥ７４およびＰＣＥ７６との間に配置され、出力ＦＩＦＯバッファ８０は、ＲＬＥ７４およびＰＣＥ７６と結果待ち行列７２との間に配置される。ＦＩＦＯ７８、８０は、ＲＬＥ７４によって実行される処理とＰＣＥ７６によって実行される処理との間のある程度の非干渉を提供する。マルチプレクサ８１は、ＦＰ５８が、結果待ち行列７２か、または要求待ち行列７０からのステータス、結果待ち行列７２および図４の信号線６９に現れるステータスを含むステータス情報のいずれかを読出すことができるようにする。
【００２２】
図６は、図５の要求待ち行列７０を介してＰＣＥ７６およびＲＬＥ７４に渡されるルートおよび分類要求の構成を示す。要求のサイズは、４つの６４ビットワードである。種々のフィールドは、以下のように定義されている。
【表１】
0003640299.tif 000002
【００２３】
上記表から分かるように、２つの別々の分類チェックのセットが提供されている。すなわち、一方は「ＰＣＥルート０」とラベル付けされたアドレスで開始し、他方は「ＰＣＥルート１」とラベル付けされたアドレスで開始する。これら別々の開始アドレスの重要性については、後述する。
【００２４】
上述したように、図５のＲＬＥ７４およびＰＣＥ７６についてのそれぞれの入力ＦＩＦＯ７８に対し、要求の適当なフィールドが提供される。要求ＩＤおよびＩＰ宛先アドレスなどのいくつかのフィールドは、ＲＬＥ７４とＰＣＥ７６との両方に提供される。他のフィールドは、一方かまたは他方のみに対して提供される。ＰＣＥに経路指定されたフィールドの使用については、特に後述する。
【００２５】
図７および図８は、図４のルートおよび分類エンジン６８から読出される２つの異なるタイプのエントリのそれぞれの構成を示す。図７は、図５の結果待ち行列７２から取得され、分類探索の結果を伝える、結果エントリを示す。図８は、ステータス情報を図３のＦＰ５８に伝えるために使用されるステータスエントリを示す。
【００２６】
図７に示す結果エントリのフィールドは、以下のように定義される。
【表２】
0003640299.tif 000003
【００２７】
図８に示すステータスエントリのフィールドは、以下のように定義される。
【表３】
0003640299.tif 000004
【００２８】
ルートおよび分類エンジン６８の概略的な動作を、図５ないし図８を参照して説明する。図３のＦＰ５８は、要求待ち行列７０にルックアップおよび分類要求を書込む。要求が要求待ち行列７０の最前列に達すると、ＲＬＥ７４およびＰＣＥ７６のそれぞれの入力ＦＩＦＯ７８に対し、要求からの異なる情報要素が同時に書込まれる。ＲＬＥ７４およびＰＣＥ７６は、各要求の別々の部分に対し独立して動作し、概して、異なる時刻に所定の要求に対するそれぞれの処理動作を終了する。これら動作の結果は、出力ＦＩＦＯ８０に書込まれる。所定のパケットについての結果のセットが共に出力ＦＩＦＯ８０の最前列に達すると、１つの結合された結果が結果待ち行列７２に書込まれる。その結合された結果は、上述したように、ＦＰ５８によって読出され、図３のＳＡＲ４０および４２について新たなパケットヘッダおよび回路情報を定式化するために使用される。
【００２９】
より詳細には、ＦＰ５８は、バッチ方式でルートおよび分類エンジン６８を使用する。要求待ち行列７０に十分な空間がある場合、要求のバーストが書込まれる。上述したように、各要求のそれぞれの部分が、ＰＣＥ７６およびＲＬＥ７４によって処理される。ＦＰ５８は、ＲＣＥ６８に対して読出しコマンドを発行することによって結果を取得する。各読出しに対し、４つの６４ビットエントリのブロックは、ＦＰバス５６を介してＦＰ５８に戻される。各ブロックは、読出し時に入手可能な限りの結果待ち行列７２からの結果と、パディングとして多数のステータスエントリと、を含んでいる。これにより、結果ブロックにおける以下のような５つの異なる組合せのエントリの１つが読出される。
１．４つの結果エントリ
２．３つの結果エントリと続く１つのステータスエントリ
３．２つの結果エントリと続く２つのステータスエントリ
４．１つの結果エントリと続く３つのステータスエントリ
５．４つのステータスエントリ
【００３０】
ＦＰ５８は、概して、結果待ち行列７２が空になるまで読出しコマンドを発行し、それは、１つまたは複数のステータスエントリが結果ブロックに含まれている時はいつでも推論される。そして、ルートおよび分類エンジン６８が次の要求のバッチを処理する間、ＦＰ５８は、これらの結果を使用する。ＦＰ５８は、ＲＬＥ７４およびＰＣＥ７６は使用中のままであり、待ち行列７０，７２およびＦＩＦＯ７８、８０はオーバフローしないように、ステータス情報を使用して要求の流れを管理する。
【００３１】
なお、例示されている実施の形態では、読出すことができるステータスエントリは１つしかなく、結果ブロックにおける複数のステータスエントリは、この１つのエントリの複数の読出しを表している。代替的な実施の形態では、たとえば、統計的収集の目的かまたは他のバックグラウンド処理のために、第２ないし第４のステータスエントリに追加の低優先度情報を提供することが有用である場合もある。
【００３２】
結果にステータス情報を添付する１つの重要な利点は、ＦＰバス５６を使用する際の効率が改善されたことである。ＦＰ５８が結果に対する読出しを発行する際はいつでも、有用な結果または有用なステータス情報のいずれかが返される。更に、結果ブロックがバースト方式で返されるため、読出しに関連するオーバヘッドが低減される。また、ＦＰ５８は、１つの読出しトランザクションにおいて、ＲＬＥ７４およびＰＣＥ７６の周りの待ち行列に関する情報と、ＲＸ待ち行列６４およびＴＸ待ち行列６６に関する情報と、を取得する。
【００３３】
図９は、図５のＰＣＥ７６の構造を示す。フィルタおよびバインディング（後述する）を表すデータは、ルールメモリ（ＲＭ）８２および基準メモリ（ＣＭ）８４に格納される。ＣＭ８４は、３つの共通にアドレス指定されたメモリＣＭ０８６、ＣＭ１８８およびＣＭ２９０を含む。３つの比較ロジックブロック９２、９４および９６が、基準メモリ８６、８８および９０のそれぞれに関連付けられている。アドレス指定および制御ロジック９８は、図５の要求待ち行列７０から受信した要求を復号化し、ＲＭ８２およびＣＭ８４のアドレスを生成し、各要求によって要求されるように複数のルールを順序付けし、図５の結果待ち行列７２に戻すよう渡される結果を生成する。また、アドレス指定および制御ロジック９８は、図２のＩＯＰ２６にインタフェースすることにより、ＩＯＰ２６によるＲＭ８２およびＣＭ８４の読出しおよび書込みを可能にする。バストランシーバ１００は、ＩＯＰ２６とＲＭ８２およびＣＭ８４との間の必要なデータ経路を提供する。ＡＮＤゲート１０２は、比較ロジックブロック９２、９４および９６からの対応するＭＡＴＣＨｎ出力がすべて真である場合に、１つのＭＡＴＣＨ信号を提供する。
【００３４】
パケットフィルタリングに対するルールセットは、一般に、ネットワーク管理ステーション（ＮＭＳ）によって作成されるが、識別された流れに基づいてＦＰ５８によって動的に割当てられることも可能である。以下の情報の一部またはすべてが、フィルタに対しＮＭＳまたはＦＰ５８によって提供される。すなわち、マスクを有するＩＰ宛先アドレスと、マスクを有するＩＰソースアドレスと、ＩＰプロトコル識別子と、ＴＣＰ／ＵＤＰソースポートおよび宛先ポート識別子と、ＩＰサービスタイプ識別子およびマスクと、種々のフラグと、である。フィルタからの種々の情報要素は、各受信パケットからの対応する要素と比較されることにより、パケットがフィルタ基準と一致するか否か判断される。一致する場合、故意にパケットを破棄するなど、フィルタに対するある特定の動作がとられる。一致しない場合、パケットをその宛先に向かって進行させるなど、一般にあるデフォルトの動作がとられる。
【００３５】
従来から、パケットフィルタは、線形に探索される比較セットの順序付けられたリストとして表される。ＰＣＥ７６において、フィルタ要素は基準（比較値）とルール（各比較に使用されるリスト自体と演算子）とに分割される。このルールおよび基準の分離は、別々のルールメモリ（ＲＭ）８２と基準メモリ（ＣＭ）８４との使用に反映される。メモリ８２および８４が、それら各々の機能に対し別々に最適化されることにより、効率および性能が向上する。また、ＣＭ８４内のエントリをＲＭ８２内の複数のルールによって参照することができることにより、記憶効率が向上する。
【００３６】
ＲＭ８２は、ルールメモリエントリのアレイを含み、それらの各々は２つのタイプのうちの１つとしてよい。第１のタイプは、１組の演算子と、対応するフィルタに対する比較対象を格納するＣＭ８４の行に対するポインタと、を含む。第２のタイプは、他のルールメモリエントリに対するポインタを含む。これらエントリは、逐次探索されている１組のルールにおける不連続なセグメント間のジャンプを実行するために使用される。例示されている実施の形態では、ＲＭ８２は、１６Ｋまでのエントリを含むことができる。
【００３７】
ＣＭ８４は、３つの別々のメモリＣＭ０８６，ＣＭ１８８およびＣＭ２９０に分割される。例示されている実施の形態では、それらは各々、４Ｋまでのエントリを含むことができる。ＣＭ８４の構成は、ＩＰパケット分類に固有の階層構造を活用する。いくつかのフィールドにおけるフィルタリングには、通常、他のフィールドに基づく同様のフィルタリングが付随することにより、いずれのフィールドが別々のメモリＣＭ０、ＣＭ１およびＣＭ２に格納されるかを制限することが適当である。これらの制限により、更に、記憶効率が向上する。最も一般的にフィルタリングされるフィールド、すなわちソースアドレスおよび宛先アドレスは、３つのメモリＣＭ０８６、ＣＭ１８８およびＣＭ２９０すべてにおいてサポートされている。後述するように、他のフィールドは、ＣＭ１８８および／またはＣＭ２９０においてのみサポートされている。このアーキテクチャにより、ＣＭ８４の空間を割当てる際に可能な柔軟性が最大化し、同時に、強力な並行探索が可能になる。ＣＭ８４の構成および使用は、後により詳細に述べる。
【００３８】
パケット分類エンジン（ＰＣＥ）７６の動作は、概して以下のように進む。
１．図２のＩＯＰ２６により、ＲＭ８２およびＣＭ８４が初期化される。これは、動的割当てによるかまたはネットワーク管理ステーション（ＮＭＳ）（後述する）により、パワーアップ時および動作中に発生する。
【００３９】
２．図５の要求待ち行列７０から、ＦＰ５８によって提起されるパケット分類要求が検索される。
【００４０】
３．要求のルート０アドレスの内容によりＲＭ８２が索引付けされることによって、探索の第１ルールメモリエントリが検索される。エントリがポインタタイプである場合、検索されたエントリにおいてルールメモリアドレスに対しこのステップが繰返される。このステップは、複数回繰返すことが可能である。
【００４１】
４．検索されたルールメモリエントリが演算子タイプである場合、ルールメモリエントリのＣＭアドレスによって指定される場所で、基準メモリエントリが検索される。ＣＭ８４からの選択された比較対象は、ルールメモリエントリの演算子にしたがって要求の対応するフィールドと比較される。上述したように、種々のフィールドがマスクされてよい。
【００４２】
５．ＤＯＮＥ（終了）ビットが１にセットされたエントリに達するか、または一致状態が見つかる（すなわち、比較演算の結果がＴＲＵＥ（真）である）まで、ルールメモリアドレスは１インクリメントする。ルールは、そのＣＡＲＲＹ（キャリー）ビットをセットしてよく、それには、一致が宣言される前に次のルールもまたＴＲＵＥとして評価することが必要である。
【００４３】
６．探索において見つかったルールメモリエントリがポインタタイプのエントリである場合、それは、基準メモリエントリではなく他のルールメモリエントリを指す。この場合、逐次のルール評価は、指定されたルールメモリエントリでの開始を続ける。
【００４４】
７．上記プロセスは、要求のルート０アドレスで開始すると実行される。ルート０に関連するフィルタに対しＤＯＮＥに達すると、プロセスはルート１アドレスでの開始が繰返される。一致が見つかると、結果は、それがルート０ルールを用いて見つかったのかルート１ルールを用いて見つかったのかを示す。
【００４５】
８．一致が見つかることによるか、またはルート１探索においてＤＯＮＥとなることにより、探索が終了すると、フィルタリングチェックの結果を示す結果が、結果待ち行列７２に書戻される。結果は、チェックされた最終ルールのアドレスと、一致が見つかったか否かと、を含む。一致が見つかった場合、ＦＰ５８によってそのアドレスが使用されることにより索引付けされ、結果に対して適当な動作を開始する動作テーブルに格納される。たとえば、一致が、ある値より小さいＤＡを有するすべてのパケットが落とされるべきであることを示すルールに対するものである場合、動作テーブルは、パケットが故意に破棄されるようなルーチンを指す。
【００４６】
図１０は、図５のルートルックアップエンジン（ＲＬＥ）の構成を示す。図２のＩＯＰ２６によって提供されるフォワーディングテーブルを格納するために、メモリ１１０が使用される。ルックアップ制御ロジック１１２は、メモリ１１０の動作を制御し、ＩＯＰ２６、図５のＲＬＥの入力ＦＩＦＯ７８および図５のＲＬＥの出力ＦＩＦＯ８０に対するインタフェースを含む。
【００４７】
ＲＬＥ７４は、図３のフォワーディングプロセッサ５８に対するネクストホップインデクスを決定するために使用される、ハードウェア探索エンジンである。ＲＬＥは、ＩＰネットワーク、たとえば仮想私設網（Ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ（ＶＰＮ））および公のインタネットに対し、ユニキャストおよびマルチキャスト両方のＩＰアドレスルックアップを実行する。各ＩＰネットワークは、そのネットワークに特定のメモリ１１０におけるフォワーディングテーブルのルートが割当てられる。
【００４８】
パケットがマルチキャストである場合、探索は、まずＩＰ宛先アドレス（ＤＡ）に対して実行され、続いてＩＰソースアドレス（ＳＡ）に対して実行される。この動作は自動的に発生し、通常、ネクストホップインデクスが見つかるかまたはインデクスが見つからずに探索キー（ＤＡまたはＳＡ）の終端に達する場合に終了する。いわゆるパトリシアツリーアルゴリズムを含む種々のルックアップアルゴリズムが使用されてよい。上記結果の説明に示すように、正常な探索は、フォワーディングテーブルの探索キー（ＤＡまたはＳＡのいずれか）に対応する場所で見つかったネクストホップポインタを返す。ネクストホップポインタは、メッセージに対するフォワーディングエンベロープを生成するためにフォワーディングプロセッサ５８に入手可能なネットワークアドレスの事前に定義されたテーブルにするポインタである。
【００４９】
パケットルートルックアップおよび分類要求に対する提起および応答アーキテクチャを説明した。当業者には、本明細書で開示された発明の概念から逸脱することなく、上述した技術に対する他の変更および変形が可能であることが明らかとなろう。したがって、本発明は、添付の特許請求の範囲によってのみ限定されるものと見なされなければならない。
【図面の簡単な説明】
【図１】本発明によるパケット分類エンジンを組込んだネットワークスイッチのブロック図である。
【図２】図１のネットワークスイッチにおけるラインインタフェースのブロック図である。
【図３】図２のラインインタフェースにおけるパケットフォワーディングエンジンのブロック図である。
【図４】図３のフォワーディングエンジンにおけるパケットヘッダディストリビュータ特定用途向け集積回路（ＡＳＩＣ）のブロック図である。
【図５】図４のパケットヘッダディストリビュータＡＳＩＣにおけるルートおよび分類エンジンのブロック図である。
【図６】図５のルートおよび分類エンジンに渡されるルートおよび分類要求の構成の図である。
【図７】図５のルートおよび分類エンジンによって提供されるルートおよび分類結果の構成の図である。
【図８】図５のルートおよび分類エンジンによって提供されるステータス指示の構成の図である。
【図９】図５のルートおよび分類エンジンにおけるパケット分類エンジン（ＰＣＥ）のブロック図である。
【図１０】図５のルートおよび分類エンジンにおけるルートルックアップエンジン（ＲＬＥ）のブロック図である。
【図１】
0003640299.tif 000005
【図２】
0003640299.tif 000006
【図３】
0003640299.tif 000007
【図４】
0003640299.tif 000008
【図５】
0003640299.tif 000009
【図６】
0003640299.tif 000010
【図７】
0003640299.tif 000011
【図８】
0003640299.tif 000012
【図９】
0003640299.tif 000013
【図１０】
0003640299.tif 000014