JP2008524965A - Network interface and firewall devices - Google Patents

Network interface and firewall devices Download PDF

Info

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
Application number
JP2007548382A
Other languages
Japanese (ja)
Inventor
ソムスブーラ シクダール,
ケビン, ジェローム ローエット,
ケイブ ジャラリ、
スティーブン クレイ エリス,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MISTLETOE TECHNOLOGIES Inc
Original Assignee
MISTLETOE TECHNOLOGIES Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/125,956 external-priority patent/US20050216770A1/en
Priority claimed from US11/187,049 external-priority patent/US20070022479A1/en
Application filed by MISTLETOE TECHNOLOGIES Inc filed Critical MISTLETOE TECHNOLOGIES Inc
Priority claimed from PCT/US2005/046073 external-priority patent/WO2006069041A2/en
Publication of JP2008524965A publication Critical patent/JP2008524965A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

ネットワーク処理装置は、ファイヤーウォールと他のネットワークインターフェイスマネージメントの動作を行う新規なアーキテクチャを提供する。UPM (Unified Policy Management)アーキテクチャは、ファイヤーウォールポリシーマネージメントをルーティングおよびスイッチングの決定に統合させるために、同じメモリと処理構造を使用する。他の実施形態では、再構成可能なセマンティックプロセッサ(Reconfigurable Semantic Processor: RSP)が異なる構文要素を識別するパーサを使用する。これらの構文要素は、その後で、1または複数のセマンティックプロセッシングユニット(SPUs)によって使用され、異なるファイヤーウォールやネットワークインターフェイスやルーティングやスイッチングや他のパケット処理作業が行われる。
【選択図】 図1
Network 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

関連する出願Related applications

本出願は、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.

発明の背景Background of the Invention

インターネットの解放性は、インターネットに接続されたマシンに対する様々な攻撃をもたらすようになった。これらの攻撃は、対象のマシンが正確に動作することを不可能にするパケットシークエンスを送ることで実行される。この攻撃は、この対象のマシンをクラッシュさせる攻撃や、サービス妨害(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.

詳細な説明Detailed description

図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) network 24 connected to a public IP network 12 via a network interface device 25A. This public IP network 12 may be any wide area network (WAN) that provides packet switching. The private network 24 is a company enterprise network, an Internet service provider (ISP) network, a home network, or the like that needs to communicate with the public IP network 12.

私的ネットワーク24内のネットワーク処理デバイス25A−25Dは、パケット交換ネットワーク上で通信しさえすればどのようなタイプの通信装置でもよい。例えば、ネットワーク処理デバイス25Aおよび25Bは、ルーターや、スイッチや、ゲートウェイや、ファイヤーウォールなどでよい。エンドポイント25Cは、パーソナル・コンピュータ(PC)であり、エンドポイント25Dは、インターネットウェブサーバーのようなサーバーである。このPC 25Cは、有線イーサネット接続のような有線接続、もしくは例えばIEEE802.11プロトコルを用いている無線接続を介して前記私的ネットワーク24に接続されてもよい。   The network processing devices 25A-25D in the private network 24 may be any type of communication device as long as they communicate over a packet switched network. For example, the network processing devices 25A and 25B may be routers, switches, gateways, firewalls, and the like. The endpoint 25C is a personal computer (PC), and the endpoint 25D is a server such as an Internet web server. The PC 25C may be connected to the private network 24 via a wired connection such as a wired Ethernet connection, or a wireless connection using, for example, the IEEE 802.11 protocol.

再構成可能なセマンティックプロセッサ(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 network devices 25A-25D in the private network 24. Different RSPs 100 collect and analyze both network traffic 22 entering the private network 24 and network traffic 22 passing through the private network 24. In this example, the RSP 100A in the network processing device 25A is configured to operate as a firewall and normal network interface for the private network 24. Although the network interface operations and normal firewall operations described below are shown to be performed within RSP 100, some of these operations can also be performed within other traditional computer architectures. I understand that there are also.

ある例では、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) attacks 16. An external PC 14 connected to the public IP network 12 may generate a DoS attack that is intended to bring down one or more network processing devices 25A-25D in the private network 24. The RSP 100A monitors all incoming packets 20 received from the public IP network 12, and discards all packets associated with the DoS attack 16 in the packet stream 20. In addition to detecting and discarding packet 16, RSP 100A may also perform another network interface operation 26 on packet 22 that has not been discarded as associated with DoS attack 16. For example, RSP 100A can detect and filter viruses and malware, network address translation (NAT), routing, statistical analysis, logging, public IP network 12 and private IP network 24. It is possible to provide an appropriate combination of functions such as other packet conversion operations required for packets transferred between the two. All of these operations are described in more detail below.

別の例では、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 private network 24, or at another major access point that is the entrance to the private network 24. It may be incorporated (installed) in another network processing device. For example, the RSP 100B may be located in the server 25D to provide operations 26 such as similar authentication, routing, statistical analysis, etc., described in more detail below. In other ways, some of the packet operations 26 may be performed in the RSP 100B and not in the RSP 100A. For example, RSP 100B may perform statistical analysis and DoS filtering in addition to all other packet analysis filtering and packet conversion performed by RSP 100A.

私的ネットワーク24内の他のネットワーク処理デバイス25Bおよび25Cは、いずれも、以下で説明されるオペレーションのうちのいずれかを実行するように構成された一つまたは複数のRSP 100を有していてもよい。このRSP 100を用いるプラットフォームはまた、無線インターフェイス(例えば、携帯電話符号分割多重アクセス方式(cellular CDMA)や、時分割多重アクセス(TDMA)や、802.11や、ブルートゥースなど)を介してパケットまたはその他のデータストリームを受け取るなんらかの無線デバイス(例えば、無線携帯端末(wireless PDA)や、無線携帯電話や、無線ルーターや、無線アクセスポイントや、無線クライアントなど)であってもよい。   Each of the other network processing devices 25B and 25C in the private network 24 has one or more RSPs 100 configured to perform any of the operations described below. Also good. Platforms using this RSP 100 also allow packets or other data over wireless interfaces (eg, cellular code division multiple access (cellular CDMA), time division multiple access (TDMA), 802.11, Bluetooth, etc.). It may be any wireless device that receives the stream (eg, a wireless PDA, wireless mobile phone, wireless router, wireless access point, wireless client, etc.).

再構成可能なセマンティックプロセッサ(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 input buffer 140 for buffering a packet data stream received via the input port 120, and an output buffer 150 for buffering a packet data stream output via the output port 152. Have.

直接実行パーサ(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 recirculation buffer 160. Input buffer 140, output buffer 150 and recirculation buffer 160 are preferably first-in first-out (FIFO / first-in-first-out) buffers.

また、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 semantic processing unit 200 controls data transfer between the buffer 140, the buffer 150 and the buffer 160, and the memory subsystem 215. The memory subsystem 215 stores packets received from the input port 120 and is used for integrated policy management (UPM) operations and other firewall operations, as described below, for access control lists (ACLs). ) Store the table in the CAM 220.

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 RSP 100 uses at least three tables to perform a given firewall operation. A code 178 for retrieving the production rule (PR) 176 is stored in a parser table (PT) 170. The grammar generation rule 176 is stored in a production rule table (PRT) 190. A code segment 212 executed by the SPU 200 is stored in a Semantic Code Table (SCT) 210. The code 178 in the parser table 170 is stored in a manner such as a matrix format (row-column format) or a content addressable format. In matrix format, the rows of the parser table 170 are indexed by the non-terminal code NT 172 provided by the internal parser stack 185, and the columns are input data values extracted from the beginning of the data in the input buffer 140. Indexed by DI [N] 174. In the content addressable format, a concatenation of the non-terminal code 172 from the parser stack 185 and the input data value 174 from the input buffer 140 forms an input to the parser table 170.

生成規則テーブル190は、パーサテーブル170からのコード178によりインデックス付けされる。テーブル170および190は、パーサテーブル170に対するクエリが、非終端コード172および入力データ値174に対応する(適用可能な)生成規則176を直接送り返すように、図2Aに示されているようにリンクされていてもよい。DXP 180は、パーサスタック185の一番上にある非終端コードを、PRT190から送り返された生成規則(PR)176と取り替え、その後入力バッファ140からのデータの解析を続ける。   Production rule table 190 is indexed by code 178 from parser table 170. Tables 170 and 190 are linked as shown in FIG. 2A so that queries against parser table 170 send back (applicable) production rule 176 corresponding to non-terminal code 172 and input data value 174 directly. May be. The DXP 180 replaces the non-terminal code at the top of the parser stack 185 with a production rule (PR) 176 sent back from the PRT 190, and then continues to analyze the data from the input buffer 140.

また、セマンティックコードテーブル210も、パーサテーブル170により生成されたコード178か、生成規則テーブル190により生成された生成規則176、もしくはその両方によってインデックス付けされる。通常、解析結果は、DXP 180が、所定の生成規則176に対して、セマンティックコードテーブル210からのセマンティックエントリーポイント(SEP)ルーチン212がSPU 200によってロードされ、かつ実行されるべきかを判定することを可能にする。   The semantic code table 210 is also indexed by the code 178 generated by the parser table 170, the generation rule 176 generated by the generation rule table 190, or both. Typically, the analysis result is that the DXP 180 determines, for a given production rule 176, the semantic entry point (SEP) routine 212 from the semantic code table 210 is loaded and executed by the SPU 200. Enable.

SPU 200は、コンテキストシンボルによるアドレス化が可能なように構成されたメモリインターフェイスを提供するメモリサブシステム215に対するいくつかのアクセスパスを有する。メモリサブシステム215、パーサテーブル170、生成規則テーブル190およびセマンティックコードテーブル210は、内部メモリデバイスか、例えばダイナミックランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM)のような外部メモリデバイスもしくはそれらリソースの組み合わせを用いる。各テーブルまたはコンテキストは、共有物理メモリ領域に対するコンテキストインターフェイスに一つまたは複数のその他のテーブルまたはコンテキストを提供するだけでもよい。   The SPU 200 has several access paths to the memory subsystem 215 that provides a memory interface configured to be addressable by context symbols. Memory subsystem 215, parser table 170, generation rule table 190, and semantic code table 210 may be internal memory devices or external memory devices such as dynamic random access memory (DRAM) and content addressable memory (CAM) or the like. Use a combination of resources. Each table or context may only provide one or more other tables or contexts to the context interface for the shared physical memory area.

管理(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 SPU 200 and the memory subsystem 215. The MCPU 56 executes all of the functions desirable for the RSP 100 that can be reasonably performed by conventional software and hardware. These functions are usually functions that are rarely used and are not executed with the highest priority (not important in time), and are not intended to be included in the SCT 210 due to the complexity of the functions. The MCPU 56 preferably also has a function to request the SPU 200 to execute a task instead of the MCPU.

メモリサブシステム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 memory subsystem 215 has an array machine context data memory (AMCD) 230 for accessing data in the DRAM 280 via a hash function (hashing function) or content addressable memory (CAM) search. The encryption processing block 240 performs encryption, decryption, and authentication of data, and the context control block cache 250 caches the context control block to the DRAM 280 and caches the context control block from the DRAM 280. The normal cache 260 caches data used in basic operations, and the streaming cache 270 is used while the data stream is being written to DRAM 280 and while the data stream is being read from DRAM 280. Cache the data stream. The context control block cache 250 is preferably a software controlled cache. That is, SPU 200 preferably determines when a cache line is used and when it is free. Electrical circuits 240, 250, 260 and 270 are connected between DRAM 280 and SPU 200, respectively. The TCAM 220 is connected between the AMCD 230 and the MCPU 56 and stores an access control list (ACL) table and other parameters in a manner that sufficiently improves the performance of the firewall.

より詳細な、RSP 100の機能ブロックに対する設計最適化は、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030に記載されている。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。   More detailed design optimization for the functional blocks of RSP 100 can be found in co-pending US patent application No. 10 / 351,030, filed Jan. 24, 2003, entitled "Reconfigurable Semantic Processor". Are listed. This patent application is incorporated herein by reference in its entirety.

ファイヤーウォールオペレーションおよびネットワークインターフェイスオペレーションのための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 network interface operation 26 described above in connection with FIG. 1 implements RSP 100 using production rules and semantic entry point (SEP) routine 212. Implemented. Packets arriving at the input port 120 of the RSP device 100 are parsed using the grammar table entry in the parser table 170 and processed semantically by the SEP routine 212. The SEP routine 212 determines to perform any of the following operations 1-5.
1. Accept the packet as it is and send it to output port 152.
2. Exclude the packet from further analysis and do not forward it.
3. After modifying the packet, send it to output port 152.
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 SPU 200 for packets with known or suspicious anomalies while allowing them to pass acceptable packets. As an example of passage determination (whether or not to pass) according to the grammar, there is a TCP flag setting. The TCP flag field has 8 bits inside, and only some combinations are valid. This grammar rule is encoded in the parser table 170 to allow all acceptable TCP sequences and reject unacceptable TCP sequences. For example, a message of a combination of TCP SYN and FIN provided in the same packet is not a valid combination and is directly excluded (dropped) by the DXP 180.

一部の受け入れ不可能なパケットまたはオペレーションは、補助用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 memory 280 packets for TCP sessions that have not been previously sent a TCP SYN message.

直接実行パーサ(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 SPU 200, or directly forward a non-attack packet in DoS processing. Using associated parser grammars offers improved performance (compared to systems using traditional firewalls). Traditional firewalls must match each packet against a list of "problematic" rules. This list grows over time as new attacks are discovered. Conversely, the parser grammar can be written to describe only problem-free packets and only those problem-free packets are allowed to pass through RSP 100. In this way, problematic packets are automatically excluded or processed directly by the SPU 200. This provides a more scalable packet monitoring operation.

RSPパーサおよび生成規則テーブル (RSP Parser and Production Rule Table)
RSP 100の、ファイヤーウォールもしくは統合型ポリシー管理(UPM)としてのオペレーションは、特別な例によってよりよく理解できるであろう。以下で説明される例では、RSP 100は、TCPパケットの対サービス妨害(DoS)フィルタリングを提供する。しかし、当業者ならば、以下で説明される概念は、どのような通信プロトコルを用いて送信されるどのようなデータストリームに関するどんな種類のファイヤーウォールオペレーションにも簡単に適用できるとわかるだろう。同様の概念は、以下で説明される統合型ポリシー管理(UPM)オペレーションにも簡単に適用できる。
RSP Parser and Production Rule Table
The operation of RSP 100 as a firewall or integrated policy management (UPM) can be better understood with special examples. In the example described below, RSP 100 provides Denial of Service (DoS) filtering of TCP packets. However, those skilled in the art will appreciate that the concepts described below can be easily applied to any type of firewall operation for any data stream transmitted using any communication protocol. Similar concepts can be easily applied to the Integrated Policy Management (UPM) operation described below.

ファイヤーウォールオペレーションおよび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, code 300 is associated with parsing the format of a media access control (MAC) packet header, code 302 is associated with processing an IP packet, and another set of codes, code 304, is a transfer control protocol ( (TCP) Packet processing related. Another code 306 in the parser table 170 is associated with another firewall or denial of service (DoS) operation described in more detail below.

PRコード178は、生成規則テーブル190内に格納されている対応する生成規則176にアクセスするために用いられる。特定の検索の実行において必要とされない限り、入力値308(例えば、現在の入力値DI[n] 174(nはバイトで選択された一致幅)と連結される非終端(NT)シンボル172)は、PRテーブル170内でなんらかの特定の順番で割り当てられる必要は無い。   The PR code 178 is used to access the corresponding generation rule 176 stored in the generation rule table 190. Unless required in performing a particular search, an input value 308 (eg, a non-terminal (NT) symbol 172 concatenated with the current input value DI [n] 174 (where n is the match width selected in bytes)) is It need not be assigned in any particular order within the PR table 170.

ある実施例では、パーサテーブル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 addresser 310 that receives NT symbols 172 and data values DI [n] 174 from DXP 180. Addresser 310 concatenates NT symbol 172 with data value DI [n] 174 and sends this concatenated value 308 to parser table 170. Conceptually, it is often useful to view the structure of the production rule table 170 as a matrix with one PR code 178 for each unique combination of NT code 172 and data value 174, The present invention is not so limited. Different types of memory and memory configurations may be appropriate for different applications.

ある実施例では、パーサテーブル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 addresser 310 uses NT code 172 and input data value DI [n] 174 as a key for CAM to retrieve PR code 178. Is used. The CAM is preferably a ternary CAM (TCAM) populated with TCAM entries. Each TCAM entry includes an NT code 312 and a DI [n] match value 314. Each NT code 312 can hold multiple TCAM entries.

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 PR code 178 requires that the parser table 170 match only a few bits or bytes of DI [n] 174 with the encoded pattern in order to find a match. And

例えば、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 NT code NT_TCP_SYN 312A for a TCP SYN packet, which then represents content such as the destination IP address and TCP message identifier that would be present in the TCP SYN packet ( additional) Byte 314A follows. The remaining bytes of this TCAM line are set to “Don't Care”. Thus, when NT_TCP_SYN 312A and a few bytes of DI [N] are presented to the parser table 170, if the first set of bytes in DI [N] contains a TCP SYN message identifier, then the DI [N] A match will occur no matter what the remaining bytes contain.

パーサテーブル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 PR code 178A corresponding to the TCAM entry that matches NT 172 and DI [N] 174, as described above. In this example, PR code 178A is associated with a TCP SYN packet. This PR code 178A may be sent back to the DXP 180, sent back directly to the PR table 190, or both. In one embodiment, PR code 178A is the row index of the TCAM entry that creates a match.

図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, addresser 320 receives PR code 178 from either DXP 180 or parser table 170 and receives NT symbol 172 from DXP 180. Preferably, the received NT symbol 172 is the same NT symbol as the NT symbol sent to the parser table 170, where the NT symbol was used to generate the received PR code 178. is there.

アドレッサ320は、これらの受け取ったPRコード178およびNTシンボル172を使用して対応する生成規則176にアクセスする。アドレッサ320はいくつかの実施例においては必ずしも必要ではないが、使用される場合は、DXP 180の一部やPRT 190の一部として設けることができ、また中間の(intermediate)機能ブロックとして設けることができる。例えば、パーサテーブル170またはDXP 180がアドレスを直接作る場合、アドレッサは必要とされない。   The addresser 320 uses these received PR codes 178 and NT symbols 172 to access the corresponding production rules 176. The addresser 320 is not necessary in some embodiments, but if used, it can be provided as part of the DXP 180 or PRT 190, or as an intermediate functional block. Can do. For example, if the parser table 170 or DXP 180 creates the address directly, no addresser is required.

生成規則テーブル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 generation rule 176 stored in the generation rule table 190 includes three data segments. These data segments include a symbol segment 177A, an SPU entry point (SEP) 177B segment, and a skip byte segment 177C. These segments may be fixed length segments or variable length segments, and are preferably null-terminated. Symbol segment 177A has a plurality of symbols transferred (pushed) onto DXP parser stack 185 (FIG. 2A). The plurality of symbols includes both or one of a terminal symbol and a non-terminal symbol. The SEP segment 177B has an SPU entry point (SEP) that the SPU 200 uses to process segments of data. In one embodiment described below, SEP segment 177B corresponds to ACL (ACL = Access control list) predicates and other syntactic elements identified in the currently analyzed packet.

スキップバイトセグメント177Cは、入力バッファ140が自身のバッファポインタをインクリメントし、入力ストリームの処理を進めるために使用するスキップバイト値を有している。また、生成規則の処理において有用なその他の情報も生成規則176の一部として格納することができる。   The skip byte segment 177C has a skip byte value that the input buffer 140 uses to increment its buffer pointer and proceed with processing the input stream. Also, other information useful in the production rule processing can be stored as part of the production rule 176.

この例では、生成規則コード178Aによってインデックス付けされる生成規則176は、入力バッファ140内の識別されたTCP SYNパケットに対応する。SEPセグメント177Bは、図2Aのセマンティックコードテーブル210内のSPUコード212をポイントする。このSPCコード212は、SPU 200によって実行されると、以下図4−11で説明されるように、識別されたTCP SYNパケットに対して(on)DoSオペレーションを実行するものである。   In this example, production rule 176 indexed by production rule code 178A corresponds to the identified TCP SYN packet in input buffer 140. SEP segment 177B points to SPU code 212 in semantic code table 210 of FIG. 2A. The SPC code 212, when executed by the SPU 200, performs an (on) DoS operation on the identified TCP SYN packet, as will be described below with reference to FIG. 4-11.

ある実施例では、SPU 200は、並列処理的に実行できるセマンティックプロセッシングエレメントの配列(array)を有する。生成規則176A内のSEPセグメント177Bは、一つまたは複数のSPU 200を起動し、並列処理的に(in parallel)、異なるパケットに対して同一のファイヤーウォールオペレーションを実行したり、同一のパケットに対して異なるファイヤーウォールオペレーションを実行したりすることができる。同様のオペレーションは、以下で説明するいかなるファイヤーウォールオペレーションや、ネットワークインターフェイスオペレーションや、UPMオペレーションに必要な他の種類のパケット識別もしくはデータ識別を検出するのにも用いることができるのは明らかであろう。   In one embodiment, SPU 200 has an array of semantic processing elements that can be executed in parallel. SEP segment 177B in production rule 176A activates one or more SPUs 200 to perform the same firewall operation on different packets in parallel or to the same packet. And perform different firewall operations. It should be apparent that similar operations can be used to detect any firewall operations described below, network interface operations, and other types of packet or data identification required for UPM operations. .

上述したように、パーサテーブル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 IP grammar 302 included in the parser table 170 may identify an identified NT_IP in the input buffer 140 that is used in combination with the identified TCP SYN message to control DoS processing (see FIGS. 4-11 below). A production rule code 178 associated with the destination address may be included.

生成規則コード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 data value 314 in the production rule code 302 includes the destination IP address of the network processing device located in the private network 24 of FIG. If the input data DI [I] 174 associated with the NT_IP code 172 does not hold the destination address included in the match value 314 for the PR code 302, the default generation rule code 178 is supplied to the generation rule table 190. Also good. This default generation rule code 178 points to a generation rule 176 in the generation rule table 190 that directs the DXP 180, the SPU 200, or both to discard the packet from the input buffer 140.

サービス妨害(Denial of Service (DoS))
図3は、どのようなやり方でDoS攻撃16が、ネットワーク処理デバイス406を危険にさらすことができるのかを示している。一般的に、DoS攻撃の予防の目的は、悪意あるパケットが私的ネットワーク24内のネットワーク処理デバイスへのアクセス権を得るのを防ぐことである。以下の説明では、ネットワークデバイスを多数のパケットであふれさせることに関連したDoS攻撃の一例について論じる。しかしながら、一つまたは少数の悪意あるパケットに関連した他のタイプの悪意ある攻撃も多数存在する。例えば、他の悪意ある攻撃は、ネットワーク処理デバイスプロトコルの通常のオペレーションを中断させる(disrupt)一つまたは複数のパケットに関連している可能性がある。ネットワーク処理デバイスまたはネットワークに対するこれらの攻撃はすべて、以下では通常、DoS攻撃と呼ばれ、それらはすべて本システムの範囲内に含まれる。
Denial of Service (DoS)
FIG. 3 illustrates how a DoS attack 16 can endanger the network processing device 406. In general, the purpose of preventing DoS attacks is to prevent malicious packets from gaining access to network processing devices within the private network 24. The following discussion discusses an example of a DoS attack associated with flooding a network device with a large number of packets. However, there are many other types of malicious attacks associated with one or a few malicious packets. For example, other malicious attacks may be associated with one or more packets that disrupt normal operation of the network processing device protocol. All of these attacks on network processing devices or networks are usually referred to below as DoS attacks and are all within the scope of the system.

図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 attack device 14 is usually, but not necessarily, operating outside the private network 24 and flooding the private network 24 with a large number of packets. In one example, the attacking computer 14 sends floods of Transfer Control Protocol (TCP) synchronization (SYN) packets 400 to a destination address in the private network 24. In another example, the attacker 14 sends a packet fragment 402 to a destination address in the private network 24. In either case, packet 16 causes one or more network devices 406 in private network 24 to maintain state 408 for each different received TCP SYN packet 400, and for each set of received packet fragments 402. State 410 is maintained.

TCP SYN攻撃400およびパケットフラグメント攻撃402は、実行可能性のある多数の異なるタイプのDoS攻撃の例に過ぎない。例えば、攻撃者は、TCP終了(FIN)パケットを送ったり、パケットフラグメントをオーバーラップさせたりすることで、ネットワークデバイスを停止させることもできる。別のポートに基づいたDoS攻撃では、ワームが私的ネットワーク24内のマシン内に配置される。このワームは、その後攻撃者14に命令され、当該私的ネットワーク24の内側から偽造メッセージ(bogus message)送る。このDoS攻撃は、インターネット・コントロール・メッセージ・プロトコル(ICMP)メッセージを介して開始されてもよい。   TCP SYN attack 400 and packet fragment attack 402 are just examples of many different types of DoS attacks that could be performed. For example, an attacker can stop a network device by sending a TCP End (FIN) packet or overlapping packet fragments. In a DoS attack based on another port, the worm is placed in a machine in the private network 24. The worm is then commanded by the attacker 14 to send a bogus message from inside the private network 24. This DoS attack may be initiated via an Internet Control Message Protocol (ICMP) message.

新しい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 TCP SYN packet 400 is received by the network processing device 406, a new TCP session state 408 is maintained and a corresponding TCP ACK message 404 is sent back to the sending device (the attacker 14). However, the attacker 14 ignores the TCP ACK reply 404 and continues to send new TCP SYN messages to the private network 24 instead. The attacker 14 may insert a forged source address in the TCP SYN message 400. In this case, since the network device 406 sends the TCP SYN ACK message 404 to another victim computer, the victim computer is forced to load the TCP SYN ACK message 404 flood.

このネットワーク処理デバイス406は、なんらかの所定の期間中、各TCP SYNメッセージ400に対応するTCP状態408を維持することを要求される。大量の偽造のTCP状態408を維持すると、ネットワークデバイス406内のリソースは、他の正当なIPトラフィックの処理速度がひどく落ちるか、その正当なIPトラフィックが停止するところまで使い果たされる。   This network processing device 406 is required to maintain a TCP state 408 corresponding to each TCP SYN message 400 for some predetermined period of time. Maintaining a large amount of counterfeit TCP state 408 causes the resources in network device 406 to be exhausted until other legitimate IP traffic is severely slowed down or stopped.

同様の筋書きで、攻撃者14は、関連したシーケンス番号を持つパケットフラグメント402を送ることもある。ネットワーク処理デバイス406は、シーケンス402内の各パケットフラグメントが受信され終わるか、なんらかのタイムアウト時間が終了するまで状態410を維持しなければならない。攻撃者14は、意図的に、パケットフラグメント402を当該シークエンスから除外する。これは、ネットワークデバイス406に、タイムアウト時間の持続期間中、パケットフラグメントのセットそれぞれに対する状態410を維持することを要求し、これにより、処理リソースを使い果たさせる。   In a similar scenario, the attacker 14 may send a packet fragment 402 with an associated sequence number. Network processing device 406 must maintain state 410 until each packet fragment in sequence 402 has been received or until some timeout period expires. The attacker 14 intentionally excludes the packet fragment 402 from the sequence. This requires the network device 406 to maintain a state 410 for each set of packet fragments for the duration of the timeout period, thereby exhausting processing resources.

これらのタイプの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 input packet 16. For example, the network processing device 406 identifies the destination address for all TCP SYN packets. TCP SYN packets destined for a specific destination address are excluded when the number of received packets exceeds a predetermined rate.

しかし、各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. Network processing device 406 is required to monitor all incoming packets for each possible DoS threat. For example, the network processing device 406 is required to identify each TCP SYN packet and each packet fragment. Even this process is severe. However, the network processing device 406 is also required to track the number and rate of received packets, and if necessary, also excludes similar types of packets that reach the DoS rate threshold. Is done. One problem is that current computer architectures lack the ability to perform these DoS operations at current network line rates.

図4に関して、ファイヤーウォール420は、固有のやり方でパケットのレート制限を行うことにより、効率的にDoS攻撃を識別するとともにDoS攻撃を防ぐ。以下の説明では、DoS攻撃の一部である可能性があるあらゆるパケットを、DoS候補パケットと呼ぶ。例えば、TCP SYNパケットは、DoS攻撃で使用されることがある。そのため、TCP SYNパケットは、ファイヤーウォール420にDoS候補パケットとして識別される。フラグメントパケットも実行可能性のあるDoS攻撃で使用されることがあるので、このパケットもファイヤーウォール420にDoS候補パケットとして識別される。   With reference to FIG. 4, the firewall 420 efficiently identifies DoS attacks and prevents DoS attacks by limiting the rate of packets in a unique manner. In the following description, any packet that may be part of a DoS attack is referred to as a DoS candidate packet. For example, TCP SYN packets may be used in DoS attacks. Therefore, the TCP SYN packet is identified as a DoS candidate packet by the firewall 420. Since a fragment packet may also be used in a feasible DoS attack, this packet is also identified as a DoS candidate packet by the firewall 420.

ファイヤーウォール420は、関連した宛先アドレスに係るDoS候補パケットのレート制限を行う。実行可能性のあるDoS攻撃それぞれに関して宛先アドレスの識別と管理を行うのには、大量の処理リソースが必要となる可能性がある。しかし、ファイヤーウォール420内で使用されるアーキテクチャは、従来のファイヤーウォールのアーキテクチャよりも高性能であり、より拡張性がある(scalable)ので、このアーキテクチャは、異なる多数のDoS攻撃を高いラインレートで監視しかつ除外することができる。   The firewall 420 limits the rate of DoS candidate packets related to the related destination address. Identifying and managing the destination address for each feasible DoS attack can require a large amount of processing resources. However, the architecture used within the firewall 420 is higher performance and more scalable than the traditional firewall architecture, so this architecture can handle many different DoS attacks at higher line rates. Can be monitored and excluded.

ゾーン (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 firewall 420 take into account the different interface zones that the policy manager has specified in advance when analyzing DoS threats.

例えば、第一のゾーン1は、インターフェイス426を介して公的ネットワーク12から受信される公的IPトラフィックと関連させてもよい。第二のゾーン2は、VPNトンネル424を介して私的ネットワーク12上で受信される中程度の信頼度の仮想私的ネットワーク(VPN)トラフィックと関連させてもよい。例えば、VPNトンネル424は、私的ネットワーク24と家庭用コンピュータ422の間に確立されてもよい。この家庭用コンピュータ422は、私的ネットワーク24を稼動している会社の従業員によって操作されてもよい。第三のゾーン3は、私的ネットワーク24の内部を出所とし、インターフェイス428を介して受信される高い信頼度を持つIPトラフィックと関連させてもよい。   For example, first zone 1 may be associated with public IP traffic received from public network 12 via interface 426. Second zone 2 may be associated with moderately reliable virtual private network (VPN) traffic received on private network 12 via VPN tunnel 424. For example, the VPN tunnel 424 may be established between the private network 24 and the home computer 422. This home computer 422 may be operated by employees of a company operating a private network 24. Third zone 3 may originate from the interior of private network 24 and be associated with highly reliable IP traffic received via interface 428.

各ゾーンは、異なる信頼のレベルと関連していてもよく、したがって、異なる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 firewall 420 for a specific period of time. Involved. Once the rate limit limit is reached, all additional packets with the same DoS type and the same destination address are excluded. For example, packets received from zone 1 via interface 426 are associated with the lowest reliability because they were received from untrusted sources via public network 12. Therefore, packets received from zone 1 may be assigned a lower DoS rate limit value (limit) compared to other zones.

ゾーン2は、恐らくは、パケットが既知のリソース422から受信されるので、中程度の信頼度をもつ。したがって、ゾーン2には、ゾーン1よりも高いDoSレート限界を割り当ててもよい。例えば、規定された期間にゾーン1を通過することが許可される同一の宛先アドレスを持つTCP SYNパケットよりも多くの同一の宛先を持つTCP SYNパケットが、規定された期間にゾーン2を通過することを許可される。この例では、インターフェイス428上で受信されるすべてのパケットは、私的ネットワーク24内に配置されているマシンからのものであるため、ゾーン3は、高い信頼度を持つ。したがって、ゾーン3で受信されるパケットには、さらに高いDoSレート限界を割り当ててもよい。   Zone 2 has medium reliability, presumably because the packet is received from a known resource 422. Therefore, Zone 2 may be assigned a higher DoS rate limit than Zone 1. For example, a TCP SYN packet with the same destination more than a TCP SYN packet with the same destination address allowed to pass through zone 1 for a specified period passes through zone 2 for a specified period Is allowed to. In this example, zone 3 is highly reliable because all packets received on interface 428 are from machines located in private network 24. Therefore, higher DoS rate limits may be assigned to packets received in zone 3.

受信されるパケットと関連付けられるゾーンは、送信元アドレスまたはポート情報によって識別されてもよい。例えば、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 RSP 100 or firewall 420 may identify the zone associated with an incoming packet based on the VLAN ID of the associated source address and the interface through which the packet is received. You may decide. The firewall 420 then manages the DoS attack based in part on the identified zone associated with the packet. For example, packets associated with potential DoS threats can be counted, managed, and rate limited according to their associated zones. This allows the firewall 420 to allocate DoS resources to different interfaces more efficiently according to the reliability associated with them. This will be described in more detail below.

図5に関して、図4に示されているファイヤーウォール420のある実施例は、DoS候補のパケットおよび非DoS候補のパケットを含んでいるかもしれない入力パケットストリーム440を受け取るプロセッサ442を有している。このプロセッサ420はまず、パケットストリーム440内のDoS攻撃と関連しているかもしれないパケット(DoS候補パケット)を識別する。例えば、プロセッサ442は、TCP SYNメッセージを含んでいるすべての入力パケットフラグメントまたは入力パケットをDoS候補パケットと識別してもよい。   With reference to FIG. 5, one embodiment of the firewall 420 shown in FIG. 4 includes a processor 442 that receives an input packet stream 440 that may include DoS candidate packets and non-DoS candidate packets. . The processor 420 first identifies packets (DoS candidate packets) that may be associated with a DoS attack in the packet stream 440. For example, the processor 442 may identify all incoming packet fragments or incoming packets that contain a TCP SYN message as DoS candidate packets.

プロセッサ442は、テーブル464にアクセスし、識別されたDoS候補パケットと関連しているゾーン468を特定する。例えば、プロセッサ442は、識別されたDoSパケット内のポート値をテーブル464のポート番号エントリー466と照合してもよい。このプロセッサはその後、テーブル464内のゾーン468を、適合したポート番号エントリー(matching port number entry)466と関連しているものとみなしてもよい。   The processor 442 accesses the table 464 and identifies the zone 468 associated with the identified DoS candidate packet. For example, the processor 442 may match the port value in the identified DoS packet with the port number entry 466 in the table 464. The processor may then consider zone 468 in table 464 as being associated with a matching port number entry 466.

プロセッサ442は、識別されたDoSパケットに関する宛先アドレス472と、関連しているゾーン値468を組み合わせたものをコンテントアドレッサブルメモリ(CAM) 444へのアドレスとして用いる。このCAM 444は、宛先アドレス値とゾーン値の組み合わせであるDoSエントリー445を収容している。CAM 444内のアドレス位置は、静的ランダムアクセスメモリ(SRAM)450へのポインタとして用いられる。   The processor 442 uses the combination of the destination address 472 for the identified DoS packet and the associated zone value 468 as an address to the content addressable memory (CAM) 444. This CAM 444 accommodates a DoS entry 445 that is a combination of a destination address value and a zone value. The address location in CAM 444 is used as a pointer to static random access memory (SRAM) 450.

SRAM450内のメモリ位置は、DoS攻撃フラグ452、タイムスタンプ454、ジェネレーション値456およびオフセット458を含むフィールドへと分割される。DoS攻撃フラグ452は、特定の宛先アドレスに関するパケットの数があらかじめ決められたDoSレート制限値を超えるたびに設定される。上述したように、DoSレート制限値は、異なるゾーン448に対してカスタマイズすることができる。   The memory location in SRAM 450 is divided into fields including DoS attack flag 452, time stamp 454, generation value 456, and offset 458. The DoS attack flag 452 is set every time the number of packets related to a specific destination address exceeds a predetermined DoS rate limit value. As described above, the DoS rate limit value can be customized for different zones 448.

タイムスタンプ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 time stamp 454 is set each time a new entry is added to the TCAM 444 and reset every time the age of the time stamp exceeds a predetermined DoS period. The generation value 456 is used by the processor 442 to allocate and manage DoS entries in the TCAM 444, SRAM 450, and dynamic random memory (DRAM) 462. The offset value 458 is used as a pointer to the DRAM 462. The DRAM 462 has a set of counters 460 that keep track of the number of packets for a particular destination address received by the firewall 420 within the DoS period.

プロセッサ442は、DoS攻撃の一部である可能性がある新しいDoS候補パケット474を識別する。新しく識別されたパケット474に関する宛先アドレス472およびゾーン値468は、CAM 444へのアドレスとして用いられる。新しいDoS候補パケット474は、今あるどのエントリーとも一致しないであろうから、プロセッサ442は、パケット474に対する新しいDoSエントリー445をCAM 444に加える。   The processor 442 identifies new DoS candidate packets 474 that may be part of a DoS attack. The destination address 472 and zone value 468 for the newly identified packet 474 is used as the address to the CAM 444. Since the new DoS candidate packet 474 will not match any existing entry, the processor 442 adds a new DoS entry 445 for the packet 474 to the CAM 444.

CAM 444内の新しいDoSエントリーに対応するDoS攻撃フラグ452はクリア(消去)され、タイムスタンプ454は、現在のタイム値へ設定される。ジェネレーション値456は、現在どのようなジェネレーションがプロセッサ442内で動作中であっても、以下の図6でより詳しく説明されるように設定される。プロセッサ442は、アドレスオフセット値458を用いて、DRAM 462内の対応するカウンタ460を1へインクリメントする。プロセッサ442は、その後、パケットストリーム440内の次のパケットを処理する。   The DoS attack flag 452 corresponding to the new DoS entry in the CAM 444 is cleared (erased), and the time stamp 454 is set to the current time value. The generation value 456 is set as described in more detail in FIG. 6 below, regardless of what generation is currently running in the processor 442. The processor 442 uses the address offset value 458 to increment the corresponding counter 460 in the DRAM 462 to 1. The processor 442 then processes the next packet in the packet stream 440.

パケットストリーム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 processor 442 allows these packets 441 to pass through the firewall 420 without undergoing any further DoS processing.

パケットストリーム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 CAM 444. For example, one or more TCP SYN packets or packet fragments with the same destination address may have been received by the firewall 420 prior to this within the same DoS period. As a result, the destination address 472 and zone 468 for the packet will match one of the entries in the CAM 444. The address 449 corresponding to the matched (matched) CAM entry 445 is then used as the address to the SRAM 450.

プロセッサ442は、まず、SRAM 450内のDoS攻撃フラグ452を確認する。DoS攻撃フラグ452が設定されている場合、プロセッサ442は、パケットストリーム440内の対応するパケットを除外する。必要であれば、プロセッサ442は、その際、タイムスタンプ454およびジェネレーション値456をアップデートしてもよい。   The processor 442 first checks the DoS attack flag 452 in the SRAM 450. If the DoS attack flag 452 is set, the processor 442 excludes the corresponding packet in the packet stream 440. If necessary, processor 442 may then update time stamp 454 and generation value 456.

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 DoS attack flag 452 is not set, the processor 442 allows the associated packet in the packet stream 440 to pass through the firewall 420. The processor 442 then updates the DoS status information in the SRAM 450 and DRAM 462. For example, the processor 442 increments the corresponding counter 460 in the DRAM 462 and then compares the timestamp 454 with the current time value. If the time stamp 454 is not too old, the corresponding value of the counter 460 in the DRAM 462 is validated and compared to the DoS rate limit value. If the counter value 460 is below the DoS rate limit value, the processor 442 proceeds to process the next packet in the packet stream 440.

タイムスタンプ454が現在のタイム値と比較された際に古すぎた場合、DRAM 462内の対応するカウント値460は、無効となっており(stale)、0へ再設定される。タイムスタンプ454も同様に現在のタイム値へと再設定される。これは、それぞれの所定の期間内にカウント460を効率的に再設定する。タイムスタンプ454が有効であり(古すぎない)かつDRAM462内のインクリメントされたカウント460がDoSレート制限値を上回っている場合、プロセッサ442は、対応するDoS攻撃フラグ452を設定する。これにより、プロセッサ442は、同一の宛先アドレスを持つ同様のパケットを除外することとなる。   If the timestamp 454 is too old when compared to the current time value, the corresponding count value 460 in the DRAM 462 is stale and reset to zero. Similarly, the time stamp 454 is reset to the current time value. This effectively resets the count 460 within each predetermined period. If time stamp 454 is valid (not too old) and incremented count 460 in DRAM 462 is above the DoS rate limit, processor 442 sets the corresponding DoS attack flag 452. As a result, the processor 442 excludes similar packets having the same destination address.

ジェネレーション (Generation)
ジェネレーション値456は、CAM 444、SRAM 450およびDRAM 462内のDoSエントリーを管理するために用いられる。図6の例に関して、CAM 444は、論理的に、四つの異なるジェネレーションセクション480へ分割される。しかし、これは一つの実施例に過ぎず、このシステムは、任意に設定可能なサイズを持った任意の数のジェネレーションセクションを持つように構成することができる。
Generation
Generation value 456 is used to manage DoS entries in CAM 444, SRAM 450 and DRAM 462. With respect to the example of FIG. 6, CAM 444 is logically divided into four different generation sections 480. However, this is only one example, and the system can be configured to have any number of generation sections with arbitrarily configurable sizes.

図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 processor 442 of FIG. 5 can identify and manage DoS attacks more efficiently by inserting and removing multiple DoS entries according to multiple generations 480. With reference to FIGS. 5-7, the processor 442 begins entering a DoS entry into the current generation 480 at operation 490. As shown in FIG. 6, the DoS entry 482 is entered into the current generation 0. In operation 492, the processor 442 removes one entry 484 from the next generation 1 for each entry 482 added to the current generation 0. This ensures that the CAM 444 always holds an available area when the processor 442 moves on to the next generation.

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 entry 482 may already exist in CAM 444. In this example, the processor 442 switches, in operation 494, the generation value 456 currently assigned to the existing DoS entry to that of the current generation. For example, suppose DoS entry 482 is received while processor 442 is operating within generation 0. This DoS entry 482 may match the existing DoS entry 489 that is currently assigned to generation 2. In operation 494, the processor 442 moves the DoS entry 489 from generation 2 to generation 0 (switch / switch). When processor 442 reassigns generation value 456 in SRAM 450 from 2 to 0, DoS entry 489 is logically moved to generation 0 instead of being physically moved to another location in CAM 444. You can understand that.

今ある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 CAM 444 for a relatively long period of time will not be discarded by the processor 442. For example, a DoS attack may last for a long time. Each newly received packet associated with the same DoS attack will update the existing DoS entry in CAM 444 to the current generation value. This is equivalent to an active DoS attack, while other old DoS entries that did not grow into DoS attacks and other old DoS entries that no longer correspond to active DoS attacks are removed from CAM 444. Ensure that DoS entries remain in CAM 444.

オペレーション496では、プロセッサ442は、いつ次のジェネレーションへの切り替えがなされるべきかを決定する。異なるイベントにより、プロセッサ442が次のジェネレーションへ移ることもある。プロセッサ442は、現在のジェネレーションがエントリーで満たされている場合、オペレーション498で、次のジェネレーションへ移ってもよい。これは、例えば、攻撃者が異なる宛先アドレスを持った多数のTCP SYNメッセージを送った場合に起こることがある。   In operation 496, the processor 442 determines when a switch to the next generation should be made. Different events may cause the processor 442 to move on to the next generation. The processor 442 may move to the next generation at operation 498 if the current generation is filled with entries. This can happen, for example, when an attacker sends a large number of TCP SYN messages with different destination addresses.

プロセッサ442は、所定の期間が終了した場合、オペレーション498内で、次のジェネレーションへ移ってもよい。これは、すべてのタイムスタンプ454(図5)が、プロセッサ442により追跡される現在の期間(time period)と対応することを保障する。例えば、DRAM 462内の関連しているカウント値と組み合わされているSRAM 450内のタイムスタンプ454は、現在受信中の異なる宛先アドレスに関するパケットのレートを決定する。タイムスタンプ期間が終了したら、プロセッサ442は、タイムスタンプ値454と、関連しているカウント値460の両方を再設定する必要がある。   The processor 442 may move to the next generation within the operation 498 when the predetermined period expires. This ensures that all time stamps 454 (FIG. 5) correspond to the current time period tracked by the processor 442. For example, the time stamp 454 in SRAM 450 combined with the associated count value in DRAM 462 determines the rate of packets for the different destination addresses currently being received. When the timestamp period expires, the processor 442 needs to reset both the timestamp value 454 and the associated count value 460.

しかし、現在のタイム値がプロセッサ442により使用され、ロールオーバーされ(roll-over)、ゼロにリセットされた後も、古いDoSエントリーがCAM 444内に残る可能性がある。この場合、プロセッサ442は、前のタイムスタンプ期間に対応するDRAM 462内のカウント460に、誤ってカウント値を加える可能性がある。これにより、カウンタ460が誤って複数のタイムスタンプ期間にわたってパケットをカウントし、DoS攻撃の誤検出に繋がる可能性がある。言い換えると、複数のタイムスタンプ期間パケットをカウントすると、実際のパケットのレートの誤表示(false indication)に繋がる。   However, the old DoS entry may remain in the CAM 444 after the current time value is used by the processor 442, rolled over, and reset to zero. In this case, the processor 442 may inadvertently add a count value to the count 460 in the DRAM 462 corresponding to the previous time stamp period. This may cause the counter 460 to erroneously count packets over a plurality of time stamp periods, leading to false detection of a DoS attack. In other words, counting a plurality of time stamp period packets leads to false indication of the actual packet rate.

この起こりうるロールオーバー問題を解決するために、プロセッサ442は、オペレーション496で、ある所定の期間の後、現在のジェネレーション内のエントリーの数に関わらず自動的に次のジェネレーションへ移る。この所定の期間は、ジェネレーションの総数によって増やされると(この例ではジェネレーションの総数は4である)、プロセッサ442によって用いられるロールオーバータイムスタンプ期間よりも少なくなる。   To solve this possible rollover problem, the processor 442 automatically moves to the next generation after a certain period of time, regardless of the number of entries in the current generation, in operation 496. If this predetermined period is increased by the total number of generations (in this example, the total number of generations is 4), it will be less than the rollover timestamp period used by the processor 442.

例えば、プロセッサ442は、4秒ごとにロールオーバーする現在のタイマーを保持してもよい。次のジェネレーションへ移るのに用いられる所定のタイムスタンプ期間は、0.5秒ごとに設定されてもよい。これは、CAM 444内のすべての停滞中のDoSエントリーが2秒ごとに取り除かれることを保障する。そのため、プロセッサ422は、SRAM 454内のすべてのタイムスタンプ454が同じタイムスタンプ期間に関連付けされるであろうことを保証する。また、これには、SRAM 450がタイムスタンプ454に対して使用するバイト数を減らすことができるという予想外の利点がある。言い換えると、このタイムスタンプ値454は、約2秒またはそれ以上の期間(時間)を追跡するのに十分なビット数だけを必要とする。   For example, the processor 442 may maintain a current timer that rolls over every 4 seconds. The predetermined time stamp period used to move to the next generation may be set every 0.5 seconds. This ensures that all stagnant DoS entries in CAM 444 are removed every 2 seconds. As such, processor 422 ensures that all timestamps 454 in SRAM 454 will be associated with the same timestamp period. This also has the unexpected advantage that the SRAM 450 can reduce the number of bytes used for the time stamp 454. In other words, this timestamp value 454 requires only a sufficient number of bits to track a period (time) of about 2 seconds or more.

オペレーション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 operation 496, the processor 442 continues to fill the current generation with new DoS entries, and the existing DoS entry to the current generation in operations 490-494. And keep reassigning. If at operation 496 either the size limit or the time stamp period has been reached, the processor 442 moves to the next generation at operation 498 and begins adding entries to the new generation. For example, the processor 442 begins to move the new DoS entry 486 to generation 1 and, accordingly, begins to remove the existing DoS entry 488 from the next generation 2.

合理的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 CAM 444, the associated counter 460 in DRAM 462 is incremented and the number of similar packets are tracked by time stamp 454. It may be necessary to determine if the threshold for DoS attacks has been reached. However, the time required to access DRAM 462 may delay DoS attack determination and subsequent packet exclusion. This may also delay processing of other packets that have passed through the firewall 420. The DoS attack flag 452 is used by the processor 442 to quickly identify DoS packets that are part of the current DoS attack.

図5および図8に関して、DoS攻撃フラグ452は、DoS攻撃を識別し、処理する上で避けられない遅れを減らすために、その他の処理オペレーションと合わせて使用される。オペレーション540では、プロセッサ442はパケットを受信する。プロセッサ442は、オペレーション542で、受信したパケットが、現在はDoSエントリーとしてCAM 444内には含まれていない新しい宛先アドレスおよびゾーンを有しているかどうか判定する。   5 and 8, the DoS attack flag 452 is used in conjunction with other processing operations to identify DoS attacks and reduce the inevitable delay in processing them. In operation 540, the processor 442 receives the packet. The processor 442 determines, at operation 542, whether the received packet has a new destination address and zone that is not currently included in the CAM 444 as a DoS entry.

CAM 444内に前から存在するエントリーが無い場合、パケットはすぐにファイヤーウォール420を通過することを許可される。そのようなパケットは、現時点では、CAM 444内で識別されないので、そのパケットは現在のDoS攻撃の一部足りえず、その後除外されることは無い。パケットが通過することを許可された後、プロセッサ442は、事後(パケットの通過を許可した後)、DoS管理オペレーションを実施する。これは、識別されたパケットに続く他のパケットが、無駄に遅らされることがないことを保障する。   If there is no pre-existing entry in CAM 444, the packet is allowed to pass through firewall 420 immediately. Such a packet is not currently identified in CAM 444, so it is not part of the current DoS attack and will not be excluded thereafter. After the packet is allowed to pass, the processor 442 performs a DoS management operation after the fact (after allowing the packet to pass). This ensures that other packets following the identified packet are not delayed in vain.

この「パケットの通過を許可した後」のメンテナンスでは、プロセッサ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, processor 422 adds a new DoS entry to the current generation at operation 546, as described above in connection with FIGS. Remove the DoS entry from the generation. At operation 550, the processor 442 clears the DoS attack flag 452 (if not already cleared), sets a new timestamp value 454 (provides), sets a current generation value 456 (provides), and DRAM 462 The corresponding counter 460 is incremented.

必要であれば、プロセッサ442は、オペレーション552で、現在のジェネレーションを変更する。例えば、上述したように、プロセッサ442は、現在のジェネレーション内がエントリーで満たされるか、所定のタイムスタンプ期間が終了したら、現在のジェネレーションを変更する。新しいDoSエントリーに対するタイムスタンプ454は、設定された(設けられた)だけなので、新しいDoSエントリーが現在のジェネレーションに対する現在のDoSエントリー限界に到達していても、タイムスタンプ期間は終了しない。   If necessary, processor 442 changes the current generation at operation 552. For example, as described above, the processor 442 changes the current generation when the current generation is filled with entries or when a predetermined time stamp period expires. Since the time stamp 454 for the new DoS entry is only set (provided), even if the new DoS entry reaches the current DoS entry limit for the current generation, the time stamp period does not expire.

オペレーション542に戻るが、プロセッサ442は、CAM 444内に現在存在するDoSエントリーに対応する宛先アドレスおよびゾーンを有しているパケットを受信するかもしれない。適合したCAMエントリーに対応するSRAM 450内のDoS攻撃フラグ452は、オペレーション560で、すぐにプロセッサ442により読み込まれる。対応するDoS攻撃フラグ452が設定されて(設けられて)いる場合、このパケットは、オペレーション580ですぐに除外される。このパケットは、該パケットを出力せずに、最終的にメモリ内で当該パケットを上書きすることで除去されてもよい。   Returning to operation 542, the processor 442 may receive a packet having a destination address and zone corresponding to the DoS entry currently present in the CAM 444. The DoS attack flag 452 in the SRAM 450 corresponding to the matched CAM entry is immediately read by the processor 442 at operation 560. If the corresponding DoS attack flag 452 is set (provided), the packet is immediately excluded in operation 580. This packet may be removed by finally overwriting the packet in the memory without outputting the packet.

必要であれば、プロセッサ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 processor 442 updates the information in the SRAM 450 in operations 582-586. However, since the DoS attack flag 452 is already set, the processor 442 need not increment the associated counter in the DRAM 462. For example, at operation 582, the processor 442 may update the generation value 456 for the DoS entry with the current generation. Subsequently, in operation 584, the processor 442 determines whether the time stamp 454 has expired. For example, if the time difference between the current timestamp value being tracked by the processor 442 and the timestamp 454 is longer than a predetermined period (eg, one second), the timestamp 454 is reset to the current timestamp value. Is done. Accordingly, at operation 586, the associated counter value 460 and DoS attack flag 452 may be cleared.

タイムスタンプ454はごく稀に、(例えば一秒ごとに)再設定されることが必要となることがあるので、オペレーション586で、DRAM 462内のカウント値は、ごく稀にアクセスされることが必要となる。DRAM 462は、SRAM 450より長いアクセス時間を必要とするので、これは特に重要である。したがって、プロセッサ442がDoS管理のために必要とする時間は、少なくなる。一方で、DoS管理オペレーションは、パケットがオペレーション580で除外された後実行されるので、他の入力パケット440(図5)は、プロセッサ442によって無駄に遅らされることはない。これによって、ファイヤーウォール420は、DoS攻撃中に、他の正当なパケットの処理をほとんど遅らせることなく、ギガビット以上のラインレート(回線速度)でパケットをフィルタリングすることができる。   Since the time stamp 454 may need to be reset very rarely (eg, every second), the count value in DRAM 462 needs to be accessed very rarely at operation 586. It becomes. This is particularly important because DRAM 462 requires a longer access time than SRAM 450. Accordingly, the time required for processor 442 for DoS management is reduced. On the other hand, since the DoS management operation is performed after the packet is excluded in operation 580, the other incoming packets 440 (FIG. 5) are not wasted by the processor 442. As a result, the firewall 420 can filter packets at a line rate (line speed) of gigabits or more without substantially delaying processing of other legitimate packets during a DoS attack.

オペレーション560では、パケットは、CAM 444内には存在するが、関連しているDoS攻撃フラグ452は設定されていないDoSエントリーを有しているかもしれない。オペレーション562で、パケットは、ファイヤーウォール420を通過することを許可される。必要であれば、プロセッサ442は、オペレーション564で、CAM 444内の適合したDoSエントリーに対するジェネレーション情報456をアップデートする。例えば、SRAM 450内で識別(注目)されている現在のジェネレーション456は、現在のジェネレーションへ設定される。必要であればプロセッサ442はオペレーション564で、図6および7に関して前述したように、ジェネレーション期間が終了するか、現在のジェネレーション内のジェネレーションエントリーの最大数が所定の限界数に到達したら、現在のジェネレーションを変更してもよい。   In operation 560, the packet may have a DoS entry that is present in CAM 444 but the associated DoS attack flag 452 is not set. In operation 562, the packet is allowed to pass through the firewall 420. If necessary, the processor 442 updates the generation information 456 for the matched DoS entry in the CAM 444 at operation 564. For example, the current generation 456 identified (attention) in the SRAM 450 is set to the current generation. If necessary, the processor 442 at operation 564, as described above with respect to FIGS. 6 and 7, when the generation period expires or when the maximum number of generation entries in the current generation reaches a predetermined limit, the current generation. May be changed.

今あるDoSエントリーに対するカウンタ460は、オペレーション566で、インクリメントされ、プロセッサ442は、オペレーション568で、カウント値460および関連しているタイムスタンプ454の古さを確認する。オペレーション570で、タイムスタンプ値がタイムスタンプ期間の値よりも大きくなっている(タイムスタンプが期限切れのタイムスタンプである)場合、カウント460およびタイムスタンプ454はオペレーション572で再設定される。   The counter 460 for the existing DoS entry is incremented at operation 566 and the processor 442 verifies the age of the count value 460 and the associated timestamp 454 at operation 568. In operation 570, if the timestamp value is greater than the timestamp duration value (the timestamp is an expired timestamp), the count 460 and timestamp 454 are reset in operation 572.

オペレーション570でタイムスタンプが有効である場合、プロセッサ442はオペレーション574で、カウンタ460がDoS攻撃用のスレッショルドを超えているかどうか判定する。カウンタ460がDoS攻撃用のスレッショルドを超えていない場合、プロセッサ442は、オペレーション540へ戻り、起こりえる(潜在的な)DoS攻撃に対して識別された次のDoS候補パケットを処理する。カウンタ460がDoS攻撃用のスレッショルドを超えている場合、続いてオペレーション576で、DoS攻撃フラグ452が、設定される。   If the time stamp is valid at operation 570, the processor 442 determines at operation 574 whether the counter 460 has exceeded the threshold for DoS attacks. If the counter 460 has not exceeded the threshold for DoS attacks, the processor 442 returns to operation 540 to process the next DoS candidate packet identified for a possible (potential) DoS attack. If the counter 460 exceeds the threshold for DoS attacks, then in operation 576, the DoS attack flag 452 is set.

ある実施例では、DoS攻撃フラグ452は、関連しているパケットがファイヤーウォール420を通過した後に設定されることに注意されたし。この追加の1パケットは、通常、私的ネットワーク24(図3)内の対象のマシンのオペレーションに支障をきたすほどのものではない。一方で、DoS管理オペレーションを完了するのを待つ必要なく、パケットにファイヤーウォール420を通過させる機能は、ファイヤーウォールの性能を向上させる。さらに、上述したオペレーションは、ありえるDoS攻撃(DoS候補パケット)と関連しているパケットに対してのみ実行されてもよいので、DoSの管理および監視に必要となる処理の量は、すべての受信したパケットを、ありえるDoS攻撃に関して処理する他のファイヤーウォールアーキテクチャよりも大幅に少なくなる。   Note that in one embodiment, the DoS attack flag 452 is set after the associated packet has passed through the firewall 420. This additional one packet is usually not so detrimental to the operation of the subject machine in the private network 24 (FIG. 3). On the other hand, the ability to pass packets through firewall 420 without having to wait for DoS management operations to complete improves the performance of the firewall. In addition, the operations described above may only be performed on packets that are associated with possible DoS attacks (DoS candidate packets), so the amount of processing required for DoS management and monitoring is all received. Significantly less than other firewall architectures that handle packets for possible DoS attacks.

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 processor 442 may be used to implement the firewall system described above. However, to further improve performance, the processor 442 in one embodiment is implemented using the reconfigurable semantic processor (RSP) 100 described above in FIGS. 2A-2C. FIG. 9 shows in more detail how RSP 100 is used to prevent DoS. For ease of explanation, some of the processing components in RSP 100 described above in FIGS. 2A-2C are not shown in FIG.

入力パケット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オペレーションを実行させる。   Input packet 600 is received in input buffer 140. The DXP 180 has a grammar in the associated parser table 170 (FIG. 2A) that identifies a packet 600 that may be associated with a potential DoS attack (DoS candidate packet). For example, the parser grammar may identify any incoming packet 600 that includes TCP SYN messages, TCP FIN messages, packet fragments, and the like. When the DoS candidate packet is identified, the DXP 180 sends a DoS identification message 602 to the SPU 200. This message 602 activates the SEP code 620 executed by the SPU 200 from the SCT 210. DoS SEP code 620 causes SPU 200 to perform the different DoS operations described above in connection with FIGS. 3-8.

メモリサブシステム215は、以前図5において示したDRAM 462、CAM 444およびSRAM 450を収容している。ある実施例におけるアレイマシンコンテキストデータメモリ(AMCD)230は、ハッシュ機能(ハッシング関数)またはコンテントアドレッサブルメモリ(CAM)444を介してDRAM 462またはSRAM 450内のデータにアクセスするために用いられる。   Memory subsystem 215 contains DRAM 462, CAM 444 and SRAM 450 previously shown in FIG. Array machine context data memory (AMCD) 230 in one embodiment is used to access data in DRAM 462 or SRAM 450 via hash function (hashing function) or content addressable memory (CAM) 444.

AMCD 230は、それぞれがCAM 444内のエントリーと関連しているビット605を含んでいるフリーテーブル604を有している。CAM 444内の使用されていないエントリーはすべて、フリーテーブル604内で0ビット605として表され、CAM 444内の有効なDoSエントリーはすべて、フリーテーブル604内で関連している1ビット605として表される。AMCD 320は、フリーテーブル604内の最初の0ビットを識別するSPU 200からのファインド・ファースト・ゼロ(FFZ)命令に対応する。   AMCD 230 has a free table 604 that includes bits 605 that are each associated with an entry in CAM 444. All unused entries in CAM 444 are represented as 0 bit 605 in free table 604, and all valid DoS entries in CAM 444 are represented as associated 1 bit 605. The AMCD 320 corresponds to a find first zero (FFZ) instruction from SPU 200 that identifies the first 0 bits in free table 604.

新しい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 CAM 444 to load a new DoS entry, SPU 200 executes an FFZ instruction on free table 604. The FFZ instruction returns the position of the first 0 bit in the free table 604. The 0 bit is then used as a pointer to the corresponding entry in CAM 444. SPU 200 loads the destination address and zone for the new packet to the destination location identified in CAM 444.

図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 CAM 444, while other DoS entries are removed from the new generation. SPU 200 uses generation table 608 to quickly identify which entries in CAM 444 should be removed from the new generation. Each generation in CAM 444 has an associated generation table 608A-D. Each valid DoS entry associated with a particular generation in CAM 444 has a corresponding set of 0 bits in the associated generation table 608. For example, the third entry in CAM 444 contains a DoS entry associated with generation 0. Therefore, the SPU 200 sets the third bit of the generation table 608A to 0.

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 generation 0, SPU 200 performs an FFZ operation on generation table 608A. The third bit in generation table 608A is identified and then used by SPU 200 to invalidate the corresponding third DoS entry in CAM 444. For example, the SPU 200 sets the third bit in the generation table 608A to 1 and sets the third bit in the free table 604 to 0. Of course, this is just one example of how tables 604 and 608 operate. Other table configurations can be used as well.

上述したように、CAM 444内の有効なエントリーを識別するとともにCAM 444からどのエントリーを取り除くべきかを識別するこれらのDoS管理オペレーションは、SPU 200が関連しているパケットをすでに除去し終わっているか、SPU 200がすでに、関連しているパケットにRSP 100を通過することを許可している場合、実行することができる。   As mentioned above, these DoS management operations that identify valid entries in CAM 444 and which entries to remove from CAM 444 have already been removed by SPU 200. , If the SPU 200 already allows the associated packet to pass through the RSP 100, this can be done.

また、メモリサブシステム215は、すでにポリシーマネージャーによって識別されているゾーンを識別するために、SPU 200によって用いられるテーブル606を有している。例えば、パケットは、DXP 180によって識別されたポート番号を有していてもよい。SPU 200は、このポート番号をテーブル606内のパケットタグ610Aと比較し、パケットを受信しているゾーン610Bを識別してもよい。テーブル606は、DoS攻撃を識別するための各ゾーンと関連しているパケットレート610Cを含んでいてもよい。タイマー612は、SPU 200がSRAM 450内の各DoSエントリーに対するタイムスタンプを生成するために用いられ、さらに、SPU 200が各タイムスタンプに対するタイムスタンプ期間がいつ終了するかを判定するために用いられる。ジェネレーションテーブル614は、現在のジェネレーションを識別する。   The memory subsystem 215 also has a table 606 used by the SPU 200 to identify zones that have already been identified by the policy manager. For example, the packet may have a port number identified by DXP 180. The SPU 200 may compare this port number with the packet tag 610A in the table 606 to identify the zone 610B receiving the packet. Table 606 may include a packet rate 610C associated with each zone for identifying DoS attacks. The timer 612 is used by the SPU 200 to generate a time stamp for each DoS entry in the SRAM 450, and is further used by the SPU 200 to determine when the time stamp period for each time stamp expires. Generation table 614 identifies the current generation.

RSP 100は、偽造されたIPアドレスを有しているあらゆるパケットを識別して、廃棄することもできる。例えば、IPアドレスのセットは、マルチキャスト宛先アドレスとして保存される。保存されたマルチキャストアドレスに対応する送信元アドレスを持っている受信されたパケットはいずれも、DXP 180によって検出され、すぐに除去することができる。   The RSP 100 can also identify and discard any packet that has a forged IP address. For example, a set of IP addresses is stored as a multicast destination address. Any received packet with a source address corresponding to the stored multicast address can be detected by the DXP 180 and removed immediately.

図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 RSP 100 performs the DoS operations described above. Referring generally to FIG. 9 and with particular reference to FIGS. 10 and 11, in operation 650, DXP 180 analyzes the incoming packet 600. The grammar in parser table 170 is also used by DXP 180 to identify DoS candidate packets in operation 652. At the same time, DXP 180 may instruct SPU 200 to store input packet 600 in DRAM 462 or temporarily hold the packet in input buffer 140. In operation 654, DXP 180 also identifies the destination address for the packet and the zone in which the packet was received.

DoS候補パケットが識別されると、DXP 180はオペレーション656で、SPU 200に、必要とされるDoSオペレーションと関連しているDoS SEPコード620をロードするように信号を送る。例えば、SEPコード620は、識別されたTCP SYNパケットまたは識別されたパケットフラグメントと関連している特定の種類のDoSオペレーションと関連していてもよい。   Once the DoS candidate packet is identified, DXP 180 signals in operation 656 to load SPU 200 with DoS SEP code 620 associated with the required DoS operation. For example, the SEP code 620 may be associated with a particular type of DoS operation associated with an identified TCP SYN packet or an identified packet fragment.

この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 compares the identified destination address and associated zone information with entries in the CAM 444 at operation 658. In operation 660, if there is a corresponding DoS entry in CAM 444, the SPU 200 permits the packet to pass through the firewall in operation 662. This simply means that the SPU 200 continues with any other firewall operations required for the corresponding packet in DRAM 462 before sending the packet to the output buffer 150. That is, if the packet is not yet stored in DRAM 462, SPU 200 may allow that packet in input buffer 140 to be stored in DRAM 462 for further processing. .

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内のカウント情報をアップデートする。   SPU 200 then performs any required DoS management. For example, the SPU 200 reads the table 614 in the AMCD 320 at operation 664 to determine which generation is currently operating for the associated DoS operation. The SPU 200 also reads the tables 604 and 608 and determines where in the CAM 444 new DoS entries are added and which DoS entries are removed from the new generation. In operation 666, SPU 200 updates CAM 444 with the new DoS entry and reads the content at the corresponding memory location in SRAM 450. Finally, in operation 668, SPU 200 updates the time stamp and generation information in SRAM 450 and the count information in 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 CAM 444, SPU 200 reads the corresponding memory location in SRAM 450 at operation 700. In operation 702, the SPU 200 checks whether the DoS attack flag is set. If the DoS attack flag is set, the SPU immediately removes the packet from DRAM 462 or input buffer 140 in operation 704. For example, the SPU 200 may set a drop flag in the DRAM 462 indicating that the packet is invalid.

この無効なパケットは、その後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 DRAM 462 and is eventually overwritten with other data. If not already stored in DRAM 462, the packet is removed from input buffer 140. If the DoS attack flag is not set, the SPU 200 immediately releases the packet for further processing in operation 706. For example, the packet may be sent immediately from the input buffer 140 to a specific location in the DRAM 462. If already in DRAM 462, the packet may be passed to another SPU 200 for further firewall processing, or sent to output buffer 150 if no further firewall processing is required. Alternatively, the SPU 200 may send the packet from the DRAM 462 to the recirculation buffer 160 for re-analysis by the DXP 180. For example, the DXP 180 may identify other content associated with other firewall operations in the packet.

オペレーション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 operation 708, the SPU 200 updates the information in the SRAM 450 and, if necessary, increments the associated count 460 in the DRAM 462. SPU 200 then updates any necessary information in tables 604, 606, 608 and 614 in operation 710. SPU 200 then waits for a new SEP instruction 602 from DXP 180.

Integrated firewall / routing management
(Unified Policy Management)
With reference to FIG. 12, the firewall 804 operates between the first network 800 and the second network. The firewall 804 provides various network interface operations. For example, in addition to DoS attack identification and filtering as described above, the firewall performs packet translation between different network formats (eg, between IP version 4 (IPv4) and IP version 6 (IPv6)). Or you may need to perform a translation (Network Address Translation (NAT)) between a public IP address and a private IP address. This firewall 804 may be required to perform other virus detection and security operations as well.

他の分離したネットワークコンピュータデバイス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 firewall 804 be routed or switched. For example, a packet received from router / switch 806 may then be further sent to other routers or switches 808 that send the packet to other network processing devices in network 812. Similarly, the router / switch 806 may route the packet to an endpoint such as a server 810 or a personal computer (PC) 814.

この従来のアーキテクチャに関する問題は、ファイヤーウォール804およびルーティングデバイス806が独立して(autonomously)動作することである。このため、各デバイス804および806に対して別々の処理と別々のメモリデバイスが必要となる。これは、周辺機器のハードウェアコストを増やすだけではなく、拡張性も制限する上、これらの周辺機器がパケットを要求されるラインレートで処理するのを妨げるかもしれない。   The problem with this traditional architecture is that the firewall 804 and the routing device 806 operate autonomously. This requires separate processing and separate memory devices for each device 804 and 806. This not only increases the hardware cost of peripheral devices, but also limits scalability, and may prevent these peripheral devices from processing packets at the required line rate.

例えば、ファイヤーウォール804は、ありえる(possible)TCP SYNパケットに関するすべての入力パケットを監視するように要求されるかもしれない。上述したように、これは、ファイヤーウォール804に、各入力パケットに関して宛先アドレスを識別することを要求するかもしれない。DoS攻撃の一部ではないTCP SYNパケットは、その後ルーター806へ送られる。ルーター806は該パケットを適切な宛先へルーティングするために、その後再び、ファイヤーウォール804から受け取った複数のパケット805の宛先アドレスを見つけなくてはならない。したがって、各ネットワーク処理デバイス804および806は、同一の複数のパケットに対していくつかの同一のパケット処理オペレーションを実行するように要求される。その結果、各デバイス804および806は、別々のパケット状態やパケットバッファなどを維持しなければならない。これは、上述したように、ネットワーク処理デバイスの全体的な拡張性および処理能力を制限する。   For example, the firewall 804 may be required to monitor all incoming packets for possible TCP SYN packets. As described above, this may require the firewall 804 to identify the destination address for each incoming packet. TCP SYN packets that are not part of the DoS attack are then sent to the router 806. Router 806 must then find the destination addresses of multiple packets 805 received from firewall 804 again to route the packet to the appropriate destination. Accordingly, each network processing device 804 and 806 is required to perform several identical packet processing operations on the same multiple packets. As a result, each device 804 and 806 must maintain a separate packet state, packet buffer, and the like. This limits the overall scalability and processing power of the network processing device, as described above.

図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 network processing device 820. In one example, the UPM integrates traditional firewall and peripheral operations with packet transmission operations. Until now, this packet transmission operation has been executed by operating different processors independently. In one embodiment, a unique access control list (ACL) table is used by processor 822 to provide a variety of different UPM operations.

プロセッサ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 processor 822 receives the input packet stream 802 and then identifies a predicate set 854 associated with the individual packet 821. This predicate set 854 is depicted in more detail below in FIG. 14, but in general may be any information in the received packet as long as it relates to a firewall operation or a transmission operation. For example, the predicate set 854 may include, but is not limited to, an IP address, a TCP port number, an IP protocol identifier, and the like. In another unique aspect of the present invention, the predicate set 854 is a more advanced open system interconnect (Open System Interconnect) as well as other application layer information (eg, accessory identifiers and other text documents). OSI) layer information (for example, Session Initialization Protocol (SIP) information, Unuversal Resource Locator (URL) information, Simple Mail Transfer Protocol (SMTP) information, Hypertext Transfer Protocol (HTTP) information, File Transfer Protocol (FTP ) Information) etc.

アクセス制御リスト(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 firewall policies ACL 848 may be associated with different denial of service (DoS) operations that determine whether incoming packets 821 are allowed to pass through network processing device 820. The firewall policy ACL 848 provides other packet translation, authentication and filtering operations that may need to be performed by the network processing device 820 (eg, network address translation (NAT), virus detection and filtering, IP For example, conversion between versions).

別の特に独特の態様では、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. FIB 842 may belong to a separate section of ACL table 840, may be integrated with a portion of firewall policy ACL 848, described in more detail below, or both.

テーブル840内のACLエントリーは、プロセッサ822に、関連しているパケットがネットワーク処理デバイス820を通過することを許可もしくは拒否するように命令するアクション852も含んでいる。他のACLアクション852は、該関連しているパケットを特定の宛先に向けたり、さらなる処理のためにプロセッサ822へ向けたりしてもよい。他の状況では、ファイヤーウォールポリシーアクション852は、プロセッサ822に、当該関連しているパケット821を特定の出力ポート846へルーティングするように命令してもよい。   The ACL entry in table 840 also includes an action 852 that instructs processor 822 to allow or deny the associated packet from passing through network processing device 820. Other ACL actions 852 may direct the associated packet to a specific destination or to the processor 822 for further processing. In other situations, the firewall policy action 852 may instruct the processor 822 to route the associated packet 821 to a particular output port 846.

テーブル840内のファイヤーウォールポリシーACL 848とFIB 842の組み合わせは、通常は同一のネットワーク処理デバイス820内で実行されることはない様々な異なるUMPオペレーションを提供する。例えば、UPMオペレーションの小さなサブセットには、DoSまたは侵入検出と関連して上述したように、パケット838を取り除くことが含まれる。ネットワーク処理デバイス820は、パケット824が宛先アドレスへ送られる前にパケット824を修正したり、タグ付けしたりすることもできる。例えば、パケット824は、特定のチャネル826へとカプセル化されたり、特定のQoSレベルでタグ付けされたりしてもよい。   The combination of firewall policies ACL 848 and FIB 842 in table 840 provides a variety of different UMP operations that are not normally performed within the same network processing device 820. For example, a small subset of UPM operations includes removing packets 838 as described above in connection with DoS or intrusion detection. The network processing device 820 can also modify or tag the packet 824 before it is sent to the destination address. For example, the packet 824 may be encapsulated into a specific channel 826 or tagged with a specific QoS level.

他の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 ACL 840 may instruct the processor 822 to record statistics of any packets 830 that have been passed or removed in the server 828. As briefly described above for other UPM operations, an entry in the ACL table 840 may cause the processor 822 to send the packet 834 to a different subnetwork 832 or device 836 according to different firewall policy metrics. For example, only packets 834 containing a special HTTP session may be routed to server 836 and all remaining packets may be routed to subnet 832.

以上の図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 UPM system 820 can perform integrated layer 2 switching and / or layer 3 routing operations combined with other firewall policy metrics, as described in more detail below. You will understand 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 processor 822 are output by the CAM.

ACLテーブル840内の第一のエントリー860は、宛先IPアドレス述語860A、送信元IPアドレス述語860B、TCPポート番号述語860C、確立したTCPセッション述語860Dおよび許可アクション860Eを含んでいる。この例では、ACL860はACLテーブル840内の第一のエントリーである。もちろん、どのようなシークエンスおよび組み合わせのACLエントリーをACLテーブル840へロードしてもよい。   The first entry 860 in the ACL table 840 includes a destination IP address predicate 860A, a source IP address predicate 860B, a TCP port number predicate 860C, an established TCP session predicate 860D, and an allow action 860E. In this example, ACL 860 is the first entry in ACL table 840. Of course, any sequence and combination of ACL entries may be loaded into the ACL table 840.

関連しているアクション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 processor 822 matches the predicates 860A-860D. In this example, ACL table 840 indicates that the destination IP address for input packet 821 (FIG. 13) matches the value in predicate 860A and the source IP address for input packet 821 (FIG. 13) is in predicate 860B. When the value matches, the permission action 860E is output. The IP addresses identified within predicates 860A and 860B may include only subnet addresses associated with complete source and destination IP addresses. Other bits in the IP address may be masked and output as a “ignore” value, similar to the way that the subnet mask is currently used in the routing table.

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 entry 860, packet 821 (FIG. 13) must also have an associated TCP port number corresponding to predicate 860C. Note that no source qualifier and destination qualifier are associated with the TCP port number predicate 860C. This means that either the same source TCP port number C or the same destination TCP port number C in the packet 821 matches the predicate 860C. Finally, in order to match ACL entry 860, input packet 821 must be part of an already established TCP session as required by established TCP predicate 860B. Predicate 860D may simply be a flag in predicate set 854 that is set by processor 822 when it is determined that input packet 821 is part of an already established TCP session. As such, ACL entry 860 will not match a packet containing a TCP SYN message attempting to establish a new TCP session.

次の二つの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 entries 862 and 864 are associated with the firewall policy associated with denial of service (DoS) attacks. In order to match ACL entry 862, the address in incoming packet 821 must match destination IP address predicate 862A and source IP address predicate 862B, respectively. In addition, input packet 821 must also be a TCP packet as required by type TCP predicate 862C. ACL 862 associates a specific destination IP address and source IP address for the TCP packet with a TCP DoS action 862D corresponding to the specific zone as described above in connection with FIG. Accordingly, action 862D may instruct processor 822 to perform a DoS operation as described above in connection with FIGS. 4-11 using a threshold for a particular packet rate corresponding to zone 1. .

ACLエントリー864は、TCP DoSアクション864Dと関連しており、宛先IPアドレス述語862Aと同一の宛先IPアドレス述語864Aを含んでいる。しかし、述語864Bは、送信元IPアドレス述語862Bとは異なる送信元IPアドレスCを含んでいる。これは、異なるネットワークインターフェイスから受信したパケットに対応する。したがって、ACLアクション864Dは、異なる対応するゾーン3に対するTCP DoSオペレーションのためのものである。そのため、アクション864Dを受信したプロセッサ822は、DoS攻撃を判定するためにことなるパケットレート用のスレッショルドを用いてもよい。   ACL entry 864 is associated with TCP DoS action 864D and includes a destination IP address predicate 864A identical to destination IP address predicate 862A. However, the predicate 864B includes a source IP address C different from the source IP address predicate 862B. This corresponds to packets received from different network interfaces. Thus, ACL action 864D is for TCP DoS operations for different corresponding zones 3. Therefore, the processor 822 that has received the action 864D may use a threshold for a different packet rate in order to determine a DoS attack.

ACLエントリー866は、インターネットプロトコルバージョン4(IPv4)からインターネットプロトコルバージョン6(IPv6)への変換に関連している。例えば、入力パケット821は、IPv6を用いて動作するネットワーク上で受信されてもよい。一方で、ネットワーク処理デバイス820のもう一方の側で動作しているネットワークはIPv4を用いてもよい。したがって、ネットワーク処理デバイス820は、すべてのIPv6パケットをIPv4パケットに変換する必要があるかもしれない。   ACL entry 866 relates to conversion from Internet Protocol version 4 (IPv4) to Internet Protocol version 6 (IPv6). For example, the input packet 821 may be received on a network that operates using IPv6. On the other hand, the network operating on the other side of the network processing device 820 may use IPv4. Accordingly, the network processing device 820 may need to convert all IPv6 packets to IPv4 packets.

入力パケット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 input packet 821 recognizes the packet as IPv4 or IPv6. The processor 822 extracts the destination IP address and IP version identifier in the IP type field from the packet 821 and matches the format of this information to the format of the predicate set 854 applied to the ACL table 840. If predicate set 854 matches predicates 866A and 866B in ACL entry 866, processor 822 receives XLATEIPv6 action 866C. The XLATEIPv6 action 866C instructs the processor 822 to convert the input IPv6 packet 821 to IPv4 using a specific rule 5. For example, the IPv6-rule 5 may encapsulate the IPv6 packet into the IPv4 header in the processor 822 or divide a part of the IPv6 address into different company codes and host codes included in the IPv4 header. This conversion between IPv6 and IPv4 is shown in more detail in FIG.

ACLエントリー868および870は、ルーティングオペレーションまたはスイッチングオペレーションに基づいたポリシーと関連付けされている。ACLエントリー868は、ファイヤーウォールポリシーメトリックス868Bと組み合わされる転送情報ベース(FIB)ルーティング基準868Aおよび868Cを含んでいる。同様に、ACLエントリー870は、ファイヤーウォールポリシーメトリックス870Bと組み合わされるFIBルーティング基準870Aおよび870Cを含んでいる。これらのACLエントリー868および870は、ネットワーク処理デバイス820が、IP宛先アドレスおよびファイヤーウォールポリシーメトリックスの両方に基づいてパケットを異なるポートにルーティングまたはスイッチングすることを可能にする。   ACL entries 868 and 870 are associated with policies based on routing or switching operations. ACL entry 868 includes forwarding information base (FIB) routing criteria 868A and 868C combined with firewall policy metrics 868B. Similarly, ACL entry 870 includes FIB routing criteria 870A and 870C combined with firewall policy metrics 870B. These ACL entries 868 and 870 allow the network processing device 820 to route or switch packets to different ports based on both IP destination address and firewall policy metrics.

例えば、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, ACL entry 868 may include send action 868C. This send action 868C instructs the processor 822 to output the output packet 821 to port 3 for TCP packet type 868B having destination IP address G. On the other hand, the ACL entry 870 instructs the processor 822 to send a UDP packet type 870B having the same destination IP address to a different output port 4. Routing ACLs based on these policies may be used, for example, to route TCP bus threats to specific processing devices for further DoS processing. On the other hand, the UDP packet is routed to the destination address corresponding to the predicate 870A. Of course, the entries in ACL table 840 are just one example of the various ACLs that can be used to implement integrated policy management.

図15は、図13のネットワーク処理デバイス820がどのようにしてUPMを実施するのかをより詳しく説明している。プロセッサ822は、オペレーション880で、入力パケット821を受信し、オペレーション882で入力パケットから述語セット854を生成する。例えば、プロセッサ822は、所定の順番で所定のIPパケットフィールドのセットの形式を述語の形式に合わせる。IPパケットフィールドの一つが入力パケット821内に存在しない場合、該リスト内の次のパケットフィールドは抽出され、その後それ以前に抽出され、フォーマット済みの述語と組み合わされる。   FIG. 15 illustrates in more detail how the network processing device 820 of FIG. 13 implements UPM. The processor 822 receives the input packet 821 at operation 880 and generates a predicate set 854 from the input packet at operation 882. For example, the processor 822 matches the format of a predetermined set of IP packet fields with the format of the predicate in a predetermined order. If one of the IP packet fields is not present in the incoming packet 821, the next packet field in the list is extracted and then extracted before and combined with the formatted predicate.

プロセッサ822は、オペレーション884で、述語セット854をACLテーブル840へ適用し、オペレーション886で、ACLテーブル840内のマッチした述語エントリーから送り返されたアクションを受け取り、それを実行する。簡単のため、図15では、三つのアクションカテゴリーだけがACLテーブル840から返ってくるものとして示されている。しかし、何個の異なるアクションをACLエントリーに構成してもよい。オペレーション892で、除外(除去)アクション852がACLテーブル840から送り返された場合、プロセッサ822は、オペレーション900で当該パケットを廃棄する。プロセッサ822はオペレーション902で、次の入力パケット821に対するオペレーションを開始するまでは、除外(除去)されたパケットに関するどのような統計情報を記録してもよい。   The processor 822 applies the predicate set 854 to the ACL table 840 at operation 884 and receives and executes the action sent back from the matched predicate entry in the ACL table 840 at operation 886. For simplicity, only three action categories are shown as returning from the ACL table 840 in FIG. However, any number of different actions can be configured in an ACL entry. If, in operation 892, an exclude (remove) action 852 is sent back from the ACL table 840, the processor 822 discards the packet in operation 900. The processor 822 may record any statistical information regarding the excluded (removed) packet until operation 902 begins operation on the next incoming packet 821.

パス(通過)アクション852がオペレーション890でACLテーブルから送りかえされた場合、プロセッサ822はオペレーション898で、FIB 842(図13)に従って該パケットをルーティングまたはスイッチングしてもよい。パスアクション890は、転送ポート番号(forwarding port number)を含んでいても、プロセッサ822に、転送ポート情報を得るためにACLテーブル840に再アクセスするように命令してもよい。   If pass action 852 is sent back from the ACL table at operation 890, processor 822 may route or switch the packet according to FIB 842 (FIG. 13) at operation 898. Pass action 890 may include a forwarding port number, but may instruct processor 822 to re-access ACL table 840 to obtain forwarding port information.

誘導(steer)ACLアクション852がオペレーション888でACLテーブルから送り返される場合、プロセッサ822は、オペレーション894で、このACLアクションと関連しているファイヤーウォールオペレーションを実行する。該当する場合、プロセッサ822は、オペレーション894で、関連しているファイヤーウォールポリシーメトリックスに従って当該パケットを送信してもよい。例えば、図14と関連して前述したように、誘導(steer)ACLアクション852は、プロセッサ822に、TCPパケットを特定のポートを介して、DoS攻撃を調べるネットワーク処理デバイスに向けて送信するように命令してもよい。   If a steer ACL action 852 is sent back from the ACL table at operation 888, the processor 822 performs the firewall operation associated with this ACL action at operation 894. If applicable, processor 822 may send the packet in accordance with associated firewall policy metrics at operation 894. For example, as described above in connection with FIG. 14, steer ACL action 852 causes processor 822 to send a TCP packet over a specific port to a network processing device that is looking for DoS attacks. You may order.

他のやり方では、誘導(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 ACL action 852 may instruct processor 822 to perform further firewall processing on the packet at operation 888. For example, steer ACL action 852 may instruct processor 822 to perform network address translation (NAT). In response, the processor 822 may extract another predicate set 854 from the packet 821 at operation 882, if necessary, and reapply the new predicate set 854 to the ACL table 840 at operation 884. In accordance with the next ACL action 852 sent back from the ACL table 840, the processor 882 may remove, pass or direct the packet upon completion of the NAT operation.

上位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 layer 4 and policy metrics 910E for layer 7, respectively.

特に注意すべき重要な点は、単にテーブル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 Layer 2 and Layer 3 of the Open Systems Interconnection (OSI) Internet model. For example, a switch or a router normally makes a packet transfer determination based on a packet port number and an IP address.

図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 destination address predicate 910A. This IP address predicate 910A is used to send each packet to a different output port identified by action 910C. The conventional subset mask in predicate 910B is used to mask bits in destination IP address predicate 910A. For example, in the first ACL entry 912, only the first three subnet fields “10.0.0” of the address are compared with the destination IP address for the incoming packet 821. In the ACL entry 916, only the first subnet field “10” is compared with the destination IP address for the incoming packet 821.

この例では、転送判定は、レイヤー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 destination IP address 910A in addition to the predicate 910D for layer 4 or the predicate 910E for layer 7. For example, an input TCP packet having a destination IP address “10.0.0.x” (x represents “ignore”) is routed to the output port 15. In another example, the input UDP packet having the destination IP address “10.0.0.x” is routed to the output port 5.

入力パケットに対するTCPおよびUDP識別子は、最初のパケット処理中に、プロセッサ822が宛先IPアドレスを識別するのと同時に、プロセッサ822によって識別される。宛先IPアドレスおよびTCPまたはUDP識別子は、その後、パケットを送るための適切な出力ポートを判定するためにACLテーブル910内のエントリーと比較される。これは、パケットがレイヤー4メトリックスに基づいてどのように転送されるのかについての一例を示している。   TCP and UDP identifiers for incoming packets are identified by processor 822 at the same time processor 822 identifies the destination IP address during initial packet processing. The destination IP address and TCP or UDP identifier are then compared with entries in the ACL table 910 to determine the appropriate output port to send the packet. This shows an example of how a packet is forwarded based on layer 4 metrics.

ACLエントリー914は、従来の転送テーブルエントリーであって、入力パケットが宛先IPアドレス内にサブネットフィールド「12.0.x.x」を含んでいる場合に特定の出力ポート2にパケットを送る。   The ACL entry 914 is a conventional forwarding table entry, and sends a packet to a specific output port 2 when the input packet includes the subnet field “12.0.x.x” in the destination IP address.

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 entry 916 makes a routing decision based on the destination IP address and layer 7 session internet protocol (SIP) metrics. For example, a non-SIP packet having an IP destination address “10.x.x.x” is routed to the output port 7 in the network processing device 820. On the other hand, the SIP packet having the IP destination address “10.x.x.x” is routed to the output port 4. This is useful for packets that contain Voice over IP (VoIP) SIP signals that need to be routed to a particular network processing device (eg, a SIP proxy server). Other non-SIP IP traffic is routed in the conventional manner according to the destination address. The SIP identifier used to be compared with the SIP predicate 910E in the ACL entry 916 is a flag generated by the processor 822 when the packet contains a SIP message.

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 layer 7 metrics. This type of routing application may be used to access a web server, in which case it may be used to efficiently route subsequent URL packets to different locations. With respect to both FIG. 16 and FIG. 17, the enterprise may operate a web server 934. This web server 934 is accessed by different users 930 via the Internet 932. The web server 934 may display to the user 930 a web page 936 that provides different links to different business services. For example, the first URL link 938 connects user 930 to customer support, the second link 940 connects user 930 to car sales, and the third link 942 connects user 930 to furniture sales. You may connect.

これらの異なるデータ938、940および942のそれぞれをサポートするリンクウェブサーバーは、異なるインターネット上の位置に配置されてもよいし、それに限定されるわけではないが、場合によっては異なる地理的位置に配置されてもよい。例えば、顧客サポートサーバー944は、アトランタの本社に配置し、自動車販売サーバー946は、デトロイトに配置し、家具販売サーバー949は、フランスのパリに配置してもよい。ACLテーブル910(図16)は、ユーザー930をより効率的にURLリンク938、940および942
に接続させるために用いられる。
Linked web servers that support each of these different data 938, 940, and 942 may be located at different Internet locations, but are not limited to, but may be located at different geographic locations. May be. For example, the customer support server 944 may be located at the Atlanta headquarters, the car sales server 946 may be located in Detroit, and the furniture sales server 949 may be located in Paris, France. ACL table 910 (FIG. 16) allows user 930 to more efficiently link URLs 938, 940 and 942
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 customer support link 938, the web server 934 generates a packet with the destination IP address “10.10.x.x” that includes the URL “Http: // DEST1”. The router 935 in FIG. 17 compares both the IP destination address and the URL with the entry in the ACL table 910. As such, router 935 routes the packet to customer support server 944 via output port 1. In addition, the router 935 receives a plurality of packets having the same destination IP address “10.10.x.x” except for those including the URL “fttp: DEST2”. The router 935 routes these packets to the automobile server 946 via port 2 accordingly. Packets with destination IP address “10.10.x.x” and associated URL / DEST3 are routed to furniture server 948 via port 3. This provides more direct routing to the required IP destination.

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 RSP 100 as previously shown in FIGS. 2A-2C.

図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 operation 1000, DXP 180 in RSP 100 parses the packet in input buffer 140 and identifies all ACL predicates 954 needed to perform the UPM operation. Execute grammar. In operation 1002, the DXP 180 sends an instruction to the SPU 200 and activates the SEP code 212. SEP code 212 causes SPU 200 to convert the format of ACL predicate 954 to the format of predicate set 956. This predicate set 956 is then entered into the ACL table 979. In this example, part or all of the ACL table 979 is stored in one or more CAMs 220.

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 SPU 200 may combine any number of ACL predicates 954 with the ACL predicate 956 according to the grammar executed within the DXP 180 and the associated SEP code 212 invoked by the DXP 180. For example, the grammar in DXP 180 may identify a packet destination address and an ACL predicate 954 for the packet source address. Another predicate 954 may be identified for IPv6 to IPv4 translation or TCP DoS operations. If the DXP identifies that it is an IPv6 packet, the DXP 180 may activate the SEP code 212 that causes the SPU 200 to perform the task of combining the destination IP address predicate and the IPv6 packet type predicate. Similarly, if a TCP packet is identified, the DXP 180 may activate the SEP code 212 that causes the SPU 200 to perform the task of combining the destination IP address predicate 954 and the TCP packet type predicate 954 in the predicate set 956.

オペレーション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 operation 1004, the SPU 200 places the ACL predicate set 956 in the ACL table 979 in the CAM 220. The SPU 200 processes the packet according to the ACL action 952 sent back from the CAM 220 in operation 1006. In operation 1010, the ACL action 252 may be a simple exclude instruction that causes the SPU 200 to discard the packet currently stored in DRAM 280 (FIG. 2A). In operation 1012, ACL action 952 may be an instruction that causes SPU 200 to send a packet in (stored in) DRAM 280 to output buffer 150.

別の状況では、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 action 952 may cause SPU 200 to further activate SEP code 212 that may be associated with a particular firewall operation. For example, a set of ACL entries 980 may be associated with different firewall operations. ACL entry 980A may be associated with an intrusion detection system (DIS) license operation, described in more detail below. Another ACL entry 980B is described in a co-pending application entitled “Method and Apparatus for Intrusion Detection in Network Processing Devices” and may be associated with the IDS operations described therein. This co-pending application is US Patent Application No. 11 / 125,956 entitled “Intrusion Detection System” filed on May 9, 2005, the content of which is incorporated herein by reference. It shall be incorporated.

その他のACLエントリー980C〜Fは、その他のファイヤーウォールオペレーションと関連付けられてもよい。その他のファイヤーウォールオペレーションとは、すでに上述したか、以下でより詳しく説明されるような、ネットワークアドレス変換(NAT)、IPv4−IPv6変換、TCPセッションに関するサービス妨害(DoS)およびパケットフラグメントに関するDoSなどである。   Other ACL entries 980C-F may be associated with other firewall operations. Other firewall operations include network address translation (NAT), IPv4-IPv6 translation, denial of service (DoS) for TCP sessions, and DoS for packet fragments, as described above or described in more detail below. is there.

例えば、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 SPU 200 may place in the CAM 220 an ACL predicate set 956 that matches the ACL entry 880E corresponding to the DoS TCP packet. The action included in the ACL entry 980E may be a pointer 982 pointing to the semantic code table 210. SPU 200 may activate and execute the SEP code at pointer location 982 in operation 1008 of FIG. In this example, SEP code 212 at location 982 causes SPU 200 to perform some or all of the TCP DoS operations as described above in connection with FIGS.

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, SEP code 212 may cause SPU 200 to perform any of a variety of other firewall operations. For example, as represented by path 1014, SPU 200 may be instructed to create another set of predicates 956 from ACL predicates 954 identified by DXP 180. The new predicate set 956 may then be re-entered in the ACL table 979 to perform other firewall operations. The SEP code 212 may instruct the SPU 200 to remove the packet as represented by path 1016 in FIG. 19 or send the packet to the output port as represented by path 1018.

図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 may also implement integrated policy management. This integrated policy management integrates both routing and switching operations with other firewall policy management operations. Accordingly, the CAM 220 may include a forwarding information base 984 that includes an entry having a destination IP address and an associated destination port number. As described above in connection with FIG. 16, the FIB table 984 includes a conventional FIB entry 987 and other entries 986. These conventional FIB entries 987 and other entries 986 route packets according to both the destination address and other firewall policy metrics 988.

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 RSP 100 can easily switch between functions of a firewall function, a conventional router or switch function, or a combination of both. For example, path 990 (FIG. 18) in semantic code table 210 represents switching RSP 100 from DoS TCP operation to routing operation. The first predicate set 956 sent by the SPU 200 to the CAM 220 may match the DoS TCP entry 980E. Once execution of the SEP code 982 associated with the DoS TCP operation is complete, the SPU 200 may be instructed to send another set of predicates 956 to the CAM 220. New predicate set 956 may match entries 986 or 987 in FIB 984. An entry in FIB 984 may instruct SPU 200 to activate SEP code 992 in SCT 210 that performs conventional or UPM routing operations.

他のやり方では、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 CAM 220 may match FIB entry 986 instead of initially matching DoS TCP entry 980E. The resulting action contained within entry 986 may instruct SPU 200 to send the associated packet via the output port to another device providing TCP DoS operation.

Network address translation (NAT) / port address translation (PAT)
With reference to FIG. 20, the RSP 100 may also be programmed for NAT / PAT operation. NAT / PAT operation refers to the IP address and / or port number of a packet passing through the firewall 1062, and the public IP address used to transport the packet over the public network 12. An operation that translates between private IP addresses that are used to carry packets over the private network 24.

通常、私的ネットワーク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 private network 24. On the other hand, one or a few public IP addresses are used to represent multiple private IP addresses. This translation from a public address to a private address prevents the internal machines in the private network 24 from being identified (protect the identity) and is mapped to multiple private addresses in the private network 24 Reduce the number of public addresses required.

別の実施例では、一つまたは複数の私的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 firewall 1062 to hide the corresponding private IP addresses from the public network 12. This one-to-one mapping allows the firewall 1062 to reconfigure multiple public IP addresses to different network devices in the private network 24.

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 RSP 100 converts the public IP address 1058 of the input packet 1061 into a private IP address 1074. Private IP address 1074 is then used to route internal packet 1076 to the associated network processing device 1078 in private network 24. RSP 100 also receives a packet 1072 containing a private IP address 1070 from a local device 1078 in private network 24. If packet 1072 is directed to endpoint 1056 in private network 12, RSP 100 translates private IP address 1070 to public IP address 1052. This public IP address 1052 is used to route the packet 1050 to the endpoint 1056 via the public network 12.

より詳しく説明するために、私的ネットワーク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 device 1078 operating in the private network 24 may first send the packet 1072 to a destination in the public network 12 via the firewall 1062. The RSP 100 receives the packet 1072 and translates the private source IP address 1070 into a public IP address 1052 associated with the firewall 1062. In addition, a specific port number 1054 may be assigned to the output packet 1050 by the RSP 100. The RSP 100 then updates the lookup table 1064 by adding a private IP address entry 1068 and a corresponding port number entry 1066.

出力パケット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 device 1056 that has received the output packet 1050 may send the packet 1061 back to the local device 1078. The device 1056 uses the public IP source address 1052 and port number 1054 in the packet 1050 as the destination address 1058 and port number 1060 of the packet 1061 sent back to the local device 1078. The RSP 100 maps the destination address 1058 and the port number 1060 in the packet 1061 to the port number entry 1066 in the search table 1064. The RSP 100 identifies the matching port number entry 1060 and the private IP address entry 1070 in the lookup table 1079 corresponding to it.

RSP 100は、パケット1061内の公的宛先IPアドレス1058を、検索テーブルから識別された私的IPアドレス1070に置き換える。私的アドレスと公的アドレスの間での変換中に、RSP 100は、パケットを分解し(de-assemble)、チェックサム値を生成し、その後パケットを再構成してもよい。   RSP 100 replaces the public destination IP address 1058 in packet 1061 with the private IP address 1070 identified from the lookup table. During translation between private and public addresses, RSP 100 may de-assemble the packet, generate a checksum value, and then reassemble the packet.

図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 RSP 100 performs the NAT / PAT conversion described above. DXP 180 (FIG. 21) parses the incoming packet received from private network 24 and identifies private IP source address 1070 in operation 1100 (FIG. 22). DXP 180 signals SPU 200 to load microinstructions from SCT 210 in operation 1102. This microinstruction relates to converting a private IP source address 1070 to a public IP source address.

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 SPU 200 generates a public IP address and port number for the packet in operation 1104. The public IP address is usually the IP address assigned to the firewall 1062 (FIG. 20). In operation 1106, SPU 200 loads the 1072 port number of the packet and the corresponding private IP address into lookup table 1079. FIG. 21 shows an example of how the search table 1079 using the CAM 220 and SRAM 221 is implemented. The SPU 200 stores the port number associated with the output packet 1050 into the CAM location 220A via the AMCD 230 and stores the corresponding private IP address 1070 as the entry 221A in the SRAM 221.

オペレーション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 operation 1108, the SPU 200 replaces the private IP source address 1070 of the packet 1072 containing the associated port number 1054 (FIG. 20) with the public source IP address 1052. SPU 200 may also generate a new checksum for this output packet 1050 at operation 1110. Eventually, SPU 200 sends packet 1050 with public IP address 1052 and port number 1054 from DRAM 280 to output port 152 at operation 1112.

図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 RSP 100 translates the public destination IP address of an incoming packet into a private IP address. In operation 1120, the DXP 180 parses the incoming packet 1061 received from the public network 12 and identifies the associated 5-tuple address. In operation 1122, DXP 180 signals SPU 200 to load microinstruction 212 (FIG. 2A) from SCT 210. This microinstruction relates to translating the public IP destination address 1058 and port number 1060 into the corresponding private IP destination address 1074.

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 SPU 200 compares the public destination IP address 1058 and port number 1060 from the incoming packet 1061 with the IP address and port number entry 220A in the lookup table 1079 in operation 1124. For example, the SPU 200 uses the destination port number as an address to the CAM 220. The address in section 220A that matches the port number is used as a pointer to section 221A in SRAM 221. In operation 1126, the SPU 200 reads the private destination IP address identified from the SRAM 221 and replaces the packet's public IP destination address 1058 with the identified private IP address 1074. In operation 1128, SPU 200 also generates a new checksum for the converted packet. Eventually, SPU 200 outputs packet 1076 from DRAM memory 280 to private network 24 via output port 152 in operation 1130.

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 RSP 100 may be configured to perform other modification and monitoring operations on the same packet both before and after the NAT / PAT operation. In this example, SPU 200 may send a packet with a new private IP address 1074 from DRAM 280 back to recirculation buffer 160 (FIG. 2A) for further firewall processing. Other firewall operations are then performed on the packets in recirculation buffer 160.

IPv6 / IPv4 Translation (IPv6 / IPv4 Translation)
With respect to FIG. 24, firewall 1062 may need to translate between Internet Protocol version 4 (IPv4) and IP version 6 (IPv6) or between other IP protocol versions. For example, the first network 1150 may use IPv6 while the second network 1160 may use IPv4. Therefore, the firewall 1062 needs to convert the 128-bit address area 1158 of the IPv6 packet 1156 into the 32-bit address area 1170 of the IPv4 packet 1172. Information other than the header and payload may also need to be converted between IPv4 and IPv6.

ある例では、ファイヤーウォール1062は、IPv6パケット1156をIPv4パケット1172へと変換する。この例では、ファイヤーウォール1062は、IPv6パケット1156をカプセル化してIPv4トンネル1164へ入れる。逆の変換については、ファイヤーウォール1062は、IPv4パケットをIPv6パケットへ変換するか、IPv4パケット1172をカプセル化してIPv6トンネルへ入れる。これらの異なる変換は、ファイヤーウォール1062によって繋がれるIPネットワークの種類によって決まる。   In one example, the firewall 1062 converts the IPv6 packet 1156 into an IPv4 packet 1172. In this example, the firewall 1062 encapsulates the IPv6 packet 1156 and enters the IPv4 tunnel 1164. For the reverse conversion, the firewall 1062 converts the IPv4 packet into an IPv6 packet, or encapsulates the IPv4 packet 1172 and enters the IPv6 tunnel. These different transformations depend on the type of IP network connected by the firewall 1062.

入力パケット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 incoming packet 1158 may include a media access control (MAC) header 1180, an IP header 1182 and a TCP header 1184. The type field 1186 specifies the IP version number for this IP header 1182. With reference to FIGS. 21, 24 and 25, DXP 180 (FIG. 21) parses incoming packet 1158 and identifies a particular IP version in type field 1186 at operation 1200 (FIG. 25). If the type field 1186 indicates IPv4 and IPv4 is also used in the network connected to the opposite end of the RSP 100, the DXP 180 will do some SEP for IP version conversion within the SPU 200. You don't have to start the code.

しかし、タイプフィールド1186が、RSP 100の反対の端(end)で用いられているIPバージョンと異なるIPバージョンを示した場合、DXP 180は、オペレーション1202で、SPU 200にSCT 210(図2A)からマイクロ命令をロードするように信号を送る。このマイクロ命令は、入力パケットを他のネットワークのIPバージョンへ変換するためのものである。この例では、マイクロ命令は、SPU 200にIPv6パケットをIPv4パケットに変換させる。   However, if the type field 1186 indicates an IP version that is different from the IP version used at the opposite end of the RSP 100, the DXP 180 sends the SPU 200 to the SCT 210 (FIG. 2A) in operation 1202. Signals to load microinstruction. This microinstruction is for converting an input packet to an IP version of another network. In this example, the microinstruction causes the SPU 200 to convert an IPv6 packet into an IPv4 packet.

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 SPU 200 applies, in operation 1204, matching the IPv6 address identified by the DXP 180 with the section 220B in the CAM 220 (FIG. 21) associated with the 128-bit IPv6 address. The CAM 220 addresses the corresponding entry in the section 221B of the SRAM 221 that contains the corresponding 32-bit IPv4 address (address). The SPU 200 reads the IPv4 address output from the SRAM 221 in operation 1206, and replaces the IPv6 address in the packet with the specified IPv4 address in operation 1208. In the other way, the SPU 200 encapsulates the IPv6 packet and puts it into the IPv4 tunnel using the specified IPv4 address in the SRAM 221. At operation 1210, the SPU 200 generates a new checksum and, at operation 1212, sends either the translated IPv4 packet or the IPv4 tunnel containing the IPv6 packet from the DRAM 280 to the output port 152.

図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 RSP 100 simply identifies the new IP version number and then activates a set of SEP codes. This SEP code is used by the SPU 200 to convert packets between the first IP version and the second IP version.

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 can route a packet identified as being of a different IP version to an associated different IP subnet that may support the identified IP version within the packet.

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 RSP 100 is that additional packet processing operations do not require additional hardware and without substantially increasing the complexity of the software or processing state. It can be done. For example, the same RSP configuration for NAT / PAT conversion as that shown in FIG. 21 can be used for conversion between IPv4 and IPv6. IPv6 to IPv4 address mapping 220B and 221B and vice versa IPv4 to IPv6 address mapping 220C and 221C, alongside IP public address 220A and IP private address 221A used for NAT / PAT translation, respectively (alongside) It may be stored in the CAM 220. In addition, parsing a huge IPv6 packet requires only a few additional cycles, so parsing a large 128-bit IPv6 header is a whole for the RSP 100. It only increases the rate of packet processing for a few cycles.

共通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 same RSP 100. For example, in FIG. 21, DXP 180 may perform several identical analysis operations for both NAT / PAT operations and IPv6 / IPv4 operations. For example, IP addresses are identified by DXP 180 for both NAT translation and IP version translation. Therefore, the same DXP address analysis result can be used for both NAT conversion and IP version conversion. Therefore, DXP 180 requires a small number of grammars in addition to NAT grammars.

RSP 100はまた、何らかの特定のデータサイズを処理することに限定されない。そのため、何らかのIPv4またはIPv6オペレーションや、将来生み出されるかもしれない何らかの他のIPバージョンまたはアドレスサイズの処理は、同じRSPアーキテクチャ100を用いて簡単に実施することができる。RSP 100は、DXP 180に最低限の新しい文法を加え、SPU 200によって実行されるための追加のSEPコードを加え、いくつかの追加のエントリーをCAM 220およびSRAM 221内に加えるだけで、こうした異なるIPバージョンおよびアドレスサイズを処理するように構成することができる。   The RSP 100 is also not limited to processing any particular data size. As such, any IPv4 or IPv6 operation and any other IP version or address size processing that may be created in the future can be easily implemented using the same RSP architecture 100. RSP 100 adds these minimal new grammars to DXP 180, adds additional SEP code to be executed by SPU 200, and adds a few additional entries in CAM 220 and SRAM 221. Can be configured to handle IP version and address size.

これは、効率的に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) tunnel 1207 is established over the Internet 1212. Computer 1216 requests file 1200 from enterprise server 1202. The server 1202 accesses the file 1200 and sends it back as an IP packet 1204 to the remote user 1216 via the VPN / firewall 1206.

ファイヤーウォール1206は、該パケット1204を、(例えばIP送信元保護(IPSG)のような)IPセキュリティプロトコルカプセル化セキュリティペイロード(IPSec ESP)トレーラ1210およびIPセキュリティプロトコル認証ヘッダー(IPSec AH)1208を用いてカプセル化する。これらのIPSecヘッダー1208および1210は、レイヤー3プロトコルに位置する。これらのヘッダーは、トランスポートモードでは、IPヘッダーの後ろかつ上位層のプロトコルヘッダーの前に配置され、トンネルモードでは、カプセル化されたIPヘッダーの前に配置される。IPSecヘッダー1210およびAHヘッダー1208は、個別に用いることも、互いに組み合わせて用いることもできる。   The firewall 1206 uses the IP security protocol encapsulation security payload (IPSec ESP) trailer 1210 and IP security protocol authentication header (IPSec AH) 1208 (such as IP Source Protection (IPSG)), for example. Encapsulate. These IPSec headers 1208 and 1210 are located in the layer 3 protocol. These headers are placed after the IP header and before the upper layer protocol header in the transport mode, and before the encapsulated IP header in the tunnel mode. The IPSec header 1210 and the AH header 1208 can be used individually or in combination with each other.

IPSec ESPヘッダー1210は、受信したパケットを復号化するのに必要となる情報を含んでおり、また場合によっては受信したパケット1204を認証するのに必要となる認証ダイジェスト(authentication digest)を含んでいる。IPSec AHヘッダー1208は、受信したパケット1204を認証するのに必要となる認証ダイジェストを含んでいる。IPSecパケット1218がIPSec AHヘッダー1208を含んでいる場合、認証ダイジェストは、レイヤー3プロトコル内に位置する。そうでない場合、IPSec ESPモードでは、ESPトレーラ1210内のパケットペイロードの後ろには認証ダイジェストだけが配置される。   The IPSec ESP header 1210 contains the information necessary to decrypt the received packet and, in some cases, the authentication digest required to authenticate the received packet 1204. . The IPSec AH header 1208 includes an authentication digest necessary for authenticating the received packet 1204. If IPSec packet 1218 includes IPSec AH header 1208, the authentication digest is located in the Layer 3 protocol. Otherwise, in IPSec ESP mode, only the authentication digest is placed behind the packet payload in the ESP trailer 1210.

IPSecパケット1218は、インターネット1212をVPNトンネル1207として経由してコンピュータ1216へと送られる。VPN/ファイヤーウォール1214は、AHヘッダー1208およびESPヘッダー1210内の情報に従ってIPSecパケット1218を復号化する。復号化されたIPパケット1204は、その後コンピュータ1216へ転送される。VPN/ファイヤーウォール1214は、前述したように、復号化されたパケット1204に対して他のどのようなファイヤーウォールオペレーションを実施してもよい。   The IPSec packet 1218 is sent to the computer 1216 via the Internet 1212 as a VPN tunnel 1207. The VPN / firewall 1214 decrypts the IPSec packet 1218 according to the information in the AH header 1208 and the ESP header 1210. The decrypted IP packet 1204 is then transferred to the computer 1216. The VPN / firewall 1214 may perform any other firewall operation on the decrypted packet 1204 as described above.

図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 RSP 100 in the VPN / firewalls 1206 and 1214. RSP 100 first performs preliminary (initial) DoS filtering 1220 to filter IPSec packets 1218 received that exceed the threshold for the DoS attack rate. DoS filtering 1220 can filter any non-IPSec packet in a manner similar to that described above in connection with FIGS. 4-11.

セキュリティアソシエーション(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) search operation 1222 extracts an IP address, a packet session identifier, and a plurality of security parameter indexes (SPIs) 1226 from the IPSec packet 1218. These identify the required decryption and authentication techniques used by RSP 100. The SPI 1226 and other IP information is sent to a search table 1224 that is similar or identical to the search table and ACL table described above in connection with DoS, UPM, NAT conversion and IP version conversion. The search table 1224 sends back the decryption key 1228, the decryption algorithm identifier 1230, and the authentication algorithm identifier 1232.

関連している復号化アルゴリズムは、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 IPSec packet 1218 from an encrypted state to an unencrypted state. Examples of decryption algorithms include Data Encryption Standard (DES), Triple Data Encryption Standard (T-DES), Advanced Encryption Standard (AES), and CBC mode T-DES. The authentication algorithm performs a hash operation on the data to verify whether the bits in the IP packet 1204 are the same as the bits originally sent from the server 1202. Examples of authentication algorithms include MD5 and SHA1.

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 SA search 1222 are provided to decryption operation 1234. Thereafter, decryption operation 1234 decrypts IPSec packet 1218 into original IP packet 1204. Further details on how SA search 1222 and decryption operation 1234 are performed are described in the following continuation application.
・ 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を用いて実行するものである。   DXP 180 parses the incoming packet and identifies IPSec packet 1218 according to the identified IP type field. Subsequently, the grammar in DXP 180 identifies the SPI 1226 that is used by DXP 180 to activate SEP code 212 (FIG. 2A). The SEP code 212 instructs the SPU 200 to place the SPI 1226 in the ACL in the CAM 220 and then execute the decoding 1234 according to the output result from the CAM search. For example, the decryption key 1228, the decryption algorithm identifier 1230, and the authentication algorithm identifier 1232 can be stored in the same CAM / SRAM structure as previously described in connection with FIG. The output result from the CAM search is an ACL action that indicates an additional SEP code. This additional SEP code executes the decryption algorithm associated with identifier 1230 and the authentication algorithm associated with identifier 1232 using decryption key 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 CAM 220 will exclude these packets to SPU 200 You may order. This prevents an unauthorized attacker from taking over the VPN session 1207.

復号化された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 transfer operation 1236 may be similar to the operations in the UPM application described above). For example, the RSP 100 simply forwards the decrypted packet 1204 to the destination address in forwarding operation 1236 without any further firewall operation using the FIB described above in connection with FIGS. 13-19. May be.

他のやり方では、復号化オペレーション1234からの出力は、第二のDoSフィルタリング1238を通過するようにしてもよい。第二のDoSフィルタリング1238は、IPパケット1204内の現在は復号化されているIPアドレスおよびその他の識別子に対してDoS検出およびDoSフィルタリングを実施することができる。例えば、DoSオペレーションおよびその他のUPMオペレーションに用いられる述語の一部は、現在は復号化されている。復号化された述語は識別され、その後第二のDoSオペレーション1238、UPMオペレーション、または何らかの必要とされる他のファイヤーウォールオペレーションを実施するのに用いられる。   In other ways, the output from the decoding operation 1234 may pass through the second DoS filtering 1238. The second DoS filtering 1238 can perform DoS detection and DoS filtering on the currently decoded IP address and other identifiers in the IP packet 1204. For example, some predicates used for DoS operations and other UPM operations are currently decrypted. The decrypted predicate is identified and then used to perform a second DoS operation 1238, UPM operation, or some other firewall operation as required.

追加のファイヤーウォールオペレーションには、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. TCP proxy operation 1240 disclosed in No. 11 / 181,528 may be included. The content of this continuation application is hereby incorporated by reference into the present application. In another feasible post-decryption operation 1242, RSP 100 converts the decrypted IP address to a public or private IP address as described above in connection with the NAT / PAT application. May be.

どのファイヤーウォールオペレーションが実行されたのかと、復号化されたIPパケット1204の種類と、に応じて、RSP 100は、ポスト復号化オペレーション1236、1238、1240または1242をどのように組み合わせて実行してもよい。もちろん、上述した他のいずれのファイヤーウォールオペレーションもまた実行可能である。   Depending on which firewall operation was performed and the type of decrypted IP packet 1204, RSP 100 can perform any combination of post-decryption operations 1236, 1238, 1240 or 1242. Also good. Of course, any other firewall operation described above can also be performed.

ファイヤーウォールポリシー管理を用いたライセンス供与
図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 can be used to efficiently allocate antivirus (AV) licenses. Currently, AV licenses are assigned to individual machines 1514. The problem is that it is difficult for system administrators to manage these licenses. For example, for each new machine 1514 added to the network, additional licenses must be purchased and AV software installed. Once the license agreement is over, the network administrator must reinstall AV software on individual machines or re-enable those software. In addition, any uploads to AV software must be loaded into each computer 1514 individually.

RSP 100は、集中型のライセンス管理を提供する。例えば、AVソフトウェア1504は、ファイヤーウォール1502内のRSP 100によって以下の同時継続のアメリカ特許出願で説明されているのと同様のやり方で実行することができる。この同時継続出願とは、2005年5月9日に出願された「ネットワーク処理デバイス内での侵入検知のための方法および装置」という発明の名称のアメリカ特許出願No.11/125,956のことである。その他のやり方では、AVソフトウェア1504は、従来のネットワーク処理デバイスによって実行されてもよい。   RSP 100 provides centralized license management. For example, AV software 1504 can be executed by RSP 100 in firewall 1502 in a manner similar to that described in the following co-pending US patent application: This co-pending application is US Patent Application No. 11 / 125,956, filed May 9, 2005, entitled "Method and Apparatus for Intrusion Detection in Network Processing Devices". . In other ways, the AV software 1504 may be executed by a conventional network processing device.

以上のこととは関係なく、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, RSP 100 determines which sub-networks 1520, 1522 and 1524 have AV licenses, and accordingly only packets destined for those licensed sub-networks. Apply AV software 1504. As shown in FIGS. 28 and 29, the RSP 100 receives a packet 1525 from the public Internet 1500 with a specific destination address 1527. The DXP 180 in the RSP 100 identifies the IP destination address 1527 and sends it to the SPU 200, which then causes the SPU 200 to execute the SEP code. In particular, this SEP code confirms whether or not the sub-network corresponding to the destination address 1527 has an AV license.

例えば、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 SPU 200 sends the destination address 1527 of the packet to the CAM 220. This destination address 1527 may match (match) predicate 1528 in ACL entry 1526. Action 1530 associated with ACL entry 1526 indicates that there is a license for subnetwork 1522 (FIG. 28) associated with packet destination address 1527 that matches ACL predicate 1528. Action 1530 may be a pointer to additional SEP code. This SEP code instructs the SPU 200 to determine whether or not the number of connections currently established with the subnetwork 1522 is less than the number of assigned licenses. If the number of licenses purchased for the subnetwork 1522 is greater than the number of active connections, the AV software 1504 is applied to the packet 1525.

ファイヤーウォール1502内のSPU 200またはその他の処理機器(processing elements)は、インターネット1500と各サブネットワーク1520、1522および1524との間で動作中のコネクションの数のカウント1529を継続して保持することができる。メモリ221は、動作中のコネクションのカウント1529と、ファイヤーウォール1502に接続されているサブネットワークそれぞれに対して購入されたライセンス1531の数と、を格納する。   SPU 200 or other processing elements within firewall 1502 may continue to maintain a count 1529 of the number of active connections between Internet 1500 and each subnetwork 1520, 1522 and 1524. it can. The memory 221 stores a count 1529 of active connections and the number of licenses 1531 purchased for each of the sub-networks connected to the firewall 1502.

SPU 200は、すでに特定されているパケット宛先アドレス1527をCAM 220に入れることによって、AVソフトウェア1504がパケット1525に適用されるべきかを、すばやく判定することができる。CAM 220は、SRAM 221内の、サブネットワーク1522に対する現在のコネクションカウント1529および有効な(available)ライセンス1531を含んでいる位置を識別する。一つまたは複数のAVライセンスが有効である場合、他のファイヤーウォールオペレーションを実施する前、またはその実施中、もしくはその実施後、SPU 200は、AVソフトウェア1504をパケット1525に適用する。   The SPU 200 can quickly determine whether the AV software 1504 should be applied to the packet 1525 by putting the already specified packet destination address 1527 in the CAM 220. The CAM 220 identifies a location in the SRAM 221 that contains the current connection count 1529 for the subnetwork 1522 and an available license 1531. If one or more AV licenses are valid, the SPU 200 applies the AV software 1504 to the packet 1525 before, during, or after other firewall operations.

サブネットワークが公的ネットワーク上に位置している場合、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 software 1504. For example, the sub-network 1524 may be located at a location away from the firewall 1502. If subnetwork 1524 is assigned an AV license, action 1530 in the corresponding ACL entry 1526 (this ACL entry 1526 matches the address for subnetwork 1524) will send a packet to SPU 200. Prior to sending to the subnetwork 1524, this packet may be encapsulated and ordered to enter the secure tunnel 1518.

AVソフトウェア1504は、AVライセンスを持たないサブネットワークへは適用されない。例えば、サブネットワーク1520と関連しているACLエントリーに対しては、ライセンス鍵アクション1530は、一つも作られない。従って、RSP 100は、サブネットワーク1520へ向けられたパケットにはAV 1504を適用しない。   AV software 1504 is not applied to a sub-network that does not have an AV license. For example, no license key action 1530 is created for an ACL entry associated with a subnetwork 1520. Accordingly, the RSP 100 does not apply AV 1504 to packets destined for the sub-network 1520.

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 RSPs 100 can be connected together to provide sequential or parallel firewall operations. For example, in the configuration of FIG. 30, a plurality of RSPs 100A-100D are combined in series with each other to perform different firewall operations, routing operations, and intrusion detection system (IDS) operations. The first RSP 100A identifies the IP information from the input packet 1598 and extracts the IP information from the input packet 1598 by extracting the 5-tuple source and destination IP addresses and the port number.

次に、第二の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 third RSP 100C may perform a packet processing operation that retrieves any HTTP session that may be carried in the packet. Finally, RSP 100D is a virus or other specific type of information (eg, “Method and Apparatus for Intrusion Detection in Network Processing Devices” filed on May 9, 2005). Search for any text or executable file in an HTTP session that may contain viruses or other specific types of information as described in co-pending US patent application No. 11 / 125,956) .

もちろん、どのように組み合わせた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 RSPs 100 can perform any combination of various firewall and non-firewall operations, and FIG. 30 shows only one example. Each added RSP provides a significant linear improvement in performance. For example, the RSP 100A may send any parsed 1602 such as a firewall predicate, IDS token, non-terminal (NT) 312, generated code 178 and SEP code 177B (FIGS. 2B and 2C) to the next RSP 100B it can. When packet processing is complete, the RSP 100B can send similar status information 1602 to the RSP 100C.

これは、それ以降の各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 subsequent RSP 100 from having to repeat a portion of the same analysis that has already been completed within the previous RSP. Furthermore, the architecture of DXP 180 (FIG. 2A) allows each RSP 100 to quickly change to the same state as the previous RSP by simply loading NT 132 into parser stack 185 (FIG. 2A). For example, RSP 100A may identify an ACL predicate that includes an IP destination address. RSP 100A places the ACL predicate and the associated NT 132 in message 1602 and sends it to RSP 100B along with the associated packet 1600. The RSP 100B can then initiate a TCP operation on the packet 1600 using the IP address information that has already been identified, left off from the RSP 100A. Thus, the RSP 100B does not need to re-parse the packet 1600 to rediscover, for example, the destination IP address.

これは、パケットプロセッサ状態をすぐに受け渡しできない従来のプロセッサアーキテクチャと正反対である。結果として、パケット処理システムに追加される従来の各プロセッサは、必ずしもネットワーク処理デバイスの全体的な性能を線形的に向上させない。言い換えると、従来のコンピュータアーキテクチャを用いているパケット処理デバイスの数を倍にしても、全体の処理能力は必ずしも倍にはならない。反対に、本実施例では、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 RSPs 100 is doubled, the overall performance of the host network processing system is almost doubled.

図31は、RSP 100の別の構成を示している。この構成では、一つまたは複数のRSP 100が平行して動作する。第一のRSP 100Aは、パケットから抽出されたIPアドレスと、その他の述語と、に基づいて、もしファイヤーウォールオペレーションが実行される必要があるならば(if any)、他のどのファイヤーウォールオペレーションがこれらの入力パケット1598に対して実行される必要があるのかを判定する初期UPMオペレーションを実行する。RSP 100Aは、その後、これらのパケットを、識別されたファイヤーウォールポリシーメトリックスに従ってRSP 100B−Gへとルーティングする。   FIG. 31 shows another configuration of the RSP 100. In this configuration, one or more RSPs 100 operate in parallel. Based on the IP address extracted from the packet and other predicates, the first RSP 100A will determine if any other firewall operation is to be performed (if any). An initial UPM operation is performed to determine if these input packets 1598 need to be executed. RSP 100A then routes these packets to RSP 100B-G according to the identified firewall policy metrics.

例えば、識別されたファイヤーウォール述語に基づいて、パケット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, packet 1598 may request DoS processing provided by RSP 100B. In response, RSP 100A routes to these packets RSP 100B. If RSP 100B determines that the destination subnet address for this packet has an associated IDS license, as described above in connection with FIGS. 28 and 29, this packet is RSP for anti-virus processing. It may be routed to 100C. Otherwise, RSP 100B may forward this packet to an endpoint in local network 1604.

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 RSP 100A determines that the packet needs to be converted to IPv4 format, the packet is routed to RSP 100D. This packet 1598 is sent to the RSP 100E. Subsequently, the RSP 100E processes this packet according to various upper OSI layer data. For example, the RSP 100E may route this packet according to the HTTP information in this packet, as described above in connection with FIG.
Each of the other packets may be routed to the RSP 100F for performing other NAT operations and to the RSP 100G for performing other DoS operations.

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 computer 284 to enter CLI commands and data 286 into the RSP 100. Thereafter, the MCPU 56 interprets the CLI command 286 received from the computer 284 and operates according to it. For example, CLI command 286 may instruct MCPU 56 to load a new ACL entry into TCAM 220 in memory subsystem 215. CLI command 286 may also instruct MCPU 56 to load data into any other memory component within memory subsystem 215.

また、CLIコマンド286は、RSP 100内の他の記憶装置構成要素や、テーブルを構成するのに用いられてもよい。例えば、CLIコマンド286は、MCPU 56に、新しいパーサ文法をパーサテーブル170へロードするように命令したり、生成規則176を生成規則テーブル190へロードするように命令したり、新しいSEPコード212をセマンティックコードテーブル210へロードするように命令してもよい。CLIコマンド286は、MCPU 56に、メモリサブシステム215内の記憶装置構成要素またはテーブルのどれか一つから情報を読み込むように命令したり、RSP 100内のその他の処理構成要素から情報を読み込むように命令したりすることができる。   The CLI command 286 may also be used to configure other storage device components or tables within the RSP 100. For example, CLI command 286 instructs MCPU 56 to load a new parser grammar into parser table 170, load production rule 176 into production rule table 190, or semantically insert a new SEP code 212. The code table 210 may be instructed to load. CLI command 286 instructs MCPU 56 to read information from one of the storage components or tables in memory subsystem 215, or to read information from other processing components in RSP 100. Can be ordered.

ロギング (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 SEP code 212 can instruct the SPU 200 to record some of the detected events to the MCPU 56 for logging. For example, the SPU 200 may send some packets identified as being part of a DoS attack to the MCPU 56. If a DoS attack is detected, the SEP code 212 instructs the SPU 200 to send a sample of dropped packets to the MCPU 56. The SEP code 212 may instruct the SPU 200 to notify the MCPU 56 whenever a similar packet is excluded.

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. The packet containing this log may be sent by the SPU 200 via the output port 152 to the system log machine.

どのようなイベントもRSP 100によって記録することができる。また、それに限定されるわけではないが、これらのイベントは、前述したファイヤーウォールオペレーション内で識別されるいずれのイベントを含んでいてもよい。例えば、SEPコード212は、SPU 200に、CAM 220内の特定のACLエントリーと適合する(マッチする)パケットをMCPU 56へ送るように命令してもよい。   Any event can be recorded by the RSP 100. Also, but not limited to, these events may include any event identified within the firewall operation described above. For example, the SEP code 212 may instruct the SPU 200 to send to the MCPU 56 a packet that matches (matches) a particular ACL entry in the CAM 220.

統計値 (Statistic)
必要とされるどのような統計値もRSP 100の中に記録することができ、かつ他の場所に保存するかあるいはロギングシステムに送ることができる。例えば、SPU 200は、すべての受け取ったパケットや、除外されたパケットや、出力されたパケットをカウントするようにプログラムされてもよい。別のSEPコード212は、他の関連しているファイヤーウォールオペレーションに加えてロギングコマンドを含んでいてもよい。RSP 100は、送受信されたパケットと関連したどのような統計情報も識別する。送受信されたパケットと関連した統計情報の例としては、受信されたパケットの数や、受信されたパケットのサイズや、送信されたパケットのサイズおよび数や、除外されたパケットの数や、悪いチェックサムを持ったパケットの数や、複製されたパケットの数や、失敗したログインの試みなどが挙げられる。この統計値は、CLIコマンド286を介してコンピュータ284にダウンロードするか、一定期間ごとに、SPU 200によって出力ポート152を介してパケットとして送信することができる。
Statistic
Any required statistics can be recorded in the RSP 100 and stored elsewhere or sent to a logging system. For example, the SPU 200 may be programmed to count all received packets, excluded packets, and output packets. Another SEP code 212 may include a logging command in addition to other associated firewall operations. The RSP 100 identifies any statistical information associated with transmitted and received packets. Examples of statistics related to sent and received packets include the number of packets received, the size of received packets, the size and number of packets sent, the number of excluded packets, and bad checks This includes the number of packets with thumbs, the number of duplicated packets, and failed login attempts. This statistical value can be downloaded to the computer 284 via the CLI command 286 or transmitted as a packet via the output port 152 by the SPU 200 at regular intervals.

認定(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 RSP 100, but instead may be performed within a conventional computer architecture.

侵入検知 (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 private IP network 2024 connected to a public Internet Protocol (IP) network 2012 via a peripheral device (edge device) 2025A. The public IP network 2012 can be any wide area network (WAN) that provides packet switching. The private network 2024 is a corporate network, an Internet service provider (ISP) network, a home network, or the like that needs to defend against attacks (eg, viruses or other malware attacks coming from the public network 2012).

私的なネットワーク2024内のネットワーク処理デバイス2025A−2025Dは、パケット交換ネットワーク上で通信しさえすればどのようなタイプのコンピュータ関係の構成要素でもよい。例えば、ネットワーク処理デバイス2025Aおよび2025Bは、ルーターや、スイッチや、ゲートウェイなどでよい。この例では、ネットワーク処理デバイス2025Aは、ファイヤーウォールとして動作し、デバイス2025Bはルーターまたはスイッチとして動作する。(デバイス2025Bはルーターや、スイッチや、デバイス2025Cとして動作する。)エンドポイント2025Cは、個人用コンピュータ(PC)であり、エンドポイント2025Dは、インターネットウェブサーバーのようなサーバーである。このPC 2025Cは、有線イーサネット接続のような有線接続もしくは例えばIEEE802.11プロトコルを用いている無線接続を介して前記私的ネットワーク2024に接続されてもよい。   The network processing devices 2025A-2025D in the private network 2024 may be any type of computer-related component as long as they communicate over a packet switched network. For example, the network processing devices 2025A and 2025B may be routers, switches, gateways, or the like. In this example, network processing device 2025A operates as a firewall and device 2025B operates as a router or switch. (Device 2025B operates as a router, switch, or device 2025C.) Endpoint 2025C is a personal computer (PC), and endpoint 2025D is a server such as an Internet web server. The PC 2025C may be connected to the private network 2024 via a wired connection such as a wired Ethernet connection or a wireless connection using, for example, the IEEE 802.11 protocol.

侵入検知システム(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 network devices 2025A-2025D operating within private network 2024. Each IDS 2018 receives a packet stream 2022 of network traffic passing through the host network processing device 2025, parses it, and then identifies all packets 2016 that contain viruses in the packet stream 2022 and identifies them Discard. In one embodiment, IDS 2018 is implemented using a reconfigurable semantic processor (RSP) described in more detail below. However, it will be appreciated that IDS 2018 is not limited to embodiments using RSP, and other processing devices can also be used.

ある実施例では、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, IDS 2018 is installed in edge router 2025A. The edge router 2025A connects the private network 2024 to the external public network 2012. In one embodiment, IDS 2018 may be implemented in a network processing device that has not traditionally performed IDS operations. For example, IDS 2018 may be implemented in a router or switch 2025B. In yet another example, IDS 2018 may be implemented in one or more endpoint devices (eg, in PC 2025C or web server 2025D). Implementing the intrusion detection system 2018 in different network processing devices 2025A-2025D will provide more complete intrusion detection, and the virus 2026 that has entered the private network 2024 via multiple different access points It can be removed except for those that have entered through 2025A. For example, a virus that accesses a private / internal network 2024 via an employee's personal computer 2025C can be detected and removed by IDS 2018 running on a PC 2025C, router 2025B, or server 2025D Can do.

別の実施例では、ネットワーク処理デバイス2025内のIDS 2018は、私的ネットワーク2024に起因するウィルス2016Aを検出し、それを取り除くのに用いられる。例えば、PC 2025Cの操作者は、公的IPネットワーク2012内で稼動しているネットワークデバイスへ向けられたウィルス2106Aを生成するかもしれない。このウィルス2016Aが公的IPネットワーク2012へと出力される前に、このウィルスを識別してそれを取り除くために、内部ネットワーク2024内で稼動している複数のIDS 2018のどのような組み合わせも、用いることができる。   In another embodiment, IDS 2018 in network processing device 2025 is used to detect and remove virus 2016A due to private network 2024. For example, an operator of PC 2025C may generate virus 2106A that is directed to a network device operating within public IP network 2012. Use any combination of multiple IDS 2018 running in the internal network 2024 to identify and remove the virus 2016A before it is output to the public IP network 2012 be able to.

セマンティックプロセッサは、私的ネットワーク2024の全範囲にわたってアンチウィルスオペレーションを組み込み、分散させることを可能にする。例えば、このセマンティックプロセッサは、ネットワークルーターまたはスイッチ2025Bの複数のポート内で侵入検知オペレーションを実施することができる。組み込まれた侵入検知システムIDS 2018は、現在の境界アンチウィルス検出スキーム(current perimeter anti virus scheme)よりも強固であり、この現在の境界アンチウィルス検出スキームよりも効果的な侵入検知を提供する。この侵入検知スキームは、電子メールの添付ファイルなどの特定の疑わしいデータタイプを処理する必要はなく、データフローに対して、ネットワークの送信速度において、オフライン状態で実行される。   Semantic processors allow for the incorporation and distribution of anti-virus operations across the entire private network 2024. For example, the semantic processor can perform intrusion detection operations within multiple ports of a network router or switch 2025B. The integrated intrusion detection system IDS 2018 is more robust than the current perimeter anti virus scheme and provides more effective intrusion detection than this current perimeter anti virus detection scheme. This intrusion detection scheme does not need to handle certain suspicious data types, such as email attachments, and is performed off-line for data flows at network transmission rates.

構文的な要素を用いた侵入検知 (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 input data stream 2071 includes a plurality of packets 2072. These packets 2072 include one or more headers 2072A and a payload 2072B. A conventional intrusion detection system indiscriminately compares each byte 2074 of each packet 2072 in the data stream 2071 with the threat signature 2058. All filters 2075 generated by comparison with the threat signature are then applied to the entire data stream 2071.

この侵入検知スキームは、不必要にコンピューティングリソースを消費する。例えば、ヘッダーデータ2072Aのような、データストリーム2071内の情報の一部は、脅威を含んでいることはまず無いであろう。それにもかかわらず、図32Bの侵入検知システムは、無差別に(blindly)、データストリーム2071内の各バイトを脅威シグネチャ2058と比較する。これは、侵入検知を実行しているコンピューティングリソースに、不必要に負担を負わせる。   This intrusion detection scheme consumes computing resources unnecessarily. For example, some information in the data stream 2071, such as header data 2072A, is unlikely to contain a threat. Nevertheless, the intrusion detection system of FIG. 32B blindly compares each byte in the data stream 2071 with the threat signature 2058. This unnecessarily burdens the computing resources performing intrusion detection.

また、図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 threat signature 2058 associated with an email virus applies to all packets 2072 regardless of whether the packet 2072 actually contains an email message. Accordingly, the threat signature 2058 associated with the email virus may be compared to a packet 2072 containing an HTTP message. This further limits the scalability of this intrusion detection system.

図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 IDS 2018 that verifies syntax elements in a data stream to detect viruses more efficiently. This IDS 2018 identifies the session context 2082 associated with the packet 2072 using a parser. For example, during an initial parsing operation, one or more media access control (MAC) address 2076A, Internet Protocol (IP) address 2076B, and Transfer Control Protocol (TCP) address 2076C may be identified. In this example, the parser may specify that packet 2072 contains a Simple Mail Transfer Protocol (SMTP) email message. These session context 2082 identifiers 2076A-2076D are otherwise called syntax elements.

構文要素2076を特定することで、IDS 2018は、より効率的にウィルスまたはその他のマルウェア脅威を検出し、それらを取り除くことができる。例えば、IDS 2018は、当該パケット2072の先頭(beginning)で検出されるセッションコンテキスト2082に基づいてさらなる侵入検知オペレーションをカスタマイズすることができる。例えば、セッションコンテキスト2082は、パケット2072は電子メールメッセージを含んでいるとして識別する。その結果、IDS 2018は、特に電子メールメッセージと関連しているさらなる構文的要素2076E−2076Hを検索し、識別することができる。さらに正確に言えば、ウィルスを含んでいるかもしれない電子メールのセマンティック要素を識別する。   By identifying syntax element 2076, IDS 2018 can more efficiently detect and remove viruses or other malware threats. For example, IDS 2018 can customize further intrusion detection operations based on the session context 2082 detected at the beginning of the packet 2072. For example, session context 2082 identifies packet 2072 as containing an email message. As a result, IDS 2018 can search and identify additional syntactic elements 2076E-2076H that are specifically associated with email messages. More precisely, it identifies the semantic elements of email that may contain viruses.

例えば、IDS 2018は、電子メールメッセージ内の「送信先(宛先)(to):」、「差出人(送信元)(from):」および「題名(subject):」などのフィールド(fields)についての情報を含んでいるセマンティック要素2076E−2076Gを識別する。また、IDS 2018は、電子メールメッセージ内に含まれている電子メール添付ファイル2076Hを識別してもよい。この例では、ウィルスまたはマルチウェアが含まれている可能性があるのは、電子メール添付ファイルを含んでいる構文要素2076H内だけである。他の構文要素2076A−2076Dは、侵入脅威とはならないであろう。従って、電子メール添付ファイルを含んでいる構文要素2076Hだけが該脅威シグネチャ2058と比較される。   For example, IDS 2018 uses fields such as “To: (To):”, “From: (From):” and “Subject:” in email messages. Semantic elements 2076E-2076G containing information are identified. IDS 2018 may also identify the email attachment 2076H included in the email message. In this example, a virus or multiware may only be included in the syntax element 2076H that includes the email attachment. Other syntax elements 2076A-2076D would not be an intrusion threat. Thus, only the syntax element 2076H containing the email attachment is compared with the threat signature 2058.

他の構文要素2076A−2076Dは、パケット2072をフィルタリングするのに用いられるフィルタ2070を生成するのを補助するのに用いてもよい。例えば、フィルタ2070は、構文要素2076F内で確認されたものと同一の「差出人(from):」フィールド(field)を持っているか、構文要素2076B内で確認されたものと同一のIP送信元アドレスを持っている、すべてのパケットをフィルタリングするように生成されてもよい。   Other syntax elements 2076A-2076D may be used to help generate a filter 2070 that is used to filter the packet 2072. For example, filter 2070 has the same “from:” field as identified in syntax element 2076F, or the same IP source address as identified in syntax element 2076B. May be generated to filter all packets.

従って、IDS 2018は、IPセッションコンテキスト2082、データストリームのトラフィック特性および構文2076に基づいて侵入の企図を検出することができる。これらの侵入は、この後、ネットワークトラフィック内で識別された構文要素2076を、厄介だと見なされるイベントを記述している脅威シグネチャ規則2058と比較することで検出される。これらの規則2058は、いかなる活動(例えば、特定のサービスと接続されている特定のホスト)を記述することもできるし、どのような活動が警告するに相当するかについて(例えば、所定の数の異なるホストに対する攻撃があると「スキャン」を構成するとする)、あるいは既知の攻撃や既知の脆弱性に対するアクセスを記述しているシグネチャについて記述することができる。   Accordingly, IDS 2018 can detect intrusion attempts based on IP session context 2082, data stream traffic characteristics and syntax 2076. These intrusions are then detected by comparing the syntax element 2076 identified in the network traffic with a threat signature rule 2058 that describes the event considered to be troublesome. These rules 2058 can describe any activity (eg, a particular host connected to a particular service), and what activity corresponds to a warning (eg, a predetermined number of You can describe a signature that describes access to a known attack or a known vulnerability (assuming an attack against a different host constitutes a “scan”).

一定のパケットディレイ (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 IDS 2018. Intrusion monitoring operations 2040 may be performed locally within a reconfigurable semantic processor (RSP) 2100 or other intrusion monitoring circuitry operating within or external to the RSP 2100. Can be combined and executed.

図33および34に関して、ブロック2048Aで、RSP 2100は、入力ポート2120からパケット2022を受信する。RSP 2100は、ブロック2048Bで、ウィルスや別タイプの脅威を含んでいる第一カテゴリーのパケット2032Aを廃棄する予備的な(初期)脅威フィルタリングオペレーションを実施してもよい。この初期フィルタリング2048Bは、例えば、所定の既知の脅威シグネチャを有するテーブルにアクセスすることで実行されてもよい。この初期フィルタリングは、特定のデータ2032Aを、IDS 2018によってさらに処理されるのを防ぐ。例えば、サービス妨害攻撃や、既知のウィルス攻撃や、認証されていないIPセッションを検出することができれば、IDS 2018によってさらに処理することなく関連しているパケットを取り除くことができる。   33 and 34, at block 2048A, RSP 2100 receives packet 2022 from input port 2120. The RSP 2100 may perform a preliminary (initial) threat filtering operation at block 2048B that discards a first category packet 2032A containing a virus or another type of threat. This initial filtering 2048B may be performed, for example, by accessing a table having a predetermined known threat signature. This initial filtering prevents certain data 2032A from being further processed by IDS 2018. For example, if a denial-of-service attack, a known virus attack, or an unauthenticated IP session can be detected, IDS 2018 can remove the associated packet without further processing.

ブロック2048Cで、RSP 2100は、残っているパケット2022をパケットディレイ(遅延)バッファ2030へ格納する。ある例では、このパケットディレイ(遅延)バッファ2030は、ダイナミックランダムアクセスメモリ(DRAM)もしくは、一時的に入力データストリーム2022をバッファするようにサイズ調整された別タイプのメモリである。ブロック2048Dで、RSP 2100はさらに、入力データストリームの構文を識別する。例えば、RSP 2100は、電子メールメッセージを含んでいるパケットを識別するかもしれない。   In block 2048C, the RSP 2100 stores the remaining packet 2022 in the packet delay buffer 2030. In one example, the packet delay buffer 2030 is a dynamic random access memory (DRAM) or another type of memory that is sized to temporarily buffer the input data stream 2022. At block 2048D, RSP 2100 further identifies the syntax of the input data stream. For example, RSP 2100 may identify a packet that includes an email message.

ウィンドウズ(登録商標)ベースの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 may identify a packet corresponding to some combination of SMTP and MIME protocols at block 2048D.

RSP 2100は、ブロック2048Eで、データストリーム2022に関して識別された構文に対応するトークン (token) 2068を生成する。例えば、トークン2068は、識別された電子メールメッセージの特定の部分要素を含んでいるかもしれない。この部分要素の例としては、電子メッセージの差出人(「From:」)、電子メールメッセージの宛先(「To:」)、電子メールメッセージの題名(「Subject:」)、電子メールが送られた時間(「Sent:」)、電子メールメッセージに含まれている添付ファイルなどがある。RSP 2100はこのセッション情報を分析するので、ネットワーク処理デバイス(例えば、ルーターやスイッチなど)内での脅威フィルタリングは、単一のパケット内で見つる要素に限定されない。すなわち、TCPセッションの乗っ取り企てや、FTPストリームを迂回させようとする企てや、HTTPS証明書を偽造しようとする企てなどもフィルタリングする。   The RSP 2100 generates a token 2068 corresponding to the syntax identified for the data stream 2022 at block 2048E. For example, token 2068 may include certain subelements of the identified email message. Examples of subelements include the sender of the email message (“From:”), the email message destination (“To:”), the email message subject (“Subject:”), and the time the email was sent. ("Sent:"), and attachments included in email messages. Because the RSP 2100 analyzes this session information, threat filtering within a network processing device (eg, router, switch, etc.) is not limited to elements found within a single packet. In other words, it also filters attempts to hijack TCP sessions, attempts to bypass FTP streams, attempts to forge HTTPS certificates, and so on.

トークン2086は、ブロック2048Fで、パケットディレイ(遅延)バッファ2030内に含まれているデータの構文に対してカスタマイズされている第二のさらに徹底したフィルタセットを動的に生成するのに用いられる。例えば、トークン2068は、電子メールメッセージ内に含まれているウィルスと関連付けられたフィルタ2070を生成するのに用いられる。これは、IDS 2018の拡張性にとって重要である。データの構文と関連付けられたフィルタを生成することにより、このIDSは、より効率的に脅威をスキャンすることができる。例えば、IDS 2018は、現在処理されている種類のデータには不適当なフィルタを適用することに時間を浪費せずに済む。   The token 2086 is used at block 2048F to dynamically generate a second more thorough filter set that is customized to the syntax of the data contained in the packet delay buffer 2030. For example, the token 2068 is used to generate a filter 2070 that is associated with a virus contained within an email message. This is important for the scalability of IDS 2018. By generating a filter associated with the syntax of the data, this IDS can scan for threats more efficiently. For example, IDS 2018 saves time in applying inappropriate filters to the type of data currently being processed.

RSP 2100は、ブロック2048Gで、このカスタマイズされたフィルタセット2070を、パケットディレイ(遅延)バッファ2030内に格納されているデータへ適用する。フィルタ2070によって識別された脅威を含んでいるすべてのパケット2032Bは廃棄される。このデータが、あらかじめ決められた一定の時間、パケットディレイ(遅延)バッファ2030内に格納された後、RSP 2100は、ブロック2048Hで、該データを出力ポート2152へ出力する。   The RSP 2100 applies this customized filter set 2070 to the data stored in the packet delay buffer 2030 at block 2048G. All packets 2032B containing the threat identified by filter 2070 are discarded. After this data is stored in the packet delay buffer 2030 for a predetermined time, the RSP 2100 outputs the data to the output port 2152 at block 2048H.

パケットディレイ(遅延)バッファ2030によって提供されるこの一定のディレイ(遅延)は、監視オペレーション2040に、時間を与える。この時間は、脅威を査定し、負担している処理の中に新しい脅威があるかどうか判定し、構文と関連付けられたフィルタ2070のセットを形成し、当該データ2034が出力ポート2152から出力される前にこれらのフィルタを適用するための時間である。1Gbps(1ギガビット毎秒)のイーサネットLANシステムに対して、バッファ2030内でかけられるディレイ(遅延)は、通常、約20ミリ秒(ms)から50ミリ秒(ms)となる。もちろん、他の一定にしたディレイ(遅延)時間も用いることもできる。   This constant delay provided by the packet delay buffer 2030 gives time to the monitoring operation 2040. This time assesses the threat, determines if there is a new threat in the burden of processing, forms a set of filters 2070 associated with the syntax, and the data 2034 is output from output port 2152 It is time to apply these filters before. For a 1 Gbps (1 gigabit per second) Ethernet LAN system, the delay applied in the buffer 2030 is typically about 20 milliseconds (ms) to 50 milliseconds (ms). Of course, other constant delay times can also be used.

RSP 2100は、データストリーム2022を処理するために今までにない解析技術を用いる。これは、RSP 2100が、侵入監視オペレーション2040を、同一のネットワーク処理デバイス内で実行されているかもしれない他の入力ネットワークルーティングオペレーションからオフラインにすることなく、IDS 2018をネットワークの回線転送速度で実施することを可能にする。これは、RSP 2100が、入力パケット2022を一定にしたパケットディレイ(遅延)をかけて処理することを可能にする。このパケットディレイ(遅延)は、侵入者が侵入検知システムを実行するネットワーク処理デバイス2025(図32A)を識別し、それを回避するのを困難にする。   The RSP 2100 uses unprecedented analysis techniques to process the data stream 2022. This allows RSP 2100 to perform IDS 2018 at the network line rate without taking intrusion monitoring operation 2040 offline from other input network routing operations that may be running within the same network processing device. Make it possible to do. This allows the RSP 2100 to process with a constant packet delay of the incoming packet 2022. This packet delay makes it difficult for an intruder to identify and avoid the network processing device 2025 (FIG. 32A) running the intrusion detection system.

例えば、侵入者は、私的ネットワーク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 input port 2120 and output port 2152 that is independent of the type of data 2022 and the type of filter generated and applied to that data stream 2022, IDS 2018 prevents intruders from identifying the network processing device 2025 running IDS 2018. Of course, this is just one embodiment, and other IDS embodiments 2018 may not be performed with a constant packet delay.

別の実施例では、RSP 2100は、識別された特定の種類のデータにだけ一定のディレイをかけ、一方で、他のデータは一定のディレイをかけることなく処理する。データストリームの構文を識別することで、IDS 2018は、ウィルスに関してスキャンする必要があるデータストリームと、ウィルスに関してスキャンする必要がないデータストリームと、を識別することができる。IDS 2018は、その後、理にかなったやり方で、スキャンされたデータストリームに対してだけ一定のディレイをかける。例えば、RSP 2100は、TCP SYNメッセージを含んでいると識別されたパケットに一定のディレイをかけてもよい。このSYNパケット内に何の不正(irregularity)も検出されなかった場合、RSP 2100は、図34と関連して前述したような、一定のディレイをかけることなく、それ以降に(subsequently)受信されるTCPデータパケットを受信して、それらを処理してもよい。それゆえ、確立されていないTCPセッションは、他のトラフィックが遅延させられないのに対して、遅延させられるかもしれない。   In another embodiment, the RSP 2100 only delays certain identified types of data while processing other data without constant delay. By identifying the syntax of the data stream, IDS 2018 can identify data streams that need to be scanned for viruses and data streams that do not need to be scanned for viruses. IDS 2018 then delays only the scanned data stream in a reasonable way. For example, the RSP 2100 may apply a certain delay to a packet identified as containing a TCP SYN message. If no irregularity is detected in this SYN packet, the RSP 2100 is received (subsequently) without a certain delay as described above with reference to FIG. TCP data packets may be received and processed. Therefore, an unestablished TCP session may be delayed while other traffic is not delayed.

図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 IDS 2018 shown in FIG. Packets from data stream 2022 are received by packet input buffer (PIB) 2140 via input port 2120. The bytes from packet 2022 are processed by a direct execution parser (DXP) 2180 and a semantic processing unit (SPU) 2200. In this example, one or more SPUs 2200 can simultaneously perform an access control list (ACL) matching operation 2050, a session search operation 2052, and a token generation operation.

ACL照合オペレーション2050は、データストリーム2022内の入力パケットをアプリオリであると知られている(that are known a priori)フィルタ2064の初期ACLリストと照合する。ACL照合オペレーション2050は、ACLフィルタ2064と適合したパケットを取り除き、その後残ったパケット2022をディレイ(遅延)FIFO 2030へとロードする。   ACL matching operation 2050 matches the incoming packets in data stream 2022 against the initial ACL list of filter 2064 that are known a priori. ACL matching operation 2050 removes packets that match ACL filter 2064 and then loads the remaining packets 2022 into delay FIFO 2030.

セッション検索オペレーション2052は、パケット2022を既知で、有効なIPセッションと照合する。例えば、DXP 2180は、TCP SYNメッセージに関するTCPセッション、ポート番号および到着レートを識別するセッション検索2052に対して情報を送ってもよい。セッション検索2052は、このTCPセッションおよびポート番号は今までに確認されているかどうかと、そしてそれがいつなのかを判定する。パケット2022が有効なTCP/IPセッションと識別された場合、これらのパケット2022を、出力バッファ(POB)2150へ直接送ってもよい。   Session search operation 2052 matches packet 2022 with a known and valid IP session. For example, the DXP 2180 may send information to a session search 2052 that identifies the TCP session, port number, and arrival rate for the TCP SYN message. Session search 2052 determines whether and when this TCP session and port number have been confirmed so far. If packets 2022 are identified as valid TCP / IP sessions, these packets 2022 may be sent directly to output buffer (POB) 2150.

トークン生成オペレーション2054は、DXP 2180によって識別されたデータストリーム2022の構文に従ってトークン2068を生成する。ある例では、トークンジェネレータ2054は、5タプルデータセットを含んでいるトークン2068を生成する。この場合、5タプルデータセットには、入力バッファ2140内で処理されているパケットと関連している送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号が含まれる。これらのトークン2068は、TCPパケット内のあらゆる異常(anomaly)(例えば、未知のIPまたはTCPオプションなど)を含んでもよい。   Generate token operation 2054 generates token 2068 according to the syntax of data stream 2022 identified by DXP 2180. In one example, the token generator 2054 generates a token 2068 that includes a 5-tuple data set. In this case, the 5-tuple data set includes the source IP address, destination IP address, source port number, destination port number, and protocol number associated with the packet being processed in the input buffer 2140. These tokens 2068 may include any anomaly (eg, unknown IP or TCP options) in the TCP packet.

以下で説明する例では、トークン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, DXP 2180 may identify packets associated with a Simple Mail Transfer Protocol (SMTP) session, as described in FIG. 32C. The token generation operation 2054 then extracts specific information such as SMTS / MIME attachments from the email session. An example of a token 2068 associated with an email message is generated using the following Type-Length-Value (TLV) format.
Token # 1
Type: SMTP / MIME Attachment (method for transferring files in email messages)
Length: # of bytes in the file
Value: actual file
In another example, DXP 2180 identifies a packet 2022 that is associated with a hypertext markup language (HTML) session in input buffer 2140. Token generation operation 2054 accordingly generates a token that is specifically associated with the following HTTP session and that identifies the following HTTP session:
Token # 2
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
Token 2068 is formatted by token generation operation 2054 as described above so that the syntax information contained in token 2068 can be easily compared with threat signature 2058 by threat / virus analysis and anti-ACL agent 2056. . In one example, the countermeasure agent 2056 is a general purpose central processing unit (CPU) that compares the token 2068 with a predetermined threat signature 2058 stored in memory. For example, to measure agent 2056 to determine whether a new intrusion protection filter is necessary (decide), "BRO" - http://ee.ibl.gov/bro.html and, "SNORT" - http: // Various existing algorithms such as www.snort.org may be used. Both of these algorithms are hereby incorporated by reference into the present application. The threat signature 2058 may be supplied by, for example, a commercially available intrusion detection database available from SNORT or McAfee.

対策エージェント2056は、トークン2068と脅威シグネチャ2058の間にあった適合(matches)例に対応する出力ACLフィルタ2070を動的に生成する。例えば、脅威シグネチャ2058は、トークン2068の一つの中に含まれている電子メール添付ファイルのウィルスを識別するかもしれない。対策エージェント2056は、その後、ウィルスに感染した電子メール添付ファイルを含んでいるパケットの送信元IPアドレスを含んでいるフィルタ2070を動的に生成する。このフィルタ2070は、ACLオペレーション2062へ出力される。その後、このオペレーションは、ディレイ(遅延)FIFO 2030内から、フィルタ2070によって特定される送信元IPアドレスを含んでいるパケット2016をすべて廃棄する。その後、残っているパケットは出力バッファ2150へ出力される。   The countermeasure agent 2056 dynamically generates an output ACL filter 2070 that corresponds to an example of matches between the token 2068 and the threat signature 2058. For example, threat signature 2058 may identify an email attachment virus contained within one of tokens 2068. The countermeasure agent 2056 then dynamically generates a filter 2070 that includes the source IP address of the packet that contains the email attachment that is infected with the virus. This filter 2070 is output to the ACL operation 2062. This operation then discards all packets 2016 that contain the source IP address identified by filter 2070 from within the delay FIFO 2030. Thereafter, the remaining packets are output to the output buffer 2150.

再構成可能なセマンティックプロセッサ(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 IDS 2018 described above in one embodiment. The RSP 2100 includes an input buffer 2140 for buffering a packet data stream received via the input port 2120, and an output buffer 2150 for buffering a packet data stream output via the output port 2152. Have.

直接実行パーサ(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”). Input buffer 2140, output buffer 2150, and recirculation buffer 2160 are preferably first-in-first-out (FIFO) buffers. In addition, the DXP 2180 controls packet processing by a semantic processing unit (SPU) 2200. This semantic processing unit (SPU) controls the transfer of data between the buffers 2140, 2150 and 2160 and the memory subsystem 2215. The memory subsystem 2215 stores packets received from the input port 2120 and also stores a threat signature 2058 (FIG. 35) that is used to identify threats in the input data stream.

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に対する入力をなす。   RSP 2100 uses at least three tables to perform a given IDS operation. A code 2178 for retrieving the generation rule 2176 is stored in the parser table (PT) 2170. The grammar generation rule 2176 is stored in a generation rule table (PRT) 2190. Code segments executed by the SPU 2200 are stored in a Semantic Code Table (SCT) 2210. The code 2178 in the parser table 2170 is stored in a manner such as a row-column format or a content addressable format. In row-column format, the rows of parser table 2170 are indexed by the non-terminating code NT 2172 provided by internal parser stack 2185, and the columns of parser table 2170 are extracted from the beginning of the data in input buffer 2140. Is indexed by the input data value DI [N] 2174. In the content addressable format, the concatenation of the non-terminal code 2172 from the parser stack 2185 and the input data value 2174 from the input buffer 2140 forms the input to the parser table 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 code 2178 from parser table 2170. Tables 2170 and 2190 may be linked as shown in FIG. 36 such that queries against parser table 2170 send back directly production rules 2176 applicable to non-terminal code 2172 and input data value 2174. The DXP 2180 replaces the non-terminal code at the top of the parser stack 2185 with a production rule (PR) 2176 sent back from the PRT 2190, and then continues to analyze the data from the input buffer 2140.

セマンティックコードテーブル2210もまた、パーサテーブル2170により生成されたコード2178か、生成規則テーブル2190により生成された生成規則2176、もしくはその両方によってインデックス付けされる。通常、解析結果は、所定の生成規則2176に対してSPU 2200がセマンティックコードテーブル2210からのコードセグメント2212をロードしかつ実行すべかどうかを、DXP 2180が検出することを可能にする。   Semantic code table 2210 is also indexed by code 2178 generated by parser table 2170, generation rule 2176 generated by generation rule table 2190, or both. Typically, the analysis results allow DXP 2180 to detect whether SPU 2200 should load and execute code segment 2212 from semantic code table 2210 for a given production rule 2176.

SPU 2200は、コンテキストシンボルによるアドレス化が可能なように構成された(structured)メモリインターフェイスを提供するメモリサブシステム2215に対するいくつかのアクセスパスを有する。メモリサブシステム2215、パーサテーブル2170、生成規則テーブル2190およびセマンティックコードテーブル2210は、内臓メモリか、外部メモリデバイス(例えば、同期動的ランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM))を用いるか、もしくはこれらのリソースを組み合わせて用いる。各テーブルまたはコンテキストは、一つまたは複数の他のテーブルまたはコンテキストを有する共有物理メモリ領域に、コンテキストインターフェイスを提供するだけでよい。   The SPU 2200 has a number of access paths to the memory subsystem 2215 that provides a structured memory interface that can be addressed by context symbols. Memory subsystem 2215, parser table 2170, generation rule table 2190 and semantic code table 2210 can be internal memory or external memory devices (eg synchronous dynamic random access memory (DRAM) or content addressable memory (CAM)) Or use a combination of these resources. Each table or context need only provide a context interface to a shared physical memory area that has one or more other tables or contexts.

管理(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 SPU 2200 and the memory subsystem 2215. The MCPU 2056 implements functions desirable for the RSP 2100 that can be reasonably performed by conventional software and hardware. These functions are usually functions that are rarely used and are not executed with the highest priority (not important in time), and are not intended to be included in the SCT 210 due to the complexity of the functions. The MCPU 2056 preferably has a function of requesting the SPU 2200 to execute a task instead of the MCPU. In one embodiment, the MCPU 2056 assists in generating an access control list (ACL) that the SPU 2200 uses to filter viruses from the incoming packet stream.

メモリサブシステム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 memory subsystem 2215 includes an array machine context data memory (AMCD) 2230 for accessing data in the DRAM 2280 via a hash function (hashing function) or content addressable memory (CAM) search. The cryptographic processing block 2240 performs data encryption, decryption, and authentication, and the context control block cache 2250 caches the context control block to the DRAM 2280 and caches the context control block from the DRAM 2280. The normal cache 2260 caches the data used in the basic operations, and the streaming cache 2270 is responsible for these while the data stream is being written to the DRAM 2280 and while the data stream is being read from the DRAM 2280. Cache the data stream. The context control block cache 2250 is preferably a software controlled cache. That is, the SPU 2200 preferably determines when a cache line is used and when it is free. Circuits 2240, 2250, 2260 and 2270 are all connected between DRAM 2280 and SPU 2200. The TCAM 2220 is connected between the AMCD 2230 and the MCPU 2056.

より詳細な、RSP 2100の機能ブロックに対する設計最適化は、本発明の範囲には含まれない。適用可能なセマンティックプロセッサの機能ブロックの詳細なアーキテクチャについてのいくつかの例に関しては、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030を参照されたし。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。   More detailed design optimization for the functional blocks of RSP 2100 is not within the scope of the present invention. For some examples of detailed architecture of applicable semantic processor functional blocks, see copending US patent application entitled "Reconfigurable Semantic Processor" filed January 24, 2003 Please refer to No. 10 / 351,030. This patent application is incorporated herein by reference in its entirety.

RSPを用いた侵入検知 (Intrusion Detecton in Fragmented Packets)
RSP 2100の侵入検知コンテキストにおける役割は、特定の例によってよりよく理解できるであろう。以下の例では、RSP 2100は、電子メールメッセージ内に位置しているウィルスまたはその他のマルウェアを取り除く。当業者ならば、説明された概念は、どのようなタイプのウィルスまたは他のタイプのマルウェアの検出や、何らかの通信プロトコルを用いて転送される何らかのデータストリームに対するいろいろなタイプの侵入検知に簡単に適用できるということが理解できるであろう。
Intrusion Detecton in Fragmented Packets
The role of RSP 2100 in the intrusion detection context may be better understood by specific examples. In the following example, RSP 2100 removes a virus or other malware that is located in an email message. For those skilled in the art, the described concept can be easily applied to detect any type of virus or other type of malware, or to detect various types of intrusion on any data stream transmitted using any communication protocol. You will understand that you can.

初期侵入検知オペレーションには、入力データストリームの構文を解析し、検出することが含まれる。これらは、図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, code 2300 is associated with parsing the MAC packet header format, code 2302 is associated with IP packet processing, and another set of codes 2304 is associated with TCP packet processing. Other codes 2306 in the parser table 2170 relate to the intrusion detection 2018 described above in connection with FIGS. 32A-35, and in this example, in particular, the simple mail transfer protocol in the data stream 2022 (FIG. 35). (SMTP) Identify the packet.

PRコード2178は、生成規則テーブル2190内に格納されている対応する生成規則2176にアクセスするのに用いられる。特定の検索の実行において必要とされるのでなければ、入力値2308(例えば、現在の入力値DI[n]2174(nはバイトで選択された一致幅)と組み合わされた非終端(NT)シンボル2172)は、PRテーブル2170内で何らかの特定の順番で割り当てられる必要は無い。   The PR code 2178 is used to access the corresponding generation rule 2176 stored in the generation rule table 2190. Unless required in the execution of a particular search, a non-terminal (NT) symbol 2172 combined with an input value 2308 (eg, the current input value DI [n] 2174, where n is the match width selected in bytes) ) Need not be assigned in any particular order within the PR table 2170.

ある実施例では、パーサテーブル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 addresser 2310 that receives data value DI [n] 2174 and NT symbol 2172 from DXP 2180. Addresser 2310 concatenates NT symbol 2172 with data value DI [n] 2174 and sends this concatenated value 2308 to parser table 2170. Conceptually, it is often useful to look at the structure of parser table 2170 as a matrix with one PR code 2178 for each unique combination of NT code 2172 and data value 2174. The invention embodiments are not so limited. Different types of memory and memory configurations may be appropriate for different applications.

ある実施例では、パーサテーブル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 addresser 2310 uses NT code 2172 and input data value DI [n] 2174 as a key for CAM to retrieve PR code 2178. Use. The CAM is preferably a ternary CAM (TCAM) populated with TCAM entries. Each TCAM entry includes an NT code 2312 and a DI [n] match value 2314 (DI [n] match value). Each NT code 2312 can hold a plurality of TCAM entries.

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, PR code 2178 requires that only a few bits or bytes of DI [n] 2174 match the coded pattern in order for parser table 2170 to find a match.

例えば、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 NT code NT_SMTP 2312A for an SMTP packet, followed by an additional byte 2314A (eg, an email attachment file) indicating that the SMTP packet contains a particular type of content. Label) may follow. The remaining bytes of this TCAM line are set to “Don't Care”. Thus, when NT_SMTP 2312A and several bytes of DI [N] are presented to the parser table 2170, the first few bytes of DI [N] (first set of bytes of DI [N]) If so, a match will occur no matter what the remaining bytes of DI [N] contain.

パーサテーブル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 NT 2172 and DI [N] 2174, as described above. In this example, PR code 2178A is associated with an SMTP packet that includes an email message. The PR code 2178A may be sent back to the DXP 2180, sent directly back to the PR table 2190, or both. In one embodiment, PR code 2178A is the row index of the TCAM entry that creates the conformance.

図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 addresser 2320 receives the PR code 2178 from either the DXP 2180 or the parser table 2170 and receives the NT symbol 2172 from the DXP 2180. Preferably, the received NT symbol 2172 is the same NT symbol 2172 as the NT symbol sent to the parser table 2170 and is used to place the received PR code 2178.

アドレッサ2320は、これらの受け取ったPRコード2178およびNTシンボル2172を用いて対応する生成規則2176にアクセスする。アドレッサ2320は、一部の実施例においては必ずしも必要ではないが、使用される場合は、DXP 2180の一部や、PRT 2190の一部として設けることができ、また中間(intermediate)の機能ブロックとして設けることができる。例えば、パーサテーブル2170またはDXP 2180がアドレスを直接作る場合、アドレッサは必要とされない。   The addresser 2320 uses the received PR code 2178 and the NT symbol 2172 to access the corresponding generation rule 2176. The addresser 2320 is not necessarily required in some embodiments, but if used, it can be provided as part of the DXP 2180 or part of the PRT 2190, or as an intermediate functional block. Can be provided. For example, if the parser table 2170 or DXP 2180 creates the address directly, no addresser is required.

生成規則テーブル2190に格納される生成規則2176は、三つのデータセグメントを含む。これらのデータセグメントには、シンボルセグメント2177Aと、SPUエントリーポイント(SEP)セグメント2177Bと、スキップバイトセグメント2177Cと、が含まれる。これらのセグメントは、長さ固定のセグメントでも長さ可変のセグメントであってもよく、ヌル終端化されている(null-terminated)のが好ましい。シンボルセグメント2177Aは、パーサスタック2185(図36)上へプッシュされる終端シンボルか、非終端シンボルか、またはその両方を有している。SEPセグメント2177Bは、データセグメントの処理中にSPU 2200によって使用されるSPUエントリーポイント(SEP)を収容している。スキップバイトセグメント2177Cは、入力バッファ2140によって自身のバッファポインターをインクリメントし、入力ストリームの処理を進めるために使用されるスキップバイトデータを有している。また、生成規則の処理において有用なその他の情報も生成規則2176の一部として格納することができる。   The generation rule 2176 stored in the generation rule table 2190 includes three data segments. These data segments include a symbol segment 2177A, an SPU entry point (SEP) segment 2177B, and a skip byte segment 2177C. These segments may be fixed length segments or variable length segments, and are preferably null-terminated. Symbol segment 2177A has terminal symbols, non-terminal symbols, or both that are pushed onto parser stack 2185 (FIG. 36). SEP segment 2177B contains the SPU entry point (SEP) used by SPU 2200 during processing of the data segment. The skip byte segment 2177C has skip byte data used to increment its buffer pointer by the input buffer 2140 and proceed with the processing of the input stream. Also, other information useful in the production rule processing can be stored as part of the production rule 2176.

この例では、生成規則コード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 more production rules 2176A indexed by production rule code 2178A correspond to SMTP packets identified in input buffer 2140. The SEP segment 2177B points to the SPU code 2212 in the semantic code table 2210 of FIG. This SPU code, when executed by SPU 2200, performs various ACL matching 2050 operations, session search 2052 operations and token generation 2054 operations as described above in connection with FIG. In one embodiment, SPU 2200 has an array of semantic processing elements that can be operated in parallel. SEP segment 2177B in generation rule 2176A may invoke one or more SPUs 2200 to perform ACL matching operation 2050, session search operation 2052 and token generation operation 2054 in parallel.

前述したように、パーサテーブル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 IP grammar 2302 included in the parser table 2170 may include a production rule code 2178 associated with the identified NT_IP destination address in the input buffer 2140.

生成規則テーブルコード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 conformance data value 2314 in the generation rule table code 2302 may include the IP address of the network processing device to which the RSP 2100 belongs. If the input data DI [I] 2174 associated with the NT_IP code 2172 does not have a destination address contained in the conformance value 2314 for the PR code 2302, the default generation rule code 2178 is provided in the generation rule table 2190 May be. The default generation rule code 2178 may point to the generation rule 2176 in the generation rule table 2190. The generation rule 2176 here instructs the DXP 2180 and / or the SPU 2200 to discard the packet from the input buffer 2140.

セマンティックプロセッシングユニット(SPU)
前述したように、DXP 2180は、IPセッション、TCPセッションのような入力ストリーム内の特定の構文要素(現在の例ではSMTP電子メールセッション)を識別する。これらの構文解析オペレーションは、IDSシステム2018の全体的な性能にとって重要である。DXP 2180によって入力ストリームの実際の構文が識別されるので、図35と関連して前述したようなそれに続くIDSオペレーションは、今ではSPU 2200によってより効率的に実行することができる。
Semantic processing unit (SPU)
As mentioned above, DXP 2180 identifies specific syntax elements in the input stream, such as IP sessions, TCP sessions (SMTP email sessions in the current example). These parsing operations are important to the overall performance of the IDS system 2018. Since DXP 2180 identifies the actual syntax of the input stream, subsequent IDS operations as described above in connection with FIG. 35 can now be performed more efficiently by SPU 2200.

例えば、SPU 2200は、電子メールメッセージと関連付けられているACLフィルタを、解析されたデータストリームに適用するだけでよい。これによりいくつかの利点が得られる。第一に、必ずしも、すべてのパケットのすべてのバイトを、すべての脅威シグネチャ2058(図35)と比較しなくてもよい。その代わりに、電子メールメッセージと関連している脅威シグネチャのサブネットだけをSMTPパケットに適用すればよい。これには、IDS 2018の拡張性を増加させるという実質的な利点がある。また、これによって、IDS 2018がより多くのウィルスとマルウェアを検出し、より高いパケットレートで動作することが可能となる。   For example, the SPU 2200 need only apply the ACL filter associated with the email message to the parsed data stream. This provides several advantages. First, not all bytes of every packet need necessarily be compared with every threat signature 2058 (FIG. 35). Instead, only the subnet of the threat signature associated with the email message need be applied to the SMTP packet. This has the substantial advantage of increasing the scalability of IDS 2018. This also allows IDS 2018 to detect more viruses and malware and operate at higher packet rates.

図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 ACL matching operation 2050 and output ACL operation 2062 previously described in connection with FIG. At block 2040, the DXP 2180 signals the SPU 2200 to load the appropriate microinstruction from the SCT 2210. These microinstructions perform the ACL matching operation 2050 and the output ACL operation 2062 previously described in connection with FIG. As described above in connection with FIG. 38, DXP 2180 signals SPU 2200 via SPU entry point (SEP) segment 2177B included in production rule 2176A.

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 SCT 2210 accessed in response to SEP segment 2177B, SPU 2200 obtains the particular syntax element in the input data stream identified by DXP 2180 at block 2402. For example, DXP 2180 may identify a 5-tuple syntax element that includes an IP source address, an IP destination address, a destination port number, a source port number, and a protocol type. Of course, this is only an example, and other syntax elements may be identified by the DXP 2180 in the data stream 2022 (FIG. 35).

ブロック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 block 2404, the SPU 2200 compares the syntax element identified by the DXP 2180 with a priori set of ACL filters contained in the TCAM 2220. For example, an a priori ACL filter set in TCAM 2220 may include various IP addresses associated with known threats. In one example, the SPU 2200 compares the syntax element for the packet in the input buffer 2140 with the a priori filter in the TCAM 2220 by sending a syntax element such as the IP address of the packet to the TCAM 2220 via the AMCD 2230. In this case, this IP address is used as an address to the TCAM 2220. TCMA 2220 sends the result back to SPU 2200 via AMCD 2230.

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 verifies the result from TCAM 2220 at block 2406. The output from TCAM 2220 may indicate the presence of packet removal, packet storage, and possibly IP security (IPSEC) packets. For example, the TCAM 2220 may generate a packet removal flag if the IP address supplied from the packet in the input buffer 2140 matches one of the a priori filter entries in the TCAM 2220. If the IP address for input data stream 2022 does not match any of the entries in TCAM 2220, a packet storage flag is output. TCAM 2220 may also contain an entry corresponding to the encrypted IPSEC packet. If the IP address matches one of the IPSEC entries, TCAM 2220 outputs an IPSEC flag.

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 SPU 2200 removes all packets in the PIB 2140 that generate a packet removal flag in the TCAM 2220 at block 2408. The SPU 2200 can exclude a packet by simply instructing the input buffer 2140 to skip to the next packet. If the packet storage flag is output from the TCAM 2220, the SPU 2200 stores the packet from the input buffer 2140 in the DRAM 2280 in block 2410. DRAM 2280 operates as the delay FIFO 2030 described above in connection with FIGS. When the IPSEC flag is output from the TCAM 2220, the SPU 2200 may transmit the packet in the input buffer 2140 via the cryptographic processing circuit 2240 in the memory subsystem 2215. The decrypted packet is then sent back to the recirculation buffer 2160 of FIG. 36 and the ACL matching operation described above may be repeated.

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 FIFO 2030 in FIG. 35), the MCPU 2056 (countermeasure agent 2056 in FIG. 35) dynamically moves the ACL filter 2070 corresponding to the token 2068 extracted from the input data stream. To generate. This is explained in more detail below in connection with FIG. The SPU 2200 compares, at block 2412, the packet stored in the DRAM 2280 with the dynamically generated ACL filter 2070 (FIG. 35) currently stored in the TCAM 2220. For example, the SPU 2200 may use the same 5-tuple as for the packet identified in block 2402.

SPU 2200は、このパケットに関する5タプルを、TCAM 2220内の動的に生成されたフィルタ2070と比較する。TCAM 2220からパケット除去フラグという結果を生成するDRAM 2280内のパケットはすべて、その後ブロック2414で、SPU 2200によってDRAM 2280から削除される。あらかじめ決められた一定のディレイ時間の後、SPU 2200は、ブロック2416で、残りのパケットを出力ポート2152へ出力する。   The SPU 2200 compares the 5-tuple for this packet with the dynamically generated filter 2070 in the TCAM 2220. All packets in DRAM 2280 that produce a packet removal flag result from TCAM 2220 are then deleted from DRAM 2280 by SPU 2200 at block 2414. After a predetermined fixed delay time, SPU 2200 outputs the remaining packets to output port 2152 at block 2416.

CAM 2220は、他のアプリオリフィルタを有していてもよいということが理解できるであろう。例えば、CAM 2220は、パケットの中に含まれるかもしれない様々なプロトコルまたはデータと関連付けられたフィルタを有していてもよい。DXP 2180は、TCAM 2220内のフィルタと照合される(apply to)必要がある構文要素を特定し、それをSPU 2200に送る。   It will be appreciated that the CAM 2220 may have other a priori filters. For example, the CAM 2220 may have filters associated with various protocols or data that may be included in the packet. DXP 2180 identifies the syntax element that needs to be applied to the filter in TCAM 2220 and sends it to SPU 2200.

ディレイ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, IDS 2018 may generate a virus notification message that is sent to the same recipient as the recipient of the packet. This virus notification message is a message that the packet contains a virus. The virus notification message notifies the recipient to discard the packet containing the virus.

図40は、前に図35と関連して前述したセッション検索オペレーション2052の間に、SPU 2200によって実行されるオペレーションを説明している。ブロック2430で、DXP 2180は、SPU 2200にSCT 2210から適切なマイクロ命令をロードするように信号を送る。この場合、これらの適切なマイクロ命令は、図38と関連して前述したように、関連しているSEPセグメント2177Bを送ることによってセッション検索オペレーションを実行することと関連している。   FIG. 40 illustrates operations performed by the SPU 2200 during the session search operation 2052 previously described in connection with FIG. At block 2430, DXP 2180 signals SPU 2200 to load the appropriate microinstruction from SCT 2210. In this case, these appropriate microinstructions are associated with performing a session search operation by sending the associated SEP segment 2177B, as described above in connection with FIG.

ある例では、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 SPU 2200 receives the source and destination addresses and the source and destination port numbers for the incoming packet from the DXP 2180 at block 2432. SPU 2200 then compares this address and port number with the current session information for the packet contained in DRAM 2280. For some IP sessions, the SPU 2200 may need to reorder the fragmented packets in the delay FIFO 2030 running in the DRAM 2280 at block 2434. The SPU 2200 may remove all packets in the input buffer 2140 that are duplicates of previously received packets for the current IP session at block 2438.

図41は、図35と関連して前述したトークン生成オペレーション2054を説明している。ブロック2450で、DXP 2180は、図36−38と関連して前述したように、入力ストリームからのデータを解析する。ブロック2452で、DXP 2180は、入力バッファ2140内のデータストリーム内の構文要素で、ウィルスまたはマルウェアと関連しているかもしれない構文要素を識別する。上の例では、この識別には、DXP 2180が電子メールメッセージを含んでいるパケットを識別(特定)することが含まれてもよい。一方で、DXP 2180によって識別される構文要素は、IPアドレスと、送信元アドレスおよび宛先アドレスを含むIPデータフローと、特定のデータフローに対して識別されたトラフィックレートなどを含んでいればどのようなものでもよい。   FIG. 41 illustrates the token generation operation 2054 described above in connection with FIG. At block 2450, the DXP 2180 parses data from the input stream as described above in connection with FIGS. At block 2452, DXP 2180 identifies a syntax element in the data stream in input buffer 2140 that may be associated with a virus or malware. In the above example, this identification may include DXP 2180 identifying (identifying) the packet containing the email message. On the other hand, what is the syntax element identified by DXP 2180, including IP address, IP data flow including source and destination addresses, traffic rate identified for a specific data flow, etc. It may be anything.

DXP 2180は、ブロック2454で、SPU 2200にSCT 2210から特定のトークン生成オペレーションと関連したマイクロ命令をロードするように信号を送る。より詳しくは、図38のSEPセグメント2177Bによって識別されたマイクロ命令は、SPU 2200に、DXP 2180によって識別された特定の構文要素に関するトークンを生成するように命令する。   The DXP 2180 signals the SPU 2200 to load the microinstruction associated with the particular token generation operation from the SCT 2210 at block 2454. More specifically, the microinstruction identified by SEP segment 2177B of FIG. 38 instructs SPU 2200 to generate a token for the particular syntax element identified by DXP 2180.

SPU 2200は、その後ブロック2456で、識別された構文要素からトークン2068(図35)を生成する。例えば、SPUコード2212(図36)は、SPU 2200に、特定された電子メールメッセージから見つかった構文要素を抽出するように命令してもよい。SPU 2200は、パケット内の「差出人:」、「宛先:」および「題名:」フィールドからの情報を含んでいるトークンを生成してもよい。SPU 2200は、データストリーム内に存在するかもしれないどのような電子メール添付ファイルに対しても抽出を行い、トークンを生成してもよい。   The SPU 2200 then generates a token 2068 (FIG. 35) from the identified syntax element at block 2456. For example, SPU code 2212 (FIG. 36) may instruct SPU 2200 to extract syntax elements found from the identified email message. The SPU 2200 may generate a token that includes information from the “From:”, “To:” and “Title:” fields in the packet. The SPU 2200 may extract any email attachments that may be present in the data stream and generate a token.

例えば、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, SPU 2200 may generate TLV token # 1 as described above in connection with FIG.
Token # 1
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 DXP 2180 can identify many different types of syntax elements that may be associated with a threat. The DXP 2180 can invoke different SPU codes 2212 (FIG. 36) for different syntax elements. For example, as described above, DXP 2180 can also identify syntax elements that correspond to HTML messages. The DXP 2180 may send a SEP segment 2177B that instructs the SPU 2200 to generate an HTML token that may be similar to that shown below.
Token # 2
Type: HTML Bin Serve (method for transferring files in web pages)
Length: # of bytes in file
Value: actual file
The SPU 2200 formats the token for the simple application into the threat signature 2058 of FIG. 35 at block 2457. For example, the SPU 2200 formats the token into Type-Length-Value (TLV) data. The SPU 2200 may then send the formatted token at block 2458 to the MCPU 2056 of FIG. 36 or to an external threat / virus analysis and anti-ACL agent 2056 as described in connection with FIG.

ある実施例では、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 MCPU 2056 applies the token 2068 to the threat signature 2058 included in the TCAM 2220 to generate a dynamically generated set of ACL filters 2070. The SPU 2200 then matches the dynamically generated ACL filter 2070 in the TCAM 2220 with the packet stored in the DRAM 2280 delay FIFO in the output ACL operation 2062 described above in connection with FIG. All packets in the delay FIFO that match the ACL filter 2070 are removed.

ある実施例では、TCAM 2220は、脅威シグネチャテーブルおよびACLフィルタテーブルの両方を含む複数のテーブルを収容してもよい。TCAM 2220内の脅威シグネチャテーブルは、MCPU 2056によってアクセスされ、TCAM 2220内のACLフィルタは、AMCD 2230を介して複数のSPU 2200によってアクセスされる。   In one embodiment, TCAM 2220 may contain multiple tables including both threat signature tables and ACL filter tables. The threat signature table in TCAM 2220 is accessed by MCPU 2056, and the ACL filter in TCAM 2220 is accessed by multiple SPUs 2200 via AMCD 2230.

別の実施例では、外部脅威解析デバイスは、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 SPU 2200 sends the token 2068 to the external threat analysis device. The external threat analysis device then outputs the dynamically generated ACL filter 2070 to the MCPU 2056. The MCPU 2056 then writes the dynamically generated ACL filter 2070 to the TCAM 2220. SPU 2200 then accesses the ACL filter in TCAM 2220 for ACL matching operation 2050 and output ACL operation 2062 described in connection with FIG.

ACLフィルタ2070の実際の生成のされ方は、当業者には周知であるので、これ以上詳しくは説明しない。しかし、これまでに、侵入検知システムが、データストリーム内の識別された構文要素と関連しているトークンに従って動的にACLフィルタを生成したことがあるとは考えられない。   The actual generation of the ACL filter 2070 is well known to those skilled in the art and will not be described in further detail. However, it is unlikely that an intrusion detection system has dynamically generated an ACL filter according to tokens associated with identified syntax elements in the data stream.

フラグメント化されたパケットにおける侵入検知
現在は、インターネットメッセージ内で既知のパターンを検索するテキストスキャナが存在する。脅威の誤検出を避けるために、長いシークエンスのテキストは、通常、正規表現形式のパターン適合技術(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. RSP 2100 detects and reassembles the fragmented packet before performing the intrusion detection operation described above. This allows IDS to detect viruses that span multiple fragmented packets.

図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 RSP 2100 of FIG. 36 detects a virus in a fragmented packet. 36 and 42A, at block 2502, a packet (data) is received at input buffer 2140 via input port 2120. At block 2510, the DXP 2180 begins parsing the header of the packet in the input buffer 2140. If the DXP 2180 determines that the received packet is an IP fragmented packet, the DXP 2180 stops analyzing the header of the received packet. The DXP 2180 preferably analyzes the IP header completely and does not analyze any headers that belong to the following layers (TCP, UDP, iSCSI, etc.). The DXP 2180 stops parsing if it is instructed by the grammar on the parser stack 2185 or by the SPU 2200.

次のブロック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 next block 2520, the DXP 2180 signals the SPU 2200 to load the appropriate microinstruction from the SCT 2210 and read the fragmented packet from the input buffer 2140. In the next block 2530, the SPU 2200 writes this fragmented packet to the DRAM 2280 via the streaming cache 2270. Although block 2520 and block 2530 are shown as two separate steps, alternatively, they may be performed as a single step with the SPU 2200 reading and writing the packet simultaneously. . The operation in which the SPU 2200 executes reading and writing at the same time is known as the SPU pipeline method. In this operation, the SPU 2200 operates as a conduit or pipeline for streaming data that is transferred between two blocks within the semantic processor 2100.

次の判定ブロック2540では、SPU 2200は、コンテキスト制御ブロック(CCB/Context Control Brock)が適切なIPパケットフラグメントの収集や順序付けのために割り当てられているかどうかを判定する。IPフラグメント化されたパケットに対応するフラグメントを収集しかつ順付けするためのCCBは、DRAM 2280内に格納されるのが好ましい。CCBは、DRAM 2280内のIPフラグメントに対するポインタと、まだ到着していないIPフラグメント化されたパケットに対するビットマスクと、割り当てられた時間が過ぎたら、セマンティックプロセッサ2100にさらなるIPフラグメント化されたパケットを待つのをやめさせ、その後、DRAM 2280内のCCBに格納されたデータを開放させるためのタイマー値と、を有している。   In a next decision block 2540, the SPU 2200 determines whether a context control block (CCB / Context Control Brock) has been assigned for proper IP packet fragment collection and ordering. The CCB for collecting and ordering fragments corresponding to IP fragmented packets is preferably stored in DRAM 2280. CCB waits for further IP fragmented packets in semantic processor 2100 after a pointer to an IP fragment in DRAM 2280, a bit mask for an IP fragmented packet that has not yet arrived, and the allotted time And a timer value for releasing the data stored in the CCB in the DRAM 2280.

SPU 2200は、受信したIPパケットフラグメントのヘッダーからのID(identification)およびプロトコルと組み合わされている、受信したIPフラグメント化されたパケットの送信元IPアドレスを鍵として使用して、AMCD 2230のコンテントアドレッサブルメモリ(CAM)の検索機能にアクセスすることで、CCBが割り当てられているかどうか判定するのが好ましい。その他のやり方としては、このIPフラグメント鍵は、DRAM 2280内の離れたCCBテーブル内に格納される。そして、このやり方では、これらの鍵は、受信したIPパケットフラグメントのヘッダーからのIDおよびプロトコルと組み合わされている、受信したIPフラグメント化されたパケットの送信元IPアドレスを使用することでCAMとアクセスさせられる。このようにIPフラグメント鍵のアドレス化を行うことで、鍵の重複と鍵のサイズ調整の問題を回避する。   The SPU 2200 uses the source IP address of the received IP fragmented packet combined with the ID (identification) and protocol from the header of the received IP packet fragment as a key to use the content address of the AMCD 2230. It is preferable to determine whether a CCB is allocated by accessing a search function of a dressable memory (CAM). Alternatively, this IP fragment key is stored in a remote CCB table in DRAM 2280. And in this way, these keys are accessed with the CAM by using the source IP address of the received IP fragmented packet combined with the ID and protocol from the header of the received IP packet fragment. Be made. By addressing the IP fragment key in this way, the problem of key duplication and key size adjustment is avoided.

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 SPU 2200 determines that a CCB has not yet been assigned for fragment collection and ordering for a particular IP fragmented packet, the executing program proceeds to block 2550 where the SPU 2200 assigns a CCB. The SPU 2200 inputs a key corresponding to the assigned CCB to the IP fragment CCB table in the AMCD 2230, and starts a timer provided in the CCB. The key here is composed of the ID and protocol from the header of the received IP fragmented packet and the source IP address of the received IP fragment. When the first fragment for a given fragmented packet is received, the IP header is also saved in the CCB for later recirculation. For subsequent fragments, the IP header need not be preserved.

いったん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 next block 2560, the SPU 2200 is a pointer to the IP fragmented packet (excluding the IP header) in DRAM 2280 Is stored in the CCB. The pointer to the fragment can be provided in the CCB as a linked list, for example. Preferably, the SPU 2200 also updates the bit mask in the newly allocated CCB by marking a portion of the mask corresponding to the received fragment as received.

次の判定ブロック2570では、SPU 2200は、パケットからのIPフラグメントのすべてが受信されたかどうか判定する。この判定は、CCB内のビットマスクを使用して達成されるのが好ましい。当業者であれば、本発明とともに利用可能なビットマスク(すなわち均等にトラッキングを行う機構)を実施するのに容易に利用可能な多数の技術があるということを理解できるであろう。IPフラグメント化されたパケットに関するIPフラグメントのすべてを受信し終わっていない場合、セマンティックプロセッサ2100は、他のフラグメントを受信するまで、該フラグメント化されたパケットに関するこれ以上の処理を保留する。   In a next decision block 2570, the SPU 2200 determines whether all of the IP fragments from the packet have been received. This determination is preferably accomplished using a bit mask in the CCB. One skilled in the art will appreciate that there are a number of techniques that are readily available to implement the bit mask (ie, a uniform tracking mechanism) that can be used with the present invention. If all of the IP fragments for an IP fragmented packet have not been received, the semantic processor 2100 suspends further processing for the fragmented packet until it receives another fragment.

IPフラグメントのすべてを受信し終わっている場合、次のブロック2580では、SPU 2200は、DRAM 2280からIPフラグメントを正しい順序で読み込み、その後、前述した侵入検知処理のようなさらなる解析と処理のために、それらを再循環バッファ2160へ書き込む。本発明のある実施例では、SPU 2200は、特別なヘッダーと、再構築されたIPパケット(フラグメント化ビットは設定されていないまま)の最初の部分と、だけを再循環バッファ2160へ書き込む。   If all of the IP fragments have been received, in the next block 2580, the SPU 2200 reads the IP fragments from the DRAM 2280 in the correct order and then for further analysis and processing, such as the intrusion detection process described above. Write them to the recirculation buffer 2160. In one embodiment of the invention, the SPU 2200 writes only the special header and the first part of the reconstructed IP packet (with the fragmentation bit not set) to the recirculation buffer 2160.

特別なヘッダーは、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 DXP 2180 to handle reassembled IP fragmented packets stored in DRAM 2280 without having to forward all of the IP fragmented packets to recirculation buffer 2160 Makes it possible to orient. The special header can consist of a non-terminal symbol specified to load the parser grammar containing IDS operation 2018, and a pointer to the CCB. As a result, parser 180 can typically analyze the IP header and then proceed to the analysis of higher layer (eg, TCP) headers. Once the reconstructed syntax elements in the recirculating buffer 2160 that may contain viruses are identified, the DXP 2180 sends the SPU 2200 from the SCT 2210 to the intrusion detection operations 2050, 2052 and Signal to load an instruction to execute 2054. For example, if the reconstructed packet is identified as containing an email message, the DXP 2180 instructs the SPU 2200 to generate tokens corresponding to the various email fields described above. .

図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 IDS 2018 performs intrusion detection operations on multiple TCP packets. At block 2592A, a Transfer Control Protocol (TCP) session is established between the initiator and the network processing device that hosts the RSP 2100. RSP 2100 has the appropriate grammar in parser table 2170 and PRT 2190 and has microcode in SCT 2210 to establish a TCP session. In one embodiment, one or more SPUs 2200 organize and maintain state regarding TCP sessions. The cleanup and maintenance of state for this TCP session includes CCB allocation in DRAM 2280 for TCP reordering, window size limits, and when no additional TCP packets arrive from the initiator within the allocated time frame. And a timer for terminating the TCP session.

イニシエータとの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 RSP 2100 waits for a TCP packet corresponding to the TCP session established at block 2592A to arrive at the input buffer 2140. The RSP 2100 may have multiple SPUs 2200 to process incoming data, so that the RSP 2100 also waits for the next TCP packet corresponding to the TCP session established in block 2592A. In parallel, multiple packets can be received and processed.

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 input buffer 2140 via input port 2120 at block 2592C, and DXP 2180 parses the TCP header of the packet in input buffer 2140. The DXP 2180 sends microinstructions to the assigned SPU 2200. When executed, the microinstruction requests the assigned SPU 2200 to read the received packet from the input buffer 2140 and write the received packet to the DRAM 2280 via the streaming cache 2270. The assigned SPU 2200 then provides a TCP CCB, stores a pointer in the TCP CCB that points to the location of the received packet in the DRAM 2280, and then restarts the timer in the TCP CCB. The assigned SPU 2200 is then freed and can be assigned as determined by DXP 2180 for further processing.

次のブロック2592Dでは、受信したTCPパケットは、必要であれば、ペイロードデータの適切なシークエンスを確定させるために再順序付けされる。当技術分野で周知のように、TCPパケットは、先行するパケットがすべて到着している場合、適切な順番にあると見なされる。受信されたパケットが、適切な順番にあると判定された場合、担当の(responsible)SPU 2200は、SCT 2210から再循環のためのマイクロ命令をロードする。   In a next block 2592D, the received TCP packets are reordered to determine the proper sequence of payload data, if necessary. As is well known in the art, TCP packets are considered in proper order if all previous packets have arrived. If it is determined that the received packets are in the proper order, the responsible SPU 2200 loads the microinstruction for recirculation from the SCT 2210.

次のブロック2592Eでは、割り当てられたSPUは、TCPヘッダーからのTCPコネクション情報とTCP非終端を組み合わせて、特別なTCPヘッダーを作る。割り当てられたSPU 2200は、その後、特別なTCPヘッダーを再循環バッファ2160へ書き込む。その他のやり方では、特別なTCPヘッダーは、対応しているTCPペイロードを有している再循環バッファ2160へ送られてもよい。   In the next block 2592E, the assigned SPU combines the TCP connection information from the TCP header with the TCP non-termination to create a special TCP header. The allocated SPU 2200 then writes a special TCP header to the recirculation buffer 2160. In other ways, a special TCP header may be sent to the recirculation buffer 2160 that has a corresponding TCP payload.

次のブロック2592Fでは、特別なTCPヘッダーと再構築されたTCPペイロードは、TCPデータ内のまた別の(additional)構文要素を識別するためにDXP 2180によって解析される。侵入を含んでいるかもしれないと識別された構文要素はすべて、前述した侵入検知オペレーションに従ってSPU 2200によって処理される。   In the next block 2592F, the special TCP header and reconstructed TCP payload are parsed by the DXP 2180 to identify additional syntax elements in the TCP data. All syntax elements identified as possibly containing an intrusion are processed by the SPU 2200 in accordance with the intrusion detection operation described above.

分散型トークン生成 (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 network 2600. The network 2600 includes different network processing devices 2610 that perform different functions, such as an email server 2610A, a firewall 2610B, and a web server 2610C. Each different network device 2610A-C executes IDS 2620A-C, similar to IDS 2018 described above. In one embodiment, one or more IDS 2620 is implemented using an RSP 2100 similar to that described in connection with FIGS. 36-41. However, in other embodiments, one or more IDS 2620 is implemented using a different hardware architecture.

各ネットワーク処理デバイス2610は、中央集中型の侵入解析を実行する中央侵入検出器2670に接続されている。IDS 2620A−2620Cは、入力データストリームを解析し、それぞれ図35と関連して前述したトークン2068と同様のトークン2640A−2640Cを生成する。トークン2640は、中央侵入検出器2670へ送られる。   Each network processing device 2610 is connected to a central intrusion detector 2670 that performs centralized intrusion analysis. IDS 2620A-2620C parses the input data stream and generates tokens 2640A-2640C similar to token 2068, respectively, described above in connection with FIG. The token 2640 is sent to the central intrusion detector 2670.

図43−44に関して、中央侵入検出器2670は、ブロック2802で、IDS 2620 (2620A-2620C)それぞれからトークン(26402640A−2640C)を受信する。侵入検出器2670は、ブロック2804で、それぞれのトークン2640に従って、異なるデータフローのトラフィックパターンを解析する。続いてブロック2806でこの解析に従って、複数のフィルタが生成される。さらにブロック2808では、この解析に従って、複数の脅威シグネチャが生成されるかもしれない。これらの新しいフィルタと脅威シグネチャは、その後ブロック2810で、各IDS 2620へと分散される。   43-44, the central intrusion detector 2670 receives tokens (26402640A-2640C) from each of IDS 2620 (2620A-2620C) at block 2802. FIG. Intrusion detector 2670 analyzes traffic patterns for different data flows in accordance with each token 2640 at block 2804. Subsequently, a plurality of filters are generated according to this analysis at block 2806. Further, at block 2808, multiple threat signatures may be generated according to this analysis. These new filters and threat signatures are then distributed to each IDS 2620 at block 2810.

ある例では、図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 public Internet 2630. This token 2640B is sent to the central intrusion detector 2670 and identifies the new source IP address A. Web server 2610C may send token 2640C to intrusion detector 2670. The first token 2640C_1 identifies a new source IP address A, and the second token 2640C_2 indicates that this new source IP address A was used to access a file in web server 2610C .

中央侵入検出器2670は、トークン2640B、2640C_1および2640C_2を相互に関連付けて、通常は検出されないかもしれない潜在的なウィルスまたはマルウェアを認識(identify)する。例えば、侵入検出器2670は、ファイヤーウォール2610Bから受信された、トークン2640B内の新しい送信元IPアドレスAが、ウェブサーバー2610C内のファイルも開いているIPアドレスAと同一のものであると判定してもよい。この例では、公的インターネット2630からの外部リンクは、内部ネットワークのファイルを開かないと仮定する。   Central intrusion detector 2670 correlates tokens 2640B, 2640C_1 and 2640C_2 to identify potential viruses or malware that may not normally be detected. For example, intrusion detector 2670 determines that the new source IP address A received in firewall 2610B in token 2640B is the same as IP address A in which the file in web server 2610C is also open. May be. In this example, it is assumed that an external link from the public Internet 2630 does not open a file on the internal network.

この場合、トークン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, central intrusion detector 2670 concludes that IP address A was received from external public Internet 2630. Thus, the central intrusion detector 2670 sends a new filter 2750 to the IDS 2620B in the firewall 2610B and, in some cases, sends a new filter 2750 to the other network devices 2610A and 2610C. The filter 2750 prevents a packet having the source IP address A from entering the network 2600.

別の例では、電子メールサーバー2610A内のIDS 2620Aは、トークン2640A_1を生成する。このトークン2640A_1は、未知の送信元IPアドレスAから電子メールが受信されたということを示す。IDS 2620Aはまた、トークン2640A_2を送る。このトークン2640A_2は、トークン2640A_1内で特定された電子メールに含まれるMIME添付ファイルを特定する。   In another example, IDS 2620A in email server 2610A generates token 2640A_1. This token 2640A_1 indicates that an e-mail has been received from an unknown source IP address A. IDS 2620A also sends token 2640A_2. This token 2640A_2 specifies the MIME attachment file included in the electronic mail specified in the token 2640A_1.

中央侵入検出器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 central intrusion detector 2670 is based on the previously received tokens 2640B, 2640C_1 and 2640C_2 (from) and that all data flows associated with IP source address A may contain viruses or malware. judge. In response, the central intrusion detector 2670 may dynamically generate a new signature 2660 that corresponds to the name of the MIME attachment included in the token 2640A_2, content, or both. The central intrusion detector 2670 sends the new signature 2660 to IDS 2620A in the email server 2610A and, in some cases, sends the new signature 2660 to all other IDS 2620s operating in the network 2600. IDS 2620A then adds a new signature to the set of threat signatures 2058 shown in FIG.

このように、IDSシステム2600は、トークン2640の有する構文コンテンツと、トークンを送るネットワーク処理デバイス2610の種類の両方に従って、フィルタやシグネチャを生成することができる。例えば、ファイヤーウォール2610Bによって生成されたトークン2640Bを、ネットワーク内の他のネットワーク処理デバイスから生成されたトークンよりも、疑わしいものとして扱ってもよい。また、上述したように、ファイヤーウォール2610Bによって識別された新しいIPアドレス(公的インターネットから受信されたIPパケット)についての情報(knowledge)を、電子メールサーバー2610Aまたはウェブサーバー2610Cによって検出された他のオペレーションについての情報と組み合わせて、より完全にウィルスを検出することができる。   In this way, the IDS system 2600 can generate filters and signatures according to both the syntactic content of the token 2640 and the type of network processing device 2610 that sends the token. For example, token 2640B generated by firewall 2610B may be treated as more suspicious than tokens generated from other network processing devices in the network. In addition, as described above, information about the new IP address (IP packet received from the public Internet) identified by the firewall 2610B, other information detected by the email server 2610A or the web server 2610C In combination with information about operations, viruses can be detected more completely.

別の実施例では、中央侵入検出器2670は、検出されたウィルスまたは他のマルウェアと関係しているネットワーク処理デバイスはどれでも無効化することができる。例えば、ウィルス2660は、PC 2650内で稼働中のIDS 2662によって検出されるかもしれない。IDS 2662は、ウィルス2660について中央侵入検知器2670に通知する。中央侵入検出器2670は、その後、ウィルス2660の送信元が特定され、除外されるまで、ネットワーク2600からPC 2650を切り離す。   In another example, the central intrusion detector 2670 can disable any network processing device associated with a detected virus or other malware. For example, virus 2660 may be detected by IDS 2662 running in PC 2650. IDS 2662 notifies central intrusion detector 2670 about virus 2660. The central intrusion detector 2670 then disconnects the PC 2650 from the network 2600 until the source of the virus 2660 is identified and excluded.

ツリーサーチの拡張性 (Scalability of Tree Search)
前述したIDS 2018は、脅威が出現する可能性があるセッションコンテキスト内でスキャンを行うことで、現在の侵入検出の性能を向上させる。適合パターン(マッチングパターン)のためには、正規表現(regular expression)ではなくパーサツリー(paser tree)が用いられる。パケットデータ内の侵入検知およびその他の脅威の検知は、既知の脅威のパターンと適合するパターンに関して入力パケットストリームを「スキャン」することで実行される。
Scalability of Tree Search
IDS 2018 described above improves current intrusion detection performance by scanning within a session context where threats may emerge. For the matching pattern (matching pattern), a parser tree is used instead of a regular expression. Intrusion detection and other threat detection in the packet data is performed by "scanning" the incoming packet stream for patterns that match known threat patterns.

正規表現スキャナは、パケットの全バイトをスキャンしなければならず、また、パケットのどの部分が脅威を含んでいるかもしれないのかを断定する機能を持たない。例えば、電子メール内の脅威は、電子メール添付ファイルを介してのみ侵入するかもしれない。電子メールメッセージの定義された本体は、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 RSP 2100 quickly analyzes and starts virus scanning only on the MIME part of the message in a scalable manner. This reduces the number of packets that must be scanned and also reduces the number of bytes that must be scanned in each packet. The RSP 2100 performs parsing of the input data stream. This allows IDS 2018 to understand what type of data needs to be scanned and then understands the type of scan that needs to be performed. This allows IDS 2018 to more efficiently generate token 2068 corresponding to the syntax of the input stream.

DXP 2180およびRSP 2100のその他の機能は、この種の脅威スキャンに対して最適化され、従来のハードウェアアーキテクチャを用いている通常表現スキャナと比べて、性能を向上させている。例えば、図36のパーサテーブル2170およびパーサスタック2185内で使用される三値コンテントアドレッサブルメモリ(TCAM)と組み合わされたLL(k)パーサは、正規表現エンジンよりも早く入力ストリームをサーチする(search)ことができる。   The other features of the DXP 2180 and RSP 2100 are optimized for this type of threat scanning, improving performance compared to regular expression scanners using traditional hardware architectures. For example, the LL (k) parser combined with the ternary content addressable memory (TCAM) used in the parser table 2170 and parser stack 2185 of FIG. 36 searches the input stream earlier than the regular expression engine ( search).

正規表現スキャナは、適合があるかどうかを判定するために(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 can also be used to add to or modify information in the identified session context 2852. In other words, IDS 2018 is not limited to removing packets that are recognized as being included in an intrusion threat. FIG. 45 shows a PC 2864 that has established an IP link 2866 with a network processing device 2856. IDS 2018 runs within device 2856 and identifies a specific session context 2852 associated with IP link 2866 as described above. For example, IDS 2018 may identify HTTP messages, FTTP messages, SMTP email messages, etc. sent by PC 2864 to other endpoint devices operating within WAN 2850.

IDS 2018は、識別されたセッションコンテキスト2852と関連している特定のタイプのコンテンツ2862に対して追加や、修正を行ったりするようにプログラムすることができる。ある例では、IDS 2018は、電子メールメッセージまたはFTTPメッセージ内に含まれるドキュメント(文章)内のクレジットカード番号2858を取り除くようにプログラムされてもよい。別の例では、IDS 2018は、FTTPドキュメント(文章)または電子メールドキュメント(文章)内で識別されたなんらかのドキュメント(文章)に対して電子透かし2860を付加することができる。例えば、IDS 2018は、PC 2864のIP送信元アドレスを含んでいるドキュメント(文章)に対して電子透かし(digital watermark) 2860を付加してもよい。   IDS 2018 can be programmed to add to or modify specific types of content 2862 associated with the identified session context 2852. In one example, IDS 2018 may be programmed to remove credit card number 2858 in a document (sentence) included in an email message or FTTP message. In another example, IDS 2018 may add a watermark 2860 to any document (sentence) identified within an FTTP document (sentence) or an email document (sentence). For example, the IDS 2018 may add a digital watermark 2860 to a document (sentence) that includes the IP source address of the PC 2864.

RSP 2100内のDXP 2180は、前述したようにIPリンク2866を介して運ばれるさまざまなセッションコンテキスト2852を識別する。SPU 2200は、その際、識別されたセッションコンテキスト2852と関連しているさまざまなタイプのコンテンツ2862と関連しているトークンを生成してもよい。例えば、SPU 2200は、図35と関連して前述したように、電子メール添付ファイルを含んでいるトークンを生成してもよい。RSP 2100は、電子メール添付ファイルに含まれているあらゆるドキュメント(文章)を検索する。   DXP 2180 in RSP 2100 identifies the various session contexts 2852 that are carried over IP link 2866 as described above. The SPU 2200 may then generate tokens associated with various types of content 2862 associated with the identified session context 2852. For example, the SPU 2200 may generate a token that includes an email attachment as described above in connection with FIG. The RSP 2100 searches for any document (sentence) contained in the email attachment.

第一の例では、DXP 2180は、外部のWAN 2850へと向けられるあらゆるIPパケットを識別してもよい。DXP 2180は、その際、SPU 2200に、パケットに含まれており、なおかつクレジットカード番号を含んでいるドキュメント(文章)をすべて検索するように命令する。クレジットカード番号が検出された場合、IDS 2018は、このクレジットカード番号を「X」の並びで置き換えて、クレジットカード情報を隠す。第二の例では、SPU 2200は、FTTPセッションまたは電子メールセッション内で検出されたドキュメント(文章)にデジタル透かし2860を付加してもよい。その後、修正されたクレジットカード情報や電子透かし情報を含むドキュメント(文章)は、FTTPセッションまたは電子メールセッションに対応する宛先アドレスへ送られる。   In the first example, DXP 2180 may identify any IP packet that is destined for external WAN 2850. At that time, the DXP 2180 instructs the SPU 2200 to search all documents (sentences) included in the packet and including the credit card number. If a credit card number is detected, IDS 2018 replaces this credit card number with a sequence of “X” to hide the credit card information. In the second example, the SPU 2200 may add a digital watermark 2860 to a document (sentence) detected within an FTTP session or email session. Thereafter, the document (sentence) including the corrected credit card information and digital watermark information is sent to a destination address corresponding to the FTTP session or the electronic mail session.

同様の修正は、どのような識別されたセッションコンテキスト2852と関連しているどのようなタイプのコンテンツ2862に対しても行うことができる。例えば、特定のIP送信元アドレスまたはIP宛先アドレスは、別のIPアドレスへと変更することができ、その後このアドレスは、何らかの識別されたセッションコンテキスト2852またはセッションコンテンツ2862に従って、IPネットワークへ送り返される。   Similar modifications can be made to any type of content 2862 associated with any identified session context 2852. For example, a particular IP source address or IP destination address can be changed to another IP address, which is then sent back to the IP network according to some identified session context 2852 or session content 2862.

図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) engine 3040 that uses Context Free Grammar (CFG) to retrieve data more efficiently. Semantic table 3042 includes non-terminal (NT) symbols 3046 that represent various semantic states. These symbols 3046 are managed by the PDA engine 3040. Each semantic state 3046 also has one or more corresponding semantic entries 3044. These semantic entries 3044 are associated with semantic elements 3015 included in the input data 3014. The arbitrary portion 3060 of the input data 3014 is combined with the current non-terminal symbol 3062 and used for the entry in the semantic table 3042.

インデックス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 index 3054 is output by the semantic table 3042. This index 3054 corresponds to entries 3046 and 3044 that match the combination of symbol 3062 and input data segment 3060. The semantic state map 3048 identifies the next terminal symbol 3054 that represents the next semantic state of the PDA engine 3040. The next non-terminal symbol 3054 is pushed onto the stack 3052. This symbol 3054 is then popped from the stack 3052 for combination with the next segment 3060 of the input data 3014. The PDA engine 3040 continues to analyze the input data 3014 until a target search string 3016 is detected.

まず、スタック3052は、PDAエンジン3040のセマンティック状態を、他のセマンティック状態の中にネストする(nest)ことを可能にする終端シンボルおよび非終端(NT)シンボルを含んでいてもよい。これにより、複数のセマンティック状態を単一の非終端シンボルによって表すことが可能となる。また、これは、PDAエンジン3040が管理しなければならない状態の数を大幅に少なくする。   First, stack 3052 may include terminal and non-terminal (NT) symbols that allow the semantic state of PDA engine 3040 to be nested within other semantic states. Thereby, a plurality of semantic states can be represented by a single non-terminal symbol. This also significantly reduces the number of states that the PDA engine 3040 must manage.

次に、図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 PDA 3040 initially operates in the first semantic state (SS1) 3070 and goes to the second semantic state (SS2) 3072 until the complete semantic element “WWW.” Is detected. Do not migrate. Similarly, the PDA engine 3040 remains in the semantic state (SS2) 3072 until the next semantic element “.ORG” is detected. If there is one semantic element, the PDA engine 3040 transitions from the semantic state (SS2) 3072 to the semantic state (SS3) 3074. Thus, one of the features of PDA engine 3040 is the number of semantic states 3070, 3072, and 3074 that correspond to the number of semantic elements that need to be retrieved in input data 3014.

逆に、図46のPDAエンジン3040は、さらに長い文字列を検索するのにこれ以上のセマンティック状態を必要としないかもしれない。例えば、図48は、PDAエンジン3040に、文字列「WWWW.XXXX.ORGG」を検索するように要求する別の検索(search)を示している。この例では、PDAエンジン3040は、第一のセマンティック要素「WWWW.」においてさらに一字「W」を検索し、第二のセマンティック要素「.ORGG」においてさらに一字「G」を検索するように要求される。図48の新しい検索文字列に加えられた追加の文字によって、前に図47において必要であったセマンティック状態3070、3072、3074の数は増えてはいない。   Conversely, the PDA engine 3040 of FIG. 46 may not require any more semantic state to retrieve longer strings. For example, FIG. 48 shows another search requesting the PDA engine 3040 to search for the character string “WWWW.XXXX.ORGG”. In this example, the PDA engine 3040 further searches for the letter “W” in the first semantic element “WWWW.” And further searches for the letter “G” in the second semantic element “.ORGG”. Required. The additional characters added to the new search string of FIG. 48 does not increase the number of semantic states 3070, 3072, 3074 previously required in FIG.

PDAエンジン3040は、状態の分岐(state branching)を減らしたり、削除したりすることができる。PDAエンジン3040は、第二の「WWW.」文字列の可能性を、セマンティック要素「.ORG」を検索するセマンティック状態3072の中へネストすることで、これらのさらなる分岐状態を削除する。これは、図47のパス3075によって表される。この場合、PDAエンジン3040は、第二の「WWW.」の可能性と、「.ORG」を検索している間、セマンティック状態3072のままでいる。 The PDA engine 3040 can reduce or eliminate state branching. The PDA engine 3040 removes these additional branch states by nesting the possibility of the second “WWW.” String into the semantic state 3072 that searches for the semantic element “.ORG”. This is represented by path 3075 in FIG. In this case, the PDA engine 3040 remains in the semantic state 3072 while searching for the second “ WWW. ” Possibility and “.ORG”.

PDAエンジン3040の他の態様では、実質的にセマンティックテーブル3042の複雑さに影響を与えたりそれを増加させることなく、追加の検索文字を加えることができる。図49は、第三のセマンティック要素「.EXE」が、図46のPDAエンジン3040によって実行される検索に加えられたものとして示されている。追加のセマンティック要素「.EXE」は、セマンティックテーブル3042に、追加のセマンティック状態3076を一つだけ加える。   In other aspects of the PDA engine 3040, additional search characters can be added without substantially affecting or increasing the complexity of the semantic table 3042. FIG. 49 shows the third semantic element “.EXE” as added to the search performed by the PDA engine 3040 of FIG. The additional semantic element “.EXE” adds only one additional semantic state 3076 to the semantic table 3042.

図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 engine 3040 previously shown in FIG. First, regarding FIG. 50, the same search example is used when the PDA engine 3040 searches for the URL character string “WWW.XXX.ORG”. Of course, this is only an example, and any character string or combination of characters can be searched using the PDA engine 3040.

PDAエンジン3040は、セマンティックテーブル3042、セマンティック状態マップ3048およびスタック3052がすべて中央処理ユニット(CPU)によってアクセスされるメモリ内に配置されるように、ソフトウェア内で実行することもできるということに注意されたし。この通常目的のCPUは、その際、以下で説明するオペレーションを実施する。他の実施例では、以下で図47と関連してより詳しく説明する再構成可能なセマンティックプロセッサ(RSP)を使用する。   It is noted that the PDA engine 3040 can also run in software such that the semantic table 3042, the semantic state map 3048 and the stack 3052 are all located in memory accessed by the central processing unit (CPU). But The normal purpose CPU then performs the operations described below. In another embodiment, a reconfigurable semantic processor (RSP), described in more detail below in connection with FIG. 47, is used.

この例では、セマンティックテーブル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 semantic state sections 3046 as described above. This semantic state section 3046 can accommodate a corresponding non-terminal (NT) symbol. In this example, the semantic table 3042 has only two semantic states. The first semantic state in section 3046A is identified by non-terminal NT1 and is associated with the semantic element “WWW.”. The second semantic state in section 3046B is identified by non-terminal NT2 and is associated with the semantic element “.ORG”.

セマンティックテーブル3042の第二のセクション3044は、入力データ3014内のセマンティック要素と対応している様々なセマンティックエントリーを収容している。同一のセマンティックエントリーは、同一のセマンティック状態セクション3046内に複数個存在していてもよい。例えば、セマンティックエントリーWWW.は、セマンティック要素「WWW.」が、入力データ3014内で現れるかもしれない異なる位置を特定するため、セクション3046A内の異なる位置に配置されてもよい。これは一例に過ぎず、PDAエンジン3040のオペレーションをさらに最適化するために使用される。別の実施例では、特定のセマンティックエントリーだけが一度だけ用いられ、入力データ3014を各異なるデータの位置を照合するためにシークエンス的に入力バッファ3061へ移させるようにしてもよい。 The second section 3044 of the semantic table 3042 contains various semantic entries that correspond to the semantic elements in the input data 3014. There may be a plurality of the same semantic entries in the same semantic state section 3046. For example, semantic entry WWW. May be placed at different locations in section 3046A to identify different locations where semantic element “WWW.” May appear in input data 3014. This is only an example and is used to further optimize the operation of the PDA engine 3040. In another embodiment, only certain semantic entries may be used once, and input data 3014 may be sequentially transferred to input buffer 3061 to match the location of each different data.

セマンティックテーブル3042内の第二のセマンティック状態セクション3046Bは、効率的に2つのセマンティックエントリーを含んでいる。「ORG.」エントリーは、入力データ3014内の「ORG.」文字列を検出するのに用いられ、「WWW.」エントリーは、入力データ3014内にあるかもしれない第二の「WWW.」文字列を検出するのに用いられる。この場合も、複数の異なる「.ORG」および「WWW.」エントリーは、解析の最適化のために、セマンティックテーブル3042のセクション3046Bへ選択的に(optionally)ロードされる。単一の「WWW.」エントリーと、単一の「ORG.」エントリー(すなわち図50に示されているものよりも少ないエントリー)を使用することも同様に可能である。   The second semantic state section 3046B in the semantic table 3042 effectively includes two semantic entries. The “ORG.” Entry is used to detect the “ORG.” String in the input data 3014, and the “WWW.” Entry is the second “WWW.” Character that may be in the input data 3014. Used to detect a row. Again, multiple different “.ORG” and “WWW.” Entries are optionally loaded into section 3046B of semantic table 3042 for analysis optimization. It is equally possible to use a single “WWW.” Entry and a single “ORG.” Entry (ie fewer entries than those shown in FIG. 50).

この例では、セマンティック状態マップ3048は、三つの異なるセクションを含んでいる。一方で、これより少ないセクションを使用してもよい。次の状態セクション3080は、セマンティックテーブル3042内の一致したセマンティックエントリーを、PDAエンジンに使用される次のセマンティック状態へマッピングする。セマンティックエントリーポイント(SEP)セクション3078は、以下でより詳しく説明するセマンティックプロセッシングユニット(SPU)に対するマイクロ命令を起動するのに用いられる。このセクションはオプション的なものであり、PDAエンジン3040は、他のやり方では、次の状態セクション3080内で識別される非終端シンボルを用いて、次に入力データ3014に対して実行されるその他のオペレーションを決定する。   In this example, semantic state map 3048 includes three different sections. On the other hand, fewer sections may be used. The next state section 3080 maps the matching semantic entry in the semantic table 3042 to the next semantic state used for the PDA engine. The Semantic Entry Point (SEP) section 3078 is used to initiate microinstructions for the Semantic Processing Unit (SPU) described in more detail below. This section is optional and the PDA engine 3040 may otherwise use the non-terminal symbol identified in the next state section 3080 to perform other operations that are then performed on the input data 3014. To decide.

例えば、非終端シンボル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 map 3048, the corresponding processor (not shown) recognizes that the URL character string “WWW.XXX.ORG” is detected in the input data 3014. The processor then performs all subsequent processing required for the input data 3014 after the PDA engine 3040 recognizes the URL. Thus, the SEP section 3078 is just one example of optimization of the PDA engine 3040 and may or may not be included.

スキップバイトセクション3076は、入力データ3014から、次のオペレーションサイクルで、入力バッファ3061へ移す数バイトを識別する。一致全パーサエントリーテーブル(Match All Paser Entries Table: MAPT)3082は、セマンティックテーブル3042内に一致がない場合に用いられる。   The skip byte section 3076 identifies several bytes from the input data 3014 to be transferred to the input buffer 3061 in the next operation cycle. A match all parser entry table (MAPT) 3082 is used when there is no match in the semantic table 3042.

実行(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 stack 3052 with the first non-terminal NT1. This non-terminal NT1 represents the first semantic state associated with retrieving the URL. The NT1 symbol and first segment 3060 of the input data 3014 are loaded into the input buffer 3061 and sent to the CAM 3090. In this example, the content in input buffer 3061 does not match any entry in CAM 3090. Thus, the pointer 3054 generated by the CAM 3090 points to the default NT1 entry in the MAPT table 3082. The default NT1 entry instructs the PDA engine 3040 to move the next byte of input data 3014 to the input buffer 3061. The PDA engine 3040 then pushes the next non-terminal NT1 symbol onto the stack 3052.

図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 input data 3014 has been moved to input buffer 3061. First URL semantic element 3060A (“WWW.”) Is currently housed in input buffer 3061. Non-terminal symbol NT1 is again popped from stack 3052 and combined with input data 3060 in input buffer 3061. When the contents of the input buffer 3061 and the semantic table 3042 are compared, a match occurs in the NT1 entry 3042B. Index 3054B associated with table entry 3042B points to semantic state map entry 3048B. The next state in entry 3048B includes non-terminal symbol NT2. This non-terminal symbol NT2 represents a transition to the next semantic state.

マップエントリー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 PDA engine 3040 to transfer input data 3014 for the next analysis cycle. In this example, the string “WWW.” Is detected in the first 4 bytes in the input buffer 3061, so the skip byte value in entry 3048B is input to the PDA engine 3040 with the next (another) 8 bytes. Command to move to buffer 3061. The skip byte value depends on the hardware, and may vary depending on the size of the semantic table 3042. Of course, a larger hardware semantic table or another hardware implementation having a smaller width semantic table may be used.

図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 next PDA engine 3040 cycle after the next 8 bytes of input data 3014 have been moved to the input buffer 3061. Similarly, a new semantic state NT2 is pushed onto stack 3052 and then popped off stack 3052 and combined with the next segment of input data 3014. The content in the input buffer 3061 is again entered in the semantic table 3042. In the PDA cycle, the content in the input buffer 3061 does not match any semantic entry in the semantic table 3042. Thus, the default pointer 3054C for the NT2 state points to the corresponding NT2 entry in MAPT 3082. This NT2 entry instructs the PDA engine 3040 to move the next (additional) byte to the input buffer 3061 and push the same semantic state NT2 onto the stack 3052.

図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 input data 3014 has been moved to input buffer 3061. In this example, there is still no match between the content in the input buffer 3061 and the NT2 entry in the semantic table 3042. Thus, the default pointer 3054C for semantic state NT2 points again to the NT2 entry in MAPT 3082. The default NT2 entry in table 3082 instructs PDA engine 3040 to move the next byte from input data 3014 to input buffer 3061 and push another NT2 symbol onto stack 3052. Note that there is no semantic state transition represented by the non-terminating NT2 during the last two PDA cycles (FIGS. 52 and 53). Therefore, even if the PDA engine 3040 receives “.OR” which is the first three characters of the second semantic element “.ORG”, there is no state transition.

図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 input buffer 3061 matches the NT2 entry 3042D in the semantic table 3042. Corresponding pointer 3054D points to entry 3048D in semantic state map 3048. In this example, the entry 3048D indicates that the URL “WWW.XXX.ORG” has been detected by mapping to the next semantic state NT3. Note that PDA engine 3040 does not transition to semantic state NT3 until the complete semantic element “.ORG” is detected.

マップエントリー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 input data 3014 corresponding to the detected URL. For example, the SPU may also peel off additional input data 3014 from the other (peel off) to perform firewall operations, virus detection operations, etc. as described in the co-pending application below. Good. 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, and filed on May 9, 2005. US patent application No. 11 / 125,956 entitled “Intrusion Detection System”. Both of which are incorporated herein by reference.

マップエントリー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 engine 3040 to push a new semantic state represented by non-terminal NT3 onto stack 3052 at the same time that it invokes the SEP microinstruction for the SPU. This may cause the PDA engine 3040 to initiate another search for other semantic elements in the input data 3014 following the detected URL 3016. For example, as shown in FIG. 49, the PDA engine 3040 may start searching for a semantic element “.EXE” associated with an executable file that may be included in the input data 3014. Good. Also, as described above, searching for a new semantic element “.EXE” only requires the PDA engine 3040 to add an additional semantic state to the semantic table 3042.

また、前述したように、PDAエンジン3040は、解析されたデータアイテムそれぞれに対して別々の状態を維持しなければならないということはない。状態は、異なるセマンティック要素間の遷移に対してだけ維持される。例えば、図50、52および53は、セマンティックテーブル3042内のセマンティックエントリーのいずれとも完璧には一致しないデータ入力を示している。これらの状況では、PDAエンジン3040は、一致しないデータ文字列に対して何らかの状態を維持する(retain)ことなくデータの解析を続ける。   Also, as described above, the PDA engine 3040 does not have to maintain a separate state for each analyzed data item. State is maintained only for transitions between different semantic elements. For example, FIGS. 50, 52, and 53 illustrate data entries that do not perfectly match any of the semantic entries in the semantic table 3042. FIG. In these situations, the PDA engine 3040 continues to analyze the data without retaining any state for the mismatched data string.

また、図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 PDA engine 3040 is substantially independent of the length of the search string. For example, searching for a longer search string “WWWW.” Instead of “WWW.” Simply replaces the semantic entry “WWW.” In the semantic table 3042 with the long semantic entry “WWWW.” This can be done simply by adjusting the skip byte value in the map 3048.

再構成可能なセマンティックプロセッサ(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) engine 3040 described above in one embodiment. The RSP 3100 includes an input buffer 3140 for buffering a packet data stream received via the input port 3120, and an output buffer 3150 for buffering a packet data stream output via the output port 3152. Have.

直接実行パーサ(DXP)3180は、PDAエンジン3040を利用しかつ、入力バッファ3140において受信されるパケットまたはフレーム(例えば入力「ストリーム」)と、出力バッファ3150へ出力されるパケットまたはフレーム(例えば、出力「ストリーム」)と、再循環バッファ3160内で再循環されるパケットまたはフレーム(例えば、再循環「ストリーム」)の処理を制御する。入力バッファ3140、出力バッファ3150および再循環バッファ3160は、先入れ先出し(FIFO)バッファであるのが好ましい。   A direct execution parser (DXP) 3180 utilizes the PDA engine 3040 and receives packets or frames (eg, an input “stream”) received at the input buffer 3140 and packets or frames (eg, output) output to the output buffer 3150. “Stream”) and the processing of packets or frames that are recirculated in recirculation buffer 3160 (eg, recirculation “stream”). Input buffer 3140, output buffer 3150 and recirculation buffer 3160 are preferably first-in first-out (FIFO) buffers.

また、DXP 3180は、セマンティックプロセッシングユニット(SPU)3200によってパケットの処理を制御する。このセマンティックプロセッシングユニット(SPU)は、バッファ3140、3150および3160とメモリサブシステム3215間でのデータの転送を制御する。メモリサブシステム3215は、入力ポート3120から受信したパケットを格納し、また、以下の同時継続出願において記載されている統合型ポリシー管理(UPM)、ファイヤーウォール、ウイルス検出およびその他の何らかのオペレーションのために用いられるアクセス制御リスト(ACL)をCAM 3220内に格納する。   In addition, the DXP 3180 controls packet processing by a semantic processing unit (SPU) 3200. This semantic processing unit (SPU) controls the transfer of data between the buffers 3140, 3150 and 3160 and the memory subsystem 3215. Memory subsystem 3215 stores packets received from input port 3120 and for integrated policy management (UPM), firewall, virus detection and some other operations described in the following continuation application: The access control list (ACL) to be used is stored in the CAM 3220.

ここでいう同時継続出願とは、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 RSP 3100 uses at least three tables to execute a predetermined PDA algorithm. A code 3178 for retrieving the generation rule 3176 is stored in the parser table (PT) 3170. In one embodiment, the parser table 3170 contains a semantic table 3042 shown in FIG. The grammar generation rule 3176 is stored in a generation rule table (PRT) 3190. The generation rule table 3190 may accommodate, for example, the semantic state map 3048 shown in FIG. Code segments 3212 executed by the SPU 3200 are stored in a semantic code table (SCT) 3210. These code segments 3212 may be activated according to the SEP pointer 3078 in the semantic state map 3048 shown in FIGS. 50-54.

パーサテーブル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 code 3178 in the parser table 3170 is stored in a manner such as a matrix (row-column) format or a content addressable format. In the row-column format, the rows of the parser table 3170 are indexed by the non-terminal code NT 3172 provided by the internal parser stack 3185, and the columns of the parser table 3170 are extracted from the beginning of the data in the input buffer 3140. Is indexed by the input data value DI [N] 3174. In the content addressable format, as shown by the input buffer 3061 in FIG. 50-54, a concatenation of the non-terminal code 3172 from the parser stack 3185 and the input data value 3174 from the input buffer 3140 is obtained. Make entries for table 3170.

生成規則テーブル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 code 3178 from the parser table 3170. Tables 3170 and 3190 may be linked so that queries against parser table 3170 send directly back production rules 3176 applicable to non-terminal code 3172 and input data value 3174. The DXP 3180 replaces the non-terminal code at the top of the parser stack 3185 with a production rule (PR) 3176 sent back from the PRT 3190, and then continues to analyze the data from the input buffer 3140.

セマンティックコードテーブル3210もまた、パーサテーブル3170により生成されたコード3178か、生成規則テーブル3190により生成された生成規則3176、もしくはその両方によってインデックス付けされる。通常、解析結果は、所定の生成規則3176に対してSPU 3200がセマンティックコードテーブル3210からのセマンティックエントリーポイント(SEP)ルーチン3212をロードしかつ実行すべかどうかを、DXP 3180が検出することを可能にする。   Semantic code table 3210 is also indexed by code 3178 generated by parser table 3170, generation rule 3176 generated by generation rule table 3190, or both. Typically, the analysis results allow the DXP 3180 to detect whether the SPU 3200 should load and execute the semantic entry point (SEP) routine 3212 from the semantic code table 3210 for a given production rule 3176. To do.

SPU 3200は、コンテキストシンボルによるアドレス化が可能なように構成された(structured)メモリインターフェイスを提供するメモリサブシステム3215に対するいくつかのアクセスパスを有する。メモリサブシステム3215、パーサテーブル3170、生成規則テーブル3190およびセマンティックコードテーブル3210は、内臓メモリか、外部メモリデバイス(例えば、同期動的ランダムアクセスメモリ(DRAM)やコンテントアドレッサブルメモリ(CAM))を用いるか、もしくはこれらのリソースを組み合わせて用いる。各テーブルまたはコンテキストは、一つまたは複数の他のテーブルまたはコンテキストを有する共有物理メモリ領域に、コンテキストインターフェイスを提供するだけでよい。   The SPU 3200 has several access paths to the memory subsystem 3215 that provides a structured memory interface that can be addressed by context symbols. Memory subsystem 3215, parser table 3170, generation rule table 3190 and semantic code table 3210 can be internal memory or external memory devices (eg synchronous dynamic random access memory (DRAM) or content addressable memory (CAM)) Or use a combination of these resources. Each table or context need only provide a context interface to a shared physical memory area that has one or more other tables or contexts.

管理(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 SPU 3200 and the memory subsystem 3215. The MCPU 3056 executes functions desirable for the RSP 3100 that can be easily performed by conventional software and hardware. These functions are usually functions that are rarely used and are not executed with the highest priority (not important in time), and are not intended to be included in the SCT 210 due to the complexity of the functions. The MCPU 3056 preferably has a function of requesting the SPU 3200 to execute a task instead of the MCPU.

メモリサブシステム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 memory subsystem 3215 includes an array machine context data memory (AMCD) 3230 for accessing data in the DRAM 3280 via a hash function (hashing function) or content addressable memory (CAM) search. The encryption processing block 3240 performs data encryption, decryption, and authentication, and the context control block cache 3250 caches the context control block to the DRAM 3280 and caches the context control block from the DRAM 3280. The normal cache 3260 caches the data used in the basic operations, and the streaming cache 3270 is responsible for these while the data stream is being written to the DRAM 3280 and while the data stream is being read from the DRAM 3280. Cache the data stream. The context control block cache 3250 is preferably a software controlled cache. That is, SPU 3200 preferably determines when a cache line is used and when it is released. Circuits 3240, 3250, 3260 and 3270 are all connected between DRAM 3280 and SPU 3200. TCAM 3220 is connected between AMCD 3230 and MCPU 3056 and has access control list (ACL) tables and other resources that may be used to perform firewalls, integrated policy management, and other intrusion detection operations. Contains parameters.

より詳細な、RSP 3100の機能ブロックに対する設計最適化は、2003年1月24日に出願された「再構成可能なセマンティックプロセッサ」という発明の名称の同時係属のアメリカ特許出願No. 10/351,030に記載されている。この特許出願は、これを引用することにより、その内容が本出願に組み入れられているものとする。   A more detailed design optimization for the functional blocks of the RSP 3100 is described in co-pending US patent application No. 10 / 351,030, filed January 24, 2003, entitled "Reconfigurable Semantic Processor". Are listed. This patent application is incorporated herein by reference in its entirety.

パーサテーブル(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 NT code 2172 and input data value DI [n] 2174 are generated by CAM in PRT 3190. It may be used as a key for searching for the PR code 3178 corresponding to the rule. The CAM is preferably a ternary CAM (TCAM) populated with TCAM entries. Each TCAM entry includes an NT code and a DI [n] match value. Each NT code can hold multiple TCAM entries. Each bit of DI [n] match value can be set to “0”, “1”, or “X”. This “X” represents “Don't Care”. With this function, the PR code requires that only a few bits or bytes of DI [n] 2174 match the coded pattern in order for parser table 3170 to find a match. For example, a line in the TCAM may contain the NT code NT_IP for the IP destination address field, followed by 4 bytes representing the IP destination address corresponding to the device containing the semantic processor. The remaining 4 bytes of this TCAM line are set to “Don't Care”. Thus, when NT_IP and 8-byte DI [8] are presented to the parser table 3170, if the first 4 bytes of DI [8] contain the correct IP address, the end of DI [8] A match will occur no matter what the 4 bytes contain.

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 semantic processor 3100.

このアーキテクチャ(構造)の他の見方には、「可変先読み(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.

再構成可能なセマンティックプロセッサ(RSP)を用いているネットワーク処理デバイスのブロック図である。FIG. 2 is a block diagram of a network processing device using a reconfigurable semantic processor (RSP). 前記RSPをより詳しく示すブロック図である。It is a block diagram which shows the said RSP in more detail. 前記RSP内で用いられているパーサテーブルと生成規則テーブルを示すより詳細な図である。It is a more detailed diagram showing a parser table and a generation rule table used in the RSP. どのようにしてサービス妨害(DoS)攻撃がネットワーク処理デバイスを無効化するのかを示している図である。FIG. 2 illustrates how a denial of service (DoS) attack invalidates a network processing device. どのようにしてファイヤーウォールがDoS攻撃を異なるゾーンと関連付けるのかを示している図である。FIG. 3 shows how a firewall associates DoS attacks with different zones. 図4に示されているファイヤーウォールのより詳細な図である。FIG. 5 is a more detailed view of the firewall shown in FIG. どのようにしてファイヤーウォール内のメモリが異なるジェネレーションに分割されているかを示す図である。It is a figure which shows how the memory in a firewall is divided | segmented into different generation. 図6に示す異なるジェネレーションの間でどのようにファイヤーウォールが動作するかをフローチャートである。FIG. 7 is a flowchart of how the firewall operates between the different generations shown in FIG. 図5のファイヤーウォールがどのようにしてDoS攻撃を処理するかを示すフローチャートである。6 is a flowchart showing how the firewall of FIG. 5 handles a DoS attack. 図2Aに示すRPSがDoS攻撃を処理するためにどのように構成されているかを示すブロック図である。FIG. 2B is a block diagram showing how the RPS shown in FIG. 2A is configured to handle a DoS attack. 図9に示すRSPがどのように候補パケットを処理するのかを示すフローチャートである。10 is a flowchart showing how the RSP shown in FIG. 9 processes candidate packets. 図9に示すRSPがどのように候補パケットを処理するのかを示すフローチャートである。10 is a flowchart showing how the RSP shown in FIG. 9 processes candidate packets. 独立して動作するファイヤーウォールとルーティング装置を示すブロック図である。It is a block diagram which shows the firewall and routing apparatus which operate | move independently. 統合型ルーティングおよびファイヤーウォールポリシーマネージメント(UPM)を提供するパケット処理アーキテクチャを示す図である。FIG. 2 illustrates a packet processing architecture that provides integrated routing and firewall policy management (UPM). アクセスコントロールリスト(ACL)テーブルにおけるサンプルエントリーを示す図である。It is a figure which shows the sample entry in an access control list (ACL) table. どのようにして図13のパケットプロセッサがUPMを提供するかを示すフローチャートである。14 is a flowchart illustrating how the packet processor of FIG. 13 provides UPM. 上層レイヤーのパケット特性に基づいて送信アクションを提供するUPMテーブルのもう1つの例を示すブロック図である。FIG. 6 is a block diagram illustrating another example of a UPM table that provides a send action based on upper layer packet characteristics. どのようにして統合型UPMが異なるリソースロケーター(URL)の値にしたがってパケットをルートするのに使用することができるのかの一例を示すブロック図である。FIG. 6 is a block diagram illustrating an example of how an integrated UPM can be used to route packets according to different resource locator (URL) values. RSPにおいてどのようにして統合型ポリシーマネージメントが実行されるかの一例を示すブロック図である。It is a block diagram which shows an example of how integrated policy management is performed in RSP. どのようにして図18のRSPが動作するかを示すフローチャートである。19 is a flowchart showing how the RSP of FIG. 18 operates. どのようにしてRSPがネットワークアドレス変換(NAT)やポートアドレス変換(PAT)に用いられるのかを示す図である。It is a figure which shows how RSP is used for network address translation (NAT) and port address translation (PAT). どのようにしてRSPがNAT/PAT変換およびIPパケット変換用に構成されているかを示すより詳細な図である。FIG. 4 is a more detailed diagram showing how RSP is configured for NAT / PAT conversion and IP packet conversion. どのようにしてRSPがNTA/PAT変換を実行するかを示すフローチャートである。It is a flowchart which shows how RSP performs NTA / PAT conversion. どのようにしてRSPがNTA/PAT変換を実行するかを示すフローチャートである。It is a flowchart which shows how RSP performs NTA / PAT conversion. どのようにしてRSPがIPv4とIPv6との間でパケットを変換するかを示す図である。FIG. 3 is a diagram showing how RSP converts a packet between IPv4 and IPv6. どのようにしてRSPがIPv4とIPv6との間でパケットを変換するかをより詳細に示すフローチャートである。It is a flow chart showing in more detail how RSP translates packets between IPv4 and IPv6. どのようにしてRSPが仮想私的ネットワーク(VPN)の統合に用いられるかを示す図である。FIG. 3 shows how RSP is used for virtual private network (VPN) integration. どのようにしてRSPが仮想私的ネットワーク(VPN)の統合に用いられるかを示す図である。FIG. 3 shows how RSP is used for virtual private network (VPN) integration. どのようにしてファイヤーウォールがアンティ−ウィルスライセンスを異なるサブネットワークに割り当てるかを示す図である。FIG. 3 shows how a firewall assigns anti-virus licenses to different sub-networks. どのようにしてファイヤーウォールがアンティ−ウィルスライセンスを異なるサブネットワークに割り当てるかを示す図である。FIG. 3 shows how a firewall assigns anti-virus licenses to different sub-networks. どのようにして多数のRSPが分散型ファイヤーウォール処理のために一体に接続されているかを示す図である。FIG. 3 shows how multiple RSPs are connected together for distributed firewall processing. どのようにして多数のRSPが分散型ファイヤーウォール処理のために一体に接続されているかを示す図である。FIG. 3 shows how multiple RSPs are connected together for distributed firewall processing. 私的ネットワークで実行される進入検出システム(IDS)を示すブロック図である。1 is a block diagram illustrating an intrusion detection system (IDS) implemented in a private network. 従来の進入検出システム(IDS)の限界を示すブロック図である。It is a block diagram which shows the limit of the conventional approach detection system (IDS). データストリームにおける構文要素を識別するとともに脅威を識別するために該構文要素を用いる図32Aの進入検出システム(IDS)の一実施例を示す図である。FIG. 32B illustrates one embodiment of the intrusion detection system (IDS) of FIG. 32A that identifies syntax elements in a data stream and uses the syntax elements to identify threats. 再構成可能なセマンティックプロセッサ(RSP)を用いて、どのように進入検出システム(IDS)が実行されるかを示すブロック図である。FIG. 3 is a block diagram illustrating how an intrusion detection system (IDS) is implemented using a reconfigurable semantic processor (RSP). どのように図33の進入検出システム(IDS)が動作するかを示すフローチャートである。It is a flowchart which shows how the approach detection system (IDS) of FIG. 33 operate | moves. 図33に示す進入検出システム(IDS)詳細なブロック図である。FIG. 34 is a detailed block diagram of an intrusion detection system (IDS) shown in FIG. 33. 図33に示す再構成可能なセマンティックプロセッサ(RSP)のブロック図である。FIG. 34 is a block diagram of the reconfigurable semantic processor (RSP) shown in FIG. 33. どのようにしてRSPの直接実行パーサ(DXP)が電子メールメッセージを含むパケットを識別するかを示す図である。FIG. 3 shows how an RSP direct execution parser (DXP) identifies packets containing email messages. どのようにしてRSPの直接実行パーサ(DXP)が電子メールメッセージを含むパケットを識別するかを示す図である。FIG. 3 shows how an RSP direct execution parser (DXP) identifies packets containing email messages. どのようにしてRSPが脅威フィルタをデータストリームに適用するかを示すフローチャートである。FIG. 6 is a flowchart illustrating how RSP applies a threat filter to a data stream. どのようにしてRSPがセッションルックアップを行うのかを示すフローチャートである。It is a flowchart which shows how RSP performs a session lookup. どのようにしてRSPが入力ストリームからトークンを生成するのかを示すフローチャートである。It is a flowchart which shows how RSP produces | generates a token from an input stream. どのようにしてRSPが進入検出オペレーションの前にフラグメント化されたパケットを再構築するのかを示すフローチャートである。FIG. 6 is a flow chart showing how RSP reconstructs a fragmented packet prior to an entry detection operation. どのようにしてRSPが進入検出オペレーションの前にTCPパケットの再並び替えをするのかを示すフローチャートである。FIG. 5 is a flowchart showing how the RSP reorders TCP packets before an entry detection operation. どのようにして中央進入検出器が異なるネットワーク処理デバイスから生成されたトークンを相互に関連付けるのかを示す図である。FIG. 3 illustrates how a central ingress detector correlates tokens generated from different network processing devices. どのようにして中央進入検出器が異なるネットワーク処理デバイスから生成されたトークンを相互に関連付けるのかを示すフローチャートである。FIG. 6 is a flow chart illustrating how a central ingress detector correlates tokens generated from different network processing devices. どのようにしてIDSがデータストリームからの情報の修正あるいは情報の除去のために用いられるのかを示す図である。FIG. 3 shows how IDS is used for modifying or removing information from a data stream. PDA (PushDown Auomaton)エンジンを示す図である。1 is a diagram showing a PDA (PushDown Auomaton) engine. FIG. どのようにして図46のPDAエンジンがURLサーチを行うのかを示すセマンティック状態図である。FIG. 47 is a semantic state diagram showing how the PDA engine of FIG. 46 performs a URL search. どのようにしてPDAエンジンが長い文字列をサーチするために同じ数のセマンティック状態を用いるのかを示すセマンティック状態図である。FIG. 4 is a semantic state diagram showing how the PDA engine uses the same number of semantic states to search for long strings. どのようにしてPDAエンジンがさらなるセマンティック要素をサーチするために1つのさらなるセマンティック状態を使用するだけなのかを示す図である。FIG. 3 shows how the PDA engine only uses one additional semantic state to search for additional semantic elements. どのようにしてPDAエンジンがURLサーチを行うかの例を示す詳細な図である。It is a detailed diagram showing an example of how the PDA engine performs a URL search. どのようにしてPDAエンジンがURLサーチを行うかの例を示す詳細な図である。It is a detailed diagram showing an example of how the PDA engine performs a URL search. どのようにしてPDAエンジンがURLサーチを行うかの例を示す詳細な図である。It is a detailed diagram showing an example of how the PDA engine performs a URL search. どのようにしてPDAエンジンがURLサーチを行うかの例を示す詳細な図である。It is a detailed diagram showing an example of how the PDA engine performs a URL search. どのようにしてPDAエンジンがURLサーチを行うかの例を示す詳細な図である。It is a detailed diagram showing an example of how the PDA engine performs a URL search. 再構成可能なセマンティックプロセッサ(RSP)において、どのようにしてPDAエンジンが実行されるかを示す詳細な図である。FIG. 3 is a detailed diagram showing how a PDA engine is executed in a reconfigurable semantic processor (RSP).

Claims (45)

DoS (Denial of Service)攻撃を監視しかつフィルタリングする方法であって、
可能性のある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エントリーに対する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エントリーに対するタイムスタンプが所定の時間内である場合には、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.
送信情報ベース(Forwarding Information Base: “FIB”)として、かつファイヤーウォールポリシーマネージメントに対して、同じメモリサブシステムを用いるように構成されたプロセッサを備えたネットワーク処理デバイス。   A network processing device with a processor configured to use the same memory subsystem as a forwarding information base (“FIB”) and for firewall policy management. 前記プロセッサは、ルーティングおよびスイッチングの両方の決定とファイヤーウォールオペレーションの実行をするために、複数のパケットに含まれた宛先アドレスとファイヤーウォールポリシーメトリックスを前記メモリサブシステム内のアクセスコントロールリスト(Access Control List:“ACL”)のエントリーの同じセットと比較するようになっている請求項4に記載のネットワーク処理デバイス。   The processor determines destination addresses and firewall policy metrics contained in a plurality of packets to access control lists (Access Control Lists) in the memory subsystem to make both routing and switching decisions and perform firewall operations. 5. The network processing device of claim 4, wherein the network processing device is adapted to be compared with the same set of entries of “ACL”. 前記ACLエントリーは、前記パケットに含まれた宛先アドレスとファイヤーウォールポリシーメトリックスに対応する述語と、前記パケットにどのようなファイヤーウォールあるいは送信オペレーションを実行すべきかを示すアクションと、を含む請求項4に記載のネットワーク処理デバイス。   The ACL entry includes a predicate corresponding to a destination address and a firewall policy metric included in the packet, and an action indicating what firewall or transmission operation should be performed on the packet. The network processing device described. 前記プロセッサは、複数のパケットにおけるアドレスとファイヤーウォールポリシーメトリックスを識別するように構成されたデータパーサと、
前記識別されたアドレスとファイヤーウォールポリシーメトリックスに従って、前記パケットに対してファイヤーウォールオペレーションとパケット送信オペレーションの両方を行なう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.
前記パーサは、場合によってはDoS攻撃の一部の可能性のある複数のDoSパケットを特定し、前記セマンティックプロセッシングユニットに、前記DoS候補のパケットが受信されたレートを監視させ、監視されたレートに従って当該DoS候補のパケットを除外するか通過させるかの判断をさせる請求項8記載のセマンティックプロセッサ。   The parser identifies a plurality of DoS packets that may be part of a DoS attack in some cases, causes the semantic processing unit to monitor the rate at which the DoS candidate packets are received, and according to the monitored rate The semantic processor according to claim 8, wherein it is determined whether to exclude or pass the packet of the DoS candidate. 前記パーサにより特定されたパケットセマンティック要素と対応する述語を有するエントリーと、前記パケットにどのようなファイヤーウォールあるいは送信オペレーションを実行すべきかを決めるために前記セマンティックプロセッシングユニットによって用いられるアクションと、を含むアクセスコントロールリスト(Access Control List: ACL)をさらに備える請求項8に記載のセマンティックプロセッサ。   An access comprising a packet semantic element identified by the parser and an entry having a predicate corresponding to the action, and an action used by the semantic processing unit to determine what firewall or transmission operation should be performed on the packet. The semantic processor according to claim 8, further comprising a control list (ACL). 宛先アドレスと対応する出力ポートを含む送信情報ベース(Forwarding Information Base (FIB))をさらに含み、前記セマンティックプロセッシングユニットは、前記ACLからの述語と前記FIBからの宛先アドレスの組み合わせを用いて前記パケットをどのようにして送信しかつ処理するかを決めるようになっている請求項11に記載のセマンティックプロセッサ。   And further comprising a forwarding information base (FIB) including a destination address and an output port corresponding to the destination address, wherein the semantic processing unit uses the combination of the predicate from the ACL and the destination address from the FIB. 12. The semantic processor according to claim 11, wherein the semantic processor is adapted to determine how to transmit and process. 前記ACLは、前記同じ宛先アドレス述語に対して異なる出力ポートに関連付けられた異なるURL述語を含み、前記パーサは、前記パケットに含まれた宛先アドレスおよびURL値を識別し、前記セマンティックプロセッシングユニットは、前記パケットを合致した宛先アドレスおよびURL述語を有する前記ACLで特定された出力ポートへ送るようになっている請求項12に記載のセマンティックプロセッサ。   The ACL includes different URL predicates associated with different output ports for the same destination address predicate, the parser identifies a destination address and URL value included in the packet, and the semantic processing unit includes: 13. The semantic processor of claim 12, wherein the semantic processor is adapted to send the packet to an output port identified by the ACL having a matched destination address and URL predicate. パブリックアドレスをプライベートアドレスに合致させるネットワークアドレス送信および/またはプロトコルアドレス送信(Network Address Translation and/or Port Address Translation: NAT/PAT)ルックアップテーブルをさらに備え、前記パーサは、前記パケット内のパブリックアドレスまたはプライベートアドレスを特定し、前記セマンティックプロセッシングユニットに当該パブリックアドレスまたはプライベートアドレスを前記ルックアップテーブルからの対応するパブリックアドレスまたはプライベートアドレスに置換するように指示する請求項8に記載のセマンティックプロセッサ。   Further comprising a Network Address Translation and / or Protocol Address Transmission (NAT / PAT) lookup table that matches the public address to the private address, the parser comprising a public address in the packet or 9. The semantic processor according to claim 8, wherein a private address is identified and the semantic processing unit is instructed to replace the public address or private address with a corresponding public address or private address from the lookup table. 第1のIPバージョンフォーマットを第2のIPバージョンフォーマットの対応するアドレスにマッピングするインターネットプロトコル(IP)バージョン変換テーブルをさらに備え、前記パーサは、前記パケットで用いられたIPバージョンを特定し、前記セマンティックプロセッシングユニットに前記パケットにおけるアドレスを前記他のIPバージョン用の異なるアドレスで置換するように指示する請求項8に記載のセマンティックプロセッサ。   An Internet Protocol (IP) version translation table that maps a first IP version format to a corresponding address in a second IP version format, wherein the parser identifies an IP version used in the packet, and the semantic The semantic processor of claim 8, instructing a processing unit to replace an address in the packet with a different address for the other IP version. 暗号化キー、暗号化アルゴリズム識別子および/またはSPI(Security Parameter Indices)と関連する仮想的プライベートネットワーク(Virtual Private Network: VPN)テーブルをさらに備え、前記パーサは、前記パケット内のSPIを特定し、前記セマンティックプロセッシングユニットに、前記特定されたSPIを前記仮想的プライベートネットワークテーブルに合致したSPIを適用し、次いで前記暗号化キー、暗号化アルゴリズム識別子および/または前記仮想的プライベートネットワークから戻された認定されたアルゴリズム識別子に従って前記パケットを暗号化するようになっている請求項8に記載のセマンティックプロセッサ。   A virtual private network (VPN) table associated with an encryption key, an encryption algorithm identifier and / or SPI (Security Parameter Indices), wherein the parser identifies an SPI in the packet; Apply to the semantic processing unit the SPI that matches the identified SPI to the virtual private network table and then the certified key returned from the encryption key, encryption algorithm identifier and / or virtual private network The semantic processor of claim 8, wherein the packet is encrypted according to an algorithm identifier. データストリームにおいて構文要素を識別するデータパーサと、
前記データパーサによって識別された構文要素に従って、前記データパーサから脅威をフィルタリングする脅威フィルタリング回路と、を備えたことを特徴とする侵入検出システム。
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.
さらに、前記脅威フィルタリング回路によって用いられ、前記脅威をフィルタリングをしている間、略一定の時間、前記データストリームの出力を遅延させるための遅延バッファを含む請求項17に記載の侵入検出システム。   18. The intrusion detection system according to claim 17, further comprising a delay buffer used by the threat filtering circuit to delay the output of the data stream for a substantially constant time while filtering the threat. 前記脅威フィルタリング回路は、複数のアプリオリアクセスコントロールリスト(ACL)フィルタの第1のセットを用いる前記データストリームの第1の初期脅威フィルタリングを行い、前記識別された構文要素に従って生成された複数のアクセスコントロールリスト(ACL)フィルタの第2のセットを用いて前記遅延バッファにおけるデータの第2のフィルタリングを行う請求項18に記載の侵入検出システム。   The threat filtering circuit performs a first initial threat filtering of the data stream using a first set of a plurality of a priori access control list (ACL) filters, and a plurality of access controls generated according to the identified syntax element. 19. The intrusion detection system of claim 18, wherein a second set of data in the delay buffer is performed using a second set of list (ACL) filters. 前記脅威フィルタリング回路は、脅威のシグネチャに適用された前記識別された構文要素からトークンを生成し、前記構文要素に対応する複数の脅威のフィルタのセットを動的に生成する請求項17に記載の侵入検出システム。   18. The threat filtering circuit of claim 17, wherein the threat filtering circuit generates a token from the identified syntax element applied to a threat signature and dynamically generates a set of multiple threat filters corresponding to the syntax element. Intrusion detection system. 前記トークンは、脅威と関連付けされている可能性のある前記データストリームにおける構文要素に対してだけ生成され、前記データストリームにおける他の部分に対してはトークンが生成されないようになっている請求項20に記載の侵入検出システム。   21. The token is generated only for syntax elements in the data stream that may be associated with a threat, and no token is generated for other parts of the data stream. Intrusion detection system as described in. 前記データパーサは、パーサスタックに含まれているシンボルに従って前記データを解析する請求項17に記載の侵入検出システム。   The intrusion detection system according to claim 17, wherein the data parser analyzes the data according to symbols included in a parser stack. 前記パーサは、前記データストリーム中の前記異なる構文要素に対応する生成規則ルールコードを含むパーサテーブルを有しており、前記生成規則ルールコード前記パーサスタックからのシンボルと前記データストリームの複数の部分に従ってインデックス付けされている請求項22に記載の侵入検出システム。   The parser has a parser table including production rule rule codes corresponding to the different syntax elements in the data stream, and according to the production rule rule code symbols from the parser stack and portions of the data stream 23. The intrusion detection system of claim 22 that is indexed. さらに、前記生成規則コードによってインデックス付けされている生成規則を含む生成規則テーブルを有しており、前記生成規則のうちのいくつかは、前記データストリームからの前記脅威をフィルタリングする際に前記脅威フィルタリング回路によって実行される生成規則を含む請求項23に記載の侵入検出システム。   And further comprising a production rule table including production rules indexed by the production rule code, wherein some of the production rules are adapted to filter the threat from the data stream when the threat filtering is performed. 24. The intrusion detection system of claim 23, comprising production rules executed by the circuit. さらに、複数のネットワーク処理デバイスにある複数の脅威フィルタリング回路からのトークンを受信する中央侵入検出装置を備えており、前記複数のネットワーク処理デバイスは、該複数のネットワーク処理装置によって処理された複数の異なるデータストリームの複数の異なる構文要素を識別するようになっており、前記中央侵入検出装置は、前記複数の異なる構文要素に従って複数のフィルタを生成するとともに当該フィルタを前記異なるネットワーク処理デバイスに戻すように配信する請求項17に記載の侵入検出システム。   And a central intrusion detection device that receives tokens from a plurality of threat filtering circuits in the plurality of network processing devices, wherein the plurality of network processing devices are a plurality of different ones processed by the plurality of network processing devices. A plurality of different syntax elements of the data stream are identified, the central intrusion detection device generating a plurality of filters according to the plurality of different syntax elements and returning the filters to the different network processing devices The intrusion detection system according to claim 17 for distribution. 前記中央侵入検出装置は、前記トークンを送信するネットワーク処理デバイスによって実行されるネットワーク処理動作に従って、前記フィルタを生成する請求項25に記載の侵入検出システム。   26. The intrusion detection system according to claim 25, wherein the central intrusion detection device generates the filter according to a network processing operation performed by a network processing device that transmits the token. さらに、前記脅威フィルタリング回路が前記データストリームからの脅威をフィルタリングする前に、当該データストリームからの複数のフラグメント化されたパケットを再構築する再循環バッファを備える請求項17に記載の侵入検出システム。   18. The intrusion detection system of claim 17, further comprising a recirculation buffer that reconstructs a plurality of fragmented packets from the data stream before the threat filtering circuit filters threats from the data stream. データストリーム中の構文要素を識別する直接実行パーサと、
前記直接実行パーサによって識別された構文要素に従って、前記データストリームに対して侵入検出処理を実行する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.
さらに、前記構文要素に対応する非終端シンボルを前記データストリームのある部分と結合させることによってインデックス付けがなされた複数の生成規則コードの複数のセットを含むパーサテーブルを備えた請求項28に記載のセマンティックプロセッサ。   29. The semantic of claim 28, further comprising a parser table comprising a plurality of sets of production rule codes indexed by combining a non-terminal symbol corresponding to the syntax element with a portion of the data stream. Processor. さらに、前記パーサテーブルの前記生成規則コードによってインデックス付けがなされた複数の生成規則を含む生成規則テーブルを備え、前記複数の生成規則の少なくともある部分は、前記侵入検出処理を実行する1または複数のセマンティックプロセッシングユニットによって実行される複数のマイクロ命令をインデックス化した複数のSPUエントリーポイント値を含む請求項29に記載のセマンティックプロセッサ。   And a generation rule table including a plurality of generation rules indexed by the generation rule code of the parser table, wherein at least some of the plurality of generation rules execute the intrusion detection process. 30. The semantic processor of claim 29, comprising a plurality of SPU entry point values indexing a plurality of microinstructions executed by the semantic processing unit. 前記1または複数のセマンティックプロセッシングユニットは、前記データストリーム中の複数のパケットを複数のアプリオリACLフィルタの第1のセットと比較し、次いで前記比較の結果に従って、前記複数のパケットを廃棄するかあるいは格納する請求項28に記載のセマンティックプロセッサ。   The one or more semantic processing units compare a plurality of packets in the data stream with a first set of a priori ACL filters and then discard or store the plurality of packets according to the result of the comparison 30. The semantic processor of claim 28. 前記1または複数のセマンティックプロセッシングユニットは、前記侵入検出処理を実行しつつ所定の遅延時間だけ前記パケットを格納する請求項31に記載のセマンティックプロセッサ。   32. The semantic processor according to claim 31, wherein the one or more semantic processing units store the packet for a predetermined delay time while executing the intrusion detection processing. 前記1または複数のセマンティックプロセッシングユニットは、前記直接実行パーサによって識別された前記複数の構文要素から複数のトークンを生成し、当該複数のトークンを該トークンに対応するアクセスコントロールリスト(ACL)を動的に生成する脅威アナライザに供給する請求項32に記載のセマンティックプロセッサ。   The one or more semantic processing units generate a plurality of tokens from the plurality of syntax elements identified by the direct execution parser, and dynamically generate an access control list (ACL) corresponding to the tokens. 33. The semantic processor of claim 32, wherein the semantic processor is supplied to a threat analyzer that generates the same. 前記1または複数のセマンティックプロセッシングユニットは、前記格納されたパケットの中から前記動的に生成されたアクセスコントロールリストに一致(マッチ)するパケットを廃棄する請求項33に記載のセマンティックプロセッサ。   The semantic processor of claim 33, wherein the one or more semantic processing units discard packets that match (match) the dynamically generated access control list from the stored packets. さらに、データストリームからの複数のフラグメント化されたパケットを再構築するために前記1または複数のセマンティックプロセッシングユニットによって使用される再循環バッファを備え、前記直接実行パーサは、前記再構築された複数のパケットの中で複数の構文要素を識別し、前記1または複数のセマンティックプロセッシングユニットは、前記識別された複数の構文要素に従って侵入検出処理を行う請求項28に記載のセマンティックプロセッサ。   And further comprising a recirculation buffer used by the one or more semantic processing units to reconstruct a plurality of fragmented packets from the data stream, wherein the direct execution parser comprises the reconstructed plurality of 29. The semantic processor of claim 28, wherein a plurality of syntax elements are identified in the packet, and the one or more semantic processing units perform intrusion detection processing according to the identified plurality of syntax elements. 前記直接実行パーサは、前記データストリーム中の複数のSMTP (Simple Mail Transport Protocol)パケットを識別するとともに、前記1または複数のセマンティックプロセッシングユニットに対して、前記複数のSMTPパケットから複数の電子メールエレメントを抽出しかつ該抽出された電子メールエレメントを用いて後から前記SMTPパケットに適用される複数の電子メール脅威フィルタのセットを生成するように命令する請求項28に記載のセマンティックプロセッサ。   The direct execution parser identifies a plurality of SMTP (Simple Mail Transport Protocol) packets in the data stream, and sends a plurality of email elements from the plurality of SMTP packets to the one or more semantic processing units. 29. The semantic processor of claim 28, instructing to generate and use the extracted email element to generate a set of email threat filters that are later applied to the SMTP packet. 複数の異なるPDAセマンティック状況に対応する複数のセクションに構成されたセマンティックテーブルを有するPDA (PushDown Automaton)エンジンであって、前記複数のセクションの少なくともいくつかは、入力データに含まれている可能性のある多数の文字からなるセマンティック要素に対応する1または複数のエントリーを含んでおり、前記セマンティックテーブルは、前記異なるセマンティック状況を特定する複数のシンボルを前記入力データの複数のセグメントに結合することによってインデックス化されていることを特徴とするPDAエンジン。   A PDA (PushDown Automaton) engine having a semantic table composed of a plurality of sections corresponding to a plurality of different PDA semantic situations, wherein at least some of the plurality of sections may be included in input data. Including one or more entries corresponding to a semantic element of a number of characters, the semantic table being indexed by combining a plurality of symbols identifying the different semantic situations into a plurality of segments of the input data PDA engine characterized by being made into. さらに、前記結合されたシンボルと入力データのセグメントと一致(マッチ)する現在のPDAセマンティック状況におけるセマンティックエントリーに従って、次のPDA状況を特定するセマンティック状況スタンプを含む請求項37に記載のPDAエンジン。   38. The PDA engine of claim 37, further comprising a semantic status stamp that identifies a next PDA status according to a semantic entry in a current PDA semantic status that matches the matched symbol and a segment of input data. さらに、前記複数の入力データセグメントと結合するためのシンボルをポップするとともに、前記セマンティック状況スタンプによって特定される前記次のシンボルをプッシュするスタックを含む請求項38に記載のPDAエンジン。   39. The PDA engine of claim 38, further comprising a stack that pops a symbol for combining with the plurality of input data segments and pushes the next symbol identified by the semantic status stamp. 前記スタックは、多数の以前のセマンティック状況を表す複数の非終端シンボルを含む請求項39に記載のPDAエンジン。   40. The PDA engine of claim 39, wherein the stack includes a plurality of non-terminal symbols that represent a number of previous semantic situations. 前記セマンティックテーブルは、前記入力データで特定された前記セマンティック要素に従ってかつ前記セマンティック要素に含まれる可能性のある個々の文字とは無関係に、異なるPDAセマンティック状況間での変換を行う請求項37に記載のPDAエンジン。   38. The semantic table converts between different PDA semantic situations according to the semantic element specified in the input data and independent of individual characters that may be included in the semantic element. PDA engine. 前記セマンティックテーブルは、コンテントアドレッサブルメモリ(Content Addressable Memory: CAM)を有しており、該コンテントアドレッサブルメモリ内におけるセマンティックエントリーのロケーションは、次のセマンティック状況を特定するために用いられる入力データにおけるセマンティック要素と一致(マッチ)する請求項37に記載のPDAエンジン。   The semantic table has a content addressable memory (CAM), and the location of the semantic entry in the content addressable memory is input data used to specify the next semantic situation. 38. The PDA engine according to claim 37, which matches (matches) the semantic element in. さらに、前記コンテントアドレッサブルメモリによってインデックス付けされるスキップデータマップを含み、該スキップデータマップは、入力データの量を特定し、前記複数のセマンティックエントリーとの比較のために前記PDAエンジンにシフトするようになっている請求項42に記載のPDAエンジン。   In addition, it includes a skip data map indexed by the content addressable memory, wherein the skip data map identifies an amount of input data and shifts to the PDA engine for comparison with the plurality of semantic entries. 43. A PDA engine according to claim 42 configured as described above. さらに、前記セマンティックテーブルによって特定された前記セマンティック要素に従って、前記入力データの別の処理を実行する1または複数のセマンティックプロセッシングユニット(“SPUs”)を有する再構成可能なセマンティックプロセッサを備えた請求項37に記載のPDAエンジン。   38. A reconfigurable semantic processor further comprising one or more semantic processing units (“SPUs”) that perform further processing of the input data according to the semantic elements identified by the semantic table. PDA engine described in 1. さらに、前記1または複数のセマンティックプロセッシングユニットによって実行される複数のマイクロ命令を起動させるために前記セマンティックテーブルによってインデックス化されたセマンティックエントリーポイントマップを備える請求項44に記載のPDA エンジン。   45. The PDA engine of claim 44, further comprising a semantic entry point map indexed by the semantic table to invoke a plurality of microinstructions executed by the one or more semantic processing units.
JP2007548382A 2004-12-21 2005-12-20 Network interface and firewall devices Pending JP2008524965A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (7)

* Cited by examiner, † Cited by third party
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