(57)【要約】  本書に記述される主題は、例外パケットの動的帯域制限スローパス処理のための方法及びシステムを含む。一の態様によると、方法は、例外パケットのスローパス処理を実行するために用いられるパケット転送装置の処理リソースをパケット転送装置で監視することを含む。スローパス処理のために用いられる処理リソースの使用量が第１の閾値を超えるか否かが決定され、及び前記処理リソースの使用量が前記第１の閾値を超えるという決定に応じ、前記例外パケットの前記スローパス処理を帯域制限する。
2011523242.tif 000002
【特許請求の範囲】
【請求項１】
パケット転送装置における例外パケットの動的帯域制限スローパス処理のための方法であって：
例外パケットのスローパス処理を実行するために用いられるパケット転送装置の処理リソースを監視し；
前記パケット転送装置内で、スローパス処理のために用いられる前記処理リソースの使用量が第１の閾値を超えるか否かを決定し；及び
前記処理リソースの使用量が前記第１の閾値を超えるという決定に応じ、前記例外パケットの前記スローパス処理を帯域制限することを含む方法。
【請求項２】
スローパス処理のために用いられる前記処理リソースの使用量が第２の閾値未満であるか否かを決定し、及び前記処理リソースの使用量が前記第２の閾値未満であるという決定に応じ、前記例外パケットの前記帯域制限を停止することを含む請求項１記載の方法。
【請求項３】
前記処理リソースの監視は、前記パケット転送装置の少なくとも１つの作業キュー、及び例外パケットのスローパス処理のために用いられる前記パケット転送装置内の少なくとも１つのプロセッサのプロセッサ使用率を監視することを含む請求項１記載の方法。
【請求項４】
前記例外パケットの前記スローパス処理の帯域制限は、トークンバケットを用いた前記例外パケットの帯域制限を含む請求項１記載の方法。
【請求項５】
前記例外パケットの前記スローパス処理の帯域制限は、上位レイヤのソフトウェア処理に供給されるパケットの数を制限することによる前記例外パケットの帯域制限を含む請求項１記載の方法。
【請求項６】
前記例外パケットの前記スローパス処理の帯域制限は、レートシェーピング及びポリシングの少なくとも１つを用いることを含む前記例外パケットの帯域制限を含む請求項１記載の方法。
【請求項７】
前記第１の閾値は、ユーザ入力値に基づき静的に決定される請求項１記載の方法。
【請求項８】
前記第１の閾値は、前記パケット転送装置の処理能力に基づき動的に決定される請求項１記載の方法。
【請求項９】
前記例外パケットの前記スローパス処理は、中央処理装置及び関連するソフトウェアを使用して前記パケットを処理することを含む請求項１記載の方法。
【請求項１０】
前記例外パケットの前記スローパス処理の帯域制限は、パケット分類基準毎の処理を帯域制限することを含む請求項１記載の方法。
【請求項１１】
例外パケットの動的帯域制限スローパス処理のためのパケット転送装置であって：
前記例外パケットのスローパス転送のために用いられる処理リソースに関連付けられ、例外パケットを処理するための少なくとも１つのプロセッサと；
前記少なくとも１つのプロセッサにより例外パケットのスローパス処理を実行するために用いられる処理リソースを監視し、スローパス処理のために用いられる前記処理リソースの使用量が第１の閾値を超えるか否かを決定し、及び前記処理リソースが前記第１の閾値を超えるという決定に応じて前記例外パケットの前記スローパス処理を帯域制限するための動的帯域制限モジュールと、を有するパケット転送装置。
【請求項１２】
前記動的帯域制限モジュールは、スローパス転送のために用いられる前記処理リソースの使用量が第２の閾値未満であるか否かを決定し、及び前記処理リソースの使用量が前記第２の閾値未満であるという決定に応じ、前記例外パケットの前記帯域制限を停止するよう構成される請求項１１記載のパケット転送装置。
【請求項１３】
前記動的帯域制限モジュールは、前記処理リソースの使用量が前記第１の閾値を超えるか否かを決定する際、少なくとも１つの作業キュー及び少なくとも１つのプロセッサの使用率のうちの１つを監視するよう構成される請求項１１記載のパケット転送装置。
【請求項１４】
前記動的帯域制限モジュールは、トークンバケットを用いて前記例外パケットのスローパス処理を帯域制限するよう構成される請求項１１記載のパケット転送装置。
【請求項１５】
前記動的帯域制限モジュールは、上位レイヤのソフトウェア処理に供給されるパケットの数を制限することにより前記例外パケットのスローパス処理を帯域制限するよう構成される請求項１１記載のパケット転送装置。
【請求項１６】
前記動的帯域制限モジュールは、レートシェーピング及びポリシングの少なくとも１つを用いて前記例外パケットの前記スローパス処理を帯域制限するよう構成される請求項１１記載のパケット転送装置。
【請求項１７】
前記動的帯域制限モジュールは、ユーザから前記第１の閾値を受信し、該第１の閾値を静的に保持するよう構成される請求項１１記載のパケット転送装置。
【請求項１８】
前記動的帯域制限モジュールは、前記少なくとも１つのプロセッサの処理能力に基づき、前記第１の閾値を動的に決定するよう構成される請求項１１記載のパケット転送装置。
【請求項１９】
前記動的帯域制限モジュールは、中央処理装置及び関連するソフトウェアを使用して前記例外パケットをスローパス処理するよう構成される請求項１１記載のパケット転送装置。
【請求項２０】
前記動的帯域制限モジュールは、パケット分類基準毎の処理を帯域制限することにより、前記例外パケットのスローパス処理を帯域制限するよう構成される請求項１記載の方法。
【請求項２１】
コンピュータのプロセッサにより実行されると、
例外パケットのスローパス処理を実行するためのパケット転送装置で使用される処理リソースを監視し；
前記パケット転送装置内で、スローパス処理のために用いられる前記処理リソースの使用量が第１の閾値を超えるか否かを決定し；及び
前記処理リソースが前記第１の閾値を超えるという決定に応じ、前記例外パケットの前記スローパス処理を帯域制限する：ことを含むステップを実行する、コンピュータで実行可能な命令を含むコンピュータプログラムを含むコンピュータ読取り可能な媒体。
【請求項２２】
前記例外パケットの前記スローパス処理は、中央処理装置及び関連するソフトウェアを使用して前記パケットを処理することを含む請求項２１記載のコンピュータ読取り可能な媒体。
【請求項２３】
前記例外パケットの前記スローパス処理の帯域制限は、パケット分類基準毎の処理を帯域制限することを含む請求項２１記載のコンピュータ読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連する出願）
本出願は、2008年3月28日出願の米国仮特許出願No. 61/066,145及び2008年4月10日出願の米国仮特許出願No. 12/100,498の利益を主張し、その開示は参照することにより全体が本書に援用される。
【０００２】
（技術分野）
本書に記述される主題は、レイヤ2及びレイヤ3パケット転送装置における例外パケットの処理に関する。特に本書に記述される主題は、パケット転送装置における例外パケットの動的帯域制限スローパス処理のための方法、システム、及びコンピュータ読取り可能な媒体に関する。
【背景技術】
【０００３】
イーサネット（登録商標）スイッチ及びIPルーターのようなレイヤ2及びレイヤ3パケット転送装置は、専用のハードウェア転送装置及び汎用処理リソースの組み合わせを用いてパケットを処理する。レイヤ2及び/又はレイヤ3パケットの高密度、高速（すなわち伝送速度（line-rate））処理を実行するため、ハードウェア転送装置は例えば、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、ネットワークプロセッサ（NPU）、又はそれらのいくつかの組み合わせを含んでもよい。しかし、ハードウェア転送装置を使用する1つの欠点は、それらの実装が高価であると共に、例えば受信されたパケットのためのハードウェアプログラム転送（hardware-programmed forwarding）の不足のため、当該パケット転送装置によって受信されたすべてのパケットを処理できないことである。
【０００４】
従って、パケット転送ハードウェアを含むことに加え、パケット転送ハードウェアが使用され得ない様々なタスクを実行するため、レイヤ2又はレイヤ3パケット転送装置は、多目的の中央演算処理装置（CPU）又はCPUの組を含むことができる。例えば、CPUは、転送ハードウェアで処理できない任意のパケットの処理だけでなく、ユーザー設定情報の認証（accept）、スイッチの管理、及びパケット転送ハードウェアのプログラミングのためのソフトウェアを実行するために使用されてもよい。転送ハードウェアで処理できないパケットは例外パケットと呼ばれ、さらにCPUによる例外パケットの処理はスローパス（slowpath）処理と呼ばれる。これらのパケットのCPU処理がハードウェア転送を使用したパケットの処理より遅いため、例外パケットのスローパス処理は一般に好ましくない。市場で競争力のある価格を提供するため、従来のレイヤ2又はレイヤ3パケット転送装置は、それらの他の任務に加えて高いパケット転送レート(rate)を維持するのに対応していないCPUをしばしば含む。その結果、レイヤ2又はレイヤ3スイッチで例外パケットのスローパス転送のための処理リソースが制限されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
レイヤ2及びレイヤ3パケット転送装置における例外パケットのスローパス処理のための従来の方法に関する一つの問題は、例外パケットの割合の上昇がCPU使用率(utilization)を増加させ、その結果としてCPUによって実行される他の重要な機能の実行がおろそかになるかもしれないということである。例外パケットの割合の上昇は、しばしば一時的な状態であるが、CPUが過度に使用されると、パケット転送装置は、セキュリティ脅威とソフトウェアクラッシュ（software crash）の影響を受けやすくなるであろう。
【０００６】
例えば、転送装置によって受信された例外パケットの数は、サービス妨害（DoS）攻撃の間、実質的に向上する可能性がある。DoS攻撃中に、標的のコンピュータ又は装置には、転送ハードウェアで処理できない大量のパケットが殺到する可能性がある。その結果、スイッチは、ユーザー設定又は管理などの他のサービスをもはや提供できなくなるまで、これらの例外パケットを処理するために自身のCPUリソースを消費することを余儀なくされるかもしれない。
【０００７】
他の例では、例外パケットは、悪意のある行為でなく、ネットワークトポロジーの結果として生成されるかもしれない。例えば、種々のルーティングプロトコルに基づいてネットワークルーティング情報を含むメッセージを交換することによって、レイヤ2又はレイヤ3パケット転送装置は他のネットワークノード(node)へネットワークルーティング情報を通信することができる。典型的なルーティングプロトコルは、アドレス解決プロトコル（ARP）、ルーティング・インフォメーション・プロトコル（RIP）、ボーダ・ゲートウェイ・プロトコル（BGP）、及びオープン・ショーテスト・パス・ファースト・プロトコル（OSPF）ルーティングプロトコルを含んでもよい。多数のネットワーク装置が単一のパケット転送装置に同時に接続されている場合、ネットワークトポロジーの詳細を決定するためにこれらのプロトコルによってパケット転送装置に送信されるルーティングプロトコルメッセージの数が大きく上昇するであろう。このようなネットワークの動作は一時的であり予想されるものであるが（すなわち、悪意のある攻撃でない）、それでもなおCPUの整合性（integrity）及びサービスに障害を来たす可能性がある。
【０００８】
例外パケットの処理に関するレイヤ2又はレイヤ3パケット転送装置におけるCPUの過負荷を防止するための従来の一つの解決方法は、一定時間にわたってＣＰＵで処理される例外パケットの数について、静的な（static）帯域制限を設定することである。例外パケットの処理を静的に帯域制限することは、使用状態及びCPUの処理能力に関係なく、CPUで処理され得る例外パケットの数を常に制限することを含む。その結果、例外パケットが上昇する時間の間にCPUが過負荷から保護される。静的帯域制限は、CPUを過負荷から防ぐことに加え、人為的に例外パケットの処理速度(rate)を低下させるので、軽負荷時間中のCPUリソースの非効率な使用にもなる。例外パケットの処理の静的帯域制限の結果は、レイヤ2メディアアクセス制御（MAC）アドレス学習を遅くし、例外パケットのスローパス転送を遅くし、及び予期しないプロトコルパケットを破棄（drop）することを含むかもしれない。
【０００９】
例外パケットの従来の処理に関連するもう一つの欠点は、高速のCPUが利用可能になるのにつれて、レベル（scale）が上がるわけではないということである。例えば、レイヤ2又は3転送装置のCPUは、例外パケットの特定の数を毎秒処理することができるであろう。より多くのパケットが処理されるようCPUがアップグレードされている場合、従来の静的帯域制限は、この追加の処理能力を無視するか、又は増強された処理能力を計上する（account for）ため、手動で高く調整される必要がある。前者の場合、CPUリソースが無駄になるであろう。後者の場合、手動で帯域制限を調整することによって人間の管理者リソースが無駄になるであろう。
【００１０】
さらに、例外パケットの従来の処理に関する別の欠点は、静的帯域制限がパケット分類基準毎にカスタマイズすることができないことである。例えば、パケットを学習するブロードキャストパケット及びレイヤ2 MACアドレスは、パケット転送装置で処理された２つの異なるパケットの分類を含むことができる。互いに異なるパケット分類を帯域制限することが望ましい。
【００１１】
従って、パケット転送装置における例外パケットの動的帯域制限スローパス処理の改善された方法及びシステムへの要求が存在する。
【課題を解決するための手段】
【００１２】
本書に記述される主題は、例外パケットの動的帯域制限スローパス処理のための方法及びシステムを含む。一の態様によると、方法は、例外パケットのスローパス処理を実行するために用いられるパケット転送装置の処理リソースをパケット転送装置で監視することを含む。スローパス処理のために用いられる処理リソースの使用量(usage)が第１の閾値を超えるか否かが決定され、及び前記処理リソースの使用量が前記第１の閾値を超えるという決定に応じ、前記例外パケットの前記スローパス処理を帯域制限する。
【００１３】
他の態様によれば、方法は、スローパス処理のために用いられる前記処理リソースの使用量が第２の閾値未満であるか否かを決定し、及び前記処理リソースの使用量が前記第２の閾値未満であるという決定に応じ、前記例外パケットの前記帯域制限を停止することを含む。
【００１４】
他の態様によれば、例外パケットの動的帯域制限スローパス処理のためのシステムはパケット転送装置を含む。パケット転送装置は、前記例外パケットのスローパス転送のために用いられる処理リソースに関連付けられ、例外パケットを処理するための少なくとも１つのプロセッサを含む。動的帯域制限モジュールは、前記少なくとも１つのプロセッサにより例外パケットのスローパス処理を実行するために用いられる処理リソースを監視し、スローパス処理のために用いられる前記処理リソースの使用量が第１の閾値を超えるか否かを決定する。前記処理リソースの使用量が前記第１の閾値を超えるという決定に応じ、前記動的帯域制限モジュールは前記例外パケットの前記スローパス処理を帯域制限する。
【００１５】
例外パケットの動的帯域制限スローパス処理のための本書に記述される主題は、コンピュータプロセッサによって実行される具体的なコンピュータ読取り可能な媒体に表現され、コンピュータで実行可能な命令を含むコンピュータプログラム製品を用いて実行されることができる。本書に記述される主題を実行するのに適した典型的なコンピュータ読取り可能な媒体は、ディスクメモリ装置（disc memory devices）、プログラム可能論理回路（programmable logic devices）、及び特定用途向け集積回路を含むことができる。一つの実装では、前記コンピュータ読取り可能な媒体は、プロセッサによってアクセス可能なメモリを含んでもよい。前記メモリは、本書に記述されるコール(call)をルーティングするためのあらゆる方法を実行するためのプロセッサによって実行可能な命令を含んでもよい。さらに、本書に記述される主題を実行するコンピュータ読取り可能な媒体は、複数の物理デバイスおよび/または計算プラットフォームに分散されてもよい。
【図面の簡単な説明】
【００１６】
【図１】本書に記述された主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なレイヤ2又はレイヤ3パケット転送装置のブロック図である。
【図２】本書に記述された主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なレイヤ2又はレイヤ3パケット転送装置のブロック図である。
【図３】本書に記述された主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なプロセスのフローチャートである。
【図４】本書に記述された主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なプロセスの詳細なフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、本書に記述された主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なレイヤ2又はレイヤ3パケット転送装置の図である。本発明の実施形態に用いられるのに適した市販のレイヤ2又はレイヤ3パケット転送装置の一例は、カリフォルニア州サンタクララのエクストリームネットワークから得られるブラックダイヤモンド（登録商標）8800シリーズスイッチである。ブラックダイヤモンド（登録商標）8800シリーズパケット転送装置は、スローパス処理及び管理を実行するための集中型（centralized）管理モジュールと、各I/Oモジュールのための別個のCPUとを有するマルチブレード（multi-blade）レイヤ2スイッチ装置である。単一のCPUがすべての管理機能を実行する別のプラットフォームが以下でより詳細に記述される。
【００１８】
図１を参照すると、パケット転送装置100は、ネットワーク上のパケットを送受信するための複数の入力/出力（I/O）モジュール101-106を含む。入力/出力モジュール101-106は、パケット転送装置100のスロットに接続されるプリント回路基板としてそれぞれ実装されてもよい。スイッチ構造（switch fabric ）107は、入力/出力モジュールを互いに、かつマスター及びスレーブスイッチ管理モジュール108及び109へ接続する。図１においては、集中型スイッチ構造は簡単に示されている。しかしながら、一つの実装では、I/Oモジュール106、管理モジュール108、及び管理モジュール109のそれぞれは、パケット転送装置100内の他のすべてのモジュールに接続する自身のスイッチ構造を有してもよい。
【００１９】
マスター及びスレーブスイッチ管理サービスモジュール（MSM）108及び109はそれぞれ、例外パケットの動的帯域制限スローパス処理を実行し、かつI/Oモジュール101-106を管理するためのハードウェア及びソフトウェアを有する。図示の例では、マスター及びスレーブスイッチ管理モジュール108及び109はそれぞれ、CPU118及び120、並びに動的帯域制限モジュール128及び130を含む。動的帯域制限モジュール128及び130は、例外パケットの動的帯域制限スローパス処理を実行するよう設計された任意の適切なハードウェア又はソフトウェア実装であってよい。例えば、動的帯域制限モジュール128及び130は、動的帯域制限を課すためのソフトウェア命令を含んでよい。
【００２０】
マスター及びスレーブスイッチ管理モジュール108及び109は、適切な信頼性の高い通信メカニズムを介して互いに通信してもよい。一例では、信頼性の高い通信メカニズムは、共有メモリに実装された循環バッファであってよい。例えば、マスタースイッチ管理モジュール108を循環バッファに書き込み、情報がバッファに書き込まれた後でバッファ内の最終ポインタを進めてもよい。スレーブスイッチ管理モジュール109は、開始ポインタで始まり最終ポインタへ至る循環バッファから情報を読み取り、情報が読み込まれたことを示す開始ポインタを進めてもよい。
【００２１】
マスタースイッチ管理モジュール108は、ソフトウェア転送テーブル、及びネットワークプロトコルに参加することによって好ましく構成される対応（corresponding）プロトコル状態情報を含んでもよい。マスタースイッチ管理モジュール108が参加してもよい典型的なネットワークプロトコルは、BGP、OSPF、IS-ISなどのIPルーティングプロトコルのいずれかを含む。さらに、スイッチ管理モジュール108は、スパニングツリープロトコル（STP）などのレイヤ2プロトコルに参加してもよい。最新のソフトウェア転送テーブル及び対応プロトコル状態情報を取得することは、マスタースイッチ管理モジュール108が最後に正しく操作された状態で、スレーブスイッチ管理モジュール109がマスタースイッチ管理モジュール108のネットワークプロトコル操作を引き継ぐことを可能にする。
【００２２】
スレーブスイッチ管理モジュール109は、マスターMSM 108によって保持されるルーティングテーブル、転送テーブル、プロトコル状態情報、及び構成情報のコピーを含んでもよい。図示の例では、スイッチ管理モジュール109がスレーブモードで動作している間、マスタースイッチ管理モジュール108から受信したメッセージにより、コピーが定期的に更新されてもよい。ただし、スイッチ管理モジュール109がマスターモードで動作するよう切り替えると、コピーがCPU 120によってアクセスされ、マスタースイッチ管理モジュール機能を実行するために使用されてもよい。
【００２３】
音声を聞く
I/Oモジュール101-106は、それぞれCPU111-116、及びそれぞれ非同期の作業キュー121-126を含んでもよい。CPU111-116は、ユーザー設定情報を認証し、I/Oモジュール101-106を管理し、パケット転送ハードウェア（図示せず）をプログラミングし、及び転送ハードウェア（図示せず）で処理できない例外パケットを処理するためのソフトウェアを実行するよう構成されてもよい。異なるCPUが異なる処理能力を持つことは評価されるであろう。ここで使用される用語"処理リソース"は、コンピュータシステム内で利用が限られる任意の物理的又は仮想コンポーネントをいう。処理リソースは直接又は間接的に測定されてもよく、例外パケットのスローパス処理の実行のような特定のタスクを実行するために使用されてもよい。従って、ここで使用される"処理リソース"は、プロセッサによって実行される計算の数、例外パケットの処理から得られる作業項目（work item）の数、及びメモリ使用量を含んでもよいが、これらに限定されない。
【００２４】
非同期の作業キュー121-126は、例えばスローパス転送を待つ例外パケットのような、CPU111-116による処理を待つデータのシーケンスを含んでもよい。一実施形態では、非同期の作業キュー121-126の主な用途は、レイヤ2MACアドレス学習動作から得られるフォワーディングデータベース（FDB）テーブルの追加及び/又は削除の実行であってよい。例えば、学習されたMACアドレス、及び各MACアドレスがそこで学習されたポートを格納するため、FDBテーブルはレイヤ2パケット転送装置（すなわち、スイッチ及び/又はブリッジ）によって使用されてもよい。例えば、イーサネット（登録商標）フレームがレイヤ2パケット転送装置に到達したとき、レイヤ2装置はフレームの送信元MACアドレスを検査し、FDBテーブル入力が送信元MACアドレスのために存在するかどうかを決定してもよい。FDBテーブルが送信元MACアドレスのどんな情報も含んでいない場合、送信元MACアドレス及び関連するポートがFDBに格納されてもよい。最近使用されていないFDBの古い入力は、各I/OモジュールのCPUによってエージ・アウト（age out）されてもよい。CPU111-116により、スローパス処理を必要とするパケットは、転送データベースに実装されたソフトウェアでCPU118がパケット転送ルックアップを実行するマスターMSM108に転送されてもよい。
【００２５】
非同期の作業キュー121-126は、CPU111-116による処理を待つ他の管理又はユーザ設定メッセージを格納してもよい。作業キュー121-126が非同期に動作するため、作業キュー内の例外パケット又はその他の項目の処理が他のパケット及び/又はキューと独立に進むことができることは理解される。作業キュー121-126は、CPU111-116に関する処理負荷の間接的な測定であってもよい。例えばCPU111-116のそれぞれは、例外パケットのように、作業キューから毎秒特定の数のパケットを処理する能力に関連する有限の処理能力を持っていてもよい。新しい項目が作業キューに追加されるレート(rate)がCPUの能力より小さい場合、その項目はすぐに処理されるであろう。ただし、新しい項目が作業キューに追加されるレート(rate)がCPUの能力を超える場合、作業キューのサイズが増加することがある。従って、大きな作業キューは、持続した期間にわたってCPUが実行可能なものよりも多くの作業がCPUに求められていることを示すであろう。CPUの処理負荷を軽減する1つの方法は、その作業キューに置かれる新しい項目の数を制限することである。
【００２６】
別の実施形態では、例外パケットのスローパス処理に関連する処理リソースは、CPU使用率若しくはその代わりに他のメトリック（metric）を調べることにより、又はそれに加え、本書の主題の範囲から逸脱することなく上記の非同期の作業キュー121-126を監視することにより測定することができるであろう。例えば、プロセッサ111-116の使用率は、時間内の任意の瞬間のCPUサイクル(cycle)の割合として直接測定することができるであろう。
【００２７】
図１に示す別個のI/Oモジュール101-106及びMSM108-109を有するパケット転送装置100において、CPU111-116は、所定の閾値を超えた場合に作業キュー121-126の監視及び動的帯域制限モジュール128の通知の責任を負うかもしれない。例えば、いずれかのI/Oモジュール121-126の非同期の作業キューが50,000エントリの第１の閾値を超えた場合、I/OモジュールのCPUは、例外パケットのスローパス処理によってプロセッサリソースが過負荷であることを示す信号をMSM108に送ってもよい。第１の閾値は、通常の負荷条件下で（つまり、DoS攻撃の間でなく）、作業キューのサイズがこの第１の閾値を決して超えないように選択されてもよい。
【００２８】
一つの場合、CPU116が非同期の作業キュー126を監視し、第１の閾値を超えたことを決定してもよい。それからCPU116は、動的帯域制限モジュール128に条件を通知してもよい。通知の受信に応じ、動的帯域制限モジュール128は、作業キュー126に割り当てられている新しいパケットの量に帯域制限を課してもよい。それから動的帯域制限モジュール128は、他の指示があるまでCPU116に帯域制限を実行するよう指示してもよい。キュー126に追加される新しい作業の量を制限することにより、CPU116の整合性及びサービスが保護され、CPU116がキュー126内の既存の項目を処理して通常の負荷状態に戻ることが許容されるであろう。
【００２９】
他の態様によれば、作業キュー126のサイズが第２の閾値126を下回るか否かを決定するため、CPU116が作業キュー126を監視し続けてもよい。第２の閾値より小さい作業キューが通常の処理負荷状態を示すよう、第２の閾値は第１の閾値（すなわち、500対50000）より大幅に小さくなるであろう。作業キュー121-126が第２の閾値未満であるという決定に応じ、帯域制限が削除されると共に、CPU116が全速力（ full speed）で例外パケットをスローパス処理してもよい。例えばCPU116は、作業キュー126のサイズが第２の閾値を下回ることを示す信号を動的帯域制限機能128に送ってもよく、さらにそれに応じて動的帯域制限機能128は以前に課された帯域制限を無効にしてもよい。
【００３０】
例外パケットのスローパス処理のための帯域制限を動的に有効及び無効にする一つの利点は、最大スローパス転送及び通常の使用状態下での例外パケット処理をまだ許容している間であって、攻撃又は持続した異常アクティビティ（abnormal activity）が認められている中で、本書に記述される主題を実装するレイヤ2又はレイヤ3パケット転送装置が重要なCPUリソースを保護できるということである。また、帯域制限無効化閾値を帯域制限有効化閾値より小さくなるよう定義することによって、CPU処理リソースを通常の状態に回復する際にいくつかのヒステリシス（hysteresis）が許容される。
【００３１】
図２は、本書に記述される主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なレイヤ2又はレイヤ3転送装置を示す図である。図２を参照すると、レイヤ2又はレイヤ3パケット転送装置100とは対照的に、パケット転送装置200は、スイッチ構造208を介して非同期作業キュー204及び動的帯域制限モジュール206に接続される単一のCPU202を有する集積デバイスであってもよい。従って、独立したCPU及び作業キューをそれぞれ含む個別のMSM及びI/Oモジュールを持つよりは、パケット転送装置200がこの機能を少数のコンポーネントに組み合わせることができる。本発明の実施形態での使用に適した市販のレイヤ2又はレイヤ3パケット転送装置の例は、カリフォルニア州サンタクララのエクストリームネットワークから得られるサミット（登録商標）X450シリーズスイッチである。
【００３２】
CPU202は、非同期の作業キュー204を監視し、所定の閾値を超えた場合に動的帯域制限モジュール206に通知する責任を負ってもよい。例えば、非同期の作業キュー204が50,000エントリを超えた場合、CPU202は、例外パケットの処理によってCPU202が過負荷であることを示す信号を動的帯域制限モジュール206に送ってもよい。通知(notification)の受信に応じて、動的帯域制限モジュール206は、作業キュー204に割り当てられている新しい作業の量に帯域制限を課してもよい。それから動的帯域制限モジュール206は、他の指示があるまでCPU202に例外パケットの処理の帯域制限をするよう指示してもよい。キュー204に追加される作業の量を制限することにより、CPU202がキュー204内の既存の項目を処理し、通常の負荷状態に戻るであろう。
【００３３】
作業キュー204のサイズが第２の閾値を下回るか否かを決定するため、CPU202が作業キュー204を監視し続けてもよい。第２の閾値より小さい作業キュー204が通常の処理負荷状態を示すよう、第２の閾値は第１の閾値（すなわち、500対50000）より大幅に小さいであろう。作業キュー204が第２の閾値未満であるという決定に応じ、帯域制限が削除されると共に、CPU202が最大の処理能力で例外パケットをスローパス処理してもよい。例えばCPU202は、作業キュー204のサイズが第２の閾値を下回ることを示す信号を動的帯域制限機能206に送ってもよく、さらにそれに応じて動的帯域制限機能206は以前に課された帯域制限を無効にしてもよい。
【００３４】
図３は本書に記述される主題の実施形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なプロセスを示すフローチャートである。図３を参照すると、ブロック300では、例外パケットのスローパス処理の実行のために使用される処理リソースが監視される。例えば、処理リソースの監視は、非同期の作業キューのサイズ又はプロセッサ使用率を監視することを含む。
【００３５】
ブロック302では、レイヤ2又はレイヤ3パケット転送装置において、スローパス処理に使用される処理リソースの使用量が第１の閾値を超えているかどうかが決定される。例えば、通常の負荷状態（すなわち、50,000の作業キューサイズ）下(under)で第１の閾値が決して超えられないように、第１の閾値が選択されてもよい。
【００３６】
ブロック304では、処理リソースが第１の閾値を超えるという決定に応じ、例外パケットの処理に帯域制限が課される。スローパス帯域制限は、レートシェーピング（rate shaping）若しくはポリシング（policing）機能（capability）によるハードウェアで、又は上位レイヤのソフトウェア処理に供給されるパケットの数を制限する低水準ソフトウェアドライバ（a low level software driver）で実施されてもよい。帯域制限は、トラフィックの種類、優先度毎であってよく、又はすべてのスローパストラフィックについてであってもよい。上位レイヤのソフトウェア処理に供給されるパケットの数を制限する典型的な実装は、以下でより詳細に説明される。
【００３７】
音声を聞く
図４は本書に記述される主題の実施の形態に従う、例外パケットの動的帯域制限スローパス処理のための例示的なプロセスのフローチャートである。図４を参照すると、ステップ400で、レイヤ2又はレイヤ3パケット転送装置内での例外パケットの動的帯域制限処理のプロセスが開始される。例えば、ステップ400は、レイヤ2スイッチが最初にオンになっているときに実行されてもよい。その後すぐ、制御はブロック402に進んでもよい。
【００３８】
作業キューのサイズが第１の閾値を超えるか否かを決定するため、ブロック402では作業キューが監視されてもよい。第１の作業キューサイズの閾値を超えた場合に処理リソースの過使用（overutilization）を示すよう、第１の作業キューサイズの閾値は十分に大きくてよい。上述したように作業キューサイズは、処理リソースの使用率(utilization)の間接的測定であってよく、さらに本書の主題の範囲から逸脱することなく、他の値も処理リソースの使用率を決定するために監視されてもよい。図４に示す引き続いた例では、第１の閾値は50,000エントリに設定されてもよい。通常の負荷状態下では、作業キューサイズはこの閾値を決して超えない。従って、ステップ402の結果が第１のしきい値を超えることを示すまで、処理リソースの使用量が連続的に監視され、その後にステップ404に制御が進んでもよい。
【００３９】
ブロック404では、帯域制限は例外パケットのスローパス処理に課されてもよい。例えば、スローパス帯域制限は、レートシェーピング若しくはポリシング機能によるハードウェアで、又は上位レイヤのソフトウェア処理に供給されるパケットの数を制限する低水準ソフトウェアドライバで実施されてもよい。
【００４０】
キューで消費される帯域幅（bandwidth）を測定するための一つの方法は、トークンバケットを使用することである。トークンバケットは、トークンバケットで利用できるトークンの数に基づいてパケットがスケジュール（schedule）されることを許容する、ハードウェア又はソフトウェア実装されたアルゴリズムである。トークンバケットのトークンは、所定のレート(rate)でリフレッシュ（refresh）されてもよい。トークンバケット内で利用できる十分なトークンが存在する限り、パケットが送信されることができる。バケットが空の場合、又は不十分なトークンの数を含む場合、パケットが送信されるのを許容するため十分なトークンがトークンバケット内に存在するまで、送信されるのを待つパケットがキューに入れられてもよい。
【００４１】
トークンバケットの一例では、トークンバケットはトークンカウント（token count）と呼ばれるトークンの数を保存してもよい。トークンバケットは、リフレッシュレート（refresh rate ）Rで満たされて(fill)もよい。最大パケットサイズより大きい開始閾値Tは、トークンバケットに関連付けられる。送信されるパケットについて、トークンの数はTより大きいか等しい必要がある。トークンバケットのサイズは、予想されるパケットバースト（packet burst）閾値に基づいた所定の値に設定されてもよい。キューに入れられたパケットがトークンバケットに到着すると、トークンバケット内のトークンカウントがTより大きい場合に、キューに入れられたパケットが送信されてもよい。この例では、１つのトークンは転送されたデータの１バイトに対応すると仮定する。Tが1500バイトに等しいと仮定すると、キューに入れられたパケットが64バイトのデータを含み、かつトークンバケットに少なくとも1500のトークンが存在する場合、キューに入れられたパケットは送信され、トークンカウントが64トークンずつデクリメントされる。
【００４２】
幾つかのネットワークスイッチの実装では、トークンバケットは出力ポートに関連するキューに関連付けられてもよい。一つの実装では、各キューは最小トークンバケット及び最大トークンバケットを有していてもよい。最小トークンバケットは、最小帯域幅の値を保証するために使用されるトークンを含んでよい。最大トークンバケットは、超えてはならない最大帯域幅の値を提供するために使用されるトークンを含んでよい。
【００４３】
ブロック406では、作業キューサイズが第２の閾値を下回るか否かが決定される。システムにヒステリシスを許容するため、第２の閾値は第１の閾値より小さくてもよい。第１及び第２の閾値を別個にすることにより、帯域制限のスローパス処理の急激な有効及び無効が減少又は排除されるであろう。作業キューサイズが第２の閾値を下回ったと決定されると、制御がブロック408に進められてもよい。
【００４４】
ブロック408で、例外パケットのスローパス処理の帯域制限が無効にされ、例外パケットが全速力で処理されてもよい。例外パケットのスローパス処理の帯域制限を動的に有効及び無効にすることにより、最大スローパス転送及び通常の使用状態下での例外パケット処理をまだ許容している間であって、攻撃又は持続した異常アクティビティ（abnormal activity）が認められている中で、本書に記述される主題を実装するレイヤ2又はレイヤ3パケット転送装置は、重要なCPUリソースを保護することができる。
【００４５】
本書に開示される主題の範囲を逸脱しない限り、本書に開示される主題の各種の詳細を変更してよいことは理解されるであろう。さらに、前述の記述は説明を目的としたものに過ぎず、限定を目的としたものではない。
【図１】
2011523242.tif 000003
【図２】
2011523242.tif 000004
【図３】
2011523242.tif 000005
【図４】
2011523242.tif 000006
【国際調査報告】
2011523242.tif 000007
2011523242.tif 000008