(57)【要約】【課題】複数のコンピュータ・システムおよびネットワーク・プロセッサによって形成されるネットワーク・リソース・サーバまたはサーバ・ファームを含むシステムであって、ネットワーク・プロセッサが、ネットワークおよび関連する方法のデータ・フロー速度と実質的に同一のデータ速度で、サーバ・ファームによってサポートされる外部ネットワークと交換されるデータを転送するシステムを提供すること。【解決手段】ネットワーク・プロセッサは、データ・フローを監視し、データ・フローの変化の速度を判定するために時間に関するデータ・フローの導関数を計算し、外部の所定の境界である変化の速度に応答してパケットを破棄する命令を修正することによって、サービス妨害攻撃などの攻撃からネットワーク・リソース・サーバを保護する。
2005521273.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
中央処理装置およびサーバ・メモリを含む少なくとも１つのコンピュータ・システムを有するネットワーク・リソース・サーバと、
前記ネットワーク・リソース・サーバに結合されたネットワーク・プロセッサであって、
複数のインターフェース・プロセッサと、
前記インターフェース・プロセッサからアクセス可能に命令を保管する命令メモリと、
前記ネットワーク・プロセッサを介して前記ネットワーク・リソース・サーバとの間で渡されるデータを、前記インターフェース・プロセッサからアクセス可能に保管するデータ・メモリと、
複数の入出力ポートであって、
前記入出力ポートの１つが、前記ネットワーク・プロセッサを介して渡されるデータを、前記インターフェース・プロセッサの指示の下で外部ネットワークと交換するように適合され、
前記入出力ポートの他の少なくとも１つが、前記ネットワーク・プロセッサを介して渡されるデータを前記ネットワーク・リソース・サーバと交換するように適合された
複数の入出力ポートと
を含むネットワーク・プロセッサと
を含み、前記ネットワーク・プロセッサおよび前記ネットワーク・リソース・サーバが、前記命令メモリにロードされる命令の前記インターフェース・プロセッサによる実行に応答して、前記入出力ポートの間のデータの前記交換および前記ネットワーク・リソース・サーバとの間の前記データ・メモリを介するデータのフローを指示する際に協力し、
前記ネットワーク・プロセッサが、さらに、前記ネットワーク・リソース・サーバにアドレッシングされたデータ・フローの速度を監視する少なくとも１つの速度モニタと、データ・フローの変化の速度を判定するために時間に関するデータ・フロー速度の導関数を計算する構成要素を含む前記インターフェース・プロセッサの少なくとも１つと、前記判定された変化の速度に応答して前記命令メモリにロードされた前記命令を修正する少なくとも１つのモディファイヤとを含む
装置。
【請求項２】
前記少なくとも１つのインターフェース・プロセッサが、さらに、前記判定された変化の速度を少なくとも１つの所定の境界と比較する手段を含み、前記変化の速度が前記少なくとも１つの所定の境界に対する所定の関係を有する時に、前記モディファイヤが、前記命令を修正する、請求項１に記載の装置。
【請求項３】
前記ネットワーク・プロセッサが、半導体基板を含み、さらに、前記インターフェース・プロセッサ、前記命令メモリ、前記データ・メモリ、および前記入出力ポートが、前記半導体基板上に形成される、請求項１に記載の装置。
【請求項４】
前記ネットワーク・プロセッサが、通信プロトコルを処理し、前記コンピュータ・システムによって処理されるアプリケーション・データを前記ネットワーク・リソース・サーバと交換するように適合される、請求項１に記載の装置。
【請求項５】
前記ネットワーク・リソース・サーバが、別種の目的をサービスする複数のコンピュータ・システムを有し、前記ネットワーク・プロセッサが、適当な目的に従ってデータを動かすために前記コンピュータ・システムの適当な１つにアプリケーション・データを向ける、請求項４に記載の装置。
【請求項６】
前記ネットワーク・リソース・サーバが、共通の目的をサービスする複数のコンピュータ・システムを有し、前記ネットワーク・プロセッサが、前記コンピュータ・システムの間で所定のフローでデータを動かすために前記コンピュータ・システムの変化する１つにアプリケーション・データを向ける、請求項４に記載の装置。
【請求項７】
前記インターフェース・プロセッサの数が、４を超える、請求項１に記載の装置。
【請求項８】
前記ネットワーク・プロセッサの前記少なくとも１つの速度モニタが、前記ネットワーク・リソース・サーバに向かうインバウンドのデータ・フローを監視し、前記少なくとも１つのモディファイヤが、インバウンド・データの変化の速度が所定の境界を超えることに基づいてインバウンド・データの破棄を増やす、請求項２に記載の装置。
【請求項９】
前記ネットワーク・プロセッサの前記少なくとも１つのモディファイヤが、インバウンド・データの変化の速度が第２の所定の境界未満になることに基づいてインバウンド・データの破棄率を減らす、請求項２に記載の装置。
【請求項１０】
装置であって、
中央処理装置およびサーバ・メモリを有する少なくとも１つのコンピュータ・システムを含むネットワーク・リソース・サーバと、
前記ネットワーク・リソース・サーバに結合されたネットワーク・プロセッサであって、
複数のインターフェース・プロセッサと、
前記インターフェース・プロセッサからアクセス可能に命令を保管する命令メモリと、
前記ネットワーク・プロセッサを介して前記ネットワーク・リソース・サーバとの間で渡されるデータを、前記インターフェース・プロセッサからアクセス可能に保管するデータ・メモリと、
複数の入出力ポートであって、
前記入出力ポートの１つが、前記ネットワーク・プロセッサを介して渡されるデータを、前記インターフェース・プロセッサの指示の下で外部ネットワークと交換するように適合され、
前記入出力ポートの他の少なくとも１つが、前記ネットワーク・プロセッサを介して渡されるデータを前記ネットワーク・リソース・サーバと交換するように適合された
複数の入出力ポートと
を含むネットワーク・プロセッサと
を含み、前記ネットワーク・プロセッサが、前記命令メモリにロードされる命令の前記インターフェース・プロセッサによる実行に応答して、前記入出力ポートの間のデータの前記交換および前記ネットワーク・リソース・サーバとの間の前記データ・メモリを介するデータのフローを指示する際に前記ネットワーク・リソース・サーバと協力し、
前記ネットワーク・プロセッサが、さらに、前記ネットワーク・リソース・サーバに向かうインバウンドのデータ・フローの速度を監視する少なくとも１つの速度モニタと、データ・フローの変化の速度を判定するために時間に関するデータ・フロー速度の導関数を計算する構成要素を含む前記インターフェース・プロセッサの少なくとも１つと、前記判定された変化の速度に応答して前記命令メモリにロードされた前記命令を修正する少なくとも１つのモディファイヤとを含む
装置。
【請求項１１】
前記少なくとも１つのインターフェース・プロセッサが、さらに、前記判定された変化の速度を少なくとも１つの所定の境界と比較する手段を含み、前記変化の速度が前記少なくとも１つの所定の境界に対する所定の関係を有する時に、前記モディファイヤが、前記命令を修正する、請求項１０に記載の装置。
【請求項１２】
前記ネットワーク・プロセッサが、半導体基板を含み、さらに、前記インターフェース・プロセッサ、前記命令メモリ、前記データ・メモリ、および前記入出力ポートが、前記半導体基板上に形成される、請求項１０に記載の装置。
【請求項１３】
前記ネットワーク・プロセッサが、通信プロトコルを処理するように適合され、前記サーバによって処理されるアプリケーション・データを前記ネットワーク・リソース・サーバと交換する、請求項１０に記載の装置。
【請求項１４】
前記ネットワーク・リソース・サーバが、別種の目的をサービスする複数のコンピュータ・システムを含み、前記ネットワーク・プロセッサが、適当な目的に従ってデータを動かすために前記システムの適当な１つにアプリケーション・データを向ける、請求項１２に記載の装置。
【請求項１５】
前記ネットワーク・リソース・サーバが、共通の目的をサービスする複数のコンピュータ・システムを含み、前記ネットワーク・プロセッサが、前記コンピュータ・システム内で所定のフローでデータを動かすために前記コンピュータ・システムの変化する１つにアプリケーション・データを向ける、請求項１２に記載の装置。
【請求項１６】
前記インターフェース・プロセッサの数が、４を超える、請求項１０に記載の装置。
【請求項１７】
前記ネットワーク・プロセッサの前記少なくとも１つの速度モニタが、前記ネットワーク・リソース・サーバへのインバウンドのデータ・フローを監視し、前記モディファイヤが、インバウンド・データの変化の速度が所定の境界を超えて増えることに基づいてインバウンド・データの破棄を減らす、請求項１１に記載の装置。
【請求項１８】
前記ネットワーク・プロセッサの前記モディファイヤが、インバウンド・データの変化の速度が第２の所定の境界未満になることに基づいてインバウンド・データの破棄率を減らす、請求項１１に記載の装置。
【請求項１９】
装置であって、
少なくとも１つの中央処理装置およびサーバ・メモリを含む少なくとも１つのコンピュータ・システムを有するネットワーク・リソース・サーバと、
前記ネットワーク・リソース・サーバに結合されたネットワーク・プロセッサであって、
複数のインターフェース・プロセッサと、
前記インターフェース・プロセッサからアクセス可能な命令を保管する命令メモリと、
前記ネットワーク・プロセッサを介して前記ネットワーク・リソース・サーバとの間で渡されるデータを、前記インターフェース・プロセッサからアクセス可能に保管するデータ・メモリと、
複数の入出力ポートであって、
前記入出力ポートの１つが、前記ネットワーク・プロセッサを介して渡されるデータを、前記インターフェース・プロセッサの指示の下で外部ネットワークと交換するように適合され、
前記入出力ポートの他の少なくとも１つが、前記ネットワーク・プロセッサを介して渡されるデータを前記ネットワーク・リソース・サーバと交換するように適合された
複数の入出力ポートと
を含むネットワーク・プロセッサと
を含み、前記ネットワーク・プロセッサが、前記命令メモリにロードされる命令の前記インターフェース・プロセッサによる実行に応答して、前記入出力ポートの間のデータの前記交換および前記ネットワーク・リソース・サーバとの間の前記データ・メモリを介するデータのフローを指示する際に前記ネットワーク・リソース・サーバと協力し、
前記ネットワーク・プロセッサが、さらに、前記ネットワーク・リソース・サーバからアウトバウンドのデータ・フローの速度を監視する少なくとも１つの速度モニタと、データ・フローの変化の速度を判定するために時間に関するデータ・フロー速度の導関数を計算する構成要素を含む前記インターフェース・プロセッサの少なくとも１つと、前記判定された変化の速度に応答して前記命令メモリにロードされた前記命令を修正する少なくとも１つのモディファイヤとを含む
装置。
【請求項２０】
前記少なくとも１つのインターフェース・プロセッサが、さらに、前記判定された変化の速度を少なくとも１つの所定の境界と比較する手段を含み、前記変化の速度が前記少なくとも１つの所定の境界に対する所定の関係を有する時に、前記モディファイヤが、前記命令を修正する、請求項１９に記載の装置。
【請求項２１】
前記ネットワーク・プロセッサが、半導体基板を含み、さらに、前記インターフェース・プロセッサ、前記命令メモリ、前記データ・メモリ、および前記入出力ポートが、前記半導体基板上に形成される、請求項１９に記載の装置。
【請求項２２】
前記ネットワーク・プロセッサが、通信プロトコルを処理し、前記ネットワーク・リソース・サーバによって処理されるアプリケーション・データを前記ネットワーク・リソース・サーバと交換するように適合される、請求項１９に記載の装置。
【請求項２３】
前記ネットワーク・リソース・サーバが、別種の目的をサービスする複数のコンピュータ・システムを有し、前記ネットワーク・プロセッサが、適当な目的に従ってデータを動かすために前記コンピュータ・システムの適当な１つにアプリケーション・データを向ける、請求項２２に記載の装置。
【請求項２４】
前記ネットワーク・リソース・サーバが、共通の目的をサービスする複数のコンピュータ・システムを有し、前記ネットワーク・プロセッサが、前記コンピュータ・システムの間で所定のフローでデータを動かすために前記コンピュータ・システムの変化する１つにアプリケーション・データを向ける、請求項２２に記載の装置。
【請求項２５】
前記インターフェース・プロセッサの数が、４を超える、請求項１９に記載の装置。
【請求項２６】
前記少なくとも１つの速度モニタが、前記ネットワーク・リソース・サーバからアウトバウンドのデータ・フローを監視し、前記少なくとも１つのモディファイヤが、アウトバウンド・データの変化の速度が所定の境界未満に減ることに基づいてインバウンド・データの破棄を増やす、請求項２０に記載の装置。
【請求項２７】
前記ネットワーク・プロセッサの前記少なくとも１つのモディファイヤが、アウトバウンド・データの変化の速度が第２の所定の境界を超えて増えることに基づいてインバウンド・データの破棄率を減らす、請求項２０に記載の装置。
【請求項２８】
ネットワーク・リソース・サーバとデータ・ネットワークの間でのネットワーク・プロセッサを介して交換されるデータのビット・ストリームを渡すステップと、
前記ネットワーク・プロセッサを介して渡されるデータのデータ・フロー速度を監視するステップと、
前記データ・フロー速度の変化の速度を判定するために前記データ・フロー速度の第１次導関数を計算するステップと、
前記データ・フロー速度の変化の前記速度に基づいて前記ネットワーク・リソース・サーバに向かって流れるデータを選択的に破棄するステップと
を含む方法。
【請求項２９】
前記データ・フロー速度の変化の前記速度を少なくとも１つの所定の境界と比較するステップをさらに含み、前記選択的に破棄するステップが、変化の前記速度が少なくとも１つの所定の境界に対する事前に指定された関係を有する時に行われる、請求項２８に記載の方法。
【請求項３０】
監視する前記ステップが、前記ネットワーク・リソース・サーバに向かうインバウンドのデータ・フローの速度を監視するステップを含む、請求項２８に記載の方法。
【請求項３１】
データを選択的に破棄する前記ステップが、インバウンド・データ・フローの変化の前記速度が所定の境界を超えて増えたと判定される時に、前記ネットワーク・リソース・サーバに向かって流れるデータの前記破棄を増やすステップを含む、請求項２９に記載の方法。
【請求項３２】
データを選択的に破棄する前記ステップが、インバウンド・データ・フローの変化の前記速度が所定の境界未満に減ったと判定される時に、前記ネットワーク・リソース・サーバに向かって流れるデータの前記破棄を減らすステップを含む、請求項２９に記載の方法。
【請求項３３】
監視する前記ステップが、前記ネットワーク・リソース・サーバからアウトバウンドのデータ・フローの前記速度を監視するステップを含む、請求項２８に記載の方法。
【請求項３４】
データを選択的に破棄する前記ステップが、アウトバウンド・データ・フローの変化の前記速度が所定の境界未満に減ったと判定される時に、前記ネットワーク・リソース・サーバに向かって流れるデータの前記破棄を増やすステップを含む、請求項３３に記載の方法。
【請求項３５】
データを選択的に破棄する前記ステップが、アウトバウンド・データ・フローの変化の前記速度が所定の境界を超えて増えたと判定される時に、前記ネットワーク・リソース・サーバに向かって流れるデータの前記破棄を減らすステップを含む、請求項３３に記載の方法。
【請求項３６】
少なくとも１つのネットワーク・リソース・サーバおよび外部ネットワークに結合されたネットワーク・プロセッサであって、
複数のインターフェース・プロセッサと、
前記インターフェース・プロセッサからアクセス可能に命令を保管する命令メモリと、
前記ネットワーク・プロセッサを介して前記ネットワーク・リソース・サーバとの間で渡されるデータを、前記インターフェース・プロセッサからアクセス可能に保管するデータ・メモリと、
複数の入出力ポートであって、
前記入出力ポートの１つが、前記ネットワーク・プロセッサを介して渡されるデータを、前記インターフェース・プロセッサの指示の下で外部ネットワークと交換するように適合され、
前記入出力ポートの他の少なくとも１つが、前記ネットワーク・プロセッサを介して渡されるデータを前記ネットワーク・リソース・サーバと交換するように適合された
複数の入出力ポートと
を含むネットワーク・プロセッサと
を含み、前記ネットワーク・プロセッサおよび前記ネットワーク・リソース・サーバが、前記命令メモリにロードされる命令の前記インターフェース・プロセッサによる実行に応答して、前記入出力ポートの間のデータの前記交換および前記ネットワーク・リソース・サーバとの間の前記データ・メモリを介するデータのフローを指示する際に協力し、
前記ネットワーク・プロセッサが、さらに、前記ネットワーク・リソース・サーバにアドレッシングされたデータ・フローの速度を監視する少なくとも１つの速度モニタと、データ・フローの変化の速度を判定するために時間に関するデータ・フロー速度の導関数を計算する構成要素を含む前記インターフェース・プロセッサの少なくとも１つと、前記判定された変化の速度に応答して前記命令メモリにロードされた前記命令を修正する少なくとも１つのモディファイヤとを含む
ネットワーク・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信に関し、具体的には、サーバ・クラスタに対するサービス妨害（denialof service）攻撃に対する保護の装置および方法に関する。
【０００２】
関心を持つ読者は、本明細書に記載の発明の理解を助けるために、以下の説明に関係し、それぞれが参照によって本明細書に完全に繰り返されているかのように組み込まれる下記の従来の開示を参照されたい。
１９９９年８月２７日に出願の米国特許出願第０９／３８４６９１号、「NetworkProcessor Processing Complex and Methods」
１９９９年８月２７日に出願の米国特許出願第０９／３８４７４４号、「NetworkProcessor, Memory Organization and Methods」
１９９９年１１月２７日に出願の米国特許出願第０９／４４８１９０号、「Methodand System for Providing Optimal Discard Fraction」
２０００年４月１８日に出願の米国特許出願第０９／５５１７０７号、「ServerCluster Interconnection Using Network Processor」
２０００年４月１８日に出願の米国特許出願第０９／５５１８２２号、「Data FlowPattern Recognition and Manipulation」
【背景技術】
【０００３】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発が、しばしばコンピュータ時代の起源として引用される。その時以来、コンピュータ・システムは、極度に洗練された装置に進化し、コンピュータ・システムを、多数の異なる環境で見つけることができる。コンピュータ・システムには、通常、ハードウェア（たとえば、半導体、回路基板など）およびソフトウェア（たとえば、コンピュータ・プログラム）の組合せが含まれる。半導体処理およびコンピュータ・アーキテクチャの進歩によって、コンピュータ・ハードウェアの性能が高まり、ハードウェアのより高い性能を利用するより洗練されたコンピュータ・ソフトウェアが進化し、数年前に存在したものよりはるかに強力な現在のコンピュータ・システムがもたらされた。
【０００４】
技術の他の変化も、コンピュータの使い方に深く影響した。たとえば、コンピュータの広範囲での急増によって、コンピュータが互いに通信できるようにするコンピュータ・ネットワークの開発が促された。パーソナル・コンピュータ（ＰＣ）の導入に伴って、コンピューティングが、多数の人々からアクセス可能になった。パーソナル・コンピュータのネットワークが開発されて、個々のユーザが互いに通信できるようになった。この形で、会社内または会社の間で、多数の人々が、単一のコンピュータ・システムで走行するソフトウェア・アプリケーションを用いて、ネットワークを介して同時に通信することができる。
【０００５】
最近に非常に人気を得た重要なコンピュータ・ネットワークの１つが、インターネットである。インターネットは、コンピュータおよびネットワークの現代の増殖から成長し、ウェブ・ページを含むリンクされたコンピュータ・システムの洗練された全世界ネットワークに進化した。この通信ネットワークおよびコンピュータ・システムのシステムによって、集合的に、「ワールド・ワイド・ウェブ」または「ＷＷＷ」が構成される。個々のＰＣ（たとえばワークステーション）の、ＷＷＷへのアクセスを求めるユーザは、通常は、ウェブ・ブラウザと称するソフトウェア・アプリケーションを使用してそれを行う。ウェブ・ブラウザによって、ウェブ・サーバと称するコンピュータへのインターネットを介する接続が行われ、ユーザのワークステーションに表示される、ウェブ・サーバからの情報が受信される。ユーザに表示される情報は、通常は、ページに編成され、このページは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）と称する特殊化された言語を使用して構成される。ＨＴＭＬを使用するウェブ・ブラウザは、現在、市場にあるほとんどすべてのコンピュータ・システムについて入手可能であり、ＷＷＷが、コンピュータおよびモデムにアクセスできる、事実上すべての人からアクセス可能になる。ＷＷＷは、ますます人気が高まっているが、ＷＷＷにアクセスするコンピュータ・ユーザのすばやい成長および拡大によって、それに付随する問題がもたらされた。これらの問題の一部を、この開示で識別する。
【０００６】
ワールド・ワイド・ウェブの副産物の１つが、サーバ・ファーム（server farm）である。用語「ファーム」の使用は、データが、エンド・ユーザからファーム内の協力する装置のいずれかの間で多少はシームレスに流れることができるように、複数の装置が協力して一緒に結合されることを伝えることが意図されている。したがって、複数のサーバ・コンピュータ・システムが、協力して、ネットワークのデータ処理需要を分割する。そのような機能の分割を実行する技術は、使用可能であるか開発中であるが、そのような環境での問題が生じる可能性があり、これらの問題は、本明細書に記載の本発明によって対処され、克服される。以下で説明する発明は、単一サーバ・システムならびにサーバ・ファームに関して有用性を有することに留意されたい。そのため、用語「ファーム」は、本明細書で、時々、単一のサーバ・コンピュータ・システムを指すのに使用される。
【０００７】
以下の説明では、ネットワーク・データ通信の知識および、そのような通信ネットワークで使用されるスイッチおよびルータの知識を前提とする。具体的に言うと、この説明では、ネットワーク動作を複数の層に分解する、ネットワーク・アーキテクチャのＯＳＩモデルに精通していることを前提とする。ＯＳＩモデルに基づく通常のアーキテクチャは、信号がそれを介して渡される物理的なパスまたは媒体としてのレイヤ１（時々「Ｌ１」とも称する）から、レイヤ２から７を介して上に伸び、最後の層は、ネットワークにリンクされたコンピュータ・システムで動作するアプリケーション・プログラムの層である。この文書では、Ｌ１、Ｌ２などの言及が、ネットワーク・アーキテクチャの対応する層を指すことが意図されている。この開示では、パケット、フレーム、およびセルと称するビット・ストリングおよびネットワーク通信でのそれらの処理の基本的な理解も前提とする。後者の点で、この開示では、そのようなビット・ストリングが、エンキューするマネージャの制御の下の通信デバイス内に設けられたキューおよびコンピュータ・システム・メモリを介してそれによって渡されるある種の技術の知識を前提とする。キュー管理には、ＲＥＤおよびＢＬＵＥとして識別されるようになった前に既知のプロセスで、キュー内で維持されるエンキューされるデータのレベルを判定することと、キューに移動されるデータのいわゆるオファード・レート（offered rate）を判定することが含まれる。この技術に関するさらなる議論が、後でこの開示で示される。
【０００８】
本明細書で対処される、一特定の問題は、ユーザに対して特定のサーバまたはサーバ・ファームのリソースを拒否する故意の試みから生じる。そのような試みの現在は古典的な形態を、「サービス妨害」攻撃またはＤＯＳ攻撃と称する。ＤＯＳ攻撃は、通常は、加入者サービスあるいは特定のウェブ・サイトまたは特定のデータ・ベースなどのネットワーク・リソースの可用性に干渉することを望む個人またはグループによって画策される。攻撃者は、マーシャルすることができるリソースはどれでも使用して、急激に増加する数のリソースへの呼出しを、リソースがそれを介してリンクされるネットワーク（たとえばインターネット）を介して送信させる。リソースをサポートするサーバの応答性が限られている（不可避的にそうである）場合には、ほぼ同時に提示される大量の需要によって、過負荷が引き起こされ、サーバが、応答時間を低速にするか、多くの場合に「ダウン」するか使用不能になる。いくつかの場合に、リソースの可用性の復元または「サーバを復帰させる」ことによって、時間と技術サポート担当者の人日が消費される可能性がある。
【特許文献１】米国特許出願第０９／３８４６９１号
【特許文献２】米国特許出願第０９／３８４７４４号
【特許文献３】米国特許出願第０９／４４８１９０号
【特許文献４】米国特許出願第０９／５５１７０７号
【特許文献５】米国特許出願第０９／５５１８２２号
【特許文献６】米国特許第５００８８７８号
【特許文献７】米国特許出願第０９／３３０９６８号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、本発明の目的は、サーバ・コンピュータ・システムまたはサーバ・ファームに接合された複数のサーバ・コンピュータ・システムの保護を容易にするシステムおよび方法を提供することである。
【課題を解決するための手段】
【００１０】
前述および他の目的は、ネットワーク・プロセッサがサーバとネットワークの間に置かれ、ＤＯＳ攻撃の検出および無害化（defuse）に使用される、本発明によって実現される。ネットワーク・プロセッサは、データ・フローを監視し、データ・フローの変化の速度を判定するために、時間に対するデータ・フローの導関数を計算し、所定の境界の外の変化の速度に応答して、パケットを破棄する命令を変更することによって、サービス妨害攻撃などの攻撃に対してネットワーク・リソース・サーバを保護する。
【００１１】
本発明を、特に添付図面に関して詳細に説明する。
【発明を実施するための最良の形態】
【００１２】
本発明を、本発明の好ましい実施形態が示された添付図面に関して下で詳細に説明するが、以下の説明の初めに、当業者が、本発明の望ましい結果を達成しながら本明細書に記載の発明を修正できることを理解されたい。したがって、以下の説明は、当業者に向けられた広義の教示的開示として理解されなければならず、本発明に対する制限として理解してはならない。
【００１３】
添付図面を参照する前に、短い全般的な説明が適当と思われる。ネットワーク・プロセッサ（ＮＰ）は、通信パケットの媒体速度（media speed）処理および／または分析ならびにその処理または分析に基づく意思決定を可能にする、新生の技術である。頻繁に使用される応用例の１つによって、スイッチング・ファブリックを介して接続された１つまたは複数のネットワーク・プロセッサがもたらされて、スイッチまたはルータなど、外部の広域ネットワークへのゲートウェイ機能を実行できる通信製品が形成される。ネットワーク・プロセッサによって行われる処理には、一般に、パケット内容（通常はヘッダ内のソース／宛先アドレス対）の検査と、その後の、アドレス対に基づくスイッチングまたはルーティングの意思決定が含まれる。この処理を、「フィルタリング」と称し、パケットをスイッチングする方法に関して行われる判断は、一般に「フィルタ・ルール」と称する規則の組によって定義される。
【００１４】
そのような応用例の１つを、図２に示すが、図２では、１つまたは複数のＮＰが、おそらくはスイッチング・ファブリックを介して、１つまたは複数のデータ処理サーバに接続される。この応用例では、ＮＰは、データ・トラフィックをさまざまなサーバに向けるスイッチング機能を提供しているが、暗号化および／または暗号化解除、圧縮および／または伸長、ウィルス検出などの他の機能も行うことができる。本発明では、ＮＰをサーバ機能に統合できることも企図されている。
【００１５】
本明細書に記載のシナリオのすべてにおいて、ＮＰの主要な機能は、通常はネットワーク管理者によって通信システムに入力された判断基準の組に基づいてデータ・フローをフィルタリングすることである。ネットワーク・プロセッサは、これらのフィルタ規則を使用して、トラフィックのフローの向きを決める。より高度な応用例では、サービス・フィルタ規則のクラスを呼び出して、ネットワーク過負荷の場合に、あるデータ・フローを異なる形で処理することができる。以下の説明では、単一のクラスまたはタイプのデータ・フローを扱う。
【００１６】
前に述べたように、ネットワーク通新製品が、サーバまたはサーバ・ファームへのゲートウェイまたは入口として働く時に、ネットワーク管理者は、ネットワーク・プロセッサ（ＮＰ）によって提供される機能性を用いて、フィルタ・ルールをセット・アップすることができ、このフィルタ・ルールによって、トラフィックのフローが特定のサーバに向けられ、トラフィックがリダイレクトされ、あるいは、トラフィックが破棄され、これらのすべてが、定常状態の規則の事前に定義された組に基づく。たとえば、すべてのビデオ・トラフィックが、非常に高い優先順位を有することができ、これらを、必ず特定の高性能サーバにルーティングすることができる。しかし、インターネット／イントラネットを扱ったことがある者は誰でも、特定のクラスのサービスの特定のアプリケーション（たとえば電子メール）への輻輳のゆえに遅延が過度に長くなり、これによって、ほとんどの時に、サーバに対する瞬間的な負荷のゆえにサーバが応答できなくなる場合があることを知っている。極端な場合に、サービス妨害攻撃と称するサーバに対する攻撃は、個人または個人の小人数のグループが、特定のサーバにサービスに関する大量の要求を送信し、したがって、他者によるサーバのリソースの使用を拒否する時に発生する。
【００１７】
ＮＰは、本明細書に記載の発明に従ってこの問題に適用される２つの独自の機能を有する。第１に、ＮＰは、そのピコプロセッサ（または組込み制御点プロセッサ）の１つを使用して、データ・フローのリアルタイム分析を提供する能力を有する。第２に、ＮＰは、サーバへ／からのインバウンドおよびアウトバウンドの両方のトラフィック・フローを見る。
【００１８】
ＮＰの基本機能は、サーバへのデータ・パケットのフローを監視し、そのプログラム可能フィルタの組をフローに課すことである。ＮＰは、この機能を提供している時に、特定のサーバ（またはポート）へのデータ・パケットのフローの速度を監視することができる。本発明によって、このフローを監視する能力に、パケット毎秒の時間に対する第１次導関数を判定することによって、その組込みプロセッサの１つを使用してフロー速度を分析するという特性が追加される。ＮＰは、通常の状態からのかなりの変化（トラフィック速度の変化の速度のかなりの増加など）を見たならば、パケットの追加のフィルタリング（破棄または再ルーティング）を課し、その結果、サーバが過負荷にならないようにすることができる。これは、サービス妨害攻撃に対する望ましい応答である。ＮＰは、通常の状態へのかなりの変化（トラフィック速度の変化の速度のかなりの減少など）を見た時に、サーバへのデータ・フローの元の状態に戻ることができる。
【００１９】
この技法に対する追加の洗練は、サーバからのアウトバウンド・ストリームを見るＮＰの能力を使用して達成することができる。この場合に、発明的ＮＰは、その第１次導関数分析を介して、サーバからアウトバウンドへのフローの変化の速度がかなりの減少を示すと判定する時に、サーバからのフローが正常に戻るまで、サーバへのインバウンドのフローに追加のフィルタリング（破棄または再ルーティング）を課すことができる。
【００２０】
図１を参照すると、完全を期して、本発明によって企図されるコンピュータ・システム１００には、中央処理装置（ＣＰＵ）１１０、メイン・メモリ１２０、大容量記憶装置インターフェース１４０、ネットワーク・インターフェース１５０が含まれ、これらのすべてがシステム・バス１６０によって接続される。このシステムにすべてのタイプのコンピュータ・システムすなわち、パーソナル・コンピュータ、ミッドレンジ・コンピュータ、メインフレームなどが含まれることを、当業者は諒解するであろう。本明細書に記載の発明の範囲内で、このコンピュータ・システム１００に対する多数の追加、修正、および削除を行えることに留意されたい。この例（図示せず）が、コンピュータ・モニタ、入力キーボード、キャッシュ・メモリ、およびプリンタなどの周辺装置である。本発明は、ウェブ・サーバとして動作することができるが、ウェブ・サーバは、一般に、パーソナル・コンピュータまたはミッドレンジ・コンピュータを用いて実施される。
【００２１】
ＣＰＵ１１０は、１つまたは複数のマイクロプロセッサおよび／または集積回路から構成することができる。ＣＰＵ１１０によって、メイン・メモリ１２０に保管されたプログラム命令が実行される。メイン・メモリ１２０には、コンピュータがアクセスできるプログラムおよびデータが保管される。コンピュータ・システム１００が始動する時に、ＣＰＵ１１０によって、当初はオペレーティング・システム１３４のプログラム命令が実行される。オペレーティング・システム１３４は、コンピュータ・システム１００のリソースを管理する、洗練されたプログラムである。このリソースの一部が、ＣＰＵ１１０、メイン・メモリ１２０、大容量記憶装置インターフェース１４０、ネットワーク・インターフェース１５０、およびシステム・バス１６０である。
【００２２】
メイン・メモリ１２０には、ウェブ・サーバ・アプリケーション１２２、トランザクション・プロセッサ１２４、１つまたは複数のマクロ・ファイル１２６、構成ファイル１２８、１つまたは複数の言語プロセッサ１３０、オペレーティング・システム１３４、１つまたは複数のアプリケーション・プログラム１３６、およびプログラム・データ１３８が含まれる。アプリケーション・プログラム１３６は、オペレーティング・システム１３４の制御の下でＣＰＵ１１０によって実行される。アプリケーション・プログラム１３６は、入力としてプログラム・データ１３８を用いて動作することができる。アプリケーション・プログラム１３６は、メイン・メモリ内でプログラム・データ１３８として結果を出力することもできる。コンピュータ・システム１００が、ウェブ・サーバとして動作する時に、ＣＰＵ１１０によって、とりわけ、ウェブ・サーバ・アプリケーション１２２が実行される。トランザクション・プロセッサ１２４は、１つまたは複数のマクロ・ファイル１２６に保管されたＨＴＭＬページを処理するプログラムである。トランザクション・プロセッサ１２４は、初期化される時に、構成ファイル１２８を読み取って、異なるタイプの照会を異なる言語プロセッサ１３０に相関させる。ページ内で動的データの照会が見つかる時に、トランザクション・プロセッサ１２４によって、その照会を処理するためにどの言語プロセッサ１３０を呼び出さなければならないかが、構成データ（構成ファイルから読み取られる）から決定される。適当な言語プロセッサ１３０によって、メモリまたはデータベースなどのデータ・ソースに照会して、動的データが検索される。言語プロセッサ１３０は、この動的データをトランザクション・プロセッサ１２４に渡し、トランザクション・プロセッサ１２４は、選択されたページのＨＴＭＬデータにこの動的データを挿入する。
【００２３】
大容量記憶装置インターフェース１４０によって、コンピュータ・システム１００が、磁気ディスク（ハード・ディスク、ディスケット）および光ディスク（ＣＤ−ＲＯＭ）などの補助記憶装置からデータを検索でき、保管できるようになる。これらの大容量記憶装置は、一般に、直接アクセス記憶装置（ＤＡＳＤ）と称し、情報の永久的なストアとして働く。ＤＡＳＤの適切なタイプの１つが、フロッピ・ディスケット１８６との間でデータを読み書きするフロッピ・ディスク・ドライブ１８０である。ＤＡＳＤからの情報は、多数の形になる可能性がある。一般的な形が、アプリケーション・プログラムおよびプログラム・データである。大容量記憶装置インターフェース１４０を介して検索されたデータは、しばしば、メイン・メモリ１２０に置かれ、このメイン・メモリ１２０から、ＣＰＵ１１０によってそのデータを処理することができる。
【００２４】
メイン・メモリ１２０およびＤＡＳＤ装置１８０は、通常は、別々の記憶装置であるが、コンピュータ・システム１００では、周知の仮想アドレッシング機構が使用され、これによって、コンピュータ・システム１００のプログラムが、複数のより小さいストレージ・エンティティ（たとえばメイン・メモリ１２０およびＤＡＳＤ装置１８０）にアクセスするのではなく、より大きい単一のストレージ・エンティティへのアクセスだけを有するかのように振る舞うことができる。したがって、ある要素が、メイン・メモリ１２０に常駐するように示されているが、これらが、必ずしも同時に完全にメイン・メモリ１２０に含まれる必要がないことを、当業者は認識するであろう。用語「メモリ」が、本明細書で、コンピュータ・システム１００の仮想メモリ全体を全般的に指のに使用されることに留意されたい。
【００２５】
ネットワーク・インターフェース１５０によって、コンピュータ・システム１００が、そのコンピュータ・システムに接続できるすべてのネットワークとの間でデータを送信でき、受信できるようになる。このネットワークは、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、またはより具体的にインターネット１７０とすることができる。インターネットに接続する適切な方法には、既知のアナログ技法および／またはディジタル技法ならびに将来に開発されるネットワーキング機構が含まれる。多数の異なるネットワーク・プロトコルを使用して、ネットワークを実施することができる。これらのプロトコルは、コンピュータがネットワークを介して通信できるようにする特殊化されたコンピュータ・プログラムである。インターネットを介する通信に使用されるＴＣＰ／ＩＰ（伝送制御プロトコル／インターネット・プロトコル）が、適切なネットワーク・プロトコルの例である。
【００２６】
システム・バス１６０によって、コンピュータ・システム１００のさまざまな構成要素の間でデータを転送できるようになる。コンピュータ・システム１００に、単一のメインＣＰＵおよび単一のシステム・バスだけが含まれるものとして図示されているが、本発明を、複数のＣＰＵおよび／または複数のバスを有するコンピュータ・システムを使用して実践できることを、当業者は諒解するであろう。
【００２７】
この点で、本発明を、完全に機能するコンピュータ・システムに関して説明した（下でもそうする）が、本発明の構成要素を、さまざまな形のプログラム製品として配布することができることと、本発明が、配布の実際の実行に使用される信号担持媒体の特定のタイプに無関係に同等に適用されることとを当業者が諒解するであろうことに留意することが重要である。信号担持媒体の例には、フロッピ・ディスク（たとえば図１の１８６）およびＣＤ  ＲＯＭ（図示せず）などの記録可能型媒体と、ディジタル通信リンクおよびアナログ通信リンクなどの伝送型媒体が含まれる。
【００２８】
本発明では、コンピュータ・システム１００が、ウェブ・サーバとして動作することができる。それを行うために、ウェブ・サーバ・アプリケーション１２２が、ＣＰＵ１１０によって実行される。オペレーティング・システム１３４がマルチタスキング・オペレーティング・システムであると仮定すると、もう１つのアプリケーション・プログラム１３６を、コンピュータ・システム１００で同時に実行することができる。ウェブ・サーバは、一般に、インターネット１７０に接続される。前に述べたように、インターネットは、全世界にまたがり、数百万台のコンピュータによって共用される、周知のコンピュータ・ネットワークである。インターネット上に、多数のウェブ・サーバがある。インターネットにリンクされた各コンピュータは、ネットワークを介して他のコンピュータと通信できるようにするために、それ自体の一意のアドレスを有する。多数の異なるタイプのデータを、インターネットを介して送ることができる。その例が、電子メール、プログラム・データ、ディジタル化された音声データ、コンピュータ・グラフィックス、およびウェブ・ページである。
【００２９】
図２を参照すると、複数のコンピュータ・システム１００Ａ、１００Ｂ、１００Ｃ、および１００Ｄが、ネットワーク・プロセッサ１０を介して一緒に結合されて、サーバ・ファームを形成する。ネットワーク・プロセッサ１０は、図３および４により完全に図示され、説明され、そこに示された構造およびその例示的動作の説明を下に続ける。ファームに一緒に結合されたコンピュータ・システムに、異なる機能を割り当てることができる。たとえば、あるコンピュータ・システムを、関連するＤＡＳＤに保管されたデータのデータ・マイニングに関するバッチ処理要求をサービスするように指定することができる。同一のファームの別のコンピュータ・システムを、メール・サーバとして指定することができる。もう１つのコンピュータ・システムを、関連するＤＡＳＤに保管されたデータに関するリアル・タイム要求を処理するように指定することができる。もう１つのコンピュータ・システムを、アプリケーション・サーバとして指定し、ネットワーク・アプリケーション・プログラム上で他のシステムから使用可能にすることができ、このネットワーク・アプリケーション・プログラムを、クライアント・システムでの一時的なまたはその場限りの使用のために転送することができる。代替案では、システムが、並列ウェブ・ページ・ホスト・サーバとして働くことができ、各システムを、サービスに関する着信要求に基づいて動的に選択することができる。サーバ・ファーム・システムの構成および使用をよく知っている人は、代替機能（本明細書で短く示した）のすべての範囲を理解でき、本発明の柔軟性が認識されるようになる際にさらなる代替物を開発することができる。さらに、そのような人は、図２に示された複数ではなく単一のサーバ・コンピュータ・システムを使用できることを認識するであろう。その場合に、「サーバ・ファーム」は、単一のメンバを有する。
【００３０】
関連するネットワークから図２のサーバに移動するデータ・ビット・ストリームは、ネットワーク・プロセッサ１０に渡される。ネットワーク・プロセッサ１０は、本発明を区別する重要な特徴に従って、着信ビット・ストリーム内で識別されるネットワーク通信プロトコル・ビットを処理し、提供される指定されたサービスに基づいて、ファーム・システム機能１００Ａ、１００Ｂ、１００Ｃ、および１００Ｄの１つに割当可能なパケットまたはフレームあるいは類似物を認識する。適当なファーム・システムへの割当およびそこでの処理の後に、パケット、フレーム、または類似物は、ネットワーク・プロセッサに返されて、ネットワーク・プロセッサが適当なネットワーク通信プロトコル・ビットを供給した後に、関連するネットワークに転送される。
【００３１】
米国特許出願第０９／５５１７０７号に開示された関連特許によれば、ファーム・システムの適当な１つへのデータ・ビット・ストリームの移動は、媒体速度と称するもので達成される。すなわち、サーバ・システムへ移動するデータのフロー速度は、ネットワーク・プロセッサによってサーバが接続されるネットワークのフロー速度と同一または実質的に同一である。
【００３２】
下で開示する装置について使用されるアーキテクチャは、インターフェース装置またはネットワーク・プロセッサ・ハードウェア・システムおよび制御点プロセッサで動作するソフトウェア・ライブラリに基づく。インターフェース装置またはネットワーク・プロセッサ・サブシステムは、Ｌ２、Ｌ３、およびＬ４のデータ・ストリングを解析し、変換するように設計された高性能フレーム転送エンジンである。インターフェース装置またはネットワーク・プロセッサ・サブシステムは、装置を介する高速パスを提供することができ、ソフトウェア・ライブラリおよび制御点プロセッサは、高速パスの維持に必要な管理機能およびルート・ディスカバリ機能を提供する。制御点プロセッサおよびそこで動作するソフトウェア・ライブラリが一緒になって、システムの制御点（ＣＰ）が定義される。制御点プロセッサは、ネットワーク・プロセッサ内に組み込むか、それから物理的に分離することができる。
【００３３】
産業コンサルタントは、下記の機能の１つまたは複数を実行することができるプログラム可能通信集積回路としてネットワーク・プロセッサを定義した。
パケット分類−アドレスまたはプロトコルなどの既知の特性に基づいてパケットを識別する
パケット修正−ＩＰ、ＡＴＭ、または他のプロトコルに準拠するようにパケットを修正する（たとえば、ＩＰのヘッダ内のｔｉｍｅ−ｔｏ−ｌｉｖｅフィールドの更新）
キュー／ポリシ管理−特定のアプリケーションに関するパケットのパケット・キューイング、デキューイング、およびスケジューリング
パケット転送−スイッチ・ファブリックを介するデータの送信および受信と、適当なアドレスへのパケットの転送またはルーティング。
【００３４】
この定義は、早期のＮＰの基本的な特徴の正確な記述であるが、ＮＰのすべての潜在的な能力および利益は、まだ十分に理解されていない。ネットワーク・プロセッサによって、前にソフトウェアで処理されたネットワーキング・タスクをハードウェアで実行できるようにすることによって、有効システム帯域幅を増やし、広範囲のアプリケーションで待ち時間の問題を解決することができる。さらに、ＮＰによって、並列分散処理設計およびパイプライン処理設計などのアーキテクチャを介して速度向上をもたらすことができる。これらの機能によって、効率的な検索エンジンを可能にし、スループットを増やし、複雑なタスクのすばやい実行をもたらすことができる。この定義では、単語「パケット」が使用され、このパケットは、広域ネットワーク（ＷＡＮ）を参照する時の一般的な使用法と一致する。本明細書に記載の発明は、「フレーム」すなわち、ローカル・エリア・ネットワーク（ＬＡＮ）を参照する時に一般的に使用される使用法との一貫性を有する用語と共に同様に機能する。
【００３５】
ネットワーク・プロセッサは、ＣＰＵがＰＣに対するのと同一の形で、ネットワークに対して基本的なネットワーク構成要素になることが期待される。ＮＰによって提供される通常の機能は、リアルタイム処理、セキュリティ、蓄積交換、スイッチ・ファブリック、ならびにＩＰパケット処理および学習機能である。
【００３６】
プロセッサ−モデルＮＰには、複数の汎用プロセッサおよび特殊化された論理が組み込まれる。インテグレータは、この設計を採用して、タイムリーでコスト効率的な形で変化に対処できるスケーラブルで柔軟な解決策を提供しようとしている。プロセッサ−モデルＮＰを用いると、より低い統合レベルでの分散処理が可能になり、より高いスループット、柔軟性、および制御がもたらされる。プログラム可能性によって、新しい特定用途向け集積回路（ＡＳＩＣ）設計を必要としない、新しいプロトコルおよび技術への簡単な移植が可能になる。
【００３７】
そのようなネットワーク・プロセッサは、ハードウェアでの複数層転送をサポートするが、Ｌ２専用スイッチとして動作することもでき、これが、関連出願で開示されたものからの最も単純な形の動作のデフォルト・モードである。各ポートが、単一のドメインに置かれ、ドメイン内のすべての装置が、そのドメイン内のすべての他の装置と通信できるようになる。この装置は、Ｌ２で構成可能であり、システム管理者が、別々のドメインまたは幹線へのポートのグループ化、仮想ＬＡＮ（ＶＬＡＮ）セグメントの構成、またはフィルタの適用などの特徴を構成できるようになる。
【００３８】
下で説明する装置のある部分は、インターフェース装置またはネットワーク・プロセッサ（ＮＰ）および制御点（ＣＰ）をその基本構成要素として使用するモジュラ・ユニットとして設計される。３つ以上のインターフェース装置サブシステムが一緒に結び付けられる時に、任意選択のスイッチング・ファブリック装置を使用することができる。任意選択のスイッチング・ファブリック装置は、本発明の理解に必要な範囲まで参照によって本明細書に組み込まれる米国特許第５００８８７８号、１９９１年４月１６日発行、「High Speed Modular Switching Apparatus for Circuit and PacketSwitched Traffic」に開示されたものとすることができる。任意選択のスイッチング・ファブリック装置を使用する目的は、ファーム内でサポートされるサーバ・システムの数を増やし、かつ／またはサポートされるサーバとの間のデータ・フローの速度を高めることである。単一のネットワーク・プロセッサ装置が、基本的なスイッチとして機能できることが既知であり、下の開示のある部分で、用語「スイッチ」が、ＮＰを指す場合に使用される。
【００３９】
この装置は、ＮＰ、ＣＰ、および媒体相互接続機構の単一のアセンブリからなるものとすることができる。しかし、本明細書で「オプション・カード」または「ブレード」とも称するプリント回路基板要素を使用して組み立てられる、より複雑な装置が予想される。プリント回路基板要素は、その上に回路要素を取り付けられ、サーバ・コンピュータ・システム筐体などの装置筐体内に設けられるコネクタで受けられる。適当なコネクタおよびバックプレーン電子接続がそれぞれに設けられる場合に、さまざまシャシーおよび筐体の間でカードを交換できる装置が企図されている。すべてではないとしても多数のオプション・カードで見られる基本構成要素が、キャリア・サブシステムである。
【００４０】
最も単純な形で、本発明によって企図されるインターフェース装置は、制御点プロセッサおよび制御点プロセッサに機能的に接続されたインターフェース装置を有する。好ましくは、本明細書で開示されるように、インターフェース装置（本明細書ではネットワーク・プロセッサまたはＮＰとしても識別される）は、半導体基板を有する単一の超大規模集積（ＶＬＳＩ）回路デバイスまたはチップと；基板上に形成される複数のインターフェース・プロセッサと；前記基板上に形成され、インターフェース・プロセッサからアクセス可能な命令を保管する内部命令メモリと；基板上に形成され、デバイスを通過するデータを、インターフェース・プロセッサからアクセス可能に保管する内部データ・メモリと；複数の入出力ポートとである。インターフェース・プロセッサを、本明細書で時々、ピコプロセッサまたは処理ユニットとも称する。設けられるポートには、内部データ・メモリを外部データ・メモリに接続する少なくとも１つのポートと、インターフェース装置を介して渡されるデータを、インターフェース・プロセッサの指示の下の外部装置またはネットワークと交換する少なくとも２つの他のポートが含まれる。制御点は、データ交換入出力ポートの間のデータの交換およびデータ・メモリを介するデータの流れを指示する際にインターフェース・プロセッサによって実行される命令を命令メモリにロードすることによって、インターフェース装置と協力する。単一のチップではなくチップ・セットが使用される場合があるので、本明細書で単一の基板上に形成される要素によって実行されるものとして記載の機能を、複数の基板にまたがって分散できることも企図されている。
【００４１】
本明細書で開示されるネットワーク・プロセッサは、本明細書に記載のサーバ・ファームなど、組み込まれる先のアセンブリおよび組合せとは別に発明的と思われる。さらに、ネットワーク・プロセッサは、本明細書に記載のその要素内に、本明細書で完全には説明されない他のおよびさらなる発明を有すると思われる。
【００４２】
より完全な理解のために、図３に、基板および基板上に集積された複数のサブアセンブリを含むインターフェース装置チップ１０のブロック図を示す。サブアセンブリは、アップサイド（Upside）構成およびダウンサイド（Downside）構成に配置される。本明細書で使用される「アップサイド」は、本明細書で開示される装置へのインバウンドのデータ・フローを指し、「ダウンサイド」は、装置からその装置によってサービスされる装置またはネットワークへのアウトバウンドのデータを指す。データ・フローは、めいめいの構成に従う。その結果、アップサイド・データ・ブローとダウンサイド・データ・フローがある。アップサイドのサブアセンブリには、エンキュー−デキュー−スケジューリング・アップ（ＥＤＳ−ＵＰ）論理１６、多重化ＭＡＣ−アップ（ＰＭＭ−ＵＰ）１４、スイッチ・データ・ムーバ−アップ（ＳＤＭ−ＵＰ）１８、システム・インターフェース（ＳＩＦ）２０、データ・アライン・シリアル・リンクＡ（ＤＡＳＬＡ）２２、およびデータ・アライン・シリアル・リンクＢ（ＤＡＳＬＢ）２４が含まれる。データ・アライン・シリアル・リンクは、本明細書で開示される発明の完全な理解に必要な範囲まで参照によって本明細書に組み込まれる同時係属の米国特許出願第０９／３３０９６８号、１９９９年６月１１日出願、「HighSpeed Parallel/Serial Link for Data Communication」に記載されている。本明細書で開示される発明の装置の好ましい形態では、ＤＡＳＬリンクが使用されるが、本発明では、特にデータ・フローがＶＬＳＩ構造内に制限される場合に、比較的高いデータ・フロー速度を達成するために他の形のリンクを使用できることが企図されている。
【００４３】
ダウンサイドのサブアセンブリには、ＤＡＳＬ−Ａ２６、ＤＡＳＬ−Ｂ２８、ＳＩＦ３０、ＳＤＭ−ＤＮ３２、ＥＤＳ−ＤＮ３４、およびＰＭＭ−ＤＮ３６が含まれる。このチップには、複数の内部Ｓ−ＲＡＭ１５および１７、トラフィック管理スケジューラ４０、ならびに組込みプロセッサ・コンプレックス（ＥＰＣ）１２も含まれる。インターフェース装置３８が、めいめいのＤＭＵバス３５および３７によってＰＭＭ１４および３６に結合される。インターフェース３８は、イーサネット（Ｒ）物理（ＥＮＥＴ  ＰＨＹ）、ＡＴＭフレーマ、ＩＰ  ｏｖｅｒ  ＳＯＮＥＴなどの任意の適切なＬ１回路とすることができる。インターフェースのタイプは、チップが接続されるネットワーク媒体または他の装置によって部分的に指定される。複数の外部Ｄ−ＲＡＭおよびＳ−ＲＡＭが、チップによる使用のために使用可能である。
【００４４】
矢印は、インターフェース装置内のデータの全般的な流れを示す。たとえば、ＭＡＣから受け取られたフレームは、ＥＤＳ−ＵＰによって内部データ・ストア・バッファに置かれる。これらのフレームは、通常のデータ・フレームまたはシステム制御ガイデッド・フレーム（Guided Frame）のいずれかとして識別され、ＥＰＣにエンキューされる。ＥＰＣは、Ｎ個のプロトコル・プロセッサを含み、Ｎ個のフレームを並列に操作することができる（Ｎ＞１）。図４に示された、複数のプロトコル・プロセッサ（Ｐ１からＰｎ）を有する代表的な実施形態では、プロトコル・プロセッサのうちの２つが、特殊化され、その一方は、ガイデッド・フレームの処理用（汎用中央ハンドラまたはＧＣＨ）１０２であり、もう一方は、制御メモリ内でのルックアップ・データ作成用（汎用ツリー・ハンドラまたはＧＴＨ）１０４である。ＥＰＣには、新しいフレームをアイドル・プロセッサにマッチさせるディスパッチャ１０８、フレーム・シーケンスを維持する完了ユニット１１０、１０個のプロセッサのすべてによって共用される共通命令メモリ（ＣＩＭ）１１２、フレーム分類および、フレームの開始命令アドレスを判定するのを助けるそのコプロセッサ（図示せず）を判定するクラシファイヤ・ハードウェア・アシスト（ＣＨＡ）１１４、フレーム・バッファの読取動作および書込動作を制御するイングレス（ingress）およびイグレス（egress）データ・ストア（ＩＥＤＳ）インターフェース１１６、１０個のプロセッサが制御メモリ１２０を共用できるようにする制御メモリ・アービタ（ＣＭＡ）１１８、内部インターフェース装置データ構造へのアクセスをデバッグできるようにするウェブ制御、アービタ、およびインターフェース（ＷＣＡＩ）１２２、ならびに他のハードウェア構造も含まれる。
【００４５】
ガイデッド・フレームは、使用可能になった時に、ディスパッチャによってＧＣＨプロセッサ１０２に送られる。レジスタ書込、カウンタ読取、ＭＡＣ構成変更などの、ガイデッド・フレームにエンコードされた動作が実行される。ＭＡＣ項目またはＩＰ項目の追加などのルックアップ・テーブル変更は、メモリの読取および書込などの制御メモリ動作に関するルックアップ・データ・プロセッサ１０４に渡される。ＭＩＢカウンタ読取などの一部のコマンドは、応答フレームが作成され、適当なインターフェース装置１１６の適当なポートに転送されることを必要とする。いくつかの場合に、ガイデッド・フレームが、インターフェース装置のイグレス側についてエンコードされる。これらのフレームは、照会されるインターフェース装置のイグレス側に転送され、これによって、エンコードされた動作が実行され、適当な応答フレームが作成される。
【００４６】
データ・フレームは、フレーム・ルックアップを実行するために次に使用可能なプロトコル・プロセッサにディスパッチされる。フレーム・データが、クラシファイヤ・ハードウェア・アシスト（ＣＨＡ）エンジン１１４からの結果と共にプロトコル・プロセッサに渡される。ＣＨＡは、ＩＰまたはＩＰＸを解析する。その結果によって、木検索アルゴリズムおよび開始共通命令アドレス（ＣＩＡ）が決定される。サポートされる木検索アルゴリズムには、固定一致木（レイヤ２ＭＡＣテーブルなどの正確な一致を必要とする固定サイズ・パターン）、最長プレフィックス一致木（サブネットＩＰ転送などの可変長一致を必要とする可変長パターン）、およびソフトウェア管理される木（フィルタ規則に使用されるものなど、範囲またはビット・マスク・セットのいずれかを定義する２つのパターン）が含まれる。
【００４７】
ルックアップは、木検索エンジン（ＴＳＥ）コプロセッサの助けを得て実行され、ＴＳＥコプロセッサは、各プロトコル・プロセッサ（Ｐ１からＰｎ）の一部である。ＴＳＥコプロセッサは、制御メモリ・アクセスを実行し、プロトコル・プロセッサを解放して動作を継続する。制御メモリには、ピココードが必要とするすべてのテーブル、カウンタ、および他のデータが保管される。制御メモリ動作は、制御メモリ・アービタ１１８によって管理され、制御メモリ・アービタ１１８は、１０個のプロセッサ・コンプレックスの間でメモリ・アクセスを調停する。
【００４８】
フレーム・データは、データ・ストア・コプロセッサ（図示せず）を介してアクセスされる。データ・ストア・コプロセッサには、主データ・バッファ（フレーム・データの１６バイト・セグメントを８つまで保持する）、スクラッチ・パッド・データ・バッファ（やはりフレーム・データの１６バイト・セグメントを８つまで保持する）、およびデータ・ストア動作に関するいくつかの制御レジスタが含まれる。一致が見つかったならば、イングレス・フレーム変更に、ＶＬＡＮヘッダ挿入またはオーバーレイを含めることができる。この変更は、インターフェース装置プロセッサ・コンプレックスによって実行されないが、ハードウェア・フラグが導出され、他のイングレス・スイッチ・インターフェース・ハードウェアが、この変更を実行する。他のフレーム変更は、イングレス・データ・ストアに保持されたフレーム内容を修正することによって、ピココードおよびデータ・ストア・コプロセッサによって達成することができる。
【００４９】
イグレス木検索によって、イングレス検索についてサポートされるものと同一のアルゴリズムがサポートされる。ルックアップは、ＴＳＥコプロセッサを用いて実行され、プロトコル・プロセッサが解放されて、実行を継続する。すべての制御メモリ動作が、制御メモリ・アービタ１１８によって管理され、制御メモリ・アービタ１１８は、１０個のプロセッサ・コンプレックスの間でメモリ・アクセスを割り振る。イグレス・フレーム・データは、データ・ストア・コプロセッサを介してアクセスされる。上で述べたように、データ・ストア・コプロセッサには、主データ・バッファ（フレーム・データの１６バイト・セグメントを８つまで保持する）、スクラッチ・パッド・データ・バッファ（やはりフレーム・データの１６バイト・セグメントを８つまで保持する）、およびデータ・ストア動作に関するいくつかの制御レジスタが含まれる。成功裡のルックアップの結果に、転送情報が含まれ、いくつかの場合に、フレーム変更情報が含まれる。フレーム変更に、ＶＬＡＮヘッダ検出、Time to Live増分または減分、ＩＰヘッダ・チェックサム再計算、イーサネット（Ｒ）・フレームＣＲＣオーバーレイまたは挿入、あるいはＭＡＣ  ＤＡ／ＳＡオーバーレイまたは挿入を含めることができる。ＩＰヘッダ・チェックサムは、チェックサム・コプロセッサによって準備される。変更は、インターフェース装置プロセッサ・コンプレックスによって実行されないが、ハードウェア・フラグが作成され、ＰＭＭイグレス・ハードウェアが変更を実行する。完了時に、エンキュー・コプロセッサが使用されて、ＥＤＳイグレス・キューにフレームをエンキューし、これらを完了ユニット１１０に送るのに必要なフォーマットを作成するのを助ける。完了ユニット１１０によって、１０個のプロトコル・プロセッサから、図３に示されたイグレスＭＡＣに供給するＥＤＳイグレス・キューへのフレーム順序が保証される。完成したフレームは、最終的に、ＰＭＭイグレス・ハードウェアによってＭＡＣに送られ、ポートから出力される。
【００５０】
木検索エンジン・コプロセッサは、プロトコル・プロセッサ動作と並列に、メモリ範囲検査を提供し、不正メモリ・アクセス通知を提供し、木検索命令（メモリ読取、書込、リード−アッド−ライトなど）を実行する。ディスパッチャ１０８は、１０個のプロトコル・プロセッサにフレームを渡すのを制御し、割り込みおよびタイマを管理する。完了ユニット１１０は、プロセッサ・コンプレックスからターゲット・ポート・キューへのフレーム順序を保証する。豊富な命令セットに、条件実行、パッキング（入力ハッシュ・キーに関する）、条件分岐、符号付きおよび符号なしの演算、先行ゼロのカウントなどが含まれる。
【００５１】
クラシファイヤ・ハードウェア・アシスト・エンジン１１４は、各フレームのレイヤ２プロトコル・ヘッダおよびレイヤ３プロトコル・ヘッダを処理し、フレームがプロトコル・プロセッサにディスパッチされる時に、この情報をフレームと共に供給する。制御メモリ・アービタ１１８は、内部メモリおよび外部メモリの両方へのプロセッサ・アクセスを制御する。イグレス・フレームは、１つの外部データ・バッファ（たとえばＤＳ０）または２つの外部データ・バッファすなわち図３の４４のいずれかに保管することができる。各バッファは、２Ｍ×１６ビット×４バンクＤＤＲ  ＤＲＡＭの対（６４バイト・フレームを２５６Ｋ個まで保管する）または４Ｍ×１６ビット×４バンクＤＤＲ  ＤＲＡＭの対（６４バイト・フレームを５１２Ｋ個まで保管する）からなるものとすることができる。２．２８Ｍｂｐｓでは単一の外部データ・バッファ（たとえばＤＳ０）を選択し、４．５７Ｍｂｐｓのレイヤ２およびレイヤ３のスイッチングをサポートするためには第２のバッファ（たとえばＤＳ１）を追加する。第２のバッファを追加することによって、性能が高まるが、フレーム容量は増えない。外部データ・バッファ・インターフェースは、１３３ＭＨｚクロック・レートで動作し、２６６ＭＨｚデータ・ストローブを有し、構成可能なＣＡＳ待ち時間およびドライブ強度をサポートする。
【００５２】
固定フレーム変更に、イングレス方向でのＶＬＡＮタグ挿入と、イグレス方向でのＶＬＡＮタグ削除、Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ増分／減分、イーサネット（Ｒ）ＣＲＣオーバーレイ／挿入、およびＭＡＣ  ＤＡ／ＳＡオーバーレイ／挿入が含まれる。
【００５３】
ポート・ミラーリングによって、プロトコル・プロセッサ・リソースを使用せずに、１つの受信ポートおよび１つの送信ポートをシステム指定の観察ポートにコピーできるようになる。ミラーリングされたインターフェース装置ポートは、フレーム・データおよびスイッチ制御データを追加するように構成される。別々のデータ・パスによって、イングレス・スイッチ・インターフェースへの直接フレーム・キューイングが可能になる。
【００５４】
ネットワーク・プロセッサは、制御点プロセッサからピコプロセッサに動的にロードされる規則の下で動作する。この規則を、「オンザフライ」で変更して、変化する状態に対処することができる。本発明で有利に使用されるのが、ネットワーク・プロセッサのこの機能である。
【００５５】
この次に続くものは、実施されたキュー管理戦略の多少詳細な説明である。この説明は、ＤＯＳ攻撃に対する保護で有用になる可能性があるフィルタ規則セットのタイプの機能を表すことが意図され、既知および一般に使用されるものとプロプラエタリの両方の技術の説明が含まれる。
【００５６】
上で短く述べたように、ＮＰなどのデータ・パス・スイッチを通って流れるトラフィックを制御して、スイッチが使用されるネットワークの性能を高めるために、複数の方法が開発された。具体的に言うと、ＲＥＤ（Random Early DiscardまたはDetection）と称する普通の方法が使用される。この普通の方法は、通常は、対応するキューを通るトラフィックを制御するために、エンキューイング機構によって使用される。
【００５７】
エポックと称する短い時間期間の終りに、そのエポックのキューのキュー・レベルが、エンキューイング機構によって判定される。判定されるキュー・レベルを、そのエポックの平均キュー・レベルにすることができることに留意されたい。さらに、判定されるキュー・レベルを、キューがその一部であるメモリ・リソースに関する総合レベルとすることができる。その後、キュー・レベルが最小閾値を超えるかどうかを判定する。キュー・レベルが、最小閾値を超えない場合には、普通の伝送分数（transmission fraction）がセットされる。伝送分数によって、パケットのうちで次のエポックに送信される分数が決定される。普通の破棄分数によって、パケットのうちでドロップされる分数が決定される。普通の破棄分数は、１から普通の伝送分数を引いたものと等しい。したがって、１の伝送分数は、すべてのパケットが送られなければならず、パケットがドロップされてはならないことを示す。
【００５８】
キュー・レベルが最小閾値を超えると判定された場合には、次に、エポックのキュー・レベルが最大閾値を超えるかどうかを判定する。キュー・レベルが、最大閾値を超える場合には、普通の伝送分数に０をセットし、普通の破棄分数に１をセットする。キュー・レベルが最大閾値を超えない場合には、普通の破棄分数に、前のエポックのキュー・レベルを最大の可能なキュー・レベルで割った値に比例する値またはその代わりにキュー・レベルのある他の線形関数に比例する値をセットする。したがって、普通の破棄分数は、キューのうちの占められた部分の分数またはキュー・レベルの他の線形関数に比例する。普通の伝送分数にも、１から普通の破棄分数を引いたものに比例する値がセットされる。普通の伝送分数および普通の破棄分数が、その後、次のエポックに関してランダムにパケットを破棄するのに使用される。したがって、キュー・レベルが最小閾値未満の時に、すべてのパケットが、次のエポック中に、エンキューイング機構によってキューに送られる。キュー・レベルが、最大閾値を超える時には、すべてのパケットが、次のエポック中にエンキューイング機構によって破棄されるか、破棄キューにエンキューされる。キュー・レベルが、最小閾値と最大閾値の間である時には、エンキューイング機構によって破棄されるパケットの分数が、キューのうちの占められている部分の分数またはキュー・レベルのなんらかの他の線形関数に比例する。したがって、キュー・レベルが高いほど、パケットのより高い分数が破棄される。さらに、破棄されるパケットの送信側に通知を提供することができ、これによって、送信側が、ある期間の間追加パケットの送信を延期するようになる。破棄について選択される個々のパケットも、ランダムに選択することができる。たとえば、パケットごとに、エンキューイング機構が、０と１の間の乱数を生成することができる。この乱数を、普通の破棄分数と比較する。乱数が、普通の破棄分数以下である場合に、そのパケットがドロップされる。そうでない場合に、パケットがキューに送られる。この伝送分数に基づいてパケットを破棄する処理は、エポックが終了したと判定されるまで継続される。エポックが終わった時に、この方法をもう一度開始して、次のエポックの普通の伝送分数を判定し、次のエポック中に普通の伝送分数に従ってパケットをドロップする。
【００５９】
パケットをキュー・レベルに基づいて破棄することができるので、ＲＥＤ方法によって、スイッチを介するトラフィックに対するある制御が可能になる。その結果、キューが満杯になる前にパケットを破棄する機構を有しないスイッチよりも、ドロップテール（droptail）に起因してドロップされるパケットの数を減らすことができる。ドロップテールは、キューが満杯なのでパケットをドロップしなければならない時に発生する。その結果、パケットをドロップするかどうかを判定する際に、パケットの優先順位を考慮に入れる機会がない。さらに、いくつかの情況で、この方法によって、スイッチにパケットを送るホストの同期化を減らすことができる。これが発生するのは、キュー・レベルが最大キュー・レベルまたはその付近である時にすべてのパケットをドロップするのではなく、普通の伝送分数に基づいてパケットをランダムにドロップできるからである。したがって、スイッチの性能は、方法ＲＥＤを使用しないスイッチすなわち、バッファ・リソースが枯渇した時に次に到着するパケットを単純に捨てるスイッチよりも改善される。
【００６０】
ＲＥＤ方法によって、スイッチの動作が改善されるが、多くの情況でＲＥＤ方法がトラフィックを適当に制御できないことを、当業者はすぐに理解するであろう。キューが満杯になる前にパケットまたはセルをドロップすることができるという事実にもかかわらず、ホストが、いくつかの情況で同期化される傾向がある。これは、トラフィックの中位のまたはより高い輻輳レベルで特にそうである。普通の伝送分数は、キュー・レベルに基づく。しかし、キュー・レベルは、スイッチの状態を示さない場合がある。たとえば、最小閾値未満のキュー・レベルが、低いレベルのトラフィック（装置を通過するパケットの数が少ない）に起因する可能性がある。しかし、低いキュー・レベルが、高いトラフィックに起因する前のエポックでの大量の破棄に起因する可能性もある。低いキュー・レベルが、低いトラフィック・レベルに起因する場合には、普通の伝送分数を増やすことが適当である。低いキュー・レベルが、高い破棄分数に起因する場合には、普通の伝送分数を増やすことが望ましくない可能性がある。普通のＲＥＤ方法では、この状況が区別されない。その結果、普通の伝送分数が、そうしてはならない時に増やされる場合がある。これが発生する時に、キューは、すぐに満杯になる可能性がある。その後、伝送分数が減らされ、キュー・レベルが下がる。キュー・レベルが下がる時に、伝送分数が増やされ、キューがまた満杯になる。したがって、スイッチは、キュー満杯とキュー空の間で発振し始める。その結果、スイッチの平均使用率が、非常に低くなり、そのスイッチを使用するネットワークの性能が、悪くなる。
【００６１】
もう１つの方法を、ＢＬＵＥと称する。ＢＬＵＥ方法では、キュー・レベルだけではなく、伝送速度およびオファード・レートも考慮に入れる。オファード・レートは、パケットまたはセルが、対応するキューへの供給のためにエンキューイング機構に提供される速度である。ＢＬＵＥ方法を、エンキューイング機構およびキューを使用して説明する。キューのキュー・レベル、エンキューイング機構によってキューに供給される伝送分数、およびオファード・レートが、終了したばかりのエポックについて判定される。オファード・レートは、パケットがエンキューイング機構に供給される速度である。したがって、オファード・レートは、１つまたは複数のポートによって供給されるトラフィックのフローから来る可能性がある。
【００６２】
次に、パケット消失またはある閾値を超えるキュー・レベルがあるかどうかを判定する。どちらのイベントも、破棄分数を増やさなければならないことを示す。そうである場合には、経験的に決定することができる第１定数の量だけ破棄分数を増分する。したがって、１から破棄分数を引いたものである伝送分数が減る。破棄分数を増やす必要がないと判定される場合には、破棄分数を減らす必要があるかどうかを判定する。キュー・レベルが低い場合、またはオファード・レートが低い場合に、破棄分数を減らさなければならない。破棄分数を減らさなければならない場合には、やはり経験的に決定することができる第２定数の量を減算することによって、これを行う。破棄分数（変更される場合）または古い破棄分数のいずれかが、次のエポック中にキューに送られるパケットの分数を決定するのに使用される。したがって、パケットを、ランダムにまたは各パケットの優先順位を考慮に入れることによって、破棄することができる。したがって、正しい破棄分数が、したがって正しい伝送分数が維持されることが保証される。次に、エポックが終了したかどうかを判定する。ＢＬＵＥの詳細については、ウェブサイトhttp://www.eecs.umich.edu/usuchang/blue/を参照されたい。
【００６３】
方法ＢＬＵＥは、初期の目的に関して良好に動作し、方法ＲＥＤに対する改善であるが、方法ＢＬＵＥが、安定状態に達するのに比較的長時間を有する可能性があることを、当業者はすぐに理解するであろう。したがって、方法ＲＥＤに対して性能が改善されるが、ネットワークの性能は、まだ所望の性能より低い可能性がある。
【００６４】
方法ＲＥＤおよびＢＬＵＥの代替であるもう１つの方法を、これから説明する。この第３の方法は、複数のキューが同一のメモリ・リソースの一部であるシステムと共に使用することができる。しかし、方法ＴＨＲＥＥを、各キューが別々のメモリ・リソースを有する別のシステムで使用できなくするものはない。
【００６５】
方法ＴＨＲＥＥでは、キュー・レベルおよびオファード・レートが、前のエポックについて判定される。キュー・レベルは、エポックの終りに、最小キュー・レベルＱｍｉｎおよび最大キュー・レベルＱｍａｘに関して判定されることが好ましい。前のエポックの伝送分数も、使用可能である。
【００６６】
次に、キュー・レベルがＱｍｉｎを超えるかどうかを判定する。そうでない場合には、伝送分数に１をセットし、これによって、キュー・レベルが十分に低い場合に、すべてのパケットがエンキューイング機構によってキューに送られることを保証する。キュー・レベルがＱｍｉｎを超えると判定される場合には、次に、キュー・レベルがＱｍａｘを超えるかどうかを判定する。キュー・レベルがＱｍａｘを超える場合には、伝送分数に０をセットする。このステップによって、キュー・レベルが十分に高い場合に、すべてのパケットが破棄されることが保証される。
【００６７】
キュー・レベルが、Ｑｍｉｎ未満でもＱｍａｘ超でもない場合には、伝送分数を、臨界減衰について制御する。安定理論を使用する臨界減衰の導関数が、関連する同時係属の米国特許第０９／４４８１９０号に記載され、完全な数学的説明が与えられる。
【００６８】
伝送分数は、方法ＴＨＲＥＥを使用して臨界減衰についてセットすることができる。臨界減衰が、キュー・レベルの所望の範囲内でのみ発生することが好ましい。この範囲の外では、キュー・レベルが臨界減衰計算に関して高すぎるまたは低すぎるのどちらに判定されるかに応じて、伝送分数に０または１がセットされる。パケットを、ランダムにまたは少なくとも部分的に優先順位に基づいて破棄することができるので、スイッチにトラフィックを送るホストの同期化をなくすことができる。臨界減衰が提供されるので、方法ＴＨＲＥＥによって、方法ＲＥＤよりよいシステムの安定性をもたらすことができ、方法ＢＬＵＥよりすばやく平衡状態に達する。
【００６９】
本発明では、方法ＲＥＤ、ＢＬＵＥ、またはＴＨＲＥＥなどの方法に、連続するエポック中のパケット・フローの第１次導関数を計算し、データ・フローがアドレッシングされるサーバのサービス能力を表すものとして確立されるある境界内に第１次導関数があるかどうかに応じて、適用されるフィルタ規則を変更するという特性が追加される。第１次導関数から、サーバに対する需要がサービス機能をわずかに超えると判定される時に、適用されるフィルタ規則によって、パケットの破棄が増やされる。この導関数から、サーバに対する需要がサービス機能の境界内のレベルに戻りつつあると判定される時には、破棄率が減らされる。すなわち、より多くのトラフィックが処理される。これらの特性を、動作の流れを示す図５および６で象徴的に示す。本発明では、本発明に従って使用されるネットワーク・プロセッサによって、図示のプロセスの一方、他方、または両方を実施できることが企図されている。
【００７０】
図５を参照すると、ステップ２００で、図２に示されたシステム内のＮＰ１０によって、エポック中の特定のアドレスへのパケットの流れを監視する。ステップ２０２で、連続するエポック中のフロー速度の第１次導関数（図では、速度の変化またはＲＯＣ）を、アルゴリズム的規則の適用によって計算する。ステップ２０４で、計算された変化の速度を、所定の境界条件と比較する。インバウンド・パケット・フローの変化の速度が、確立された境界条件（アドレッシングされたサーバ・リソースのデータ・フロー処理能力によって設定される）を超える場合には、ステップ２０６で、ＮＰ規則セットを修正して、インバウンド・パケットの破棄を増やすか、所定の受入可能な代替ネットワーク・リソースにパケットをリダイレクトする。インバウンド・パケット・フローの変化の速度が上界条件より少ない場合には、このシステムは、ステップ２０２に戻る。ステップ２０６に従う規則セットの修正の後に、このシステムは、ステップ２０２の導関数の計算に戻り、インバウンド・パケット・フローの変化の速度が、ステップ２０４の判定で第２の境界条件未満に低下した時に、ステップ２０６で、ＮＰ規則セットを修正して、パケットの破棄を減らすことによって通常のデータ・フローを復元する。
【００７１】
サービス妨害攻撃の成功は、アドレッシングされたネットワーク・リソースからのパケット（すなわちアウトバウンド・パケット）の急激に減るフロー（リソースが圧倒されたことを示す）によって示すこともできる。したがって、図６のステップ３０１での監視およびステップ３０３での計算によって、代替の保護を提供する。３０５で、アウトバウンド・パケット・フローの変化の速度が、確立された境界条件を満たすかどうかの判定を行う。３０７での判定で、境界未満に下がった場合には、ステップ３０９でＮＰ規則セットを修正して、インバウンド・パケットの破棄を増やすか、所定の受入可能な代替ネットワーク・リソースにインバウンド・パケットをリダイレクトする。アウトバウンド・パケット・フローの変化の速度が境界条件を超える場合には、このシステムは、ステップ３０３に戻る。ステップ３０９に従う規則セットの修正の後に、このシステムは、ステップ３０３での導関数の計算に戻り、アウトバウンド・パケット・フローの変化の速度が第２の境界条件を超える時には、ステップ３１１で、ＮＰ規則セットを修正して、破棄を減らすことによって通常のデータ・フローを復元する。図５の「ＮＰ規則を修正する」というより一般的なステップに、図６に示されたより詳細なステップまたは他の同等のステップを含めることができることに留意されたい。
【００７２】
図面および本明細書で、本発明の好ましい実施形態を示す際に、特定の用語を使用したが、この与えられる説明では、制限ではなく、包括的で説明的な意味でのみこれらの用語が使用された。
【図面の簡単な説明】
【００７３】
【図１】本発明を実施することができるコンピュータ・システムを示す概略図である。
【図２】図１に示された複数のコンピュータ・システムならびに図３および４に示されたネットワーク・プロセッサを使用して形成されるサーバ・ファームを示す概略図である。
【図３】本発明で使用されるネットワーク・プロセッサを示す概略図である。
【図４】本発明で使用されるネットワーク・プロセッサを示すもう１つの概略図である。
【図５】本発明による、インバウンド・パケットを監視することによってサービス妨害攻撃の成功裡のアサーション（assertion）を防ぐ際に実行されるステップを示す図である。
【図６】本発明による、アウトバウンド・パケットを監視することによってサービス妨害攻撃の成功裡のアサーションを防ぐ際に実行されるステップを示す図である。
【図１】
2005521273.tif 000003
【図２】
2005521273.tif 000004
【図３】
2005521273.tif 000005
【図４】
2005521273.tif 000006
【図５】
2005521273.tif 000007
【図６】
2005521273.tif 000008
【国際調査報告】
2005521273.tif 000009