JP3734704B2 - パケット分類エンジン - Google Patents

パケット分類エンジン Download PDF

Info

Publication number
JP3734704B2
JP3734704B2 JP2000378432A JP2000378432A JP3734704B2 JP 3734704 B2 JP3734704 B2 JP 3734704B2 JP 2000378432 A JP2000378432 A JP 2000378432A JP 2000378432 A JP2000378432 A JP 2000378432A JP 3734704 B2 JP3734704 B2 JP 3734704B2
Authority
JP
Japan
Prior art keywords
entry
memory
packet classification
rule
criterion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000378432A
Other languages
English (en)
Other versions
JP2001223749A (ja
Inventor
テー.ヘブ アンドリュー
ジー.チェリアン サンジェイ
Original Assignee
アセンド コミュニケーションズ インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アセンド コミュニケーションズ インコーポレーテッド filed Critical アセンド コミュニケーションズ インコーポレーテッド
Publication of JP2001223749A publication Critical patent/JP2001223749A/ja
Application granted granted Critical
Publication of JP3734704B2 publication Critical patent/JP3734704B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、データ通信ネットワークの分野に関する。
【0002】
【従来の技術】
データ通信ネットワークでは、交換器のようなネットワーク装置を用いて、パケットをネットワーク内にルーティングする。各交換器は典型的には多数の回線インタフェースを有し、各インタフェースは、異なるネットワークセグメントに接続される。所与の回線インタフェースにおいてパケットが受信されるとき、転送ロジックは、そのパケットがどの回線インタフェースから送信されるべきかを判定し、そのパケットは適当な出力回線インタフェースに移送されて、ネットワーク内の行先に向けて送出される。
【0003】
交換器のようなネットワーク装置においては、パケットフィルタリングを実行することが知られている。パケットフィルタリングを用いて、トラフィックモニタ及びセキュリティ目的のような、種々のネットワーク管理を行うことができる。フィルタリング判定基準はネットワーク管理者によって確立され、フィルタリング動作を実行する交換器或いは他の装置に提供される。交換器によって受信されたパケットは、その特性が任意の確立されたフィルタについての判定基準に適合するか否かを判定するために検査される。1つ或いは複数のフィルタのための判定基準を満足するパケットの場合、そのフィルタに関連する所定の動作が実行される。例えば、ある状況下では、所与のネットワークノードから発信するパケットは、ネットワーク内に転送されずに破棄されることが望ましい場合もある。パケットソースアドレスが、そのパケットが破棄されるべきであるノードのアドレスである特定の値に正確に一致するという判定基準を有するフィルタを定義することができる。そのフィルタに関連する動作は、パケットを破棄することである。ソースアドレスがこの判定基準を満足するパケットを受信するとき、そのパケットは、通常通りに転送されずに破棄される。
【0004】
パケットをフィルタリングするために用いる場合がある、多数の異なる種類の判定基準が存在する。これらの判定基準は、厳密な一致と、範囲検査、すなわちパケット内の値がある範囲内の値に入るか否かの検査とを含む。ソースアドレス、行先アドレス、ポート識別子、サービスタイプ等のような多数のパケットパラメータを判定基準として用いることができる。実用的にするためには、パケットフィルタリングプロセスによって、そのフィルタが、これらの判定基準と他の判定基準からなる異なる組み合わせを用いて、柔軟に定義されなければならない。
【0005】
パケットフィルタリングに固有の複雑さのため、この処理は従来から、パケットフィルタリングをサポートする交換器或いは他のネットワーク装置内のソフトウエアにおいて、広範に或いは排他的に実行されてきた。しかしながら、ソフトウエア系のフィルタリングは、高いパケット転送性能が要求されるときに欠点を露呈する。例えば、従来のシステムは回線速度で信頼性のある(robust)パケットフィルタリングを実行できなかったため、ネットワーク管理者は、ネットワーク応答性とネットワークセキュリティとの間でトレードオフを余儀なくされており、問題となっていた。
【0006】
【発明が解決しようとする課題】
本発明によれば、パケットフィルタリングを行うために高速のパケット分類を提供する、ネットワーク装置内のパケット処理ロジックが開示される。その分類装置のアーキテクチャは、複雑なフィルタ判定基準の定義において実質的な柔軟性を提供する。十分に高い速度でロバストフィルタリングを実行し、パケット転送性能が低下するのを避けることができる。
【0007】
【課題を解決するための手段】
パケット分類装置は、規則メモリと判定基準メモリとを備える。1つのタイプの規則メモリエントリは、判定基準メモリエントリに対する演算子及びポインタを含む。演算子は、EQUAL(厳密な一致)或いはLESS THANのような、実行されることになる比較演算を定義する。判定基準メモリエントリは、比較の一方の辺の被比較数として用いられる1つ或いは複数の値を含み、受信したパケットからの対応する値は、比較の他の辺に現れる。例えば、判定基準メモリからの1つの被比較数は、ソースアドレスを表す。この値は、受信したパケットのソースアドレスフィールド内に現れる値と比較される。
【0008】
制御ロジックはパケット分類要求に応答して、規則メモリからの規則メモリエントリを検索し、規則メモリエントリにおいて判定基準メモリポインタによって識別された判定基準メモリエントリを検索し、判定基準メモリエントリの値及び分類要求に含まれる対応する値において、規則メモリエントリの演算子によって規定される演算を実行する。この手順は、一定の終了条件が満たされるまで、一連の規則メモリエントリに対して繰返し行われ、その結果、その分類演算の結果を反映して、パケット分類結果が生成される。この結果はパケットプロセッサに提供され、その分類結果に基づいて適当な動作が行われる。
【0009】
【発明の実施の形態】
本発明の他の態様、特徴及び利点は、以下の詳細な説明において開示される。
【0010】
図1には、ネットワーク交換器10が、各ネットワークセグメント14に接続される多数の回線インタフェース12を備えるものとして示される。回線インタフェース12は、パケット転送のための回線インタフェース12の間の接続部を提供するために用いられる交換器構造部16に接続される。交換器構造部16の動的な構成を含む、交換器10の全動作は、交換器制御部18によって制御される。一般に、種々のネットワークセグメント14は異なるタイプからなる場合がある。例えば、ネットワークセグメント14のうちのあるものは、OC−3/STM−1及びOC−12/STM−4のような種々の標準的なシグナリング速度のうちの任意の速度で動作する光学的なリンクであり得る。ネットワークセグメント14の他のものは、例えば同軸ケーブルを用いて、種々のフォーマットの信号を搬送する非光学的なリンクであってもよい。
【0011】
言うまでもなく、各回線インタフェース12は、接続される特定のタイプのネットワークセグメント14で動作するために設計される。各回線インタフェース12の主なタスクは、取り付けられたネットワークセグメント14から受信したパケット或いはフレームを、他の回線インタフェース12に取り付けられたネットワークセグメント14上で転送するために、交換器構造部16を介して別の回線インタフェース12に転送することと、取り付けられたネットワークセグメント14上で転送するために、交換器構造部16を介して他の回線インタフェース12からパケットを受信することである。
【0012】
図2は、1つのタイプの回線インタフェース12の構造を示す。このインタフェースは、4つの個別の光インタフェースポートを含み、各ポートは、物理的な入力/出力及びフレーム処理回路20と、転送エンジン22とを備える。転送エンジン22は、交換器構造部インタフェースロジック24に接続され、インタフェースロジック24は図1の交換器構造部16とのインタフェースを構成する。また転送エンジンは、回線インタフェースI/Oプロセッサ(IOP)26とのインタフェースも構成する。タイミング制御ロジック28及びDCパワー回路30も備えられる。
【0013】
各転送エンジン22は、接続される物理I/Oブロック20と交換器構造部インタフェース24との間の双方向データパスを提供する。受信されたパケットは、図1の交換器構造部16を介して別の回線インタフェース12に転送するために、多数の固定サイズのATM型のセルにセグメント化される。交換器構造部インタフェース24を介して交換器構造部16から受信されたセルは、接続される物理I/Oブロック20への転送を行うために、パケットに再構成される。
【0014】
IOP26は、バックグラウンド機能、すなわちパケット毎には実行されない、パケットの転送をサポートする機能を実行する汎用プロセッサである。IOP26によって実行される1つの機能は、図1の交換器制御部18からパケット転送情報及びパケットフィルタリング情報を受信し、転送エンジン22にその情報を分配することである。この処理は以下に記載される。
【0015】
図3は、転送エンジン22のブロック図を示す。着信セグメント化−再構成(SAR)論理ブロック40は、図2の物理I/Oブロック20から交換器構造部16へのデータパスを提供し、発信SAR論理ブロック42は、交換器構造部16から各物理I/Oブロック20へのデータパスを提供する。各SAR40、42は、セグメント化機能及び再構成機能を実行する際に用いられる各制御メモリ44、46と、各パケットメモリ48、50に接続される。
【0016】
SAR装置40、42はともに、64ビットPCIバス54を介して、パケットヘッダ分配器(PHD)特定用途向け集積回路(ASIC)52に接続される。以下に詳細に記載するように、PHD ASIC52は、PCIバス54と個別の64ビットバス56との間のFIFOキューインタフェースを提供する。バス56は、PHD ASIC52を転送プロセッサ(FP)58及び転送プロセッサメモリ60と接続する。またPHD ASIC52は、個別のバス62によって図2のIOP26にも接続される。
【0017】
図4は、図3のPHD52の構造を示す。1組の受信キュー、すなわちRXキュー64は、FP58に向かうパケットヘッダ及び他の情報を一時的にバッファリングするために用いられる。図のように、RXキュー64は4つあり、2つが高優先度のトラフィック用であり、残りの2つは低優先度のトラフィック用である。高優先度トラフィックの一例は、約束された速度(committed rate)のような、高品質のサービス(QOS)保証(High Quality of Service guarantee)を有するトラフィックである。低優先度のトラフィックは、最善努力(best-efforts)のような、低いQOS保証しかもたないか、或いは全く保証がないトラフィックである。各優先度レベルの場合に、着信SAR40から生じるトラフィック用の1つのキュー(「0」を付される)と、発信SAR42から生じるトラフィック用の別のキュー(「1」を付される)とが存在する。1組の送信キュー、すなわちTXキュー66は、FP58からSAR40、42に向かうパケットヘッダ及び他の情報を一時的にバッファリングするために用いられる。ルーティング及び分類エンジン68は、FP58に代わって、経路探索及び種々のパケットフィルタリング検査を実行する。パケットフィルタリング動作は以下に記載される。ルーティング及び分類エンジン68は、信号線69を介してキュー64、66から状態情報を受信し、以下のようにして、FP58においてこの情報を利用できるようにする。
【0018】
転送エンジン22の全動作が、図3及び図4を参照して記載されるであろう。パケットは、図2の関連する物理層回路20から着信SAR40によって受信され、パケットメモリ48に記憶される。着信SAR40は、パケットヘッダを、PHD52内の適当なRXキュー64の1つに転送する。FP58はPHD52をポーリングしてキュー状態を判定するとともに、適宜RXキュー64からのパケットヘッダを検索する。ヘッダ処理の一部として、FP58は、ルーティング及び分類要求において、各ヘッダからの一定の情報要素を、ルーティング及び分類エンジン68に送出する。ルーティング及び分類エンジン68は、その要求内のヘッダ要素に対する経路探索及び種々のパケットフィルタリング検査を実行し、これらの検査の結果を、結果キュー(以下に記載する)に入れる。FP58は、結果キューから経路探索及び分類結果を取得し、これらの結果を用いて、そのパケットのための新しいヘッダを作成する。その新しいヘッダは、セグメント化した後にパケットが転送されることになる内部回路を特定する情報とともに、TXキュー66の1つを介してPHD52に返送される。着信SAR40は新しいヘッダを検索し、受信したパケットのペイロード部分とともにそのヘッダをパケットメモリ48に入れ、新しいパケットをセグメント化し、その結果として生成されたセルを、FP58によって特定された内部回路上にある図1の交換器構造部16に転送する。
【0019】
発信方向では、発信SAR42が図1の交換器構造部16からパケットを受信し、これらのパケットを再構成してパケットメモリ50に入れる。パケットヘッダはPHD52に送出され、FP58によってPHD52から検索される。大部分のパケットの場合、経路探索及びフィルタリング検査は、着信処理中に既に行われているため、これらの動作は繰返し行われない。しかしながらプロトコルによっては、着信及び発信の両方の場合に探索及びフィルタリングを必要とするため、これらの動作は、ルーティング及び分類エンジン68とともに、FP58によって任意選択的に実行される。妥当な場合には、FP58は、セグメント化された発信パケットが受信される内部回路の同一性に一部基づいて、そのパケットのための新しいヘッダを作成する。この新しいヘッダは、送信回路情報とともに、PHD52に書き込まれる。PHD52は、新しいヘッダを、発信SAR42に転送する。発信SAR42は、この新しいヘッダをパケットペイロードとともにパケットメモリ50に入れ、そのパケットを、図2の関連する物理層インタフェース20に送信する。
【0020】
図5はルーティング及び分類エンジン68の構造を示す。図3のFP58からの要求は、1つの要求キュー70に入れられ、1つの結果キュー72において結果が返送される。各キュー70及び72は、16個までの要求/結果エントリを保持する。ルート探索エンジン(RLE)74は、典型的にはヘッダに含まれる行先アドレス(DA)に基づいて、経路探索を実行する。パケット分類エンジン(PCE)76は、パケットヘッダに含まれる特定の情報に基づいて、パケットフィルタリング検査を実行する。PCE76の動作が以下に詳細に記載される。入力FIFOバッファ78は、要求キュー70と、RLE74及びPCE76それぞれとの間に配置され、出力FIFOバッファ80は、RLE74及びPCE76それぞれと、結果キュー72との間に配置される。FIFO78及び80は、RLE74によって実行される処理と、PCE76によって実行される処理との間を分割する手段を提供する。マルチプレクサ81によって、FP58は、結果キュー72、或いは要求キュー70、結果キュー72及び図4の信号線69上に現れる状態情報からの状態を含む状態情報のいずれかを読み出すことができるようになる。これらのエントリの構造が以下に記載される。
【0021】
図6は、図5の要求キュー70を介してPCE76及びRLE74に渡されるルーティング及び分類要求の構造を示す。その要求のサイズは、4つの64ビットワードである。種々のフィールドが以下に定義される。
【表1】
Figure 0003734704
【0022】
上記の表に示されるように、個別の2組の分類検査のための規定があり、1つは「PCE Root0」を付されるアドレスで開始し、もう1つは「PCE Root1」で開始する。これらの個別の開始アドレスの重要性が以下に記載される。
【0023】
上記のように、その要求の適切なフィールドが、図5のRLE74及びPCE76のための各入力FIFO78に供給される。Req.ID及びIP.Dest.Addrのようなフィールドのうちのいくつかは、RLE74及びPCE76の両方に供給される。他のフィールドは一方にのみ供給される。特にPCEにルーティングされるフィールドの使用法が以下に記載される。
【0024】
図7及び図8は、図4のルーティング及び分類エンジン68から読み出される2つの異なるタイプのエントリの各構造を示す。図7は、図5の結果キュー72から得られ、分類サーチの結果を搬送する結果エントリを示す。図8は、図3のFP58に状態情報を搬送するために用いられる状態エントリを示す。
【0025】
図7に示される結果エントリのフィールドは以下のように定義される。
【表2】
Figure 0003734704
【0026】
図8に示される状態エントリのフィールドは以下のように定義される。
【表3】
Figure 0003734704
【0027】
ルーティング及び分類エンジン68の全体的な動作が、図5〜図8を参照して以下に記載される。図3のFP58は、探索及び分類要求を、要求キュー70に書き込む。要求が要求キュー70の先頭に達するとき、その要求からの種々の情報要素は、RLE74及びPCE76のための各入力FIFO78に同時に書き込まれる。RLE74及びPCE76は独立して各要求の個別の部分において動作し、一般に、異なる時間で、所与の要求に対する各処理動作を終了する。これらの動作の結果が、出力FIFO80に書き込まれる。所与のパケットに対する両方の結果の組が、出力FIFO80の先頭に達したとき、1つの組み合わされた結果が、結果キュー72に書き込まれる。その組み合わされた結果はFP58によって読み出され、それを用いてFP58は、上記のように、図3のSAR40及び42のための新しいパケットヘッダ及び回路情報を作成する。
【0028】
より詳細には、FP58は、バッチ形式でルーティング及び分類エンジン68を用いる。要求キュー70内に十分な空間があるとき、一連の要求、1)4つの結果エントリ、2)3つの結果エントリと後続する1つの状態エントリ、3)2つの結果エントリと後続する2つの状態エントリ、4)1つの結果エントリと後続する3つの状態エントリ、5)4つの状態エントリが存在する。
【0029】
一般にFP58は、結果キュー72が空になるまで、読出しコマンドを発行し、1つ或いは複数の状態エントリが結果ブロックに含まれるときには必ず、空であると推定される。その後FP58は、ルーティング及び分類エンジン68が次の要求のバッチを処理している間に、その結果を用いる。FP58は、RLE74及びPCE76がビジーで保持され、キュー70及び72と、FIFO78及び80とがオーバーフローするのを防ぐように、状態情報を用いて要求の流れを管理する。
【0030】
例示される実施形態では、読み出すことができる状態エントリは1つしか存在せず、結果ブロック内に多数の状態エントリが存在する場合には、この1つのエントリに対して何度も読出しが行われたことを表すことに留意されたい。別の実施形態では、例えば統計情報を収集するために、或いは他のバックグラウンド処理を行うために、第2〜第4の状態エントリにおいて付加的な低優先度の情報を供給することが有用な場合もある。
【0031】
結果に状態情報を付加する1つの重要な利点は、FPバス56を用いる際の効率が改善されることである。FP58が結果の読出しコマンドを発行するときはいつでも、有効な結果情報或いは有効な状態情報のいずれかが返送される。さらに、結果ブロックはバースト形式で返送され、読出しに関するオーバーヘッドを低減できるようにする。またFP58は、1つの読出しトランザクションにおいてRLE74及びPCE76キューのついての情報と、RXキュー64及びTXキュー66についての情報とを取得する。
【0032】
図9は、図5のPCE76の構造を示す。フィルタ及び結合子(以下に記載する)を表すデータは、規則メモリ(RM)82及び判定基準メモリ(CM)84に記憶される。CM84は、3つの一般的にアドレス指定されたメモリCM0 86、CM1 88及びCM2 90を備える。3つの比較論理ブロック92、94及び96は、判定基準メモリ86、88及び90にそれぞれ関連する。アドレス指定及び制御ロジック98は、図5の要求キュー70から受信した要求を復号化して、RM82及びCM84のためのアドレスを生成し、各要求によって要求されるような多数の規則を通して配列され、図5の結果キュー72に渡される結果を生成する。またそのアドレス指定及び制御ロジック98は、図3のIOP26に対するインタフェースも形成し、IOP26によってRM82及びCM84を読出し及び書込みできるようにする。バストランシーバ100は、IOP26とRM82及びCM84との間の必要なデータパスを提供する。ANDゲート102は、比較論理ブロック92、94及び96からの対応するMATCHn出力が全て真であるとき、1つのMATCH信号を与える。
【0033】
パケットフィルタリングのための規則の組は典型的には、ネットワーク管理ステーション(NMS)によって発信されるが、特定された流れに基づいてFP58によって動的に割り当てることもできる。以下の情報の一部或いは全部が、フィルタのためにNMS或いはFP58によって供給される。その情報は、マスクを有するIP行先アドレス、マスクを有するIPソースアドレス、IPプロトコル識別子、TCP/UDPソースポート及び行先ポート識別子、サービス識別子のIPタイプ及びマスク、種々のフラグである。そのパケットがフィルタ判定基準と一致するか否かを判定するために、フィルタからの種々の情報要素が、受信された各パケットからの対応する要素と比較される。一致する場合には、パケットがその行先に向けて進めるようにする動作のような、いくつかのデフォルト動作が典型的には行われる。
【0034】
従来通りに、パケットフィルタは、線形にサーチされる比較の組からなる順序付けされたリストとして表される。PCE76では、フィルタ要素は、判定基準(比較値)及び規則(リスト自体及び各比較のために用いられる演算子)に分割される。この規則と判定基準の分離は、個別の規則メモリ(RM)82及び判定基準メモリ(CM)84を使用する際に反映される。メモリ82及び84は各機能のために個別に最適化され、その結果、効率及び性能が改善される。また、CM84内のエントリは、RM82内の多数の規則によって参照されることができ、さらに記憶効率が高められる。
【0035】
RM82は、規則メモリエントリのアレイを含み、各エントリは2つのタイプのうちの1つであり得る。第1のタイプは、1組の演算子と、対応するフィルタのための被比較数を記憶するCM84の行へのポインタとを含む。第2のタイプは、別の規則メモリエントリへのポインタを含む。これらのエントリを用いて、順次サーチされる1組の規則において、不連続のセグメント間でジャンプを行う。例示される実施形態では、RM82は16Kまでのエントリを含むことができる。
【0036】
CM84は、3つの個別のメモリCM0 86、CM1 88及びCM2 90にセグメント化され、例示される実施形態では、各メモリは4Kまでのエントリを含むことができる。CM84の機構は、IPパケット分類において固有の階層を利用する。一定のフィールド上でのフィルタリングは通常、同様に他のフィールドに基づくフィルタリングを伴うので、個別のメモリCM0、CM1及びCM2内にどのフィールドが記憶されるかを限定することが望ましい。これらの限定によって、さらに記憶効率が高められる。大部分の一般的にフィルタリングされたフィールド、ソースアドレス及び行先アドレスは、3つの全てのメモリCM0 86、CM1 88及びCM2 90においてサポートされる。以下に記載するように、他のフィールドは、CM1 88及び/またはCM2 90においてのみサポートされる。このアーキテクチャは、CM84内の空間を割り当てることができる自由度を最大限にすると同時に、効果的な並列サーチを可能にする。CM84の構造及び使用法は、より詳細に以下に記載される。
【0037】
図10は、規則メモリエントリとも呼ばれる、図9のRM82内のエントリの構造を示す。各39ビットエントリは、1ビットのタイプフィールドを有する。このフィールドが1の場合には、エントリのビット13〜0は、RM82内の別の位置へのポインタ、すなわち別の規則メモリエントリへのポインタを含む。このフィールドが0である場合には、そのエントリはフィルタ検査を実行するための情報を含む。この場合には、ビット11〜0は、検査のためのオペランドが見出される、CM84の行のアドレスを含んでおり、ビット35〜12は、その要求からの、各オペランド及びフィールドにおいて実行される動作の符号化ビットを含む。これらの動作は以下に詳細に記載される。ビット36は、例えば範囲検査を実行するための複合規則を形成するために用いられるキャリービットである。キャリービットが0である場合には、その規則はそれ単独で評価される。キャリービットが1である場合には、その規則は、次の規則も真と評価する場合にのみ、真と評価する。ビット37は、要求の一部として検査される規則の列の最後に到達したことを示す終了(Done)ビットである。
【0038】
判定基準演算子フィールドは、8つの3ビット論理演算子コードを含む。各演算子コードは、その要求及び判定基準メモリエントリから選択される対応する被比較数において実行される演算を規定する。判定基準メモリエントリのフィールドが以下に記載される。被比較数に対する判定基準演算子ビットの割当ては、以下の通りである。
35〜33 CM0 SA/DAフィールド
32〜30 CM1プロトコルフィールド
29〜27 CM1ソースポートフィールド
26〜24 CM1 SA/DA或いはDPフィールド
23〜21 CM2プロトコルフィールド
20〜18 CM2 TOS或いはマスクフィールドを有するTOS
17〜15 CM2ソースポート或いはマスクフィールドを有するフラグ
14〜12 CM1 SA/DA或いはSP或いはDPフィールド
【0039】
演算子コードは実行される比較を規定しており、その場合、要求からの被比較数は演算子の左側にあり、判定基準メモリエントリからの被比較数は右側にある。例えば、演算子が「>」である場合には、評価される式は、(要求データ>判定基準データ)である。演算子コードは以下の通りである。
000 Greater than(〜より大きい)
001 Less than(〜より小さい)
010 Equal(〜に等しい)
011 Not Equal(〜に等しくない)
1xx Don‘t care(未定義、すなわち被比較数値に関わらず強制的に真)
【0040】
判定基準演算子を用いて、以下に記載するように、比較論理ブロック92、94及び96内のロジックを構成する。
【0041】
図11は、図9のCM0 86におけるエントリの構造を示す。各エントリは、38ビット長である。1つのビット、すなわち、ビット37を用いて、そのエントリのための2つの可能な構成を、32ビットソースアドレス(SA)か、或いは32ビット行先アドレス(DA)のいずれかとして区別する。ビット31〜0は、対応するフィルタによって必要とされるSA或いはDA値を含む。ビット36〜32は、エントリ内のSA/DAと、その要求のSA/DAとの間の比較の範囲を制限するために用いられる5ビットの符号化されたマスク値を含む。マスクの使用法は以下に詳細に記載される。
【0042】
図12は、図9のCM1 88内のエントリの構造を示す。各エントリは47ビット長である。ビット46〜45に示されるように、4つの異なる構成を取り得る。PTCLフィールドは、4つの全ての構成においてIPプロトコルを特定する。構成2及び3の16ビットのSP及びDPはそれぞれ、ソースポート識別子及び行先ポート識別子を表す。ビット36〜32の内容は、構成2及び3では未定義である。
【0043】
図13は、図9のCM2 90内のエントリの構造を示す。各エントリは51ビット長である。ビット50〜48に示されるように、8つの異なる構成を取り得る。構成2〜7のTOSフィールドは、サービスのIPタイプを特定する。構成3〜7では、TOSマスクフィールドは、以下のように、TOS比較の範囲を限定するために用いられる8ビットマスクを含む。8ビットFLAGSフィールドは、TCP/UDPパケットからの対応するビットに対して比較されるフラグ値を含む。8ビットFLAG MSKフィールドは、以下のように、FLAGS比較の範囲を限定するために用いられる。
【0044】
図14は、比較論理ブロック92、94及び96の全般的な構造を示す。2つ以上の比較器ロジック104−1、...104−nのブロックを用いて、多数の比較を平行して実行し、その場合に、各比較は、要求の所与のフィールドと判定基準メモリエントリの対応するフィールドとの間で行われる。CM0 86の場合の比較ロジック92では、例えば、2つの比較器論理ブロック104が用いられ、1つは要求のソースアドレスフィールド用であり、もう1つは要求の行先アドレスフィールド用である。CM1 88の場合の比較ロジック94は、ソースアドレス、行先アドレス、IPプロトコル、ソースポート及び行先ポートのための比較器論理ブロック104を含む。CM2 90の場合の比較ロジック96は、ソースアドレス、行先アドレス、IPプロトコル、ソースポート、行先ポート、マスクのないサービスタイプ、マスクのあるサービスタイプ及びフラグのための比較器論理ブロック104を含む。
【0045】
比較器論理ブロック104からの出力は、NOT EQUAL(〜と等しくない:≠)、EQUAL(〜と等しい:=)、LESS THAN(〜より小さい:<)及びGREATER THAN(〜より大きい:>)のための指示を含む。これらの信号は、DON'T CARE機能を実施するために用いられる論理「1」とともに、各セレクタ106−1、...106−nの入力に供給される。セレクタ106は、制御入力として、演算子タイプ規則メモリエントリから演算子を受信する。これらの演算子は、上記のように、規則メモリエントリのビット35〜12内に存在する。
【0046】
セレクタ106の各出力は別のセレクタ108に供給され、セレクタは、判定基準メモリエントリからの構成ビットに基づいて、セレクタ106の出力の種々の組み合わせの中から選択を行う。例えば、CM0の場合の比較ロジック92では、構成セレクタ108は、判定基準メモリエントリのビット37の値に基づいて、SA比較結果とDA比較結果との間で選択を行う。他の比較論理ブロック94及び96内の構成セレクタ108も同様に動作する。構成セレクタ108からの出力信号MATCHは、その要求内のデータが、各判定基準メモリ86、88或いは90からの判定基準を満足するか否かを示す。図9に示されるように、比較ブロック92、94及び96からのMATCH出力はANDゲート10によって互いにANDを取られ、分類動作を制御するために、アドレス指定及び制御ロジック98に1つのMATCH指示を与える。
【0047】
図15は、比較器論理ブロック104の全般的な構造を示す。EQUAL比較器110は、2つの被比較数が等しいか否かを判定し、LESS THAN比較器112は、被比較数の一方が他方の被比較数より小さいか否かを判定し、GREATER THAN比較器114は、被比較数の一方が他方の被比較数より大きいか否かを判定する。EQUAL比較110からの出力は、インバータ116によって反転され、NOT EQUAL指示が得られる。
【0048】
各比較器110、112及び114への入力は、CM84からの被比較数(「CM被比較数」として示される)及び要求からのおそらくマスクされた被比較数(REQ被比較数として示される)である。マスク処理ロジックが、関連するマスクを有するフィールドのために用いられる。ANDゲート118は、ビット毎にマスク処理を実施する。Flags Maskの場合と同様に、マルチビットマスク(「CMマスク」として示される)が直接用いられる場合があり、或いはSA/DAマスクの場合と同様に、復号化されるか、又はエキスパンダロジック120により拡張される場合もある。エキスパンダロジック120は、5ビットの符号化されたマスク値によって示されるように、多数の後続のビット位置におおいて0を有し、その他の場所では1を有する32ビット値を生成する。例えば、マスク値が、10進の11に等価な2進の01011である場合には、復号化されたマスクは、先行する21ビット位置において1を有し、後続の11ビット位置で0を有する16進のFFFFF800である。このマスクは、SA/DAの最上位21ビットのみが比較結果に作用することを示す。
【0049】
パケット分類エンジン(PCE)76の動作は、全般に以下のように進む。
1.RM82及びCM84が図2のIOP26によって初期化される。これは、動的な割当て、或いはネットワーク管理ステーション(NMS)(以下に記載する)のいずれかによって、電源投入時、及び動作中に行われる。
2.FP58によって提示されるパケット分類要求が、図5の要求キュー70から検索される。
3.RM82が、その要求のルート0アドレスの内容によって索引付けされ、そのサーチの第1の規則メモリエントリを検索する。そのエントリがポインタタイプである場合には、検索されたエントリ内の規則メモリアドレスに対して、このステップが繰り返される。このステップは、何度も繰り返すことができる。
4.検索された規則メモリエントリが演算子タイプである場合には、判定基準メモリエントリが、規則メモリエントリ内のCMアドレスにより規定される位置において検索される。CM84からの選択された被比較数が、規則メモリエントリ内の演算子に従って、対応する要求のフィールドと比較される。上記のように、種々のフィールドがマスクされる場合がある。
5.1に設定されたDONEビットが到達するか、或いは一致条件が見出される(すなわち比較演算の結果が真になる)まで、規則メモリアドレスが1だけインクリメントされる。ある規則は、CARRYビットを設定する場合もあり、それは、一致が宣言される前に、次の規則も真であると評価することを要求している。
6.サーチにおいて遭遇する任意の規則メモリエントリが、ポインタタイプのエントリである場合には、判定基準メモリエントリではなく、別の規則メモリエントリを指している。この場合、逐次的な規則評価が継続され、指示される規則メモリエントリで開始される。
7.要求のルート0アドレスで一旦開始されると、上記プロセスが実行される。ルート0に関連するフィルタでDONEが到達する場合には、ルート1アドレスで開始して、そのプロセスは繰り返される。一致が見出される場合には、その結果は、その一致がルート0か、ルート1規則を用いて見出されたことを示す。
8.一致を見出すか、或いはルート1サーチにおいてDONEを見出すことによって、サーチが終了するとき、結果が、フィルタリング検査の結果を示す結果キュー72に書き込まれる。その結果は、最後に検査された規則のアドレスを含み、一致が見出されたか否かを含んでいる。一致が見出された場合には、そのアドレスは、その結果に適した動作を開始する、動作テーブルに索引付けするためのFP58によって用いられる。例えば、その一致が、ある一定の値より小さいDAを有する全てのパケットが入ることになることを示す規則の場合には、その動作テーブルは、パケットが意図的に廃棄されるようになるルーチンを指している。
【0050】
上記のように、CM84は、種々の異なる構成において用いることができる。3つのメモリCM0 86、CM1 88及びCM2 90はそれぞれ、異なる構成を実現するための異なるモードにおいて用いることができる。以下の真理値テーブルは判定基準メモリ86、88及び90の種々の構成モードを用いて実行することができる種々の比較を提供する。「1」は、所与の構成モードを用いて比較を実行できることを示しており、「0」は、比較を実行できないことを示している。
【表4】
Figure 0003734704
【0051】
従って例えば、SA比較は、CM0−0、CM1−0及びCM2−0の任意のものを用いて実行することができる。FLAGS比較は、CM2−4〜CM2−7の任意のものを用いて実行することができる。種々の構成モードの任意のものを用いて所与の比較を実行するための能力は、CM84を編成する際に所望の自由度を提供し、それにより効率が高められる。判定基準メモリ空間の割当ては、以下に詳細に記載される。
【0052】
判定基準メモリ構成情報を符号化する種々の方法を用いることにより、別の実施形態において、記憶効率を高めることができる場合もある。例示される実施形態では、各判定基準メモリエントリのための構成メモリを格納するために、30ビットが用いられることに留意されたい。これらの30ビットは、規則メモリエントリ内の演算子コードの24ビットと、CM0エントリの1ビットと、CM1エントリの2ビットと、CM2エントリの3ビットとを含む。この方式により、CM0、CM1及びCM2内の復号化が簡単になる。しかしながら、判定基準メモリエントリのための被比較数及び演算子の全ての実現可能な構成の数は、約3.3×106であり、従って22ビットのみを用いて表すことができる。従って例えば、演算子及び被比較数情報が復号化される各規則メモリエントリにおいて、1つの22ビット構成フィールドを用いることができる場合もある。しかしながら、そのような実施形態によって必要とされる復号化は、各構成ビットとCM84の各セクションとの間の一対一の対応関係の欠如により、例示される実施形態よりも、一般的に、より複雑になる。
【0053】
図16は、パケットフィルタリング情報が図1の交換器10において管理され、利用される方法を示す。一般に、パケットフィルタリング情報の情報源は、ネットワーク管理ステーション(NMS)であり、典型的には図1の交換器10から離れて配置される。NMSは、簡易ネットワーク管理プロトコル(SNMP)のような、ネットワーク管理プロトコルを用いて、図1の交換器制御部18内に存在する中央演算装置(CP)と通信を行う。CPは、NMSからフィルタリング情報を受信し、その情報を分配するために、各回線インタフェース12のIOP26に応答することができる。さらに、CPは不揮発(NV)記憶装置においてその情報を保持し、NMSが利用できないときに、交換器10が動作できるようにする。
【0054】
CPからIOP26に送出されるフィルタリング情報は、(1)それぞれ受信したパケットに適用することができる少数の判定基準を規定するフィルタと、(2)結合子、すなわち交換器10内の種々のポート及び/または回路と異なるフィルタのグループを関連付ける情報と、(3)フィルタとの関連を有し、フィルタ判定基準が満たされる場合に実行される動作とを含む。
【0055】
動作時に、IOP26が初期化されるとき、CPは、NV記憶装置からの現存するフィルタリングテーブルと結合データベースとを検索し、各回線インタフェース12のIOP26にそれをダウンロードする。NMSがフィルタ及び結合子を追加、削除或いは変更するとき、新しい情報をCPに渡すためにSNMP動作要求を発行する。次に、CPはその変更を各IOP26に通知する。
【0056】
IOP26は、CPからフィルタリング情報を検索し、フィルタ、結合子及び動作のローカルコピーを作成してメモリに格納する。IOP26は、CPが新しい情報を送出する場合には必ず、これらのローカルコピーを更新する。IOP26は、種々のフィルタの場合に行うことができる種々の動作のテーブルを用いて、図22の各転送エンジン22内のFPメモリ60をプログラミングする。またIOP26は、フィルタ及び結合子に対応するRMエントリ及びCMエントリを作成し、これらのエントリを用いて、PCE76(図5)のRM82及びCM84(図9)をプログラミングする。IOP26がCPから新しいフィルタリング情報を受信する場合には必ず、必要に応じてRM及びCMエントリが追加、削除或いは変更される。
【0057】
FP58は、PCE76の支援によりパケットを処理するための役割を果たす。IOP26によって供給される情報を用いるとき、FP58は、ルート0及びルート1アドレスに対する、それぞれ受信したパケットのポート及び回路識別のマップを作成し、これらのアドレスを用いてPCE要求を作成し、その要求を要求キュー70(図5)を介してPCE76に書き込む。上記のように、一般にFP58は、可能ならば多数の要求からなるバーストを書き込むことによって、バッチ形式でPCE76を動作させようと試みる。PCEは上記のようにその要求を処理する。FP58は結果を取得するためにPCE76をポーリングし、その結果は上記のようにブロックでPCE76によって返送される。各結果において一致が示される場合、その結果からのPCE一致アドレスは、そのパケットがどの動作を行うかを確認するためにIOP26によって確立される動作テーブルへの索引として用いられる。その後FP58は、指示される動作を実行する。
【0058】
上記のように、RM82及びCM84では、性能を高めるために1つのIC上に実装されるメモリは比較的小さい。これらのメモリ内の限られた空間が効率的に管理されることは重要である。IOP26は、フィルタ判定基準のためのCM84内の空間の割当て、及び規則セットのためのRM82内の空間の割当てを行う役割を果たす。これらの動作は順次以下に記載される。
【0059】
フィルタは、2つのタイプのうちの1つ、すなわち独立型か、複合型のいずれかとすることができる。独立型フィルタは、1つの規則のみを用いて実現することができる。複合型フィルタは多数の規則を必要とする。種々のタイプの複合型フィルタを構成することができるが、例示される実施形態で用いられる複合型フィルタは、範囲フィルタのみである。範囲フィルタは、ある範囲の上限を検査するために1つの規則を、その範囲の下限を検査するための別の規則を必要とする。従って、フィルタを加える際の第1のステップは、そのフィルタが独立型フィルタ、範囲フィルタのいずれであるかを決定することである。そのフィルタが独立型フィルタである場合には、1つの判定基準メモリ構成のみが必要とされるのに対して、範囲フィルタの場合には2つの構成が必要とされる。その後、CM84の内容がサーチ、かつ/または評価され、CM84においてそのフィルタを最もよく表現する方法を決定する。一旦構成が選択されれば、そのフィルタ情報は、CM84への更新情報として追加される。これらのプロセスは、以下に詳細に記載される。
【0060】
所与のフィルタを実現するために用いることができる判定基準メモリエントリの種々のタイプの構成がある。これらは、判定基準メモリ86、88及び90のうちのいずれが用いられるかによって、7つのCM構成に編成される、以下の表は、CM構成に従って編成される、より一般的に用いられる構成タイプのうちのいくつかを示す。
【表5】
Figure 0003734704
【0061】
CM構成は、リソース消費の観点から、最も高価なものから最も安価なものまでランク付けされる。多くのフィルタの場合、種々の構成のうちの任意の構成を用いることができるが、その目標は、最も安価、すなわち「最低限の」構成を用いて、メモリの使用効率を最大限にすることである。例えば、(SA、SA Mask)比較のみを必要とするフィルタは、任意のCM構成を用いて実装することができ、その最低限の構成は(CM0)である。別の例としては、(SA、SP及びPTCL)を必要とするフィルタは、4つの構成(CM0、CM1)、(CM0、CM2)、(CM1、CM2)、(CM0、CM1、CM2)のいずれかを用いて実装することができ、その最低限の構成は(CM0、CM1)である。
【0062】
最低限の構成は、その最低限利用可能な構成をサーチする際の開始点として用いられる。最低限の構成が利用可能な場合には、それが用いられる。そうでない場合には、利用可能な構成が見つかるまで、順次、より高価な構成が考慮される。上記の例では、その構成は以下の順序、すなわち(CM0、CM1)、(CM0、CM2)、(CM1、CM2)及び(CM0、CM1、CM2)の順にサーチされる。構成サーチは、一群のリンクされた空き判定基準メモリ位置のリストを利用し、各リストは、1つの行、例えば(CM0)、(CM0、CM1)等において特定の空き列の組を表す。フィルタによって必要とされる比較のタイプに基づいて、IOP26は、利用可能なエントリで最初のものを検索する所定のシーケンスで、全ての適切なリストをサーチする。
【0063】
選択される判定基準メモリ構成が、所与のフィルタのために最低限必要とされる構成より大きい場合には、残りの部分は、他のフィルタによって利用可能である。従って上記の例では、(CM0、CM1)のみが必要とされるときに、構成(CM0、CM1、CM2)が用いられる場合には、(CM2)の1ユニットは、他のフィルタによって利用可能である。
【0064】
一旦ある構成が選択されたなら、フィルタの種々の要素が、CM84の種々のセクションに割り当てられる。(SA、SP及びPTCL)を必要とするフィルタの例で説明を続けると、構成(CM0、CM1)が選択されるものと仮定すれば、SA及びSA MaskはCM0に割り当てられ、SP及びPTCLはCM1に適切に割り当てられる。この割当ては、上記テーブルからの構成タイプ3_1に対応する。CM0 86はモード0において構成され、CM1 88はモード2において構成される。一旦割当てが終了すれば、CM84のためのエントリ(或いは範囲フィルタのためのエントリ)が生成される(図11〜図13及びそれに付随する説明を参照されたい)。また、対応する規則メモリエントリに対する判定基準演算子(ビット35〜12)のためのデータも生成される(図10及びそれに付随する説明を参照されたい)。規則メモリエントリの残りは、以下に説明するフィルタ結合中に生成される。
【0065】
フィルタが削除されるとき、削除されるフィルタに用いられるCM構成は再利用できるようになる。より大きな構成にすることができる場合には、利用可能な構成が連結される。これは、上記のように全体として、或いは部分的に後に用いることができる。例えば、1ユニットの(CM0)が、フィルタの削除によって空きになり、同じ行のCM84において1ユニットの(CM1)が利用可能である場合には、1ユニットの(CM0、CM1)が形成される。
【0066】
上記のように、IOP26は、フィルタの「結合」を表す規則の組、すなわち論理ポート或いは回路と1つ或いは複数のフィルタの組との間の関係を保持するための役割も果たす。このプロセスはRM82の割当て及びプログラミングを含む。結合子が追加されるとき、追加される結合子のサイズが最初に評価される。そのサイズは、論理ポート或いは回路、及び範囲フィルタ及び非範囲フィルタの混合体で用いられるフィルタの数により決定される。一旦結合子のサイズがわかれば、RM82内の空間が割り当てられる。例示される実施形態では、規則メモリ空間は、そのサイズが2の累乗であるセグメントに割り当てられる。結合子に割り当てられるまで、空きセグメントは各空きリスト上に保持され、削除された結合子からのセグメントは、再利用するために空きリストに戻される。個々にリンクされたリストを用いて、そのセグメントは互いに連結される。例えば、各空きリストは、同じサイズからなる割り当てられていないセグメントの個々にリンクされたリストである。各結合子は、一般に異なるサイズのセグメントからなる個々にリンクされたリストである。
【0067】
21個の規則メモリエントリを必要とする結合子を考慮する。この結合子の場合、サイズ16、4、2及び2のセグメントが割り当てられることが好ましい。16エントリのセグメントは、15の規則と、4エントリセグメントへのポインタとを格納する。4エントリセグメントは、3つの規則と、2エントリセグメントの1つへのポインタとを格納し、2エントリセグメントは、1つの規則と、他の2エントリセグメントへのポインタとを格納する。最後のセグメントは2つの規則を格納する。割当て中に、所望のサイズのセグメントが利用できない場合には、より大きなセグメントが利用される。セグメント内の未使用の空間は単に未使用のまま残されることができるか、或いは別法では、判定基準メモリ構成の割当ての場合に上で説明したのと同様にして、他の結合子に割り当てるために利用することができる。
【0068】
一旦メモリ割当てが終了すれば、RM82のためのエントリが作成され、RM82に書き込まれる。このプロセスの間に、各演算子タイプの規則は、その規則で用いられることになる対応する判定基準メモリエントリのアドレスでプログラミングされ、その演算子は、規則/判定基準の対によって表されるフィルタに基づく適当な値でプログラミングされる。その規則は、フィルタが検査されることになる所望のシーケンスに従って、RM82において論理シーケンスに配列される。RM82のセグメント内では、その規則は逐次的に配列される。多数のセグメントに及ぶ結合子の場合、そのセグメントは、規則が所望のシーケンスで評価されるように、互いに連結される。
【0069】
パケット分類に関係する種々の装置及び方法が記載されてきた。本発明は主にインターネットプロトコル(IP)パケット或いはメッセージを参照して記載されてきたが、記載された技術は、他のタイプのメッセージの場合でも用いられることは明らかであろう。また、ここで開示された本発明の概念から逸脱することなく、上記の技術に対する他の変更形態及びその変形形態が実現可能であることは当業者には明らかであろう。従って本発明は、添付の請求の範囲及びその精神によってのみ制限されるものと見なされるべきである。
【0070】
【発明の効果】
上記のように本発明によれば、パケットフィルタリングを行うために高速のパケット分類を提供する、ネットワーク装置内のパケット処理ロジックを実現することができる。
【図面の簡単な説明】
【図1】本発明によるパケット分類エンジンを組み込んだネットワーク交換器のブロック図である。
【図2】図1のネットワーク交換器における回線インタフェースのブロック図である。
【図3】図2の回線インタフェース上のパケット転送エンジンのブロック図である。
【図4】図3の転送エンジン内のパケットヘッダ分配器の特定用途向け集積回路(ASIC)のブロック図である。
【図5】図4のパケットヘッダ分配器ASIC内のルーティング及び分類エンジンのブロック図である。
【図6】図5のルーティング及び分類エンジンに渡されるルーティング及び分類要求の構造図である。
【図7】図5のルーティング及び分類エンジンによって供給されるルーティング及び分類結果の構造図である。
【図8】図5のルーティング及び分類エンジンによって供給される状態指示の構造図である。
【図9】図5のルーティング及び分類エンジン内のパケット分類エンジン(PCE)のブロック図である。
【図10】図9のパケット分類エンジン内の規則メモリエントリの構造図である。
【図11】図9のパケット分類エンジン内の第1の判定基準メモリエントリの構造図である。
【図12】図9のパケット分類エンジン内の第2の判定基準メモリエントリの構造図である。
【図13】図9のパケット分類エンジン内の第3の判定基準メモリエントリの構造図である。
【図14】図9のパケット分類エンジン内の判定基準メモリのバンクに対する比較論理ブロックのブロック図である。
【図15】図14の比較論理ブロックにおいて用いられる比較器論理ブロックのブロック図である。
【図16】図1の交換器内の種々の処理構成要素によって、パケットフィルタリング情報が如何に作成され、分配され、用いられるかを示す図である。
【符号の説明】
10 ネットワーク交換器
12 回線インタフェース
14 ネットワークセグメント
16 交換器構造部
18 交換器制御部
20 物理I/O及びフレーム処理回路
22 転送エンジン
24 交換器構造部インタフェース
26 IOP
28 タイミング制御部
30 DCパワーコンバータ及び分配器
40 着信SAR
42 発信SAR
44、46 制御メモリ
48、50 パケットメモリ
52 パケットヘッダ分配装置(PHD)
54 PCIバス
56 FPバス
58 転送プロセッサ(FP)
60 FPメモリ
64 Rxキュー
66 Txキュー
68 ルーティング及び分類エンジン
69 信号線
70 要求キュー
72 結果キュー
74 ルート探索エンジン(RCE)
76 パケット分類エンジン(PCE)
78 IN FIFO
80 OUT FIFO
82 規則メモリ(RM)
84、86、88、90 判定基準メモリ(CM)
92、94、96 比較論理ブロック
98 アドレス指定及び制御ロジック
100 バストランシーバ
102 ANDゲート
104 比較論理ブロック
106 セレクタ
108 構成セレクタ
110 EQUAL比較器
112 LESS THAN比較器
114 GREATER THAN比較器
116 インバータ
118 ANDゲート
120 エキスパンダロジック

Claims (10)

  1. パケット分類装置であって、
    パケット分類要求者によって処理されているパケットからの情報を含むパケット分類要求を受信するように動作する入力インタフェースロジックと、
    規則メモリエントリを記憶するように動作する規則メモリであって、前記各規則メモリエントリが演算子(operator)と判定基準メモリポインタとを含む、該規則メモリと、
    判定基準メモリエントリを記憶するように動作する判定基準メモリであって、各判定基準メモリエントリが判定基準を含むような該判定基準メモリと、
    前記パケット分類要求者にパケット分類結果を提供するように動作する出力インタフェースロジックと、
    前記受信したパケット分類要求に応答して、
    (i)前記規則メモリからの規則メモリエントリを検索し、
    (ii)前記検索した規則メモリエントリ内の前記判定基準メモリポインタによって規定される位置において、前記判定基準メモリからの判定基準メモリエントリを検索し、
    (iii)前記検索した規則メモリエントリ内の前記演算子によって規定される演算であって、前記演算が、前記パケット分類要求からの前記パケット情報と、前記検索した判定基準メモリエントリからの前記判定基準とに基づいて実行されている、該演算を実行し、
    (iv)前記演算を実行した結果を反映するパケット分類結果を生成するように動作する制御ロジックとを備えるパケット分類装置。
  2. 前記規則メモリは、第1のタイプ及び第2のタイプの両方の規則メモリエントリを記憶するように動作し、前記各第1のタイプの規則メモリエントリは演算子と判定基準メモリポインタとを含み、前記各第2のタイプの規則メモリエントリは、規則メモリポインタを含み、
    前記制御ロジックは、前記受信したパケット分類要求に応答して、
    (i)前記検索した規則メモリエントリが前記第1のタイプのエントリ、前記第2のタイプのエントリのいずれであるかを判定し、
    (ii)前記検索した規則メモリエントリが前記第1のタイプのエントリである場合には、前記判定基準メモリエントリを検索して、前記規定された演算を実行し、
    (iii)前記検索した規則メモリエントリが第2のタイプのエントリである場合には、前記第2のタイプのエントリに含まれる前記規則メモリポインタによって規定される位置において別の規則メモリエントリを検索し、新しく検索された規則メモリエントリに対して、上記のステップを繰返し行い、
    (iv)全ての検索した第1のタイプのエントリによって規定される各演算を実行した結果を反映するパケット分類結果を生成するように動作する、請求項1に記載のパケット分類装置。
  3. 前記制御ロジックはさらに、終了の指示があるまで、さらに別の規則メモリエントリに対してステップ(i)〜(iii)を繰返し行うように動作する、請求項1に記載のパケット分類装置。
  4. 前記終了の指示は、検索した規則メモリエントリ内のアサートされたDONEビットである、請求項3に記載のパケット分類装置。
  5. 前記制御ロジックは、前記検索したパケット分類要求に含まれる規則メモリアドレスに基づいて、前記規則メモリエントリを検索するように動作する、請求項1に記載のパケット分類装置。
  6. 前記制御ロジックによって検索された前記規則メモリエントリは、第1の規則メモリエントリであり、前記制御ロジックは、前記受信したパケット分類要求に含まれる第1の規則メモリアドレスに基づいて、前記第1の規則メモリエントリを選択するように動作し、前記制御ロジックはさらに、前記受信したパケット分類要求に同様に含まれる第2の規則メモリアドレスに基づいて、第2の規則メモリエントリを選択し、前記第2の規則メモリエントリに対してステップ(i)〜(iii)を繰返し行うように動作する、請求項1に記載のパケット分類装置。
  7. 前記規則メモリエントリは、前記規則メモリエントリが、第2の規則メモリエントリとの複合規則を形成する第1の規則メモリエントリであるか否かを示すCARRY指示子を含み、前記制御ロジックは、前記パケット分類結果が、前記第1及び前記第2の規則メモリエントリの両方に対する前記演算の結果を反映するように、前記第2の規則メモリエントリに対してステップ(i)〜(iii)を繰返し行い、ステップ(iv)において前記パケット分類結果を生成するように動作する、請求項1に記載のパケット分類装置。
  8. 前記判定基準メモリエントリ内の前記判定基準、及び前記要求内の前記情報は、ネットワークアドレスである、請求項1に記載のパケット分類装置。
  9. ハードウエアサーチエンジンにサーチ判定基準を保持するために用いられる1組の判定基準メモリ内の空間を管理する方法であって、
    前記判定基準メモリの種々の構成の順序を保持する過程であって、前記構成が前記各構成を用いて判定基準メモリエントリを記憶するために必要とされる判定基準メモリ記憶空間の総量に準じて順序付けされるような該保持する過程と、
    前記種々の構成に従って判定基準メモリエントリを記憶するための前記判定基準メモリ内の空間の利用可能性を指示する1組のリストを保持する過程と、
    所与のサーチを実行するために、前記構成のいずれが、前記サーチに必要とされる判定基準メモリエントリを記憶する判定基準メモリ記憶空間の最低量しか必要としない最小構成であるかを判定する過程と、
    前記リストによって指示されるように、最小の利用可能な構成をサーチする過程であって、前記最小構成で開始し、最初の前記利用可能な最小構成が見つかるまで、判定基準メモリ空間の消費が増加する順序に進行するようなサーチする過程と、
    前記サーチのために必要とされる前記判定基準メモリエントリを記憶するために、前記最小の利用可能な構成を割り当て、前記割り当てられた構成が利用可能でなくなることを示すために、利用可能性のリストを更新する過程とを有する、方法。
  10. 前記最小構成以外の構成が割り当てられる場合には、前記割り当てられた構成のうちの不要な部分が、別の判定基準メモリエントリに割り当てることができる異なる構成として用いることができるか否かを判定する過程と、前記異なる構成の前記利用可能性を示すために前記利用可能性のリストを更新する過程とをさらに有する、請求項9に記載の方法。
JP2000378432A 1999-12-13 2000-12-13 パケット分類エンジン Expired - Fee Related JP3734704B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/459,448 US6587463B1 (en) 1999-12-13 1999-12-13 Packet classification engine
US09/459448 1999-12-13

Publications (2)

Publication Number Publication Date
JP2001223749A JP2001223749A (ja) 2001-08-17
JP3734704B2 true JP3734704B2 (ja) 2006-01-11

Family

ID=23824816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000378432A Expired - Fee Related JP3734704B2 (ja) 1999-12-13 2000-12-13 パケット分類エンジン

Country Status (5)

Country Link
US (1) US6587463B1 (ja)
EP (1) EP1128609B1 (ja)
JP (1) JP3734704B2 (ja)
CA (1) CA2326939C (ja)
DE (1) DE60026676T2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973072B1 (en) * 2001-02-22 2005-12-06 Cisco Technology, Inc. High performance protocol for an interconnect system of an intermediate network node
US7230917B1 (en) * 2001-02-22 2007-06-12 Cisco Technology, Inc. Apparatus and technique for conveying per-channel flow control information to a forwarding engine of an intermediate network node
US7286532B1 (en) * 2001-02-22 2007-10-23 Cisco Technology, Inc. High performance interface logic architecture of an intermediate network node
US6940854B1 (en) * 2001-03-23 2005-09-06 Advanced Micro Devices, Inc. Systems and methods for determining priority based on previous priority determinations
US7167472B2 (en) * 2001-04-18 2007-01-23 Brocade Communications Systems, Inc. Fibre channel zoning by device name in hardware
US7366194B2 (en) * 2001-04-18 2008-04-29 Brocade Communications Systems, Inc. Fibre channel zoning by logical unit number in hardware
US7286566B1 (en) * 2001-05-08 2007-10-23 Cortina Systems, Inc. Multi-service segmentation and reassembly device that maintains reduced number of segmentation contexts
US7389360B1 (en) 2001-11-05 2008-06-17 Juniper Networks, Inc. Context switched route lookup key engine
US7813346B1 (en) * 2001-11-21 2010-10-12 Juniper Networks, Inc. Filter-based forwarding in a network
US7209482B1 (en) 2001-12-21 2007-04-24 Juniper Networks, Inc. Reorder engine with error recovery
US7043544B2 (en) * 2001-12-21 2006-05-09 Agere Systems Inc. Processor with multiple-pass non-sequential packet classification feature
US7423975B2 (en) * 2002-03-05 2008-09-09 Broadcom Corporation Method, apparatus and computer program product for performing data packet classification
US7684400B2 (en) * 2002-08-08 2010-03-23 Intel Corporation Logarithmic time range-based multifield-correlation packet classification
US7724740B1 (en) 2002-08-27 2010-05-25 3Com Corporation Computer system and network interface supporting class of service queues
US7554980B1 (en) * 2002-10-18 2009-06-30 Alcatel Lucent Packet classification using relevance scoring
US8040886B2 (en) 2003-04-08 2011-10-18 Cisco Technology, Inc. Programmable packet classification system using an array of uniform content-addressable memories
US7352740B2 (en) * 2003-04-29 2008-04-01 Brocade Communciations Systems, Inc. Extent-based fibre channel zoning in hardware
US7260840B2 (en) * 2003-06-06 2007-08-21 Microsoft Corporation Multi-layer based method for implementing network firewalls
US8788823B1 (en) * 2003-09-03 2014-07-22 Cisco Technology, Inc. System and method for filtering network traffic
US7430203B2 (en) * 2004-01-29 2008-09-30 Brocade Communications Systems, Inc. Fibre channel zoning hardware for directing a data packet to an external processing device
CN100347992C (zh) * 2004-07-09 2007-11-07 清华大学 实现线速对数据流按规则库近似匹配的可配置的硬件结构
US7492763B1 (en) * 2004-07-16 2009-02-17 Applied Micro Circuits Corporation User-specified key creation from attributes independent of encapsulation type
US7340570B2 (en) * 2004-08-18 2008-03-04 Intel Corporation Engine for comparing a key with rules having high and low values defining a range
US7630318B2 (en) * 2004-12-15 2009-12-08 Agilent Technologies, Inc. Filtering wireless network packets
US8631483B2 (en) * 2005-06-14 2014-01-14 Texas Instruments Incorporated Packet processors and packet filter processes, circuits, devices, and systems
JP2007243300A (ja) * 2006-03-06 2007-09-20 Fujitsu Ltd 帯域制御プログラム、帯域制御装置、帯域制御方法
US20090052443A1 (en) * 2007-08-23 2009-02-26 Santosh Kolenchery Method and apparatus for managing dynamic filters for nested traffic flows
US20090271857A1 (en) * 2008-04-25 2009-10-29 Jia Wang Method and apparatus for filtering packets using an approximate packet classification
US7957273B2 (en) * 2008-06-06 2011-06-07 Redpine Signals, Inc. Packet re-transmission controller for block acknowledgement in a communications system
US9106539B2 (en) 2009-03-26 2015-08-11 At&T Intellectual Property I, L.P. User-controlled network configuration for handling multiple classes of service
DE102010020446B4 (de) 2010-05-12 2012-12-06 Wago Verwaltungsgesellschaft Mbh Automatisierungsgerät und Verfahren zur beschleunigten Verarbeitung von selektierten Prozessdaten
TWI540431B (zh) * 2014-09-04 2016-07-01 晨星半導體股份有限公司 電子裝置及其管理方法
US10326817B2 (en) * 2016-12-20 2019-06-18 Cisco Technology, Inc. System and method for quality-aware recording in large scale collaborate clouds
JP7225729B2 (ja) * 2018-11-21 2023-02-21 株式会社デンソー 中継装置及び中継方法
EP4113951A1 (en) * 2021-06-29 2023-01-04 Renesas Electronics Corporation Frame data processing
US20230319168A1 (en) * 2022-04-01 2023-10-05 Nxp B.V. Hardware ethernet header verification

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3369204B2 (ja) * 1991-10-25 2003-01-20 株式会社東芝 プログラマブルコントローラ
US5818838A (en) * 1995-10-12 1998-10-06 3Com Corporation Method and apparatus for transparent intermediate system based filtering on a LAN of multicast packets
US6081522A (en) * 1997-06-30 2000-06-27 Sun Microsystems, Inc. System and method for a multi-layer network element
US6041053A (en) * 1997-09-18 2000-03-21 Microsfot Corporation Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards

Also Published As

Publication number Publication date
CA2326939A1 (en) 2001-06-13
DE60026676T2 (de) 2006-11-09
DE60026676D1 (de) 2006-05-11
JP2001223749A (ja) 2001-08-17
EP1128609B1 (en) 2006-03-15
EP1128609A2 (en) 2001-08-29
US6587463B1 (en) 2003-07-01
EP1128609A3 (en) 2004-03-24
CA2326939C (en) 2007-01-09

Similar Documents

Publication Publication Date Title
JP3734704B2 (ja) パケット分類エンジン
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US9094237B2 (en) Packet routing and switching device
JP3640299B2 (ja) ルートルックアップおよびパケット分類要求のための提起および応答アーキテクチャ
US7411957B2 (en) Hardware filtering support for denial-of-service attacks
US7447204B2 (en) Method and device for the classification and redirection of data packets in a heterogeneous network
US6633565B1 (en) Apparatus for and method of flow switching in a data communications network
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US7656887B2 (en) Traffic control method for network equipment
JP3832816B2 (ja) ネットワーク・プロセッサ、メモリ構成及び方法
US20050171937A1 (en) Memory efficient hashing algorithm
US7000061B2 (en) Caching queue status updates
US20020061022A1 (en) Network switch using network processor and methods
US20050232204A1 (en) Network switch and components and method of operation
US20030227925A1 (en) Packet processing device
US8265072B2 (en) Frame switching device
US8555374B2 (en) High performance packet processing using a general purpose processor
US8954691B2 (en) Identifying unallocated memory segments
JPH0685842A (ja) 通信装置
EP1122927A2 (en) Route lookup engine
JP2003508957A (ja) ネットワーク・プロセッサ処理コンプレックス及び方法
JP2003508951A (ja) Vlsiネットワーク・プロセッサ及び方法
JP4209186B2 (ja) パケットの高速ルーティング及びスイッチングに対するメモリ要件を低減するように構成されたプロセッサ
US6895013B1 (en) Coherent access to and update of configuration information in multiprocessor environment
US7324438B1 (en) Technique for nondisruptively recovering from a processor failure in a multi-processor flow device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050822

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051019

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees