[go: up one dir, main page]

KR20070087198A - Network Interfaces and Firewall Devices - Google Patents

Network Interfaces and Firewall Devices Download PDF

Info

Publication number
KR20070087198A
KR20070087198A KR1020077016831A KR20077016831A KR20070087198A KR 20070087198 A KR20070087198 A KR 20070087198A KR 1020077016831 A KR1020077016831 A KR 1020077016831A KR 20077016831 A KR20077016831 A KR 20077016831A KR 20070087198 A KR20070087198 A KR 20070087198A
Authority
KR
South Korea
Prior art keywords
packets
packet
dos
parser
processor
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.)
Withdrawn
Application number
KR1020077016831A
Other languages
Korean (ko)
Inventor
솜수브흐라 시크다르
케빈 제롬 로웨트
카베 잘랄리
스티븐 클레이 엘리스
Original Assignee
미슬토우 테크놀로지즈, 인코포레이티드
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 미슬토우 테크놀로지즈, 인코포레이티드 filed Critical 미슬토우 테크놀로지즈, 인코포레이티드
Publication of KR20070087198A publication Critical patent/KR20070087198A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

네트워크 프로세싱 장치가 방화벽 및 다른 네트워크 인터페이스 관리 오퍼레이션들을 수행하기 위한 새로운 구조를 제공한다. 본 발명의 다른 양태에 있어서, 통합 정책 관리 (UPM) 구조가 동일한 메모리 및 프로세싱 구조를 사용해 방화벽 정책 관리를 라우팅 및 스위칭 결정들과 통합시킨다. 다른 실시예에서, 재구성 어의 프로세서 (RSP)가 파서를 사용해 상이한 어의 요소들을 식별하도록 하면, 식별된 그 상이한 어의 요소들은 하나 이상의 어의 프로세싱 유닛 (SPU)들에 의해 사용되어 서로 다른 방화벽, 네트워크 인터페이스, 라우팅, 스위칭, 그리고 기타 패킷 프로세싱 오퍼레이션들이 실행되게 된다.The network processing device provides a new architecture for performing firewall and other network interface management operations. In another aspect of the invention, an integrated policy management (UPM) structure uses the same memory and processing structure to integrate firewall policy management with routing and switching decisions. In another embodiment, if the reconstruction word processor (RSP) uses a parser to identify different word elements, the identified different word elements are used by one or more word processing units (SPUs) to generate different firewalls. , Network interfaces, routing, switching, and other packet processing operations.

Description

네트워크 인터페이스 및 방화벽 장치{Network interface and firewall device}Network interface and firewall device

본 출원은 2005년 7월 21일 "Network interface and firewall device"라는 제목으로 출원된 미국 특허 출원 번호 11/187,049, 2005년 7월 22일 "Method and apparatus for detecting semantic elements using a push down automation"이라는 제목으로 출원된 미국 가출원 번호 60/701,748, 및 2004년 12월 21일 출원된 미국 가출원 번호 60/639,002를 우선권 주장하는 것으로 2003년 1월 24일 출원되어 현재 계류중인 미국 출원 번호 10/351,030의 일부계속출원 (CIP)인 2005년 5월 9일자 "Intrusion detection system" 제목하에 출원된 미국 특허 출원 번호 11/125,956을 우선권 주장한다. 그들 모두는 이 명세서에 참조의 형식으로 포함된다. This application is filed under US Patent Application No. 11 / 187,049, filed July 21, 2005, entitled "Network interface and firewall device," July 22, 2005, entitled "Method and apparatus for detecting semantic elements using a push down automation." Part of U.S. Application No. 10 / 351,030, filed Jan. 24, 2003, which claims priority over U.S. Provisional Application No. 60 / 701,748, filed as title, and U.S. Provisional Application No. 60 / 639,002, filed December 21, 2004. Priority is claimed in US Patent Application No. 11 / 125,956, filed under the title "Intrusion detection system" of May 9, 2005, filed on a continuing application (CIP). All of which are incorporated herein by reference.

인터넷의 개방성은 인터넷 접속 장치들로의 다양한 공격을 파생한다. 이러한 공격은 타깃 장치가 더 이상 올바로 작동할 수 없게 만드는 패킷 시퀀스들을 전송함으로써 효력을 발한다. 이 공격들은 타깃 장치를 정지시키기, DoS (Denial of Service; 서비스 거부), DDoS (Distributed Denial of Service; 분산 서비스 거부) 같은 카테고리들로 분류될 수 있고, 이 장치가 더 이상 사용되지 못하게 되거나, 훼손되거나, DoS의 클론(clone) 공격 소스로서 작동하도록 타깃 장치의 파일들이나 소프트웨어를 변경한다. The openness of the Internet leads to various attacks on Internet access devices. This attack is effected by sending packet sequences that cause the target device to no longer function properly. These attacks can be categorized into categories such as stopping the target device, Denial of Service (DoS), and Distributed Denial of Service (DDoS), and the device can no longer be used or compromised. Or change files or software on the target device to act as a source of clone attacks in DoS.

대부분의 공격들은 공중 (public) 인터넷에 연결된 장치상에서 일어나고 그 회사의 인터넷 접속을 통해 사업장으로 들어온다. 어떤 사업장들은 인터넷에 대해 둘 이상의 연결 포인트를 가진다. 그에 따라, 달리 말해 방화벽이라고도 칭하는, 두 네트워크들 사이의 인터페이스에 자리한 네트워크 장치가 이러한 공격들을 방어하는데 사용된다. 예를 들어, 방화벽은 공용 인터넷과 사설 네트워크 사이, 두 인터넷 서비스 제공자 (ISP) 네트워크들 사이, 두 개의 랜 (Local Area Network) 사이, 또는 어떤 다른 두 네트워크들 사이에 자리할 수 있다. 방화벽 장치가 인터넷에 대한 모든 연결 포인트들에 자리하는 경우, 내부 네트워크와 장치들 주변에 경계 방화벽 (perimeter firewall)이 만들어진다. Most attacks occur on devices connected to the public Internet and enter the workplace through the company's Internet connection. Some businesses have more than one connection point to the Internet. As such, network devices located at the interface between the two networks, also called firewalls, are used to defend against these attacks. For example, a firewall may be located between the public Internet and a private network, between two Internet Service Provider (ISP) networks, between two Local Area Networks, or some other two networks. If a firewall device is located at all connection points to the Internet, a perimeter firewall is created around the internal network and the devices.

방화벽은 무권한 공격들이 사설 네트워크로 들어오지 못하게 쫓고, 가능하다면 사설 네트워크 안으로부터 발생할 수 있는 무권한 전송들을 제거할 책임이 있다. 방화벽의 다른 용도들로는 패킷 내부의 정보 수정이 포함될 수 있다. 예를 들어, 방화벽은 공중 및 사설 인터넷 프로토콜 (IP) 어드레스들 사이에서 컨버팅 (전환)하기 위한 네트워크 어드레스 번역기 (NAT)로서 사용될 수 있다. The firewall is responsible for keeping unauthorized attacks out of the private network and, if possible, eliminating unauthorized transmissions that can occur from within the private network. Other uses of the firewall may include modifying information inside the packet. For example, a firewall can be used as a network address translator (NAT) for converting (translating) between public and private Internet protocol (IP) addresses.

지금까지 방화벽 오퍼레이션들은 주로 PowerPC® 같은 내장형 프로세서나, Intel®클래스 x86 프로세서상에서 작동하는 일군의 소프트웨어 모듈들로서 구현되어 왔다. 문제는, 이러한 하드웨어 구조들이 그러한 방화벽 오퍼레이션들을 효과적으로 구현하기 위한 프로세싱 능력을 갖지 못한다는 데 있다. 따라서, 불가능하지 않은 경우라도, 각각의 패킷이 소스에서 목적지로 흘러갈 때 그 각각의 패킷을 검사하여 패킷들의 유효성을 판단하도록 여러 규칙들을 적용해 모든 다양한 공격들을 막아내거나 필터링하는 것은 어려운 일이다. Until now, firewall operations have been implemented primarily as embedded processors such as PowerPC®, or as a set of software modules that run on Intel® class x86 processors. The problem is that these hardware structures do not have the processing power to effectively implement such firewall operations. Thus, even if this is not possible, it is difficult to prevent or filter out all the various attacks by applying different rules to inspect each packet as it flows from source to destination to determine the validity of the packets.

본 발명은 종래 기술과 관련된 이러한 문제 및 기타 문제들에 착안한다. The present invention addresses these and other problems associated with the prior art.

한 네트워크 프로세싱 장치가 방화벽 및 기타 네트워크 인터페이스 관리 오퍼레이션을 수행하기 위한 새로운 구조를 제공한다. 본 발명의 다른 양태로서, 한 UPM (Unified Policy Management; 통합 정책 관리) 구조가 방화벽 정책 관리를 라우팅 및 스위칭 결정들과 통합하기 위해 동일한 메모리 및 프로세싱 구조를 사용한다. 다른 실시예에서, 한 RSP (Reconfigurable Semantic Processor; 재설정가능 어의 프로세서)가 상이한 문장구조 (syntactic) 요소들을 식별하기 위한 파서를 사용하고, 이때 상기 요소들은 상이한 방화벽, 네트워크 인터페이스, 라우팅, 스위칭, 및 기타 패킷 프로세싱 오퍼레이션들을 수행하기 위한 둘 이상의 어의 프로세싱 유닛 (SPU)들에 의해 사용된다.One network processing device provides a new architecture for performing firewall and other network interface management operations. In another aspect of the invention, a Unified Policy Management (UPM) structure 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 syntactic elements, where the elements are configured with different firewalls, network interfaces, routing, switching, and Used by two or more language processing units (SPUs) to perform other packet processing operations.

본 발명의 상술한 것 및 기타 목적들, 특징들 및 이점들이 첨부된 도면을 참조해 진행되는 본 발명의 바람직한 실시예들에 대한 이하의 상세한 설명으로부터 보다 자명해질 것이다. The above and other objects, features and advantages of the present invention will become more apparent from the following detailed description of the preferred embodiments of the present invention which proceeds with reference to the accompanying drawings.

도 1은 재구성 가능 어의 프로세서 (RSP)를 사용하는 네트워크 프로세싱 장치의 블록도이다. 1 is a block diagram of a network processing apparatus using a reconfigurable language processor (RSP).

도 2a는 RSP를 보다 자세히 도시한 블록도이다.2A is a block diagram illustrating RSP in more detail.

도 2b 및 2c는 RSP에 사용되는 파서 테이블 및 제작 규칙 테이블을 보인 보다 상세한 도면들이다.2B and 2C are more detailed views showing a parser table and a fabrication rule table used in the RSP.

도 3은 서비스 거부 (DoS) 공격이 어떻게 네트워크 프로세싱 장치를 불능으로 만들 수 있는지를 보인 도면이다.3 illustrates how a denial of service (DoS) attack can render a network processing device unavailable.

도 4는 한 방화벽이 서로 다른 영역들을 가진 DoS 공격들과 어떻게 결부되는지를 보인 도면이다. 4 shows how a firewall is associated with DoS attacks with different zones.

도 5는 도 4에 도시된 방화벽의 보다 상세한 도면이다.FIG. 5 is a more detailed view of the firewall shown in FIG. 4.

도 6은 방화벽 내 메모리가 어떻게 서로 다른 계층들로 구획될 수 있는지를 보인다.6 shows how memory in a firewall can be partitioned into different layers.

도 7은 도 6에 도시된 서로 다른 계층들 사이에서 방화벽이 어떻게 이동하는지를 보인 흐름도이다.FIG. 7 is a flow chart showing how a firewall moves between the different layers shown in FIG.

도 8은 도 5의 방화벽이 DoS 공격들을 어떻게 처리하는지를 보인 흐름도이다.8 is a flowchart illustrating how the firewall of FIG. 5 handles DoS attacks.

도 9는 앞의 도 2a에서 보인 RSP가 DoS 공격들을 다루기 위해 어떻게 구성되는가를 보인 블록도이다.FIG. 9 is a block diagram illustrating how the RSP shown in FIG. 2A above is configured to handle DoS attacks.

도 10 및 11은 도 9의 RSP가 DoS 후보 패킷들을 어떻게 처리하는지를 보인 흐름도들이다.10 and 11 are flowcharts illustrating how the RSP of FIG. 9 processes DoS candidate packets.

도 12는 독립적으로 작동하는 방화벽 및 라우팅 장치를 보인 블록도이다.12 is a block diagram showing a firewall and a routing device that operate independently.

도 13은 통합 라우팅 및 방화벽 정책 관리 (UPM)를 제공하는 패킷 처리 구조에 대한 도면이다.FIG. 13 is a diagram of a packet processing structure providing integrated routing and firewall policy management (UPM).

도 14는 액세스 제어 리스트 (ACL) 테이블의 샘플 엔트리들을 보인 도면이다.14 shows sample entries of an access control list (ACL) table.

도 15는 도 13의 패킷 프로세서가 어떻게 UPM을 제공하는지를 보인 흐름도이다.15 is a flowchart illustrating how the packet processor of FIG. 13 provides a UPM.

도 16은 상위 계층 패킷 특성들에 기반하는 포워딩 액션을 제공하는 UPM 테이블의 다른 예이다.16 is another example of a UPM table that provides forwarding actions based on higher layer packet characteristics.

도 17은 UPM이 상이한 URL 값들에 따라 패킷들을 라우팅하는데 어떻게 사용될 수 있는가에 대한 한 예를 보인 블록도이다.17 is a block diagram illustrating an example of how the UPM can be used to route packets according to different URL values.

도 18은 RSP에서 균일 정책 관리가 RSP 안에서 어떻게 구현되는지에 대한 한 예이다.18 is an example of how uniform policy management is implemented in an RSP in an RSP.

도 19는 도 18의 RSP가 어떻게 동작하는가를 보인 흐름도이다.19 is a flowchart illustrating how the RSP of FIG. 18 operates.

도 20은 RSP가 네트워크 어드레스 번역 (NAT) 및 포트 어드레스 번역 (PAT)에 대해 어떻게 이용되는지를 보인 도면이다.20 illustrates how RSP is used for Network Address Translation (NAT) and Port Address Translation (PAT).

도 21은 RSP가 NAT/PAT 번역 및 IP 패킷 번역을 위해 어떻게 구성되는지를 보인 보다 상세한 도면이다.FIG. 21 is a more detailed diagram showing how an RSP is configured for NAT / PAT translation and IP packet translation.

도 22 및 23은 RSP가 NAT/PAT 번역을 어떻게 수행하는지를 보인 흐름도들이다.22 and 23 are flow charts showing how the RSP performs NAT / PAT translation.

도 24는 RSP가 IPv4 및 IPv6 사이에서 패킷들을 어떻게 전환하는지를 보인 도면이다.24 shows how the RSP switches packets between IPv4 and IPv6.

도 25는 RSP가 IPv4 및 IPv6 사이에서 어떻게 전환하는지를 보다 사엣히 보 인 흐름도이다.25 is a flowchart showing how the RSP switches between IPv4 and IPv6.

도 26 및 27은 가성 사설 네트워크 (VPN) 통합을 위해 RSP가 어떻게 사용되는지를 보인 것이다.26 and 27 show how RSP is used for Virtual Private Network (VPN) integration.

도 28 및 29는 서로 다른 서브 네트워크들에 대해 안티 바이러스 면허들을 할당하는데 방화벽이 어떻게 사용될 수 있는가를 보인다.28 and 29 show how a firewall can be used to assign antivirus licenses for different sub-networks.

도 30 및 31은 분산 방화벽 프로세싱을 위해 여러 RSP들이 어떻게 서로 연결될 수 있는지를 보인 것이다.30 and 31 illustrate how multiple RSPs can be connected to each other for distributed firewall processing.

도 32a는 한 사설 네트워크에서 구현되는 침입 검출 시스템 (IDS)를 보인 블록도이다.32A is a block diagram illustrating an intrusion detection system (IDS) implemented in a private network.

도 32b는 통상의 침입 검출 시스템의 한계들을 보인 것이다.32B shows the limitations of a typical intrusion detection system.

도 32c는 데이트 스트림 내 문장 요소들을 식별하고 그 문장 요소들을 위험인자를 식별하는데 사용하는 도 32의 IDS의 한 실시예를 보인다.32C illustrates one embodiment of the IDS of FIG. 32 that identifies sentence elements in the data stream and uses those sentence elements to identify risk factors.

도 33은 재설정가능 어의 프로세서 (RSP)를 이용해 IDS가 어떻게 구현되는지를 보인 블록도이다.33 is a block diagram illustrating how IDS is implemented using a resettable word processor (RSP).

도 34는 도 33의 IDS가 어떻게 동작하는지를 보인 흐름도이다.34 is a flowchart showing how the IDS of FIG. 33 operates.

도 35는 도 33에 도시된 IDS의 보다 상세한 로직 도면이다.35 is a more detailed logic diagram of the IDS shown in FIG. 33.

도 36은 도 33에 도시된 RSP의 블록도이다.FIG. 36 is a block diagram of the RSP shown in FIG. 33.

도 37 및 38은 RSP 내 직접 실행 파서 (DXP)가 이메일 메시지들을 포함하는 패킷들을 어떻게 식별하는지를 보인 것이다.37 and 38 show how the Direct Execution Parser (DXP) in the RSP identifies packets containing email messages.

도 39는 RSP가 어떻게 위험인자 필터들을 데이트 스트림에 적용하는지를 보 인 흐름도이다.39 is a flowchart illustrating how the RSP applies risk factor filters to a data stream.

도 40은 RSP가 세션 룩업을 어떻게 수행하는가를 보인 흐름도이다.40 is a flowchart showing how an RSP performs a session lookup.

도 41은 RSP가 입력 스트림으로부터 토큰들을 어떻게 생성하는지를 보인 흐름도이다.41 is a flowchart showing how the RSP generates tokens from an input stream.

도 42a는 RSP가 침입 검출 오퍼레이션들을 수행하기 전에 분할된 패킷들을 어떻게 재조립하는가를 보인 흐름도이다.42A is a flow diagram illustrating how the RSP reassembles divided packets before performing intrusion detection operations.

도 42b는 RSP가 침입 검출을 수행하기 전에 TCP 패킷들을 어떻게 재정렬하는지를 보인 흐름도이다.42B is a flow chart showing how the RSP rearranges TCP packets before performing intrusion detection.

도 43 및 44는 중앙 침입 검출기가 서로 다른 네트워크 프로세싱 장치들로부터 생성된 토큰들과 어떻게 상관되는지를 보인 것이다.43 and 44 show how the central intrusion detector correlates with tokens generated from different network processing devices.

도 45는 IDS가 정보를 변경하거나 데이터 스트림들로부터 정보를 제거하기 위해 어떻게 사용되는지를 보인 것이다.45 shows how IDS is used to change information or to remove information from data streams.

도 46은 푸쉬다운 오토마톤 (PDA; PushDown Automaton) 엔진을 보인 것이다.46 shows a PushDown Automaton (PDA) engine.

도 47은 도 46의 PDA 엔진이 어떻게 URL 서치를 수행하는가를 보인 어의 상태도이다.FIG. 47 is a state diagram showing how the PDA engine of FIG. 46 performs URL search.

도 48은 PDA 엔진이 보다 긴 문자 스트링을 서치하기 위해 어떻게 동일한 개수의 어의 상태들을 이용하는지를 보인 어의 상태도이다.48 is a state diagram of a fish showing how the PDA engine uses the same number of fish states to search for a longer character string.

도 49는 PDA 엔진이 추가 어의 요소를 찾기 위해 어떻게 한 개의 추가 어의 상태만을 이용하는지를 보인다.Figure 49 shows how the PDA engine uses only the state of one additional word to find elements of the additional word.

도 50-54는 PDA 엔진이 행하는 전형적 URL 서치 방법을 보인 상세도들이다.50-54 are detailed views illustrating an exemplary URL search method performed by the PDA engine.

도 55는 PDA 엔진이 재구성가능 어의 프로세서 (RSP) 안에서 어떻게 구현되는지를 보인다. 55 shows how the PDA engine is implemented within a Reconfigurable Language Processor (RSP).

도 1은 네트워크 인터페이스 장치(25a)를 통해 공중 IP 네트워크(12)로 연결된 사설 인터넷 프로토콜 (IP) 네트워크(24)를 보인다. 공중 IP 네트워크(12)는 패킷 스위칭을 지원하는 임의의 광역 네트워크 (WAN)일 수 있다. 사설 네트워크(24)는 공중 IP 네트워크(12)와의 통신을 요하는 회사 사업장 네트워크, 인터넷 서비스 제공자 (ISP) 네트워크, 홈 네트워크 등등일 수 있다. 1 shows a private Internet Protocol (IP) network 24 connected to a public IP network 12 via a network interface device 25a. The public IP network 12 may be any wide area network (WAN) that supports packet switching. The private network 24 may be a company workplace network, an Internet service provider (ISP) network, a home network, or the like, which requires communication with the public IP network 12.

사설 네트워크(24) 내 네트워크 프로세싱 장치들(25A-25D)은 패킷 교환 네트워크를 통해 통신하는 임의의 타입의 계산기 장치일 수 있다. 예를 들어, 네트워크 프로세싱 장치들(25a 및 25b)은 라우터들, 스위치들, 게이트웨이들, 방화벽들 등등일 수 있다. 엔드 포인트(25C)는 퍼스널 컴퓨터 (PC)이고 엔드 포인트(25D)는 인터넷 웹 서버같은 서버이다. PC(25C)는 유선 이더넷 접속같은 유선 접속이나, 가령 IEEE 802.11 프로토콜을 이용하는 무선 접속을 통해 사설 네트워크(24)로 접속될 수 있다.The network processing devices 25A-25D in the private network 24 may be any type of calculator device that communicates via a packet switched network. For example, 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.

재구성 어의 프로세서들 (RSPs)(100)은 사설 네트워크(24) 내 네트워크 장치들(25A-25D)의 임의 조합으로서 오퍼레이션한다. 상이한 RSP들(100)이 사설 네트워크(24) 안으로, 그리고 그것을 관통해 지나가는 네트워크 트래픽(22)을 수집하여 분석한다. 네트워크 프로세싱 장치 내 RSP(100A)는 이 예에서, 사설 네트워크(24)의 방화벽 및 일반 네트워크 인터페이스로서 오퍼레이션하도록 구성되어 있다. 이 하에서 설명될 네트워크 인터페이스 및 기타 일반 방화벽 오퍼레이션들은 RSP(100) 안에 구현되는 것으로 보여지고 있으나, 이들 오퍼레이션들 중 몇몇은 다른 통상의 컴퓨터 구조들로서 구현될 수도 있다는 것을 알아야 한다.Reconfigurable processors (RSPs) 100 operate as any combination of network devices 25A-25D in private network 24. Different RSPs 100 collect and analyze network traffic 22 passing into and through the private network 24. The RSP 100A in the network processing apparatus is configured to operate in this example as a firewall and a general network interface of the private network 24. Although network interfaces and other general firewall operations to be described below are shown to be implemented in RSP 100, it should be understood that some of these operations may be implemented as other conventional computer structures.

일 실시예에서, RSP(100A)는 서비스 거부 (DoS) 공격들(16)을 검출하고 그로부터 보호하도록 구성된다. 공중 IP 네트워크(12)에 연결된 외부 PC(14)가 사설 네트워크(24)의 네트워크 프로세싱 장치들(25A-25D) 가운데 둘 이상을 공격하도록 의도된 DoS 공격(16)을 발생할 수 있다. RSP(100A)는 공중 IP 네트워크(12)로부터 수신되는 모든 들어오는 패킷들(20)을 모니터하고 DoS 공격(16)과 결부된 패킷 스트림(20) 내 어떤 패킷들을 버린다. 패킷들(16)을 검출해 버리는 것 외에, RSP(100A)는 DoS 공격(16)을 추종해 버려지지 않은 패킷들(22)에 대한 다른 네트워크 인터페이스 오퍼레이션들(26)도 수행할 수 있다. 예를 들어, RSP(100A)는 바이러스 및 악성프로그램 (malware) 검출 및 필터링, 네트워크 어드레스 번역 (NAT), 라우팅, 통계적 분석, 로깅, 및/또는 공중 IP 네트워크(12) 및 사설 IP 네트워크(24) 사이에 전송되는 패킷들을 위해 요구되는 패킷 변환 오퍼레이션들을 지원할 수 있다. 이러한 모든 오퍼레이션들이 이하에서 보다 상세히 설명될 것이다.In one embodiment, RSP 100A is configured to detect and protect against denial of service (DoS) attacks 16. An external PC 14 connected to the public IP network 12 may generate a DoS attack 16 intended to attack two or more of the network processing devices 25A-25D of the private network 24. RSP 100A monitors all incoming packets 20 received from public IP network 12 and discards any packets in packet stream 20 associated with DoS attack 16. In addition to detecting packets 16, RSP 100A may also perform other network interface operations 26 on packets 22 that are not discarded following DoS attack 16. For example, RSP 100A may be configured to detect and filter viruses and malware, network address translation (NAT), routing, statistical analysis, logging, and / or public IP network 12 and private IP network 24. It can support the packet conversion operations required for packets transmitted in between. All these operations will be 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, RSP 100 may be installed in other network processing devices located internally within private network 24 or at any other primary access point into private network 24. For example, RSP 100B may be located at server 25D to provide operations 26 for similar authentication, routing, statistical analysis, and the like, which will be described in more detail below. Alternatively, some of the packet operations 26 may be performed in the RSP 100B and not in the RSP 100A. For example, the RSP 100B may perform statistical analysis or DoS filtering in addition to any other packet analysis filtering and packet translations performed by the RSP 100A.

사설 네트워크(24) 내 어떤 다른 네트워크 프로세싱 장치들(25B 및 25C) 역시 이하에 설명되는 오퍼레이션들 가운데 어느 것을 수행하도록 구성되는 하나 이상의 RSP들(100)을 포함할 수 있다. RSP(100)를 사용하는 플랫폼은, 셀룰라 코드 분할 다중화 액세스 (CDMA)나 시분할 다중화 액세스(TDMA), 802.11, 블루투스 등과 같은 무선 인터페이스를 거쳐 패킷들이나 기타 데이터 스트림들을 수신하는, 무선 PDA (Personal Digital Assistant), 무선 셀 폰, 무선 라우터, 무선 액세스 포인트, 무선 클라이언트 등등일 수도 있다.Any other network processing devices 25B and 25C in the private network 24 may also include one or more RSPs 100 configured to perform any of the operations described below. A platform using the RSP 100 is a wireless personal digital assistant (PDA) that receives packets or other data streams over a wireless interface such as cellular code division multiplexing access (CDMA) or time division multiplexing access (TDMA), 802.11, Bluetooth, and the like. ), A wireless cell phone, a wireless router, a wireless access point, a wireless client, and so forth.

재구성 어의 프로세서 (RSP; Reconfigurable Semantic Processor)Reconfigurable Semantic Processor (RSP)

도 2a는 이하에 설명되는 방화벽 및 기타 네트워크 인터페이스 오퍼레이션들을 구현하기 위한 일실시예에 사용되는 재구성 어의 프로세서 (RSP)(100)의 블록도를 보인다. RSP(100)는 입력 포트(120)를 통해 수신되는 패킷 데이터 스트림을 버퍼링하는 입력 버퍼(140) 및 출력 포트(152)를 통해 패킷 데이터 스트림 출력을 버퍼링하는 출력 버퍼(150)를 포함한다.FIG. 2A shows a block diagram of a processor (RSP) 100 of reconfiguration words used in one embodiment for implementing firewall and other network interface operations described below. RSP 100 includes an input buffer 140 for buffering packet data streams received through input port 120 and an output buffer 150 for buffering packet data stream output through output port 152.

직접 실행 파서 (DXP)(180)는 입력 버퍼(140)에서 수신된 패킷들이나 프레임들 (가령, 입력 "스트림")의 처리, 출력 버퍼(150)로의 출력 (가령, 출력 "스트림"), 및 재순환 (recirculation) 버퍼(160)에서의 재순환 (가령, 재순환 "스트림")을 제어한다. 입력 버퍼(140), 출력 버퍼(150), 및 재순환 버퍼(160)는 선이 력선출력(First-in-first-out)(FIFO) 버퍼들임이 바람직하다.Direct Execution Parser (DXP) 180 may process packets or frames (eg, input “stream”) received at input buffer 140, output to output buffer 150 (eg, output “stream”), and Control recycle (eg, recycle "stream") in recycle buffer 160. The input buffer 140, the output buffer 150, and the recycle buffer 160 are preferably first-in-first-out (FIFO) buffers.

DXP(180)는 또한, 버퍼들(140, 160 및 160) 및 메모리 서브시스템(215) 사이에서의 데이터 전송을 다루는 어의 프로세싱 유닛 (SPU)(200)에 의해 패킷들의 처리를 제어한다. 메모리 서브시스템(215)은 입력 포트(120)로부터 수신된 패킷들을 저장하고, 이하에서 설명되는 통합 정책 관리(UPM) 오퍼레이션들 및 기타 방화벽 오퍼레이션들을 위해 사용되는 CAM(220)에 액세스 제어 리스트 (ACL) 테이블을 역시 저장한다. DXP 180 also controls the processing of packets by a verbal processing unit (SPU) 200 that handles data transfer between buffers 140, 160 and 160 and memory subsystem 215. Memory subsystem 215 stores packets received from input port 120 and access control list (ACL) to CAM 220 used for Unified Policy Management (UPM) operations and other firewall operations described below. Save the table too.

RSP(100)는 주어진 방화벽 오퍼레이션을 수행하도록 적어도 세 개의 테이블들을 사용한다. 생성 규칙들 (Production Rule)(176)을 검색하기 위한 코드들(178)은 파서 테이블(Parser Table; PT)(170)에 저장된다. 문법적 생성 규칙들(176)은 생성 규칙 테이블(PRT; Production Rule Table)(190)에 저장된다. SPU(200)에 의해 실행되는 코드 세그먼트들(212)은 어의 코드 테이블(SCT; Semantic Code Table)(210)에 저장된다. 파서 테이블(170) 내 코드들(178)은, 가령 행-열 포맷이나 콘텐츠-어드레스형 포맷으로 저장된다. 행-열 포맷에서, 파서 테이블(170)의 행들은 내부 파서 스택(185)에 의해 제공되는 비단말(non-terminal) 코드 NT(172)에 의해 색인된다. 파서 테이블(170)의 열들은 입력 버퍼(140)의 데이터 헤드로부터 추출된 입력 데이터 값 DI[N](174)에 의해 색인된다. 콘텐츠 어드레스형 포맷에서, 파서 스택(185)으로부터의 비단말 코드(172)와 입력 버퍼(140)로부터의 입력 데이터값(174)을 연결한 것(concatenation)이 파서 테이블(170)로의 입력을 규정한다.RSP 100 uses at least three tables to perform a given firewall operation. Codes 178 for retrieving a Production Rule 176 are stored in a Parser Table (PT) 170. The grammatical generation rules 176 are stored in a production rule table 190 (PRT) 190. The code segments 212 executed by the SPU 200 are stored in a Semantic Code Table (SCT) 210. Codes 178 in parser table 170 are stored, for example, in a row-column format or a content-addressed format. In the row-column format, the rows of parser table 170 are indexed by non-terminal code NT 172 provided by inner parser stack 185. The columns of parser table 170 are indexed by input data value DI [N] 174 extracted from the data head of input buffer 140. In the content addressable format, concatenation of the non-terminal code 172 from the parser stack 185 and the input data value 174 from the input buffer 140 defines the input to the parser table 170. do.

생성 규칙 테이블(190)은 파서 테이블(170)로부터의 코드들(178)에 의해 색인된다. 테이블들(170 및 190)은 도 2a에 도시된 것과 같이, 파서 테이블(170)로의 커리(query)가 비단말 코드(172) 및 입력 데이터값(174)에 적용될 수 있는 생성 규칙(176)을 바로 리턴하도록 링크될 수 있다. DXP(180)는 파서 스택(185)의 최상위에 있는 비단말 코드를, PRT(190)로부터 리턴된 생성 규칙(PR)(176)으로 대체하고, 입력 버퍼(140)로부터 데이터 파싱을 재개한다. The generation rule table 190 is indexed by codes 178 from the parser table 170. Tables 170 and 190 define a generation rule 176 in which a query to parser table 170 may be applied to non-terminal code 172 and input data value 174, as shown in FIG. 2A. Can be linked to return immediately. The DXP 180 replaces the non-terminal code at the top of the parser stack 185 with the generation rule (PR) 176 returned from the PRT 190 and resumes parsing data from the input buffer 140.

어의 코드 테이블(210)은 또, 파서 테이블(170)에 의해 생성된 코드들(178) 및/또는 생성 규칙 테이블(190)에 의해 생성된 생성 규칙들(176)에 따라 색인된다. 일반적으로, 파싱 결과들이 DXP(180)로 하여금, 소정 생성 규칙(176)에 있어 어의 코드 테이블(210)로부터의 어의 엔트리 포인트 (SEP; Semantic Entry Point) 루틴(212)이 로드되어 SPU(200)에 의해 실행되어야 할지 여부를 간파할 수 있게 한다. The lexical code table 210 is also indexed according to the codes 178 generated by the parser table 170 and / or the generation rules 176 generated by the generation rule table 190. In general, the parsing results cause the DXP 180 to load a semantic entry point (SEP) routine 212 from the fish code table 210 in a predetermined generation rule 176 to load the SPU ( To determine whether or not it should be executed by

SPU(200)는 문맥상의 심볼들로 어드레스 가능한 체계화된 메모리 인터페이스를 제공하는, 메모리 서브시스템(215)으로의 여러 액세스 경로들을 가진다. 메모리 서브시스템(215), 파서 테이블(170), 생성 규칙 테이블(190), 및 어의 코드 테이블(210)은 온칩(on-chip) 메모리, 동기 DRAM (Dynamic Random Access Memory)들 및 CAM (Content Addressable Memory)들 같은 외부 메모리 장치들, 혹은 그러한 자원들의 결합형을 사용할 수 있다. 각각의 테이블이나 콘텍스트는 단지 다른 테이블들이나 콘텍스트들 중 하나 이상을 가진 물리적 공유 메모리 공간에 대한 맥락상의 인터페이스를 지원할 것이다. SPU 200 has several access paths to memory subsystem 215, which provides a structured memory interface addressable with contextual symbols. The memory subsystem 215, the parser table 170, the generation rule table 190, and the erroneous code table 210 include on-chip memory, synchronous dynamic random access memories (DRAMs) and content (CAM). External memory devices such as addressable memories, or a combination of such resources. Each table or context will only support a contextual interface to the physical shared memory space with one or more of the other tables or contexts.

MCPU (Maintenance Central Processing Unit)(56)이 SPU(200)와 메모리 서브시스템(215) 사이에 연결된다. MCPU(56)는 이성적으로 전통적 소프트웨어 및 하드웨어로서 달성될 수 있는 RSP(100)에 대한 어떤 요망되는 기능들을 수행한다. 이 기능들은 보통, 복잡성 때문에 SPU(200) 내 함유를 담보하지 못하는 부정기적이고 시간에 민감하지 않은 기능들이다. MCPU(56)가 SPU(200)에게 MCPU를 위해 작업들을 수행하라고 요청하는 기능도 가지는 것이 바람직하다.A Maintenance Central Processing Unit (MCPU) 56 is coupled between the SPU 200 and the memory subsystem 215. The MCPU 56 performs some desired functions for the RSP 100 that can be rationally accomplished as traditional software and hardware. These functions are usually irregular and time-sensitive functions that do not guarantee inclusion in the SPU 200 because of their complexity. It is also desirable for the MCPU 56 to have a function that requests the SPU 200 to perform tasks for the MCPU.

메모리 서브시스템(215)은 해싱(hashing) 함수나 콘텐츠-어드레스형 메모리(CAM) 룩업(lookup)을 통해 DRAM(280) 내 데이터를 액세스하는 어레이 머신-콘텍스트 데이터 메모리 (AMCD)(230)를 포함한다. 암호문 블록(240)이 데이터를 암호화, 암호화 해독, 또는 인증하고, 콘텍스트 제어 블록 캐시(250)가 DRAM(280)으로가거나 그로부터 오는 텍스트 제어 블록들을 캐싱한다. 일반 캐시(260)가 기본 오퍼레이션들에 사용되는 데이터를 캐싱하고 스트리밍 캐시(270)가 DRAM(280)에 데이터 스트림들이 기록되거나 그로부터 읽혀질 때 그 데이터 스트림들을 캐싱한다. 콘텍스트 제어 블록 캐시(250)은 소프트웨어 제어형 캐시임이 바람직하다, 즉, SPU(200)이 케시 라인이 사용되고 자유롭게 되는 때를 결정한다. 회로들(240, 250, 260 및 270) 각각은 DRAM(280) 및 SPU(200) 사이에 연결된다. TCAM(220)은 AMCD(230) 및MCPU(56) 사이에 연결되어 액세스 제어 리스트(ACL; Access Control List) 테이블 및 기타 파라미터들을 실질적으로 방화벽 기능을 향상시키는 방식으로 포함한다.Memory subsystem 215 includes array machine-context data memory (AMCD) 230 that accesses data in DRAM 280 via a hashing function or a content-addressed memory (CAM) lookup. do. The ciphertext block 240 encrypts, decrypts, or authenticates the data, and the context control block cache 250 caches the text control blocks going to or coming from the DRAM 280. The general cache 260 caches the data used for basic operations and the streaming cache 270 caches the data streams as they are written to or read from the DRAM 280. The context control block cache 250 is preferably a software controlled cache, ie the SPU 200 determines when the cache line is used and freed. Each of the circuits 240, 250, 260, and 270 is connected between the DRAM 280 and the SPU 200. TCAM 220 is coupled between AMCD 230 and MCPU 56 to include an Access Control List (ACL) table and other parameters in a manner that substantially enhances firewall functionality.

RSP(100)의 오퍼레이션 블록들에 대한 세부적인 설계 최적사항들은 2003년 1 월 24일 출원된 Reconfigurable Semantic Processor라는 제목의 공동 계류중인 출원 10/351,030에 기술되어 있고, 그 내용은 이 명세서에 참조 형태로서 포함된다.Detailed design optimizations for the operation blocks of the RSP 100 are described in co-pending application 10 / 351,030 entitled Reconfigurable Semantic Processor, filed Jan. 24, 2003, the content of which is incorporated herein by reference. Included as.

방화벽 및 네트워크 인터페이스 오퍼레이션들을 위한 For firewall and network interface operations RSPRSP 사용 use

도 1에서 상술한 방화벽 및 기타 네트워크 인터페이스 오퍼레이션들(26)은 문법 규칙들과 어의 엔트리 포인트 (SEP; Semantic Entry Point) 루틴들(212)을 사용하는 RSP(100)를 통해 구현된다. 패킷들이 RSP 장치(100)의 입력 포트(120)에 도달하여, 파서 테이블(170)의 문법 테이블 엔트리들을 통해 파싱되고, SEP 루틴들(212)에 의해 어의적으로 처리된다. SEP 루틴(212)은,The firewall and other network interface operations 26 described above in FIG. 1 are implemented via RSP 100 using grammar rules and semantic entry point (SEP) routines 212. The packets arrive at the input port 120 of the RSP device 100, are parsed through grammar table entries in the parser table 170, and semantically processed by the SEP routines 212. SEP routine 212,

1. 패킷을 그 자체로서 받아서 그것을 출력 포트(152)로 전달하거나;1. receive the packet as it is and forward it to the output port 152;

2. 패킷을 더 이상의 처리로부터 제외해 그것을 전달하지 않거나;2. Drop the packet from further processing and do not forward it;

3. 패킷을 변경한 다음 그것을 출력 포트(152)로 전달하거나;3. change the packet and then forward it to output port 152;

4. 패킷을 홀딩한 채 세션의 추가 패킷들이 도착하기를 기다린 다음, 패킷의 최종 성질을 판단하거나; 4. Hold the packet and wait for further packets in the session to arrive, then determine the final nature of the packet;

5. 추가 처리를 위해 패킷을 특정 목적지로 향하게 하거나 RSP를 다시 통과하도록 결정할 것이다.5. You will decide to direct the packet to a specific destination or pass it back through the RSP for further processing.

파서 테이블(170)의 문법 규칙은 허용가능한 패킷들이 통과될 수 있게 하고, SPU(200)에 대해 어떤 알려지거나 의심되는 변칙에 대해 경고하도록 구성된다. 통과나 실패를 결정하는 문법의 한 예에, TCP 플래그 설정이 포함된다. TCP 플래그 필드는 그 안에 8 비트를 포함하고 오직 소정의 조합들만이 유효하다. 문법 규칙들은 파서 테이블(170)에서, 허용가능한 모든 TCP 설정들을 허용하고 허용불가한 TCP 설정들은 거부하도록 코딩된다. 예를 들어, 동일한 패킷 안에 둘 모두 설정된 TCP SYN 및 FIN 메시지는 유효한 조합이 아니며, 그에 따라 DXP(180)에 의해 바로 제외된다.The grammar rules of the parser table 170 are configured to allow acceptable packets to pass through and to warn of any known or suspected anomalies to the SPU 200. An example of a grammar for determining pass or fail is the setting of TCP flags. The TCP flag field contains 8 bits in it and only certain combinations are valid. Grammar rules are coded in parser table 170 to allow all allowable TCP settings and reject unacceptable TCP settings. For example, TCP SYN and FIN messages that are both set in the same packet are not valid combinations and are therefore directly excluded by DXP 180.

어떤 비허용 패킷들이나 오퍼레이션들은 지원하는 SEP 루틴들(212)에 의해서만 판단될 수 있다. 이들은 대부분 세션 및 프로토콜의 상태를 포함한다. 한 예가, TP 데이터 페이로드 세그먼트를, 해당 TCP SYN 메시지를 통해 전송하기 전에 보내는 것일 것이다. 이 예에서, SEP 루틴(212)은 TCP SYN 메시지 뒤에 오지 않는 TCP 세션들 동안 메모리(280)에서 패킷들을 제외하게 될 것이다.Certain unacceptable packets or operations may only be determined by the supporting SEP routines 212. These mostly include the state of the session and protocol. One example would be to send a TP data payload segment before sending it via a corresponding TCP SYN message. In this example, SEP routine 212 will exclude packets from memory 280 during TCP sessions that do not follow a TCP SYN message.

SEP 코드(212)와 연계하여 파서 문법들을 사용하는 것이 다 우수한 성능을 제공하는데, 이는 직접 실행 파서(180)가 SPU들(200)에서의 추가 사이클들을 소모함이 없이 바로 패킷들을 거부하거나 비공격 패킷들을 DoS 프로세싱 주변으로 다시 향하게 할 수 있기 때문이다. 전통적인 방화벽들은 "불량" 규칙들로 된 리스트에 대해 각각의 패킷을 체크해야 한다. 새로운 공격들이 발견되기 때문에 이것은 시간이 지나면서 늘어난다. 반대로, 파서 문법은 양호한 패킷들만이 RSP(100)를 통과하도록 서술 및 허용하도록 작성될 수 있다. 따라서, 불량 패킷들은 자동으로 걸러지거나, SPU들(200)에 의해 바로 처리된다. 이것이 패킷 모니터링 오퍼레이션에 대한 보다 나은 스케일링을 제공한다. Using parser grammars in conjunction with the SEP code 212 provides excellent performance, which allows the direct execution parser 180 to immediately reject or non-attack packets without consuming additional cycles in the SPUs 200. This is because packets can be redirected around DoS processing. Traditional firewalls have to check each packet against a list of "bad" rules. This increases over time as new attacks are discovered. In contrast, the parser grammar may be written to describe and allow only good packets to pass through the RSP 100. Thus, bad packets are automatically filtered or processed directly by the SPUs 200. This provides better scaling for packet monitoring operations.

RSPRSP 파서 및 생성 규칙 테이블들 Parser and Generation Rule Tables

방화벽 또는 통합 정책 관리자 (UPM)으로서의 RSP(100) 오퍼레이션은 특정 예를 통해 더 잘 이해될 것이다. 이하에서 설명되는 예에서, RSP(100)는 TCP 패킷 들의 서비스 거부 (DoS) 필터링을 지원한다. 그러나, 이 분야의 당업자들이라면 아래에 예시하는 개념들이 임의의 통신 프로토콜을 사용해 전송되는 임의의 데이터 스트림에 대한 임의 타입의 방화벽 오퍼레이션에 대해서도 당연히 적용가능하다는 것을 알 수 있을 것이다. 유사한 개념들 역시 아래에 기술되는 통합 정책 관리 (UPM) 오퍼레이션들에 용이하게 적용될 수 있다.RSP 100 operation as a firewall or an integrated policy manager (UPM) will be better understood through specific examples. In the example described below, the RSP 100 supports DoS filtering of TCP packets. However, those skilled in the art will appreciate that the concepts illustrated below are naturally applicable to any type of firewall operation for any data stream transmitted using any communication protocol. Similar concepts can also be readily applied to the integrated policy management (UPM) operations described below.

방화벽 및 UPM 오퍼레이션들은 입력 데이터 스트림에 대한 문장구조(syntax)를 파싱 및 검출하는 것을 포함하며, 도 2b 및 2c를 참조해 설명될 것이다. 도 2b를 우선 참조할 대, 상이한 여러 문법들과 결부된 코드들이 파서 테이블(170) 및 생성 규칙 테이블(190)에 동시에 존재할 수 있다. 예를 들어, 코드들(300)은 미디어 액세스 제어 (MAC) 패킷 헤더 포맷 파싱과 관련되고, 코드들(302)은 IP 패킷 프로세싱과 관련되며, 또 다른 코드들의 집합(304)은 전송 제어 프로토콜(TCP) 패킷 처리와 관련되는 식으로 되어 있다. 파서 테이블(170)의 다른 코드들(306)은 아래에 더 상세히 설명될 다른 방화벽 또는 서비스 거부 (DoS) 오퍼레이션들과 관련된다.Firewall and UPM operations include parsing and detecting syntax for an input data stream and will be described with reference to FIGS. 2B and 2C. Referring first to FIG. 2B, codes associated with several different grammars may exist simultaneously in the parser table 170 and the generation rule table 190. For example, the codes 300 are related to media access control (MAC) packet header format parsing, the codes 302 are related to IP packet processing, and another set of codes 304 is a transmission control protocol ( TCP) packet processing. Other codes 306 of the parser table 170 are associated with other firewall or denial of service (DoS) operations, which will be described in more detail below.

PR 코드들(178)은 생성 규칙 테이블(190)에 저장된 해당 생성 규칙(176)을 액세스하는데 사용된다. 특정 룩업 구성에 의해 요구되지 않는다면, 입력 값들(308) (가령, n이 어떤 선택된 바이트 단위의 매치(match) 폭일 때 현 입력 값들 DI[n]과 결합 된 비단말 (NT) 심볼(172))은 PR 테이블(170)에 임의의 특정 순서에 따라 배정될 필요가 없다.PR codes 178 are used to access the corresponding generation rule 176 stored in the generation rule table 190. Input values 308 (eg, non-terminal (NT) symbol 172 combined with current input values DI [n] when n is a match width in any selected byte unit), unless required by a particular lookup configuration. Need not be assigned to the PR table 170 in any particular order.

일실시예에서, 파서 테이블(170)은 또 NT 심볼(172) 및 데이터 값들 DI[n](174)을 DXP(180)로부터 수신하는 어드레서(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 symbol 172 and data values DI [n] 174 from DXP 180. The addresser 310 associates the NT symbol 172 with the data value DI [n] 174 and applies the concatenation value 308 to the parser table 170. Conceptually this is useful for viewing the generation rule table 170 as a matrix with one PR code 178 for each unique combination of NT code 172 and data values 174, although the invention is so limited. Does not. Other types of memory and memory schemes may also be suitable for other applications.

일실시예에서, 파서 테이블(170)은 콘텐츠 어드레스형 메모리 (CAM)로서 구성되고, 여기서 어드레서(310)는 NT 코드(172)와 입력 데이터 값들 DI[n](174)을 하나의 키로 사용하여 CAM이 PR 코드(178)를 찾아내도록 한다. CAM은 3진 CAM (TCAM) 엔트리들로 된 3진 CAM임이 바람직하다. 각각의 TCAM 엔트리는 NT 코드(312) 및 DI[n] 매치값(314)을 구비한다. 각각의 NT 코드(312)는 여러 개의 TCAM 엔트리들을 포함할 수 있다. In one embodiment, parser table 170 is configured as a content addressable memory (CAM), where addresser 310 uses NT code 172 and input data values DI [n] 174 as one key. To allow the CAM to find the PR code 178. The CAM is preferably a ternary CAM with ternary CAM (TCAM) entries. Each TCAM entry has an NT code 312 and a DI [n] match value 314. Each NT code 312 may include several TCAM entries.

DI[n] 매치값(314)의 각 비트는 "0", "1", 또는 "X" ("상관없음-Don't care를 나타냄)로 세팅될 수 있다. 이 기능이 PR 코드들(178)로 하여금, 파서 테이블(170)이 하나의 매치를 찾을 수 있도록, DI[n](174)의 오직 소정의 비트들/바이트들만이 한 코딩된 패턴에 부합할 것을 요구할 수 있게 한다. Each bit of the DI [n] match value 314 may be set to "0", "1", or "X" (represents "don't care"). 178 enables the parser table 170 to require that only certain bits / bytes of DI [n] 174 match a coded pattern, so that the parser table 170 can find one match.

예를 들어, TCAM의 한 행이 TCP SYN 패킷을 위한 NT 코드 NT_TCP_SYN(312A)과 그 뒤에 와서 목적지 IP 어드레스 및 TCP 메시지 식별자 같이 TCP SYN 패킷에 존재할 수 있는 콘텐츠들을 나타내는 추가 바이트들(314A)을 포함할 수 있다. 이 TCAM 행의 나머지 바이트들은 "don't care"로 설정된다. 따라서, NT_TCP_SYN(312A) 및 어떤 바이트들로 된 DI[N]이 파서 테이블(170)로 제공되고, 여기서 DI[N]의 바이트들 중 최초 세트가 TCP SYN 메시지 식별자를 포함할 때, DI[N]의 나머지 바이트들이 무엇을 포함하든 간에 매치(부합, 정합)가 생길 것이다. For example, one row of TCAM contains NT code NT_TCP_SYN 312A for TCP SYN packets followed by additional bytes 314A indicating the contents that may be present in the TCP SYN packet, such as the destination IP address and TCP message identifier. can do. The remaining bytes of this TCAM row are set to "don't care". Thus, NT_TCP_SYN 312A and DI [N] of certain bytes are provided to the parser table 170, where DI [N] when the first set of bytes of DI [N] contains a TCP SYN message identifier. No matter what the rest of the bytes in] contain, there will be a match.

파서 테이블(170)의 TCAM은, 상술한 바와 같이, NT(172) 및 DI[N](174)에 부합하는 TCAM 엔트리에 해당하는 PR 코드(178A)를 제공한다. 이 예에서, PR 코드(178A)는 TCP SYN 패킷과 결부된 것이다. PR 코드(178A)는 다시 DXP(180)로 보내지거나, 바로 PR 테이블(190)로 보내지거나, 아니면 둘 모두로 보내질 수 있다. 일실시예에서, PR 코드(178A)는 매치를 제공한 TCAM 엔트리의 행 인덱스이다. The TCAM of the parser table 170 provides a PR code 178A corresponding to a TCAM entry that matches NT 172 and DI [N] 174, as described above. In this example, the PR code 178A is associated with a TCP SYN packet. The PR code 178A may be sent back to the DXP 180, directly to the PR table 190, or both. In one embodiment, the PR code 178A is the row index of the TCAM entry that provided the match.

도 2c는 생성 규칙 테이블(190)에 대한 가능한 한 구성을 예시한다. 이 실시예에서, 어드레서(320)는 DXP(180)이나 파서 테이블(170)로부터 PR 코드들(178)을 수신하고, DXP(180)로부터 NT 심볼들(172)을 수신한다. 수신된 NT 심볼(172)은, 수신된 PR 코드(178)를 위치 확인하는데 사용되었던, 파서 테이블(170)로 보내진 같은 NT 심볼(172)임이 바람직하다.2C illustrates a possible configuration for the generation rule table 190. In this embodiment, addresser 320 receives PR codes 178 from DXP 180 or parser table 170 and NT symbols 172 from DXP 180. The received NT symbol 172 is preferably the same NT symbol 172 sent to the parser table 170, which was used to locate the received PR code 178.

어드레서(320)는 이들 수신된 PR 코드들(178) 및 NT 심볼들(172)을 사용해 해당 생성 규칙들(176)을 액세스한다. 어드레서(320)는 일부 구성들에서 반드시 필요로 되지 않을 수 있지만, 사용될 경우 DXP(180)의 일부, 혹은 PRT(190)의 일부, 또는 중간 오퍼레이션 블록이 될 수 있다. 어드레서는 가령 파서 테이블(170)이나 DXP(180)가 곧바로 어드레스들을 생성하는 경우 필요로 되지 않을 수 있다.The addresser 320 uses these received PR codes 178 and NT symbols 172 to access the corresponding generation rules 176. The addresser 320 may not necessarily be necessary in some configurations, but may be part of the DXP 180, part of the PRT 190, or an intermediate operation block when used. The addresser may not be needed, for example, if the parser table 170 or the DXP 180 directly generates addresses.

생성 규칙 테이블(190)에 저장된 생성 규칙들(176)은 세 개의 데이터 세그먼트들을 포함한다. 이 데이터 세그먼트들에는, 심볼 세그먼트(177A), SPU 엔트리 포인트(SEP) 세그먼트(177B), 그리고 스킵(skip) 바이트 세그먼트(177C)가 포함된다. 이 세그먼트들은 고정 길이 세그먼트들이거나, 널-종료형 (null-terminated)임이 바람직한 가변 길이 세그먼트들일 수 있다. 심볼 세그먼트(177A)는 DXP의 파서 스택(185)(도 2a) 위로 밀리는 (pushed) 단말 및/또는 비단말 심볼들을 포함한다. SEP 세그먼트(177B)는 SPU(200)에 의해 사용되는 SPU 엔트리 포인트들(SEP들)을 포함해, 데이터의 세그먼트들을 처리한다. 아래에 기술되는 한 구성에서, SEP 세그먼트들(177B)은, 현재 파싱된 패킷에서 식별되는 ACL 조건자들(predicates) 및 기타 문장구조 요소들에 해당할 수 있다.The generation rules 176 stored in the generation rule table 190 include three data segments. These data segments include symbol segment 177A, SPU entry point (SEP) segment 177B, and skip byte segment 177C. These segments may be fixed length segments or variable length segments that are preferably null-terminated. The symbol segment 177A includes terminal and / or non-terminal symbols that are pushed over the parser stack 185 (FIG. 2A) of the DXP. SEP segment 177B includes SPU entry points (SEPs) used by SPU 200 to process segments of data. In one configuration described below, SEP segments 177B may correspond to ACL predicates and other syntax structure elements identified in the currently parsed packet.

스킵 바이트 세그먼트(177C)는 입력 버퍼(140)에 의해 사용되는 스킵 바이트 값을 포함해, 그 버퍼 포인터를 증가시켜 입력 스트림의 프로세싱을 전진시킨다. 프로세싱 생성 규칙들에 유용한 다른 정보 역시 생성 규칙(176)의 일부로서 저장될 수 있다. The skip byte segment 177C contains the skip byte value used by the input buffer 140, incrementing its buffer pointer to advance the processing of the input stream. Other information useful for processing generation rules may also be stored as part of generation rule 176.

이 예에서, 생성 규칙 코드(178A)로서 색인되는 하나 이상의 생성 규칙들(176A)은 입력 버퍼(140)에서 식별된 TCP SYN 패킷과 조화된다. SEP 세그먼트(177B)는 도 4-11을 통해 이하에서 설명되는 것과 같이, SPU(200)에 의해 실행될 때, 식별된 TCP SYN 패킷에 대한 DoS 오퍼레이션을 수행하는, 도 2a의 어의 코드 테이블(210) 내 SPU 코드(212)를 가리킨다. In this example, one or more generation rules 176A indexed as generation rule code 178A match the TCP SYN packet identified in input buffer 140. The SEP segment 177B, when executed by the SPU 200, as described below with reference to Figures 4-11, performs the DoS operation on the identified TCP SYN packet, which is the lexical code table 210 of Figure 2A. C) SPU code 212.

일실시예에서, SPU(200)는 병렬로 오퍼레이션 될 수 있는 어의 프로세싱 요 소들의 어레이를 포함한다. 생성 규칙(176A)의 SEP 세그먼트(177B)는 하나 이상의 SPU들(200)이 상이한 패킷들에 대해 동일한 방화벽 오퍼레이션을 수행하거나 동일한 패킷에 대해 상이한 방화벽 오퍼레이션들을 병렬로 수행하도록 착수시킨다. 이하에 설명되는 방화벽, 네트워크 인터페이스, 혹은 UPM 오퍼레이션들 중 어느 것에 대해 필수적일 수 있는 어떤 다른 타입의 패킷이나 데이터 식별자를 검출하는데 유사한 오퍼레이션이 이용될 수 있다는 것은 자명한 것일 것이다. In one embodiment, SPU 200 includes an array of words processing elements that can be operated in parallel. SEP segment 177B of generation rule 176A sets one or more SPUs 200 to perform the same firewall operation on different packets or to perform different firewall operations on the same packet in parallel. It will be apparent that similar operations may be used to detect any other type of packet or data identifier that may be necessary for any of the firewalls, network interfaces, or UPM operations described below.

상술한 바와 같이, 파서 테이블(170)은 TCP SYN 패킷들과 결부되거나 결부되지 않은 다른 문법 역시 포함할 수 있다. 예를 들어, 파서 테이블(170)에 포함된 IP 문법(302)이, DoS 프로세싱을 수행하기 위해, 식별된 TCP SYN 메시지와 결합하여 사용되는 입력 버퍼(140) 내 식별된 한 NT_IP 목적지 어드레스와 관련된 생성 규칙 코드들(178)을 포함할 수 있다 (이하에서 도 4-11 참조).As discussed above, the parser table 170 may also include other grammars associated with or without TCP SYN packets. For example, the IP grammar 302 included in the parser table 170 is associated with an identified NT_IP destination address in the input buffer 140 that is used in conjunction with the identified TCP SYN message to perform DoS processing. Generation rule codes 178 (see FIGS. 4-11 below).

생성 규칙 코드들(302)에서 부합되는 데이터 값(314)들에는 도 1의 사설 네트워크(24)에 자리한 네트워크 프로세싱 장치의 목적지 IP 어드레스가 포함될 수 있다. NT_IP 코드(172)와 결부된 입력 데이터 DI[n](174)가 PR 코드들(302)에 대한 매치 값들(314)에 포함되는 목적지 어드레스를 가지지 못하면, 생성 규칙 테이블(190)로 디폴트 생성 규칙 코드(178)가 제공될 수 있다. 디폴트 생성 규칙 코드(178)는 생성 규칙 테이블(190) 안에서, DXP(180) 및/또는 SPU(200)로 하여금 입력 버퍼(140)에서 패킷을 버리게 명하는 한 생성 규칙(176)을 가리킬 수 있다.The matching data values 314 in the generation rule codes 302 may include the destination IP address of the network processing device located in the private network 24 of FIG. 1. If the input data DI [n] 174 associated with the NT_IP code 172 does not have a destination address included in the match values 314 for the PR codes 302, then the generation rule table 190 defaults to the generation rule. Code 178 may be provided. The default generation rule code 178 may point to the generation rule 176 in the generation rule table 190 as long as the DXP 180 and / or SPU 200 commands the packet to be discarded in the input buffer 140. .

서비스 거부 (DoS)Denial of Service (DoS)

도 3은 DoS 공격(16)이 네트워크 프로세싱 장치(406)를 어떻게 위태롭게 하 는지를 보인 것이다. 일반적으로, DoS 저지의 목적은 악의적 패킷들이 사설 네트워크(24) 내 네트워크 프로세싱 장치들로 액세스 되는 것을 막기 위한 것이다. 이하의 설명은 한 네트워크장치를 여러 패킷들로 넘치게 하는 것과 관련된 한 DoS 공격의 일례를 논의한다. 그러나, 하나, 혹은 몇몇 적대적 패킷들과 관련된 다른 여러 적대적 공격들의 타입들이 존재한다. 예를 들어, 다른 적대적 공격들은 네트워크 프로세싱 장치 프로토콜 스택의 정상 오퍼레이션을 방해하는 하나나 몇몇 개의 패킷들과 관련될 수 있다. 네트워크 프로세싱 장치나 네트워크에 대한 이러한 적대적 공격들 중 하나를 이하에서는 일반적으로 DoS 공격들로 칭하며, 모두 본 발명의 시스템의 범주 안에 있다. 3 shows how DoS attack 16 endangers network processing device 406. In general, the purpose of DoS deterrence is to prevent malicious packets from being accessed by network processing devices in private network 24. The following discussion discusses one example of a DoS attack involving flooding a network device with multiple packets. However, there are several other types of hostile attacks involving one or several hostile packets. For example, other hostile attacks may involve one or several packets that interfere with normal operation of the network processing device protocol stack. One of these hostile attacks against a network processing device or network is hereinafter referred to generally as DoS attacks, all within the scope of the system of the present invention.

도 3을 참조할 때, 반드시 그러한 것은 아니지만 통상적으로 사설 네트워크(24)의 외부에서 동작하는 공격자 장치(14)는 사설 네트워크(24)가 여러 패킷들(16)로 넘치게 한다. 한 예에서, 공격자 컴퓨터(14)에 의해, 방대한 전송 제어 프로토콜 (TCP) 동기화 (SYN) 패킷들(400)이 사설 네트워크(24)의 목적지 어드레스로 보내진다. 다른 예에서, 공격자(14)가 방대한 패킷 조각들(402)을 사설 네트워크(24)의 목적지 어드레스로 보낼 수도 있다. 어느 경우에서든, 그 패킷들(16)은 사설 네트워크(24)의 하나 이상의 네트워크 장치들(406)이 각자 다르게 수신된 TCP SYN 패킷(400)의 상태들을 보유하도록 만들고 수신된 패킷 조각들의 각 집합(402)에 대한 상태들(410)을 보유하도록 만든다. Referring to FIG. 3, the attacker device 14, which is typically, but not necessarily, external to the private network 24, causes the private network 24 to flood with several packets 16. In one example, by the attacker computer 14, massive Transmission Control Protocol (TCP) Synchronization (SYN) packets 400 are sent to the destination address of the private network 24. In another example, the attacker 14 may send massive packet fragments 402 to the destination address of the private network 24. In either case, the packets 16 allow one or more network devices 406 of the private network 24 to retain the statuses of the TCP SYN packet 400 received differently and for each set of received packet fragments ( To hold states 410 for 402.

TCP SYN 공격들(400)과 패킷 조각 공격들(402)은, 가능한 여러 상이한 타입의 DoS 공격들 가운데 일부 예들일 뿐이다. 예를 들어, 공격자들은 TCP Finish (마침) (FIN) 패킷들이나 중복되는 패킷 조각들을 보냄으로써 네트워크 장치들을 정시시킬 수도 있다. 다른 포트 기반 DoS 공격에 있어서, 어떤 웜 (worm)이 사설 네트워크(24)의 한 장치 안에 자리할 수 있고, 그것이 이후에 공격자(14)에 의해 사설 네트워크(24) 안에서부터 가짜 메시지들을 전송하도록 관리된다. DoS 공격들은 또한 인터넷 제어 메시지 프로토콜 (ICMP) 메시지들을 통해 일어날 수도 있다. TCP SYN attacks 400 and packet fragment attacks 402 are only some examples of the many different types of DoS attacks possible. For example, an attacker may indicate network devices by sending TCP Finish (FIN) packets or duplicate packet fragments. In other port-based DoS attacks, a worm can reside within a device on the private network 24, which is then managed by the attacker 14 to send fake messages from within the private network 24. do. DoS attacks may also occur via Internet Control Message Protocol (ICMP) messages.

새로운 TCP SYN 패킷(400)이 네트워크 프로세싱 장치(406)에 의해 수신될 때마다, 새 TCP 세션 상태(408)가 보유되고, 상응하는 TCP ACK 메시지(404)가 전송 장치 (공격자(14))로 다시 보내진다. 그러나, 공격자(14)는 그 TCP ACK 응답(404)을 무시하고 계속해서 새 TCP SYN 메시지들(400)을 사설 네트워크(24)로 보낼 것이다. 공격자(14)는 또 TCP SYN 메시지들(400) 안에 가짜 소스 어드레스를 삽입하여, 네트워크 장치(406)로 하여금 다른 컴퓨터 먹잇감으로 그 TCP SYN ACK 메시지들(404)을 보내게 만들어, 그 먹잇감이 되는 대상이 이후 방대한 넘쳐나는 TCP SYN ACK 메시지들(404)을 처리해야 하는 부담을 지우게 된다. Each time a new TCP SYN packet 400 is received by the network processing device 406, a new TCP session state 408 is retained and the corresponding TCP ACK message 404 is sent to the transmitting device (attack 14). Sent again. However, the attacker 14 will ignore the TCP ACK response 404 and continue to send new TCP SYN messages 400 to the private network 24. The attacker 14 also inserts a fake source address into the TCP SYN messages 400, causing the network device 406 to send the TCP SYN ACK messages 404 to another computer feed, which becomes the prey. The subject is then burdened to handle the massive flood of TCP SYN ACK messages 404.

네트워크 처리 장치(406)는 어떤 소정 기간 중에 각각의 TCP SYN 메시지(400)에 상응하는 TCP 상태들(408)을 보유하도록 요구된다. 이렇게 많은 수의 가짜 TCP 상태들(408)을 보유하는 것은 다른 적법한 IP 트래픽의 처리가 심각하게 느려지게 되거나 그 적법한 IP 트래픽이 누락될 정도로 네트워크 장치(406) 내 자원들을 고갈시킨다. The network processing device 406 is required to hold the TCP states 408 corresponding to each TCP SYN message 400 for some predetermined period of time. Holding such a large number of fake TCP states 408 exhausts resources in network device 406 such that processing of other legitimate IP traffic is severely slowed or the legitimate IP traffic is missed.

유사한 시나리오 하에서, 공격자(14)는 관련 시퀀스 넘버들을 가진 패킷 조각들(402)을 전송할 수 있다. 네트워크 프로세싱 장치(406)는 그 시퀀스에 따른 각 패킷 조각(402)이 수신될 때까지, 혹은 어떤 타임아웃 시간이 만기될 때까지 상태들(410)을 보유해야 한다. 공격자(14)가 고의적으로 그 시퀀스에서 패킷 조각들(402)을 제외시킬 수 있다. 이것이 네트워크 장치(406)로 하여금 타임아웃 시간의 듀레이션(지속기간, duration) 동안 패킷 조각들로 된 각 집합에 대한 상태들(410)을 보유할 것을 요구한다.Under similar scenarios, the attacker 14 can send packet fragments 402 with associated sequence numbers. The network processing apparatus 406 must retain the states 410 until each packet fragment 402 in the sequence is received, or until some timeout time expires. The attacker 14 may intentionally exclude the packet fragments 402 from the sequence. This requires the network device 406 to maintain states 410 for each set of packet fragments for a duration of timeout time.

이러한 유형의 DoS 공격들에 대처하는 종래의 기술은 들어오는 패킷들(16)의 비율을 제한하는 것이다. 예를 들어, 네트워크 프로세싱 장치(406)가 모든 TCP SYN 패킷들에 대해 목적지 어드레스들을 식별할 수 있다. 수신된 패킷들의 수가 소정 비율 이상으로 증가할 때 어떤 특정 목적지 어드레스에 대한 TCP SYN 패킷들이 배제된다.The conventional technique for dealing with this type of DoS attacks is to limit the rate of incoming packets 16. For example, the network processing apparatus 406 may identify the destination addresses for all TCP SYN packets. TCP SYN packets for a particular destination address are excluded when the number of received packets increases above a certain rate.

그러나, 각각의 DoS 공격을 지속적으로 감시 및 추적하는 것은 실질적 장치 자원들을 소모시킨다. 네트워크 프로세싱 장치(406)는 각각의 가능한 DoS 위험인자에 대해 들어오는 모든 패킷을 감시해야 한다. 예를 들어, 네트워크 프로세싱 장치(406)는 각각의 TCP SYN 패킷 및 각각의 패킷 조각을 식별해야 한다. 이것 하나도 프로세싱 집중적이다. 그러나, 네트워크 프로세싱 장치(406)는 비슷하게 수신되는 패킷들의 개수와 비율도 추적해야 하고, 필요하다면 DoS 비율 문턱치에 도달한 유사 유형의 패킷들을 배제해야 한다. 한 가지 문제가, 현재의 컴퓨터 구조들이 이러한 DoS 오퍼레이션들을 현재의 네트워크 라인 속도로 수행할 용량을 가지지 못했다는 것이다.However, continuously monitoring and tracking each DoS attack consumes substantial device resources. The network processing device 406 must monitor all incoming packets for each possible DoS risk factor. For example, the network processing device 406 must identify each TCP SYN packet and each packet fragment. This one is also processing intensive. However, the network processing device 406 must also track the number and rate of similarly received packets and, if necessary, exclude similar types of packets that have reached the DoS rate threshold. One problem is that current computer architectures do not have the capacity to perform these DoS operations at the current network line speed.

도 4를 참조할 때, 방화벽(420)이 고유한 방식을 통해 패킷들을 비율 제한함 으로써 DoS 공격들에 대해 더 효과적으로 식별 및 대항한다. 아래의 설명에서, DoS 공격의 일부가 될 수 있을 어떤 패킷을 DoS 후보 패킷이라 부른다. 예를 들어, TCP SYN 패킷들이 한 DoS 공격에 사용될 수 있다. 따라서, 한 TCP SYN 패킷이 방화벽(420)에 의해 DoS 후보자 패킷으로 식별된다. 조각화된 패킷이 가능한 한 DoS 공격에 사용될 수 있으며, 그에 따라 역시 방화벽(420)에 의해 DoS 후보 패킷으로 식별된다.Referring to FIG. 4, the firewall 420 more effectively identifies and counters DoS attacks by rate limiting packets in a unique manner. In the description below, any packet that may be part of a DoS attack is called a DoS candidate packet. For example, TCP SYN packets can be used in one DoS attack. Thus, one TCP SYN packet is identified by the firewall 420 as a DoS candidate packet. Fragmented packets can be used for DoS attacks as much as possible, and are therefore also identified as DoS candidate packets by firewall 420.

방화벽(420)은 관련된 목적지 어드레스들에 따라 DoS 후보 패킷들을 비율 제한한다. 각각의 가능한 DoS 공격에 대한 목적지 어드레스들의 식별 및 관리는 실질적 프로세싱 자원들을 필요로 할 수 있다. 그러나, 방화벽(420)에 사용된 구조가 이전 방화벽 구조들보다 더 효율적이고 스케일러블(salable)하므로, 상당량의 상이한 DoS 공격들을 고속 라인 속도로 감시 및 제거할 수 있게 된다.Firewall 420 rate limits the DoS candidate packets according to the associated destination addresses. Identification and management of destination addresses for each possible DoS attack may require substantial processing resources. However, the architecture used for firewall 420 is more efficient and scalable than previous firewall architectures, allowing for the monitoring and removal of a significant amount of different DoS attacks at high line speeds.

영역들(Zones)Zones

정책 관리는 네트워크 처리 장치나 네트워크에 서로 다른 영역들(zones)을 배정할 수 있다. 이들 서로 다른 영역들은 가령, 그 네트워크 프로세싱 장치 내 외부 네트워크 및 내부 네트워크 인터페이스들과 관련될 수 있다. 이들 영역들은 DoS 오퍼레이션들과 무관하게 네트워크 정책 관리 고려사항들에 따라 결정될 수 있다. 그러나, 방화벽(420)의 한 양태는 DoS 위험인자들을 분석할 때 정책 관리자에 의해 앞에서 지정된 서로 다른 인터페이스 영역들을 고려한다. Policy management can assign different zones to network processing devices or networks. These different areas may be associated with, for example, external network and internal network interfaces in the network processing device. These areas can be determined according to network policy management considerations regardless of DoS operations. However, one aspect of firewall 420 takes into account the different interface areas previously specified by the policy manager when analyzing DoS risk factors.

예를 들어, 제1영역 (1)은 인터페이스(426)를 통해 공중 네트워크(12)로부터 수신되는 공중 IP 트래픽과 결부될 수 있다. 제2영역(2)은 VPN 터널(424)을 통해 공중 네트워크(12)를 거쳐 수신되는 반-신뢰 (semi-trusted) 버추얼 사설 네트워크 (VPN)과 결부될 수 있다. 예를 들어, VPN 터널(424)은 사설 네트워크(24)와 홈 컴퓨터(422) 사이에서 개설될 수 있다. 홈 컴퓨터(422)는 사설 네트워크(24)를 운영하는 개체의 한 피고용자에 의해 운영될 수 있다. 제3영역(3)은 사설 네트워크(24)로부터 내부적으로 생성된 고신뢰 (highly trusted) IP 트래픽과 결부되고 인터페이스(428)을 통해 수신될 수 있다. For example, first region 1 may be associated with public IP traffic received from public network 12 via interface 426. The second zone 2 may be associated with a semi-trusted virtual private network (VPN) that is received over the public network 12 via the VPN tunnel 424. For example, VPN tunnel 424 may be established between private network 24 and home computer 422. Home computer 422 may be operated by an employee of an entity operating private network 24. The third zone 3 may be associated with the highly trusted IP traffic generated internally from the private network 24 and received via the interface 428.

각각의 영역은 상이한 신뢰 레벨에 연계되어 있고 그에 따라 서로 다른 DoS 비율 제한이 배정된다. DoS 비율 제한은, 동일한 목적지 어드레스를 가지고 특정 시기 중에 방화벽(420)을 통과하도록 허용되는 특정 타입의 DoS 후보 패킷 (TCP SYN 메시지들을 포함하는 특정 타입의 패킷들 등)의 개수를 말한다. 비율 제한에 도달한 뒤에, 상기 동일 DoS 타입 및 목적지 어드레스를 가진 어떠한 추가 패킷도 배제된다. 예를 들어, 인터페이스(426)를 통해 영역(1)으로부터 수신된 패킷들은 공중 네트워크(12)를 통해 신뢰할 수 없는 소스들로부터 수신되기 때문에 최저 신뢰 레벨에 결부된다. 따라서 영역(1)으로부터 수신되는 패킷들은 다른 영역들보다 더 낮은 DoS 비율 리밋 (rate limit)이 배정될 수 있다. Each zone is associated with a different level of confidence and therefore assigned different DoS rate limits. DoS rate limiting refers to the number of certain types of DoS candidate packets (such as certain types of packets including TCP SYN messages) that have the same destination address and are allowed to pass through firewall 420 during a particular time period. After the rate limit is reached, any additional packets with the same DoS type and destination address are excluded. For example, packets received from zone 1 via interface 426 are associated with the lowest confidence level because they are received from untrusted sources over public network 12. Thus, packets received from region 1 may be assigned a lower DoS rate limit than other regions.

영역(2)은 패킷들이 알려진 한 소스(422)로부터 수신된다고 추정되므로 중간 신뢰 레벨을 갖는다. 그에 따라, 영역(2)에는 영역(1) 보다 높은 DoS 비율 리밋이 배정될 수 있다. 예를 들어, 소정 시기 중에, 영역(1)보다 더 많은 수의, 동일한 목적지 어드레스를 가진 TCP SYN 패킷들이 영역(2)를 통과하도록 허용될 수 있다. 이 예에서, 영역(3)은, 인터페이스(428) 사으로 수신되는 모든 패킷들이 사설 네트 워크(24) 내부에 자리한 장치들로부터 오기 때문에, 최고의 신뢰 레벨을 가진다. 그에따라, 영역(3)에서 수신되는 패킷들에 더 높은 DoS 비율 리밋이 할당될 수 있다.Region 2 has an intermediate confidence level because it is assumed that packets are received from one known source 422. Accordingly, the region 2 may be assigned a higher DoS ratio limit than the region 1. For example, during a given time period, a greater number of TCP SYN packets with the same destination address than area 1 may be allowed to pass through area 2. In this example, area 3 has the highest level of trust since all packets received by interface 428 come from devices located inside private network 24. Accordingly, higher DoS rate limits may be assigned to packets received in region 3.

수신된 패킷들과 결부되는 영역들은 소스 어드레스나 포트 정보에 따라 식별될 수 있다. 예를 들어, RSP(100) 또는 방화벽(420) 내 어떤 다른 프로세싱 장치가, 패킷이 수신된 관련 소스 어드레스 VLAN ID 및/또는 인터페이스에 기반하여, 들어오는 패킷들과 관련된 영역들을 결정할 수 있다. 그러면 방화벽(420)은 식별된 패킷들 관련 영역들에 부분적으로 기반하여 DoS 공격들을 관리한다. 예를 들어, 잠정적 DoS 위험인자들과 결부된 패킷들이 카운트되고, 관리되며, 이들의 관련 영역들에 따라 비율 제한될 수 있다. 이것이 방화벽(420)으로 하여금 보다 효과적으로 상이한 이터페이스들에 대해 이들의 관련 신뢰 레벨에 따라 DoS 자원들을 배정할 수 있게 한다. 이점을 이하에서 더 상세히 설명할 것이다.Areas associated with the received packets can be identified according to source address or port information. For example, RSP 100 or any other processing device in firewall 420 may determine regions associated with incoming packets based on the associated source address VLAN ID and / or interface from which the packet was received. Firewall 420 then manages DoS attacks based in part on the identified packets related areas. For example, packets associated with potential DoS risk factors may be counted, managed, and rate limited according to their related areas. This allows firewall 420 to more effectively allocate DoS resources to different interfaces according to their associated level of trust. This will be explained in more detail below.

도 5를 참조할 때, 도 4에 도시된 방화벽(420)의 일실시예는 DoS 및 비-DoS 후보 패킷들을 포함할 수 있는 한 유입된 패킷 스트림(440)을 수신하는 프로세서(442)를 포함한다. 프로세서(442)는 먼저 DoS 공격과 관련될 수 있는 패킷 스트림(440) 내 패킷들 (DoS 후보 패킷들)을 식별한다. 예를 들어, 프로세서(442)는 TCP SYN 메시지를 포함하는 어느 유입 패킷 조각들이나 패킷들을 DoS 후보 패킷으로서 식별할 수 있다.Referring to FIG. 5, one embodiment of the firewall 420 shown in FIG. 4 includes a processor 442 that receives an incoming packet stream 440 as long as it can include DoS and non-DoS candidate packets. do. Processor 442 first identifies packets (DoS candidate packets) in packet stream 440 that may be associated with a DoS attack. For example, the processor 442 may identify any incoming packet fragments or packets containing a TCP SYN message as a DoS candidate packet.

프로세서(442)는 식별된 DoS 후보 패킷들과 관련된 영역(468)을 식별하기 위해 테이블(464)에 액세스한다. 예를 들어, 프로세서(442)는 식별된 DoS 패킷 내 한 포트 값을 테이블(464)의 포트 넘버 엔트리(466)와 매치할 수 있다. 그런 다음 프로세서는 매치한 포트 넘버 엔트리(466)와 결부된 테이블(464) 내 영역(468)을 식별한다. Processor 442 accesses table 464 to identify region 468 associated with the identified DoS candidate packets. For example, the processor 442 can match a port value entry 466 in the table 464 with a port value in the identified DoS packet. The processor then identifies the region 468 in the table 464 associated with the matched port number entry 466.

프로세서(442)는 식별된 DoS 패킷에 대한 목적지 어드레스(472) 및 관련 영역 값(468)을 결합한 것을 CAM (Content Addressable Memory)(444) 안으로의 어드레스로서 사용한다. CAM(444)은 목적지 어드레스 값들 및 영역 값들의 조합인 DoS 엔트리들(445)을 포함한다. CAM 안의 어드레스 위치들은 SRAM (Static Random Access Memory)(450)로의 포인터들로서 사용된다.Processor 442 combines the destination address 472 and associated region value 468 for the identified DoS packet as the address into CAM (Content Addressable Memory) 444. CAM 444 includes DoS entries 445 that are a combination of destination address values and area values. Address locations in the CAM are used as pointers to the static random access memory (SRAM) 450.

SRAM(450) 안의 메모리 위치들은 DoS 공격 플래그(452), 타임 스탬프(454), 계층 값(456), 및 오프셋(458)을 포함하는 필드들로 구획된다. DoS 공격 플래그(452)는, 특정 목적지 어드레스에 대한 패킷들의 개수가 소정 DoS 비율 리밋을 초과할 때마다 설정된다. 상술한 바와 같이, DoS 비율 리밋은 서로 다른 영역들(448)에 대해 맞춤화될 수 있다.Memory locations in the SRAM 450 are partitioned into fields that include a DoS attack flag 452, a time stamp 454, a layer value 456, and an offset 458. DoS attack flag 452 is set whenever the number of packets for a particular destination address exceeds a predetermined DoS rate limit. As discussed above, the DoS ratio limit can be customized for different regions 448.

타임 스탬프(454)는 새 엔트리가 TCAM(444)에 더해질 때마다 세팅되고, 타임 스탬프의 기간이 소정 DoS 시기 너머로 확장될 때마다 리셋 된다. 계층 값(456)은 TCAM(444), SRAM(450) 및 DRAM (Dynamic Random Access Memory)(462)의 DoS 엔트리들을 할당 및 관리하기 위해 프로세서(442)에 의해 사용된다. 오프셋 값(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 each time the duration of the time stamp extends beyond a certain DoS time period. The layer value 456 is used by the processor 442 to allocate and manage DoS entries of the TCAM 444, the SRAM 450, and the Dynamic Random Access Memory (DRAM) 462. The offset value 458 is used as a pointer to the DRAM 462. DRAM 462 includes a series of counters 460 that track the number of packets for specific destination addresses received by firewall 420 during the DoS period.

프로세서(442)는 잠정적으로 DoS 공격의 일부가 될 수 있는 to DoS 후보 패킷들(475)을 식별한다. 새롭게 식별된 패킷(474)에 대한 목적지 어드레스(472) 및 영역 값(468)이 CAM(444)으로의 어드레스로서 사용된다. 새 DoS 후보 패킷(474)은 기존의 어떠한 엔트리들과도 매치하지 않을 것이므로, 프로세서(442)는 패킷(474)에 대한 새 DoS 엔트리(445)를 CAM(444) 안에 추가한다. Processor 442 identifies to DoS candidate packets 475 that may potentially be part of a DoS attack. The destination address 472 and area value 468 for the newly identified packet 474 are used as the address to the CAM 444. Since the new DoS candidate packet 474 will not match any existing entries, the processor 442 adds a new DoS entry 445 for the packet 474 into the CAM 444.

CAM(444) 안의 새 DoS 엔트리에 대한 해당 DoS 공격 플래그(452)는 클리어 되고, 타임 스탬프(454)는 현재의 시간 값으로 세팅된다. 계층 값(456)은 도 6을 통해 이하에서 더 상세히 설명되는 바와 같이 프로세서(442)에서 현재 동작하는 어느 계층 값으로나 세팅된다. 프로세서(442)는 어드레스 오프셋 값(458)을 사용하여 DRAM(462) 내 해당 카운터(460)를 1로 증가시킨다. 프로세서(442)는 그런 다음 패킷 스트림(440) 내 다음 패킷을 처리한다.The corresponding DoS attack flag 452 for the new DoS entry in the CAM 444 is cleared and the time stamp 454 is set to the current time value. The layer value 456 is set to any layer value currently operating in the processor 442 as described in more detail below with reference to FIG. 6. The processor 442 uses the address offset value 458 to increment the corresponding counter 460 in the DRAM 462 to one. Processor 442 then processes the next packet in packet stream 440.

가능한 DoS 공격에 대한 기준에 부합하지 않는 패킷 스트림 내 패킷들은 DoS 후보 패킷들(441)로 식별되지 않는다. 예를 들어, 패킷들(441)은 패킷 조각들이 아니고 TCP SYN 메시지를 포함하지 않는 일반 IP 패킷들일 수 있다. 이 경우, 프로세서(442)는 패킷들(441)이 어떠한 추가 DoS 프로세싱 없이 방화벽(420)을 통과할 수 있도록 한다.Packets in the packet stream that do not meet the criteria for a possible DoS attack are not identified as DoS candidate packets 441. For example, packets 441 may be generic IP packets that are not packet fragments and that do not contain a TCP SYN message. In this case, processor 442 allows packets 441 to pass through firewall 420 without any further DoS processing.

패킷 스트림(440) 내 다음 패킷은 가능한 DoS 공격 (DoS 후보 패킷)으로 식별될 수 있다. 이 예에서, 다음에 식별된 패킷은 이미 CAM(444) 내에서 해당 DoS 엔트리를 포함할 수 있다. 예를 들어, 유사한 목적지 어드레스를 가진 하나 이상의 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 possible DoS attack (DoS candidate packet). In this example, the next identified packet may already contain the corresponding DoS entry in the CAM 444. For example, one or more TCP SYN packets or packet fragments with similar destination addresses may have been previously received by firewall 420 during the same DoS period. As such, the destination address 472 and region 468 for that packet will correspond to one of the entries in the CAM 444. The address 449 corresponding to the matching CAM entry 445 is now used as the address to the SRAM 450.

프로세서(442)는 먼저 SRAM(450) 안의 DoS 공격 플래그(452)를 체크한다. 만약 DoS 공격 플래그(452)가 세팅되면, 프로세서(442)는 패킷 스트림(440) 안의 해당 패킷을 제외한다. 필요한 경우, 프로세서(442)는 이제 타임 스탬프(454) 및 계층 값(456)을 업데이트할 수 있다.Processor 442 first checks DoS attack flag 452 in SRAM 450. If DoS attack flag 452 is set, processor 442 excludes the packet in packet stream 440. If necessary, the processor 442 may now update the time stamp 454 and layer 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 related packets in the packet stream 440 to pass through the firewall 420. Processor 442 now updates DoS state information in SRAM 450 and DRAM 462. For example, processor 442 increments the corresponding counter 460 in DRAM 462 and then compares time stamp 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 valid and compared with the DoS rate limit. If the counter value 460 is below the DoS rate limit, the processor 442 moves to the next packet processing in the packet stream 440.

타임 스탬프(454)가 현재의 타임 값과 비교될 때 너무 오래되었으면, DRAM(460)의 해당 카운트 값(460)은 실효되어 0으로 리셋된다. 타임 스탬프(454)는 현재의 시간 값으로도 리셋된다. 이것은, 각각의 소정 시기 중에 카운트(460)를 효과적으로 리셋시킨다. 타임 스탬프(454)가 유효하고 (너무 오래되지 않았고) DRAM(462) 내 증가된 카운트(460)가 DoS 비율 리밋 이상이면, 프로세서(442)는 해당 DoS 공격 플래그(452)를 세팅한다. 이것이 프로세서(442)로 하여금 같은 목적지 어드레스를 가진 유사 패킷들을 배제하게 만든다.If the time stamp 454 is too old when compared to the current time value, the corresponding count value 460 of the DRAM 460 is invalidated and reset to zero. The time stamp 454 is also reset to the current time value. This effectively resets the count 460 during each predetermined time period. If time stamp 454 is valid (not too old) and incremented count 460 in DRAM 462 is greater than or equal to the DoS rate limit, processor 442 sets the corresponding DoS attack flag 452. This causes the processor 442 to exclude similar packets with the same destination address.

계층(generation)Generation

계층 값(456)은 CAM(444), SRAM(450) 및 DRAM(462) 내 DoS 엔트리들을 관리하는데 사용된다. 도 6의 예를 참조할 때, CAM(444)는 논리적으로 네 가지 상이한 계층 섹션들(480)로 분할된다. 그러나, 이것은 단지 구성예일 뿐이며, 시스템은 어떠한 설정가능한 사이즈를 가진 어떠한 수의 계층 섹션들을 가진 것으로도 구성될 수 있다.The layer value 456 is used to manage DoS entries in the CAM 444, SRAM 450, and DRAM 462. Referring to the example of FIG. 6, the CAM 444 is logically divided into four different hierarchical sections 480. However, this is merely a configuration, and the system can be configured with any number of hierarchical sections with any configurable size.

도 5의 프로세서(442)는 계층들(480)에 따라 DoS 엔트리들을 삽입 및 제거함으로써 보다 효율적으로 DoS 공격들을 식별 및 관리한다. 도 5-7을 참조할 때, 오퍼레이션 490에서, 프로세서(442)는 DoS 엔트리들을 현재의 계층(480) 안에 입력하기 시작한다. 이것이 DoS 엔트리들(482)이 현재의 계층 0 안으로 입력되는 도 6에 도시되고 있다. 오퍼레이션 492에서, 프로세서(442)는 현재의 계층 0에 더해진 모든 엔트리(482)를 위해, 다음 계층 1로부터 한 엔트리(484)를 제거한다. 이것은, ㅍ프플프로세서(442)가 다음 계층으로 이동할 때 CAM(444)이 항상 이용가능한 공간을 가질 수 있게 한다. The processor 442 of FIG. 5 identifies and manages DoS attacks more efficiently by inserting and removing DoS entries in accordance with layers 480. 5-7, at operation 490, processor 442 begins entering DoS entries into current layer 480. This is shown in FIG. 6 where DoS entries 482 are entered into the current layer 0. At operation 492, processor 442 removes one entry 484 from the next layer 1 for all entries 482 added to current layer 0. This allows the CAM 444 to always have space available when the template processor 442 moves to the next layer.

DoS 엔트리(482)가 이미 CAM(444)에 존재할 수 있다. 이 경우, 프로세서(442)는 오퍼레이션(494)에서 기존 DoS 엔트리를 위해 현재 할당된 계층 값(456)을 현재의 계층으로 스위칭한다. 예를 들어, DoS 엔트리(482)는 프로세서(442)가 계층 0에서 작동하는 동안에 수신된다. DoS 엔트리(482)는 현재 계층 2로 할당된 기존 DoS 엔트리(489)에 매치할 수 있다. 오퍼레이션 494시, 프로세서(442)는 기존 DoS 엔트리(489)를 계층 2에서 계층 0으로 스위칭한다. DoS 엔트리(489)는 물리적으로 CAM(444) 안의 다른 위치로 이동하는 것이 아니라, 프로세서(442)가 SRAM(450) 내 계층 값(456)을 2에서 0으로 재배정할 때 논리적으로 계층 0으로 이동한다. DoS entry 482 may already exist in CAM 444. In this case, processor 442 switches the layer value 456 currently assigned for the existing DoS entry in operation 494 to the current layer. For example, DoS entry 482 is received while processor 442 is operating at layer zero. DoS entry 482 may match an existing DoS entry 489 currently assigned to Layer 2. At operation 494, processor 442 switches existing DoS entry 489 from layer 2 to layer 0. DoS entry 489 does not physically move to another location within CAM 444, but logically moves to layer 0 when processor 442 reassigns layer value 456 in SRAM 450 from 2 to 0. do.

기존 DoS 엔트리들을 현재의 계층으로 이동하는 것은, 상대적으로 긴 시간 CAM(444) 안에 존재할지 모를 액티브 DoS 엔트리들이 프로세서(442)에 의해 버려지게 되지 않도록 보장한다. 예를 들어, DoS 공격은 확장된 시기 동안 지속 될 수 있다. 동일한 DoS 공격에 대해 각각 새롭게 수신된 패킷이 CAM(444) 내의 기존의 DoS 엔트리를 현재의 계층 값으로 업데이트할 것이다. 이것은, 액티브 DoS 공격을 나타내는 DoS 엔트리들이, DoS 공격으로까지 완성되지 못하였거나 더 이상 액티브 DoS 공격을 나타내지 못하는 다른 더 오래된 DoS 엔트리들이 CAM(444)에서 제거되게 만든다. Moving existing DoS entries to the current layer ensures that active DoS entries that may exist within a relatively long time CAM 444 are not discarded by the processor 442. For example, DoS attacks can last for extended periods of time. Each newly received packet for the same DoS attack will update an existing DoS entry in the CAM 444 with the current layer value. This causes DoS entries that represent an active DoS attack to be removed from the CAM 444 other older DoS entries that have not been completed up to a DoS attack or no longer exhibit an active DoS attack.

오퍼레이션 496에서, 프로세서(442)는 다음 계층(480)으로의 스위칭이 이뤄져야 할 때를 판단한다. 다양한 이벤트들이 프로세서(442)로 하여금 다음 계층으로 이동하게 만들 수 있다. 프로세서(442)는 현재의 계층 안에 모든 엔트리들이 다 찼을 때 오퍼레이션 498에서 다음 계층으로 이동할 것이다. 이것은, 가령, 공격자가 상이한 목적지 어드레스들을 가진 많은 TCP SYN 메시지들을 전송할 때 일어날 수 있다.In operation 496, processor 442 determines when switching to the next layer 480 should be made. Various events may cause the processor 442 to move to the next layer. Processor 442 will move from operation 498 to the next layer when all entries in the current layer are full. This can happen, for example, when an attacker sends many TCP SYN messages with different destination addresses.

프로세서(442)는 또한 소정 시기가 만기되었을 때 오퍼레이션 498에서 다음 계층으로 이동할 것이다. 이것은, 모든 타임 스탬프들(454) (도 5)이 프로세서(442)에 의해 추적된 현재의 시기에 부합되게 보장한다. 예를 들어, DRAM(462) 내 관련련 카운트 값들과 결합된 SRAM(450) 내 타임 스탬프들(454)은 상이한 목적지 어드레스들에 대해 패킷들이 수신되고 있는 레이트를 결정한다. 타임 스탬프 기간 만기 뒤에, 프로세서(442)는 타임 스탬프 값(454) 및 관련 카운트 값(460)을 모두 리셋해야 한다.Processor 442 will also move to the next layer in operation 498 when the predetermined time has expired. This ensures that all time stamps 454 (FIG. 5) are in accordance with the current time tracked by the processor 442. For example, time stamps 454 in SRAM 450 combined with associated count values in DRAM 462 determine the rate at which packets are being received for different destination addresses. After the time stamp period expiration, the processor 442 must reset both the time stamp value 454 and the associated count value 460.

그러나, 프로세서(442)에 의해 사용된 현 시간 값이 롤오버 (roll-over; 한 회전)되고 다시 0으로 리셋 된 뒤에, 옛 DoS 엔트리들이 잠정적으로 CAM(444) 안에 남아 있을 수가 있다. 이 경우, 프로세서(442)는 DRAM(460)의 카운터(460)에 이전 타임 스탬프 기간에 해당하는 카운트 값들을 실수로 추가할 수 있다. 이것은 카운터(460)로 하여금 여러 타임 스탬프 기간들에 걸쳐 패킷들을 카운트하도록 잘못 유도할 수 있고, 이것이 DoS 공격 검출을 오인하게 만들 수 있다. 달리 말해, 여러 타임 스탬프 시기들에 걸친 패킷들의 카운팅이 실제 패킷 레이트의 틀린 표시를 제공한다.However, after the current time value used by processor 442 is rolled over and reset back to zero, old DoS entries may be tentatively left in CAM 444. In this case, the processor 442 may add the count values corresponding to the previous time stamp period to the counter 460 of the DRAM 460 by mistake. This may mislead the counter 460 to count packets over several time stamp periods, which may mislead DoS attack detection. In other words, counting packets over several time stamp periods provides an incorrect indication of the actual packet rate.

이러한 잠정적 롤오버 문제를 해결하기 위해, 프로세서(442)는 오퍼레이션 496에서, 현재의 계층 안의 엔트리 개수와 무관하게 어떤 소정 시기 이후 다음 계층으로 자동 이동한다. 이러한 소정 시기는 계층들의 총 수로 곱해질 때 (이 예에서, 게층들의 총 수는 4) 프로세서(442)에 의해 사용된 롤오버 타임 스탬프 기간 미만이 된다.To solve this potential rollover problem, processor 442 automatically moves to the next layer after some predetermined time, regardless of the number of entries in the current layer, at operation 496. This predetermined timing is less than the rollover time stamp period used by the processor 442 when multiplied by the total number of layers (in this example, the total number of layers).

예를 들어, 프로세서(442)는 매 4초마다 한 회전하는 현 타이머를 보유할 수 있다. 다음 계층으로 이동하는데 사용되는 소정 시간 주기는 0.5 초로 세팅될 수 있다. 이것이 CAM(444) 안의 모든 정체된 DoS 엔트리들이 매 2초 마다 제거될 수 있게 만든다. 따라서, 프로세서(442)는 SRAM(450) 안의 모든 타임 스탬프들(454)이 동일한 타임 스탬프 주기와 결부될 것이라고 확신한다. 이것은 또 SRAM(450)이타임 스탬프들(454)에 대해 보다 작은 비트 수를 사용할 수 있게 만든다는 예상치못한 이점 역시 가지게 한다. 달리 말해, 타임 스탬프 값들(454)은 2 초 혹은 그 이상의 주변 어딘가의 시기를 추적하는데 충분한 비트 수만을 필요로 한다.For example, processor 442 may have a current timer that rotates once every four seconds. The predetermined time period used to move to the next layer can be set to 0.5 seconds. This allows all stagnant DoS entries in CAM 444 to be removed every two seconds. Thus, processor 442 is confident that all time stamps 454 in SRAM 450 will be associated with the same time stamp period. This also has the unexpected advantage that SRAM 450 makes a smaller number of bits available for time stamps 454. In other words, the time stamp values 454 only need a sufficient number of bits to track the time somewhere around 2 seconds or more.

오퍼레이션 496에서 사이즈 리밋이나 타임 스탬프 주기 둘 모두에 도달되지 못하면, 프로세서(442)는 계속해서 현재의 계층을 새로운 DoS 엔트리들로 채우고 기존 DoS 엔트리들을 현 계층에 재배정한다 (오퍼레이션 490-494). 사이즈나 타임 스탬프 리밋에 도달하면 (오퍼레이션 496), 프로세서(442)는 다음 계층으로 이동하고 (오퍼레이션 498) 엔트리들을 새 계층에 더하기 시작하다. 예를 들어, 프로세서9442)는 새 DoS 엔트리들(486)을 계층 1 안에 이동하기 시작하고 그에 따라 기존의 DoS 엔트리들(488)을 다음 계층(2)에서 제거하기 시작한다.If neither size limit nor time stamp period is reached in operation 496, processor 442 continues to fill the current layer with new DoS entries and reassign existing DoS entries to the current layer (operations 490-494). When the size or time stamp limit is reached (operation 496), the processor 442 moves to the next layer (operation 498) and begins adding entries to the new layer. For example, processor 9442 begins moving new DoS entries 486 into layer 1 and thus removing existing DoS entries 488 from the next layer 2.

DoS 공격 식별 능률화Streamlined DoS attack identification

다시 간단하게 도 5를 참조하면, 들어오는 한 패킷(440)이 CAM(444)에서 식별될 때, 여러 유사 패킷들이 타임 스탬프(454)에 의해 추적된 시기 안에서 한 DoS 공격 문턱치에 도달하는지를 판단하기 위해 DRAM(462)의 관련 카운터(460)를 증가할 필요가 있다. 그러나, DRAM(462)을 액세스하는데 요구되는 시간의 량이 DoS 공 격 판단 및 이어지는 패킷 배제를 지연시킬 수 있다. 이것은 다시 방화벽(420)을 통한 다른 패킷들의 처리를 지연시킬 수 있다. DoS 공격 플래그(452)가 프로세서(442)에 의해 사용되어, 현 DoS 공격의 일부인 DoS 패킷들을 빠르게 식별하도록 한다.Referring briefly to FIG. 5, when an incoming packet 440 is identified at the CAM 444, to determine if several similar packets reach a DoS attack threshold within the time traced by the time stamp 454. It is necessary to increment the associated counter 460 of the DRAM 462. However, the amount of time required to access DRAM 462 may delay DoS attack determination and subsequent packet exclusion. This in turn can delay the processing of other packets through the firewall 420. DoS attack flag 452 is used by processor 442 to quickly identify DoS packets that are part of the current DoS attack.

도 5 및 8을 참조하면, DoS 공격 플래그(452)가 다른 처리 오퍼레이션들과 연계되어 사용되어, DoS 공격들을 식별하고 처리하는데 드는 지연을 줄이도록 된다. 오퍼레이션 540에서, 프로세서(442)는 패킷들을 수신한다. 오퍼레이션 542에서, 프로세서(442)는 수신된 패킷이 CAM(444) 내 DoS 엔트리로서 현재 포함되어 있지 않은 새 목적지 어드레스와 영역(zone)을 포함하는지를 판단한다.5 and 8, DoS attack flag 452 is used in conjunction with other processing operations to reduce delays in identifying and processing DoS attacks. At operation 540, processor 442 receives the packets. At operation 542, processor 442 determines whether the received packet includes a new destination address and zone that is not currently included as a DoS entry in CAM 444.

CAM(444) 안에 사전에 존재하는 엔트리가 없는 경우, 그 패킷은 즉시 방화벽(420)을 통과하도록 허용된다. 패킷이 현재 CAM(444) 안에서 식별되지 않기 때문에, 그것은 현 DoS 공격의 일부일 수 없고, 따라서, 제외되지 않을 것이다. 패킷이 통과 허용된 다음에, 프로세서(442)는 그 사건 뒤 DoS 보수 오퍼레이션들을 수행한다. 이것은, 그 식별된 패킷 뒤에 오는 다른 패킷들이 불필요하게 지연되지 않도록 한다.If no entry exists in CAM 444 beforehand, the packet is immediately allowed to pass through firewall 420. Since the packet is not currently identified within CAM 444, it cannot be part of the current DoS attack and therefore will not be excluded. After the packet is allowed to pass, the processor 442 performs DoS maintenance operations after the event. This ensures that other packets following the identified packet are not unnecessarily delayed.

"그 사건 뒤" 보수시, 프로세서(442)는 도 6 및 7을 통해 상술한 바와 같이 오퍼레이션 546에서 새로운 DoS 엔트리를 현 계층에 추가하고 오퍼레이션 548에서 다음 계층으로부터 한 DoS 엔트리를 제거한다. 오퍼레이션 550에서, 프로세서(442)는 DoS 공격 플래그(452)를 클리어하고 (이미 클리어 되지 않은 경우), 새 타임 스탬프 값(454)을 세팅하고, 현재의 계층 값(456)을 세팅하며, DRAM(462)내 해당 카운터(460)를 증가시킨다.Upon repairing "after the event", processor 442 adds a new DoS entry to the current layer at operation 546 and removes a DoS entry from the next layer at operation 548 as described above with reference to FIGS. 6 and 7. In operation 550, processor 442 clears DoS attack flag 452 (if not already cleared), sets new time stamp value 454, sets current layer value 456, and executes DRAM ( Increment the corresponding counter 460 in 462.

필요하다면, 프로세서(442)는 오퍼레이션 552에서, 현 계층을 바꾼다. 예를 들어, 상술한 것과 같이, 프로세서(442)는 현재의 계층에 모든 엔트리들이 가득 찰 때나, 소정 타임 스탬프 기간이 만기된 뒤 현 계층을 변경한다. 새 DoS 엔트리에 대한 타임 스탬프(454)가 방금 세팅되었으므로, 타임 스탬프 기간은 만기되지 않을 것이나, 새 DoS 엔트리가 현 계층에 대한 현 DoS 엔트리 리밋에는 도달할 수 있다.If necessary, the processor 442 swaps the current layer at operation 552. For example, as described above, the processor 442 changes the current layer when all entries in the current layer are full, or after a predetermined time stamp period expires. Since the time stamp 454 for the new DoS entry has just been set, the time stamp period will not expire, but the new DoS entry may reach the current DoS entry limit for the current layer.

다시 오퍼레이션 542를 참조할 때, 프로세서(442)는 CAM(444) 안의 기존 DoS 엔트리에 해당하는 목적지 어드레스 및 영역을 가진 패킷을 수신할 수 있다. 매칭되는 CAM 엔트리에 부합하는 SRAM(450) 안의 DoS 공격 플래그(452)가 오퍼레이션 560에서 즉시 프로세서(442)에 의해 읽혀진다. 해당 DoS 공격 플래그(452)가 세팅되어 있으면, 오퍼레이션 580에서 그 패킷은 즉시 배제된다. 패킷은 그 패킷을 출력하지 않음으로써 배제되는 것이 아니라 궁극적으로 메모리 안에서 그 패킷 위에 덧씀으로써 배제된다.Referring again to operation 542, processor 442 may receive a packet with a destination address and region corresponding to an existing DoS entry in CAM 444. DoS attack flag 452 in SRAM 450 that matches the matching CAM entry is read by processor 442 immediately at operation 560. If the corresponding DoS attack flag 452 is set, the packet is immediately dropped at operation 580. A packet is not excluded by not outputting it, but ultimately by overwriting it in memory.

필요한 경우, 프로세서(442)는 오퍼레이션 582-586에서 SRAM(450) 내 정보를 업데이트한다. 그러나, DoS 공격 플래그(452)가 이미 세팅되어 있으므로, 프로세서(442)는 DRAM(462) 안의 관련 카운터를 증가할 필요가 없다. 예를 들어, 오퍼레이션 582에서, 프로세서(442)는 DoS 엔트리에 대한 계층 값(456)을 현재의 계층으로 업데이트할 수 있다. 오퍼레이션 584에서, 프로세서(442)는 이제 타임 스탬프(454)가 만기 되었는지를 판단한다. 예를 들어, 프로세서(442)에 의해 추적된 현재의 타임 스탬프 값과 타임 스탬프(454) 사이의 시간 차가 어떤 소정 시간 (가 령 1초) 보다 크면, 타임 스탬프(454)는 현재의 타임 스탬프 값으로 리셋된다. 그에 따라, 관련 카운터 값(460)과 DoS 공격 플래그(452)가 클리어될 수 있다 (오퍼레이션 586).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, processor 442 may update the layer value 456 for the DoS entry to the current layer. In operation 584, processor 442 now determines whether time stamp 454 has expired. For example, if the time difference between the current time stamp value tracked by processor 442 and time stamp 454 is greater than some predetermined time (eg, 1 second), time stamp 454 is the current time stamp value. Is reset. Accordingly, the associated counter value 460 and the DoS attack flag 452 may be cleared (operation 586).

타임 스탬프(454)는 그냥 빈번히 리셋 될 필요가 있기 때문에 (가령 초당 한 번씩), DRAM(462)의 카운트 값은 그냥 종종 액세스 되어야 할 것이다 (오퍼레이션 586). 이것은 특히, DRAM(462)이 SRAM(450) 보다 긴 액세스 타임을 필요로 하기 때문에 중요하다. 따라서 DoS 보수를 위해 프로세서(442)에 의해 요구되는 시간이 줄게 된다. 그럼에도 불구하고, DoS 보수 오퍼레이션들은 패킷이 이미 배제된 (오퍼레이션 580) 뒤에 수행되기 때문에, 다른 들어오는 패킷들(440) (도 5)이 프로세서(442)에 의해 불필요하게 지연되지 않을 것이다. 이것은 DoS 공격 중에 다른 적법한 패킷들의 처리를 실질적으로 느리게 하지 않으면서 방화벽(420)으로 하여금 기가비트(gigabit) 또는 그 보다 빠른 라인 레이트들로 패킷들을 필터링할 수 있게 만든다.Since the time stamp 454 only needs to be reset frequently (eg once per second), the count value of the DRAM 462 will just need to be accessed often (operation 586). This is particularly important because DRAM 462 requires a longer access time than SRAM 450. Therefore, the time required by the processor 442 for DoS maintenance is reduced. Nevertheless, since DoS maintenance operations are performed after the packet is already excluded (operation 580), other incoming packets 440 (FIG. 5) will not be unnecessarily delayed by the processor 442. This allows the firewall 420 to filter packets at gigabit or faster line rates without substantially slowing down processing of other legitimate packets during a DoS attack.

오퍼레이션 560에서, 패킷은 CAM(444) 안에 기존 DoS 엔트리를 포함할 수 있지만 관련 DoS 공격 플래그(452)는 세팅되지 않는다. 오퍼레이션 562에서, 패킷은 방화벽을 통과하도록 허용된다. 필요한 경우, 프로세서(442)는 오퍼레이션 564에서 CAM(444) 안에서 매치하는 DoS 엔트리에 대한 계층 정보를 업데이트한다. 예를 들어, SRAM(450)에서 식별된 기존 계층(456)이 현재의 계층으로 세팅된다. 필요한 경우 프로세서(442)는 오퍼레이션 564에서, 도 6 및 7에서 이전에 나타낸 것과 같이, 계층 시간 주기가 만기되거나 현 계층의 계층 엔트리 최대 개수가 소정 리밋에 도달했을 때 현 계층을 변경할 수도 있다. At operation 560, the packet may include an existing DoS entry in CAM 444 but the associated DoS attack flag 452 is not set. At operation 562, the packet is allowed to pass through the firewall. If necessary, the processor 442 updates the hierarchical information for the matching DoS entry in the CAM 444 in operation 564. For example, the existing layer 456 identified in the SRAM 450 is set to the current layer. If necessary, the processor 442 may change the current layer at operation 564, as previously shown in FIGS. 6 and 7, when the layer time period has expired or the maximum number of layer entries in the current layer has reached a certain limit.

기존 DoS 엔트리에 대한 카운터(460)가 오퍼레이션 566에서 증가되고 프로세서(442)는 카운트 값(460)과 관련 타임 스탬프(454)의 기간(age)을 체크한다 (568 오퍼레이션). 타임 스탬프 값이 타임 스탬프 주기 (만기된 타임 스탬프)보다 오래된 경우 (오퍼레이션 570), 카운트(460) 및 타임 스탬프(454)는 리셋된다(오퍼레이션 572).The counter 460 for an existing DoS entry is incremented at operation 566 and the processor 442 checks the count value 460 and the age of the associated time stamp 454 (operation 568). If the time stamp value is older than the time stamp period (expired time stamp) (operation 570), count 460 and time stamp 454 are reset (operation 572).

타임 스탬프가 유효하면(오퍼레이션 570), 프로세서(442)는 오퍼레이션 574에서 카운터(460)가 DoS 공격 문턱치를 넘는지를 판단한다. 넘지 않으면, 프로세서(442)는 오퍼레이션 540으로 돌아가서 가능한 DoS 공격에 대해 다음에 식별된 DoS 후보 패킷을 처리한다. 카운터(460)가 DoS 공격 문턱치를 넘는 경우, DoS 공격 플래그(452)가 세팅된다 (오퍼레이션 576).If the time stamp is valid (operation 570), processor 442 determines at operation 574 whether counter 460 exceeds the DoS attack threshold. If not, processor 442 returns to operation 540 and processes the next identified DoS candidate packet for a possible DoS attack. If the counter 460 crosses the DoS attack threshold, the DoS attack flag 452 is set (operation 576).

일실시예에서, DoS 공격 플래그(452)는 관련 패킷이 이미 방화벽(420)을 통과한 뒤에 세팅된다. 이러한 하나의 추가 패킷은 일반적으로 사설 네트워크(24) (도 3)의 타깃 장치 오퍼레이션을 교란하는데 충분하지 못하다. 그러나, DoS 관리 오퍼레이션들을 완수할 때까지 기다려야 할 필요 없이 패킷들을 방화벽(420)을 통해 전송하는 능력이 실질적으로 방화벽 성능을 향상시킨다. 또, 상술한 오퍼레이션들이 가능한 DoS 공격들과 관련된 패킷들 (DoS 후보 패킷들)에 대해서만 수행될 것이므로, DoS 관리 및 감시에 필요한 프로세싱 량은, 가능한 DoS 공격에 대해 모든 수신 패킷을 처리하는 다른 방화벽 구조들보다 실질적으로 줄게 된다.In one embodiment, the DoS attack flag 452 is set after the associated packet has already passed through the firewall 420. This one additional packet is generally not enough to disturb the target device operation of the private network 24 (FIG. 3). However, the ability to send packets through firewall 420 without having to wait for completion of DoS management operations substantially improves firewall performance. In addition, since the operations described above will be performed only for packets related to possible DoS attacks (DoS candidate packets), the amount of processing required for DoS management and monitoring is another firewall structure that processes all received packets for possible DoS attacks. Substantially less than

RSPRSP 내 DoS 구현 My DoS implementation

다시 빠르게 도 5를 참조하면, 어떤 프로세서(442)라도 상술한 방화벽 시스템을 구현하는데 사용될 수 있다. 그러나, 성능을 한층 향상하기 위해, 일 실시예 상의 프로세서(442)는 앞서 도 2a-2c에서 기술된 재구성 어의 프로세서 (RSP)(100)를 이용해 구현된다. 도 9는 DoS 방지를 위해 RSP(100)가 어떻게 사용되는지를 더 상세히 보인 것이다. 설명의 단순성을 위해, 도 2a-2c에서 앞서 기술한 RSP(100)내 프로세싱 요소들 중 일부는 도 9에 도시되고 있지 않다.5, any processor 442 can be used to implement the firewall system described above. However, to further improve performance, the processor 442 on one embodiment is implemented using the processor (RSP) 100 of the reconstruction word described above in FIGS. 2A-2C. 9 illustrates in more detail how the RSP 100 is used for DoS prevention. For simplicity of explanation, some of the processing elements in RSP 100 described above in FIGS. 2A-2C are not shown in FIG. 9.

들어오는 패킷들(600)이 입력 버퍼(140)에서 수신된다. DXP(180)는 관련 파서 테이블(170) (도 2a) 안에 가능한 DoS 공격과 연관될 수 있는 패킷들(600) (DoS 후보 패킷들)을 식별하는 문법을 포함한다. 예를 들어, 파서 문법은 TCP SYN 메시지, TCP FIN 메시지, 패킷 조각 등등을 포함하는 임의의 들어오는 패킷들(600)을 식별할 수 있다. 한 DoS 후보 패킷이 식별될 때, DXP(180)는 SPU(200)로 DoS 식별 메시지(602)를 전송한다. 메시지(602)는 SCT(210)로부터 SPU들(200)에 의해 실행되는 DoS SEP 코드(620)를 시동한다. DoS SEP 코드(620)는 SPU들(200)로 하여금 도 3-8을 통해 상술한 상이한 DoS 오퍼레이션들을 수행하도록 만든다. Incoming packets 600 are received in input buffer 140. DXP 180 includes a grammar identifying packets 600 (DoS candidate packets) that may be associated with a possible DoS attack in associated parser table 170 (FIG. 2A). For example, the parser grammar may identify any incoming packets 600 including TCP SYN messages, TCP FIN messages, packet fragments, and the like. When one DoS candidate packet is identified, DXP 180 sends DoS identification message 602 to SPU 200. The message 602 launches the DoS SEP code 620 executed by the SPUs 200 from the SCT 210. DoS SEP code 620 causes SPUs 200 to perform the different DoS operations described above with reference to FIGS. 3-8.

메모리 서브시스템(215)은 앞서 도 5에 도시된 DRAM(462), CAM(444), 및 SRAM(450)을 포함한다. 한 구성에서 AMCD (Array Machine-Context Data Memory)(230)가 해싱 함수나 CAM (content-addressable memory)(444)을 통해 DRAM(462)나 SRAM(450)의 데이터를 액세스하는데 사용된다. Memory subsystem 215 includes DRAM 462, CAM 444, and SRAM 450 shown previously in FIG. 5. In one configuration, Array Machine-Context Data Memory (AMCD) 230 is used to access data in DRAM 462 or SRAM 450 via a hashing function or content-addressable memory (CAM) 444.

AMCD(230)는 각각이 CAM(444) 안의 한 엔트리와 결부된 비트들(605)을 포함하는 자유 테이블(604)을 포함한다. CAM(444)에서 어떤 미사용 엔트리는 제로 비 트(605)로 표현되고 CAM(444)의 어떤 유효 DoS 엔트리는 자유 테이블(604)의 한 관련 비트(605)로 표현된다. AMCD(320)는 자유 테이블(604)의 최초 제로 비트를 식별하는 SPU들(200)로부터 FFZ (Find First Zero; 최초 제로 찾기) 명령을 지원한다.AMCD 230 includes a free table 604, each of which includes bits 605 associated with an entry in CAM 444. Any unused entry in CAM 444 is represented by zero bit 605 and any valid DoS entry in CAM 444 is represented by one related bit 605 of free table 604. The AMCD 320 supports a Find First Zero (FFZ) instruction from the SPUs 200 that identify the first zero bits of the free table 604.

CAM(444)의 한 위치가 새 DoS 엔트리를 로딩하기 위해 식별될 필요가 있을 때, SPU들(200)은 자유 테이블(604)에 대해 FFZ 명령을 실행한다. FFZ 명령은 이후 CAM(444)의 해당 엔트리에 대한 포인터로서 사용되는, 자유 테이블(604) 내 최초 제로 비트의 위치를 리턴한다. SPU(200)는 새 패킷에 대한 목적지 어드레스와 영역을 CAM(444)에서 식별된 어드레스 위치 안에 로드한다.When a location of the CAM 444 needs to be identified to load a new DoS entry, the SPUs 200 execute an FFZ instruction against the free table 604. The FFZ instruction returns the position of the first zero bit in free table 604, which is then used as a pointer to that entry in CAM 444. SPU 200 loads the destination address and area for a new packet into the address location identified by CAM 444.

도 6에서 상술한 바와 같이, DoS 엔트리들이 CAM(444)의 현 계층에 더해지고, 다른 DoS 엔트리들이 병발적으로 다음 계층에서 제거된다. SPU(200)는 계층 테이블들(608)을 사용하여, 다음 계층으로부터 CAM(444)의 어떤 엔트리들이 제거되어야 할지를 빠르게 식별한다. CAM(444) 내 각 계층은 관련 계층 테이블 (608A-D)을 포함한다. 특정 계층과 결부된, CAM(444) 안의 각 유효 DoS 엔트리는 관련 계층 테이블(608) 안에 세팅된 상응하는 제로 비트를 포함한다. 예를 들어, CAM(444)의 세 번째 엔트리는 계층 0과 관련된 DoS 엔트리를 포함한다. 그에 따라, SPU(200)는 계층 테이블(608A) 내 세 번째 비트를 0으로 세팅한다.As described above in FIG. 6, DoS entries are added to the current layer of CAM 444 and other DoS entries are concurrently removed at the next layer. SPU 200 uses layer tables 608 to quickly identify which entries of CAM 444 should be removed from the next layer. Each layer in CAM 444 includes an associated layer table 608A-D. Each valid DoS entry in CAM 444, associated with a particular layer, includes a corresponding zero bit set in the associated layer table 608. For example, the third entry of CAM 444 includes a DoS entry associated with layer 0. Accordingly, SPU 200 sets the third bit in layer table 608A to zero.

DoS 엔트리들이 계층 0에 대해 제거될 필요가 있으면, SPU(200)는 계층 테이블(608A)에 대해 FFZ 오퍼레이션을 수행한다. 계층 테이블(608A) 내 세 번째 비트가 식별되고, 그 후 SPU들(200)에 의해 사용되어 CAM(444) 안의 상응하는 세 번째 DoS 엔트리를 무효로 만들도록 한다. 예를 들어, SPU(200)는 계층 테이블(608A) 안의 세 번째 비트를 1로 세팅하고, 자유 테이블(604) 안의 세 번째 비트를 0으로 세팅한다. 물론, 이것은 테이블들(604 및 608)이 어떻게 작용하는지의 한 예일 뿐이다. 다른 테이블 설정들 역시 사용될 수 있다.If DoS entries need to be removed for layer 0, SPU 200 performs an FFZ operation on layer table 608A. The third bit in the hierarchical table 608A is identified and then used by the SPUs 200 to invalidate the corresponding third DoS entry in the CAM 444. For example, the SPU 200 sets the third bit in the hierarchical table 608A to 1 and the third bit in the free table 604 to zero. Of course, this is only one example of how tables 604 and 608 work. Other table settings can also be used.

상술한 바와 같이, CAM(444) 안에서 이용가능한 엔트리들을 식별하고 어느 엔트리들을 CAM(444)에서 제거할지를 식별하는 이러한 DoS 보수 오퍼레이션들은, SPU들(200)이 이미 관련 패킷을 RSP(100)를 통과하지 못하게 하거나 허용한 뒤에 이뤄질 수 있다.As discussed above, these DoS maintenance operations that identify the entries available within CAM 444 and which entries to remove from CAM 444 are such that SPUs 200 have already passed relevant packets through RSP 100. It can be done after disabling or allowing it.

메모리 서브시스템(215)은 또한 정책 관리자에 의해 앞서 식별된 영역들을 식별하기 위해 SPU들(2000에 의해 사용되는 테이블(606) 역시 포함할 수 있다. 예를 들어, 패킷들은 DXP(180)에 의해 식별되는 포트 넘버를 포함할 수 있다. SPU(200)는 그 포트 넘버를 테이블(606) 안의 패킷 태그(610A)와 비교해 그 패킷을 수신하는 영역(610B)을 식별한다. 테이블(606)은 또 DoS 공격들을 식별하기 위해 각 영역과 결부된 패킷 레이트들(610C)을 역시 포함할 수 있다. SRAM(450)의 각 DoS 엔트리 마다 타임 스탬프들을 생성하고 각 타임 스탬프의 타임 스탬프 기간이 언제 만기되었는지를 판단하기 위해 타이머(612)가 SPU들(200)에 의해 사용된다. 계층 테이블(614)은 현재의 계층을 식별한다.The memory subsystem 215 may also include a table 606 used by the SPUs 2000 to identify the areas previously identified by the policy manager, for example, packets may be stored by the DXP 180. The SPU 200 compares the port number with the packet tag 610A in the table 606 to identify the area 610B that receives the packet. It may also include packet rates 610C associated with each zone to identify DoS attacks, generating time stamps for each DoS entry in SRAM 450 and when the time stamp period of each time stamp expired. A timer 612 is used by the SPUs 200 to determine the hierarchy table 614 to identify the current hierarchy.

RSP(100)는 또한 가짜 IP 어드레스들을 가진 어떤 패킷을 식별하여 버릴 수도 있다. 예를 들어, 일련의 IP 어드레스들이 멀티캐스트 목적지 어드레스들로서 예비된다. 예비된 멀티캐스트 어드레스들에 대응하는 소스 어드레스와 함께 수신 된 어떤 패킷들은 DXP(180)에 의해 검출되어 즉시 배제될 수 있다.RSP 100 may also identify and discard any packet with fake IP addresses. For example, a series of IP addresses are reserved as multicast destination addresses. Any packets received with the source address corresponding to the reserved multicast addresses can be detected by the DXP 180 and immediately excluded.

도 10 및 11은 상술한 DoS 오퍼레이션들을 RSP(100)가 어떻게 구현하는지를 높은 기술수준으로 도시한 것이다. 구체적으로 도 10 및 11을 참조하고 도 9를 개괄적으로 참조할 때, 오퍼레이션 650에서, DXP(180)는 들어오는 패킷들(600)을 파싱한다. 파싱 테이블(170) 안의 문법이 DXP(180)에 의해 사용되어, 임의의 DoS 후보 패킷들을 식별하도록 한다 (오퍼레이션 652). 동시에 DXP(180)는 SPU들(200)로 하여금 들어오는 패킷(600)을 DRAM(462)에 저장하게 지시하거나, 임시로 그 패킷을 입력 버퍼(140)에 보관할 수 있다. DXP(180)는 오퍼레이션 654에서 역시 그 패킷의 목적지 어드레스 및 그 패킷이 수신되었던 영역을 식별한다.10 and 11 illustrate, at a high technical level, how the RSP 100 implements the above-described DoS operations. Referring specifically to FIGS. 10 and 11 and generally referring to FIG. 9, at operation 650, DXP 180 parses incoming packets 600. The grammar in parsing table 170 is used by DXP 180 to identify any DoS candidate packets (operation 652). At the same time, the DXP 180 may instruct the SPUs 200 to store the incoming packet 600 in the DRAM 462 or temporarily store the packet in the input buffer 140. DXP 180 also identifies the destination address of the packet and the area where the packet was received in operation 654.

DoS 후보 패킷이 식별될 때, DXP(180)는 오퍼레이션 656에서 SPU들(200)로 시그날링(602)을 보내 요구되는 DoS 오퍼레이션과 관련된 DoS SEP 코드(620)를 로드하도록 한다. 예를 들어, SEP 코드(620)는 식별된 TCP SYN 패킷이나 식별된 패킷 조각과 결부된 특정 타입의 DoS 오퍼레이션과 결부될 수 있다.When the DoS candidate packet is identified, the DXP 180 sends a signaling 602 to the SPUs 200 in operation 656 to load the DoS SEP code 620 associated with the required DoS operation. For example, 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.

오퍼레이션 658에서 SPU는 식별된 목적지 어드레스 및 관련 영역 정보를 CAM(444) 내의 엔트리들과 비교한다. 해당하는 DoS 엔트리가 CAM(444)에 존재하면 (오퍼레이션 660), SPU(200)는 이하에서 도 11을 통해 설명되는 DoS 오퍼레이션들을 수행한다. 어떤 DoS 엔트리도 현재 CAM(444)에 존재하지 않으면, SPU(200)는 오퍼레이션 662에서 패킷들이 방화벽을 통과할 수 있게 허용한다. 이것은 단순히, SPU(200)가 그 패킷을 출력 버퍼(150)로 보내기 전에 DRAM(462) 내 해당 패킷에 대해 어떤 다른 요구되는 방화벽 프로세싱을 지속한다는 것을 의미할 수 있다. 혹은 만일 DRAM(462)에 저장되어 있지 않은 경우, SPU(200)는 입력 버퍼(140) 안의 패킷이 부가 처리를 위해 DRAM(462)에 저장될 수 있도록 한다.In operation 658, the SPU compares the identified destination address and related area information with entries in CAM 444. If a corresponding DoS entry is present in the CAM 444 (operation 660), the SPU 200 performs the DoS operations described through FIG. 11 below. If no DoS entry currently exists in the CAM 444, the SPU 200 allows the packets to pass through the firewall in operation 662. This may simply mean that the SPU 200 continues any other required firewall processing for that packet in the DRAM 462 before sending the packet to the output buffer 150. Or, if it is not stored in the DRAM 462, the SPU 200 allows a packet in the input buffer 140 to be stored in the DRAM 462 for further processing.

SPU(200)은 이제 임의의 필요한 DoS 보수를 수행한다. 예를 들어, 오퍼레이션 664에서, SPU(200)는 어떤 계층이 현재 관련 DoS 오퍼레이션에 대해 활성화(액티브) 되어 있는지를 판단하기 위해 AMCD(320) 내 테이블(614)을 판독하다. 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 now performs any necessary DoS maintenance. For example, at operation 664, SPU 200 reads table 614 in AMCD 320 to determine which layer is currently active (active) for the relevant DoS operation. SPU 200 also reads tables 604 and 608 to determine where to add new DoS entries to CAM 444 and which DoS entries to exclude from the next layer. In operation 666, SPU 200 updates CAM 444 with a new DoS entry and reads the contents of the corresponding memory location in SRAM 450. Finally, at operation 668, SPU 200 updates the time stamp and layer 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 공격 플래그가 세팅되어 있으면, 오퍼레이션 704에서 SPU는 즉시 그 패킷을 DRAM(462)이나 입력 버퍼(140)로부터 제외시킨다. 예를 들어, SPU(200)는 패킷이 무효하다고 가리키는 드롭(drop) 플래그를 DRAM(462) 안에서 세팅할 수 있다.Referring to FIG. 11, when the destination address and area for a packet are already DoS entries of CAM 444, SPU 200 reads the corresponding memory location of SRAM 450 in operation 700. SPU 200 checks to see if the DoS attack flag is set in operation 702. If the DoS attack flag is set, in operation 704 the SPU immediately excludes the packet from DRAM 462 or input buffer 140. For example, SPU 200 may set a drop flag in DRAM 462 indicating that the packet is invalid.

무효한 패킷은 이제 DRAM(462)에서 결코 읽혀지지 못하며 궁극적으로 다른 데이터로 덮어 쓰여진다. 아직 DRAM(462)에 저장되어 있지 않을 때, 패킷은 입력 버퍼(140)에서 제외된다. DoS 공격 플래그가 세팅되어 있지 않으면, SPU는 오퍼레이션 706에서 추가 프로세싱을 위해 그 패킷을 즉시 해제한다. 예를 들어, 이 패킷은 즉시 입력 버퍼(140)로부터 DRAM(462)의 특정 위치로 전달 될 수 있다. 이미 DRAM(462)에 있는 경우, 이 패킷은 추가 방화벽 프로세싱을 위해 다른 SPU(200)로 보내지거나, 다른 추가 방화벽 프로세싱이 필요로 되지 않는 경우 출력 버퍼(150)로 보내진다. 이와 달리, SPU(200)가 이 패킷을 DXP(180)에 의한 재파싱(reparsing)을 위해 DRAM(462)으로부터 재순환 버퍼(160)로 보낼 수도 있다. 예를 들어, DXP(18)는 이때 다른 방화벽 오퍼레이션들과 결부된 패킷 내 다른 콘텐츠를 식별할 것이다.Invalid packets are now never read from DRAM 462 and ultimately overwritten with other data. When not yet stored in DRAM 462, the packet is excluded from input buffer 140. If the DoS attack flag is not set, the SPU immediately releases the packet for further processing in operation 706. For example, this packet may be immediately passed from the input buffer 140 to a specific location in the DRAM 462. If already in DRAM 462, this packet is sent to another SPU 200 for further firewall processing, or to output buffer 150 if no further firewall processing is needed. Alternatively, SPU 200 may send this packet from DRAM 462 to recycle buffer 160 for reparsing by DXP 180. For example, DXP 18 will then identify other content in the packet associated with other firewall operations.

오퍼레이션 708에서, SPU(200)는 SRAM(450) 내 정보를 업데이트하고, 필요하다면, DRAM(462) 내 관련 카운트(460)를 증가시킨다. SPU(200)는 오퍼레이션 710에서 테이블들(604, 606, 608 및 614) 안의 어떤 필수 정보를 업데이트한다. SPU(200)는 그런 다음 DXP(180)로부터 새 SEP 명령들(602)을 기다린다.At operation 708, SPU 200 updates the information in SRAM 450 and increments the relevant count 460 in DRAM 462 if necessary. SPU 200 updates some essential information in tables 604, 606, 608, and 614 at operation 710. SPU 200 then waits for new SEP instructions 602 from DXP 180.

통합 방화벽/라우팅 관리 (통합 정책 관리)Integrated firewall / routing management (integrated policy management)

도 12를 참조할 때, 방화벽(804)는 제1네트워크(800)와 제2네트워크(82) 사이에서 작동한다. 방화벽(804)은 다양한 네트워크 인터페이스 오퍼레이션들을 지원한다. 예를 들어, 상술한 것 같은 DoS 공격들을 식별 및 필터링하는 것 외에, 방화벽은 IP 버전 4 (IPv4) 및 IP 버전 6 (IPv6) 간과 같은, 서로 다른 네트워크 포맷들 사이에서 패킷들을 변환해야 하고, 공중 및 사설 IP 어드레스들 (네트워크 어드레스 전환 (NAT)) 사이에서 패킷들을 전환해야 한다. 방화벽(804)은 기타 바 이러스 검출 및 보안 오퍼레이션들을 수행하도록 요구될 수도 있다.Referring to FIG. 12, the firewall 804 operates between the first network 800 and the second network 82. Firewall 804 supports various network interface operations. For example, in addition to identifying and filtering DoS attacks as described above, the firewall must convert packets between different network formats, such as between IP version 4 (IPv4) and IP version 6 (IPv6), And packets between private IP addresses (network address translation (NAT)). Firewall 804 may be required to perform other virus detection and security operations.

라우터나 스위치 같은 다른 별개의 네트워크 컴퓨팅 장치(806)가 그 다음에 방화벽(804)을 통과한 패킷들을 라우팅하거나 스위칭해야 한다. 예를 들어, 라우터/스위치(806)로부터 수신된 패킷들은 네트워크(812) 내 다른 네트워크 프로세싱 장치들로 그 패킷들을 더 전달하는 다른 라우터들이나 스위치들(808)로 전달될 수 있다. 라우터나 스위치(806)는 서버(810)나 퍼스널 컴퓨터(PC)(814) 같은 엔드 포인트들로 패킷들을 라우팅할 수도 있다.Another separate network computing device 806, such as a router or switch, must then route or switch packets that have passed through the firewall 804. For example, packets received from router / switch 806 may be forwarded to other routers or switches 808 that further forward those packets to other network processing devices in network 812. Router or switch 806 may route packets to endpoints such as server 810 or personal computer (PC) 814.

이러한 종래의 구조가 가진 문제는, 방화벽 장치(804)와 라우팅 장치(806)가 자율적으로 오퍼레이션한다는 데 있다. 따라서, 별개의 프로세싱 및 메모리 자원들이 각 장치(802 및 806) 마다 필요로 된다. 이것은 에지(edge) 설비의 하드웨어 비용만을 증가시키는 것이 아니라, 규모가변성(scalability)을 제한하며, 이 에지 장치들이 원하는 라인 레이트들로 패킷들을 처리하는 것을 방해할 수 있다. The problem with this conventional structure is that the firewall device 804 and the routing device 806 autonomously operate. Thus, separate processing and memory resources are needed for each device 802 and 806. This not only increases the hardware cost of the edge facility, but also limits scalability and can prevent these edge devices from processing packets at the desired line rates.

예를 들어, 방화벽(804)은 가능한 TCP SYN 패킷들에 대해 들어오는 모든 패킷을 감시할 필요가 있을 수 있다. 상술한 바와 같이, 이것은 방화벽(804)으로 하여금 들어오는 각각의 패킷마다 목적지 어드레스를 식별하도록 요구할 것이다. DoS 공격의 일부가 아닌 TCP SYN 패킷들은 이제 라우터(806)로 전달된다. 그러면 라우터(806)는 다시, 패킷들을 적합한 목적지로 라우팅하기 위해, 방화벽(804)으로부터 수신된 패킷들(806)의 목적지 어드레스들을 판단해야 한다. 따라서, 각각의 네트워크 프로세싱 장치(804 및 806)마다 동일한 패킷들에 대해 동일한 패킷 처리 오퍼레이션들 중 일부를 수행해야 한다. 결국, 각 장치(804 및 806)은 별개의 패 킷 상태들, 패킷 버퍼들 등등을 보유해야 한다. 이것은 상술한 것처럼, 네트워크 프로세싱 장치들의 전반적인 규모가변성과 프로세싱 용량을 제한시킨다.For example, firewall 804 may need to monitor all incoming packets for possible TCP SYN packets. As mentioned above, this will 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 now forwarded to the router 806. The router 806 then must again determine the destination addresses of the packets 806 received from the firewall 804 to route the packets to the appropriate destination. Thus, each of the network processing devices 804 and 806 must perform some of the same packet processing operations for the same packets. Eventually, each device 804 and 806 must have separate packet states, packet buffers, and so forth. This limits the overall scalability and processing capacity of the network processing devices, as described above.

도 13을 참조할 대, 본 발명의 다른 양태는 더 효율적으로 패킷들을 처리하기 위해 네트워크 프로세싱 장치(820)에 통합 정책 관리 (UPM; Unified Policy Management)를 사용한다. 일례에서, UPM은 통상의 방화벽과 에지 장치 오퍼레이션들을, 현재까지는 통상적으로 별도의 독자적으로 작동하는 프로세서들에 의해 수행되었던 패킷 전달 오퍼레이션들과 통합한다. 한 구성예에서, 고유 액세스 제어 리스트 (ACL) 테이블이 프로세서(822)에 의해 사용되어, 각종 다양한 UPM 오퍼레이션들을 제공한다. Referring to FIG. 13, another aspect of the present invention uses Unified Policy Management (UPM) in the network processing device 820 to process packets more efficiently. In one example, the UPM integrates conventional firewall and edge device operations with packet forwarding operations that have so far been performed by separate, independently operating processors. In one configuration, a unique access control list (ACL) table is used by the processor 822 to provide various various UPM operations.

프로세서(822)는 들어오는 패킷 스트림(802)을 수신하여 개별 패킷들(821)과 결부된 조건자 집합 (predicate set)(854)을 식별한다. 조건자 집합(854)에 대해서는 이하에서 도 14를 통해 더 상세히 설명되나, 일반적으로는 방화벽이나 전송 오퍼레이션과 결부될 수 있는 수신 패킷들 내의 어떤 정보일 수 있다. 예를 들어, 조건자 집합(854)은 반드시 그렇게 한정되는 것은 아니지만 IP 어드레스들, TCP 포트 넘버들, IP 프로토콜 식별자들 등등을 포함할 수 있다. 조건자 집합(854)은 본 발명의 다른 고유 양태 상에서, 세션 개시 프로토콜 (SIP), 범 자원 로케이터 (URL), 단순 메시징 전송 프로토콜 (SMTP), 하이퍼테긋트 전송 프로토콜 (HTTP), 파일 전송 프로토콜 (FTP) 정보 같은 상위 개방 시스템 상호접속 (OSI) 계층 정보와, 첨부 및 기타 텍스트 문서 식별 같은 다른 어플리케이션 계층 정보를 포함할 수도 있다. The processor 822 receives the incoming packet stream 802 and identifies a predicate set 854 associated with the individual packets 821. The set of predicates 854 is described in more detail below with reference to FIG. 14, but may generally be some information in received packets that may be associated with a firewall or a transfer operation. For example, predicate set 854 may include, but is not necessarily limited to, IP addresses, TCP port numbers, IP protocol identifiers, and the like. The predicate set 854 is, on another unique aspect of the present invention, a session initiation protocol (SIP), a pan-resource locator (URL), a simple messaging transport protocol (SMTP), a hypertape transfer protocol (HTTP), a file transfer protocol ( It may include higher open system interconnect (OSI) layer information such as FTP) information and other application layer information such as attachment and other text document identification.

액세스 제어 리스트(ACL) 테이블(840)은 상이한 UPM이나 다른 방화벽 오퍼레이션들과 결부될 수 있는 조건자 엔트리들(850)의 상이한 조합들에 따라 조직된다. 예를 들어, 제1 방화벽 정책 ACL 집합(848)은 입력되는 패킷들(821)이 네트워크 프로세싱 장치(820)를 통과하도록 허용되는지 허용되지 않는지 여부를 판단하는 서로 다른 서비스 거부 (DoS) 오퍼레이션들과 결부될 수 있다. 방화벽 정책 ACL들(848)은 또, 네트워크 어드레스 전환 (NAT), 바이러스 검출 및 필터링, IP 버전 전환 등등과 같이, 네트워크 프로세싱 장치(820)에 의해 수행되어야 할, 다른 패킷 변환, 인증 및 필터링 오퍼레이션들과 결부될 수 있다. The access control list (ACL) table 840 is organized according to different combinations of predicate entries 850 that may be associated with different UPM or other firewall operations. For example, the first firewall policy ACL set 848 may include different denial of service (DoS) operations that determine whether incoming packets 821 are allowed or disallowed to pass through the network processing device 820. Can be associated. Firewall policy ACLs 848 may also be used for other packet translation, authentication, and filtering operations to be performed by network processing device 820, such as network address translation (NAT), virus detection and filtering, IP version translation, and the like. It can be associated with.

다른 특정한 고유 구성예에서, ACL 테이블(840)은 또 서로 다른 목적지 어드레스들(844)을 서로 다른 목적지 포트 넘버들(846)과 결부시키는 포워드 정보 베이스 (FIB)(842)를 또한 포함할 수 있다. FIB(842)는 ACL 테이블(840)의 별개 섹션 안에 존재할 수 있고/있거나 이하에서 더 상세히 설명하는 것처럼 방화벽 정책 ACL들(848)의 일부와 통합될 수도 있다.In another particular unique configuration, the ACL table 840 may also include a forward information base (FIB) 842 that associates different destination addresses 844 with different destination port numbers 846. . FIB 842 may reside in a separate section of ACL table 840 and / or may be integrated with a portion of firewall policy ACLs 848 as described in more detail below.

테이블(840)의 ACL 엔트리들은 관련 패킷이 네트워크 프로세싱 장치(820)를 통과하는 것을 허용하거나 거부하도록 프로세서(822)를 관리하는 액션들(852) 역시 포함한다. 다른 ACL 액션들(852)은 관련 패킷이 특정 목적지로 향하거나 추가 처리를 위해 다시 프로세서(822)를 통과하게 할 수 있다. 다른 상황하에서, 방화벽 정책 액션(852)은 프로세서(822)에 명하여 관련 패킷(821)이 특정 출력 포트(8456)로 라우팅되게 할 수 있다. ACL entries in the table 840 also include actions 852 that manage the processor 822 to allow or deny related packets to pass through the network processing device 820. Other ACL actions 852 may direct related packets to a specific destination or back through processor 822 for further processing. Under other circumstances, the firewall policy action 852 may direct the processor 822 to cause the associated packet 821 to be routed to a particular output port 8456.

테이블(840)의 FIB(842) 및 방화벽 정책 ACL들(848)의 조합은, 동일한 네트 워크 프로세싱 장치(820)에서 보통은 수행되지 않는 각종 상이한 UMP 오퍼레이션들을 지원한다. 예를 들어, UPM 오퍼레이션들의 작은 부분집합이, DoS나 침입 검출에 대해 상술한 것 같은 제외 패킷들(838)을 포함한다. 네트워크 프로세싱 장치(820)는 패킷들을, 목적지 어드레스를 향해 전송되기 전에, 변경 또는 표제(tag)할 수도 있다. 예를 들어, 패킷들(824)은 특정 터널(826) 안에서 캡슐화되거나, 특정 QoS 레벨로 표제되는 등으로 될 수 있다.The combination of the FIB 842 and the firewall policy ACLs 848 of the table 840 supports various different UMP operations that are not normally performed in the same network processing device 820. For example, a small subset of UPM operations includes exclusion packets 838 as described above for DoS or Intrusion Detection. The network processing apparatus 820 may change or tag the packets before being sent towards the destination address. For example, packets 824 may be encapsulated within a particular tunnel 826, titled to a particular QoS level, or the like.

다른 UMP 액션에서, ACL 테이블(840)의 엔트리들은 프로세서(822)에 명하여 어떤 통과하거나 제외된 패킷들(830)에 대한 통계치들을 서버(828)에 기록하도록 할 수 있다. 다른 UMP 오퍼레이션에서, 위에서 간략히 언급한 바와 같이, ACL 테이블(840)의 엔트리들은 프로세서(822)가 패킷들(834)을 상이한 방화벽 정책 메트릭스에 따라 상이한 서브 네트워크들(832)이나 장치들(836)로 전달하게 할 수 있다. 예를 들어, 특정 HTTP 세션을 포함하는 패킷들(834)이, 다른 모든 패킷들이 서브넷(832)으로 라우팅되는 동안 서버(836)로 라우팅될 수 있다.In another UMP action, entries in the ACL table 840 may direct the processor 822 to log statistics to the server 828 for any passed or dropped packets 830. In other UMP operations, as briefly mentioned above, the entries in the ACL table 840 may cause the processor 822 to send packets 834 to different sub-networks 832 or devices 836 according to different firewall policy metrics. Can be delivered as For example, packets 834 containing a particular HTTP session may be routed to server 836 while all other packets are routed to subnet 832.

도 13의 상기 설명 및 이하의 보다 상세한 설명에서, 라우팅 및 스위칭은 교체가능하게 사용된다. 이 분야의 당업자라면 UPM 시스템(820)이, 아래에 보다 자세히 설명하게 되는 바와 같이, 다른 방화벽 정책 메트릭스와 결합해 통합 계층-2 스위칭 및/또는 계층-3 라우팅 오퍼레이션들을 행할 수 있다는 것을 이해할 수 있을 것이다. In the above description of FIG. 13 and the following more detailed description, routing and switching are used interchangeably. Those skilled in the art will appreciate that the UPM system 820 may perform integrated layer-2 switching and / or layer-3 routing operations in combination with other firewall policy metrics, as described in more detail below. will be.

액세스 제어 리스트Access control list

도 14는 도 13에서 상술한 ACL 테이블(840)의 전형적 엔트리들을 보인다. 조건자들 및 액션들의 임의의 조합은 ACL 테이블(840)에서 서로 결합될 수 있고, 도 14는 그 일부 예들만을 보인다. 일 실시예에서, 프로세서(822) (도 13)는 하나 이상의 조건자들을 서로 연결시키고, 결합된 조건자 세트(854)를, ACL 테이블(840)을 포함하는 CAM 안으로의 어드레스 엔트리로서 사용한다. ACL 테이블(840)에서 프로세서(822)에 의해 제공된 조건자 집합(854)에 매치하는 최초 엔트리에 대한 액션과 결부된 액션이 CAM에 의해 출력된다.FIG. 14 shows typical entries of the ACL table 840 described above in FIG. 13. Any combination of predicates and actions may be combined with each other in the ACL table 840, and FIG. 14 shows only some examples thereof. In one embodiment, processor 822 (FIG. 13) links one or more predicates together and uses the combined set of predicates 854 as an address entry into the CAM that includes ACL table 840. The action associated with the action for the first entry that matches the predicate set 854 provided by the processor 822 in the ACL table 840 is output by the CAM.

ACL 테이블(840)의 최초 엔트리(860)는 목적지 IP 어드레스 조건자(860A), 소스 IP 어드레스 조건자(860B), TCP 포트 넘버 조건자(860C), 설정 TCP 세션 조건자(860D), 및 허용 액션(860E)를 포함한다. 이 예에서, ACL(860)이 ACL 테이블(840)의 최초 엔트리이다. 물론, 어떠한 스퀀스나 조합의 ACL 엔트리들도 ACL 테이블(840) 안에 로드될 수 있다.Initial entry 860 of ACL table 840 includes destination IP address predicate 860A, source IP address predicate 860B, TCP port number predicate 860C, establishing TCP session predicate 860D, and allow. Action 860E. In this example, ACL 860 is the first entry of ACL table 840. Of course, any sequence or combination of ACL entries may be loaded into the ACL table 840.

프로세서(822)에 의해 제공된 조건자 집합(854)이 조건자들 (860A-860D)에 매치할 때 관련 액션(860E)이 ACL 테이블(840)로부터 출력된다. 이 예에서, ACL 테이블(840)은, 들어오는 패킷(821) (도 13)에 대한 목적지 IP 어드레스 및 소스 IP 어드레스가 조건자들(860A 및 860B) 내 값들과 각각 매치할 대 허용 액션(860E)을 출력한다. 조건자들(860A 및 860B)에서 식별된 IP 어드레스들은 온전한 IP 소스 및 목적지 어드레스들과 결부된 서브넷 어드레스들만을 포함할 수 있다. IP 어드레스에서 추가 비트들은, 서브넷 마스크들이 현재 라우팅 테이블들에서 사용되는 방식과 유사하게 "don't care" 값들로 마스크 된다.The relevant action 860E is output from the ACL table 840 when the set of predicates 854 provided by the processor 822 matches the predicates 860A-860D. In this example, the ACL table 840 shows the allow action 860E when the destination IP address and source IP address for the incoming packet 821 (FIG. 13) match values in the predicates 860A and 860B, respectively. Outputs The IP addresses identified in the predicates 860A and 860B may include only subnet addresses associated with intact IP source and destination addresses. Additional bits in the IP address are masked with "don't care" values, similar to how subnet masks are currently used in routing tables.

ACL 엔트리(860)와 매치하기 위해, 패킷(821)(도 13)은 조건자(860C)와 부합 하는 관련 TCP 포트 넘버 역시 포함해야 한다. 어떤 소스나 목적지 퀄리파이어(qualifier)도 TCP 포트 넘버 조건자(860C)와 결부되어 있지 않음을 주지해야 한다. 이것은, 패킷(821) 내 동일한 소스 TCP 포트 넘버 C나 동일한 목적지 TCP 포트 넘버 C가 조건자(860C)와 매치할 것이라는 것을 뜻한다. 마지막으로, ACL 엔트리(860)와 매치하기 위해, 들어오는 패킷(821)은 개설된 TCP 조건자(860D)에 의해 요청된 대로, 이미 개설된 TCP 세션의 일부여야 한다. 조건자(860D)는 단순히, 들어오는 패킷(821)이 이미 개설된 TCP 세션의 일부라고 판단될 때 프로세서(822)에 의해 세팅되는 조건자 집합(854) 내 플래그일 수 있다. 따라서 ACL 엔트리(860)는 새 TCP 세션을 설정하도록 시도하는 TCP SYN 메시지를 포함하는 패킷에 매치되지 않을 것이다. To match ACL entry 860, packet 821 (FIG. 13) must also include the associated TCP port number that matches predicate 860C. Note that no source or destination qualifier is associated with the TCP port number predicate 860C. This means that the same source TCP port number C or the same destination TCP port number C in the packet 821 will match the predicate 860C. Finally, to match the ACL entry 860, the incoming packet 821 must be part of an already established TCP session, as requested by the established TCP predicate 860D. Predicate 860D may simply be a flag in predicate set 854 set by processor 822 when it is determined that incoming packet 821 is part of an already established TCP session. Thus, the ACL entry 860 will not match a packet containing a TCP SYN message that attempts to establish a new TCP session.

다음 두 ACL 엔트리들(862 및 864)은 서비스 거부 (DoS) 공격들 관련 방화벽 정책들에 결부되어 있다. ACL 엔트리(862)와 매치하기 위해, 들어오는 패킷(821) 내 어드레스는 목적지 및 소스 IP 어드레스 조건자들(862A 및 862B)과 각각 매치해야 한다. 또, 들어오는 패킷(821)은 타입 TCP 조건자(862C)에 의해 요청된 TCP 패킷이어야 한다. ACL 엔트리(862)는 한 TCP 패킷에 대한 특정 목적지 및 소스 IP 어드레스들을 도 4에서 상술한 것 같은 특정 영역에 부합하는 TCP DoS 액션(862D)과 결부시킨다. 따라서, 액션(862D)은 프로세서(822)에 명하여 영역 1에 부합하는 특정 패킷 레이트 문턱치를 사용하는 도 4-11에서 상술한 DoS 오퍼레이션들을 수행하도록 한다.The next two ACL entries 862 and 864 are tied to firewall policies related to denial of service (DoS) attacks. To match ACL entry 862, the address in incoming packet 821 must match destination and source IP address predicates 862A and 862B, respectively. Incoming packet 821 must also be a TCP packet requested by type TCP predicate 862C. ACL entry 862 associates the specific destination and source IP addresses for a TCP packet with a TCP DoS action 862D that conforms to a particular region as described above in FIG. Thus, action 862D commands processor 822 to perform the DoS operations described above in FIGS. 4-11 using a particular packet rate threshold that matches region 1. FIG.

ACL 엔트리(864)는 TCP DoS 액션(864D)과 결부되어 있고, 목적지 IP 어드레 스 조건자(862A)와 동일한 목적지 IP 어드레스 조건자(864A)를포함한다. 그러나, 조건자(864B)는 소스 IP 어드레스 조건자(862B)와 다른 소스 IP 어드레스 C를 포함한다. 이것은 다른 네트워크 인터페이스로부터 수신될 수 있는 패킷들에 해당한다. 따라서, ACL 액션(864D)은 다른 해당 영역(3)을 가진 TCP DoS 오퍼레이션에 대한 것이다. 프로세서(822)는 액션(864D)를 수신할 때 DoS 공격들을 결정하기 위한 상이한 패킷 레이트 문턱치를 사용할 수 있다.ACL entry 864 is associated with TCP DoS action 864D and includes the same destination IP address predicate 864A as destination IP address predicate 862A. However, predicate 864B includes a source IP address C that is different from source IP address predicate 862B. This corresponds to packets that can be received from other network interfaces. Thus, ACL action 864D is for a TCP DoS operation with another corresponding region 3. The processor 822 may use different packet rate thresholds for determining DoS attacks when receiving the action 864D.

ACL 엔트리(866)는 IPv4에서 IPv6로의 전환과 관련된 것이다. 예를 들어, 들어오는 패킷들(821)은 IPv6를 사용하여 동작하는 네트워크를 통해 수신될 수 있다. 그러나, 다른 쪽 네트워크 프로세싱 장치(820)에 대해 동작하는 네트워크는 IPv4를 사용할지 모른다. 그에 따라, 네트워크 프로세싱 장치(820)는 모든 IPv6 패킷들을 IPv4 패킷들로 전환할 필요가 있을 수 있다. ACL entry 866 relates to the transition from IPv4 to IPv6. For example, incoming packets 821 may be received over a network operating using IPv6. However, a network operating on the other network processing device 820 may use IPv4. As such, the network processing apparatus 820 may need to convert all IPv6 packets into IPv4 packets.

들어오는 패킷(821)의 IP 헤더 내 IP 타입 필드가 그 패킷을 IPv4나 IPv6로 식별한다. 프로세서(822)는 패킷(821)으로부터 IP 목적지 어드레스 및, IP 타입 필드 내 IP 버전 식별자를 추출하고, 그 정보를 ACL 테이블(840)에 적용되는 조건자 집합(854)으로 포맷한다. 조건자 집합(854)이 ACL 엔트리(866) 내 조건자들(866A 및 866B)에 매치할 때, 프로세서(822)는 XLATE IPv6 액션(866C)을 수신한다. XLATE 액션(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 incoming packet 821 identifies the packet as either IPv4 or IPv6. The processor 822 extracts the IP destination address and IP version identifier in the IP type field from the packet 821, and formats the information into a set of predicates 854 applied to the ACL table 840. When the predicate set 854 matches the predicates 866A and 866B in the ACL entry 866, the processor 822 receives the XLATE IPv6 action 866C. XLATE action 866C instructs processor 822 to convert the incoming IPv6 packet 821 to IPv4 using specific rule 5. For example, IPv6-Rule 5 allows the processor 822 to encapsulate an IPv6 packet into an IPv4 header, or split portions of IPv6 addresses into different company and host codes included in the IPv4 header. The transition between IPv6 and IPv4 will be described in more detail below with reference to FIG. 24.

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 policy based 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 metric 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 addresses and firewall policy metrics.

예를 들어, ACL 엔트리(868)는 프로세서(822)로 하여금 들어오는 패킷(821)을 목적지 IP 어드레스 G를 가진 TCP 패킷 타입들(868B)을 위한 포트 3으로 출력하도록 명하는 포워딩 액션(868C)을 포함한다. 그러나, ACL 엔트리(870)는 프로세서(822)에 명하여, 동일한 목적지 IP 어드레스 G를 가진 UDP 패킷 타입들(870B)을 다른 출력 포트 4로 전송하게 한다. 이러한 정책 기반 라우팅 ACL들은 가령 추가 DoS 프로세싱을 위해 특정 프로세싱 장치로 TCP 버스 위험인자들을 라우팅하는데 사용될 수 있고, 한편 UDP 패킷들은 조건자(870A)에 상응하는 목적지 어드레스를 향해 라우팅된다. ACL 테이블(840)의 엔트리들은 당연히 통합 정책 관리를 행하는데 사용될 수 있는 각종 ACL들의 작은 샘플에 불과하다.For example, ACL entry 868 causes forwarding action 868C to direct processor 822 to output incoming packet 821 to port 3 for TCP packet types 868B with destination IP address G. Include. However, ACL entry 870 commands processor 822 to send UDP packet types 870B with the same destination IP address G to another output port 4. Such policy based routing ACLs may be used to route TCP bus risk factors, for example, to a specific processing device for further DoS processing, while UDP packets are routed towards a destination address corresponding to predicate 870A. The entries in the ACL table 840 are, of course, only a small sample of the various ACLs that can be used to perform integrated policy management.

도 15는 도 13의 네트워크 프로세싱 장치(820)가 어떻게 UPM을 행하는지를 보다 상세히 나타낸다. 오퍼레이션 880에서, 프로세서(822)가 들어오는 패킷들(821)을 수신하고, 오퍼레이션 882에서 그 들어오는 패킷들로부터 조건자 집 합(854)을 생성한다. 예를 들어, 프로세서(822)는 IP 패킷 필드들의 소정 집합을 식별하고, 추출하며, 소정 순서에 따라 조건자들로 포캣시킨다. IP 패킷 필드들 중 하나가 들어오는 패킷(821)에 존재하지 않으면, 리스트 상의 다음 패킷 필드가 추출되어 이전에 추출되고 포맷된 조건자들과 결합되다.FIG. 15 illustrates in more detail how the network processing apparatus 820 of FIG. 13 performs UPM. At operation 880, processor 822 receives the incoming packets 821 and generates predicate set 854 from the incoming packets at operation 882. For example, processor 822 identifies, extracts, and formats a set of IP packet fields into predicates in a predetermined order. If one of the IP packet fields is not present in the incoming packet 821, the next packet field on the list is extracted and combined with the previously extracted and formatted predicates.

프로세서(822)는 오퍼레이션 884에서 그 조건자 집합(854)을 ACL 테이블(840)에 적용하고, 오퍼레이션 886에서 ACL 테이블(840)에서 매치하는 조건자 엔트리로부터 수신된 액션을 수신 및 실행한다. 단순화를 위해, ACL 테이블에서 나온 세 가지 액션 카테고리들만이 도 15에 기술된다. 그러나, 어떠한 수의 상이한 액션들이든 ACL 엔트리들로 구성될 수 있다. 오퍼레이션 892에서 드롭 액션(852)이 ACL 테이블(840)에서 수신되면, 프로세서는 패킷을 버린다 (오퍼레이션 900). 프로세서(822)는 다음 입력 패킷(821)에 대한 프로세싱을 시작하기 전에 배제된 패킷과 관련된 어떤 통계적 정보를 기록(log)할 것이다 (오퍼레이션 902). The processor 822 applies the predicate set 854 to the ACL table 840 in operation 884 and receives and executes the action received from the predicate entry that matches in the ACL table 840 in operation 886. For simplicity, only three action categories from the ACL table are described in FIG. 15. However, any number of different actions can be composed of ACL entries. If a drop action 852 is received in the ACL table 840 at operation 892, the processor discards the packet (operation 900). Processor 822 will log some statistical information related to the excluded packet before starting processing for the next input packet 821 (operation 902).

통과 액션(852)이 ACL 테이블로부터 수신되면 (오퍼레이션 890), 프로세서는 오퍼레이션 898에서 FIB(842) (도 13)에 따라 패킷을 라우팅하거나 스위칭할 것이다. 통과 액션(890)은 전송 포트 넘버를 포함할 수 있고, 아니면 프로세서(822)에 명하여 이 전송 포트 정보를 얻기 위해 ACL 테이블(840)을 재액세스하게 할 수 있다.If a pass action 852 is received from the ACL table (operation 890), the processor will route or switch the packet according to FIB 842 (FIG. 13) at operation 898. Pass-through action 890 may include a transport port number, or may direct processor 822 to re-access ACL table 840 to obtain this transport port information.

조종(steer) ACL 액션(852)이 ACL 테이블로부터 수신되면 (888 오퍼레이션), 프로세서는 894 오퍼레이션에서 이 ACL 액션과 결부된 방화벽 오퍼레이션을 수행한다. 적용될 수 있다면, 프로세서(822)는 관련된 한 방화벽 정책 메트릭에 따라 패 킷을 전송할 수도 있다 (오퍼레이션 894). 예를 들어, 도 14를 통해 상술한 바와 같이, 조종 액션(852)은 프로세서에 명하여 TCP 패킷들을, 특정 포트를 통해, DoS 공격들에 대해 체크하는 네트워크 프로세싱 장치로 항하게 전송하도록 할 수 있다.When a steer ACL action 852 is received from the ACL table (operation 888), the processor performs the firewall operation associated with this ACL action in operation 894. If applicable, processor 822 may send the packet according to the firewall policy metric as it relates (operation 894). For example, as described above with reference to FIG. 14, the steering action 852 may instruct the processor to send TCP packets through a particular port to a network processing device that checks for DoS attacks.

이와 달리, 오퍼레이션 888에서 식별된 조종 액션(852)이 프로세서(822)로 하여금 패킷에 대한 추가 방화벽 프로세싱을 수행하게 할 수도 있다. 예를 들어, 조종 액션(852)은 프로세서(822)로 하여금 네트워크 어드레스 전환 (NAT)을 행하게도 할 수 있다. 그에 따라, 프로세서(822)는 필요하다면 패킷(821)으로부터 다른 조건자 집합(854)를 추출하고 (오퍼레이션 882) 그 새 조건자 집합(854)를 ACL 테이블(840)에 재적용할 수 있다 (오퍼레이션 884). ACL 테이블(840)에서 수신되는 다음 ACL 액션(852)에 따라, 프로세서(822)는 NAT 오퍼레이션 후에 패킷을 배제(drop), 통과 또는 조종(steer)할 수 있다.Alternatively, steering action 852, identified at operation 888, may cause processor 822 to perform additional firewall processing on the packet. For example, steering action 852 may also cause processor 822 to perform network address translation (NAT). Accordingly, processor 822 may extract another predicate set 854 from packet 821 if necessary (operation 882) and reapply the new predicate set 854 to ACL table 840 (operation 882). Operation 884). Depending on the next ACL action 852 received in the ACL table 840, the processor 822 may drop, pass, or steer the packet after the NAT operation.

상위 OSI 계층들에 따른 패킷 전송Packet transmission according to higher OSI layers

도 16은 라우팅 및 스위칭 오퍼레이션들이 어떻게 방화벽 정책 관리와 통합되는지에 대한 다른 예를 나타낸다. ACL 테이블(910)은 도 13의 ACL 테이블(840)과 유사하다. 그러나, ACL 테이블(910)은 포워딩 정보 베이스 (FIB)를 계층 4 및 계층 7 정책 메트릭들 (910D 및 910E)와 각자 결합하였다.16 illustrates another example of how routing and switching operations are integrated with firewall policy management. The ACL table 910 is similar to the ACL table 840 of FIG. 13. However, the ACL table 910 combined the forwarding information base (FIB) with layer 4 and layer 7 policy metrics 910D and 910E, respectively.

주지할 중요한 양상은, 정책 관리 메트릭들의 어떠한 조합도 단순히 새 조건자들을 테이블(910)에 더함으로써 통상적인 라우팅 및 스위칭 포워딩 테이블들에 더해질 수 있다는 것이다. 주목할 다른 중요한 특징은, 라우팅이나 스위칭 결정이 개방 시스템 상호접속 (OSI) 인터넷 모델의 계층 2 및 계층 3으로 보통 제한된다는 데 있다. 예를 들어, 스위치나 라우터는 보통 패킷 포워딩을 패킷 포트 넘버들 및 IP 어드레스들에 기반하여 결정한다. An important aspect to note is that any combination of policy management metrics can be added to conventional routing and switching forwarding tables by simply adding new predicates to the table 910. Another important feature to note is that routing or switching decisions are usually limited to Layer 2 and Layer 3 of the Open System Interconnect (OSI) Internet model. For example, a switch or router usually determines packet forwarding based on packet port numbers and IP addresses.

도 13의 네트워크 프로세싱 장치 구조와 협력해 ACL 테이블(910)은, 포워딩 결정이 상위 OSI 계층들에 포함된 정보에 기초하게 만들 수 있다. 예를 들어, ACL 테이블(910)의 몇몇 패킷 포워딩 결정들은 데이터 링크 (계층 2), 네트워크 계층 (계층 3), 전송 계층 (계층 4) 및 어플리케이션 계층 (계층 7)의 정보에 기반한다. 물론, 포워딩 결정이 다른 OSI 계층들 가운데 어느 것에나 기반할 수도 있다.In cooperation with the network processing device structure of FIG. 13, the ACL table 910 may cause the forwarding decision to be based on information included in higher OSI layers. For example, some packet forwarding decisions in the ACL table 910 are based on information of the data link (layer 2), network layer (layer 3), transport layer (layer 4) and application layer (layer 7). Of course, the forwarding decision may be based on any of the other OSI layers.

더 자세히 설명하면, ACL 테이블(910)은 액션들(910C)에서 식별된 다른 출력 포트들로 패킷들을 전송하기 위해 부분적으로 사용되는 목적지 IP 어드레스 조건자들(910A)을 포함한다. 조건자들(910B) 안에서 통상의 서브넷 마스크들은 목적지 IP 어드레스 조건자들(910A) 내 비트들을 마스킹 하는데 사용된다. 예를 들어, 첫 번째 ACL 엔트리(912)에서, 어드레스의 최초 세 개의 서브넷 필드들 "10.0.0" 만이 들어오는 패킷들(821)의 목적지 IP 어드레스와 비교된다. ACL 엔트리(916)에서, 최초 서브넷 필드들 "10"만이 입력 패킷들(821)의 목적지 IP 어드레스와 비교된다.In more detail, ACL table 910 includes destination IP address predicates 910A that are partly used to send packets to other output ports identified in actions 910C. Typical subnet masks within the predicates 910B are used to mask the bits in the destination IP address predicates 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 of the incoming packets 821. In ACL entry 916, only the first subnet fields "10" are compared with the destination IP address of input packets 821.

이 예에서, 포워딩 결정들은 각자 계층 4 또는 계층 7 조건자들(910D 및 910E) 외에 목적지 IP 어드레스(910A)에 기초하고 있다. 예를 들어, 목적지 IP 어드레스 "10.0.0.x" (여기서 "x"는 "don't care"를 나타냄)를 가진 들어오는 TCP 패킷은 출력 포트 15로 라우팅될 것이다. 이와 달리, 목적지 IP 어드레스 "10.0.0.x"를 갖는 들어오는 UDP 패킷은 출력 포트 5로 라우팅될 것이다.In this example, forwarding decisions are based on destination IP address 910A in addition to layer 4 or layer 7 predicates 910D and 910E, respectively. For example, an incoming TCP packet with the destination IP address "10.0.0.x" (where "x" represents "don't care") will be routed to output port 15. Alternatively, incoming UDP packets with the destination IP address "10.0.0.x" will be routed to output port 5.

들어오는 패킷(821)에 대한 TCP 및 UDP 식별자들은 초기 패킷 프로세싱 중에 프로세서(822)가 목적지 IP 어드레스를 식별할 때와 동시에 프로세서(822)에 의해 식별된다. 그런 다음, 패킷을 전송하기 위한 올바른 출력 포트를 정하기 위해, 목적지 IP 어드레스 및, TCP 또는 UDP 식별자가 ACL 테이블(910)의 엔트리들과 비교된다. 이것은, 패킷들이 계층 4 메트릭들에 기초해 어떻게 전송되는가에 대한 한 예를 보인다.TCP and UDP identifiers for the incoming packet 821 are identified by the processor 822 at the same time as the processor 822 identifies the destination IP address during initial packet processing. The destination IP address and the TCP or UDP identifier are then compared with the entries in the ACL table 910 to determine the correct output port for sending the packet. This shows an example of how packets are transmitted based on layer 4 metrics.

ACL 엔트리(914)는 입력 패킷이 목적지 IP 어드레스 안에 서브넷 필드들 "12.0.x.x"를 포함할 때 패킷들을 특정 출력 포트 2로 전송하는 통상적 포워딩 테이블 엔트리이다. ACL entry 914 is a typical forwarding table entry that sends packets to a particular output port 2 when the input packet contains the subnet fields "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 (Voice Over IP) SIP 시그날링을 포함하는 패킷들에 있어 유용하다. 다른 비-SIP IP 트래픽은 목적지 어드레스에 따라 통상적인 방식으로 라우팅된다. ACL 엔트리(916) 내 SIP 조건자(910E)와 비교하는데 사용되는 SIP 식별자는 패킷이 SIP 메시징을 포함할 때 프로세서(822)에 의해 생성되는 플래그이다.ACL entry 916 is based on routing decisions according to both destination IP address and Layer 7 session initiation protocol (SIP) metrics. For example, a non-SIP packet with IP destination address " 10.x.x.x " is routed to output port 7 of network processing device 820. However, the SIP packet with the IP destination address "10.x.x.x" is routed to output port 4. This is useful for packets containing Voice Over IP (VoIP) SIP signaling that needs to be routed to a particular network processing device, such as a SIP proxy server. Other non-SIP IP traffic is routed in the usual way according to the destination address. The SIP identifier used to compare with the SIP predicate 910E in the ACL entry 916 is a flag generated by the processor 822 when the packet includes SIP messaging.

ACL 엔트리(918)는 라우팅이 계층 7 URL 메트릭들에 기반하는 다른 예를 보인다. 이런 종류의 라우팅에 대한 한 어플리케이션이 웹 서버들을 액세스하고 그 런 다음 보다 효율적으로 후속 URL 패킷들을 다른 위치들로 라우팅하는데 사용될 수 있다. 도 16 및 17을 모두 참조할 때, 한 사업장이 여러 사용자들(930)에 의해 인터넷(932)을 거쳐 액세스 가능한 웹 서버(934)를 운영할 수 있다. 웹 서버(934)는 각종 비즈니스 서비스들에 대한 여러 상이한 링크들을 지원하는 웹 페이지(936)를 사용자(930)에게 디스플레이할 수 있다. 예를 들어, 제1URL 링크(938)는 사용자를 고객 지원으로 가게 할 수 있고, 제2URL 링크(940)는 사용자를 자동차 세일즈로 가게 할 수 있고, 제3링크(942)는 사용자(930)를 가구 세일즈로 가게 할 수 있다.ACL entry 918 shows another example where routing is based on Layer 7 URL metrics. One application for this kind of routing can be used to access web servers and then route subsequent URL packets to other locations more efficiently. 16 and 17, a business may operate a web server 934 accessible by the various users 930 over the internet 932. The web server 934 can display to the user 930 a web page 936 that supports various different links to various business services. For example, a first URL link 938 can direct a user to customer support, a second URL link 940 can direct a user to a car sales, and a third link 942 can direct a user 930 to a customer. You can go to furniture sales.

이러한 각종 링크들(938, 940, 및 942) 각각을 지원하는 웹 서버들은 서로 다른 인터넷 위치, 및 가능하게는 (그러나 여기 한정되는 것은 아님) 다른 지리학적 위치에 자리할 수 있다. 예를 들어, 고객 지원 서버(944)는 애틀랜타의 회사 본부에 위치할 수 있고, 자동자 세일즈 서버(946)는 디트로이트에, 그리고 가구 세일즈 서버(949)는 프랑스 파리에 위치할 수 있다. ACL 테이블(910) (도 16)은 사용자(930)를 URL 링크들(938, 940 및 942)에 보다 효과적으로 연결시키는데 활용된다. Web servers supporting each of these various links 938, 940, and 942 may be located at different Internet locations, and possibly (but not limited to) different geographic locations. For example, customer support server 944 may be located at corporate headquarters in Atlanta, auto sales server 946 may be located in Detroit, and furniture sales server 949 may be located in Paris, France. The ACL table 910 (FIG. 16) is utilized to more effectively connect the user 930 to URL links 938, 940, and 942.

예를 들어, 사용자가 고객 지원 링크(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 packets with the destination IP address "10.10.x.x" including the URL "Http: // DEST1". The router 935 of FIG. 17 compares both the IP destination address and the URL with entries in the ACL table 910. As such, router 935 routes the packets to output port 1 to customer support server 944. Router 935 may also receive packets that have the same destination IP address "10.10.x.x" but whose URL is "fttp; / DEST2". Router 935 accordingly routes these packets through port 2 to automobile server 946. Packets with the destination IP address " 10.10.x.x " and associated URL / DEST3 are routed to the furniture server 948 via port 3. This provides more direct routing to the desired IP destination.

RSPRSP 를 이용한 통합 정책 관리Integrated policy management

상술한 바와 같이, 통합 정책 관리 (UPM)가 도 13에 도시된 바와 같이 통상적 프로세서 및 컴퓨팅 시스템 구조 안에서 구현될 수 있다. 그러나, 부가적 성능을 위해, 도 2a-2c에 앞서 도시된 RSP(100)와 유사한 재구성 어의 프로세서 (RSP) 안에 UPM이 구축될 수 있다.As discussed above, Unified Policy Management (UPM) may be implemented within conventional processor and computing system architectures as shown in FIG. However, for additional performance, a UPM may be built into the processor (RSP) of a reconfiguration word similar to the RSP 100 shown earlier in FIGS. 2A-2C.

도 18 및 19를 참조할 때, 오퍼레이션 1000에서 RSP(100) 내 DXP(180)가, 입력 버퍼(140) 내 패킷들을 파싱하고 UPM 오퍼레이션들을 수행하는데 필요한 어떤 ACL 조건자들(954)을 식별하는 문법을 실행한다. DXP(180)는 오퍼레이션 1002에서 SPU(200)로, SEP 코드(212)를 시동하는 명령들을 보낸다. SEP 코드(212)는 SPU(200)로 하여금 ACL 조건자들(954)을, 다음에 ACL 테이블(979)로 적용되는 조건자 집합(956)으로 포맷하게 한다. 이 예에서, ACL 테이블(979)의 일부나 전부가 하나 이상의 CAM들(220) 안에 포함된다. 18 and 19, at operation 1000, the DXP 180 in the RSP 100 identifies any ACL predicates 954 needed to parse packets in the input buffer 140 and perform UPM operations. Run the grammar. The DXP 180 sends instructions to the SPU 200 in operation 1002 to start the SEP code 212. The SEP code 212 causes the SPU 200 to format the ACL predicates 954 into a set of predicates 956 that are then applied to the ACL table 979. In this example, some or all of the ACL table 979 is included in one or more CAMs 220.

DXP(180) 및 DXP(180)에 의해 시동된 관련 SEP 코드(212)에 따라, 임의의 수의 ACL 조건자들(954)이 SPU(200)에 의해 ACL 조건자 집합(956) 안에 결합 될 수 있다. 예를 들어, DXP(180) 안의 문법은 패킷 목적지 및 소스 어드레스를 위해 ACL 조건자들(954)을 식별할 수 있다. 다른 조건자들(954)은 IPv6-IPv4 전환이나 TCP DoS 오퍼레이션들을 위해 식별될 수 있다. DXP(180)에 의해 시동된 SEP 코드(212)는, DXP가 IPv6 패킷을 식별할 때 SPU(200)로 하여금 목적지 IP 어드레스 조건자를 IPv6 패킷 타입 조건자와 결합하게 할 수 있다. 마찬가지로, TCP 패킷이 식별될 때, DXP(180)는 SPU(200)로 하여금 목적지 IP 조건자(954)를 TCP 패킷 타입 조건자(954)와 조건자 집합(956) 안에서 결합되게 하는 SEP 코드(212)를 시동할 수 있다. According to the DXP 180 and associated SEP code 212 fired by the DXP 180, any number of ACL predicates 954 can be combined into the ACL predicate set 956 by the SPU 200. Can be. For example, the grammar in DXP 180 may identify ACL predicates 954 for packet destination and source address. Other predicates 954 may be identified for IPv6-IPv4 switching or TCP DoS operations. The SEP code 212 fired by the DXP 180 can cause the SPU 200 to combine the destination IP address predicate with an IPv6 packet type predicate when the DXP identifies an IPv6 packet. Similarly, when a TCP packet is identified, the DXP 180 may cause the SPU 200 to combine the destination IP predicate 954 with the TCP packet type predicate 954 and predicate set 956 in the SEP code ( 212) can be started.

오퍼레이션 1004에서, SPU(200)는 CAM(220) 안의 ACL 테이블로 ACL 조건자 집합(956)을 적용한다. 오퍼레이션 1006에서 SPU는 이제 CAM(220)으로부터 다시 수신되는 ACL 액션(952)에 따라 패킷을 처리한다. 오퍼레이션 1010에서, ACL 액션(252)은 SPU(200)로 하여금 현재 DRAM(280) (도 2a)에 저장된 패킷을 버리게 만드는 단순 드롭 명령일 수 있다. 오퍼레이션 1012에서, ACL 액션(952)는 SPU(200)로 하여금 DRAM(280) 내 패킷을 출력 버퍼(150)로 보내게 만드는 명령일 수 있다.At operation 1004, SPU 200 applies ACL predicate set 956 to the ACL table in CAM 220. In operation 1006 the SPU now processes the packet according to the ACL action 952 received back from the CAM 220. At operation 1010, the ACL action 252 may be a simple drop command that causes the SPU 200 to discard a packet currently stored in DRAM 280 (FIG. 2A). At operation 1012, ACL action 952 may be an instruction that causes SPU 200 to send a packet in DRAM 280 to output buffer 150.

세 번째 상황에서, ACL 액션(952)은 SPU(200)로 하여금 특정 방화벽 오퍼레이션과 관련될 수 있는 추가 SEP 코드(212)를 시동하게 할 수 있다. 예를 들어, 일련의 ACL 엔트리들(980)이 다른 방화벽 오퍼레이션들과 관련될 수 있다. ACL 엔트리(980A)는 이하에서 더 상세히 설명될 침입 검출 시스템 (IDS) 면허 오퍼레이션과 결부될 수 있다. 다른 ACL 엔트리(980B)가, 이 명세서에 참증 형태로 이미 포함되어 있는 2005년 5월 9일자 일련번호 11/125,956 Method and apparatus for intrusion detection in a network processing device라는 제목의 공동 계류중인 출원에 개시된 상응하는 IDS 오퍼레이션에 결부될 수 있다. In a third situation, the ACL action 952 may cause the SPU 200 to launch additional SEP code 212 that may be associated with a particular firewall operation. For example, a series of ACL entries 980 can be associated with other firewall operations. ACL entry 980A may be associated with an intrusion detection system (IDS) license operation, which will be described in more detail below. Another ACL entry 980B corresponds to the co-pending application disclosed in Serial Number 11 / 125,956 Method and apparatus for intrusion detection in a network processing device, dated May 9, 2005, which is already incorporated in this document in a form of reference. May be associated with an IDS operation.

다른 ACL 엔트리들(980C-F)은 이미 기술하였거나 이하에서 더 상세히 설명될, 네트워크 어드레스 전환 (NAT), IPv4-IPv6 변환, TCP 세션들에 대한 서비스 거부 (DoS), 및 패킷 조각들에 대한 DoS 같은 다른 방화벽 오퍼레이션들과 연관될 수 있다. Other ACL entries 980C-F are already described or described in more detail below, network address translation (NAT), IPv4-IPv6 translation, denial of service for TCP sessions (DoS), and DoS for packet fragments. Like other firewall operations.

예를 들어, SPU(200)는 한 DoS TCP 패킷에 해당하는 ACL 엔트리(880E)와 매치하는 ACL 조건자 집합(956)을 CAM(220)에 적용할 수 있다. ACL 엔트리(980E)에 포함된 액션은 어의 코드 테이블(210)로의 포인터(982)가 될 수 있다. 도 19의 오퍼레이션 1008에서 SPU(200)는 포인트 위치(982)의 SEP 코드를 시동 및 실행한다. 이 예에서, 위치(982)에 있는 SEP 코드(212)는 SPU(200)로 하여금 도 4-11을 통해 상술한 TCP DoS 오퍼레이션들 중 일부나 전부를 수행하도록 한다.For example, the SPU 200 may apply an ACL predicate set 956 to the CAM 220 that matches the ACL entry 880E corresponding to one DoS TCP packet. The action contained in the ACL entry 980E may be a pointer 982 to the language code table 210. In operation 1008 of FIG. 19, SPU 200 starts and executes the SEP code at point location 982. In this example, the SEP code 212 at location 982 allows the SPU 200 to perform some or all of the TCP DoS operations described above with reference to FIGS. 4-11.

ACL 엔트리(980E)의 액션에 의해 시동된 TCP DoS 오퍼레이션들을 완료한 뒤, SEP 코드(212)는 SPU(200)로 하여금 각종 다른 방화벽 오퍼레이션들 중 어느 하나를 하게 할 수 있다. 예를 들어, 1014 경로에 의해 표시된 것과 같이, SPU(200)는 DXP(180)에 의해 식별된 ACL 조건자들(954)로부터 다른 ACL 조건자 집합(956)을 구축(assemble)하도록 관리된다. 이제 새 조건자 집합(956)은 다른 방화벽 오퍼레이션들을 수행하기 위해 ACL 테이블(979)에 재적용된다. SEP 코드(212)는 SPU(200)로 하여금 도 19의 경로 1016으로 표시된 것과 같이 패킷을 제외하거나 경로 1018에 표시된 것과 같은 패킷을 다른 출력 포트로 전송하라고 감독할 수 있다.After completing the TCP DoS operations initiated by the action of ACL entry 980E, SEP code 212 may cause SPU 200 to do any of a variety of other firewall operations. For example, as indicated by the 1014 path, the SPU 200 is managed to assemble another set of ACL predicates 956 from the ACL predicates 954 identified by the DXP 180. The new predicate set 956 is now reapplied to the ACL table 979 to perform other firewall operations. The SEP code 212 may direct the SPU 200 to either drop the packet as indicated by path 1016 in FIG. 19 or to send the packet as indicated on path 1018 to another output port.

도 13-17을 통해 상술한 바와 같이, RSP(100)는 다른 방화벽 정책 관리 오퍼 레이션들과 라우팅/스위칭 오퍼레이션들을 다 통합하는 통합 정책 관리를 수행할 수도 있다. 그에 따라, CAM(220) 또한 목적지 IP 어드레스들 및 관련 목적지 포트 넘버들을 가진 엔트리들을 포함하는 포워딩 정보 베이스(984)를 포함할 것이다. 위의 도 16에서 보인 바와 같이, FIB 테이블(984)은 목적지 어드레스 및 다른 방화벽 정책 메트릭들(988)에 따라 패킷들을 라우팅하는 일반 FIB 엔트리들(987) 및 다른 엔트리들(986)을 포함할 수 있다.As described above with reference to FIGS. 13-17, the RSP 100 may perform integrated policy management integrating other firewall policy management operations and routing / switching operations. As such, the CAM 220 will also include a forwarding information base 984 that includes entries with destination IP addresses and associated destination port numbers. As shown in FIG. 16 above, the FIB table 984 may include generic FIB entries 987 and other entries 986 for routing packets according to the destination address and other firewall policy metrics 988. have.

RSP(100)은 방화벽, 통상의 라우터나 스위치, 또는 이 둘의 조합들 사이를 용이하게 이동할 수 있다. 예를 들어 어의 코드 테이블(210)(도 18)에서 경로 990은 DoS TCP 오퍼레이션에서 라우팅 오퍼레이션으로 RSP(100)가 스위칭하는 것을 나타낸다. SPU(200)에 의해 CAM(220)으로 제공된 제1조건자 집합(956)은 DoS TCP 엔트리(980E)에 매치할 수 있다. 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 move between firewalls, conventional routers or switches, or a combination of both. For example, in erroneous code table 210 (FIG. 18), path 990 indicates that RSP 100 switches from DoS TCP operation to routing operation. The first set of predicates 956 provided by the SPU 200 to the CAM 220 may match the DoS TCP entry 980E. After completing execution of the SEP code 982 associated with the DoS TCP operation, the SPU 200 is managed to provide another set of predicates 956 to the CAM 220. The new set of predicates 956 will match an entry 986 or 987 in the FIB 984. That entry in the FIB 984 may cause the SPU 200 to go to the SEP code 992 of the SCT 210 to perform a normal or UPM routing operation.

이와 달리, CAM(220)으로 제공된 초기 조건자 집합(956)이, 초기에 DoS TCP 엔트리(980E)와 매칭하는 대신 FIB 엔트리(986)와 매칭할 수 있다. 엔트리(986)에 포함된 그에 따른 결과적 액션이 SPU(200)로 하여금 관련 패킷을 출력 포트를 통해, TCP DoS 오퍼레이션을 지원하는 다른 장치로 전송하도록 감독할 것이다.Alternatively, the initial predicate set 956 provided to the CAM 220 may match the FIB entry 986 instead of initially matching the DoS TCP entry 980E. The resulting action contained in entry 986 will direct the SPU 200 to send the relevant packet through the output port to another device that supports TCP DoS operations.

네트워크 어드레스 전환 (NAT)/포트 어드레스 전환 (PAT)Network Address Switching (NAT) / Port Address Switching (PAT)

도 20을 참조할 때, RSP(100)는, 공중 네트워크(12)를 통해 패킷을 전송하는데 사용되는 공중 IP 어드레스들 및 사설 네트워크(24)를 통해 패킷을 전송하는데 사용되는 사설 IP 어드레스들 사이에서, 방화벽(1062)을 통과해 이동하는 패킷들의 IP 어드레스들 및/또는 포트 넘버들을 전환하는 NAT/PAT 오퍼레이션들에 대해 프로그램될 수 있다. Referring to FIG. 20, the RSP 100 may include a public IP address used to transmit a packet through the public network 12 and a private IP address used to transmit a packet through the private network 24. It may be programmed for NAT / PAT operations to switch IP addresses and / or port numbers of packets traveling through firewall 1062.

통상적으로, 사설 네트워크(24) 내에서 동작하는 각종 네트워크 프로세싱 장치들과 관련된 여러 개의 고유한 사설 IP 어드레스들이 있다. 그러나, 단 한 개, 혹은 소수의 공중 IP 어드레스들만을 사용해 그 여러 사설 IP 어드레스들을 나타낼 수 있다. 이러한 공중-사설 어드레스 전환은, 사설 네트워크(24) 내 내부 장치들의 아이덴티티를 보호하고 사설 네트워크(24) 내 여러 사설 어드레스들로의 매핑에 요구되는 공중 어드레스들의 수를 줄이게 한다. Typically, there are several unique private IP addresses associated with various network processing devices operating within private network 24. However, only one or a few public IP addresses can be used to represent those private IP addresses. This public-private address translation protects the identity of internal devices in private network 24 and reduces the number of public addresses required for mapping to various private addresses in private network 24.

다른 실시예에서, 하나 이상의 사설 IP 어드레스들은 관련된 개별 공중 IP 어드레스를 포함한다. 이것이 반드시 공중 IP 어드레스들의 수를 줄이지는 않을 것이나, 방화벽(1062)으로 하여금 공중 네트워크(12)로부터 해당 사설 IP 어드레스를 감추게는 할 수 있다. 이러한 일대일(one-to-one) 매핑은 또한 방화벽(1062)으로 하여금 사설 네트워크(24) 내 각종 네트워크 장치들에 대한 공중 IP 어드레스들을 재구성(재설정)하도록 허용한다.In another embodiment, the one or more private IP addresses include associated individual public IP addresses. This will not necessarily reduce the number of public IP addresses, but may cause the firewall 1062 to hide its private IP address from the public network 12. This one-to-one mapping also allows the firewall 1062 to reconfigure (reset) public IP addresses for various 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)을, 패킷(1050)을 공중 네트워크(12)를 통해 엔드포인트(1056)로 라우팅하는데 사용되는 공중 IP 어드레스(1052)로 변환한다.The RSP 100 is configured to translate the public IP address 1058 of the incoming packet 1061 into a private IP address 1074. The private IP address 1074 is now used to route the inner packet 1076 to the associated network processing device 1078 in the private network 24. The RSP 100 also receives a packet 1072 containing the private IP address 1070 from the local device 1078 in the private network 24. When this packet 1072 is directed to an endpoint 1056 in the public network 12, the RSP 100 sends a private IP address 1070 and the packet 1050 via the public network 12 to the endpoint ( 1056 to a public IP address 1052 used for routing.

더 자세히 설명하면, 사설 네트워크(24)에서 동작하는 장치(1078)가 초기에 패킷(1072)을 방화벽(1062)을 거쳐 공중 네트워크(12)의 목적지로 보낼 수 있다. RSP(100)는 패킷(1072)을 수신하여 사설 소스 IP 어드레스(1070)를 방화벽(1062)과 관련된 공중 IP 어드레스(1052)로 변환한다. 나가는 패킷(1050) 역시 RSP(100)에 의해 특정한 포트 넘버(1054)로 배정된다. RSP(100)는 이제 사설 IP 어드레스 엔트리(1068)와 해당하는 포트 넘버 엔트리(1066)를 더하여 룩업 테이블(1064)을 업데이트한다.In more detail, the device 1078 operating in the private network 24 may initially send packets 1072 through the firewall 1062 to the destination of the public network 12. 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. Outgoing packets 1050 are also assigned to a specific port number 1054 by the RSP 100. The RSP 100 now updates the lookup table 1064 by adding the private IP address entry 1068 and the 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 receiving the outgoing packet 1050 may send the packet 1061 back to the local device 1078. Device 1056 sends a public IP address 1052 and port number 1054 in packet 1050 to destination address 1058 and port number 1060 for packet 1061 that is sent back to local device 1078. Use as. RSP 100 maps destination address 1058 and port number 1060 in packet 1061 to port number entries 1066 in lookup table 1064. The RSP 100 identifies the private IP address entry 1070 in the lookup table 1079, corresponding to the matched port number entry 1060.

RSP(100)는 패킷(1061) 내 공중 목적지 IP 어드레스(1058)를 룩업 테이 블(1064)로부터 식별된 사설 IP 어드레스(1070)로 대체한다. 사설 및 공중 IP 어드레스들 사이의 전환 중에, RSP(100)는 패킷을 해체하고(de-assemble), 첵셈(checksum) 값을 재생성하고 그런 다음 패킷을 다시 구축(assemble)한다.RSP 100 replaces the public destination IP address 1058 in packet 1061 with the private IP address 1070 identified from lookup table 1064. During the transition between private and public IP addresses, the RSP 100 de-assembles the packet, recreates the checksum value and then reassembles the packet.

도 21-23은 상술한 NAT/PAT 변환을 RSP(100)가 어떻게 수행하는지에 대한 한 예를 상세히 도시한다. DXP(180)(도 21)는 오퍼레이션 1100 (도 22)에서 사설 네트워크(24)로부터 수신된 들어오는 패킷을 파싱하여 사설 IP 소스 어드레스(1070)를 식별한다. DXP(180)는 오퍼레이션 1102에서 SPU(200)에 신호하여 SCT(210)로부터 사설 IP 소스 어드레스(1070)을 공중 IP 소스 어드레스로 전환하기 위한 마이크로 명령들을 로드하게 한다.21-23 illustrate in detail an example of how the RSP 100 performs the NAT / PAT conversion described above. DXP 180 (FIG. 21) parses incoming packets received from private network 24 at operation 1100 (FIG. 22) to identify private IP source address 1070. DXP 180 signals SPU 200 at operation 1102 to load micro instructions from SCT 210 to convert 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)에 저장한다.SPU 200 generates the 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, the SPU 200 loads the port number for the packet 1072 and the corresponding private IP address into the lookup table 1079. 21 shows an example of how the lookup table 1079 is implemented using the CAM 220 and the SRAM 221. The SPU 200 stores the port numbers associated with the output packets 1050 in the CAM location 220A via the AMCD 230 and stores the corresponding private IP address 1070 in the SRAM 221 as an entry 221A. Save it.

오퍼레이션 1108에서, SPU(200)는 패킷(1072)의 사설 IP 소스 어드레스(1070)를 관련 포트 넘버(1054) (도 20)를 포함하는 공중 소스 IP 어드레스(1052)로 대체한다. SPU(200)는 또한 나가는 패킷에 대한 새로운 첵섬을 생성할 수도 있다 (오퍼레이션 1110). 마지막으로, 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 with a public source IP address 1052 that includes an associated port number 1054 (FIG. 20). SPU 200 may also generate a new checksum for outgoing packets (operation 1110). Finally, the SPU 200 sends a packet 1050 from the DRAM 280 to the output port 152 with a public IP address 1052 and a port number 1054 at operation 1112.

도 23은 어떻게 RSP(100)가 들어오는 패킷들의 공중 목적지 IP 어드레스를 다시 사설 IP 어드레스들로 전환하는지를 나타낸 것이다. 오퍼레이션 1120에서, DXP(180)가 공중 네트워크(12)로부터 수신되는 들어오는 패킷(1061)을 파싱하고, 관련된 5개 한 벌 어드레스를 식별한다. DXP(180)는 오퍼레이션 1122에서 SPU(200)에 신호하여, 공중 IP 목적지 어드레스(1058) 및 포트 넘버(1060)를 해당하는 사설 IP 목적지 어드레스(1074)로 전환하도록 SCT(210) (도 2a)로부터 마이크로명령들을 로드하게 한다. 23 shows how the RSP 100 converts the public destination IP address of incoming packets back to private IP addresses. At operation 1120, DXP 180 parses the incoming packet 1061 received from public network 12 and identifies the associated five suit addresses. The DXP 180 signals the SPU 200 at operation 1122 to convert the public IP destination address 1058 and port number 1060 to the corresponding private IP destination address 1074 (FIG. 2A). Load microinstructions from.

SPU(200)는 오퍼레이션 1124에서, 들어오는 패킷(1061)으로부터 공중 목적지 IP 어드레스(158) 및 포트 넘버(1060)를 룩업 테이블(1079)의 IP 어드레스들 및 포트 넘버 엔트리들(220A)과 비교한다. 예를 들어, SPU(200)는 목적지 포트 넘버를 CAM(220)으로의 어드레스로서 사용한다. 그 포트 넘버와 매치하는 섹션(220A) so 어드레스가 SRAM(221)의 어드레스 섹션(221A) 안으로의 포인터로서 사용된다. 오퍼레이션 1126에서, SPU(200)는 SRAM(221)으로부터 식별된 사설 목적지 IP 어드레스를 읽어오고 패킷에 대한 공중 IP 목적지 어드레스(1058)를 상기 식별된 사설 IP 어드레스(1074)로 바꾼다. 오퍼레이션 1128에서, SPU(200)는 또 전환된 패킷에 대한 새 첵섬을 생성할 수 있다. 마지막으로, SPU(200)는 오퍼레이션 1130에서 DRAM 메모리(280)로부터 나온 패킷(1076)을 출력 포트(152)를 통해 사설 네트워크(24)로 출력한다.SPU 200 compares the public destination IP address 158 and port number 1060 from the incoming packet 1061 with the IP address and port number entries 220A of the lookup table 1079, at operation 1124. For example, SPU 200 uses the destination port number as an address to CAM 220. The section 220A so address that matches the port number is used as a pointer into the address section 221A of the SRAM 221. At operation 1126, SPU 200 reads the identified private destination IP address from SRAM 221 and replaces the public IP destination address 1058 for the packet with the identified private IP address 1074. At operation 1128, the SPU 200 may also generate a new checksum for the switched packet. Finally, the SPU 200 outputs the packet 1076 from the DRAM memory 280 through the output port 152 to the private network 24 in operation 1130.

RSP(100)는 NAT/PAT 오퍼레이션 이전이나 이후에 동일 패킷들에 대한 다른 변경 및 모니터링 오퍼레이션들을 수행하도록 구성될 수 있다. 이 경우, SPU(200)는 DRAM(280)으로부터 새 사설 IP 어드레스(1074)를 가진 패킷을, 추가 방화벽 프로세싱을 위해 다시 재순환 버퍼(160)(도 2a)로 보낼 수 있다. 이후 다른 방화벽 오퍼레이션들이 재순환 버퍼(160)의 패킷에 대해 수행된다. RSP 100 may be configured to perform other change and monitoring operations on the same packets before or after NAT / PAT operation. In this case, SPU 200 may send a packet with a new private IP address 1074 from DRAM 280 back to recycle buffer 160 (FIG. 2A) for further firewall processing. Other firewall operations are then performed on the packets in recycle buffer 160.

IPv6/IPv6 / IPv5IPv5 전환 transform

도 24를 참조할 때, 방화벽(1062)은 인터넷 프로토콜 버전 4 (IPv4) 및 IP 버전 6 (IPv6) 사이나, 다른 IP 프로토콜 버전들 사이에서 전환될 필요가 있을 수 있다. 예를 들어, 제1네트워크(1150)은 IPv6를 이용할 수 있고, 제2네트워크(1160)은 IPv4를 이용할 수 있다. 그에 따라 방화벽(1062)은 IPv6 패킷들(1156)을 위한 128 비트 어드레스 공간을 IPv4 패킷들(1172)을 위한 32 비트 어드레스 공간으로 전환해야 한다. 헤더들 안의 다른 정보 및 페이로드 역시 IPv4와 IPv6 사이에서 전환되어야 할 것이다.Referring to FIG. 24, the firewall 1062 may need to be switched 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 and the second network 1160 may use IPv4. Accordingly, firewall 1062 must convert the 128-bit address space for IPv6 packets 1156 into a 32-bit address space for IPv4 packets 1172. Other information and payload in the headers will also have to be switched 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, firewall 1062 converts IPv6 packet 1156 into IPv4 packet 1172. In another example, firewall 1062 encapsulates IPv6 packet 1156 into IPv4 tunnel 1164. In connection with the reverse translation, the firewall 1062 may convert IPv4 packets into IPv6 packets or encapsulate IPv4 packets 1172 in IPv6 tunnels. These various transformations depend on the type of IP networks associated with the firewall 1062.

들어오는 패킷(1158)이 미디어 액세스 제어(MAC) 헤더(1180), IP 헤 더(1182), 및 TCP 헤더(1184)를 포함할 수 있다. 타입 필드(1186)는 IP 헤더(1182)에 대한 IP 버전 넘버를 식별한다. 도 21, 24 및 25를 이제 참조하면, DXP(180) (도 2)가 오퍼레이션 1200 (도 25)에서, 들어오는 패킷(1158)을 파싱하여 필드(1186) 내 특정 IP 버전을 식별한다. 타입 필드(1186)가 IPv4를 가리키고, RSP(100)의 반대 단과 연결된 네트워크 역시 IPv4를 이용하면, DXP(180)는 IP 버전 전환을 위해 SPU들(200) 내 어느 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 identifies the IP version number for the IP header 1182. Referring now to FIGS. 21, 24 and 25, at operation 1200 (FIG. 25), DXP 180 (FIG. 2) parses an incoming packet 1158 to identify a specific IP version in field 1186. If the type field 1186 indicates IPv4, and the network connected to the opposite end of the RSP 100 also uses IPv4, the DXP 180 will not fire any SEP code in the SPUs 200 for IP version switching.

그러나, 타입 필드(1186)가 RSP(100)의 반대 단에 대해 동작하는 IP 버전과 다른 IP 버전을 가리키면, DXP(180)는 오퍼레이션 1202에서 SPU(200)에 신호해, 들어오는 IP 패킷을 다른 네트워크에 대한 IP 버전으로 전환하게 하는 마이크로 명령들을 SCT(210)(도 2a)로부터 로드하게 한다. 이 예에서, SPU(200)는 IPv6 패킷을 IPv4 패킷으로 변환한다. However, if the type field 1186 points to an IP version that is different from the IP version operating for the opposite end of the RSP 100, the DXP 180 signals the SPU 200 at operation 1202 to direct incoming IP packets to other networks. Micro instructions to load from the SCT 210 (FIG. 2A) to switch to the IP version for. In this example, the SPU 200 converts an IPv6 packet into an IPv4 packet.

오퍼레이션 1204에서 SPU는 DXP(180)에 의해 식별된 IPv6 어드레스를 128 비트의 IPv6 어드레스들과 관련된 CAM(220) (도 21) 내 섹션(220B)에 제공한다. CAM(220) 은 SRAM(221)의 섹션(221B) 내, 해당 32 비트 IPv4 어드레스를 포함하는 해당 엔트리를 어드레스 한다. 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)로 전송한다. In operation 1204, the SPU provides the IPv6 address identified by DXP 180 to section 220B in CAM 220 (FIG. 21) associated with 128-bit IPv6 addresses. CAM 220 addresses the corresponding entry in the section 221B of SRAM 221 that includes the corresponding 32 bit IPv4 address. SPU 200 reads the IPv4 address output from SRAM 221 in operation 1206 and replaces that IPv6 address in the packet with the identified IPv4 address in operation 1208. Alternatively, the SPU 200 may encapsulate an IPv6 packet in an IPv4 tunnel using the IPv4 address identified in the SRAM 221. In operation 1210, the SPU 200 creates a new checksum and sends, in operation 1212, an IPv4 tunnel containing the switched IPv4 packet, or IPv6 packet, from DRAM 280 to output port 152.

도 25에 나타낸 것과 유사한 프로세스가 들어오는 IPv4 패킷들을 IPv6 패킷들로 전환하는데 사용될 수도 있다. 상술한 같은 프로세스가 앞으로 나타날 수 있는 어떤 다른 IP 패킷 버전들 사이의 전환에도 사용될 수 있다. RSP(100)는 단순하게, SPU(200)에 의해 사용되는 일련의 SEP 코드를 시동하는 새 IP 버전 넘버를 식별하여, 제1IP 버전과 제2IP버전 사이에서 패킷들을 전환한다.A process similar to that shown in FIG. 25 may be used to convert incoming IPv4 packets into IPv6 packets. The same process described above can be used to switch between any other IP packet versions that may appear in the future. The RSP 100 simply identifies the new IP version number that initiates the series of SEP codes used by the SPU 200 to switch packets between the first and second IP versions.

IP 버전 전환은 도 13-19를 통해 상술한 통합 정책 관리 오퍼레이션들과 결합될 수도 있다. 예를 들어, RSP(100)가 상이한 IP 버전들로 식별된 패킷들을 그 패킷에서 식별된 IP 버전을 지원할 수 있는 다른 관련 IP 서브네트들로 라우팅할 수 있다.IP version switching may be combined with the integrated policy management operations described above with reference to FIGS. 13-19. For example, RSP 100 may route packets identified with different IP versions to other relevant IP subnets that may support the IP version identified in that packet.

많은 고유한 RSP(100)의 특징들 가운데 하나가, 부가적 패킷 프로세싱 오퍼레이션들이, 부가적인 하드웨어를 필요로 하지도 않고 소프트웨어나 프로세싱 상태 복잡도에 있어서의 실질적 증가 없이 수행될 수 있다는 것이다. 예를 들어, NAT/PAT 전환에 있어 도 21에 도시된 동일한 RSP 구성이 IPv4 및 IPv6 간 전환에도 사용될 수 있다. IPv6에서 IPv4로의 어드레스 매핑들(220B 및 221B) 각자와, 그 반대인 IPv4에서 IPv6로의 어드레스 매핑들(220C 및 220C) 각자가 CAM(220) 안에서 NAT/PAT 전환에 사용되는 IP 공중 및 사설 어드레스들(220A 및 220B)과 나란히 저장될 수 있다. 또, 증가된 128 비트의 IPv6 헤더를 처리하는 것은, 단지 약간의 추가 클록 사이클들이 더 큰 IPv6 패킷 헤더를 파싱하는데 필요로 되기 때문에, RSP(100)의 전반적인 패킷 프로세싱 레이트에 다만 약간의 추가 사이클만을 더한 다. One of the many unique features of the RSP 100 is that additional packet processing operations can be performed without the need for additional hardware and without a substantial increase in software or processing state complexity. For example, in NAT / PAT switching, the same RSP configuration shown in FIG. 21 can also be used for switching between IPv4 and IPv6. IP public and private addresses that are used for NAT / PAT switching within CAM 220, each of IPv6 to IPv4 address mappings 220B and 221B, and vice versa, IPv4 to IPv6 address mappings 220C and 220C, respectively. And can be stored alongside 220A and 220B. Also, processing an increased 128-bit IPv6 header requires only a few additional cycles in the overall packet processing rate of the RSP 100, since only a few additional clock cycles are needed to parse a larger IPv6 packet header. Plus.

여러가지 상이한 방화벽 오퍼레이션들은 일반적 DXP 파싱을 강화함(leveraging)으로써 같은 RSP(100) 안에서 보다 효율적으로 수행될 수 있다. 예를 들어, DXP(180)은 도 21에서 NAT/PAT, 및 IPv6/IPv4 오퍼레이션들 모두에 대해 동일한 파싱 오퍼레이션들 중 일부를 수행할 수 있다. 예를 들어, IP 어드레스는 NAT 및 IP 버전 전환들 다에 대해 DXP(180)에 의해 식별된다. 같은 DXP 어드레스 파싱 결과들이 그에 따라 NAT 및 IP 버전 전환 모두에 사용될 수 있다. DXP(180)는 따라서 NAT 문법 외에 작은 양의 문법만을 요하게 된다.Several different firewall operations can be performed more efficiently within the same RSP 100 by leveraging general DXP parsing. For example, the DXP 180 may perform some of the same parsing operations for both NAT / PAT, and IPv6 / IPv4 operations in FIG. 21. For example, the IP address is identified by the DXP 180 for both NAT and IP version transitions. The same DXP address parsing results can thus be used for both NAT and IP version switching. The DXP 180 thus only requires a small amount of grammar in addition to the NAT grammar.

RSP(100)는 또한 어떤 특정한 데이터 사이즈를 처리하는 것으로 제한되지 않는다. 따라서, 어떤 IPv4 또는 IPv6 오퍼레이션이나, 나중에 개발될지 모를 어떤 다른 IP 버전이나 어드레스 사이즈가 같은 RSP 구조(100)를 사용해 용이하게 구현된다. RSP(100)는 단순히 DXP(180)에 대해 최소한의 새로운 문법, SPU들(200)에 의해 실행될 추가 SEP 코드, 그리고 CAM(220) 및 SRAM(221)에 추가 엔트리들을 더함으로써이러한 상이한 IP 버전들 및 어드레스 사이즈들을 처리하도록 구성될 수 있다.RSP 100 is also not limited to processing any particular data size. Thus, any IPv4 or IPv6 operation, or any other IP version or address size that may be developed later, is easily implemented using the same RSP structure 100. The RSP 100 simply adds minimal new syntax for the DXP 180, additional SEP code to be executed by the SPUs 200, and additional entries to the CAM 220 and the SRAM 221 such different IP versions. And address sizes.

이것은 IPv4 패킷들 대신 IPv6 패킷들을 효율적으로 처리하기 위해 완전한 재설계를 요할 수 있는 종래의 하드웨어 구조들과는 다른 것이다. 예를 들어, 종래의 프로세서 내 데이터 경로 사이즈들, 레지스터 사이즈들, 및 로직 소자들은 더 큰 128 비트 IPv6 어드레스들에 대해 재설계되어야 될 것이다. This is different from conventional hardware structures that may require a complete redesign to efficiently handle IPv6 packets instead of IPv4 packets. For example, conventional in-processor data path sizes, register sizes, and logic elements would have to be redesigned for larger 128 bit IPv6 addresses.

버추얼Virtual 사설 네트워크(VPN) 통합 Private Network (VPN) Integration

도 26은 버추얼 사설 네트워크(VPN) 터널(1207)이 인터넷(1212)을 통해 개설되는 방법의 한 예를 보인 것이다. 컴퓨터(1216)가 회사 서버(1202)로부터 한 파일(1200)을 요청할 수 있다. 서버(1212)는 파일(1200)을 액세스하고 이 파일을 IP 패킷들(1204)로서 VPN/방화벽(1206)을 거쳐 원격 사용자(1216)에게 다시 전송한다.FIG. 26 illustrates an example of how a virtual private network (VPN) tunnel 1207 is established over the Internet 1212. Computer 1216 may request a file 1200 from corporate server 1202. Server 1212 accesses file 1200 and sends it back to remote user 1216 via VPN / firewall 1206 as IP packets 1204.

방화벽(1206)은 IP 소스 가드 (IPSG) 같이, 패킷(1204)을 IP 보안 프로토콜 캡슐화 보안 페이로드 (IPSec ESP; IP Security Protocol Encapsulating Security Payload) 트레일러(1210)와 IP 보안 프로토콜 인증 헤더 (IPSec AH; IP Security Protocol Authentication Header)(1208)로 캡슐화한다. 이러한 IPSec 헤더들(1208 및 1210)은, 전송 모드시 계층 3 프로토콜 상에서, IP 헤더 뒤와 상위 계층 프로토콜 헤더 앞에 위치하거나, 터널 모드시 캡슐화된 IP 헤더 전에 위치한다. IPSec ESP 헤더(1210) 및 AH 헤더(1208)는 개별적으로 사용되거나 서로 결합하여 사용될 수 있다.The firewall 1206 may, like the IP Source Guard (IPSG), packetize the packet 1204 to an IP Security Protocol Encapsulating Security Payload (IPSec ESP) trailer 1210 and an IP Security Protocol Authentication Header (IPSec AH); IP Security Protocol Authentication Header). These IPSec headers 1208 and 1210 are located after the IP header and before the upper layer protocol header on the layer 3 protocol in transport mode or before the encapsulated IP header in tunnel mode. IPSec ESP header 1210 and AH header 1208 may be used separately or in combination with each other.

IPSec ESP 헤더(1210)는 수신된 패킷을 해독하는데 필요한 정보 및, 수신된 패킷(1204)을 인증하는데 필요한 인증 다이제스트를 옵션으로서 포함한다. IPSec AH 헤더(1208)는 수신된 패킷(1204)을 인증하는데 필요한 인증 다이제스트를 포함한다. IPsec 패킷(1218)이 IPSec AH 헤더(1208)를 포함할 때, 인증 다이제스트는 계층 3 프로토콜 안에 위치하고; 그외 IPSec ESP 모드시 인증 다이제스트만이 ESP 트레일러(1210) 내 패킷의 페이로드 뒤에 위치한다.The IPSec ESP header 1210 optionally includes the information needed to decrypt the received packet and the authentication digest required to authenticate the received packet 1204. IPSec AH header 1208 includes an authentication digest required to authenticate the received packet 1204. When the IPsec packet 1218 includes the IPSec AH header 1208, the authentication digest is located in the layer 3 protocol; In the IPSec ESP mode, only the authentication digest is located behind the payload of packets in the ESP trailer 1210.

IPsec 패킷(1218)은 VPN 터널(1207)로서의 인터넷(1212)을 통해 컴퓨터(1216)로 전송된다. VPN/방화벽(1214)은 AH 헤더(1208) 및 ESP 헤더(1210) 안의 정보에 따라 IPsec 패킷(1218)을 해독한다. 해독된 IP 패킷(1204)은 이제 컴퓨터(1216)로 전송된다. VPN/방화벽(1214)은 앞서 위에서 서술한 것과 같은 해독된 패킷들(1204)에 대한 다른 방화벽 오퍼레이션들 중 어느 것을 수행할 수도 있다.IPsec packet 1218 is sent to computer 1216 via Internet 1212 as 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 now sent to the computer 1216. The VPN / firewall 1214 may perform any of the other firewall operations on the decrypted packets 1204 as described above.

도 27은 VPN/방화벽들(1206 및 1214)에서 RSP(100)에 의해 수행되는 보다 상세한 오퍼레이션들을 보인 것이다. RSP(100)는 우선 DoS 공격 레이트 문턱치 위에서 수신된 IPsec 패킷들(1218)을 필터링하기 위해 예비 DoS 필터링(1220)을 수행한다. DoS 필터링(1220)은 또한 도 4-11을 통해 상술한 것과 유사한 방식으로 임의의 비-IPsec 패킷들을 필터링할 수도 있다.FIG. 27 shows more detailed operations performed by RSP 100 at VPN / firewalls 1206 and 1214. The RSP 100 first performs preliminary DoS filtering 1220 to filter the received IPsec packets 1218 above the DoS attack rate threshold. DoS filtering 1220 may also filter any non-IPsec packets in a similar manner as described above with reference to FIGS. 4-11.

보안 협회(SA) 룩업 오퍼레이션(1222)이 IPsec 패킷(1218)로부터, RSP(100)에 의해 사용될 필요한 해독화 및 인증 기술들을 식별하는 IP 어드레스, 패킷 세션 식별자들 및 보안 파라미터 인덱스들(SPI들)(1226)을 추출한다. SPI들(1226) 및 기타 IP정보가, DoS, UPM, NAT, 및IP 버전 변환에 대해 위에서 기술한 룩업 및 ACL 테이블들과 유사하거나 같은 룩업 테이블(1224)로 제공된다. 룩업 테이블(1224)은 그러면 해독 키(1228), 해독 알고리즘 식별자(1230), 및 인증 알고리즘 식별자(1232)를 리턴한다.IP address, packet session identifiers and security parameter indexes (SPIs) for which the Security Association (SA) lookup operation 1222 identifies the necessary decryption and authentication techniques to be used by the RSP 100, from the IPsec packet 1218. Extract (1226). SPIs 1226 and other IP information are provided in a lookup table 1224 that is similar or identical to the lookup and ACL tables described above for DoS, UPM, NAT, and IP version translation. Lookup table 1224 then returns decryption key 1228, decryption algorithm identifier 1230, and authentication algorithm identifier 1232.

관련 해독 알고리즘들은 IPsec 패킷(1218)의 비트들을 암호화된 것으로부터 암호화해독된 것으로 변형한다. 해독화 알고리즘들의 예에, DES(Data Encryption Standard), T-DES(Triple Data Encryption Standard), AED(Advanced Encryption Standard), 및 CBC 모드의 T-DES 모드가 포함된다. 인증 알고리즘들이 데이터에 해대 해시 연산을 수행하여, IP 패킷(1204) 내 비트들이 서버(1202)에서 최초에 보 내진 비트들과 같은지를 검증한다. 인증 알고리즘들에 대한 예들에 MD5 및 SHA1이 포함된다.Associated decryption algorithms transform the bits of the IPsec packet 1218 from encrypted to decrypted. Examples of decryption algorithms include T-DES mode of Data Encryption Standard (DES), Triple Data Encryption Standard (T-DES), Advanced Encryption Standard (AED), and CBC mode. Authentication algorithms perform a hash operation on the data to verify that the bits in IP packet 1204 are the same as those originally sent from server 1202. Examples for authentication algorithms include MD5 and SHA1.

SA 룩업(1222)로부터의 결과들이 해독화 오퍼레이션(1234)로 주어지고, 그런 다음 그 오퍼레이션이 IPsec 패킷(1218)을 다시 최초의 IP 패킷(1204)으로 해독한다. SA 룩업(1222) 및 해독화 오퍼레이션(1234)가 어떻게 수행되는지에 대한 구체적인 세부사항들은 공동 계류 중에 있고 여기 참증으로서 포함되는 이하의 출원들에 개시되어 있다: 2005년 5월 11일 출원된 일련번호 11/127,445 Multiprocessor architecture with floating decryption/encryption/authentication blocks; 2005년 5월 11일 출원된 일련 번호 11/127,443 IP security decryption/encryption/authentication; 2005년5월 11일 출원된 일련번호 11/127,468 Pipelined IP Security decryption/encryption/authentication; 2005년 5월 11일 출원된 일련번호 11/127,467 DEA Engine with DMA interface.The results from the SA lookup 1222 are given to the decryption operation 1234, which then decrypts the IPsec packet 1218 back to the original IP packet 1204. Specific details of how the SA lookup 1222 and decryption operation 1234 are performed are disclosed in the following applications that are co-pending and incorporated herein by reference: Serial Number, filed May 11, 2005 11 / 127,445 Multiprocessor architecture with floating decryption / encryption / authentication blocks; Serial number 11 / 127,443, filed May 11, 2005; IP security decryption / encryption / authentication; Serial No. 11 / 127,468, filed May 11, 2005; Pipelined IP Security decryption / encryption / authentication; Serial number 11 / 127,467 DEA Engine with DMA interface, filed May 11, 2005.

DXP(180)는 들어오는 패킷들을 파싱하고, 식별된 IP 타입 필드에 따라 IPsec 패킷(1218)을 식별한다. DXP(180)의 문법은 그에 따라 DXP(180)에 의해 SEP 코드(212) (도 2a)를 시동하는데 사용되는 SPI들(1226)을 식별한다. SEP 코드(212)는 SPU들(200)에 명하여 SPI들(1226)을 CAM(220) 내 ACL들에 적용하도록 하고 그런 다음 CAM 룩업으로부터의 결과들에 따라 해독화(1234)를 수행한다. 예를 들어, 해독화 키(1228), 해독화 알고리즘 식별자(1230), 및 인증 알고리즘 식별자(1232)가 앞서 도 21에서 설명한 동일한 것과 동일한 CAM/SRAM 구조 안에 저장될 수 있다. CAM 룩업에 대한 결과들은 암호화 키(1228)를 사용하여 식별자(1230)와 관련된 해 독화 알고리즘과 식별자(1232)와 관련된 인증 알고리즘들을 실행하는 추가 SEP 코드를 가리키는 ACL 액션들이다. DXP 180 parses incoming packets and identifies IPsec packet 1218 according to the identified IP type field. The grammar of the DXP 180 thus identifies the SPIs 1226 used by the DXP 180 to initiate the SEP code 212 (FIG. 2A). SEP code 212 instructs SPUs 200 to apply SPIs 1226 to ACLs in CAM 220 and then performs decryption 1234 according to the results from the CAM lookup. For example, decryption key 1228, decryption algorithm identifier 1230, and authentication algorithm identifier 1232 may be stored in the same CAM / SRAM structure as the same described above in FIG. 21. The results for the CAM lookup are ACL actions that point to an additional SEP code that uses the encryption key 1228 to execute the decryption algorithm associated with the identifier 1230 and the authentication algorithms associated with the identifier 1232.

동일한 5개 들이 한 벌 같이, 동일한 IPsec 세션 동안 비-암호화 패킷들이 수신된 경우, CAM(220) 안의 해당 ACL 엔트리는 SPU(200)에 명하여 패킷들을 배제하도록 할 수 있다. 이것이 무권한 공격자가 VPN 세션(1207)을 접수하지 못하게 막는다.If non-encrypted packets are received during the same IPsec session, such as the same suit, the corresponding ACL entry in CAM 220 may instruct SPU 200 to exclude the packets. This prevents unauthorized attackers from accepting the VPN session 1207.

해독화된 IP 패킷들은 이제, 가능하다면 위 UPM 어플리케이션에서 기술되었던 것과 유사한 포워딩 오퍼레이션(1236)을 포함할 수 있는 하나 이상의 상이한 포스트 해독화 오퍼레이션들로 보내진다. 예를 들어, RSP(100)는 포워딩 오퍼레이션(1236)시 도 13-19ㅇ에서 기술한 FIB를 사용한 어떠한 추가 방화벽 오퍼레이션들 없이, 해독된 패킷(1204)을 단순히 목적지 어드레스로 전송할 수 있다.Decrypted IP packets are now sent to one or more different post-decryption operations, where possible, which may include a forwarding operation 1236 similar to that described in the UPM application above. For example, the RSP 100 may simply send the decrypted packet 1204 to the destination address at forwarding operation 1236 without any additional firewall operations using the FIB described in FIGS. 13-19.

이와 달리, 해독화(1234)로부터의 출력이 이차 DoS 필터링(1238)을 통과할 수 있다. 이차 DoS 필터링(1238)은 IP 패킷(1204)에서 지금 해독된 IP 어드레스 및 다른 식별자들에 대해 DoS 검출 및 필터링을 수행할 수 있다. 예를 들어, DoS 및 기타 UPM 오퍼레이션들에 대해 사용되는 조건자들 중 일부가 이제 해독된다. 해독된 조건자들은 식별된 다음 이차 DoS 오퍼레이션(1238), UPM, 또는 다른 필요로 되는 방화벽 오퍼레이션들을 수행하는 데 사용된다. Alternatively, output from decryption 1234 may pass through secondary DoS filtering 1238. Secondary DoS filtering 1238 may perform DoS detection and filtering for the IP address and other identifiers that are now decrypted in IP packet 1204. For example, some of the predicates used for DoS and other UPM operations are now decrypted. The decrypted predicates are used to perform the next secondary DoS operation 1238, UPM, or other required firewall operations that have been identified.

추가 방화벽 오퍼레이션들은 이 명세서에 참증으로서 포함되는 2005년 7월 14일자 출원되어 공동 계류중인 특허출원번호 11/181,528, TCP isolation with semantic processor TCP state machine에 기재된 것과 같은 TCP 프록시 오퍼레이 션(1240)을 포함할 수도 있다. 다른 가능한 포스트 해독화 오퍼레이션(1240)에서, RSP(100)는 해독된 IP 어드레스를 NAT/PAT 어플리케이션을 통해 위에서 기술된 것과 같이 공중 혹은 사설 어드레스로 전환할 수 있다.Additional firewall operations are described in TCP proxy operation 1240 as described in co-pending patent application No. 11 / 181,528, TCP isolation with semantic processor TCP state machine, filed Jul. 14, 2005, incorporated herein by reference. It may also include. In another possible post-decryption operation 1240, the RSP 100 may translate the decrypted IP address into a public or private address as described above via a NAT / PAT application.

어떤 방화벽 오퍼레이션들이 구현되는지와 해독된 IP 패킷들(1204)에 따라, RSP(100)는 포스트 해독화 오퍼레이션들(1236, 1238, 1240 또는 1240)의 임의의 조합오퍼레이션을 수행할 수 있다. 당연히, 상술한 다른 방화벽 오퍼레이션들 가운데 임의의 오퍼레이션 역시 수행될 수 있다.Depending on which firewall operations are implemented and the decrypted IP packets 1204, the RSP 100 may perform any combination operation of post decryption operations 1236, 1238, 1240 or 1240. Of course, any of the other firewall operations described above may also be performed.

방화벽 정책 관리 사용 면허License to use firewall policy management

도 28을 참조할 때, RSP(100)와 연계한 ACL 테이블(1506)은 안티 바이러스(AV) 면허(license)를 더 효과적으로 배정하는데 사용될 수 있다. 현재, AV 면허는 개별 장치들(1514)에 대해 배정된다. 문제는, 이러한 면허가 시스템 관리자에 의해 관리되기가 어렵다는 것이다. 예를 들어, 네트워크에 부가되는 모든 새로운 장치(1514)마다, 다른 면허가 취득되고 그 AV 소프트웨어가 설치되어져야 한다. 면허 협약이 만기될 때, 네트워크 관리자는 AV 소프트웨어를 개별 장치마다 다시 설치하거나 다시 수행해야 한다. 또, AV 소프트웨어에 대한 임의의 업데이트가 각 컴퓨터(1514) 상으로 개별적으로 로드되어야 한다.Referring to FIG. 28, the ACL table 1506 in conjunction with the RSP 100 may be used to more effectively assign antivirus (AV) licenses. Currently, an AV license is assigned for individual devices 1514. The problem is that such licenses are difficult to manage by a system administrator. For example, for every new device 1514 added to the network, a different license must be obtained and its AV software installed. When the license agreement expires, the network administrator must reinstall or rerun the AV software for each individual device. In addition, any updates to the AV software must be loaded separately on each computer 1514.

RSP(100)는 중앙집중화된 면허 관리를 지원한다. 예를 들어, AV 소프트웨어(1504)는 2005년 5월 9일 출원되어 공동 계류 중인 출원번호 11/125,956 Method and apparatus for intrusion detection in a network processing device에서 개시된 방식과 유사하게 방화벽(1502) 내 RSP(100)에 의해 오퍼레이션될 수 있다. 이 와 달리, AV 소프트웨어(1504)가 일반적인 네트워크 프로세싱 장치를 통해 실행될 수도 있다.The RSP 100 supports centralized license management. For example, AV software 1504 is similar to the method disclosed in US Pat. No. 11 / 125,956 Method and apparatus for intrusion detection in a network processing device, filed May 9, 2005, and which is similar to that disclosed in RSP (firewall 1502). May be operated by 100). Alternatively, AV software 1504 may be executed via a general network processing device.

그럼에도 불구하고, RSP(100)는 어느 서브-네트워크들(1520, 1522 및 1524)이 AV 면허를 가지는지를 판단하고 그에 따라 AV 소프트웨어(1504)를 면허 있는 서브-네트워크들로 향하는 패킷들에만 적용한다. 도 28 및 29를 참조할 대, RSP(100)는 특정 목적지 어드레스(1527)를 가진 공중 인터넷(1500)으로부터 패킷들(1525)을 수신한다. RSP(100) 내 DXP(180)는 SPU(200)에 대해 IP 목적지 어드레스를 식별하고, SPU(200)로 하여금 다른 무엇보다, 그 목적지 어드레스(1527)에 해당하는 서브-네트워크가 AV 면허를 가지는지를 알아보도록 체크하는 SEP 코드를 실행하게 한다.Nevertheless, the RSP 100 determines which sub-networks 1520, 1522 and 1524 have an AV license and applies the AV software 1504 only to packets destined for the licensed sub-networks accordingly. . Referring to FIGS. 28 and 29, the RSP 100 receives packets 1525 from the public Internet 1500 with a particular destination address 1527. The DXP 180 in the RSP 100 identifies the IP destination address for the SPU 200 and causes the SPU 200 to, among other things, have an AV license for the sub-network corresponding to that destination address 1527. Have the SEP code run checking to see if

예를 들어, SPU(200)는 패킷에 대한 목적지 어드레스(1527)를 CAM(220)으로 제공한다. 목적지 어드레스(1527)는 ACL 엔트리(1526)의 조건자(1528)와 매치할 것이다. ACL 엔트리(1526)와 연관된 액션(1530)은, ACL 조건자(1528)와 매치하는 패킷 목적지 어드레스(1527)와 연관된 서브 네트워크(1522)(도 28)에 대해 면허가 있다는 것을 가리킨다. 액션(1530)은 SPU(200)로 하여금 현재 서브네트워크(1522)와 설정된 접속의 개수가 할당된 면허의 개수보다 적은지를 판단하도록 명하는 추가 SEP 코드에 대한 포인터일 수 있다. 서브 네트워크(1522)에 대해 획득된 면허의 개수가 활성화된(active) 접속들의 개수보다 많으면, AV 소프트웨어(1504)가 패킷(1525)에 적용된다. For example, SPU 200 provides a destination address 1527 for the packet to CAM 220. The destination address 1527 will match the predicate 1528 of the 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. The action 1530 may be a pointer to an additional SEP code that instructs the SPU 200 to determine whether the number of connections established with the current subnetwork 1522 is less than the number of licenses assigned. If the number of licenses obtained for the sub network 1522 is greater than the number of active connections, the AV software 1504 is applied to the packet 1525.

방화벽(1502) 내 SPU(200) 또는 다른 프로세싱 요소들은 인터넷(1500)과 각 서브 네트워크(1520, 1522, 및 1524) 사이에서 활성화된 접속들의 개수에 대한 카운트(1529)를 계속 보유할 수 있다. 메모리(221)는 이 활성화된 접속 카운트(1529) 및 방화벽(1502)에 연결된 각 서브 네트워크에 대해 취득된 면허의 수(1531)를 저장한다.SPU 200 or other processing elements in firewall 1502 may continue to hold a count 1529 for the number of active connections between the Internet 1500 and each of the subnetworks 1520, 1522, and 1524. The memory 221 stores this activated connection count 1529 and the number 1531 of licenses obtained for each subnetwork connected to the firewall 1502.

SPU(200)는, 이미 식별된 패킷 목적지 어드레스(1527)를 CAM(220)에 적용함으로써 AV 소프트웨어(1504)가 패킷(1525)에 적용되어야 하는지를 빠르게 결정할 수 있다. CAM(220)은 서브-네트워크(1522)에 대한 가능한 면허의 개수(1531)와 현재의 접속 카운트(1529)를 포함하는 SRAM(221)의 위치를 식별한다. 하나 이상의 AV 면허가 활용가능하면, SPU(200)는 다른 방화벽 오퍼레이션들을 수행하기 전이나 후에 AV 소프트웨어(1504)를 패킷(1525)에 적용한다. SPU 200 may quickly determine whether AV software 1504 should be applied to packet 1525 by applying the already identified packet destination address 1527 to CAM 220. The CAM 220 identifies the location of the SRAM 221 including the number of possible licenses 1531 for the sub-network 1522 and the current connection count 1529. If one or more AV licenses are available, SPU 200 applies AV software 1504 to packet 1525 before or after performing other firewall operations.

서브 네트워크가 공중 네트워크에 자리하면, AV 소프트웨어(1504)를 통과하는 어떤 패킷들에 대해 터널이 설정될 수 있다. 예를 들어, 서브 네트워크(1524)가 방화벽(1502)으로부터 먼 위치에 자리할 수 있다. 서브 네트워크(1524)에 AV 면허들이 할당되어 있으면, 서브 네트워크(1524)의 어드레스들에 매치하는 해당 ACL 엔트리(1526) 내 액션(1530) 역시, 패킷을 서브 네트워크(1524)로 전송하기 전에 SPU(200)로 하여금 그 패킷을 보안 터널(1518) 안에 캡슐화하도록 할 것이다.Once the subnetwork is in the public network, a tunnel can be established for any packets passing through the AV software 1504. For example, the subnetwork 1524 may be located remote from the firewall 1502. If AV licenses are assigned to the sub-network 1524, the action 1530 in the corresponding ACL entry 1526 that matches the addresses of the sub-network 1524 may also be assigned to the SPU (SPU) before sending the packet to the sub-network 1524. 200 will encapsulate the packet in a secure tunnel 1518.

AV 소프트웨어(1504)는 AV 면허를 갖지 않는 서브 네트워크들에는 적용되지 않을 것이다. 예를 들어, 아무 면허 키 액션들(1530)도 서브 네트워크(1520)와 관련된 ACL 엔트리들에 대해 설정되지 않을 것이다. 그에 따라, RSP(100)는 서브 네트워크(1520)로 향하는 패킷들에 AV(1504)를 적용하지 않을 것이다.The AV software 1504 will not apply to sub networks that do not have an AV license. For example, no license key actions 1530 would be set for ACL entries associated with subnetwork 1520. As such, the RSP 100 will not apply the AV 1504 to packets destined for the subnetwork 1520.

RSPRSP 어레이들 Arrays

도 30 및 31을 참조할 때, 여러 RSP들(100)이 직렬 혹은 병렬 방화벽 오퍼레이션들을 제공하기 위해 서로 연결될 수 있다. 예를 들어, 도 30에서 여러 RSP들(100A-100D)은 직렬로 연결되어 있고, 그 각각은 서로 다른 방화벽, 라우팅 또는 침입 검출 시스템 (IDS) 오퍼레이션을 수행한다. 제1RSP(100A)는 5 개 한 벌 소스 및 목적지 IP 어드레스 및 포트 넘버들을 추출함으로써, 들어오는 패킷들(1598)로부터 IP 정보를 식별 및 추출할 수 있다.30 and 31, several RSPs 100 may be connected to each other to provide serial or parallel firewall operations. For example, in FIG. 30 several RSPs 100A-100D are connected in series, each of which performs a different firewall, routing, or intrusion detection system (IDS) operation. The first RSP 100A can identify and extract IP information from the incoming packets 1598 by extracting the five suite source and destination IP addresses and port numbers.

제2RSP(100B)는 도 4-11과 관련해 상술한 것과 같이 DoS 공격과 관련된 어떤 TCP 패킷들을 필터링하고 TCP 세션들을 관리하는 것 같은, TCP 관련 오퍼레이션들을 수행할 수 있다. RSP(100C)는 패킷들을 통해 전달될 수 있는 어떤 HTTP 세션들을 지향하는 패킷 프로세싱 오퍼레이션들을 수행할 수 있다. 마지막으로, RSP(100D)는 2005년 5월 9일 출원되어 동시 계류중인 출원번호 11/125,956 Method and apparatus for intrusion detection in a network processing device에서 개시한 것 같은 바이러스나 기타 특정 타입의 정보를 포함할 수 있는, HTTP 세션 내 어떤 텍스트나 실행 파일들을 찾을 수 있다. The second RSP 100B may perform TCP related operations, such as filtering certain TCP packets and managing TCP sessions associated with a DoS attack as described above with respect to FIGS. 4-11. RSP 100C may perform packet processing operations directed at any HTTP sessions that may be delivered over packets. Finally, the RSP 100D may contain a virus or other specific type of information, such as disclosed in May 9, 2005, co-pending application No. 11 / 125,956 Method and apparatus for intrusion detection in a network processing device. Can find any text or executable files in an HTTP session.

물론, RSP들(100)의 임의의 조합형태가 상이한 방화벽 및 비-방화벽 오퍼레이션들의 임의 조합오퍼레이션을 수행할 수 있으며, 도 30은 단지 한 예를 보인 것일 뿐이다. 각각의 부가 RSP가 실질적으로 성능의 선형적 증가를 준다는 것을 주지하는 것이 중요하다. 예를 들어, RSP(100A는 임의의 파싱된 방화벽 조건자들, IDS 토큰들, 비-단말(NT)들(312), 생성(production) 코드들(178), SEP 코드(177B) (도 2b 및 2c) 등등(1602)을 다음 RSP(100B)에 전달할 수 있다. RSP(100B)는 패킷 프로세싱을 완료한 뒤에 비슷한 상태 정보(1602)를 RSP(100C)로 보낼 수 있다.Of course, any combination of RSPs 100 may perform any combination operation of different firewall and non-firewall operations, and FIG. 30 is merely illustrative. It is important to note that each additional RSP substantially gives a linear increase in performance. For example, the RSP 100A may include any parsed firewall predicates, IDS tokens, non-terminal (NTs) 312, production codes 178, SEP code 177B (FIG. 2B). And 2c) etc. 1602 to the next RSP 100B. The RSP 100B may send similar state information 1602 to the RSP 100C after completing packet processing.

이것이 각각 이어서 따라오는 RSP(100)가 이전 RSP에서 이미 완료된 동일한 파싱의 일부를 반복하는 것을 막아준다. 또, DXP(180) (도 2a)의 구조는, 단순히 NT(132)를 파서 스택(185) (도 2a)으로 로딩함으로써 각각의 RSP(100)로 하여금 이전 RSP와 같은 상태로 즉시 전환할 수 있게 한다. 예를 들어, RSP(100A)는 IP 목적지 어드레스를 포함하는 ACL 조건자를 식별할 수 있다. RSP(100A)는 그 ACL 조건자와 관련 NT(132)를 메시지(1602)를 통해 RSP(100B)로, 관련 패킷(1600)과 나란하게 전송한다. RSP(100B)는 이제 이미 식별된 IP 어드레스 정보를 사용해 RSP(100A)가 이전에 남겨둔 상태 하에서 패킷(1600)에 대한 TCP 오퍼레이션들의 수행을 시작할 수 있다. 따라서, RSP(100B)는 가령 목적지 IP 어드레스를 재발견해야 하는 등의, 패킷(1600) 재파싱을 할 필요가 없다. This prevents each subsequent RSP 100 from repeating some of the same parsing already completed in the previous RSP. In addition, the structure of the DXP 180 (FIG. 2A) allows each RSP 100 to immediately switch to the same state as the previous RSP by simply loading NT 132 into the parser stack 185 (FIG. 2A). To be. For example, RSP 100A can identify an ACL predicate that includes an IP destination address. RSP 100A sends its ACL predicate and associated NT 132 to message RSP 100B, side by side with associated packet 1600 via message 1602. The RSP 100B may now begin performing TCP operations on the packet 1600 with the RSP 100A previously left using the already identified IP address information. Thus, the RSP 100B does not need to reparse the packet 1600, such as having to rediscover the destination IP address.

이것이, 패킷 프로세서 상태들이 용이하게 전달되지 못하는 종래의 프로세서 구조들과 다른 점이다. 결국, 패킷 프로세싱 시스템에 더해진 각각의 추가적 일반 프로세서가 전반적 네트워크 프로세싱 장치 성능을 반드시 선형적으로 향상시키지는 않을 것이다. 즉, 일반적인 컴퓨터 구조를 가진 패킷 프로세싱 장치들의 수를 배가하는 것이 반드시 전반적 프로세싱 성능을 배가하는 것은 아니다. 역으로, RSP들(100)의 수를 배가하는 것은 호스트 네트워크 프로세싱 시스템의 전반적 성능을 거의 배가시킬 수 있다.This is different from conventional processor architectures where packet processor states are not easily communicated. As a result, each additional general processor added to the packet processing system will not necessarily linearly improve overall network processing device performance. In other words, doubling the number of packet processing devices with general computer architecture does not necessarily double overall processing performance. Conversely, doubling the number of RSPs 100 can nearly double the overall performance of the host network processing system.

도 31은 RSP(100)의 다른 대안적 구성을 보인 것이다. 이 구성에서, 하나 이상의 RSP들(100)이 병렬로 오퍼레이션한다. 제1RSP(100A)는 패킷으로부터 추출된 IP 어드레스 및 다른 조건자들에 기반하여, 하나라도 있다면 다른 방화벽 오퍼레이션들이 들어오는 패킷들(1598)에 대해 수행될 필요가 있는가를 판단하는 초기 UPM 오퍼레이션을 수행할 수 있다. RSP(100A)는 식별된 방화벽 정책 메트릭들에 따라 패킷들을 RSP들(100B-C)로 라우팅한다. 31 shows another alternative configuration of the RSP 100. In this configuration, one or more RSPs 100 operate in parallel. Based on the IP address and other predicates extracted from the packet, the first RSP 100A may perform an initial UPM operation to determine if other firewall operations need to be performed on the incoming packets 1598, if any. have. RSP 100A routes packets to RSPs 100B-C in accordance with 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 predicates, the packet 1598 may require DoS processing given by the RSP 100B. Accordingly, RSP 100A routes these packets to RSP 100B. If the RSP 100B determines that the destination subnet address for the packet has an associated IDS license as described in Figures 28 and 29, the packet can be routed to the RSP 100C for anti-virus processing. Otherwise, the RSP 100B may send the packets towards the endpoint of the local network 1604.

RSP(100A)에서의 UPM 라우팅이, 패킷이 IPv4 포맷으로 전환되어야 한다고 판단할 때, 그 패킷은 RSP(100D)로 라우팅 된다. 패킷(1598)은 다음으로 RSP(100E)로 보내져 다른 상위 OSI 계층 데이터에 따라 처리된다. 예를 들어, RSP(100E)는 도 17에서 개시한 것처럼 패킷 내 HTTP 정보에 따라 패킷을 라우팅할 수 있다. 다른 패킷들은, 다른 NAT 및 DoS 오퍼레이션들을 수행하기 위해 각자 RSP들(100F 및 100G)로 라우팅될 수 있다.When UPM routing in RSP 100A determines that a packet should be converted to IPv4 format, the packet is routed to RSP 100D. The packet 1598 is then sent to the RSP 100E for processing according to other higher OSI layer data. For example, the RSP 100E may route the packet according to the HTTP information in the packet as disclosed in FIG. 17. Different packets may be routed to RSPs 100F and 100G, respectively, to perform other NAT and DoS operations.

명령 라인 인터페이스 (Command line interface ( CLICLI )/) / 로깅Logging (기록)/통계(Record) / statistics

명령 라인 인터페이스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) 내 어느 다른 메모리 소자들 안에 로드하도록 할 수 있다.Referring again to FIG. 2A, a command line interface (CLI) 282 is coupled with the MCPU 56, allowing a computer 284 operator to enter CLI commands and data 286 into the RSP 100. . MCPU 56 then interprets the CLI command 286 received from computer 284 and operates accordingly. For example, CLI instructions 286 may direct MCPU 56 to load new ACL entries into TCAM 220 in memory subsystem 215. CLI instructions 286 may also direct MCPU 56 to load data into any other memory elements in memory subsystem 215.

CLI 명령들(286)은 또한 RSP(100) 안의 다른 스토리지 소자들 및 테이블들을 구성하는데 사용될 수도 있다. 예를 들어, CLI 명령들(286)이 MCPU(56)에 명하여, 새 파서 문법을 파서 테이블(170)에 로드하게 하거나, 생성 규칙들(176)을 생성 규칙 테이블(190) 안에 로드하게 하거나, 새 SEP 코드(212)를 어의 코드 테이블(210) 안에 로드하게 할 수 있다. CLI 명령들(286)은 MCPU(56)에 명하여 메모리 서브시스템(215) 내 스토리지 장치들이나 테이블들 중 어느 하나, 혹은 RSP(100) 안의 다른 프로세싱 소자들로부터 정보를 읽게 할 수 있다.CLI commands 286 may also be used to configure other storage elements and tables in RSP 100. For example, CLI commands 286 may command MCPU 56 to load a new parser grammar into parser table 170, or to generate generation rules 176 into generation rule table 190, or A new SEP code 212 can be loaded into the language code table 210. CLI instructions 286 may direct MCPU 56 to read information from any of the storage devices or tables in memory subsystem 215 or other processing elements in RSP 100.

로깅Logging (기록)(record)

SEP 코드(212)는 SPU(200)에 명하여 기록을 위해 MCPU(56)로 어떤 인지된 이벤트들을 기록하게 할 수 있다. 예를 들어, SPU(200)는 MCPU(56)로, DoS 공격의 일부라고 식별된 어떤 패킷을 전송할 수 있다. DoS 공격이 인지될 때, SEP 코드(212)는 SPU(200)에 명하여 한 전형적인 배제(dropped) 패킷을 MCPU(56)로 전송하게 한다. SEP 코드(212)는 또 SPU(200)에 명하여 비슷한 패킷이 배제될 때마다 MCP(56)에 통지하게 할 수도 있다.SEP code 212 may instruct SPU 200 to record certain acknowledged events to MCPU 56 for recording. For example, SPU 200 may send any packet identified to MCPU 56 as part of a DoS attack. When a DoS attack is recognized, SEP code 212 instructs SPU 200 to send a typical dropped packet to MCPU 56. SEP code 212 may also instruct SPU 200 to notify MCP 56 whenever similar packets are excluded.

MCPU(56)는 배제 패킷에 포함된 특정 정보, 및 유사하게 배제되는 패킷들의 개수를 식별하는 통계를 로그(log)로 포맷한다. 이 로그는 RSP(100)에서 인지된 이벤트들을 수신 및 기록하는 시스템 기록자(syslog)의 IP 어드레스를 포함하는 IP패킷들로 포맷될 수 있다. 로그를 포함하는 패킷들이 SPU(200)에 의해 출력 포트(152)를 거쳐 시스템 기록자 장치로 전송될 수 있다.MCPU 56 formats the statistics identifying the specific information contained in the exclusion packet, and the number of similarly excluded packets, into a log. This log may be formatted into IP packets containing the IP address of a system syslog that receives and records events recognized by the RSP 100. Packets containing logs may be sent by the SPU 200 via the output port 152 to the system recorder device.

어떠한 인지 이벤트들도 RSP(100)에 의해 기록될 수 있고, 상술한 방화벽 오퍼레이션들을 통해 식별된 이벤트들 가운데 하나 (한정되는 것은 아님)를 포함할 수 있다. 예를 들어, SEP 코드(212)도 SPU들(200)에 명하여 CAM(220) 안의 특정 ACL 엔트리들에 부합하는 패킷들을 MCPU(56)로 전송하게 할 수 있다.Any acknowledgment events may be recorded by the RSP 100 and may include one (but not limited to) one of the events identified through the firewall operations described above. For example, the SEP code 212 can also command the SPUs 200 to send packets to the MCPU 56 that match specific ACL entries in the CAM 220.

통계statistics

필요한 어떤 통계라도 RSP(100)에 기록될 수 있으며, 논리적으로 저장되거나 로깅 시스템으로 전송될 수 있다. 예를 들어, SPU(200)는 수신되거나, 배제되거나, 출력된 모든 패킷을 카운트하도록 프로그램될 수 있다. 서로 다른 SEP 코드(212)는 다른 관련 방화벽 오퍼레이션들과 함께 로깅 명령을 포함할 수 있다. RSP(100)는 수신되거나 전송된 패킷들과 관련된 통계 정보를 식별한다. 예를 들어, 수신된 패킷들의 개수, 수신된 패킷들의 사이즈, 전송된 패킷들의 사이즈 및 개수, 배제된 패킷들의 개수, 불량 첵섬을 갖는 패킷들의 개수, 복제 패킷들의 개수, 실패한 로그인 시도 등등. 그 통계는 CLI 명령들(286)을 통해 컴퓨터(284)로 다운로드될 수 있고, 아니면 SPU(200)에 의해 출력 포트(152)를 거쳐 주기적으로 패킷들을 통해 전송될 수 있다.Any statistics needed may be recorded in the RSP 100 and may be stored logically or transmitted to a logging system. For example, the SPU 200 may be programmed to count all packets received, excluded or output. Different SEP codes 212 may include logging instructions along with other related firewall operations. The RSP 100 identifies statistical information related to received or transmitted packets. For example, the number of received packets, the size of received packets, the size and number of transmitted packets, the number of excluded packets, the number of packets with bad checksums, the number of duplicate packets, failed login attempts, and the like. The statistics may be downloaded to the computer 284 via CLI commands 286 or may be sent via packets periodically through the output port 152 by the SPU 200.

보증guarantee

상술한 방화벽 오퍼레이션들 중 어느 것이나 증명될 수 있고, ICSA (Institute for Computer Security Association), NIST (National Institute of Standards and Technology), UNH (University of New Hampshire), PLU Fest 등등을 포함하는 상이한 업계 허용 보증 표준들을 따를 수 있다. Any of the above firewall operations can be demonstrated, and different industry acceptance warranties, including Institute for Computer Security Association (ICSA), National Institute of Standards and Technology (NIST), University of New Hampshire (UNH), PLU Fest, etc. You can follow the standards.

요약summary

액세스 제어 리스트와 연계된 RSP 구조의 신규한 사용이, 다양한 각종 방화벽, 또는 동일한 하드웨어 및 최소의 소프트웨어 재설정을 통한 다른 패킷 프로세싱 오퍼레이션들을 보다 효율적으로 수행시킨다. 여러 방화벽 오퍼레이션들은 DXP나 다른 이른 방화벽 파싱 오퍼레이션들에 의해 식별되었던 조건자들 같은 문장구조 요소들을 사용할 수 있다. 따라서, RSP는 더 규모가변적인 방화벽 구조를 제공한다.The novel use of the RSP structure in conjunction with access control lists allows for more efficient execution of various various firewalls or other packet processing operations through the same hardware and minimal software reset. Several firewall operations may use syntax constructs such as predicates identified by DXP or other early firewall parsing operations. Thus, RSP provides a more scalable firewall architecture.

상술한 바와 같이, 상술한 오퍼레이션들 중 어느 하나는 임의의 네트워크 프로세싱 장치상에서 구현될 수 있으며 에지 장치들이나 통상적으로 방화벽이라 칭하는 것들에서 동작하는데 국한되지 않는다. 예를 들어, DoS, UPM 및 기타 오퍼레이션들은 게이트웨이들, 라우터들, 서버들, 스위치들, 및 어떤 다른 엔트포인트 장치에서 수행될 수 있다. 또, 상술한 여러 오퍼레이션들이 반드시 RSP(100)를 사용해 구현되어야 할 필요는 없을 것이며, 그에 대한 대안으로서 일반 컴퓨터 구조들을 통해 구현될 수도 있다.As mentioned above, any of the operations described above may be implemented on any network processing device and is not limited to operating on edge devices or commonly referred to as firewalls. For example, DoS, UPM, and other operations may be performed at gateways, routers, servers, switches, and any other endpoint device. In addition, the various operations described above do not necessarily need to be implemented using the RSP 100, and may alternatively be implemented through general computer structures.

침입 검출Intrusion detection

아래의 설명에서 "virus(바이러스)"라는 용어는, 침입, 무권한 데이터, 스팸, 스파이웨어, 서비스 거부(DOS) 공격, 또는 네트워크 프로세싱 장치에 의해 침입으로 간주 되는 어떤 다른 유형의 데이터, 신호, 또는 메시지 전송 가운데 하나를 말한다. "바이러스"라는 용어는 이와 달리 "말웨어(malware)"로도 불리며 어떤 특정한 타입의 무권한 데이터나 메시지에 국한되지 않는다.In the description below, the term “virus” refers to an intrusion, unauthorized data, spam, spyware, denial of service (DOS) attack, or any other type of data, signal, or Or sending a message. The term "virus" is also called "malware" and is not limited to any particular type of unauthorized data or message.

도 32a는 에지 장치(2025A)를 통해 공중 인터넷 프로토콜 (IP) 네트워크(2012)로 접속하는 사설 IP 네트워크(2024)를 보인다. 공중 IP 네트워크(2012)는 패킷 스위칭을 지원하는 광역 네트워크 (WAN)일 수 있다. 사설 네트워크(2024)는 회사 사업장 네트워크, 인터넷 서비스 제공자 (ISP) 네트워크, 홈 네트워크 등등으로 공중 네트워크(2012)로부터 들어오는 바이러스나 기타 말웨어 공격들 같은 공격으로부터 보호할 필요가 있는 것들일 수 있다. 32A shows a private IP network 2024 that connects to a public Internet Protocol (IP) network 2012 via an edge device 2025A. The public IP network 2012 may be a wide area network (WAN) that supports packet switching. The private network 2024 may be those that need to be protected from attacks such as viruses or other malware attacks from the public network 2012 such as company enterprise networks, Internet service provider (ISP) networks, home networks, and the like.

사설 네트워크(2024) 내 네트워크 프로세싱 장치들(2025A-2025D)은 패킷 교환형 네트워크를 통해 통신하는 임의의 타입의 컴퓨팅 장치일 수 있다. 예를 들어, 네트워크 프로세싱 장치들(2025A 및 2025B)은 라우터들, 스위치들, 게이트웨이들 등일 수 있다. 이 예에서, 네트워크 프로세싱 장치(2025A)는 방화벽으로서 오퍼레이션하고 장치(2025B)는 라우터나 스위치로서 오퍼레이션한다. 엔드포인트(2025C)는 퍼스널 컴퓨터(PC)이고 엔드포인트(2025D)는 인터넷 웹 서버 같은 서버이다. PC(2025C)는 가령 IEEE 802.11 프로토콜을 이용하는 무선 접속이나 유선 이더넷 접속 같은 유선접속을 통해 사설 네트워크(2024)로 연결될 수 있다. The network processing devices 2025A-2025D in the private network 2024 may be any type of computing device that communicates over a packet switched network. For example, network processing devices 2025A and 2025B can be routers, switches, gateways, and the like. In this example, network processing device 2025A operates as a firewall and device 2025B operates as a router or switch. 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 wireless connection or a wired Ethernet 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 may be implemented as any combination of network devices 2025A-2025D operating in private network 2024. Each IDS 2018 collects and analyzes network traffic 2022 passing through the host network processing device 2025 and identifies which packets 2016 in the packet stream 2022 containing the virus. In one embodiment, IDS 2018 is implemented using a Reconfigurable Processor (RSP), which will be described in more detail below. However, it should be appreciated that IDS 2018 is not limited to configurations that use RSP, and other processing devices may also be used.

일례에서, IDS(2018)은 사설 네트워크(2024)를 외부의 공중 네트워크(2012)에 연결하는 에지 라우터(2025A) 안에 설치된다. 일 실시예에서, IDS(2018)는 도한 통상적으로 IDS 오퍼레이션들을 수행하지 않는 네트워크 프로세싱 장치들에 구현될 수도 있다. 예를 들어, IDS(2018)은 라우터나 스위치(2025B) 안에 구현될 수도 있다. 또 다른 실시예에서, IDS(2018)는 PC(2025C)나 웹 서버(2025D) 같은 하나 이상의 엔드포인트 장치 안에 구현될 수도 있다. 여러 상이한 네트워크 프로세싱 장치들 (2025A-2025D) 안에 침입 검출 시스템(2018)을 구현하는 것이, 보다 철저한 침입 검출을 지원하며, 에지 라우터(2025A)를 통하지 않고 여러 다른 액세스 포인트들을 통해 사설 네트워크(2024)로 들어오는 바이러스(2026)를 제거할 수 있다. 예를 들어, 피고용자의 퍼스널 컴퓨터(2025C)를 통해 사설/내부 네트워크(2024)를 액세스하는 바이러스가 PC(2025C), 라우터(2025B), 또는 서버(2025D)에서 운영되는 IDS(2018)에 의해 검출되어 제거될 수 있다.In one example, IDS 2018 is installed within edge router 2025A connecting private network 2024 to an external public network 2012. In one embodiment, IDS 2018 may also be implemented in network processing devices that typically do not perform IDS operations. For example, IDS 2018 may be implemented within a router or switch 2025B. In another embodiment, IDS 2018 may be implemented in one or more endpoint devices, such as PC 2025C or web server 2025D. Implementing an intrusion detection system 2018 within several different network processing devices 2025A-2025D supports more invasive detection and enables private network 2024 through different access points without going through edge router 2025A. Virus 2026 coming in can be removed. For example, a virus that accesses private / internal network 2024 through employee's personal computer 2025C is detected by IDS 2018 running on PC 2025C, router 2025B, or server 2025D. Can be removed.

다른 실시예에서, 네트워크 프로세싱 장치들(2025) 내의 IDS들(2018)은 사설 네트워크(2024) 안에서 발생한 바이러스(2016A)를 찾아 제거하는데 사용된다. 예를 들어, PC(2025C)의 운영자가 공중 IP 네트워크(2012)에서 동작하는 한 네트워크 장치로 보내지는 바이러스(2016A)를 생성할 수 있다. 내부 네트워크(2024)에서 동작하는 IDS들(2018)의 어떤 조합이든 바이러스(2016A)가 공중 IP 네트워크(2012)로 빠져나가기 전에 식별 및 제거하는데 사용될 수 있다.In another embodiment, IDSs 2018 in network processing devices 2025 are used to find and remove virus 2016A that occurred within private network 2024. For example, an operator of PC 2025C may generate a virus 2016A that is sent to a network device as long as it operates on public IP network 2012. Any combination of IDSs 2018 operating on internal network 2024 may be used to identify and remove virus 2016A before it exits public IP network 2012.

어의 프로세서는 안티 바이러스 오퍼레이션들이 네트워크(2024) 전체에 걸쳐 내장 및 분산될 수 있게 한다. 예를 들어, 어의 프로세서는 네트워크 라우터나 스위치(2025B)의 여러 포트들에서 침입 검출 오퍼레이션들을 수행할 수 있다. 내장된 침입 검출 시스템 (IDS)(2018)은 보다 강력하므로 현재의 주변 안티바이러스 검출 방식들보다 훨씬 효과적인 침입 검출을 지원한다. 침입 검출 방식은 오프라인에서 이메일 첨부 같이 어떤 의심되는 데이터 유형들을 처리할 필요 없이 네트워크 전송 속도의 데이터 플로로 수행된다.Some processors allow antivirus operations to be embedded and distributed throughout the network 2024. For example, a processor may perform intrusion detection operations at various ports of a network router or switch 2025B. The built-in intrusion detection system (IDS) (2018) is more powerful, supporting intrusion detection much more effective than current peripheral antivirus detection methods. Intrusion detection is done with a network-flowing data flow without having to deal with any suspicious data types such as e-mail attachments offline.

문장구조 요소들 (Syntactic Elements)을 이용한 침입 검출Intrusion Detection using Syntactic Elements

도 32B는 통상적인 침입 검출 시스템 필터를 생성하는 방식을 보인다. 입력 데이터 스트림(2071)이 여러 패킷들(2072)을 포함하고 있다. 패킷들(2072)은 하나 이상의 헤더들(2072A)과 페이로드(2072B)를 포함한다. 통상의 침입 검출 시스템은 데이터 스트림(2071) 내 각 패킷(2072)의 각 바이트(2074)를 무차별적으로 위험인자 기호들 (threat signatures)(2058)과 비교한다. 위험인자 기호 비교에 따라 생성된 임의의 필터들(2075)이 이제 전체 데이터 스트림(2071)으로 적용된다.32B shows a way to create a typical intrusion detection system filter. Input data stream 2071 contains several packets 2072. Packets 2082 include one or more headers 2072A and payload 2072B. A typical intrusion detection system compares each byte 2074 of each packet 2072 in the data stream 2071 to the risk signatures 2058 indiscriminately. Any filters 2075 created according to the risk factor symbol comparison are now applied to the entire data stream 2071.

이러한 침입 검출 방식은 불필요하게 컴퓨팅 자원들을 낭비한다. 예를 들어, 소정 헤더 데이터(2072A)같이 데이터 스트림(2071) 내 일부 정보는 절대로 위험인자를 포함할 수 없다. 그럼에도 불구하고, 도 32B의 침입 검출 시스템은 맹목적으로 데이터 스트림(2071)의 모든 바이트를 위험인자 기호(2058)와 비교한다. 이것이 위험 검출을 수행하는 컴퓨팅 자원들에 불필요하게 부담을 지운다.This intrusion detection method unnecessarily wastes computing resources. For example, some information in data stream 2071, such as certain header data 2072A, may never contain a risk factor. Nevertheless, the intrusion detection system of FIG. 32B blindly compares every byte of data stream 2071 with hazard symbol 2058. This unnecessarily burdens computing resources that perform risk detection.

도 32B의 침입 검출 방식 역시 바이러스들에 대해 검색되고 있는 패킷들의 콘텍스트 사이를 구별하지 않는다. 예를 들어, 패킷(2072)이 실제로 이메일 메시지를 포함하는지 않는지 여부와 무관하게, 이메일 바이러스와 연관된 위험인자 기호(2058)가 모든 패킷(2072)에 적용된다. 따라서, 이메일 바이러스와 연관된 위험인지 신호들(2058)이 HTTP 메시지들을 포함하는 패킷들(2072)과 비교될 수 있다. 이것은 침입 검출 시스템의 규모가변성을 더 제한한다.The intrusion detection scheme of FIG. 32B also does not distinguish between the context of packets being searched for viruses. For example, a risk factor symbol 2058 associated with an email virus is applied to all packets 2072 regardless of whether or not the packet 2082 actually contains an email message. Thus, danger signals 2058 associated with an email virus can be compared to packets 2072 containing HTTP messages. This further limits the scalability of the intrusion detection system.

도 32C는 보다 효율적으로 바이러스들을 검출하기 위해 데이터 스트림 안의 문장구조 요소들을 식별하는 IDS(2018)의 한 실시예를 보인 도면이다. IDS(2018)은 패킷(2072)과 관련된 세션 콘텍스트(2082)를 식별하기 위해 파서를 이용한다. 예를 들어, 미디어 액세스 제어 (MAC) 어드레스(2076A), 인터넷 프로토콜 (IP) 어드레스(2076B), 및 전송 제어 프로토콜(TCP) 어드레스(2076C) 중 하나 이상이 초기 파싱 오퍼레이션 중에 식별될 수 있다. 이 예에서, 파서는 또한 패킷(2072)을 단순 메일 전송 프로토콜 (SMTP) 이메일 메시지를 포함한다고 식별할 수도 있다. 세션 콘텍스트(2082)의 이들 식별자들(2076A-2076D)은 문장구조 요소들이라고도 달리 칭한다. 32C illustrates an embodiment of IDS 2018 that identifies sentence structure elements in a data stream to detect viruses more efficiently. IDS 2018 uses a parser to identify session context 2082 associated with packet 2082. For example, one or more of a media access control (MAC) address 2076A, an internet protocol (IP) address 2076B, and a transmission control protocol (TCP) address 2076C may be identified during the initial parsing operation. In this example, the parser may also identify packet 2082 as containing a Simple Mail Transfer Protocol (SMTP) email message. These identifiers 2076A-2076D in session context 2082 are also referred to as sentence structure elements.

문장구조 요소들(2076)을 식별하는 것은 IDS(2018)로 하여금 바이러스들이나 기타 말웨어 위험인자들을 보다 효과적으로 검출 및 제거할 수 있도록 한다. 예를 들어, IDS(2018)은 패킷(2072) 시작시 발견된 세션 콘텍스트(2082)에 기반하여 이후 침입 검출 오퍼레이션들을 맞춤화할 수 있다. 예를 들면, 세션 콘텍스트(2082)는 패킷(2072)을 이메일 메시지를 포함하는 것으로 식별한다. IDS(2018)은 이때 이메일 메시지들과 특별히 관련된 부가적 문장구조 요소들(2076E-2076H)을 찾아 식별할 수 있다. 더 상세히 말해, 바이러스를 포함할 수 있는 이메일 문장구조 요소들을 식별한다.Identifying sentence structure elements 2076 allows IDS 2018 to more effectively detect and eliminate viruses or other malware risk factors. For example, IDS 2018 may customize subsequent intrusion detection operations based on session context 2082 found at the beginning of packet 2082. For example, session context 2082 identifies packet 2082 as containing an email message. IDS 2018 may then find and identify additional sentence structure elements 2076E-2076H specifically related to the email messages. More specifically, it identifies the email sentence structure elements that may include a virus.

예를 들어, IDS(2018)는 이메일 메시지에 "To:", "From:", 그리고 "제목:" 필드들과 관련된 정보를 포함하는 문장구조 요소들(2076E-2076G)을 식별한다. IDS(2018)는 또 이메일 메시지에 역시 포함되는 이메일 참부(2076H)를 식별할 수도 있다. 이 예에서, 바이러스나 말웨어는 이메일 첨부를 포함하는 문장구조 요소(2076H)에만 포함될 수 있을 것이다. 다른 문장구조들(2076A-2076G)은 침입 위험인자들을 취할 수 없을 것이다. 따라서, 이메일 첨부를 포함하는 문장구조 요소(2076H)만이 위험인자 기호(2058)와 비교된다.For example, IDS 2018 identifies sentence structure elements 2076E-2076G that include information related to "To:", "From:", and "Title:" fields in an email message. IDS 2018 may also identify email referral 2076H, which is also included in the email message. In this example, the virus or malware may only be included in sentence structure element 2076H containing an email attachment. Other sentence structures 2076A-2076G may not take intrusion risk factors. Thus, only sentence structure element 2076H containing an email attachment is compared to the risk factor symbol 2058.

다른 문장구조 요소들(2076E-2076G) 안의 정보는 이제 패킷(2072) 필터링에 사용되는 필터들(2070)을 생성하는 것을 돕는데 사용될 수 있다. 예를 들어, 문장구조 요소(2076F)에서 식별된 동일한 "From:" 필드나 문장구조 요소(2076B)에서 식별된 동일한 IP 소스 어드레스를 필터링하는 필터(2070)가 생성될 수 있다. The information in other sentence structure elements 2076E-2076G can now be used to help create the filters 2070 used to filter the packet 2072. For example, a filter 2070 may be generated that filters the same "From:" field identified in sentence structure element 2076F or the same IP source address identified in sentence structure element 2076B.

따라서, IDS(2018)는 데이터 스트림의 IP 세션 콘텍스트(2082), 트래픽 특징 및 신택스(2076)에 기반해 침입 시도들을 검출할 수 있다. 침입은 네트워크 트래픽 상에서 성가시다고 여겨지는 이벤트들을 기술한 위험인자 기호 규칙들(2058)에 대하여 식별된 문장구조 요소들(2076)을 비교함으로써 검출된다. 그 규칙들(2058)은 어떤 활동들 (가령, 소정 호스트들이 소정 서비스들에 연결함), 어떤 활동들이 경고할만한가 (가령, 소정 개수의 상이한 호스트들로의 시도가 "정밀검사"를 요함), 혹은 알려진 공격들을 나타내는 신호들이나 알려진 약점들에 대한 액세스를 기술할 수 있다.Thus, IDS 2018 may detect intrusion attempts based on IP session context 2082, traffic characteristics and syntax 2076 of the data stream. An intrusion is detected by comparing the identified sentence structure elements 2076 against risk factor preference rules 2058 that describe events that are considered annoying on network traffic. The rules 2058 may include what activities (eg, certain hosts connect to certain services), which activities are alertable (eg, attempts to a certain number of different hosts require a "overhaul"), Or access to known weaknesses or signals indicative of known attacks.

고정 패킷 지연Fixed packet delay

도 33은 IDS(2018)과 연계해 사용되는 지연 버퍼를 보인다. 침입 모니터 오퍼레이션(2040)이 재구성 어의 프로세서(RSP)(2100) 안에서 논리적으로 수행되거나, RSP(200) 안이나 RSP(2100)로부터 바깥에서 작동하는 다른 침입 모니터링 회로와 연계하여 수행될 수 있다. 33 shows a delay buffer used in conjunction with IDS 2018. The intrusion monitor operation 2040 may be performed logically within the processor (RSP) 2100 of the reconfiguration word, or in conjunction with other intrusion monitoring circuitry operating in or out of the RSP 200.

도 33 및 34를 참조하면, 블록 2048A에서 RSP(2100)가 입력 포트(2120)으로부터 패킷들(2022)을 수신한다. RSP(2100)는 블록(2048B)에서 바이러스나 기타 유형의 위험인자를 포함하는 패킷들(2032A)의 제1카테고리를 버리는 위험인자 예비 필터링 오퍼레이션을 수행할 수 있다. 초기 필터링(2048B)은 가령 잘 알려진 소정 위험인자 기호의 테이블을 액세스함으로써 수행될 수 있다. 이 초기 필터링은 IDS(2018)에 의해 더 처리되어야 하는 소정 데이터(2032A)를 제한한다. 예를 들어, 서비스 거부 공격, 알려진 바이러스 공격, 또는 무권한 IP 세션이 검출될 수 있고, 그 관련 패킷들이 IDS(2018)에 의해 더 처리될 필요없이 배제된다.33 and 34, in block 2048A the RSP 2100 receives packets 2022 from an input port 2120. The RSP 2100 may perform a risk factor preliminary filtering operation that discards the first category of packets 2032A containing a virus or other type of risk factor at block 2048B. Initial filtering 2048B may be performed, for example, by accessing a table of well-known predetermined risk factor symbols. This initial filtering limits certain data 2032A to be further processed by IDS 2018. For example, a denial of service attack, a known virus attack, or an unauthorized IP session may be detected, and their associated packets excluded without further processing by IDS 2018.

2048C 블록에서, RSP(2100)는 나머지 패킷들(2022)을 패킷 지연 버퍼(2030) 안에 저장한다. 일례에서, 패킷 지연 버퍼(2030)는 DRAM (Dynamic Random Access Memory)이거나 들어오는 데이터 스트림(2022)을 일시적으로 버퍼링하는 크기로 된 어떤 다른 메모리 종류이다. 블록 2048D에서, RSP(2100)는 입력 데이터 스트림의 신택스를 더 식별한다. 예를 들어, RSP(2100)는 전자 메일 (이메일) 메시지들을 포함하는 패킷들을 식별할 수 있다.In a 2048C block, the RSP 2100 stores the remaining packets 2022 in a packet delay buffer 2030. In one example, the packet delay buffer 2030 is Dynamic Random Access Memory (DRAM) or some other type of memory sized to temporarily buffer the incoming data stream 2022. In block 2048D, the RSP 2100 further identifies the syntax of the input data stream. For example, the RSP 2100 can identify packets that contain electronic mail (email) messages.

윈도즈 기반 PC들에 대한 대다수의 막대한 침입 공격들은 메시지들 안의 파일이나 스크립트들로서 도달하는 이메일 메시지들로부터 온다. 이 공격시 데이터 포캣은 간단한 이진 기계어 코드이거나 ASCII 텍스트이다. 메시지들은 활성화되기 전에 배달 메커니즘의 신택스 및 어의구조를 만족시켜야 한다. 예를 들어, 이메일 메시지들 내 실행 파일들은 RFC (Request For Comment)(2822)에 명시된 것 같은 MIME (Multipurpose Internet Mail Extensions) 파일을 사용하는 SMTP/POP (Simple Mail Transfer Protocol/Point of Presence) 프로토콜을 써서 전송된다. 그래서, RSP(2100)는 블록 2048D에서 SMTP 및/또는 MIME 프로토콜들에 부합하는 패킷들을 식별할 수 있다.The vast majority of intrusion attacks on Windows-based PCs come from email messages arriving as files or scripts in the messages. In this attack, the data format is either simple binary machine code or ASCII text. Messages must satisfy the syntax and semantics of the delivery mechanism before they are activated. For example, executables in email messages may use the Simple Mail Transfer Protocol / Point of Presence (SMTP / POP) protocol, which uses Multipurpose Internet Mail Extensions (MIME) files as specified in Request For Comment (RFC) (2822). It is sent by writing. Thus, the RSP 2100 may identify packets conforming to the SMTP and / or MIME protocols at block 2048D.

블록 2048E에서 RSP(2100)는 데이터 스트림(2022)에 대해 식별된 신택스에 해당하는 토큰들(2068)을 생성한다. 예를 들어, 이 토큰들(68)은 이메일 메시지의 발신자 ("From:___), 이메일 메시지의 수신자 ("To:___), 이메일 메시지의 제목 ("Subject:___), 이메일 메시지 발송 시간 ("Sent:___), 이메일 메시지에 포함된 첨부문서 등등과 같이, 식별된 이메일 메시지의 특정한 서브 요소들을 포함할 수 있다. RSP(2100)가 이러한 세션 정보를 검사하기 때문에, 라우터들 및 스위치들과 같은 네트워크 프로세싱 장치들에서의 위험인자 필터링은 단지 하나의 패킷에서 발견된 요소들에만 국한되지 않는다, 즉-TCP 세션 유기 시도하기, 혹은 FTP 스트림 진로전환, 또는 HTTPS 보증서 위조에 대해 필터링함.In block 2048E, the RSP 2100 generates tokens 2068 corresponding to the syntax identified for the data stream 2022. For example, these tokens 68 may include the sender of an email message ("From: ___), the recipient of the email message (" To: ___), the subject of the email message ("Subject: ___), and the time the email message was sent (" Sent: ___), attachments included in the email message, and the like, may include certain sub-elements of the identified email message. Since the RSP 2100 examines this session information, risk factor filtering in network processing devices such as routers and switches is not limited to just the elements found in one packet, ie a TCP session abandon attempt. Filtering on the following, or FTP stream conversion, or HTTPS certificate forgery.

토큰들(2068)은 블록(2048F)에서 패킷 지연 버퍼(2030) 안에 포함된 데이터의 신택스에 대해 맞춤화된 제2의 보다 심층적 필터 집합(2070)을 동적으로 생성하는데 사용된다. 예를 들어, 토큰들(2068)은 이메일 메시지들에 포함된 바이러스들과 관련된 필터들(2070)을 생성하는데 사용될 수 있다. 이것은 IDS(2018)의 규모가변성에 있어 중요한 것이다. 데이터의 신택스와 관련된 필터들을 생성함으로써, IDS는 보다 효율적으로 위험인자들을 정밀 검사할 수 있다. 예를 들어, IDS(2018)는 현재 처리되고 있는 데이터 종류에 대해 적용되지 못하는 필터드을 적용하느라 시간을 낭비할 필요가 없다. Tokens 2068 are used to dynamically generate a second, deeper set of filters 2070 customized for the syntax of the data contained in the packet delay buffer 2030 at block 2048F. For example, tokens 2068 may be used to create filters 2070 associated with viruses included in email messages. This is important for the scale variability of IDS (2018). By creating filters related to the syntax of the data, IDS can more efficiently examine risk factors. For example, IDS 2018 does not have to waste time applying filters that are not applicable to the type of data 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 in the 2048G block. Any packets 2032B containing the risk factor identified by the filters 2070 are discarded. After the data has been stored in the packet delay buffer 2030 for a certain fixed period of time, the RSP 2100 outputs data to the output port 2152 at block 2048H.

패킷 지연 버퍼(2030)에 의해 주어진 고정된 지연은, 위험인자를 평가하고, 새 위험인자가 초래되는 단계에 있는지를 결정하고, 신택스 관련 필터들(2070)의 집합을 형성하고, 데이터(2034)가 출력 포트(2152)로부터 나가기 전에 필터들을 적 용하기 위해 모니터 오퍼레이션(2040)을 위한 시간을 제공한다. 일반적으로 초당 1 Gigabit (Gbps) 이더넷 LAN 시스템들에 있어서의 지연 버퍼(2030)에서의 지연은 약 20 내지 50밀리초 (ms)의 어딘가에 있을 것이다. 물론 다른 고정 지연 시간들 역시 사용될 수 있다.The fixed delay given by the packet delay buffer 2030 determines the risk factor, determines if a new risk factor is in the process of forming, forms a set of syntax related filters 2070, and stores the data 2034. Provides time for monitor operation 2040 to apply the filters before exiting output port 2152. In general, the delay in delay buffer 2030 in 1 Gigabit (Gbps) Ethernet LAN systems per second will be somewhere between about 20 and 50 milliseconds (ms). Of course, other fixed delay times may also be used.

RSP(2100)는 데이터 스트림(2022)을 처리하기 위한 신규한 파싱 기술을 이용한다. 이것이 RSP(2100)로 하여금, 같은 네트워크 프로세싱 장치에서 수행될 수 있는 다른 들어오는 네트워크 라우팅 오퍼레이션들로부터 오프라인으로 침입 모니터링 오퍼레이션들(2040)을 수행해야 할 필요가 없이, 네트워크의 라인 전송 레이트로 IDS(2018)를 구현할 수 있게 한다. 이것은 RSP(2100)가, 들어오는 패킷들(2022)을 고정 패킷 지연으로 처리할 수 있게 하여, 침입자가 침입 검출 시스템들을 작동시키는 네트워크 프로세싱 장치들(2025) (도 32a)을 분간하여 피하는 것을 어렵게 만든다.RSP 2100 utilizes a novel parsing technique for processing data stream 2022. This eliminates the need for the RSP 2100 to perform intrusion monitoring operations 2040 offline from other incoming network routing operations that may be performed at the same network processing apparatus, at the IDS 2018 of the network's line transfer rate. ) Can be implemented. This allows the RSP 2100 to handle incoming packets 2022 with a fixed packet delay, making it difficult for an attacker to discern the network processing devices 2025 (FIG. 32A) that operate intrusion detection systems. .

예를 들어, 한 침입자는 바이러스(2016)를 가진 사설 네트워크(2024) (도 32a)를 감염시키려고 하는 동안 네트워크 지연을 모니터할 수 있다. 반복되는 바이러스 공격들에 응하여 특정한 한 네트워크 경로를 통해 보다 긴 응답이 식별되면, 침입자는 그 경로가 침입 검출 시스템을 포함한다고 판단할 것이다. 다른 네트워크 경로는 그렇게 시도되는 공격에 응답하는데 긴 시간이 걸리지 않는다면, 침입자는 그 경로는 침입 검출 시스템을 포함하지 않으며 그 식별된 네트워크 경로의 포트들이나 장치들을 통해 바이러스들을 전송할 수 있다는 결론을 내릴 것이다.For example, an intruder may monitor network delay while trying to infect private network 2024 (FIG. 32A) with virus 2016. If a longer response is identified through a particular network path in response to repeated virus attacks, the intruder will determine that the path includes an intrusion detection system. If another network path does not take a long time to respond to the attempted attack, the intruder will conclude that the path does not include an intrusion detection system and can transmit viruses through ports or devices in the identified network path.

데이터(2022)의 타입이나 데이터 스트림(2022)에 대해 생성되어 적용되는 필 터들(2070)의 타입에 관계없이, 입력 포트(2120)와 출력 포트(2152) 사이에 일정한 패킷 지연을 일으킴으로써, IDjS(2018)는 침입자들이 IDS(2018)을 운영하는 네트워크 프로세싱 장치들(2025)을 식별하지 못하게 막는다. 물론, 이것은 단지 한 예일 뿐으로, 일정한 패킷 지연을 이용하는 다른 IDS 구성들(2018) 역시 구축될 수 있다. Regardless of the type of data 2022 or the type of filters 2070 created and applied to the data stream 2022, IDjS is caused by causing a constant packet delay between the input port 2120 and the output port 2152. (2018) prevents intruders from identifying network processing devices 2025 running IDS 2018. Of course, this is just one example, and other IDS configurations 2018 may also be built that use constant packet delay.

다른 실시예에서, RSP(2100)는 고정 지연만을 소정 타입의 식별된 데이터에 적용하며, 다른 데이터는 그 고정 지연이 적용되지 않고 처리된다. 데이터 스트림들의 신택스를 식별함으로써, IDS(2018)는 바이러스들에 대해 정밀검색할 필요가 있는 데이터 스트림들과 스캔될 필요가 없는 데이터 스트림들을 식별할 수 있다. IDS(2018)는 이제 지능적으로 고정 지연을 정밀검색해야 하는 데이터 스트림들에 대해 적용한다. 예를 들어, RSP(2100)는 고정 지연을 TCP SYN 메시지를 포함한다고 식별되는 패킷들에 대해 적용할 수 있다. 그 SYN 패킷들에서 어떠한 변칙성도 검출되지 않으면, RSP(2100)는 위의 도 34에서 기술한 고정 지연을 적용하지 않고 뒤이어 수신되는 TCP 데이터 패킷들을 수신하여 처리할 것이다. 따라서, 비-설정 TCP 세션은 지연될 수 있어도 다른 트래픽은 지연되지 않는다. In another embodiment, RSP 2100 applies only a fixed delay to certain types of identified data, and other data is processed without that fixed delay being applied. By identifying the syntax of the data streams, IDS 2018 can identify data streams that need to be scanned for viruses and data streams that do not need to be scanned. IDS (2018) now applies to data streams that need to intelligently search for fixed delays. For example, RSP 2100 may apply a fixed delay to packets identified as containing a TCP SYN message. If no anomaly is detected in those SYN packets, then the RSP 2100 will receive and process the subsequent received TCP data packets without applying the fixed delay described in FIG. 34 above. Thus, non-established TCP sessions may be delayed but no other traffic is delayed.

도 35는 도 34에 도시된 IDS(2018)에 의해 수행되는 오퍼레이션들의 상세도이다. 데이터 스트림(2022)으로부터의 패킷들이 패킷 입력 버퍼 (PIB)(2140)에 의해 입력 포트(2120)를 거쳐 수신된다. 패킷들(2022)로부터의 바이트들은 직접 실행 파서 (DXP)(2180) 및 어의 프로세싱 유닛 (SPU)(2200)에 의해 처리된다. 이 예에서, 하나 이상의 SPU들(2200)이 동시다발적으로 ACL (Access Control List) 체크 오퍼레이션(2050), 세션 룩업 오퍼레이션(2052), 및 토큰 새성 오퍼레이션(2054)을 실행할 수 있다.35 is a detailed view of the operations performed by IDS 2018 shown in FIG. 34. Packets from data stream 2022 are received via input port 2120 by packet input buffer (PIB) 2140. The bytes from the packets 2022 are processed by the direct execution parser (DXP) 2180 and the language processing unit (SPU) 2200. In this example, one or more SPUs 2200 can concurrently execute an access control list (ACL) check operation 2050, a session lookup operation 2052, and a token newness operation 2054.

ACL 체크 오퍼레이션(2050)은 사전에 알려진 필터들의 초기 ACL 리스트(2064)에 대해 들어오는 데이터 스트림(2022) 내 패킷들을 체크한다. ACL 체크 오퍼레이션(2050)은 ACL 필터들(2064)과 매치하는 패킷들을 제거하고 그런 다음 나머지 패킷들(2022)을 지연 FIFO(2030) 안에 로드한다. The ACL check operation 2050 checks packets in the incoming data stream 2022 against an initial ACL list 2064 of previously known filters. The ACL check operation 2050 removes packets that match the ACL filters 2064 and then loads the remaining packets 2022 into the delay FIFO 2030.

세션 룩업 오퍼레이션(2052)은 기존의 유효한 IP 세션들에 대해 패킷들(2022)을 체크한다. 예를 들어, DXP(2180)가 TCP 세션, 포트 넘버, 그리고 TCP SYN 메시지에 대한 도달 레이트를 식별하는 세션 룩업(2052)으로 정보를 전송할 수 있다. 세션 룩업(2052)은 TPC 세션과 포트 넘버가 이전에 보였는지 얼마나 오래전에 보였는지를 판단한다. 패킷들(2022)이 유효한 TCP/IP 세션이라는 것을 만족하면, 패킷들(2022)은 곧바로 패킷 출력 버퍼(POB)(2150)로 보내질 수 있다.Session lookup operation 2052 checks packets 2022 for existing valid IP sessions. For example, the DXP 2180 may send information to the session lookup 2052 that identifies the TCP session, port number, and arrival rate for the TCP SYN message. Session lookup 2052 determines whether the TPC session and port number were previously seen or how long ago. If the packets 2022 are satisfied that they are valid TCP / IP sessions, the packets 2022 may be sent directly to the packet output buffer (POB) 2150.

토큰 생성 오퍼레이션(2054)은 DXP(2180)에 의해 식별된 데이터 스트림(2022)의 신택스에 따라 토큰들(2068)을 생성한다. 한 예에서, 토큰 생성기(2054)는, 입력 버퍼(2140)에서 처리된 패킷들과 관련된 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트 넘버, 목적지 포트 넘버 및 프로토콜 넘버를 포함하는 5 들이 한 벌 데이터 집합을 포함하는 토큰들(2068)을 생성한다. 토큰들(2068)은 또 미지의 IP나 TCP 옵션들 같은 TCP 패킷 내 어떤 변형체들을 포함할 수도 있다. The token generation operation 2054 generates tokens 2068 according to the syntax of the data stream 2022 identified by the DXP 2180. In one example, token generator 2054 includes a set of 5 data sets including a source IP address, a destination IP address, a source port number, a destination port number and a protocol number associated with packets processed in input buffer 2140. Generate tokens 2068 comprising a. Tokens 2068 may also include any variants in TCP packets, such as unknown IP or TCP options.

아래에 설명할 예에서, 토큰들(2068)의 일부가 이메일 메시지들과 결부된 문 장구조 요소들을 역시 포함한다. 예를 들어, DXP(2180)가 도 32c에서 개시한 것 같은 SMTP 세션과 관련된 패킷들을 식별할 수 있다. 이제 토큰 생성 오퍼레이션(2054)은 이메일 세션으로부터 SMTS/MIME 첨부같은 특정 정보를 추출한다. 이메일 메시지와 연관된 토큰(2068)의 한 예는 아래와 같은 타입, 길이, 값 (TLV) 포맷을 이용해 생성된다:In the example described below, some of the tokens 2068 also include textural elements associated with email messages. For example, the DXP 2180 may identify packets associated with an SMTP session as disclosed in FIG. 32C. The token generation operation 2054 now 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, and value (TLV) format:

Token #1Token # 1

Type: SMTP/MIME 첨부 (이메일 메시지들 안의 파일들을 전송하는 방법)Type: SMTP / MIME attachment (how to send files in email messages)

Length: 파일 내 바이트 개수 #Length: # of bytes in file

Value: 실제 파일Value: the actual file

다른 예에서, DXP(2180)는 HTML (Hyper-Text Markup Language) 세션과 결부된 입력 버퍼(2140) 내 패킷들(2022)을 식별한다. 토큰 생성 오퍼레이션(2054)은 그에 따라 HTMP 세션과 특별히 관련되어 그것을 식별하는 토콘들을 아래와 같이 생성한다:In another example, DXP 2180 identifies packets 2022 in input buffer 2140 associated with a Hyper-Text Markup Language (HTML) session. The token generation operation 2054 accordingly generates the tocons that specifically identify and associate with the HTMP session as follows:

Token #2Token # 2

Type: HTML Bin Serve (웹 피이지들 내 파일들을 전송하는 방법)Type: HTML Bin Serve (How to transfer files in web pages)

Length: 파일 내 바이트 개수 #Length: # of bytes in file

Value: 실제 파일Value: the actual file

상술한 것과 같이 토큰 생성 오퍼레이션(2054)에 의해 토큰들(2068)이 포맷 되어, 토큰들(2068)에 포함된 문장구조 정보가 위험인자/바이러스 분석 및 ACL 카운터-측정 에이전트(2056)에 의해 위험인자 기호들(2058)과 용이하게 비교될 수 있도록 한다. 카운터-측정 에이전트(2056)는 한 예에서 메모리에 저장된 소정의 위험인자 기호들(2058)과 토큰들(2068)을 비교하는 범용 CPU (중앙 처리 장치)이다. 예를 들어, 카운터-측정 에이전트(2056)는, 새 침입 필터가 필요한지를 판단하기 위해 "BRO"-http://ee.Ibl.gov/bro.html 또는 "SNORT"-http;//www.snort.org 같은 앞서 존재하는 다양한 알고리즘들을 구축할 수 있고, 상기 두 개는 여기서 참조형태로 모두 포함된다. 위험인자 기호들(2058)이 SNORT나 McAfee에서 이용가능한 것 같은 상용 가능한 침입 검출 데이터베이스에 의해 제공될 수 있다.As described above, the tokens 2068 are formatted by the token generation operation 2054 so that the sentence structure information contained in the tokens 2068 is risked by the risk factor / virus analysis and ACL counter-measurement agent 2056. It can be easily compared with the factor symbols 2058. The counter-measurement agent 2056 is in one example a general purpose CPU (central processing unit) that compares tokens 2068 with certain risk factor symbols 2058 stored in memory. For example, a counter-measure Agent (2056), in order to determine the need for new Intrusion Filters "BRO" - http://ee.Ibl.gov/bro.html or "SNORT" - http; // www . It is possible to build various previously existing algorithms such as snort.org , both of which are hereby incorporated by reference. Risk factor symbols 2058 may be provided by a commercially available intrusion detection database such as those available from SNORT or McAfee.

카운터 측정 에이전트(2056)는 토큰들(2068)과 위험인자 기호들(2058) 사이의 매치에 부합하는 출력 ACLS 필터들(2070)을 동적으로 생성한다. 예를 들어, 위험인자 기호들(2058)은 토큰들(2068) 중 하나에 포함된 이메일 첨부 안에서 바이러스를 식별할 수 있다. 카운터 측정 에이전트(2056)는 그러면 바이러스 감염된 이메일 첨부를 포함한 패킷의 소스 IP 어드레스를 포함하는 필터(2070)를 동적으로 생성한다. 필터(2070)가 ACL 오퍼레이션(2062)으로 출력되면, 이후 ACL 오퍼레이션은 필터(2070)에 의해 식별된 상기 소스 IP 어드레스를 포함하는 지연 FIFO(2030) 내 어떤 패킷들(2016)을 버리게 된다. 이제 나머지 패킷들은 출력 버퍼(2150)로 출력된다.Counter measurement agent 2056 dynamically generates output ACLS filters 2070 that match the match between tokens 2068 and risk factor symbols 2058. For example, the risk factor symbols 2058 can identify a virus in an email attachment contained in one of the tokens 2068. Counter measurement agent 2056 then dynamically creates a filter 2070 that includes the source IP address of the packet containing the virus infected email attachment. If filter 2070 is output to ACL operation 2062, then ACL operation discards any packets 2016 in delayed FIFO 2030 containing the source IP address identified by filter 2070. The remaining packets are now output to the output buffer 2150.

재구성 어의 프로세서 (Reconstruction processor ( RSPRSP ))

도 36은 상술한 IDS(2018)를 구현하기 위한 한 실시예에 사용되는 재구성 어 의 프로세서 (RSP)(2100)의 블록도를 보인다. RSP(2100)는 입력 포트(2120)를 통해 수신된 패킷 데이터 스트림을 버퍼링하기 위한 입력 버퍼(2140)와, 출력 포트(2152)를 통해 출력되는 패킷 데이터 스트림을 버퍼링하기 위한 출력 버퍼(2150)를 포함한다.36 shows a block diagram of a processor (RSP) 2100 of a reconstruction word used in one embodiment for implementing IDS 2018 described above. The RSP 2100 may include an input buffer 2140 for buffering the packet data stream received through the input port 2120, and an output buffer 2150 for buffering the packet data stream output through the output port 2152. Include.

직접 실행 파서 (DXP)(2180)는 입력 버퍼(2140)에서 수신되고 (가령 입력 "스트림"), 출력 버퍼(2150)로 출력되고 (가령 출력 "스트림"), 재순환 버퍼(2160)에서 재순환되는 (가령, 재순환 "스트림") 패킷들이나 프레임들의 처리를 제어한다. 입력 버퍼(2140), 출력 버퍼(2150), 및 재순환 버퍼(2160)는 FIFO (first-in-first-out) 버퍼들임이 바람직하다. DXP(2180)은 또한 버퍼들(2140, 2150 및 2160)과 메모리 서브시스템(2215) 사이의 데이터 전송을 처리하는 어의 프로세싱 유닛 (SPU)(2200)에 의해 패킷들의 처리 역시 제어한다. 메모리 서브시스템(2215)은 입력 포트(2120)로부터 수신된 패킷들을 저장하고, 또 입력 데이터 스트림에서 위험인자를 식별하기 위해 사용되는 위험인자 기호들(2058) (도 35)도 저장한다. Direct execution parser (DXP) 2180 is received at input buffer 2140 (eg input "stream"), output to output buffer 2150 (eg output "stream"), and recycled at recycle buffer 2160. (Eg, recycling "stream") controls the processing of packets or frames. The input buffer 2140, output buffer 2150, and recycle buffer 2160 are preferably first-in-first-out (FIFO) buffers. DXP 2180 also controls the processing of packets by a fish processing unit (SPU) 2200 that handles data transfer between buffers 2140, 2150 and 2160 and memory subsystem 2215. Memory subsystem 2215 stores packets received from input port 2120 and also stores hazard factor symbols 2058 (FIG. 35) that are used to identify risk factors in the input data stream.

RSP(2100)는 주어진 IDS 오퍼레이션을 수행하기 위해 적어도 세 테이블들을 사용한다. 생성 규칙들(2176)을 검색하기 위한 코드들(2178)이 파서 테이블 (PT)(2170)에 저장된다. 문법 생성 규칙들(2176)은 생성 규칙 테이블 (PRT)(2190)에 저장된다. SPU(2200)에 의해 실행되는 코드 세그먼트들은 어의 코드 테이블 (SCT) (2210)에 저장된다. 파서 테이블(2170)의 코드들(2178)은 가령 행-렬 포맷이나 콘텐츠-어드레스형 포맷으로 저장될 수 있다. 행-열 포맷에서, 파서 테이블(2170)의 행들은 내부 파서 스택(2185)에 의해 주어지는 비단말 코드 NT (2172) 에 의해 색인된다. 파서 테이블(2170)의 열들은 입력 버퍼(2140) 내 데이터의 헤더로부터 추출된 입력 데이터 값 DI[N](2174)에 의해 색인된다. 콘텐츠-어드레스형 포맷에서, 파서 스택(2185)으로부터의 비단말 코드(2172)와 입력 버퍼(2140)으로부터의 입력 데이터 값(2174)을 연결한 것이 파서 테이블(2170)의 입력을 제공한다. RSP 2100 uses at least three tables to perform a given IDS operation. Codes 2178 for retrieving generation rules 2176 are stored in parser table (PT) 2170. Grammar generation rules 2176 are stored in a generation rule table (PRT) 2190. Code segments executed by the SPU 2200 are stored in a language code table (SCT) 2210. Codes 2178 of parser table 2170 may be stored, for example, in a row-column format or a content-addressed format. In the row-column format, the rows of parser table 2170 are indexed by non-terminal code NT 2172 given by inner parser stack 2185. The columns of parser table 2170 are indexed by input data value DI [N] 2174 extracted from the header of the data in input buffer 2140. In the content-addressed 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 provides the input of the parser table 2170.

생성 규칙 테이블(2190)은 파서 테이블(2170)으로부터의 코드들(2178)에 의해 색인된다. 테이블들(2170 및 2190)은 도 36에 도시된 것과 같이 링크되어, 파서 테이블(2170)로의 커리(query)가 비단말 코드(2172)와 입력 데이터 값(2174)에 적용가능한 생성 규칙(2176)을 바로 리턴하게 할 것이다. DXP(2180)는 파서 스택(2185)의 최상부에 있는 비단말 코드를 PRT(2190)로부터 리턴한 생성 규칙 (PR)(2176)으로 대체하고, 계속해서 입력 버퍼(2140)로부터 데이터를 파싱한다.The generation rule table 2190 is indexed by codes 2178 from the parser table 2170. Tables 2170 and 2190 are linked as shown in FIG. 36, such that a query to parser table 2170 is applicable to non-terminal code 2172 and input data value 2174. Will return immediately. The DXP 2180 replaces the non-terminal code at the top of the parser stack 2185 with the generation rule (PR) 2176 returned from the PRT 2190 and then parses the data from the input buffer 2140.

어의 코드 테이블(2210) 역시 파서 테이블(2170)에 의해 생성되는 코드들(2178)에 따라, 및/또는 생성 규칙 테이블(2190)에 의해 생성된 생성 규칙들(2176)에 따라 색인된다. 일반적으로, 파싱 결과들이 DXP(2180)으로 하여금, 주어진 생성 규칙(2176)에 대해 어의 코드 테이블(2210)으로부터의 코드 세그먼트(2212)가 SPU(2200)에 의해 로드되고 실행되어야 하는지 여부를 검출하게 한다. The lexical code table 2210 is also indexed according to the codes 2178 generated by the parser table 2170 and / or according to the generation rules 2176 generated by the generation rule table 2190. In general, the parsing results cause the DXP 2180 to detect whether the code segment 2212 from the erroneous code table 2210 should be loaded and executed by the SPU 2200 for a given generation rule 2176. Let's do it.

SPU(2200)는 컨텍스트(context) 상의 심볼들에 의하여 주소가 결정될 수 있는 구조적인 메모리 인터페이스를 제공하는 메모리 서브 시스템(2215)으로의 몇 개의 억세스 경로를 가진다. 메모리 서브 시스템(2215), 파서 테이블(2170), 프로덕션 규칙 테이블(2190) 및 시만텍 코드 테이블(2210)은 온-칩 메모리, 동기식 DRAM(Dynamic Random Memory)과 CAM(Content Addressable Memory)과 같은 외부 메모리 장치 또는 그러한 자원들의 조합을 사용한다. 각 테이블이나 컨텍스트는 단지 하나 또는 그 이상의 테이블이나 컨텍스트를 가진 공유된 물리적인 메모리 공간으로의 컨텍스트 상의 인터페이스를 제공할 뿐이다.SPU 2200 has several access paths to memory subsystem 2215, which provides a structured memory interface that can be addressed by symbols on a context. Memory subsystem 2215, parser table 2170, production rules table 2190, and Symantec code table 2210 store external memory such as on-chip memory, synchronous dynamic random memory (DRAM), and content addressable memory (CAM). Use a device or a combination of such resources. Each table or context merely provides a contextual interface to a shared physical memory space with one or more tables or contexts.

유지용 중앙 처리 장치(Maintenance Central Processing Unit; MCPU)(2056)는 SPU(2200)와 메모리 서브 시스템(2215) 간에 연결된다. MCPU(2056)는 종래의 소프트웨어와 함께 무리없이 사용될 수 있는 RSP(2100)가 원하는 어떤 함수라도 실행한다. 이러한 함수들은 대개는 드물며, 시간에 민감하지 않은 함수들로, 복잡도 때문에 SCT(2210)에 포함되는 것을 보장하지 않는다. 바람직하게는, MCPU(2056) 역시 SPU(2200)에게 MCPU 측에서 태스크들을 실행하도록 요청하는 성능을 가진다. 한 실시예에서, MCPU(2056)는 들어오는 패킷 스트림으로부터 바이러스를 필터하기 위해 SPU(2200)에 의해 사용되는 ACL(Access Control List)을 생성하는 것을 돕는다.A maintenance central processing unit (MCPU) 2056 is coupled between the SPU 2200 and the memory subsystem 2215. The MCPU 2056 executes any function desired by the RSP 2100, which can be used without difficulty with conventional software. These functions are often rare and are not time sensitive and do not guarantee inclusion in the SCT 2210 due to their complexity. Preferably, MCPU 2056 also has the capability to request SPU 2200 to execute tasks on the MCPU side. In one embodiment, MCPU 2056 helps to generate an Access Control List (ACL) used by SPU 2200 to filter viruses from incoming packet streams.

메모리 서브 시스템(2215)은 해싱 함수 또는 CAM 룩업을 통해 DRAM(2280)의 데이터를 억세스하기 위한 AMCD(Array Machine-Context Data Memory)(2230)를 포함한다. 암호 블록(2240)은 데이터를 암호, 해독 또는 인증하고 컨텍스트 제어 블록 캐시(2250)는 DRAM(2280)으로 가는 그리고 DRAM(2280)으로부터 오는 컨텍스트 제어 블록들을 캐시한다. 일반 캐시(2260)는 기본적인 연산에서 사용되는 데이터를 캐시하고, 스트리밍 캐시(2270)는 데이터 스트림이 DRAM(2280)에 써지거나 DRAM(2280)으로부터 읽혀질 때에 캐시한다. 컨텍스트 제어 블록 캐시(2520)는 바람직하게는 소프트웨어로 제어되는 캐시이며, 즉, SPU(2200)가 캐시 라인이 언제 사용되고 비 게 되는가를 결정한다. 참조번호 2240, 2250, 2260 및 2270의 각 회로는 DRAM(2280)과 SPU(200) 사이에 연결된다. TCAM(2220)는 AMCD(2230)과 MCPU(2056) 사이에 연결된다.Memory subsystem 2215 includes an Array Machine-Context Data Memory (AMCD) 2230 for accessing data in DRAM 2280 via a hashing function or CAM lookup. The cipher block 2240 encrypts, decrypts, or authenticates the data and the context control block cache 2250 caches the context control blocks going to and from the DRAM 2280. Generic cache 2260 caches data used in basic operations, and streaming cache 2270 caches data streams as they are written to or read from DRAM 2280. The context control block cache 2520 is preferably a software controlled cache, ie the SPU 2200 determines when the cache line is used and emptied. Respective circuits 2240, 2250, 2260 and 2270 are connected between DRAM 2280 and SPU 200. TCAM 2220 is coupled between AMCD 2230 and MCPU 2056.

RSP(2100)의 기능 블록들을 위한 상세한 최적화 설계는 본 발명의 범위 내에 있지 않다. 이용 가능한 어의 프로세서 기능 블록의 상세한 구조의 예를 위해 같이 출원 중이며, 여기에서는 참조로 언급되는, 출원번호 10/351,030, 제목 : A Reconfigurable Semantic Processor(2003.01.24. 출원)를 참조한다.The detailed optimization design for the functional blocks of the RSP 2100 is not within the scope of the present invention. See also Application No. 10 / 351,030, entitled A Reconfigurable Semantic Processor, filed Jan. 24, 2003, which is hereby filed for an example of a detailed structure of available processor functional blocks.

RSPRSP 를 이용한 침입 탐지Intrusion detection

침입 탐지 컨텍스트에서의 RSP(2100)의 기능은 특정한 예를 이용하면 더 잘 이해할 수 있다. 이하에서 설명될 예에서, RSP(2100)는 이메일 메시지에 위치한 바이러스나 다른 말웨어(malware, 악성 소프트웨어)를 제거한다. 본 발명이 속한 기술 분야의 당업자는 본 발명에 따라 제시된 개념을 쉽게 적용하여 어떤 타입의 바이러스나 다른 타입의 말웨어라도 탐지할 수 있고 어떤 통신프로토콜을 사용하여 전송되는 어떤 데이터 스트림에 대한 침입 탐지의 어떤 유형이라도 실행할 수 있다는 것을 인식할 수 있다.The functionality of the RSP 2100 in the context of intrusion detection can be better understood using specific examples. In the example described below, the RSP 2100 removes a virus or other malware that is located in an email message. Those skilled in the art to which the present invention pertains can easily apply the concepts presented in accordance with the present invention to detect any type of virus or other type of malware and to detect any type of intrusion detection for any data stream transmitted using any communication protocol. You can recognize that even types can be executed.

최초 침입 탐지 처리는 입력 데이터 스트림의 구문을 파싱하고 검출하는 것을 포함하며, 도 37 및 38을 참조하여 설명된다. 도 37을 참조하면 많은 상이한 문법이 파서 테이블(2170)과 프로덕션 규칙 테이블(2190)에 동시에 존재한다. 예를 들면, 참조번호 2300의 코드들은 MAC 패킷 헤더 형식 파싱에 관련된 것이고, 참조번호 2302의 코드들은 IP 패킷 처리에 관련된 것이며, 참조번호 2304의 다른 코드들은 TCP 패킷 처리에 관련되는 것 등이다. 파서 테이블(2170) 내의 참조번호 2306의 다른 코드들은 상기 도 32A 내지 도 35와 이 예에서 특히 데이터 스트림(2022)(도 35)의 SMTP(Simple Mail Transport Protocol) 패킷들을 확인하는 예에서 설명된 침입 탐지(2018)에 관련된 것이다.The initial intrusion detection process involves parsing and detecting the syntax of the input data stream and is described with reference to FIGS. 37 and 38. Referring to FIG. 37, many different grammars exist simultaneously in parser table 2170 and production rule table 2190. For example, codes 2300 relate to MAC packet header format parsing, codes 2302 relate to IP packet processing, other codes 2304 relate to TCP packet processing, and the like. Other codes of reference number 2306 in the parser table 2170 are the intrusions described in FIGS. 32A-35 above and in this example specifically the example of identifying Simple Mail Transport Protocol (SMTP) packets of the data stream 2022 (FIG. 35). Related to detection (2018).

PR 코드(2178)는 프로덕션 규칙 테이블(2190)에 저장된 대응 프로덕션 규칙(2176)에 억세스하기 위해 사용된다. 특정 룩업 구현에 의해 요청되지 않는다면, 입력값(2308)(예를 들면 n이 선택된 바이트 단위의 매치 폭인 경우 비-터미널(NT) 심볼(2172)이 현재의 입력값 DI[n](2174)과 결합됨)은 PR 테이블(2170)의 어떤 특정 순서에 할당될 필요가 없다.The PR code 2178 is used to access the corresponding production rule 2176 stored in the production rule table 2190. If not requested by a particular lookup implementation, the input value 2308 (e.g., if n is a match width in selected bytes, the non-terminal (NT) symbol 2172 will match the current input value DI [n] 2174). Combined) need not be assigned to any particular order of PR table 2170.

한 실시예에서, 파서 테이블(2170) 역시 NT 심볼(2172)과 DZP(2180)으로부터의 데이터 값 DI[n](2174)을 수신하는 어드레서(2310)를 포함한다. 어드레서(2310)는 NT 심볼(2172)을 데이터 값 DI[n](2174)과 연결시키고, 연결된 값(2308)을 파서 테이블(2170)에 인가한다. 비록 프로덕션 규칙 테이블(2710)의 구조를 NT 코드(2172)와 데이터 값들(2174)의 유일한 각 결합에 대한 하나의 PR 코드(2178)를 수반하는 행렬로서 개념적으로 가끔 표시하는 것이 유용하기는 하지만, 본 발명은 그에 제한되지는 않는다. 상이한 타입의 메모리와 메모리 조직은 상이한 애플리케이션들에 적합하다.In one embodiment, parser table 2170 also includes an addresser 2310 that receives data symbol DI [n] 2174 from NT symbol 2172 and DZP 2180. The addresser 2310 associates the NT symbol 2172 with the data value DI [n] 2174 and applies the coupled value 2308 to the parser table 2170. Although it is useful to conceptually represent the structure of the production rules table 2710 occasionally as a matrix involving one PR code 2178 for each unique combination of NT code 2172 and data values 2174, The present invention is not limited thereto. Different types of memory and memory organization are suitable for different applications.

한 실시예에 있어서, 파서 테이블(2170)은 CAM으로 구현되며, 그 때에 어드 레서(2310)는 NT 코드(2172)와 입력 데이터 값 DI[n](2174)을 키로 사용하여 CAM이 PR 코드(2178)를 룩업하게 한다. 바람직하게는, CAM은 TCAM 엔트리로 알려진 TCAM(Ternary CAM)이다. 각 TCAM 엔트리는 NT 코드(2312)와 DI[n] 매치값(2314)를 포함한다. 각 NT 코드(2312)는 다중의 TCAM 엔트리를 가질 수 있다.In one embodiment, parser table 2170 is implemented as a CAM, where addresser 2310 uses NT code 2172 and input data value DI [n] 2174 as a key so that the CAM uses PR code ( 2178). Preferably, the CAM is a TCAM (Ternary CAM) known as a TCAM entry. Each TCAM entry includes an NT code 2312 and a DI [n] match value 2314. Each NT code 2312 may have multiple TCAM entries.

DI[n] 매치값(2314)의 각 비트는 "0", "1" 또는 (Don' care 상태임을 나타내는) "X"로 설정될 수 있다. 이런 능력은 DI[n](2174)의 특정 비트/바이트만이 파서 테이블(2170)이 매치를 찾게 하기 위해 PR 코드(2178)가 코드화된 패턴을 매치시킬 것을 요청하도록 한다.Each bit of the DI [n] match value 2314 can be set to " 0 ", " 1 " or " X " This capability allows only a specific bit / byte of DI [n] 2174 to request that the PR code 2178 match the coded pattern in order for the parser table 2170 to find a match.

예를 들면, TCAM의 한 행은 하나의 SMTP 패킷을 위해 NT_SMTP(2312A)의 NT 코드를 포함하며, 뒤따르는 추가적인 바이트(2314A)는 SMTP 패킷에 존재할 수 있는 특정한 콘텐트 타입을 나타내며, 그러한 것은 이메일 부착을 위한 라벨과 같은 것이다. TCAM 행의 나머지 바이트들은 "don't care"로 설정된다. 그러므로 NT_SMTP(2312A)와 바이트 DI[N]의 몇 개는 파서 테이블(2170)로 제출되며, 그곳에서 DI[N]의 바이트들의 첫 번째 세트는 부착 인식자(attachment identifier)를 포함하며, DI[N]의 나머지 바이트들이 어떤 것을 포함하고 있어도 매치가 발생한다.For example, one line of TCAM contains the NT code of NT_SMTP 2312A for one SMTP packet, followed by an additional byte 2314A indicating the specific content type that may be present in the SMTP packet. It is the same as a label for. The remaining bytes of the TCAM row are set to "don't care". Thus some of NT_SMTP 2312A and bytes DI [N] are submitted to the parser table 2170, where the first set of bytes of DI [N] contains an attachment identifier, DI [N]. Matches occur even if the remaining bytes of N] contain anything.

파서 테이블(2170)의 TCAM은, 상기에서 설명된 것과 같이, NT(2172)와 DI[N](2174)와 매칭하는 TCAM 엔트리에 대응하는 PR 코드(2178A)를 생성한다. 이 예에서, PR 코드(2178A)는 이메일 메시지를 포함하는 SMTP 패킷과 연관된다. PR 코드(2178A)는 DXP(2180)으로 돌아갈 수 있거나 또는 PR 테이블(2190)로 직접 돌아갈 수 있으며, 또는 양쪽으로 다 돌아갈 수 있다. 일 실시예에서, PR 코드(2178A)는 매치를 생성하는 TCAM 엔트리의 열(row) 인텍스이다.The TCAM of the parser table 2170 generates a PR code 2178A corresponding to the TCAM entry that matches NT 2172 and DI [N] 2174, as described above. In this example, the PR code 2178A is associated with an SMTP packet containing an email message. The PR code 2178A may return to the DXP 2180 or directly back to the PR table 2190, or both. In one embodiment, PR code 2178A is a row index of the TCAM entry that creates a match.

도 38은 프로덕션 규칙 테이블(2190)을 위한 하나의 가능한 구현예를 나타낸다. 이 실시예에서, 어드레서(2320)는 DXP(2180) 또는 파서 테이블(2170)로부터 PR 코드들(2178)을 수신하며, DXP(2180)로부터는 NT 심볼들(2172)을 수신한다. 바람직하게는 수신된 NT 심볼(2172)은 파서 테이블(2170)로 보내진 NT 심볼(2172)과 동일하며, 그 파서 테이블에는 수신된 PR 코드(2178)가 위치했었다.38 illustrates one possible implementation for production rule table 2190. In this embodiment, addresser 2320 receives PR codes 2178 from DXP 2180 or parser table 2170 and NT symbols 2172 from DXP 2180. Preferably the received NT symbol 2172 is identical to the NT symbol 2172 sent to parser table 2170, where the received PR code 2178 was located.

어드레서(2320)는 이렇게 수신된 PR 코드들(2178)과 NT 심볼들(2172) 대응하는 프로덕션 규칙들(2176)에 억세스하기 위해 사용한다. 어드레서(2320)는 어떤 구현에서는 필요하지 않을 수 있지만, 사용되는 경우에는, DXP(2180)의 일부, PRT(2190)의 일부 또는 중간 함수 블록이 될 수 있다. 예를 들어, 파서 테이블(2170)이나 DXP(2180)가 주소들을 직접 구성하면 어드레서는 사용될 필요가 없을 수 있다. The addresser 2320 uses to access the production rules 2176 corresponding to the PR codes 2178 and NT symbols 2172 thus received. The addresser 2320 may not be necessary in some implementations, but if used may be part of the DXP 2180, part of the PRT 2190, or an intermediate function block. For example, if the parser table 2170 or DXP 2180 directly configures addresses, the addresser may not need to be used.

프로덕션 규칙 테이블(2190)에 저장된 프로덕션 규칙(2176)은 세 개의 데이터 세그먼트들을 포함한다. 이 데이터 세그먼트들은 다음을 포함한다: 심볼 세그먼트(2177A), SPU 엔트리 포인트(SEP) 세그먼트(2177B) 및 스킵(skip) 바이트 세그먼트(2177C). 이런 세그먼트들은 고정된 길이의 세그먼트이거나 또는, 바람직하게는 널(null)로 끝나는, 가변 길이의 세그먼트들의 어느 하나이다. 심볼 세그먼트(2177A)는 DXP의 파서 스택(도 36의 2185)으로 푸시되는 터미널(terminal) 및/또는 비-터미널(non-terminal) 심볼들을 포함한다. SEP 세그먼트(2177B)는 데이터 세그먼트를 처리하기 위해 SPU(2200)에 의해 사용되는 SPU 엔트리 포인트들(SEPs)을 포함한다. 스킵 바이트 세그먼트(2177C)는 버퍼 포인트를 증가시키고 입력 스트림 처리를 진행하게 하기 위해 입력 버퍼(2140)에 의해 사용되는 스킵 바이트 값들을 포함한다. 프로덕션 규칙들을 처리하는데 유용한 다른 정보 역시 프로덕션 규칙(2176)의 일부로서 저장될 수 있다.Production rule 2176 stored in production rule table 2190 includes three data segments. These data segments include: symbol segment 2177A, SPU entry point (SEP) segment 2177B, and skip byte segment 2177C. These segments are either fixed length segments or are preferably either null terminated segments of variable length. The symbol segment 2177A includes terminal and / or non-terminal symbols that are pushed to the parser stack (2185 of FIG. 36) of the DXP. SEP segment 2177B includes SPU entry points (SEPs) used by SPU 2200 to process the data segment. Skip byte segment 2177C includes skip byte values used by input buffer 2140 to increment the buffer point and allow input stream processing to proceed. Other information useful for processing production rules may also be stored as part of production rule 2176.

이와 같은 예에서, 프로덕션 규칙 코드(2178A)에 의해 인덱스된 하나 또는 그 이상의 프로덕션 규칙(2176A)은 입력 버퍼(2140) 내의 확인된 SMTP 패킷과 부합한다. SEP 세그먼트(2177B)는 도 36의 어의 코드 테이블(2210) 내의 SPU 코드(2212)를 가리키며, 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 match the identified SMTP packets in input buffer 2140. SEP segment 2177B points to SPU code 2212 in lexical code table 2210 of FIG. 36, and when executed by SPU 2200, the different ACL check 2050 described in FIG. 35 above, session lookup ( 2052) and the token generation 2054 operation. In one embodiment, SPU 2200 includes an array of words processing elements that can operate in parallel. SEP segment 2177B of production rule 2176A may cause one or more SPUs 2200 to execute ACL check 2050, session lookup 2052, and token generation 2054 operations in parallel.

상기에서 언급한 것과 같이, 파서 테이블(2170)은 SMTP 패킷들과 연관되지 않은 다른 타입의 데이터를 처리하는 문법도 포함할 수 있다. 예를 들면, 파서 테이블(2170)에 포함된 IP 문법(2302)은 입력 버퍼(2140)의 확인된 NT_IP 목적지 주소와 연관된 프로덕션 규칙 코드들(2178)을 포함할 수 있다.As mentioned above, parser table 2170 may also include a grammar for processing other types of data not associated with SMTP packets. For example, IP grammar 2302 included in parser table 2170 may include production rule codes 2178 associated with the verified NT_IP destination address of input buffer 2140.

프로덕션 규칙 코드(2302) 내의 매칭 데이터 값(2314)은 RSP(2100)가 존재하는 네트워크 처리 장치의 IP 주소를 포함할 수 있다. NT_IP 코드(2172)와 연관된 입력 데이터 DI[I](2174)가 PR 코드들(2302)을 위한 매치 값들(2314)에 포함된 목 적지 주소를 가지고 있지 않다면, 디폴트 프로덕션 규칙 코드(2178)가 프로덕션 규칙 테이블(2190)에 공급될 수 있다. 디폴트 프로덕션 규칙 코드(2178)는 DXP(2180) 및/또는 SPU(2200)에게 입력 버퍼(2140)로부터의 패킷들을 폐기하도록 지시하는 프로덕션 규칙 테이블(2190)을 가리킬 수 있다.The matching data value 2314 in the production rule code 2302 can include the IP address of the network processing device on which the RSP 2100 is present. If the input data DI [I] 2174 associated with the NT_IP code 2172 does not have a destination address included in the match values 2314 for the PR codes 2302, then the default production rule code 2178 is produced. May be supplied to the rules table 2190. The default production rule code 2178 may point to the production rule table 2190 instructing the DXP 2180 and / or the SPU 2200 to discard packets from the input buffer 2140.

어의 처리 유니트들(Language processing units SPUsSPUs ))

상기에 설명된 것과 같이, DXP(2180)은 IP 세션, TCP 세션 및 현재의 예에서는 SMTP 이메일 세션들과 같은 입력 스트림 내의 특정한 어의 요소들을 확인한다. 이런 문장구조적인(syntactic) 파싱 오퍼레이션은 IDS 시스템(2018)의 전체적인 성능에 중요하다. 입력 스트림의 실제 구문(syntax)은 DXP(2180)에 의해 확인되며, 상기 도 35에서 설명된 연속되는 IDS 처리는 SPU(2200)에 의해 이제 더 효과적으로 실행될 수 있다.As described above, the DXP 2180 identifies certain language elements in the input stream, such as IP sessions, TCP sessions, and SMTP email sessions in the present example. This syntactic parsing operation is important to the overall performance of the IDS system 2018. The actual syntax of the input stream is confirmed by the DXP 2180, and the continuous IDS processing described in FIG. 35 can now be executed more efficiently by the SPU 2200.

예를 들면, SPU(2200)는 이메일 메시지들과 연관된 ACL 필터들을 파싱된 데이터 스트림에 적용해야만 할 수도 있다. 이것은 여러 가지 이점을 제공한다. 첫째로, 모든 패킷의 모든 바이트가 도 35의 위협을 주는 서명(2058) 모두와 비교될 필요가 있는 것은 아니다. 대안적으로, 이메일 메시지와 연관된 위협을 주는 서명의 일부분만이 SMTP 패킷에 인가된다. 이것은 IDS(2018)의 크기를 증가시키는 실질적인 이점을 가지며 IDS(2018)이 더 많은 바이러스와 말웨어를 탐지하고, 더 높은 패킷 비율에서 오퍼레이션하도록 한다.For example, the SPU 2200 may have to apply ACL filters associated with email messages to the parsed data stream. This offers several advantages. First, not every byte of every packet needs to be compared with all of the threatening signatures 2058 of FIG. 35. Alternatively, only a portion of the threatening signature associated with the email message is authorized to the SMTP packet. This has the real advantage of increasing the size of the IDS 2018 and allows the IDS 2018 to detect more viruses and malware and to operate at higher packet rates.

도 39는 도 35에서 이전에 설명된 ACL 검사 오퍼레이션(2050)과 출력 ACL 오퍼레이션(2062)을 더 자세하게 설명한다. 참조번호 2400 블록에서, DXP(2180)는 신호를 출력하여 SPU(2200)가 도 35에서 이전에 설명된 ACL 검사 오퍼레이션(2050)과 출력 ACL 오퍼레이션(2062)을 수행하는 SCT(2210)로부터 적절한 마이크로명령어를 로드하도록 한다. 도 38에서 설명된 것과 같이, DXP(2180)는 프로덕션 규칙(2176A)에 포함된 SEP(SPU Entry Point) 세그먼트들을 통해 SPU(2200)에 신호를 출력한다.FIG. 39 illustrates the ACL check operation 2050 and output ACL operation 2062 described previously in FIG. 35 in more detail. In block 2400, the DXP 2180 outputs a signal such that the SPU 2200 performs the appropriate microcontroller from the SCT 2210 where the SPU 2200 performs the ACL check operation 2050 and the output ACL operation 2062 previously described in FIG. Load the command. As described in FIG. 38, the DXP 2180 outputs a signal to the SPU 2200 via SPU (SPU Entry Point) segments included in the production rule 2176A.

SEP 세그먼트들(2177B)에 대한 응답으로 SCT(2210)에서 억세스된 SPU 코드(2212; 도 36)에 따라, 참조번호 2402의 블록 내의 SPU(2200)는 입력 데이터 스트림에서 DXP(2180)에 의해 확인된 특정 문장구조적인 요소들을 획득한다. 예를 들면, DXP(2180)는 IP 소스 주소, IP 목적지 주소, 목적지 포트 번호, 소스 포트 번호 및 프로토콜 타입을 포함하는 5개의 요소로 구성된 문장구조 요소들을 확인할 수 있을 것이다. 물론, 이것은 단지 하나의 예이며, 데이터 스트림(2022, 도 35)의 다른 문장구조 요소들 역시 DXP(2180)에 의해 확인될 수 있다.In accordance with the SPU code 2212 (FIG. 36) accessed in the SCT 2210 in response to the SEP segments 2177B, the SPU 2200 in the block 2402 is identified by the DXP 2180 in the input data stream. Get specific sentence structure elements For example, the DXP 2180 may identify sentence structure elements consisting of five elements including an IP source address, an IP destination address, a destination port number, a source port number, and a protocol type. Of course, this is just one example, and other syntax elements of the data stream 2022 (FIG. 35) may also be identified by the DXP 2180.

참조번호 2404의 블록에서, SPU(2200)는 DXP(2180)에 의해 확인된 문장구조 요소들을 TCAM(2220)에 저장된 ACL(Access Control List) 필터들의 아프리오리(a priori) 세트들과 비교한다. 예를 들면 TCAM(2220)의 ACL 필터들의 아프리오리 세트는 알려진 위협들과 연관된 상이한 IP 주소를 포함할 수 있다. 한 예에서, SPU(2200)는 입력 버퍼(2140)의 패킷들을 위한 문장구조 요소들을 AMCD(2230)을 통해 TCAM(2220)으로, 패킷을 위한 IP 주소와 같은, 문장구조 요소들을 전송하여 TCAM(2220)의 아프리오리 필터들과 비교한다. 그러면 IP 주소는 AMCD(2230)을 통해 SPU(2200)로 결과를 되돌려 출력하는 TCAM(2220)으로의 주소로 사용된다.In block 2404, the SPU 2200 compares the syntax structure elements identified by the DXP 2180 with a priori sets of Access Control List (ACL) filters stored in the TCAM 2220. For example, the apriori set of ACL filters of TCAM 2220 may include a different IP address associated with known threats. In one example, SPU 2200 sends sentence structure elements for packets of input buffer 2140 to TCAM 2220 via AMCD 2230, sending sentence structure elements, such as an IP address for the packet, to TCAM ( 2220). The IP address is then used as an address to the TCAM 2220 which returns the results back to the SPU 2200 via the AMCD 2230.

참조번호 2406의 블록 내의 SPU(2200)는 TCAM(2220)으로부터의 결과들을 검사한다. TCAM(2200)으로부터의 출력은 드롭 패킷, 저장 패킷 또는 아마도 IP 보안(IPSEC) 패킷을 가리킬 수 있다. 예를 들면, 입력 버퍼(2140) 내의 패킷으로부터 공급된 IP 주소가 TCAM(2220) 내의 아프리오리 필터 엔트리들의 하나와 매치될 때에 TCAM(2220)은 드롭 패킷 플래그를 생성할 수 있다. 입력 데이터 스트림(2022)을 위한 IP 주소가 TCAM(2220)의 어떤 엔트리와도 매치하지 않을 때에 저장 패킷 플래그가 출력된다. TCAM(2220)은 암호화된 IPSEC 패킷에 대응하는 엔트리들 또한 포함한다. IP 주소가 IPSEC 엔트리들 중의 하나와 매치된다면, TCAM(2220)은 IPSEC 플래그를 출력한다.SPU 2200 in block 2406 examines the results from TCAM 2220. The output from the TCAM 2200 may point to a drop packet, a storage packet or perhaps an IP Security (IPSEC) packet. For example, the TCAM 2220 may generate a drop packet flag when an IP address supplied from a packet in the input buffer 2140 matches one of the apriori filter entries in the TCAM 2220. The storage packet flag is output when the IP address for the input data stream 2022 does not match any entry in the TCAM 2220. TCAM 2220 also includes entries corresponding to the encrypted IPSEC packet. If the IP address matches one of the IPSEC entries, the TCAM 2220 outputs an IPSEC flag.

참조번호 2408의 블록 내의 SPU(2200)는 TCAM(2220)의 드롭 패킷 플래그를 생성하는 PIB(2140) 내의 어떤 패킷이라도 드롭시킨다. SPU(2200)는 입력 버퍼(2140)에 다른 패킷을 스킵하라는 명령을 하여 간단하게 패킷을 드롭시킬 수 있다. 저장 패킷 플래그가 TCAM(2220)으로부터의 출력이라면, 참조번호 2410의 블록 내의 SPU(2200)는 입력 버퍼(2140)로부터의 패킷을 DRAM(2280)으로 저장한다. DRAM(2280)은 도 34 및 도 35에서 설명된 지연 FIFO(2230)로서 오퍼레이션한다. IPSEC 플래그가 TCAM(2220)으로부터 출력되면, SPU(2200)는 입력 버퍼의 패킷을 메모리 서브 시스템(2215)에서 암호 회로(2240)를 통해 전송할 수 있다. 해독된 패킷은 도 36의 재순환 버퍼(2160)로 되돌려 전송되고 상기에서 설명된 ACL 검사 오프레이션은 반복한다.SPU 2200 in block 2408 drops any packet in PIB 2140 that generates a drop packet flag of TCAM 2220. The SPU 2200 may drop the packet simply by instructing the input buffer 2140 to skip another packet. If the storage packet flag is an output from the TCAM 2220, the SPU 2200 in block 2410 stores the packet from the input buffer 2140 into the DRAM 2280. DRAM 2280 operates as delay FIFO 2230 described in FIGS. 34 and 35. When the IPSEC flag is output from the TCAM 2220, the SPU 2200 may send a packet of an input buffer from the memory subsystem 2215 through the cryptographic circuit 2240. The decrypted packet is sent back to the recycle buffer 2160 of FIG. 36 and the ACL check operation described above repeats.

패킷들이 DRAM(2280)(도 35에서의 지연 FIFO(2030))에 저장되는 동안, MCPU(256, 도 35에서 카운터 측정 에이전트(2056))는 입력 데이터 스트림으로부터 추출된 토큰들(2068)과 부합하는 ACL 필터들(2070)을 동적으로 생성한다. 이것은 아래의 도 41에서 더 자세하게 설명된다. 참조번호 2412 블록 내의 SPU(2200)는 DRAM(2280)에 저장된 패킷을 동적으로 생성되어 이제는 TCAM(2220)에 저장된 ACL 필터들(2070, 도 35)과 비교한다. 예를 들면, SPU(2200)는 참조번호 2402의 블록에서 확인된 패킷을 위해 5개 요소의 집합을 사용할 수 있을 것이다.While packets are stored in DRAM 2280 (delay FIFO 2030 in FIG. 35), MCPU 256 (counter measurement agent 2056 in FIG. 35) matches tokens 2068 extracted from the input data stream. ACL filters 2070 are dynamically created. This is explained in more detail in FIG. 41 below. SPU 2200 in block 2412 dynamically generates a packet stored in DRAM 2280 and now compares it with ACL filters 2070 (FIG. 35) stored in TCAM 2220. For example, SPU 2200 may use a set of five elements for the packet identified in block 2402.

SPU(2200)는 상기 패킷을 위한 5개 요소의 집합을 TCAM(2220)에서 동적으로 생성된 필터들(20780)에 인가한다. 그러면, DRAM(2280) 내에서 TCAM(2220)으로부터의 드롭 패킷 플래그 결과를 생성하는 어떤 패킷도 참조번호 2414 블록의 SPU(2200)에 의해 DRAM(2280)으로부터 제거된다. 그렇다면 미리 정해진 고정된 지연 기간 후에, 참조번호 2416의 블록 내의 SPU(2200)는 남아있는 패킷들을 출력 포트(2152)로 출력한다.SPU 2200 applies a set of five elements for the packet to filters 20780 dynamically generated at TCAM 2220. Then, any packet that produces a drop packet flag result from TCAM 2220 in DRAM 2280 is removed from DRAM 2280 by SPU 2200 at block 2414. If so, after a predetermined fixed delay period, the SPU 2200 in block 2416 outputs the remaining packets to the output port 2152.

CAM(2220)은 다른 아프리오리 필터들을 포함할 수 있다는 것을 이해하여야 한다. 예를 들면, CAM(2220)은 상이한 프로토콜에 연관되거나 패킷들에 포함될 수 있는 데이터와 연관된 필터들을 포함할 수 있다. DXP(2180)는 문장구조 요소들을 TCAM(2220)의 필터들에 적용될 필요가 있는 SPU(2200)에 확인시킨다. It should be understood that the CAM 2220 may include other apriori filters. For example, CAM 2220 may include filters associated with data that may be associated with a different protocol or included in packets. DXP 2180 identifies sentence structure elements to SPU 2200 that need to be applied to the filters of TCAM 2220.

지연 FIFO에 의해 제공되는 고정된 시간 지연 내에 바이러스 또는 말웨어를 결정하는 것은 가능하지 않을 것이다. 예를 들면, 바이러스는 큰 멀티-메가비트 메시지의 끝에 포함될 수도 있다. 이런 경우에는, IDS(2018)는 바이러스를 포함하는 패킷을 수신하면서 동시에 바이러스 통보 메시지를 생성해야 할 것이다. 바이러스 통보 메시지는 수신된 것에게 바이러스를 포함하는 패킷을 폐기하라고 통보한다.It will not be possible to determine the virus or malware within a fixed time delay provided by the delay FIFO. For example, a virus may be included at the end of a large multi-megabit message. In this case, IDS 2018 will have to receive a packet containing the virus and generate a virus notification message at the same time. The virus notification message informs the received one to discard the packet containing the virus.

도 40은 도 35에서 이전에 설명된 세션 룩업 오퍼레이션(2052)을 하는 동안에 SPU(2200)에 의해 수행되는 오퍼레이션을 설명한다. 참조번호 2430의 블록에서 DXP(2180)은 SPU(2200)에게 신호를 출력하여, 이전에 도 38에서 설명된 것처럼, 연관된 SEP 세그먼트들(2177B)을 전송하여 세션 룩업 오퍼레이션을 실행하는 것에 연관된 SCT(2210)로부터 적절한 마이크로명령어를 로드하도록 한다.FIG. 40 illustrates the operations performed by the SPU 2200 during the session lookup operation 2052 described previously in FIG. 35. In block 2430, the DXP 2180 outputs a signal to the SPU 2200, which transmits associated SEP segments 2177B to execute the session lookup operation, as previously described in FIG. 2210) to load the appropriate microinstruction.

한 예에서, 참조번호 2432인 블록의 SPU(2200)는 DXP(2180)로부터의 입력 패킷을 위한 소스 및 목적지 주소와 포트 번호를 수신한다. 그러면 SPU(2200)는 그 주소 및 포트 번호들을 DRAM(2280)에 저장된 패킷들을 위한 현재 세션 정보와 비교한다. 어떤 IP 세션에 대해서는, 참조번호 2434 블록에서 SPU(2200)는 DRAM(2280)에서 오퍼레이션되는 지연 FIFO(2030)에서 조각화된 패킷들을 다시 정리할 필요가 있을 것이다. 참조번호 2438 블록의 SPU(2200)는 존재하는 IP 세션을 위해 이전에 수신된 패킷들의 복제인 입력 버퍼(2140)에 있는 모든 패킷들 역시 드롭(배제)시킬 수 있다.In one example, SPU 2200 of block 2432 receives source and destination addresses and port numbers for input packets from DXP 2180. SPU 2200 then compares its address and port numbers with current session information for packets stored in DRAM 2280. For some IP sessions, at block 2434 the SPU 2200 will need to re-arrange fragmented packets in the delayed FIFO 2030 operated on the DRAM 2280. The SPU 2200 at block 2438 may also drop (drop out) all packets in the input buffer 2140, which are duplicates of previously received packets for the existing IP session.

도 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 previously described in FIG. 35. In block 2450, the DXP 2180 parses data from the input stream described in Figures 36-38 above. In block 2452, the DXP 2180 identifies the syntax elements of the data stream in the input buffer 2140 that may be associated with a virus or malware. In the above example, this may include the DXP 2180 checking the packet containing the email message. However, the sentence structure elements identified by the DXP 2180 may be anything, such as IP data flows including IP addresses, source and destination addresses, verified traffic rates for specific data flows, and so forth.

참조번호 2454의 블록에서 DXP(2180)는 SPU(2200)에게 신호를 출력하여 특정 토큰 생성 오퍼레이션에 연관된 SCT(2210)로부터 마이크로명령어를 로드하도록 한다. 그리고 더 특별하게, 도 38의 SEP 세그먼트(2177B)에 의해 확인된 마이크로 명령어는 SPU(2200)에게 DXP(2180)에 의해 확인된 특정 문장구조 요소들을 위한 토큰들을 생성하도록 지시한다.In block 2454, the DXP 2180 outputs a signal to the SPU 2200 to load the microinstruction from the SCT 2210 associated with the specific token generation operation. And more particularly, the microinstruction identified by SEP segment 2177B in FIG. 38 instructs SPU 2200 to generate tokens for the specific syntax elements identified by DXP 2180.

그러면 참조번호 2456 블록의 SPU(2200)는 상기 확인된 문장구조 요소들로부터 토큰들(2068, 도 35)을 생성한다. 예를 들면, SPU 코드(2212, 도 36)는 SPU(2200)에게 확인된 이메일 메시지를 위해 위치한 문장구조 요소들을 추출하라고 명령할 수 있을 것이다. SPU(2200)는 패킷 내의 "From:", "To:" 및 "Subject(제목:" 필드들로부터 정보를 저장하는 토큰들을 생성할 수 있을 것이다. SPU(2200)는 또한 데이터 스트림 내에 존재할 수 있는 어떤 이메일 부착물을 위한 토큰을 추출하고 생성할 수 있을 것이다. 예를 들면, SPU(2200)는 도 35에서 이전에 설명된 TLV 토큰 #1을 생성할 수 있었다.The SPU 2200 of block 2456 then generates tokens 2068 (FIG. 35) from the identified sentence structure elements. For example, the SPU code 2212 (FIG. 36) may instruct the SPU 2200 to extract sentence structure elements located for the confirmed email message. The SPU 2200 may generate tokens that store information from the "From:", "To:" and "Subject" fields in the packet. The SPU 2200 may also exist in the data stream. It may be possible to extract and generate a token for any email attachment, for example, the SPU 2200 could generate TLV token # 1 previously described in FIG.

Token #1Token # 1

Type : SMTP/MIME Attachment (method for transferring files in email messgae)Type: SMTP / MIME Attachment (method for transferring files in email messgae)

Length : # of bytes in the fileLength: # of bytes in the file

Value : actual fileValue: actual file

DXP(2180)는 위협과 연관된 문장구조 요소들의 많은 상이한 타입을 확인할 수 있다는 것 역시 이해되어야 한다. DXP(2180)는 상이한 문장구조 요소들을 위해 상이한 SPU 코드(2212, 도 36)를 시작시킬 수 있을 것이다. 예를 들면, 상기에 설명된 것과 같이, DXP(2180)는 HTMP 메시지와 부합하는 어의 요소들 역시 확인할 수 있을 것이다. DXP(2180)는 아래에 보여지는 것과 유사한 HTML 토큰들을 생성하도록 SPU(2200)에 명령하는 SEP 세그먼트(2177B)를 전송한다.It should also be understood that DXP 2180 can identify many different types of sentence structure elements associated with threats. DXP 2180 may initiate different SPU code 2212 (FIG. 36) for different sentence structure elements. For example, as described above, the DXP 2180 may also identify elements of the language that match the HTMP message. DXP 2180 sends SEP segment 2177B which instructs SPU 2200 to generate HTML tokens similar to those shown below.

Token #2Token # 2

Type : HTML Bin Serve(method for transferring files in web pages)Type: HTML Bin Serve (method for transferring files in web pages)

Length: # of bytes in fileLength: # of bytes in file

Value: actual fileValue: actual file

참조번호 2457의 SPU(2200)는 토큰들을 형식화하여 도 35의 위협 서명(2058)에 쉽게 적용하도록 한다. 예를 들면, SPU(2200)는 토큰들을 타입(Type), 길이(Length) 및 밸류(TLV) 데이터의 형식이 되도록 한다. 그러면 참조번호 2458 블 록의 SPU는 형식화된 토큰을 도 36의 MCPU(2056)이나 외부 위협/바이러스 분석 그리고 도 35에서 상기에 설명된 것과 같은 ACL 카운터-측정 에이전트(2056)로 전송한다.SPU 2200 at 2457 formats the tokens for easy application to the threat signature 2058 of FIG. 35. For example, the SPU 2200 allows tokens to be in the format of Type, Length, and Value (TLV) data. The SPU at block 2458 then sends the formatted token to the MCPU 2056 of FIG. 36 or to an external threat / virus analysis and ACL counter-measurement agent 2056 as described above in FIG. 35.

한 실시예에서, MCPU(2056)는 토큰들(2068)을 동적으로 만들어진 ACL 필터들(2070)의 세트를 생성하는 TCAM(2220)에 포함된 위협 서명(2058)에 적용한다. 그러면 상기의 도 39에서 설명된 출력 ACL 오퍼레이션(2062)에서의 SPU(2200)는 TCAM(2220)에서 동적으로 생성된 ACL 필터들(2070)을 DRAM(2280) 지연 FIFO에 저장된 패킷들에 적용한다. ACL 필터들(2070)과 매칭되는 지연 FIFO 내의 어떤 패킷들도 드롭된다.In one embodiment, MCPU 2056 applies tokens 2068 to threat signature 2058 included in TCAM 2220 that generates a set of dynamically created ACL filters 2070. The SPU 2200 at the output ACL operation 2062 described above in FIG. 39 then applies the ACL filters 2070 dynamically generated at the TCAM 2220 to the packets stored in the DRAM 2280 delay FIFO. . Any packets in the delay FIFO that match the ACL filters 2070 are dropped.

이 구현예에서, TCAM(2220)은 위협 서명 테이블 및 ACL 필터 테이블 양쪽을 포함하는 다중 테이블들을 포함할 수 있을 것이다. TCAM(2220)의 위협 서명 테이블은 MCPU(2056)에 의해 억세스되고 TCAM(2220)의 ACL 필터들은 AMCD(2230)를 통해 SPU들(2220)에 의해 억세스된다.In this implementation, the TCAM 2220 may include multiple tables that include both a threat signature table and an ACL filter table. The threat signature table of the TCAM 2220 is accessed by the MCPU 2056 and the ACL filters of the TCAM 2220 are accessed by the SPUs 2220 through the AMCD 2230.

선택적인 실시예에서, 외부의 위협 분석 장치는 RSP(2100)로부터 오프 칩(off chip)으로 오퍼레이션한다. 이 실시예에서는, 분리된 TCAM은 위협 서명을 포함할 수 있을 것이다. SPU(2200)는 토큰들(2068)을 외부 위협 분석 장치로 전송하고, 그러면 그 장치는 동적으로 생성된 ACL 필터들(2070)을 MCPU(2056)로 출력한다. 그러면 MCPU(2056)는 그 동적으로 생성된 ACL 필터들(2070)을 TCAM(2220)에 기록한다. 그리고 SPU(2200)는 ACL 검사 오퍼레이션(2050)을 위해 TCAM(2220) 내의 ACL 필터들을 억세스하고 도 35에서 설명된 ACL 오퍼레이션(2062)을 출력한다.In an alternative embodiment, the external threat analysis device operates off chip from the RSP 2100. In this embodiment, the separated TCAM may include a threat signature. SPU 2200 sends tokens 2068 to an external threat analysis device, which then outputs dynamically generated ACL filters 2070 to MCPU 2056. MCPU 2056 then writes the dynamically generated ACL filters 2070 to TCAM 2220. The SPU 2200 then accesses the ACL filters in the TCAM 2220 for the ACL checking operation 2050 and outputs the ACL operation 2062 described in FIG. 35.

ACL 필터들(2070)을 실제로 생성하는 것은 본 발명이 속한 기술 분야의 당업자에게는 잘 알려진 것이므로 더 이상의 상세한 설명은 하지 않는다. 그러나, 침입 탐지 시스템들은 데이터 스트림의 확인된 문장구조 요소들과 연관된 토큰들에 따라서 ACL 필터들을 이전부터 계속 동적으로 생성하여 왔다고는 믿어지지 않는다.The actual creation of ACL filters 2070 is well known to those skilled in the art to which the present invention pertains, and no further detailed description is provided. However, it is not believed that intrusion detection systems have been continuously generating ACL filters dynamically according to tokens associated with identified syntax elements in the data stream.

조각화된Fragmented 패킷들에서의 침입 검출 Intrusion Detection in Packets

현재 존재하는 텍스트 스캐너들은 인터넷 메시지들에서 알려진 패턴들을 찾는다. 위협을 잘못 탐지하는 것을 피하기 위해 연속된 긴 텍스트가 매치되고, 대개는 일상적인 표현의 스타일 패턴을 매치시키는 기술을 사용한다. 그러나, 이러한 기술들은 연속적인 바이트를 필요로 하거나 또는 위협을 스캔하는 것이 광대한 컨텍스트 메모리를 사용할 것을 필요로 한다.Currently existing text scanners look for known patterns in Internet messages. To avoid false detection of a threat, a series of long texts are matched, usually using techniques to match the style pattern of everyday expressions. However, these techniques require contiguous bytes or scan for threats using extensive context memory.

예를 들면, 아래와 같이 바이러스 스크립트가 하나의 긴 라인으로 저장될 수 있다.For example, a virus script can be stored as one long line, as shown below.

모든 파일들에 대해 :For all files:

c:\; {open(xxx); delete(xxx); close(xxx);} end.c: \; {open (xxx); delete (xxx); close (xxx);} end.

따라서 앤티 바이러스 스캐너는 전체 텍스트 스트링을 대상으로 찾아야 한다:Therefore, the antivirus scanner must search for the full text string:

s/*open(*);delete(*);close(*)*/s / * open (*); delete (*); close (*) * /

그러나, 공격자는 다중의 패킷 조각화들 사이에서 바이러스를 다음과 같이 퍼트릴 수 있을 것이다.However, an attacker could spread the virus between multiple packet fragments as follows.

IP frag #1:For all files in c:\;{ open(xxx);IP frag # 1: For all files in c: \; {open (xxx);

IP frag #2:delete(xxx);close(xxx);} end;IP frag # 2: delete (xxx); close (xxx);} end;

통상적인 바이러스 스캐너는 상기와 같이 조각화된 IP 패킷들에서는 바이러스를 탐지할 수 없을 수 있다. TCP/IP 프로토콜이 결국은 조각화된 메시지를 같이 되돌려 보내는 시점에, 바이러스는 이미 사설 네트워크에 침투해있다. RSP(2100)는 상기에 설명된 침입 탐지 오퍼레이션을 처리하기 전에 조각화된 패킷들을 탐지하고 재조립한다. 이것은 IDS가 다중의 조각화된 패킷들에 확대되는 바이러스를 탐지하게 한다. Conventional virus scanners may not be able to detect viruses in such fragmented IP packets. By the time the TCP / IP protocol finally sends back fragmented messages, the virus has already penetrated the private network. The RSP 2100 detects and reassembles fragmented packets before processing the intrusion detection operation described above. This allows IDS to detect viruses that are spread over 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 includes a flowchart 2500 illustrating how the RSP 2100 in FIG. 36 detects a virus in fragmented packets. 36 and 42A, a packet is received at an input buffer 2140 through an input port 2120 at block 2502. In block 2510 the DXP 2180 begins parsing through the headers of the packet in the input buffer 2140. DXP 2180 stops parsing through the headers of the received packet if it is determined that the packet is an IP-fragmented packet. Preferably, DXP 2180 parses completely through IP headers, but stops parsing through certain headers belonging to subsequent layers (such as TCP, UDP, iSCSI, etc.). DXP 2180 stops parsing when instructed by the grammar on parser stack 2185 or by SPU 2200.

다음 블록 2520에 의하면, DXP(2180)는 SCT(2210)로부터 적합한 마이크로명령들을 로딩하고 입력 버퍼(2140)로부터 조각화된 패킷을 독출할 것을 SPU(2200)에 신호한다. 다음 블록 2530에 의하면, SPU(2200)는 스트리밍 캐시(2270)를 통해 조각화된 패킷을 DRAM(2280)에 기입한다. 블록들 2520 및 2530이 두개의 개별 단계들로서 도시될지라도 상기 블록들은 패킷을 동시에 독출하고 기입하는 SPU(2200)를 가지고 하나의 단계로서 선택적으로 수행될 수 있다. 이러한 SPU(2200)에 의한 동시적인 독출 및 기입은 SPU 파이프라이닝으로 알려져 있는데, SPU(2200)는 시맨틱 프로세서(2100)내의 두개의 블록들 간에 전송될 스트리밍 데이터를 위한 관로 또는 파이프라인으로서 동작한다.According to the next block 2520, the DXP 2180 signals the SPU 2200 to load the appropriate microinstructions from the SCT 2210 and to read the fragmented packet from the input buffer 2140. According to the next block 2530, the SPU 2200 writes the fragmented packet to the DRAM 2280 via the streaming cache 2270. Although blocks 2520 and 2530 are shown as two separate steps, the blocks may optionally be performed as one step with an SPU 2200 that simultaneously reads and writes packets. Simultaneous reading and writing by this SPU 2200 is known as SPU pipelining, which acts as a pipeline or pipeline for streaming data to be transmitted between two blocks in the semantic processor 2100.

다음 결정 블록 2540에 의하면, SPU(2200)는 콘텍스트 제어 블록(CCB)이 정확한 IP 패킷 단편의 수집 및 순서화를 위해 할당되었는지를 결정한다. 바람직하기로는, IP-조각화된 패킷에 대응하는 단편들을 수집하고 순서화하기 위한 CCB는 DRAM(2280)에 저장된다. CCB는 DRAM(2280)내의 IP 단편들에 대한 포인터들, 도착하지 않은 IP-단편 패킷들에 대한 비트 마스크 및 할당된 시간 기간 이후에 부가적인 IP-단편 패킷들을 대기하는 것을 중지하고 DRAM(2280)내의 CCB에 저장된 데이터를 해제하도록 시맨틱 프로세서(2100)에 강요하기 위한 타이머 값을 포함한다.According to the next decision block 2540, the SPU 2200 determines whether a context control block (CCB) has been allocated for the collection and ordering of the correct IP packet fragment. Preferably, a CCB for collecting and ordering fragments corresponding to the IP-fragmented packet is stored in DRAM 2280. The CCB stops waiting for pointers to IP fragments in DRAM 2280, bit masks for IP IP fragment packets that do not arrive, and additional IP fragment fragments after the allotted time period and DRAM 2280. A timer value for forcing the semantic processor 2100 to release the data stored in the CCB within.

바람직하기로는 SPU(2200)는 수신된 IP 패킷 단편의 헤더로부터 식별 정보 및 프로토콜과 결합된 수신된 IP 조각화된 패킷의 IP 소스 주소를 키로서 사용하여 AMCD의 (2230) 콘텐트-어드레싱가능한 메모리(CAM) 룩업 기능에 액세스함으로써 CCB가 할당되었는지를 결정한다. 선택적으로, IP 단편 키들은 DRAM(2280)내의 개별 CCB 테이블에 저장되고 수신된 IP 패킷 단편의 헤더로부터의 식별 정보와 프로토콜과 결합된 수신된 IP 조각화된 패킷의 IP 소스 주소를 사용함으로써 CAM로 액세스된다. IP 단편 키들의 이러한 선택적인 어드레싱은 키 중복 및 사이징(sizing) 문제를 회피한다.Preferably, the SPU 2200 uses the 2205 content-addressable memory (CAM) of the AMCD using the IP source address of the received IP fragmented packet combined with the identification and protocol from the header of the received IP packet fragment as a key. Determine whether the CCB has been assigned by accessing the lookup function. Optionally, IP fragment keys are stored in a separate CCB table in DRAM 2280 and accessed by the CAM by using the identification information from the header of the received IP packet fragment and the IP source address of the received IP fragmented packet combined with the protocol. do. This selective addressing of IP fragment keys avoids key duplication and sizing issues.

CCB가 특정 IP-조각화된 패킷에 대한 단편들의 수집 및 순서화를 위해 할당되지 않았다고 SPU(2200)가 결정하는 경우, SPU(2200)가 CCB를 할당하는 블록 2550으로 실행이 진행된다. 바람직하기로는 SPU(2200)는 할당된 CCB에 대응하는 키, 즉 수신된 IP 단편의 IP 소스 주소 및 수신된 IP 조각화된 패킷의 헤더로부터의 식별 정보와 프로토콜을 포함하는 키를 AMCD(2230)내의 IP 단편 CCB 테이블에 입력하고, CCB에 위치한 타이머를 개시한다. 주어진 조각화된 패킷에 대한 제1 단편이 수신되는 경우, IP 헤더는 또한 나중의 재순환을 위해 CCB에 저장된다. 추가적인 단편들을 위해, IP 헤더는 저장될 필요가 없다.If the SPU 2200 determines that the CCB has not been allocated for the collection and ordering of fragments for a particular IP-fragmented packet, execution proceeds to block 2550 where the SPU 2200 allocates the CCB. Preferably, the SPU 2200 may store a key in the AMCD 2230 that includes a key corresponding to the assigned CCB, i.e., the identification information and protocol from the IP source address of the received IP fragment and the header of the received IP fragmented packet. Enter the IP fragment CCB table and start the timer located in the CCB. When the first fragment for a given fragmented packet is received, the IP header is also stored in the CCB for later recycling. For additional fragments, the IP header does not need to be stored.

일단 CCB가 다음 블록 2560에 따라, IP-조각화된 패킷의 수집 및 순서화를 위해 할당되면, SPU(2200)는 IP-단편(빼기 그것의 IP 헤더) 패킷에 대한 포인터를 CCB내의 DRAM(2280)에 저장한다. 단편들에 대한 포인터들은 예를 들어 링크된 리스트로서 CCB에 배열될 수 있다. 바람직하기로는, SPU(2200)는 또한 수신된 단편에 대응하는 마스크의 부분을 수신된 것으로서 마킹함으로써 새롭게 할당된 CCB에서 비트 마스크를 갱신한다.Once the CCB is allocated for collection and ordering of IP-fragmented packets, according to the next block 2560, the SPU 2200 sends a pointer to an IP-fragment (minus its IP header) packet to the DRAM 2280 in the CCB. Save it. The pointers to the fragments can be arranged in the CCB as a linked list, for example. Preferably, SPU 2200 also updates the bit mask in the newly allocated CCB by marking the portion of the mask corresponding to the received fragment as received.

다음 결정 블록 2570에 의하면, SPU(2200)는 패킷으로부터의 모든 IP-단편들이 수신되었는지를 결정한다. 바람직하기로는, 이 결정은 CCB에서 비트 마스크를 사용함으로써 달성된다. 본 발명과 함께 사용하기 위하여, 비트 마스크를 구현하는데 쉽사리 이용가능한 다수의 기술들 또는 동등한 추적 메커니즘이 존재한다는 것을 당업자는 이해할 수 있다. 모든 IP-단편들이 조각화된 패킷에 대해 수신되지 않은 경우, 시맨틱 프로세서(2100)는 다른 단편이 수신될 때까지 상기 조각화된 패킷에 대한 처리를 더 연기할 수 있다.According to the next decision block 2570, the SPU 2200 determines whether all IP-fragments from the packet have been received. Preferably, this determination is accomplished by using a bit mask in the CCB. Those skilled in the art will appreciate that for use with the present invention, there are a number of techniques or equivalent tracking mechanisms readily available for implementing a bit mask. If all IP-fragments are not received for fragmented packets, the semantic processor 2100 may further delay processing for the fragmented packets until another fragment is received.

다음 블록 2580에 의하면, 모든 IP-단편들이 수신된 후에, SPU(2200)는 정확한 순서로 DRAM(2280)으로부터 IP 단편들을 독출하고 상기에 밝혀진 침입 탐지 처리와 같은, 부가적인 파싱 및 처리를 위해 재순환 버퍼(2160)에 그들을 기입한다. 본 발명의 일 실시예에서, SPU(2200)는 단지 특정화된 헤더 및 (조각화 비트가 설정되지 않은) 재조립된 IP 패킷의 제1 부분을 재순환 버퍼(2160)에 기입한다. According to the next block 2580, after all IP-fragments have been received, the SPU 2200 reads the IP fragments from the DRAM 2280 in the correct order and recycles them for further parsing and processing, such as the intrusion detection process described above. Write them to buffer 2160. In one embodiment of the invention, the SPU 2200 only writes the specified header and the first portion of the reassembled IP packet (with no fragmentation bits set) to the recycle buffer 2160.

특정화된 헤더는, DXP(2180)가 모든 IP 조각화된 패킷들을 재순환 버퍼(2160)에 전송할 필요없이 DRAM(2280)에 저장된 재조립된 IP-조각화된 패킷의 처리를 지시하게 할 수 있다. 특정화된 헤더는 IDS 동작들(2018) 및 CCB에 대한 포인터를 포함하는 파서 문법을 로딩하는 지정된 비-터미널 심볼로 구성될 수 있다. 그다음 파서(2180)는 정상적으로 IP 헤더를 파싱하고, 상위-계층(예를 들어 TCP) 헤더들을 파싱하는 것을 진행한다. 바이러스를 포함할 수 있는 재순환 버퍼(2160)내의 재조립된 패킷에서 시맨틱 요소가 식별되는 경우, DXP(2180)는 상기에 설명된 침입 탐지 동작들(2050, 2052 및 2054)을 수행하는 SCT(2210)로부터 명령들을 로딩하도록 SPU(2200)에 신호한다. 예를 들어, 재조립된 패킷이 이메일 메시지를 포함하는 것으로서 식별되는 경우, DXP(2180)는 상술된 다른 이메일 메시지 필드들에 대응하는 토큰들을 생성할 것을 SPU(2200)에 지시한다.The specified header may cause the DXP 2180 to direct the processing of the reassembled IP-fragmented packet stored in the DRAM 2280 without having to send all IP fragmented packets to the recycle buffer 2160. The specified header may consist of a designated non-terminal symbol that loads a parser grammar containing IDS operations 2018 and a pointer to the CCB. Parser 2180 then parses the IP header normally and proceeds to parse the upper-layer (eg TCP) headers. If a semantic element is identified in the reassembled packet in recycle buffer 2160 that may contain a virus, DXP 2180 performs SCT 2210 to perform intrusion detection operations 2050, 2052, and 2054 described above. Signal the SPU 2200 to load instructions. For example, if the reassembled packet is identified as containing an email message, the DXP 2180 instructs the SPU 2200 to generate tokens corresponding to the other email message fields described above.

도 42b는 IDS(2018)가 다수의 TCP 패킷들에 대한 침입 동작들을 수행하는 방법을 도시한 흐름도를 포함한다. 블록 2592A에 의하면, 전송 제어 프로토콜(TCP) 세션이 개시기 및 RSP(2100)를 호스팅하는 네트워크 처리 장치 간에 설정된다. RSP(2100)는 TCP 세션을 설정하기 위하여 파서 테이블(2170)에 적합한 문법과 SCT(2210)에 PRT(2190) 및 마이크로코드를 포함한다. 일 실시예에서, 하나 이상의 SPU들(2200)은, TCP 재순서화, 윈도 사이징 제약들 및 아무런 추가 TCP 패킷들도 할당된 시간 프레임내에 개시기로부터 도착하지 않는 경우 TCP 세션을 종료하기 위한 타이머를 위해 DRAM(2280)에 CCB를 할당하는 것을 포함하여, TCP 세션에 대한 상태를 구성하고 유지한다.42B includes a flow diagram illustrating how IDS 2018 performs intrusion operations on multiple TCP packets. According to block 2592A, a Transmission Control Protocol (TCP) session is established between the initiator and the network processing device hosting the RSP 2100. The RSP 2100 includes a PRT 2190 and microcode in the SCT 2210 and a grammar suitable for the parser table 2170 to establish a TCP session. In one embodiment, one or more SPUs 2200 are configured for a timer to terminate a TCP session if TCP reordering, window sizing constraints and no additional TCP packets arrive from the initiator within the allocated time frame. Configure and maintain a state for the TCP session, including allocating a CCB to DRAM 2280.

다음 블록 2592B에 의하면, TCP 세션이 개시기와 설정된 후, RSP(2100)는 입력 버퍼(2140)에 도착할, 블록 2592A에서 설정된 TCP 세션에 대응하는, TCP 패킷들을 기다린다. RSP(2100)는 입력 데이터를 처리하기 위한 복수의 SPU들(2200)을 가질 수 있기 때문에, RSP(2100)는 블록 2592A에서 설정된 TCP 세션에 대응하는 다음 TCP 패킷을 기다리는 동안 병행하여 다수의 패킷들을 수신하고 처리할 수 있다.According to the next block 2592B, after the TCP session is established with the initiator, the RSP 2100 waits for TCP packets, corresponding to the TCP session established at block 2592A, to arrive at the input buffer 2140. Since the RSP 2100 may have a plurality of SPUs 2200 for processing input data, the RSP 2100 may receive multiple packets in parallel while waiting for the next TCP packet corresponding to the TCP session established at block 2592A. Can be received and processed.

TCP 패킷은 블록 2592C에서 입력 포트(2120)를 통해 입력 버퍼(2140)에서 수신되고, DXP(2180)는 입력 버퍼(2140)내의 패킷의 TCP 헤더를 통해 파싱한다. DXP(2180)는 실행되는 경우, 입력 버퍼(2140)로부터 수신된 패킷을 독출하고 스트리밍 캐시(2270)를 통해 DRAM(2280)에 수신된 패킷을 기입할 것을 할당된 SPU(2200)에게 요구하는 할당된 SPU(2200) 마이크로명령들을 송신한다. 그다음 할당된 SPU(2200)는 TCP CCB의 위치를 찾고, TCP CCB에 대한 DRAM(2280)내의 수신된 패킷의 위치에 대한 포인터를 저장하며, TCP CCB에서 타이머를 다시 시작한다. 그다음 할당된 SPU(2200)는 해제되고 DXP(2180)가 결정할 때 다른 처리를 위해 할당될 수 있다.The TCP packet is received at input buffer 2140 through input port 2120 at block 2592C, and DXP 2180 parses through the TCP header of the packet in input buffer 2140. The DXP 2180, when executed, allocates a request to the assigned SPU 2200 to read a packet received from the input buffer 2140 and write the received packet to the DRAM 2280 via the streaming cache 2270. The SPU 2200 microcommands. The assigned SPU 2200 then finds the location of the TCP CCB, stores a pointer to the location of the received packet in the DRAM 2280 for the TCP CCB, and restarts the timer at the TCP CCB. The assigned SPU 2200 may then be released and allocated for other processing when the DXP 2180 determines.

다음 블록 2592D에 의하면, 수신된 TCP 패킷은 필요한 경우, 페이로드 데이터의 정확한 순서화를 보장하기 위하여 재순서화된다. 당 기술분야에 잘 알려져 있는 바와 같이, TCP 패킷은 모든 이전의 패킷들이 도착한 경우 적합한 순서로 있는 것으로 간주된다. 수신된 패킷이 적합한 순서로 있다고 결정되는 경우, 담당하는 SPU(2200)는 재순환을 위해 SCT(2210)로부터 마이크로명령들을 로드한다.According to the next block 2592D, the received TCP packets are re-ordered if necessary to ensure correct ordering of payload data. As is well known in the art, TCP packets are considered to be in the proper order when all previous packets have arrived. If it is determined that the received packets are in the proper order, the responsible SPU 2200 loads microinstructions from the SCT 2210 for recycling.

다음 블록 2592E에 의하면, 할당된 SPU는 특정된 TCP 헤더를 생성하기 위하여 TCP 헤더로부터의 TCP 접속 정보와 TCP 비-터미널을 결합한다. 그다음 할당된 SPU(2200)는 재순환 버퍼(2160)에 특정화된 TCP 헤더를 기입한다. 선택적으로, 특정화된 TCP 헤더는 그것의 대응하는 TCP 페이로드와 함께 재순환 버퍼(2160)로 송신될 수 있다.According to the next block 2592E, the assigned SPU combines the TCP connection information and the TCP non-terminal from the TCP header to generate the specified TCP header. The allocated SPU 2200 then writes the specified TCP header to the recycle buffer 2160. Optionally, the specified TCP header can be sent to recycling buffer 2160 along with its corresponding TCP payload.

다음 블록 2592F에 의하면, 특정화된 TCP 헤더 및 재조립된 TCP 페이로드는 TCP 데이터에서 부가적인 시맨틱 요소들을 식별하기 위하여 DXP(2180)에 의해 파싱된다. 아마도 침입을 포함하는 것으로서 식별된 어떤 시맨틱 요소들도 상술된 침입 동작들에 따라 SPU들(2200)에 의해 처리된다.According to the next block 2592F, the specified TCP header and the reassembled TCP payload are parsed by the DXP 2180 to identify additional semantic elements in the TCP data. Any semantic elements, perhaps identified as containing an intrusion, are processed by the SPUs 2200 in accordance with the intrusion operations described above.

분산된 토큰 생성Distributed Token Generation

도 43은 네트워크(2600)에서 동작하는 분산 IDS 시스템의 하나의 구현예를 도시한 것이다. 네트워크(2600)는 방화벽(2610A), 이메일 서버(2610B) 및 웹 서버(2610C)와 같이 상이한 활동들을 수행하는 상이한 네트워크 처리 장치들(2610)을 포함한다. 상이한 네트워크 장치들(2610A-C) 각각은 상술된 IDS(2018)와 유사한 IDS(2620A-C)를 동작시킨다. 일 실시예에서, 하나 이상의 IDS(2620)가 도 36 내지 도 41에서 상기에 논의된 것과 유사하게 RSP(2100))를 사용하여 구현된다. 하지만, 다른 실시예들에서, 하나 이상의 IDS(2620)는 다른 하드웨어 구조들을 사용하여 구현된다.FIG. 43 illustrates one implementation of a distributed IDS system operating in the network 2600. Network 2600 includes different network processing devices 2610 that perform different activities, such as firewall 2610A, email server 2610B, and web server 2610C. Each of the different network devices 2610A-C operate an IDS 2620A-C similar to the IDS 2018 described above. In one embodiment, one or more IDS 2620 is implemented using RSP 2100 similar to that discussed above in FIGS. 36-41. However, in other embodiments, one or more IDS 2620 is implemented using other hardware structures.

각 네트워크 처리 장치(2610)는 집중된 침입 분석을 수행하는 중앙 침입 탐지기(2670)에 접속되어 있다. 각 IDS(2620A-2620C)는 입력 데이터 스트림을 파싱하고 각각 도 35에서 상술된 토큰들(2068)과 유사한, 토큰들(2640A-C)을 생성한다. 토큰들(2640)은 중앙 침입 탐지기(2670)로 송신된다.Each network processing unit 2610 is connected to a central intrusion detector 2670 that performs centralized intrusion analysis. Each IDS 2620A-2620C parses the input data stream and generates tokens 2640A-C, respectively, similar to the tokens 2068 described above in FIG. 35. Tokens 2640 are sent to a central intrusion detector 2670.

도 43 및 도 44를 참조하면, 블록 2802에서 중앙 침입 탐지기(2670)는 각 IDS(2620)로부터 토큰들(2640)을 수신한다. 블록 2804에서 침입 탐지기(2670)는 토큰들(2640)에 따라 상이한 데이터 흐름들에 대한 트래픽 패턴들을 분석한다. 그다음 블록 2806에서 필터들이 생성되고 분석에 따라 블록 2808에서 위협 서명들이 생성될 수 있다. 그다음 새로운 필터들 및 위협 서명들은 블록 2810에서 각 IDS(2620)로 분배된다.43 and 44, in block 2802 the central intrusion detector 2670 receives tokens 2640 from each IDS 2620. In block 2804 the intrusion detector 2670 analyzes traffic patterns for different data flows according to the tokens 2640. Filters may then be created at block 2806 and threat signatures may be generated at block 2808 in accordance with the analysis. New filters and threat signatures are then distributed to each IDS 2620 at block 2810.

일 예에서, 도 43에 있는 방화벽(2610B)은 공중 인터넷(2630)으로부터 수신된 신규 데이터 흐름을 식별하는 토큰들(2640B)을 생성할 수 있다. 토큰(2640B)은 새로운 소스 IP 주소 A를 식별하는 중앙 침입 탐지기(2670)로 송신된다. 웹 서버(2610C)는 또한 침입 탐지기(2670)로 토큰들(2640C)을 송신할 수 있다. 제1 토큰(2640C_1)은 새로운 소스 IP 주소 A를 식별하고 제2 토큰(2640C_2)은 새로운 소스 IP 주소 A가 웹 서버(2610C)내의 파일에 액세스하는데 사용되었다는 것을 나타낸다.In one example, the firewall 2610B in FIG. 43 may generate tokens 2640B that identify a new data flow received from the public internet 2630. The token 2640B is sent to the central intrusion detector 2670 identifying the new source IP address A. The web server 2610C may also send tokens 2640C to the intrusion detector 2670. The first token 2640C_1 identifies the new source IP address A and the second token 2640C_2 indicates that the new source IP address A was used to access the file in the web server 2610C.

중앙 침입 탐지기(2670)는 정상적으로 탐지될 수 없는 가능한 바이러스 또는 말웨어(malware)를 식별하기 위하여 토큰들(2640B, 2640C_1 및 2640C_2)을 상관시킨다. 예를 들어, 침입 탐지기(2670)는 방화벽(2610B)으로부터의 토큰(2640B)에서 수신된 새로운 소스 IP 주소 A가 또한 웹 서버(2610C)에서 파일을 연 동일한 IP 주소 A라는 것을 결정할 수 있다. 이 예에서 공중 인터넷(2630)으로부터의 외부 링크들은 내부 네트워크 파일들을 여는 것으로 가정되지 않는다.Central intrusion detector 2670 correlates tokens 2640B, 2640C_1 and 2640C_2 to identify possible viruses or malware that cannot normally be detected. For example, intrusion detector 2670 may determine that the new source IP address A received at token 2640B from firewall 2610B is also the same IP address A that opened the file at web server 2610C. External links from the public internet 2630 in this example are not assumed to open internal network files.

토큰(2640B)이 방화벽(2610B)으로부터 수신되었기 때문에, 중앙 침입 탐지기(2670)는 IP 주소 A가 공중 인터넷(2630)으로부터 외부에서 수신되었다고 결론짓는다. 따라서, 중앙 침입 탐지기(2670)는 방화벽(2610B)내의 IDS(2620B)에, 그리고 아마도 다른 네트워크 장치들(2610A 및 2610C)에 새로운 필터(2750)를 송신하는데, 이것은 소스 IP 주소 A를 지닌 패킷들이 네트워크(2600)에 진입하는 것을 방해한다.Since the token 2640B was received from the firewall 2610B, the central intrusion detector 2670 concludes that IP address A was received externally from the public Internet 2630. Thus, the central intrusion detector 2670 sends a new filter 2750 to the IDS 2620B in the firewall 2610B and possibly to other network devices 2610A and 2610C, which are packets with source IP address A Interfere with entering network 2600.

다른 예에서, 이메일 서버(2610A)내의 IDS(2620A)는 이메일이 미지의 소스 IP 주소 A로부터 수신되었다는 것을 나타내는 토큰(2640A_1)을 생성한다. IDS(2620A)는 또한 토큰(2640A_1)에서 식별된 이메일에 포함된 MIME/첨부물을 식별하는 토큰(2640A_2)을 송신한다.In another example, IDS 2620A in email server 2610A generates token 2640A_1 indicating that the email was received from unknown source IP address A. IDS 2620A also sends a token 2640A_2 that identifies the MIME / attachment included in the email identified in token 2640A_1.

중앙 침입 탐지기(2670)는 IP 소스 주소 A와 연관된 어떤 데이터 흐름들이 바이러스 또는 말웨어를 포함할 수 있다는 것을 이전에 수신된 토큰들(2640B, 2640C_1 및 2640C_2)로부터 결정한다. 따라서, 중앙 침입 탐지기(2670)는 토큰(2640A_2)에 포함된 MIME/첨부물의 콘텐트 및/또는 이름과 대응하는 새로운 서명(2660)을 동적으로 생성한다. 중앙 침입 탐지기(2670)는 메일 서버(2610A)내의 IDS(2620A)에 그리고 아마도 네트워크(2600)에서 동작하는 그 밖의 모든 IDS(2620)에 새로운 서명(2660)을 송신한다. 그다음 IDS(2620A)는 도 35에 도시된 위협 서명들(58)에 새로운 위협 서명을 추가한다.Central intrusion detector 2670 determines from previously received tokens 2640B, 2640C_1 and 2640C_2 that certain data flows associated with IP source address A may include a virus or malware. Accordingly, the central intrusion detector 2670 dynamically generates a new signature 2660 corresponding to the content and / or name of the MIME / attachment contained in the token 2640A_2. Central intrusion detector 2670 sends a new signature 2660 to IDS 2620A in mail server 2610A and possibly to all other IDS 2620 operating on network 2600. IDS 2620A then adds a new threat signature to threat signatures 58 shown in FIG.

따라서, IDS 시스템(2600)은 토큰들(2640)의 시맨틱 콘텐트 및 또한 토큰들을 송신하는 네트워크 처리 장치(2610)의 유형에 따라 필터들 및/또는 서명들을 생성할 수 있다. 예를 들어, 방화벽(2610B)에 의해 생성된 토큰들(2640B)은 네트워크내의 다른 네트워크 처리 장치들로부터 생성된 토큰들보다 더 많은 의심을 가지고 처리될 수 있다. 또한, 상술된 바와 같이, 방화벽(2610B)에 의해 식별된 새로운 IP 주소들(공중 인터넷으로부터 수신된 IP 패킷들)에 관한 지식은 바이러스들을 더 철저하게 검출하기 위하여 이메일 서버(2610A) 또는 웹 서버(2610C)에 의해 탐지된 다른 동작들에 관한 지식과 상관될 수 있다.Thus, the IDS system 2600 may generate filters and / or signatures depending on the semantic content of the tokens 2640 and also the type of network processing device 2610 that transmits the tokens. For example, tokens 2640B generated by firewall 2610B may be processed with more suspicion than tokens generated from other network processing devices in the network. In addition, as discussed above, knowledge about new IP addresses (IP packets received from the public Internet) identified by firewall 2610B may be necessary to provide an email server (2610A) or web server (web server) to more thoroughly detect viruses. Correlated with knowledge of other operations detected by 2610C.

다른 실시예에서, 중앙 침입 탐지기(2670)는 검출된 바이러스 또는 다른 말 웨어와 관련된 어떤 네트워크 처리 장치들도 동작불능시킬 수 있다. 예를 들어, 바이러스(2660)는 PC(2662)에서 동작되는 IDS(2662)에 의해 검출될 수 있다. IDS(2662)는 중앙 침입 탐지기(2670)에게 바이러스(2660)에 대해 통지한다. 중앙 침입 탐지기(2670)는 바이러스(2660)의 소스가 식별되거나 제거될 때까지 네트워크(2600)의 나머지 부분으로부터 PC(2650)를 접속해제할 수 있다.In another embodiment, the central intrusion detector 2670 may disable any network processing devices associated with the detected virus or other malware. For example, virus 2660 may be detected by IDS 2662 operating on PC 2662. IDS 2662 notifies central intrusion detector 2670 about virus 2660. The central intrusion detector 2670 may disconnect the PC 2650 from the rest of the network 2600 until the source of the virus 2660 is identified or removed.

트리 검색의 확장성Scalability of Tree Search

상술된 IDS(2018)는 위협이 나타날 수 있는 세션 콘텍스트내에서 스캐닝함으로써 기존의 침입 탐지를 개선한다. 패턴 매치에 대해, 정규 표현보다는, 파서 트리가 사용된다. 패킷 데이터에서의 침입 탐지 및 다른 위협은 알려져 있는 위협의 것과 매칭하는 패턴들에 대한 입력 패킷 스트림을 "스캐닝"함으로써 수행된다.The IDS 2018 described above improves on existing intrusion detection by scanning within the session context in which threats may appear. For pattern matching, parser trees are used rather than regular expressions. Intrusion detection and other threats in packet data are performed by "scanning" the incoming packet stream for patterns that match those of known threats.

기존의 정규 표현 스캐너들은 패킷의 모든 바이트를 스캐닝해야 하고 패킷의 어떤 부분이 위협을 포함할 수 있는지를 결정하는 능력을 갖고 있지 않다. 예를 들어, 이메일에서의 위협은 이메일 첨부물을 통해서만 올 수 있다. 이메일 메시지의 정의된 본체는 어떤 소프트웨어가 일반적으로 예기치 않거나 악의적인 동작에서 동작하지 않을 ASCII 문자들의 스트링이다. 이메일 메시지들에 대한 첨부물은 다목적 인터넷 전자 우편(MIME: Multipurpose Internet Mail Extensions)과 같은, 특정의, 공개된 구문들 및 헤더들에 의해 정의된다.Conventional regular expression scanners have to scan every byte of a packet and do not have the ability to determine what part of the packet can contain a threat. For example, threats in email can only come through email attachments. The defined body of an e-mail message is a string of ASCII characters that some software will not normally operate in unexpected or malicious behavior. Attachments to email messages are defined by specific, published phrases and headers, such as Multipurpose Internet Mail Extensions (MIME).

더욱이, 이메일 메시지를 전송하는데 사용되는 IP 프로토콜의 헤더들은 종종 이메일 클라이언트가 악의적인 동작을 취하도록 야기할 수 없다. 전형적으로, 이메일 첨부물에서, 스크립트 또는 프로그램의 실행은 침입 문제를 야기한다. 그러므 로, 가능한 바이러스를 검출하기 위하여 단지 이메일 메시지의 MIME 부분들을 스캐닝할 필요가 있을 수 있다.Moreover, the headers of the IP protocol used to send email messages often cannot cause the email client to take malicious action. Typically, in an email attachment, the execution of a script or program causes an intrusion problem. Therefore, you may only need to scan the MIME parts of an email message to detect a possible virus.

이메일 메시지의 MIME 부분을 찾는 것은 이메일 메시지들을 전송하는데 사용되는 프로토콜들(TCP/IP); 및 이메일 MIME 포맷들의 이해를 필요로 한다. RSP(2100)는 신속히 파싱하고, 확장가능한 방식으로 메시지의 MIME 섹션들에 대해서만 바이러스 스캐닝을 시작한다. 이것은 스캐닝되어야 하는 패킷들의 수를 감소시키고 또한 각 패킷에서 스캐닝되어야 하는 바이트들의 수를 감소시킨다. RSP(2100)는 어떤 유형의 데이터가 스캐닝될 필요가 있고 어떤 유형의 스캐닝이 수행될 필요가 있는지를 IDS(2018)가 이해하도록 허용하는 입력 데이터 스트림의 시맨틱 분석을 수행한다. 이것은 IDS(2018)가 입력 스트림의 구문과 대응하는 토큰들(68)을 더 효율적으로 생성하게 한다.Finding the MIME portion of an email message includes the protocols (TCP / IP) used to send the email messages; And understanding of email MIME formats. The RSP 2100 quickly parses and starts virus scanning only for the MIME sections of the message in an extensible manner. This reduces the number of packets to be scanned and also reduces the number of bytes to be scanned in each packet. RSP 2100 performs a semantic analysis of the input data stream that allows IDS 2018 to understand what type of data needs to be scanned and what type of scanning needs to be performed. This allows IDS 2018 to more efficiently generate tokens 68 that correspond to the syntax of the input stream.

DXP(2180) 및 RSP(2100)의 다른 특징들은 이러한 유형의 위협 스캐닝을 위해 최적화되고 관용적인 하드웨어 구조들을 사용하는 정규 표현 스캐너들에 비해 개선된 성능을 가지고 있다. 예를 들어, 도 36의 파서 테이블(2170) 및 파서 스택(2185)에서 구현된 3진-콘텐트-어드레싱가능한-메모리(TCAM)와 공동으로, LL(k) 파서는 정규 표현 엔진들보다 고속으로 입력 스트림을 검색할 수 있다.Other features of the DXP 2180 and RSP 2100 have improved performance over regular expression scanners that use optimized and idiomatic hardware structures for this type of threat scanning. For example, in conjunction with the ternary-content-addressable-memory (TCAM) implemented in the parser table 2170 and parser stack 2185 of FIG. 36, the LL (k) parser is faster than regular expression engines. You can search the input stream.

정규 표현 스캐너는 가능한 매치를 결정하기에 앞서 중요 및 가변 길이 룩(look)을 필요로 한다. 와일드 카드 매칭은 또한 유일한 동작을 필요로 한다. 다른 한편으로, TCAM과 합동으로 LL(k) 파서는 와일드카드들의 과거 긴 스트링들을 스킵할 수 있고, 한 클록 사이클에서 특정 바이트들을 모두 매칭시킨다.Regular expression scanners require significant and variable length look before determining possible matches. Wildcard matching also requires unique behavior. On the other hand, in conjunction with TCAM, the LL (k) parser can skip past long strings of wildcards, matching all of the specific bytes in one clock cycle.

세션 Session 콘텐트Content 변경 change

도 45를 참조하면, IDS(2018)는 또한 식별된 세션 콘텍스트(2852)에서 정보를 추가 또는 변경하는데 사용될 수 있다. 즉, IDS(2018)는 침입 위협에서 식별된 패킷들을 단지 버리는 것에 한정되지 않는다. 도 45는 네트워크 처리 장치(2856)와 IP 링크(2866)를 설정하는 PC(2864)를 도시한 것이다. IDS(2018)는 장치(2856)에서 동작하고 상술된 바와 같이 IP 링크(2866)와 연관된 특정 IP 세션 콘텍스트(2852)를 식별한다. 예를 들어, IDS(2018)는 WAN(2850)에서 동작하는 다른 종단점 장치에 PC(2864)에 의해 송신된 HTTP 메시지들, FTTP 이메일 메시지들, SMTP 이메일 메시지들 등을 식별할 수 있다.Referring to FIG. 45, IDS 2018 may also be used to add or change information in the identified session context 2852. That is, IDS 2018 is not limited to simply discarding packets identified in an intrusion threat. 45 shows a PC 2864 for establishing an IP link 2866 with the network processing apparatus 2856. IDS 2018 operates at device 2856 and identifies a particular IP session context 2852 associated with IP link 2866 as described above. For example, IDS 2018 may identify HTTP messages, FTTP email messages, SMTP email messages, etc., sent by PC 2864 to another endpoint device operating on WAN 2850.

IDS(2018)는 식별된 세션 콘텍스트(2852)와 연관된 특정 유형의 콘텐트(2862)를 추가 또는 변경하도록 프로그램될 수 있다. 일 예에서, IDS(2018)는 이메일 또는 FTTP 메시지들에 포함된 문서들에서 신용 카드 번호들(2858)을 제거하도록 프로그램될 수 있다. 다른 예에서, IDS(2018)는 FTTP 또는 이메일 문서들에서 식별된 어떤 문서들에 디지털 워터마크(2860)를 추가하도록 프로그램될 수 있다. IDS(2018)는 예를 들어 PC(2864)의 IP 소스 주소를 포함하는 문서들에 디지털 워터마크(2860)를 추가할 수 있다.IDS 2018 may be programmed to add or change a particular type of content 2862 associated with the identified session context 2852. In one example, IDS 2018 may be programmed to remove credit card numbers 2858 from documents included in email or FTTP messages. In another example, IDS 2018 may be programmed to add a digital watermark 2860 to certain documents identified in FTTP or email documents. IDS 2018 may add a digital watermark 2860 to documents that include, for example, the IP source address of PC 2864.

RSP(2100)내의 DXP(2180)는 상술된 바와 같이 IP 링크(2864)를 통해 운반되는 다른 세션 콘텍스트(2852)를 식별한다. 그다음 SPU(2200)는 식별된 세션 콘텍스트(2852)와 연관된 다른 유형의 콘텐트(2862)와 연관된 토큰들을 생성할 수 있다. 예를 들어, SPU(2200)는 도 35에서 상술된 바와 같이 이메일 첨부물을 포함하는 토 큰들을 생성할 수 있다. RSP(2100)는 이메일 첨부물에 포함된 어떤 문서들도 검색할 수 있다.DXP 2180 in RSP 2100 identifies another session context 2852 carried over IP link 2864 as described above. SPU 2200 may then generate tokens associated with other types of content 2862 associated with the identified session context 2852. For example, SPU 2200 may generate tokens that include an email attachment as described above in FIG. 35. The RSP 2100 can search for any documents included in the email attachment.

제1 예에서, DXP(2180)는 WAN(2850)에 바깥으로 향하는 어떤 IP 패킷들도 식별할 수 있다. 그다음 DXP(2180)는 신용 카드 번호를 포함하는 패킷들에 포함된 어떤 문서들을 검색할 것을 SPU(2200)에 지시한다. 신용 카드 번호가 검출되는 경우, IDS(2018)는 신용 카드 번호를, 신용 카드 정보를 지우는 일련의 "X들"로 대체한다. 제2 예에서, SPU(2200)는 FTTP 또는 이메일 세션에서 검출된 문서에 디지털 워터마크(2860)를 추가한다. 그다음 변경된 신용 카드 정보 또는 워터마크를 지닌 문서는 FTTP 또는 이메일 세션에 대응하는 수신지 주소로 전송된다.In a first example, DXP 2180 may identify any IP packets destined outwards to WAN 2850. DXP 2180 then instructs SPU 2200 to retrieve any documents contained in packets containing the credit card number. If a credit card number is detected, IDS 2018 replaces the credit card number with a series of "Xs" that erase credit card information. In a second example, SPU 2200 adds a digital watermark 2860 to the document detected in the FTTP or email session. The document with the modified credit card information or watermark is then sent to the destination address corresponding to the FTTP or email session.

어떤 식별된 세션 콘텍스트(2852)와 연관된 어떤 유형의 콘텐트(2862)에 유사한 변경들이 행해질 수 있다. 예를 들어, 특정 IP 소스 또는 수신지 주소는 다른 IP 주소로 변경될 수 있고, 그다음 어떤 식별된 세션 콘텍스트(2852) 또는 세션 콘텐트(2862)에 따라 IP 네트워크(2850) 바깥으로 되돌려 송신될 수 있다.Similar changes can be made to any type of content 2862 associated with any identified session context 2852. For example, a particular IP source or destination address may be changed to a different IP address and then sent back out of IP network 2850 according to some identified session context 2852 or session content 2862. .

도 46은 더 효율적으로 데이터를 검색하기 위하여 콘텍스트 프리 문법(CFG: Context Free Grammar)을 사용하는 푸시다운 오토머턴(PDA) 엔진(3040)의 일 예를 도시한 것이다. 시맨틱 테이블(3042)은 PDA 엔진(3040)에 의해 관리되는 다른 시맨틱 상태들을 나타내는 비-터미널(NT) 심볼들(3046)을 포함한다. 각 시맨틱 상태(3046)는 또한 입력 데이터(3014)에 포함된 시맨틱 요소들(3015)과 연관된 하나 이상의 대응하는 시맨틱 엔트리들(3044)을 구비한다. 입력 데이터(3014)의 임의의 부분들(3060)은 현재의 비-터미널 심볼(3062)과 결합되고 시맨틱 테이블(3042)내의 엔트리들에 적용된다.FIG. 46 illustrates an example of a push down automaton (PDA) engine 3040 that uses Context Free Grammar (CFG) to retrieve data more efficiently. The semantic table 3042 includes non-terminal (NT) symbols 3046 representing other semantic states managed by the PDA engine 3040. Each semantic state 3046 also has one or more corresponding semantic entries 3044 associated with the semantic elements 3015 included in the input data 3014. Any portions 3060 of the input data 3014 are combined with the current non-terminal symbol 3022 and applied to entries in the semantic table 3042.

인덱스(3054)는 결합된 심볼(3062)과 입력 데이터 세그먼트(3060)와 일치하는 엔트리(3046, 3044)에 대응하는 시맨틱 테이블(3042)에 의해 출력된다. 시맨틱 상태 맵(3048)은 PDA 엔진(3040)에 대한 다음 시맨틱 상태를 나타내는 다음 비-터미널 심볼(3054)을 식별한다. 다음 비-터미널 심볼(3054)은 스택(3052)에 푸시되고 그다음 입력 데이터(3014)의 다음 세그먼트(3060)와 결합하기 위하여 스택(3052)으로부터 나온다. PDA 엔진(3040)은 타깃 검색 스트링(3016)이 검출될 때까지 입력 데이터(3014)를 계속 파싱한다.The index 3054 is output by the semantic table 3042 corresponding to the entries 3046 and 3044 that match the combined symbol 3062 and the input data segment 3060. The semantic state map 3048 identifies the next non-terminal symbol 3054 indicating the next semantic state for the PDA engine 3040. The next non-terminal symbol 3054 is pushed onto the stack 3052 and then exits the stack 3052 to combine with the next segment 3060 of the input data 3014. The PDA engine 3040 continues to parse the input data 3014 until the target search string 3016 is detected.

우선, 스택(3052)은 PDA 엔진(3040)에 대한 시맨틱 상태들이 다른 시맨틱 상태들 내부에 유지되도록 허용하는 터미널 및 비-터미널(NT) 심볼들을 포함할 수 있다. 이것은 다수의 시맨틱 상태들이 단일의 비-터미널 심볼에 의해 표시될 수 있게 하고 실질적으로 적은 수의 상태들이 PDA 엔진(3040)에 의해 관리될 필요가 있게 한다.First, stack 3052 may include terminal and non-terminal (NT) symbols that allow the semantic states for PDA engine 3040 to be maintained inside other semantic states. This allows multiple semantic states to be represented by a single non-terminal symbol and substantially fewer states need to be managed by the PDA engine 3040.

더욱이, 도 46 및 도 47을 참조하면, 연관된 시맨틱 요소가 검출될 때까지 보통 아무런 시맨틱 상태 전이도 존재하지 않는다. 예를 들어, PDA 엔진(3040)은 초기에 제1 시맨틱 상태(SS)(3070)에서 동작하고 전체 시맨틱 요소 "WWW."가 검출될 때까지 제2 시맨틱 상태(3072)로 전이하지 않는다. 유사하게, PDA 엔진(3040)은 다음 시맨틱 요소 ".ORG"가 검출될 때까지 시맨틱 상태(3072)에 남아 있는다. 그다음 시맨틱 상태(3072)로부터 시맨틱 상태(3074)로의 PDA 엔진(3040) 전이가 행해진다. 따라서, PDA 엔진(3040)의 하나의 특성은 시맨틱 상태들(3070, 3072 및 3074) 의 수가 입력 데이터(3014)에서 검색될 필요가 있는 시맨틱 요소들의 수에 대응하는 것이다.Furthermore, referring to FIGS. 46 and 47, there is usually no semantic state transition until an associated semantic element is detected. For example, the PDA engine 3040 initially operates in the first semantic state (SS) 3070 and does not transition to the second semantic state 3082 until the entire semantic element "WWW." Is detected. Similarly, PDA engine 3040 remains in semantic state 3072 until the next semantic element ".ORG" is detected. The PDA engine 3040 transition is then made from the semantic state 3072 to the semantic state 3074. Thus, one characteristic of the PDA engine 3040 is that the number of semantic states 3070, 3072 and 3074 corresponds to the number of semantic elements that need to be retrieved from the input data 3014.

역으로, 도 46의 PDA 엔진(3040)은 더 긴 문자 스트링들을 검색하기 위하여 어떤 부가적인 시맨틱 상태들도 필요로 하지 않을 수 있다. 예를 들어, 도 48은 PDA 엔진(3040)에게 스트링 "WWWW.XXXX.ORGG"를 검색할 것을 요구하는 대안적인 검색을 도시한 것이다. 이 예에서, PDA 엔진(3040)은 제1 시맨틱 요소 "WWWW."에서 부가적인 "W"를 검색하고 제2 시맨틱 요소 "ORGG"에서 부가적인 "G" 문자를 검색하도록 요구된다. 도 48에서 새로운 검색 스트링에 부가된 부가적인 문자들은 도 47에서 이전에 요구된 시맨틱 상태들(3070, 3071 및 3073)의 수를 증가시키지 않는다.Conversely, the PDA engine 3040 of FIG. 46 may not require any additional semantic states to retrieve longer character strings. For example, FIG. 48 illustrates an alternative search that requires the PDA engine 3040 to search for the string "WWWW.XXXX.ORGG". In this example, the PDA engine 3040 is required to search for an additional "W" in the first semantic element "WWWW." And to search for an additional "G" character in the second semantic element "ORGG." Additional characters added to the new search string in FIG. 48 do not increase the number of semantic states 3070, 3071 and 3073 previously requested in FIG. 47.

PDA 엔진(3040)은 또한 상태 분기를 감소시키거나 제거할 수 있다. PDA 엔진(3040)은 ".ORG" 시맨틱 요소를 검색하는 동일한 시맨틱 상태(3072)에 제2 "WWW." 스트링의 가능성을 유지함으로써 부가적인 분기 상태들을 제거한다. 이것은 도 47에서 경로(3075)로 표시되는데, PDA 엔진(3040)은 "WWW."의 제2 가능한 발생 및 ".ORG"를 검색하는 동안 시맨틱 상태(3072)에 남아 있다.PDA engine 3040 may also reduce or eliminate state branching. The PDA engine 3040 has a second "WWW." In the same semantic state 3082 that retrieves the ".ORG" semantic element. Eliminating additional branch states by maintaining the likelihood of a string. This is indicated by path 3075 in FIG. 47, where PDA engine 3040 remains in the semantic state 3082 while searching for a second possible occurrence of " WWW. " And ".ORG".

PDA 엔진(3040)의 다른 양상은 부가적인 검색 스트링들이 시맨틱 테이블(3042)의 복잡성에 영향을 주지 않거나 복잡성을 증가시키지 않고 추가될 수 있다는 것이다. 도 49를 참조하면, 도 46의 PDA 엔진(3040)에 의해 수행된 검색에 추가된 제3 시맨틱 요소 ".EXE"가 도시되어 있다. 상기 추가 시맨틱 요소 ".EXE"는 시맨틱 테이블(3042)에 단지 하나의 추가적인 시맨틱 상태(3076)만을 추가한다.Another aspect of the PDA engine 3040 is that additional search strings can be added without affecting or increasing the complexity of the semantic table 3042. Referring to FIG. 49, there is shown a third semantic element ".EXE" added to the search performed by the PDA engine 3040 of FIG. 46. The additional semantic element ".EXE" adds only one additional semantic state 3076 to the semantic table 3042.

따라서, 도 46의 PDA 구조는 추가적인 검색 기준을 추가하는 경우 더 예측가능하고 안정적인 선형 상태 확장을 가지는 더 컴팩트하고 효율적인 상태 테이블들을 초래한다. 예를 들어, 새로운 스트링이 데이터 검색에 추가되는 경우, 전체 시맨틱 테이블(3042)은 다시 쓰여질 필요가 없고 단지 증가하는 추가적인 시맨틱 엔트리들만을 필요로 한다.Thus, the PDA architecture of FIG. 46 results in more compact and efficient state tables with more predictable and stable linear state expansion when adding additional search criteria. For example, if a new string is added to the data retrieval, the entire semantic table 3042 does not need to be rewritten but only needs incremental additional semantic entries.

예시적인 Illustrative 구현예Embodiment

도 50 내지 도 54는 이전에 도 46에 도시된 PDA 엔진(3040)에 의해 실행된 예시적인 PDA 콘텍스트 프리 문법을 더 상세히 도시한 것이다. 우선 도 50을 참조하면, PDA 엔진(3040)이 URL 스트링 "WWW.XXX.ORG"를 검색하는 경우 동일한 검색 예가 사용된다. 물론 이것은 단지 하나의 예이고, 어떤 스트링 또는 문자들의 조합도 PDA 엔진(3040)을 사용하여 검색될 수 있다.50-54 illustrate in more detail an exemplary PDA context free grammar previously executed by the PDA engine 3040 shown in FIG. 46. First, referring to FIG. 50, the same search example is used when the PDA engine 3040 searches for the URL string "WWW.XXX.ORG". Of course this is just one example, and any string or combination of characters may be retrieved using the PDA engine 3040.

시맨틱 테이블(3042), 시맨틱 상태 맵(3048) 및 스택(3052)이 중앙 처리 장치(CPU)에 의해 액세스되는 메모리내의 모든 위치에 있도록 PDA 엔진(3040)이 소프트웨어로 구현될 수 있다는 것은 또한 주목되어야 한다. 그다음 범용 CPU는 하기에 설명되는 동작들을 구현한다. 다른 구현예는 도 47에서 하기에 더 상세히 설명되는 재구성가능한 시맨틱 프로세서(RSP: Reconfigurable Semantic Processor)를 사용한다.It should also be noted that the PDA engine 3040 may be implemented in software such that the semantic table 3042, semantic state map 3048 and stack 3052 are at all locations in memory accessed by the central processing unit (CPU). do. The general purpose CPU then implements the operations described below. Another implementation uses a Reconfigurable Semantic Processor (RSP), described in more detail below in FIG. 47.

이 예에서, 콘텐트 어드레싱가능 메모리(CAM: Content Addressable Memory)는 시맨틱 테이블(3042)을 구현하는데 사용된다. 대안적인 실시예들은 정적 램(SRAM) 또는 동적 램(DRAM)을 사용할 수 있다. 시맨틱 테이블(3042)은 상술된 바 와 같이, 대응하는 비-터미널(NT) 심볼을 포함할 수 있는, 시맨틱 상태 섹션들(46)로 분할된다. 이 예에서, 시맨틱 테이블(3042)은 단지 두개의 시맨틱 상태들만을 포함한다. 섹션 3046A에서의 제1 시맨틱 상태는 비-터미널 NT1에 의해 식별되고 시맨틱 요소 "WWW."와 연관된다. 섹션 3046B에서의 제2 시맨틱 상태는 비-터미널 NT2에 의해 식별되고 시맨틱 요소 ".ORG"와 연관된다.In this example, a content addressable memory (CAM) is used to implement the semantic table 3042. Alternative embodiments may use static RAM (SRAM) or dynamic RAM (DRAM). The semantic table 3042 is divided into semantic state sections 46, which may include corresponding non-terminal (NT) symbols, as described above. In this example, the semantic table 3042 contains only two semantic states. The first semantic state in section 3046A is identified by non-terminal NT1 and associated with the semantic element "WWW.". The second semantic state in section 3046B is identified by non-terminal NT2 and associated with the semantic element ".ORG".

시맨틱 테이블(3042)의 제2 섹션(3044)은 입력 데이터(3014)내의 시맨틱 요소들에 대응하는 다른 시맨틱 엔트리들을 포함한다. 동일한 시맨틱 엔트리가 동일한 시맨틱 상태 섹션(3046)에 여러번 존재할 수 있다. 예를 들어, 시맨틱 엔트리 WWW.은 시맨틱 요소 "WWW."이 입력 데이터(3014)에 나타날 수 있는 다른 위치들을 식별하기 위하여 섹션 3046A에서 다른 위치들에 위치할 수 있다. 이것은 단지 하나의 예이고, PDA 엔진(3040)의 동작을 더 최적화하는데 사용된다. 대안적인 실시예에서, 단지 특정한 시맨틱 엔트리만이 단지 한번 사용될 수 있고 각 다른 데이터 위치를 검사하기 위하여 입력 데이터(3014)는 입력 버퍼(3061)에 순차적으로 이동될 수 있다.Second section 3044 of semantic table 3042 includes other semantic entries corresponding to semantic elements in input data 3014. The same semantic entry may exist multiple times in the same semantic state section 3046. For example, semantic entry WWW. May be located at other locations in section 3046A to identify other locations where the semantic element “WWW.” May appear in the input data 3014. This is just one example and is used to further optimize the operation of the PDA engine 3040. In alternative embodiments, only certain semantic entries may be used once and input data 3014 may be sequentially moved to input buffer 3031 to check each other data location.

시맨틱 테이블(3042)내의 제2 시맨틱 상태 섹션(3046B)은 사실상 두개의 시맨틱 엔트리들을 포함한다. ".ORG" 엔트리는 입력 데이터(3014)에서 ".ORG" 스트링을 검출하는데 사용되고 "WWW." 엔트리는 입력 데이터(3014)에서 가능한 제2 "WWW." 스트링을 검출하는데 사용된다. 다시, 다수의 다른 ".ORG" 및 "WWW." 엔트리들은 파싱 최적화를 위하여 시맨틱 테이블(3042)의 섹션 3046B에 선택적으로 로딩된다. 하나의 "WWW." 엔트리 및 하나의 ".ORG" 엔트리, 또는 도 50에 도시된 것 보다 더 적은 엔트리들을 사용하는 것이 동등하게 가능하다.The second semantic state section 3046B in the semantic table 3042 actually contains two semantic entries. The ".ORG" entry is used to detect the ".ORG" string in the input data 3014 and the "WWW." The entry is made possible by the second " WWW. &Quot; Used to detect a string. Again, many other ".ORG" and "WWW." The entries are optionally loaded into section 3046B of the semantic table 3042 for parsing optimization. One "WWW." It is equally possible to use an entry and one ".ORG" entry, or fewer entries than shown in FIG.

이 예에서, 시맨틱 상태 맵(3048)은 3개의 다른 섹션들을 포함한다. 하지만, 더 적은 수의 섹션들이 또한 사용될 수 있다. 다음 상태 섹션(3080)은 시맨틱 테이블(3042)내의 매칭 시맨틱 엔트리를 PDA 엔진(3040)에 의해 사용되는 다음 시맨틱 상태에 매핑한다. 시맨틱 엔트리 포인트(SEP) 섹션(3078)은 하기에 더 상세히 설명되는 시맨틱 프로세싱 유닛(SPU: Semantic Processing Unit)에 대한 마이크로명령들을 시작하는데 사용된다. 이 섹션은 선택적이고 PDA 엔진(3040)은 입력 데이터(3014)에 대해 다음에 수행하기 위한 다른 동작들을 결정하기 위하여 다음 상태 섹션(3080)에서 식별된 비-터미널 심볼을 대안적으로 사용할 수 있다.In this example, the semantic state map 3048 includes three different sections. However, fewer sections can also be used. The next state section 3080 maps matching semantic entries in the semantic table 3042 to the next semantic state used by the PDA engine 3040. Semantic Entry Point (SEP) section 3078 is used to initiate microinstructions for the Semantic Processing Unit (SPU), which is described in more detail below. This section is optional and the PDA engine 3040 may alternatively use the non-terminal symbols identified in the next state section 3080 to determine other operations to perform next on the input data 3014.

예를 들어, 비-터미널 심볼 NT3이 맵(3048)으로부터 출력되는 경우, 대응하는 프로세서(미도시)는 URL 스트링 "WWW.XXX.ORG"가 입력 데이터(3014)에서 검출되었다는 것을 안다. 그다음 프로세서는 PDA 엔진(3040)이 상기 URL을 식별한 이후에 입력 데이터(3014)에 대해 요구되는 어떤 후속 처리도 수행할 수 있다. 따라서, SEP 섹션(3078)은 포함될 수 있거나 포함될 수 없는 PDA 엔진(3040)에서의 단지 하나의 최적화이다.For example, if the non-terminal symbol NT3 is output from the map 3048, the corresponding processor (not shown) knows that the URL string "WWW.XXX.ORG" was detected in the input data 3014. The processor may then perform any subsequent processing required for the input data 3014 after the PDA engine 3040 identifies the URL. Thus, the SEP section 3078 is just one optimization in the PDA engine 3040 that may or may not be included.

스킵 바이트 섹션(3076)은 다음 동작 사이클에서 입력 버퍼(3061)에 이동시키기 위한 입력 데이터(3014)로부터의 바이트들의 수를 식별한다. 시맨틱 테이블(3042)에 아무런 매치도 존재하지 않는 경우 매치 모든 파서 엔트리 테이블(MAPT: Match All Parser entries Table)(3082)이 사용된다.Skip byte section 3076 identifies the number of bytes from input data 3014 for moving to input buffer 3031 in the next operating cycle. If no match exists in the semantic table 3042, a Match All Parser entries Table (MAPT) 3082 is used.

실행Execution

URL을 검색하는 것과 연관된 제1 시맨틱 상태를 나타내는 초기의 비-터미널 심볼 NT1과 함께 특정 동작 종료 심볼 "$"이 우선 스택(3052)에 푸시된다. NT1 심볼 및 입력 데이터(3014)의 제1 세그먼트(3060)는 입력 버퍼(3061)에 로딩되고 CAM(3090)에 인가된다. 이 예에서, 입력 버퍼(3061)내의 콘텐트들은 CAM(3090)내의 어떤 엔트리들과도 일치하지 않는다. 따라서, CAM(3090)에 의해 생성된 포인터(3054)는 MAPT 테이블(3082)내의 디폴트 NT1 엔트리를 가리킨다. 디폴트 NT1 엔트리는 입력 데이터(3014)의 하나의 부가적인 바이트를 입력 버퍼(3061)로 이동할 것을 PDA 엔진(3040)에 명령한다. 그다음 PDA 엔진(3040)은 스택(3052)에 다른 비-터미널 NT1 심볼을 푸시한다.A specific end-of-operation symbol "$" is first pushed onto stack 3052 along with an initial non-terminal symbol NT1 representing the first semantic state associated with retrieving the URL. First segment 3060 of NT1 symbol and input data 3014 is loaded into input buffer 3031 and applied to CAM 3090. In this example, the contents in input buffer 3021 do not match any entries in CAM 3090. Thus, pointer 3054 generated by CAM 3090 points to the default NT1 entry in MAPT table 3082. The default NT1 entry instructs the PDA engine 3040 to move one additional byte of input data 3014 into the input buffer 3031. PDA engine 3040 then pushes another non-terminal NT1 symbol to stack 3052.

도 51은 입력 데이터(3014)의 다음 바이트가 입력 버퍼(3061)로 이동된 후 다음 PDA 사이클을 도시한 것이다. 제1 URL 시맨틱 요소(3060A)("WWW.")는 이제 입력 버퍼(3061)에 포함되어 있다. 비-터미널 심볼 NT1은 다시 스택(3052)으로부터 나오고 입력 버퍼(3061)내의 입력 데이터(3060)와 결합된다. 입력 버퍼(3061)와 시맨틱 테이블(3042)내의 콘텐트들과의 비교는 NT1 엔트리(3042B)에서의 매치를 초래한다. 테이블 엔트리(3042B)와 연관된 인덱스 3054B는 시맨틱 상태 맵 엔트리(3048B)를 가리킨다. 엔트리 3048B에서의 다음 상태는 다음 시맨틱 상태로의 전이를 나타내는 비-터미널 심볼 NT2를 포함한다.51 illustrates the next PDA cycle after the next byte of input data 3014 has been moved to input buffer 3031. The first URL semantic element 3060A ("WWW.") Is now included in the input buffer 3061. Non-terminal symbol NT1 again comes out of stack 3052 and is coupled with input data 3060 in input buffer 3061. The comparison of the input buffer 3021 with the contents in the semantic table 3042 results in a match 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 a non-terminal symbol NT2 indicating a transition to the next semantic state.

맵 엔트리(3048B)는 또한 PDA 엔진(3040)이 다음 파싱 사이클을 위해 입력 데이터(3014)를 이동시킬 필요가 있는 바이트들의 수를 식별한다. 이 예에서, "WWW." 스트링은 입력 버퍼(3061)의 첫번째 4개의 바이트들에서 검출되었기 때문 에, 엔트리 3048B내의 스킵 바이트 값은 입력 버퍼(3061)에 다른 8 바이트들을 이동시킬 것을 PDA 엔진(3040)에 명령한다. 스킵 값은 하드웨어 종속적이고, 시맨틱 테이블(3042)의 크기에 따라 변할 수 있다. 물론 더 크거나 더 작은 시맨틱 테이블 폭을 지닌 다른 하드웨어 구현예들이 또한 사용될 수 있다.Map entry 3048B also identifies the number of bytes that PDA engine 3040 needs to move input data 3014 for the next parsing cycle. In this example, "WWW." Because the string was detected in the first four bytes of the input buffer 3041, the skip byte value in entry 3048B instructs the PDA engine 3040 to move the other eight bytes into the input buffer 3041. The skip value is hardware dependent and may vary depending on the size of the semantic table 3042. Of course, other hardware implementations with larger or smaller semantic table widths can also be used.

도 52는 입력 데이터(3014)의 다음 8 바이트들이 입력 버퍼(3061)로 이동된 후에 PDA 엔진(3040)에서의 다음 사이클을 도시한 것이다. 또한, 새로운 시맨틱 상태 NT2가 스택(3052)에 푸시되었고 그다음 스택(3052)으로부터 꺼내져서 입력 데이터(3014)의 다음 세그먼트(3060)와 결합되었다. 입력 버퍼(3061)내의 콘텐트들은 다시 시맨틱 테이블(3042)에 적용된다. 이 PDA 사이클에서, 입력 버퍼(3061)내의 콘텐트들은 시맨틱 테이블(3042)내의 어떤 시맨틱 엔트리들과도 일치하지 않는다. 따라서, NT2 상태에 대한 디폴트 포인터(3054C)는 MAPT 테이블(3082)내의 대응하는 NT2 엔트리를 가리킨다. NT2 엔트리는 입력 버퍼(3061)로 하나의 부가적인 바이트를 이동시키고 동일한 시맨틱 상태 NT2를 스택(3052)에 푸시할 것을 PDA 엔진(3040)에 명령한다.52 illustrates the next cycle in the PDA engine 3040 after the next eight bytes of the input data 3014 have been moved to the input buffer 3031. In addition, a new semantic state NT2 was pushed onto stack 3052 and then taken out of stack 3052 and joined with the next segment 3060 of input data 3014. The contents in the input buffer 3041 are again applied to the semantic table 3042. In this PDA cycle, the contents in the input buffer 3041 do not match any semantic entries in the semantic table 3042. Thus, the default pointer 3054C for NT2 state points to the corresponding NT2 entry in the MAPT table 3082. The NT2 entry instructs PDA engine 3040 to move one additional byte into input buffer 3031 and push the same semantic state NT2 to stack 3052.

도 53은 입력 데이터(3014)의 다른 바이트가 입력 버퍼(3061)로 이동된 후 다음 PDA 사이클을 도시한 것이다. 이 예에서, 입력 버퍼(3061)내의 콘텐트들과 시맨틱 테이블(3042)내의 NT2 엔트리들 중 어떤 엔트리 간에 아무런 매치도 여전히 존재하지 않는다. 따라서, 시맨틱 상태 NT2에 대한 디폴트 포인터(3054C)는 다시 MAPT 테이블(3082)내의 NT2 엔트리를 가리킨다. 테이블(3082)내의 디폴트 NT2 엔트리는 입력 데이터(3014)로부터의 다른 바이트를 입력 버퍼(3061)로 이동시키고 다 른 NT2 심볼을 스택(3052)에 푸시할 것을 PDA 엔진(3040)에 명령한다. 마지막 두 PDA 사이클동안 비-터미널 NT2에 의해 표시된 시맨틱 상태의 아무런 변경도 존재하지 않았다는 것을 주목하라. 제2 시맨틱 요소 ".ORG"내의 첫번째 3개의 문자들 ".OR"이 PDA 엔진(3040)에 의해 수신되었을지라도 아무런 상태 전이도 존재하지 않았다.53 shows the next PDA cycle after another byte of input data 3014 has been moved to input buffer 3031. In this example, there is still no match between any of the contents in the input buffer 3041 and any of the NT2 entries in the semantic table 3042. Thus, the default pointer 3054C for semantic state NT2 again points to an NT2 entry in the MAPT table 3082. The default NT2 entry in the table 3082 instructs the PDA engine 3040 to move another byte from the input data 3014 into the input buffer 3031 and push another NT2 symbol to the stack 3052. Note that during the last two PDA cycles there was no change in the semantic state indicated by non-terminal NT2. There was no state transition even though the first three characters ".OR" in the second semantic element ".ORG" were received by the PDA engine 3040.

도 54는 입력 버퍼(3061)내의 콘텐트들이 이제 시맨틱 테이블(3042)내의 NT2 엔트리(3042D)와 일치하는 다음 PDA 사이클을 도시한 것이다. 대응하는 포인터(3054D)는 시맨틱 상태 맵(3048)내의 엔트리 3048D를 가리킨다. 이 예에서, 엔트리 3048D는 URL "WWW.XXX.ORG"가 다음 시맨틱 상태 NT3에 매핑함으로써 검출되었다는 것을 나타낸다. 전체 시맨틱 요소 ".ORG"가 검출될 때까지 "PDA 엔진(3040)이 시맨틱 상태 NT3로 전이하지 않았다는 것을 주목하라.54 shows the next PDA cycle in which the contents in the input buffer 3041 now match the NT2 entry 3042D in the semantic table 3042. The corresponding pointer 3054D points to entry 3048D in the semantic state map 3048. In this example, entry 3048D indicates that the URL "WWW.XXX.ORG" was detected by mapping to the next semantic state NT3. Note that the "PDA engine 3040 did not transition to the semantic state NT3 until the entire semantic element" .ORG "was detected.

맵 엔트리(3048D)는 검출된 URL에 대응하는 입력 데이터(3014)에 대해 부가적인 동작들을 수행하기 위한 시맨틱 프로세싱 유닛(SPU)(도 55 참조)에 의해 실행되는 마이크로명령들을 선택적으로 시작하는 포인터 SEP1을 또한 포함한다. 예를 들어, SPU는 공동 계류중이고 여기에 참조로써 포함되어 있는, 2005년 7월 21일 출원되었고, 출원 번호가 11/187,049이며, 명칭이 네트워크 인터페이스 및 방화벽 장치인 출원 및 2005년 5월 9일 출원되었고, 출원 번호가 11/125,956이며, 명칭이 침입 탐지 시스템인 출원에 설명되어 있는 바와 같이, 방화벽 동작, 바이러스 검출 동작 등을 수행하기 위한 부가적인 입력 데이터(3014)를 벗겨 낼 수 있다.The map entry 3048D is a pointer SEP1 that selectively starts microinstructions executed by the semantic processing unit (SPU) (see FIG. 55) to perform additional operations on the input data 3014 corresponding to the detected URL. It also includes. For example, an SPU was filed on July 21, 2005, co-pending and incorporated herein by reference, application number 11 / 187,049, and application named Network Interface and Firewall Device and May 9, 2005. As described in the application filed, application number 11 / 125,956 and entitled Intrusion Detection System, additional input data 3014 for performing firewall operations, virus detection operations, and the like may be stripped.

SPU에 대한 SEP 마이크로 명령어들의 개시와 동시에, 맵 엔트리(3048D)는 비 -터미널 NT3에 의해 표시된 새로운 시맨틱 상태를 스택(3052)에 푸시할 것을 PDA 엔진(3040)에 또한 명령할 수 있다. 이것은 PDA 엔진(3040)으로 하여금 검출된 URL(3016) 다음에 입력 데이터(3014)에서 다른 시맨틱 요소에 대한 다른 검색을 수행하는 것을 시작하게 할 수 있다. 예를 들어, 도 49에 도시된 바와 같이, PDA 엔진(3040)은 입력 데이터(3014)에 포함될 수 있는 실행가능한 파일과 연관된 시맨틱 요소 ".EXE"를 검색하는 것을 시작할 수 있다. 또한 상술된 바와 같이, 새로운 시맨틱 요소 ".EXE"에 대한 검색은 PDA 엔진(3040)에게 시맨틱 테이블(3042)에 하나의 추가 시맨틱 상태를 추가할 것을 단지 요구한다.Simultaneously with the initiation of the SEP micro instructions for the SPU, the map entry 3048D may also instruct the PDA engine 3040 to push the new semantic state indicated by the non-terminal NT3 to the stack 3052. This may cause the PDA engine 3040 to begin performing 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 begin searching for the semantic element “.EXE” associated with the executable file that may be included in the input data 3014. Also as described above, the search for a new semantic element ".EXE" simply requires the PDA engine 3040 to add one additional semantic state to the semantic table 3042.

또한 상술된 바와 같이, PDA 엔진(3040)은 각 파싱된 데이터 아이템에 대해 개별 상태를 유지할 필요가 없다. 상태들은 상이한 시맨틱 요소들 간의 전이들을 위해서만 유지된다. 예를 들어, 도 50, 도 52 및 도 53은 시맨틱 테이블(3042)내의 시맨틱 엔트리들 중 어떤 엔트리와 완전히 일치하지 않은 데이터 입력들을 도시한 것이다. 이 상황에서, PDA 엔진(3040)은 일치하지 않는 데이터 스트링에 대한 어떤 상태 정보를 유지하지 않고 계속 입력 데이터를 파싱한다.As also described above, the PDA engine 3040 does not need to maintain a separate state for each parsed data item. States are maintained only for transitions between different semantic elements. For example, FIGS. 50, 52, and 53 illustrate data inputs that do not fully match any of the semantic entries in the semantic table 3042. In this situation, the PDA engine 3040 continues to parse the input data without maintaining any state information for the mismatched data strings.

이전에 도 46 내지 도 48에서 상기에 언급된 바와 같이, PDA 엔진(3040)에서의 시맨틱 상태들은 실질적으로 검색 스트링 길이와 관계없다. 예를 들어, 더 긴 검색 스트링 "WWWW."은 단순히 시맨틱 테이블(3042)내의 시맨틱 엔트리들 "WWW."을 더 긴 시맨틱 엔트리 "WWWW."로 대체함으로써 "WWW." 대신에 검색될 수 있다.As previously mentioned above in FIGS. 46-48, the semantic states in the PDA engine 3040 are substantially independent of the search string length. For example, the longer search string "WWWW." Replaces "WWW." By simply replacing the semantic entries "WWW." In the semantic table 3042 with the longer semantic entry "WWWW.". Can be retrieved instead.

재구성가능한 Reconfigurable 시맨틱Semantic 프로세서( Processor ( RSPRSP ))

도 45는 상술된 푸시다운 오토머턴(PDA) 엔진(3040)을 구현하기 위한 일 실 시예에서 사용되는 재구성가능한 시맨틱 프로세서(RSP)(3100)의 블록도를 도시한 것이다. RSP(3100)는 입력 포트(3120)를 통해 수신된 패킷 데이터 스트림을 버퍼링하기 위한 입력 버퍼(3140) 및 출력 포트(3152)를 통해 출력된 패킷 데이터 스트림을 버퍼링하기 위한 출력 버퍼(3150)를 포함한다.45 illustrates a block diagram of a reconfigurable semantic processor (RSP) 3100 used in one embodiment for implementing the pushdown automaton (PDA) engine 3040 described above. RSP 3100 includes an input buffer 3140 for buffering packet data streams received through input port 3120 and an output buffer 3150 for buffering packet data streams output through output port 3152. do.

다이렉트 실행 파서(DXP)(3180)는 PDA 엔진(3040)을 구현하고, 입력 버퍼(3140)에서 수신되고(예를 들어, 입력 "스트림"), 출력 버퍼(3150)로 출력되고(예를 들어 출력 "스트림"), 재순환 버퍼(3160)에서 재순환되는(예를 들어 재순환 "스트림") 패킷들 또는 프레임들의 처리를 제어한다. 바람직하기로는 입력 버퍼(3140), 출력 버퍼(3150) 및 재순환 버퍼(3160)는 선입선출(FIFO) 버퍼들이다.Direct execution parser (DXP) 3180 implements PDA engine 3040, is received at input buffer 3140 (eg, input “stream”), output to output buffer 3150 (eg, Output "stream"), which controls the processing of packets or frames that are recycled (e.g., recycle "stream") in recycle buffer 3160. Preferably the input buffer 3140, output buffer 3150 and recycle buffer 3160 are first-in first-out (FIFO) buffers.

DXP(3180)는 또한 버퍼들(3140, 3150 및 3160) 및 메모리 서브시스템(3215) 간의 데이터의 전송을 처리하는 시맨틱 프로세싱 유닛(SPU)(3200)에 의해 패킷들의 처리를 제어한다. 메모리 서브시스템(3215)은 입력 포트(3120)로부터 수신된 패킷들을 저장하고, 또한 공동 계류중이며 여기에 이미 참조로써 포함되어 있는, 2005년 7월 21일 출원되었고, 출원 번호가 11/187,049이며, 명칭이 네트워크 인터페이스 및 방화벽 장치인 출원 및 2005년 5월 9일 출원되었고, 출원 번호가 11/125,956이며, 명칭이 침입 탐지 시스템인 출원에 설명되어 있는, 통합 정책 관리(UPM: Unified Policy Management), 방화벽, 바이러스 검출 및 어떤 다른 동작들에 대해 사용되는 CAM(3220)에 액세스 제어 리스트(ACL: Access Control List)를 저장할 수 있다.DXP 3180 also controls the processing of packets by semantic processing unit (SPU) 3200 that handles the transfer of data between buffers 3140, 3150 and 3160 and memory subsystem 3215. Memory subsystem 3215 stores packets received from input port 3120, and is filed on July 21, 2005, co-pending and already incorporated by reference, application number 11 / 187,049, Unified Policy Management (UPM), filed in the application entitled Network Interfaces and Firewall Devices, and filed May 9, 2005, with application number 11 / 125,956, and titled Intrusion Detection System, An Access Control List (ACL) may be stored in the CAM 3220 used for firewall, virus detection, and some other operations.

RSP(3100)는 적어도 3개의 테이블들을 사용하여 주어진 PDA 알고리즘을 구현 한다. 생성 규칙들(3176)을 검색하기 위한 코드들(3178)은 파서 테이블(PT)(3170)에 저장된다. 일 실시예에서 파서 테이블(3170)은 도 46에 도시된 시맨틱 테이블(3042)을 포함한다. 문법 생성 규칙들(3176)은 생성 규칙 테이블(PRT: Production Rule Table)(3190)에 저장된다. 상기 생성 규칙 테이블(3190)은 예를 들어 도 46에 도시된 시맨틱 상태 맵(3048)을 포함할 수 있다. SPU(3200)에 의해 실행된 코드 세그먼트들(3212)은 시맨틱 코드 테이블(SCT: Semantic Code Table)(3210)에 저장된다. 코드 세그먼트들(3212)은 도 50 내지 도 54에 도시된 시맨틱 상태 맵(3048)내의 SEP 포인터들(3078)에 따라 시작될 수 있다.The RSP 3100 implements a given PDA algorithm using at least three tables. Codes 3178 for retrieving generation rules 3176 are stored in parser table (PT) 3170. In one embodiment, the parser table 3170 includes the semantic table 3042 shown in FIG. 46. Grammar generation rules 3176 are stored in a production rule table (PRT) 3190. The generation rule table 3190 may include, for example, the semantic state map 3048 shown in FIG. 46. Code segments 3212 executed by SPU 3200 are stored in a Semantic Code Table 3210. Code segments 3212 may begin in accordance with SEP pointers 3078 in semantic state map 3048 shown in FIGS. 50-54.

파서 테이블(3170)내의 코드들(3178)은 예를 들어, 행렬 포맷으로 또는 콘텐트-어드레싱가능한 포맷으로 저장된다. 행렬 포맷에서, 파서 테이블(3170)의 가로줄들은 내부 파서 스택(3170)에 의해 제공되는 비-터미널 코드 NT(3172)에 의해 인덱싱된다. 일 실시예에서 파서 스택(3185)은 도 46에 도시된 스택(3052)이다. 파서 테이블(3170)의 세로줄들은 입력 버퍼(3140)내의 데이터의 헤드로부터 추출된 입력 데이터 값(DI[N])(3174)에 의해 인덱싱된다. 콘텐트-어드레싱가능한 포맷에서, 파서 스택(3185)으로부터의 비-터미널 코드(3172)와 입력 버퍼(3140)로부터의 입력 데이터 값(3174)의 연결은 도 50 내지 도 54에서 입력 버퍼(3061)로 표시된 바와 같은 파서 테이블(3170)에 입력을 제공한다.Codes 3178 in parser table 3170 are stored, for example, in a matrix format or in a content-addressable format. In matrix format, the rows of parser table 3170 are indexed by non-terminal code NT 3172 provided by inner parser stack 3170. In one embodiment parser stack 3185 is stack 3052 shown in FIG. 46. The vertical lines of parser table 3170 are indexed by input data values (DI [N]) 3174 extracted from the head of data in input buffer 3140. In the content-addressable format, the concatenation of the non-terminal code 3172 from the parser stack 3185 and the input data value 3174 from the input buffer 3140 to the input buffer 3031 in FIGS. 50-54. Provide input to parser table 3170 as indicated.

생성 규칙 테이블(3190)은 파서 테이블(3170)로부터의 코드들(3178)에 의해 인덱싱된다. 테이블들(3170 및 3190)은 파서 테이블(3170)에 대한 조회가 비-터미널 코드(3172)와 입력 데이터 값(3174)에 적용가능한 생성 규칙(3176)을 직접 반환 하도록 링크될 수 있다. DXP(3180)는 파서 스택(3185)의 상단에 있는 비-터미널 코드를 PRT(3190)로부터 반환된 생성 규칙(PR)(3176)으로 대체하고, 입력 버퍼(3140)로부터의 데이터를 계속 파싱한다.The generation rule table 3190 is indexed by the codes 3178 from the parser table 3170. Tables 3170 and 3190 may be linked such that a query to parser table 3170 directly returns a generation rule 3176 that is applicable to non-terminal code 3172 and input data value 3174. The DXP 3180 replaces the non-terminal code on top of the parser stack 3185 with the generation rule (PR) 3176 returned from the PRT 3190 and continues parsing data from the input buffer 3140. .

시맨틱 코드 테이블(3210)은 또한 파서 테이블(3170)에 의해 생성된 코드들(3178)에 따라 그리고/또는 생성 규칙 테이블(3190)에 의해 생성된 생성 규칙들(3176)에 따라 인덱싱된다. 일반적으로, 파싱 결과들은 주어진 생성 규칙(3176)에 대해, 시맨틱 코드 테이블(3210)로부터의 시맨틱 엔트리 포인트(SEP) 루틴(3212)이 SPU(3200)에 의해 로딩되고 실행되어야 하는지를 DXP(3180)가 탐지할 수 있게 한다.The semantic code table 3210 is also indexed according to the codes 3178 generated by the parser table 3170 and / or according to the generation rules 3176 generated by the generation rule table 3190. In general, parsing results are determined by the DXP 3180 whether a semantic entry point (SEP) routine 3212 from the semantic code table 3210 should be loaded and executed by the SPU 3200 for a given generation rule 3176. Make it detectable.

SPU(3200)는 콘텍스트 심볼들에 의해 어드레싱가능한 구조화된 메모리 인터페이스를 제공하는 메모리 서브시스템(3215)에 대한 몇몇 액세스 경로들을 가지고 있다. 메모리 서브시스템(3215), 파서 테이블(3170), 생성 규칙 테이블(3190) 및 시맨틱 코드 테이블(3210)은 온칩 메모리, 동기식 동적 램(DRAM) 및 콘텐트 어드레싱가능한 메모리(CAM) 같은 외부 메모리 장치들 또는 이러한 자원들의 조합을 사용할 수 있다. 각 테이블 또는 콘텍스트는 하나 이상의 다른 테이블들 또는 콘텍스트들에 공유된 물리적인 메모리 공간에 대한 콘텍스트 인터페이스를 단지 제공할 수 있다.SPU 3200 has several access paths to memory subsystem 3215, which provides a structured memory interface addressable by context symbols. The memory subsystem 3215, parser table 3170, generation rule table 3190 and semantic code table 3210 may be external memory devices such as on-chip memory, synchronous dynamic RAM (DRAM) and content addressable memory (CAM) or Combinations of these resources can be used. Each table or context may merely provide a context interface to the physical memory space shared in one or more other tables or contexts.

유지 보수 중앙 처리 장치(MCPU)(3056)는 SPU(3200)와 메모리 서브시스템(3215) 사이에 연결되어 있다. MCPU(3056)는 전통적인 소프트웨어 및 하드웨어를 가지고 합리적으로 달성될 수 있는 RSP(3100)에 대한 어떤 요망되는 기능들을 수행 한다. 이들 기능들은 복잡성으로 인하여 SCT(3210)에의 포함을 보장하지 않는 보통 드문, 시간적으로 중대하지 않은 기능들이다. 바람직하기로는, MCPU(3056)는 또한 MCPU의 행동에 대한 태스크들을 수행할 것을 SPU(3200)에 요구하는 능력을 가지고 있다.A maintenance central processing unit (MCPU) 3056 is coupled between the SPU 3200 and the memory subsystem 3215. MCPU 3056 performs some desired functions for RSP 3100 that can be reasonably achieved with traditional software and hardware. These functions are usually rare, time-critical functions that do not guarantee inclusion in the SCT 3210 due to complexity. Preferably, the MCPU 3056 also has the ability to request the SPU 3200 to perform tasks on the MCPU's behavior.

메모리 서브시스템(3215)은 해싱 함수 또는 콘텐트-어드레싱가능 메모리(CAM) 룩업을 통해 DRAM(3280)내의 데이터에 액세스하기 위한 어레이 머신-콘텍스트 데이터 메모리(AMCD: Array Machine-Context Data Memory)(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) 테이블 및 다른 매개 변수들을 포함한다.Memory subsystem 3215 is an Array Machine-Context Data Memory (AMCD) 3230 for accessing data in DRAM 3280 via a hashing function or content-addressable memory (CAM) lookup. It includes. The cipher block 3240 encrypts, decrypts or authenticates the data and the context control block cache 3250 caches the context control blocks to and from the DRAM 3280. The general cache 3260 caches data used in basic operations and the streaming cache 3270 caches data streams as data streams are written to and read from the DRAM 3280. Preferably, the context control block cache 3250 is a software controlled cache, ie the SPU 3200 determines when the cache line is used and freed. Each of the circuits 3240, 3250, 3260, and 3270 is connected between the DRAM 3280 and the SPU 3200. TCAM 3220 is connected between AMCD 3230 and MCPU 3056 and includes access control list (ACL) tables and other parameters that can be used to perform firewall, integrated policy management or other intrusion detection operations.

RSP(3100)의 기능 블록들에 대한 상세한 설계 최적화는, 여기에 참조로써 포함되어 있고, 2003년 1월 24일에 출원되었으며, 명칭이 재구성가능한 시맨틱 프로 세서인, 공동 계류중인 출원 10/351,030에 설명되어 있다.Detailed design optimization for the functional blocks of the RSP 3100, incorporated herein by reference and filed on January 24, 2003, in co-pending application 10 / 351,030, which is a reconfigurable semantic processor It is explained.

파서 테이블Parser table

도 46 내지 도 54에서 설명된 바와 같이, 파서 테이블(3170)은 콘텐트 어드레싱가능 메모리(CAM)로서 구현될 수 있는데, NT 코드 및 입력 데이터 값들(DI[n])은 PRT(3190)에서 생성 규칙에 대응하는 PR 코드(3176)를 찾기 위한 CAM에 대한 키로서 사용된다. 바람직하기로는, CAM은 3진 CAM(TCAM) 엔트리들이 존재하는 3진 CAM(TCAM)이다. 각 TCAM 엔트리는 NT 코드 및 DI[n] 매치 값을 포함한다. 각 NT 코드는 다수의 TCAM 엔트리들을 구비할 수 있다. DI[n] 매치 값의 각 비트는 "0", "1" 또는 ("돈케어(Don't Care)"를 나타내는) "X"로 설정될 수 있다. 이 능력은 파서 테이블(3170)이 매치를 발견하기 위하여 PR 코드들로 하여금 단지 DI[n]의 어떤 비트들/바이트들만이 코딩된 패턴과 일치할 필요가 있다는 것을 요구하도록 허용한다. 예를 들어, TCAM의 하나의 가로줄은 시맨틱 프로세서를 통합하는 장치에 대응하는 IP 수신지 주소를 나타내는 4개의 바이트들이 다음에 오는, IP 수신지 주소 필드에 대한 NT 코드 NT_IP를 포함할 수 있다. TCAM 가로줄의 나머지 4개의 바이트들은 "돈케어(don't care)"로 설정된다. 그래서 NT_IP 및 8 바이트 DI[8]가 파서 테이블(3170)에 제출될 때, DI[8]의 첫번째 4개의 바이트들이 정확한 IP 주소를 포함하는 경우, DI[8]의 마지막 4개의 바이트들이 무엇을 포함하든지 간에 매치가 발생할 것이다.46-54, the parser table 3170 may be implemented as a content addressable memory (CAM), where NT code and input data values DI [n] are generated rules in the PRT 3190. Is used as the key for the CAM to find the PR code 3176 corresponding to. Preferably, the CAM is a ternary CAM (TCAM) with ternary CAM (TCAM) entries. Each TCAM entry contains an NT code and a DI [n] match value. Each NT code may have multiple TCAM entries. Each bit of the DI [n] match value may be set to "0", "1" or "X" (representing "Don't Care"). This capability allows the parser table 3170 to require PR codes that only certain bits / bytes of DI [n] need to match the coded pattern to find a match. For example, one horizontal line of TCAM may contain the NT code NT_IP for the IP Destination Address field, followed by four bytes representing the IP destination address corresponding to the device incorporating the semantic processor. The remaining four bytes of the TCAM bar are set to "don't care". So when NT_IP and 8 bytes DI [8] are submitted to the parser table 3170, if the first 4 bytes of DI [8] contain the correct IP address, what are the last 4 bytes of DI [8]? If included, a match will occur.

TCAM은 "돈케어" 능력을 채택하고 단일 NT에 대한 다수의 TCAM 엔트리들이 존재할 수 있기 때문에, TCAM은 주어진 NT 코드 및 DI[n] 매치 값에 대한 다수의 매칭 TCAM 엔트리들을 찾을 수 있다. TCAM은 그것의 하드웨어를 통해 이들 매치들을 우선순위화하고 가장 높은 우선순위의 매치만을 출력한다. 더욱이, NT 코드 및 DI[n] 매치 값이 TCAM에 제출되는 경우, TCAM은 병렬로 모든 TCAM 엔트리를 수신된 NT 코드 및 DI[n] 매치 코드와 매칭하는 것을 시도한다. 따라서, TCAM은 매치가 시맨틱 프로세서(3100)의 단일 클록 사이클에 파서 테이블(3170)에서 발견되었는지를 결정하는 능력을 가지고 있다.Since the TCAM employs the "doncare" capability and there can be multiple TCAM entries for a single NT, the TCAM can find multiple matching TCAM entries for a given NT code and DI [n] match value. The TCAM prioritizes these matches through its hardware and outputs only the highest priority match. Moreover, when NT code and DI [n] match values are submitted to the TCAM, the TCAM attempts to match all TCAM entries in parallel with the received NT code and DI [n] match codes. Thus, the TCAM has the ability to determine if a match was found in the parser table 3170 in a single clock cycle of the semantic processor 3100.

이 구조를 보는 다른 방법은 "가변 예지 능력" 파서와 같은 것이다. 8개의 바이트들과 같이, 고정된 데이터 입력 세그먼트가 TCAM에 인가될지라도, TCAM 코딩은 다음 생성 규칙(또는 도 46 내지 도 54에서 설명된 바와 같은 시맨틱 엔트리)이 입력의 현재의 8개의 바이트들의 어떤 부분에 기초하도록 허용한다. 단지 입력 스트림의 헤드에서 현재의 8개의 바이트들내의 어느 곳에서 하나의 비트 또는 바이트가 현재의 규칙에 대한 관심 대상인 경우, TCAM 엔트리는 나머지가 매치동안 무시되도록 코딩될 수 있다. 필수적으로, 현재의 "심볼"은 입력 스트림의 헤드에서 64 비트들의 어떤 조합으로서 주어진 생성 규칙에 대해 정의될 수 있다. 지능형 코딩에 의해, 파싱 사이클들의 수, NT 코드들 및 테이블 엔트리들은 일반적으로 주어진 파싱 태스크를 위해 감소될 수 있다.Another way to look at this structure is like a "variable predictive ability" parser. As with eight bytes, even if a fixed data input segment is applied to the TCAM, the TCAM coding requires that the next generation rule (or a semantic entry as described in FIGS. 46-54) be used to determine which of the current eight bytes of the input. Allow to base on parts. If only one bit or byte anywhere in the current eight bytes at the head of the input stream is of interest for the current rule, the TCAM entry may be coded such that the rest is ignored during the match. Essentially, the current "symbol" can be defined for a given generation rule as any combination of 64 bits at the head of the input stream. By intelligent coding, the number of parsing cycles, NT codes and table entries can generally be reduced for a given parsing task.

생성 규칙 테이블(3170)의 TCAM 구현은 여기에 참조로써 포함되어 있고, 2005년 7월 14일에 출원되었고, 출원 번호가 11/181,527이며, 명칭이 CAM 및 SRAM을 사용한 파서 테이블/생성 규칙 테이블 구성인, 공동 계류중인 특허 출원에 더 상세히 설명되어 있다.The TCAM implementation of the generation rule table 3170 is incorporated herein by reference, filed July 14, 2005, and has application number 11 / 181,527, parser table / generation rule table configuration using CAM and SRAM. The phosphorus, co-pending patent application is described in more detail.

상기에 설명된 시스템은 상기 동작들 중 몇몇 동작 또는 모두를 수행하는 전용 프로세서 시스템, 마이크로 제어기, 프로그램가능한 로직 장치 또는 마이크로프로세서를 사용할 수 있다. 상술된 동작들 중 몇몇 동작들은 소프트웨어로 구현될 수 있고 다른 동작들은 하드웨어로 구현될 수 있다.The system described above may use a dedicated processor system, microcontroller, programmable logic device or microprocessor that performs some or all of the above operations. Some of the operations described above may be implemented in software and other operations may be implemented in hardware.

편의상, 상기 동작들은 다양한 상호연결된 기능 블록들 또는 개별 소프트웨어 모듈들로서 설명된다. 하지만, 이것은 필수적이지는 않고 이들 기능 블록들 또는 모듈들이 단일 로직 장치, 프로그램 또는 불명확한 경계들을 지닌 동작에 동등하게 모이는 경우들이 존재할 수 있다. 어떤 경우에도, 기능 블록들 및 소프트웨어 모듈들 또는 융통성있는 인터페이스의 특징들은 자체적으로 구현될 수 있거나 하드웨어 또는 소프트웨어에서의 다른 동작들과 공동으로 구현될 수 있다.For convenience, the operations are described as various interconnected functional blocks or separate software modules. However, this is not essential and there may be cases where these functional blocks or modules are equally concentrated in a single logic device, program or operation with unclear boundaries. In any case, the features of the functional blocks and software modules or the flexible interface may be implemented on their own or in conjunction with other operations in hardware or software.

본 발명의 바람직한 실시예에서 본 발명의 원리들을 설명하고 도시했을지라도, 본 발명이 이러한 원리들을 벗어나지 않고 구성 및 상세에서 변경될 수 있다는 것은 명백할 것이다. 하기의 청구항들의 정신 및 범위내에 있는 모든 변경들 및 변형들이 청구된다. Although the principles of the invention have been described and illustrated in the preferred embodiments of the invention, it will be apparent that the invention may be modified in construction and detail without departing from these principles. All changes and modifications that come within the spirit and scope of the following claims are claimed.

Claims (45)

서비스 거부 (DoS) 공격들을 모니터링 및 필터링하는 방법에 있어서,A method of monitoring and filtering denial of service (DoS) attacks, 가능한 한 DoS 공격과 관련된 패킷을 식별하는 단계;Identifying a packet associated with a DoS attack if possible; 상기 패킷의 상태를 한 메모리의 DoS 엔트리로서 추적하는 단계;Tracking the state of the packet as a DoS entry in one memory; 상기 메모리에 이전 DoS 엔트리가 존재하지 않을 때 새 패킷의 통과를 허용하는 단계; 및Allowing the passage of a new packet when there is no previous DoS entry in the memory; And 상기 새 패킷이 이미 통과 허용된 뒤에 상기 새 패킷에 대해 상기 메모리 안에 새 DoS 엔트리를 추가하는 단계를 포함함을 특징으로 하는 방법.Adding a new DoS entry into the memory for the new packet after the new packet has already been allowed to pass. 제1항에 있어서, The method of claim 1, 상기 메모리에 이미 DoS 엔트리를 가진 한 패킷을 수신하는 단계Receiving a packet that already has a DoS entry in the memory 해당 DoS 엔트리 안에 DoS 공격 플래그가 세팅되어 있을 때 상기 패킷을 배제(drop)하는 단계;Dropping the packet when a DoS attack flag is set in the corresponding DoS entry; 해당 DoS 엔트리에 대한 타임 스탬프, 카운터, 그리고 DoS 공격 플래그를, 상기 타임 스탬프가 소정 시기보다 오래되었을 때, 업데이트하는 단계를 포함함을 특징으로 하는 방법. Updating the time stamp, counter, and DoS attack flag for the corresponding DoS entry when the time stamp is older than a predetermined time. 제1항에 있어서, The method of claim 1, 이미 상기 메모리에 DoS 엔트리를 가진 한 패킷을 수신하는 단계;Receiving a packet that already has a DoS entry in the memory; 해당 DoS 엔트리 내 DoS 공격 플래그가 세팅되어 있지 않으면 상기 패킷의 통과를 허용하는 단계; Allowing the packet to pass if the DoS attack flag in the DoS entry is not set; 상기 패킷이 통과 허용된 후에 해당 DoS 엔트리에 대한 카운터를 증가시키는 단계; Incrementing a counter for a corresponding DoS entry after the packet is allowed to pass; 카운터가 DoS 공격 문턱치이고 해당 DoS 엔트리에 대한 타임 스탬프가 소정 시기 내에 있을 때, DoS 공격 플래그를 세팅하는 단계를 포함하는 방법.When the counter is a DoS attack threshold and the time stamp for that DoS entry is within a predetermined time period, setting a DoS attack flag. 네트워크 프로세싱 장치에 있어서,In the network processing apparatus, 동일한 메모리 서브시스템을 포워딩 정보 베이스 (FIB)로서, 그리고 방화벽 정책 관리를 위해 사용하도록 구성된 프로세서를 포함함을 특징으로 하는 네트워크 프로세싱 장치.And a processor configured to use the same memory subsystem as a forwarding information base (FIB) and for firewall policy management. 제4항에 있어서, 상기 프로세서는 라우팅 또는 스위칭 결정을 내리고 방화벽 오퍼레이션들을 수행하기 위해, 패킷들에 포함된 목적지 어드레스 및 방화벽 정책 메트릭(metric)들을 메모리 서브시스템 내 같은 액세스 제어 리스트 (ACL) 엔트리들의 집합과 비교함을 특징으로 하는 네트워크 프로세싱 장치. 5. The method of claim 4, wherein the processor determines the destination address and firewall policy metrics contained in the packets of the same access control list (ACL) entries in the memory subsystem to make routing or switching decisions and perform firewall operations. Network processing device, characterized in that compared to the set. 제4항에 있어서, 상기 ACL 엔트리들은 패킷들 내 목적지 어드레스 및 방화벽 정책 메트릭들에 부합하는 조건자(predicate)들과, 그 패킷들에 대해 수행할 방화벽 또는 포워딩 오퍼레이션들을 가리키는 액션들을 포함함을 특징으로 하는 네트워 크 프로세싱 장치.5. The method of claim 4, wherein the ACL entries include predicates that match destination address and firewall policy metrics in packets and actions that indicate firewall or forwarding operations to perform on the packets. Network processing unit. 제4항에 있어서, 상기 프로세서는,The method of claim 4, wherein the processor, 패킷들 내 어드레스 및 방화벽 메트릭들을 식별하도록 구성된 데이터 파서; 및A data parser configured to identify address and firewall metrics in packets; And 식별된 상기 어드레스 및 방화벽 메트릭들에 대한 방화벽 오퍼레이션들과 패킷 포워딩 오퍼레이션들을 모두 수행하는 하나 이상의 어의 프로세싱 유닛 (SPU; Semantic Processing Unit)들을 포함함을 특징으로 하는 네트워크 프로세싱 장치.And one or more semantic processing units (SPUs) for performing both firewall operations and packet forwarding operations on the identified address and firewall metrics. 어의 프로세서에 있어서, In the processor of the language, 패킷들을 파싱하여 네트워크 인터페이스 오퍼레이션들과 관련된 문장구조 요소들을 식별하고, 이후 그 식별된 문장구조 요소들에 따라 마이크로명령들을 시동하는 파서; 및A parser for parsing packets to identify sentence structure elements associated with network interface operations, and then launching microinstructions according to the identified syntax structure elements; And 상기 직접 실행 파서에 의해 시동 된 마이크로명령들을 실행함으로써 네트워크 인터페이스 오퍼레이션들을 수행하는 하나 이상의 어의 프로세싱 유닛들 (SPUs)을 포함함을 특징으로 하는 어의 프로세서.And one or more word processing units (SPUs) for performing network interface operations by executing microinstructions initiated by the direct execution parser. 제8항에 있어서, The method of claim 8, 데이터 심볼들을 수신하도록 된 입력 포트;An input port adapted to receive data symbols; 수신된 데이터 심볼들에 응하여 스택 심볼들을 처리하는, 스택 심볼들을 스 택 저장하는 직접 실행 파서;A direct execution parser for stack storing stack symbols, processing the stack symbols in response to received data symbols; 적어도 한 개의 수신된 데이터 심볼 및 파서에 의해 제공된 심볼의 조합을 통해 색인가능한 생성(production) 규칙 코드들이 존재하는 파서 테이블;A parser table in which there are production rule codes indexable through a combination of at least one received data symbol and a symbol provided by the parser; 생성 규칙 코드들로 색인가능한 생성 규칙들이 존재하는 생성 규칙 테이블; 및A generation rule table in which there are generation rules indexable with generation rule codes; And SPU들에 의해 액세스될 수 있고 상기 생성 규칙 코드들로 색인되는 기계어 명령들이 존재하는 어의 코드 테이블을 포함함을 특징으로 하는 어의 프로세서. And a code table of words in which machine language instructions that are accessible by SPUs and indexed into the generation rule codes are present. 제8항에 있어서, 상기 파서는 DOS (Denial of Service; 서비스 거부) 공격의 일부일 수 있는 DOS 패킷들을 식별하고, SPU들로 하여금 DoS 후보 패킷들이 수신되는 레이트(rate)를 모니터하게 하여 그 모니터 된 레이트에 따라 DoS 후보 패킷들을 배제하거나 통과하도록 함을 특징으로 하는 어의 프로세서.10. The system of claim 8, wherein the parser identifies DOS packets that may be part of a Denial of Service (DOS) attack and allows the SPUs to monitor the rate at which DoS candidate packets are received. The processor of claim 1, wherein the processor excludes or passes DoS candidate packets according to a rate. 제8항에 있어서, 파서에 의해 식별된 패킷 어의 요소들에 부합하는 조건자들 및, 어떤 방화벽 오퍼레이션들이 패킷들에 대해 수행되어야 할지를 결정하도록 한 개 이상의 SPU들에 의해 사용되는 액션들을 가진 엔트리들을 포함하는 액세스 제어 리스트 (ACL)를 포함함을 특징으로 하는 어의 프로세서.9. The entry of claim 8, wherein the entry has predicates that match the elements of the packet word identified by the parser and actions used by one or more SPUs to determine which firewall operations should be performed on the packets. Word processor comprising an access control list (ACL) that includes data access. 제11항에 있어서, 목적지 어드레스 및 해당 출력 포트를 포함하는 포워딩 정보 베이스 (FIB)를 구비하고, 상기 하나 이상의 SPU들은 ACL로부터의 조건자 및, FIB로부터의 목적지 어드레스들의 조합을 이용해 패킷 전송 및 처리 방식을 결정함을 특징으로 하는 어의 프로세서.12. The system of claim 11, further comprising a forwarding information base (FIB) comprising a destination address and a corresponding output port, wherein the one or more SPUs use a combination of a predicate from an ACL and a destination address from an FIB. A processor, characterized in that it determines the manner. 제12항에 있어서, 상기 ACL은 동일한 목적지 어드레스 조건자에 대해 상이한 출력 포트들과 관련된 상이한 URL (Uniform Resource Locator) 조건자들을 포함하고, 상기 파서는 패킷들에 포함된 목적지 어드레스 및 URL 값을 식별하고, SPU들은 그 패킷들을, 매치하는 목적지 어드레스 조건자 및 URL 조건자를 가진 ACL에서 식별된 출력 포트로 전송(포워딩)함을 특징으로 하는 어의 프로세서. 13. The method of claim 12, wherein the ACL includes different Uniform Resource Locator (URL) predicates associated with different output ports for the same destination address predicate, and the parser identifies a destination address and a URL value included in the packets. And the SPUs forward (forwarding) the packets to the output port identified in the ACL with a matching destination address predicate and URL predicate. 제8항에 있어서, 공중 어드레스들을 사설 어드레스들에 매핑하는 네트워크 어드레스 전환 및/또는 포트 어드레스 전환 (NAT/PAT) 룩업 테이블을 포함하고, 상기 파서는 패킷들 안에서 공중 또는 사설 어드레스들을 식별하고 하나 이상의 SPU들에 명하여 그 사설 또는 공중 어드레스를, 룩업 테이블로부터의 대응하는 공중 또는 사설 어드레스로 교체하게 함을 특징으로 하는 어의 프로세서.9. The system of claim 8, comprising a network address translation and / or port address translation (NAT / PAT) lookup table that maps public addresses to private addresses, the parser identifying one or more public or private addresses within the packets. Wherein the SPUs are commanded to replace their private or public address with the corresponding public or private address from the lookup table. 제8항에 있어서, 제1IP 버전 포맷을 제2IP 버전 포맷을 위한 해당 어드레스들로 매핑하는 인터넷 프로토콜 (IP) 버전 변환 테이블을 포함하고, 상기 파서는 패킷들에서 사용된 IP 버전 포맷을 식별하고 SPU들에 명하여 패킷들 내 어드레스들을 상대 IP 버전 포맷을 위한 다른 어드레스로 대체하도록 함을 특징으로 하는 어의 프로세서.9. The method of claim 8, comprising an Internet Protocol (IP) version translation table that maps a first IP version format to corresponding addresses for a second IP version format, wherein the parser identifies an IP version format used in packets and Command to replace the addresses in the packets with another address for the relative IP version format. 제8항에 있어서, 해독 키, 해독 알고리즘 식별자, 및/또는 인증 알고리즘 식별자를 관련된 보안 파라미터 인덱스들 (SPI들)과 연관시키는 버추얼 사설 네트워크 (VPN) 테이블을 포함하고, 상기 파서는 패킷들 내 SPI들을 식별하고 SPU들에 명하여 그 식별된 SPI들을 VPN 테이블에 적용하도록 한 후 VPN 테이블로부터 받은 상기 해독 키, 해독 알고리즘 식별자, 및/또는 인증 알고리즘 식별자에 따라 패킷들을 해독하도록 함을 특징으로 하는 어의 프로세서. 9. The virtual private network (VPN) table of claim 8, wherein the parser comprises a virtual private network (VPN) table that associates a decryption key, a decryption algorithm identifier, and / or an authentication algorithm identifier with associated security parameter indexes (SPIs). To identify and instruct the SPUs to apply the identified SPIs to the VPN table and then decrypt packets according to the decryption key, decryption algorithm identifier, and / or authentication algorithm identifier received from the VPN table. Processor. 침입 검출 시스템에 있어서, In intrusion detection system, 데이터 스트림 안에서 문장구조 요소들 (syntactic elements)을 식별하는 데이터 파서; 및A data parser that identifies syntactic elements in the data stream; And 데이터 파서에 의해 식별된 문장구조 요소들에 따라 상기 데이터 스트림으로부터 위험인자(threat)를 필터링하는 위험인자 필터링 회로를 포함함을 특징으로 하는 침입 검출 시스템.A risk factor filtering circuit for filtering a risk factor from the data stream according to the sentence structure elements identified by a data parser. 제17항에 있어서, 상기 위험인자 필터링 회로에 의해 사용되어, 위험인자들을 필터링하는 동안 실질적으로 일정한 시간 동안 상기 데이터 스트림 출력을 지연시키게 하는 지연 버퍼를 포함함을 특징으로 하는 침입 검출 시스템.18. The intrusion detection system of claim 17, comprising a delay buffer used by the risk factor filtering circuit to delay the output of the data stream for a substantially constant time while filtering the risk factors. 제18항에 있어서, 상기 위험인자 필터링 회로는 사전 액세스 제어 리스트 (ACL) 필터들의 제1집합을 사용해 데이터 스트림에 대한 제1예비 위험인자 필터링을 수행하고, 식별된 문장구조 요소들에 따라 생성된 ACL 필터들의 제2집합을 사용해 지연 버퍼 안의 데이터에 대한 제2위험인자 필터링을 수행함을 특징으로 하는 침입 검출 시스템.19. The method of claim 18, wherein the risk factor filtering circuit performs a first preliminary risk factor filtering on a data stream using a first set of preliminary access control list (ACL) filters and is generated according to the identified sentence structure elements. And performing a second risk factor filtering on the data in the delay buffer using a second set of ACL filters. 제17항에 있어서, 상기 위험인자 필터링 회로는, 상기 식별된 문장구조 요소들로부터, 위험인자 기호들 (threat signatures)에 적용되어 문장구조 요소들에 부합하는 위험인자 필터들의 집합을 동적으로 생성하도록 하는 토큰들을 생성함을 특징으로 하는 침입 검출 시스템.18. The method of claim 17, wherein the risk factor filtering circuitry is adapted to dynamically generate a set of risk factor filters matching the sentence structure elements from the identified sentence structure elements to be applied to risk signatures. Intrusion detection system, characterized in that for generating tokens. 제20항에 있어서, 상기 토큰들은 위험인자들과 관련될 수 있는 데이터 스트림 내 문장구조 요소들에 대해서만 생성되고, 데이터 스트림의 다른 부분들에 대해서는 토큰이 생성되지 않음을 특징으로 하는 침입 검출 시스템.21. The intrusion detection system of claim 20, wherein the tokens are generated only for syntax elements in the data stream that may be associated with risk factors, and no tokens are generated for other portions of the data stream. 제17항에 있어서, 상기 데이터 파서는 파서 스택에 포함된 심볼들에 따라 데이터를 파싱함을 특징으로 하는 침입 검출 시스템.18. The intrusion detection system of claim 17, wherein the data parser parses data according to symbols included in the parser stack. 제22항에 있어서, 상기 파서는, 데이터 스트림 내 상이한 문장구조 요소들에 부합하는 생성 규칙 코드들을 포함하는 파서 테이블을 구비하고, 상기 생성 규칙 코드들은 파서 스택으로부터의 심볼들과 데이터 스트림의 부분들에 의해 색인됨을 특징으로 하는 침입 검출 시스템. 23. The parser of claim 22, wherein the parser includes a parser table that includes generation rule codes that match different sentence structure elements in the data stream, wherein the generation rule codes are symbols of the parser stack and portions of the data stream. Intrusion detection system, characterized in that indexed by. 제23항에 있어서, 상기 생성 규칙 코드들에 의해 색인되는 생성 규칙들을 구비한 생성 규칙 테이블을 포함하고, 생성 규칙들 중 일부는 위험인자 필터링 회로에 의해 데이터 스트림으로부터 위험인자들을 필터링 할 때 실행되는 마이크로 명령들을 어드레싱함을 특징으로 하는 침입 검출 시스템. 24. The method of claim 23, comprising a generation rule table with generation rules indexed by said generation rule codes, wherein some of the generation rules are executed when filtering risk factors from the data stream by a risk factor filtering circuit. An intrusion detection system characterized by addressing micro instructions. 제17항에 있어서, 서로 다른 네트워크 프로세싱 장치들에 자리하는 위험인자 필터링 회로들로부터, 상기 서로 다른 네트워크 프로세싱 장치들에 의해 처리되는 서로 다른 데이터 스트림들의 서로 다른 문장구조 요소들을 식별하는 토큰들을 수신하고, 상기 서로 다른 문장구조 요소들에 따라 필터들을 생성하여 그 서로 다른 네트워크 프로세싱 장치들에 대해 그 필터들을 다시 배포하는 중앙 침입 검출기를 포함함을 특징으로 하는 침입 검출 시스템.18. The method of claim 17, further comprising receiving tokens identifying different sentence structure elements of different data streams processed by the different network processing devices from risk factor filtering circuits located in different network processing devices. And a central intrusion detector for generating filters in accordance with the different syntax elements and redistributing the filters to the different network processing devices. 제25항에 있어서, 상기 중앙 침입 검출기는 상기 토큰들을 보내는 네트워크 프로세싱 장치들에 의해 수행되는 네트워크 프로세싱 오퍼레이션들에 따라 상기 필터들을 생성함을 특징으로 하는 침입 검출 시스템.27. The intrusion detection system of claim 25, wherein the central intrusion detector generates the filters in accordance with network processing operations performed by network processing devices that send the tokens. 제17항에 있어서, 상기 데이터 스트림으로부터 위험인자들을 필터링하는 위험인자 필터링 회로에 앞서, 상기 데이터 스트림으로부터 조각화된(fragmented) 패 킷들을 재구축(reassembling)하는 재순환 (recirculation) 버퍼를 포함함을 특징으로 하는 침입 검출 시스템. 18. The method of claim 17, further comprising a recirculation buffer that reconstructs fragmented packets from the data stream, prior to the risk factor filtering circuit that filters risk factors from the data stream. Intrusion detection system. 어의 프로세서에 있어서,In the processor of the language, 데이터 스트림에서 문장구조 요소들을 식별하는 직접 실행 파서 (DXP; Direct Execution Parser); 및A Direct Execution Parser (DXP) that identifies sentence structure elements in a data stream; And 직접 실행 파서에 의해 식별된 문장구조 요소들에 따라 데이터 스트림에 대해 침입 검출 오퍼레이션들을 수행하는 한 개 이상의 어의 프로세싱 유닛 (SPU)들을 포함함을 특징으로 하는 어의 프로세서.A word processor comprising one or more word processing units (SPUs) that perform intrusion detection operations on a data stream in accordance with the syntax elements identified by the direct execution parser. 제28항에 있어서, 문장구조 요소들에 해당하는 비단말(non-terminal) 심볼들과 데이터 스트림의 부분들(portions)이 결합된 것에 의해 색인되는 생성 규칙 코드들의 집합들을 포함하는 파서 테이블을 구비함을 특징으로 하는 어의 프로세서.29. The apparatus of claim 28, further comprising a parser table comprising sets of generation rule codes indexed by combining non-terminal symbols corresponding to sentence structure elements and portions of data streams. Word processor, characterized in that. 제29항에 있어서, 파서 테이블의 생성 규칙 코드들에 의해 색인되는 생성 규칙들을 포함하는 생성 규칙 테이블을 포함하고, 그 생성 규칙들 중 적어도 일부는, 침입 검출 오퍼레이션들을 수행하기 위해 하나 이상의 SPU에 의해 실행되는 마이크로 명령들을 색인하는 SPU 엔트리 포인트 값들을 포함함을 특징으로 하는 어의 프로세서. 30. The system of claim 29, comprising a generation rule table comprising generation rules indexed by generation rule codes of the parser table, wherein at least some of the generation rules are executed by one or more SPUs to perform intrusion detection operations. A word processor comprising SPU entry point values that index micro instructions to be executed. 제28항에 있어서, 상기 하나 이상의 SPU들은 데이터 스트림 내 패킷들을 사전 (priori) ACL 필터들의 제1집합과 비교하고, 그런 다음 그 비교결과에 따라 패킷들을 배제하거나 저장함을 특징으로 하는 어의 프로세서.29. The processor of claim 28 wherein the one or more SPUs compare the packets in the data stream with a first set of prior ACL filters, and then exclude or store the packets according to the comparison result. 제31항에 있어서, 상기 하나 이상의 SPU들은 침입 검출 오퍼레이션들을 수행할 때, 고정 지연 시간 동안 패킷들을 저장함을 특징으로 하는 어의 프로세서.32. The processor of claim 31 wherein the one or more SPUs store packets for a fixed delay time when performing intrusion detection operations. 제32항에 있어서, 하나 이상의 SPU들은 DXP에 의해 식별된 문장구조 요소들로부터 토큰들을 생성하고, 토큰들에 부합하는 액세스 제어 리스트 (ACL)를 동적으로 생성하는 위험인자 분석기로 그 토큰들을 제공함을 특징으로 하는 어의 프로세서.33. The system of claim 32, wherein the one or more SPUs generate tokens from the syntax elements identified by the DXP and provide the tokens to a risk factor analyzer that dynamically generates an access control list (ACL) that matches the tokens. Characterized by the processor. 제33항에 있어서, 상기 하나 이상의 SPU들은, 저장된 패킷들 중 상기 동적으로 생성된 ACL에 매치되는 것을 버림을 특징으로 하는 어의 프로세서.34. The processor of claim 33 wherein the one or more SPUs discard a match to the dynamically generated ACL of stored packets. 제28항에 있어서, 데이터 스트림 내 조각 패킷들을 재구축하기 위해 상기 하나 이상의 SPU들에 의해 사용되는 재순환 버퍼를 포함하고, 상기 직접 실행 파서는 그 재구축된 패킷들 안에서 문장구조 요소들을 식별하고, 하나 이상의 어의 프로세싱 유닛들 (SPUs)은 그 식별된 문장구조 요소들에 따라 침입 검출 오퍼레이션들을 수행함을 특징으로 하는 어의 프로세서.29. The system of claim 28, further comprising a recycling buffer used by the one or more SPUs to reconstruct fragment packets in the data stream, wherein the direct execution parser identifies sentence structure elements within the reconstructed packets, One or more word processing units (SPUs) for performing intrusion detection operations in accordance with the identified sentence structure elements. 제28항에 있어서, 상기 직접 실행 파서는 데이터 스트림 안에서 단순 메일 전송 프로토콜 (SMTP) 패킷들을 식별하고, 하나 이상의 SPU들에 명하여 그 SMTP 패킷들로부터 이메일 요소들을 추출해 추출된 이메일 요소들을 사용해 SMTP 패킷들에 적용될 이메일 위험인자 필터들의 집합을 생성하도록 함을 특징으로 하는 어의 프로세서.29. The method of claim 28, wherein the direct execution parser identifies Simple Mail Transfer Protocol (SMTP) packets in the data stream, instructs one or more SPUs to extract email elements from the SMTP packets, and uses the extracted email elements to extract SMTP packets. And a processor for generating a set of email risk factor filters to be applied to. PDA (PushDown Automaton) 엔진에 있어서,In the PDA (PushDown Automaton) engine, 적어도 일부 섹션들이, 입력 데이터에 포함될 수 있는 멀티-캐릭터 어의 요소들에 부합하는 하나 이상의 어의 엔트리들을 포함하고 있는, 서로 다른 PDA 어의 상태들에 해당하는 서로 다른 섹션들로 구성되는 어의 테이블을 포함하고, A lexicon consisting of different sections corresponding to states of different PDA words, wherein at least some sections contain entries of one or more words that correspond to elements of the multi-character language that may be included in the input data. Contains a table, 상기 어의 테이블은 상기 서로 다른 어의 상태들을 식별하는 심볼들과 입력 데이터의 세그먼트들을 결합한 것에 의해 색인됨을 특징으로 하는 PDA 엔진. The word table is indexed by combining segments of input data with symbols identifying the states of the different words. 제37항에 있어서, 상기 심볼 및 입력 데이터 세그먼트 결합에 매치되는, 현재의 PDA 상태 내 어의 엔트리에 따라, 다음 PDA 어의 상태를 식별하는 어의 상태 맵을 포함함을 특징으로 하는 PDA 엔진. 38. The PDA engine of claim 37, comprising a word state map identifying a state of a next PDA word according to an entry of a word in a current PDA state that matches the symbol and input data segment combination. 제38항에 있어서, 입력 데이터 세그먼트들과 결합하기 위한 심볼을 꺼내고(pop) 상기 어의 상태 맵에 의해 식별된 다음 어의 상태에 부합하는 다음 심볼을 넣는(push) 스택을 포함함을 특징으로 하는 PDA 엔진. 39. The stack of claim 38, comprising a stack for popping a symbol for associating with input data segments and for pushing a next symbol corresponding to a state of the next fish identified by the state map of the fish. PDA engine. 제39항에 있어서, 상기 스택은, 여러 이전 PDA 어의 상태들을 나타내는 비단말 심볼들을 포함함을 특징으로 하는 PDA 엔진.40. The PDA engine of claim 39, wherein the stack includes non-terminal symbols representing states of several previous PDA words. 제37항에 있어서, 상기 어의 테이블은, 입력 데이터에서 식별된 어의 요소들에 따라, 그러나 그 어의 요소들에 포함될 수 있는 개별 캐릭터들에 관계없이, 서로 다른 PDA 어의 상태들 사이에서 천이 됨을 특징으로 하는 PDA 엔진. 38. The word table of claim 37, wherein the table of words is between different PDA language states depending on the elements of the word identified in the input data, but irrespective of the individual characters that may be included in the elements of the word. PDA engine characterized in that the transition. 제37항에 있어서, 상기 어의 테이블은 콘텐츠 어드레스형 메모리 (CAM)를 포함하고, CAM 내의 어의 엔트리 위치들은 다음 어의 상태를 식별하기 위한 입력 데이터 내 어의 요소들에 매치 됨을 특징으로 하는 PDA 엔진.The word table of claim 37, wherein the word table comprises a content addressable memory (CAM), wherein entry positions of the word in the CAM match elements of the word in the input data to identify a state of the next word. PDA engine. 제42항에 있어서, CAM에 의해 색인되고, 어의 엔트리들과 비교하기 위해 PDA 엔진으로 이동할 입력 데이터 량을 식별하는 스킵(skip) 데이터 맵을 포함함을 특징으로 하는 PDA 엔진.43. The PDA engine of claim 42, comprising a skip data map indexed by the CAM and identifying a quantity of input data to be moved to the PDA engine for comparison with entries in the language. 제37항에 있어서, 어의 테이블에 의해 식별된 어의 상태들에 따라 입력 데이터에 대한 추가 오퍼레이션들을 실행하는 하나 이상의 어의 프로세싱 유닛들 (SPUs)을 포함하는 재구성 어의 프로세서 (RSP)를 구비함을 특징으로 하는 PDA 엔 진.38. The processor of claim 37, comprising a reconstruction word processor (RSP) comprising one or more word processing units (SPUs) for performing additional operations on input data in accordance with the states of the word identified by the word table. PDA engine characterized by. 제44항에 있어서, 하나 이상의 SPU들에 의해 실행될 마이크로 명령들을 시동하기 위해 어의 테이블에 의해 색인되는 어의 엔트리 포인트 (SEP) 맵을 포함함을 특징으로 하는 PDA 엔진.45. The PDA engine of claim 44, comprising a word entry point (SEP) map indexed by a word table to invoke micro instructions to be executed by one or more SPUs.
KR1020077016831A 2004-12-21 2005-12-20 Network Interfaces and Firewall Devices Withdrawn KR20070087198A (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US63900204P 2004-12-21 2004-12-21
US60/639,002 2004-12-21
US11/125,956 2005-05-09
US11/125,956 US20050216770A1 (en) 2003-01-24 2005-05-09 Intrusion detection system
US11/187,049 2005-07-21
US11/187,049 US20070022479A1 (en) 2005-07-21 2005-07-21 Network interface and firewall device
US70174805P 2005-07-22 2005-07-22
US60/701,748 2005-07-22

Publications (1)

Publication Number Publication Date
KR20070087198A true KR20070087198A (en) 2007-08-27

Family

ID=36602256

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077016831A Withdrawn KR20070087198A (en) 2004-12-21 2005-12-20 Network Interfaces and Firewall Devices

Country Status (2)

Country Link
KR (1) KR20070087198A (en)
WO (1) WO2006069041A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101022508B1 (en) * 2009-03-30 2011-03-16 플러스기술주식회사 Denial of Service Attacks and Distributed Service Attack Protection Systems
KR101041997B1 (en) * 2009-09-11 2011-06-16 주식회사 엘림넷 Countermeasure System and Method for Active Detection and Blocking of Web Firewall
KR101440154B1 (en) * 2007-09-11 2014-09-12 주식회사 엘지씨엔에스 Apparatus and method for authenticating a user of a network security system

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8869270B2 (en) 2008-03-26 2014-10-21 Cupp Computing As System and method for implementing content and network security inside a chip
US20080276302A1 (en) 2005-12-13 2008-11-06 Yoggie Security Systems Ltd. System and Method for Providing Data and Device Security Between External and Host Devices
US8381297B2 (en) 2005-12-13 2013-02-19 Yoggie Security Systems Ltd. System and method for providing network security to mobile devices
KR100922579B1 (en) 2006-11-30 2009-10-21 한국전자통신연구원 Apparatus and method for detecting network attack
CN100555991C (en) * 2006-12-29 2009-10-28 华为技术有限公司 Message access control method, forwarding engine device and communication device
US8365272B2 (en) 2007-05-30 2013-01-29 Yoggie Security Systems Ltd. System and method for providing network and computer firewall protection with dynamic address isolation to a device
US8631488B2 (en) 2008-08-04 2014-01-14 Cupp Computing As Systems and methods for providing security services during power management mode
US8789202B2 (en) 2008-11-19 2014-07-22 Cupp Computing As Systems and methods for providing real time access monitoring of a removable media device
CN102333080A (en) * 2011-08-02 2012-01-25 杭州迪普科技有限公司 Method and device for preventing message from attacking
EP2907043B1 (en) 2012-10-09 2018-09-12 Cupp Computing As Transaction security systems and methods
US11157976B2 (en) 2013-07-08 2021-10-26 Cupp Computing As Systems and methods for providing digital content marketplace security
WO2015123611A2 (en) 2014-02-13 2015-08-20 Cupp Computing As Systems and methods for providing network security using a secure digital device
US20200045352A1 (en) * 2018-08-02 2020-02-06 Imagine Communications Corp. System and process for generalized real-time transport protocol stream segmentation and reconstruction
JP7176455B2 (en) * 2019-03-28 2022-11-22 オムロン株式会社 Monitoring system, setting device and monitoring method
US11418491B2 (en) 2020-02-26 2022-08-16 Cisco Technology, Inc. Dynamic firewall discovery on a service plane in a SDWAN architecture
CN113676402B (en) * 2020-05-13 2022-12-27 华为技术有限公司 Protocol message processing method, network equipment and computer storage medium
DE102020128285B4 (en) 2020-10-28 2024-06-13 Audi Aktiengesellschaft Method for monitoring data traffic between control units of a motor vehicle and motor vehicle equipped accordingly
TWI774355B (en) * 2021-05-05 2022-08-11 瑞昱半導體股份有限公司 Network switch and abnormal event detecting method
EP4170978A1 (en) 2021-10-22 2023-04-26 Audi AG Method for monitoring data traffic between control devices of a motor vehicle and corresponding motor vehicle
EP4505677A4 (en) * 2022-07-22 2025-10-15 Ericsson Telefon Ab L M COMMUNICATION METHOD AND DEVICE FOR COMMUNICATION SECURITY

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426634B2 (en) * 2003-04-22 2008-09-16 Intruguard Devices, Inc. Method and apparatus for rate based denial of service attack detection and prevention

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101440154B1 (en) * 2007-09-11 2014-09-12 주식회사 엘지씨엔에스 Apparatus and method for authenticating a user of a network security system
KR101022508B1 (en) * 2009-03-30 2011-03-16 플러스기술주식회사 Denial of Service Attacks and Distributed Service Attack Protection Systems
KR101041997B1 (en) * 2009-09-11 2011-06-16 주식회사 엘림넷 Countermeasure System and Method for Active Detection and Blocking of Web Firewall

Also Published As

Publication number Publication date
WO2006069041A3 (en) 2007-06-07
WO2006069041A2 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
US11516181B2 (en) Device, system and method for defending a computer network
US20070022479A1 (en) Network interface and firewall device
KR20070087198A (en) Network Interfaces and Firewall Devices
US7706378B2 (en) Method and apparatus for processing network packets
US20070022474A1 (en) Portable firewall
US20050216770A1 (en) Intrusion detection system
US9769276B2 (en) Real-time network monitoring and security
US8296842B2 (en) Detecting public network attacks using signatures and fast content analysis
EP1873992B1 (en) Packet classification in a network security device
Gonzalez et al. Shunting: a hardware/software architecture for flexible, high-performance network intrusion prevention
US8751787B2 (en) Method and device for integrating multiple threat security services
JP2004304752A (en) System and method of defending attack
JP2004533676A (en) Application layer security method and system
EP1897324A1 (en) Multi-pattern packet content inspection mechanisms employing tagged values
EP1627308A2 (en) Application layer security method and system
CN101116052A (en) Network interface and firewall equipment
JP2008524965A (en) Network interface and firewall devices
Attig Architectures for rule processing intrusion detection and prevention systems
Attig SEVER INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
Bing et al. VDS: Malware Detection System

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20070720

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid