(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載のセキュリティデバイスであって、前記パケット処理マネージャは、オーナーシップ割り当てポリシーを適用してネットワークフローのオーナーシップを前記第1および第2のパケットプロセッサに割り当てるソフトウェアモジュールを備えるセキュリティデバイス。
請求項1に記載のセキュリティデバイスであって、前記第1および第2のパケットプロセッサの各々は、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てをローカルメモリに格納しており、各パケットプロセッサは、自身がオーナーではないデータパケットを受信すると、前記受信したデータパケットに関連するネットワークフローのオーナーシップ割り当てが前記ローカルメモリ内で見つかった場合、前記受信したデータパケットを処理のために前記オーナーに転送するセキュリティデバイス。
請求項3に記載のセキュリティデバイスであって、パケットプロセッサは、前記ネットワークフローのエントリが前記ローカルメモリ内で見つからない時、受信したデータパケットを前記パケット処理マネージャに転送し、前記パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、前記受信したデータパケットを転送したパケットプロセッサに、すでになされた前記オーナーシップ割り当てを知らせるよう構成されているセキュリティデバイス。
【発明を実施するための形態】
【0020】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【0021】
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【0022】
図1は、セキュリティポリシーが実施される環境の一実施形態を示す。図の例において、クライアント104および106は、それぞれ、企業ネットワーク108内に存在するラップトップコンピュータおよびデスクトップコンピュータである。セキュリティデバイス102(本明細書では「デバイス102」とも呼ぶ)は、クライアント(クライアント104および106など)と、企業ネットワーク108の外側のノード(例えば、外部ネットワーク110を介して到達可能なノード)との間の通信に関するポリシーを実施するよう構成されている。ポリシーの一例は、ネットワーク108内の任意のクライアントによるサイト112(アダルトサイト)への任意のアクセスを禁止するルールである。ポリシーの別の例は、午前9時から午後6時の間にクライアントによるソーシャルネットワーキングサイト114へのアクセスを禁止するルールである。ポリシーのさらに別の例は、帯域幅または別の消費の制約下でストリーミングビデオウェブサイト116へのアクセスを許可するルールである。トラフィックシェーピング、サービスの質、または、URL情報に関するルーティングを管理するポリシーなど、他のタイプのポリシーも実施できる。いくつかの実施形態において、セキュリティデバイス102は、さらに、企業ネットワーク108内にとどまるトラフィックに関するポリシーを実施するように構成される。
【0023】
いくつかの実施形態において、セキュリティデバイス102は、例えば、計算ハードウェア、ソフトウェア、または、それらの様々な組み合わせを用いて実装できるセキュリティアプライアンス、セキュリティゲートウェイ、セキュリティサーバ、ファイヤウォール、および/または、いくつかの他のセキュリティデバイスを備える。セキュリティデバイス102によって提供される機能は、様々な方法で実装できる。具体的には、セキュリティデバイス102は、専用デバイスまたはデバイスセットでありうる。デバイス102によって提供される機能は、汎用コンピュータ、コンピュータサーバ、ゲートウェイ、および/または、ネットワーク/ルーティングデバイス上のソフトウェアに統合されてもよいし、かかるソフトウェアとして実行されてもよい。さらに、デバイス102がタスクを実行すると記載された場合、デバイス102の1つのコンポーネント、コンポーネントの一部、または、全コンポーネントが、タスクを実行するために協働しうる。同様に、デバイス102のコンポーネントがタスクを実行すると記載された場合、サブコンポーネントがタスクを実行してよい、および/または、コンポーネントが他のコンポーネントと連携してタスクを実行してよい。様々な実施形態において、デバイス102の部分は、1または複数のサードパーティによって提供される。デバイス102にとって利用可能な計算リソースの量などの要因に応じて、デバイス102の様々な論理コンポーネントおよび/または特徴が省略されてもよく、本明細書に記載の技術は、それに応じて適応される。同様に、さらなる論理コンポーネント/特徴が、場合に応じてシステム102に追加されてもよい。
【0024】
図2は、本発明の実施形態におけるセキュリティデバイスを示す概略図である。図の例において、セキュリティデバイス102の機能は、ファイヤウォール内に実装される。
図2を参照すると、セキュリティデバイス102は、複数の独立した計算リソースを含む分散型システムとして実装される。より具体的には、セキュリティデバイス102は、スイッチングファブリック180に接続された複数のパケット処理カード160を備える。図の例では、パケット処理カード0〜カード2が図示されている。各パケット処理カード160は、同様に構成されており、ネットワーク内の通信ラインまたはデータラインに接続するためのデータポート162と、受信したデータパケットに関連するネットワークフローを識別するためのフローエンジン(FE)164と、フローエンジンと通信し、フローオーナーシップ割り当て情報を格納するためのローカルフローテーブル(LFT)166と、データパケットを処理するための1または複数のパケットプロセッサ168とを備える。図の例において、各パケット処理カード160は、2つのパケットプロセッサPP0およびPP1を備える。パケット処理カード内の各パケットプロセッサは、自身に割り当てられたデータパケットを処理する。いくつかの実施形態において、パケットプロセッサ168は、高性能マルチコアCPUとして実装されてよい。
【0025】
いくつかの実施形態において、セキュリティデバイス102は、さらなる処理リソースを提供する1または複数の処理リソースカード170を備えてもよい。図の例において、セキュリティデバイス102は、複数のパケットプロセッサ172を形成された単一の処理リソースカード0を備える。より具体的には、処理リソースカード170は、パケットプロセッサPP0ないしPP5を備える。処理リソースカード内の各パケットプロセッサは、自身に割り当てられたデータパケットを処理する。パケットプロセッサ172は、パケットプロセッサ168と同じプロセッサデバイスを用いて実装されてよい。処理リソースカード170は、任意選択的であり、本発明の実施形態で省略されてもよい。
【0026】
いくつかの実施形態において、パケット処理カード160および処理リソースカード170は、バックプレーンと通信するラインカードとして実装される。ラインカードまたはデジタルラインカードは、通信バックプレートとインターフェース接続するプリント回路基板上のモジュラー電子回路である。スイッチングファブリック180は、バックプレートと通信するラインカード(管理処理カード(図示せず)など)上に形成された集積回路であってよい。セキュリティデバイス102は、イベント統計およびポリシー実施を維持するなど、セキュリティデバイスの他の機能を実装するために、
図2に示されていない他の構成要素を含んでもよい。
【0027】
セキュリティデバイス102において、パケット処理カード160および処理リソースカード170は、スイッチングファブリック180を通して互いに通信する。より具体的には、セキュリティデバイス102は、パケット処理カード(例えば、カード0)の入力ポートで入力データパケットを受信し、セキュリティ実施のためにデータパケットを処理した後、同じパケット処理カード(カード0)または別のパケット処理カード(例えば、カード1)を通して、出力ポートで出力データパケットを転送してよい。各パケット処理カード160内のフローエンジン164は、受信したデータパケットに関連するフローを特定して適切なセキュリティポリシーを適用するために、受信したデータパケットを処理する。
【0028】
この説明において、ネットワークフローまたは「フロー」とは、ソースと宛先との間で一方向に情報を通信する一連のデータパケットを含むTCP/IPフローのことである。データパケットのフロー識別子(すなわち「フローID」)は、少なくともデータパケットのヘッダ内の情報から決定される。フロー識別子は、セキュリティデバイス102内のフローを特定するために用いられる一意的な値である。いくつかの実施形態において、フロー識別子は、ソースIPアドレス、宛先IPアドレス、ソースポート数、宛先ポート数、および、利用プロトコルを含むデータパケットの5タプルの情報から決定される。別の実施形態において、フロー識別子は、5タプルの情報に加えて、利用されているインターフェースを含むデータパケットの6タプルの情報から決定される。さらに、この説明において、1ペアのネットワークデバイス(例えば、クライアント−サーバ)の間の双方向接続は、セッションが両方向(すなわち、順方向(クライアントからサーバ)および逆方向(サーバからクライアント))のデータトラフィックを表す2つのフローからなるセッションと見なされる。
【0030】
ここまでで構成されたように、セキュリティデバイス102は、システムにわたる独立した処理リソースにフロー処理およびパケット処理が分散される分散処理システムアーキテクチャを実現する。すなわち、入力データパケットの処理は、1または複数のパケット処理カードならびに1または複数の処理リソースカード上の異なるパケットプロセッサに分散される。分散処理システムでは、同じフローまたは同じセッションに属するデータパケットが、異なるパケット処理カードに到着しうる。入力データパケットを受信したパケット処理カードは、処理に向けてオーナーパケットプロセッサにデータパケットを転送するために、セキュリティデバイス102内の同じまたは異なるパケット処理カード上の多くのパケットプロセッサの中で、どのパケットプロセッサ168が、入力データパケットに関連するフローのオーナーシップを割り当てられたのかを知る必要がある。さらに、データトラフィックを効果的に監視および制御するために、信号パケットプロセッサが、同じセッションに属するデータパケットを調査して、データパケットが転送されるのか、ポリシングされるのか、または、セキュリティポリシーによって定義されたように任意の他の動作を取られるのかを決定できるように、同じセッションの順方向フローおよび逆方向フローの両方のための情報が互いに関連していることが好ましい。したがって、単一のパケットプロセッサに、同じセッションに属するフローのオーナーシップが割り当てられることが好ましい。
【0031】
本発明の実施形態において、セキュリティデバイス102は、フローおよびセッションのオーナーシップ割り当てを確実かつ効率的に管理するため、ならびに、セキュリティデバイスにおけるフローオーナーシップのグローバル追跡を提供するために、パケット処理マネージャ150を備える。パケット処理マネージャは、セキュリティデバイスにおけるフローオーナーシップ割り当てを集中化して、セキュリティデバイス内のパケットプロセッサにわたってフローのオーナーシップを分散させるように機能する。より具体的には、パケット処理マネージャは、同じフローに属するデータパケットが同じパケットプロセッサによって処理され、同じセッションに属するフローも同じパケットプロセッサによって処理されるように、セキュリティデバイス内のパケットプロセッサにフローのオーナーシップを割り当てるためのフローオーナーシップ割り当て方法を実施する。さらに、パケット処理マネージャは、セキュリティデバイス内の各パケット処理カードが、受信した各データパケットのオーナーパケットプロセッサを決定すると共に、受信したデータパケットを処理のためにオーナーパケットプロセッサに転送できるように、グローバルフローオーナーシップ割り当て情報を保持する。
【0032】
図2を再び参照すると、セキュリティデバイス102は、グローバルフローオーナーシップ割り当てを実施するため、ならびに、セキュリティデバイス内のすべてのパケット処理カードおよび処理リソースカードのためのグローバルフローオーナーシップ割り当て情報を維持するために、スイッチングファブリック180と通信するパケット処理マネージャ(PPM)150を備える。パケット処理マネージャ150は、スイッチングファブリック180を通してセキュリティデバイス102内のパケット処理カード160および処理リソースカード170のすべてと通信する。パケット処理マネージャ150は、特にグローバルフローテーブル154を備えたハードウェアコンポーネントPPM−HWモジュール152と、オーナーシップ割り当てポリシーを実施するソフトウェアコンポーネントPPM−SWモジュール156とを備える。一実施形態において、パケット処理マネージャ150は、セキュリティデバイス内の管理処理カード(図示せず)の一部として実装される。
【0033】
本発明の実施形態において、パケット処理マネージャ150は、セッションに向けてオーナーパケットプロセッサを決定するための集中リソースとして動作する。一実施形態において、パケット処理カード160が、新しいセッションの最初のデータパケットであるデータパケットを受信すると、そのデータパケットは、ポリシー実施のための新しいセッションに関連するデータパケットの処理を担う新しいセッションの「オーナー」であるべきパケット処理カードおよびパケットプロセッサを決定するために、パケット処理マネージャ150に転送される。パケット処理マネージャ150は、オーナーパケットプロセッサ168およびオーナーパケット処理カード160を割り当て、グローバルフローテーブル154にオーナー割り当てを記録する。次いで、パケット処理マネージャ150は、さらなる処理に割り当てられたオーナーパケットプロセッサにデータパケットを転送する。その一方で、パケット処理カード160が、割り当てられたオーナーパケットプロセッサで、既知のフローに属するデータパケットを受信すると、パケット処理マネージャ150は、オーナーパケットプロセッサにデータパケットを転送すると同時に、同じフローに属する後続のデータパケットが、パケット処理マネージャの介入なしに、受信パケット処理カードからオーナーパケット処理カードに自律的に転送されうるように、データパケットを受信したパケット処理カードにオーナー割り当てを通知する。
【0034】
図3は、本発明の実施形態におけるパケット処理カードを示す概略図である。
図3を参照すると、パケット処理カード160は、ネットワークのデータラインに接続するためのデータポート162を備える。パケット処理カード160は、データポートで、入力データパケット(パケットIn)を受信し、出力データパケット(パケットOut)を送信する。パケット処理カード160は、さらに、スイッチングファブリック180と通信するためにトラフィックマネージャ169を備える。パケット処理カード160は、ローカルフローテーブル(LFT)166と通信するフローエンジン(FE)164を備える。フローエンジン164は、受信したデータパケットのパケット構文解析およびフロー識別を実行し、ローカルフローテーブル166でフロールックアップを実行する。ローカルフローテーブル166は、セキュリティデバイスへの入力データパケットに関連する1または複数のフローのためのパケットプロセッサオーナーシップ割り当てを識別するフローエントリを格納する。パケット処理カード160は、さらに、パケットプロセッサに割り当てられたデータパケットを処理するために1または複数のパケットプロセッサ168を備える。図の例において、各パケット処理カード160は、2つのパケットプロセッサPP0およびPP1を備える。最後に、パケット処理カード160は、パケット処理カードの動作を制御するための制御プロセッサ163を備える。
【0035】
本発明の実施形態において、パケット処理カード160は、さらに、フローに関連するデータパケットを処理するためにフローデータを含むフローレコードを格納するフローデータ・フローテーブル(図示せず)を備えてもよい。より具体的には、フローデータ・フローテーブルは、フローレコードを格納するエントリを備えてよく、各フローレコードは、フロー識別子およびそれに関連付けられたフローデータ(しばしば「フロー属性」と呼ばれる)からなる。フロー属性は、受信されたデータパケットをさらに処理してネットワークセキュリティ機能を実行するためにセキュリティデバイス102のパケットプロセッサによって利用されうる1または複数のルールまたはポリシー情報を含んでよい。いくつかの実施形態において、かかるフローデータ・フローテーブルは、オーナーシップ割り当て情報を格納するよう主に構成されたローカルフローテーブル166とは区別され、それらのテーブルは、別個のデータテーブルとして実装されてよい。別の実施形態において、ローカルフローテーブル166は、フローデータ・フローテーブルの一部として形成される。ローカルフローテーブルの正確な構成は、ローカルフローテーブル166が、識別されたフローのパケットプロセッサオーナーシップ割り当て情報を含む限りは、本発明の実施にとって重要なものではない。
【0036】
本発明の実施形態において、フローのためのオーナーパケットプロセッサ割り当てが、パケット処理カードの識別情報およびカード上のパケットプロセッサの識別情報を用いて、フロー識別子(すなわち「フローID」)内にエンコードされる。
図2を参照すると、セキュリティデバイス102において、各パケット処理カードは、パケット処理カード0に対してslot#0、パケット処理カード1に対してslot#1、および、パケット処理カード2に対してslot#2など、スロット番号(slot#)で識別される。各パケット処理カードにおいて、パケットプロセッサは、パケットプロセッサ0に対してPP0およびパケットプロセッサ1に対してPP1など、プロセッサ番号によって識別される。スロット番号およびパケットプロセッサ番号は、セキュリティデバイス102内の複数のパケットプロセッサの1つを一意的に識別するために用いられる。
【0037】
図4は、本発明の一実施形態に従ったフロー識別子を示す。
図4を参照すると、フロー識別子(FID)185は、セキュリティデバイスを通して送信されているフローを識別するために用いられるグローバル一意値である。フロー識別子185は、オーナーパケットプロセッサを識別するために必要な情報をエンコードする。より具体的には、フロー識別子185は、スロット番号(slot#)のためのデータフィールドと、パケットプロセッサ番号(PP#)のためのデータフィールドと、フローに関連するフローキーを格納するためのフィールドとを備える。フロー識別子185は、さらに、フローの方向(順方向または逆方向)を識別するためのデータフィールド(F/R)を備えてもよい。特に、フローキーは、セキュリティデバイス102において処理または操作されている各フローを一意的に識別する。本発明の実施形態において、フローキーは、少なくともデータパケットのヘッダ内の情報から生成される。いくつかの実施形態において、フローキーは、同じフローに属する受信データパケットを一意的に関連付けるように、受信データパケットの5タプルまたは6タプルの情報から生成される。ここまでに構成されたように、フロー識別子185は、(フローキーによって)フローを識別し、(スロット番号slot#およびパケットプロセッサ番号PP#によって)そのフローを処理するように割り当てられたオーナーパケットプロセッサを識別する。
【0038】
図5は、本発明の実施形態におけるパケット処理マネージャを示す概略図である。
図5を参照すると、パケット処理マネージャ150は、パケット処理マネージャソフトウェア(PPM−SW)モジュール156と通信するパケット処理マネージャハードウェア(PPM−HW)モジュール152を備える。本実施形態において、ソフトウェアモジュール156は、命令がそこで実行されているプロセッサのことである。パケット処理マネージャの主な役割は、セキュリティデバイス全体にわたってフローまたはセッションのオーナーシップを割り当てて分散させることである。動作中、フローとしてマッピングされうるすべてのセッションが、パケットプロセッサ割り当てのためにパケット処理マネージャに送信される。そのフローのためにセキュリティデバイスに到着する後続のパケットは、パケット処理マネージャを用いて、処理のためにどのパケットプロセッサにパケットを送信するのかを知ることができる。
【0039】
パケット処理マネージャ150内で、パケット処理マネージャハードウェアモジュール152は、セキュリティデバイスで処理されているフローをパケット処理カード上のパケットプロセッサに対応付けるオーナーシップ割り当て情報を含むグローバルフローテーブル154を維持するように動作する。パケット処理マネージャソフトウェアモジュール156の主な機能は、新しいセッションのオーナーパケットプロセッサ(PP)を選択するために用いられるオーナー割り当てポリシーを実施することである。オーナー割り当てポリシーに基づいて、ソフトウェアモジュール156は、負荷バランシングに基づいてオーナーパケットプロセッサを選択してもよいし、オーナーをランダムに選択してもよいし、イングレスカード内のパケットプロセッサを選択してもよいし、その他の要因で選択してもよい。パケット処理マネージャハードウェアモジュール152の顕著な特徴は、オーナーパケットプロセッサ割り当てが高速の動作を達成できるように、ハードウェアモジュールがフロー管理メッセージ処理の大部分をソフトウェアモジュールからオフロードすることである。
【0040】
パケット処理マネージャハードウェアモジュール152は、PPM−SWモジュール156と通信するためのネットワークインターフェース192を備える。特に、ネットワークインターフェース192は、パケット処理マネージャソフトウェアモジュール156が実行されるプロセッサに接続する。PPM−HWモジュール152は、さらに、ハードウェアモジュールをスイッチングファブリック180に接続するトラフィックマネージャインターフェース(TMI)194を備える。PPM−HWモジュール152の中心機能は、グローバルフローテーブル(GFT)154を維持することである。そのために、PPM−HWモジュール152は、グローバルフローテーブル154にアクセスするためのフロールックアップエンジン196を備える。最後に、PPM−HWモジュール152は、PPM−SWモジュール156からの入力メッセージならびにスイッチングファブリックを通したパケット処理カード/処理リソースカードからの入力メッセージを処理すると共に、それらへのメッセージを生成するためのメッセージプロセッサ190を備える。メッセージプロセッサ190は、フロールックアップエンジン196への要求を生成し、フロールックアップエンジンから応答を受信する。
【0041】
本発明の実施形態において、パケット処理マネージャハードウェアモジュール152は、さらに、フロー予測処理を容易にするために予測フローテーブル200を備える。フロー予測処理は、同じオーナーパケットプロセッサが、関係するセッションに関連するフローを処理するよう割り当てられるように、関係する接続セッションのマッチングを容易にするために、パケット処理マネージャ150で用いられる。予測フローテーブルの動作は、後に詳述する。本発明の実施形態において、パケット処理マネージャハードウェアモジュール152は、さらに、デバイス内のすべてのパケットプロセッサにわたってイベント統計を追跡するために、1セットのグローバルイベントカウンタ300を備える。グローバルイベントカウンタ300は、カウンタメモリ310と通信する。パケット処理マネージャ150は、分散型システム内のすべてのパケット処理カードにわたるイベントのグローバルカウンタ合計を維持するためのイベントカウンタ集計方法を実施する。イベントカウンタ集計方法については、後に詳述する。予測フローテーブル、グローバルイベントカウンタ、および、カウンタメモリは、パケット処理マネージャハードウェアモジュールの任意選択的な要素であり、本発明の他の実施形態では省略されてもよい。
【0042】
PPM−HWモジュール152内のグローバルフローテーブル154は、セキュリティデバイス内のすべてのアクティブフローのマッピングを保持する。より具体的には、グローバルフローテーブル154は、各フローのオーナーパケットプロセッサを特定するフロー識別子をそのフローに割り当てたマッピングを格納する。フロー識別子の一例は、
図4に示されており、すでに上述されている。この例において、フローは、フローキーによって識別され、オーナーパケットプロセッサは、それが位置するパケット処理カードのスロット番号およびそのカード上のパケットプロセッサのパケットプロセッサ番号によって識別される。いくつかの実施形態において、グローバルフローテーブル154は、さらに、マッピングを認識しているセキュリティデバイス内のすべてのパケット処理カードを追跡する認識マスクを格納する。認識マスクは、セッションがティアダウン(分解)される時にパケット処理カードのローカルフローテーブルからフローを削除するために、後に用いられる。
【0043】
一実施形態において、グローバルフローテーブルは、固定サイズのバケットを備えたハッシュテーブルとして実装される。本発明の実施形態において、グローバルフローテーブルは、各エントリが、フローキー情報、フロー識別子(フローID)、および、関連GFT属性を含むGFTエントリを含む。フローキー情報は、ソースIPアドレス、宛先IPアドレス、ソースポート数、宛先ポート数、および、利用プロトコルを含むデータパケットの5タプルの情報から決定される。いくつかの例において、フローキー情報は、さらに、パケットタイプ、ゾーン識別子、または、利用されているインターフェースを含んでもよい。フローキーは、ハッシュ関数をフローキー情報に適用することによって生成される。フロー識別子は、フローキー情報のハッシュ値であるフローキーと、パケット処理カードの識別情報およびカード上のパケットプロセッサの識別情報であるフローのオーナーシップ割り当て情報とを用いて形成される。いくつかの実施形態において、GFT属性は、以下のフィールドの1以上を含む:エントリがバインドされた(bound)か否かを示す「バインド済み(bound)」フィールド、フローエントリが更新された時を記録する「タイムスタンプ(timestamp)」フィールド、イベントカウンタ識別子、および、「認識マスク(aware mask)」フィールド。認識マスクは、このフローを認識したセキュリティデバイス内のパケット処理カードすべてを追跡する。いくつかの実施形態において、GFT属性は、エントリが作成される時にエントリが予測テーブルエントリと一致したか否かを示すための用いられる予測フラグ値を格納する予測フィールドを備える。本発明のフロー予測方法での予測フィールドの利用については、後に詳述する。予測フィールドは、任意選択的であり、フロー予測処理が利用されない場合に省略されてもよい。
【0044】
動作中、各GFTエントリは、以下の状態の1つでありうる:無効(invalid)、仮(tentative)、および、バインド済み(bound)。無効であるGFTエントリとは、そのエントリを新たなエントリ割り当てに利用できることを意味する。GFTエントリが、新しいフローまたは以前には未知であったフローに属するデータパケットの受信後に作成された時、そのエントリは、仮エントリである。仮GFTエントリは、仮フロー識別子を含む。仮フロー識別子は、適切なオーナーパケットプロセッサを選択するためにPPM−SWモジュールに渡される。同じフローキーを有する任意の後続のデータパケットは、同じ仮フロー識別子が用いられるように、仮エントリと一致する。仮GFTエントリは、オーナーパケットプロセッサがオーナーシップ割り当てを受け入れて、パケット処理マネージャにメッセージを送信した時に、バインド済みGFTエントリに移行してよい。GFTエントリがバインドされると、同じセッションに属するフローが同じオーナーパケットプロセッサに割り当てられることを保証するために、セッションの順方向および逆方向のフローが、GFTに追加されてよい。GFT属性のバインド済みデータフィールドは、GFTエントリがバインドされたことを示すように更新される。
【0045】
本発明のフローオーナー割り当て方法の特徴は、パケット処理マネージャがセキュリティデバイスで受信した新しい各セッションのGFTエントリでグローバルフローテーブルを満たす間に、各パケット処理カードのローカルフローテーブルにデータトラフィックが追加され、ローカルフローテーブル内のオーナー割り当てエントリを更新するために追加の工程が必要ないことである。各パケット処理カード内のローカルフローテーブルは、グローバルフローテーブルのエントリの一部、および、受信されたデータトラフィックに基づいて必要とされるエントリのみを格納する。このように、各パケット処理カード内のローカルフローテーブルは、グローバルフローテーブル内の全エントリを複製する必要がない。
【0046】
図6は、本発明の一実施形態に従ってフローオーナーシップ割り当て方法を示すフローチャートである。本発明の実施形態において、フローオーナーシップ割り当て方法400は、複数のパケット処理カードとパケット処理マネージャとを備える
図2のセキュリティデバイス102で実施されてよい。
図6を参照すると、工程402で、パケット処理カードの1つ(PPCn)が、入力データパケットを受信する。パケット処理カードPPCnは、そのローカルフローテーブルにおいてフロールックアップを実行する(工程404)。データパケットが新しいセッションに属する場合、ローカルフローテーブル内で一致するフローは見つからない。フローがローカルフローテーブル内で見つからない場合、パケットは、パケット処理マネージャに転送され、パケット処理マネージャは、グローバルフローテーブルにおいてフロールックアップを実行する(工程406)。フローがグローバルフローテーブル内で見つからない場合、パケット処理マネージャは、オーナーパケットプロセッサを割り当て、グローバルフローテーブルにフローエントリを追加する(工程408)。次いで、パケット処理マネージャは、割り当てられたオーナーパケットプロセッサに「オーナー」メッセージを送信する(工程410)。割り当てられたオーナーパケットプロセッサがオーナー割り当てを受け入れることができる場合、そのオーナーパケットプロセッサは、「セッションバインド」メッセージをパケット処理マネージャに送り返す(工程412)。セッションバインドメッセージの受信後、パケット処理マネージャは、グローバルフローテーブル内のフローエントリをバインドする(工程414)。一実施形態において、オーナーパケットプロセッサは、順方向フローおよび逆方向フローの情報をパケット処理マネージャに提供する。その場合、パケット処理マネージャは、グローバルフローテーブル内に逆方向フローエントリを作成し、グローバルフローテーブル内の順方向フローおよび逆方向フローのエントリ両方をバインドする。最後に、オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する(工程416)。
【0047】
図7は、本発明の別の実施形態に従ってフローオーナーシップ割り当て方法を示すフローチャートである。本発明の実施形態において、フローオーナーシップ割り当て方法500は、複数のパケット処理カードとパケット処理マネージャとを備える
図2のセキュリティデバイス102で実施されてよい。
図7を参照すると、工程502で、パケット処理カードの1つ(PPCn)が、入力データパケットを受信する。パケット処理カードPPCnは、そのローカルフローテーブルにおいてフロールックアップを実行する(工程504)。データパケットが新しいセッションに属する場合、ローカルフローテーブル内で一致するフローは見つからない。フローがローカルフローテーブル内で見つからない場合、データパケットを受信したパケットプロセッサカードPPCnは、データパケットと共に「フロー未知(Flow Unknown)」メッセージをパケット処理マネージャに送信する(工程506)。
【0048】
パケット処理マネージャは、グローバルフローテーブル(508)においてフロールックアップを実行する(工程508)。フローがグローバルフローテーブル内で見つからない場合、パケット処理マネージャは、オーナーパケットプロセッサを新しいフローに割り当てる(工程510)。一実施形態において、オーナーパケットプロセッサの割り当ては、パケット処理マネージャのソフトウェアモジュールによって実行される。ソフトウェアモジュールは、特定のパケット処理カード上の特定のパケットプロセッサが新しいフローのためのセッションのオーナーになるべきであると決定するためのポリシーを適用する。例えば、パケット処理カードPPCm上のパケットプロセッサPPmが、フローのオーナーになるように割り当てられるとする。ソフトウェアモジュールがオーナーシップ割り当てを返すと、パケット処理マネージャのハードウェアモジュールは、スロット番号およびパケットプロセッサ番号などのオーナーパケットプロセッサ識別情報と共に、フローのフロー識別子をエンコードする。次いで、パケット処理マネージャのハードウェアモジュールは、グローバルフローテーブルにフローエントリを追加する。このように追加されたGFTフローエントリは、仮の状態に置かれる。こうして仮GFTフローエントリが作成され、オーナーシップ割り当てがバインド中になる前に同じフローの第2のデータパケットが到着した場合、第2のデータパケットは、同じ仮GFTフローエントリにインデックス付けされ、同じオーナーに割り当てられる。
【0049】
次いで、パケット処理マネージャは、割り当てられたオーナーパケットプロセッサに、データパケットと共に「オーナー(Owner)」メッセージを送信する(工程512)。オーナーパケットプロセッサは、オーナーメッセージを処理し、逆方向フローを決定する(工程514)。割り当てられたオーナーパケットプロセッサは、さらに、フローのオーナーシップを受け入れることができるか否かを決定する(工程516)。割り当てられたオーナーパケットプロセッサは、フローのオーナーシップを受け入れることができるか否かを決定するために、負荷またはメモリスペースなどの要素を考慮してよい。受け入れられない場合、割り当てられたオーナーパケットプロセッサは、オーナーシップ割り当てを拒否する旨の確認メッセージをパケット処理マネージャに送信し、方法500は工程510に戻り、そこで、パケット処理マネージャが別のパケットプロセッサへの割り当てを決定する。割り当てられたオーナーパケットプロセッサがオーナー割り当てを受け入れる場合、そのオーナーパケットプロセッサは、逆方向フローを決定し、ローカルセッション状態を作成する。次いで、オーナーパケットプロセッサは、データパケットそして順方向フローおよび逆方向フローの情報と共に「セッションバインド(Session Bind)」メッセージをパケット処理マネージャに送信する(工程518)。
【0050】
セッションバインドメッセージの受信後、パケット処理マネージャは、データパケットに対するフローをルックアップし、グローバルフローテーブル内に、順方向フローおよび逆方向フローのエントリの更新など、フロー情報をロードする(工程520)。次いで、パケット処理マネージャは、グローバルフローテーブル内のフローエントリをバインドする。次いで、パケット処理マネージャは、データパケットと共に「セッションバインド確認(Session Bind Acknowledgement)」メッセージをオーナーパケットプロセッサに送信する(工程522)。最後に、オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する(工程524)。
【0051】
本発明の実施形態において、オーナーパケットプロセッサは、セッションバインドメッセージをパケット処理マネージャに送信する時、その負荷条件をメッセージに付加する。このように、パケット処理マネージャは、パケットプロセッサの各々における負荷に関する情報を収集し、PPM−SWモジュールは、フローのオーナーを選択する際に負荷情報を利用してよい。
【0052】
上述のように、新しいフローオーナーシップ割り当てが行われた時、グローバルフローテーブルのみが、フロー割り当て情報で更新される。セキュリティデバイス内のその他のパケット処理カード(オーナーパケット処理カードなど)は、自身のローカルフローテーブル内にフローエントリをまだ持っていない。ローカルフローテーブルは、データパケットがセキュリティデバイスに到着すると埋められる。このように、ローカルフローテーブルの更新は、専用の処理を必要とせず、むしろ、ローカルフローテーブルは、データトラフィックに基づいてオンデマンドで更新される。ローカルフローテーブルを埋める方法およびその後の処理が、
図7Aに示されている。
【0053】
例えば、工程502に戻ると、同じフローに属する別のデータパケットが、新しいフローの最初のデータパケットを以前に受信したのと同じパケット処理カードであっても異なるパケット処理カードであってもよいパケット処理カード(PPCnなど)に到着する。例えば、第2のデータパケットは、最初のデータパケットに対する確認データパケットであってよく、オーナーパケットプロセッサに到着する。オーナーパケットプロセッサのパケット処理カードのローカルフローテーブルは、まだ埋められていないので、フローは、ローカルフローテーブルでは見つからない(工程504)。次いで、パケット処理カードは、データパケットと共にフロー未知メッセージをパケット処理マネージャに送信する(工程506)。パケット処理マネージャは、グローバルフローテーブル内を調べて、データパケットに関連するフローを見つける(工程508)。次いで、方法500は「A」(
図7A)に続き、そこで、パケット処理マネージャは、フローエントリの認識マスクを更新し、データパケットを送信するパケット処理カードPPCnに「フロー追加(Flow Add)」メッセージを送信する(工程530)。パケット処理カードPPCnは、パケット処理マネージャからフロー追加メッセージを受信し、自身のローカルフローテーブルにフローエントリを追加する(工程532)。このように、パケット処理カードPPCnのローカルフローテーブルは、フローオーナーシップ割り当て情報で更新される。一方で、パケット処理マネージャは、そのフローのオーナーパケットプロセッサにデータパケットを転送する(工程534)。オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する(工程536)。
【0054】
ここで、同じフローに属する別のデータパケットが、同じパケット処理カードPPCnに到着した時(
図7の工程502)、パケット処理カードPPCnは、ローカルフローテーブルでフローを見いだし(工程504)、方法500は「B」(
図7A)に続く。パケット処理カードPPCnは、ローカルフローテーブルに格納されたフロー情報に基づいて、データパケットのオーナーパケットプロセッサを知る。次いで、パケット処理カードPPCnは、データパケットをオーナーパケットプロセッサに直接転送する(工程540)。データパケットは、パケット処理マネージャに再び向かう必要はない。オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する(工程542)。
【0055】
方法は、工程530から536までを、グローバルフローテーブルで識別されているがローカルフローテーブルではまだ識別されていないフローに属するデータパケットを受信した各パケット処理カードに対して繰り返す。各データパケットは、同じパケット処理カードに到着する同じフローの後続のデータパケットが、パケット処理マネージャに向かう必要なしに、パケット処理カードのローカルフローテーブルで識別されるように、フローエントリでローカルフローテーブルを更新させる。
【0056】
したがって、フローオーナーシップ割り当て方法500(
図7および
図7A)は、セキュリティデバイスにわたってパケットプロセッサにフローのオーナーシップを割り当てるよう動作する。いくつかの実施形態において、パケット処理マネージャは、処理リソースカード上のパケットプロセッサにフローオーナーシップを割り当ててよい。処理リソースカード上のパケットプロセッサは、データパケットを処理し、セキュリティデバイスから出すためにパケット処理カードにデータパケットを転送する。
【0057】
接続セッションが終了すると、セキュリティデバイスは、終了した接続セッションに関連する状態を一掃する必要がある。
図8は、本発明の一実施形態に従ってセッションティアダウン方法を示すフローチャートである。本発明の実施形態において、セッションティアダウン方法600は、複数のパケット処理カードとパケット処理マネージャとを備える
図2のセキュリティデバイス102で実施されてよい。
図8を参照すると、工程602で、オーナーパケットプロセッサは、接続セッションが終了して任意のさらなるタイムアウトが失効したことを決定する。したがって、セッションはティアダウンされうる。オーナーパケットプロセッサは、パケット処理マネージャに「セッションティアダウン(Session Teardown)」メッセージを送信する。セッションティアダウンメッセージの受信後、パケット処理マネージャは、グローバルフローテーブルで順方向フローおよび逆方向フローのエントリをルックアップし、フローに関連する認識マスクをリトリーブする(工程604)。パケット処理マネージャは、フローがローカルフローテーブルに追加されたと認識マスクによって特定されたパケット処理カードに、「フロー削除(Flow Delete)」メッセージを送信する(工程606)。フロー削除メッセージを受信した各パケット処理カードPPCnは、フローエントリをルックアップし、終了統計値(closing statistics)を生成する。次いで、パケット処理カードは、ローカルフローテーブルからフローエントリを削除する(工程608)。次いで、各パケット処理カードPPCnは、収集したフロー統計値をオーナーパケットプロセッサに送信する(工程610)。オーナーパケットプロセッサは、パケット処理カードからのフロー統計値を集計し、フロー識別子を無効にする(工程612)。
【0058】
本実施形態において、フローオーナーシップ割り当て方法は、1または複数のパケットプロセッサを各々備えた複数のパケット処理カードと、別個のラインカード上に提供されたパケット処理マネージャとを含むセキュリティデバイスで実施される。別の実施形態において、フローオーナーシップ割り当て方法は、複数のプロセッサを備えた単一のパケット処理カードを含むセキュリティデバイスで実施される。プロセッサの1つが、オーナーシップ割り当てのためのパケット処理マネージャとして割り当てられてよい。その場合、各プロセッサは、ローカルメモリ内にオーナーシップ割り当て情報を保持してよい。
【0060】
データネットワークにおいて、特定のデータトラフィックタイプが、複数のセッションを含み、「親」セッションが、後続の「子」セッションを設定するために必要な状態を交換してよい。FTP(ファイル転送プロトコル)は、制御セッションが後続のデータ接続を開くのに必要な情報を交換する一例である。ボイスオーバーIPは、接続が制御セッションおよびデータセッションを含む別の例である。効果的なセキュリティポリシーを実施し、脅威に適格にアクセスするには、親セッションおよび子セッションが、同じオーナーパケットプロセッサによって処理されることが好ましい。このように、オーナーパケットプロセッサは、効果的なセキュリティポリシー実施のために親セッションおよび子セッションの間で状態を相互に関連付けることができる。
【0061】
本発明の実施形態において、パケット処理マネージャは、子セッションを予測するために、親セッションのステートフルデコーディングを実行する。本発明の実施形態において、パケット処理マネージャは、予測フローエントリを格納するよう構成された予測フローテーブル200(
図5)を備える。子セッションが予測される時、しばしば、完全なフルエントリがグローバルフローテーブルでなされるのに十分なほど詳細にセッションを予測することができない。例えば、パケット処理マネージャは、IPアドレスから宛先ポートを特定できうるが、ソースポートは未知である場合がある。したがって、1または複数のデータフィールドの値が未知である予測フローエントリが、予測フローテーブル200内に作成される。本発明の実施形態において、値が未知であることを示すために、ワイルドカードがフロー識別子のデータフィールドで用いられる。一実施形態において、ワイルドカードデータフィールドは、データフィールドの正確な値が未知であることを示すために、ゼロの値を有する。
【0062】
図9は、本発明の一実施形態における予測フローテーブルを示す。
図9を参照すると、予測フローテーブル200は、親フロー識別子に対する予測キーの対応付けを含む。例えば、エントリ204、206、208、および、210が
図9に示されている。予測キーは、ソースアドレス(SA)、宛先アドレス(DA)、ソースポート(SP)、および、宛先ポート(DP)を含んでよい。親フロー識別子は、親フローのフローキーと、その親フローのオーナーパケットプロセッサのスロット番号(Slot#)およびパケットプロセッサ番号(PP#)とを含む。ワイルドカードが、子セッションを予測フローにマッチングすることを可能にするために、予測キー内のデータフィールドの1または複数で用いられてよい。例えば、エントリ206では、ソースポートフィールドがワイルドカードであり、エントリ210では、ソースアドレスがワイルドカードである。一実施形態において、予測キーは、フローの5タプルの情報を含み、5タプルの情報の1または複数のフィールドがワイルドカード値を有しうる。
【0063】
図10は、本発明の一実施形態に従ってフロー予測方法を示すフローチャートである。本発明の実施形態において、フロー予測方法700は、複数のパケット処理カードとパケット処理マネージャとを備える
図2のセキュリティデバイス102で実施されてよい。
図10を参照すると、パケット処理カードPPCnが、決定される子セッションを持つ親セッションを示す接続セッションのデータパケットを受信する(工程702)。パケット処理カードPPCnは、データパケットと共に「予測追加(Predict Add)」メッセージをパケット処理マネージャに送信する(工程704)。予測追加メッセージの受信後、パケット処理マネージャは、親フロー識別子と予測キーのフィールド内のワイルドカードとを用いて、予測フローテーブルに予測フローエントリを追加する(工程706)。
【0064】
その後、子セッションに属するデータパケットが受信されると、そのデータパケットは、フローがまだグローバルフローテーブルにおいてもローカルフローテーブルのいずれにおいても確立されていないため、フロー未知メッセージと共にパケット処理マネージャに転送される。パケット処理マネージャは、フロー未知メッセージの受信後、グローバルフローテーブル内でフローをルックアップする(工程708)。データパケットがグローバルフローテーブル内のどのフローエントリとも一致しない場合、パケット処理マネージャは、予測フローテーブル内でフローをルックアップする(工程710)。いくつかの実施形態において、グローバルフローテーブルおよび予測フローテーブルのテーブルルックアップは、同時に実行されてもよい。予測一致が予測フローテーブルで見いだされない場合(工程712)、予測処理は終了し(工程714)、パケット処理マネージャは、データパケットのオーナーパケットプロセッサを割り当てるための通常の処理に戻る。
【0065】
しかしながら、予測一致が予測フローテーブルで見いだされた場合(工程712)、パケット処理マネージャは、親フロー識別子を用いてグローバルフローテーブルに仮フローエントリを追加する(工程716)。本発明の実施形態において、グローバルフローテーブルは、さらに、エントリが予測テーブルエントリと一致したことを示す予測フラグを含む。予測一致の結果としての仮フローエントリに対して、エントリ内に予測フラグが設定される。グローバルフローテーブルにおいて、親セッションのオーナーパケットプロセッサは、子セッションのオーナーパケットプロセッサとして自動的に割り当てられる。オーナー割り当て処理を実行する必要はない。パケット処理マネージャは、データパケットと共に新しいフロー(子セッション)のためのオーナーメッセージをオーナーパケットプロセッサに送信する(工程718)。オーナーメッセージは、これが予測一致であることを示すために予測フラグセットと共に送信される。
【0066】
オーナーパケットプロセッサは、新しいフローが、予測された親−子セッションに属することを検証する(工程720)。新しいフローが検証されると、オーナーパケットプロセッサは、セッションバインドメッセージをパケット処理マネージャに送信する(工程722)。パケット処理マネージャは、グローバルフローテーブルに順方向フローおよび逆方向フローを追加し、すでに解決済みのセッションのフローエントリをバインドする。次いで、オーナーパケットプロセッサは、データパケットを処理し、セキュリティポリシーを適用する(工程724)。このように、親−子の関係を有するセッションが、同じオーナーパケットプロセッサに割り当てられることで、それらは、それに応じてポリシングされる。
【0067】
本発明の実施形態において、予測フローテーブル200は、コンテントアドレッサブルメモリ(CAM)を用いて実装される。特に、一実施形態において、予測フローテーブル200は、格納されたデータワード内の1または複数のビットに「ドントケア」すなわちワイルドカードのマッチング状態を可能にするターナリCAMすなわちTCAMとして実装される。別の実施形態において、予測フローテーブルおよびグローバルフローテーブルは、同じメモリデバイスの別個の論理コンポーネントとして形成される。
【0068】
さらに、本発明の実施形態において、予測フローエントリは、子セッションが一致すると削除される。ほとんどの場合、予測フローエントリは、子セッションが通常、親セッションから非常に短い時間枠内に作成されるので、存続期間が短い。
【0070】
分散型システムとして実装されたセキュリティデバイスにおいて、セキュリティデバイスは、協調的なセキュリティポリシーを実施するために、システム内のすべてのパケットプロセッサにわたってイベントを追跡する必要がある。本発明の実施形態において、セキュリティデバイスは、独立型処理リソースおよび分散型処理リソースの間のメッセージを管理するためのハードウェアオフロードエンジンを用いて、分散型システムにおいてイベント統計を効果的に維持する。本発明の実施形態において、セキュリティデバイスは、所与の閾値を超えたイベントカウントを監視するために、マルチキャストプッシュ通知スキームを実装する。ハードウェアオフロードエンジンおよびマルチキャストプッシュ通知スキームは、イベント統計管理のためのソフトウェアオーバーヘッドを低減する。
【0071】
図5に戻ると、分散型システムにわたってイベント統計の協調を容易にするために、パケット処理マネージャは、カウンタメモリ310と通信する1セットのグローバルイベントカウンタ300を備えるように実装される。グローバルイベントカウンタ300は、ソフトウェアによって構成できる多数のカウンタを提供し、各カウンタはグローバルカウンタ識別子によって識別される。一旦構成されると、セキュリティデバイス内の任意のパケットプロセッサは、1または複数のイベントのカウンタ値をインクリメント、デクリメント、または、単にクエリするために、パケット処理マネージャにメッセージを送信できる。さらに、イベントカウンタは、閾値を備えるように構成されてよく、カウンタ値の合計がそれに対応する閾値を超えた場合、パケット処理マネージャは、イベントのカウンタ値を提供している一群のパケット処理カードへメッセージを送信させる。
【0072】
一実施形態において、パケット処理マネージャは、スイッチングファブリックを介したパケットプロセッサカードとの通信に基づいてメッセージを実施するためにメッセージプロセッサ190を備える。メッセージプロセッサ190は、ユニキャストおよびマルチキャスト両方のメッセージ交換が可能である。後に詳述するように、メッセージプロセッサ190は、イベントカウンタの状態に応じて、パケット処理カードへのマルチキャストプッシュ通知を行う。
【0073】
図11は、本発明の実施形態におけるグローバルイベントカウンタ300の構成を示す。
図11を参照すると、パケット処理マネージャによって維持される1セットのグローバルイベントカウンタは、アキュムレータとも呼ばれる積算カウンタ850を備える。アキュムレータ850は、セキュリティデバイス内のすべてのパケットプロセッサにわたってイベントを合計して、カウンタ閾値が満たされたことを示すグローバルインディケーションを提示するために用いられる。イベントの各アキュムレータは、カウンタ識別子(カウンタID)によって識別され、グローバル閾値およびグローバルカウンタ合計に関連する。いくつかの実施形態において、グローバル閾値は、高閾値および低閾値を含む。アキュムレータ850は、セキュリティデバイスによって処理されるイベントのための多数のイベントカウンタを格納できるテーブルである。
【0074】
分散型システムにおいて、パケットプロセッサにわたってイベントカウントを合計する時(イベントカウンタメッセージが消失した時、または、パケットプロセッサが再起動した時など)に、積算誤差が発生しうる。積算誤差を避けるために、パケット処理マネージャは、カウント値を報告する各パケットプロセッサの各イベントカウンタのローカル値を格納するために、
図5のカウンタメモリ310を維持する。カウンタメモリ310に格納されたイベントカウンタのローカル値は、イベントカウンタのインスタンスまたはアキュムレータインスタンスカウンタ(AIC)と呼ばれる。
図11は、アキュムレータインスタンスカウンタの3つの例870a〜cである。AIC870aは、イベント1のローカルカウンタ値を格納し、AIC870bは、イベント2のローカルカウンタ値を格納し、AIC870cは、イベント3のローカルカウンタ値を格納する。ローカルカウンタ値の合計は、各イベントに対応するグローバルイベントカウンタに格納されたカウンタ合計値である。
【0075】
ここまでで構成されたように、各パケットプロセッサは、イベントカウンタメッセージを用いて、インクリメント値の代わりにイベントカウンタの現在の値を送信する。パケット処理マネージャは、パケットプロセッサによって送信された現在のカウンタ値を処理し、イベントについてのパケットプロセッサの更新済みの現在の値をそれぞれのAICに格納する。したがって、カウント誤差につながりうるあらゆるエラー(メッセージ消失またはパケットプロセッサ再起動など)は、単に一時的なものであり、カウンタ合計は、パケットプロセッサが正しい現在のカウンタ値と共に次の更新済みの現在のカウンタ値を送信した時に、自己修正する。
【0076】
パケット処理マネージャによって維持される1セットのグローバルイベントカウンタは、さらに、レートカウンタ860を備える。レートカウンタ860は、設定時間枠の間のイベント発生回数を追跡する。イベントの各レートカウンタは、カウンタ識別子(カウンタID)によって識別され、グローバル閾値、グローバル最大値、および、グローバルフィルレートに関連する。レートカウンタ860は、セキュリティデバイスによって処理されるイベントのための多数のイベントカウンタを格納できるテーブルとして形成される。本発明の実施形態において、レートカウンタ860は、トークンバケットとして実装される。したがって、各イベントカウンタのためのレートカウンタは、バケットに納まるトークンの最大数と、1秒あたりのトークンのフィルレートとを指定する。
【0077】
動作中、イベントクエリが、1または複数のトークンを取得しようとするパケットプロセッサによって送信される。クエリが成功すると、パケットプロセッサは、イベントが適合状態で発生していると仮定することができる。フィルレートが閾値を超えた場合、イベントクエリは、イベントが不適合であることを示す否定応答を受信する。
【0078】
図12は、パケットプロセッサによってパケット処理マネージャに送信されうるイベントカウンタメッセージの一例を示す。
図12を参照すると、イベントカウンタメッセージ900は、メッセージが意図するイベントカウンタを識別するためのイベントカウンタ識別子(カウンタID)を含む。メッセージ900は、さらに、そのイベントのカウント値を現在記録しているパケットプロセッサのグループを示すためのグループ識別子を含む。メッセージは、さらに、そのイベントの合計ローカルカウンタ値であるカウント値を含む。
【0079】
パケットプロセッサは、以下のタスクを実行するために、イベントカウンタメッセージ900をパケット処理マネージャに送信する:(1)イベントカウンタ(アキュムレータまたはイベントレートカウンタ)を割り当てて、カウンタ識別子を返す;(2)設定、インクリメント、または、デクリメント動作により、指定のイベントカウンタを更新する;(3)カウント識別子を提供することによってイベントカウンタを解放する。
【0080】
一実施形態において、複数のソースからのイベントカウント値を集計する時に積算誤差を避けるために、各パケットプロセッサは、その合計ローカルカウンタ値を報告し、Setコマンドを用いる。パケット処理マネージャは、それぞれのAICに格納された以前のローカルカウンタ値を最初に減算し、次いで、メッセージ内に提供された現在のローカルカウンタ値を加算することによって、グローバルカウンタ合計を更新する。このように、合計ローカルカウンタ値の誤差はいずれも、一時的なものにすぎず、次のカウンタ値更新で修正される。
【0081】
本発明の実施形態において、各イベントカウンタメッセージは、パケットプロセッサがセッションを作成する前にすべてのイベントが適合することを保証するために1つのメッセージを送信できるように、複数のイベントカウンタを操作するよう構成されてよい。
【0082】
本発明の実施形態において、セキュリティデバイス内の各パケット処理カードは、カード上のパケットプロセッサが連続的にカウント値更新を送信する必要がないように、維持しているイベントカウンタのローカルカウンタ値を格納する。
図13は、本発明の別の実施形態におけるパケット処理カードを示す概略図である。
図13のパケット処理カードは、
図3のパケット処理カード160と同様に構築されており、同じ要素には同じ符号が与えられ、さらなる説明は省略されている。
図13を参照すると、パケット処理カード800は、パケット処理カードによって処理されるフローのイベント統計を維持するための統計エンジン810を備える。統計エンジン810は、ローカルカウンタメモリ820と通信する。ローカルカウンタメモリ820は、パケット処理カードが処理しているフローに関連するイベントカウンタのローカル値を格納する。
【0083】
本発明の実施形態において、ローカルカウンタメモリは、各イベントカウンタのローカルカウンタ値と、ローカル閾値とを格納する。イベントのローカルカウンタ値がローカル閾値に達すると、統計エンジン810は、グローバルカウント合計を更新するために、イベントカウンタメッセージをパケット処理マネージャに送信する。このように、統計エンジン810は、グローバルカウンタ合計を定期的に更新するだけでよく、イベントカウンタメッセージによるセキュリティデバイス内の待ち時間が最小限に抑えられる。一実施形態において、ローカル閾値は、同じイベントを処理するパケット処理カードすべてにおいてイベントのローカル閾値を超えた場合でもそのイベントのグローバルカウンタ合計がポリシー実施限界の合計よりも低くなるように選択される。
【0085】
本発明の実施形態において、パケット処理マネージャは、イベントカウンタがグローバル閾値を超えた時にパケットプロセッサに通知するために、マルチキャストプッシュ通知スキームを実装する。上述のように、グローバルイベントカウンタ内のイベントカウンタ(アキュムレータ850またはレートカウンタ860など)は、グローバル閾値に関連する。グローバルカウンタ合計がグローバル閾値を超えると、パケット処理マネージャは、対象となるパケットプロセッサにマルチキャスト通知メッセージを送信して、イベントカウンタ識別子と、イベントカウンタが不適合状態になったこととを示す。本発明の実施形態において、対象となるパケットプロセッサは、イベントカウンタの統計を追跡しているパケットプロセッサのグループに属することを、イベントカウントメッセージ内のグループ識別子によって特定されたパケットプロセッサである。
【0086】
各パケットプロセッサは、マルチキャスト通知メッセージの受信後、イベントカウントのローカル状態を不適合状態に移行させる。イベントカウンタが適合状態にある時、パケットプロセッサのグループのためのカウンタ値更新メッセージは、非同期的に送信され、各パケットプロセッサは、カウント値がローカル閾値に達した時にカウント値を報告する。また、パケットプロセッサは、パケット処理マネージャまたはその他の管理プロセッサとのやり取りなしに、独立して新しい接続セッションを作成してよい。
【0087】
しかしながら、イベントカウンタが不適合状態である時、パケットプロセッサは、グローバルカウンタ合計をパケット処理マネージャにクエリする必要がある。各パケットプロセッサは、イベント状態に基づく決定を進める前に、そのクエリへの応答を待つ必要がある。さらに、パケットプロセッサは、より頻繁にローカルカウンタ値をパケット処理マネージャに報告する。
【0088】
パケットプロセッサがグローバルカウント合計のクエリを行うと、そのイベントカウンタのグローバルカウント合計は、閾値未満に低下し、再び適合状態になりうる。これが起きると、パケット処理マネージャは、対象となるパケットプロセッサにマルチキャストメッセージを送信して、イベントカウンタが現在適合状態にあり、パケットプロセッサが非同期の動作モードに戻れることを知らせる。
【0089】
一実施形態において、グローバル閾値は、高閾値および低閾値を含む。グローバルカウンタ合計が高閾値を超えると、イベントカウンタは、不適合状態になる。 グローバルカウンタ合計が高閾値を超えると、イベントカウンタが適合状態に戻れるようになるには、グローバルカウンタ合計が低閾値よりも低下する必要がある。高閾値および低閾値によって提供されるヒステリシスは、イベントカウンタが適合状態と不適合状態との間でチャタリングしないことを保証する。
【0091】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが:1または複数のネットワークフローに関連する入力データパケットを受信するよう構成された1または複数のパケットプロセッサであって、パケットプロセッサの少なくとも1つは、1または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理するパケットプロセッサと;1または複数のパケットプロセッサにネットワークフローのオーナーシップを割り当てるよう構成されたパケット処理マネージャであって、パケット処理マネージャは、ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付けるグローバルフローテーブルエントリを含むグローバルフローテーブルと、予測ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付ける予測フローエントリを含む予測フローテーブルとを備え;各予測フローエントリは、予測キーと、関連パケットプロセッサオーナーシップ割り当てとを含み、予測キーは、複数のデータフィールドを含み、データフィールドの内の1または複数の値が未知である予測ネットワークフローを識別する。
【0092】
いくつかの実施形態において、親フローに関連するデータパケットがパケットプロセッサによって受信された時に、予測フローエントリが予測フローテーブルに追加され、予測フローエントリは、予測キー内のワイルドカード値を用いて、予測ネットワークフローが親フローに対応する子フローであると識別し、予測フローエントリは、親フローのオーナーとして割り当てられたパケットプロセッサに予測ネットワークフローを対応付ける。さらに、いくつかの実施形態において、親フローおよび子フローは、ファイル転送プロトコルセッションまたはボイスオーバーIDセッションを含む。別の実施形態において、親フローは、制御セッションを含み、子フローは、制御セッションに関連するデータセッションを含む。
【0093】
いくつかの実施形態において、パケットプロセッサは、ネットワークフローのエントリがローカルメモリ内で見つからない時、受信したデータパケットをパケット処理マネージャに転送し、パケット処理マネージャは、グローバルフローテーブルおよび予測フローテーブル内でネットワークフローをルックアップし;予測フローテーブル内で一致が見いだされない時、パケット処理マネージャは、予測フローエントリ内のパケットプロセッサオーナーシップ割り当てを用いて、ネットワークフローのエントリをグローバルフローテーブルに追加する。
【0094】
いくつかの実施形態において、セキュリティデバイスは、さらに:1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する1または複数のパケット処理カードと;1または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックと、を備え;1または複数のパケット処理カードは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、ローカルフローテーブルは、パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納する。
【0095】
本発明の実施形態において、1または複数のパケットプロセッサをそれぞれ含みスイッチングファブリックを通して通信する複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法が:パケット処理カードで第1のデータパケットを受信する工程と;予測フローエントリを追加するために、パケット処理マネージャにメッセージを送信する工程と;複数のデータフィールドを有し、データフィールドの内の1または複数の値が未知である予測ネットワークフローを識別する予測キーを用いて、予測フローエントリを予測フローテーブルに追加する工程であって、予測キーは、第1のデータパケットのパケットプロセッサオーナーシップ割り当てに関連する工程と;パケット処理カードで第2のデータパケットを受信する工程と;第2のデータパケットをパケット処理マネージャに転送する工程と;予測フローテーブル内で第2のデータパケットのネットワークフローをルックアップする工程と;第2のデータパケットのネットワークフローが予測フローテーブル内で見つかった時に、パケット処理マネージャのグローバルフローテーブルにエントリを追加する工程であって、グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含み、エントリは、第1のデータパケットのオーナーパケットプロセッサを第2のデータパケットのオーナーパケットプロセッサとして特定する工程と;割り当てられたパケットプロセッサに第2のデータパケットのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャからオーナーパケットプロセッサに送信する工程と;オーナーシップ割り当ての引き受けを示すメッセージをオーナーパケットプロセッサからパケット処理マネージャで受信する工程と;オーナーパケットプロセッサにネットワークフローを対応付けるバインドエントリをグローバルフローテーブルに格納する工程と;オーナーパケットプロセッサで第2のデータパケットを処理する工程とを備える。
【0096】
いくつかの実施形態において、方法は、さらに、予測フローテーブルおよびグローバルフローテーブル内で第2のデータパケットのネットワークフローをルックアップする工程を備える。
【0097】
いくつかの実施形態において、方法は、さらに、予測フローテーブルおよびグローバルフローテーブル内で第2のデータパケットのネットワークフローを同時にルックアップする工程を備える。
【0098】
いくつかの実施形態において、親フローおよび子フローは、ファイル転送プロトコルセッションまたはボイスオーバーIDセッションを含む。別の実施形態において、親フローは、制御セッションを含み、子フローは、制御セッションに関連するデータセッションを含む。
【0099】
いくつかの実施形態において、方法は、さらに:パケット処理カードで第3のデータパケットを受信する工程と;第3のデータパケットに関連するネットワークフローがグローバルフローテーブル内で見つかった時に、第3のデータパケットを受信したパケット処理カードにネットワークフローのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャから受信パケット処理カードに送信する工程と;第3のデータパケットを受信したパケット処理カードのローカルフローテーブルに、オーナーパケットプロセッサにネットワークフローを対応付けるエントリを追加する工程と;パケット処理マネージャからオーナーパケットプロセッサにデータパケットを転送する工程と;オーナーパケットプロセッサでデータパケットを処理する工程と、を備える。
【0101】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが:1または複数のネットワークフローに関連する入力データパケットを受信するよう構成された1または複数のパケットプロセッサであって、パケットプロセッサの少なくとも1つは、1または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理するパケットプロセッサと;ネットワークフローのオーナーシップを1または複数のパケットプロセッサに割り当てるよう構成され、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含むグローバルフローテーブルを備えたパケット処理マネージャとを備え;第1のパケットプロセッサが、ネットワークフローのオーナーとして割り当てられた時に、オーナーシップ割り当てをパケットプロセッサに知らせ、1または複数のパケットプロセッサは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知る。
【0102】
いくつかの実施形態において、パケット処理マネージャは、オーナーシップ割り当てポリシーを適用してネットワークフローのオーナーシップを1または複数のパケットプロセッサに割り当てるソフトウェアモジュールを備える。
【0103】
いくつかの実施形態において、セキュリティデバイスは、さらに:1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する1または複数のパケット処理カードと;1または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックとを備え;1または複数のパケット処理カードは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、ローカルフローテーブルは、パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納する。さらに、いくつかの実施形態において、パケット処理カードは、受信したデータパケットに関連するネットワークフローのエントリがローカルフローテーブル内で見つかった時、受信したデータパケットを処理に向けてオーナーパケットプロセッサに転送する。別の実施形態において、パケットプロセッサは、ネットワークフローのエントリがローカルフローテーブル内で見つからない時、受信したデータパケットをパケット処理マネージャに転送し、パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、受信したデータパケットを転送したパケットプロセッサに、すでになされたオーナーシップ割り当てを知らせるよう構成され、パケットプロセッサは、ローカルフローテーブル内にオーナーシップ割り当て情報を格納する。さらに別の実施形態において、受信された各データパケットは、フロー識別子によって識別されたネットワークフローに関連しており、パケット処理マネージャは、フロー識別子内にフローのオーナーパケットプロセッサ割り当てをエンコードし、オーナーパケットプロセッサは、オーナーパケットプロセッサが位置するパケット処理カードを識別するスロット番号と、パケット処理カード上の1または複数のパケットプロセッサの1つを特定するパケットプロセッサ番号とによって識別される。
【0104】
本発明の実施形態において、1または複数のパケットプロセッサをそれぞれ含みスイッチングファブリックを通して通信する複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法が:パケット処理カードでデータパケットを受信する工程と;ローカルフローテーブル内で、データパケットに関連するネットワークフローをルックアップする工程と;ネットワークフローがローカルフローテーブル内で見つからなかった時、データパケットをパケット処理マネージャに転送する工程と;パケット処理マネージャのグローバルフローテーブル内でネットワークフローをルックアップする工程であって、グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含む工程と;ネットワークフローがグローバルフローテーブル内で見つからなかった時、受信したデータパケットに関連するネットワークフローのオーナーシップを、パケット処理カードの1つの上のパケットプロセッサに割り当てる工程と;割り当てられたパケットプロセッサにオーナーシップ割り当てを知らせるメッセージを、割り当てられたパケットプロセッサにパケット処理マネージャから送信する工程と;オーナーシップ割り当ての引き受けを示すメッセージを、割り当られたパケットプロセッサからパケット処理マネージャで受信する工程であって、割り当てられたパケットプロセッサは、オーナーパケットプロセッサになる工程と;オーナーパケットプロセッサにネットワークフローを対応付けるバインドエントリをグローバルフローテーブルに格納する工程と;オーナーパケットプロセッサでデータパケットを処理する工程とを備える。
【0105】
いくつかの実施形態において、方法は、さらに、オーナーシップ割り当てポリシーに基づいて、パケットプロセッサオーナーシップを割り当てる工程を備える。いくつかの実施形態において、オーナーシップ割り当てポリシーは、1または複数のパケットプロセッサの負荷条件、ランダム選択、または、イングレスパケット処理カードに関連するパケットプロセッサから選択された1または複数の要因を含む。
【0106】
いくつかの実施形態において、方法は、さらに、オーナーパケットプロセッサにネットワークフローを対応付けるエントリをグローバルフローテーブルに追加する工程を備える。いくつかの実施形態において、方法は、さらに、パケット処理マネージャがオーナーシップ割り当ての引き受けを示すメッセージを受信した時、エントリの一時的な状態をバインド状態に変更する工程を備える。
【0107】
いくつかの実施形態において、方法は、さらに、オーナーシップ割り当ての引き受けを示すメッセージを、順方向フローおよび逆方向のフローの情報と共に、割り当てられたパケットプロセッサからパケット処理マネージャで受信する工程を備える。いくつかの実施形態において、方法は、さらに、オーナーパケットプロセッサにネットワークフローを対応付ける順方向フローおよび逆方向フローのためのバインドエントリをグローバルフローテーブルに格納する工程を備える。
【0108】
いくつかの実施形態において、方法は、さらに:ネットワークフローがグローバルフローテーブル内で見つかった時に、データパケットを受信したパケット処理カードにネットワークフローのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャから受信パケット処理カードに送信する工程と;オーナーパケットプロセッサにネットワークフローを対応付けるエントリを、データパケットを受信したパケット処理カードのローカルフローテーブルに追加する工程と;パケット処理マネージャからオーナーパケットプロセッサにデータパケットを転送する工程と;オーナーパケットプロセッサでデータパケットを処理する工程とを備える。いくつかの実施形態において、方法は、さらに、ネットワークフローのオーナーシップ割り当てを知らされた1または複数のパケット処理カードのインディケーション(示唆)をグローバルテーブルに格納する工程を備える。
【0109】
いくつかの実施形態において、方法は、さらに:ネットワークフローが終了した旨のメッセージをパケット処理マネージャで受信する工程と;終了したネットワークフローのオーナーシップ割り当てを知らされた1または複数のパケット処理カードを識別するインディケーションをリトリーブする工程と;それぞれのローカルフローテーブル内の終了したネットワークフローに関連するエントリを削除するために、パケット処理マネージャから識別されたパケット処理カードにメッセージを送信する工程とを備える。いくつかの実施形態において、方法は、さらに、終了したネットワークフローのフロー統計を送信する工程を備える。
【0111】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが:1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケット処理カードは、ローカルカウンタメモリに1または複数のイベントのローカルカウンタ値を格納する1または複数のパケット処理カードと;セキュリティデバイス内の1または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、グローバルイベントカウンタは、カウンタメモリと通信し、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャとを備え;パケット処理マネージャは、イベントを報告する各パケットプロセッサのイベントのローカルカウンタ値のコピーをカウンタメモリに格納し、グローバルイベントカウンタが、ローカルカウンタメモリ内のローカルカウンタ値のコピーを合計することによってイベントのグローバルカウンタ合計値を提供する。
【0112】
いくつかの実施形態において、セキュリティデバイスは、さらに、1または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックを備える。
【0113】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが:1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケットプロセッサは、ローカルカウンタメモリに1または複数のイベントのローカルカウンタ値を格納する1または複数のパケット処理カードと;セキュリティデバイス内の1または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャとを備え;グローバルカウンタ合計値がイベントのグローバル閾値を超えると、パケット処理マネージャは、イベントが不適合になったことを示すメッセージを、イベントのローカルカウンタ値を維持する1または複数のパケット処理カード上のパケットプロセッサに送信し;グローバルカウンタ合計値がイベントのグローバル閾値未満である時、パケット処理マネージャは、イベントが適合になったことを示すメッセージを、イベントのローカルカウンタ値を維持する1または複数のパケット処理カード上のパケットプロセッサに送信する。
【0114】
いくつかの実施形態において、イベントが不適合または適合になったことを示すメッセージは、マルチキャストメッセージを含む。別の実施形態において、パケット処理マネージャは、スイッチングファブリックを通してパケットプロセッサに対してメッセージを送受信するためのメッセージプロセッサを備える。
【0115】
いくつかの実施形態において、グローバルイベントカウンタは、積算カウンタを含む。別の実施形態において、グローバルイベントカウンタは、レートカウンタを含み、各レートカウンタは、カウンタ識別子によって識別され、グローバル閾値、グローバル最大値、および、グローバルフィルレートに関連する。さらに、いくつかの実施形態において、レートカウンタは、トークンバケットとして実装される。
【0116】
いくつかの実施形態において、イベントが適合になった旨のメッセージを、パケットプロセッサがパケット処理マネージャから受信すると、パケットプロセッサは、イベントのローカル状態を適合に移行させ、パケット処理マネージャにローカルカウンタ値を定期的に送信する。いくつかの実施形態において、各パケット処理カード内のローカルカウンタメモリは、各イベントのローカル閾値を含み、パケットプロセッサは、ローカルカウンタ値がローカル閾値を超えた時だけ、パケット処理マネージャにローカルカウンタ値を報告する。
【0117】
いくつかの実施形態において、セキュリティデバイスは、さらに、1または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックを備える。
【0118】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
例えば、本発明は、以下の適用例としても実施可能である。
[適用例1]複数のネットワークフローを処理するためのセキュリティデバイスであって、
1または複数のネットワークフローに関連する入力データパケットを受信するよう構成された1または複数のパケットプロセッサであって、前記パケットプロセッサの少なくとも1つは、1または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理する1または複数のパケットプロセッサと、
前記1または複数のパケットプロセッサにネットワークフローのオーナーシップを割り当てるよう構成されたパケット処理マネージャであって、前記パケット処理マネージャは、ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付けるグローバルフローテーブルエントリを含むグローバルフローテーブルと、予測ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付ける予測フローエントリを含む予測フローテーブルと
を備え、
各予測フローエントリは、予測キーと、関連パケットプロセッサオーナーシップ割り当てとを含み、前記予測キーは、複数のデータフィールドを含み、前記データフィールドの内の1または複数の値が未知である予測ネットワークフローを識別する
セキュリティデバイス。
[適用例2]適用例1に記載のセキュリティデバイスであって、前記予測キーは、予測ネットワークフローの5タプルの情報を含み、前記5タプルの情報の1または複数が、未知の値を有するセキュリティデバイス。
[適用例3]適用例1に記載のセキュリティデバイスであって、親フローに関連するデータパケットがパケットプロセッサによって受信された時に、予測フローエントリが前記予測フローテーブルに追加され、前記予測フローエントリは、前記予測キー内のワイルドカード値を用いて、予測ネットワークフローが前記親フローに対応する子フローであると識別し、前記予測フローエントリは、前記親フローのオーナーとして割り当てられた前記パケットプロセッサに前記予測ネットワークフローを対応付けるセキュリティデバイス。
[適用例4]適用例1に記載のセキュリティデバイスであって、前記予測フローテーブルは、ターナリコンテントアドレッサブルメモリ(TCAM)を含むセキュリティデバイス。
[適用例5]スイッチングファブリックを通して通信し1または複数のパケットプロセッサをそれぞれ含む複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法であって、
パケット処理カードで第1のデータパケットを受信する工程と、
予測フローエントリを追加するために、パケット処理マネージャにメッセージを送信する工程と、
複数のデータフィールドを有し、前記データフィールドの内の1または複数の値が未知である予測ネットワークフローを識別する予測キーを用いて、前記予測フローエントリを予測フローテーブルに追加する工程であって、前記予測キーは、前記第1のデータパケットのパケットプロセッサオーナーシップ割り当てに関連する工程と、
パケット処理カードで第2のデータパケットを受信する工程と、
前記第2のデータパケットを前記パケット処理マネージャに転送する工程と、
前記予測フローテーブル内で前記第2のデータパケットのネットワークフローをルックアップする工程と、
前記第2のデータパケットの前記ネットワークフローが前記予測フローテーブル内で見つかった時に、前記パケット処理マネージャのグローバルフローテーブルにエントリを追加する工程であって、前記グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含み、前記エントリは、前記第1のデータパケットのオーナーパケットプロセッサを前記第2のデータパケットのオーナーパケットプロセッサとして特定する工程と、
割り当てられたパケットプロセッサに前記第2のデータパケットのオーナーシップ割り当てを知らせるメッセージを前記パケット処理マネージャから前記オーナーパケットプロセッサに送信する工程と、
前記オーナーシップ割り当ての引き受けを示すメッセージを前記オーナーパケットプロセッサから前記パケット処理マネージャで受信する工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるバインドエントリを前記グローバルフローテーブルに格納する工程と、
前記オーナーパケットプロセッサで前記第2のデータパケットを処理する工程と
を備える方法。
[適用例6]適用例5に記載の方法であって、前記パケット処理カードで前記第1のデータパケットを受信する工程は、
パケット処理カードでデータパケットを受信する工程であって、前記データパケットは、決定される子セッションを持つ親セッションに関連し、前記予測フローエントリが、前記決定される子セッションのために作成される工程を含む方法。
[適用例7]適用例5に記載の方法であって、前記予測キーは、予測ネットワークフローの5タプルの情報を含み、前記5タプルの情報の1または複数が、未知の値を有する方法。
[適用例8]複数のネットワークフローを処理するためのセキュリティデバイスであって、
1または複数のネットワークフローに関連する入力データパケットを受信するよう構成された1または複数のパケットプロセッサであって、前記パケットプロセッサの少なくとも1つは、1または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理する1または複数のパケットプロセッサと、
ネットワークフローのオーナーシップを1または複数のパケットプロセッサに割り当てるよう構成され、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含むグローバルフローテーブルを備えたパケット処理マネージャと
を備え、
第1のパケットプロセッサが、ネットワークフローのオーナーとして割り当てられた時に、オーナーシップ割り当てをパケットプロセッサに知らせ、1または複数のパケットプロセッサは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知る
セキュリティデバイス。
[適用例9]適用例8に記載のセキュリティデバイスであって、前記1または複数のパケットプロセッサは、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てをローカルメモリに格納しており、各パケットプロセッサは、自身がオーナーではないデータパケットを受信すると、前記受信したデータパケットに関連するネットワークフローのオーナーシップ割り当てが前記ローカルメモリ内で見つかった場合、前記受信したデータパケットを処理のために前記オーナーに転送するセキュリティデバイス。
[適用例10]適用例9に記載のセキュリティデバイスであって、パケットプロセッサは、前記ネットワークフローのエントリが前記ローカルメモリ内で見つからない時、受信したデータパケットを前記パケット処理マネージャに転送し、前記パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、前記受信したデータパケットを転送したパケットプロセッサに、すでになされたオーナーシップ割り当てを知らせるよう構成されているセキュリティデバイス。
[適用例11]適用例8に記載のセキュリティデバイスであって、さらに、
1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する1または複数のパケット処理カードと、
前記1または複数のパケット処理カードおよび前記パケット処理マネージャと通信するスイッチングファブリックと
を備え、
前記1または複数のパケット処理カードは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、前記ローカルフローテーブルは、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納するセキュリティデバイス。
[適用例12]スイッチングファブリックを通して通信し1または複数のパケットプロセッサをそれぞれ含む複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法であって、
パケット処理カードでデータパケットを受信する工程と、
ローカルフローテーブル内で、前記データパケットに関連するネットワークフローをルックアップする工程と、
前記ネットワークフローが前記ローカルフローテーブル内で見つからなかった時、前記データパケットをパケット処理マネージャに転送する工程と、
前記パケット処理マネージャのグローバルフローテーブル内で前記ネットワークフローをルックアップする工程であって、前記グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含む工程と、
前記ネットワークフローが前記グローバルフローテーブル内で見つからなかった時、前記受信したデータパケットに関連する前記ネットワークフローのオーナーシップを、前記パケット処理カードの1つの上のパケットプロセッサに割り当てる工程と、
前記割り当てられたパケットプロセッサに前記オーナーシップ割り当てを知らせるメッセージを、前記割り当てられたパケットプロセッサに前記パケット処理マネージャから送信する工程と、
前記オーナーシップ割り当ての引き受けを示すメッセージを、前記割り当られたパケットプロセッサから前記パケット処理マネージャで受信する工程であって、前記割り当てられたパケットプロセッサは、オーナーパケットプロセッサになる工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるバインドエントリを前記グローバルフローテーブルに格納する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
[適用例13]適用例12に記載の方法であって、さらに、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるエントリを前記グローバルフローテーブルに追加する工程を備える方法。
[適用例14]適用例12に記載の方法であって、
前記オーナーシップ割り当ての引き受けを示す前記メッセージを前記割り当てられたパケットプロセッサから前記パケット処理マネージャで受信する工程は、
前記オーナーシップ割り当ての引き受けを示すメッセージを、順方向フローおよび逆方向フローの情報と共に、前記割り当てられたパケットプロセッサから前記パケット処理マネージャで受信する工程を含む、
方法。
[適用例15]適用例12に記載の方法であって、さらに、
前記ネットワークフローが前記グローバルフローテーブル内で見つかった時に、前記データパケットを受信した前記パケット処理カードに前記ネットワークフローの前記オーナーシップ割り当てを知らせるメッセージを前記パケット処理マネージャから前記受信パケット処理カードに送信する工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるエントリを、前記データパケットを受信した前記パケット処理カードの前記ローカルフローテーブルに追加する工程と、
前記パケット処理マネージャから前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
[適用例16]適用例12に記載の方法であって、さらに、
前記ネットワークフローが前記ローカルフローテーブルで見つかった時に、前記ローカルフローテーブル内で前記ネットワークフローの前記オーナーとして特定された前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
[適用例17]複数のネットワークフローを処理するためのセキュリティデバイスであって、
1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケット処理カードは、前記ローカルカウンタメモリに1または複数のイベントのローカルカウンタ値を格納する1または複数のパケット処理カードと、
前記セキュリティデバイス内の1または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、前記グローバルイベントカウンタは、カウンタメモリと通信し、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャと
を備え、
前記パケット処理マネージャは、前記イベントを報告する各パケットプロセッサのイベントのローカルカウンタ値のコピーを前記カウンタメモリに格納し、グローバルイベントカウンタが、前記ローカルカウンタメモリ内のローカルカウンタ値のコピーを合計することによって前記イベントのグローバルカウンタ合計値を提供する
セキュリティデバイス。
[適用例18]適用例17に記載のセキュリティデバイスであって、ローカルカウンタ値を前記パケット処理マネージャに報告する各パケット処理カードは、前記合計ローカルカウンタ値を含むメッセージを前記パケット処理マネージャに送信するセキュリティデバイス。
[適用例19]適用例17に記載のセキュリティデバイスであって、前記グローバルイベントカウンタは、積算カウンタを含み、各パケット処理カード内の前記ローカルカウンタメモリは、各イベントのローカル閾値を含み、前記パケット処理カードは、前記ローカルカウンタ値が前記ローカル閾値を超えた時だけ、前記パケット処理マネージャにローカルカウンタ値を報告するセキュリティデバイス。
[適用例20]複数のネットワークフローを処理するためのセキュリティデバイスであって、
1または複数のパケットプロセッサをそれぞれ形成された1または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケットプロセッサは、前記ローカルカウンタメモリに1または複数のイベントのローカルカウンタ値を格納する1または複数のパケット処理カードと、
前記セキュリティデバイス内の1または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャと
を備え、
前記グローバルカウンタ合計値がイベントの前記グローバル閾値を超えると、前記パケット処理マネージャは、前記イベントが不適合になったことを示すメッセージを、前記イベントのローカルカウンタ値を維持する前記1または複数のパケット処理カード上の前記パケットプロセッサに送信し、前記グローバルカウンタ合計値がイベントの前記グローバル閾値未満である時、前記パケット処理マネージャは、前記イベントが適合になったことを示すメッセージを、前記イベントのローカルカウンタ値を維持する前記1または複数のパケット処理カード上の前記パケットプロセッサに送信する
セキュリティデバイス。
[適用例21]適用例20に記載のセキュリティデバイスであって、前記グローバル閾値は、高閾値および低閾値を含み、前記グローバルカウンタ合計値がイベントの前記高閾値を超えると、前記イベントは不適合になり、前記グローバルカウンタ合計値が前記イベントの前記低閾値を下回ると、前記イベントは適合になるセキュリティデバイス。
[適用例22]適用例20に記載のセキュリティデバイスであって、イベントが不適合になった旨のメッセージを、パケットプロセッサが前記パケット処理マネージャから受信すると、前記パケットプロセッサは、前記イベントのローカル状態を不適合に移行させ、イベント状態に基づく動作を進める前に、前記イベントの前記グローバルカウンタ合計値について前記パケット処理マネージャにイベントクエリを送信するセキュリティデバイス。
[適用例23]適用例20に記載のセキュリティデバイスであって、イベントが適合になった旨のメッセージを、パケットプロセッサが前記パケット処理マネージャから受信すると、前記パケットプロセッサは、前記イベントのローカル状態を適合に移行させ、前記パケット処理マネージャにローカルカウンタ値を定期的に送信するセキュリティデバイス。