(57)【特許請求の範囲】
【請求項１】
パケット分類装置であって、
パケット分類要求者によって処理されているパケットからの情報を含むパケット分類要求を受信するように動作する入力インタフェースロジックと、
規則メモリエントリを記憶するように動作する規則メモリであって、前記各規則メモリエントリが演算子（ｏｐｅｒａｔｏｒ）と判定基準メモリポインタとを含む、該規則メモリと、
判定基準メモリエントリを記憶するように動作する判定基準メモリであって、各判定基準メモリエントリが判定基準を含むような該判定基準メモリと、
前記パケット分類要求者にパケット分類結果を提供するように動作する出力インタフェースロジックと、
前記受信したパケット分類要求に応答して、
（ｉ）前記規則メモリからの規則メモリエントリを検索し、
（ｉｉ）前記検索した規則メモリエントリ内の前記判定基準メモリポインタによって規定される位置において、前記判定基準メモリからの判定基準メモリエントリを検索し、
（ｉｉｉ）前記検索した規則メモリエントリ内の前記演算子によって規定される演算であって、前記演算が、前記パケット分類要求からの前記パケット情報と、前記検索した判定基準メモリエントリからの前記判定基準とに基づいて実行されている、該演算を実行し、
（ｉｖ）前記演算を実行した結果を反映するパケット分類結果を生成するように動作する制御ロジックとを備えるパケット分類装置。
【請求項２】
前記規則メモリは、第１のタイプ及び第２のタイプの両方の規則メモリエントリを記憶するように動作し、前記各第１のタイプの規則メモリエントリは演算子と判定基準メモリポインタとを含み、前記各第２のタイプの規則メモリエントリは、規則メモリポインタを含み、
前記制御ロジックは、前記受信したパケット分類要求に応答して、
（ｉ）前記検索した規則メモリエントリが前記第１のタイプのエントリ、前記第２のタイプのエントリのいずれであるかを判定し、
（ｉｉ）前記検索した規則メモリエントリが前記第１のタイプのエントリである場合には、前記判定基準メモリエントリを検索して、前記規定された演算を実行し、
（ｉｉｉ）前記検索した規則メモリエントリが第２のタイプのエントリである場合には、前記第２のタイプのエントリに含まれる前記規則メモリポインタによって規定される位置において別の規則メモリエントリを検索し、新しく検索された規則メモリエントリに対して、上記のステップを繰返し行い、
（ｉｖ）全ての検索した第１のタイプのエントリによって規定される各演算を実行した結果を反映するパケット分類結果を生成するように動作する、請求項１に記載のパケット分類装置。
【請求項３】
前記制御ロジックはさらに、終了の指示があるまで、さらに別の規則メモリエントリに対してステップ（ｉ）〜（ｉｉｉ）を繰返し行うように動作する、請求項１に記載のパケット分類装置。
【請求項４】
前記終了の指示は、検索した規則メモリエントリ内のアサートされたＤＯＮＥビットである、請求項３に記載のパケット分類装置。
【請求項５】
前記制御ロジックは、前記検索したパケット分類要求に含まれる規則メモリアドレスに基づいて、前記規則メモリエントリを検索するように動作する、請求項１に記載のパケット分類装置。
【請求項６】
前記制御ロジックによって検索された前記規則メモリエントリは、第１の規則メモリエントリであり、前記制御ロジックは、前記受信したパケット分類要求に含まれる第１の規則メモリアドレスに基づいて、前記第１の規則メモリエントリを選択するように動作し、前記制御ロジックはさらに、前記受信したパケット分類要求に同様に含まれる第２の規則メモリアドレスに基づいて、第２の規則メモリエントリを選択し、前記第２の規則メモリエントリに対してステップ（ｉ）〜（ｉｉｉ）を繰返し行うように動作する、請求項１に記載のパケット分類装置。
【請求項７】
前記規則メモリエントリは、前記規則メモリエントリが、第２の規則メモリエントリとの複合規則を形成する第１の規則メモリエントリであるか否かを示すＣＡＲＲＹ指示子を含み、前記制御ロジックは、前記パケット分類結果が、前記第１及び前記第２の規則メモリエントリの両方に対する前記演算の結果を反映するように、前記第２の規則メモリエントリに対してステップ（ｉ）〜（ｉｉｉ）を繰返し行い、ステップ（ｉｖ）において前記パケット分類結果を生成するように動作する、請求項１に記載のパケット分類装置。
【請求項８】
前記判定基準メモリエントリ内の前記判定基準、及び前記要求内の前記情報は、ネットワークアドレスである、請求項１に記載のパケット分類装置。
【請求項９】
ハードウエアサーチエンジンにサーチ判定基準を保持するために用いられる１組の判定基準メモリ内の空間を管理する方法であって、
前記判定基準メモリの種々の構成の順序を保持する過程であって、前記構成が前記各構成を用いて判定基準メモリエントリを記憶するために必要とされる判定基準メモリ記憶空間の総量に準じて順序付けされるような該保持する過程と、
前記種々の構成に従って判定基準メモリエントリを記憶するための前記判定基準メモリ内の空間の利用可能性を指示する１組のリストを保持する過程と、
所与のサーチを実行するために、前記構成のいずれが、前記サーチに必要とされる判定基準メモリエントリを記憶する判定基準メモリ記憶空間の最低量しか必要としない最小構成であるかを判定する過程と、
前記リストによって指示されるように、最小の利用可能な構成をサーチする過程であって、前記最小構成で開始し、最初の前記利用可能な最小構成が見つかるまで、判定基準メモリ空間の消費が増加する順序に進行するようなサーチする過程と、
前記サーチのために必要とされる前記判定基準メモリエントリを記憶するために、前記最小の利用可能な構成を割り当て、前記割り当てられた構成が利用可能でなくなることを示すために、利用可能性のリストを更新する過程とを有する、方法。
【請求項１０】
前記最小構成以外の構成が割り当てられる場合には、前記割り当てられた構成のうちの不要な部分が、別の判定基準メモリエントリに割り当てることができる異なる構成として用いることができるか否かを判定する過程と、前記異なる構成の前記利用可能性を示すために前記利用可能性のリストを更新する過程とをさらに有する、請求項９に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ通信ネットワークの分野に関する。
【０００２】
【従来の技術】
データ通信ネットワークでは、交換器のようなネットワーク装置を用いて、パケットをネットワーク内にルーティングする。各交換器は典型的には多数の回線インタフェースを有し、各インタフェースは、異なるネットワークセグメントに接続される。所与の回線インタフェースにおいてパケットが受信されるとき、転送ロジックは、そのパケットがどの回線インタフェースから送信されるべきかを判定し、そのパケットは適当な出力回線インタフェースに移送されて、ネットワーク内の行先に向けて送出される。
【０００３】
交換器のようなネットワーク装置においては、パケットフィルタリングを実行することが知られている。パケットフィルタリングを用いて、トラフィックモニタ及びセキュリティ目的のような、種々のネットワーク管理を行うことができる。フィルタリング判定基準はネットワーク管理者によって確立され、フィルタリング動作を実行する交換器或いは他の装置に提供される。交換器によって受信されたパケットは、その特性が任意の確立されたフィルタについての判定基準に適合するか否かを判定するために検査される。１つ或いは複数のフィルタのための判定基準を満足するパケットの場合、そのフィルタに関連する所定の動作が実行される。例えば、ある状況下では、所与のネットワークノードから発信するパケットは、ネットワーク内に転送されずに破棄されることが望ましい場合もある。パケットソースアドレスが、そのパケットが破棄されるべきであるノードのアドレスである特定の値に正確に一致するという判定基準を有するフィルタを定義することができる。そのフィルタに関連する動作は、パケットを破棄することである。ソースアドレスがこの判定基準を満足するパケットを受信するとき、そのパケットは、通常通りに転送されずに破棄される。
【０００４】
パケットをフィルタリングするために用いる場合がある、多数の異なる種類の判定基準が存在する。これらの判定基準は、厳密な一致と、範囲検査、すなわちパケット内の値がある範囲内の値に入るか否かの検査とを含む。ソースアドレス、行先アドレス、ポート識別子、サービスタイプ等のような多数のパケットパラメータを判定基準として用いることができる。実用的にするためには、パケットフィルタリングプロセスによって、そのフィルタが、これらの判定基準と他の判定基準からなる異なる組み合わせを用いて、柔軟に定義されなければならない。
【０００５】
パケットフィルタリングに固有の複雑さのため、この処理は従来から、パケットフィルタリングをサポートする交換器或いは他のネットワーク装置内のソフトウエアにおいて、広範に或いは排他的に実行されてきた。しかしながら、ソフトウエア系のフィルタリングは、高いパケット転送性能が要求されるときに欠点を露呈する。例えば、従来のシステムは回線速度で信頼性のある（robust）パケットフィルタリングを実行できなかったため、ネットワーク管理者は、ネットワーク応答性とネットワークセキュリティとの間でトレードオフを余儀なくされており、問題となっていた。
【０００６】
【発明が解決しようとする課題】
本発明によれば、パケットフィルタリングを行うために高速のパケット分類を提供する、ネットワーク装置内のパケット処理ロジックが開示される。その分類装置のアーキテクチャは、複雑なフィルタ判定基準の定義において実質的な柔軟性を提供する。十分に高い速度でロバストフィルタリングを実行し、パケット転送性能が低下するのを避けることができる。
【０００７】
【課題を解決するための手段】
パケット分類装置は、規則メモリと判定基準メモリとを備える。１つのタイプの規則メモリエントリは、判定基準メモリエントリに対する演算子及びポインタを含む。演算子は、ＥＱＵＡＬ（厳密な一致）或いはＬＥＳＳ  ＴＨＡＮのような、実行されることになる比較演算を定義する。判定基準メモリエントリは、比較の一方の辺の被比較数として用いられる１つ或いは複数の値を含み、受信したパケットからの対応する値は、比較の他の辺に現れる。例えば、判定基準メモリからの１つの被比較数は、ソースアドレスを表す。この値は、受信したパケットのソースアドレスフィールド内に現れる値と比較される。
【０００８】
制御ロジックはパケット分類要求に応答して、規則メモリからの規則メモリエントリを検索し、規則メモリエントリにおいて判定基準メモリポインタによって識別された判定基準メモリエントリを検索し、判定基準メモリエントリの値及び分類要求に含まれる対応する値において、規則メモリエントリの演算子によって規定される演算を実行する。この手順は、一定の終了条件が満たされるまで、一連の規則メモリエントリに対して繰返し行われ、その結果、その分類演算の結果を反映して、パケット分類結果が生成される。この結果はパケットプロセッサに提供され、その分類結果に基づいて適当な動作が行われる。
【０００９】
【発明の実施の形態】
本発明の他の態様、特徴及び利点は、以下の詳細な説明において開示される。
【００１０】
図１には、ネットワーク交換器１０が、各ネットワークセグメント１４に接続される多数の回線インタフェース１２を備えるものとして示される。回線インタフェース１２は、パケット転送のための回線インタフェース１２の間の接続部を提供するために用いられる交換器構造部１６に接続される。交換器構造部１６の動的な構成を含む、交換器１０の全動作は、交換器制御部１８によって制御される。一般に、種々のネットワークセグメント１４は異なるタイプからなる場合がある。例えば、ネットワークセグメント１４のうちのあるものは、ＯＣ−３／ＳＴＭ−１及びＯＣ−１２／ＳＴＭ−４のような種々の標準的なシグナリング速度のうちの任意の速度で動作する光学的なリンクであり得る。ネットワークセグメント１４の他のものは、例えば同軸ケーブルを用いて、種々のフォーマットの信号を搬送する非光学的なリンクであってもよい。
【００１１】
言うまでもなく、各回線インタフェース１２は、接続される特定のタイプのネットワークセグメント１４で動作するために設計される。各回線インタフェース１２の主なタスクは、取り付けられたネットワークセグメント１４から受信したパケット或いはフレームを、他の回線インタフェース１２に取り付けられたネットワークセグメント１４上で転送するために、交換器構造部１６を介して別の回線インタフェース１２に転送することと、取り付けられたネットワークセグメント１４上で転送するために、交換器構造部１６を介して他の回線インタフェース１２からパケットを受信することである。
【００１２】
図２は、１つのタイプの回線インタフェース１２の構造を示す。このインタフェースは、４つの個別の光インタフェースポートを含み、各ポートは、物理的な入力／出力及びフレーム処理回路２０と、転送エンジン２２とを備える。転送エンジン２２は、交換器構造部インタフェースロジック２４に接続され、インタフェースロジック２４は図１の交換器構造部１６とのインタフェースを構成する。また転送エンジンは、回線インタフェースＩ／Ｏプロセッサ（ＩＯＰ）２６とのインタフェースも構成する。タイミング制御ロジック２８及びＤＣパワー回路３０も備えられる。
【００１３】
各転送エンジン２２は、接続される物理Ｉ／Ｏブロック２０と交換器構造部インタフェース２４との間の双方向データパスを提供する。受信されたパケットは、図１の交換器構造部１６を介して別の回線インタフェース１２に転送するために、多数の固定サイズのＡＴＭ型のセルにセグメント化される。交換器構造部インタフェース２４を介して交換器構造部１６から受信されたセルは、接続される物理Ｉ／Ｏブロック２０への転送を行うために、パケットに再構成される。
【００１４】
ＩＯＰ２６は、バックグラウンド機能、すなわちパケット毎には実行されない、パケットの転送をサポートする機能を実行する汎用プロセッサである。ＩＯＰ２６によって実行される１つの機能は、図１の交換器制御部１８からパケット転送情報及びパケットフィルタリング情報を受信し、転送エンジン２２にその情報を分配することである。この処理は以下に記載される。
【００１５】
図３は、転送エンジン２２のブロック図を示す。着信セグメント化−再構成（ＳＡＲ）論理ブロック４０は、図２の物理Ｉ／Ｏブロック２０から交換器構造部１６へのデータパスを提供し、発信ＳＡＲ論理ブロック４２は、交換器構造部１６から各物理Ｉ／Ｏブロック２０へのデータパスを提供する。各ＳＡＲ４０、４２は、セグメント化機能及び再構成機能を実行する際に用いられる各制御メモリ４４、４６と、各パケットメモリ４８、５０に接続される。
【００１６】
ＳＡＲ装置４０、４２はともに、６４ビットＰＣＩバス５４を介して、パケットヘッダ分配器（ＰＨＤ）特定用途向け集積回路（ＡＳＩＣ）５２に接続される。以下に詳細に記載するように、ＰＨＤ  ＡＳＩＣ５２は、ＰＣＩバス５４と個別の６４ビットバス５６との間のＦＩＦＯキューインタフェースを提供する。バス５６は、ＰＨＤ  ＡＳＩＣ５２を転送プロセッサ（ＦＰ）５８及び転送プロセッサメモリ６０と接続する。またＰＨＤ  ＡＳＩＣ５２は、個別のバス６２によって図２のＩＯＰ２６にも接続される。
【００１７】
図４は、図３のＰＨＤ５２の構造を示す。１組の受信キュー、すなわちＲＸキュー６４は、ＦＰ５８に向かうパケットヘッダ及び他の情報を一時的にバッファリングするために用いられる。図のように、ＲＸキュー６４は４つあり、２つが高優先度のトラフィック用であり、残りの２つは低優先度のトラフィック用である。高優先度トラフィックの一例は、約束された速度（committed rate）のような、高品質のサービス（ＱＯＳ）保証（High Quality of Service guarantee）を有するトラフィックである。低優先度のトラフィックは、最善努力（best-efforts）のような、低いＱＯＳ保証しかもたないか、或いは全く保証がないトラフィックである。各優先度レベルの場合に、着信ＳＡＲ４０から生じるトラフィック用の１つのキュー（「０」を付される）と、発信ＳＡＲ４２から生じるトラフィック用の別のキュー（「１」を付される）とが存在する。１組の送信キュー、すなわちＴＸキュー６６は、ＦＰ５８からＳＡＲ４０、４２に向かうパケットヘッダ及び他の情報を一時的にバッファリングするために用いられる。ルーティング及び分類エンジン６８は、ＦＰ５８に代わって、経路探索及び種々のパケットフィルタリング検査を実行する。パケットフィルタリング動作は以下に記載される。ルーティング及び分類エンジン６８は、信号線６９を介してキュー６４、６６から状態情報を受信し、以下のようにして、ＦＰ５８においてこの情報を利用できるようにする。
【００１８】
転送エンジン２２の全動作が、図３及び図４を参照して記載されるであろう。パケットは、図２の関連する物理層回路２０から着信ＳＡＲ４０によって受信され、パケットメモリ４８に記憶される。着信ＳＡＲ４０は、パケットヘッダを、ＰＨＤ５２内の適当なＲＸキュー６４の１つに転送する。ＦＰ５８はＰＨＤ５２をポーリングしてキュー状態を判定するとともに、適宜ＲＸキュー６４からのパケットヘッダを検索する。ヘッダ処理の一部として、ＦＰ５８は、ルーティング及び分類要求において、各ヘッダからの一定の情報要素を、ルーティング及び分類エンジン６８に送出する。ルーティング及び分類エンジン６８は、その要求内のヘッダ要素に対する経路探索及び種々のパケットフィルタリング検査を実行し、これらの検査の結果を、結果キュー（以下に記載する）に入れる。ＦＰ５８は、結果キューから経路探索及び分類結果を取得し、これらの結果を用いて、そのパケットのための新しいヘッダを作成する。その新しいヘッダは、セグメント化した後にパケットが転送されることになる内部回路を特定する情報とともに、ＴＸキュー６６の１つを介してＰＨＤ５２に返送される。着信ＳＡＲ４０は新しいヘッダを検索し、受信したパケットのペイロード部分とともにそのヘッダをパケットメモリ４８に入れ、新しいパケットをセグメント化し、その結果として生成されたセルを、ＦＰ５８によって特定された内部回路上にある図１の交換器構造部１６に転送する。
【００１９】
発信方向では、発信ＳＡＲ４２が図１の交換器構造部１６からパケットを受信し、これらのパケットを再構成してパケットメモリ５０に入れる。パケットヘッダはＰＨＤ５２に送出され、ＦＰ５８によってＰＨＤ５２から検索される。大部分のパケットの場合、経路探索及びフィルタリング検査は、着信処理中に既に行われているため、これらの動作は繰返し行われない。しかしながらプロトコルによっては、着信及び発信の両方の場合に探索及びフィルタリングを必要とするため、これらの動作は、ルーティング及び分類エンジン６８とともに、ＦＰ５８によって任意選択的に実行される。妥当な場合には、ＦＰ５８は、セグメント化された発信パケットが受信される内部回路の同一性に一部基づいて、そのパケットのための新しいヘッダを作成する。この新しいヘッダは、送信回路情報とともに、ＰＨＤ５２に書き込まれる。ＰＨＤ５２は、新しいヘッダを、発信ＳＡＲ４２に転送する。発信ＳＡＲ４２は、この新しいヘッダをパケットペイロードとともにパケットメモリ５０に入れ、そのパケットを、図２の関連する物理層インタフェース２０に送信する。
【００２０】
図５はルーティング及び分類エンジン６８の構造を示す。図３のＦＰ５８からの要求は、１つの要求キュー７０に入れられ、１つの結果キュー７２において結果が返送される。各キュー７０及び７２は、１６個までの要求／結果エントリを保持する。ルート探索エンジン（ＲＬＥ）７４は、典型的にはヘッダに含まれる行先アドレス（ＤＡ）に基づいて、経路探索を実行する。パケット分類エンジン（ＰＣＥ）７６は、パケットヘッダに含まれる特定の情報に基づいて、パケットフィルタリング検査を実行する。ＰＣＥ７６の動作が以下に詳細に記載される。入力ＦＩＦＯバッファ７８は、要求キュー７０と、ＲＬＥ７４及びＰＣＥ７６それぞれとの間に配置され、出力ＦＩＦＯバッファ８０は、ＲＬＥ７４及びＰＣＥ７６それぞれと、結果キュー７２との間に配置される。ＦＩＦＯ７８及び８０は、ＲＬＥ７４によって実行される処理と、ＰＣＥ７６によって実行される処理との間を分割する手段を提供する。マルチプレクサ８１によって、ＦＰ５８は、結果キュー７２、或いは要求キュー７０、結果キュー７２及び図４の信号線６９上に現れる状態情報からの状態を含む状態情報のいずれかを読み出すことができるようになる。これらのエントリの構造が以下に記載される。
【００２１】
図６は、図５の要求キュー７０を介してＰＣＥ７６及びＲＬＥ７４に渡されるルーティング及び分類要求の構造を示す。その要求のサイズは、４つの６４ビットワードである。種々のフィールドが以下に定義される。
【表１】
0003734704.tif 000002
【００２２】
上記の表に示されるように、個別の２組の分類検査のための規定があり、１つは「ＰＣＥ  Ｒｏｏｔ０」を付されるアドレスで開始し、もう１つは「ＰＣＥ  Ｒｏｏｔ１」で開始する。これらの個別の開始アドレスの重要性が以下に記載される。
【００２３】
上記のように、その要求の適切なフィールドが、図５のＲＬＥ７４及びＰＣＥ７６のための各入力ＦＩＦＯ７８に供給される。Ｒｅｑ．ＩＤ及びＩＰ．Ｄｅｓｔ．Ａｄｄｒのようなフィールドのうちのいくつかは、ＲＬＥ７４及びＰＣＥ７６の両方に供給される。他のフィールドは一方にのみ供給される。特にＰＣＥにルーティングされるフィールドの使用法が以下に記載される。
【００２４】
図７及び図８は、図４のルーティング及び分類エンジン６８から読み出される２つの異なるタイプのエントリの各構造を示す。図７は、図５の結果キュー７２から得られ、分類サーチの結果を搬送する結果エントリを示す。図８は、図３のＦＰ５８に状態情報を搬送するために用いられる状態エントリを示す。
【００２５】
図７に示される結果エントリのフィールドは以下のように定義される。
【表２】
0003734704.tif 000003
【００２６】
図８に示される状態エントリのフィールドは以下のように定義される。
【表３】
0003734704.tif 000004
【００２７】
ルーティング及び分類エンジン６８の全体的な動作が、図５〜図８を参照して以下に記載される。図３のＦＰ５８は、探索及び分類要求を、要求キュー７０に書き込む。要求が要求キュー７０の先頭に達するとき、その要求からの種々の情報要素は、ＲＬＥ７４及びＰＣＥ７６のための各入力ＦＩＦＯ７８に同時に書き込まれる。ＲＬＥ７４及びＰＣＥ７６は独立して各要求の個別の部分において動作し、一般に、異なる時間で、所与の要求に対する各処理動作を終了する。これらの動作の結果が、出力ＦＩＦＯ８０に書き込まれる。所与のパケットに対する両方の結果の組が、出力ＦＩＦＯ８０の先頭に達したとき、１つの組み合わされた結果が、結果キュー７２に書き込まれる。その組み合わされた結果はＦＰ５８によって読み出され、それを用いてＦＰ５８は、上記のように、図３のＳＡＲ４０及び４２のための新しいパケットヘッダ及び回路情報を作成する。
【００２８】
より詳細には、ＦＰ５８は、バッチ形式でルーティング及び分類エンジン６８を用いる。要求キュー７０内に十分な空間があるとき、一連の要求、１）４つの結果エントリ、２）３つの結果エントリと後続する１つの状態エントリ、３）２つの結果エントリと後続する２つの状態エントリ、４）１つの結果エントリと後続する３つの状態エントリ、５）４つの状態エントリが存在する。
【００２９】
一般にＦＰ５８は、結果キュー７２が空になるまで、読出しコマンドを発行し、１つ或いは複数の状態エントリが結果ブロックに含まれるときには必ず、空であると推定される。その後ＦＰ５８は、ルーティング及び分類エンジン６８が次の要求のバッチを処理している間に、その結果を用いる。ＦＰ５８は、ＲＬＥ７４及びＰＣＥ７６がビジーで保持され、キュー７０及び７２と、ＦＩＦＯ７８及び８０とがオーバーフローするのを防ぐように、状態情報を用いて要求の流れを管理する。
【００３０】
例示される実施形態では、読み出すことができる状態エントリは１つしか存在せず、結果ブロック内に多数の状態エントリが存在する場合には、この１つのエントリに対して何度も読出しが行われたことを表すことに留意されたい。別の実施形態では、例えば統計情報を収集するために、或いは他のバックグラウンド処理を行うために、第２〜第４の状態エントリにおいて付加的な低優先度の情報を供給することが有用な場合もある。
【００３１】
結果に状態情報を付加する１つの重要な利点は、ＦＰバス５６を用いる際の効率が改善されることである。ＦＰ５８が結果の読出しコマンドを発行するときはいつでも、有効な結果情報或いは有効な状態情報のいずれかが返送される。さらに、結果ブロックはバースト形式で返送され、読出しに関するオーバーヘッドを低減できるようにする。またＦＰ５８は、１つの読出しトランザクションにおいてＲＬＥ７４及びＰＣＥ７６キューのついての情報と、ＲＸキュー６４及びＴＸキュー６６についての情報とを取得する。
【００３２】
図９は、図５のＰＣＥ７６の構造を示す。フィルタ及び結合子（以下に記載する）を表すデータは、規則メモリ（ＲＭ）８２及び判定基準メモリ（ＣＭ）８４に記憶される。ＣＭ８４は、３つの一般的にアドレス指定されたメモリＣＭ０  ８６、ＣＭ１  ８８及びＣＭ２  ９０を備える。３つの比較論理ブロック９２、９４及び９６は、判定基準メモリ８６、８８及び９０にそれぞれ関連する。アドレス指定及び制御ロジック９８は、図５の要求キュー７０から受信した要求を復号化して、ＲＭ８２及びＣＭ８４のためのアドレスを生成し、各要求によって要求されるような多数の規則を通して配列され、図５の結果キュー７２に渡される結果を生成する。またそのアドレス指定及び制御ロジック９８は、図３のＩＯＰ２６に対するインタフェースも形成し、ＩＯＰ２６によってＲＭ８２及びＣＭ８４を読出し及び書込みできるようにする。バストランシーバ１００は、ＩＯＰ２６とＲＭ８２及びＣＭ８４との間の必要なデータパスを提供する。ＡＮＤゲート１０２は、比較論理ブロック９２、９４及び９６からの対応するＭＡＴＣＨｎ出力が全て真であるとき、１つのＭＡＴＣＨ信号を与える。
【００３３】
パケットフィルタリングのための規則の組は典型的には、ネットワーク管理ステーション（ＮＭＳ）によって発信されるが、特定された流れに基づいてＦＰ５８によって動的に割り当てることもできる。以下の情報の一部或いは全部が、フィルタのためにＮＭＳ或いはＦＰ５８によって供給される。その情報は、マスクを有するＩＰ行先アドレス、マスクを有するＩＰソースアドレス、ＩＰプロトコル識別子、ＴＣＰ／ＵＤＰソースポート及び行先ポート識別子、サービス識別子のＩＰタイプ及びマスク、種々のフラグである。そのパケットがフィルタ判定基準と一致するか否かを判定するために、フィルタからの種々の情報要素が、受信された各パケットからの対応する要素と比較される。一致する場合には、パケットがその行先に向けて進めるようにする動作のような、いくつかのデフォルト動作が典型的には行われる。
【００３４】
従来通りに、パケットフィルタは、線形にサーチされる比較の組からなる順序付けされたリストとして表される。ＰＣＥ７６では、フィルタ要素は、判定基準（比較値）及び規則（リスト自体及び各比較のために用いられる演算子）に分割される。この規則と判定基準の分離は、個別の規則メモリ（ＲＭ）８２及び判定基準メモリ（ＣＭ）８４を使用する際に反映される。メモリ８２及び８４は各機能のために個別に最適化され、その結果、効率及び性能が改善される。また、ＣＭ８４内のエントリは、ＲＭ８２内の多数の規則によって参照されることができ、さらに記憶効率が高められる。
【００３５】
ＲＭ８２は、規則メモリエントリのアレイを含み、各エントリは２つのタイプのうちの１つであり得る。第１のタイプは、１組の演算子と、対応するフィルタのための被比較数を記憶するＣＭ８４の行へのポインタとを含む。第２のタイプは、別の規則メモリエントリへのポインタを含む。これらのエントリを用いて、順次サーチされる１組の規則において、不連続のセグメント間でジャンプを行う。例示される実施形態では、ＲＭ８２は１６Ｋまでのエントリを含むことができる。
【００３６】
ＣＭ８４は、３つの個別のメモリＣＭ０  ８６、ＣＭ１  ８８及びＣＭ２  ９０にセグメント化され、例示される実施形態では、各メモリは４Ｋまでのエントリを含むことができる。ＣＭ８４の機構は、ＩＰパケット分類において固有の階層を利用する。一定のフィールド上でのフィルタリングは通常、同様に他のフィールドに基づくフィルタリングを伴うので、個別のメモリＣＭ０、ＣＭ１及びＣＭ２内にどのフィールドが記憶されるかを限定することが望ましい。これらの限定によって、さらに記憶効率が高められる。大部分の一般的にフィルタリングされたフィールド、ソースアドレス及び行先アドレスは、３つの全てのメモリＣＭ０  ８６、ＣＭ１  ８８及びＣＭ２  ９０においてサポートされる。以下に記載するように、他のフィールドは、ＣＭ１  ８８及び／またはＣＭ２  ９０においてのみサポートされる。このアーキテクチャは、ＣＭ８４内の空間を割り当てることができる自由度を最大限にすると同時に、効果的な並列サーチを可能にする。ＣＭ８４の構造及び使用法は、より詳細に以下に記載される。
【００３７】
図１０は、規則メモリエントリとも呼ばれる、図９のＲＭ８２内のエントリの構造を示す。各３９ビットエントリは、１ビットのタイプフィールドを有する。このフィールドが１の場合には、エントリのビット１３〜０は、ＲＭ８２内の別の位置へのポインタ、すなわち別の規則メモリエントリへのポインタを含む。このフィールドが０である場合には、そのエントリはフィルタ検査を実行するための情報を含む。この場合には、ビット１１〜０は、検査のためのオペランドが見出される、ＣＭ８４の行のアドレスを含んでおり、ビット３５〜１２は、その要求からの、各オペランド及びフィールドにおいて実行される動作の符号化ビットを含む。これらの動作は以下に詳細に記載される。ビット３６は、例えば範囲検査を実行するための複合規則を形成するために用いられるキャリービットである。キャリービットが０である場合には、その規則はそれ単独で評価される。キャリービットが１である場合には、その規則は、次の規則も真と評価する場合にのみ、真と評価する。ビット３７は、要求の一部として検査される規則の列の最後に到達したことを示す終了（Done）ビットである。
【００３８】
判定基準演算子フィールドは、８つの３ビット論理演算子コードを含む。各演算子コードは、その要求及び判定基準メモリエントリから選択される対応する被比較数において実行される演算を規定する。判定基準メモリエントリのフィールドが以下に記載される。被比較数に対する判定基準演算子ビットの割当ては、以下の通りである。
３５〜３３      ＣＭ０  ＳＡ／ＤＡフィールド
３２〜３０      ＣＭ１プロトコルフィールド
２９〜２７      ＣＭ１ソースポートフィールド
２６〜２４      ＣＭ１  ＳＡ／ＤＡ或いはＤＰフィールド
２３〜２１      ＣＭ２プロトコルフィールド
２０〜１８      ＣＭ２  ＴＯＳ或いはマスクフィールドを有するＴＯＳ
１７〜１５      ＣＭ２ソースポート或いはマスクフィールドを有するフラグ
１４〜１２      ＣＭ１  ＳＡ／ＤＡ或いはＳＰ或いはＤＰフィールド
【００３９】
演算子コードは実行される比較を規定しており、その場合、要求からの被比較数は演算子の左側にあり、判定基準メモリエントリからの被比較数は右側にある。例えば、演算子が「＞」である場合には、評価される式は、（要求データ＞判定基準データ）である。演算子コードは以下の通りである。
０００      Ｇｒｅａｔｅｒ  ｔｈａｎ（〜より大きい）
００１      Ｌｅｓｓ  ｔｈａｎ（〜より小さい）
０１０      Ｅｑｕａｌ（〜に等しい）
０１１      Ｎｏｔ  Ｅｑｕａｌ（〜に等しくない）
１ｘｘ      Ｄｏｎ‘ｔ  ｃａｒｅ（未定義、すなわち被比較数値に関わらず強制的に真）
【００４０】
判定基準演算子を用いて、以下に記載するように、比較論理ブロック９２、９４及び９６内のロジックを構成する。
【００４１】
図１１は、図９のＣＭ０  ８６におけるエントリの構造を示す。各エントリは、３８ビット長である。１つのビット、すなわち、ビット３７を用いて、そのエントリのための２つの可能な構成を、３２ビットソースアドレス（ＳＡ）か、或いは３２ビット行先アドレス（ＤＡ）のいずれかとして区別する。ビット３１〜０は、対応するフィルタによって必要とされるＳＡ或いはＤＡ値を含む。ビット３６〜３２は、エントリ内のＳＡ／ＤＡと、その要求のＳＡ／ＤＡとの間の比較の範囲を制限するために用いられる５ビットの符号化されたマスク値を含む。マスクの使用法は以下に詳細に記載される。
【００４２】
図１２は、図９のＣＭ１  ８８内のエントリの構造を示す。各エントリは４７ビット長である。ビット４６〜４５に示されるように、４つの異なる構成を取り得る。ＰＴＣＬフィールドは、４つの全ての構成においてＩＰプロトコルを特定する。構成２及び３の１６ビットのＳＰ及びＤＰはそれぞれ、ソースポート識別子及び行先ポート識別子を表す。ビット３６〜３２の内容は、構成２及び３では未定義である。
【００４３】
図１３は、図９のＣＭ２  ９０内のエントリの構造を示す。各エントリは５１ビット長である。ビット５０〜４８に示されるように、８つの異なる構成を取り得る。構成２〜７のＴＯＳフィールドは、サービスのＩＰタイプを特定する。構成３〜７では、ＴＯＳマスクフィールドは、以下のように、ＴＯＳ比較の範囲を限定するために用いられる８ビットマスクを含む。８ビットＦＬＡＧＳフィールドは、ＴＣＰ／ＵＤＰパケットからの対応するビットに対して比較されるフラグ値を含む。８ビットＦＬＡＧ  ＭＳＫフィールドは、以下のように、ＦＬＡＧＳ比較の範囲を限定するために用いられる。
【００４４】
図１４は、比較論理ブロック９２、９４及び９６の全般的な構造を示す。２つ以上の比較器ロジック１０４−１、．．．１０４−ｎのブロックを用いて、多数の比較を平行して実行し、その場合に、各比較は、要求の所与のフィールドと判定基準メモリエントリの対応するフィールドとの間で行われる。ＣＭ０  ８６の場合の比較ロジック９２では、例えば、２つの比較器論理ブロック１０４が用いられ、１つは要求のソースアドレスフィールド用であり、もう１つは要求の行先アドレスフィールド用である。ＣＭ１  ８８の場合の比較ロジック９４は、ソースアドレス、行先アドレス、ＩＰプロトコル、ソースポート及び行先ポートのための比較器論理ブロック１０４を含む。ＣＭ２  ９０の場合の比較ロジック９６は、ソースアドレス、行先アドレス、ＩＰプロトコル、ソースポート、行先ポート、マスクのないサービスタイプ、マスクのあるサービスタイプ及びフラグのための比較器論理ブロック１０４を含む。
【００４５】
比較器論理ブロック１０４からの出力は、ＮＯＴ  ＥＱＵＡＬ（〜と等しくない：≠）、ＥＱＵＡＬ（〜と等しい：＝）、ＬＥＳＳ  ＴＨＡＮ（〜より小さい：＜）及びＧＲＥＡＴＥＲ  ＴＨＡＮ（〜より大きい：＞）のための指示を含む。これらの信号は、ＤＯＮ'Ｔ  ＣＡＲＥ機能を実施するために用いられる論理「１」とともに、各セレクタ１０６−１、．．．１０６−ｎの入力に供給される。セレクタ１０６は、制御入力として、演算子タイプ規則メモリエントリから演算子を受信する。これらの演算子は、上記のように、規則メモリエントリのビット３５〜１２内に存在する。
【００４６】
セレクタ１０６の各出力は別のセレクタ１０８に供給され、セレクタは、判定基準メモリエントリからの構成ビットに基づいて、セレクタ１０６の出力の種々の組み合わせの中から選択を行う。例えば、ＣＭ０の場合の比較ロジック９２では、構成セレクタ１０８は、判定基準メモリエントリのビット３７の値に基づいて、ＳＡ比較結果とＤＡ比較結果との間で選択を行う。他の比較論理ブロック９４及び９６内の構成セレクタ１０８も同様に動作する。構成セレクタ１０８からの出力信号ＭＡＴＣＨは、その要求内のデータが、各判定基準メモリ８６、８８或いは９０からの判定基準を満足するか否かを示す。図９に示されるように、比較ブロック９２、９４及び９６からのＭＡＴＣＨ出力はＡＮＤゲート１０によって互いにＡＮＤを取られ、分類動作を制御するために、アドレス指定及び制御ロジック９８に１つのＭＡＴＣＨ指示を与える。
【００４７】
図１５は、比較器論理ブロック１０４の全般的な構造を示す。ＥＱＵＡＬ比較器１１０は、２つの被比較数が等しいか否かを判定し、ＬＥＳＳ  ＴＨＡＮ比較器１１２は、被比較数の一方が他方の被比較数より小さいか否かを判定し、ＧＲＥＡＴＥＲ  ＴＨＡＮ比較器１１４は、被比較数の一方が他方の被比較数より大きいか否かを判定する。ＥＱＵＡＬ比較１１０からの出力は、インバータ１１６によって反転され、ＮＯＴ  ＥＱＵＡＬ指示が得られる。
【００４８】
各比較器１１０、１１２及び１１４への入力は、ＣＭ８４からの被比較数（「ＣＭ被比較数」として示される）及び要求からのおそらくマスクされた被比較数（ＲＥＱ被比較数として示される）である。マスク処理ロジックが、関連するマスクを有するフィールドのために用いられる。ＡＮＤゲート１１８は、ビット毎にマスク処理を実施する。Ｆｌａｇｓ  Ｍａｓｋの場合と同様に、マルチビットマスク（「ＣＭマスク」として示される）が直接用いられる場合があり、或いはＳＡ／ＤＡマスクの場合と同様に、復号化されるか、又はエキスパンダロジック１２０により拡張される場合もある。エキスパンダロジック１２０は、５ビットの符号化されたマスク値によって示されるように、多数の後続のビット位置におおいて０を有し、その他の場所では１を有する３２ビット値を生成する。例えば、マスク値が、１０進の１１に等価な２進の０１０１１である場合には、復号化されたマスクは、先行する２１ビット位置において１を有し、後続の１１ビット位置で０を有する１６進のＦＦＦＦＦ８００である。このマスクは、ＳＡ／ＤＡの最上位２１ビットのみが比較結果に作用することを示す。
【００４９】
パケット分類エンジン（ＰＣＥ）７６の動作は、全般に以下のように進む。
１．ＲＭ８２及びＣＭ８４が図２のＩＯＰ２６によって初期化される。これは、動的な割当て、或いはネットワーク管理ステーション（ＮＭＳ）（以下に記載する）のいずれかによって、電源投入時、及び動作中に行われる。
２．ＦＰ５８によって提示されるパケット分類要求が、図５の要求キュー７０から検索される。
３．ＲＭ８２が、その要求のルート０アドレスの内容によって索引付けされ、そのサーチの第１の規則メモリエントリを検索する。そのエントリがポインタタイプである場合には、検索されたエントリ内の規則メモリアドレスに対して、このステップが繰り返される。このステップは、何度も繰り返すことができる。
４．検索された規則メモリエントリが演算子タイプである場合には、判定基準メモリエントリが、規則メモリエントリ内のＣＭアドレスにより規定される位置において検索される。ＣＭ８４からの選択された被比較数が、規則メモリエントリ内の演算子に従って、対応する要求のフィールドと比較される。上記のように、種々のフィールドがマスクされる場合がある。
５．１に設定されたＤＯＮＥビットが到達するか、或いは一致条件が見出される（すなわち比較演算の結果が真になる）まで、規則メモリアドレスが１だけインクリメントされる。ある規則は、ＣＡＲＲＹビットを設定する場合もあり、それは、一致が宣言される前に、次の規則も真であると評価することを要求している。
６．サーチにおいて遭遇する任意の規則メモリエントリが、ポインタタイプのエントリである場合には、判定基準メモリエントリではなく、別の規則メモリエントリを指している。この場合、逐次的な規則評価が継続され、指示される規則メモリエントリで開始される。
７．要求のルート０アドレスで一旦開始されると、上記プロセスが実行される。ルート０に関連するフィルタでＤＯＮＥが到達する場合には、ルート１アドレスで開始して、そのプロセスは繰り返される。一致が見出される場合には、その結果は、その一致がルート０か、ルート１規則を用いて見出されたことを示す。
８．一致を見出すか、或いはルート１サーチにおいてＤＯＮＥを見出すことによって、サーチが終了するとき、結果が、フィルタリング検査の結果を示す結果キュー７２に書き込まれる。その結果は、最後に検査された規則のアドレスを含み、一致が見出されたか否かを含んでいる。一致が見出された場合には、そのアドレスは、その結果に適した動作を開始する、動作テーブルに索引付けするためのＦＰ５８によって用いられる。例えば、その一致が、ある一定の値より小さいＤＡを有する全てのパケットが入ることになることを示す規則の場合には、その動作テーブルは、パケットが意図的に廃棄されるようになるルーチンを指している。
【００５０】
上記のように、ＣＭ８４は、種々の異なる構成において用いることができる。３つのメモリＣＭ０  ８６、ＣＭ１  ８８及びＣＭ２  ９０はそれぞれ、異なる構成を実現するための異なるモードにおいて用いることができる。以下の真理値テーブルは判定基準メモリ８６、８８及び９０の種々の構成モードを用いて実行することができる種々の比較を提供する。「１」は、所与の構成モードを用いて比較を実行できることを示しており、「０」は、比較を実行できないことを示している。
【表４】
0003734704.tif 000005
【００５１】
従って例えば、ＳＡ比較は、ＣＭ０−０、ＣＭ１−０及びＣＭ２−０の任意のものを用いて実行することができる。ＦＬＡＧＳ比較は、ＣＭ２−４〜ＣＭ２−７の任意のものを用いて実行することができる。種々の構成モードの任意のものを用いて所与の比較を実行するための能力は、ＣＭ８４を編成する際に所望の自由度を提供し、それにより効率が高められる。判定基準メモリ空間の割当ては、以下に詳細に記載される。
【００５２】
判定基準メモリ構成情報を符号化する種々の方法を用いることにより、別の実施形態において、記憶効率を高めることができる場合もある。例示される実施形態では、各判定基準メモリエントリのための構成メモリを格納するために、３０ビットが用いられることに留意されたい。これらの３０ビットは、規則メモリエントリ内の演算子コードの２４ビットと、ＣＭ０エントリの１ビットと、ＣＭ１エントリの２ビットと、ＣＭ２エントリの３ビットとを含む。この方式により、ＣＭ０、ＣＭ１及びＣＭ２内の復号化が簡単になる。しかしながら、判定基準メモリエントリのための被比較数及び演算子の全ての実現可能な構成の数は、約３．３×１０6であり、従って２２ビットのみを用いて表すことができる。従って例えば、演算子及び被比較数情報が復号化される各規則メモリエントリにおいて、１つの２２ビット構成フィールドを用いることができる場合もある。しかしながら、そのような実施形態によって必要とされる復号化は、各構成ビットとＣＭ８４の各セクションとの間の一対一の対応関係の欠如により、例示される実施形態よりも、一般的に、より複雑になる。
【００５３】
図１６は、パケットフィルタリング情報が図１の交換器１０において管理され、利用される方法を示す。一般に、パケットフィルタリング情報の情報源は、ネットワーク管理ステーション（ＮＭＳ）であり、典型的には図１の交換器１０から離れて配置される。ＮＭＳは、簡易ネットワーク管理プロトコル（ＳＮＭＰ）のような、ネットワーク管理プロトコルを用いて、図１の交換器制御部１８内に存在する中央演算装置（ＣＰ）と通信を行う。ＣＰは、ＮＭＳからフィルタリング情報を受信し、その情報を分配するために、各回線インタフェース１２のＩＯＰ２６に応答することができる。さらに、ＣＰは不揮発（ＮＶ）記憶装置においてその情報を保持し、ＮＭＳが利用できないときに、交換器１０が動作できるようにする。
【００５４】
ＣＰからＩＯＰ２６に送出されるフィルタリング情報は、（１）それぞれ受信したパケットに適用することができる少数の判定基準を規定するフィルタと、（２）結合子、すなわち交換器１０内の種々のポート及び／または回路と異なるフィルタのグループを関連付ける情報と、（３）フィルタとの関連を有し、フィルタ判定基準が満たされる場合に実行される動作とを含む。
【００５５】
動作時に、ＩＯＰ２６が初期化されるとき、ＣＰは、ＮＶ記憶装置からの現存するフィルタリングテーブルと結合データベースとを検索し、各回線インタフェース１２のＩＯＰ２６にそれをダウンロードする。ＮＭＳがフィルタ及び結合子を追加、削除或いは変更するとき、新しい情報をＣＰに渡すためにＳＮＭＰ動作要求を発行する。次に、ＣＰはその変更を各ＩＯＰ２６に通知する。
【００５６】
ＩＯＰ２６は、ＣＰからフィルタリング情報を検索し、フィルタ、結合子及び動作のローカルコピーを作成してメモリに格納する。ＩＯＰ２６は、ＣＰが新しい情報を送出する場合には必ず、これらのローカルコピーを更新する。ＩＯＰ２６は、種々のフィルタの場合に行うことができる種々の動作のテーブルを用いて、図２２の各転送エンジン２２内のＦＰメモリ６０をプログラミングする。またＩＯＰ２６は、フィルタ及び結合子に対応するＲＭエントリ及びＣＭエントリを作成し、これらのエントリを用いて、ＰＣＥ７６（図５）のＲＭ８２及びＣＭ８４（図９）をプログラミングする。ＩＯＰ２６がＣＰから新しいフィルタリング情報を受信する場合には必ず、必要に応じてＲＭ及びＣＭエントリが追加、削除或いは変更される。
【００５７】
ＦＰ５８は、ＰＣＥ７６の支援によりパケットを処理するための役割を果たす。ＩＯＰ２６によって供給される情報を用いるとき、ＦＰ５８は、ルート０及びルート１アドレスに対する、それぞれ受信したパケットのポート及び回路識別のマップを作成し、これらのアドレスを用いてＰＣＥ要求を作成し、その要求を要求キュー７０（図５）を介してＰＣＥ７６に書き込む。上記のように、一般にＦＰ５８は、可能ならば多数の要求からなるバーストを書き込むことによって、バッチ形式でＰＣＥ７６を動作させようと試みる。ＰＣＥは上記のようにその要求を処理する。ＦＰ５８は結果を取得するためにＰＣＥ７６をポーリングし、その結果は上記のようにブロックでＰＣＥ７６によって返送される。各結果において一致が示される場合、その結果からのＰＣＥ一致アドレスは、そのパケットがどの動作を行うかを確認するためにＩＯＰ２６によって確立される動作テーブルへの索引として用いられる。その後ＦＰ５８は、指示される動作を実行する。
【００５８】
上記のように、ＲＭ８２及びＣＭ８４では、性能を高めるために１つのＩＣ上に実装されるメモリは比較的小さい。これらのメモリ内の限られた空間が効率的に管理されることは重要である。ＩＯＰ２６は、フィルタ判定基準のためのＣＭ８４内の空間の割当て、及び規則セットのためのＲＭ８２内の空間の割当てを行う役割を果たす。これらの動作は順次以下に記載される。
【００５９】
フィルタは、２つのタイプのうちの１つ、すなわち独立型か、複合型のいずれかとすることができる。独立型フィルタは、１つの規則のみを用いて実現することができる。複合型フィルタは多数の規則を必要とする。種々のタイプの複合型フィルタを構成することができるが、例示される実施形態で用いられる複合型フィルタは、範囲フィルタのみである。範囲フィルタは、ある範囲の上限を検査するために１つの規則を、その範囲の下限を検査するための別の規則を必要とする。従って、フィルタを加える際の第１のステップは、そのフィルタが独立型フィルタ、範囲フィルタのいずれであるかを決定することである。そのフィルタが独立型フィルタである場合には、１つの判定基準メモリ構成のみが必要とされるのに対して、範囲フィルタの場合には２つの構成が必要とされる。その後、ＣＭ８４の内容がサーチ、かつ／または評価され、ＣＭ８４においてそのフィルタを最もよく表現する方法を決定する。一旦構成が選択されれば、そのフィルタ情報は、ＣＭ８４への更新情報として追加される。これらのプロセスは、以下に詳細に記載される。
【００６０】
所与のフィルタを実現するために用いることができる判定基準メモリエントリの種々のタイプの構成がある。これらは、判定基準メモリ８６、８８及び９０のうちのいずれが用いられるかによって、７つのＣＭ構成に編成される、以下の表は、ＣＭ構成に従って編成される、より一般的に用いられる構成タイプのうちのいくつかを示す。
【表５】
0003734704.tif 000006
【００６１】
ＣＭ構成は、リソース消費の観点から、最も高価なものから最も安価なものまでランク付けされる。多くのフィルタの場合、種々の構成のうちの任意の構成を用いることができるが、その目標は、最も安価、すなわち「最低限の」構成を用いて、メモリの使用効率を最大限にすることである。例えば、（ＳＡ、ＳＡ  Ｍａｓｋ）比較のみを必要とするフィルタは、任意のＣＭ構成を用いて実装することができ、その最低限の構成は（ＣＭ０）である。別の例としては、（ＳＡ、ＳＰ及びＰＴＣＬ）を必要とするフィルタは、４つの構成（ＣＭ０、ＣＭ１）、（ＣＭ０、ＣＭ２）、（ＣＭ１、ＣＭ２）、（ＣＭ０、ＣＭ１、ＣＭ２）のいずれかを用いて実装することができ、その最低限の構成は（ＣＭ０、ＣＭ１）である。
【００６２】
最低限の構成は、その最低限利用可能な構成をサーチする際の開始点として用いられる。最低限の構成が利用可能な場合には、それが用いられる。そうでない場合には、利用可能な構成が見つかるまで、順次、より高価な構成が考慮される。上記の例では、その構成は以下の順序、すなわち（ＣＭ０、ＣＭ１）、（ＣＭ０、ＣＭ２）、（ＣＭ１、ＣＭ２）及び（ＣＭ０、ＣＭ１、ＣＭ２）の順にサーチされる。構成サーチは、一群のリンクされた空き判定基準メモリ位置のリストを利用し、各リストは、１つの行、例えば（ＣＭ０）、（ＣＭ０、ＣＭ１）等において特定の空き列の組を表す。フィルタによって必要とされる比較のタイプに基づいて、ＩＯＰ２６は、利用可能なエントリで最初のものを検索する所定のシーケンスで、全ての適切なリストをサーチする。
【００６３】
選択される判定基準メモリ構成が、所与のフィルタのために最低限必要とされる構成より大きい場合には、残りの部分は、他のフィルタによって利用可能である。従って上記の例では、（ＣＭ０、ＣＭ１）のみが必要とされるときに、構成（ＣＭ０、ＣＭ１、ＣＭ２）が用いられる場合には、（ＣＭ２）の１ユニットは、他のフィルタによって利用可能である。
【００６４】
一旦ある構成が選択されたなら、フィルタの種々の要素が、ＣＭ８４の種々のセクションに割り当てられる。（ＳＡ、ＳＰ及びＰＴＣＬ）を必要とするフィルタの例で説明を続けると、構成（ＣＭ０、ＣＭ１）が選択されるものと仮定すれば、ＳＡ及びＳＡ  ＭａｓｋはＣＭ０に割り当てられ、ＳＰ及びＰＴＣＬはＣＭ１に適切に割り当てられる。この割当ては、上記テーブルからの構成タイプ３＿１に対応する。ＣＭ０  ８６はモード０において構成され、ＣＭ１  ８８はモード２において構成される。一旦割当てが終了すれば、ＣＭ８４のためのエントリ（或いは範囲フィルタのためのエントリ）が生成される（図１１〜図１３及びそれに付随する説明を参照されたい）。また、対応する規則メモリエントリに対する判定基準演算子（ビット３５〜１２）のためのデータも生成される（図１０及びそれに付随する説明を参照されたい）。規則メモリエントリの残りは、以下に説明するフィルタ結合中に生成される。
【００６５】
フィルタが削除されるとき、削除されるフィルタに用いられるＣＭ構成は再利用できるようになる。より大きな構成にすることができる場合には、利用可能な構成が連結される。これは、上記のように全体として、或いは部分的に後に用いることができる。例えば、１ユニットの（ＣＭ０）が、フィルタの削除によって空きになり、同じ行のＣＭ８４において１ユニットの（ＣＭ１）が利用可能である場合には、１ユニットの（ＣＭ０、ＣＭ１）が形成される。
【００６６】
上記のように、ＩＯＰ２６は、フィルタの「結合」を表す規則の組、すなわち論理ポート或いは回路と１つ或いは複数のフィルタの組との間の関係を保持するための役割も果たす。このプロセスはＲＭ８２の割当て及びプログラミングを含む。結合子が追加されるとき、追加される結合子のサイズが最初に評価される。そのサイズは、論理ポート或いは回路、及び範囲フィルタ及び非範囲フィルタの混合体で用いられるフィルタの数により決定される。一旦結合子のサイズがわかれば、ＲＭ８２内の空間が割り当てられる。例示される実施形態では、規則メモリ空間は、そのサイズが２の累乗であるセグメントに割り当てられる。結合子に割り当てられるまで、空きセグメントは各空きリスト上に保持され、削除された結合子からのセグメントは、再利用するために空きリストに戻される。個々にリンクされたリストを用いて、そのセグメントは互いに連結される。例えば、各空きリストは、同じサイズからなる割り当てられていないセグメントの個々にリンクされたリストである。各結合子は、一般に異なるサイズのセグメントからなる個々にリンクされたリストである。
【００６７】
２１個の規則メモリエントリを必要とする結合子を考慮する。この結合子の場合、サイズ１６、４、２及び２のセグメントが割り当てられることが好ましい。１６エントリのセグメントは、１５の規則と、４エントリセグメントへのポインタとを格納する。４エントリセグメントは、３つの規則と、２エントリセグメントの１つへのポインタとを格納し、２エントリセグメントは、１つの規則と、他の２エントリセグメントへのポインタとを格納する。最後のセグメントは２つの規則を格納する。割当て中に、所望のサイズのセグメントが利用できない場合には、より大きなセグメントが利用される。セグメント内の未使用の空間は単に未使用のまま残されることができるか、或いは別法では、判定基準メモリ構成の割当ての場合に上で説明したのと同様にして、他の結合子に割り当てるために利用することができる。
【００６８】
一旦メモリ割当てが終了すれば、ＲＭ８２のためのエントリが作成され、ＲＭ８２に書き込まれる。このプロセスの間に、各演算子タイプの規則は、その規則で用いられることになる対応する判定基準メモリエントリのアドレスでプログラミングされ、その演算子は、規則／判定基準の対によって表されるフィルタに基づく適当な値でプログラミングされる。その規則は、フィルタが検査されることになる所望のシーケンスに従って、ＲＭ８２において論理シーケンスに配列される。ＲＭ８２のセグメント内では、その規則は逐次的に配列される。多数のセグメントに及ぶ結合子の場合、そのセグメントは、規則が所望のシーケンスで評価されるように、互いに連結される。
【００６９】
パケット分類に関係する種々の装置及び方法が記載されてきた。本発明は主にインターネットプロトコル（ＩＰ）パケット或いはメッセージを参照して記載されてきたが、記載された技術は、他のタイプのメッセージの場合でも用いられることは明らかであろう。また、ここで開示された本発明の概念から逸脱することなく、上記の技術に対する他の変更形態及びその変形形態が実現可能であることは当業者には明らかであろう。従って本発明は、添付の請求の範囲及びその精神によってのみ制限されるものと見なされるべきである。
【００７０】
【発明の効果】
上記のように本発明によれば、パケットフィルタリングを行うために高速のパケット分類を提供する、ネットワーク装置内のパケット処理ロジックを実現することができる。
【図面の簡単な説明】
【図１】本発明によるパケット分類エンジンを組み込んだネットワーク交換器のブロック図である。
【図２】図１のネットワーク交換器における回線インタフェースのブロック図である。
【図３】図２の回線インタフェース上のパケット転送エンジンのブロック図である。
【図４】図３の転送エンジン内のパケットヘッダ分配器の特定用途向け集積回路（ＡＳＩＣ）のブロック図である。
【図５】図４のパケットヘッダ分配器ＡＳＩＣ内のルーティング及び分類エンジンのブロック図である。
【図６】図５のルーティング及び分類エンジンに渡されるルーティング及び分類要求の構造図である。
【図７】図５のルーティング及び分類エンジンによって供給されるルーティング及び分類結果の構造図である。
【図８】図５のルーティング及び分類エンジンによって供給される状態指示の構造図である。
【図９】図５のルーティング及び分類エンジン内のパケット分類エンジン（ＰＣＥ）のブロック図である。
【図１０】図９のパケット分類エンジン内の規則メモリエントリの構造図である。
【図１１】図９のパケット分類エンジン内の第１の判定基準メモリエントリの構造図である。
【図１２】図９のパケット分類エンジン内の第２の判定基準メモリエントリの構造図である。
【図１３】図９のパケット分類エンジン内の第３の判定基準メモリエントリの構造図である。
【図１４】図９のパケット分類エンジン内の判定基準メモリのバンクに対する比較論理ブロックのブロック図である。
【図１５】図１４の比較論理ブロックにおいて用いられる比較器論理ブロックのブロック図である。
【図１６】図１の交換器内の種々の処理構成要素によって、パケットフィルタリング情報が如何に作成され、分配され、用いられるかを示す図である。
【符号の説明】
１０  ネットワーク交換器
１２  回線インタフェース
１４  ネットワークセグメント
１６  交換器構造部
１８  交換器制御部
２０  物理Ｉ／Ｏ及びフレーム処理回路
２２  転送エンジン
２４  交換器構造部インタフェース
２６  ＩＯＰ
２８  タイミング制御部
３０  ＤＣパワーコンバータ及び分配器
４０  着信ＳＡＲ
４２  発信ＳＡＲ
４４、４６  制御メモリ
４８、５０  パケットメモリ
５２  パケットヘッダ分配装置（ＰＨＤ）
５４  ＰＣＩバス
５６  ＦＰバス
５８  転送プロセッサ（ＦＰ）
６０  ＦＰメモリ
６４  Ｒｘキュー
６６  Ｔｘキュー
６８  ルーティング及び分類エンジン
６９  信号線
７０  要求キュー
７２  結果キュー
７４  ルート探索エンジン（ＲＣＥ）
７６  パケット分類エンジン（ＰＣＥ）
７８  ＩＮ  ＦＩＦＯ
８０  ＯＵＴ  ＦＩＦＯ
８２  規則メモリ（ＲＭ）
８４、８６、８８、９０  判定基準メモリ（ＣＭ）
９２、９４、９６  比較論理ブロック
９８  アドレス指定及び制御ロジック
１００  バストランシーバ
１０２  ＡＮＤゲート
１０４  比較論理ブロック
１０６  セレクタ
１０８  構成セレクタ
１１０  ＥＱＵＡＬ比較器
１１２  ＬＥＳＳ  ＴＨＡＮ比較器
１１４  ＧＲＥＡＴＥＲ  ＴＨＡＮ比較器
１１６  インバータ
１１８  ＡＮＤゲート
１２０  エキスパンダロジック
【図１】
0003734704.tif 000007
【図２】
0003734704.tif 000008
【図３】
0003734704.tif 000009
【図４】
0003734704.tif 000010
【図５】
0003734704.tif 000011
【図６】
0003734704.tif 000012
【図７】
0003734704.tif 000013
【図８】
0003734704.tif 000014
【図９】
0003734704.tif 000015
【図１０】
0003734704.tif 000016
【図１１】
0003734704.tif 000017
【図１２】
0003734704.tif 000018
【図１３】
0003734704.tif 000019
【図１４】
0003734704.tif 000020
【図１５】
0003734704.tif 000021
【図１６】
0003734704.tif 000022