(57)【特許請求の範囲】
【請求項１】
複数のネットワークフローを処理するためのセキュリティデバイスであって、
１または複数のネットワークフローに関連する入力データパケットを受信するよう各々構成された第１のパケットプロセッサおよび第２のパケットプロセッサであって、前記第１および第２のパケットプロセッサの少なくとも１つは、１または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるネットワークフローに関連するデータパケットを処理し、各ネットワークフローは、１のオーナーパケットプロセッサにのみ割り当てられ、各オーナーパケットプロセッサは、セキュリティポリシーを実施するためにネットワークフローに関連するデータパケットを処理する第１のパケットプロセッサおよび第２のパケットプロセッサと、
ネットワークフローのオーナーシップを前記第１または第２のパケットプロセッサに割り当てるよう構成され、パケットプロセッサのオーナーシップ割り当てにネットワークフローを対応付けるエントリを含むグローバルフローテーブルを備えたパケット処理マネージャと、
前記第１および第２のパケットプロセッサならびに前記パケット処理マネージャと通信するスイッチングファブリックと
を備え、
前記パケット処理マネージャが、そのエントリが前記グローバルフローテーブル内に見つからない第１のネットワークフローに属する第１のデータパケットを受信するのに応じて、前記パケット処理マネージャは、前記第１のパケットプロセッサを前記第１のネットワークフローのオーナーとして割り当てて、前記オーナーシップ割り当てを前記第１のパケットプロセッサに知らせ、前記第２のパケットプロセッサは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、前記第２のパケットプロセッサは、前記第１のネットワークフローに属する受信したデータパケットを処理のために前記第１のパケットプロセッサに転送する
セキュリティデバイス。
【請求項２】
請求項１に記載のセキュリティデバイスであって、前記パケット処理マネージャは、オーナーシップ割り当てポリシーを適用してネットワークフローのオーナーシップを前記第１および第２のパケットプロセッサに割り当てるソフトウェアモジュールを備えるセキュリティデバイス。
【請求項３】
請求項１に記載のセキュリティデバイスであって、前記第１および第２のパケットプロセッサの各々は、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てをローカルメモリに格納しており、各パケットプロセッサは、自身がオーナーではないデータパケットを受信すると、前記受信したデータパケットに関連するネットワークフローのオーナーシップ割り当てが前記ローカルメモリ内で見つかった場合、前記受信したデータパケットを処理のために前記オーナーに転送するセキュリティデバイス。
【請求項４】
請求項３に記載のセキュリティデバイスであって、パケットプロセッサは、前記ネットワークフローのエントリが前記ローカルメモリ内で見つからない時、受信したデータパケットを前記パケット処理マネージャに転送し、前記パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、前記受信したデータパケットを転送したパケットプロセッサに、すでになされた前記オーナーシップ割り当てを知らせるよう構成されているセキュリティデバイス。
【請求項５】
請求項１に記載のセキュリティデバイスであって、さらに、
１または複数のパケットプロセッサがそれぞれ形成された複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有し、前記複数のパケット処理カードは、第１パケット処理カードと第２パケット処理カードとを含み、前記第１パケット処理カードは前記第１のパケットプロセッサを、前記第２パケット処理カードは前記第２のパケットプロセッサを、それぞれ含む、複数のパケット処理カードと、
前記複数のパケット処理カードおよび前記パケット処理マネージャと通信する前記スイッチングファブリックと
を備え、
前記複数のパケット処理カードは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、前記ローカルフローテーブルには、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納する
セキュリティデバイス。
【請求項６】
請求項５に記載のセキュリティデバイスであって、
前記パケット処理カードの１つは、受信したデータパケットに関連する前記ネットワークフローのエントリが前記ローカルフローテーブル内で見つかった時、前記受信したデータパケットを処理のためにオーナーパケットプロセッサに転送する
セキュリティデバイス。
【請求項７】
請求項５に記載のセキュリティデバイスであって、
前記パケットプロセッサの１つは、ネットワークフローのエントリが前記ローカルフローテーブル内で見つからない時、受信したデータパケットを前記パケット処理マネージャに転送し、
前記パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、前記受信したデータパケットを転送した前記パケットプロセッサに、すでになされた前記オーナーシップ割り当てを知らせるよう構成され、
前記パケットプロセッサは、前記ローカルフローテーブル内にオーナーシップ割り当て情報を格納する
セキュリティデバイス。
【請求項８】
請求項５に記載のセキュリティデバイスであって、
受信された前記データパケットの各々は、フロー識別子によって識別されたネットワークフローに関連しており、
前記パケット処理マネージャは、前記フロー識別子内にフローのオーナーパケットプロセッサ割り当てをエンコードし、
前記オーナーパケットプロセッサは、前記オーナーパケットプロセッサが位置するパケット処理カードを識別するスロット番号と、前記パケット処理カード上の前記１または複数のパケットプロセッサの１つを特定するパケットプロセッサ番号とによって識別されるものである
セキュリティデバイス。
【請求項９】
請求項１に記載のセキュリティデバイスであって、
前記パケット処理マネージャは、前記第１のネットワークフローを前記第１のパケットプロセッサに割り当てるのに応じて、前記第１のネットワークフローを前記第１のネットワークフローの前記オーナーとして前記第１のパケットプロセッサに対応付けるエントリを前記グローバルフローテーブルに追加し、前記エントリは、仮の状態に置かれる
セキュリティデバイス。
【請求項１０】
請求項９に記載のセキュリティデバイスであって、
前記パケット処理マネージャは、前記オーナーシップ割り当てを前記第１のパケットプロセッサに知らせて、前記第１のデータパケットを前記第１のパケットプロセッサに転送し、
前記第１のパケットプロセッサが前記オーナーシップ割り当てを受信するのに応じて、前記パケット処理マネージャは、前記第１のネットワークフローを前記オーナーパケットプロセッサとして前記第１のパケットプロセッサに対応付けるバインドエントリを前記グローバルフローテーブルに格納する
セキュリティデバイス。
【請求項１１】
スイッチングファブリックを通して通信する複数のパケットプロセッサを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法であって、
第１のパケットプロセッサで第１のネットワークフローに属する第１のデータパケットを受信する工程と、
ローカルフローテーブル内で、前記第１のパケットプロセッサに関連する前記第１のネットワークフローをルックアップする工程と、
前記第１のネットワークフローが前記ローカルフローテーブル内で見つからなかったのに応じて、前記第１のデータパケットをパケット処理マネージャに転送する工程と、
前記パケット処理マネージャのグローバルフローテーブル内で前記第１のネットワークフローをルックアップする工程であって、前記グローバルフローテーブルは、パケットプロセッサのオーナーシップ割り当てにネットワークフローを対応付けるエントリを含む工程と、
前記第１のネットワークフローが前記グローバルフローテーブル内で見つからなかったのに応じて、前記第１のネットワークフローのオーナーシップを、前記パケット処理マネージャでオーナーパケットプロセッサとしてパケットプロセッサに割り当てる工程であって、前記オーナーパケットプロセッサは、前記第１のパケットプロセッサと第２のパケットプロセッサの１つである工程と、
前記割り当てられたパケットプロセッサに前記オーナーシップ割り当てを知らせるメッセージを、前記割り当てられたパケットプロセッサに前記パケット処理マネージャから送信する工程と、
前記オーナーシップ割り当ての引き受けを示すメッセージを、前記割り当られたパケットプロセッサから前記パケット処理マネージャで受信する工程であって、前記割り当てられたパケットプロセッサは、前記オーナーパケットプロセッサになる工程と、
前記オーナーパケットプロセッサで前記第１のデータパケットを処理する工程と、
前記第１のネットワークフローに属する前記第２のパケットプロセッサで受信したデータパケットを、処理のために前記オーナーパケットプロセッサに転送する工程と、
を備え、
各パケットプロセッサは、自身が割り当てられたオーナーパケットプロセッサであるネットワークフローに関連するデータパケットを処理し、各ネットワークフローは、１のオーナーパケットプロセッサにのみ割り当てられ、各オーナーパケットプロセッサは、セキュリティポリシーを実施するためにネットワークフローに関連するデータパケットを処理する方法。
【請求項１２】
請求項１１に記載の方法であって、さらに、
前記オーナーパケットプロセッサに前記第１のネットワークフローを対応付けるエントリを前記グローバルフローテーブルに追加する工程であって、前記エントリは、一時的な状態である工程を備える方法。
【請求項１３】
請求項１２に記載の方法であって、さらに、
前記パケット処理マネージャが前記オーナーシップ割り当ての引き受けを示すメッセージを受信した時、前記エントリの前記一時的な状態をバインド状態に変更する工程を備える方法。
【請求項１４】
請求項１３に記載の方法であって、さらに、
前記オーナーシップ割り当ての引き受けを示すメッセージを、順方向フローおよび逆方向フローの情報と共に、前記割り当てられたパケットプロセッサから前記パケット処理マネージャで受信する工程と、
前記オーナーパケットプロセッサに前記第１のネットワークフローを対応付ける順方向フローおよび逆方向フローのためのバインドエントリを前記グローバルフローテーブルに格納する工程とを含む、
方法。
【請求項１５】
請求項１１に記載の方法であって、さらに、
前記第１のネットワークフローが前記グローバルフローテーブル内で見つかったのに応じて、前記データパケットを受信した少なくとも１つのパケットプロセッサに前記第１のネットワークフローの前記オーナーシップ割り当てを知らせるメッセージを前記パケット処理マネージャから少なくとも１つのパケットプロセッサに送信する工程と、
前記オーナーパケットプロセッサに前記第１のネットワークフローを対応付けるエントリを、前記データパケットを受信する前記少なくとも１つのパケットプロセッサの前記ローカルフローテーブルに追加する工程と、
前記パケット処理マネージャから前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
【請求項１６】
請求項１５に記載の方法であって、さらに、
前記第１のネットワークフローの前記オーナーシップ割り当てを知らされた前記少なくとも１つのパケットプロセッサのインディケーションを前記グローバルフローテーブルに格納する工程を備える方法。
【請求項１７】
請求項１１に記載の方法であって、さらに、
前記第１のネットワークフローが前記ローカルフローテーブルで見つかったのに応じて、前記ローカルフローテーブル内で前記ネットワークフローのオーナーとして特定された前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
【請求項１８】
請求項１６に記載の方法であって、さらに、
前記ネットワークフローが終了した旨のメッセージを前記パケット処理マネージャで受信する工程と、
前記終了したネットワークフローの前記オーナーシップ割り当てを知らされた少なくとも１つのパケットプロセッサを識別する前記インディケーションをリトリーブする工程と、
それぞれのローカルフローテーブル内の前記終了したネットワークフローに関連する前記エントリを削除するために、前記パケット処理マネージャから前記識別されたパケットプロセッサにメッセージを送信する工程と
を備える方法。
【請求項１９】
請求項１８に記載の方法であって、さらに、
前記終了したネットワークフローのフロー統計を送信する工程を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
他の出願の相互参照
本願は、いずれも２０１３年１月３０日出願の米国仮特許出願第６１／７５８，６４７号「ＳＥＣＵＲＩＴＹ  ＤＥＶＩＣＥ  ＩＭＰＬＥＭＥＮＴＩＮＧ  ＮＥＴＷＯＲＫ  ＦＬＯＷ  ＰＲＥＤＩＣＴＩＯＮ」、米国仮特許出願第６１／７５８，６５１号「ＨＡＲＤＷＡＲＥ  ＢＡＳＥＤ  ＦＬＯＷ  ＯＷＮＥＲＳＨＩＰ  ＡＳＳＩＧＮＭＥＮＴ  ＩＮ  Ａ  ＤＩＳＴＲＩＢＵＴＥＤ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭ」、および、米国仮特許出願第６１／７５８，６６１号「  ＨＡＲＤＷＡＲＥ−ＢＡＳＥＤ  ＥＶＥＮＴ  ＡＧＧＲＥＧＡＴＩＯＮ  ＩＮ  Ａ  ＤＩＳＴＲＩＢＵＴＥＤ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭ」の優先権を主張し、それらの出願はすべて、すべての目的のために参照により本明細書に組み込まれる。
【背景技術】
【０００２】
ユーザが権限のないリソースにアクセスすることを防ぐために、ファイヤウォールなどのデバイスが、時に利用される。一例として、一般人は、ウェブサーバによって供給されるコンテンツにアクセスする権利を与えられるが、サーバ上で利用可能な他のサービス（管理ツールなど）にアクセスする権限は与えられない場合がある。別の例において、会社の従業員は、特定のウェブサイトまたは特定の種類のウェブサイトにアクセスする権利を与えられるが、他のウェブサイトまたは他の種類のウェブサイトが、全従業員にとって禁止される場合がある。ファイヤウォールおよびその他のセキュリティデバイスは、通例、一連のルールに基づいてネットワーク伝送に対するポリシーを実施する。
【０００３】
従来のセキュリティデバイスは、入力データストリームを処理するための複数のプロセッサを備えたモノリシックデバイスとして実装される。かかるセキュリティデバイスは、しばしば、１つのプロセッサが管理プロセッサとして指定される集中管理スキームを実装する。入力データパケットは、しばしば、セキュリティデバイスのすべてのプロセッサにブロードキャストされ、プロセッサは、ソフトウェアメッセージングを通して、互いに協働して、どのプロセッサが１または複数のフローに属する入力データパケットを処理するオーナーシップを得るべきなのかを決定する。しかしながら、集中管理スキームは、データパケット数の増大に対処するように拡張可能ではない。
【０００４】
さらに、分散型システムとして実装されたセキュリティデバイスにおいて、フロー割り当ての管理は、データトラフィックを処理する多くの独立した計算リソースにわたって効果的なセキュリティポリシー実施を保証するために、関連するデータ接続に属しうるデータトラフィックを含む異なるタイプのデータトラフィックを考慮する必要がある。
【０００５】
最後に、複雑なセキュリティポリシーを実施するために、ファイヤウォールは、多くの独立したランダムなイベントを追跡して、ポリシー実施のためにそれらのイベントを相互に関連付ける必要がある。ファイヤウォールまたはその他のセキュリティデバイスは、通例、トラフィックが通信されている時にネットワークトラフィックを効果的に調べるために、迅速に更新されるカウンタを用いて、イベント統計を維持する。イベント統計の維持は、イベントが多くの独立した計算リソースにわたって検出および追跡されなければならない分散型システムとしてセキュリティデバイスが実装された場合に困難になる。分散型コンピュータ環境においてイベント統計を維持する１つの方法は、すべての計算リソースの間でメッセージを送信してイベントデータの同期コピーを維持するために、ソフトウェアを利用することである。かかるソフトウェアソリューションは、性能が望ましくなく、うまくスケーリングしない。
【図面の簡単な説明】
【０００６】
以下の詳細な説明と添付の図面において、本発明の様々な実施形態を開示する。
【０００７】
【図１】セキュリティポリシーが実施される環境の一実施形態を示す図。
【０００８】
【図２】本発明の実施形態におけるセキュリティデバイスを示す概略図。
【０００９】
【図３】本発明の実施形態におけるパケット処理カードを示す概略図。
【００１０】
【図４】本発明の一実施形態に従ったフロー識別子を示す図。
【００１１】
【図５】本発明の実施形態におけるパケット処理マネージャを示す概略図。
【００１２】
【図６】本発明の一実施形態に従ってフローオーナーシップ割り当て方法を示すフローチャート。
【００１３】
【図７】本発明の別の実施形態に従ってフローオーナーシップ割り当て方法を、図７Ａと共に示すフローチャート。
【図７Ａ】本発明の別の実施形態に従ってフローオーナーシップ割り当て方法を、図７の一部として示すフローチャート。
【００１４】
【図８】本発明の一実施形態に従ってセッションティアダウン方法を示すフローチャート。
【００１５】
【図９】本発明の一実施形態における予測フローテーブルを示す図。
【００１６】
【図１０】本発明の一実施形態に従ってフロー予測方法を示すフローチャート。
【００１７】
【図１１】本発明の実施形態におけるグローバルイベントカウンタ３００の構成を示す図。
【００１８】
【図１２】パケットプロセッサによってパケット処理マネージャに送信されうるイベントカウンタメッセージの一例を示す図。
【００１９】
【図１３】本発明の別の実施形態におけるパケット処理カードを示す概略図。
【発明を実施するための形態】
【００２０】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および／または、プロセッサ（プロセッサに接続されたメモリに格納および／またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ）を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、１または複数のデバイス、回路、および／または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【００２１】
以下では、本発明の原理を示す図面を参照しつつ、本発明の１または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【００２２】
図１は、セキュリティポリシーが実施される環境の一実施形態を示す。図の例において、クライアント１０４および１０６は、それぞれ、企業ネットワーク１０８内に存在するラップトップコンピュータおよびデスクトップコンピュータである。セキュリティデバイス１０２（本明細書では「デバイス１０２」とも呼ぶ）は、クライアント（クライアント１０４および１０６など）と、企業ネットワーク１０８の外側のノード（例えば、外部ネットワーク１１０を介して到達可能なノード）との間の通信に関するポリシーを実施するよう構成されている。ポリシーの一例は、ネットワーク１０８内の任意のクライアントによるサイト１１２（アダルトサイト）への任意のアクセスを禁止するルールである。ポリシーの別の例は、午前９時から午後６時の間にクライアントによるソーシャルネットワーキングサイト１１４へのアクセスを禁止するルールである。ポリシーのさらに別の例は、帯域幅または別の消費の制約下でストリーミングビデオウェブサイト１１６へのアクセスを許可するルールである。トラフィックシェーピング、サービスの質、または、ＵＲＬ情報に関するルーティングを管理するポリシーなど、他のタイプのポリシーも実施できる。いくつかの実施形態において、セキュリティデバイス１０２は、さらに、企業ネットワーク１０８内にとどまるトラフィックに関するポリシーを実施するように構成される。
【００２３】
いくつかの実施形態において、セキュリティデバイス１０２は、例えば、計算ハードウェア、ソフトウェア、または、それらの様々な組み合わせを用いて実装できるセキュリティアプライアンス、セキュリティゲートウェイ、セキュリティサーバ、ファイヤウォール、および／または、いくつかの他のセキュリティデバイスを備える。セキュリティデバイス１０２によって提供される機能は、様々な方法で実装できる。具体的には、セキュリティデバイス１０２は、専用デバイスまたはデバイスセットでありうる。デバイス１０２によって提供される機能は、汎用コンピュータ、コンピュータサーバ、ゲートウェイ、および／または、ネットワーク／ルーティングデバイス上のソフトウェアに統合されてもよいし、かかるソフトウェアとして実行されてもよい。さらに、デバイス１０２がタスクを実行すると記載された場合、デバイス１０２の１つのコンポーネント、コンポーネントの一部、または、全コンポーネントが、タスクを実行するために協働しうる。同様に、デバイス１０２のコンポーネントがタスクを実行すると記載された場合、サブコンポーネントがタスクを実行してよい、および／または、コンポーネントが他のコンポーネントと連携してタスクを実行してよい。様々な実施形態において、デバイス１０２の部分は、１または複数のサードパーティによって提供される。デバイス１０２にとって利用可能な計算リソースの量などの要因に応じて、デバイス１０２の様々な論理コンポーネントおよび／または特徴が省略されてもよく、本明細書に記載の技術は、それに応じて適応される。同様に、さらなる論理コンポーネント／特徴が、場合に応じてシステム１０２に追加されてもよい。
【００２４】
図２は、本発明の実施形態におけるセキュリティデバイスを示す概略図である。図の例において、セキュリティデバイス１０２の機能は、ファイヤウォール内に実装される。図２を参照すると、セキュリティデバイス１０２は、複数の独立した計算リソースを含む分散型システムとして実装される。より具体的には、セキュリティデバイス１０２は、スイッチングファブリック１８０に接続された複数のパケット処理カード１６０を備える。図の例では、パケット処理カード０〜カード２が図示されている。各パケット処理カード１６０は、同様に構成されており、ネットワーク内の通信ラインまたはデータラインに接続するためのデータポート１６２と、受信したデータパケットに関連するネットワークフローを識別するためのフローエンジン（ＦＥ）１６４と、フローエンジンと通信し、フローオーナーシップ割り当て情報を格納するためのローカルフローテーブル（ＬＦＴ）１６６と、データパケットを処理するための１または複数のパケットプロセッサ１６８とを備える。図の例において、各パケット処理カード１６０は、２つのパケットプロセッサＰＰ０およびＰＰ１を備える。パケット処理カード内の各パケットプロセッサは、自身に割り当てられたデータパケットを処理する。いくつかの実施形態において、パケットプロセッサ１６８は、高性能マルチコアＣＰＵとして実装されてよい。
【００２５】
いくつかの実施形態において、セキュリティデバイス１０２は、さらなる処理リソースを提供する１または複数の処理リソースカード１７０を備えてもよい。図の例において、セキュリティデバイス１０２は、複数のパケットプロセッサ１７２を形成された単一の処理リソースカード０を備える。より具体的には、処理リソースカード１７０は、パケットプロセッサＰＰ０ないしＰＰ５を備える。処理リソースカード内の各パケットプロセッサは、自身に割り当てられたデータパケットを処理する。パケットプロセッサ１７２は、パケットプロセッサ１６８と同じプロセッサデバイスを用いて実装されてよい。処理リソースカード１７０は、任意選択的であり、本発明の実施形態で省略されてもよい。
【００２６】
いくつかの実施形態において、パケット処理カード１６０および処理リソースカード１７０は、バックプレーンと通信するラインカードとして実装される。ラインカードまたはデジタルラインカードは、通信バックプレートとインターフェース接続するプリント回路基板上のモジュラー電子回路である。スイッチングファブリック１８０は、バックプレートと通信するラインカード（管理処理カード（図示せず）など）上に形成された集積回路であってよい。セキュリティデバイス１０２は、イベント統計およびポリシー実施を維持するなど、セキュリティデバイスの他の機能を実装するために、図２に示されていない他の構成要素を含んでもよい。
【００２７】
セキュリティデバイス１０２において、パケット処理カード１６０および処理リソースカード１７０は、スイッチングファブリック１８０を通して互いに通信する。より具体的には、セキュリティデバイス１０２は、パケット処理カード（例えば、カード０）の入力ポートで入力データパケットを受信し、セキュリティ実施のためにデータパケットを処理した後、同じパケット処理カード（カード０）または別のパケット処理カード（例えば、カード１）を通して、出力ポートで出力データパケットを転送してよい。各パケット処理カード１６０内のフローエンジン１６４は、受信したデータパケットに関連するフローを特定して適切なセキュリティポリシーを適用するために、受信したデータパケットを処理する。
【００２８】
この説明において、ネットワークフローまたは「フロー」とは、ソースと宛先との間で一方向に情報を通信する一連のデータパケットを含むＴＣＰ／ＩＰフローのことである。データパケットのフロー識別子（すなわち「フローＩＤ」）は、少なくともデータパケットのヘッダ内の情報から決定される。フロー識別子は、セキュリティデバイス１０２内のフローを特定するために用いられる一意的な値である。いくつかの実施形態において、フロー識別子は、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート数、宛先ポート数、および、利用プロトコルを含むデータパケットの５タプルの情報から決定される。別の実施形態において、フロー識別子は、５タプルの情報に加えて、利用されているインターフェースを含むデータパケットの６タプルの情報から決定される。さらに、この説明において、１ペアのネットワークデバイス（例えば、クライアント−サーバ）の間の双方向接続は、セッションが両方向（すなわち、順方向（クライアントからサーバ）および逆方向（サーバからクライアント））のデータトラフィックを表す２つのフローからなるセッションと見なされる。
【００２９】
フローオーナーシップ割り当て
【００３０】
ここまでで構成されたように、セキュリティデバイス１０２は、システムにわたる独立した処理リソースにフロー処理およびパケット処理が分散される分散処理システムアーキテクチャを実現する。すなわち、入力データパケットの処理は、１または複数のパケット処理カードならびに１または複数の処理リソースカード上の異なるパケットプロセッサに分散される。分散処理システムでは、同じフローまたは同じセッションに属するデータパケットが、異なるパケット処理カードに到着しうる。入力データパケットを受信したパケット処理カードは、処理に向けてオーナーパケットプロセッサにデータパケットを転送するために、セキュリティデバイス１０２内の同じまたは異なるパケット処理カード上の多くのパケットプロセッサの中で、どのパケットプロセッサ１６８が、入力データパケットに関連するフローのオーナーシップを割り当てられたのかを知る必要がある。さらに、データトラフィックを効果的に監視および制御するために、信号パケットプロセッサが、同じセッションに属するデータパケットを調査して、データパケットが転送されるのか、ポリシングされるのか、または、セキュリティポリシーによって定義されたように任意の他の動作を取られるのかを決定できるように、同じセッションの順方向フローおよび逆方向フローの両方のための情報が互いに関連していることが好ましい。したがって、単一のパケットプロセッサに、同じセッションに属するフローのオーナーシップが割り当てられることが好ましい。
【００３１】
本発明の実施形態において、セキュリティデバイス１０２は、フローおよびセッションのオーナーシップ割り当てを確実かつ効率的に管理するため、ならびに、セキュリティデバイスにおけるフローオーナーシップのグローバル追跡を提供するために、パケット処理マネージャ１５０を備える。パケット処理マネージャは、セキュリティデバイスにおけるフローオーナーシップ割り当てを集中化して、セキュリティデバイス内のパケットプロセッサにわたってフローのオーナーシップを分散させるように機能する。より具体的には、パケット処理マネージャは、同じフローに属するデータパケットが同じパケットプロセッサによって処理され、同じセッションに属するフローも同じパケットプロセッサによって処理されるように、セキュリティデバイス内のパケットプロセッサにフローのオーナーシップを割り当てるためのフローオーナーシップ割り当て方法を実施する。さらに、パケット処理マネージャは、セキュリティデバイス内の各パケット処理カードが、受信した各データパケットのオーナーパケットプロセッサを決定すると共に、受信したデータパケットを処理のためにオーナーパケットプロセッサに転送できるように、グローバルフローオーナーシップ割り当て情報を保持する。
【００３２】
図２を再び参照すると、セキュリティデバイス１０２は、グローバルフローオーナーシップ割り当てを実施するため、ならびに、セキュリティデバイス内のすべてのパケット処理カードおよび処理リソースカードのためのグローバルフローオーナーシップ割り当て情報を維持するために、スイッチングファブリック１８０と通信するパケット処理マネージャ（ＰＰＭ）１５０を備える。パケット処理マネージャ１５０は、スイッチングファブリック１８０を通してセキュリティデバイス１０２内のパケット処理カード１６０および処理リソースカード１７０のすべてと通信する。パケット処理マネージャ１５０は、特にグローバルフローテーブル１５４を備えたハードウェアコンポーネントＰＰＭ−ＨＷモジュール１５２と、オーナーシップ割り当てポリシーを実施するソフトウェアコンポーネントＰＰＭ−ＳＷモジュール１５６とを備える。一実施形態において、パケット処理マネージャ１５０は、セキュリティデバイス内の管理処理カード（図示せず）の一部として実装される。
【００３３】
本発明の実施形態において、パケット処理マネージャ１５０は、セッションに向けてオーナーパケットプロセッサを決定するための集中リソースとして動作する。一実施形態において、パケット処理カード１６０が、新しいセッションの最初のデータパケットであるデータパケットを受信すると、そのデータパケットは、ポリシー実施のための新しいセッションに関連するデータパケットの処理を担う新しいセッションの「オーナー」であるべきパケット処理カードおよびパケットプロセッサを決定するために、パケット処理マネージャ１５０に転送される。パケット処理マネージャ１５０は、オーナーパケットプロセッサ１６８およびオーナーパケット処理カード１６０を割り当て、グローバルフローテーブル１５４にオーナー割り当てを記録する。次いで、パケット処理マネージャ１５０は、さらなる処理に割り当てられたオーナーパケットプロセッサにデータパケットを転送する。その一方で、パケット処理カード１６０が、割り当てられたオーナーパケットプロセッサで、既知のフローに属するデータパケットを受信すると、パケット処理マネージャ１５０は、オーナーパケットプロセッサにデータパケットを転送すると同時に、同じフローに属する後続のデータパケットが、パケット処理マネージャの介入なしに、受信パケット処理カードからオーナーパケット処理カードに自律的に転送されうるように、データパケットを受信したパケット処理カードにオーナー割り当てを通知する。
【００３４】
図３は、本発明の実施形態におけるパケット処理カードを示す概略図である。図３を参照すると、パケット処理カード１６０は、ネットワークのデータラインに接続するためのデータポート１６２を備える。パケット処理カード１６０は、データポートで、入力データパケット（パケットＩｎ）を受信し、出力データパケット（パケットＯｕｔ）を送信する。パケット処理カード１６０は、さらに、スイッチングファブリック１８０と通信するためにトラフィックマネージャ１６９を備える。パケット処理カード１６０は、ローカルフローテーブル（ＬＦＴ）１６６と通信するフローエンジン（ＦＥ）１６４を備える。フローエンジン１６４は、受信したデータパケットのパケット構文解析およびフロー識別を実行し、ローカルフローテーブル１６６でフロールックアップを実行する。ローカルフローテーブル１６６は、セキュリティデバイスへの入力データパケットに関連する１または複数のフローのためのパケットプロセッサオーナーシップ割り当てを識別するフローエントリを格納する。パケット処理カード１６０は、さらに、パケットプロセッサに割り当てられたデータパケットを処理するために１または複数のパケットプロセッサ１６８を備える。図の例において、各パケット処理カード１６０は、２つのパケットプロセッサＰＰ０およびＰＰ１を備える。最後に、パケット処理カード１６０は、パケット処理カードの動作を制御するための制御プロセッサ１６３を備える。
【００３５】
本発明の実施形態において、パケット処理カード１６０は、さらに、フローに関連するデータパケットを処理するためにフローデータを含むフローレコードを格納するフローデータ・フローテーブル（図示せず）を備えてもよい。より具体的には、フローデータ・フローテーブルは、フローレコードを格納するエントリを備えてよく、各フローレコードは、フロー識別子およびそれに関連付けられたフローデータ（しばしば「フロー属性」と呼ばれる）からなる。フロー属性は、受信されたデータパケットをさらに処理してネットワークセキュリティ機能を実行するためにセキュリティデバイス１０２のパケットプロセッサによって利用されうる１または複数のルールまたはポリシー情報を含んでよい。いくつかの実施形態において、かかるフローデータ・フローテーブルは、オーナーシップ割り当て情報を格納するよう主に構成されたローカルフローテーブル１６６とは区別され、それらのテーブルは、別個のデータテーブルとして実装されてよい。別の実施形態において、ローカルフローテーブル１６６は、フローデータ・フローテーブルの一部として形成される。ローカルフローテーブルの正確な構成は、ローカルフローテーブル１６６が、識別されたフローのパケットプロセッサオーナーシップ割り当て情報を含む限りは、本発明の実施にとって重要なものではない。
【００３６】
本発明の実施形態において、フローのためのオーナーパケットプロセッサ割り当てが、パケット処理カードの識別情報およびカード上のパケットプロセッサの識別情報を用いて、フロー識別子（すなわち「フローＩＤ」）内にエンコードされる。図２を参照すると、セキュリティデバイス１０２において、各パケット処理カードは、パケット処理カード０に対してｓｌｏｔ＃０、パケット処理カード１に対してｓｌｏｔ＃１、および、パケット処理カード２に対してｓｌｏｔ＃２など、スロット番号（ｓｌｏｔ＃）で識別される。各パケット処理カードにおいて、パケットプロセッサは、パケットプロセッサ０に対してＰＰ０およびパケットプロセッサ１に対してＰＰ１など、プロセッサ番号によって識別される。スロット番号およびパケットプロセッサ番号は、セキュリティデバイス１０２内の複数のパケットプロセッサの１つを一意的に識別するために用いられる。
【００３７】
図４は、本発明の一実施形態に従ったフロー識別子を示す。図４を参照すると、フロー識別子（ＦＩＤ）１８５は、セキュリティデバイスを通して送信されているフローを識別するために用いられるグローバル一意値である。フロー識別子１８５は、オーナーパケットプロセッサを識別するために必要な情報をエンコードする。より具体的には、フロー識別子１８５は、スロット番号（ｓｌｏｔ＃）のためのデータフィールドと、パケットプロセッサ番号（ＰＰ＃）のためのデータフィールドと、フローに関連するフローキーを格納するためのフィールドとを備える。フロー識別子１８５は、さらに、フローの方向（順方向または逆方向）を識別するためのデータフィールド（Ｆ／Ｒ）を備えてもよい。特に、フローキーは、セキュリティデバイス１０２において処理または操作されている各フローを一意的に識別する。本発明の実施形態において、フローキーは、少なくともデータパケットのヘッダ内の情報から生成される。いくつかの実施形態において、フローキーは、同じフローに属する受信データパケットを一意的に関連付けるように、受信データパケットの５タプルまたは６タプルの情報から生成される。ここまでに構成されたように、フロー識別子１８５は、（フローキーによって）フローを識別し、（スロット番号ｓｌｏｔ＃およびパケットプロセッサ番号ＰＰ＃によって）そのフローを処理するように割り当てられたオーナーパケットプロセッサを識別する。
【００３８】
図５は、本発明の実施形態におけるパケット処理マネージャを示す概略図である。図５を参照すると、パケット処理マネージャ１５０は、パケット処理マネージャソフトウェア（ＰＰＭ−ＳＷ）モジュール１５６と通信するパケット処理マネージャハードウェア（ＰＰＭ−ＨＷ）モジュール１５２を備える。本実施形態において、ソフトウェアモジュール１５６は、命令がそこで実行されているプロセッサのことである。パケット処理マネージャの主な役割は、セキュリティデバイス全体にわたってフローまたはセッションのオーナーシップを割り当てて分散させることである。動作中、フローとしてマッピングされうるすべてのセッションが、パケットプロセッサ割り当てのためにパケット処理マネージャに送信される。そのフローのためにセキュリティデバイスに到着する後続のパケットは、パケット処理マネージャを用いて、処理のためにどのパケットプロセッサにパケットを送信するのかを知ることができる。
【００３９】
パケット処理マネージャ１５０内で、パケット処理マネージャハードウェアモジュール１５２は、セキュリティデバイスで処理されているフローをパケット処理カード上のパケットプロセッサに対応付けるオーナーシップ割り当て情報を含むグローバルフローテーブル１５４を維持するように動作する。パケット処理マネージャソフトウェアモジュール１５６の主な機能は、新しいセッションのオーナーパケットプロセッサ（ＰＰ）を選択するために用いられるオーナー割り当てポリシーを実施することである。オーナー割り当てポリシーに基づいて、ソフトウェアモジュール１５６は、負荷バランシングに基づいてオーナーパケットプロセッサを選択してもよいし、オーナーをランダムに選択してもよいし、イングレスカード内のパケットプロセッサを選択してもよいし、その他の要因で選択してもよい。パケット処理マネージャハードウェアモジュール１５２の顕著な特徴は、オーナーパケットプロセッサ割り当てが高速の動作を達成できるように、ハードウェアモジュールがフロー管理メッセージ処理の大部分をソフトウェアモジュールからオフロードすることである。
【００４０】
パケット処理マネージャハードウェアモジュール１５２は、ＰＰＭ−ＳＷモジュール１５６と通信するためのネットワークインターフェース１９２を備える。特に、ネットワークインターフェース１９２は、パケット処理マネージャソフトウェアモジュール１５６が実行されるプロセッサに接続する。ＰＰＭ−ＨＷモジュール１５２は、さらに、ハードウェアモジュールをスイッチングファブリック１８０に接続するトラフィックマネージャインターフェース（ＴＭＩ）１９４を備える。ＰＰＭ−ＨＷモジュール１５２の中心機能は、グローバルフローテーブル（ＧＦＴ）１５４を維持することである。そのために、ＰＰＭ−ＨＷモジュール１５２は、グローバルフローテーブル１５４にアクセスするためのフロールックアップエンジン１９６を備える。最後に、ＰＰＭ−ＨＷモジュール１５２は、ＰＰＭ−ＳＷモジュール１５６からの入力メッセージならびにスイッチングファブリックを通したパケット処理カード／処理リソースカードからの入力メッセージを処理すると共に、それらへのメッセージを生成するためのメッセージプロセッサ１９０を備える。メッセージプロセッサ１９０は、フロールックアップエンジン１９６への要求を生成し、フロールックアップエンジンから応答を受信する。
【００４１】
本発明の実施形態において、パケット処理マネージャハードウェアモジュール１５２は、さらに、フロー予測処理を容易にするために予測フローテーブル２００を備える。フロー予測処理は、同じオーナーパケットプロセッサが、関係するセッションに関連するフローを処理するよう割り当てられるように、関係する接続セッションのマッチングを容易にするために、パケット処理マネージャ１５０で用いられる。予測フローテーブルの動作は、後に詳述する。本発明の実施形態において、パケット処理マネージャハードウェアモジュール１５２は、さらに、デバイス内のすべてのパケットプロセッサにわたってイベント統計を追跡するために、１セットのグローバルイベントカウンタ３００を備える。グローバルイベントカウンタ３００は、カウンタメモリ３１０と通信する。パケット処理マネージャ１５０は、分散型システム内のすべてのパケット処理カードにわたるイベントのグローバルカウンタ合計を維持するためのイベントカウンタ集計方法を実施する。イベントカウンタ集計方法については、後に詳述する。予測フローテーブル、グローバルイベントカウンタ、および、カウンタメモリは、パケット処理マネージャハードウェアモジュールの任意選択的な要素であり、本発明の他の実施形態では省略されてもよい。
【００４２】
ＰＰＭ−ＨＷモジュール１５２内のグローバルフローテーブル１５４は、セキュリティデバイス内のすべてのアクティブフローのマッピングを保持する。より具体的には、グローバルフローテーブル１５４は、各フローのオーナーパケットプロセッサを特定するフロー識別子をそのフローに割り当てたマッピングを格納する。フロー識別子の一例は、図４に示されており、すでに上述されている。この例において、フローは、フローキーによって識別され、オーナーパケットプロセッサは、それが位置するパケット処理カードのスロット番号およびそのカード上のパケットプロセッサのパケットプロセッサ番号によって識別される。いくつかの実施形態において、グローバルフローテーブル１５４は、さらに、マッピングを認識しているセキュリティデバイス内のすべてのパケット処理カードを追跡する認識マスクを格納する。認識マスクは、セッションがティアダウン（分解）される時にパケット処理カードのローカルフローテーブルからフローを削除するために、後に用いられる。
【００４３】
一実施形態において、グローバルフローテーブルは、固定サイズのバケットを備えたハッシュテーブルとして実装される。本発明の実施形態において、グローバルフローテーブルは、各エントリが、フローキー情報、フロー識別子（フローＩＤ）、および、関連ＧＦＴ属性を含むＧＦＴエントリを含む。フローキー情報は、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート数、宛先ポート数、および、利用プロトコルを含むデータパケットの５タプルの情報から決定される。いくつかの例において、フローキー情報は、さらに、パケットタイプ、ゾーン識別子、または、利用されているインターフェースを含んでもよい。フローキーは、ハッシュ関数をフローキー情報に適用することによって生成される。フロー識別子は、フローキー情報のハッシュ値であるフローキーと、パケット処理カードの識別情報およびカード上のパケットプロセッサの識別情報であるフローのオーナーシップ割り当て情報とを用いて形成される。いくつかの実施形態において、ＧＦＴ属性は、以下のフィールドの１以上を含む：エントリがバインドされた（ｂｏｕｎｄ）か否かを示す「バインド済み（ｂｏｕｎｄ）」フィールド、フローエントリが更新された時を記録する「タイムスタンプ（ｔｉｍｅｓｔａｍｐ）」フィールド、イベントカウンタ識別子、および、「認識マスク（ａｗａｒｅ  ｍａｓｋ）」フィールド。認識マスクは、このフローを認識したセキュリティデバイス内のパケット処理カードすべてを追跡する。いくつかの実施形態において、ＧＦＴ属性は、エントリが作成される時にエントリが予測テーブルエントリと一致したか否かを示すための用いられる予測フラグ値を格納する予測フィールドを備える。本発明のフロー予測方法での予測フィールドの利用については、後に詳述する。予測フィールドは、任意選択的であり、フロー予測処理が利用されない場合に省略されてもよい。
【００４４】
動作中、各ＧＦＴエントリは、以下の状態の１つでありうる：無効（ｉｎｖａｌｉｄ）、仮（ｔｅｎｔａｔｉｖｅ）、および、バインド済み（ｂｏｕｎｄ）。無効であるＧＦＴエントリとは、そのエントリを新たなエントリ割り当てに利用できることを意味する。ＧＦＴエントリが、新しいフローまたは以前には未知であったフローに属するデータパケットの受信後に作成された時、そのエントリは、仮エントリである。仮ＧＦＴエントリは、仮フロー識別子を含む。仮フロー識別子は、適切なオーナーパケットプロセッサを選択するためにＰＰＭ−ＳＷモジュールに渡される。同じフローキーを有する任意の後続のデータパケットは、同じ仮フロー識別子が用いられるように、仮エントリと一致する。仮ＧＦＴエントリは、オーナーパケットプロセッサがオーナーシップ割り当てを受け入れて、パケット処理マネージャにメッセージを送信した時に、バインド済みＧＦＴエントリに移行してよい。ＧＦＴエントリがバインドされると、同じセッションに属するフローが同じオーナーパケットプロセッサに割り当てられることを保証するために、セッションの順方向および逆方向のフローが、ＧＦＴに追加されてよい。ＧＦＴ属性のバインド済みデータフィールドは、ＧＦＴエントリがバインドされたことを示すように更新される。
【００４５】
本発明のフローオーナー割り当て方法の特徴は、パケット処理マネージャがセキュリティデバイスで受信した新しい各セッションのＧＦＴエントリでグローバルフローテーブルを満たす間に、各パケット処理カードのローカルフローテーブルにデータトラフィックが追加され、ローカルフローテーブル内のオーナー割り当てエントリを更新するために追加の工程が必要ないことである。各パケット処理カード内のローカルフローテーブルは、グローバルフローテーブルのエントリの一部、および、受信されたデータトラフィックに基づいて必要とされるエントリのみを格納する。このように、各パケット処理カード内のローカルフローテーブルは、グローバルフローテーブル内の全エントリを複製する必要がない。
【００４６】
図６は、本発明の一実施形態に従ってフローオーナーシップ割り当て方法を示すフローチャートである。本発明の実施形態において、フローオーナーシップ割り当て方法４００は、複数のパケット処理カードとパケット処理マネージャとを備える図２のセキュリティデバイス１０２で実施されてよい。図６を参照すると、工程４０２で、パケット処理カードの１つ（ＰＰＣｎ）が、入力データパケットを受信する。パケット処理カードＰＰＣｎは、そのローカルフローテーブルにおいてフロールックアップを実行する（工程４０４）。データパケットが新しいセッションに属する場合、ローカルフローテーブル内で一致するフローは見つからない。フローがローカルフローテーブル内で見つからない場合、パケットは、パケット処理マネージャに転送され、パケット処理マネージャは、グローバルフローテーブルにおいてフロールックアップを実行する（工程４０６）。フローがグローバルフローテーブル内で見つからない場合、パケット処理マネージャは、オーナーパケットプロセッサを割り当て、グローバルフローテーブルにフローエントリを追加する（工程４０８）。次いで、パケット処理マネージャは、割り当てられたオーナーパケットプロセッサに「オーナー」メッセージを送信する（工程４１０）。割り当てられたオーナーパケットプロセッサがオーナー割り当てを受け入れることができる場合、そのオーナーパケットプロセッサは、「セッションバインド」メッセージをパケット処理マネージャに送り返す（工程４１２）。セッションバインドメッセージの受信後、パケット処理マネージャは、グローバルフローテーブル内のフローエントリをバインドする（工程４１４）。一実施形態において、オーナーパケットプロセッサは、順方向フローおよび逆方向フローの情報をパケット処理マネージャに提供する。その場合、パケット処理マネージャは、グローバルフローテーブル内に逆方向フローエントリを作成し、グローバルフローテーブル内の順方向フローおよび逆方向フローのエントリ両方をバインドする。最後に、オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する（工程４１６）。
【００４７】
図７は、本発明の別の実施形態に従ってフローオーナーシップ割り当て方法を示すフローチャートである。本発明の実施形態において、フローオーナーシップ割り当て方法５００は、複数のパケット処理カードとパケット処理マネージャとを備える図２のセキュリティデバイス１０２で実施されてよい。図７を参照すると、工程５０２で、パケット処理カードの１つ（ＰＰＣｎ）が、入力データパケットを受信する。パケット処理カードＰＰＣｎは、そのローカルフローテーブルにおいてフロールックアップを実行する（工程５０４）。データパケットが新しいセッションに属する場合、ローカルフローテーブル内で一致するフローは見つからない。フローがローカルフローテーブル内で見つからない場合、データパケットを受信したパケットプロセッサカードＰＰＣｎは、データパケットと共に「フロー未知（Ｆｌｏｗ  Ｕｎｋｎｏｗｎ）」メッセージをパケット処理マネージャに送信する（工程５０６）。
【００４８】
パケット処理マネージャは、グローバルフローテーブル（５０８）においてフロールックアップを実行する（工程５０８）。フローがグローバルフローテーブル内で見つからない場合、パケット処理マネージャは、オーナーパケットプロセッサを新しいフローに割り当てる（工程５１０）。一実施形態において、オーナーパケットプロセッサの割り当ては、パケット処理マネージャのソフトウェアモジュールによって実行される。ソフトウェアモジュールは、特定のパケット処理カード上の特定のパケットプロセッサが新しいフローのためのセッションのオーナーになるべきであると決定するためのポリシーを適用する。例えば、パケット処理カードＰＰＣｍ上のパケットプロセッサＰＰｍが、フローのオーナーになるように割り当てられるとする。ソフトウェアモジュールがオーナーシップ割り当てを返すと、パケット処理マネージャのハードウェアモジュールは、スロット番号およびパケットプロセッサ番号などのオーナーパケットプロセッサ識別情報と共に、フローのフロー識別子をエンコードする。次いで、パケット処理マネージャのハードウェアモジュールは、グローバルフローテーブルにフローエントリを追加する。このように追加されたＧＦＴフローエントリは、仮の状態に置かれる。こうして仮ＧＦＴフローエントリが作成され、オーナーシップ割り当てがバインド中になる前に同じフローの第２のデータパケットが到着した場合、第２のデータパケットは、同じ仮ＧＦＴフローエントリにインデックス付けされ、同じオーナーに割り当てられる。
【００４９】
次いで、パケット処理マネージャは、割り当てられたオーナーパケットプロセッサに、データパケットと共に「オーナー（Ｏｗｎｅｒ）」メッセージを送信する（工程５１２）。オーナーパケットプロセッサは、オーナーメッセージを処理し、逆方向フローを決定する（工程５１４）。割り当てられたオーナーパケットプロセッサは、さらに、フローのオーナーシップを受け入れることができるか否かを決定する（工程５１６）。割り当てられたオーナーパケットプロセッサは、フローのオーナーシップを受け入れることができるか否かを決定するために、負荷またはメモリスペースなどの要素を考慮してよい。受け入れられない場合、割り当てられたオーナーパケットプロセッサは、オーナーシップ割り当てを拒否する旨の確認メッセージをパケット処理マネージャに送信し、方法５００は工程５１０に戻り、そこで、パケット処理マネージャが別のパケットプロセッサへの割り当てを決定する。割り当てられたオーナーパケットプロセッサがオーナー割り当てを受け入れる場合、そのオーナーパケットプロセッサは、逆方向フローを決定し、ローカルセッション状態を作成する。次いで、オーナーパケットプロセッサは、データパケットそして順方向フローおよび逆方向フローの情報と共に「セッションバインド（Ｓｅｓｓｉｏｎ  Ｂｉｎｄ）」メッセージをパケット処理マネージャに送信する（工程５１８）。
【００５０】
セッションバインドメッセージの受信後、パケット処理マネージャは、データパケットに対するフローをルックアップし、グローバルフローテーブル内に、順方向フローおよび逆方向フローのエントリの更新など、フロー情報をロードする（工程５２０）。次いで、パケット処理マネージャは、グローバルフローテーブル内のフローエントリをバインドする。次いで、パケット処理マネージャは、データパケットと共に「セッションバインド確認（Ｓｅｓｓｉｏｎ  Ｂｉｎｄ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）」メッセージをオーナーパケットプロセッサに送信する（工程５２２）。最後に、オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する（工程５２４）。
【００５１】
本発明の実施形態において、オーナーパケットプロセッサは、セッションバインドメッセージをパケット処理マネージャに送信する時、その負荷条件をメッセージに付加する。このように、パケット処理マネージャは、パケットプロセッサの各々における負荷に関する情報を収集し、ＰＰＭ−ＳＷモジュールは、フローのオーナーを選択する際に負荷情報を利用してよい。
【００５２】
上述のように、新しいフローオーナーシップ割り当てが行われた時、グローバルフローテーブルのみが、フロー割り当て情報で更新される。セキュリティデバイス内のその他のパケット処理カード（オーナーパケット処理カードなど）は、自身のローカルフローテーブル内にフローエントリをまだ持っていない。ローカルフローテーブルは、データパケットがセキュリティデバイスに到着すると埋められる。このように、ローカルフローテーブルの更新は、専用の処理を必要とせず、むしろ、ローカルフローテーブルは、データトラフィックに基づいてオンデマンドで更新される。ローカルフローテーブルを埋める方法およびその後の処理が、図７Ａに示されている。
【００５３】
例えば、工程５０２に戻ると、同じフローに属する別のデータパケットが、新しいフローの最初のデータパケットを以前に受信したのと同じパケット処理カードであっても異なるパケット処理カードであってもよいパケット処理カード（ＰＰＣｎなど）に到着する。例えば、第２のデータパケットは、最初のデータパケットに対する確認データパケットであってよく、オーナーパケットプロセッサに到着する。オーナーパケットプロセッサのパケット処理カードのローカルフローテーブルは、まだ埋められていないので、フローは、ローカルフローテーブルでは見つからない（工程５０４）。次いで、パケット処理カードは、データパケットと共にフロー未知メッセージをパケット処理マネージャに送信する（工程５０６）。パケット処理マネージャは、グローバルフローテーブル内を調べて、データパケットに関連するフローを見つける（工程５０８）。次いで、方法５００は「Ａ」（図７Ａ）に続き、そこで、パケット処理マネージャは、フローエントリの認識マスクを更新し、データパケットを送信するパケット処理カードＰＰＣｎに「フロー追加（Ｆｌｏｗ  Ａｄｄ）」メッセージを送信する（工程５３０）。パケット処理カードＰＰＣｎは、パケット処理マネージャからフロー追加メッセージを受信し、自身のローカルフローテーブルにフローエントリを追加する（工程５３２）。このように、パケット処理カードＰＰＣｎのローカルフローテーブルは、フローオーナーシップ割り当て情報で更新される。一方で、パケット処理マネージャは、そのフローのオーナーパケットプロセッサにデータパケットを転送する（工程５３４）。オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する（工程５３６）。
【００５４】
ここで、同じフローに属する別のデータパケットが、同じパケット処理カードＰＰＣｎに到着した時（図７の工程５０２）、パケット処理カードＰＰＣｎは、ローカルフローテーブルでフローを見いだし（工程５０４）、方法５００は「Ｂ」（図７Ａ）に続く。パケット処理カードＰＰＣｎは、ローカルフローテーブルに格納されたフロー情報に基づいて、データパケットのオーナーパケットプロセッサを知る。次いで、パケット処理カードＰＰＣｎは、データパケットをオーナーパケットプロセッサに直接転送する（工程５４０）。データパケットは、パケット処理マネージャに再び向かう必要はない。オーナーパケットプロセッサは、データパケットを処理し、適用ポリシー実施後にデータパケットを転送する（工程５４２）。
【００５５】
方法は、工程５３０から５３６までを、グローバルフローテーブルで識別されているがローカルフローテーブルではまだ識別されていないフローに属するデータパケットを受信した各パケット処理カードに対して繰り返す。各データパケットは、同じパケット処理カードに到着する同じフローの後続のデータパケットが、パケット処理マネージャに向かう必要なしに、パケット処理カードのローカルフローテーブルで識別されるように、フローエントリでローカルフローテーブルを更新させる。
【００５６】
したがって、フローオーナーシップ割り当て方法５００（図７および図７Ａ）は、セキュリティデバイスにわたってパケットプロセッサにフローのオーナーシップを割り当てるよう動作する。いくつかの実施形態において、パケット処理マネージャは、処理リソースカード上のパケットプロセッサにフローオーナーシップを割り当ててよい。処理リソースカード上のパケットプロセッサは、データパケットを処理し、セキュリティデバイスから出すためにパケット処理カードにデータパケットを転送する。
【００５７】
接続セッションが終了すると、セキュリティデバイスは、終了した接続セッションに関連する状態を一掃する必要がある。図８は、本発明の一実施形態に従ってセッションティアダウン方法を示すフローチャートである。本発明の実施形態において、セッションティアダウン方法６００は、複数のパケット処理カードとパケット処理マネージャとを備える図２のセキュリティデバイス１０２で実施されてよい。図８を参照すると、工程６０２で、オーナーパケットプロセッサは、接続セッションが終了して任意のさらなるタイムアウトが失効したことを決定する。したがって、セッションはティアダウンされうる。オーナーパケットプロセッサは、パケット処理マネージャに「セッションティアダウン（Ｓｅｓｓｉｏｎ  Ｔｅａｒｄｏｗｎ）」メッセージを送信する。セッションティアダウンメッセージの受信後、パケット処理マネージャは、グローバルフローテーブルで順方向フローおよび逆方向フローのエントリをルックアップし、フローに関連する認識マスクをリトリーブする（工程６０４）。パケット処理マネージャは、フローがローカルフローテーブルに追加されたと認識マスクによって特定されたパケット処理カードに、「フロー削除（Ｆｌｏｗ  Ｄｅｌｅｔｅ）」メッセージを送信する（工程６０６）。フロー削除メッセージを受信した各パケット処理カードＰＰＣｎは、フローエントリをルックアップし、終了統計値（ｃｌｏｓｉｎｇ  ｓｔａｔｉｓｔｉｃｓ）を生成する。次いで、パケット処理カードは、ローカルフローテーブルからフローエントリを削除する（工程６０８）。次いで、各パケット処理カードＰＰＣｎは、収集したフロー統計値をオーナーパケットプロセッサに送信する（工程６１０）。オーナーパケットプロセッサは、パケット処理カードからのフロー統計値を集計し、フロー識別子を無効にする（工程６１２）。
【００５８】
本実施形態において、フローオーナーシップ割り当て方法は、１または複数のパケットプロセッサを各々備えた複数のパケット処理カードと、別個のラインカード上に提供されたパケット処理マネージャとを含むセキュリティデバイスで実施される。別の実施形態において、フローオーナーシップ割り当て方法は、複数のプロセッサを備えた単一のパケット処理カードを含むセキュリティデバイスで実施される。プロセッサの１つが、オーナーシップ割り当てのためのパケット処理マネージャとして割り当てられてよい。その場合、各プロセッサは、ローカルメモリ内にオーナーシップ割り当て情報を保持してよい。
【００５９】
フロー予測方法
【００６０】
データネットワークにおいて、特定のデータトラフィックタイプが、複数のセッションを含み、「親」セッションが、後続の「子」セッションを設定するために必要な状態を交換してよい。ＦＴＰ（ファイル転送プロトコル）は、制御セッションが後続のデータ接続を開くのに必要な情報を交換する一例である。ボイスオーバーＩＰは、接続が制御セッションおよびデータセッションを含む別の例である。効果的なセキュリティポリシーを実施し、脅威に適格にアクセスするには、親セッションおよび子セッションが、同じオーナーパケットプロセッサによって処理されることが好ましい。このように、オーナーパケットプロセッサは、効果的なセキュリティポリシー実施のために親セッションおよび子セッションの間で状態を相互に関連付けることができる。
【００６１】
本発明の実施形態において、パケット処理マネージャは、子セッションを予測するために、親セッションのステートフルデコーディングを実行する。本発明の実施形態において、パケット処理マネージャは、予測フローエントリを格納するよう構成された予測フローテーブル２００（図５）を備える。子セッションが予測される時、しばしば、完全なフルエントリがグローバルフローテーブルでなされるのに十分なほど詳細にセッションを予測することができない。例えば、パケット処理マネージャは、ＩＰアドレスから宛先ポートを特定できうるが、ソースポートは未知である場合がある。したがって、１または複数のデータフィールドの値が未知である予測フローエントリが、予測フローテーブル２００内に作成される。本発明の実施形態において、値が未知であることを示すために、ワイルドカードがフロー識別子のデータフィールドで用いられる。一実施形態において、ワイルドカードデータフィールドは、データフィールドの正確な値が未知であることを示すために、ゼロの値を有する。
【００６２】
図９は、本発明の一実施形態における予測フローテーブルを示す。図９を参照すると、予測フローテーブル２００は、親フロー識別子に対する予測キーの対応付けを含む。例えば、エントリ２０４、２０６、２０８、および、２１０が図９に示されている。予測キーは、ソースアドレス（ＳＡ）、宛先アドレス（ＤＡ）、ソースポート（ＳＰ）、および、宛先ポート（ＤＰ）を含んでよい。親フロー識別子は、親フローのフローキーと、その親フローのオーナーパケットプロセッサのスロット番号（Ｓｌｏｔ＃）およびパケットプロセッサ番号（ＰＰ＃）とを含む。ワイルドカードが、子セッションを予測フローにマッチングすることを可能にするために、予測キー内のデータフィールドの１または複数で用いられてよい。例えば、エントリ２０６では、ソースポートフィールドがワイルドカードであり、エントリ２１０では、ソースアドレスがワイルドカードである。一実施形態において、予測キーは、フローの５タプルの情報を含み、５タプルの情報の１または複数のフィールドがワイルドカード値を有しうる。
【００６３】
図１０は、本発明の一実施形態に従ってフロー予測方法を示すフローチャートである。本発明の実施形態において、フロー予測方法７００は、複数のパケット処理カードとパケット処理マネージャとを備える図２のセキュリティデバイス１０２で実施されてよい。図１０を参照すると、パケット処理カードＰＰＣｎが、決定される子セッションを持つ親セッションを示す接続セッションのデータパケットを受信する（工程７０２）。パケット処理カードＰＰＣｎは、データパケットと共に「予測追加（Ｐｒｅｄｉｃｔ  Ａｄｄ）」メッセージをパケット処理マネージャに送信する（工程７０４）。予測追加メッセージの受信後、パケット処理マネージャは、親フロー識別子と予測キーのフィールド内のワイルドカードとを用いて、予測フローテーブルに予測フローエントリを追加する（工程７０６）。
【００６４】
その後、子セッションに属するデータパケットが受信されると、そのデータパケットは、フローがまだグローバルフローテーブルにおいてもローカルフローテーブルのいずれにおいても確立されていないため、フロー未知メッセージと共にパケット処理マネージャに転送される。パケット処理マネージャは、フロー未知メッセージの受信後、グローバルフローテーブル内でフローをルックアップする（工程７０８）。データパケットがグローバルフローテーブル内のどのフローエントリとも一致しない場合、パケット処理マネージャは、予測フローテーブル内でフローをルックアップする（工程７１０）。いくつかの実施形態において、グローバルフローテーブルおよび予測フローテーブルのテーブルルックアップは、同時に実行されてもよい。予測一致が予測フローテーブルで見いだされない場合（工程７１２）、予測処理は終了し（工程７１４）、パケット処理マネージャは、データパケットのオーナーパケットプロセッサを割り当てるための通常の処理に戻る。
【００６５】
しかしながら、予測一致が予測フローテーブルで見いだされた場合（工程７１２）、パケット処理マネージャは、親フロー識別子を用いてグローバルフローテーブルに仮フローエントリを追加する（工程７１６）。本発明の実施形態において、グローバルフローテーブルは、さらに、エントリが予測テーブルエントリと一致したことを示す予測フラグを含む。予測一致の結果としての仮フローエントリに対して、エントリ内に予測フラグが設定される。グローバルフローテーブルにおいて、親セッションのオーナーパケットプロセッサは、子セッションのオーナーパケットプロセッサとして自動的に割り当てられる。オーナー割り当て処理を実行する必要はない。パケット処理マネージャは、データパケットと共に新しいフロー（子セッション）のためのオーナーメッセージをオーナーパケットプロセッサに送信する（工程７１８）。オーナーメッセージは、これが予測一致であることを示すために予測フラグセットと共に送信される。
【００６６】
オーナーパケットプロセッサは、新しいフローが、予測された親−子セッションに属することを検証する（工程７２０）。新しいフローが検証されると、オーナーパケットプロセッサは、セッションバインドメッセージをパケット処理マネージャに送信する（工程７２２）。パケット処理マネージャは、グローバルフローテーブルに順方向フローおよび逆方向フローを追加し、すでに解決済みのセッションのフローエントリをバインドする。次いで、オーナーパケットプロセッサは、データパケットを処理し、セキュリティポリシーを適用する（工程７２４）。このように、親−子の関係を有するセッションが、同じオーナーパケットプロセッサに割り当てられることで、それらは、それに応じてポリシングされる。
【００６７】
本発明の実施形態において、予測フローテーブル２００は、コンテントアドレッサブルメモリ（ＣＡＭ）を用いて実装される。特に、一実施形態において、予測フローテーブル２００は、格納されたデータワード内の１または複数のビットに「ドントケア」すなわちワイルドカードのマッチング状態を可能にするターナリＣＡＭすなわちＴＣＡＭとして実装される。別の実施形態において、予測フローテーブルおよびグローバルフローテーブルは、同じメモリデバイスの別個の論理コンポーネントとして形成される。
【００６８】
さらに、本発明の実施形態において、予測フローエントリは、子セッションが一致すると削除される。ほとんどの場合、予測フローエントリは、子セッションが通常、親セッションから非常に短い時間枠内に作成されるので、存続期間が短い。
【００６９】
分散型システムにおけるイベント集計
【００７０】
分散型システムとして実装されたセキュリティデバイスにおいて、セキュリティデバイスは、協調的なセキュリティポリシーを実施するために、システム内のすべてのパケットプロセッサにわたってイベントを追跡する必要がある。本発明の実施形態において、セキュリティデバイスは、独立型処理リソースおよび分散型処理リソースの間のメッセージを管理するためのハードウェアオフロードエンジンを用いて、分散型システムにおいてイベント統計を効果的に維持する。本発明の実施形態において、セキュリティデバイスは、所与の閾値を超えたイベントカウントを監視するために、マルチキャストプッシュ通知スキームを実装する。ハードウェアオフロードエンジンおよびマルチキャストプッシュ通知スキームは、イベント統計管理のためのソフトウェアオーバーヘッドを低減する。
【００７１】
図５に戻ると、分散型システムにわたってイベント統計の協調を容易にするために、パケット処理マネージャは、カウンタメモリ３１０と通信する１セットのグローバルイベントカウンタ３００を備えるように実装される。グローバルイベントカウンタ３００は、ソフトウェアによって構成できる多数のカウンタを提供し、各カウンタはグローバルカウンタ識別子によって識別される。一旦構成されると、セキュリティデバイス内の任意のパケットプロセッサは、１または複数のイベントのカウンタ値をインクリメント、デクリメント、または、単にクエリするために、パケット処理マネージャにメッセージを送信できる。さらに、イベントカウンタは、閾値を備えるように構成されてよく、カウンタ値の合計がそれに対応する閾値を超えた場合、パケット処理マネージャは、イベントのカウンタ値を提供している一群のパケット処理カードへメッセージを送信させる。
【００７２】
一実施形態において、パケット処理マネージャは、スイッチングファブリックを介したパケットプロセッサカードとの通信に基づいてメッセージを実施するためにメッセージプロセッサ１９０を備える。メッセージプロセッサ１９０は、ユニキャストおよびマルチキャスト両方のメッセージ交換が可能である。後に詳述するように、メッセージプロセッサ１９０は、イベントカウンタの状態に応じて、パケット処理カードへのマルチキャストプッシュ通知を行う。
【００７３】
図１１は、本発明の実施形態におけるグローバルイベントカウンタ３００の構成を示す。図１１を参照すると、パケット処理マネージャによって維持される１セットのグローバルイベントカウンタは、アキュムレータとも呼ばれる積算カウンタ８５０を備える。アキュムレータ８５０は、セキュリティデバイス内のすべてのパケットプロセッサにわたってイベントを合計して、カウンタ閾値が満たされたことを示すグローバルインディケーションを提示するために用いられる。イベントの各アキュムレータは、カウンタ識別子（カウンタＩＤ）によって識別され、グローバル閾値およびグローバルカウンタ合計に関連する。いくつかの実施形態において、グローバル閾値は、高閾値および低閾値を含む。アキュムレータ８５０は、セキュリティデバイスによって処理されるイベントのための多数のイベントカウンタを格納できるテーブルである。
【００７４】
分散型システムにおいて、パケットプロセッサにわたってイベントカウントを合計する時（イベントカウンタメッセージが消失した時、または、パケットプロセッサが再起動した時など）に、積算誤差が発生しうる。積算誤差を避けるために、パケット処理マネージャは、カウント値を報告する各パケットプロセッサの各イベントカウンタのローカル値を格納するために、図５のカウンタメモリ３１０を維持する。カウンタメモリ３１０に格納されたイベントカウンタのローカル値は、イベントカウンタのインスタンスまたはアキュムレータインスタンスカウンタ（ＡＩＣ）と呼ばれる。図１１は、アキュムレータインスタンスカウンタの３つの例８７０ａ〜ｃである。ＡＩＣ８７０ａは、イベント１のローカルカウンタ値を格納し、ＡＩＣ８７０ｂは、イベント２のローカルカウンタ値を格納し、ＡＩＣ８７０ｃは、イベント３のローカルカウンタ値を格納する。ローカルカウンタ値の合計は、各イベントに対応するグローバルイベントカウンタに格納されたカウンタ合計値である。
【００７５】
ここまでで構成されたように、各パケットプロセッサは、イベントカウンタメッセージを用いて、インクリメント値の代わりにイベントカウンタの現在の値を送信する。パケット処理マネージャは、パケットプロセッサによって送信された現在のカウンタ値を処理し、イベントについてのパケットプロセッサの更新済みの現在の値をそれぞれのＡＩＣに格納する。したがって、カウント誤差につながりうるあらゆるエラー（メッセージ消失またはパケットプロセッサ再起動など）は、単に一時的なものであり、カウンタ合計は、パケットプロセッサが正しい現在のカウンタ値と共に次の更新済みの現在のカウンタ値を送信した時に、自己修正する。
【００７６】
パケット処理マネージャによって維持される１セットのグローバルイベントカウンタは、さらに、レートカウンタ８６０を備える。レートカウンタ８６０は、設定時間枠の間のイベント発生回数を追跡する。イベントの各レートカウンタは、カウンタ識別子（カウンタＩＤ）によって識別され、グローバル閾値、グローバル最大値、および、グローバルフィルレートに関連する。レートカウンタ８６０は、セキュリティデバイスによって処理されるイベントのための多数のイベントカウンタを格納できるテーブルとして形成される。本発明の実施形態において、レートカウンタ８６０は、トークンバケットとして実装される。したがって、各イベントカウンタのためのレートカウンタは、バケットに納まるトークンの最大数と、１秒あたりのトークンのフィルレートとを指定する。
【００７７】
動作中、イベントクエリが、１または複数のトークンを取得しようとするパケットプロセッサによって送信される。クエリが成功すると、パケットプロセッサは、イベントが適合状態で発生していると仮定することができる。フィルレートが閾値を超えた場合、イベントクエリは、イベントが不適合であることを示す否定応答を受信する。
【００７８】
図１２は、パケットプロセッサによってパケット処理マネージャに送信されうるイベントカウンタメッセージの一例を示す。図１２を参照すると、イベントカウンタメッセージ９００は、メッセージが意図するイベントカウンタを識別するためのイベントカウンタ識別子（カウンタＩＤ）を含む。メッセージ９００は、さらに、そのイベントのカウント値を現在記録しているパケットプロセッサのグループを示すためのグループ識別子を含む。メッセージは、さらに、そのイベントの合計ローカルカウンタ値であるカウント値を含む。
【００７９】
パケットプロセッサは、以下のタスクを実行するために、イベントカウンタメッセージ９００をパケット処理マネージャに送信する：（１）イベントカウンタ（アキュムレータまたはイベントレートカウンタ）を割り当てて、カウンタ識別子を返す；（２）設定、インクリメント、または、デクリメント動作により、指定のイベントカウンタを更新する；（３）カウント識別子を提供することによってイベントカウンタを解放する。
【００８０】
一実施形態において、複数のソースからのイベントカウント値を集計する時に積算誤差を避けるために、各パケットプロセッサは、その合計ローカルカウンタ値を報告し、Ｓｅｔコマンドを用いる。パケット処理マネージャは、それぞれのＡＩＣに格納された以前のローカルカウンタ値を最初に減算し、次いで、メッセージ内に提供された現在のローカルカウンタ値を加算することによって、グローバルカウンタ合計を更新する。このように、合計ローカルカウンタ値の誤差はいずれも、一時的なものにすぎず、次のカウンタ値更新で修正される。
【００８１】
本発明の実施形態において、各イベントカウンタメッセージは、パケットプロセッサがセッションを作成する前にすべてのイベントが適合することを保証するために１つのメッセージを送信できるように、複数のイベントカウンタを操作するよう構成されてよい。
【００８２】
本発明の実施形態において、セキュリティデバイス内の各パケット処理カードは、カード上のパケットプロセッサが連続的にカウント値更新を送信する必要がないように、維持しているイベントカウンタのローカルカウンタ値を格納する。図１３は、本発明の別の実施形態におけるパケット処理カードを示す概略図である。図１３のパケット処理カードは、図３のパケット処理カード１６０と同様に構築されており、同じ要素には同じ符号が与えられ、さらなる説明は省略されている。図１３を参照すると、パケット処理カード８００は、パケット処理カードによって処理されるフローのイベント統計を維持するための統計エンジン８１０を備える。統計エンジン８１０は、ローカルカウンタメモリ８２０と通信する。ローカルカウンタメモリ８２０は、パケット処理カードが処理しているフローに関連するイベントカウンタのローカル値を格納する。
【００８３】
本発明の実施形態において、ローカルカウンタメモリは、各イベントカウンタのローカルカウンタ値と、ローカル閾値とを格納する。イベントのローカルカウンタ値がローカル閾値に達すると、統計エンジン８１０は、グローバルカウント合計を更新するために、イベントカウンタメッセージをパケット処理マネージャに送信する。このように、統計エンジン８１０は、グローバルカウンタ合計を定期的に更新するだけでよく、イベントカウンタメッセージによるセキュリティデバイス内の待ち時間が最小限に抑えられる。一実施形態において、ローカル閾値は、同じイベントを処理するパケット処理カードすべてにおいてイベントのローカル閾値を超えた場合でもそのイベントのグローバルカウンタ合計がポリシー実施限界の合計よりも低くなるように選択される。
【００８４】
マルチキャストプッシュ通知
【００８５】
本発明の実施形態において、パケット処理マネージャは、イベントカウンタがグローバル閾値を超えた時にパケットプロセッサに通知するために、マルチキャストプッシュ通知スキームを実装する。上述のように、グローバルイベントカウンタ内のイベントカウンタ（アキュムレータ８５０またはレートカウンタ８６０など）は、グローバル閾値に関連する。グローバルカウンタ合計がグローバル閾値を超えると、パケット処理マネージャは、対象となるパケットプロセッサにマルチキャスト通知メッセージを送信して、イベントカウンタ識別子と、イベントカウンタが不適合状態になったこととを示す。本発明の実施形態において、対象となるパケットプロセッサは、イベントカウンタの統計を追跡しているパケットプロセッサのグループに属することを、イベントカウントメッセージ内のグループ識別子によって特定されたパケットプロセッサである。
【００８６】
各パケットプロセッサは、マルチキャスト通知メッセージの受信後、イベントカウントのローカル状態を不適合状態に移行させる。イベントカウンタが適合状態にある時、パケットプロセッサのグループのためのカウンタ値更新メッセージは、非同期的に送信され、各パケットプロセッサは、カウント値がローカル閾値に達した時にカウント値を報告する。また、パケットプロセッサは、パケット処理マネージャまたはその他の管理プロセッサとのやり取りなしに、独立して新しい接続セッションを作成してよい。
【００８７】
しかしながら、イベントカウンタが不適合状態である時、パケットプロセッサは、グローバルカウンタ合計をパケット処理マネージャにクエリする必要がある。各パケットプロセッサは、イベント状態に基づく決定を進める前に、そのクエリへの応答を待つ必要がある。さらに、パケットプロセッサは、より頻繁にローカルカウンタ値をパケット処理マネージャに報告する。
【００８８】
パケットプロセッサがグローバルカウント合計のクエリを行うと、そのイベントカウンタのグローバルカウント合計は、閾値未満に低下し、再び適合状態になりうる。これが起きると、パケット処理マネージャは、対象となるパケットプロセッサにマルチキャストメッセージを送信して、イベントカウンタが現在適合状態にあり、パケットプロセッサが非同期の動作モードに戻れることを知らせる。
【００８９】
一実施形態において、グローバル閾値は、高閾値および低閾値を含む。グローバルカウンタ合計が高閾値を超えると、イベントカウンタは、不適合状態になる。      グローバルカウンタ合計が高閾値を超えると、イベントカウンタが適合状態に戻れるようになるには、グローバルカウンタ合計が低閾値よりも低下する必要がある。高閾値および低閾値によって提供されるヒステリシスは、イベントカウンタが適合状態と不適合状態との間でチャタリングしないことを保証する。
【００９０】
フロー予測
【００９１】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが：１または複数のネットワークフローに関連する入力データパケットを受信するよう構成された１または複数のパケットプロセッサであって、パケットプロセッサの少なくとも１つは、１または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理するパケットプロセッサと；１または複数のパケットプロセッサにネットワークフローのオーナーシップを割り当てるよう構成されたパケット処理マネージャであって、パケット処理マネージャは、ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付けるグローバルフローテーブルエントリを含むグローバルフローテーブルと、予測ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付ける予測フローエントリを含む予測フローテーブルとを備え；各予測フローエントリは、予測キーと、関連パケットプロセッサオーナーシップ割り当てとを含み、予測キーは、複数のデータフィールドを含み、データフィールドの内の１または複数の値が未知である予測ネットワークフローを識別する。
【００９２】
いくつかの実施形態において、親フローに関連するデータパケットがパケットプロセッサによって受信された時に、予測フローエントリが予測フローテーブルに追加され、予測フローエントリは、予測キー内のワイルドカード値を用いて、予測ネットワークフローが親フローに対応する子フローであると識別し、予測フローエントリは、親フローのオーナーとして割り当てられたパケットプロセッサに予測ネットワークフローを対応付ける。さらに、いくつかの実施形態において、親フローおよび子フローは、ファイル転送プロトコルセッションまたはボイスオーバーＩＤセッションを含む。別の実施形態において、親フローは、制御セッションを含み、子フローは、制御セッションに関連するデータセッションを含む。
【００９３】
いくつかの実施形態において、パケットプロセッサは、ネットワークフローのエントリがローカルメモリ内で見つからない時、受信したデータパケットをパケット処理マネージャに転送し、パケット処理マネージャは、グローバルフローテーブルおよび予測フローテーブル内でネットワークフローをルックアップし；予測フローテーブル内で一致が見いだされない時、パケット処理マネージャは、予測フローエントリ内のパケットプロセッサオーナーシップ割り当てを用いて、ネットワークフローのエントリをグローバルフローテーブルに追加する。
【００９４】
いくつかの実施形態において、セキュリティデバイスは、さらに：１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する１または複数のパケット処理カードと；１または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックと、を備え；１または複数のパケット処理カードは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、ローカルフローテーブルは、パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納する。
【００９５】
本発明の実施形態において、１または複数のパケットプロセッサをそれぞれ含みスイッチングファブリックを通して通信する複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法が：パケット処理カードで第１のデータパケットを受信する工程と；予測フローエントリを追加するために、パケット処理マネージャにメッセージを送信する工程と；複数のデータフィールドを有し、データフィールドの内の１または複数の値が未知である予測ネットワークフローを識別する予測キーを用いて、予測フローエントリを予測フローテーブルに追加する工程であって、予測キーは、第１のデータパケットのパケットプロセッサオーナーシップ割り当てに関連する工程と；パケット処理カードで第２のデータパケットを受信する工程と；第２のデータパケットをパケット処理マネージャに転送する工程と；予測フローテーブル内で第２のデータパケットのネットワークフローをルックアップする工程と；第２のデータパケットのネットワークフローが予測フローテーブル内で見つかった時に、パケット処理マネージャのグローバルフローテーブルにエントリを追加する工程であって、グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含み、エントリは、第１のデータパケットのオーナーパケットプロセッサを第２のデータパケットのオーナーパケットプロセッサとして特定する工程と；割り当てられたパケットプロセッサに第２のデータパケットのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャからオーナーパケットプロセッサに送信する工程と；オーナーシップ割り当ての引き受けを示すメッセージをオーナーパケットプロセッサからパケット処理マネージャで受信する工程と；オーナーパケットプロセッサにネットワークフローを対応付けるバインドエントリをグローバルフローテーブルに格納する工程と；オーナーパケットプロセッサで第２のデータパケットを処理する工程とを備える。
【００９６】
いくつかの実施形態において、方法は、さらに、予測フローテーブルおよびグローバルフローテーブル内で第２のデータパケットのネットワークフローをルックアップする工程を備える。
【００９７】
いくつかの実施形態において、方法は、さらに、予測フローテーブルおよびグローバルフローテーブル内で第２のデータパケットのネットワークフローを同時にルックアップする工程を備える。
【００９８】
いくつかの実施形態において、親フローおよび子フローは、ファイル転送プロトコルセッションまたはボイスオーバーＩＤセッションを含む。別の実施形態において、親フローは、制御セッションを含み、子フローは、制御セッションに関連するデータセッションを含む。
【００９９】
いくつかの実施形態において、方法は、さらに：パケット処理カードで第３のデータパケットを受信する工程と；第３のデータパケットに関連するネットワークフローがグローバルフローテーブル内で見つかった時に、第３のデータパケットを受信したパケット処理カードにネットワークフローのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャから受信パケット処理カードに送信する工程と；第３のデータパケットを受信したパケット処理カードのローカルフローテーブルに、オーナーパケットプロセッサにネットワークフローを対応付けるエントリを追加する工程と；パケット処理マネージャからオーナーパケットプロセッサにデータパケットを転送する工程と；オーナーパケットプロセッサでデータパケットを処理する工程と、を備える。
【０１００】
フローオーナーシップ割り当て
【０１０１】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが：１または複数のネットワークフローに関連する入力データパケットを受信するよう構成された１または複数のパケットプロセッサであって、パケットプロセッサの少なくとも１つは、１または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理するパケットプロセッサと；ネットワークフローのオーナーシップを１または複数のパケットプロセッサに割り当てるよう構成され、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含むグローバルフローテーブルを備えたパケット処理マネージャとを備え；第１のパケットプロセッサが、ネットワークフローのオーナーとして割り当てられた時に、オーナーシップ割り当てをパケットプロセッサに知らせ、１または複数のパケットプロセッサは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知る。
【０１０２】
いくつかの実施形態において、パケット処理マネージャは、オーナーシップ割り当てポリシーを適用してネットワークフローのオーナーシップを１または複数のパケットプロセッサに割り当てるソフトウェアモジュールを備える。
【０１０３】
いくつかの実施形態において、セキュリティデバイスは、さらに：１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する１または複数のパケット処理カードと；１または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックとを備え；１または複数のパケット処理カードは、データパケットが受信されている時に、パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、ローカルフローテーブルは、パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納する。さらに、いくつかの実施形態において、パケット処理カードは、受信したデータパケットに関連するネットワークフローのエントリがローカルフローテーブル内で見つかった時、受信したデータパケットを処理に向けてオーナーパケットプロセッサに転送する。別の実施形態において、パケットプロセッサは、ネットワークフローのエントリがローカルフローテーブル内で見つからない時、受信したデータパケットをパケット処理マネージャに転送し、パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、受信したデータパケットを転送したパケットプロセッサに、すでになされたオーナーシップ割り当てを知らせるよう構成され、パケットプロセッサは、ローカルフローテーブル内にオーナーシップ割り当て情報を格納する。さらに別の実施形態において、受信された各データパケットは、フロー識別子によって識別されたネットワークフローに関連しており、パケット処理マネージャは、フロー識別子内にフローのオーナーパケットプロセッサ割り当てをエンコードし、オーナーパケットプロセッサは、オーナーパケットプロセッサが位置するパケット処理カードを識別するスロット番号と、パケット処理カード上の１または複数のパケットプロセッサの１つを特定するパケットプロセッサ番号とによって識別される。
【０１０４】
本発明の実施形態において、１または複数のパケットプロセッサをそれぞれ含みスイッチングファブリックを通して通信する複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法が：パケット処理カードでデータパケットを受信する工程と；ローカルフローテーブル内で、データパケットに関連するネットワークフローをルックアップする工程と；ネットワークフローがローカルフローテーブル内で見つからなかった時、データパケットをパケット処理マネージャに転送する工程と；パケット処理マネージャのグローバルフローテーブル内でネットワークフローをルックアップする工程であって、グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含む工程と；ネットワークフローがグローバルフローテーブル内で見つからなかった時、受信したデータパケットに関連するネットワークフローのオーナーシップを、パケット処理カードの１つの上のパケットプロセッサに割り当てる工程と；割り当てられたパケットプロセッサにオーナーシップ割り当てを知らせるメッセージを、割り当てられたパケットプロセッサにパケット処理マネージャから送信する工程と；オーナーシップ割り当ての引き受けを示すメッセージを、割り当られたパケットプロセッサからパケット処理マネージャで受信する工程であって、割り当てられたパケットプロセッサは、オーナーパケットプロセッサになる工程と；オーナーパケットプロセッサにネットワークフローを対応付けるバインドエントリをグローバルフローテーブルに格納する工程と；オーナーパケットプロセッサでデータパケットを処理する工程とを備える。
【０１０５】
いくつかの実施形態において、方法は、さらに、オーナーシップ割り当てポリシーに基づいて、パケットプロセッサオーナーシップを割り当てる工程を備える。いくつかの実施形態において、オーナーシップ割り当てポリシーは、１または複数のパケットプロセッサの負荷条件、ランダム選択、または、イングレスパケット処理カードに関連するパケットプロセッサから選択された１または複数の要因を含む。
【０１０６】
いくつかの実施形態において、方法は、さらに、オーナーパケットプロセッサにネットワークフローを対応付けるエントリをグローバルフローテーブルに追加する工程を備える。いくつかの実施形態において、方法は、さらに、パケット処理マネージャがオーナーシップ割り当ての引き受けを示すメッセージを受信した時、エントリの一時的な状態をバインド状態に変更する工程を備える。
【０１０７】
いくつかの実施形態において、方法は、さらに、オーナーシップ割り当ての引き受けを示すメッセージを、順方向フローおよび逆方向のフローの情報と共に、割り当てられたパケットプロセッサからパケット処理マネージャで受信する工程を備える。いくつかの実施形態において、方法は、さらに、オーナーパケットプロセッサにネットワークフローを対応付ける順方向フローおよび逆方向フローのためのバインドエントリをグローバルフローテーブルに格納する工程を備える。
【０１０８】
いくつかの実施形態において、方法は、さらに：ネットワークフローがグローバルフローテーブル内で見つかった時に、データパケットを受信したパケット処理カードにネットワークフローのオーナーシップ割り当てを知らせるメッセージをパケット処理マネージャから受信パケット処理カードに送信する工程と；オーナーパケットプロセッサにネットワークフローを対応付けるエントリを、データパケットを受信したパケット処理カードのローカルフローテーブルに追加する工程と；パケット処理マネージャからオーナーパケットプロセッサにデータパケットを転送する工程と；オーナーパケットプロセッサでデータパケットを処理する工程とを備える。いくつかの実施形態において、方法は、さらに、ネットワークフローのオーナーシップ割り当てを知らされた１または複数のパケット処理カードのインディケーション（示唆）をグローバルテーブルに格納する工程を備える。
【０１０９】
いくつかの実施形態において、方法は、さらに：ネットワークフローが終了した旨のメッセージをパケット処理マネージャで受信する工程と；終了したネットワークフローのオーナーシップ割り当てを知らされた１または複数のパケット処理カードを識別するインディケーションをリトリーブする工程と；それぞれのローカルフローテーブル内の終了したネットワークフローに関連するエントリを削除するために、パケット処理マネージャから識別されたパケット処理カードにメッセージを送信する工程とを備える。いくつかの実施形態において、方法は、さらに、終了したネットワークフローのフロー統計を送信する工程を備える。
【０１１０】
分散型システムにおけるイベント集計
【０１１１】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが：１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケット処理カードは、ローカルカウンタメモリに１または複数のイベントのローカルカウンタ値を格納する１または複数のパケット処理カードと；セキュリティデバイス内の１または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、グローバルイベントカウンタは、カウンタメモリと通信し、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャとを備え；パケット処理マネージャは、イベントを報告する各パケットプロセッサのイベントのローカルカウンタ値のコピーをカウンタメモリに格納し、グローバルイベントカウンタが、ローカルカウンタメモリ内のローカルカウンタ値のコピーを合計することによってイベントのグローバルカウンタ合計値を提供する。
【０１１２】
いくつかの実施形態において、セキュリティデバイスは、さらに、１または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックを備える。
【０１１３】
本発明の実施形態において、複数のネットワークフローを処理するためのセキュリティデバイスが：１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケットプロセッサは、ローカルカウンタメモリに１または複数のイベントのローカルカウンタ値を格納する１または複数のパケット処理カードと；セキュリティデバイス内の１または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャとを備え；グローバルカウンタ合計値がイベントのグローバル閾値を超えると、パケット処理マネージャは、イベントが不適合になったことを示すメッセージを、イベントのローカルカウンタ値を維持する１または複数のパケット処理カード上のパケットプロセッサに送信し；グローバルカウンタ合計値がイベントのグローバル閾値未満である時、パケット処理マネージャは、イベントが適合になったことを示すメッセージを、イベントのローカルカウンタ値を維持する１または複数のパケット処理カード上のパケットプロセッサに送信する。
【０１１４】
いくつかの実施形態において、イベントが不適合または適合になったことを示すメッセージは、マルチキャストメッセージを含む。別の実施形態において、パケット処理マネージャは、スイッチングファブリックを通してパケットプロセッサに対してメッセージを送受信するためのメッセージプロセッサを備える。
【０１１５】
いくつかの実施形態において、グローバルイベントカウンタは、積算カウンタを含む。別の実施形態において、グローバルイベントカウンタは、レートカウンタを含み、各レートカウンタは、カウンタ識別子によって識別され、グローバル閾値、グローバル最大値、および、グローバルフィルレートに関連する。さらに、いくつかの実施形態において、レートカウンタは、トークンバケットとして実装される。
【０１１６】
いくつかの実施形態において、イベントが適合になった旨のメッセージを、パケットプロセッサがパケット処理マネージャから受信すると、パケットプロセッサは、イベントのローカル状態を適合に移行させ、パケット処理マネージャにローカルカウンタ値を定期的に送信する。いくつかの実施形態において、各パケット処理カード内のローカルカウンタメモリは、各イベントのローカル閾値を含み、パケットプロセッサは、ローカルカウンタ値がローカル閾値を超えた時だけ、パケット処理マネージャにローカルカウンタ値を報告する。
【０１１７】
いくつかの実施形態において、セキュリティデバイスは、さらに、１または複数のパケット処理カードおよびパケット処理マネージャと通信するスイッチングファブリックを備える。
【０１１８】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。例えば、本発明は、以下の適用例としても実施可能である。
［適用例１］複数のネットワークフローを処理するためのセキュリティデバイスであって、
１または複数のネットワークフローに関連する入力データパケットを受信するよう構成された１または複数のパケットプロセッサであって、前記パケットプロセッサの少なくとも１つは、１または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理する１または複数のパケットプロセッサと、
前記１または複数のパケットプロセッサにネットワークフローのオーナーシップを割り当てるよう構成されたパケット処理マネージャであって、前記パケット処理マネージャは、ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付けるグローバルフローテーブルエントリを含むグローバルフローテーブルと、予測ネットワークフローをパケットプロセッサオーナーシップ割り当てに対応付ける予測フローエントリを含む予測フローテーブルと
を備え、
各予測フローエントリは、予測キーと、関連パケットプロセッサオーナーシップ割り当てとを含み、前記予測キーは、複数のデータフィールドを含み、前記データフィールドの内の１または複数の値が未知である予測ネットワークフローを識別する
セキュリティデバイス。
［適用例２］適用例１に記載のセキュリティデバイスであって、前記予測キーは、予測ネットワークフローの５タプルの情報を含み、前記５タプルの情報の１または複数が、未知の値を有するセキュリティデバイス。
［適用例３］適用例１に記載のセキュリティデバイスであって、親フローに関連するデータパケットがパケットプロセッサによって受信された時に、予測フローエントリが前記予測フローテーブルに追加され、前記予測フローエントリは、前記予測キー内のワイルドカード値を用いて、予測ネットワークフローが前記親フローに対応する子フローであると識別し、前記予測フローエントリは、前記親フローのオーナーとして割り当てられた前記パケットプロセッサに前記予測ネットワークフローを対応付けるセキュリティデバイス。
［適用例４］適用例１に記載のセキュリティデバイスであって、前記予測フローテーブルは、ターナリコンテントアドレッサブルメモリ（ＴＣＡＭ）を含むセキュリティデバイス。
［適用例５］スイッチングファブリックを通して通信し１または複数のパケットプロセッサをそれぞれ含む複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法であって、
パケット処理カードで第１のデータパケットを受信する工程と、
予測フローエントリを追加するために、パケット処理マネージャにメッセージを送信する工程と、
複数のデータフィールドを有し、前記データフィールドの内の１または複数の値が未知である予測ネットワークフローを識別する予測キーを用いて、前記予測フローエントリを予測フローテーブルに追加する工程であって、前記予測キーは、前記第１のデータパケットのパケットプロセッサオーナーシップ割り当てに関連する工程と、
パケット処理カードで第２のデータパケットを受信する工程と、
前記第２のデータパケットを前記パケット処理マネージャに転送する工程と、
前記予測フローテーブル内で前記第２のデータパケットのネットワークフローをルックアップする工程と、
前記第２のデータパケットの前記ネットワークフローが前記予測フローテーブル内で見つかった時に、前記パケット処理マネージャのグローバルフローテーブルにエントリを追加する工程であって、前記グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含み、前記エントリは、前記第１のデータパケットのオーナーパケットプロセッサを前記第２のデータパケットのオーナーパケットプロセッサとして特定する工程と、
割り当てられたパケットプロセッサに前記第２のデータパケットのオーナーシップ割り当てを知らせるメッセージを前記パケット処理マネージャから前記オーナーパケットプロセッサに送信する工程と、
前記オーナーシップ割り当ての引き受けを示すメッセージを前記オーナーパケットプロセッサから前記パケット処理マネージャで受信する工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるバインドエントリを前記グローバルフローテーブルに格納する工程と、
前記オーナーパケットプロセッサで前記第２のデータパケットを処理する工程と
を備える方法。
［適用例６］適用例５に記載の方法であって、前記パケット処理カードで前記第１のデータパケットを受信する工程は、
パケット処理カードでデータパケットを受信する工程であって、前記データパケットは、決定される子セッションを持つ親セッションに関連し、前記予測フローエントリが、前記決定される子セッションのために作成される工程を含む方法。
［適用例７］適用例５に記載の方法であって、前記予測キーは、予測ネットワークフローの５タプルの情報を含み、前記５タプルの情報の１または複数が、未知の値を有する方法。
［適用例８］複数のネットワークフローを処理するためのセキュリティデバイスであって、
１または複数のネットワークフローに関連する入力データパケットを受信するよう構成された１または複数のパケットプロセッサであって、前記パケットプロセッサの少なくとも１つは、１または複数のネットワークフローのオーナーとして割り当てられ、各パケットプロセッサは、自身が割り当てられたオーナーであるフローに関連するデータパケットを処理する１または複数のパケットプロセッサと、
ネットワークフローのオーナーシップを１または複数のパケットプロセッサに割り当てるよう構成され、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含むグローバルフローテーブルを備えたパケット処理マネージャと
を備え、
第１のパケットプロセッサが、ネットワークフローのオーナーとして割り当てられた時に、オーナーシップ割り当てをパケットプロセッサに知らせ、１または複数のパケットプロセッサは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知る
セキュリティデバイス。
［適用例９］適用例８に記載のセキュリティデバイスであって、前記１または複数のパケットプロセッサは、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てをローカルメモリに格納しており、各パケットプロセッサは、自身がオーナーではないデータパケットを受信すると、前記受信したデータパケットに関連するネットワークフローのオーナーシップ割り当てが前記ローカルメモリ内で見つかった場合、前記受信したデータパケットを処理のために前記オーナーに転送するセキュリティデバイス。
［適用例１０］適用例９に記載のセキュリティデバイスであって、パケットプロセッサは、前記ネットワークフローのエントリが前記ローカルメモリ内で見つからない時、受信したデータパケットを前記パケット処理マネージャに転送し、前記パケット処理マネージャは、オーナーを割り当てるよう構成されるか、または、前記受信したデータパケットを転送したパケットプロセッサに、すでになされたオーナーシップ割り当てを知らせるよう構成されているセキュリティデバイス。
［適用例１１］適用例８に記載のセキュリティデバイスであって、さらに、
１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルフローテーブルとを有する１または複数のパケット処理カードと、
前記１または複数のパケット処理カードおよび前記パケット処理マネージャと通信するスイッチングファブリックと
を備え、
前記１または複数のパケット処理カードは、データパケットが受信されている時に、前記パケット処理マネージャからネットワークフローのオーナーシップ割り当てを知り、前記ローカルフローテーブルは、前記パケット処理マネージャから知ったパケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを格納するセキュリティデバイス。
［適用例１２］スイッチングファブリックを通して通信し１または複数のパケットプロセッサをそれぞれ含む複数のパケット処理カードを備えたセキュリティデバイス内で複数のネットワークフローを処理するための方法であって、
パケット処理カードでデータパケットを受信する工程と、
ローカルフローテーブル内で、前記データパケットに関連するネットワークフローをルックアップする工程と、
前記ネットワークフローが前記ローカルフローテーブル内で見つからなかった時、前記データパケットをパケット処理マネージャに転送する工程と、
前記パケット処理マネージャのグローバルフローテーブル内で前記ネットワークフローをルックアップする工程であって、前記グローバルフローテーブルは、パケットプロセッサオーナーシップ割り当てにネットワークフローを対応付けるエントリを含む工程と、
前記ネットワークフローが前記グローバルフローテーブル内で見つからなかった時、前記受信したデータパケットに関連する前記ネットワークフローのオーナーシップを、前記パケット処理カードの１つの上のパケットプロセッサに割り当てる工程と、
前記割り当てられたパケットプロセッサに前記オーナーシップ割り当てを知らせるメッセージを、前記割り当てられたパケットプロセッサに前記パケット処理マネージャから送信する工程と、
前記オーナーシップ割り当ての引き受けを示すメッセージを、前記割り当られたパケットプロセッサから前記パケット処理マネージャで受信する工程であって、前記割り当てられたパケットプロセッサは、オーナーパケットプロセッサになる工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるバインドエントリを前記グローバルフローテーブルに格納する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
［適用例１３］適用例１２に記載の方法であって、さらに、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるエントリを前記グローバルフローテーブルに追加する工程を備える方法。
［適用例１４］適用例１２に記載の方法であって、
前記オーナーシップ割り当ての引き受けを示す前記メッセージを前記割り当てられたパケットプロセッサから前記パケット処理マネージャで受信する工程は、
前記オーナーシップ割り当ての引き受けを示すメッセージを、順方向フローおよび逆方向フローの情報と共に、前記割り当てられたパケットプロセッサから前記パケット処理マネージャで受信する工程を含む、
方法。
［適用例１５］適用例１２に記載の方法であって、さらに、
前記ネットワークフローが前記グローバルフローテーブル内で見つかった時に、前記データパケットを受信した前記パケット処理カードに前記ネットワークフローの前記オーナーシップ割り当てを知らせるメッセージを前記パケット処理マネージャから前記受信パケット処理カードに送信する工程と、
前記オーナーパケットプロセッサに前記ネットワークフローを対応付けるエントリを、前記データパケットを受信した前記パケット処理カードの前記ローカルフローテーブルに追加する工程と、
前記パケット処理マネージャから前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
［適用例１６］適用例１２に記載の方法であって、さらに、
前記ネットワークフローが前記ローカルフローテーブルで見つかった時に、前記ローカルフローテーブル内で前記ネットワークフローの前記オーナーとして特定された前記オーナーパケットプロセッサに前記データパケットを転送する工程と、
前記オーナーパケットプロセッサで前記データパケットを処理する工程と
を備える方法。
［適用例１７］複数のネットワークフローを処理するためのセキュリティデバイスであって、
１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケット処理カードは、前記ローカルカウンタメモリに１または複数のイベントのローカルカウンタ値を格納する１または複数のパケット処理カードと、
前記セキュリティデバイス内の１または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、前記グローバルイベントカウンタは、カウンタメモリと通信し、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャと
を備え、
前記パケット処理マネージャは、前記イベントを報告する各パケットプロセッサのイベントのローカルカウンタ値のコピーを前記カウンタメモリに格納し、グローバルイベントカウンタが、前記ローカルカウンタメモリ内のローカルカウンタ値のコピーを合計することによって前記イベントのグローバルカウンタ合計値を提供する
セキュリティデバイス。
［適用例１８］適用例１７に記載のセキュリティデバイスであって、ローカルカウンタ値を前記パケット処理マネージャに報告する各パケット処理カードは、前記合計ローカルカウンタ値を含むメッセージを前記パケット処理マネージャに送信するセキュリティデバイス。
［適用例１９］適用例１７に記載のセキュリティデバイスであって、前記グローバルイベントカウンタは、積算カウンタを含み、各パケット処理カード内の前記ローカルカウンタメモリは、各イベントのローカル閾値を含み、前記パケット処理カードは、前記ローカルカウンタ値が前記ローカル閾値を超えた時だけ、前記パケット処理マネージャにローカルカウンタ値を報告するセキュリティデバイス。
［適用例２０］複数のネットワークフローを処理するためのセキュリティデバイスであって、
１または複数のパケットプロセッサをそれぞれ形成された１または複数のパケット処理カードであって、各パケット処理カードは、データパケットを送受信するためのデータポートと、ローカルカウンタメモリとを有し、各パケットプロセッサは、前記ローカルカウンタメモリに１または複数のイベントのローカルカウンタ値を格納する１または複数のパケット処理カードと、
前記セキュリティデバイス内の１または複数のイベントのイベント統計を維持するためのグローバルイベントカウンタを備えたパケット処理マネージャであって、各グローバルイベントカウンタは、カウンタ識別子によって識別され、グローバル閾値およびグローバルカウンタ合計値に関連するパケット処理マネージャと
を備え、
前記グローバルカウンタ合計値がイベントの前記グローバル閾値を超えると、前記パケット処理マネージャは、前記イベントが不適合になったことを示すメッセージを、前記イベントのローカルカウンタ値を維持する前記１または複数のパケット処理カード上の前記パケットプロセッサに送信し、前記グローバルカウンタ合計値がイベントの前記グローバル閾値未満である時、前記パケット処理マネージャは、前記イベントが適合になったことを示すメッセージを、前記イベントのローカルカウンタ値を維持する前記１または複数のパケット処理カード上の前記パケットプロセッサに送信する
セキュリティデバイス。
［適用例２１］適用例２０に記載のセキュリティデバイスであって、前記グローバル閾値は、高閾値および低閾値を含み、前記グローバルカウンタ合計値がイベントの前記高閾値を超えると、前記イベントは不適合になり、前記グローバルカウンタ合計値が前記イベントの前記低閾値を下回ると、前記イベントは適合になるセキュリティデバイス。
［適用例２２］適用例２０に記載のセキュリティデバイスであって、イベントが不適合になった旨のメッセージを、パケットプロセッサが前記パケット処理マネージャから受信すると、前記パケットプロセッサは、前記イベントのローカル状態を不適合に移行させ、イベント状態に基づく動作を進める前に、前記イベントの前記グローバルカウンタ合計値について前記パケット処理マネージャにイベントクエリを送信するセキュリティデバイス。
［適用例２３］適用例２０に記載のセキュリティデバイスであって、イベントが適合になった旨のメッセージを、パケットプロセッサが前記パケット処理マネージャから受信すると、前記パケットプロセッサは、前記イベントのローカル状態を適合に移行させ、前記パケット処理マネージャにローカルカウンタ値を定期的に送信するセキュリティデバイス。
【図１】
0006475775.tif 000002
【図２】
0006475775.tif 000003
【図３】
0006475775.tif 000004
【図４】
0006475775.tif 000005
【図５】
0006475775.tif 000006
【図６】
0006475775.tif 000007
【図７】
0006475775.tif 000008
【図７Ａ】
0006475775.tif 000009
【図８】
0006475775.tif 000010
【図９】
0006475775.tif 000011
【図１０】
0006475775.tif 000012
【図１１】
0006475775.tif 000013
【図１２】
0006475775.tif 000014
【図１３】
0006475775.tif 000015