(57)【要約】本プロセスは一次コネクションテーブル内のエントリのうち該一次コネクションテーブル内に別のエントリのための空間を生成するために該一次コネクションテーブルから削除すべきエントリを選択するステップを含む。該プロセスは更に、該選択されたエントリに対応するコネクションのためのエントリを二次コネクションテーブル内に格納することが可能である。【選択図】図１Ｂ
2015530021.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク装置のメモリ内に一次コネクションテーブルを維持し、
該一次コネクションテーブル内のエントリのうち、該一次コネクションテーブル内に新たなエントリのための空間を生成するために該一次コネクションテーブルから削除すべきエントリを選択し、
該一次コネクションテーブルから該選択されたエントリを削除し、
該選択されたエントリからの情報を二次コネクションテーブルのエントリ内に格納する、
という各ステップからなるプロセス。
【請求項２】
前記一次コネクションテーブルから削除された前記選択されたエントリに対応するコネクションの通信に応じて、前記二次コネクションテーブルの前記エントリからの前記情報を使用して該コネクションに対応するエントリを前記一次コネクションテーブル内に再構築するステップを更に含む、請求項１に記載のプロセス。
【請求項３】
前記メモリが、前記ネットワーク装置のプロセッサのアドレス空間内のものである、請求項１に記載のプロセス。
【請求項４】
前記二次コネクションテーブルが、前記ネットワーク装置の外部にある記憶システム内にある、請求項１に記載のプロセス。
【請求項５】
前記一次コネクションテーブルが、第１のタイプの第１のルックアップ構造を含み、前記二次コネクションテーブルが、該第１のタイプとは異なる第２のタイプの第２のルックアップ構造を含む、請求項１に記載のプロセス。
【請求項６】
前記エントリの前記選択が、前記選択されたエントリに対応するコネクションが最後に使用されたときに基づいて及び該コネクションのタイプに基づいて行われる、請求項１に記載のプロセス。
【請求項７】
前記タイプが、前記エントリに対応する前記コネクションがレイテンシに関して有している耐性を示すものである、請求項６に記載のプロセス。
【請求項８】
前記ネットワーク装置においてデータパケットを受信し、
該データパケットに対応するエントリを前記一次コネクションテーブル及び前記二次コネクションテーブル内で探索し、該二次コネクションテーブル内で該エントリが発見されたことに応じて、
該二次コネクションテーブル内で発見された該エントリを使用して、前記一次コネクションテーブル内にあり且つ前記データパケットに対応するエントリを作成し、
該一次コネクションテーブル内に作成された該エントリを使用して前記データパケットを処理する、
という各ステップを更に含む、請求項１に記載のプロセス。
【請求項９】
前記一次コネクションテーブルから削除されたエントリに適応すべく必要に応じて前記二次コネクションテーブルのサイズを拡大又は縮小するステップを更に含む、請求項１に記載のプロセス。
【請求項１０】
前記ネットワーク装置に接続されているネットワーク上の利用可能な記憶手段を使用することにより前記二次コネクションテーブルのサイズを拡大するステップを更に含む、請求項１に記載のプロセス。
【請求項１１】
プロセッサと、
該プロセッサのアドレス空間内のメモリであって一次コネクションテーブルを格納するメモリと、
前記ネットワーク装置において実行される刈り取りモジュールであって、前記一次コネクションテーブル内の複数のエントリから１つのエントリを選択し、及び該選択したエントリからの情報を二次コネクションテーブルへアンロードするよう動作する、刈り取りモジュールと
からなるネットワーク装置。
【請求項１２】
前記刈り取りモジュールが、該ネットワーク装置に接続されているネットワーク上の利用可能な記憶手段を使用して、前記一次コネクションテーブルからアンロードされた情報に適応すべく必要に応じて前記二次コネクションテーブルのサイズを拡大又は縮小する、請求項１１に記載のネットワーク装置。
【請求項１３】
前記一次及び二次コネクションテーブル内のエントリから該ネットワーク装置において受信したデータパケットに対応するエントリを識別するよう構成されたルックアップモジュールを更に含む、請求項１１に記載のネットワーク装置。
【請求項１４】
前記メモリとは別個であり前記二次コネクションテーブルを記憶する記憶システムを更に含む、請求項１１に記載のネットワーク装置。
【請求項１５】
前記記憶システムがハードディスクドライブを含む、請求項１４に記載のネットワーク装置。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワーク又はクラウドのためのシステム及びプロセスは、数百万ものコネクション及びセッションを扱う必要のあるものである。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
既存のソリューションでは、状態情報がアプライアンスのメモリ内にローカルに保持されるため、この規模の要件を満たすことができないことが多い。詳細には、今日の市販の殆どのネットワーク製品は、コネクション及びセッションを維持するために使用されるテーブルのサイズの制限に起因するコネクション又はセッションの上限を有する。かかる制限に達すると、ネットワーク製品は、それ以上新たなコネクションを受け付けることができなくなる。「DoS」（Demial of Service）攻撃は、ファイアウォール等のネットワークアプライアンスのコネクションテーブルを使い果たすことによりかかる制限を悪用しようとするものである。かかる攻撃は、例えば、ネットワーク装置のコネクションテーブルを一杯にすることを望んで数百万もの不完全なコネクションを形成して正当なトラフィックが開始するのを妨げることが可能である。ネットワークアプライアンスのかかる制限、及び「DoS」攻撃に対する脆弱性を低減させる必要性のため、ネットワークソリューションは、より多くのアプライアンスの配置を必要とすることが多く、これによりシステムの複雑さ及びコストが増大することになる。この増大したコストには、より多くのアプライアンスの資本コストだけでなく、増大した管理及びメンテメンスコストも含まれる。
【図面の簡単な説明】
【０００３】
【図１Ａ】一次及び二次コネクションテーブルを用いる装置のブロック図である。
【図１Ｂ】様々な記憶装置内に存在することが可能な二次コネクションテーブルを使用するネットワーク装置を含むシステムのブロック図である。
【図２】ネットワーク装置の一実施形態における一次及び二次コネクションテーブルの論理的な関係を示している。
【図３】ハッシュテーブルを用いた一次及び二次コネクションテーブルを用いた共有ルックアップ構造の論理的な関係を示している。
【図４】１つのコネクションテーブルエントリのフォーマットを示している。
【図５】一次コネクションテーブルから二次コネクションテーブルへ情報を移動して一次コネクションテーブル内の空間を維持するプロセスのフローチャートである。
【図６】一次及び二次コネクションテーブルを用いたネットワーク装置により受信したパケットを処理するためのプロセスのフローチャートである。
【図７】一次コネクションテーブル内の１つ以上のエントリを二次コネクションテーブルへアンロードすることにより該一次コネクションテーブル内に空き領域を作成するプロセスの特定の一実施形態のフローチャートである。
【０００４】
異なる図面における同一符号の使用は、同様又は同一の要素を示すものである。
【発明を実施するための形態】
【０００５】
図１Ａに示すようなネットワーク装置100は、古くなった（aging）コネクション又はセッション並びにかかるコネクション又はセッションの状態を、該ネットワーク装置100のメインメモリ104内のローカルな一次コネクションテーブル110から、該ネットワーク装置100又はそれ以外の任意の場所における利用可能な任意の記憶場所に格納することが可能な二次コネクションテーブル120へと、アンロードする能力を有することが可能である。詳細には、プログラムメモリ108内にありプロセッサ102により実行される刈り取り（reaping）モジュール150は、１つ以上のエントリ112を二次コネクションテーブル120へアンロードして新しいエントリ112のための空間を一次コネクションテーブル110内に提供して、コネクションテーブルのサイズを任意のサイズへと効果的に拡大又は縮小させることが可能である。通常は（必ずではないが）、１つのコネクションエントリは、一次コネクションテーブル110又は二次コネクションテーブル120の一方に存在し得るものであり、同時に両方に存在することはない。アンロードされたコネクションが通信を確立しようとする場合、ネットワーク装置100は、二次コネクションテーブル120を照会し、該コネクションに関連するエントリ122を状態情報と共に読み出し、及び一次コネクションテーブル110内に適当なエントリ112を再確立することが可能である。
【０００６】
ネットワーク装置100は、コネクション又はセッションを分類する（例えば、セッション／コネクションに関係し又はセッション／コネクションを確立しようとする装置又はアプリケーションを識別し、コネクションの用途を識別し、又はレイテンシに対するコネクション又はセッションの感度を判定する）能力を有することが可能である。更に、アンロードのために選択される特定のエントリ112は、性能に対する悪影響を最小限にするためにエントリ情報を使用して選択することが可能である。例えば、アンロードされるエントリ112は、使用される可能性が最も低いコネクション又は影響を受ける可能性が最も低いコネクションがアンロードされるように、存続期間（age）、最終使用時期、及び関連するアプリケーションに基づいて選択することが可能である。図１Ａの構成では、刈り取りモジュール150は、かかる選択ロジック又は任意の所望のビジネスロジックを実施することが可能であり、及び二次コネクションテーブル120にアンロードすべきコネクション又はエントリ112を決定する際にコネクションの分類を用いることが可能である。詳細には、二次コネクションテーブル120の１つのエントリ122内のコネクション又はセッション情報の読み出しは、レイテンシを導入し得るものであり、及び接続中のサービスのタイプを検出する能力は、性能を最適化するのに重要なものとなり得る。プリント、電子メール、及びバックアップ等のサービスは、コネクションエントリ112をアンロードするための良好な候補であり、一方、ストリーミングメディア又はウェブブラウジングといった他のサービスはかかる候補とはならない。テーブル制御モジュールは、サービスタイプを検出し、及び刈り取りモジュール150が二次コネクションテーブル120にプッシュすることができる古くなったサービスを自動的に制御すること又は管理者により制御することを可能とする。
【０００７】
図１Ｂは、一次及び二次コネクションテーブル110,120を用いたシステムにおけるネットワーク装置100の更なる詳細を提供するブロック図である。ネットワーク装置100は、例えば、ファイアウォール、侵入防止システム、ウェブサーバ、ルータ、又はコネクションテーブル又はTCP/IPスタック等の同様の構造を維持することを必要とする任意のミドルボックスといったネットワーク機器とすることが可能である。ネットワーク装置100は、コンピュータアプライアンス又はネットワークアプライアンスといったアプライアンスとして実施することが可能である。アプライアンスは、一般に、特定のリソースを提供するよう設計された別個の独立したハードウェア装置であり、大幅に変更することが困難となり得る統合されたソフトウェアを含むものである。ネットワーク装置100は、代替的には、汎用コンピュータで（例えば、汎用オペレーティングシステム又はソフトウェアアプリケーションの一部として）実施することが可能である。ネットワーク装置100の他の代替的な実施形態として、仮想環境内のソフトウェアサービス（例えば「クラウド」）が挙げられる。以下では、装置100がファイアウォールアプライアンスである一実施形態についての説明に注力する。
【０００８】
ネットワーク装置100は、ネットワーク130上の複数のノードに対してその内外へと通過するデータを制御するために一次テーブル110及び二次テーブル120を使用することが可能である。図１Ｂの実例におけるネットワーク130は、アプライアンス132、ネットワークアタッチストレージ装置134、サーバ136、及びコンピュータ138を含む。アプライアンス132は、ネットワーク装置100と同じタイプのものとすることが可能であるが、より一般的には、ストレージアプライアンス、アンチスパムアプライアンス、又は仮想マシンアプライアンスといった任意のタイプのネットワークアプライアンスとすることが可能である。ネットワークアタッチストレージ装置134は、１つ以上のハードディスクドライブ又はRAIDアレイを含むことが可能であり、例えば、ファイルサーバとして動作することが可能である。サーバ136は、コンピュータプログラムを実行し、ネットワーク130に接続されたプラットフォーム又は外部ネットワーク140に接続されたプラットフォーム上で実行することが可能な他のプログラム又はクライアントからの要求を処理する、任意のタイプのハードウェア装置とすることが可能である。コンピュータ138は、ネットワーク130に接続された汎用コンピューティング装置を表している（本書では、用語「コンピュータ」は、サーバ、コンピュータアプライアンス、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、ゲーム機、電子ブック、スマートフォン、プロセッサを含むその他の装置、仮想化されたコンピューティング又はストレージ要素といったコンピューティング装置、又は本書で説明するプロセスを実施することが可能な他の構成、及びかかる物理的又は仮想的なコンピューティング及びストレージ装置、要素、及び構成であって本書で説明するプロセスを包括的に実行するものの組み合わせを含む、広い意味で使用されている）。
【０００９】
図１Ｂのネットワーク装置100は、プロセッサ102、一次コネクションテーブル110を含むメモリ104、二次コネクションテーブル120を含むことが可能な記憶装置106、及び前記プロセッサ102が実行することができるプロセスのための命令又はコードを含むプログラムメモリ108を含む。メモリ104は、プロセッサ102のアドレス空間内にあるRAMその他の高速メモリとすることが可能である。このため、一次コネクションテーブル110は、プロセッサ102が迅速にアクセスすることができるエントリ112をメモリ104内に維持することが可能であり、これにより、プログラムメモリ108からの命令を実行するプロセッサ102は、エントリ112を使用して最小限のレイテンシでデータフローに作用することが可能となる。しかし、メモリ104のサイズは一次コネクションテーブル110のサイズを制限するものとなる。したがって、一次コネクションテーブル110は（それを単独で使用した場合には）、該一次コネクションテーブル110が収容することができるエントリ112の個数に制限を有するものとなる。現在のハイエンドファイアウォールアプライアンスは、例えば、最大で２百万〜５百万エントリを有するコネクションテーブルを有する。
【００１０】
二次コネクションテーブル120を格納する記憶装置106は、ネットワーク装置100にアクセスすることができる任意のタイプのデータ記憶装置とすることが可能であり、プロセッサ102のアドレス空間内にある必要はない。一実施形態では、記憶装置106は、ネットワーク装置100又はその一部に接続されたハードディスクドライブ又はRAIDである。二次コネクションテーブル120は、代替的に又は追加的に、ネットワーク装置100が保護することが可能なネットワーク130上の任意の装置内の任意のアクセス可能な記憶手段内に格納することが可能である。図１Ｂは、アプライアンス132、ネットワークアタッチストレージ134、サーバ136、又はネットワーク130上の任意のコンピュータ138であって利用可能な記憶手段を有するものに二次コネクションテーブル120を格納することが可能な実例を示している。代替的に、二次コネクションテーブル120は、外部又はパブリックネットワーク140に接続された１つ以上の装置に格納することが可能である。
【００１１】
二次コネクションテーブル120用の記憶手段は、（例えばプロセッサ102のアドレス空間内の）高速アクセスメモリには限定されない。したがって、二次コネクションテーブル120は、メモリ104よりも遙かに大きくすることが可能であり、及び二次コネクションテーブル120内の利用可能なエントリ122は、一次コネクションテーブル110内のエントリ112を数で凌駕することが可能となる。また、ネットワーク装置100は、二次コネクションテーブル120用の内部的な記憶手段に限定されるものではなく、ネットワーク装置100は、利用可能な外部記憶手段を容易に追加することが可能であり、このため、二次コネクションテーブル120及びネットワーク装置100が扱うことができる最大コネクション数を、ネットワーク装置100の変更もしくは交換またはネットワーク130に対する更なるアプライアンスの追加を必要とすることなく、必要とされるあらゆる容量へと容易に拡大又は縮小させることが可能となる。一実施形態では、二次コネクションテーブル120は、ハードディスク上の大きなページファイルによって支持されるプロセッサ102の仮想メモリのユーザ空間内に格納され、このため、二次コネクションテーブル120は、膨大な個数のエントリ122まで拡大させることが可能となる。したがって、状態情報を有するコネクションテープルのエントリを必要に応じて一次コネクションテーブル110にロードしまたは該一次コネクションテーブル110からアンロードすることが可能である。二次コネクションテーブル120のエントリ122は、コネクションテーブルを１つしか有さない従来のシステムがコネクションテーブル内の空間の解放時に解放し損失することとなっていた必要な状態情報を全て保持することが可能である。
【００１２】
プログラムメモリ108は、本書で説明するプロセスを実行するためにプロセッサ102が実行することができるソフトウェアを格納している。プログラムメモリ108は、一次コネクションテーブル110を格納するメモリの物理的な一部とすることが可能であり、メモリ104からのプログラムメモリ108の論理的な分離を不要とすることさえも可能である。代替的に、プログラムメモリ108は、メモリ104から論理的または物理的に分離することが可能であり、及び異なるタイプのメモリ（例えばROM）を含むことが可能である。プログラムメモリ108内に格納されるモジュールの機能の実例として、ファイアウォール、侵入防止システム、又はネットワーク130とネットワーク140との間の通信をフィルタリングすることが可能な他のネットワークセキュリティアプリケーションを実施することが挙げられる。ファイアウォールタイプのアプリケーションでは、ネットワーク130とネットワーク140との間の各コネクション又はセッションは、典型的には、一次コネクションテーブル110内のエントリ112又は二次コネクションテーブル120内のエントリ122によって表される。
【００１３】
図１Ｂのプログラムメモリ108は、刈り取りモジュール150、制御モジュール152、ルックアップモジュール154、アンロードモジュール156、及びリロードモジュール158を含む特定の実例である。制御モジュール152は、装置100のデータフロー機能を実行するために実行されるルーチンを含むことが可能である。詳細には、制御モジュール152は、ネットワークセキュリティ装置の機能を実行することが可能である。例えば、ファイアウォール又は侵入防止システムの場合、制御モジュール152は、ネットワーク130,140間で送信されるデータパケット又はより一般的には通信を評価し、ユーザが提供することが可能なルールに従って該データパケット又は通信を通過させ、廃棄し、又は拒否することが可能である。制御モジュール152は、特に、ルックアップモジュール154を使用して、所与のデータパケットが、一次コネクションテーブル110又は二次コネクションテーブル120内に存在するエントリに対応するか否かを判定することが可能である。制御モジュール152は更に、それぞれの機能を実行するために使用される該制御モジュール152、ルックアップモジュール154、アンロードモジュール156、リロードモジュール158、及び刈り取りモジュール150を制御するルール又はパラメータのユーザ入力のためのインタフェイスを提供することが可能である。
【００１４】
アンロードモジュール156は、古くなったエントリ112（かかるコネクション又はセッションのための状態情報を含む）を一次コネクションテーブル110から二次コネクションテーブル120へアンロードすることが可能である。このアンロードは、ローカル記憶手段106、アプライアンス132（ポリシーサーバとすることが可能なもの）、又はソフトウェアコンポーネント（クラウドサービスで実施されるようなもの）を含む（但しそれらには限定されない）利用可能な任意の記憶手段内の二次コネクションテーブル120に対して行うことが可能である。リロードモジュール158は、二次コネクションテーブル120から一次コネクションテーブル110への状態情報を有するエントリ122の逆の移動プロセスを実行する。刈り取りモジュール150は、二次コネクションテーブル120へアンロードすべき一次コネクションテーブル110内のエントリ112の決定に応じてアンロードモジュール156を起動し、該選択したエントリ112を二次コネクションテーブル120へアンロードさせて一次コネクションテーブル110内に空間を生成することが可能である。刈り取りモジュール150は、特に、新しいエントリのための空間が一次コネクションテーブル110内で常に利用できることを保証する反復する定期的なメンテナンスプロセスとして実行することが可能である。代替的に、刈り取りモジュール150は、必要に応じて（例えば、必要とされる動作のための利用可能な空間を一次コネクションテーブル110が有していないことを制御モジュール152が判定したときに）動作させることが可能である。
【００１５】
ネットワーク装置100は、該ネットワーク装置100を通過するあらゆるアクティブなコネクションを追跡する必要があり、ルックアップ及び削除速度をストレージ効率と平衡化させる追跡技術を用いることが可能である。図２は、別個のルックアップ構造を用いた実施形態における一次コネクションテーブル110と二次コネクションテーブル120との論理的な関係を示している。詳細には、一次コネクションテーブル110は、アクティブなコネクションにそれぞれ対応する複数のエントリ112とルックアップ機構210とを含む。ルックアップ機構210は、一般に、コネクションを識別するキー230に対応するエントリ112の識別を可能にするデータ構造を含む。例えば、所与のコネクションについてのキー230の値は、５つの要素（例えば、該コネクションについてのソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポート、及びプロトコル）に基づいて指定することが可能である。コネクションテーブルのための幾つかのタイプの既知のルックアップ機構をルックアップ機構210に使用することが可能である。例えば、一次コネクションテーブル110は、ハッシュテーブル、リンクリスト、平衡二分木（balanced binary trees）もしくはその他の木構造、圧縮されたバイナリファイル、又はリレーショナルデータベース等のデータ構造を用いたルックアップ機構210を用いることが可能である。
【００１６】
図２の実施形態における二次コネクションテーブル120は、同様に、二次エントリ122と、コネクションを識別するキー230の値に対応するエントリ122の迅速な識別を促進させるルックアップ機構220とを含む。ルックアップ機構220は、ハッシュテーブル、リンクリスト、平衡二分木もしくはその他の木構造、圧縮されたバイナリファイル、又はリレーショナルデータベース等のデータ構造を含む任意の所望のタイプのものとすることが可能である。ルックアップ機構220は、特に、ルックアップ機構210と同じタイプのものとすることが可能であるが、二次コネクションテーブル120は一次コネクションテーブル110よりも遙かに大きなものとすることが可能であり、また、ルックアップ機構210,220は異なるタイプのものとすることが可能である。ルックアップ機構210,220のタイプは、例えば、コネクションテーブル110,120のそれぞれのサイズのテーブルについてのルックアッププロセスを最適化するよう選択することが可能である。追加的又は代替的に、二次コネクションテーブル120のルックアッププロセスのレイテンシは重要度の低いものであるため、ルックアップ機構220は、ルックアップ機構210とは異なる又は一層低速のタイプのものとすることが可能である。例えば、二次コネクションテーブル120の内容のダイジェストをルックアップ機構220に用いることが可能である。ルックアップ機構220のタイプにかかわらず、該ルックアップ機構220を含む二次コネクションテーブル120は、図１Ｂに関して上述したように任意の利用可能な記憶手段に格納することが可能である。より高速のルックアップ動作のためにルックアップ機構220の全部又は一部をメインメモリ104内に配置することが可能であるが、かかる構成は、一次コネクションテーブル110のために利用できる記憶容量を減らすものとなり、不必要となり得るものである。詳細には、二次コネクションテーブル120についてのルックアップ動作は一次コネクションテーブル110についてのルックアップ動作よりも低速であることが予想される。これは、二次コネクションテーブル120は一次コネクションテーブル110よりも遙かに大きなものとなるが、二次コネクションテーブル120の使用は一次コネクションテーブル110の使用と比較してまれであるため、二次コネクションテーブル120の場合には一層低速のルックアップ動作が許容されるからである。
【００１７】
図３は、一次及び二次コネクションテーブル110,120の特定の一実施形態を示している。詳細には、一次コネクションテーブル110は、エントリ112のルックアップにハッシュテーブル310を使用し、二次コネクションテーブル120は、エントリ122のルックアップに別のデータベースルックアップ機構320を使用する。ハッシュテーブル310を使用したルックアッププロセスにおいて、一次コネクションテーブル110に関連付けされた複数のハッシュバケット314のうちの対応する１つのインデックス又はアドレスを生成するハッシュ関数312にキー230を入力することが可能である。ハッシュバケット314及び一次コネクションテーブル110は、図１Ｂのネットワーク装置100内のプロセッサ102のアドレス空間内にある高速メモリ（例えばメモリ104）内に維持することが可能である。図３の実施形態では、各ハッシュバケット314は、一次コネクションテーブル110内のエントリ112へのポインタを含むが、各ハッシュバケット314は、代替的に、状態情報を有するエントリ112を含むことが可能である。考え得るハッシュ衝突に対処すべく、バケット314内のポインタは、代替的に、エントリ112のリンクリストをポイントする（又は格納する）ことが可能であり、ハッシュ関数312が２つ以上の異なるコネクションについて同じインデックス又はアドレスを生成した場合に、キー230の値を使用して該リンクリスト内のコネクションを識別することが可能である。
【００１８】
二次コネクションテーブル120のルックアップ構造で同じキー230を使用することが可能である。二次コネクションテーブル120は、一次コネクションテーブル110よりも遙かに大きいものとすることが可能であるため、二次コネクションテーブル120は、一次コネクションテーブル110で使用するルックアップ構造のタイプとは異なるタイプのルックアップ構造を使用することが可能である。図３の実施形態では、二次コネクションテーブル120は、データベースインデックス等のデータベースルックアップ機構320を使用する。データベースインデックスは、データベーステーブルの１つ以上のカラム（この場合には二次エントリ122とすることが可能）を使用して生成することが可能である。データベース及びコネクションテーブルのための多数の他のタイプの既知のルックアップ機構を使用することが可能である。
【００１９】
一次コネクションテーブル110及び二次コネクションテーブル120は、状態情報を含む関連するコネクションを記述するコネクションテーブルエントリ112,122を使用する。図４は、エントリ112又はエントリ122に使用することができるコネクションテーブルエントリ（CTE）400のフォーマットの一例を示している。一般に、エントリ112,122は、同じフォーマット又は異なるフォーマットを有することが可能であるが、各エントリ122は、リロードモジュール158がリロード動作中にエントリ112を再構築する必要のあるデータを最小限含まなければならない。CTE400は、３つの部分、すなわち、コネクションルックアップデータ410（例えば、コネクションを識別する５つの要素からなるもの）、コネクション使用データ420（例えば、コネクションの最終使用時刻又は年齢（age）等の情報）、及びアプリケーション固有データ430（コネクションに関連するアプリケーションを識別して該コネクションの目的又は用途を示すことができるデータ）を含む。コネクションルックアップデータ410、コネクション使用データ420、及びアプリケーション固有データ430は、所与のコネクションについてのエントリが作成され、アンロードされ、又は再確立される際に、初期化することが可能である。例えば、コネクションを使用しているアプリケーションの識別は、ディープ・パケット・インスペクション（DPI）、プロキシ処理（proxying）、又はその他の技術を介して決定することが可能であり、その識別情報は、アプリケーション固有データ430としてエントリ112内に格納することが可能である。エントリ400内のデータ、特にコネクション使用データは、コネクションについてのデータパケットが処理される度に必要に応じて更新することも可能である。刈り取りプロセスは、コネクションを一次コネクションテーブルから二次コネクションテーブルへ移動することができるときを判定する際に、該コネクションに関するコネクションルックアップデータ410、コネクション使用データ420、又はアプリケーション固有データ430を使用することが可能である。
【００２０】
図４に示すエントリ400のフォーマットは単なる一例である。より詳細には、エントリ112又はエントリ122の内容は、コネクションの性質と採用する刈り取りプロセスのタイプとによって決まるものとすることが可能である。例えば、エントリ112,122は、コネクションで使用中のアプリケーションを追跡するためのアプリケーション固有データ430、コネクションで送受信したバイト数、又はコネクション状態（例えば、TCPプロトコルを用いたコネクションの場合）を含むことが可能である。代替的に、制御又は制御プロセスがコネクションルックアップデータ410内にあるポート情報からアプリケーション識別子を推測できるようにすることにより、アプリケーション固有データ430が一層少ない情報を含むことを可能とし、又は該アプリケーション固有データ430を不要とすることが可能である。ポート情報を使用したアプリケーションの識別は、より精度の低いものとなるが、コネクションテーブルに必要となる記憶手段を削減することを可能にする。
【００２１】
図５は、装置100が一次コネクションテーブルを使用することができる全般的なプロセス500を示している。プロセスに関する以下の説明は、具体的な実例を提供するために図１Ｂのネットワーク装置100の構造について言及したものである。しかし、かかるプロセスは、異なる機構及び装置を採用することが可能である。プロセス500において、ブロック510は、装置100の機能に従って一次コネクションテーブル110を維持するプロセスを表している。例えば、ファイアウォールアプリケーションの場合、装置100は、要求されたコネクションがネットワーク130の保護のために設定された要件又はパラメータを満足させるものである場合に一次コネクションテーブル110内に新たなコネクション及びエントリ112を作成し、受信データパケットを操作する際に該エントリ112をルックアップし及び使用し、コネクションが必要でなくなった際に該コネクションに対応するエントリ112を削除することが可能である。しかし、一次コネクションテーブル110内の空間を維持するために、装置100は、ブロック520で、一次コネクションテーブル110からアンロードするための１つ以上のエントリを該一次コネクションテーブル110から選択することが可能である。この選択は、ユーザ判断又は本書で後述するビジネスロジックに基づいて行うことが可能である。アンロードするためのエントリが選択されると、ブロック530は、該選択されたエントリ112から、二次コネクションテーブル120内に新たに作成することが可能なエントリ122へ情報を格納する。次いで、ブロック540は、該選択されたエントリ112を一次コネクションテーブル110から削除して該一次コネクションテーブル110内に空き領域を作成することが可能である。プロセス500は、一次コネクションテーブル110内の空間を維持するために反復して又は継続して実行することが可能であり、又は一次コネクションテーブル110内に新しいエントリ112又はリロードされたエントリ112のための空間を作成するために必要に応じて実行することが可能である。
【００２２】
一次及び二次コネクションテーブルの使用はまた、コネクションについてのエントリが発見されて使用される態様を変更することが可能である。例えば、図６は、一次及び二次コネクションテーブルを使用するネットワーク装置によりデータパケットを操作するためのプロセス600のフローチャートである。プロセス600は、ブロック610で開始し、ネットワーク装置100において通信パケットを受信する。５つの要素が一般に該パケットに関連付けられて該パケットが属するコネクションを識別するものとなる。次いでブロック620で、ネットワーク装置100は、一次コネクションテーブル110内のエントリ112又は二次コネクションテーブル120内のエントリ122を探索することが可能となる。
【００２３】
図６は、一次コネクションテーブル（PCT）110及び二次コネクションテーブル（SCT）120について別個のルックアッププロセス（例えば、図２のテーブルの実施形態により提供されるようなもの）を使用するブロック620の特定の一実施形態を示している。詳細には、ブロック622は、一次コネクションテーブル110内のエントリを探索し、判定ブロック624が、コネクションに対応するコネクションテールエントリ112が一次コネクションテーブル110内で発見されたと判定した場合、ブロック640は、該パケットをネットワーク装置100の目的に従って従来の態様で処理することが可能である。例えば、ネットワーク装置100がファイアウォールである場合、ブロック640は、コネクションについて設定されたルールに従ってパケットを通過させ、廃棄し、又は拒否することが可能である。判定ブロック624が、コネクションに対応するエントリが一次コネクションテーブル110内で発見されなかったと判定した場合には、ブロック626は、二次コネクションテーブル120内にある前記コネクションに対応するエントリ122を探索する。判定ブロック628が、二次コネクションテーブル120内にもエントリが発見されなかったと判定し、及び判定ブロック630が、該コネクションが許可されたものであると判定した場合には、ブロック650は、該コネクションについて一次コネクションテーブル110内に新たなエントリ112を作成することが可能である。判定ブロック628が、二次コネクションテーブル120が前記コネクションに対応するエントリ122を含むと判定した場合には、判定ブロック660が、（例えば、以下で詳述するように、該エントリ122から一次コネクションテーブル110内のエントリ112へ情報を移動することにより）該二次コネクションテーブル120から該エントリ122を読み出すことが可能である。何れの場合にも、ブロック650又はブロック660は、受信したパケットに対応するコネクションについて一次コネクションテーブル110内にエントリ112を提供し、ブロック640は、装置100の機能に従って該パケットを処理することが可能となる。
【００２４】
ブロック650は、一次コネクションテーブル110内に新たなエントリ112を作成し、ブロック650の特定の一実施形態が、図６のブロック652,700,654に示されている。図示の実施形態では、ブロック650内のエントリ作成プロセス650は、一次コネクションテーブル110が新たなエントリの追加のための利用可能な空間を有しているか否かを先ず判定する。一次コネクションテーブル110内に空間が存在する場合、ブロック654は、一次コネクションテーブル110についてルックアップ構造及びプロセスにより必要とされるあらゆる方法を使用してコネクションのための新たなエントリ112を作成することが可能である。
【００２５】
例えば、図３のハッシュテーブルによる実施形態を使用して（及びハッシュ衝突を無視して）、新たなエントリ112へのポインタを、ハッシュ関数312が該コネクションの５つの要素から生成したインデックス又はアドレスに対応するハッシュバケット214内に格納することが可能であり、該エントリ112は、該コネクションに対応する情報で満たされる。一次コネクションテーブル110内に利用可能な空間が存在しない場合、プロセス650は、刈り取りプロセス700を実行して、１つ以上の一次コネクションテーブルエントリ112を二次コネクションテーブル120へ移動することにより一次コネクションテーブル110内に空き領域を生成することが可能であり、これにより、ブロック654が新たなコネクションについての新たなエントリ112を一次コネクションテーブル110内に作成する前に１つ以上の二次コネクションテーブルエントリ122が作成される。
【００２６】
ブロック660は、二次コネクションテーブル120から一次コネクションテーブル110へエントリをリロードし又は再確立し、この場合にもリロードされるエントリ112のための利用可能な空間が一次コネクションテーブル110内に必要となる。図６に示すリロードプロセス660の特定の一実施形態では、ブロック662は、一次コネクションテーブル110が二次コネクションテーブル120からエントリをリロードするための利用可能な空間を有しているか否かを判定する。一次コネクションテーブル110内に利用可能な空間が存在する場合、ブロック664は、二次コネクションテーブル120内のエントリ122から一次コネクションテーブル110内の利用可能なエントリ112へ情報をロードすることが可能である。次いで、ブロック666で二次コネクションテーブルエントリ122内の領域を解放することが可能となり、該ブロック666は更に、二次コネクションテーブル120のルックアップ構造内の空間を解放することも含む。一次コネクションテーブル110内に利用可能な空間が存在しない場合には、刈り取りプロセス700を実行して、ブロック664,666について上述したようにブロック664がエントリをリロードする前に一次コネクションテーブル110内に空き領域を生成することが可能である。
【００２７】
ブロック700は、刈り取りプロセスに対応するものであり、一次コネクションテーブル110から１つ以上のエントリ112を削除することにより該一次コネクションテーブル110内に空き領域を生成するものである。しかし、エントリ112の刈り取りは、一次コネクションテーブル110内のエントリ112から二次コネクションテーブル120内の対応するエントリ122へ情報をアンロードすることを含むことが可能である。刈り取りプロセス700は、空き領域が必要な場合（例えば、テーブル110が一杯であり且つプロセス650又は660でエントリ112を作成する必要がある場合）に何時でも実行することが可能であり、又は、刈り取りプロセス700は、定期的に実行することが可能であり、又は一次コネクションテーブル110内の利用可能な空間がトリガレベルに近づいた場合（例えば、一次コネクションテーブル110の利用空間が80％又は90％に達したとき）に実行することが可能である。図１Ｂのネットワーク装置100の一実施形態は、刈り取りプロセス700が実行されるときを決定するルールをユーザが定義することを可能にするものである。例えば、コネクション管理の一部として、コネクションのためのパケットが許可された際に、二次コネクションテーブルへ移動するための該コネクションの移動の適当性に影響を与える情報のトリガ部分が見つかるまで、該コネクションについてのエントリに該情報を追加することが可能である。
【００２８】
図７は、刈り取りプロセス700の一実施形態を示すフローチャートである。一般に、刈り取りプロセス700は、任意の所望のビジネスロジックに従って一次コネクションテーブル110内のエントリ112の優先順位付けを行うことが可能であり、コネクションに対応するエントリのうち、該ビジネスロジックが一次コネクションテーブル110内に維持するための最低優先順位を有することを示すエントリを刈り取ることが可能である。ブロック710に示す特定の一実施形態は、最長時間未使用（LRU：least recently used（最も長い時間使用されていない））ルールを使用して、長時間にわたって活動していなかったコネクションを識別する。詳細には、ブロック710は、所定時刻Tよりも前に最後に使用されたコネクションのリストを作成する。次いで、ブロック720は、どのコネクションが一次コネクションテーブル110内に維持すべき最も高い必要性を有するものであるかに従ってエントリをアンロードの対象外とし又は古いエントリ112を優先順位付けすることができるルールに従って、前記リストを変更し又は順序づけすることが可能である。詳細には、コネクションのタイプによっては、レイテンシに対して低い耐性を有するものがあり、それ故、かかるコネクションは、一次コネクションテーブル110内に維持すべき一層高い優先順位を有するものとなる。レイテンシに特に敏感なアプリケーションに関するコネクションは、該リストから除外することが可能であり、よって、一次コネクションテーブル110内に維持されることになる。レイテンシに対する耐性を有するアプリケーションに関するコネクション、又はアクティブなトラフィック間で通常長い中断を有するコネクション（例えば、ウェブプリンタコネクション）は、二次コネクションテーブル120へアンロードするのに好適なものである。
【００２９】
次いで、ブロック730は、一次コネクションテーブル110内に維持すべき低い優先順位を有する１つ以上のエントリ112をアンロードすることが可能である。アンロードされた各エントリ112は、二次コネクションテーブル120内のエントリ122を、該アンロードされたエントリ112に関する情報に基づく情報で満たす。ブロック740は、アンロードされたエントリ112によって占有されていた記憶空間を、新たなエントリ112のために使用できるようにする。アンロード処理は、同様に、一次コネクションテーブル110のルックアップ機構内の空間を解放することが可能である。
【００３０】
本書で説明したシステム及びプロセスは、ネットワーク装置のコネクション／セッションの上限をなくすという利点を有するものである。所与のアプライアンスでサポートされるコネクションの数に対して実際上の制限は存在しない。唯一の制限は、記憶装置のサイズ又は容量である。ネットワーク装置で達成される更なる利点は、コネクションテーブルを使い尽くそうとするDoS攻撃に対するかかるネットワーク装置の堅牢さである。
【００３１】
本書で説明したシステム及びプロセスの幾つかは、コンピュータ読み取り可能媒体（例えば、光学又は磁気ディスク、メモリカード、又は本書で説明した特定のプロセスを行うためにコンピューティング装置が実行することができる命令を記憶したその他の半導体記憶装置といった持続性媒体）を使用して実施することが可能である。かかる媒体は更に、データ及び実行可能命令のダウンロードを提供するインターネット等のネットワークに接続されたサーバその他の装置とすること又はそれらに含めることが可能である。
【００３２】
特定の実施形態を開示したが、かかる実施形態は、単なる例示であり、制限として解釈されるべきではない。本開示の実施形態の様々な適用例及びその特徴の組み合わせは、特許請求の範囲内のものである。
【図１Ａ】
2015530021.tif 000003
【図１Ｂ】
2015530021.tif 000004
【図２】
2015530021.tif 000005
【図３】
2015530021.tif 000006
【図４】
2015530021.tif 000007
【図５】
2015530021.tif 000008
【図６】
2015530021.tif 000009
【図７】
2015530021.tif 000010
【国際調査報告】
2015530021.tif 000011
2015530021.tif 000012