JP2008524965A - Network interface and firewall devices - Google Patents
Network interface and firewall devices Download PDFInfo
- Publication number
- JP2008524965A JP2008524965A JP2007548382A JP2007548382A JP2008524965A JP 2008524965 A JP2008524965 A JP 2008524965A JP 2007548382 A JP2007548382 A JP 2007548382A JP 2007548382 A JP2007548382 A JP 2007548382A JP 2008524965 A JP2008524965 A JP 2008524965A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- semantic
- dos
- address
- packets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
ネットワーク処理装置は、ファイヤーウォールと他のネットワークインターフェイスマネージメントの動作を行う新規なアーキテクチャを提供する。UPM (Unified Policy Management)アーキテクチャは、ファイヤーウォールポリシーマネージメントをルーティングおよびスイッチングの決定に統合させるために、同じメモリと処理構造を使用する。他の実施形態では、再構成可能なセマンティックプロセッサ(Reconfigurable Semantic Processor: RSP)が異なる構文要素を識別するパーサを使用する。これらの構文要素は、その後で、1または複数のセマンティックプロセッシングユニット(SPUs)によって使用され、異なるファイヤーウォールやネットワークインターフェイスやルーティングやスイッチングや他のパケット処理作業が行われる。
【選択図】 図1Network processing devices provide a novel architecture for performing firewall and other network interface management operations. The UPM (Unified Policy Management) architecture uses the same memory and processing structure to integrate firewall policy management into routing and switching decisions. In other embodiments, a Reconfigurable Semantic Processor (RSP) uses a parser that identifies different syntax elements. These syntax elements are then used by one or more semantic processing units (SPUs) to perform different firewalls, network interfaces, routing, switching, and other packet processing tasks.
[Selection] Figure 1
Description
本出願は、2005年7月21日に出願された「ネットワークインターフェイスおよびファイヤーウォールデバイス」という発明の名称のアメリカ特許出願No.11/187,049、2005年7月22日に出願された「プッシュダウンオートマトンを用いているセマンティックエレメントを検出するための方法および装置」という発明の名称のアメリカ特許出願No.60/701,748および2005年5月9日に出願された「侵入検知システム」という発明の名称のアメリカ特許出願No.11/125,956に基づく優先権を主張している。この「侵入検知システム」という発明の名称のアメリカ特許出願No.11/125,956は、2004年12月21日に出願されたアメリカ仮特許出願No.60/639,002の優先権を主張するものでありかつ2003年1月24日に出願された同時係属のアメリカ特許出願No. 10/351,030の一部継続出願である。上記の出願は、すべて引用することにより、それらの内容が本出願に組み入れられているものとする。 This application is based on US patent application No. 11 / 187,049 entitled “Network Interface and Firewall Device” filed on July 21, 2005, “Pushdown Automaton” filed on July 22, 2005. US Patent Application No. 60 / 701,748 entitled "Invention Detection System" and US Patent Application No. 60 / 701,748 entitled "Intrusion Detection System" filed May 9, 2005 Claims priority based on patent application No. 11 / 125,956. US Patent Application No. 11 / 125,956, entitled “Intrusion Detection System”, claims the priority of US Provisional Patent Application No. 60 / 639,002 filed on December 21, 2004, and This is a continuation-in-part of copending US patent application No. 10 / 351,030 filed on January 24, 2003. All of the above applications are incorporated herein by reference in their entirety.
インターネットの解放性は、インターネットに接続されたマシンに対する様々な攻撃をもたらすようになった。これらの攻撃は、対象のマシンが正確に動作することを不可能にするパケットシークエンスを送ることで実行される。この攻撃は、この対象のマシンをクラッシュさせる攻撃や、サービス妨害(Denial of Service: DoS)や、分散型サービス妨害(Distributed Denial of Service: DDoS)や、このマシンが使用不能になるか、このマシンのデータを破損させるか、DoSの攻撃ソースのクローンとして動作させるようにこの対象のマシンのファイルやソフトウェアを変更する攻撃などのカテゴリーに分類される。 The openness of the Internet has led to various attacks on machines connected to the Internet. These attacks are performed by sending a packet sequence that makes it impossible for the target machine to operate correctly. This attack may be an attack that crashes the target machine, denial of service (DoS), distributed denial of service (DDoS), makes this machine unusable, It is categorized as an attack that modifies the files and software on this target machine to either corrupt the data or act as a DoS attack source clone.
多くの攻撃は、公的のインターネットに接続されているマシン上で生成され、企業のインターネットへのコネクションを介して企業に侵入する。インターネットへのコネクションポイントを一つ以上持っている企業もある。したがって、二つのネットワーク間のインターフェイスに配置されているネットワークデバイス(ファイヤーウォールとも呼ばれる)は、これらの攻撃を防ぐために用いられる。例えば、ファイヤーウォールは、公的のインターネットと私的なインターネット間や、二つのインターネットサービスプロバイダー(ISP)ネットワーク間や、二つのローカルエリア・ネットワーク間や、他の何らかのネットワーク間に配置してもよい。ファイヤーウォールデバイスがすべてのインターネットへのコネクションポイントに配置されている場合、その内部のネットワークおよびマシンの周りに境界ファイヤーウォール(perimeter firewall)が形成される。 Many attacks are generated on machines that are connected to the public Internet and break into the enterprise through the company's connection to the Internet. Some companies have more than one connection point to the Internet. Therefore, network devices (also called firewalls) located at the interface between the two networks are used to prevent these attacks. For example, a firewall may be placed between the public and private Internet, between two Internet Service Provider (ISP) networks, between two local area networks, or some other network . If a firewall device is located at every Internet connection point, a perimeter firewall is formed around its internal network and machines.
このファイヤーウォールは、認証されていない攻撃パケットが私的なネットワークに侵入するのを防ぐ機能と、場合によっては、私的なネットワークの内部からの認証されていない送信を防ぐ機能を持つ。ファイヤーウォールのその他の用途には、パケット内部の情報を修正することなどもある。例えば、ファイヤーウォールは、公的なインターネットプロトコル(IP)アドレスと私的なインターネットプロトコル(IP)アドレス間で変換を行うためのネットワークアドレス変換器(NAT)として用いることもできる。 This firewall has a function to prevent an unauthenticated attack packet from entering a private network and, in some cases, a function to prevent unauthorized transmission from inside the private network. Other uses of the firewall include modifying information inside the packet. For example, a firewall can also be used as a network address translator (NAT) to translate between public Internet protocol (IP) addresses and private Internet protocol (IP) addresses.
従来は、ファイヤーウォールオペレーションは、主に、PowerPC(登録商標)のような組み込みプロセッサもしくはIntel class x86プロセッサ(“Intel”は登録商標)のどちらかのプロセッサ上で起動しているソフトウェアモジュールの集合として実行されてきた。問題は、これらのハードウェアのアーキテクチャが、上記のファイヤーウォールオペレーションを効果的に実行するための処理能力を持っていないことである。このため、パケットが送信元から宛先まで流れてきたら、その各々を調べ、それらのパケットが有効であるかを判定するための各種ルールを適用することにより、完全に各種攻撃を防ぎ、それらを取り除くことは不可能ではないとしても難しい。 Traditionally, firewall operations are primarily as a collection of software modules running on either an embedded processor such as PowerPC® or an Intel class x86 processor (“Intel” is a registered trademark). Has been executed. The problem is that these hardware architectures do not have the processing power to effectively perform the firewall operations described above. For this reason, when packets flow from the source to the destination, each of them is examined, and various rules for determining whether the packets are valid are applied to completely prevent various attacks and remove them. It is difficult if not impossible.
本発明は、この問題および従来例と関連する問題を解決することを目的とする。 The present invention aims to solve this problem and problems associated with the prior art.
ネットワーク処理デバイスは、ファイヤーウォールおよびその他のネットワークインターフェイスの管理オペレーションを制御するための今までにないアーキテクチャを提供する。本発明の他の態様としては、統合型ポリシー管理(Unified Policy Management: UPM)アーキテクチャは、同一のメモリと処理構造を用いて、ファイヤーウォールポリシーマネージメントをルーティングおよびスイッチング判定と統合する。別の実施例では、再構成可能なセマンティックプロセッサ(Reconfigurable Semantic Processor: RSP)は、パーサ(Pasesr)を用いて、異なる構文要素を識別する。これらの識別された構文要素が、その後、一つまたは複数のセマンティック処理ユニット(Semantic Processing Unit: SPUs)によって使用され、異なるファイヤーウォール、ネットワークインターフェイス、ルーティング、スイッチングおよびその他のパケット処理オペレーションを実行する。 Network processing devices provide an unprecedented architecture for controlling the management operations of firewalls and other network interfaces. In another aspect of the invention, a unified policy management (UPM) architecture uses the same memory and processing structure to integrate firewall policy management with routing and switching decisions. In another embodiment, a Reconfigurable Semantic Processor (RSP) uses a parser to identify different syntax elements. These identified syntax elements are then used by one or more Semantic Processing Units (SPUs) to perform different firewall, network interfaces, routing, switching and other packet processing operations.
本発明の前述した目的、特徴、利点およびそれら以外の特徴、目的、利点は、添付図面と関連して記載された本発明の好ましい実施例の以下の詳細な説明から明らかとなるであろう。 The foregoing objects, features, and advantages of the present invention, as well as other features, objects, and advantages will become apparent from the following detailed description of the preferred embodiments of the present invention that is described in conjunction with the accompanying drawings.
図1は、ネットワークインターフェイスデバイス25Aを介して公的IPネットワーク12に接続されている私的インターネットプロトコル(Internet Protocol: IP)ネットワーク24を示している。この公的IPネットワーク12は、パケット交換を提供しさえすればどのような広域ネットワーク(WAN)でもよい。私的ネットワーク24は、公的IPネットワーク12と通信することを必要とする企業内ネットワーク(company enterprise network)やインターネットサービスプロバイダー(Internet Service Provider: ISP)ネットワークや家庭内ネットワークなどである。
FIG. 1 shows a private Internet Protocol (IP)
私的ネットワーク24内のネットワーク処理デバイス25A−25Dは、パケット交換ネットワーク上で通信しさえすればどのようなタイプの通信装置でもよい。例えば、ネットワーク処理デバイス25Aおよび25Bは、ルーターや、スイッチや、ゲートウェイや、ファイヤーウォールなどでよい。エンドポイント25Cは、パーソナル・コンピュータ(PC)であり、エンドポイント25Dは、インターネットウェブサーバーのようなサーバーである。このPC 25Cは、有線イーサネット接続のような有線接続、もしくは例えばIEEE802.11プロトコルを用いている無線接続を介して前記私的ネットワーク24に接続されてもよい。
The
再構成可能なセマンティックプロセッサ(Reconfigurable Semantic Processor: RSP)100は、私的ネットワーク24内のネットワークデバイス25A−25Dを任意に組み合わせたものの中で稼動する。異なるRSP 100は、前記私的ネットワーク24の中に入っていくネットワークトラフィック22とこの私的ネットワーク24を通り抜けていくネットワークトラフィック22の両方を収集し、解析する。この例では、ネットワーク処理デバイス25A内のRSP 100Aは、私的ネットワーク24のためのファイヤーウォールおよび通常のネットワークインターフェイスとして稼動するように構成されている。以下で説明するネットワークインターフェイスオペレーションおよび通常のファイヤーウォールのオペレーションは、RSP 100内で実行されるように示されているが、これらのオペレーションの中には、他の従来のコンピュータアーキテクチャ内でも実行できるものもあるということを理解されたし。
A reconfigurable semantic processor (RSP) 100 operates in any combination of
ある例では、RSP 100Aは、サービス妨害(DoS)攻撃16を検出し、それらを防ぐように構成される。公的IPネットワーク12に接続されている外部PC 14は、私的ネットワーク24内の一つまたは複数のネットワーク処理デバイス25A−25Dを停止させるように意図したDoS攻撃を生成するかもしれない。RSP 100Aは、公的IPネットワーク12から受信した全入力(incoming)パケット20を監視し、そのパケットストリーム20内にあるDoS攻撃16と関連するパケットをすべて廃棄する。RSP 100Aはまた、パケット16を検出し、廃棄することに加え、DoS攻撃16に関連しているとして廃棄されなかったパケット22に対して別のネットワークインターフェイスオペレーション26を実行することできる。例えば、RSP 100Aは、ウィルスおよびマルウェアの検出およびフィルタリングと、ネットワークアドレス変換(Network Address Translation: NAT)と、ルーティングと、統計的な解析と、ロギングと、公的IPネットワーク12と私的IPネットワーク24の間で転送されるパケットに対して必要とされるその他のパケット変換オペレーションなどの機能を適当に組み合わせて提供することができる。これらのオペレーションはすべて、以下でより詳しく説明する。
In one example, the RSP 100A is configured to detect and prevent denial of service (DoS)
別の例では、RSP 100は、私的ネットワーク24の内部に配置されている別のネットワーク処理デバイス、もしくは私的ネットワーク24への入り口である別のいずれかの主要なアクセスポイントに配置されている別のネットワーク処理デバイスに組み込んでもよい(設置してもよい)。例えば、RSP 100Bは、以下でより詳細に説明する、同様の認証や、ルーティングや、統計的解析などのオペレーション26を提供するためにサーバー25D内に配置してもよい。他のやり方では、パケットオペレーション26の一部は、RSP 100B内では実行可能であり、RSP 100A内では実行不可能であるかもしれない。例えば、RSP 100Bは、RSP 100Aによって実行される他のすべてのパケット解析フィルタリングおよびパケット変換に加えて、統計的解析や、DoSフィルタリングを実行してもよい。
In another example, the RSP 100 is located at another network processing device located inside the
私的ネットワーク24内の他のネットワーク処理デバイス25Bおよび25Cは、いずれも、以下で説明されるオペレーションのうちのいずれかを実行するように構成された一つまたは複数のRSP 100を有していてもよい。このRSP 100を用いるプラットフォームはまた、無線インターフェイス(例えば、携帯電話符号分割多重アクセス方式(cellular CDMA)や、時分割多重アクセス(TDMA)や、802.11や、ブルートゥースなど)を介してパケットまたはその他のデータストリームを受け取るなんらかの無線デバイス(例えば、無線携帯端末(wireless PDA)や、無線携帯電話や、無線ルーターや、無線アクセスポイントや、無線クライアントなど)であってもよい。
Each of the other
再構成可能なセマンティックプロセッサ(RSP)
図2Aは、以下で説明する、ある実施例で、ファイヤーウォールオペレーションおよびその他のネットワークインターフェイスオペレーションを実施するために用いられている再構成可能なセマンティックプロセッサ(RSP)100のブロック図を示している。このRSP 100は、入力ポート120を介して受信されるパケットデータストリームをバッファするための入力バッファ140と、出力ポート152を介して出力されるパケットデータストリームをバッファするための出力バッファ150と、を有している。
Reconfigurable Semantic Processor (RSP)
FIG. 2A shows a block diagram of a reconfigurable semantic processor (RSP) 100 that is used to perform firewall operations and other network interface operations in one embodiment, described below. The RSP 100 includes an
直接実行パーサ(Direct Execution Parser: DXP)180は、入力バッファ140において受信されるパケットまたはフレーム(例えば入力「ストリーム」)と、出力バッファ150へと出力されるパケットまたはフレーム(例えば出力「ストリーム」)と、再循環バッファ160内で再循環されるパケットまたはフレーム(例えば再循環「ストリーム」)の処理を制御する。入力バッファ140、出力バッファ150および再循環バッファ160は、先入れ先出し(FIFO/first-in-first-out)バッファであるのが好ましい。
The Direct Execution Parser (DXP) 180 is a packet or frame received at the input buffer 140 (eg, an input “stream”) and a packet or frame output to the output buffer 150 (eg, an output “stream”). And controls the processing of packets or frames (eg, recirculation “streams”) that are recirculated in
また、DXPは、セマンティックプロセッシングユニット(Semantic Processing Unit: SPU)200によるパケットの処理も制御する。このセマンティックプロセッシングユニット200は、バッファ140、バッファ150およびバッファ160とメモリサブシステム215間のデータ転送を制御する。メモリサブシステム215は、入力ポート120から受け取ったパケットを格納し、以下で説明する、統合型ポリシー管理(UPM)オペレーションおよびその他のファイヤーウォールオペレーションのために用いられるアクセス制御リスト(Access Control List: ACL)テーブルをCAM 220内に格納する。
The DXP also controls packet processing by a Semantic Processing Unit (SPU) 200. The
RSP 100は、所定のファイヤーウォールオペレーションを実行するために少なくとも三つのテーブルを使用する。生成規則(PR)176を検索するためのコード178は、パーサテーブル(Parser Table: PT)170に格納される。文法生成規則176は、生成規則テーブル(Production Rule Table: PRT)190内に格納される。SPU 200によって実行されるコードセグメント212は、セマンティックコードテーブル(Semantic Code Table: SCT)210内に格納される。パーサテーブル170内のコード178は、例えば、行列フォーマット(row-column format)やコンテントアドレッサブルフォーマット(content addressable format)などのやり方で格納される。行列フォーマットでは、パーサテーブル170の行は、内部パーサスタック(parser stack) 185により提供される非終端コードNT 172によりインデックス付けされ、列は、入力バッファ140内のデータの先頭から抽出された入力データ値DI[N]174によりインデックス付けされる。コンテントアドレッサブルフォーマットでは、パーサスタック185からの非終端コード172と、入力バッファ140からの入力データ値174を連結したものが、このパーサテーブル(paser table) 170に対する入力をなす。
The
生成規則テーブル190は、パーサテーブル170からのコード178によりインデックス付けされる。テーブル170および190は、パーサテーブル170に対するクエリが、非終端コード172および入力データ値174に対応する(適用可能な)生成規則176を直接送り返すように、図2Aに示されているようにリンクされていてもよい。DXP 180は、パーサスタック185の一番上にある非終端コードを、PRT190から送り返された生成規則(PR)176と取り替え、その後入力バッファ140からのデータの解析を続ける。
Production rule table 190 is indexed by
また、セマンティックコードテーブル210も、パーサテーブル170により生成されたコード178か、生成規則テーブル190により生成された生成規則176、もしくはその両方によってインデックス付けされる。通常、解析結果は、DXP 180が、所定の生成規則176に対して、セマンティックコードテーブル210からのセマンティックエントリーポイント(SEP)ルーチン212がSPU 200によってロードされ、かつ実行されるべきかを判定することを可能にする。
The semantic code table 210 is also indexed by the
SPU 200は、コンテキストシンボルによるアドレス化が可能なように構成されたメモリインターフェイスを提供するメモリサブシステム215に対するいくつかのアクセスパスを有する。メモリサブシステム215、パーサテーブル170、生成規則テーブル190およびセマンティックコードテーブル210は、内部メモリデバイスか、例えばダイナミックランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM)のような外部メモリデバイスもしくはそれらリソースの組み合わせを用いる。各テーブルまたはコンテキストは、共有物理メモリ領域に対するコンテキストインターフェイスに一つまたは複数のその他のテーブルまたはコンテキストを提供するだけでもよい。
The
管理(maintenance)中央演算処理装置(MCPU)56は、SPU 200とメモリサブシステム215の間に接続される。MCPU 56は、RSP 100にとって望ましい機能の中で、従来のソフトウェアとハードウェアによって無理なく遂行できるものはすべて実行する。これらの機能は、通常、あまり使われずかつ最優先で実行されるものではない(時間的に重要でない)機能であり、その機能の複雑性からSCT 210内に含めるようなものではない。MCPU 56は、SPU 200に、MCPUの代わりにタスクを実行するようにリクエストする機能も持っているのが好ましい。
A maintenance central processing unit (MCPU) 56 is connected between the
メモリサブシステム215は、ハッシュ機能(ハッシング関数)またはコンテントアドレッサブルメモリ(CAM)検索を介してDRAM 280内のデータにアクセスするためのアレイマシンコンテキストデータメモリ(AMCD)230を有している。暗号処理ブロック240は、データの暗号化や、復号化や、認証を行い、コンテキスト制御ブロックキャッシュ250は、DRAM 280へのコンテキスト制御ブロックをキャッシュするとともに、DRAM 280からのコンテキスト制御ブロックをキャッシュする。通常キャッシュ260は、基本オペレーションにおいて使用されるデータをキャッシュし、ストリーミングキャッシュ270は、データストリームがDRAM 280へと書き込まれている間と、データストリームがDRAM 280から読み出されている間に、これらのデータストリームをキャッシュする。コンテキスト制御ブロックキャッシュ250は、ソフトウェア制御のキャッシュであるのが好ましい。すなわち、いつキャッシュラインが使用され、いつ開放される(free)のかをSPU 200が決定するのが好ましい。電気回路240、250、260および270はそれぞれ、DRAM 280とSPU 200の間に接続される。TCAM 220は、AMCD 230とMCPU 56の間に接続され、ファイヤーウォールの性能(performance)を十分に向上させるやり方で、アクセス制御リスト(ACL)テーブルおよびその他の要素(parameter)を格納している。
The
より詳細な、RSP 100の機能ブロックに対する設計最適化は、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030に記載されている。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。
More detailed design optimization for the functional blocks of
ファイヤーウォールオペレーションおよびネットワークインターフェイスオペレーションのためのRSPの使用
図1と関連して前述したファイヤーウォールオペレーションおよびその他のネットワークインターフェイスオペレーション26は、生成規則およびセマンティックエントリーポイント(SEP)ルーチン212を使用するRSP 100を用いて実施される。RSPデバイス100の入力ポート120に到着したパケットは、パーサテーブル170内の文法テーブルエントリーを用いて解析され、SEPルーチン212によって意味的に(semantically)処理される。SEPルーチン212は、以下の動作1−5のどれかを実行することを決定する。
1. 該パケットをそのまま受け入れ、それを出力ポート152へ送る。
2. 該パケットをさらなる解析の対象から除外し、それを転送しない。
3. 該パケットを修正した後、それを出力ポート152へ送る。
4. 該パケットを保持し、現在のセッションに関するさらなるパケットが到着するのを待ち、当該パケットに対する最終的な処理(disposition)を決定する。
5. 該パケットを特定の宛先に向けるか、さらなる解析のためにRSP内へ送り返す。
Use of RSP for Firewall Operation and Network Interface Operation The firewall operation and other
1. Accept the packet as it is and send it to
2. Exclude the packet from further analysis and do not forward it.
3. After modifying the packet, send it to
4. Hold the packet, wait for additional packets for the current session to arrive, and determine the final disposition for the packet.
5. Direct the packet to a specific destination or send it back into the RSP for further analysis.
パーサテーブル170内の文法規則は、受け入れ可能なパケットに通過することを許可する一方、周知の異常もしくは疑わしい異常を伴うパケットに対してはSPU 200にフラグを立てるように構成される。文法による通過判定(通過させるかさせないか)の一例としては、TCPフラグ配列(TCP flag settings)がある。TCPフラグフィールドは、その内部に8ビットを持ち、その一部の組み合わせだけが有効である。この文法規則は、パーサテーブル170内で、受け入れ可能なTCP配列はすべて許可し、受け入れ不可能なTCP配列は拒絶するように符号化される(code)。例えば、同一のパケットに設けられたTCPのSYNとFINの組み合わせのメッセージは、有効な組み合わせではないので、DXP 180によって直接除外される(dropされる)。
The grammar rules in the parser table 170 are configured to flag the
一部の受け入れ不可能なパケットまたはオペレーションは、補助用SEPルーチン212によってのみ判定されるかもしれない。これらは、主に、セッションおよびプロトコルの状況と関連している。ある例では、対応するTCP SYNメッセージを送る前に、TCPデータペイロードセグメントを送るかもしれない。この例では、SEPルーチン212は、メモリ280から、TCP SYNメッセージが先に送られていないTCPセッションに関するパケットを除外する。
Some unacceptable packets or operations may only be determined by the auxiliary SEP routine 212. These are mainly related to session and protocol situations. In one example, a TCP data payload segment may be sent before sending the corresponding TCP SYN message. In this example, SEP routine 212 excludes from
直接実行パーサ(DXP) 180は、SPU 200内で追加のサイクルを消費することなくパケットを直接拒絶したり、DoS処理において攻撃パケットでないパケットを直接転送したりすることができるので、SEPコード212と関連しているパーサ文法(parser grammars)を用いることは、(従来のファイヤーウォールを用いたシステムに比べ)性能の向上を提供する。従来のファイヤーウォールは、各パケットを「問題のある」ルールのリストと照合しなければならない。このリストは、新しい攻撃が発見されるのに伴って時間とともに大きくなる。逆に、パーサ文法は、問題の無いパケットだけを記述して、それらの問題の無いパケットだけがRSP 100を通過することを許可されるように書くことができる。このようにして、問題のあるパケットは、自動的に除外されるか、SPU 200によって直接処理される。これは、より拡張性のあるパケット監視オペレーションを提供する。
The Direct Execution Parser (DXP) 180 can either directly reject a packet without consuming additional cycles within the
RSPパーサおよび生成規則テーブル (RSP Parser and Production Rule Table)
RSP 100の、ファイヤーウォールもしくは統合型ポリシー管理(UPM)としてのオペレーションは、特別な例によってよりよく理解できるであろう。以下で説明される例では、RSP 100は、TCPパケットの対サービス妨害(DoS)フィルタリングを提供する。しかし、当業者ならば、以下で説明される概念は、どのような通信プロトコルを用いて送信されるどのようなデータストリームに関するどんな種類のファイヤーウォールオペレーションにも簡単に適用できるとわかるだろう。同様の概念は、以下で説明される統合型ポリシー管理(UPM)オペレーションにも簡単に適用できる。
RSP Parser and Production Rule Table
The operation of
ファイヤーウォールオペレーションおよびUPMオペレーションには、入力データストリームに関する構文を解析し、検出することが含まれる。これらのオペレーションを、図2Bおよび図2Cと関連して説明する。まず図2Bに関して、パーサテーブル170の内部および生成規則テーブル190の内部には、異なる多数の文法に関連する(複数の)コードが同時に存在していてもよい。例えば、コード300は、メディアアクセス制御(MAC)パケットヘッダーのフォーマットの解析に関連し、コード302は、IPパケットの処理に関連し、また別のコードのセットであるコード304は、転送制御プロトコル(TCP)パケットの処理などに関連する。パーサテーブル170内の別のコード306は、以下でより詳しく説明する別のファイヤーウォールオペレーションもしくはサービス妨害(DoS)オペレーションに関連する。
Firewall and UPM operations include parsing and detecting the syntax for the input data stream. These operations are described in conjunction with FIGS. 2B and 2C. First, referring to FIG. 2B, code (related to a plurality of different grammars) may exist simultaneously in the parser table 170 and the generation rule table 190. For example,
PRコード178は、生成規則テーブル190内に格納されている対応する生成規則176にアクセスするために用いられる。特定の検索の実行において必要とされない限り、入力値308(例えば、現在の入力値DI[n] 174(nはバイトで選択された一致幅)と連結される非終端(NT)シンボル172)は、PRテーブル170内でなんらかの特定の順番で割り当てられる必要は無い。
The
ある実施例では、パーサテーブル170は、DXP 180からNTシンボル172とデータ値DI[n] 174を受け取るアドレッサ310も備えている。アドレッサ310は、NTシンボル172をデータ値DI[n] 174と連結させ、この連結した値308を、パーサテーブル170へと送る。概念的には、生成規則テーブル170の構造を、NTコード172とデータ値174の特有な組み合わせのそれぞれに対して一つのPRコード178を持ったマトリックスとして見ることが有用であることが多いが、本発明はそのようには限定されない。異なるアプリケーションに対しては、異なるタイプのメモリおよびメモリ構成が適当である場合もある。
In one embodiment, parser table 170 also includes an
ある実施例では、パーサテーブル170は、コンテントアドレッサブルメモリ(CAM)として実施され、アドレッサ310は、CAMがPRコード178を検索するための鍵としてNTコード172および入力データ値DI[n] 174を使用する。CAMは、TCAMエントリーが格納された(populated with TCAM entries)三値(ternary)CAM (TCAM)であるのが好ましい。各TCAMエントリー(entry)は、NTコード312とDI[n]一致値(DI[n] match value)314を含む。各NTコード312は、複数のTCAMエントリーを保持することができる。
In one embodiment, parser table 170 is implemented as a content addressable memory (CAM), and
DI[n] 一致値(DI[n] match value)314の各ビットは、「0」、「1」または「X」に設定される。この「X」は「無視(Don't Care)」を表す。この機能により、PRコード178は、パーサテーブル170が適合(match)を見つけるために、DI[n] 174の数ビットまたは数バイトけがコード化されたパターンと適合(一致/match)することを必要とする。
Each bit of DI [n] match value (DI [n] match value) 314 is set to “0”, “1”, or “X”. This “X” represents “Don't Care”. With this function, the
例えば、TCAMの一行は、TCP SYNパケットに対するNTコードNT_TCP_SYN 312Aを有しており、その後にそのTCP SYNパケット内に存在しているであろう宛先IPアドレスやTCPメッセージ識別子などのコンテンツを表すさらなる(additional)バイト314Aが続く。このTCAM行の残りのバイトは「無視(Don't Care)」に設定される。こうして、NT_TCP_SYN 312Aおよび数バイトのDI[N]がパーサテーブル170に提示された場合、DI[N]の内の最初のバイトのセットがTCP SYNメッセージ識別子を含んでいれば、DI[N]の残りのバイトが何を含んでいても適合(一致/match)が生じることとなる。
For example, a line of TCAM has an
パーサテーブル170内のTCAMは、上述したように、NT172およびDI[N] 174と一致するTCAMエントリーに対応するPRコード178Aを生成する。この例では、PRコード178Aは、TCP SYNパケットと関連付けられている。このPRコード178Aは、DXP180に送り返されるか、PRテーブル190に直接送り返されるか、またはその両方に送り返されてもよい。ある実施例では、PRコード178Aは、一致状態を作り出すTCAMエントリーの行インデックスとなる。
The TCAM in parser table 170 generates a
図2Cは、生成規則テーブル190の一つの実行可能性のある実施例を示している。この実施例では、アドレッサ320は、DXP 180かパーサテーブル170のいずれか一方からPRコード178を受け取り、DXP 180からNTシンボル172を受け取る。好ましくは、この受け取ったNTシンボル172は、パーサテーブル170へ送られるNTシンボルと同一のNTシンボルであり、パーサテーブルではこのNTシンボルは当該受け取ったPRコード178を生成するのに用いられたものである。
FIG. 2C shows one possible implementation of the production rule table 190. In this embodiment,
アドレッサ320は、これらの受け取ったPRコード178およびNTシンボル172を使用して対応する生成規則176にアクセスする。アドレッサ320はいくつかの実施例においては必ずしも必要ではないが、使用される場合は、DXP 180の一部やPRT 190の一部として設けることができ、また中間の(intermediate)機能ブロックとして設けることができる。例えば、パーサテーブル170またはDXP 180がアドレスを直接作る場合、アドレッサは必要とされない。
The
生成規則テーブル190内に格納されている生成規則176は、三つのデータセグメントを含む。これらのデータセグメントは、シンボルセグメント177Aと、SPUエントリーポイント(SEP)177Bセグメントと、スキップバイトセグメント177Cと、を含む。これらのセグメントは、長さ固定のセグメントでも長さ可変のセグメントであってもよく、ヌル終端化されている(null-terminated)のが好ましい。シンボルセグメント177Aは、DXPのパーサスタック185(図2A)上へ転送される(プッシュされる)複数のシンボルを有している。該複数のシンボルは、終端シンボルと非終端シンボルの両方もしくはその一方からなる。SEPセグメント177Bは、SPU 200がデータのセグメント(segments of data)を処理するのに用いるSPUエントリーポイント(SEP)を有している。以下で説明するある実施例では、SEPセグメント177Bは、現在解析されているパケット内で識別された、ACL(ACL=Access control list)の述語および構文上のその他の要素に対応する。
The
スキップバイトセグメント177Cは、入力バッファ140が自身のバッファポインタをインクリメントし、入力ストリームの処理を進めるために使用するスキップバイト値を有している。また、生成規則の処理において有用なその他の情報も生成規則176の一部として格納することができる。
The
この例では、生成規則コード178Aによってインデックス付けされる生成規則176は、入力バッファ140内の識別されたTCP SYNパケットに対応する。SEPセグメント177Bは、図2Aのセマンティックコードテーブル210内のSPUコード212をポイントする。このSPCコード212は、SPU 200によって実行されると、以下図4−11で説明されるように、識別されたTCP SYNパケットに対して(on)DoSオペレーションを実行するものである。
In this example,
ある実施例では、SPU 200は、並列処理的に実行できるセマンティックプロセッシングエレメントの配列(array)を有する。生成規則176A内のSEPセグメント177Bは、一つまたは複数のSPU 200を起動し、並列処理的に(in parallel)、異なるパケットに対して同一のファイヤーウォールオペレーションを実行したり、同一のパケットに対して異なるファイヤーウォールオペレーションを実行したりすることができる。同様のオペレーションは、以下で説明するいかなるファイヤーウォールオペレーションや、ネットワークインターフェイスオペレーションや、UPMオペレーションに必要な他の種類のパケット識別もしくはデータ識別を検出するのにも用いることができるのは明らかであろう。
In one embodiment,
上述したように、パーサテーブル170は、TCP SYNパケットと関連している別の文法や、TCP SYNパケットと関連していない別の文法を含んでいてもよい。例えば、パーサテーブル170に含まれるIP文法302は、DoS処理(以下の図4−11参照)を制御するために、識別されたTCP SYNメッセージと組み合わせて用いられる入力バッファ140内の識別されたNT_IP宛先アドレスと関連している生成規則コード178を含んでいてもよい。
As described above, parser table 170 may include other grammars associated with TCP SYN packets or other grammars not associated with TCP SYN packets. For example, the
生成規則コード302内の一致データ値(matching data value)314は、図1の私的ネットワーク24内に配置されたネットワーク処理デバイスの宛先IPアドレスを含んでいる。NT_IPコード172と関連している入力データDI[I] 174が、PRコード302に関する一致値314に含まれる宛先アドレスを保持していない場合、デフォルト生成規則コード178が生成規則テーブル190へ供給されてもよい。このデフォルト生成規則コード178は、DXP 180か、SPU 200もしくはその両方に入力バッファ140から当該パケットを廃棄するように命令する(direct)生成規則テーブル190内の生成規則176をポイントする。
The matching
サービス妨害(Denial of Service (DoS))
図3は、どのようなやり方でDoS攻撃16が、ネットワーク処理デバイス406を危険にさらすことができるのかを示している。一般的に、DoS攻撃の予防の目的は、悪意あるパケットが私的ネットワーク24内のネットワーク処理デバイスへのアクセス権を得るのを防ぐことである。以下の説明では、ネットワークデバイスを多数のパケットであふれさせることに関連したDoS攻撃の一例について論じる。しかしながら、一つまたは少数の悪意あるパケットに関連した他のタイプの悪意ある攻撃も多数存在する。例えば、他の悪意ある攻撃は、ネットワーク処理デバイスプロトコルの通常のオペレーションを中断させる(disrupt)一つまたは複数のパケットに関連している可能性がある。ネットワーク処理デバイスまたはネットワークに対するこれらの攻撃はすべて、以下では通常、DoS攻撃と呼ばれ、それらはすべて本システムの範囲内に含まれる。
Denial of Service (DoS)
FIG. 3 illustrates how a
図3に関連して、攻撃デバイス14は、必ずしもそうというわけではないが、通常私的ネットワーク24の外部で動作しており、私的ネットワーク24を多数のパケットであふれさせる。ある例では、攻撃コンピュータ14は、転送制御プロトコル(TCP)同期(SYN)パケット400のフラッド(floods)を、私的ネットワーク24内の宛先アドレスへ送る。別の例では、攻撃者14は、パケットフラグメント402を私的ネットワーク24内の宛先アドレスへ送る。どちらの場合も、パケット16は、私的ネットワーク24内の一つまたは複数のネットワークデバイス406に、受信した異なるTCP SYNパケット400それぞれに対する状態408を維持させ、かつ受信したパケットフラグメント402の各セットに対する状態410を維持させる。
With reference to FIG. 3, the
TCP SYN攻撃400およびパケットフラグメント攻撃402は、実行可能性のある多数の異なるタイプのDoS攻撃の例に過ぎない。例えば、攻撃者は、TCP終了(FIN)パケットを送ったり、パケットフラグメントをオーバーラップさせたりすることで、ネットワークデバイスを停止させることもできる。別のポートに基づいたDoS攻撃では、ワームが私的ネットワーク24内のマシン内に配置される。このワームは、その後攻撃者14に命令され、当該私的ネットワーク24の内側から偽造メッセージ(bogus message)送る。このDoS攻撃は、インターネット・コントロール・メッセージ・プロトコル(ICMP)メッセージを介して開始されてもよい。
新しいTCP SYNパケット400がネットワーク処理デバイス406によって受信されると必ず、新しいTCPセッション状態408が維持され、対応するTCP ACKメッセージ404が送信側デバイス(攻撃者14)に送り返される。しかし、当該攻撃者14は、TCP ACK返答404を無視し、その代わりに、その私的ネットワーク24に新しいTCP SYNメッセージを送り続ける。攻撃者14は、TCP SYNメッセージ400に偽造された送信元アドレスを挿入することもある。この場合、ネットワークデバイス406は、TCP SYN ACKメッセージ404を別の被害者側コンピュータに送ることになるので、被害者側コンピュータはTCP SYN ACKメッセージ404のフラッドの処理という負担を強いられることとなる。
Whenever a new
このネットワーク処理デバイス406は、なんらかの所定の期間中、各TCP SYNメッセージ400に対応するTCP状態408を維持することを要求される。大量の偽造のTCP状態408を維持すると、ネットワークデバイス406内のリソースは、他の正当なIPトラフィックの処理速度がひどく落ちるか、その正当なIPトラフィックが停止するところまで使い果たされる。
This
同様の筋書きで、攻撃者14は、関連したシーケンス番号を持つパケットフラグメント402を送ることもある。ネットワーク処理デバイス406は、シーケンス402内の各パケットフラグメントが受信され終わるか、なんらかのタイムアウト時間が終了するまで状態410を維持しなければならない。攻撃者14は、意図的に、パケットフラグメント402を当該シークエンスから除外する。これは、ネットワークデバイス406に、タイムアウト時間の持続期間中、パケットフラグメントのセットそれぞれに対する状態410を維持することを要求し、これにより、処理リソースを使い果たさせる。
In a similar scenario, the
これらのタイプのDoS攻撃を防ぐための従来の技術は、入力パケット16のレート(rate)制限を行うことであった。例えば、ネットワーク処理デバイス406は、すべてのTCP SYNパケットに関して宛先アドレスを識別する。特定の宛先アドレス宛のTCP SYNパケットは、受信されたパケットの数が所定のレートを上回ると、除外される。
The conventional technique for preventing these types of DoS attacks has been to limit the rate of the
しかし、各DoS攻撃を継続的に監視し、追跡するのには、大量のデバイスリソースが用いられる。ネットワーク処理デバイス406は、すべての入力パケットを実行可能性のあるDoS脅威それぞれに関して監視することを要求される。例えば、該ネットワーク処理デバイス406は、各TCP SYNパケットと各パケットフラグメントを識別することを要求される。この処理だけでも厳しいものである。しかし、ネットワーク処理デバイス406は、同様に受信されたパケットの数およびレートを追跡することも要求され、さらに必要であれば、DoSレートのスレッショルドに到達する同様のタイプのパケットを除外することも要求される。問題の一つは、現在のコンピュータアーキテクチャには、現在のネットワーク回線のレートにおいてこれらのDoSオペレーションを実行する能力(機能)が無いということである。
However, a large amount of device resources are used to continuously monitor and track each DoS attack.
図4に関して、ファイヤーウォール420は、固有のやり方でパケットのレート制限を行うことにより、効率的にDoS攻撃を識別するとともにDoS攻撃を防ぐ。以下の説明では、DoS攻撃の一部である可能性があるあらゆるパケットを、DoS候補パケットと呼ぶ。例えば、TCP SYNパケットは、DoS攻撃で使用されることがある。そのため、TCP SYNパケットは、ファイヤーウォール420にDoS候補パケットとして識別される。フラグメントパケットも実行可能性のあるDoS攻撃で使用されることがあるので、このパケットもファイヤーウォール420にDoS候補パケットとして識別される。
With reference to FIG. 4, the
ファイヤーウォール420は、関連した宛先アドレスに係るDoS候補パケットのレート制限を行う。実行可能性のあるDoS攻撃それぞれに関して宛先アドレスの識別と管理を行うのには、大量の処理リソースが必要となる可能性がある。しかし、ファイヤーウォール420内で使用されるアーキテクチャは、従来のファイヤーウォールのアーキテクチャよりも高性能であり、より拡張性がある(scalable)ので、このアーキテクチャは、異なる多数のDoS攻撃を高いラインレートで監視しかつ除外することができる。
The
ゾーン (Zones)
ポリシー管理は、ネットワーク処理デバイスまたはネットワークに異なるゾーンを割り当てることができる。これらの異なるゾーンは、例えば、異なる外部ネットワークインターフェイスやこのネットワーク処理デバイス内の内部ネットワークインターフェイスと関連していてもよい。これらのゾーンは、ネットワークポリシー管理の配慮によってDoSオペレーションとは独立して指示されてもよい。一方で、ファイヤーウォール420のある態様は、ポリシーマネージャーがDoS脅威を解析する際にあらかじめ指定した異なるインターフェイスゾーンを配慮する。
Zone (Zones)
Policy management can assign different zones to network processing devices or networks. These different zones may be associated with, for example, different external network interfaces or internal network interfaces within the network processing device. These zones may be indicated independently of DoS operations due to network policy management considerations. On the other hand, certain aspects of the
例えば、第一のゾーン1は、インターフェイス426を介して公的ネットワーク12から受信される公的IPトラフィックと関連させてもよい。第二のゾーン2は、VPNトンネル424を介して私的ネットワーク12上で受信される中程度の信頼度の仮想私的ネットワーク(VPN)トラフィックと関連させてもよい。例えば、VPNトンネル424は、私的ネットワーク24と家庭用コンピュータ422の間に確立されてもよい。この家庭用コンピュータ422は、私的ネットワーク24を稼動している会社の従業員によって操作されてもよい。第三のゾーン3は、私的ネットワーク24の内部を出所とし、インターフェイス428を介して受信される高い信頼度を持つIPトラフィックと関連させてもよい。
For example,
各ゾーンは、異なる信頼のレベルと関連していてもよく、したがって、異なるDoSレート制限が割り当てられてもよい。このDoSレート制限は、特定の期間にファイヤーウォール420を通過することを許可される同一の宛先アドレスを持つ特定のタイプのDoS候補パケット(例えば、TCP SYNメッセージを含んでいるパケットなど)の数と関係している。レート制限の限界に到達したら、同一のDoSタイプで同一の宛先アドレスを持ったそれ以降の(additional)パケットは、すべて除外される。例えば、インターフェイス426を介してゾーン1から受信されたパケットは、それらが公的ネットワーク12を介して信頼できない送信元から受け取られたことから、最も低い信頼度と関連付けられる。したがって、ゾーン1から受信されたパケットには、他のゾーンと比べて低いDoSレート制限値(限界)を割り当ててもよい。
Each zone may be associated with a different level of trust and thus may be assigned different DoS rate limits. This DoS rate limit is defined as the number of specific types of DoS candidate packets (for example, packets containing TCP SYN messages) with the same destination address that are allowed to pass through the
ゾーン2は、恐らくは、パケットが既知のリソース422から受信されるので、中程度の信頼度をもつ。したがって、ゾーン2には、ゾーン1よりも高いDoSレート限界を割り当ててもよい。例えば、規定された期間にゾーン1を通過することが許可される同一の宛先アドレスを持つTCP SYNパケットよりも多くの同一の宛先を持つTCP SYNパケットが、規定された期間にゾーン2を通過することを許可される。この例では、インターフェイス428上で受信されるすべてのパケットは、私的ネットワーク24内に配置されているマシンからのものであるため、ゾーン3は、高い信頼度を持つ。したがって、ゾーン3で受信されるパケットには、さらに高いDoSレート限界を割り当ててもよい。
受信されるパケットと関連付けられるゾーンは、送信元アドレスまたはポート情報によって識別されてもよい。例えば、RSP 100もしくはファイヤーウォール420内で用いられている別の処理デバイスは、入力パケットと関連付けられるゾーンを、関連した送信元アドレスのVLAN IDやパケットがそれを介して受信されるインターフェイスに基づいて決定してもよい。ファイヤーウォール420は、その際、部分的に、パケットと関連している識別されたゾーンに基づいて、DoS攻撃を管理する。例えば、潜在的なDoS脅威に関連しているパケットを、それらに関連しているゾーンに従ってカウントし、管理し、レート制限することができる。これにより、ファイヤーウォール420は、それらに関連している信頼度に従って、より効率的にDoSリソースを異なるインターフェイスに割り当てることができる。これについては以下でより詳しく説明する。
The zone associated with the received packet may be identified by source address or port information. For example, another processing device used within
図5に関して、図4に示されているファイヤーウォール420のある実施例は、DoS候補のパケットおよび非DoS候補のパケットを含んでいるかもしれない入力パケットストリーム440を受け取るプロセッサ442を有している。このプロセッサ420はまず、パケットストリーム440内のDoS攻撃と関連しているかもしれないパケット(DoS候補パケット)を識別する。例えば、プロセッサ442は、TCP SYNメッセージを含んでいるすべての入力パケットフラグメントまたは入力パケットをDoS候補パケットと識別してもよい。
With reference to FIG. 5, one embodiment of the
プロセッサ442は、テーブル464にアクセスし、識別されたDoS候補パケットと関連しているゾーン468を特定する。例えば、プロセッサ442は、識別されたDoSパケット内のポート値をテーブル464のポート番号エントリー466と照合してもよい。このプロセッサはその後、テーブル464内のゾーン468を、適合したポート番号エントリー(matching port number entry)466と関連しているものとみなしてもよい。
The
プロセッサ442は、識別されたDoSパケットに関する宛先アドレス472と、関連しているゾーン値468を組み合わせたものをコンテントアドレッサブルメモリ(CAM) 444へのアドレスとして用いる。このCAM 444は、宛先アドレス値とゾーン値の組み合わせであるDoSエントリー445を収容している。CAM 444内のアドレス位置は、静的ランダムアクセスメモリ(SRAM)450へのポインタとして用いられる。
The
SRAM450内のメモリ位置は、DoS攻撃フラグ452、タイムスタンプ454、ジェネレーション値456およびオフセット458を含むフィールドへと分割される。DoS攻撃フラグ452は、特定の宛先アドレスに関するパケットの数があらかじめ決められたDoSレート制限値を超えるたびに設定される。上述したように、DoSレート制限値は、異なるゾーン448に対してカスタマイズすることができる。
The memory location in
タイムスタンプ454は、TCAM 444に新しいエントリーが加えられるたびに設定され、そして、タイムスタンプの古さ(age of the time stamp)があらかじめ決められたDoS期間を超えてしまうたびに再設定される。ジェネレーション値456は、プロセッサ442が、TCAM 444、SRAM 450および動的ランダムメモリ(DRAM)462内のDoSエントリーの割り当ておよび管理を行うのに用いられる。オフセット値458は、DRAM 462へのポインタとして用いられる。DRAM 462は、DoS期間内にファイヤーウォール420によって受信される特定の宛先アドレスに関するパケットの数を追跡するカウンタ460のセットを有している。
The
プロセッサ442は、DoS攻撃の一部である可能性がある新しいDoS候補パケット474を識別する。新しく識別されたパケット474に関する宛先アドレス472およびゾーン値468は、CAM 444へのアドレスとして用いられる。新しいDoS候補パケット474は、今あるどのエントリーとも一致しないであろうから、プロセッサ442は、パケット474に対する新しいDoSエントリー445をCAM 444に加える。
The
CAM 444内の新しいDoSエントリーに対応するDoS攻撃フラグ452はクリア(消去)され、タイムスタンプ454は、現在のタイム値へ設定される。ジェネレーション値456は、現在どのようなジェネレーションがプロセッサ442内で動作中であっても、以下の図6でより詳しく説明されるように設定される。プロセッサ442は、アドレスオフセット値458を用いて、DRAM 462内の対応するカウンタ460を1へインクリメントする。プロセッサ442は、その後、パケットストリーム440内の次のパケットを処理する。
The
パケットストリーム440内の、潜在的(possible)DoS攻撃に対する基準を満たさないパケットは、DoS候補パケット441とは識別されない。例えば、パケット441は、パケットフラグメントでなく、TCP SYNメッセージを含まない正規のIPパケットであるかもしれない。この場合、プロセッサ442は、これらのパケット441が、これ以上何らかのDoS処理を受けることなくファイヤーウォール420を通過することを許可する。
Packets in packet stream 440 that do not meet the criteria for a potential DoS attack are not identified as DoS candidate packets 441. For example, the packet 441 may not be a packet fragment but a regular IP packet that does not include a TCP SYN message. In this case, the
パケットストリーム440内の次のパケットは、潜在的(possible)DoS攻撃(DoS候補パケット)と識別されるかもしれない。この例では、識別された次のパケットは、すでに、対応するDoSエントリーをCAM 444内に保持しているかもしれない。例えば、同一の宛先アドレスを持つ一つまたは複数のTCP SYNパケットまたはパケットフラグメントが、これよりも前に、同一のDoS期間内にファイヤーウォール420によって受信されていたのかもしれない。その結果、パケットに関する宛先アドレス472およびゾーン468は、CAM 444内のエントリーのうち一つと一致するであろう。適合(一致)したCAMエントリー445に対応するアドレス449は、その後SRAM 450へのアドレスとして用いられる。
The next packet in the packet stream 440 may be identified as a potential DoS attack (DoS candidate packet). In this example, the next identified packet may already have a corresponding DoS entry in
プロセッサ442は、まず、SRAM 450内のDoS攻撃フラグ452を確認する。DoS攻撃フラグ452が設定されている場合、プロセッサ442は、パケットストリーム440内の対応するパケットを除外する。必要であれば、プロセッサ442は、その際、タイムスタンプ454およびジェネレーション値456をアップデートしてもよい。
The
DoS攻撃フラグ452が設定されていない場合、プロセッサ442は、パケットストリーム440内の関連しているパケットがファイヤーウォール420を通過することを許可する。プロセッサ442は、その後、SRAM 450およびDRAM 462内のDoS状態情報をアップデートする。例えば、プロセッサ442は、DRAM 462内の対応するカウンタ460をインクリメントし、その後タイムスタンプ454を現在のタイム値と比較する。タイムスタンプ454が古すぎない場合、DRAM 462内のカウンタ460の対応する値は有効にされ、DoSレート制限値と比較される。カウンタ値460がDoSレート制限値を下回っている場合、プロセッサ442は、パケットストリーム440内の次のパケットの処理へと進む。
If the
タイムスタンプ454が現在のタイム値と比較された際に古すぎた場合、DRAM 462内の対応するカウント値460は、無効となっており(stale)、0へ再設定される。タイムスタンプ454も同様に現在のタイム値へと再設定される。これは、それぞれの所定の期間内にカウント460を効率的に再設定する。タイムスタンプ454が有効であり(古すぎない)かつDRAM462内のインクリメントされたカウント460がDoSレート制限値を上回っている場合、プロセッサ442は、対応するDoS攻撃フラグ452を設定する。これにより、プロセッサ442は、同一の宛先アドレスを持つ同様のパケットを除外することとなる。
If the
ジェネレーション (Generation)
ジェネレーション値456は、CAM 444、SRAM 450およびDRAM 462内のDoSエントリーを管理するために用いられる。図6の例に関して、CAM 444は、論理的に、四つの異なるジェネレーションセクション480へ分割される。しかし、これは一つの実施例に過ぎず、このシステムは、任意に設定可能なサイズを持った任意の数のジェネレーションセクションを持つように構成することができる。
Generation
図5のプロセッサ442は、複数のジェネレーション480に従って複数のDoSエントリーを挿入し、取り除くことで、より効率的にDoS攻撃を識別し、管理することができる。図5−7に関して、プロセッサ442は、オペレーション490で、DoSエントリーを現在のジェネレーション480へ入力し始める。図6に示されるように、DoSエントリー482は現在のジェネレーション0へと入力される。オペレーション492では、プロセッサ442は、現在のジェネレーション0へ加えられた各エントリー482に対して、次のジェネレーション1からエントリー484を一つ取り除く。これにより、プロセッサ442が次のジェネレーションへ移行する際に、CAM 444が常に利用可能な領域を保持していることが保障される。
The
DoSエントリー482は、すでにCAM 444内に存在しているかもしれない。この例では、プロセッサ442は、オペレーション494で、今ある(existing)DoSエントリーに対して現在割り当てられているジェネレーション値456を現在のジェネレーションのものへ切り替える。例えば、DoSエントリー482は、プロセッサ442がジェネレーション0内で動作している間に受信されるとする。このDoSエントリー482は、現在ジェネレーション2に割り当てられている今ある(existing)DoSエントリー489と適合(一致/match)するかもしれない。オペレーション494では、プロセッサ442は、DoSエントリー489をジェネレーション2からジェネレーション0へと移す(切り替える/switch)。プロセッサ442が、SRAM 450内のジェネレーション値456を2から0へ再び割り当てると、DoSエントリー489は、CAM 444内の別の位置へ物理的に移されるわけではなく、論理的にジェネレーション0へ移されるということが理解できるであろう。
今あるDoSエントリーを現在のジェネレーションに移すことにより、比較的長い期間CAM 444内に存在しているが活動中の(active)DoSに対するエントリーは、プロセッサ442によって廃棄されないことが保障される。例えば、DoS攻撃は、長期間続くかもしれない。新しく受信された、同一のDoS攻撃に関連しているパケットはそれぞれ、CAM 444内に今あるDoSエントリーを現在のジェネレーション値へとアップデートするであろう。これは、DoS攻撃へと成長しなかった他の古いDoSエントリーや、もはや活動中のDoS攻撃に相当しない他の古いDoSエントリーがCAM 444から取り除かれるのに対し、活動中のDoS攻撃に相当するDoSエントリーが、CAM 444内に残ることを保障する。
Moving an existing DoS entry to the current generation ensures that entries for an active DoS that have been in the
オペレーション496では、プロセッサ442は、いつ次のジェネレーションへの切り替えがなされるべきかを決定する。異なるイベントにより、プロセッサ442が次のジェネレーションへ移ることもある。プロセッサ442は、現在のジェネレーションがエントリーで満たされている場合、オペレーション498で、次のジェネレーションへ移ってもよい。これは、例えば、攻撃者が異なる宛先アドレスを持った多数のTCP SYNメッセージを送った場合に起こることがある。
In
プロセッサ442は、所定の期間が終了した場合、オペレーション498内で、次のジェネレーションへ移ってもよい。これは、すべてのタイムスタンプ454(図5)が、プロセッサ442により追跡される現在の期間(time period)と対応することを保障する。例えば、DRAM 462内の関連しているカウント値と組み合わされているSRAM 450内のタイムスタンプ454は、現在受信中の異なる宛先アドレスに関するパケットのレートを決定する。タイムスタンプ期間が終了したら、プロセッサ442は、タイムスタンプ値454と、関連しているカウント値460の両方を再設定する必要がある。
The
しかし、現在のタイム値がプロセッサ442により使用され、ロールオーバーされ(roll-over)、ゼロにリセットされた後も、古いDoSエントリーがCAM 444内に残る可能性がある。この場合、プロセッサ442は、前のタイムスタンプ期間に対応するDRAM 462内のカウント460に、誤ってカウント値を加える可能性がある。これにより、カウンタ460が誤って複数のタイムスタンプ期間にわたってパケットをカウントし、DoS攻撃の誤検出に繋がる可能性がある。言い換えると、複数のタイムスタンプ期間パケットをカウントすると、実際のパケットのレートの誤表示(false indication)に繋がる。
However, the old DoS entry may remain in the
この起こりうるロールオーバー問題を解決するために、プロセッサ442は、オペレーション496で、ある所定の期間の後、現在のジェネレーション内のエントリーの数に関わらず自動的に次のジェネレーションへ移る。この所定の期間は、ジェネレーションの総数によって増やされると(この例ではジェネレーションの総数は4である)、プロセッサ442によって用いられるロールオーバータイムスタンプ期間よりも少なくなる。
To solve this possible rollover problem, the
例えば、プロセッサ442は、4秒ごとにロールオーバーする現在のタイマーを保持してもよい。次のジェネレーションへ移るのに用いられる所定のタイムスタンプ期間は、0.5秒ごとに設定されてもよい。これは、CAM 444内のすべての停滞中のDoSエントリーが2秒ごとに取り除かれることを保障する。そのため、プロセッサ422は、SRAM 454内のすべてのタイムスタンプ454が同じタイムスタンプ期間に関連付けされるであろうことを保証する。また、これには、SRAM 450がタイムスタンプ454に対して使用するバイト数を減らすことができるという予想外の利点がある。言い換えると、このタイムスタンプ値454は、約2秒またはそれ以上の期間(時間)を追跡するのに十分なビット数だけを必要とする。
For example, the
オペレーション496で、サイズ限界とタイムスタンプ期間のどちらにも到達していない場合、プロセッサ442は、現在のジェネレーションを新しいDoSエントリーで満たし続けるとともに、今あるDoSエントリーをオペレーション490〜494で現在のジェネレーションへと再割り当て続ける。オペレーション496で、サイズ限界とタイムスタンプ期間のどちらかに到達している場合、プロセッサ442は、オペレーション498で次のジェネレーションへ移り、その新しいジェネレーションにエントリーを加え始める。例えば、プロセッサ442は、新しいDoSエントリー486をジェネレーション1へと移し始め、それに伴って、次のジェネレーション2から今あるDoSエントリー488を取り除き始める。
If neither the size limit nor the time stamp period is reached in
合理的DoS攻撃識別 (Streamlining DoS Attach Identification)
少し戻って図5に関して、入力パケット440がCAM 444内で識別された場合、DRAM 462内の関連しているカウンタ460をインクリメントし、多数の同様のパケットが、タイムスタンプ454によって追跡されている期間中にDoS攻撃用のスレッショルドに到達したかどうか判定することが必要となるかもしれない。しかし、DRAM 462にアクセスするのに必要となる時間は、DoS攻撃判定およびそれに続くパケットの除外を遅らせるかもしれない。また、これはファイヤーウォール420を通過した他のパケットの処理も遅らせるかもしれない。DoS攻撃フラグ452は、プロセッサ442によって、現在のDoS攻撃の一部であるDoSパケットをすばやく識別するのに用いられる。
Streamlining DoS Attach Identification
Turning briefly back to FIG. 5, if an incoming packet 440 is identified in
図5および図8に関して、DoS攻撃フラグ452は、DoS攻撃を識別し、処理する上で避けられない遅れを減らすために、その他の処理オペレーションと合わせて使用される。オペレーション540では、プロセッサ442はパケットを受信する。プロセッサ442は、オペレーション542で、受信したパケットが、現在はDoSエントリーとしてCAM 444内には含まれていない新しい宛先アドレスおよびゾーンを有しているかどうか判定する。
5 and 8, the
CAM 444内に前から存在するエントリーが無い場合、パケットはすぐにファイヤーウォール420を通過することを許可される。そのようなパケットは、現時点では、CAM 444内で識別されないので、そのパケットは現在のDoS攻撃の一部足りえず、その後除外されることは無い。パケットが通過することを許可された後、プロセッサ442は、事後(パケットの通過を許可した後)、DoS管理オペレーションを実施する。これは、識別されたパケットに続く他のパケットが、無駄に遅らされることがないことを保障する。
If there is no pre-existing entry in
この「パケットの通過を許可した後」のメンテナンスでは、プロセッサ422は、図6および7と関連して前述したように、オペレーション546で、現在のジェネレーションに新しいDoSエントリーを加え、オペレーション548で、次のジェネレーションからDoSエントリーを取り除く。オペレーション550で、プロセッサ442は、DoS攻撃フラグ452をクリアし(まだクリアされていない場合)、新しいタイムスタンプ値454を設定し(設け)、現在のジェネレーション値456を設定し(設け)、DRAM 462内の対応するカウンタ460をインクリメントする。
In this “after allowing the packet to pass” maintenance,
必要であれば、プロセッサ442は、オペレーション552で、現在のジェネレーションを変更する。例えば、上述したように、プロセッサ442は、現在のジェネレーション内がエントリーで満たされるか、所定のタイムスタンプ期間が終了したら、現在のジェネレーションを変更する。新しいDoSエントリーに対するタイムスタンプ454は、設定された(設けられた)だけなので、新しいDoSエントリーが現在のジェネレーションに対する現在のDoSエントリー限界に到達していても、タイムスタンプ期間は終了しない。
If necessary,
オペレーション542に戻るが、プロセッサ442は、CAM 444内に現在存在するDoSエントリーに対応する宛先アドレスおよびゾーンを有しているパケットを受信するかもしれない。適合したCAMエントリーに対応するSRAM 450内のDoS攻撃フラグ452は、オペレーション560で、すぐにプロセッサ442により読み込まれる。対応するDoS攻撃フラグ452が設定されて(設けられて)いる場合、このパケットは、オペレーション580ですぐに除外される。このパケットは、該パケットを出力せずに、最終的にメモリ内で当該パケットを上書きすることで除去されてもよい。
Returning to
必要であれば、プロセッサ442は、オペレーション582〜586でSRAM 450内の情報をアップデートする。しかし、DoS攻撃フラグ452はすでに設定されているので、プロセッサ442は、DRAM 462内の関連しているカウンタをインクリメントする必要は無い。例えば、オペレーション582で、プロセッサ442は、DoSエントリーに対するジェネレーション値456を現在のジェネレーションでアップデートしてもよい。続いてオペレーション584では、プロセッサ442は、タイムスタンプ454が終了しているかどうか判定する。例えば、プロセッサ442によって追跡されている現在のタイムスタンプ値とタイムスタンプ454との間の時間差が、所定の期間よりも(例えば一秒)長い場合、タイムスタンプ454は現在のタイムスタンプ値へ再設定される。それに応じてオペレーション586で、関連しているカウンタ値460およびDoS攻撃フラグ452は、クリアされてもよい。
If necessary, the
タイムスタンプ454はごく稀に、(例えば一秒ごとに)再設定されることが必要となることがあるので、オペレーション586で、DRAM 462内のカウント値は、ごく稀にアクセスされることが必要となる。DRAM 462は、SRAM 450より長いアクセス時間を必要とするので、これは特に重要である。したがって、プロセッサ442がDoS管理のために必要とする時間は、少なくなる。一方で、DoS管理オペレーションは、パケットがオペレーション580で除外された後実行されるので、他の入力パケット440(図5)は、プロセッサ442によって無駄に遅らされることはない。これによって、ファイヤーウォール420は、DoS攻撃中に、他の正当なパケットの処理をほとんど遅らせることなく、ギガビット以上のラインレート(回線速度)でパケットをフィルタリングすることができる。
Since the
オペレーション560では、パケットは、CAM 444内には存在するが、関連しているDoS攻撃フラグ452は設定されていないDoSエントリーを有しているかもしれない。オペレーション562で、パケットは、ファイヤーウォール420を通過することを許可される。必要であれば、プロセッサ442は、オペレーション564で、CAM 444内の適合したDoSエントリーに対するジェネレーション情報456をアップデートする。例えば、SRAM 450内で識別(注目)されている現在のジェネレーション456は、現在のジェネレーションへ設定される。必要であればプロセッサ442はオペレーション564で、図6および7に関して前述したように、ジェネレーション期間が終了するか、現在のジェネレーション内のジェネレーションエントリーの最大数が所定の限界数に到達したら、現在のジェネレーションを変更してもよい。
In
今あるDoSエントリーに対するカウンタ460は、オペレーション566で、インクリメントされ、プロセッサ442は、オペレーション568で、カウント値460および関連しているタイムスタンプ454の古さを確認する。オペレーション570で、タイムスタンプ値がタイムスタンプ期間の値よりも大きくなっている(タイムスタンプが期限切れのタイムスタンプである)場合、カウント460およびタイムスタンプ454はオペレーション572で再設定される。
The
オペレーション570でタイムスタンプが有効である場合、プロセッサ442はオペレーション574で、カウンタ460がDoS攻撃用のスレッショルドを超えているかどうか判定する。カウンタ460がDoS攻撃用のスレッショルドを超えていない場合、プロセッサ442は、オペレーション540へ戻り、起こりえる(潜在的な)DoS攻撃に対して識別された次のDoS候補パケットを処理する。カウンタ460がDoS攻撃用のスレッショルドを超えている場合、続いてオペレーション576で、DoS攻撃フラグ452が、設定される。
If the time stamp is valid at
ある実施例では、DoS攻撃フラグ452は、関連しているパケットがファイヤーウォール420を通過した後に設定されることに注意されたし。この追加の1パケットは、通常、私的ネットワーク24(図3)内の対象のマシンのオペレーションに支障をきたすほどのものではない。一方で、DoS管理オペレーションを完了するのを待つ必要なく、パケットにファイヤーウォール420を通過させる機能は、ファイヤーウォールの性能を向上させる。さらに、上述したオペレーションは、ありえるDoS攻撃(DoS候補パケット)と関連しているパケットに対してのみ実行されてもよいので、DoSの管理および監視に必要となる処理の量は、すべての受信したパケットを、ありえるDoS攻撃に関して処理する他のファイヤーウォールアーキテクチャよりも大幅に少なくなる。
Note that in one embodiment, the
RSP内でのDoSの実行 (Implementing DoS in RSP)
すこし戻って図5に関して、上述したファイヤーウォールシステムを実行するためにはどのようなプロセッサ442を用いてもよい。しかし、さらに性能を向上させるために、ある実施例におけるプロセッサ442は、図2A−2Cにおいて前述した再構成可能なセマンティックプロセッサ(RSP)100を用いて実施される。図9は、どのようにしてRSP 100がDoSを防ぐために用いられるのかをより詳しく示している。説明を簡単にするために、図2A−2Cにおいて前述したRSP 100内の処理構成要素の一部は、図9では示されていない。
Implementing DoS within RSP (Implementing DoS in RSP)
Again, with reference to FIG. 5, any
入力パケット600は、入力バッファ140内で受信される。DXP 180は、潜在的なDoS攻撃(DoS候補パケット)と関連しているかもしれないパケット600を識別する文法を関連しているパーサテーブル170(図2A)内に有している。例えば、パーサ文法は、TCP SYNメッセージ、TCP FINメッセージおよびパケットフラグメントなどを含んでいるあらゆる入力パケット600を識別してもよい。DoS候補パケットが識別されると、DXP 180はSPU 200にDoS識別メッセージ602を送る。このメッセージ602は、SPU 200によって実行されるSEPコード620を、SCT 210から起動する。DoS SEPコード620は、SPU 200に、図3−8と関連して前述した異なるDoSオペレーションを実行させる。
メモリサブシステム215は、以前図5において示したDRAM 462、CAM 444およびSRAM 450を収容している。ある実施例におけるアレイマシンコンテキストデータメモリ(AMCD)230は、ハッシュ機能(ハッシング関数)またはコンテントアドレッサブルメモリ(CAM)444を介してDRAM 462またはSRAM 450内のデータにアクセスするために用いられる。
AMCD 230は、それぞれがCAM 444内のエントリーと関連しているビット605を含んでいるフリーテーブル604を有している。CAM 444内の使用されていないエントリーはすべて、フリーテーブル604内で0ビット605として表され、CAM 444内の有効なDoSエントリーはすべて、フリーテーブル604内で関連している1ビット605として表される。AMCD 320は、フリーテーブル604内の最初の0ビットを識別するSPU 200からのファインド・ファースト・ゼロ(FFZ)命令に対応する。
新しいDoSエントリーをロードするためにCAM 444内の位置を識別する必要があるとき、SPU 200は、フリーテーブル604上でFFZ命令を実行する。FFZ命令は、フリーテーブル604内の最初の0ビットの位置を戻す。その0ビットは、その後、CAM 444内の対応するエントリーに対するポインタとして用いられる。SPU 200は、新しいパケットに関する宛先アドレスおよびゾーンをCAM 444内で識別された宛先位置へとロードする。
When it is necessary to identify a location in
図6と関連して上述したように、DoSエントリーは、CAM 444内の現在のジェネレーションに加えられ、同時に他のDoSエントリーは、新しいジェネレーションから取り除かれる。SPU 200は、ジェネレーションテーブル608を用いて、CAM 444内のどのエントリーを新しいジェネレーションから取り除くべきかをすばやく識別する。CAM 444内の各ジェネレーションは、関連しているジェネレーションテーブル608A−Dを有している。CAM 444内の特定のジェネレーションと関連している有効な各DoSエントリーは、関連しているジェネレーションテーブル608内に対応している0ビットのセットを有している。例えば、CAM 444内の第三のエントリーは、ジェネレーション0と関連しているDoSエントリーを含んでいる。したがって、SPU 200は、ジェネレーションテーブル608Aの三番目のビットを0へ設定する。
As described above in connection with FIG. 6, DoS entries are added to the current generation in
DoSエントリーが、ジェネレーション0に関して取り除かれる場合、SPU 200は、ジェネレーションテーブル608A上でFFZオペレーションを実施する。ジェネレーションテーブル608A内の第三のビットは、識別され、その後SPU 200によって、CAM 444内の対応する第三のDoSエントリーを無効にするのに用いられる。例えば、SPU 200は、ジェネレーションテーブル608A内の第三のビットを1へ設定し、フリーテーブル604内の第三のビットを0へ設定する。もちろん、これは、テーブル604および608がどのように動作するかについての一例にすぎない。他のテーブル構成も同様に用いることができる。
If the DoS entry is removed for
上述したように、CAM 444内の有効なエントリーを識別するとともにCAM 444からどのエントリーを取り除くべきかを識別するこれらのDoS管理オペレーションは、SPU 200が関連しているパケットをすでに除去し終わっているか、SPU 200がすでに、関連しているパケットにRSP 100を通過することを許可している場合、実行することができる。
As mentioned above, these DoS management operations that identify valid entries in
また、メモリサブシステム215は、すでにポリシーマネージャーによって識別されているゾーンを識別するために、SPU 200によって用いられるテーブル606を有している。例えば、パケットは、DXP 180によって識別されたポート番号を有していてもよい。SPU 200は、このポート番号をテーブル606内のパケットタグ610Aと比較し、パケットを受信しているゾーン610Bを識別してもよい。テーブル606は、DoS攻撃を識別するための各ゾーンと関連しているパケットレート610Cを含んでいてもよい。タイマー612は、SPU 200がSRAM 450内の各DoSエントリーに対するタイムスタンプを生成するために用いられ、さらに、SPU 200が各タイムスタンプに対するタイムスタンプ期間がいつ終了するかを判定するために用いられる。ジェネレーションテーブル614は、現在のジェネレーションを識別する。
The
RSP 100は、偽造されたIPアドレスを有しているあらゆるパケットを識別して、廃棄することもできる。例えば、IPアドレスのセットは、マルチキャスト宛先アドレスとして保存される。保存されたマルチキャストアドレスに対応する送信元アドレスを持っている受信されたパケットはいずれも、DXP 180によって検出され、すぐに除去することができる。
The
図10および11は、RSP 100がどのようにして上述したDoSオペレーションを実行するのかを高いレベルで示している。大まかに図9を見つつ特に図10および11に関して、オペレーション650で、DXP 180は、入力パケット600を解析する。パーサテーブル170内の文法は、DXP 180がオペレーション652で、DoS候補パケットを識別するのにも用いられる。同時に、DXP 180は、SPU 200に、入力パケット600をDRAM 462内に格納するように命令するか、一時的にそのパケットを入力バッファ140内に保持してもよい。DXP 180は、オペレーション654で、そのパケットに関する宛先アドレスおよびパケットが受信されたゾーンの識別も行う。
10 and 11 show at a high level how the
DoS候補パケットが識別されると、DXP 180はオペレーション656で、SPU 200に、必要とされるDoSオペレーションと関連しているDoS SEPコード620をロードするように信号を送る。例えば、SEPコード620は、識別されたTCP SYNパケットまたは識別されたパケットフラグメントと関連している特定の種類のDoSオペレーションと関連していてもよい。
Once the DoS candidate packet is identified,
このSPU 200は、オペレーション658で、識別された宛先アドレスおよび関連しているゾーン情報をCAM 444内のエントリーと比較する。オペレーション660で、CAM 444内に対応するDoSエントリーが存在している場合、SPU 200はオペレーション662で、該パケットがファイヤーウォールを通過することを許可する。これは単に、SPU 200がDRAM 462内の対応するパケットに対して、当該パケットを出力バッファ150に送る前に、必要とされるその他のあらゆるファイヤーウォールオペレーションを続けるということを意味する。すなわち、(該パケットが)まだDRAM 462内に格納されていない場合、SPU 200は、入力バッファ140内の当該パケットが、さらなる処理のためにDRAM 462内に格納されることを許可してもよい。
The
SPU 200は、その後、必要とされるあらゆるDoS管理を実行する。例えば、SPU 200はオペレーション664で、AMCD 320内のテーブル614を読み込み、関連しているDoSオペレーションに対して現在どのジェネレーションが動作中であるのかを判定する。また、SPU 200は、テーブル604および608を読み込み、新しいDoSエントリーをCAM 444内のどこに加え、どのDoSエントリーを新しいジェネレーションから取り除くかを判定する。オペレーション666で、SPU 200は、CAM 444を新しいDoSエントリーでアップデートし、SRAM 450内の対応するメモリ位置の(にある)コンテンツを読み込む。最後に、オペレーション668で、SPU 200はSRAM 450内のタイムスタンプとジェネレーション情報およびDRAM 462内のカウント情報をアップデートする。
図11に関して、パケットに関する宛先アドレスおよびゾーンがすでにCAM 444内のDoSエントリーとなっている場合、SPU 200はオペレーション700でSRAM 450内の対応するメモリ位置を読み込む。SPU 200はオペレーション702で、DoS攻撃フラグが設定されているかどうか確認する。DoS攻撃フラグが設定されている場合、該SPUはオペレーション704で、DRAM 462または入力バッファ140からすぐにそのパケットを取り除く。例えば、SPU 200は、パケットが無効であることを示すドロップフラグをDRAM 462内に設定してもよい。
Referring to FIG. 11, if the destination address and zone for the packet is already a DoS entry in
この無効なパケットは、その後DRAM 462から読み出されることは無く、最終的に他のデータで上書きされる。まだDRAM 462の中に格納されていない場合、該パケットは、入力バッファ140から取り除かれる。DoS攻撃フラグが設定されていない場合、SPU 200はオペレーション706で、さらなる処理のために、すぐに当該パケットを開放する(releasesuru)。例えば、当該パケットは、入力バッファ140からDRAM 462内の特定の位置へすぐに送られてもよい。すでにDRAM 462内に存在する場合、当該パケットは、さらなるファイヤーウォール処理のためにその他のSPU 200へ受け流してもよいし、さらなるファイヤーウォール処理が必要でない場合は出力バッファ150へ送ってもよい。他のやり方としては、SPU 200は、DXP 180によって再解析するために当該パケットをDRAM 462から再循環バッファ160へ送ってもよい。例えば、DXP 180は、当該パケット内のその他のファイヤーウォールオペレーションと関連しているその他のコンテンツを識別するかもしれない。
This invalid packet is not subsequently read from the
オペレーション708で、SPU 200は、SRAM 450内の情報をアップデートするとともに、必要であれば、DRAM 462内の関連しているカウント460をインクリメントする。SPU 200はその後オペレーション710で、テーブル604、606、608および614内のあらゆる必要な情報をアップデートする。SPU 200はその後、DXP 180から新しいSEP命令602が来るのを待つ。
統合型ファイヤーウォール/ルーティング管理
(統合型ポリシー管理/Unified Policy Management)
図12に関して、ファイヤーウォール804は、第一のネットワーク800と第二のネットワークの間で動作する。ファイヤーウォール804は、様々なネットワークインターフェイスオペレーションを提供する。例えば、上述したようなDoS攻撃の識別およびフィルタリングに加えて、該ファイヤーウォールは、異なるネットワークフォーマット間(例えば、IPバージョン4(IPv4)とIPバージョン6(IPv6)の間)でパケットの変換を実行したり、公的IPアドレスと私的IPアドレスの間で変換(ネットワークアドレス変換(NAT))を実行する必要があるかもしれない。このファイヤーウォール804は、その他のウィルス検出オペレーションおよびセキュリティオペレーションも実行するように要求されるかもしれない。
In
Integrated firewall / routing management
(Unified Policy Management)
With reference to FIG. 12, the
他の分離したネットワークコンピュータデバイス806(例えばルーターまたはスイッチ)は、ファイヤーウォール804を通過したパケットをルーティングまたはスイッチングすることを要求する。例えば、ルーター/スイッチ806から受信したパケットは、その後さらに、該パケットをネットワーク812内のその他のネットワーク処理デバイスへ送る他のルーターまたはスイッチ808へ送られてもよい。同様に、ルーター/スイッチ806は、パケットをサーバー810や個人用コンピュータ(PC)814などのエンドポイントへルーティングしてもよい。
Other separate network computing devices 806 (eg, routers or switches) require that packets that have passed through the
この従来のアーキテクチャに関する問題は、ファイヤーウォール804およびルーティングデバイス806が独立して(autonomously)動作することである。このため、各デバイス804および806に対して別々の処理と別々のメモリデバイスが必要となる。これは、周辺機器のハードウェアコストを増やすだけではなく、拡張性も制限する上、これらの周辺機器がパケットを要求されるラインレートで処理するのを妨げるかもしれない。
The problem with this traditional architecture is that the
例えば、ファイヤーウォール804は、ありえる(possible)TCP SYNパケットに関するすべての入力パケットを監視するように要求されるかもしれない。上述したように、これは、ファイヤーウォール804に、各入力パケットに関して宛先アドレスを識別することを要求するかもしれない。DoS攻撃の一部ではないTCP SYNパケットは、その後ルーター806へ送られる。ルーター806は該パケットを適切な宛先へルーティングするために、その後再び、ファイヤーウォール804から受け取った複数のパケット805の宛先アドレスを見つけなくてはならない。したがって、各ネットワーク処理デバイス804および806は、同一の複数のパケットに対していくつかの同一のパケット処理オペレーションを実行するように要求される。その結果、各デバイス804および806は、別々のパケット状態やパケットバッファなどを維持しなければならない。これは、上述したように、ネットワーク処理デバイスの全体的な拡張性および処理能力を制限する。
For example, the
図13に示すように、本発明の別の態様は、ネットワーク処理デバイス820内で統合型ポリシー管理(Unified Policy Manegement: UPM)を用いて、より効率的にパケットを処理する。ある例では、UPMは、従来のファイヤーウォールおよび周辺機器のオペレーションをパケット送信オペレーションと統合する。このパケット送信オペレーションは、現在までのところ、別々のプロセッサを独立して動作させることで実行されている。ある実施例では、様々な異なるUPMオペレーションを提供するために、プロセッサ822によって独自のアクセス制御リスト(ACL)テーブルが用いられている。
As shown in FIG. 13, another aspect of the present invention processes packets more efficiently using unified policy management (UPM) within a
プロセッサ822は、入力パケットストリーム802を受け取り、その後個々のパケット821と関連している述語セット(predicate set) 854を識別する。この述語セット854は、以下で図14においてより詳しく描かれているが、一般的には、ファイヤーウォールオペレーションや送信オペレーションに関連していれば、受信されたパケット内のどのような情報でもよい。例えば、述語セット854は、それらに限定されるわけではないが、IPアドレス、TCPポート番号やIPプロトコル識別子などを含んでいてもよい。本発明の別の独自の態様における述語セット854は、その他のアプリケーション層の情報(例えば、付属機器の識別子やその他のテキスト文書など)と同様により高度な開放型システム間相互接続(Open System Interconnect: OSI)層の情報(例えば、セッション初期化プロトコル(SIP)情報、Unuversal Resource Locator (URL)情報、簡易メール転送プロトコル(SMTP)情報、ハイパーテキスト・トランスファー・プロトコル(HTTP)情報、ファイル転送プロトコル(FTP)情報)などを含んでいてもよい。
The
アクセス制御リスト(ACL)テーブル840は、異なるUPMオペレーションまたはその他のファイヤーウォールオペレーションと関連していてもよい述語セット850の異なる組み合わせによって構成される。例えば、ファイヤーウォールポリシーACL 848の第一のセットは、入力パケット821がネットワーク処理デバイス820を通過することを許可されているかどうか判定する異なるサービス妨害(DoS)オペレーションと関連していてもよい。ファイヤーウォールポリシーACL 848は、ネットワーク処理デバイス820によって実行される必要があるかもしれないその他のパケットの変換、認証およびフィルタリングオペレーション(例えば、ネットワークアドレス変換(NAT)や、ウィルスの検出およびフィルタリングや、IPのバージョン間の変換など)と関連していてもよい。
The access control list (ACL) table 840 is composed of different combinations of predicate sets 850 that may be associated with different UPM operations or other firewall operations. For example, a first set of
別の特に独特の態様では、ACLテーブル840は、異なる宛先アドレス844を異なる宛先ポート番号846と関連付ける転送情報ベース842(Forward Information Base(FIB))を有していてもよい。FIB 842は、ACLテーブル840の別々のセクション内に属しているか、以下でより詳しく説明するファイヤーウォールポリシーACL 848の一部と統合されるか、もしくはその両方であってもよい。
In another particularly unique aspect, the ACL table 840 may have a Forward Information Base (FIB) that associates different destination addresses 844 with different destination port numbers 846.
テーブル840内のACLエントリーは、プロセッサ822に、関連しているパケットがネットワーク処理デバイス820を通過することを許可もしくは拒否するように命令するアクション852も含んでいる。他のACLアクション852は、該関連しているパケットを特定の宛先に向けたり、さらなる処理のためにプロセッサ822へ向けたりしてもよい。他の状況では、ファイヤーウォールポリシーアクション852は、プロセッサ822に、当該関連しているパケット821を特定の出力ポート846へルーティングするように命令してもよい。
The ACL entry in table 840 also includes an
テーブル840内のファイヤーウォールポリシーACL 848とFIB 842の組み合わせは、通常は同一のネットワーク処理デバイス820内で実行されることはない様々な異なるUMPオペレーションを提供する。例えば、UPMオペレーションの小さなサブセットには、DoSまたは侵入検出と関連して上述したように、パケット838を取り除くことが含まれる。ネットワーク処理デバイス820は、パケット824が宛先アドレスへ送られる前にパケット824を修正したり、タグ付けしたりすることもできる。例えば、パケット824は、特定のチャネル826へとカプセル化されたり、特定のQoSレベルでタグ付けされたりしてもよい。
The combination of
他のUPMアクションでは、ACL 840内のエントリーは、プロセッサ822に、通過または除去されたいずれかのパケット830の統計値をサーバー828に記録するように命令してもよい。他のUPMオペレーションでは簡潔に上述したように、ACLテーブル840内のエントリーは、プロセッサ822に、異なるファイヤーウォールポリシーメトリックスに従ってパケット834を異なるサブネットワーク832またはデバイス836に送らせてもよい。例えば、特別なHTTPセッションを含むパケット834だけをサーバー836へとルーティングし、残りのパケットはすべて、サブネット832へとルーティングしてもよい。
In other UPM actions, an entry in the
以上の図13と関連した説明および以下のさらなる説明では、ルーティングおよびスイッチングは、置き換え可能なように用いられる。当業者ならば、UPMシステム820は、以下でより詳しく説明されるように、その他のファイヤーウォールポリシーメトリックスと組み合わされている統合型レイヤー2スイッチングおよび/またはレイヤー3ルーティングオペレーションを実施することができるということを理解するであろう。
In the description above in connection with FIG. 13 and the further description below, routing and switching are used interchangeably. One skilled in the art will be aware that
アクセス制御リスト (Access Control List)
図14は、図13と関連して前述したACLテーブル840内のエントリーの例を示している。どのような述語とアクションの組み合わせもACLテーブル840内で併用することができ、図14は例をいくつか示しているに過ぎない。ある実施例では、プロセッサ822(図13)は、一つまたは複数のACL述語を連結させ、その連結させた述語セット854をACLテーブル840を有するCAMへのアドレスエントリーとして用いる。ACLテーブル840内の第一のエントリーに対するアクションに関連しているアクションで、プロセッサ822によって提示された述語セット854と適合する(match)アクションが、CAMによって出力される。
Access control list
FIG. 14 shows an example of an entry in the ACL table 840 described above with reference to FIG. Any combination of predicates and actions can be used in the ACL table 840, and FIG. 14 shows only a few examples. In one embodiment, the processor 822 (FIG. 13) concatenates one or more ACL predicates and uses the concatenated predicate set 854 as an address entry to a CAM having an ACL table 840. Actions that match actions for the first entry in the ACL table 840 and that match the predicate set 854 presented by the
ACLテーブル840内の第一のエントリー860は、宛先IPアドレス述語860A、送信元IPアドレス述語860B、TCPポート番号述語860C、確立したTCPセッション述語860Dおよび許可アクション860Eを含んでいる。この例では、ACL860はACLテーブル840内の第一のエントリーである。もちろん、どのようなシークエンスおよび組み合わせのACLエントリーをACLテーブル840へロードしてもよい。
The
関連しているアクション860Eは、プロセッサ822によって供給された述語セット854が述語860A−860Dと適合したらACLテーブル840から出力される。この例では、ACLテーブル840は、入力パケット821(図13)に関する宛先IPアドレスが述語860A内の値と適合(match)するとともに入力パケット821(図13)に関する送信元IPアドレスが述語860B内の値と適合(match)したら、許可アクション860Eを出力する。述語860Aおよび860B内で識別されたIPアドレスは、完全な送信元IPアドレスおよび宛先IPアドレスに関連しているサブネットアドレスだけを含んでいてもよい。IPアドレス内のその他のビットは、サブネットマスクが現在ルーティングテーブル内で用いられているようなやり方と同様に、マスクされ「無視」値として出力されてもよい。
The associated action 860E is output from the ACL table 840 when the predicate set 854 supplied by the
ACLエントリー860を照合するために、パケット821(図13)は、述語860Cに対応する関連TCPポート番号(associated TCP port number)も有していなければならない。どの送信元限定子(source qualifier)および宛先限定子(destination qualifier)もTCPポート番号述語860Cとは関連していないことに注意されたし。これは、パケット821内の同一の送信元TCPポート番号Cと同一の宛先TCPポート番号Cのどちらかが述語860Cと適合(match)するということを意味する。最後に、ACLエントリー860を照合するためには、入力パケット821は、確立されたTCP述語860Bによって要求されるように、すでに確立されたTCPセッションの一部でなければならない。述語860Dは単に、入力パケット821がすでに確立されたTCPセッションの一部であると判定された際に、プロセッサ822によって設定される述語セット854内のフラグであってもよい。そのため、ACLエントリー860は、新しいTCPセッションを確立しようと試みているTCP SYNメッセージを含んでいるパケットとは適合(mutch)しないであろう。
To match
次の二つのACLエントリー862および864は、サービス妨害(DoS)攻撃と関連しているファイヤーウォールポリシーと関連している。ACLエントリー862を照合するために、入力パケット821内のアドレスは、それぞれ宛先IPアドレス述語862Aおよび送信元IPアドレス述語862Bと適合しなければならない。さらに、入力パケット821はまた、タイプTCP述語862Cに要求されるようにTCPパケットでなければならない。ACL862は、TCPパケットに関する特定の宛先IPアドレスおよび送信元IPアドレスを図4と関連して前述したような特定のゾーンに対応するTCP DoSアクション862Dと関連付ける。したがって、アクション862Dは、プロセッサ822に、ゾーン1に対応した特定のパケットレート用のスレッショルドを用いて、図4−11と関連して前述したようなDoSオペレーションを実施するように命令してもよい。
The next two
ACLエントリー864は、TCP DoSアクション864Dと関連しており、宛先IPアドレス述語862Aと同一の宛先IPアドレス述語864Aを含んでいる。しかし、述語864Bは、送信元IPアドレス述語862Bとは異なる送信元IPアドレスCを含んでいる。これは、異なるネットワークインターフェイスから受信したパケットに対応する。したがって、ACLアクション864Dは、異なる対応するゾーン3に対するTCP DoSオペレーションのためのものである。そのため、アクション864Dを受信したプロセッサ822は、DoS攻撃を判定するためにことなるパケットレート用のスレッショルドを用いてもよい。
ACLエントリー866は、インターネットプロトコルバージョン4(IPv4)からインターネットプロトコルバージョン6(IPv6)への変換に関連している。例えば、入力パケット821は、IPv6を用いて動作するネットワーク上で受信されてもよい。一方で、ネットワーク処理デバイス820のもう一方の側で動作しているネットワークはIPv4を用いてもよい。したがって、ネットワーク処理デバイス820は、すべてのIPv6パケットをIPv4パケットに変換する必要があるかもしれない。
入力パケット821のIPヘッダー内のIPタイプフィールドは、該パケットをIPv4またはIPv6と認識する。プロセッサ822は、IPタイプフィールド内の宛先IPアドレスおよびIPバージョン識別子をパケット821から抽出し、これらの情報の形式をACLテーブル840に適用される述語セット854の形式に合わせる。述語セット854がACLエントリー866内の述語866Aおよび866Bとマッチした場合、プロセッサ822は、XLATEIPv6アクション866Cを受け取る。XLATEIPv6アクション866Cは、プロセッサ822に、入力IPv6パケット821を特定のルール5を用いているIPv4に変換するように命令する。例えば、IPv6−ルール5は、プロセッサ822に、IPv6パケットをIPv4ヘッダーへとカプセル化したり、IPv6アドレスの一部をIPv4ヘッダー内に含まれる異なる会社コードとホストコードに分割したりしてもよい。このIPv6とIPv4間の変換は、図24でさらに詳しく示される。
The IP type field in the IP header of the
ACLエントリー868および870は、ルーティングオペレーションまたはスイッチングオペレーションに基づいたポリシーと関連付けされている。ACLエントリー868は、ファイヤーウォールポリシーメトリックス868Bと組み合わされる転送情報ベース(FIB)ルーティング基準868Aおよび868Cを含んでいる。同様に、ACLエントリー870は、ファイヤーウォールポリシーメトリックス870Bと組み合わされるFIBルーティング基準870Aおよび870Cを含んでいる。これらのACLエントリー868および870は、ネットワーク処理デバイス820が、IP宛先アドレスおよびファイヤーウォールポリシーメトリックスの両方に基づいてパケットを異なるポートにルーティングまたはスイッチングすることを可能にする。
例えば、ACLエントリー868は、送信アクション868Cを含んでいてもよい。この送信アクション868Cは、プロセッサ822に、出力パケット821を、宛先IPアドレスGを有しているTCPパケットタイプ868Bに関するポート3へ出力するように命令する。一方、ACLエントリー870は、プロセッサ822に、同一の宛先IPアドレスを持つUDPパケットタイプ870Bを異なる出力ポート4へ送るように命令する。これらのポリシーに基づいたルーティング用ACLは、例えば、TCPバス脅威をさらなるDoS処理のために特定の処理デバイスへルーティングするのに用いてもよい。一方で、UDPパケットは述語870Aに対応する宛先アドレスへとルーティングされる。もちろんACLテーブル840内のエントリーは、統合型ポリシー管理を実施するために用いることができる様々なACLの内の一例に過ぎない。
For example,
図15は、図13のネットワーク処理デバイス820がどのようにしてUPMを実施するのかをより詳しく説明している。プロセッサ822は、オペレーション880で、入力パケット821を受信し、オペレーション882で入力パケットから述語セット854を生成する。例えば、プロセッサ822は、所定の順番で所定のIPパケットフィールドのセットの形式を述語の形式に合わせる。IPパケットフィールドの一つが入力パケット821内に存在しない場合、該リスト内の次のパケットフィールドは抽出され、その後それ以前に抽出され、フォーマット済みの述語と組み合わされる。
FIG. 15 illustrates in more detail how the
プロセッサ822は、オペレーション884で、述語セット854をACLテーブル840へ適用し、オペレーション886で、ACLテーブル840内のマッチした述語エントリーから送り返されたアクションを受け取り、それを実行する。簡単のため、図15では、三つのアクションカテゴリーだけがACLテーブル840から返ってくるものとして示されている。しかし、何個の異なるアクションをACLエントリーに構成してもよい。オペレーション892で、除外(除去)アクション852がACLテーブル840から送り返された場合、プロセッサ822は、オペレーション900で当該パケットを廃棄する。プロセッサ822はオペレーション902で、次の入力パケット821に対するオペレーションを開始するまでは、除外(除去)されたパケットに関するどのような統計情報を記録してもよい。
The
パス(通過)アクション852がオペレーション890でACLテーブルから送りかえされた場合、プロセッサ822はオペレーション898で、FIB 842(図13)に従って該パケットをルーティングまたはスイッチングしてもよい。パスアクション890は、転送ポート番号(forwarding port number)を含んでいても、プロセッサ822に、転送ポート情報を得るためにACLテーブル840に再アクセスするように命令してもよい。
If
誘導(steer)ACLアクション852がオペレーション888でACLテーブルから送り返される場合、プロセッサ822は、オペレーション894で、このACLアクションと関連しているファイヤーウォールオペレーションを実行する。該当する場合、プロセッサ822は、オペレーション894で、関連しているファイヤーウォールポリシーメトリックスに従って当該パケットを送信してもよい。例えば、図14と関連して前述したように、誘導(steer)ACLアクション852は、プロセッサ822に、TCPパケットを特定のポートを介して、DoS攻撃を調べるネットワーク処理デバイスに向けて送信するように命令してもよい。
If a
他のやり方では、誘導(steer)ACLアクション852は、オペレーション888で、プロセッサ822に、当該パケットに対してさらなるファイヤーウォール処理を実施するように命令してもよい。例えば、誘導(steer)ACLアクション852は、プロセッサ822に、ネットワークアドレス変換(NAT)を実施するように命令してもよい。それに応じて、プロセッサ822は、必要であれば、オペレーション882で、当該パケット821から別の述語セット854を抽出し、オペレーション884で、新しい述語セット854をACLテーブル840に再適用してもよい。ACLテーブル840から送り返された次のACLアクション852に従って、プロセッサ882は、NATオペレーションが終わりしだい、当該パケットの除去、通過または誘導を行ってもよい。
In other manners, steer
上位OSIレイヤーに従ったパケット転送 (Forwarding Packets According to Upper Layers)
図16は、ルーティングオペレーションおよびスイッチングオペレーションをファイヤーウォールポリシー管理と統合する別のやり方の例を示している。ACLテーブル910は、図13のACLテーブル840と似ている。しかし、ACLテーブル910は、転送情報ベース(FIB)を、それぞれ、レイヤー4についてはポリシーメトリックス910Dと、レイヤー7についてはポリシーメトリックス910Eと組み合わせている。
Forwarding Packets According to Upper Layers
FIG. 16 shows an example of another way to integrate routing and switching operations with firewall policy management. The ACL table 910 is similar to the ACL table 840 of FIG. However, the ACL table 910 combines the forwarding information base (FIB) with policy metrics 910D for
特に注意すべき重要な点は、単にテーブル910に新しい述語を加えるだけで、どのような組み合わせのポリシー管理メトリックスでも従来のルーティングおよびスイッチング転送テーブルに加えることができるという点である。その他の特に注意すべき重要な点は、ルーティングおよびスイッチング判定は、従来、開放型システム間相互接続(OSI)インターネットモデルのレイヤー2およびレイヤー3に限定されているという点である。例えば、スイッチまたはルーターは、通常、パケットポート番号およびIPアドレスに基づいてパケット転送判定を行う。
An important point to note is that any combination of policy management metrics can be added to a conventional routing and switching forwarding table simply by adding a new predicate to table 910. Another important point to note is that routing and switching decisions are traditionally limited to
図13に示されているネットワーク処理デバイスアーキテクチャと組み合わされたACLテーブル910は、転送判定を上位のOSI層内に含まれている情報に基づいて行われるようにすることができる。例えば、ACLテーブル910内のパケット転送判定の一部は、データリンク層(レイヤー2)内の情報、ネットワーク層(レイヤー3)内の情報、転送層(レイヤー4)内の情報およびアプリケーション層(レイヤー7)内の情報に基づいている。もちろん、転送判定は、他のどのOSI層に基づいていてもよい。 The ACL table 910 combined with the network processing device architecture shown in FIG. 13 can allow forwarding decisions to be made based on information contained in higher OSI layers. For example, some packet forwarding decisions in the ACL table 910 include information in the data link layer (layer 2), information in the network layer (layer 3), information in the forwarding layer (layer 4), and application layer (layer Based on information in 7). Of course, the transfer determination may be based on any other OSI layer.
さらに詳しく説明するために、ACLテーブル910は、IP宛先アドレス述語910Aを含んでいる。このIPアドレス述語910Aは、アクション910Cで特定される異なる出力ポートにそれぞれのパケットを送るのに用いられる。述語910B内の従来のサブセットマスクは、宛先IPアドレス述語910A内でビットをマスキングするために用いられる。例えば、第一のACLエントリー912内では、アドレスの最初の三つのサブネットフィールド「10.0.0」だけが、入力パケット821に関する宛先IPアドレスと比較される。ACLエントリー916内では、最初のサブネットフィールド「10」だけが、入力パケット821に関する宛先IPアドレスと比較される。
For further explanation, the ACL table 910 includes an IP
この例では、転送判定は、レイヤー4についての述語910D、またはレイヤー7についての述語910Eに加えて、宛先IPアドレス910Aに基づいて行われる。例えば、宛先IPアドレス「10.0.0.x」(xは、「無視」を表す)を持った入力TCPパケットは、出力ポート15へルーティングされる。その他の例では、宛先IPアドレス「10.0.0.x」を持った入力UDPパケットは、出力ポート5へルーティングされる。
In this example, the transfer determination is performed based on the
入力パケットに対するTCPおよびUDP識別子は、最初のパケット処理中に、プロセッサ822が宛先IPアドレスを識別するのと同時に、プロセッサ822によって識別される。宛先IPアドレスおよびTCPまたはUDP識別子は、その後、パケットを送るための適切な出力ポートを判定するためにACLテーブル910内のエントリーと比較される。これは、パケットがレイヤー4メトリックスに基づいてどのように転送されるのかについての一例を示している。
TCP and UDP identifiers for incoming packets are identified by
ACLエントリー914は、従来の転送テーブルエントリーであって、入力パケットが宛先IPアドレス内にサブネットフィールド「12.0.x.x」を含んでいる場合に特定の出力ポート2にパケットを送る。
The
ACLエントリー916は、ルーティング判定を宛先IPアドレスおよびレイヤー7セッションインターネットプロトコル(SIP)メトリックスに基づいて行う。例えば、IP宛先アドレス「10.x.x.x」を持った非SIPパケットは、ネットワーク処理デバイス820内の出力ポート7へルーティングされる。一方、IP宛先アドレス「10.x.x.x」を持ったSIPパケットは、出力ポート4へルーティングされる。これは、特定のネットワーク処理デバイス(例えば、SIPプロキシサーバーなど)へルーティングされる必要があるボイス・オーバー・アイピー(VoIP)SIP信号を含んでいるパケットに対して有効である。その他の非SIP IPトラフィックは、宛先アドレスに従って従来どおりのやり方でルーティングされる。ACLエントリー916内のSIP述語910Eと比較されるのに用いられるSIP識別子は、パケットがSIPメッセージを含んでいる場合にプロセッサ822によって生成されるフラグである。
The
ACLエントリー918は、ルーティングがレイヤー7メトリックスに基づいて行われる別の例を示している。この種のルーティングに関するアプリケーションは、ウェブサーバーにアクセスするために用いられてもよく、その際に、その後に続くURLパケットを効率よく異なる位置へとルーティングするのに用いられてもよい。図16と図17の両方に関して、企業は、ウェブサーバー934を運営してもよい。このウェブサーバー934は、インターネット932を介して異なるユーザー930によってアクセスされる。このウェブサーバー934は、ユーザー930に、異なるビジネスサービスに対する異なる複数のリンクを提供するウェブページ936を表示してもよい。例えば、第一URLリンク938は、ユーザー930を顧客サポートに接続させ(direct)、第二のリンク940は、ユーザー930を自動車販売に接続させ、第三のリンク942は、ユーザー930を家具販売に接続させてもよい。
ACL entry 918 shows another example where routing is based on
これらの異なるデータ938、940および942のそれぞれをサポートするリンクウェブサーバーは、異なるインターネット上の位置に配置されてもよいし、それに限定されるわけではないが、場合によっては異なる地理的位置に配置されてもよい。例えば、顧客サポートサーバー944は、アトランタの本社に配置し、自動車販売サーバー946は、デトロイトに配置し、家具販売サーバー949は、フランスのパリに配置してもよい。ACLテーブル910(図16)は、ユーザー930をより効率的にURLリンク938、940および942
に接続させるために用いられる。
Linked web servers that support each of these
Used to connect to.
例えば、ユーザーが顧客サポートリンク938をクリックすると、ウェブサーバー934は、URL「Http://DEST1」を含んでいる宛先IPアドレス「10.10.x.x」を持ったパケットを生成する。図17のルーター935は、該IP宛先アドレスとURLの両方をACLテーブル910内のエントリーと比較する。そのようにして、ルーター935は、該パケットを出力ポート1を介して顧客サポートサーバー944へとルーティングする。また、ルーター935は、同一の宛先IPアドレス「10.10.x.x」を持った複数のパケットを、URL「fttp:DEST2」を含んでいるものを除いて受信する。ルーター935は、それに応じて、これらのパケットをポート2を介して自動車サーバー946へとルーティングする。宛先IPアドレス「10.10.x.x」および関連しているURL/DEST3を持ったパケットは、ポート3を介して家具サーバー948へとルーティングされる。これは、要求されるIP宛先へのより直接的なルーティングを提供する。
For example, when the user clicks on the
RSPを用いた統合型ポリシー管理 (Unified Pollicy Management Using RSP)
上述したように、統合型ポリシー管理(UPM)は、図13に示したように、従来のプロセッサおよびコンピュータシステムアーキテクチャ内で実施することができる。しかし、性能をさらに向上させるために、UPMは、前に図2A―2Cに示したようなRSP 100と同様の再構成可能なセマンティックプロセッサ(RSP)内で実施されてもよい。
Unified Policy Management Using RSP (Unified Pollicy Management Using RSP)
As described above, integrated policy management (UPM) can be implemented within a conventional processor and computer system architecture, as shown in FIG. However, to further improve performance, UPM may be implemented in a reconfigurable semantic processor (RSP) similar to
図18および19と関連して、オペレーション1000で、RSP 100内のDXP 180は、入力バッファ140内のパケットを解析し、かつUPMオペレーションを実施するのに必要とされるすべてのACL述語954を識別する文法を実行する。DXP180は、オペレーション1002で、SPU 200に命令を送り、SEPコード212を起動する。SEPコード212は、SPU 200にACL述語954のフォーマットを述語セット956のフォーマットへと変換させる。その後、この述語セット956はACLテーブル979に入れられる。この例では、ACLテーブル979の一部または全体は、一つまたは複数のCAM 220内に格納される。
18 and 19, in
SPU 200によって、好きな数のACL述語954を、DXP 180内で実行される文法およびDXP 180によって起動される関連しているSEPコード212に従って、ACL述語956に組み合わせてもよい。例えば、DXP 180内の文法は、パケット宛先アドレスと、パケット送信元アドレスに対するACL述語954を識別してもよい。別の述語954は、IPv6からIPv4への変換またはTCP DoSオペレーションに対して識別されてもよい。DXPがIPv6パケットであると識別した場合、DXP180は、SPU 200に、宛先IPアドレス述語とIPv6パケットタイプ述語を組み合わせる作業を行わせるSEPコード212を起動してもよい。同様に、TCPパケットが識別された場合、DXP 180は、SPU 200に宛先IPアドレス述語954と述語セット956内のTCPパケットタイプ述語954を組み合わせる作業を行わせるSEPコード212を起動してもよい。
The
オペレーション1004で、SPU 200は、ACL述語セット956をCAM 220内のACLテーブル979に入れる。SPU 200は、オペレーション1006で、CAM 220から送り返されたACLアクション952に従ってパケットを処理する。オペレーション1010で、ACLアクション252は、SPU 200に現在DRAM 280(図2A) 内に格納されているパケットを廃棄させる単なる除外命令でもよい。オペレーション1012で、ACLアクション952は、SPU 200にDRAM280内の(に格納されている)パケットを出力バッファ150へ送らせる、命令でもよい。
In
別の状況では、ACLアクション952は、SPU 200にさらに、特定のファイヤーウォールオペレーションと関連しているかもしれないSEPコード212を起動させてもよい。例えば、ACLエントリー980のセットは、異なるファイヤーウォールオペレーションと関連していてもよい。ACLエントリー980Aは、以下でより詳しく説明される侵入検知システム(DIS)ライセンスオペレーションと関連付けられてもよい。別のACLエントリー980Bは、「ネットワーク処理デバイス内の侵入検知のための方法および装置」という発明の名称の同時継続出願に記述されており、それに記載されたIDSオペレーションと関連付けられてもよい。この同時継続出願は、2005年5月9日に出願された「侵入検知システム」という発明の名称のアメリカ特許出願No.11/125,956であり、これを引用することにより、その内容が本出願に組み入れられているものとする。
In another situation,
その他のACLエントリー980C〜Fは、その他のファイヤーウォールオペレーションと関連付けられてもよい。その他のファイヤーウォールオペレーションとは、すでに上述したか、以下でより詳しく説明されるような、ネットワークアドレス変換(NAT)、IPv4−IPv6変換、TCPセッションに関するサービス妨害(DoS)およびパケットフラグメントに関するDoSなどである。
例えば、SPU 200は、DoS TCPパケットと対応するACLエントリー880Eと適合(match)するACL述語セット956を、CAM 220に入れてもよい。ACLエントリー980Eに含まれるアクションは、セマンティックコードテーブル210をポイントするポインタ982であってもよい。SPU 200は、図19のオペレーション1008で、ポインタ位置982にあるSEPコードを起動し、それを実行してもよい。この例では、位置982にあるSEPコード212は、SPU 200に図4〜11と関連して前述したようなTCP DoSオペレーションの一部または全部を実施させる。
For example, the
ACLエントリー980E内のアクションによって起動されたTCP DoSオペレーションが完了した後、SEPコード212は、SPU 200にさまざまな他のファイヤーウォールオペレーションのうちのどれを実行させてもよい。例えば、パス1014によって表されるように、SPU 200には、DXP 180によって識別されたACL述語954から別の述語セット956を作り上げるように命令してもよい。新しい述語セット956は、他のファイヤーウォールオペレーションを実施するために、その後ACLテーブル979に再び入れられてもよい。SEPコード212は、図19のパス1016によって表されるようにSPU 200にパケットを取り除くように命令するか、パス1018によって表されるようにパケットを出力ポートへ送るように命令してよい。
After the TCP DoS operation initiated by the action in ACL entry 980E is completed,
図13−17と関連して前述したように、RSP 100は、統合型ポリシー管理も実施することができる。この統合型ポリシー管理とは、ルーティングオペレーションとスイッチングオペレーションの両方を他のファイヤーウォールポリシー管理オペレーションと統合したものである。従って、CAM 220は、宛先IPアドレスおよび関連している宛先ポート番号を有しているエントリーを含んでいる転送情報ベース984を含んでいてもよい。図16と関連して上述したように、FIBテーブル984は、従来のFIBエントリー987およびその他のエントリー986を含んでいる。これら従来のFIBエントリー987およびその他のエントリー986は、宛先アドレスとその他のファイヤーウォールポリシーメトリックス988の両方に従ってパケットをルーティングする。
As described above in connection with FIGS. 13-17,
RSP 100は、ファイヤーウォール機能や、従来のルーターまたはスイッチ機能や、それら両方の組み合わせたものの機能の間で簡単に機能切り替えを行い動作することができる。例えば、セマンティックコードテーブル210内のパス990(図18)は、RSP 100をDoS TCPオペレーションからルーティングオペレーションへ切り替えることを表している。SPU 200によってCAM 220 に送られる第一の述語セット956は、DoS TCPエントリー980Eと適合(match)するかもしれない。DoS TCPオペレーションと関連しているSEPコード982の実行が完了したら、SPU 200に、別の述語セット956をCAM 220に送るように命令してもよい。新しい述語セット956は、FIB 984内のエントリー986または987と適合するかもしれない。FIB 984内のエントリーは、SPU 200に従来のルーティングオペレーションまたはUPMルーティングオペレーションを実施するSCT 210内のSEPコード992を起動するように命令してもよい。
The
他のやり方では、CAM 220に入れられた最初の述語セット956は、最初はDoS TCPエントリー980Eと適合する代わりに、FIBエントリー986と適合するかもしれない。エントリー986内に含まれる結果として生じるアクションは、SPU 200に、関連パケットを出力ポートを介して、TCP DoSオペレーションを提供する別のデバイスに送るように命令するかもしれない。
ネットワークアドレス変換(NAT)/ポートアドレス変換(PAT)
図20に関して、RSP 100は、NAT/PATオペレーション用にプログラムすることもできる。NAT/PATオペレーションとは、ファイヤーウォール1062を通過中のパケットのIPアドレスか、ポート番号か、またはその両方を、公的ネットワーク12上でパケットを運ぶ(transport)のに用いられる公的IPアドレスと、私的ネットワーク24上でパケットを運ぶのに用いられる私的IPアドレスの間で変換するオペレーションのことである。
Alternatively, the first predicate set 956 placed in
Network address translation (NAT) / port address translation (PAT)
With reference to FIG. 20, the
通常、私的ネットワーク24内で動作している異なるネットワーク処理デバイスと関連付けられている固有の私的IPアドレスは複数ある。一方、一つまたは少数の公的IPアドレスは、複数の私的IPアドレスを表すのに用いられる。この公的アドレスから私的アドレスへの変換は、私的ネットワーク24内の内部マシンが識別されることを防ぎ(protect the identity)、私的ネットワーク24内の複数の私的アドレスへマッピングされることを要求される公的アドレスの数を減らす。
There are typically multiple unique private IP addresses associated with different network processing devices operating within the
別の実施例では、一つまたは複数の私的IPアドレスが、関連付けられている固有の公的IPアドレスを持つ。これは、必ずしも公的IPアドレスの数を減少させないが、ファイヤーウォール1062が、対応する私的IPアドレスを公的ネットワーク12から隠すことを可能にする。この一対一マッピングは、ファイヤーウォール1062が、複数の公的IPアドレスを私的ネットワーク24内の異なるネットワークデバイスへと再構成することを可能にする。
In another embodiment, one or more private IP addresses have a unique public IP address associated with them. This does not necessarily reduce the number of public IP addresses, but allows the
RSP 100は、入力パケット1061の公的IPアドレス1058を私的IPアドレス1074へ変換する。私的IPアドレス1074は、その後、内部パケット1076を私的ネットワーク24内の関連付けされているネットワーク処理デバイス1078へとルーティングするのに用いられる。RSP 100はまた、私的ネットワーク24内のローカルデバイス1078から、私的IPアドレス1070を含んでいるパケット1072を受け取る。パケット1072が私的ネットワーク12内のエンドポイント1056に向けられる場合、RSP 100は、私的IPアドレス1070を公的IPアドレス1052へと変換する。この公的IPアドレス1052は、パケット1050を、公的ネットワーク12を介してエンドポイント1056へとルーティングするのに用いられる。
The
より詳しく説明するために、私的ネットワーク24内で動作中のデバイス1078は、最初に、ファイヤーウォール1062を介してパケット1072を公的ネットワーク12内の宛先へと送ってもよい。RSP 100は、パケット1072を受け取り、私的送信元IPアドレス1070をファイヤーウォール1062と関連している公的IPアドレス1052へと変換する。また、RSP 100によって出力パケット1050に特定のポート番号1054を割り当ててもよい。RSP 100は、その後、私的IPアドレスエントリー1068および対応するポート番号エントリー1066を加えることで、検索テーブル1064をアップデートする。
To explain in more detail, a
出力パケット1050を受信したデバイス1056は、パケット1061をローカルデバイス1078へ送り返してもよい。デバイス1056は、パケット1050内の公的IP送信元アドレス1052およびポート番号1054を、ローカルデバイス1078へと送り返されるパケット1061の宛先アドレス1058およびポート番号1060として用いる。RSP 100は、パケット1061内の宛先アドレス1058およびポート番号1060を、検索テーブル1064内のポート番号エントリー1066へとマッピングする。RSP 100は、適合ポート番号エントリー1060と対応する検索テーブル1079内の私的IPアドレスエントリー1070を識別する。
The
RSP 100は、パケット1061内の公的宛先IPアドレス1058を、検索テーブルから識別された私的IPアドレス1070に置き換える。私的アドレスと公的アドレスの間での変換中に、RSP 100は、パケットを分解し(de-assemble)、チェックサム値を生成し、その後パケットを再構成してもよい。
図21―23は、どのようにしてRSP 100が上述したNAT/PAT変換を実施するのかについての一例をより詳しく示している。DXP 180(図21)は、オペレーション1100(図22)で、私的ネットワーク24から受信した入力パケットを解析し、私的IP送信元アドレス1070を識別する。DXP 180は、オペレーション1102で、SPU 200にSCT 210からマイクロ命令をロードするように信号を送る。このマイクロ命令は、私的IP送信元アドレス1070を公的IP送信元アドレスへと変換することに関する。
FIGS. 21-23 show in more detail an example of how the
SPU 200は、オペレーション1104で、パケットに対して公的IPアドレスおよびポート番号を生成する。公的IPアドレスは通常、ファイヤーウォール1062(図20)に割り当てられたIPアドレスである。オペレーション1106で、SPU 200は、パケットの1072のポート番号および対応する私的IPアドレスを検索テーブル1079へとロードする。図21は、CAM 220およびSRAM 221を用いている検索テーブル1079がどのように実施されるのかについての一例を示している。SPU 200は、出力パケット1050と関連付けされているポート番号を、AMCD 230を介してCAM位置220Aへと格納し、対応する私的IPアドレス1070をエントリー221AとしてSRAM 221に格納する。
The
オペレーション1108で、SPU 200は、関連ポート番号1054(図20)を含んでいるパケット1072の私的IP送信元アドレス1070を公的送信元IPアドレス1052に置き換える。SPU 200はまた、オペレーション1110で、この出力パケット1050に対する新しいチェックサムを生成してもよい。最終的に、SPU 200は、オペレーション1112で、公的IPアドレス1052およびポート番号1054を持ったパケット1050をDRAM 280から出力ポート152へと送る。
In
図23は、RSP 100は、入力パケットの公的宛先IPアドレスを私的IPアドレスへと変換するやり方を説明している。オペレーション1120で、DXP 180は、公的ネットワーク12から受け取った入力パケット1061を解析し、関連している5タプル(tuple)アドレスを識別する。DXP 180は、オペレーション1122で、SPU 200にSCT 210からマイクロ命令212(図2A)をロードするように信号を送る。このマイクロ命令は、公的IP宛先アドレス1058およびポート番号1060を対応する私的IP宛先アドレス1074へと変換することに関する。
FIG. 23 illustrates how the
SPU 200は、オペレーション1124で、入力パケット1061からの公的宛先IPアドレス1058およびポート番号1060を、検索テーブル1079内のIPアドレスおよびポート番号エントリー220Aと比較する。例えば、SPU 200は、宛先ポート番号をCAM 220へのアドレスとして用いる。ポート番号と適合する(match)セクション220A内のアドレスは、SRAM 221内のセクション221Aへのポインタとして用いられる。オペレーション1126で、SPU 200は、SRAM 221から識別された私的宛先IPアドレスを読み込み、パケットの公的IP宛先アドレス1058を識別された私的IPアドレス1074に置き換える。オペレーション1128で、SPU 200はまた、変換されたパケットに対して新しいチェックサムを生成する。最終的に、SPU 200は、オペレーション1130で、パケット1076を出力ポート152を介してDRAMメモリ280から私的ネットワーク24へと出力する。
The
RSP 100は、NAT/PATオペレーションの後にも先にも、同一のパケットに対して他の変更および監視オペレーションを実行するように構成されてもよい。この例では、SPU 200は、さらなるファイヤーウォール処理のために新しい私的IPアドレス1074を持ったパケットをDRAM 280から再循環バッファ160(図2A)へと送り返してもよい。他のファイヤーウォールオペレーションは、その後再循環バッファ160内のパケットに対して実行される。
IPv6/IPv4変換 (IPv6/IPv4 Translation)
図24に関して、ファイヤーウォール1062は、インターネットプロトコルバージョン4(IPv4)とIPバージョン6(IPv6)の間または他のIPのプロトコルバージョンの間で変換を行う必要があるかもしれない。例えば、第一のネットワーク1150がIPv6を用いている一方で第二のネットワーク1160は、IPv4を用いているかもしれない。そのためファイヤーウォール1062は、IPv6パケット1156の128ビットのアドレス領域1158を、IPv4パケット1172の32ビットのアドレス領域1170へと変換する必要がある。ヘッダーとペイロード以外の情報も、IPv4とIPv6の間で変換される必要があるかもしれない。
The
IPv6 / IPv4 Translation (IPv6 / IPv4 Translation)
With respect to FIG. 24,
ある例では、ファイヤーウォール1062は、IPv6パケット1156をIPv4パケット1172へと変換する。この例では、ファイヤーウォール1062は、IPv6パケット1156をカプセル化してIPv4トンネル1164へ入れる。逆の変換については、ファイヤーウォール1062は、IPv4パケットをIPv6パケットへ変換するか、IPv4パケット1172をカプセル化してIPv6トンネルへ入れる。これらの異なる変換は、ファイヤーウォール1062によって繋がれるIPネットワークの種類によって決まる。
In one example, the
入力パケット1158は、メディアアクセス制御(MAC)ヘッダー1180、IPヘッダー1182およびTCPヘッダー1184を含んでいるかもしれない。タイプフィールド1186は、このIPヘッダー1182に関するIPのバージョン番号を特定する。図21、24および25に関して、DXP 180(図21)は、オペレーション1200(図25)で、入力パケット1158を解析し、タイプフィールド1186内の特定のIPバージョンを特定する。タイプフィールド1186がIPv4を示し、かつRSP 100の反対の端(end)に繋がれているネットワークでもIPv4が用いられている場合、DXP 180は、SPU 200内で、IPバージョン変換のための何らかのSEPコードを起動しなくてよい。
The
しかし、タイプフィールド1186が、RSP 100の反対の端(end)で用いられているIPバージョンと異なるIPバージョンを示した場合、DXP 180は、オペレーション1202で、SPU 200にSCT 210(図2A)からマイクロ命令をロードするように信号を送る。このマイクロ命令は、入力パケットを他のネットワークのIPバージョンへ変換するためのものである。この例では、マイクロ命令は、SPU 200にIPv6パケットをIPv4パケットに変換させる。
However, if the
SPU 200は、オペレーション1204で、DXP 180によって特定されたIPv6アドレスを、128ビットのIPv6アドレスと関連付けがなされているCAM 220(図21)内のセクション220Bと照合する適用する。CAM 220は、対応する32ビットのIPv4アドレスを含んでいるSRAM 221のセクション221B内の対応するエントリーをアドレス指定する(address)。SPU 200は、オペレーション1206で、SRAM 221から出力されたIPv4アドレスを読み込み、オペレーション1208で、パケット内のIPv6アドレスを特定されたIPv4アドレスに置き換える。他のやり方では、SPU 200は、IPv6パケットをカプセル化して、SRAM 221内の特定されたIPv4アドレスを用いるIPv4トンネルへ入れる。オペレーション1210で、SPU 200は、新しいチェックサムを生成し、オペレーション1212で、変換されたIPv4パケットかあるいはIPv6パケットを含んでいるIPv4トンネルのいずれかをDRAM 280から出力ポート152へ送る。
The
図25で説明したものと同様のプロセスは、入力IPv4パケットをIPv6パケットへと変換するのにも用いることができる。上述したものと同一のプロセスは、将来生まれるかもしれない他のどのようなIPパケットのバージョン間での変換にも用いることができる。RSP 100は、単に新しいIPバージョンの番号を識別し、その後SEPコードのセットを起動する。このSEPコードは、SPU 200によって、第一のIPバージョンと第二のIPバージョンとの間でパケットを変換するのに用いられる。
A process similar to that described in FIG. 25 can be used to convert an input IPv4 packet into an IPv6 packet. The same process as described above can be used to convert between any other versions of IP packets that may be born in the future. The
IPバージョン変換は、図13−19と関連して前述した統合型ポリシー管理オペレーションと組み合わせることもできる。例えば、RSP 100は、異なるIPバージョンのものであると特定されたパケットを、パケット内の特定されたIPバージョンをサポートしているかもしれない関連した異なるIPサブネットへとルーティングすることができる。
IP version conversion can also be combined with the integrated policy management operations described above in connection with FIGS. 13-19. For example, the
RSP 100の多くの独特な特徴のうちの一つは、追加のパケットの処理オペレーションを、追加のハードウェアを必要とすることなく、しかもソフトウェアまたは処理状態の複雑性を実質的に増加させることなく、実行できることである。例えば、図21に示されているものと同一の、NAT/PAT変換のためのRSP構成(configuration)は、IPv4とIPv6との間での変換にも用いることができる。IPv6からIPv4へのアドレスマッピング220Bと221Bおよび逆のIPv4からIPv6へのアドレスマッピング220Cと221Cは、それぞれ、NAT/PAT変換に用いられるIP公的アドレス220AおよびIP私的アドレス221Aと並べて(alongside)CAM 220内に格納されてもよい。さらに、巨大化したIPv6パケットのヘッダーを解析するためには、ほんの数サイクルの追加のサイクルが必要とされるだけなので、巨大化した128ビットのIPv6ヘッダーを解析することは、RSP 100にとっての全体のパケット処理のレートをほんの数サイクル増やすに過ぎない。
One of the many unique features of the
共通DXP解析(common DXP parsing)を活用することで、複数の異なるファイヤーウォールオペレーションを同一のRSP 100内でより効率的に実行することができる。例えば、図21で、DXP 180は、NAT/PATオペレーションとIPv6/IPv4オペレーションの両方に対していくつかの同一の解析オペレーションを実施してもよい。例えば、IPアドレスはDXP 180によって、NAT変換とIPバージョン変換の両方のために特定される。そのため、同一のDXPアドレス解析結果をNAT変換とIPバージョン変換の両方のために用いることができる。そのため、DXP 180は、NAT文法の他には少数の文法しか必要としない。
By utilizing common DXP parsing, multiple different firewall operations can be performed more efficiently within the
RSP 100はまた、何らかの特定のデータサイズを処理することに限定されない。そのため、何らかのIPv4またはIPv6オペレーションや、将来生み出されるかもしれない何らかの他のIPバージョンまたはアドレスサイズの処理は、同じRSPアーキテクチャ100を用いて簡単に実施することができる。RSP 100は、DXP 180に最低限の新しい文法を加え、SPU 200によって実行されるための追加のSEPコードを加え、いくつかの追加のエントリーをCAM 220およびSRAM 221内に加えるだけで、こうした異なるIPバージョンおよびアドレスサイズを処理するように構成することができる。
The
これは、効率的にIPv4パケットの代わりにIPv6パケットを処理するために完全な再設計を必要とする従来のハードウェアアーキテクチャとは正反対である。例えば、従来のプロセッサでは(in)、データパスサイズ、レジスタサイズおよび論理素子は、巨大化した128ビットのIPv6アドレスに対して再設計される必要があるだろう。 This is the opposite of traditional hardware architecture that requires a complete redesign to efficiently process IPv6 packets instead of IPv4 packets. For example, in a conventional processor (in), the data path size, register size, and logic elements would need to be redesigned for a larger 128-bit IPv6 address.
仮想私的ネットワーク(VPN)統合 (Virtual Private Network (VPN) Integration)
図26は、どのようにして仮想私的ネットワーク(VPN)トンネル1207がインターネット1212を介して確立されるかについての一例を示している。コンピュータ1216は、企業サーバー1202からファイル1200をリクエストする。サーバー1202は、ファイル1200にアクセスし、該ファイルをIPパケット1204として、離れたユーザ1216にVPN/ファイヤーウォール1206を介して送り返す。
Virtual Private Network (VPN) Integration
FIG. 26 shows an example of how a virtual private network (VPN)
ファイヤーウォール1206は、該パケット1204を、(例えばIP送信元保護(IPSG)のような)IPセキュリティプロトコルカプセル化セキュリティペイロード(IPSec ESP)トレーラ1210およびIPセキュリティプロトコル認証ヘッダー(IPSec AH)1208を用いてカプセル化する。これらのIPSecヘッダー1208および1210は、レイヤー3プロトコルに位置する。これらのヘッダーは、トランスポートモードでは、IPヘッダーの後ろかつ上位層のプロトコルヘッダーの前に配置され、トンネルモードでは、カプセル化されたIPヘッダーの前に配置される。IPSecヘッダー1210およびAHヘッダー1208は、個別に用いることも、互いに組み合わせて用いることもできる。
The
IPSec ESPヘッダー1210は、受信したパケットを復号化するのに必要となる情報を含んでおり、また場合によっては受信したパケット1204を認証するのに必要となる認証ダイジェスト(authentication digest)を含んでいる。IPSec AHヘッダー1208は、受信したパケット1204を認証するのに必要となる認証ダイジェストを含んでいる。IPSecパケット1218がIPSec AHヘッダー1208を含んでいる場合、認証ダイジェストは、レイヤー3プロトコル内に位置する。そうでない場合、IPSec ESPモードでは、ESPトレーラ1210内のパケットペイロードの後ろには認証ダイジェストだけが配置される。
The
IPSecパケット1218は、インターネット1212をVPNトンネル1207として経由してコンピュータ1216へと送られる。VPN/ファイヤーウォール1214は、AHヘッダー1208およびESPヘッダー1210内の情報に従ってIPSecパケット1218を復号化する。復号化されたIPパケット1204は、その後コンピュータ1216へ転送される。VPN/ファイヤーウォール1214は、前述したように、復号化されたパケット1204に対して他のどのようなファイヤーウォールオペレーションを実施してもよい。
The
図27は、VPN/ファイヤーウォール1206および1214内のRSP 100によって実行されるオペレーションをより詳しく示している。RSP 100はまず、予備的な(初期)DoSフィルタリング1220を実施し、DoS攻撃レート用のスレッショルドを超えて受信されたIPSecパケット1218をフィルタリングする。DoSフィルタリング1220は、図4−11と関連して前述したのと同様のやり方で、どのような非IPSecパケットもフィルタリングすることができる。
FIG. 27 shows in more detail the operations performed by the
セキュリティアソシエーション(SA)検索オペレーション1222は、IPSecパケット1218からIPアドレス、パケットセッション識別子および複数のセキュリティパラメータインデックス(SPIs)1226を抽出する。これらは、RSP 100によって用いられる必要とされる復号化技術および認証技術を特定する。SPI 1226およびその他のIP情報は、DoS、UPM、NAT変換およびIPバージョン変換と関連して前述した検索テーブルおよびACLテーブルと同様もしくは同一の検索テーブル1224へ送られる。検索テーブル1224は、復号鍵1228、復号化アルゴリズム識別子1230および認証アルゴリズム識別子1232を送り返す。
A security association (SA)
関連している復号化アルゴリズムは、IPSecパケット1218内のビットを暗号化された状態から暗号化されていない状態に変換する。復号化アルゴリズムの例としては、Data Encryption Standard (DES)、Triple Data Encryption Standard (T-DES)、Advanced Encryption Standard(AES)やCBCモードのT-DESなどがある。認証アルゴリズムは、データに対してハッシュ演算(hash operation)を行い、IPパケット1204内のビットが、もともとはサーバー1202から送られたビットと同じであるかを検証する。認証アルゴリズムの例としては、MD5やSHA1がある。
The associated decryption algorithm converts the bits in
SA検索1222の結果は、復号化オペレーション1234へ提供される。その後、復号化オペレーション1234は、IPSecパケット1218をもとのIPパケット1204へと復号化する。SA検索1222および復号化オペレーション1234がどのように実行されるかについてのさらなる詳細は、以下の同時継続出願内で説明されている。
・2005年5月11日に出願されたアメリカ特許出願No.11/127,445
「流動的復号化/暗号化/認証ブロックを有するマルチプロセッサアーキテクチャ
(MULTIPROCESSOR ARCHITECTURE WITH FLOATING DECRYPTION/ENCRYPTION/AUTHENTICATION BLOCKS)」
・2005年5月11日に出願されたアメリカ特許出願No.11/127,443
「IPセキュリティ復号化/暗号化/認証
(IP SECURITY DECRYPTION/ENCRYPTION/AUTHENTICATION)」
・2005年5月11日に出願されたアメリカ特許出願No.11/127,468
「パイプライン型IPセキュリティ復号化/暗号化/認証
(PIPELINED IP SECURITY DECRYPTION/ENCRYPTION/AUTHENTICATION)」
・2005年5月11日に出願されたアメリカ特許出願No.11/127,467
「DMAインターフェイスを有するDEAエンジン(DMA Engine with DMA interface)」
これらの出願は、以上の引用をすることにより、その内容が本出願に組み入れられているものとする。
The results of
・ US patent application No. 11 / 127,445 filed on May 11, 2005
"MULTIPROCESSOR ARCHITECTURE WITH FLOATING DECRYPTION / ENCRYPTION / AUTHENTICATION BLOCKS" with fluid decryption / encryption / authentication blocks
・ US patent application No. 11 / 127,443 filed on May 11, 2005
"IP Security Decryption / Encryption / Authentication (IP SECURITY DECRYPTION / ENCRYPTION / AUTHENTICATION)"
・ US patent application No. 11 / 127,468 filed on May 11, 2005
"PIPELINED IP SECURITY DECRYPTION / ENCRYPTION / AUTHENTICATION"
・ US patent application No. 11 / 127,467 filed on May 11, 2005
“DEA engine with DMA interface”
These applications are hereby incorporated by reference into the present application.
DXP 180は、入力パケットを解析し、特定されたIPタイプフィールドに従ってIPSecパケット1218を識別する。続いて、DXP 180内の文法は、SEPコード212(図2A)を起動するためにDXP 180によって使用されるSPI 1226を識別する。このSEPコード212は、SPU 200に、SPI 1226をCAM 220内のACLに入れ、その後CAM検索からの出力結果(result)に従って復号化1234を実行するように命令する。例えば、復号化鍵1228、復号化アルゴリズム識別子1230および認証アルゴリズム識別子1232は、前に図21と関連して説明したものと同一のCAM/SRAM構造内に格納することができる。CAM検索からの出力結果は、追加のSEPコードを示すACLアクションである。この追加のSEPコードは、識別子1230と関連付けされている復号化アルゴリズムおよび識別子1232と関連付けされている認証アルゴリズムを、復号化鍵1228を用いて実行するものである。
同一のIPSecセッションに関して、暗号化されていないパケット(例えば、同一の5タプルを持ったパケット)が受信された場合、CAM 220内の対応するACLエントリーはSPU 200にこれらのパケットを除外するように命令してもよい。これは、認証されていない攻撃者がVPNセッション1207を乗っ取る(take over)のを防ぐ。
If unencrypted packets (for example, packets with the same 5-tuple) are received for the same IPSec session, the corresponding ACL entry in
復号化されたIPパケットは、その後、一つまたは複数の異なるポスト復号化オペレーションへと送られる。これらのポスト復号化オペレーションは、転送オペレーション1236を含んでいてもよい(この転送オペレーション1236は、前述したUPMアプリケーションにおけるオペレーションと同様な場合もある)。例えば、RSP 100は、転送オペレーション1236で、図13−19と関連して前述したFIBを用いた何らかのさらなるファイヤーウォールオペレーションをすることなく、単に、復号化されたパケット1204を宛先アドレスへと転送してもよい。
The decrypted IP packet is then sent to one or more different post-decryption operations. These post-decryption operations may include a transfer operation 1236 (this
他のやり方では、復号化オペレーション1234からの出力は、第二のDoSフィルタリング1238を通過するようにしてもよい。第二のDoSフィルタリング1238は、IPパケット1204内の現在は復号化されているIPアドレスおよびその他の識別子に対してDoS検出およびDoSフィルタリングを実施することができる。例えば、DoSオペレーションおよびその他のUPMオペレーションに用いられる述語の一部は、現在は復号化されている。復号化された述語は識別され、その後第二のDoSオペレーション1238、UPMオペレーション、または何らかの必要とされる他のファイヤーウォールオペレーションを実施するのに用いられる。
In other ways, the output from the
追加のファイヤーウォールオペレーションには、2005年7月14日に出願された「セマンティックプロセッサTCP状態マシンを用いたTCPの隔離(TCP ISOLATION WITH SEMANTIC PROCESSOR TCP STATE MACHINE)」という名称の同時継続のアメリカ特許出願No.11/181,528に開示されているTCPプロキシオペレーション1240が含まれていてもよい。ここで、この同時継続出願は、それを引用することにより、その内容が本出願に組み入れられているものとする。別の実行可能性のあるポスト復号化オペレーション1242では、RSP 100は、NAT/PATアプリケーションと関連して前述したように、復号化されたIPアドレスを公的アドレスまたは私的IPアドレスへと変換してもよい。
For additional firewall operations, a co-pending US patent application entitled "TCP ISOLATION WITH SEMANTIC PROCESSOR TCP STATE MACHINE" filed July 14, 2005.
どのファイヤーウォールオペレーションが実行されたのかと、復号化されたIPパケット1204の種類と、に応じて、RSP 100は、ポスト復号化オペレーション1236、1238、1240または1242をどのように組み合わせて実行してもよい。もちろん、上述した他のいずれのファイヤーウォールオペレーションもまた実行可能である。
Depending on which firewall operation was performed and the type of decrypted
ファイヤーウォールポリシー管理を用いたライセンス供与
図28に関して、RSP 100と組み合わされたACLテーブル1506は、効率的にアンチウィルス(AV)ライセンスを割り当てるのに用いることができる。現在、AVライセンスは、個々のマシン1514に割り当てられる。問題は、システム管理者がこれらのライセンスを管理するのは難しいということである。例えば、ネットワークに加えられた新しいマシン1514それぞれに対して、追加のライセンスを購入し、AVソフトウェアをインストールしなければならない。ライセンス契約が終了したら、ネットワーク管理者は、個々のマシンにAVソフトウェアを再インストールするか、それらのソフトウェアを再び有効化しなければならない。さらに、AVソフトウェアに対するアップロードはいずれも、各々のコンピュータ1514へ個別にロードされなければならない。
Licensing with Firewall Policy Management With respect to FIG. 28, the ACL table 1506 combined with
RSP 100は、集中型のライセンス管理を提供する。例えば、AVソフトウェア1504は、ファイヤーウォール1502内のRSP 100によって以下の同時継続のアメリカ特許出願で説明されているのと同様のやり方で実行することができる。この同時継続出願とは、2005年5月9日に出願された「ネットワーク処理デバイス内での侵入検知のための方法および装置」という発明の名称のアメリカ特許出願No.11/125,956のことである。その他のやり方では、AVソフトウェア1504は、従来のネットワーク処理デバイスによって実行されてもよい。
以上のこととは関係なく、RSP 100は、どのサブネットワーク1520、1522および1524がAVライセンスを持っているか判定し、それに応じて、それらのライセンスを与えられたサブネットワークに向けられたパケットだけにAVソフトウェア1504を適用する。図28および29に示すように、RSP 100は、公的インターネット1500から、特定の宛先アドレス1527を持ったパケット1525を受け取る。RSP 100内のDXP 180は、IP宛先アドレス1527を特定してSPU 200に送り、その後SPU 200にSEPコードを実行させる。このSEPコードは特に、宛先アドレス1527に対応しているサブネットワークがAVライセンスを持っているかどうか確認するものである。
Regardless of the above,
例えば、SPU 200は、パケットの宛先アドレス1527をCAM 220へ送る。この宛先アドレス1527は、ACLエントリー1526内の述語1528と適合する(マッチする)かもしれない。ACLエントリー1526と関連付けられているアクション1530は、ACL述語1528と適合したパケット宛先アドレス1527と関連しているサブネットワーク1522(図28)に対するライセンスが存在しているということを示している。アクション1530は、追加のSEPコードに対するポインタであってもよい。このSEPコードは、SPU 200に、現在サブネットワーク1522との間に確立しているコネクションの数が割り当てられたライセンスの数より少ないかどうか判定するように命令するものである。サブネットワーク1522に対して購入されたライセンスの数が、動作中のコネクションの数よりも多い場合、AVソフトウェア1504はパケット1525へ適用される。
For example, the
ファイヤーウォール1502内のSPU 200またはその他の処理機器(processing elements)は、インターネット1500と各サブネットワーク1520、1522および1524との間で動作中のコネクションの数のカウント1529を継続して保持することができる。メモリ221は、動作中のコネクションのカウント1529と、ファイヤーウォール1502に接続されているサブネットワークそれぞれに対して購入されたライセンス1531の数と、を格納する。
SPU 200は、すでに特定されているパケット宛先アドレス1527をCAM 220に入れることによって、AVソフトウェア1504がパケット1525に適用されるべきかを、すばやく判定することができる。CAM 220は、SRAM 221内の、サブネットワーク1522に対する現在のコネクションカウント1529および有効な(available)ライセンス1531を含んでいる位置を識別する。一つまたは複数のAVライセンスが有効である場合、他のファイヤーウォールオペレーションを実施する前、またはその実施中、もしくはその実施後、SPU 200は、AVソフトウェア1504をパケット1525に適用する。
The
サブネットワークが公的ネットワーク上に位置している場合、AVソフトウェア1504を通過するすべてのパケットに対してトンネルを確立してもよい。例えば、サブネットワーク1524は、ファイヤーウォール1502から離れた場所に位置していてもよい。サブネットワーク1524がAVライセンスを割り当てられている場合、対応しているACLエントリー1526内のアクション1530は(このACLエントリー1526は、サブネットワーク1524に対するアドレスと適合している)、SPU 200に、パケットをサブネットワーク1524へ送る前に、このパケットをカプセル化して、安全なトンネル1518へ入れるように命令してもよい。
If the subnetwork is located on a public network, a tunnel may be established for all packets passing through the
AVソフトウェア1504は、AVライセンスを持たないサブネットワークへは適用されない。例えば、サブネットワーク1520と関連しているACLエントリーに対しては、ライセンス鍵アクション1530は、一つも作られない。従って、RSP 100は、サブネットワーク1520へ向けられたパケットにはAV 1504を適用しない。
RSP配列
図30および31に示すように、複数のRSP 100を互いに接続してシーケンシャルファイヤーウォールオペレーションまたは並列ファイヤーウォールオペレーションを提供することができる。例えば、図30の構成では、複数のRSP 100A―100Dが、互いに直列に組み合わされ、それぞれが異なるファイヤーウォールオペレーションや、ルーティングオペレーションや、侵入検知システム(IDS)オペレーションを実行する。第一のRSP 100Aは、5タプルの送信元および宛先IPアドレスおよびポート番号を抽出することにより、入力パケット1598からIP情報を識別し、入力パケット1598から当該IP情報を抽出する。
As shown in RSP sequence diagrams 30 and 31, a plurality of
次に、第二のRSP 100Bは、図4−11と関連して説明したように、TCPと関連したオペレーション(例えば、TCPセッションの管理、DoS攻撃と関連したあらゆるTCPパケットのフィルタリングなど)を実行してもよい。第三のRSP 100Cは、パケット内で運ばれているかもしれないあらゆるHTTPセッションを検索するパケット処理オペレーションを実施してもよい。最後に、RSP 100Dは、ウィルスまたはその他の特定のタイプの情報(例えば、2005年5月9日に出願された「ネットワーク処理デバイス内での侵入検知のための方法および装置」という発明の名称の同時継続のアメリカ特許出願No.11/125,956で説明されているようなウィルスまたはその他の特定のタイプの情報)を含んでいるかもしれないHTTPセッション内のあらゆるテキストまたは実行ファイルを検索してもよい。
The second RSP 100B then performs operations related to TCP (eg, management of TCP sessions, filtering of all TCP packets related to DoS attacks, etc.) as described in connection with FIGS. 4-11. May be. The
もちろん、どのように組み合わせたRSP 100も、様々なファイヤーウォールオペレーションと非ファイヤーウォールオペレーションを任意の組み合わせたオペレーションを実行することができ、図30は、その一例を示しているに過ぎない。追加された各RSPは、性能の大幅な線形的な向上を提供する。例えば、RSP 100Aは、解析されたどのような、ファイヤーウォール述語、IDSトークン、非終端(NT)312、生成コード178およびSEPコード177B(図2Bおよび2C)など1602も次のRSP 100Bへ送ることができる。パケット処理が完了したら、RSP 100Bは、同様の状態情報1602をRSP 100Cへ送ることができる。
Of course, any combination of
これは、それ以降の各RSP 100が、すでに以前のRSP内ですでに完了された解析と同一の解析の一部を繰り返さなければいけないことを防ぐ。さらに、DXP 180(図2A)のアーキテクチャは、各RSP 100が、NT 132をパーサスタック185(図2A)へロードするだけで、以前のRSPと同一の状態にすばやく変化することを可能にする。例えば、RSP 100Aは、IP宛先アドレスを含んでいるACL述語を識別してもよい。RSP 100Aは、ACL述語と、関連しているNT 132をメッセージ1602に入れて、関連しているパケット1600とともにRSP 100Bへ送る。RSP 100Bは、その後、すでにRSP 100Aから離れた(left off)状態で、すでに特定されているIPアドレス情報を用いて、パケット1600に対するTCPオペレーションを開始することができる。従って、RSP 100Bはパケット1600を再解析して、例えば、宛先IPアドレスを再識別する(rediscover)必要はない。
This prevents each
これは、パケットプロセッサ状態をすぐに受け渡しできない従来のプロセッサアーキテクチャと正反対である。結果として、パケット処理システムに追加される従来の各プロセッサは、必ずしもネットワーク処理デバイスの全体的な性能を線形的に向上させない。言い換えると、従来のコンピュータアーキテクチャを用いているパケット処理デバイスの数を倍にしても、全体の処理能力は必ずしも倍にはならない。反対に、本実施例では、RSP 100の数を倍にすれば、ホストネットワーク処理システムの全体の性能は、ほぼ倍になる。
This is the opposite of conventional processor architectures that cannot immediately pass packet processor state. As a result, each conventional processor added to the packet processing system does not necessarily linearly improve the overall performance of the network processing device. In other words, doubling the number of packet processing devices using a conventional computer architecture does not necessarily double the overall processing capability. On the contrary, in this embodiment, if the number of
図31は、RSP 100の別の構成を示している。この構成では、一つまたは複数のRSP 100が平行して動作する。第一のRSP 100Aは、パケットから抽出されたIPアドレスと、その他の述語と、に基づいて、もしファイヤーウォールオペレーションが実行される必要があるならば(if any)、他のどのファイヤーウォールオペレーションがこれらの入力パケット1598に対して実行される必要があるのかを判定する初期UPMオペレーションを実行する。RSP 100Aは、その後、これらのパケットを、識別されたファイヤーウォールポリシーメトリックスに従ってRSP 100B−Gへとルーティングする。
FIG. 31 shows another configuration of the
例えば、識別されたファイヤーウォール述語に基づいて、パケット1598はRSP 100Bによって提供されるDoS処理を要求するかもしれない。それに応じて、RSP 100AはこれらのパケットRSP 100Bへとルーティングする。RSP 100Bが、このパケットに対する宛先サブネットアドレスは、図28および29と関連して上述したように、関連したIDSライセンスを有していると判定した場合、このパケットは、アンチウィルス処理のためにRSP 100Cへルーティングされてもよい。そうでない場合、RSP 100Bは、このパケットをローカルネットワーク1604内のエンドポイントへ転送してもよい。
For example, based on the identified firewall predicate,
RSP 100A内のUPMルーティングが、このパケットはIPv4フォーマットへと変換される必要があると判定した場合、このパケットはRSP 100Dへルーティングされる。このパケット1598は、RSP 100Eへと送られる。続いて、RSP 100Eは、様々な上位OSI層データに従ってこのパケットを処理する。例えば、RSP 100Eは、図17と関連して前述したように、このパケット内のHTTP情報に従ってこのパケットをルーティングしてもよい。
他のパケットはそれぞれ、他のNATオペレーションを実施するためならRSP 100Fへ、他のDoSオペレーションを実施するためならRSP 100Gへ、ルーティングされてもよい。
コマンドライン・インターフェース(CLI)/ロギング/統計値
コマンドライン・インターフェース (Command Line Interface)
図2Aに戻るが、コマンドライン・インターフェース(CLI)282は、MCPU 56と組み合わされ、コンピュータ284のオペレータがCLIコマンドとデータ286をRSP 100に入力することを可能にする。その後、MCPU 56は、コンピュータ284から受け取ったCLIコマンド286を解釈し、それに従って動作する。例えば、CLIコマンド286は、MCPU 56に、新しいACLエントリーをメモリサブシステム215内のTCAM 220へロードするように命令してもよい。また、CLIコマンド286は、MCPU 56に、データをメモリサブシステム215内の他のどのメモリ構成要素へロードするように命令してもよい。
If UPM routing in
Each of the other packets may be routed to the
Command line interface (CLI) / logging / statistics
Command line interface
Returning to FIG. 2A, a command line interface (CLI) 282 is combined with the MCPU 56 to allow an operator of the
また、CLIコマンド286は、RSP 100内の他の記憶装置構成要素や、テーブルを構成するのに用いられてもよい。例えば、CLIコマンド286は、MCPU 56に、新しいパーサ文法をパーサテーブル170へロードするように命令したり、生成規則176を生成規則テーブル190へロードするように命令したり、新しいSEPコード212をセマンティックコードテーブル210へロードするように命令してもよい。CLIコマンド286は、MCPU 56に、メモリサブシステム215内の記憶装置構成要素またはテーブルのどれか一つから情報を読み込むように命令したり、RSP 100内のその他の処理構成要素から情報を読み込むように命令したりすることができる。
The
ロギング (Logging)
SEPコード212は、SPU 200に、ロギングのために、検出されたイベントの一部をMCPU 56へ記録するように命令することができる。例えば、SPU 200は、DoS攻撃の一部であると識別された何らかのパケットをMCPU 56へ送ってよい。DoS攻撃が検出された場合、SEPコード212は、SPU 200に、除外されたパケットのサンプル(one exemplary dropped packet)をMCPU 56へ送るように命令する。SEPコード212は、同様のパケットが除外されるたびに、MCPU 56へ告知するようにSPU 200に命令してもよい。
Logging
The
MCPU 56は、除外されたパケット内に含まれる特定の情報と、同様に除外されたパケットの数を特定する統計値と、をログへとフォーマットする。このログは、システムログマシンのIPアドレスを持ったIPパケットへとフォーマットされてもよい。この場合、システムログマシンはその後、RSP 100内で検出されたイベントを受け取り、記録する。このログを含んでいるパケットは、SPU 200によって、出力ポート152を介してシステムログマシンへと送られてもよい。
The MCPU 56 formats the specific information contained in the excluded packets and statistics that also specify the number of excluded packets into a log. This log may be formatted into an IP packet with the IP address of the system log machine. In this case, the system log machine then receives and records events detected within the
どのようなイベントもRSP 100によって記録することができる。また、それに限定されるわけではないが、これらのイベントは、前述したファイヤーウォールオペレーション内で識別されるいずれのイベントを含んでいてもよい。例えば、SEPコード212は、SPU 200に、CAM 220内の特定のACLエントリーと適合する(マッチする)パケットをMCPU 56へ送るように命令してもよい。
Any event can be recorded by the
統計値 (Statistic)
必要とされるどのような統計値もRSP 100の中に記録することができ、かつ他の場所に保存するかあるいはロギングシステムに送ることができる。例えば、SPU 200は、すべての受け取ったパケットや、除外されたパケットや、出力されたパケットをカウントするようにプログラムされてもよい。別のSEPコード212は、他の関連しているファイヤーウォールオペレーションに加えてロギングコマンドを含んでいてもよい。RSP 100は、送受信されたパケットと関連したどのような統計情報も識別する。送受信されたパケットと関連した統計情報の例としては、受信されたパケットの数や、受信されたパケットのサイズや、送信されたパケットのサイズおよび数や、除外されたパケットの数や、悪いチェックサムを持ったパケットの数や、複製されたパケットの数や、失敗したログインの試みなどが挙げられる。この統計値は、CLIコマンド286を介してコンピュータ284にダウンロードするか、一定期間ごとに、SPU 200によって出力ポート152を介してパケットとして送信することができる。
Statistic
Any required statistics can be recorded in the
認定(certification)
前述したファイヤーウォールオペレーションはいずれも、認定されており、いろいろな業界に受け入れられている認定基準に準拠している。この認定基準には、Institute for Computer Security Association (ICSA)、National Institute of Standards and Technology(NIST)、University of New Hampshire(UNH)、PLUG Festなどが含まれる。
要約(summation)
アクセス制御リストと組み合わせたRSPアーキテクチャの今までにない利用法により、同一のハードウェアを使用しかつ最小限のソフトウェア再構成を行うだけで、異なるファイヤーウォール、UPMまたはその他のパケット処理オペレーションをより効率的に実行できる。これらの複数のファイヤーウォールオペレーションは、DXPまたは前の他のファイヤーウォール解析オペレーションによって確認されている構文的な要素(例えば述語)を利用することができる。このようにして、RSPは高度に拡張性のあるファイヤーウォールアーキテクチャを提供する。
Certification
All of the firewall operations described above are certified and comply with certification standards accepted by various industries. These certification standards include the Institute for Computer Security Association (ICSA), the National Institute of Standards and Technology (NIST), the University of New Hampshire (UNH), and PLUG Fest.
Summation
Unprecedented use of the RSP architecture in combination with access control lists makes different firewalls, UPMs or other packet processing operations more efficient using the same hardware and minimal software reconfiguration Can be executed. These multiple firewall operations can utilize syntactic elements (eg, predicates) that have been verified by DXP or other previous firewall parsing operations. In this way, RSP provides a highly scalable firewall architecture.
上述したように、前述したオペレーションはいずれも、任意のネットワーク処理デバイス上で実施することができ、エッジデバイスや従来はファイヤーウォールと呼ばれていたシステム上で動作することに限定されない。例えば、DoS、UPMおよびその他のオペレーションは、ゲートウェイ、ルーター、サーバー、スイッチおよびその他の何らかのエンドポイントデバイス上で実行されてもよい。さらに、上述されたオペレーションの大部分は、必ずしもRSP 100を用いて実施される必要はないし、代わりに従来のコンピュータアーキテクチャ内で実施されてもよい。
As described above, any of the operations described above can be performed on any network processing device and are not limited to operating on an edge device or a system conventionally referred to as a firewall. For example, DoS, UPM, and other operations may be performed on gateways, routers, servers, switches, and some other endpoint device. Further, most of the operations described above need not be performed using
侵入検知 (Intrusion Detection)
以下の説明では、「ウィルス」という単語は、あらゆる種類の侵入、認証されていないデータ、スパム、スパイウェア、サービス妨害(DoS)攻撃、もしくは、ネットワーク処理デバイスによって侵入と見なされるあらゆる他の種類のデータ、信号、メッセージ送信などを表す。「ウィルス」という単語は、別の呼び方では、「マルウェア」と呼ばれ、何らかの特定の種類の認証されていないデータまたはメッセージに限定されない。
Intrusion detection
In the following description, the word “virus” refers to any type of intrusion, unauthenticated data, spam, spyware, denial of service (DoS) attacks, or any other type of data that is considered an intrusion by a network processing device. , Signal, message transmission, etc. The word “virus”, otherwise called “malware”, is not limited to any particular type of unauthenticated data or message.
図32Aは、周辺機器(エッジデバイス)2025Aを介して公的インターネットプロトコル(IP)ネットワーク2012に接続されている私的IPネットワーク2024を示している。公的IPネットワーク2012は、パケット交換を提供しさえすればどのような広域ネットワーク(WAN)でもよい。私的ネットワーク2024は、攻撃(例えば、公的ネットワーク2012から来るウィルスまたは他のマルウェア攻撃など)を防御する必要がある企業ネットワークや、インターネットサービスプロバイダー(ISP)ネットワークや、家庭内ネットワークなどである。
FIG. 32A shows a
私的なネットワーク2024内のネットワーク処理デバイス2025A−2025Dは、パケット交換ネットワーク上で通信しさえすればどのようなタイプのコンピュータ関係の構成要素でもよい。例えば、ネットワーク処理デバイス2025Aおよび2025Bは、ルーターや、スイッチや、ゲートウェイなどでよい。この例では、ネットワーク処理デバイス2025Aは、ファイヤーウォールとして動作し、デバイス2025Bはルーターまたはスイッチとして動作する。(デバイス2025Bはルーターや、スイッチや、デバイス2025Cとして動作する。)エンドポイント2025Cは、個人用コンピュータ(PC)であり、エンドポイント2025Dは、インターネットウェブサーバーのようなサーバーである。このPC 2025Cは、有線イーサネット接続のような有線接続もしくは例えばIEEE802.11プロトコルを用いている無線接続を介して前記私的ネットワーク2024に接続されてもよい。
The
侵入検知システム(IDS)2018は、私的ネットワーク2024内で動作しているネットワークデバイス2025A−2025Dの何らかの組み合わせで実施される。各IDS 2018は、ホストネットワーク処理デバイス2025を通過するネットワークトラフィックのパケットストリーム2022を受信し、それを解析し、その後、パケットストリーム2022内でウィルスを含んでいるすべてのパケット2016を識別し、それらを廃棄する。ある実施例では、IDS 2018は、以下でより詳しく説明する再構成可能なセマンティックプロセッサ(RSP)を用いて実施される。しかし、IDS 2018は、RSPを用いた実施例に限定されず、その他の処理デバイスもまた使用できるということが理解できるであろう。
Intrusion detection system (IDS) 2018 is implemented with any combination of
ある実施例では、IDS 2018は、エッジルーター2025A内にインストールされる。このエッジルーター2025Aは、私的ネットワーク2024を外部公的ネットワーク2012に繋ぐ。ある実施例では、IDS 2018は、従来IDSオペレーションを実施していないネットワーク処理デバイス内で実施してもよい。例えば、IDS 2018は、ルーターまたはスイッチ2025B内で実施してもよい。また別の例では、IDS 2018は、一つまたは複数のエンドポイントデバイス内(例えば、PC 2025C内や、ウェブサーバー2025D内)で実施してもよい。異なる複数のネットワーク処理デバイス2025A−2025D内で侵入検知システム2018を実施すれば、より完全な侵入検知が得られ、複数の異なるアクセスポイントを介して私的ネットワーク2024に侵入したウィルス2026は、エッジルーター2025Aを介して侵入したものを除いて、取り除くことができる。例えば、従業員(employee)の個人用コンピュータ2025Cを介して私的/内部ネットワーク2024にアクセスするウィルスは、PC 2025C、ルーター2025B、またはサーバー2025D上で稼動しているIDS 2018によって検出し、取り除くことができる。
In one embodiment,
別の実施例では、ネットワーク処理デバイス2025内のIDS 2018は、私的ネットワーク2024に起因するウィルス2016Aを検出し、それを取り除くのに用いられる。例えば、PC 2025Cの操作者は、公的IPネットワーク2012内で稼動しているネットワークデバイスへ向けられたウィルス2106Aを生成するかもしれない。このウィルス2016Aが公的IPネットワーク2012へと出力される前に、このウィルスを識別してそれを取り除くために、内部ネットワーク2024内で稼動している複数のIDS 2018のどのような組み合わせも、用いることができる。
In another embodiment,
セマンティックプロセッサは、私的ネットワーク2024の全範囲にわたってアンチウィルスオペレーションを組み込み、分散させることを可能にする。例えば、このセマンティックプロセッサは、ネットワークルーターまたはスイッチ2025Bの複数のポート内で侵入検知オペレーションを実施することができる。組み込まれた侵入検知システムIDS 2018は、現在の境界アンチウィルス検出スキーム(current perimeter anti virus scheme)よりも強固であり、この現在の境界アンチウィルス検出スキームよりも効果的な侵入検知を提供する。この侵入検知スキームは、電子メールの添付ファイルなどの特定の疑わしいデータタイプを処理する必要はなく、データフローに対して、ネットワークの送信速度において、オフライン状態で実行される。
Semantic processors allow for the incorporation and distribution of anti-virus operations across the entire
構文的な要素を用いた侵入検知 (Intrusion Detection Using Syntactic Elements)
図32Bは、従来の侵入検知システムがどうやってフィルタを生成するのかを示している。入力データストリーム2071は、複数のパケット2072を含んでいる。これらのパケット2072は、一つまたは複数のヘッダー2072Aおよびペイロード2072Bを含んでいる。従来の侵入検知システムは、無差別に、データストリーム2071内の各パケット2072の各バイト2074を、脅威シグネチャ2058と比較する。脅威シグネチャとの比較によって生成されたフィルタ2075はすべて、その後全体のデータストリーム2071へと適用される。
Intrusion Detection Using Syntactic Elements
FIG. 32B shows how a conventional intrusion detection system generates a filter. The
この侵入検知スキームは、不必要にコンピューティングリソースを消費する。例えば、ヘッダーデータ2072Aのような、データストリーム2071内の情報の一部は、脅威を含んでいることはまず無いであろう。それにもかかわらず、図32Bの侵入検知システムは、無差別に(blindly)、データストリーム2071内の各バイトを脅威シグネチャ2058と比較する。これは、侵入検知を実行しているコンピューティングリソースに、不必要に負担を負わせる。
This intrusion detection scheme consumes computing resources unnecessarily. For example, some information in the
また、図32Bの侵入検知スキームは、現在ウィルスについてスキャンされている複数のパケット間のコンテキストを区別しない。例えば、電子メールウィルスと関連している脅威シグネチャ2058は、パケット2072が実際に電子メールメッセージを含んでいるかどうかにかかわらず、すべてのパケット2072に適用される。従って、電子メールウィルスと関連している脅威シグネチャ2058は、HTTPメッセージを含んでいるパケット2072と比較されるかもしれない。これは、この侵入検知システムの拡張性をさらに制限する。
Also, the intrusion detection scheme of FIG. 32B does not distinguish the context between multiple packets that are currently being scanned for viruses. For example, the
図32Cは、より効率的にウィルスを検出するために、データストリーム内の構文要素を確認するIDS 2018のある実施例を示している図である。このIDS 2018は、パーサを用いてパケット2072と関連しているセッションコンテキスト2082を特定する。例えば、最初の解析オペレーション中に、一つまたは複数のメディアアクセス制御(MAC)アドレス2076A、インターネットプロトコル(IP)アドレス2076Bおよび転送制御プロトコル(TCP)アドレス2076Cが、特定されるかもしれない。この例では、パーサは、パケット2072は簡易メール転送プロトコル(SMTP)電子メールメッセージを含んでいると特定するかもしれない。これらのセッションコンテキスト2082の識別子2076A−2076Dは、別の呼び方では構文要素と呼ばれる。
FIG. 32C is a diagram illustrating an embodiment of
構文要素2076を特定することで、IDS 2018は、より効率的にウィルスまたはその他のマルウェア脅威を検出し、それらを取り除くことができる。例えば、IDS 2018は、当該パケット2072の先頭(beginning)で検出されるセッションコンテキスト2082に基づいてさらなる侵入検知オペレーションをカスタマイズすることができる。例えば、セッションコンテキスト2082は、パケット2072は電子メールメッセージを含んでいるとして識別する。その結果、IDS 2018は、特に電子メールメッセージと関連しているさらなる構文的要素2076E−2076Hを検索し、識別することができる。さらに正確に言えば、ウィルスを含んでいるかもしれない電子メールのセマンティック要素を識別する。
By identifying syntax element 2076,
例えば、IDS 2018は、電子メールメッセージ内の「送信先(宛先)(to):」、「差出人(送信元)(from):」および「題名(subject):」などのフィールド(fields)についての情報を含んでいるセマンティック要素2076E−2076Gを識別する。また、IDS 2018は、電子メールメッセージ内に含まれている電子メール添付ファイル2076Hを識別してもよい。この例では、ウィルスまたはマルチウェアが含まれている可能性があるのは、電子メール添付ファイルを含んでいる構文要素2076H内だけである。他の構文要素2076A−2076Dは、侵入脅威とはならないであろう。従って、電子メール添付ファイルを含んでいる構文要素2076Hだけが該脅威シグネチャ2058と比較される。
For example,
他の構文要素2076A−2076Dは、パケット2072をフィルタリングするのに用いられるフィルタ2070を生成するのを補助するのに用いてもよい。例えば、フィルタ2070は、構文要素2076F内で確認されたものと同一の「差出人(from):」フィールド(field)を持っているか、構文要素2076B内で確認されたものと同一のIP送信元アドレスを持っている、すべてのパケットをフィルタリングするように生成されてもよい。
従って、IDS 2018は、IPセッションコンテキスト2082、データストリームのトラフィック特性および構文2076に基づいて侵入の企図を検出することができる。これらの侵入は、この後、ネットワークトラフィック内で識別された構文要素2076を、厄介だと見なされるイベントを記述している脅威シグネチャ規則2058と比較することで検出される。これらの規則2058は、いかなる活動(例えば、特定のサービスと接続されている特定のホスト)を記述することもできるし、どのような活動が警告するに相当するかについて(例えば、所定の数の異なるホストに対する攻撃があると「スキャン」を構成するとする)、あるいは既知の攻撃や既知の脆弱性に対するアクセスを記述しているシグネチャについて記述することができる。
Accordingly,
一定のパケットディレイ (Fixed Packet Delay)
図33は、IDS 2018と組み合わせて用いられているディレイバッファを示している。侵入監視オペレーション2040は、場所的には、再構成可能なセマンティックプロセッサ(RSP)2100内で実行するか、RSP 2100内またはRSP 2100の外部で動作している他の侵入監視回路(intrusion monitoring circuitry)と組み合わされて実行することができる。
Fixed packet delay
FIG. 33 shows a delay buffer used in combination with
図33および34に関して、ブロック2048Aで、RSP 2100は、入力ポート2120からパケット2022を受信する。RSP 2100は、ブロック2048Bで、ウィルスや別タイプの脅威を含んでいる第一カテゴリーのパケット2032Aを廃棄する予備的な(初期)脅威フィルタリングオペレーションを実施してもよい。この初期フィルタリング2048Bは、例えば、所定の既知の脅威シグネチャを有するテーブルにアクセスすることで実行されてもよい。この初期フィルタリングは、特定のデータ2032Aを、IDS 2018によってさらに処理されるのを防ぐ。例えば、サービス妨害攻撃や、既知のウィルス攻撃や、認証されていないIPセッションを検出することができれば、IDS 2018によってさらに処理することなく関連しているパケットを取り除くことができる。
33 and 34, at
ブロック2048Cで、RSP 2100は、残っているパケット2022をパケットディレイ(遅延)バッファ2030へ格納する。ある例では、このパケットディレイ(遅延)バッファ2030は、ダイナミックランダムアクセスメモリ(DRAM)もしくは、一時的に入力データストリーム2022をバッファするようにサイズ調整された別タイプのメモリである。ブロック2048Dで、RSP 2100はさらに、入力データストリームの構文を識別する。例えば、RSP 2100は、電子メールメッセージを含んでいるパケットを識別するかもしれない。
In block 2048C, the
ウィンドウズ(登録商標)ベースのPCに対する侵入攻撃の大部分は、メッセージ内のファイルまたはスクリプトとして到着する電子メールメッセージに起因する。攻撃内のデータのフォーマットは、単純な二進法のマシンコードまたはASCIIテキストである。これらのメッセージは、配信メカニズムの構文と、セマンティックスと、を満たしてはじめてアクティブ化可能にとなる。例えば、電子メールメッセージ内の実行ファイルは、Request For Comment (RFC) 2822に規定されているMultipurpose Internet Mail Extensions (MINE)準拠のファイル添付形式を用いているSimple Mail Transfer Protocol/Point of Presence (SMTP/POP)を用いて転送される。それゆえ、RSP 2100は、ブロック2048Dで、SMTPとMIMEプロトコルの何らかの組み合わせに対応しているパケットを識別してもよい。
The vast majority of intrusion attacks on Windows-based PCs result from email messages arriving as files or scripts within the message. The format of the data in the attack is a simple binary machine code or ASCII text. These messages can only be activated if they satisfy the delivery mechanism syntax and semantics. For example, an executable file in an e-mail message may be a Simple Mail Transfer Protocol / Point of Presence (SMTP /) file using the Multipurpose Internet Mail Extensions (MINE) file attachment format specified in Request For Comment (RFC) 2822. POP). Therefore,
RSP 2100は、ブロック2048Eで、データストリーム2022に関して識別された構文に対応するトークン (token) 2068を生成する。例えば、トークン2068は、識別された電子メールメッセージの特定の部分要素を含んでいるかもしれない。この部分要素の例としては、電子メッセージの差出人(「From:」)、電子メールメッセージの宛先(「To:」)、電子メールメッセージの題名(「Subject:」)、電子メールが送られた時間(「Sent:」)、電子メールメッセージに含まれている添付ファイルなどがある。RSP 2100はこのセッション情報を分析するので、ネットワーク処理デバイス(例えば、ルーターやスイッチなど)内での脅威フィルタリングは、単一のパケット内で見つる要素に限定されない。すなわち、TCPセッションの乗っ取り企てや、FTPストリームを迂回させようとする企てや、HTTPS証明書を偽造しようとする企てなどもフィルタリングする。
The
トークン2086は、ブロック2048Fで、パケットディレイ(遅延)バッファ2030内に含まれているデータの構文に対してカスタマイズされている第二のさらに徹底したフィルタセットを動的に生成するのに用いられる。例えば、トークン2068は、電子メールメッセージ内に含まれているウィルスと関連付けられたフィルタ2070を生成するのに用いられる。これは、IDS 2018の拡張性にとって重要である。データの構文と関連付けられたフィルタを生成することにより、このIDSは、より効率的に脅威をスキャンすることができる。例えば、IDS 2018は、現在処理されている種類のデータには不適当なフィルタを適用することに時間を浪費せずに済む。
The token 2086 is used at
RSP 2100は、ブロック2048Gで、このカスタマイズされたフィルタセット2070を、パケットディレイ(遅延)バッファ2030内に格納されているデータへ適用する。フィルタ2070によって識別された脅威を含んでいるすべてのパケット2032Bは廃棄される。このデータが、あらかじめ決められた一定の時間、パケットディレイ(遅延)バッファ2030内に格納された後、RSP 2100は、ブロック2048Hで、該データを出力ポート2152へ出力する。
The
パケットディレイ(遅延)バッファ2030によって提供されるこの一定のディレイ(遅延)は、監視オペレーション2040に、時間を与える。この時間は、脅威を査定し、負担している処理の中に新しい脅威があるかどうか判定し、構文と関連付けられたフィルタ2070のセットを形成し、当該データ2034が出力ポート2152から出力される前にこれらのフィルタを適用するための時間である。1Gbps(1ギガビット毎秒)のイーサネットLANシステムに対して、バッファ2030内でかけられるディレイ(遅延)は、通常、約20ミリ秒(ms)から50ミリ秒(ms)となる。もちろん、他の一定にしたディレイ(遅延)時間も用いることもできる。
This constant delay provided by the
RSP 2100は、データストリーム2022を処理するために今までにない解析技術を用いる。これは、RSP 2100が、侵入監視オペレーション2040を、同一のネットワーク処理デバイス内で実行されているかもしれない他の入力ネットワークルーティングオペレーションからオフラインにすることなく、IDS 2018をネットワークの回線転送速度で実施することを可能にする。これは、RSP 2100が、入力パケット2022を一定にしたパケットディレイ(遅延)をかけて処理することを可能にする。このパケットディレイ(遅延)は、侵入者が侵入検知システムを実行するネットワーク処理デバイス2025(図32A)を識別し、それを回避するのを困難にする。
The
例えば、侵入者は、私的ネットワーク2024(図32A)をウィルスに感染させようと試みている間、ネットワークの遅れを監視する。繰り返されるウィルス攻撃に応答している特定のネットワークパスにおいて他より長い応答時間が識別された場合、侵入者は、このパスが侵入検知システムを含んでいると判断するかもしれない。他のネットワークパスは、試みられた攻撃に応答するのに他より長い時間がかからなかった場合、侵入者は、このパスは侵入検知システムを含んでいないと結論し、この識別されたネットワークパス内のポートまたはデバイスを介してウィルスを送るかもしれない。 For example, an intruder monitors network delays while attempting to infect the private network 2024 (FIG. 32A) with a virus. If a longer response time is identified in a particular network path that is responding to repeated virus attacks, an intruder may determine that this path includes an intrusion detection system. If the other network path did not take longer than the others to respond to the attempted attack, the intruder concludes that this path does not contain an intrusion detection system and the identified network path May send viruses through ports or devices inside.
データ2022の種類や、そのデータストリーム2022に対して生成されかつ適用されるフィルタの種類とは無関係な一定のパケットディレイ(遅延)を、入力ポート2120と出力ポート2152の間に設けることで、IDS 2018は、侵入者がIDS 2018を実行しているネットワーク処理デバイス2025を識別するのを防ぐ。もちろん、これは実施例の一つに過ぎず、他のIDS実施例2018は、一定にしたパケットディレイを用いて実行されなくてもよい。
By providing a constant packet delay between
別の実施例では、RSP 2100は、識別された特定の種類のデータにだけ一定のディレイをかけ、一方で、他のデータは一定のディレイをかけることなく処理する。データストリームの構文を識別することで、IDS 2018は、ウィルスに関してスキャンする必要があるデータストリームと、ウィルスに関してスキャンする必要がないデータストリームと、を識別することができる。IDS 2018は、その後、理にかなったやり方で、スキャンされたデータストリームに対してだけ一定のディレイをかける。例えば、RSP 2100は、TCP SYNメッセージを含んでいると識別されたパケットに一定のディレイをかけてもよい。このSYNパケット内に何の不正(irregularity)も検出されなかった場合、RSP 2100は、図34と関連して前述したような、一定のディレイをかけることなく、それ以降に(subsequently)受信されるTCPデータパケットを受信して、それらを処理してもよい。それゆえ、確立されていないTCPセッションは、他のトラフィックが遅延させられないのに対して、遅延させられるかもしれない。
In another embodiment, the
図35は、図34に示されているIDS 2018によって実行されるオペレーションのより詳しい説明である。データストリーム2022からのパケットは、入力ポート2120を介してパケット入力バッファ(PIB)2140によって受信される。パケット2022からのバイトは、直接実行パーサ(DXP)2180およびセマンティック処理ユニット(SPU)2200によって処理される。この例では、一つまたは複数のSPU 2200は、アクセス制御リスト(ACL)照合オペレーション2050、セッション検索オペレーション2052およびトークン生成オペレーションを同時に実行することができる。
FIG. 35 is a more detailed description of the operations performed by
ACL照合オペレーション2050は、データストリーム2022内の入力パケットをアプリオリであると知られている(that are known a priori)フィルタ2064の初期ACLリストと照合する。ACL照合オペレーション2050は、ACLフィルタ2064と適合したパケットを取り除き、その後残ったパケット2022をディレイ(遅延)FIFO 2030へとロードする。
セッション検索オペレーション2052は、パケット2022を既知で、有効なIPセッションと照合する。例えば、DXP 2180は、TCP SYNメッセージに関するTCPセッション、ポート番号および到着レートを識別するセッション検索2052に対して情報を送ってもよい。セッション検索2052は、このTCPセッションおよびポート番号は今までに確認されているかどうかと、そしてそれがいつなのかを判定する。パケット2022が有効なTCP/IPセッションと識別された場合、これらのパケット2022を、出力バッファ(POB)2150へ直接送ってもよい。
トークン生成オペレーション2054は、DXP 2180によって識別されたデータストリーム2022の構文に従ってトークン2068を生成する。ある例では、トークンジェネレータ2054は、5タプルデータセットを含んでいるトークン2068を生成する。この場合、5タプルデータセットには、入力バッファ2140内で処理されているパケットと関連している送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号が含まれる。これらのトークン2068は、TCPパケット内のあらゆる異常(anomaly)(例えば、未知のIPまたはTCPオプションなど)を含んでもよい。
Generate
以下で説明する例では、トークン2068の一部は、電子メールメッセージと関連している構文要素も含んでいる。例えば、DXP 2180は、図32Cで説明したように、簡易メール転送プロトコル(SMTP)セッションと関連しているパケットを識別してもよい。トークン生成オペレーション2054は、その後、電子メールセッションからSMTS/MIME添付ファイルのような特定の情報を抽出する。電子メールメッセージと関連しているトークン2068のある例は、以下のType-Length-Value(TLV)フォーマットを用いて生成される。
Token #1
Type: SMTP/MIME Attachment (method for transferring files in email messages)
Length: # of bytes in the file
Value: actual file
別の例では、DXP 2180は、入力バッファ2140内のハイパーテキスト・マークアップ・ランゲージ(HTML)セッションと関連しているパケット2022を識別する。トークン生成オペレーション2054は、それに応じて、特に以下のHTTPセッションと関連していて、以下のHTTPセッションを特定するトークンを生成する。
Token #2
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
トークン2068は、上述したようなトークン生成オペレーション2054によって、トークン2068内に含まれている構文情報が、脅威/ウィルス解析およびACL対策エージェント2056によって、簡単に脅威シグネチャ2058と比較できるようにフォーマットされる。ある例では、対策エージェント2056は、トークン2068をメモリ内に格納されている所定の脅威シグネチャ2058と比較する通常目的の中央処理ユニット(CPU)である。例えば、対策エージェント2056は新しい侵入対策フィルタが必要かどうかを決定する(decide)ために、「BRO」−http://ee.ibl.gov/bro.htmlや、「SNORT」−http://www.snort.orgのようなさまざまな既存のアルゴリズムを利用してもよい。これらのアルゴリズムはともに、これらを引用することにより、その内容が本出願に組み入れられているものとする。脅威シグネチャ2058は、例えば、SNORTやMcAfeeから利用できる市販の侵入検知データベースによって供給されてもよい。
In the example described below, part of the token 2068 also includes a syntax element associated with the email message. For example,
Type: SMTP / MIME Attachment (method for transferring files in email messages)
Length: # of bytes in the file
Value: actual file
In another example,
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
対策エージェント2056は、トークン2068と脅威シグネチャ2058の間にあった適合(matches)例に対応する出力ACLフィルタ2070を動的に生成する。例えば、脅威シグネチャ2058は、トークン2068の一つの中に含まれている電子メール添付ファイルのウィルスを識別するかもしれない。対策エージェント2056は、その後、ウィルスに感染した電子メール添付ファイルを含んでいるパケットの送信元IPアドレスを含んでいるフィルタ2070を動的に生成する。このフィルタ2070は、ACLオペレーション2062へ出力される。その後、このオペレーションは、ディレイ(遅延)FIFO 2030内から、フィルタ2070によって特定される送信元IPアドレスを含んでいるパケット2016をすべて廃棄する。その後、残っているパケットは出力バッファ2150へ出力される。
The
再構成可能なセマンティックプロセッサ(RSP)
図36は、ある実施例において、前述したIDS 2018を実施するのに用いられている再構成可能なセマンティックプロセッサ(RSP)2100のブロック図を示している。このRSP 2100は、入力ポート2120を介して受信されるパケットデータストリームをバッファするための入力バッファ2140と、出力ポート2152を介して出力されるパケットデータストリームをバッファするための出力バッファ2150と、を有している。
Reconfigurable Semantic Processor (RSP)
FIG. 36 shows a block diagram of a reconfigurable semantic processor (RSP) 2100 that is used to implement the
直接実行パーサ(DXP)2180は、入力バッファ2140において受信されるパケットまたはフレーム(例えば入力「ストリーム」)と、出力バッファ2150へ出力されるパケットまたはフレーム(例えば、出力「ストリーム」)と、再循環バッファ2160内で再循環されるパケットまたはフレーム(例えば、再循環「ストリーム」)と、の処理を制御する。入力バッファ2140、出力バッファ2150および再循環バッファ2160は、先入れ先出し(FIFO: first in-first-out)バッファであるのが好ましい。また、DXP 2180は、セマンティックプロセッシングユニット(SPU)2200によってパケットの処理を制御する。このセマンティックプロセッシングユニット(SPU)は、バッファ2140、2150および2160とメモリサブシステム2215間でのデータの転送を制御する。メモリサブシステム2215は、入力ポート2120から受信したパケットを格納し、また、該入力データストリーム内の脅威を識別するために用いられる脅威シグネチャ2058(図35)も格納する。
Direct execution parser (DXP) 2180 recirculates packets or frames received at input buffer 2140 (eg, input “stream”) and packets or frames output to output buffer 2150 (eg, output “stream”). Controls the processing of packets or frames that are recirculated in buffer 2160 (eg, recirculating “streams”).
RSP 2100は、所定のIDSオペレーションを実行するために少なくとも三つのテーブルを用いる。生成規則2176を検索するためのコード2178は、パーサテーブル(PT)2170内に格納される。文法生成規則2176は、生成規則テーブル(PRT)2190内に格納される。SPU 2200によって実行されるコードセグメントは、セマンティックコードテーブル(SCT)2210内に格納される。パーサテーブル2170内のコード2178は、行列(row-column)フォーマットやコンテントアドレッサブル(content addressable)フォーマットなどのやり方で格納される。行列(row-column)フォーマットでは、パーサテーブル2170の行は、内部パーサスタック2185によって提供される非終端コードNT 2172によりインデックス付けされ、パーサテーブル2170の列は、入力バッファ2140内のデータの先頭から抽出される入力データ値DI[N]2174によりインデックス付けされる。コンテントアドレッサブル(content addressable)フォーマットでは、パーサスタック2185からの非終端コード2172と入力バッファ2140からの入力データ値2174を連結したものが、パーサテーブル2170に対する入力をなす。
生成規則テーブル2190は、パーサテーブル2170からのコード2178によってインデックス付けされる。テーブル2170と2190は、パーサテーブル2170に対するクエリが、非終端コード2172および入力データ値2174に適用可能な生成規則2176を直接送り返すように、図36に示されているようにリンクされてもよい。DXP 2180は、パーサスタック2185の一番上にある非終端コードを、PRT 2190から送り返された生成規則(PR)2176と取り替え、その後入力バッファ2140からのデータの解析を続ける。
Production rule table 2190 is indexed by
セマンティックコードテーブル2210もまた、パーサテーブル2170により生成されたコード2178か、生成規則テーブル2190により生成された生成規則2176、もしくはその両方によってインデックス付けされる。通常、解析結果は、所定の生成規則2176に対してSPU 2200がセマンティックコードテーブル2210からのコードセグメント2212をロードしかつ実行すべかどうかを、DXP 2180が検出することを可能にする。
Semantic code table 2210 is also indexed by
SPU 2200は、コンテキストシンボルによるアドレス化が可能なように構成された(structured)メモリインターフェイスを提供するメモリサブシステム2215に対するいくつかのアクセスパスを有する。メモリサブシステム2215、パーサテーブル2170、生成規則テーブル2190およびセマンティックコードテーブル2210は、内臓メモリか、外部メモリデバイス(例えば、同期動的ランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM))を用いるか、もしくはこれらのリソースを組み合わせて用いる。各テーブルまたはコンテキストは、一つまたは複数の他のテーブルまたはコンテキストを有する共有物理メモリ領域に、コンテキストインターフェイスを提供するだけでよい。
The
管理(maintenance)中央演算処理装置(MCPU)2056は、SPU 2200とメモリサブシステム2215の間に接続される。MCPU 2056は、RSP 2100にとって望ましい機能の中で、従来のソフトウェアとハードウェアによって無理なく遂行できるものを実行する。これらの機能は、通常、あまり使われずかつ最優先で実行されるものではない(時間的に重要でない)機能であり、その機能の複雑性からSCT 210内に含めるようなものではない。また、MCPU 2056は、MCPUの代わりにタスクを実行するようにSPU 2200にリクエストする機能を持っているのが好ましい。ある実施例では、MCPU 2056は、SPU 2200が入力パケットストリームからウィルスをフィルタリングするのに用いるアクセス制御リスト(ACL)の生成をアシストする。
A maintenance central processing unit (MCPU) 2056 is connected between the
メモリサブシステム2215は、ハッシュ機能(ハッシング関数)またはコンテントアドレッサブルメモリ(CAM)検索を介してDRAM 2280内のデータにアクセスするためのアレイマシンコンテキストデータメモリ(AMCD)2230を有している。暗号処理ブロック2240は、データの暗号化や、復号化や、認証を行い、コンテキスト制御ブロックキャッシュ2250は、DRAM 2280へのコンテキスト制御ブロックをキャッシュするとともに、DRAM 2280からのコンテキスト制御ブロックをキャッシュする。通常キャッシュ2260は、基本演算において使用されるデータをキャッシュし、ストリーミングキャッシュ2270は、データストリームがDRAM 2280へ書き込まれている間と、データストリームがDRAM 2280から読み出されている間に、これらのデータストリームをキャッシュする。コンテキスト制御ブロックキャッシュ2250は、ソフトウェア制御のキャッシュであるのが好ましい。すたわち、いつキャッシュラインが使用され、いつ開放される(free)のかをSPU 2200が決定するのが好ましい。サーキット2240、2250、2260および2270は皆、DRAM 2280とSPU 2200の間に接続される。TCAM 2220は、AMCD 2230とMCPU 2056の間に接続される。
The
より詳細な、RSP 2100の機能ブロックに対する設計最適化は、本発明の範囲には含まれない。適用可能なセマンティックプロセッサの機能ブロックの詳細なアーキテクチャについてのいくつかの例に関しては、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030を参照されたし。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。
More detailed design optimization for the functional blocks of
RSPを用いた侵入検知 (Intrusion Detecton in Fragmented Packets)
RSP 2100の侵入検知コンテキストにおける役割は、特定の例によってよりよく理解できるであろう。以下の例では、RSP 2100は、電子メールメッセージ内に位置しているウィルスまたはその他のマルウェアを取り除く。当業者ならば、説明された概念は、どのようなタイプのウィルスまたは他のタイプのマルウェアの検出や、何らかの通信プロトコルを用いて転送される何らかのデータストリームに対するいろいろなタイプの侵入検知に簡単に適用できるということが理解できるであろう。
Intrusion Detecton in Fragmented Packets
The role of
初期侵入検知オペレーションには、入力データストリームの構文を解析し、検出することが含まれる。これらは、図37および38と関連して説明される。図37に示すように、多くの異なる文法と関連しているコードが、パーサテーブル2170および生成規則テーブル2190内に同時に存在していてもよい。例えば、コード2300は、MACパケットヘッダーフォーマットの解析に関連しており、コード2302は、IPパケット処理に関連しており、また別のコードのセット2304は、TCPパケット処理に関連している。パーサテーブル2170内の他のコード2306は、図32A−35と関連して前述されている侵入検知2018に関連しており、この例では特に、データストリーム2022(図35)内の簡易メール転送プロトコル(SMTP)パケットを識別する。
Initial intrusion detection operations include parsing and detecting the syntax of the input data stream. These are described in connection with FIGS. 37 and 38. As shown in FIG. 37, codes associated with many different grammars may exist simultaneously in the parser table 2170 and the production rule table 2190. For example,
PRコード2178は、生成規則テーブル2190内に格納されている対応する生成規則2176にアクセスするのに用いられる。特定の検索の実行において必要とされるのでなければ、入力値2308(例えば、現在の入力値DI[n]2174(nはバイトで選択された一致幅)と組み合わされた非終端(NT)シンボル2172)は、PRテーブル2170内で何らかの特定の順番で割り当てられる必要は無い。
The
ある実施例では、パーサテーブル2170は、DXP 2180からデータ値DI[n]2174とNTシンボル2172を受け取るアドレッサ2310も備えている。アドレッサ2310は、NTシンボル2172をデータ値DI[n]2174と連結させ、この連結した値2308をパーサテーブル2170へと送る。概念的には、パーサテーブル2170の構造を、NTコード2172とデータ値2174の特有な組み合わせのそれぞれに対して一つのPRコード2178を持ったマトリックスとして見ることが有用であることが多いが、本発明の実施例に関してはそのようには限定されない。異なるアプリケーションに対しては、異なるタイプのメモリおよびメモリ構成が適当であるかもしれない。
In one embodiment, parser table 2170 also includes an
ある実施例では、パーサテーブル2170はコンテントアドレッサブルメモリ(CAM)として実施され、アドレッサ2310は、CAMがPRコード2178を検索するための鍵としてNTコード2172および入力データ値DI[n]2174を用いる。CAMは、TCAMエントリーが格納された(populated with TCAM entries)三値(ternary)CAM(TCAM)であるのが好ましい。各TCAMエントリーは、NTコード2312とDI[n]適合値2314(DI[n] match value)を含む。各NTコード2312は、複数のTCAMエントリーを保持することができる。
In one embodiment, parser table 2170 is implemented as a content addressable memory (CAM), and
DI[n] 適合値2314(DI[n] match value)の各ビットは、「0」、「1」または「X」に設定することができる。この「X」は「無視(Don't Care)」を表す。この機能により、PRコード2178は、パーサテーブル2170が適合(match)を見つけるために、DI[n] 2174の数ビットまたは数バイトだけがコード化されたパターンと適合することを必要とする。
Each bit of DI [n] match value 2314 (DI [n] match value) can be set to “0”, “1”, or “X”. This “X” represents “Don't Care”. With this function,
例えば、TCAMのある行は、SMTPパケットに対するNTコードNT_SMTP 2312Aを含んでおり、その後に該SMTPパケット内に特定のタイプのコンテンツが含まれていることを表す付加バイト2314A(例えば、電子メール添付ファイルに対するラベル)が続くかもしれない。このTCAM行の残りのバイトは「無視(Don't Care)」に設定される。こうして、NT_SMTP 2312Aと、数バイトのDI[N]と、がパーサテーブル2170に提示された際、DI[N]の最初の数バイト(first set of bytes of DI[N])が添付ファイル識別子を含んでいれば、DI[N]の残りのバイトが何を含んでいても適合(match)が生じることとなる。
For example, a line in the TCAM contains the
パーサテーブル2170内のTCAMは、前述したように、NT 2172およびDI[N]2174と適合するTCAMエントリーに対応するPRコード2178Aを生成する。この例では、PRコード2178Aは、電子メールメッセージを含んでいるSMTPパケットと関連している。PRコード2178Aは、DXP 2180へ送り返されるか、PRテーブル2190に直接送り返されるか、またはその両方に送り返されてもよい。ある実施例では、PRコード2178Aは、適合状態を作り出すTCAMエントリーの行インデックスである。
The TCAM in parser table 2170 generates PR code 2178A corresponding to the TCAM entry that matches
図38は、生成規則テーブル2190の一つの実行可能性のある実施例を示している。この実施例では、アドレッサ2320は、DXP 2180とパーサテーブル2170のいずれか一方からPRコード2178を受け取り、DXP 2180からNTシンボル2172を受け取る。好ましくは、受け取ったNTシンボル2172は、パーサテーブル2170へと送られるNTシンボルと同一のNTシンボル2172であり、受け取ったPRコード2178を配置するのに用いられる。
FIG. 38 shows one possible implementation of the production rule table 2190. In this embodiment, the
アドレッサ2320は、これらの受け取ったPRコード2178およびNTシンボル2172を用いて対応する生成規則2176にアクセスする。アドレッサ2320は、一部の実施例においては必ずしも必要ではないが、使用される場合は、DXP 2180の一部や、PRT 2190の一部として設けることができ、また中間(intermediate)の機能ブロックとして設けることができる。例えば、パーサテーブル2170またはDXP 2180がアドレスを直接作る場合、アドレッサは必要とされない。
The
生成規則テーブル2190に格納される生成規則2176は、三つのデータセグメントを含む。これらのデータセグメントには、シンボルセグメント2177Aと、SPUエントリーポイント(SEP)セグメント2177Bと、スキップバイトセグメント2177Cと、が含まれる。これらのセグメントは、長さ固定のセグメントでも長さ可変のセグメントであってもよく、ヌル終端化されている(null-terminated)のが好ましい。シンボルセグメント2177Aは、パーサスタック2185(図36)上へプッシュされる終端シンボルか、非終端シンボルか、またはその両方を有している。SEPセグメント2177Bは、データセグメントの処理中にSPU 2200によって使用されるSPUエントリーポイント(SEP)を収容している。スキップバイトセグメント2177Cは、入力バッファ2140によって自身のバッファポインターをインクリメントし、入力ストリームの処理を進めるために使用されるスキップバイトデータを有している。また、生成規則の処理において有用なその他の情報も生成規則2176の一部として格納することができる。
The
この例では、生成規則コード2178Aによってインデックス付けされる一つまたは複数の生成規則2176Aは、入力バッファ2140内で識別されたSMTPパケットと対応する。SEPセグメント2177Bは、図36のセマンティックコードテーブル2210内のSPUコード2212をポイントする。このSPUコードは、SPU 2200によって実行されると、図35と関連して前述したような様々なACL照合2050オペレーション、セッション検索2052オペレーションおよびトークン生成2054オペレーションを実行する。ある実施例では、SPU 2200は、平行して動作させることができるセマンティック処理要素の配列を有している。生成規則2176A内のSEPセグメント2177Bは、一つまたは複数のSPU 2200を起動して、ACL照合オペレーション2050、セッション検索オペレーション2052およびトークン生成オペレーション2054を平行して実行してもよい。
In this example, one or
前述したように、パーサテーブル2170は、SMTPパケットと関連していない別タイプのデータを処理する文法を収容していてもよい。例えば、パーサテーブル2170内に含まれるIP文法2302は、入力バッファ2140内の識別されたNT_IP宛先アドレスと関連している生成規則コード2178を含んでいてもよい。
As described above, the parser table 2170 may contain a grammar for processing another type of data not associated with an SMTP packet. For example, the
生成規則テーブルコード2302内の適合データ値2314は、RSP 2100が属するネットワーク処理デバイスのIPアドレスを含んでいるかもしれない。NT_IPコード2172と関連している入力データDI[I]2174が、PRコード2302に関する適合値2314内に含まれている宛先アドレスを持っていない場合、デフォルト生成規則コード2178が生成規則テーブル2190に提供されてもよい。このデフォルト生成規則コード2178は、生成規則テーブル2190内の生成規則2176をポイントしてもよい。ここで言う生成規則2176は、DXP 2180か、SPU 2200か、その両方に、入力バッファ2140から該パケットを廃棄するように命令するものである。
The
セマンティックプロセッシングユニット(SPU)
前述したように、DXP 2180は、IPセッション、TCPセッションのような入力ストリーム内の特定の構文要素(現在の例ではSMTP電子メールセッション)を識別する。これらの構文解析オペレーションは、IDSシステム2018の全体的な性能にとって重要である。DXP 2180によって入力ストリームの実際の構文が識別されるので、図35と関連して前述したようなそれに続くIDSオペレーションは、今ではSPU 2200によってより効率的に実行することができる。
Semantic processing unit (SPU)
As mentioned above,
例えば、SPU 2200は、電子メールメッセージと関連付けられているACLフィルタを、解析されたデータストリームに適用するだけでよい。これによりいくつかの利点が得られる。第一に、必ずしも、すべてのパケットのすべてのバイトを、すべての脅威シグネチャ2058(図35)と比較しなくてもよい。その代わりに、電子メールメッセージと関連している脅威シグネチャのサブネットだけをSMTPパケットに適用すればよい。これには、IDS 2018の拡張性を増加させるという実質的な利点がある。また、これによって、IDS 2018がより多くのウィルスとマルウェアを検出し、より高いパケットレートで動作することが可能となる。
For example, the
図39は、前に図35と関連して説明したACL照合オペレーション2050および出力ACLオペレーション2062をより詳しく説明している。ブロック2040で、DXP 2180は、SPU 2200にSCT 2210から適切なマイクロ命令をロードするように信号を送る。これらのマイクロ命令は、前に図35と関連して説明したACL照合オペレーション2050と出力ACLオペレーション2062を実行するものである。図38と関連して前述したように、DXP 2180は、生成規則2176Aに含まれるSPUエントリーポイント(SEP)セグメント2177Bを介してSPU 2200に信号を送る。
FIG. 39 illustrates in more detail the
SEPセグメント2177Bに応じてアクセスされるSCT 2210内のSPUコード2212(図36)に従って、SPU 2200は、ブロック2402で、DXP 2180によって識別された入力データストリーム内の特定の構文要素を得る。例えば、DXP 2180は、IP送信元アドレス、IP宛先アドレス、宛先ポート番号、送信元ポート番号およびプロトコルタイプを含む5タプル構文要素を識別するかもしれない。もちろん、これは一例に過ぎず、DXP 2180によってデータストリーム2022(図35)内に、他の構文要素が識別されることもある。
In accordance with SPU code 2212 (FIG. 36) in
ブロック2404で、SPU 2200は、DXP 2180によって識別された構文要素を、TCAM 2220内に収容されているアプリオリアクセス制御リスト(ACL)フィルタセット(a priori set of ACL filters)と比較する。例えば、TCAM 2220内のアプリオリACLフィルタセットは、既知の脅威と関連している様々なIPアドレスを含んでいるかもしれない。ある例では、SPU 2200は、パケットのIPアドレスなどの構文要素をAMCD 2230を介してTCAM 2220に送ることで、入力バッファ2140内のパケットに関する構文要素を、TCAM 2220内のアプリオリフィルタと比較する。その際、このIPアドレスは、TCAM 2220へのアドレスとして用いられる。TCMA 2220は、AMCD 2230を介してSPU 2200に結果を送り返す。
At
SPU 2200は、ブロック2406で、TCAM 2220からの結果を確認する。TCAM 2220からの出力は、パケット除去や、パケット格納や、場合によってはIPセキュリティ(IPSEC)パケットの存在を示す可能性がある。例えば、TCAM 2220は、入力バッファ2140内のパケットから供給されるIPアドレスが、TCAM 2220内のアプリオリフィルタエントリーのうちの一つと適合した場合、パケット除去フラグを生成してもよい。入力データストリーム2022に関するIPアドレスがTCAM 2220内のエントリーのいずれとも適合(match)しない場合、パケット格納フラグが出力される。TCAM 2220は、暗号化されたIPSECパケットに対応するエントリーも含んでいるかもしれない。IPアドレスが、IPSECエントリーのうちの一つと適合する場合、TCAM 2220は、IPSECフラグを出力する。
The
SPU 2200は、ブロック2408で、PIB 2140内のパケットで、TCAM 2220内にパケット除去フラグを生成するパケットをすべて除去する。SPU 2200は、単に入力バッファ2140に次のパケットへスキップするように命令するだけでパケットを除外することができる。TCAM 2220からパケット格納フラグが出力された場合、SPU 2200は、ブロック2410で、入力バッファ2140からのパケットをDRAM 2280へ格納する。DRAM 2280は、図34および35と関連して前述したディレイFIFO 2030として稼動する。TCAM 2220からIPSECフラグが出力された場合、SPU 2200は、メモリサブシステム2215内の暗号処理回路2240を介して入力バッファ2140内のパケットを送信してもよい。復号化されたパケットは、その後、図36の再循環バッファ2160へ送り返され、前述したACL照合オペレーションが繰り返されてもよい。
The
DRAM 2280(図35のディレイFIFO 2030)内にパケットが格納されている間、MCPU 2056(図35の対策エージェント2056)は、入力データストリームから抽出されたトークン2068と対応するACLフィルタ2070を動的に生成する。これは、以下で図41と関連してより詳しく説明される。SPU 2200は、ブロック2412で、DRAM 2280に格納されているパケットを、現在はTCAM 2220内に格納されている、動的に生成されたACLフィルタ2070(図35)と比較する。例えば、SPU 2200は、ブロック2402で識別されたパケットに関するものと同一の5タプルを用いてもよい。
While the packet is stored in the DRAM 2280 (delay
SPU 2200は、このパケットに関する5タプルを、TCAM 2220内の動的に生成されたフィルタ2070と比較する。TCAM 2220からパケット除去フラグという結果を生成するDRAM 2280内のパケットはすべて、その後ブロック2414で、SPU 2200によってDRAM 2280から削除される。あらかじめ決められた一定のディレイ時間の後、SPU 2200は、ブロック2416で、残りのパケットを出力ポート2152へ出力する。
The
CAM 2220は、他のアプリオリフィルタを有していてもよいということが理解できるであろう。例えば、CAM 2220は、パケットの中に含まれるかもしれない様々なプロトコルまたはデータと関連付けられたフィルタを有していてもよい。DXP 2180は、TCAM 2220内のフィルタと照合される(apply to)必要がある構文要素を特定し、それをSPU 2200に送る。
It will be appreciated that the
ディレイFIFOにより提供される一定の時間ディレイ内では、ウィルスまたはマルウェアを判定することができないかもしれない。例えば、ウィルスは、巨大な数メガビットのメッセージの末端に含まれているかもしれない。この状況では、IDS 2018は、該パケットの受信者と同一の受信者へ送られるウィルス通知メッセージを生成してもよい。このウィルス通知メッセージは、当該パケットはウィルスを含んでいるというメッセージである。ウィルス通知メッセージは、該受信者に、ウィルスを含んでいる当該パケットを捨てるように通知する。
Within a certain time delay provided by the delay FIFO, it may not be possible to determine a virus or malware. For example, a virus may be included at the end of a huge multi-megabit message. In this situation,
図40は、前に図35と関連して前述したセッション検索オペレーション2052の間に、SPU 2200によって実行されるオペレーションを説明している。ブロック2430で、DXP 2180は、SPU 2200にSCT 2210から適切なマイクロ命令をロードするように信号を送る。この場合、これらの適切なマイクロ命令は、図38と関連して前述したように、関連しているSEPセグメント2177Bを送ることによってセッション検索オペレーションを実行することと関連している。
FIG. 40 illustrates operations performed by the
ある例では、SPU 2200は、ブロック2432で、入力パケットに関する送信元および宛先アドレスと、送信元および宛先ポート番号と、をDXP 2180から受信する。SPU 2200は、その後、このアドレスとポート番号を、DRAM 2280内に含まれているパケットに関する現在のセッション情報と比較する。一部のIPセッションに関しては、SPU 2200は、ブロック2434で、DRAM 2280内で稼動しているディレイFIFO 2030内のフラグメント化されたパケットを再順序付けする必要があるかもしれない。SPU 2200は、ブロック2438で、現在のIPセッションに関して前に受信されたパケットの複製である、入力バッファ2140内のパケットをすべて除去してもよい。
In one example, the
図41は、図35と関連して前述したトークン生成オペレーション2054を説明している。ブロック2450で、DXP 2180は、図36−38と関連して前述したように、入力ストリームからのデータを解析する。ブロック2452で、DXP 2180は、入力バッファ2140内のデータストリーム内の構文要素で、ウィルスまたはマルウェアと関連しているかもしれない構文要素を識別する。上の例では、この識別には、DXP 2180が電子メールメッセージを含んでいるパケットを識別(特定)することが含まれてもよい。一方で、DXP 2180によって識別される構文要素は、IPアドレスと、送信元アドレスおよび宛先アドレスを含むIPデータフローと、特定のデータフローに対して識別されたトラフィックレートなどを含んでいればどのようなものでもよい。
FIG. 41 illustrates the
DXP 2180は、ブロック2454で、SPU 2200にSCT 2210から特定のトークン生成オペレーションと関連したマイクロ命令をロードするように信号を送る。より詳しくは、図38のSEPセグメント2177Bによって識別されたマイクロ命令は、SPU 2200に、DXP 2180によって識別された特定の構文要素に関するトークンを生成するように命令する。
The
SPU 2200は、その後ブロック2456で、識別された構文要素からトークン2068(図35)を生成する。例えば、SPUコード2212(図36)は、SPU 2200に、特定された電子メールメッセージから見つかった構文要素を抽出するように命令してもよい。SPU 2200は、パケット内の「差出人:」、「宛先:」および「題名:」フィールドからの情報を含んでいるトークンを生成してもよい。SPU 2200は、データストリーム内に存在するかもしれないどのような電子メール添付ファイルに対しても抽出を行い、トークンを生成してもよい。
The
例えば、SPU 2200は、図35と関連して前述したようなTLVトークン#1を生成してもよい。
Token #1
Type: SMTP/MIME Attachment (method for transferring files in email messages) Length: # of bytes in the file
Value: actual file
DXP 2180は、脅威と関連しているかもしれない、多数の異なるタイプの構文要素を識別することができるということも理解できるであろう。DXP 2180は、異なる構文要素に対して異なるSPUコード2212(図36)を起動することができる。例えば、上述したように、DXP 2180は、HTMLメッセージと対応している構文要素も識別することができる。DXP 2180は、以下に示すものと同様でもよいHTMLトークンを生成するようにSPU 2200に命令するSEPセグメント2177Bを送ってもよい。
Token #2
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
SPU 2200は、ブロック2457で、簡易アプリケーションに関するトークンを、図35の脅威シグネチャ2058へとフォーマットする。例えば、SPU 2200は、トークンを Type-Length-Value (TLV)データにフォーマットする。SPU 2200は、その後ブロック2458で、フォーマットされたトークンを、図36のMCPU 2056へ、または図35と関連して説明したような外部の脅威/ウィルス解析およびACL対策エージェント2056へ送ってもよい。
For example,
Type: SMTP / MIME Attachment (method for transferring files in email messages) Length: # of bytes in the file
Value: actual file
It will also be appreciated that
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
The
ある実施例では、MCPU 2056は、トークン2068を、TCAM 2220内に含まれている脅威シグネチャ2058へと適用して、動的に生成されたACLフィルタ2070のセットを生成する。SPU 2200は、その後、図39と関連して前述した出力ACLオペレーション2062で、TCAM 2220内の動的に生成されたACLフィルタ2070を、DRAM 2280ディレイFIFO内に格納されているパケットと照合する。ACLフィルタ2070と適合するディレイFIFO内のパケットは、すべて除去される。
In one embodiment, the
ある実施例では、TCAM 2220は、脅威シグネチャテーブルおよびACLフィルタテーブルの両方を含む複数のテーブルを収容してもよい。TCAM 2220内の脅威シグネチャテーブルは、MCPU 2056によってアクセスされ、TCAM 2220内のACLフィルタは、AMCD 2230を介して複数のSPU 2200によってアクセスされる。
In one embodiment,
別の実施例では、外部脅威解析デバイスは、RSP 2100の外部で(off chip from RSP)稼動する。この実施例では、外部のTCAMが、脅威シグネチャを含んでいてもよい。SPU 2200は、トークン2068を、外部脅威解析デバイスへ送る。この外部脅威解析デバイスは、その後、動的に生成されたACLフィルタ2070をMCPU 2056へ出力する。MCPU 2056は、その後、動的に生成されたACLフィルタ2070をTCAM 2220へ書き込む。SPU 2200は、その後、図35と関連して説明したACL照合オペレーション2050と、出力ACLオペレーション2062と、のためにTCAM 2220内のACLフィルタにアクセスする。
In another embodiment, the external threat analysis device operates off-chip from RSP (off chip from RSP). In this example, an external TCAM may contain the threat signature. The
ACLフィルタ2070の実際の生成のされ方は、当業者には周知であるので、これ以上詳しくは説明しない。しかし、これまでに、侵入検知システムが、データストリーム内の識別された構文要素と関連しているトークンに従って動的にACLフィルタを生成したことがあるとは考えられない。
The actual generation of the
フラグメント化されたパケットにおける侵入検知
現在は、インターネットメッセージ内で既知のパターンを検索するテキストスキャナが存在する。脅威の誤検出を避けるために、長いシークエンスのテキストは、通常、正規表現形式のパターン適合技術(regular expression style technique)を使って適合される。しかし、これらの技術は、バイトが連続的(contiguous)であるか、脅威スキャナが広範囲なコンテキストメモリ用いることを必要とする。
Intrusion detection in fragmented packets Currently, there are text scanners that search for known patterns in Internet messages. To avoid false detection of threats, long sequences of text are usually matched using a regular expression style pattern matching technique. However, these techniques require that the bytes are contiguous or that the threat scanner uses extensive context memory.
例えば、ウィルススクリプトは、以下に示すような一つの長いラインとして含まれてもよい。
以下に含まれる全ファイルを対象とする場合(For all files in):
c:\; { open (xxx); delete (xxx); close (xxx);} end.
それに応じて、アンチウィルススキャナーは、全体のテキスト文字列を検索しなければならない:
s/*open(*);delete(*);close(*)*/
一方で、攻撃者は、以下のようにウィルスを複数のパケットフラグメントに分けるかもしれない:
IP frag #1 : For all files in c:\; { open (xxx);
IP frag #2: delete (xxx); close (xxx);} end;
従来のウィルススキャナは、上記のフラグメント化されたIPパケット内のウィルスを検出することができないかもしれない。TCP/IPプロトコルが最終的に、フラグメント化されたメッセージを組み合わせて(together)元に戻した時点では、ウィルスは、すでに私的ネットワークに侵入している。RSP 2100は、上述した侵入検知オペレーションを実施する前に、フラグメント化されたパケットを検出し、再構築する。これにより、IDSは、複数のフラグメント化されたパケットにわたる(span)ウィルスを検出することができる。
For example, the virus script may be included as one long line as shown below.
For all files in the following (For all files in):
c: \; {open (xxx); delete (xxx); close (xxx);} end.
In response, the antivirus scanner must search the entire text string:
s / * open (*); delete (*); close (*) * /
On the other hand, an attacker may split the virus into multiple packet fragments as follows:
IP frag # 1: For all files in c: \; {open (xxx);
IP frag # 2: delete (xxx); close (xxx);} end;
A conventional virus scanner may not be able to detect a virus in the fragmented IP packet. When the TCP / IP protocol finally merges the fragmented messages back together, the virus has already penetrated the private network.
図42Aは、図36のRSP 2100がどのようにしてフラグメント化されたパケット内のウィルスを検出するかを説明しているフローチャート2500である。図36および42Aに関して、ブロック2502で、パケット(データ)は入力ポート2120を介して入力バッファ2140において受信される。ブロック2510で、DXP 2180は、入力バッファ2140のパケットのヘッダーの解析を開始する。DXP 2180は、受信したパケットがIPフラグメント化されたパケットであると判定された場合、受信したパケットのヘッダーの解析をやめる。DXP 2180は、IPヘッダーを完全に解析し、続く層(TCP、UDP、iSCSIなど)に属するヘッダーについてはどのヘッダーに対しても解析を行わないのが好ましい。DXP 2180は、パーサスタック2185上の文法またはSPU 2200によって命令された場合、解析をやめる。
FIG. 42A is a flowchart 2500 illustrating how the
次のブロック2520では、DXP 2180は、SPU 2200にSCT 2210から適切なマイクロ命令をロードし、入力バッファ2140からフラグメント化されたパケットを読み込むように信号を送る。次のブロック2530では、SPU 2200は、このフラグメント化されたパケットをストリーミングキャッシュ2270を介してDRAM 2280へ書き込む。ブロック2520とブロック2530は2つの個別のステップとして示されているが、他のやり方としては、これらは、SPU 2200が該パケットの読み込みと書き込みを同時に行うことで一つのステップとして実行されてもよい。このSPU 2200が同時に読み込みと書き込みを実行するオペレーションは、SPUパイプライン方式として知られている。このオペレーションでは、SPU 2200は、セマンティックプロセッサ2100内の2つのブロック間で転送されるストリーミングデータ用のコンジット(conduit)またはパイプラインとして動作する。
In the
次の判定ブロック2540では、SPU 2200は、コンテキスト制御ブロック(CCB/Context Control Brock)が適切なIPパケットフラグメントの収集や順序付けのために割り当てられているかどうかを判定する。IPフラグメント化されたパケットに対応するフラグメントを収集しかつ順付けするためのCCBは、DRAM 2280内に格納されるのが好ましい。CCBは、DRAM 2280内のIPフラグメントに対するポインタと、まだ到着していないIPフラグメント化されたパケットに対するビットマスクと、割り当てられた時間が過ぎたら、セマンティックプロセッサ2100にさらなるIPフラグメント化されたパケットを待つのをやめさせ、その後、DRAM 2280内のCCBに格納されたデータを開放させるためのタイマー値と、を有している。
In a
SPU 2200は、受信したIPパケットフラグメントのヘッダーからのID(identification)およびプロトコルと組み合わされている、受信したIPフラグメント化されたパケットの送信元IPアドレスを鍵として使用して、AMCD 2230のコンテントアドレッサブルメモリ(CAM)の検索機能にアクセスすることで、CCBが割り当てられているかどうか判定するのが好ましい。その他のやり方としては、このIPフラグメント鍵は、DRAM 2280内の離れたCCBテーブル内に格納される。そして、このやり方では、これらの鍵は、受信したIPパケットフラグメントのヘッダーからのIDおよびプロトコルと組み合わされている、受信したIPフラグメント化されたパケットの送信元IPアドレスを使用することでCAMとアクセスさせられる。このようにIPフラグメント鍵のアドレス化を行うことで、鍵の重複と鍵のサイズ調整の問題を回避する。
The
SPU 2200が、特定のIPフラグメント化されたパケットに対するフラグメントの収集および順序付けのためにCCBがまだ割り当てられていないと判定した場合、実行プログラムはブロック2550へと進み、そこでSPU 2200がCCBを割り当てる。SPU 2200は、割り当てられたCCBに対応する鍵を、AMCD 2230内のIPフラグメントCCBテーブルへ入力し、CCB内に設けられたタイマーを起動する。ここで言う鍵とは、受信されたIPフラグメント化されたパケットのヘッダーからのIDおよびプロトコルと、受信したIPフラグメントの送信元IPアドレスと、から構成されるものである。与えられたフラグメント化されたパケットに関する最初のフラグメントが受信されると、後の再循環のために、IPヘッダーもCCBへ保存される。以後のフラグメントに関しては、IPヘッダーは保存される必要はない。
If the
いったんCCBがIPフラグメント化されたパケットの収集および順序付けのために割り当てられると、次のブロック2560では、SPU 2200はDRAM 2280内のIPフラグメント化されたパケット(からIPヘッダーを除いたもの)に対するポインタをCCB内に格納する。フラグメントに対するポインタは、例えばリンクリスト(linked list)としてCCB内に設けることができる。好ましくは、SPU 2200は、受信されたフラグメントに対応するマスクの一部を受信されたものとしてマーキングすることで、新たに割り当てられたCCB内のビットマスクもアップデートする。
Once the CCB is allocated for collection and ordering of IP fragmented packets, in the
次の判定ブロック2570では、SPU 2200は、パケットからのIPフラグメントのすべてが受信されたかどうか判定する。この判定は、CCB内のビットマスクを使用して達成されるのが好ましい。当業者であれば、本発明とともに利用可能なビットマスク(すなわち均等にトラッキングを行う機構)を実施するのに容易に利用可能な多数の技術があるということを理解できるであろう。IPフラグメント化されたパケットに関するIPフラグメントのすべてを受信し終わっていない場合、セマンティックプロセッサ2100は、他のフラグメントを受信するまで、該フラグメント化されたパケットに関するこれ以上の処理を保留する。
In a
IPフラグメントのすべてを受信し終わっている場合、次のブロック2580では、SPU 2200は、DRAM 2280からIPフラグメントを正しい順序で読み込み、その後、前述した侵入検知処理のようなさらなる解析と処理のために、それらを再循環バッファ2160へ書き込む。本発明のある実施例では、SPU 2200は、特別なヘッダーと、再構築されたIPパケット(フラグメント化ビットは設定されていないまま)の最初の部分と、だけを再循環バッファ2160へ書き込む。
If all of the IP fragments have been received, in the
特別なヘッダーは、DXP 2180が、IPフラグメント化されたパケットのすべてを再循環バッファ2160へと転送しなくても、DRAM 2280内に格納されている再構築されたIPフラグメント化されたパケットの処理を方向付けることを可能にする。特別なヘッダーは、IDSオペレーション2018を含むパーサ文法をロードするように指定された非終端シンボルと、CCBに対するポインタと、から構成することができる。その結果、パーサ180は通常、IPヘッダーを解析することができ、その後上位層(例えばTCP)のヘッダーの解析へと進むことができる。再循環バッファ2160内の、再構築された、ウィルスを含んでいるかもしれないパケット内の構文要素が識別されたら、DXP 2180は、SPU 2200にSCT 2210から、前述した侵入検知オペレーション2050、2052および2054を実行する命令をロードするように信号を送る。例えば、再構築されたパケットが電子メールメッセージを含んでいると識別された(identify)場合、DXP 2180は、SPU 2200に、前述した様々な電子メールフィールドに対応するトークンを生成するように命令する。
Special headers allow
図42Bは、IDS 2018がどのようにして複数のTCPパケットに対して侵入検知オペレーションを実行するのかを示しているフローチャートである。ブロック2592Aでは、転送制御プロトコル(TCP)セッションが、イニシエータ(initiator)と、RSP 2100をホストするネットワーク処理デバイスと、の間で確立される。RSP 2100は、パーサテーブル2170およびPRT 2190内に適切な文法を有しており、TCPセッションを確立するためのマイクロコードをSCT 2210内に有している。ある実施例では、一つまたは複数のSPU 2200は、TCPセッションに関する状態を整理し(organize)、保持する。このTCPセッションに関する状態の整理および保持には、TCP再順序付けのためのDRAM 2280内でのCCBの割り当てと、ウィンドウサイズ制限と、割り当てられた時間フレーム内にイニシエータからさらなるTCPパケットが到着しない場合にTCPセッションを終了させるためのタイマーと、が含まれる。
FIG. 42B is a flowchart illustrating how
イニシエータとのTCPセッションが確立した後、次のブロック2592Bで、RSP 2100は、ブロック2592Aで確立されたTCPセッションに対応するTCPパケットが入力バッファ2140に到着するのを待つ。RSP 2100は、入力データを処理するための多数のSPU 2200を有していてもよいので、RSP 2100は、ブロック2592Aで確立されたTCPセッションに対応する次のTCPパケットを待っている間にも、平行して複数のパケットを受信し、処理することができる。
After the TCP session with the initiator is established, at next block 2592B, the
TCPパケットは、ブロック2592Cで、入力ポート2120を介して入力バッファ2140において受信され、DXP 2180は、入力バッファ2140内のパケットのTCPヘッダーを解析する。DXP 2180は、割り当てられたSPU 2200にマイクロ命令を送る。このマイクロ命令は、実行されると、割り当てられたSPU 2200に、入力バッファ2140から受信したパケットを読み込み、受信したパケットをストリーミングキャッシュ2270を介してDRAM 2280へ書き込むように要求する。割り当てられたSPU 2200は、その後、TCP CCBを設け、受信したパケットのDRAM 2280内での位置をポイントする(示す)ポインタをTCP CCBに格納し、その後TCP CCB内のタイマーを再び起動する。割り当てられたSPU 2200は、その後開放され、さらなる処理のために、DXP 2180が決めるように割り当てることができる。
The TCP packet is received at
次のブロック2592Dでは、受信したTCPパケットは、必要であれば、ペイロードデータの適切なシークエンスを確定させるために再順序付けされる。当技術分野で周知のように、TCPパケットは、先行するパケットがすべて到着している場合、適切な順番にあると見なされる。受信されたパケットが、適切な順番にあると判定された場合、担当の(responsible)SPU 2200は、SCT 2210から再循環のためのマイクロ命令をロードする。
In a
次のブロック2592Eでは、割り当てられたSPUは、TCPヘッダーからのTCPコネクション情報とTCP非終端を組み合わせて、特別なTCPヘッダーを作る。割り当てられたSPU 2200は、その後、特別なTCPヘッダーを再循環バッファ2160へ書き込む。その他のやり方では、特別なTCPヘッダーは、対応しているTCPペイロードを有している再循環バッファ2160へ送られてもよい。
In the
次のブロック2592Fでは、特別なTCPヘッダーと再構築されたTCPペイロードは、TCPデータ内のまた別の(additional)構文要素を識別するためにDXP 2180によって解析される。侵入を含んでいるかもしれないと識別された構文要素はすべて、前述した侵入検知オペレーションに従ってSPU 2200によって処理される。
In the
分散型トークン生成 (Distributed Token Generation)
図43は、ネットワーク2600内で稼動している分散型IDSシステムの実施例の一つを示している。ネットワーク2600は、電子メールサーバー2610Aや、ファイヤーウォール2610Bや、ウェブサーバー2610Cのような異なる働きをする異なるネットワーク処理デバイス2610を有している。異なるネットワークデバイス2610A−Cはそれぞれ、上述したIDS 2018と同様な、IDS 2620A−Cを実行する。ある実施例では、図36−41と関連して説明したものと同様のRSP 2100を使用して、一つまたは複数のIDS 2620が実施される。一方で、他の実施例では、一つまたは複数のIDS 2620は別のハードウェアアーキテクチャを用いて実施される。
Distributed token generation
FIG. 43 shows one embodiment of a distributed IDS system operating in a
各ネットワーク処理デバイス2610は、中央集中型の侵入解析を実行する中央侵入検出器2670に接続されている。IDS 2620A−2620Cは、入力データストリームを解析し、それぞれ図35と関連して前述したトークン2068と同様のトークン2640A−2640Cを生成する。トークン2640は、中央侵入検出器2670へ送られる。
Each network processing device 2610 is connected to a
図43−44に関して、中央侵入検出器2670は、ブロック2802で、IDS 2620 (2620A-2620C)それぞれからトークン(26402640A−2640C)を受信する。侵入検出器2670は、ブロック2804で、それぞれのトークン2640に従って、異なるデータフローのトラフィックパターンを解析する。続いてブロック2806でこの解析に従って、複数のフィルタが生成される。さらにブロック2808では、この解析に従って、複数の脅威シグネチャが生成されるかもしれない。これらの新しいフィルタと脅威シグネチャは、その後ブロック2810で、各IDS 2620へと分散される。
43-44, the
ある例では、図43のファイヤーウォール2610Bは、公的インターネット2630から受信された新しいデータフローを特定するトークン2640Bを生成してもよい。このトークン2640Bは、中央侵入検出器2670へ送られ、新しい送信元IPアドレスAを特定する。ウェブサーバー2610Cは、トークン2640Cを侵入検出器2670へ送ってもよい。第一のトークン2640C_1は、新しい送信元IPアドレスAを特定し、第二のトークン2640C_2は、この新しい送信元IPアドレスAはウェブサーバー2610C内のファイルにアクセスするために用いられたということを示す。
In one example, the firewall 2610B of FIG. 43 may generate a token 2640B that identifies a new data flow received from the
中央侵入検出器2670は、トークン2640B、2640C_1および2640C_2を相互に関連付けて、通常は検出されないかもしれない潜在的なウィルスまたはマルウェアを認識(identify)する。例えば、侵入検出器2670は、ファイヤーウォール2610Bから受信された、トークン2640B内の新しい送信元IPアドレスAが、ウェブサーバー2610C内のファイルも開いているIPアドレスAと同一のものであると判定してもよい。この例では、公的インターネット2630からの外部リンクは、内部ネットワークのファイルを開かないと仮定する。
この場合、トークン2640Bは、ファイヤーウォール2610Bから受信されたものなので、中央侵入検出器2670は、該IPアドレスAは、外部の公的インターネット2630から受信されたと結論する。従って、中央侵入検出器2670は、ファイヤーウォール2610B内のIDS 2620Bに新しいフィルタ2750を送り、場合によっては、他のネットワークデバイス2610Aおよび2610Cにも新しいフィルタ2750を送る。このフィルタ2750は、送信元IPアドレスAを持ったパケットがネットワーク2600に侵入することを防ぐ。
In this case, since token 2640B was received from firewall 2610B,
別の例では、電子メールサーバー2610A内のIDS 2620Aは、トークン2640A_1を生成する。このトークン2640A_1は、未知の送信元IPアドレスAから電子メールが受信されたということを示す。IDS 2620Aはまた、トークン2640A_2を送る。このトークン2640A_2は、トークン2640A_1内で特定された電子メールに含まれるMIME添付ファイルを特定する。
In another example,
中央侵入検出器2670は、前に受信したトークン2640B、2640C_1および2640C_2を根拠に(from)、IP送信元アドレスAと関連しているデータフローはすべて、ウィルスまたはマルウェアを含んでいるかもしれないと判定する。これに応じて、中央侵入検出器2670は、トークン2640A_2内に含まれるMIME添付ファイルの名前、またはコンテンツもしくはその両方、に対応する新しいシグネチャ2660を動的に生成してもよい。中央侵入検出器2670は、電子メールサーバー2610A内のIDS 2620Aに新しいシグネチャ2660を送り、場合によっては、ネットワーク2600内で稼動している他のすべてのIDS 2620にも新しいシグネチャ2660を送る。IDS 2620Aは、その後、図35に示されている脅威シグネチャ2058のセットに新しいシグネチャを加える。
The
このように、IDSシステム2600は、トークン2640の有する構文コンテンツと、トークンを送るネットワーク処理デバイス2610の種類の両方に従って、フィルタやシグネチャを生成することができる。例えば、ファイヤーウォール2610Bによって生成されたトークン2640Bを、ネットワーク内の他のネットワーク処理デバイスから生成されたトークンよりも、疑わしいものとして扱ってもよい。また、上述したように、ファイヤーウォール2610Bによって識別された新しいIPアドレス(公的インターネットから受信されたIPパケット)についての情報(knowledge)を、電子メールサーバー2610Aまたはウェブサーバー2610Cによって検出された他のオペレーションについての情報と組み合わせて、より完全にウィルスを検出することができる。
In this way, the
別の実施例では、中央侵入検出器2670は、検出されたウィルスまたは他のマルウェアと関係しているネットワーク処理デバイスはどれでも無効化することができる。例えば、ウィルス2660は、PC 2650内で稼働中のIDS 2662によって検出されるかもしれない。IDS 2662は、ウィルス2660について中央侵入検知器2670に通知する。中央侵入検出器2670は、その後、ウィルス2660の送信元が特定され、除外されるまで、ネットワーク2600からPC 2650を切り離す。
In another example, the
ツリーサーチの拡張性 (Scalability of Tree Search)
前述したIDS 2018は、脅威が出現する可能性があるセッションコンテキスト内でスキャンを行うことで、現在の侵入検出の性能を向上させる。適合パターン(マッチングパターン)のためには、正規表現(regular expression)ではなくパーサツリー(paser tree)が用いられる。パケットデータ内の侵入検知およびその他の脅威の検知は、既知の脅威のパターンと適合するパターンに関して入力パケットストリームを「スキャン」することで実行される。
Scalability of Tree Search
正規表現スキャナは、パケットの全バイトをスキャンしなければならず、また、パケットのどの部分が脅威を含んでいるかもしれないのかを断定する機能を持たない。例えば、電子メール内の脅威は、電子メール添付ファイルを介してのみ侵入するかもしれない。電子メールメッセージの定義された本体は、ASCII文字の文字列である。通常は、ソフトウェアがこの文字列に従って予期しない行動や、悪意ある行動をとることはない。電子メールメッセージに対する添付ファイルは、Multipurpose Internet Mail Extensions (MIME)のような特定の公開された構文およびヘッダーによって定義される。 Regular expression scanners must scan all bytes of a packet and do not have the ability to determine which part of a packet may contain a threat. For example, a threat in an email may only enter through an email attachment. The defined body of an email message is a string of ASCII characters. Normally, the software will not take unexpected or malicious actions according to this string. Attachments to email messages are defined by specific published syntax and headers such as Multipurpose Internet Mail Extensions (MIME).
さらに、多くの場合、電子メールメッセージの転送に用いられるIPプロトコルのヘッダーは、電子メールクライアントに悪意ある行動をとらせることはない。通常は、電子メール内のスクリプトやプログラムの実行が、侵入問題の原因となる。そのため、潜在的なウィルスを検出するためには、電子メールメッセージのMIME部分だけがスキャンされる必要がある。 In addition, in many cases, IP protocol headers used to forward email messages do not cause email clients to take malicious action. Usually, execution of scripts and programs in emails causes intrusion problems. Therefore, to detect a potential virus, only the MIME part of the email message needs to be scanned.
電子メールメッセージのMIME部分を検出するには、電子メールメッセージを転送するために用いられるプロトコル(TCP/IP)および電子メールMIMEフォーマットを理解することが必要となる。RSP 2100は、すばやく解析を行い、拡張性があるやり方で、メッセージのMIME部分にだけウィルススキャンを開始する。これは、スキャンしなければならないパケットの数を削減し、さらにそれぞれのパケット内のスキャンしなければならないバイト数も削減する。RSP 2100は、入力データストリームの構文解析を実施する。これによって、IDS 2018は、どのタイプのデータがスキャンされる必要があるのかを理解し、その後、実行される必要があるスキャンのタイプを理解する。これによって、IDS 2018は、入力ストリームの構文に対応するトークン2068をより効率的に生成することができる。
In order to detect the MIME part of an email message, it is necessary to understand the protocol (TCP / IP) and email MIME format used to transfer the email message. The
DXP 2180およびRSP 2100のその他の機能は、この種の脅威スキャンに対して最適化され、従来のハードウェアアーキテクチャを用いている通常表現スキャナと比べて、性能を向上させている。例えば、図36のパーサテーブル2170およびパーサスタック2185内で使用される三値コンテントアドレッサブルメモリ(TCAM)と組み合わされたLL(k)パーサは、正規表現エンジンよりも早く入力ストリームをサーチする(search)ことができる。
The other features of the
正規表現スキャナは、適合があるかどうかを判定するために(determine a possible match)かなりの(significant)長さかつ長さが可変のデータの先読み(look ahead)を行うことが要求される。予測不能マッチング(ワイルドカードマッチング/wild card matching)も、独特なオペレーションを要求する。一方で、TCAMと組み合わされたLL(k)パーサは、過去の長い予測不能な(ワイルドカードwildcard)文字列をスキップし、一回のクロックサイクルで特定のバイトをすべて照合する。 Regular expression scanners are required to look ahead for variable length and variable length data to determine whether there is a match (determine a possible match). Unpredictable matching (wild card matching) also requires unique operations. On the other hand, the LL (k) parser combined with TCAM skips past long unpredictable (wildcard) wildcard strings and matches all specific bytes in a single clock cycle.
セッションコンテンツの修正 (Modifying Session Content)
図45に関して、IDS 2018は、識別されたセッションコンテキスト2852内の情報に対して追加や、修正を行ったりするのにも用いることができる。言い換えると、IDS 2018は、侵入脅威に含まれると認識されたパケットを除去することだけに限定されない。図45は、ネットワーク処理デバイス2856とIPリンク2866を確立しているPC 2864を示している。IDS 2018は、デバイス2856内で稼動し、上述したようなIPリンク2866と関連した特定のセッションコンテキスト2852を識別する。例えば、IDS 2018は、PC 2864によって、WAN 2850内で稼動している他のエンドポイントデバイスへ送られるHTTPメッセージや、FTTPメッセージや、SMTP電子メールメッセージなどを識別してもよい。
Modifying session content
With respect to FIG. 45,
IDS 2018は、識別されたセッションコンテキスト2852と関連している特定のタイプのコンテンツ2862に対して追加や、修正を行ったりするようにプログラムすることができる。ある例では、IDS 2018は、電子メールメッセージまたはFTTPメッセージ内に含まれるドキュメント(文章)内のクレジットカード番号2858を取り除くようにプログラムされてもよい。別の例では、IDS 2018は、FTTPドキュメント(文章)または電子メールドキュメント(文章)内で識別されたなんらかのドキュメント(文章)に対して電子透かし2860を付加することができる。例えば、IDS 2018は、PC 2864のIP送信元アドレスを含んでいるドキュメント(文章)に対して電子透かし(digital watermark) 2860を付加してもよい。
RSP 2100内のDXP 2180は、前述したようにIPリンク2866を介して運ばれるさまざまなセッションコンテキスト2852を識別する。SPU 2200は、その際、識別されたセッションコンテキスト2852と関連しているさまざまなタイプのコンテンツ2862と関連しているトークンを生成してもよい。例えば、SPU 2200は、図35と関連して前述したように、電子メール添付ファイルを含んでいるトークンを生成してもよい。RSP 2100は、電子メール添付ファイルに含まれているあらゆるドキュメント(文章)を検索する。
第一の例では、DXP 2180は、外部のWAN 2850へと向けられるあらゆるIPパケットを識別してもよい。DXP 2180は、その際、SPU 2200に、パケットに含まれており、なおかつクレジットカード番号を含んでいるドキュメント(文章)をすべて検索するように命令する。クレジットカード番号が検出された場合、IDS 2018は、このクレジットカード番号を「X」の並びで置き換えて、クレジットカード情報を隠す。第二の例では、SPU 2200は、FTTPセッションまたは電子メールセッション内で検出されたドキュメント(文章)にデジタル透かし2860を付加してもよい。その後、修正されたクレジットカード情報や電子透かし情報を含むドキュメント(文章)は、FTTPセッションまたは電子メールセッションに対応する宛先アドレスへ送られる。
In the first example,
同様の修正は、どのような識別されたセッションコンテキスト2852と関連しているどのようなタイプのコンテンツ2862に対しても行うことができる。例えば、特定のIP送信元アドレスまたはIP宛先アドレスは、別のIPアドレスへと変更することができ、その後このアドレスは、何らかの識別されたセッションコンテキスト2852またはセッションコンテンツ2862に従って、IPネットワークへ送り返される。
Similar modifications can be made to any type of
図46は、より効率的にデータを検索するためにコンテキスト自由文法(Context Free Grammar(CFG))を使用するプッシュダウンオートマトン(PushuDoown Automaton: PDA)エンジン3040の一例を示している。セマンティックテーブル3042は、様々なセマンティック状態を表す非終端(NT)シンボル3046を含んでいる。これらのシンボル3046は、PDAエンジン3040によって管理される。また各セマンティック状態3046は、一つまたは複数の対応するセマンティックエントリー3044を持っている。これらのセマンティックエントリー3044は、入力データ3014内に含まれているセマンティック要素3015と関連付けられている。入力データ3014の任意(arbitrary)部分3060は、現在の非終端シンボル3062と組み合わされ、セマンティックテーブル3042のエントリーに利用される。
FIG. 46 shows an example of a pushdown automaton (PDA)
インデックス3054は、セマンティックテーブル3042によって出力される。このインデックス3054は、シンボル3062と入力データセグメント3060を組み合わせたものと一致(match)するエントリー3046、3044に対応する。セマンティック状態マップ3048は、PDAエンジン3040の次のセマンティック状態を表す次の終端シンボル3054を認識する(identify)。次の非終端シンボル3054は、スタック3052へプッシュされる。続いて、このシンボル3054は、入力データ3014の次のセグメント3060と組み合わせるために、スタック3052からポップされる。PDAエンジン3040は、対象の検索文字列(target search string)3016が検出されるまで入力データ3014の解析を続ける。
The
まず、スタック3052は、PDAエンジン3040のセマンティック状態を、他のセマンティック状態の中にネストする(nest)ことを可能にする終端シンボルおよび非終端(NT)シンボルを含んでいてもよい。これにより、複数のセマンティック状態を単一の非終端シンボルによって表すことが可能となる。また、これは、PDAエンジン3040が管理しなければならない状態の数を大幅に少なくする。
First,
次に、図46と47に関して、通常、関連しているセマンティック要素が検出されるまでは、セマンティック状態の遷移(transition)はない。例えば、PDA 3040は、最初は、第一のセマンティック状態(SS1)3070で稼動し、完全な(entire)セマンティック要素「WWW.」が検出されるまでは、第二のセマンティック状態(SS2) 3072へ移行しない。同様に、PDAエンジン3040は、次のセマンティック要素「.ORG」が検出されるまでは、セマンティック状態(SS2) 3072のままでいる。このセマンティック要素が一つあれば、PDAエンジン3040は、セマンティック状態(SS2) 3072からセマンティック状態(SS3) 3074へ遷移する。それゆえ、PDAエンジン3040の特徴の一つは、入力データ3014内で検索される必要されるがあるセマンティック要素の数に対応するセマンティック状態3070、3072および3074の数である。
46 and 47, there is typically no semantic state transition until the associated semantic element is detected. For example, the
逆に、図46のPDAエンジン3040は、さらに長い文字列を検索するのにこれ以上のセマンティック状態を必要としないかもしれない。例えば、図48は、PDAエンジン3040に、文字列「WWWW.XXXX.ORGG」を検索するように要求する別の検索(search)を示している。この例では、PDAエンジン3040は、第一のセマンティック要素「WWWW.」においてさらに一字「W」を検索し、第二のセマンティック要素「.ORGG」においてさらに一字「G」を検索するように要求される。図48の新しい検索文字列に加えられた追加の文字によって、前に図47において必要であったセマンティック状態3070、3072、3074の数は増えてはいない。
Conversely, the
PDAエンジン3040は、状態の分岐(state branching)を減らしたり、削除したりすることができる。PDAエンジン3040は、第二の「WWW.」文字列の可能性を、セマンティック要素「.ORG」を検索するセマンティック状態3072の中へネストすることで、これらのさらなる分岐状態を削除する。これは、図47のパス3075によって表される。この場合、PDAエンジン3040は、第二の「WWW.」の可能性と、「.ORG」を検索している間、セマンティック状態3072のままでいる。
The
PDAエンジン3040の他の態様では、実質的にセマンティックテーブル3042の複雑さに影響を与えたりそれを増加させることなく、追加の検索文字を加えることができる。図49は、第三のセマンティック要素「.EXE」が、図46のPDAエンジン3040によって実行される検索に加えられたものとして示されている。追加のセマンティック要素「.EXE」は、セマンティックテーブル3042に、追加のセマンティック状態3076を一つだけ加える。
In other aspects of the
図46のPDAアーキテクチャは、よりコンパクトで効率的な状態テーブルをもたらす。ここで言う状態テーブルは、さらなる検索基準が加えられた場合に、より予測しやすく、安定した線形的な状態の拡張を行えるものである。例えば、データ検索に新しい文字列が加えられた場合、全体のセマンティックテーブル3042は、書き換えられる必要はなく、増加分に対する追加の(incremental additional)セマンティック状態だけを必要とする。 The PDA architecture of FIG. 46 provides a more compact and efficient state table. The state table here is more predictable and can be expanded in a stable linear state when further search criteria are added. For example, if a new string is added to the data search, the entire semantic table 3042 does not need to be rewritten and only requires an incremental additional semantic state.
実施方法の例示(Example Implementation)
図50−54は、前に図46において示したPDAエンジン3040によって実行されるPDAコンテキスト自由文法の例をより詳細に示している。まず図50に関して、PDAエンジン3040がURL文字列「WWW.XXX.ORG」を検索するところに同一の検索例が用いられている。もちろん、これは一例に過ぎず、どのような文字列、または文字の組み合わせもPDAエンジン3040を用いて検索することができる。
Example Implementation
50-54 show in more detail an example PDA context free grammar executed by the
PDAエンジン3040は、セマンティックテーブル3042、セマンティック状態マップ3048およびスタック3052がすべて中央処理ユニット(CPU)によってアクセスされるメモリ内に配置されるように、ソフトウェア内で実行することもできるということに注意されたし。この通常目的のCPUは、その際、以下で説明するオペレーションを実施する。他の実施例では、以下で図47と関連してより詳しく説明する再構成可能なセマンティックプロセッサ(RSP)を使用する。
It is noted that the
この例では、セマンティックテーブル3042を実施するためにコンテントアドレッサブルメモリ(CAM)が用いられる。他の実施例では、静的ランダムアクセスメモリ(SRAM)または動的ランダムアクセスメモリ(DRAM)を用いてもよい。セマンティックテーブル3042は、上述したように、セマンティック状態セクション3046へ分割される。このセマンティック状態セクション3046は、対応する非終端(NT)シンボルを収容することができる。この例では、セマンティックテーブル3042は、セマンティック状態を二つしか持っていない。セクション3046A内の第一のセマンティック状態は、非終端NT1により識別され、セマンティック要素「WWW.」と関連付けられている。セクション3046B内の第二のセマンティック状態は、非終端NT2により識別され、セマンティック要素「.ORG」と関連付けられている。
In this example, a content addressable memory (CAM) is used to implement the semantic table 3042. In other embodiments, static random access memory (SRAM) or dynamic random access memory (DRAM) may be used. Semantic table 3042 is divided into
セマンティックテーブル3042の第二のセクション3044は、入力データ3014内のセマンティック要素と対応している様々なセマンティックエントリーを収容している。同一のセマンティックエントリーは、同一のセマンティック状態セクション3046内に複数個存在していてもよい。例えば、セマンティックエントリーWWW.は、セマンティック要素「WWW.」が、入力データ3014内で現れるかもしれない異なる位置を特定するため、セクション3046A内の異なる位置に配置されてもよい。これは一例に過ぎず、PDAエンジン3040のオペレーションをさらに最適化するために使用される。別の実施例では、特定のセマンティックエントリーだけが一度だけ用いられ、入力データ3014を各異なるデータの位置を照合するためにシークエンス的に入力バッファ3061へ移させるようにしてもよい。
The
セマンティックテーブル3042内の第二のセマンティック状態セクション3046Bは、効率的に2つのセマンティックエントリーを含んでいる。「ORG.」エントリーは、入力データ3014内の「ORG.」文字列を検出するのに用いられ、「WWW.」エントリーは、入力データ3014内にあるかもしれない第二の「WWW.」文字列を検出するのに用いられる。この場合も、複数の異なる「.ORG」および「WWW.」エントリーは、解析の最適化のために、セマンティックテーブル3042のセクション3046Bへ選択的に(optionally)ロードされる。単一の「WWW.」エントリーと、単一の「ORG.」エントリー(すなわち図50に示されているものよりも少ないエントリー)を使用することも同様に可能である。
The second
この例では、セマンティック状態マップ3048は、三つの異なるセクションを含んでいる。一方で、これより少ないセクションを使用してもよい。次の状態セクション3080は、セマンティックテーブル3042内の一致したセマンティックエントリーを、PDAエンジンに使用される次のセマンティック状態へマッピングする。セマンティックエントリーポイント(SEP)セクション3078は、以下でより詳しく説明するセマンティックプロセッシングユニット(SPU)に対するマイクロ命令を起動するのに用いられる。このセクションはオプション的なものであり、PDAエンジン3040は、他のやり方では、次の状態セクション3080内で識別される非終端シンボルを用いて、次に入力データ3014に対して実行されるその他のオペレーションを決定する。
In this example,
例えば、非終端シンボルNT3がマップ3048から出力された場合、対応するプロセッサ(図示せず)は、入力データ3014内でURL文字列「WWW.XXX.ORG」が検出されたということを認識する。このプロセッサは、次に、プロセッサは、PDAエンジン3040がURLを認識した後、入力データ3014に対して要求されるその後のすべての処理を実行する。このように、SEPセクション3078は、PDAエンジン3040の最適化例の一つに過ぎず、含まれていても、含まれていなくてもよい。
For example, when the non-terminal symbol NT3 is output from the
スキップバイトセクション3076は、入力データ3014から、次のオペレーションサイクルで、入力バッファ3061へ移す数バイトを識別する。一致全パーサエントリーテーブル(Match All Paser Entries Table: MAPT)3082は、セマンティックテーブル3042内に一致がない場合に用いられる。
The
実行(Execution)
オペレーションシンボルの特別な末端「$」はまず、最初の非終端NT1とともにスタック3052へプッシュされる。この非終端NT1は、URLを検索することと関連付けられている第一のセマンティック状態を表す。入力データ3014のNT1シンボルおよび第一のセグメント3060は、入力バッファ3061へロードされ、CAM 3090へ送られる。この例では、入力バッファ3061内のコンテンツは、CAM 3090内のどのエントリーとも一致しない。従って、CAM 3090によって生成されるポインタ3054は、MAPTテーブル3082内のデフォルトNT1エントリーをポイントする。デフォルトNT1エントリーは、PDAエンジン3040に、入力データ3014の次の1バイトを入力バッファ3061へ移すように命令する。PDAエンジン3040は、続いて、次の非終端NT1シンボルをスタック3052へプッシュする。
Execution
The special terminal “$” of the operation symbol is first pushed onto the
図51は、入力データ3014の次のバイトが入力バッファ3061へ移された後の、次のPDAサイクルを示している。第一のURLセマンティック要素3060A(「WWW.」)は、現在、入力バッファ3061内に収容されている。非終端シンボルNT1は再び、スタック3052からポップされ、入力バッファ3061内の入力データ3060と組み合わされる。入力バッファ3061とセマンティックテーブル3042のコンテンツを比較すると、NT1エントリー3042Bで一致が生じる。テーブルエントリー3042Bと関連付けられているインデックス3054Bは、セマンティック状態マップエントリー3048Bをポイントする。エントリー3048B内の次の状態は、非終端シンボルNT2を含んでいる。この非終端シンボルNT2は、次のセマンティック状態への遷移を表す。
FIG. 51 shows the next PDA cycle after the next byte of
マップエントリー3048Bは、次の解析サイクルに関して入力データ3014を移すためにPDAエンジン3040が必要とするバイト数も識別する。この例では、「WWW.」文字列が、入力バッファ3061内の最初4バイト内で検出されるので、エントリー3048B内のスキップバイト値は、PDAエンジン3040に、次の(another)8バイトを入力バッファ3061へ移すように命令する。スキップバイト値は、ハードウェアに依存しており、セマンティックテーブル3042のサイズにより異なることがある。もちろん、これより大きい幅のセマンティックテーブルもしくは、これより小さい幅のセマンティックテーブルを有している別のハードウェア実施例が、使用されてもよい。
Map entry 3048B also identifies the number of bytes required by
図52は、入力データ3014の次の8バイトが入力バッファ3061へ移された後の、次のPDAエンジン3040のサイクルを示している。同様に、新しいセマンティック状態NT2は、スタック3052へプッシュされ、その後スタック3052からポップされ、入力データ3014の次のセグメントと組み合わされる。入力バッファ3061内のコンテンツは、再びセマンティックテーブル3042に入れられる。PDAサイクルでは、入力バッファ3061内のコンテンツは、セマンティックテーブル3042内のどのセマンティックエントリーとも一致しない。従って、NT2状態に対するデフォルトポインタ3054Cは、MAPT 3082内の対応するNT2エントリーをポイントする。このNT2エントリーは、PDAエンジン3040に、次の(additional)1バイトを入力バッファ3061に移し、同一のセマンティック状態NT2をスタック3052へプッシュするように命令する。
FIG. 52 shows the
図53は、入力データ3014の次のバイトが入力バッファ3061へ移された後の、次のPDAサイクルを示している。この例では、入力バッファ3061内のコンテンツとセマンティックテーブル3042内のNT2エントリーとの間にはまだ一致はない。従って、セマンティック状態NT2に対するデフォルトポインタ3054Cは、再びMAPT 3082内のNT2エントリーをポイントする。テーブル3082内のデフォルトNT2エントリーは、PDAエンジン3040に、入力データ3014からの次のバイトを入力バッファ3061へ移し、かつ別のNT2シンボルをスタック3052へプッシュするように命令する。最後の2つのPDAサイクル(図52および53)の間は、非終端NT2によって表されるセマンティック状態の遷移はないということに注意されたし。そのため、たとえ、PDAエンジン3040が第二のセマンティック要素「.ORG」のうちの最初の三文字である「.OR」を受信したとしても状態の遷移はない。
FIG. 53 shows the next PDA cycle after the next byte of
図54は、入力バッファ3061内のコンテンツがセマンティックテーブル3042内のNT2エントリー3042Dと一致している次のPDAサイクルを示している。対応するポインタ3054Dは、セマンティック状態マップ3048内のエントリー3048Dをポイントする。この例では、エントリー3048Dは、次のセマンティック状態NT3へマッピングを行うことで、URL「WWW.XXX.ORG」が検出されたということを示す。PDAエンジン3040は、完全なセマンティック要素「.ORG」が検出されるまではセマンティック状態NT3へ遷移しないということに注意されたし。
FIG. 54 shows the next PDA cycle in which the content in the
マップエントリー3048Dはまた、場合によっては(optionally)セマンティックプロセッシングユニット(SPU)(図55参照)によって実行されるマイクロ命令を起動するポインタSEP1も含んでいる。このマイクロ命令は、検出されたURLに対応するさらなるオペレーションを入力データ3014に対して実行するためのものである。例えば、SPUは、以下の同時継続出願で説明されているようにファイヤーウォールオペレーション、ウィルス検出オペレーションなどを実行するために、これ以降の(additional)入力データ3014を他から離して(peel off)もよい。ここでいう同時継続出願とは、2005年7月21日に出願された「ネットワークインターフェイスおよびファイヤーウォールデバイス」という発明の名称のアメリカ特許出願No.11/187,049と、2005年5月9日に出願された「侵入検知システム」という発明の名称のアメリカ特許出願No.11/125,956のことである。これらはともに、引用することにより、その内容が本出願に組み入れられているものとする。
The map entry 3048D also includes a pointer SEP1 that activates a microinstruction that is optionally executed by a semantic processing unit (SPU) (see FIG. 55). This microinstruction is for performing further operations on
マップエントリー3048Dは、SPUに対するSEPマイクロ命令を起動するのと同時に、PDAエンジン3040に、非終端NT3によって表される新しいセマンティック状態をスタック3052へプッシュするように命令してもよい。これによって、PDAエンジン3040に、検出されたURL3016に続く入力データ3014内の他のセマンティック要素に対して、別の検索を開始させてもよい。例えば、図49に示すように、PDAエンジン3040は、PDAエンジン3040は、入力データ3014に含まれているかもしれない実行ファイルと関連しているセマンティック要素「.EXE」の検索を開始してもよい。また、前述したように、新しいセマンティック要素「.EXE」を検索するには、PDAエンジン3040が追加のセマンティック状態をセマンティックテーブル3042に追加することだけが必要となる。
Map entry 3048D may instruct
また、前述したように、PDAエンジン3040は、解析されたデータアイテムそれぞれに対して別々の状態を維持しなければならないということはない。状態は、異なるセマンティック要素間の遷移に対してだけ維持される。例えば、図50、52および53は、セマンティックテーブル3042内のセマンティックエントリーのいずれとも完璧には一致しないデータ入力を示している。これらの状況では、PDAエンジン3040は、一致しないデータ文字列に対して何らかの状態を維持する(retain)ことなくデータの解析を続ける。
Also, as described above, the
また、図46−48と関連して前述したように、PDAエンジン3040内のセマンティック状態は、検索文字列の長さとは実質的に無関係である。例えば、「WWW.」の代わりにより長い検索文字列「WWWW.」を検索することは、単に、セマンティックテーブル3042内のセマンティックエントリー「WWW.」を、長いセマンティックエントリー「WWWW.」に置き換え、それに従ってマップ3048内のスキップバイト値を調整する(adjust)だけで実行可能である。
Also, as described above in connection with FIGS. 46-48, the semantic state within the
再構成可能なセマンティックプロセッサ(RSP)
図55は、ある実施例において、前述したプッシュダウンオートマトン(PDA)エンジン3040を実施するのに用いられている再構成可能なセマンティックプロセッサ(RSP)2100のブロック図を示している。このRSP 3100は、入力ポート3120を介して受信されるパケットデータストリームをバッファするための入力バッファ3140と、出力ポート3152を介して出力されるパケットデータストリームをバッファするための出力バッファ3150と、を有している。
Reconfigurable Semantic Processor (RSP)
FIG. 55 shows a block diagram of a reconfigurable semantic processor (RSP) 2100 that is used to implement the pushdown automaton (PDA)
直接実行パーサ(DXP)3180は、PDAエンジン3040を利用しかつ、入力バッファ3140において受信されるパケットまたはフレーム(例えば入力「ストリーム」)と、出力バッファ3150へ出力されるパケットまたはフレーム(例えば、出力「ストリーム」)と、再循環バッファ3160内で再循環されるパケットまたはフレーム(例えば、再循環「ストリーム」)の処理を制御する。入力バッファ3140、出力バッファ3150および再循環バッファ3160は、先入れ先出し(FIFO)バッファであるのが好ましい。
A direct execution parser (DXP) 3180 utilizes the
また、DXP 3180は、セマンティックプロセッシングユニット(SPU)3200によってパケットの処理を制御する。このセマンティックプロセッシングユニット(SPU)は、バッファ3140、3150および3160とメモリサブシステム3215間でのデータの転送を制御する。メモリサブシステム3215は、入力ポート3120から受信したパケットを格納し、また、以下の同時継続出願において記載されている統合型ポリシー管理(UPM)、ファイヤーウォール、ウイルス検出およびその他の何らかのオペレーションのために用いられるアクセス制御リスト(ACL)をCAM 3220内に格納する。
In addition, the
ここでいう同時継続出願とは、2005年7月21日に出願された「ネットワークインターフェイスおよびファイヤーウォールデバイス(“NETWORK INTERFACE AND FIREWALL DEVICE”)」という発明の名称のアメリカ特許出願No.11/187,049と、2005年5月9日に出願された「侵入検知システム(“INTRUSION DETECTION SYSTEM”)」という発明の名称のアメリカ特許出願No.11/125,956のことである。これらはともに、引用することにより、その内容が本出願に組み入れられているものとする。 The simultaneous continuation application here refers to US patent application No. 11 / 187,049 entitled “NETWORK INTERFACE AND FIREWALL DEVICE” filed on July 21, 2005. , US Patent Application No. 11 / 125,956, entitled “INTRUSION DETECTION SYSTEM”, filed on May 9, 2005. Both of which are incorporated herein by reference.
RSP 3100は、所定のPDAアルゴリズムを実行するために少なくとも三つのテーブルを用いる。生成規則3176を検索するためのコード3178は、パーサテーブル(PT)3170内に格納される。ある実施例では、パーサテーブル3170は、図46に示すセマンティックテーブル3042を収容している。文法生成規則3176は、生成規則テーブル(PRT)3190内に格納される。生成規則テーブル3190は、例えば、図46に示すセマンティック状態マップ3048を収容してもよい。SPU 3200によって実行されるコードセグメント3212は、セマンティックコードテーブル(SCT)3210内に格納される。これらのコードセグメント3212は、図50−54に示すセマンティック状態マップ3048内のSEPポインタ3078に従って起動されてもよい。
The
パーサテーブル3170内のコード3178は、行列(row-column)フォーマットやコンテントアドレッサブル(content addressable)フォーマットなどのやり方で格納される。行列(row-column)フォーマットでは、パーサテーブル3170の行は、内部パーサスタック3185によって提供される非終端コードNT 3172によりインデックス付けされ、パーサテーブル3170の列は、入力バッファ3140内のデータの先頭から抽出される入力データ値DI[N]3174によりインデックス付けされる。コンテントアドレッサブル(content addressable)フォーマットでは、図50−54の入力バッファ3061によって示されるように、パーサスタック3185からの非終端コード3172と入力バッファ3140からの入力データ値3174を連結したものが、パーサテーブル3170に対する入力をなす。
The
生成規則テーブル3190は、パーサテーブル3170からのコード3178によってインデックス付けされる。テーブル3170と3190は、パーサテーブル3170に対するクエリが、非終端コード3172および入力データ値3174に適用可能な生成規則3176を直接送り返すようにリンクされてもよい。DXP 3180は、パーサスタック3185の一番上にある非終端コードを、PRT 3190から送り返された生成規則(PR)3176と取り替え、その後入力バッファ3140からのデータの解析を続ける。
The production rule table 3190 is indexed by the
セマンティックコードテーブル3210もまた、パーサテーブル3170により生成されたコード3178か、生成規則テーブル3190により生成された生成規則3176、もしくはその両方によってインデックス付けされる。通常、解析結果は、所定の生成規則3176に対してSPU 3200がセマンティックコードテーブル3210からのセマンティックエントリーポイント(SEP)ルーチン3212をロードしかつ実行すべかどうかを、DXP 3180が検出することを可能にする。
Semantic code table 3210 is also indexed by
SPU 3200は、コンテキストシンボルによるアドレス化が可能なように構成された(structured)メモリインターフェイスを提供するメモリサブシステム3215に対するいくつかのアクセスパスを有する。メモリサブシステム3215、パーサテーブル3170、生成規則テーブル3190およびセマンティックコードテーブル3210は、内臓メモリか、外部メモリデバイス(例えば、同期動的ランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM))を用いるか、もしくはこれらのリソースを組み合わせて用いる。各テーブルまたはコンテキストは、一つまたは複数の他のテーブルまたはコンテキストを有する共有物理メモリ領域に、コンテキストインターフェイスを提供するだけでよい。
The
管理(maintenance)中央演算処理装置(MCPU)3056は、SPU 3200とメモリサブシステム3215の間に接続される。MCPU 3056は、RSP 3100にとって望ましい機能の中で、従来のソフトウェアとハードウェアによって無理なく遂行できるものを実行する。これらの機能は、通常、あまり使われずかつ最優先で実行されるものではない(時間的に重要でない)機能であり、その機能の複雑性からSCT 210内に含めるようなものではない。また、MCPU 3056は、SPU 3200に、MCPUの代わりにタスクを実行するようにリクエストする機能を持っているのが好ましい。
A maintenance central processing unit (MCPU) 3056 is connected between the
メモリサブシステム3215は、ハッシュ機能(ハッシング関数)またはコンテントアドレッサブルメモリ(CAM)検索を介してDRAM 3280内のデータにアクセスするためのアレイマシンコンテキストデータメモリ(AMCD)3230を有している。暗号処理ブロック3240は、データの暗号化や、復号化や、認証を行い、コンテキスト制御ブロックキャッシュ3250は、DRAM 3280へのコンテキスト制御ブロックをキャッシュするとともに、DRAM 3280からのコンテキスト制御ブロックをキャッシュする。通常キャッシュ3260は、基本演算において使用されるデータをキャッシュし、ストリーミングキャッシュ3270は、データストリームがDRAM 3280へ書き込まれている間と、データストリームがDRAM 3280から読み出されている間に、これらのデータストリームをキャッシュする。コンテキスト制御ブロックキャッシュ3250は、ソフトウェア制御のキャッシュであるのが好ましい。すなわち、いつキャッシュラインが使用され、いつ開放されるのかをSPU 3200が決定するのが好ましい。サーキット3240、3250、3260および3270はすべて、DRAM 3280とSPU 3200の間に接続される。TCAM 3220は、AMCD 3230とMCPU 3056の間に接続され、ファイヤーウォールや、統合型ポリシー管理や、他の侵入検知オペレーションを実行するために用いられるかもしれないアクセス制御リスト(ACL)テーブルおよびその他のパラメーターを含んでいる。
The
より詳細な、RSP 3100の機能ブロックに対する設計最適化は、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030に記載されている。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。
A more detailed design optimization for the functional blocks of the
パーサテーブル(Parser Table)
図46−54と関連して前述したように、パーサテーブル3170はコンテントアドレッサブルメモリ(CAM)として実施され、NTコード2172および入力データ値DI[n] 2174は、CAMがPRT 3190内の生成規則に対応するPRコード3178を検索するための鍵として用いられてもよい。CAMは、TCAMエントリーが格納された(populated with TCAM entries)三値(ternary)CAM(TCAM)であるのが好ましい。各TCAMエントリー(entry)は、NTコードとDI[n]適合値(DI[n] match value)を含む。各NTコードは、複数のTCAMエントリーを保持することができる。DI[n] 適合値(DI[n] match value)の各ビットは、「0」、「1」または「X」に設定することができる。この「X」は「無視(Don't Care)」を表す。この機能により、PRコードは、パーサテーブル3170が適合(match)を見つけるために、DI[n] 2174の数ビットまたは数バイトだけがコード化されたパターンと適合することを必要とする。例えば、TCAMのある行は、IP宛先アドレスフィールドに関するNTコードNT_IPを含んでおり、その後にセマンティックプロセッサを内蔵しているデバイスに対応するIP宛先アドレスを表す4バイトが続くかもしれない。このTCAM行の残りの4バイトは「無視(Don't Care)」に設定される。こうして、NT_IPと、8バイトのDI[8]と、がパーサテーブル3170に提示された際、DI[8]の最初の4バイトが正しいIPアドレスを含んでいれば、DI[8]の終わりの4バイトが何を含んでいても適合が生じることとなる。
Parser table
As described above in connection with FIGS. 46-54, parser table 3170 is implemented as a content addressable memory (CAM) and
TCAMは、「無視(Don't Care)」機能を採用しており、一つのNTに対し複数のTCAMエントリーがあってよいので、TCAMは所定のNTコードおよびDI[n]適合値に対して、複数の適合する(matching)TCAMエントリーを見つけることができる。TCAMは、そのハードウェア全体でこれらの適合(match)に優先順位をつけ(prioritize)、そこで最優先された適合(match)のみ出力する。さらに、NTコードおよびDI[n] 適合値(DI[n] match value)がTCAMに提示された場合、TCAMは、並列処理的にすべてのTCAMエントリーを受け取ったNTコード及びDI[n]適合値と適合させることを試みる。そのため、TCAMは、セマンティックプロセッサ3100の一回のクロックサイクルにおいて、パーサテーブル3170内に適合が見つかったかどうかを判定する機能を持つ。
TCAM uses the “Don't Care” function and there can be multiple TCAM entries for a single NT, so the TCAM is for a given NT code and DI [n] conformance value. Multiple matching TCAM entries can be found. TCAM prioritizes these matches across its hardware, and outputs only the top priority match. In addition, if the NT code and DI [n] match value (DI [n] match value) are presented to the TCAM, the TCAM receives all TCAM entries in parallel and receives the NT code and DI [n] match value. Try to fit with. Therefore, the TCAM has a function of determining whether a match is found in the parser table 3170 in one clock cycle of the
このアーキテクチャ(構造)の他の見方には、「可変先読み(variable look-ahead)」パーサとして見る見方がある。TCAMには一定のデータ入力セグメント(例えば8バイト)が入力されるが、TCAMのコード化により、次の生成規則(または図46−54と関連して説明したようなセマンティックエントリー)が現在の8バイトの入力のいずれかの部分に基づいて生成されることを可能にする。入力ストリームの先頭の部分にある現在の8バイト内のいずれかの部分にある1ビットまたは1バイトのみが現在の規則に対して関係を持つ場合、TCAMエントリーは、照合の間、残りを無視するようにコード化してもよい。本質的に、現在の「シンボル」は、所定の生成規則に対して、入力ストリームの先頭の部分の64ビットの何らかの組み合わせで定義することができる。一般的に、理にかなったコード化を行うことで、解析サイクルの回数と、NTコード数と、テーブルエントリーの数は、所定の解析タスクに関して減らすことができる。 Another way of looking at this architecture is to look at it as a “variable look-ahead” parser. A constant data input segment (e.g., 8 bytes) is input to the TCAM, but due to the encoding of the TCAM, the next generation rule (or semantic entry as described in connection with FIGS. Allows to be generated based on any part of the byte input. If only one bit or one byte in any part of the current 8 bytes at the beginning of the input stream is relevant to the current rule, the TCAM entry ignores the rest during matching You may code as follows. In essence, the current “symbol” can be defined by some combination of 64-bits at the beginning of the input stream for a given production rule. In general, with reasonable coding, the number of analysis cycles, the number of NT codes, and the number of table entries can be reduced for a given analysis task.
TCAMによる生成規則テーブル3170の実施は、以下の同時継続出願においてさらに詳しく説明される。ここで言う同時継続出願とは、2005年7月14日に出願された「CAMおよびSRAMを用いたパーサテーブル/生成規則テーブルの構成(PARSER TABLE/PRODUCTION RULE TABLE CONFIGURATION USING CAM AND SRAM)」という発明の名称のアメリカ特許出願No.11/181,527のことであり、これはすべて引用することにより、その内容が本出願に組み入れられているものとする。 The implementation of the production rule table 3170 by TCAM is described in further detail in the following co-pending application. The simultaneous continuation application mentioned here is an invention called “PARSER TABLE / PRODUCTION RULE TABLE CONFIGURATION USING CAM AND SRAM” filed on July 14, 2005. No. 11 / 181,527, the name of which is incorporated herein by reference in its entirety.
上述したシステムは、前記オペレーションのすべてあるいはいくつかを行う専用のプロセッサシステムや、マイクロコントローラや、プログラマブル論理装置を使用することができる。また、上述したオペレーションのいくつかは、ソフトウェアで実行してもよく、またその他のオペレーションはハードウェアで実行してもよい。 The system described above can use a dedicated processor system, microcontroller, or programmable logic device that performs all or some of the above operations. Also, some of the operations described above may be performed in software, and other operations may be performed in hardware.
便宜上、オペレーションは、相互接続された機能ブロックまたは区別できるソフトウェアモジュールとして説明されている。しかし、これは必ずしもこうでなければならないというわけではなく、これらの機能ブロックまたはモジュールが等価に、一つの論理デバイスや、プログラムや、オペレーションへ境界があいまいな形で統合されるというケースがあってもよい。どのような場合おいても、前述した機能ブロックおよびソフトウェアモジュールや、フレキシブルなインターフェイスの特徴は、それらだけで実施しても、他のオペレーションと組み合わせて、ハードウェアもしくはソフトウェアで実施してもよい。 For convenience, the operations have been described as interconnected functional blocks or distinguishable software modules. However, this is not necessarily the case, and there are cases where these functional blocks or modules are equivalently integrated into a single logical device, program, or operation in an ambiguous manner. Also good. In any case, the functional blocks and software modules described above and the features of the flexible interface may be implemented by themselves or in combination with other operations in hardware or software.
本発明の好ましい実施例で、本発明の本質について記載しかつ説明したので、本発明は、その本質から逸脱することなくその構成と詳細において変更してもよいということを理解されたい。我々は、請求項の精神および範囲を逸脱しないようなすべての変更および変形をクレームする。 Having described and described the essence of the present invention in the preferred embodiment of the present invention, it should be understood that the present invention may be modified in construction and detail without departing from the essence thereof. We claim all modifications and variations that do not depart from the spirit and scope of the claims.
Claims (45)
可能性のあるDoS攻撃と関連付けられたパケットを識別するステップと、
メモリ内でDoSエントリーとして前記パケットの状態を追跡するステップと、
前記メモリ内で以前のDoSエントリーが無い場合は、新しいパケットの通過を許可するステップと、
前記新しいパケットがすでに通過することを許可された後で、当該新しいパケットに対して前記メモリに新しいDoSエントリーを加えるステップと、を含むことを特徴とする前記方法。 A method of monitoring and filtering DoS (Denial of Service) attacks,
Identifying packets associated with a possible DoS attack;
Tracking the state of the packet as a DoS entry in memory;
If there is no previous DoS entry in the memory, allowing a new packet to pass; and
Adding a new DoS entry to the memory for the new packet after the new packet has already been allowed to pass.
前記対応するDoSエントリーにDoS攻撃フラグが設定されている場合には、前記パケットを除外するステップと、
タイムスタンプが所定の時間より古い場合には、前記タイムスタンプ、カウンタおよび前記対応するDoSエントリーに対するDoSフラグをアップデートするステップと、をさらに含む請求項1に記載の方法。 Receiving a packet that already has a DoS entry in the memory;
If a DoS attack flag is set in the corresponding DoS entry, excluding the packet; and
The method of claim 1, further comprising: updating a time stamp, a counter, and a DoS flag for the corresponding DoS entry if the time stamp is older than a predetermined time.
前記対応するDoSエントリーにDoS攻撃フラグが設定されていない場合には、前記パケットの通過を許可するステップと、
前記新しいパケットがすでに通過することを許可された後で前記対応するDoSエントリーに対するカウンタをインクリメントするステップと、
前記カウンタの値がDoS攻撃スレショルド以上であってかつ前記対応するDoSエントリーに対するタイムスタンプが所定の時間内である場合には、DoS攻撃フラグを設定するステップと、をさらに含む請求項1に記載の方法。 Receiving a packet that already has a DoS entry in the memory;
If a DoS attack flag is not set in the corresponding DoS entry, allowing the packet to pass; and
Incrementing a counter for the corresponding DoS entry after the new packet is already allowed to pass;
2. The method according to claim 1, further comprising: setting a DoS attack flag when the value of the counter is equal to or greater than a DoS attack threshold and the time stamp for the corresponding DoS entry is within a predetermined time. Method.
前記識別されたアドレスとファイヤーウォールポリシーメトリックスに従って、前記パケットに対してファイヤーウォールオペレーションとパケット送信オペレーションの両方を行なう1または複数のセマンティックプロセッシングユニットと、を含む請求項4に記載のネットワーク処理デバイス。 The processor is configured to identify an address and firewall policy metrics in a plurality of packets;
5. The network processing device of claim 4, comprising one or more semantic processing units that perform both a firewall operation and a packet transmission operation for the packet according to the identified address and firewall policy metrics.
前記直接実行パーサによって起動された前記マイクロ命令を実行することによって前記ネットワークインターフェイスオペレーションを行う1または複数のセマンティックプロセッシングユニットと、を備えたことを特徴とするセマンティックプロセッサ。 A direct execution parser that parses a plurality of packets to identify a syntax element associated with a plurality of network interface operations and then invokes a plurality of microinstructions according to the identified syntax element;
A semantic processor comprising: one or more semantic processing units that perform the network interface operation by executing the microinstructions activated by the direct execution parser.
スタックシンボルを格納した直接実行パーサスタックであって、前記パーサが前記受信したデータシンボルに応じて前記スタックシンボルを処理するようになっている直接実行パーサスタックと、
少なくとも1つの受信したデータシンボルと前記パーサによって供給されたシンボルとの組み合わせによってインデックス化が可能な生成規則コードのデータが格納されたパーサテーブルと、
前記生成規則コードによってインデックス化が可能な生成規則のデータが格納された生成規則テーブルと、
前記セマンティックプロセッシングユニットによってアクセス可能であり、かつ前記生成規則コードによってインデックス化されたマシンインストラクションのデータが格納されたセマンティックコードテーブルと、をさらに備えた請求項8に記載のセマンティックプロセッサ。 An input port configured to receive data symbols;
A direct execution parser stack storing stack symbols, wherein the parser processes the stack symbols in response to the received data symbols;
A parser table storing data of generation rule codes that can be indexed by a combination of at least one received data symbol and a symbol supplied by the parser;
A production rule table storing production rule data that can be indexed by the production rule code;
9. The semantic processor according to claim 8, further comprising a semantic code table that is accessible by the semantic processing unit and stores data of machine instructions indexed by the generation rule code.
前記データパーサによって識別された構文要素に従って、前記データパーサから脅威をフィルタリングする脅威フィルタリング回路と、を備えたことを特徴とする侵入検出システム。 A data parser that identifies syntax elements in the data stream;
An intrusion detection system comprising: a threat filtering circuit that filters threats from the data parser according to a syntax element identified by the data parser.
前記直接実行パーサによって識別された構文要素に従って、前記データストリームに対して侵入検出処理を実行する1または複数のセマンティックプロセッシングユニットと、を含むことを特徴とするセマンティックプロセッサ。 A direct execution parser that identifies syntax elements in the data stream;
A semantic processor comprising one or more semantic processing units that perform intrusion detection processing on the data stream in accordance with syntax elements identified by the direct execution parser.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63900204P | 2004-12-21 | 2004-12-21 | |
US11/125,956 US20050216770A1 (en) | 2003-01-24 | 2005-05-09 | Intrusion detection system |
US11/187,049 US20070022479A1 (en) | 2005-07-21 | 2005-07-21 | Network interface and firewall device |
US70174805P | 2005-07-22 | 2005-07-22 | |
PCT/US2005/046073 WO2006069041A2 (en) | 2004-12-21 | 2005-12-20 | Network interface and firewall device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008524965A true JP2008524965A (en) | 2008-07-10 |
Family
ID=39661478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007548382A Pending JP2008524965A (en) | 2004-12-21 | 2005-12-20 | Network interface and firewall devices |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008524965A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011182211A (en) * | 2010-03-02 | 2011-09-15 | Fujitsu Ltd | Buffer management program and method, and message analysis device |
JP2019512973A (en) * | 2016-03-23 | 2019-05-16 | フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. | Efficient state machine for real-time data flow programming |
CN115242691A (en) * | 2022-07-04 | 2022-10-25 | 中国电子科技集团公司第三十研究所 | Protocol identification method based on protocol feature library |
WO2022244202A1 (en) * | 2021-05-20 | 2022-11-24 | 三菱電機株式会社 | Communication adapter, air conditioning system, data transfer method, and program |
JP7496934B2 (en) | 2021-05-20 | 2024-06-07 | 三菱電機株式会社 | COMMUNICATION ADAPTER, AIR CONDITIONING SYSTEM, DATA TRANSFER METHOD, AND PROGRAM |
-
2005
- 2005-12-20 JP JP2007548382A patent/JP2008524965A/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011182211A (en) * | 2010-03-02 | 2011-09-15 | Fujitsu Ltd | Buffer management program and method, and message analysis device |
JP2019512973A (en) * | 2016-03-23 | 2019-05-16 | フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. | Efficient state machine for real-time data flow programming |
JP7019589B2 (en) | 2016-03-23 | 2022-02-15 | フォグホーン システムズ,インコーポレイテッド | Efficient state machine for real-time dataflow programming |
WO2022244202A1 (en) * | 2021-05-20 | 2022-11-24 | 三菱電機株式会社 | Communication adapter, air conditioning system, data transfer method, and program |
JP7496934B2 (en) | 2021-05-20 | 2024-06-07 | 三菱電機株式会社 | COMMUNICATION ADAPTER, AIR CONDITIONING SYSTEM, DATA TRANSFER METHOD, AND PROGRAM |
CN115242691A (en) * | 2022-07-04 | 2022-10-25 | 中国电子科技集团公司第三十研究所 | Protocol identification method based on protocol feature library |
CN115242691B (en) * | 2022-07-04 | 2023-05-19 | 中国电子科技集团公司第三十研究所 | Protocol identification method based on protocol feature library |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11516181B2 (en) | Device, system and method for defending a computer network | |
WO2006069041A2 (en) | Network interface and firewall device | |
US20070022479A1 (en) | Network interface and firewall device | |
US20070022474A1 (en) | Portable firewall | |
US7706378B2 (en) | Method and apparatus for processing network packets | |
US20050216770A1 (en) | Intrusion detection system | |
Singh et al. | Automated Worm Fingerprinting. | |
US8296842B2 (en) | Detecting public network attacks using signatures and fast content analysis | |
US9258329B2 (en) | Dynamic access control policy with port restrictions for a network security appliance | |
US8010469B2 (en) | Systems and methods for processing data flows | |
US7979368B2 (en) | Systems and methods for processing data flows | |
US8656488B2 (en) | Method and apparatus for securing a computer network by multi-layer protocol scanning | |
AU2004303220B2 (en) | Real-time network monitoring and security | |
US20160366160A1 (en) | Systems and Methods for Processing Data Flows | |
US20080229415A1 (en) | Systems and methods for processing data flows | |
EP2442525A1 (en) | Systems and methods for processing data flows | |
US20050108393A1 (en) | Host-based network intrusion detection systems | |
US20080162390A1 (en) | Systems and methods for processing data flows | |
Varghese et al. | Detecting evasion attacks at high speeds without reassembly | |
Jungck et al. | Issues in high-speed internet security | |
JP2008524965A (en) | Network interface and firewall devices | |
KR20190028596A (en) | Matching device of high speed snort rule and yara rule based on fpga | |
Jawahar et al. | Application Controlled Secure Dynamic Firewall for Automotive Digital Cockpit | |
Cronin | Hardware acceleration of network intrusion detection and prevention | |
Wang et al. | New directions in covert malware modeling which exploit white-listing |