KR20070087198A - Network Interfaces and Firewall Devices - Google Patents
Network Interfaces and Firewall Devices Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event 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
본 출원은 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)
사설 네트워크(24) 내 네트워크 프로세싱 장치들(25A-25D)은 패킷 교환 네트워크를 통해 통신하는 임의의 타입의 계산기 장치일 수 있다. 예를 들어, 네트워크 프로세싱 장치들(25a 및 25b)은 라우터들, 스위치들, 게이트웨이들, 방화벽들 등등일 수 있다. 엔드 포인트(25C)는 퍼스널 컴퓨터 (PC)이고 엔드 포인트(25D)는 인터넷 웹 서버같은 서버이다. PC(25C)는 유선 이더넷 접속같은 유선 접속이나, 가령 IEEE 802.11 프로토콜을 이용하는 무선 접속을 통해 사설 네트워크(24)로 접속될 수 있다.The
재구성 어의 프로세서들 (RSPs)(100)은 사설 네트워크(24) 내 네트워크 장치들(25A-25D)의 임의 조합으로서 오퍼레이션한다. 상이한 RSP들(100)이 사설 네트워크(24) 안으로, 그리고 그것을 관통해 지나가는 네트워크 트래픽(22)을 수집하여 분석한다. 네트워크 프로세싱 장치 내 RSP(100A)는 이 예에서, 사설 네트워크(24)의 방화벽 및 일반 네트워크 인터페이스로서 오퍼레이션하도록 구성되어 있다. 이 하에서 설명될 네트워크 인터페이스 및 기타 일반 방화벽 오퍼레이션들은 RSP(100) 안에 구현되는 것으로 보여지고 있으나, 이들 오퍼레이션들 중 몇몇은 다른 통상의 컴퓨터 구조들로서 구현될 수도 있다는 것을 알아야 한다.Reconfigurable processors (RSPs) 100 operate as any combination of
일 실시예에서, 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(100)는 사설 네트워크(24) 안에 내부적으로 위치한 다른 네트워크 처리 장치들 안이나, 사설 네트워크(24) 안으로의 임의의 다른 주요 액세스 포인트에 설치될 수 있다. 예를 들어, RSP(100B)는 이하에서 보다 상세히 설명될 유사한 인증, 라우팅, 통계적 분석 등등의 오퍼레이션들(26)을 제공하기 위해 서버(25D)에 위치할 수 있다. 이와 달리, 패킷 오퍼레이션들(26) 중 일부가 RSP(100B) 안에서 수행되고 RSP(100A)에서는 수행되지 않을 수도 있다. 예를 들어, RSP(100B)는 RSP(100A)에 의해 수행되는 어떤 다른 패킷 분석 필터링 및 패킷 번역들 외에, 통계적 분석이나 DoS 필터링을 수행할 수 있다.In another example,
사설 네트워크(24) 내 어떤 다른 네트워크 프로세싱 장치들(25B 및 25C) 역시 이하에 설명되는 오퍼레이션들 가운데 어느 것을 수행하도록 구성되는 하나 이상의 RSP들(100)을 포함할 수 있다. RSP(100)를 사용하는 플랫폼은, 셀룰라 코드 분할 다중화 액세스 (CDMA)나 시분할 다중화 액세스(TDMA), 802.11, 블루투스 등과 같은 무선 인터페이스를 거쳐 패킷들이나 기타 데이터 스트림들을 수신하는, 무선 PDA (Personal Digital Assistant), 무선 셀 폰, 무선 라우터, 무선 액세스 포인트, 무선 클라이언트 등등일 수도 있다.Any other
재구성 어의 프로세서 (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.
직접 실행 파서 (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
DXP(180)는 또한, 버퍼들(140, 160 및 160) 및 메모리 서브시스템(215) 사이에서의 데이터 전송을 다루는 어의 프로세싱 유닛 (SPU)(200)에 의해 패킷들의 처리를 제어한다. 메모리 서브시스템(215)은 입력 포트(120)로부터 수신된 패킷들을 저장하고, 이하에서 설명되는 통합 정책 관리(UPM) 오퍼레이션들 및 기타 방화벽 오퍼레이션들을 위해 사용되는 CAM(220)에 액세스 제어 리스트 (ACL) 테이블을 역시 저장한다.
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)로의 입력을 규정한다.
생성 규칙 테이블(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
어의 코드 테이블(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
SPU(200)는 문맥상의 심볼들로 어드레스 가능한 체계화된 메모리 인터페이스를 제공하는, 메모리 서브시스템(215)으로의 여러 액세스 경로들을 가진다. 메모리 서브시스템(215), 파서 테이블(170), 생성 규칙 테이블(190), 및 어의 코드 테이블(210)은 온칩(on-chip) 메모리, 동기 DRAM (Dynamic Random Access Memory)들 및 CAM (Content Addressable Memory)들 같은 외부 메모리 장치들, 혹은 그러한 자원들의 결합형을 사용할 수 있다. 각각의 테이블이나 콘텍스트는 단지 다른 테이블들이나 콘텍스트들 중 하나 이상을 가진 물리적 공유 메모리 공간에 대한 맥락상의 인터페이스를 지원할 것이다.
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
메모리 서브시스템(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) 테이블 및 기타 파라미터들을 실질적으로 방화벽 기능을 향상시키는 방식으로 포함한다.
RSP(100)의 오퍼레이션 블록들에 대한 세부적인 설계 최적사항들은 2003년 1 월 24일 출원된 Reconfigurable Semantic Processor라는 제목의 공동 계류중인 출원 10/351,030에 기술되어 있고, 그 내용은 이 명세서에 참조 형태로서 포함된다.Detailed design optimizations for the operation blocks of the
방화벽 및 네트워크 인터페이스 오퍼레이션들을 위한 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
1. 패킷을 그 자체로서 받아서 그것을 출력 포트(152)로 전달하거나;1. receive the packet as it is and forward it to the
2. 패킷을 더 이상의 처리로부터 제외해 그것을 전달하지 않거나;2. Drop the packet from further processing and do not forward it;
3. 패킷을 변경한 다음 그것을 출력 포트(152)로 전달하거나;3. change the packet and then forward it to
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
어떤 비허용 패킷들이나 오퍼레이션들은 지원하는 SEP 루틴들(212)에 의해서만 판단될 수 있다. 이들은 대부분 세션 및 프로토콜의 상태를 포함한다. 한 예가, TP 데이터 페이로드 세그먼트를, 해당 TCP SYN 메시지를 통해 전송하기 전에 보내는 것일 것이다. 이 예에서, SEP 루틴(212)은 TCP SYN 메시지 뒤에 오지 않는 TCP 세션들 동안 메모리(280)에서 패킷들을 제외하게 될 것이다.Certain unacceptable packets or operations may only be determined by the supporting
SEP 코드(212)와 연계하여 파서 문법들을 사용하는 것이 다 우수한 성능을 제공하는데, 이는 직접 실행 파서(180)가 SPU들(200)에서의 추가 사이클들을 소모함이 없이 바로 패킷들을 거부하거나 비공격 패킷들을 DoS 프로세싱 주변으로 다시 향하게 할 수 있기 때문이다. 전통적인 방화벽들은 "불량" 규칙들로 된 리스트에 대해 각각의 패킷을 체크해야 한다. 새로운 공격들이 발견되기 때문에 이것은 시간이 지나면서 늘어난다. 반대로, 파서 문법은 양호한 패킷들만이 RSP(100)를 통과하도록 서술 및 허용하도록 작성될 수 있다. 따라서, 불량 패킷들은 자동으로 걸러지거나, SPU들(200)에 의해 바로 처리된다. 이것이 패킷 모니터링 오퍼레이션에 대한 보다 나은 스케일링을 제공한다. Using parser grammars in conjunction with the
RSPRSP 파서 및 생성 규칙 테이블들 Parser and Generation Rule Tables
방화벽 또는 통합 정책 관리자 (UPM)으로서의 RSP(100) 오퍼레이션은 특정 예를 통해 더 잘 이해될 것이다. 이하에서 설명되는 예에서, RSP(100)는 TCP 패킷 들의 서비스 거부 (DoS) 필터링을 지원한다. 그러나, 이 분야의 당업자들이라면 아래에 예시하는 개념들이 임의의 통신 프로토콜을 사용해 전송되는 임의의 데이터 스트림에 대한 임의 타입의 방화벽 오퍼레이션에 대해서도 당연히 적용가능하다는 것을 알 수 있을 것이다. 유사한 개념들 역시 아래에 기술되는 통합 정책 관리 (UPM) 오퍼레이션들에 용이하게 적용될 수 있다.
방화벽 및 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
PR 코드들(178)은 생성 규칙 테이블(190)에 저장된 해당 생성 규칙(176)을 액세스하는데 사용된다. 특정 룩업 구성에 의해 요구되지 않는다면, 입력 값들(308) (가령, n이 어떤 선택된 바이트 단위의 매치(match) 폭일 때 현 입력 값들 DI[n]과 결합 된 비단말 (NT) 심볼(172))은 PR 테이블(170)에 임의의 특정 순서에 따라 배정될 필요가 없다.
일실시예에서, 파서 테이블(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
일실시예에서, 파서 테이블(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
DI[n] 매치값(314)의 각 비트는 "0", "1", 또는 "X" ("상관없음-Don't care를 나타냄)로 세팅될 수 있다. 이 기능이 PR 코드들(178)로 하여금, 파서 테이블(170)이 하나의 매치를 찾을 수 있도록, DI[n](174)의 오직 소정의 비트들/바이트들만이 한 코딩된 패턴에 부합할 것을 요구할 수 있게 한다. Each bit of the DI [n]
예를 들어, 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
파서 테이블(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
도 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,
어드레서(320)는 이들 수신된 PR 코드들(178) 및 NT 심볼들(172)을 사용해 해당 생성 규칙들(176)을 액세스한다. 어드레서(320)는 일부 구성들에서 반드시 필요로 되지 않을 수 있지만, 사용될 경우 DXP(180)의 일부, 혹은 PRT(190)의 일부, 또는 중간 오퍼레이션 블록이 될 수 있다. 어드레서는 가령 파서 테이블(170)이나 DXP(180)가 곧바로 어드레스들을 생성하는 경우 필요로 되지 않을 수 있다.The
생성 규칙 테이블(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
스킵 바이트 세그먼트(177C)는 입력 버퍼(140)에 의해 사용되는 스킵 바이트 값을 포함해, 그 버퍼 포인터를 증가시켜 입력 스트림의 프로세싱을 전진시킨다. 프로세싱 생성 규칙들에 유용한 다른 정보 역시 생성 규칙(176)의 일부로서 저장될 수 있다. The
이 예에서, 생성 규칙 코드(178A)로서 색인되는 하나 이상의 생성 규칙들(176A)은 입력 버퍼(140)에서 식별된 TCP SYN 패킷과 조화된다. SEP 세그먼트(177B)는 도 4-11을 통해 이하에서 설명되는 것과 같이, SPU(200)에 의해 실행될 때, 식별된 TCP SYN 패킷에 대한 DoS 오퍼레이션을 수행하는, 도 2a의 어의 코드 테이블(210) 내 SPU 코드(212)를 가리킨다. In this example, one or
일실시예에서, SPU(200)는 병렬로 오퍼레이션 될 수 있는 어의 프로세싱 요 소들의 어레이를 포함한다. 생성 규칙(176A)의 SEP 세그먼트(177B)는 하나 이상의 SPU들(200)이 상이한 패킷들에 대해 동일한 방화벽 오퍼레이션을 수행하거나 동일한 패킷에 대해 상이한 방화벽 오퍼레이션들을 병렬로 수행하도록 착수시킨다. 이하에 설명되는 방화벽, 네트워크 인터페이스, 혹은 UPM 오퍼레이션들 중 어느 것에 대해 필수적일 수 있는 어떤 다른 타입의 패킷이나 데이터 식별자를 검출하는데 유사한 오퍼레이션이 이용될 수 있다는 것은 자명한 것일 것이다. In one embodiment,
상술한 바와 같이, 파서 테이블(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
생성 규칙 코드들(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
서비스 거부 (DoS)Denial of Service (DoS)
도 3은 DoS 공격(16)이 네트워크 프로세싱 장치(406)를 어떻게 위태롭게 하 는지를 보인 것이다. 일반적으로, DoS 저지의 목적은 악의적 패킷들이 사설 네트워크(24) 내 네트워크 프로세싱 장치들로 액세스 되는 것을 막기 위한 것이다. 이하의 설명은 한 네트워크장치를 여러 패킷들로 넘치게 하는 것과 관련된 한 DoS 공격의 일례를 논의한다. 그러나, 하나, 혹은 몇몇 적대적 패킷들과 관련된 다른 여러 적대적 공격들의 타입들이 존재한다. 예를 들어, 다른 적대적 공격들은 네트워크 프로세싱 장치 프로토콜 스택의 정상 오퍼레이션을 방해하는 하나나 몇몇 개의 패킷들과 관련될 수 있다. 네트워크 프로세싱 장치나 네트워크에 대한 이러한 적대적 공격들 중 하나를 이하에서는 일반적으로 DoS 공격들로 칭하며, 모두 본 발명의 시스템의 범주 안에 있다. 3 shows how
도 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
TCP SYN 공격들(400)과 패킷 조각 공격들(402)은, 가능한 여러 상이한 타입의 DoS 공격들 가운데 일부 예들일 뿐이다. 예를 들어, 공격자들은 TCP Finish (마침) (FIN) 패킷들이나 중복되는 패킷 조각들을 보냄으로써 네트워크 장치들을 정시시킬 수도 있다. 다른 포트 기반 DoS 공격에 있어서, 어떤 웜 (worm)이 사설 네트워크(24)의 한 장치 안에 자리할 수 있고, 그것이 이후에 공격자(14)에 의해 사설 네트워크(24) 안에서부터 가짜 메시지들을 전송하도록 관리된다. DoS 공격들은 또한 인터넷 제어 메시지 프로토콜 (ICMP) 메시지들을 통해 일어날 수도 있다.
새로운 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
네트워크 처리 장치(406)는 어떤 소정 기간 중에 각각의 TCP SYN 메시지(400)에 상응하는 TCP 상태들(408)을 보유하도록 요구된다. 이렇게 많은 수의 가짜 TCP 상태들(408)을 보유하는 것은 다른 적법한 IP 트래픽의 처리가 심각하게 느려지게 되거나 그 적법한 IP 트래픽이 누락될 정도로 네트워크 장치(406) 내 자원들을 고갈시킨다. The
유사한 시나리오 하에서, 공격자(14)는 관련 시퀀스 넘버들을 가진 패킷 조각들(402)을 전송할 수 있다. 네트워크 프로세싱 장치(406)는 그 시퀀스에 따른 각 패킷 조각(402)이 수신될 때까지, 혹은 어떤 타임아웃 시간이 만기될 때까지 상태들(410)을 보유해야 한다. 공격자(14)가 고의적으로 그 시퀀스에서 패킷 조각들(402)을 제외시킬 수 있다. 이것이 네트워크 장치(406)로 하여금 타임아웃 시간의 듀레이션(지속기간, duration) 동안 패킷 조각들로 된 각 집합에 대한 상태들(410)을 보유할 것을 요구한다.Under similar scenarios, the
이러한 유형의 DoS 공격들에 대처하는 종래의 기술은 들어오는 패킷들(16)의 비율을 제한하는 것이다. 예를 들어, 네트워크 프로세싱 장치(406)가 모든 TCP SYN 패킷들에 대해 목적지 어드레스들을 식별할 수 있다. 수신된 패킷들의 수가 소정 비율 이상으로 증가할 때 어떤 특정 목적지 어드레스에 대한 TCP SYN 패킷들이 배제된다.The conventional technique for dealing with this type of DoS attacks is to limit the rate of
그러나, 각각의 DoS 공격을 지속적으로 감시 및 추적하는 것은 실질적 장치 자원들을 소모시킨다. 네트워크 프로세싱 장치(406)는 각각의 가능한 DoS 위험인자에 대해 들어오는 모든 패킷을 감시해야 한다. 예를 들어, 네트워크 프로세싱 장치(406)는 각각의 TCP SYN 패킷 및 각각의 패킷 조각을 식별해야 한다. 이것 하나도 프로세싱 집중적이다. 그러나, 네트워크 프로세싱 장치(406)는 비슷하게 수신되는 패킷들의 개수와 비율도 추적해야 하고, 필요하다면 DoS 비율 문턱치에 도달한 유사 유형의 패킷들을 배제해야 한다. 한 가지 문제가, 현재의 컴퓨터 구조들이 이러한 DoS 오퍼레이션들을 현재의 네트워크 라인 속도로 수행할 용량을 가지지 못했다는 것이다.However, continuously monitoring and tracking each DoS attack consumes substantial device resources. The
도 4를 참조할 때, 방화벽(420)이 고유한 방식을 통해 패킷들을 비율 제한함 으로써 DoS 공격들에 대해 더 효과적으로 식별 및 대항한다. 아래의 설명에서, DoS 공격의 일부가 될 수 있을 어떤 패킷을 DoS 후보 패킷이라 부른다. 예를 들어, TCP SYN 패킷들이 한 DoS 공격에 사용될 수 있다. 따라서, 한 TCP SYN 패킷이 방화벽(420)에 의해 DoS 후보자 패킷으로 식별된다. 조각화된 패킷이 가능한 한 DoS 공격에 사용될 수 있으며, 그에 따라 역시 방화벽(420)에 의해 DoS 후보 패킷으로 식별된다.Referring to FIG. 4, the
방화벽(420)은 관련된 목적지 어드레스들에 따라 DoS 후보 패킷들을 비율 제한한다. 각각의 가능한 DoS 공격에 대한 목적지 어드레스들의 식별 및 관리는 실질적 프로세싱 자원들을 필요로 할 수 있다. 그러나, 방화벽(420)에 사용된 구조가 이전 방화벽 구조들보다 더 효율적이고 스케일러블(salable)하므로, 상당량의 상이한 DoS 공격들을 고속 라인 속도로 감시 및 제거할 수 있게 된다.
영역들(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
예를 들어, 제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,
각각의 영역은 상이한 신뢰 레벨에 연계되어 있고 그에 따라 서로 다른 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
영역(2)은 패킷들이 알려진 한 소스(422)로부터 수신된다고 추정되므로 중간 신뢰 레벨을 갖는다. 그에 따라, 영역(2)에는 영역(1) 보다 높은 DoS 비율 리밋이 배정될 수 있다. 예를 들어, 소정 시기 중에, 영역(1)보다 더 많은 수의, 동일한 목적지 어드레스를 가진 TCP SYN 패킷들이 영역(2)를 통과하도록 허용될 수 있다. 이 예에서, 영역(3)은, 인터페이스(428) 사으로 수신되는 모든 패킷들이 사설 네트 워크(24) 내부에 자리한 장치들로부터 오기 때문에, 최고의 신뢰 레벨을 가진다. 그에따라, 영역(3)에서 수신되는 패킷들에 더 높은 DoS 비율 리밋이 할당될 수 있다.
수신된 패킷들과 결부되는 영역들은 소스 어드레스나 포트 정보에 따라 식별될 수 있다. 예를 들어, 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,
도 5를 참조할 때, 도 4에 도시된 방화벽(420)의 일실시예는 DoS 및 비-DoS 후보 패킷들을 포함할 수 있는 한 유입된 패킷 스트림(440)을 수신하는 프로세서(442)를 포함한다. 프로세서(442)는 먼저 DoS 공격과 관련될 수 있는 패킷 스트림(440) 내 패킷들 (DoS 후보 패킷들)을 식별한다. 예를 들어, 프로세서(442)는 TCP SYN 메시지를 포함하는 어느 유입 패킷 조각들이나 패킷들을 DoS 후보 패킷으로서 식별할 수 있다.Referring to FIG. 5, one embodiment of the
프로세서(442)는 식별된 DoS 후보 패킷들과 관련된 영역(468)을 식별하기 위해 테이블(464)에 액세스한다. 예를 들어, 프로세서(442)는 식별된 DoS 패킷 내 한 포트 값을 테이블(464)의 포트 넘버 엔트리(466)와 매치할 수 있다. 그런 다음 프로세서는 매치한 포트 넘버 엔트리(466)와 결부된 테이블(464) 내 영역(468)을 식별한다.
프로세서(442)는 식별된 DoS 패킷에 대한 목적지 어드레스(472) 및 관련 영역 값(468)을 결합한 것을 CAM (Content Addressable Memory)(444) 안으로의 어드레스로서 사용한다. CAM(444)은 목적지 어드레스 값들 및 영역 값들의 조합인 DoS 엔트리들(445)을 포함한다. CAM 안의 어드레스 위치들은 SRAM (Static Random Access Memory)(450)로의 포인터들로서 사용된다.
SRAM(450) 안의 메모리 위치들은 DoS 공격 플래그(452), 타임 스탬프(454), 계층 값(456), 및 오프셋(458)을 포함하는 필드들로 구획된다. DoS 공격 플래그(452)는, 특정 목적지 어드레스에 대한 패킷들의 개수가 소정 DoS 비율 리밋을 초과할 때마다 설정된다. 상술한 바와 같이, DoS 비율 리밋은 서로 다른 영역들(448)에 대해 맞춤화될 수 있다.Memory locations in the
타임 스탬프(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
프로세서(442)는 잠정적으로 DoS 공격의 일부가 될 수 있는 to DoS 후보 패킷들(475)을 식별한다. 새롭게 식별된 패킷(474)에 대한 목적지 어드레스(472) 및 영역 값(468)이 CAM(444)으로의 어드레스로서 사용된다. 새 DoS 후보 패킷(474)은 기존의 어떠한 엔트리들과도 매치하지 않을 것이므로, 프로세서(442)는 패킷(474)에 대한 새 DoS 엔트리(445)를 CAM(444) 안에 추가한다.
CAM(444) 안의 새 DoS 엔트리에 대한 해당 DoS 공격 플래그(452)는 클리어 되고, 타임 스탬프(454)는 현재의 시간 값으로 세팅된다. 계층 값(456)은 도 6을 통해 이하에서 더 상세히 설명되는 바와 같이 프로세서(442)에서 현재 동작하는 어느 계층 값으로나 세팅된다. 프로세서(442)는 어드레스 오프셋 값(458)을 사용하여 DRAM(462) 내 해당 카운터(460)를 1로 증가시킨다. 프로세서(442)는 그런 다음 패킷 스트림(440) 내 다음 패킷을 처리한다.The corresponding
가능한 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
패킷 스트림(440) 내 다음 패킷은 가능한 DoS 공격 (DoS 후보 패킷)으로 식별될 수 있다. 이 예에서, 다음에 식별된 패킷은 이미 CAM(444) 내에서 해당 DoS 엔트리를 포함할 수 있다. 예를 들어, 유사한 목적지 어드레스를 가진 하나 이상의 TCP SYN 패킷들이나 패킷 조각들은 동일한 DoS 시기 중에 방화벽(420)에 의해 이전에 수신되었을 수 있다. 그에 따라, 그 패킷에 대한 목적지 어드레스(472) 및 영역(468)은 CAM(444) 안의 엔트리들 중 하나에 부합할 것이다. 부합하는 CAM 엔트리(445)에 해당하는 어드레스(449)는 이제 SRAM(450)으로의 어드레스로서 사용된다. The next packet in the
프로세서(442)는 먼저 SRAM(450) 안의 DoS 공격 플래그(452)를 체크한다. 만약 DoS 공격 플래그(452)가 세팅되면, 프로세서(442)는 패킷 스트림(440) 안의 해당 패킷을 제외한다. 필요한 경우, 프로세서(442)는 이제 타임 스탬프(454) 및 계층 값(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
타임 스탬프(454)가 현재의 타임 값과 비교될 때 너무 오래되었으면, DRAM(460)의 해당 카운트 값(460)은 실효되어 0으로 리셋된다. 타임 스탬프(454)는 현재의 시간 값으로도 리셋된다. 이것은, 각각의 소정 시기 중에 카운트(460)를 효과적으로 리셋시킨다. 타임 스탬프(454)가 유효하고 (너무 오래되지 않았고) DRAM(462) 내 증가된 카운트(460)가 DoS 비율 리밋 이상이면, 프로세서(442)는 해당 DoS 공격 플래그(452)를 세팅한다. 이것이 프로세서(442)로 하여금 같은 목적지 어드레스를 가진 유사 패킷들을 배제하게 만든다.If the
계층(generation)Generation
계층 값(456)은 CAM(444), SRAM(450) 및 DRAM(462) 내 DoS 엔트리들을 관리하는데 사용된다. 도 6의 예를 참조할 때, CAM(444)는 논리적으로 네 가지 상이한 계층 섹션들(480)로 분할된다. 그러나, 이것은 단지 구성예일 뿐이며, 시스템은 어떠한 설정가능한 사이즈를 가진 어떠한 수의 계층 섹션들을 가진 것으로도 구성될 수 있다.The
도 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
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 엔트리들을 현재의 계층으로 이동하는 것은, 상대적으로 긴 시간 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
오퍼레이션 496에서, 프로세서(442)는 다음 계층(480)으로의 스위칭이 이뤄져야 할 때를 판단한다. 다양한 이벤트들이 프로세서(442)로 하여금 다음 계층으로 이동하게 만들 수 있다. 프로세서(442)는 현재의 계층 안에 모든 엔트리들이 다 찼을 때 오퍼레이션 498에서 다음 계층으로 이동할 것이다. 이것은, 가령, 공격자가 상이한 목적지 어드레스들을 가진 많은 TCP SYN 메시지들을 전송할 때 일어날 수 있다.In
프로세서(442)는 또한 소정 시기가 만기되었을 때 오퍼레이션 498에서 다음 계층으로 이동할 것이다. 이것은, 모든 타임 스탬프들(454) (도 5)이 프로세서(442)에 의해 추적된 현재의 시기에 부합되게 보장한다. 예를 들어, DRAM(462) 내 관련련 카운트 값들과 결합된 SRAM(450) 내 타임 스탬프들(454)은 상이한 목적지 어드레스들에 대해 패킷들이 수신되고 있는 레이트를 결정한다. 타임 스탬프 기간 만기 뒤에, 프로세서(442)는 타임 스탬프 값(454) 및 관련 카운트 값(460)을 모두 리셋해야 한다.
그러나, 프로세서(442)에 의해 사용된 현 시간 값이 롤오버 (roll-over; 한 회전)되고 다시 0으로 리셋 된 뒤에, 옛 DoS 엔트리들이 잠정적으로 CAM(444) 안에 남아 있을 수가 있다. 이 경우, 프로세서(442)는 DRAM(460)의 카운터(460)에 이전 타임 스탬프 기간에 해당하는 카운트 값들을 실수로 추가할 수 있다. 이것은 카운터(460)로 하여금 여러 타임 스탬프 기간들에 걸쳐 패킷들을 카운트하도록 잘못 유도할 수 있고, 이것이 DoS 공격 검출을 오인하게 만들 수 있다. 달리 말해, 여러 타임 스탬프 시기들에 걸친 패킷들의 카운팅이 실제 패킷 레이트의 틀린 표시를 제공한다.However, after the current time value used by
이러한 잠정적 롤오버 문제를 해결하기 위해, 프로세서(442)는 오퍼레이션 496에서, 현재의 계층 안의 엔트리 개수와 무관하게 어떤 소정 시기 이후 다음 계층으로 자동 이동한다. 이러한 소정 시기는 계층들의 총 수로 곱해질 때 (이 예에서, 게층들의 총 수는 4) 프로세서(442)에 의해 사용된 롤오버 타임 스탬프 기간 미만이 된다.To solve this potential rollover problem,
예를 들어, 프로세서(442)는 매 4초마다 한 회전하는 현 타이머를 보유할 수 있다. 다음 계층으로 이동하는데 사용되는 소정 시간 주기는 0.5 초로 세팅될 수 있다. 이것이 CAM(444) 안의 모든 정체된 DoS 엔트리들이 매 2초 마다 제거될 수 있게 만든다. 따라서, 프로세서(442)는 SRAM(450) 안의 모든 타임 스탬프들(454)이 동일한 타임 스탬프 주기와 결부될 것이라고 확신한다. 이것은 또 SRAM(450)이타임 스탬프들(454)에 대해 보다 작은 비트 수를 사용할 수 있게 만든다는 예상치못한 이점 역시 가지게 한다. 달리 말해, 타임 스탬프 값들(454)은 2 초 혹은 그 이상의 주변 어딘가의 시기를 추적하는데 충분한 비트 수만을 필요로 한다.For example,
오퍼레이션 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
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
도 5 및 8을 참조하면, DoS 공격 플래그(452)가 다른 처리 오퍼레이션들과 연계되어 사용되어, DoS 공격들을 식별하고 처리하는데 드는 지연을 줄이도록 된다. 오퍼레이션 540에서, 프로세서(442)는 패킷들을 수신한다. 오퍼레이션 542에서, 프로세서(442)는 수신된 패킷이 CAM(444) 내 DoS 엔트리로서 현재 포함되어 있지 않은 새 목적지 어드레스와 영역(zone)을 포함하는지를 판단한다.5 and 8,
CAM(444) 안에 사전에 존재하는 엔트리가 없는 경우, 그 패킷은 즉시 방화벽(420)을 통과하도록 허용된다. 패킷이 현재 CAM(444) 안에서 식별되지 않기 때문에, 그것은 현 DoS 공격의 일부일 수 없고, 따라서, 제외되지 않을 것이다. 패킷이 통과 허용된 다음에, 프로세서(442)는 그 사건 뒤 DoS 보수 오퍼레이션들을 수행한다. 이것은, 그 식별된 패킷 뒤에 오는 다른 패킷들이 불필요하게 지연되지 않도록 한다.If no entry exists in
"그 사건 뒤" 보수시, 프로세서(442)는 도 6 및 7을 통해 상술한 바와 같이 오퍼레이션 546에서 새로운 DoS 엔트리를 현 계층에 추가하고 오퍼레이션 548에서 다음 계층으로부터 한 DoS 엔트리를 제거한다. 오퍼레이션 550에서, 프로세서(442)는 DoS 공격 플래그(452)를 클리어하고 (이미 클리어 되지 않은 경우), 새 타임 스탬프 값(454)을 세팅하고, 현재의 계층 값(456)을 세팅하며, DRAM(462)내 해당 카운터(460)를 증가시킨다.Upon repairing "after the event",
필요하다면, 프로세서(442)는 오퍼레이션 552에서, 현 계층을 바꾼다. 예를 들어, 상술한 것과 같이, 프로세서(442)는 현재의 계층에 모든 엔트리들이 가득 찰 때나, 소정 타임 스탬프 기간이 만기된 뒤 현 계층을 변경한다. 새 DoS 엔트리에 대한 타임 스탬프(454)가 방금 세팅되었으므로, 타임 스탬프 기간은 만기되지 않을 것이나, 새 DoS 엔트리가 현 계층에 대한 현 DoS 엔트리 리밋에는 도달할 수 있다.If necessary, the
다시 오퍼레이션 542를 참조할 때, 프로세서(442)는 CAM(444) 안의 기존 DoS 엔트리에 해당하는 목적지 어드레스 및 영역을 가진 패킷을 수신할 수 있다. 매칭되는 CAM 엔트리에 부합하는 SRAM(450) 안의 DoS 공격 플래그(452)가 오퍼레이션 560에서 즉시 프로세서(442)에 의해 읽혀진다. 해당 DoS 공격 플래그(452)가 세팅되어 있으면, 오퍼레이션 580에서 그 패킷은 즉시 배제된다. 패킷은 그 패킷을 출력하지 않음으로써 배제되는 것이 아니라 궁극적으로 메모리 안에서 그 패킷 위에 덧씀으로써 배제된다.Referring again to
필요한 경우, 프로세서(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
타임 스탬프(454)는 그냥 빈번히 리셋 될 필요가 있기 때문에 (가령 초당 한 번씩), DRAM(462)의 카운트 값은 그냥 종종 액세스 되어야 할 것이다 (오퍼레이션 586). 이것은 특히, DRAM(462)이 SRAM(450) 보다 긴 액세스 타임을 필요로 하기 때문에 중요하다. 따라서 DoS 보수를 위해 프로세서(442)에 의해 요구되는 시간이 줄게 된다. 그럼에도 불구하고, DoS 보수 오퍼레이션들은 패킷이 이미 배제된 (오퍼레이션 580) 뒤에 수행되기 때문에, 다른 들어오는 패킷들(440) (도 5)이 프로세서(442)에 의해 불필요하게 지연되지 않을 것이다. 이것은 DoS 공격 중에 다른 적법한 패킷들의 처리를 실질적으로 느리게 하지 않으면서 방화벽(420)으로 하여금 기가비트(gigabit) 또는 그 보다 빠른 라인 레이트들로 패킷들을 필터링할 수 있게 만든다.Since the
오퍼레이션 560에서, 패킷은 CAM(444) 안에 기존 DoS 엔트리를 포함할 수 있지만 관련 DoS 공격 플래그(452)는 세팅되지 않는다. 오퍼레이션 562에서, 패킷은 방화벽을 통과하도록 허용된다. 필요한 경우, 프로세서(442)는 오퍼레이션 564에서 CAM(444) 안에서 매치하는 DoS 엔트리에 대한 계층 정보를 업데이트한다. 예를 들어, SRAM(450)에서 식별된 기존 계층(456)이 현재의 계층으로 세팅된다. 필요한 경우 프로세서(442)는 오퍼레이션 564에서, 도 6 및 7에서 이전에 나타낸 것과 같이, 계층 시간 주기가 만기되거나 현 계층의 계층 엔트리 최대 개수가 소정 리밋에 도달했을 때 현 계층을 변경할 수도 있다. At
기존 DoS 엔트리에 대한 카운터(460)가 오퍼레이션 566에서 증가되고 프로세서(442)는 카운트 값(460)과 관련 타임 스탬프(454)의 기간(age)을 체크한다 (568 오퍼레이션). 타임 스탬프 값이 타임 스탬프 주기 (만기된 타임 스탬프)보다 오래된 경우 (오퍼레이션 570), 카운트(460) 및 타임 스탬프(454)는 리셋된다(오퍼레이션 572).The
타임 스탬프가 유효하면(오퍼레이션 570), 프로세서(442)는 오퍼레이션 574에서 카운터(460)가 DoS 공격 문턱치를 넘는지를 판단한다. 넘지 않으면, 프로세서(442)는 오퍼레이션 540으로 돌아가서 가능한 DoS 공격에 대해 다음에 식별된 DoS 후보 패킷을 처리한다. 카운터(460)가 DoS 공격 문턱치를 넘는 경우, DoS 공격 플래그(452)가 세팅된다 (오퍼레이션 576).If the time stamp is valid (operation 570),
일실시예에서, DoS 공격 플래그(452)는 관련 패킷이 이미 방화벽(420)을 통과한 뒤에 세팅된다. 이러한 하나의 추가 패킷은 일반적으로 사설 네트워크(24) (도 3)의 타깃 장치 오퍼레이션을 교란하는데 충분하지 못하다. 그러나, DoS 관리 오퍼레이션들을 완수할 때까지 기다려야 할 필요 없이 패킷들을 방화벽(420)을 통해 전송하는 능력이 실질적으로 방화벽 성능을 향상시킨다. 또, 상술한 오퍼레이션들이 가능한 DoS 공격들과 관련된 패킷들 (DoS 후보 패킷들)에 대해서만 수행될 것이므로, DoS 관리 및 감시에 필요한 프로세싱 량은, 가능한 DoS 공격에 대해 모든 수신 패킷을 처리하는 다른 방화벽 구조들보다 실질적으로 줄게 된다.In one embodiment, the
RSPRSP 내 DoS 구현 My DoS implementation
다시 빠르게 도 5를 참조하면, 어떤 프로세서(442)라도 상술한 방화벽 시스템을 구현하는데 사용될 수 있다. 그러나, 성능을 한층 향상하기 위해, 일 실시예 상의 프로세서(442)는 앞서 도 2a-2c에서 기술된 재구성 어의 프로세서 (RSP)(100)를 이용해 구현된다. 도 9는 DoS 방지를 위해 RSP(100)가 어떻게 사용되는지를 더 상세히 보인 것이다. 설명의 단순성을 위해, 도 2a-2c에서 앞서 기술한 RSP(100)내 프로세싱 요소들 중 일부는 도 9에 도시되고 있지 않다.5, any
들어오는 패킷들(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 오퍼레이션들을 수행하도록 만든다.
메모리 서브시스템(215)은 앞서 도 5에 도시된 DRAM(462), CAM(444), 및 SRAM(450)을 포함한다. 한 구성에서 AMCD (Array Machine-Context Data Memory)(230)가 해싱 함수나 CAM (content-addressable memory)(444)을 통해 DRAM(462)나 SRAM(450)의 데이터를 액세스하는데 사용된다.
AMCD(230)는 각각이 CAM(444) 안의 한 엔트리와 결부된 비트들(605)을 포함하는 자유 테이블(604)을 포함한다. CAM(444)에서 어떤 미사용 엔트리는 제로 비 트(605)로 표현되고 CAM(444)의 어떤 유효 DoS 엔트리는 자유 테이블(604)의 한 관련 비트(605)로 표현된다. AMCD(320)는 자유 테이블(604)의 최초 제로 비트를 식별하는 SPU들(200)로부터 FFZ (Find First Zero; 최초 제로 찾기) 명령을 지원한다.
CAM(444)의 한 위치가 새 DoS 엔트리를 로딩하기 위해 식별될 필요가 있을 때, SPU들(200)은 자유 테이블(604)에 대해 FFZ 명령을 실행한다. FFZ 명령은 이후 CAM(444)의 해당 엔트리에 대한 포인터로서 사용되는, 자유 테이블(604) 내 최초 제로 비트의 위치를 리턴한다. SPU(200)는 새 패킷에 대한 목적지 어드레스와 영역을 CAM(444)에서 식별된 어드레스 위치 안에 로드한다.When a location of the
도 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
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
상술한 바와 같이, CAM(444) 안에서 이용가능한 엔트리들을 식별하고 어느 엔트리들을 CAM(444)에서 제거할지를 식별하는 이러한 DoS 보수 오퍼레이션들은, SPU들(200)이 이미 관련 패킷을 RSP(100)를 통과하지 못하게 하거나 허용한 뒤에 이뤄질 수 있다.As discussed above, these DoS maintenance operations that identify the entries available within
메모리 서브시스템(215)은 또한 정책 관리자에 의해 앞서 식별된 영역들을 식별하기 위해 SPU들(2000에 의해 사용되는 테이블(606) 역시 포함할 수 있다. 예를 들어, 패킷들은 DXP(180)에 의해 식별되는 포트 넘버를 포함할 수 있다. SPU(200)는 그 포트 넘버를 테이블(606) 안의 패킷 태그(610A)와 비교해 그 패킷을 수신하는 영역(610B)을 식별한다. 테이블(606)은 또 DoS 공격들을 식별하기 위해 각 영역과 결부된 패킷 레이트들(610C)을 역시 포함할 수 있다. SRAM(450)의 각 DoS 엔트리 마다 타임 스탬프들을 생성하고 각 타임 스탬프의 타임 스탬프 기간이 언제 만기되었는지를 판단하기 위해 타이머(612)가 SPU들(200)에 의해 사용된다. 계층 테이블(614)은 현재의 계층을 식별한다.The
RSP(100)는 또한 가짜 IP 어드레스들을 가진 어떤 패킷을 식별하여 버릴 수도 있다. 예를 들어, 일련의 IP 어드레스들이 멀티캐스트 목적지 어드레스들로서 예비된다. 예비된 멀티캐스트 어드레스들에 대응하는 소스 어드레스와 함께 수신 된 어떤 패킷들은 DXP(180)에 의해 검출되어 즉시 배제될 수 있다.
도 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
DoS 후보 패킷이 식별될 때, DXP(180)는 오퍼레이션 656에서 SPU들(200)로 시그날링(602)을 보내 요구되는 DoS 오퍼레이션과 관련된 DoS SEP 코드(620)를 로드하도록 한다. 예를 들어, SEP 코드(620)는 식별된 TCP SYN 패킷이나 식별된 패킷 조각과 결부된 특정 타입의 DoS 오퍼레이션과 결부될 수 있다.When the DoS candidate packet is identified, the
오퍼레이션 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
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) 안의 카운트 정보를 업데이트한다.
도 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
무효한 패킷은 이제 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
오퍼레이션 708에서, SPU(200)는 SRAM(450) 내 정보를 업데이트하고, 필요하다면, DRAM(462) 내 관련 카운트(460)를 증가시킨다. SPU(200)는 오퍼레이션 710에서 테이블들(604, 606, 608 및 614) 안의 어떤 필수 정보를 업데이트한다. SPU(200)는 그런 다음 DXP(180)로부터 새 SEP 명령들(602)을 기다린다.At
통합 방화벽/라우팅 관리 (통합 정책 관리)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
라우터나 스위치 같은 다른 별개의 네트워크 컴퓨팅 장치(806)가 그 다음에 방화벽(804)을 통과한 패킷들을 라우팅하거나 스위칭해야 한다. 예를 들어, 라우터/스위치(806)로부터 수신된 패킷들은 네트워크(812) 내 다른 네트워크 프로세싱 장치들로 그 패킷들을 더 전달하는 다른 라우터들이나 스위치들(808)로 전달될 수 있다. 라우터나 스위치(806)는 서버(810)나 퍼스널 컴퓨터(PC)(814) 같은 엔드 포인트들로 패킷들을 라우팅할 수도 있다.Another separate
이러한 종래의 구조가 가진 문제는, 방화벽 장치(804)와 라우팅 장치(806)가 자율적으로 오퍼레이션한다는 데 있다. 따라서, 별개의 프로세싱 및 메모리 자원들이 각 장치(802 및 806) 마다 필요로 된다. 이것은 에지(edge) 설비의 하드웨어 비용만을 증가시키는 것이 아니라, 규모가변성(scalability)을 제한하며, 이 에지 장치들이 원하는 라인 레이트들로 패킷들을 처리하는 것을 방해할 수 있다. The problem with this conventional structure is that the
예를 들어, 방화벽(804)은 가능한 TCP SYN 패킷들에 대해 들어오는 모든 패킷을 감시할 필요가 있을 수 있다. 상술한 바와 같이, 이것은 방화벽(804)으로 하여금 들어오는 각각의 패킷마다 목적지 어드레스를 식별하도록 요구할 것이다. DoS 공격의 일부가 아닌 TCP SYN 패킷들은 이제 라우터(806)로 전달된다. 그러면 라우터(806)는 다시, 패킷들을 적합한 목적지로 라우팅하기 위해, 방화벽(804)으로부터 수신된 패킷들(806)의 목적지 어드레스들을 판단해야 한다. 따라서, 각각의 네트워크 프로세싱 장치(804 및 806)마다 동일한 패킷들에 대해 동일한 패킷 처리 오퍼레이션들 중 일부를 수행해야 한다. 결국, 각 장치(804 및 806)은 별개의 패 킷 상태들, 패킷 버퍼들 등등을 보유해야 한다. 이것은 상술한 것처럼, 네트워크 프로세싱 장치들의 전반적인 규모가변성과 프로세싱 용량을 제한시킨다.For example,
도 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
프로세서(822)는 들어오는 패킷 스트림(802)을 수신하여 개별 패킷들(821)과 결부된 조건자 집합 (predicate set)(854)을 식별한다. 조건자 집합(854)에 대해서는 이하에서 도 14를 통해 더 상세히 설명되나, 일반적으로는 방화벽이나 전송 오퍼레이션과 결부될 수 있는 수신 패킷들 내의 어떤 정보일 수 있다. 예를 들어, 조건자 집합(854)은 반드시 그렇게 한정되는 것은 아니지만 IP 어드레스들, TCP 포트 넘버들, IP 프로토콜 식별자들 등등을 포함할 수 있다. 조건자 집합(854)은 본 발명의 다른 고유 양태 상에서, 세션 개시 프로토콜 (SIP), 범 자원 로케이터 (URL), 단순 메시징 전송 프로토콜 (SMTP), 하이퍼테긋트 전송 프로토콜 (HTTP), 파일 전송 프로토콜 (FTP) 정보 같은 상위 개방 시스템 상호접속 (OSI) 계층 정보와, 첨부 및 기타 텍스트 문서 식별 같은 다른 어플리케이션 계층 정보를 포함할 수도 있다. The
액세스 제어 리스트(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
다른 특정한 고유 구성예에서, 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
테이블(840)의 ACL 엔트리들은 관련 패킷이 네트워크 프로세싱 장치(820)를 통과하는 것을 허용하거나 거부하도록 프로세서(822)를 관리하는 액션들(852) 역시 포함한다. 다른 ACL 액션들(852)은 관련 패킷이 특정 목적지로 향하거나 추가 처리를 위해 다시 프로세서(822)를 통과하게 할 수 있다. 다른 상황하에서, 방화벽 정책 액션(852)은 프로세서(822)에 명하여 관련 패킷(821)이 특정 출력 포트(8456)로 라우팅되게 할 수 있다. ACL entries in the table 840 also include
테이블(840)의 FIB(842) 및 방화벽 정책 ACL들(848)의 조합은, 동일한 네트 워크 프로세싱 장치(820)에서 보통은 수행되지 않는 각종 상이한 UMP 오퍼레이션들을 지원한다. 예를 들어, UPM 오퍼레이션들의 작은 부분집합이, DoS나 침입 검출에 대해 상술한 것 같은 제외 패킷들(838)을 포함한다. 네트워크 프로세싱 장치(820)는 패킷들을, 목적지 어드레스를 향해 전송되기 전에, 변경 또는 표제(tag)할 수도 있다. 예를 들어, 패킷들(824)은 특정 터널(826) 안에서 캡슐화되거나, 특정 QoS 레벨로 표제되는 등으로 될 수 있다.The combination of the
다른 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
도 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
액세스 제어 리스트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
ACL 테이블(840)의 최초 엔트리(860)는 목적지 IP 어드레스 조건자(860A), 소스 IP 어드레스 조건자(860B), TCP 포트 넘버 조건자(860C), 설정 TCP 세션 조건자(860D), 및 허용 액션(860E)를 포함한다. 이 예에서, ACL(860)이 ACL 테이블(840)의 최초 엔트리이다. 물론, 어떠한 스퀀스나 조합의 ACL 엔트리들도 ACL 테이블(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
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 엔트리들(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 엔트리(864)는 TCP DoS 액션(864D)과 결부되어 있고, 목적지 IP 어드레 스 조건자(862A)와 동일한 목적지 IP 어드레스 조건자(864A)를포함한다. 그러나, 조건자(864B)는 소스 IP 어드레스 조건자(862B)와 다른 소스 IP 어드레스 C를 포함한다. 이것은 다른 네트워크 인터페이스로부터 수신될 수 있는 패킷들에 해당한다. 따라서, ACL 액션(864D)은 다른 해당 영역(3)을 가진 TCP DoS 오퍼레이션에 대한 것이다. 프로세서(822)는 액션(864D)를 수신할 때 DoS 공격들을 결정하기 위한 상이한 패킷 레이트 문턱치를 사용할 수 있다.
ACL 엔트리(866)는 IPv4에서 IPv6로의 전환과 관련된 것이다. 예를 들어, 들어오는 패킷들(821)은 IPv6를 사용하여 동작하는 네트워크를 통해 수신될 수 있다. 그러나, 다른 쪽 네트워크 프로세싱 장치(820)에 대해 동작하는 네트워크는 IPv4를 사용할지 모른다. 그에 따라, 네트워크 프로세싱 장치(820)는 모든 IPv6 패킷들을 IPv4 패킷들로 전환할 필요가 있을 수 있다.
들어오는 패킷(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
ACL 엔트리들(868 및 870)은 정책 기반 라우팅이나 스위칭 오퍼레이션들과 관련된다. ACL 엔트리(868)는 방화벽 정책 메트릭(868B)과 결합 된 포워딩 정보 베이스 (FIB) 라우팅 기준(868A 및 868C)을 포함한다. 마찬가지로, ACL 엔트리(870)는 방화벽 정책 메트릭(870B)과 결합 된 FIB 라우팅 기준(870A 및 870C)을 포함한다. 이 ACL 엔트리들(868 및 870)은 네트워크 프로세싱 장치(820)가 IP 목적지 어드레스들 및 방화벽 정책 메트릭들 모두에 기초하여 서로 다른 포트들로 패킷들을 라우팅하거나 스위칭할 수 있게 한다.
예를 들어, 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,
도 15는 도 13의 네트워크 프로세싱 장치(820)가 어떻게 UPM을 행하는지를 보다 상세히 나타낸다. 오퍼레이션 880에서, 프로세서(822)가 들어오는 패킷들(821)을 수신하고, 오퍼레이션 882에서 그 들어오는 패킷들로부터 조건자 집 합(854)을 생성한다. 예를 들어, 프로세서(822)는 IP 패킷 필드들의 소정 집합을 식별하고, 추출하며, 소정 순서에 따라 조건자들로 포캣시킨다. IP 패킷 필드들 중 하나가 들어오는 패킷(821)에 존재하지 않으면, 리스트 상의 다음 패킷 필드가 추출되어 이전에 추출되고 포맷된 조건자들과 결합되다.FIG. 15 illustrates in more detail how the
프로세서(822)는 오퍼레이션 884에서 그 조건자 집합(854)을 ACL 테이블(840)에 적용하고, 오퍼레이션 886에서 ACL 테이블(840)에서 매치하는 조건자 엔트리로부터 수신된 액션을 수신 및 실행한다. 단순화를 위해, ACL 테이블에서 나온 세 가지 액션 카테고리들만이 도 15에 기술된다. 그러나, 어떠한 수의 상이한 액션들이든 ACL 엔트리들로 구성될 수 있다. 오퍼레이션 892에서 드롭 액션(852)이 ACL 테이블(840)에서 수신되면, 프로세서는 패킷을 버린다 (오퍼레이션 900). 프로세서(822)는 다음 입력 패킷(821)에 대한 프로세싱을 시작하기 전에 배제된 패킷과 관련된 어떤 통계적 정보를 기록(log)할 것이다 (오퍼레이션 902). The
통과 액션(852)이 ACL 테이블로부터 수신되면 (오퍼레이션 890), 프로세서는 오퍼레이션 898에서 FIB(842) (도 13)에 따라 패킷을 라우팅하거나 스위칭할 것이다. 통과 액션(890)은 전송 포트 넘버를 포함할 수 있고, 아니면 프로세서(822)에 명하여 이 전송 포트 정보를 얻기 위해 ACL 테이블(840)을 재액세스하게 할 수 있다.If a
조종(steer) ACL 액션(852)이 ACL 테이블로부터 수신되면 (888 오퍼레이션), 프로세서는 894 오퍼레이션에서 이 ACL 액션과 결부된 방화벽 오퍼레이션을 수행한다. 적용될 수 있다면, 프로세서(822)는 관련된 한 방화벽 정책 메트릭에 따라 패 킷을 전송할 수도 있다 (오퍼레이션 894). 예를 들어, 도 14를 통해 상술한 바와 같이, 조종 액션(852)은 프로세서에 명하여 TCP 패킷들을, 특정 포트를 통해, DoS 공격들에 대해 체크하는 네트워크 프로세싱 장치로 항하게 전송하도록 할 수 있다.When a
이와 달리, 오퍼레이션 888에서 식별된 조종 액션(852)이 프로세서(822)로 하여금 패킷에 대한 추가 방화벽 프로세싱을 수행하게 할 수도 있다. 예를 들어, 조종 액션(852)은 프로세서(822)로 하여금 네트워크 어드레스 전환 (NAT)을 행하게도 할 수 있다. 그에 따라, 프로세서(822)는 필요하다면 패킷(821)으로부터 다른 조건자 집합(854)를 추출하고 (오퍼레이션 882) 그 새 조건자 집합(854)를 ACL 테이블(840)에 재적용할 수 있다 (오퍼레이션 884). ACL 테이블(840)에서 수신되는 다음 ACL 액션(852)에 따라, 프로세서(822)는 NAT 오퍼레이션 후에 패킷을 배제(drop), 통과 또는 조종(steer)할 수 있다.Alternatively, steering
상위 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
주지할 중요한 양상은, 정책 관리 메트릭들의 어떠한 조합도 단순히 새 조건자들을 테이블(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
도 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
이 예에서, 포워딩 결정들은 각자 계층 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
들어오는 패킷(821)에 대한 TCP 및 UDP 식별자들은 초기 패킷 프로세싱 중에 프로세서(822)가 목적지 IP 어드레스를 식별할 때와 동시에 프로세서(822)에 의해 식별된다. 그런 다음, 패킷을 전송하기 위한 올바른 출력 포트를 정하기 위해, 목적지 IP 어드레스 및, TCP 또는 UDP 식별자가 ACL 테이블(910)의 엔트리들과 비교된다. 이것은, 패킷들이 계층 4 메트릭들에 기초해 어떻게 전송되는가에 대한 한 예를 보인다.TCP and UDP identifiers for the
ACL 엔트리(914)는 입력 패킷이 목적지 IP 어드레스 안에 서브넷 필드들 "12.0.x.x"를 포함할 때 패킷들을 특정 출력 포트 2로 전송하는 통상적 포워딩 테이블 엔트리이다.
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 엔트리(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
이러한 각종 링크들(938, 940, 및 942) 각각을 지원하는 웹 서버들은 서로 다른 인터넷 위치, 및 가능하게는 (그러나 여기 한정되는 것은 아님) 다른 지리학적 위치에 자리할 수 있다. 예를 들어, 고객 지원 서버(944)는 애틀랜타의 회사 본부에 위치할 수 있고, 자동자 세일즈 서버(946)는 디트로이트에, 그리고 가구 세일즈 서버(949)는 프랑스 파리에 위치할 수 있다. ACL 테이블(910) (도 16)은 사용자(930)를 URL 링크들(938, 940 및 942)에 보다 효과적으로 연결시키는데 활용된다. Web servers supporting each of these
예를 들어, 사용자가 고객 지원 링크(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
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
도 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
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
오퍼레이션 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
세 번째 상황에서, 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 엔트리들(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
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
도 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)은 방화벽, 통상의 라우터나 스위치, 또는 이 둘의 조합들 사이를 용이하게 이동할 수 있다. 예를 들어 어의 코드 테이블(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
이와 달리, CAM(220)으로 제공된 초기 조건자 집합(956)이, 초기에 DoS TCP 엔트리(980E)와 매칭하는 대신 FIB 엔트리(986)와 매칭할 수 있다. 엔트리(986)에 포함된 그에 따른 결과적 액션이 SPU(200)로 하여금 관련 패킷을 출력 포트를 통해, TCP DoS 오퍼레이션을 지원하는 다른 장치로 전송하도록 감독할 것이다.Alternatively, the initial predicate set 956 provided to the
네트워크 어드레스 전환 (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
통상적으로, 사설 네트워크(24) 내에서 동작하는 각종 네트워크 프로세싱 장치들과 관련된 여러 개의 고유한 사설 IP 어드레스들이 있다. 그러나, 단 한 개, 혹은 소수의 공중 IP 어드레스들만을 사용해 그 여러 사설 IP 어드레스들을 나타낼 수 있다. 이러한 공중-사설 어드레스 전환은, 사설 네트워크(24) 내 내부 장치들의 아이덴티티를 보호하고 사설 네트워크(24) 내 여러 사설 어드레스들로의 매핑에 요구되는 공중 어드레스들의 수를 줄이게 한다. Typically, there are several unique private IP addresses associated with various network processing devices operating within
다른 실시예에서, 하나 이상의 사설 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
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
더 자세히 설명하면, 사설 네트워크(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
나가는 패킷(1050)을 수신하는 장치(1056)는 패킷(1061)을 다시 로컬 장치(1078)로 보낼 수 있다. 장치(1056)는 패킷(1050) 안의 공중 IP 어드레스(1052) 및 포트 넘버(1054)를, 로컬 장치(1078)로 다시 보내지는 패킷(1061)에 대한 목적지 어드레스(1058) 및 포트 넘버(1060)로서 사용한다. RSP(100)는 패킷(1061) 안의 목적지 어드레스(1058) 및 포트 넘버(1060)를 룩업 테이블(1064) 내 포트 넘버 엔트리들(1066)로 매핑한다. RSP(100)는 매치되는 포트 넘버 엔트리(1060)에 해당하는, 룩업 테이블(1079) 안의 사설 IP 어드레스 엔트리(1070)를 식별한다.The
RSP(100)는 패킷(1061) 내 공중 목적지 IP 어드레스(1058)를 룩업 테이 블(1064)로부터 식별된 사설 IP 어드레스(1070)로 대체한다. 사설 및 공중 IP 어드레스들 사이의 전환 중에, RSP(100)는 패킷을 해체하고(de-assemble), 첵셈(checksum) 값을 재생성하고 그런 다음 패킷을 다시 구축(assemble)한다.
도 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
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)에 저장한다.
오퍼레이션 1108에서, SPU(200)는 패킷(1072)의 사설 IP 소스 어드레스(1070)를 관련 포트 넘버(1054) (도 20)를 포함하는 공중 소스 IP 어드레스(1052)로 대체한다. SPU(200)는 또한 나가는 패킷에 대한 새로운 첵섬을 생성할 수도 있다 (오퍼레이션 1110). 마지막으로, SPU(200)는 오퍼레이션 1112에서 공중 IP 어드레스(1052) 및 포트 넘버(1054)를 가진 패킷(1050)을 DRAM(280)으로부터 출력 포트(152)로 전송한다.In
도 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
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)로 출력한다.
RSP(100)는 NAT/PAT 오퍼레이션 이전이나 이후에 동일 패킷들에 대한 다른 변경 및 모니터링 오퍼레이션들을 수행하도록 구성될 수 있다. 이 경우, SPU(200)는 DRAM(280)으로부터 새 사설 IP 어드레스(1074)를 가진 패킷을, 추가 방화벽 프로세싱을 위해 다시 재순환 버퍼(160)(도 2a)로 보낼 수 있다. 이후 다른 방화벽 오퍼레이션들이 재순환 버퍼(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
한 예에서, 방화벽(1062)은 IPv6 패킷(1156)을 IPv4 패킷(1172)으로 전환한다. 다른 예에서, 방화벽(1062)은 IPv6 패킷(1156)을 IPv4 터널(1164) 안으로 캡슐화한다. 그 반대 변환과 관련해, 방화벽(1062)는 IPv4 패킷들을 IPv6 패킷들로 전환하거나 IPv4 패킷들(1172)를 IPv6 터널들 안에 캡슐화할 수 있다. 이러한 각종 변환들은 방화벽(1062)과 결부된 IP 네트워크들의 종류에 따라 좌우된다.In one example,
들어오는 패킷(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
그러나, 타입 필드(1186)가 RSP(100)의 반대 단에 대해 동작하는 IP 버전과 다른 IP 버전을 가리키면, DXP(180)는 오퍼레이션 1202에서 SPU(200)에 신호해, 들어오는 IP 패킷을 다른 네트워크에 대한 IP 버전으로 전환하게 하는 마이크로 명령들을 SCT(210)(도 2a)로부터 로드하게 한다. 이 예에서, SPU(200)는 IPv6 패킷을 IPv4 패킷으로 변환한다. However, if the
오퍼레이션 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
도 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
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)의 특징들 가운데 하나가, 부가적 패킷 프로세싱 오퍼레이션들이, 부가적인 하드웨어를 필요로 하지도 않고 소프트웨어나 프로세싱 상태 복잡도에 있어서의 실질적 증가 없이 수행될 수 있다는 것이다. 예를 들어, 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
여러가지 상이한 방화벽 오퍼레이션들은 일반적 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
RSP(100)는 또한 어떤 특정한 데이터 사이즈를 처리하는 것으로 제한되지 않는다. 따라서, 어떤 IPv4 또는 IPv6 오퍼레이션이나, 나중에 개발될지 모를 어떤 다른 IP 버전이나 어드레스 사이즈가 같은 RSP 구조(100)를 사용해 용이하게 구현된다. RSP(100)는 단순히 DXP(180)에 대해 최소한의 새로운 문법, SPU들(200)에 의해 실행될 추가 SEP 코드, 그리고 CAM(220) 및 SRAM(221)에 추가 엔트리들을 더함으로써이러한 상이한 IP 버전들 및 어드레스 사이즈들을 처리하도록 구성될 수 있다.
이것은 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)
방화벽(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
IPSec ESP 헤더(1210)는 수신된 패킷을 해독하는데 필요한 정보 및, 수신된 패킷(1204)을 인증하는데 필요한 인증 다이제스트를 옵션으로서 포함한다. IPSec AH 헤더(1208)는 수신된 패킷(1204)을 인증하는데 필요한 인증 다이제스트를 포함한다. IPsec 패킷(1218)이 IPSec AH 헤더(1208)를 포함할 때, 인증 다이제스트는 계층 3 프로토콜 안에 위치하고; 그외 IPSec ESP 모드시 인증 다이제스트만이 ESP 트레일러(1210) 내 패킷의 페이로드 뒤에 위치한다.The
IPsec 패킷(1218)은 VPN 터널(1207)로서의 인터넷(1212)을 통해 컴퓨터(1216)로 전송된다. VPN/방화벽(1214)은 AH 헤더(1208) 및 ESP 헤더(1210) 안의 정보에 따라 IPsec 패킷(1218)을 해독한다. 해독된 IP 패킷(1204)은 이제 컴퓨터(1216)로 전송된다. VPN/방화벽(1214)은 앞서 위에서 서술한 것과 같은 해독된 패킷들(1204)에 대한 다른 방화벽 오퍼레이션들 중 어느 것을 수행할 수도 있다.
도 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
보안 협회(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)
관련 해독 알고리즘들은 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
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
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 액션들이다.
동일한 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
해독화된 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
이와 달리, 해독화(1234)로부터의 출력이 이차 DoS 필터링(1238)을 통과할 수 있다. 이차 DoS 필터링(1238)은 IP 패킷(1204)에서 지금 해독된 IP 어드레스 및 다른 식별자들에 대해 DoS 검출 및 필터링을 수행할 수 있다. 예를 들어, DoS 및 기타 UPM 오퍼레이션들에 대해 사용되는 조건자들 중 일부가 이제 해독된다. 해독된 조건자들은 식별된 다음 이차 DoS 오퍼레이션(1238), UPM, 또는 다른 필요로 되는 방화벽 오퍼레이션들을 수행하는 데 사용된다. Alternatively, output from
추가 방화벽 오퍼레이션들은 이 명세서에 참증으로서 포함되는 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
어떤 방화벽 오퍼레이션들이 구현되는지와 해독된 IP 패킷들(1204)에 따라, RSP(100)는 포스트 해독화 오퍼레이션들(1236, 1238, 1240 또는 1240)의 임의의 조합오퍼레이션을 수행할 수 있다. 당연히, 상술한 다른 방화벽 오퍼레이션들 가운데 임의의 오퍼레이션 역시 수행될 수 있다.Depending on which firewall operations are implemented and the decrypted
방화벽 정책 관리 사용 면허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)는 중앙집중화된 면허 관리를 지원한다. 예를 들어, 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)는 어느 서브-네트워크들(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
예를 들어, 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,
방화벽(1502) 내 SPU(200) 또는 다른 프로세싱 요소들은 인터넷(1500)과 각 서브 네트워크(1520, 1522, 및 1524) 사이에서 활성화된 접속들의 개수에 대한 카운트(1529)를 계속 보유할 수 있다. 메모리(221)는 이 활성화된 접속 카운트(1529) 및 방화벽(1502)에 연결된 각 서브 네트워크에 대해 취득된 면허의 수(1531)를 저장한다.
SPU(200)는, 이미 식별된 패킷 목적지 어드레스(1527)를 CAM(220)에 적용함으로써 AV 소프트웨어(1504)가 패킷(1525)에 적용되어야 하는지를 빠르게 결정할 수 있다. CAM(220)은 서브-네트워크(1522)에 대한 가능한 면허의 개수(1531)와 현재의 접속 카운트(1529)를 포함하는 SRAM(221)의 위치를 식별한다. 하나 이상의 AV 면허가 활용가능하면, SPU(200)는 다른 방화벽 오퍼레이션들을 수행하기 전이나 후에 AV 소프트웨어(1504)를 패킷(1525)에 적용한다.
서브 네트워크가 공중 네트워크에 자리하면, 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 소프트웨어(1504)는 AV 면허를 갖지 않는 서브 네트워크들에는 적용되지 않을 것이다. 예를 들어, 아무 면허 키 액션들(1530)도 서브 네트워크(1520)와 관련된 ACL 엔트리들에 대해 설정되지 않을 것이다. 그에 따라, RSP(100)는 서브 네트워크(1520)로 향하는 패킷들에 AV(1504)를 적용하지 않을 것이다.The
RSPRSP 어레이들 Arrays
도 30 및 31을 참조할 때, 여러 RSP들(100)이 직렬 혹은 병렬 방화벽 오퍼레이션들을 제공하기 위해 서로 연결될 수 있다. 예를 들어, 도 30에서 여러 RSP들(100A-100D)은 직렬로 연결되어 있고, 그 각각은 서로 다른 방화벽, 라우팅 또는 침입 검출 시스템 (IDS) 오퍼레이션을 수행한다. 제1RSP(100A)는 5 개 한 벌 소스 및 목적지 IP 어드레스 및 포트 넘버들을 추출함으로써, 들어오는 패킷들(1598)로부터 IP 정보를 식별 및 추출할 수 있다.30 and 31,
제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
물론, 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
이것이 각각 이어서 따라오는 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
이것이, 패킷 프로세서 상태들이 용이하게 전달되지 못하는 종래의 프로세서 구조들과 다른 점이다. 결국, 패킷 프로세싱 시스템에 더해진 각각의 추가적 일반 프로세서가 전반적 네트워크 프로세싱 장치 성능을 반드시 선형적으로 향상시키지는 않을 것이다. 즉, 일반적인 컴퓨터 구조를 가진 패킷 프로세싱 장치들의 수를 배가하는 것이 반드시 전반적 프로세싱 성능을 배가하는 것은 아니다. 역으로, 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
도 31은 RSP(100)의 다른 대안적 구성을 보인 것이다. 이 구성에서, 하나 이상의 RSP들(100)이 병렬로 오퍼레이션한다. 제1RSP(100A)는 패킷으로부터 추출된 IP 어드레스 및 다른 조건자들에 기반하여, 하나라도 있다면 다른 방화벽 오퍼레이션들이 들어오는 패킷들(1598)에 대해 수행될 필요가 있는가를 판단하는 초기 UPM 오퍼레이션을 수행할 수 있다. RSP(100A)는 식별된 방화벽 정책 메트릭들에 따라 패킷들을 RSP들(100B-C)로 라우팅한다. 31 shows another alternative configuration of the
예를 들어, 식별된 방화벽 조건자들에 기초해, 패킷(1598)은 RSP(100B)에 의해 주어지는 DoS 프로세싱을 필요로 할 수 있다. 그에 따라, RSP(100A)는 이 패킷들을 RSP(100B)로 라우팅한다. RSP(100B)가 그 패킷에 대한 목적지 서브넷 어드레스가 도 28 및 도 29에서 설명한 것과 같은 관련 IDS 면허를 가졌다고 판단하면, 패킷은 안티-바이러스 프로세싱을 위해 RSP(100C)로 라우팅될 수 있다. 그렇지 않으면, RSP(100B)는 그 패킷들을 로컬 네트워크(1604)의 엔트포인트를 향해 전송할 수 있다.For example, based on the identified firewall predicates, the packet 1598 may require DoS processing given by the
RSP(100A)에서의 UPM 라우팅이, 패킷이 IPv4 포맷으로 전환되어야 한다고 판단할 때, 그 패킷은 RSP(100D)로 라우팅 된다. 패킷(1598)은 다음으로 RSP(100E)로 보내져 다른 상위 OSI 계층 데이터에 따라 처리된다. 예를 들어, RSP(100E)는 도 17에서 개시한 것처럼 패킷 내 HTTP 정보에 따라 패킷을 라우팅할 수 있다. 다른 패킷들은, 다른 NAT 및 DoS 오퍼레이션들을 수행하기 위해 각자 RSP들(100F 및 100G)로 라우팅될 수 있다.When UPM routing in
명령 라인 인터페이스 (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
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
로깅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)에 통지하게 할 수도 있다.
MCPU(56)는 배제 패킷에 포함된 특정 정보, 및 유사하게 배제되는 패킷들의 개수를 식별하는 통계를 로그(log)로 포맷한다. 이 로그는 RSP(100)에서 인지된 이벤트들을 수신 및 기록하는 시스템 기록자(syslog)의 IP 어드레스를 포함하는 IP패킷들로 포맷될 수 있다. 로그를 포함하는 패킷들이 SPU(200)에 의해 출력 포트(152)를 거쳐 시스템 기록자 장치로 전송될 수 있다.
어떠한 인지 이벤트들도 RSP(100)에 의해 기록될 수 있고, 상술한 방화벽 오퍼레이션들을 통해 식별된 이벤트들 가운데 하나 (한정되는 것은 아님)를 포함할 수 있다. 예를 들어, SEP 코드(212)도 SPU들(200)에 명하여 CAM(220) 안의 특정 ACL 엔트리들에 부합하는 패킷들을 MCPU(56)로 전송하게 할 수 있다.Any acknowledgment events may be recorded by the
통계statistics
필요한 어떤 통계라도 RSP(100)에 기록될 수 있으며, 논리적으로 저장되거나 로깅 시스템으로 전송될 수 있다. 예를 들어, SPU(200)는 수신되거나, 배제되거나, 출력된 모든 패킷을 카운트하도록 프로그램될 수 있다. 서로 다른 SEP 코드(212)는 다른 관련 방화벽 오퍼레이션들과 함께 로깅 명령을 포함할 수 있다. RSP(100)는 수신되거나 전송된 패킷들과 관련된 통계 정보를 식별한다. 예를 들어, 수신된 패킷들의 개수, 수신된 패킷들의 사이즈, 전송된 패킷들의 사이즈 및 개수, 배제된 패킷들의 개수, 불량 첵섬을 갖는 패킷들의 개수, 복제 패킷들의 개수, 실패한 로그인 시도 등등. 그 통계는 CLI 명령들(286)을 통해 컴퓨터(284)로 다운로드될 수 있고, 아니면 SPU(200)에 의해 출력 포트(152)를 거쳐 주기적으로 패킷들을 통해 전송될 수 있다.Any statistics needed may be recorded in the
보증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
침입 검출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
사설 네트워크(2024) 내 네트워크 프로세싱 장치들(2025A-2025D)은 패킷 교환형 네트워크를 통해 통신하는 임의의 타입의 컴퓨팅 장치일 수 있다. 예를 들어, 네트워크 프로세싱 장치들(2025A 및 2025B)은 라우터들, 스위치들, 게이트웨이들 등일 수 있다. 이 예에서, 네트워크 프로세싱 장치(2025A)는 방화벽으로서 오퍼레이션하고 장치(2025B)는 라우터나 스위치로서 오퍼레이션한다. 엔드포인트(2025C)는 퍼스널 컴퓨터(PC)이고 엔드포인트(2025D)는 인터넷 웹 서버 같은 서버이다. PC(2025C)는 가령 IEEE 802.11 프로토콜을 이용하는 무선 접속이나 유선 이더넷 접속 같은 유선접속을 통해 사설 네트워크(2024)로 연결될 수 있다. The
침입 검출 시스템 (IDS)(2018)은 사설 네트워크(2024)에서 동작하는 네트워크 장치들(2025A-2025D)의 어떤 조합으로서 구현될 수 있다. 각각의 IDS(2018)가 호스트 네트워크 프로세싱 장치(2025)를 통과하는 네트워크 트래픽(2022)를 수집 및 분석하고, 바이러스를 포함하는 패킷 스트림(2022) 내 어느 패킷들(2016)을 식별해 버린다. 일 실시예에서, IDS(2018)은 이하에서 더 상세히 설명할 재구성 어의 프로세서 (RSP)를 이용해 구현된다. 그러나, IDS(2018)가 RSP를 이용하는 구성들에만 국한되지 않고 다른 프로세싱 장치들 역시 사용될 수 있다는 것을 알아야 한다.Intrusion detection system (IDS) 2018 may be implemented as any combination of
일례에서, 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,
다른 실시예에서, 네트워크 프로세싱 장치들(2025) 내의 IDS들(2018)은 사설 네트워크(2024) 안에서 발생한 바이러스(2016A)를 찾아 제거하는데 사용된다. 예를 들어, PC(2025C)의 운영자가 공중 IP 네트워크(2012)에서 동작하는 한 네트워크 장치로 보내지는 바이러스(2016A)를 생성할 수 있다. 내부 네트워크(2024)에서 동작하는 IDS들(2018)의 어떤 조합이든 바이러스(2016A)가 공중 IP 네트워크(2012)로 빠져나가기 전에 식별 및 제거하는데 사용될 수 있다.In another embodiment,
어의 프로세서는 안티 바이러스 오퍼레이션들이 네트워크(2024) 전체에 걸쳐 내장 및 분산될 수 있게 한다. 예를 들어, 어의 프로세서는 네트워크 라우터나 스위치(2025B)의 여러 포트들에서 침입 검출 오퍼레이션들을 수행할 수 있다. 내장된 침입 검출 시스템 (IDS)(2018)은 보다 강력하므로 현재의 주변 안티바이러스 검출 방식들보다 훨씬 효과적인 침입 검출을 지원한다. 침입 검출 방식은 오프라인에서 이메일 첨부 같이 어떤 의심되는 데이터 유형들을 처리할 필요 없이 네트워크 전송 속도의 데이터 플로로 수행된다.Some processors allow antivirus operations to be embedded and distributed throughout the
문장구조 요소들 (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.
이러한 침입 검출 방식은 불필요하게 컴퓨팅 자원들을 낭비한다. 예를 들어, 소정 헤더 데이터(2072A)같이 데이터 스트림(2071) 내 일부 정보는 절대로 위험인자를 포함할 수 없다. 그럼에도 불구하고, 도 32B의 침입 검출 시스템은 맹목적으로 데이터 스트림(2071)의 모든 바이트를 위험인자 기호(2058)와 비교한다. 이것이 위험 검출을 수행하는 컴퓨팅 자원들에 불필요하게 부담을 지운다.This intrusion detection method unnecessarily wastes computing resources. For example, some information in
도 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
도 32C는 보다 효율적으로 바이러스들을 검출하기 위해 데이터 스트림 안의 문장구조 요소들을 식별하는 IDS(2018)의 한 실시예를 보인 도면이다. IDS(2018)은 패킷(2072)과 관련된 세션 콘텍스트(2082)를 식별하기 위해 파서를 이용한다. 예를 들어, 미디어 액세스 제어 (MAC) 어드레스(2076A), 인터넷 프로토콜 (IP) 어드레스(2076B), 및 전송 제어 프로토콜(TCP) 어드레스(2076C) 중 하나 이상이 초기 파싱 오퍼레이션 중에 식별될 수 있다. 이 예에서, 파서는 또한 패킷(2072)을 단순 메일 전송 프로토콜 (SMTP) 이메일 메시지를 포함한다고 식별할 수도 있다. 세션 콘텍스트(2082)의 이들 식별자들(2076A-2076D)은 문장구조 요소들이라고도 달리 칭한다. 32C illustrates an embodiment of
문장구조 요소들(2076)을 식별하는 것은 IDS(2018)로 하여금 바이러스들이나 기타 말웨어 위험인자들을 보다 효과적으로 검출 및 제거할 수 있도록 한다. 예를 들어, IDS(2018)은 패킷(2072) 시작시 발견된 세션 콘텍스트(2082)에 기반하여 이후 침입 검출 오퍼레이션들을 맞춤화할 수 있다. 예를 들면, 세션 콘텍스트(2082)는 패킷(2072)을 이메일 메시지를 포함하는 것으로 식별한다. IDS(2018)은 이때 이메일 메시지들과 특별히 관련된 부가적 문장구조 요소들(2076E-2076H)을 찾아 식별할 수 있다. 더 상세히 말해, 바이러스를 포함할 수 있는 이메일 문장구조 요소들을 식별한다.Identifying sentence structure elements 2076 allows
예를 들어, IDS(2018)는 이메일 메시지에 "To:", "From:", 그리고 "제목:" 필드들과 관련된 정보를 포함하는 문장구조 요소들(2076E-2076G)을 식별한다. IDS(2018)는 또 이메일 메시지에 역시 포함되는 이메일 참부(2076H)를 식별할 수도 있다. 이 예에서, 바이러스나 말웨어는 이메일 첨부를 포함하는 문장구조 요소(2076H)에만 포함될 수 있을 것이다. 다른 문장구조들(2076A-2076G)은 침입 위험인자들을 취할 수 없을 것이다. 따라서, 이메일 첨부를 포함하는 문장구조 요소(2076H)만이 위험인자 기호(2058)와 비교된다.For example,
다른 문장구조 요소들(2076E-2076G) 안의 정보는 이제 패킷(2072) 필터링에 사용되는 필터들(2070)을 생성하는 것을 돕는데 사용될 수 있다. 예를 들어, 문장구조 요소(2076F)에서 식별된 동일한 "From:" 필드나 문장구조 요소(2076B)에서 식별된 동일한 IP 소스 어드레스를 필터링하는 필터(2070)가 생성될 수 있다. The information in other
따라서, IDS(2018)는 데이터 스트림의 IP 세션 콘텍스트(2082), 트래픽 특징 및 신택스(2076)에 기반해 침입 시도들을 검출할 수 있다. 침입은 네트워크 트래픽 상에서 성가시다고 여겨지는 이벤트들을 기술한 위험인자 기호 규칙들(2058)에 대하여 식별된 문장구조 요소들(2076)을 비교함으로써 검출된다. 그 규칙들(2058)은 어떤 활동들 (가령, 소정 호스트들이 소정 서비스들에 연결함), 어떤 활동들이 경고할만한가 (가령, 소정 개수의 상이한 호스트들로의 시도가 "정밀검사"를 요함), 혹은 알려진 공격들을 나타내는 신호들이나 알려진 약점들에 대한 액세스를 기술할 수 있다.Thus,
고정 패킷 지연Fixed packet delay
도 33은 IDS(2018)과 연계해 사용되는 지연 버퍼를 보인다. 침입 모니터 오퍼레이션(2040)이 재구성 어의 프로세서(RSP)(2100) 안에서 논리적으로 수행되거나, RSP(200) 안이나 RSP(2100)로부터 바깥에서 작동하는 다른 침입 모니터링 회로와 연계하여 수행될 수 있다. 33 shows a delay buffer used in conjunction with
도 33 및 34를 참조하면, 블록 2048A에서 RSP(2100)가 입력 포트(2120)으로부터 패킷들(2022)을 수신한다. RSP(2100)는 블록(2048B)에서 바이러스나 기타 유형의 위험인자를 포함하는 패킷들(2032A)의 제1카테고리를 버리는 위험인자 예비 필터링 오퍼레이션을 수행할 수 있다. 초기 필터링(2048B)은 가령 잘 알려진 소정 위험인자 기호의 테이블을 액세스함으로써 수행될 수 있다. 이 초기 필터링은 IDS(2018)에 의해 더 처리되어야 하는 소정 데이터(2032A)를 제한한다. 예를 들어, 서비스 거부 공격, 알려진 바이러스 공격, 또는 무권한 IP 세션이 검출될 수 있고, 그 관련 패킷들이 IDS(2018)에 의해 더 처리될 필요없이 배제된다.33 and 34, in
2048C 블록에서, RSP(2100)는 나머지 패킷들(2022)을 패킷 지연 버퍼(2030) 안에 저장한다. 일례에서, 패킷 지연 버퍼(2030)는 DRAM (Dynamic Random Access Memory)이거나 들어오는 데이터 스트림(2022)을 일시적으로 버퍼링하는 크기로 된 어떤 다른 메모리 종류이다. 블록 2048D에서, RSP(2100)는 입력 데이터 스트림의 신택스를 더 식별한다. 예를 들어, RSP(2100)는 전자 메일 (이메일) 메시지들을 포함하는 패킷들을 식별할 수 있다.In a 2048C block, the
윈도즈 기반 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
블록 2048E에서 RSP(2100)는 데이터 스트림(2022)에 대해 식별된 신택스에 해당하는 토큰들(2068)을 생성한다. 예를 들어, 이 토큰들(68)은 이메일 메시지의 발신자 ("From:___), 이메일 메시지의 수신자 ("To:___), 이메일 메시지의 제목 ("Subject:___), 이메일 메시지 발송 시간 ("Sent:___), 이메일 메시지에 포함된 첨부문서 등등과 같이, 식별된 이메일 메시지의 특정한 서브 요소들을 포함할 수 있다. RSP(2100)가 이러한 세션 정보를 검사하기 때문에, 라우터들 및 스위치들과 같은 네트워크 프로세싱 장치들에서의 위험인자 필터링은 단지 하나의 패킷에서 발견된 요소들에만 국한되지 않는다, 즉-TCP 세션 유기 시도하기, 혹은 FTP 스트림 진로전환, 또는 HTTPS 보증서 위조에 대해 필터링함.In
토큰들(2068)은 블록(2048F)에서 패킷 지연 버퍼(2030) 안에 포함된 데이터의 신택스에 대해 맞춤화된 제2의 보다 심층적 필터 집합(2070)을 동적으로 생성하는데 사용된다. 예를 들어, 토큰들(2068)은 이메일 메시지들에 포함된 바이러스들과 관련된 필터들(2070)을 생성하는데 사용될 수 있다. 이것은 IDS(2018)의 규모가변성에 있어 중요한 것이다. 데이터의 신택스와 관련된 필터들을 생성함으로써, IDS는 보다 효율적으로 위험인자들을 정밀 검사할 수 있다. 예를 들어, IDS(2018)는 현재 처리되고 있는 데이터 종류에 대해 적용되지 못하는 필터드을 적용하느라 시간을 낭비할 필요가 없다.
RSP(2100)는 2048G 블록에서 이렇게 맞춤화된 필터 집합(2070)을 패킷 지연 버퍼(2030)에 저장된 데이터에 적용한다. 필터들(2070)에 의해 식별된 위험인자를 포함하는 어떠한 패킷들(2032B)이라도 버려지게 된다. 데이터가 소정의 고정 시기 동안 패킷 지연 버퍼(2030)에 저장된 후에, RSP(2100)는 블록(2048H)에서 출력 포트(2152)로 데이터를 출력한다. The
패킷 지연 버퍼(2030)에 의해 주어진 고정된 지연은, 위험인자를 평가하고, 새 위험인자가 초래되는 단계에 있는지를 결정하고, 신택스 관련 필터들(2070)의 집합을 형성하고, 데이터(2034)가 출력 포트(2152)로부터 나가기 전에 필터들을 적 용하기 위해 모니터 오퍼레이션(2040)을 위한 시간을 제공한다. 일반적으로 초당 1 Gigabit (Gbps) 이더넷 LAN 시스템들에 있어서의 지연 버퍼(2030)에서의 지연은 약 20 내지 50밀리초 (ms)의 어딘가에 있을 것이다. 물론 다른 고정 지연 시간들 역시 사용될 수 있다.The fixed delay given by the
RSP(2100)는 데이터 스트림(2022)을 처리하기 위한 신규한 파싱 기술을 이용한다. 이것이 RSP(2100)로 하여금, 같은 네트워크 프로세싱 장치에서 수행될 수 있는 다른 들어오는 네트워크 라우팅 오퍼레이션들로부터 오프라인으로 침입 모니터링 오퍼레이션들(2040)을 수행해야 할 필요가 없이, 네트워크의 라인 전송 레이트로 IDS(2018)를 구현할 수 있게 한다. 이것은 RSP(2100)가, 들어오는 패킷들(2022)을 고정 패킷 지연으로 처리할 수 있게 하여, 침입자가 침입 검출 시스템들을 작동시키는 네트워크 프로세싱 장치들(2025) (도 32a)을 분간하여 피하는 것을 어렵게 만든다.
예를 들어, 한 침입자는 바이러스(2016)를 가진 사설 네트워크(2024) (도 32a)를 감염시키려고 하는 동안 네트워크 지연을 모니터할 수 있다. 반복되는 바이러스 공격들에 응하여 특정한 한 네트워크 경로를 통해 보다 긴 응답이 식별되면, 침입자는 그 경로가 침입 검출 시스템을 포함한다고 판단할 것이다. 다른 네트워크 경로는 그렇게 시도되는 공격에 응답하는데 긴 시간이 걸리지 않는다면, 침입자는 그 경로는 침입 검출 시스템을 포함하지 않으며 그 식별된 네트워크 경로의 포트들이나 장치들을 통해 바이러스들을 전송할 수 있다는 결론을 내릴 것이다.For example, an intruder may monitor network delay while trying to infect private network 2024 (FIG. 32A) with
데이터(2022)의 타입이나 데이터 스트림(2022)에 대해 생성되어 적용되는 필 터들(2070)의 타입에 관계없이, 입력 포트(2120)와 출력 포트(2152) 사이에 일정한 패킷 지연을 일으킴으로써, IDjS(2018)는 침입자들이 IDS(2018)을 운영하는 네트워크 프로세싱 장치들(2025)을 식별하지 못하게 막는다. 물론, 이것은 단지 한 예일 뿐으로, 일정한 패킷 지연을 이용하는 다른 IDS 구성들(2018) 역시 구축될 수 있다. Regardless of the type of
다른 실시예에서, RSP(2100)는 고정 지연만을 소정 타입의 식별된 데이터에 적용하며, 다른 데이터는 그 고정 지연이 적용되지 않고 처리된다. 데이터 스트림들의 신택스를 식별함으로써, IDS(2018)는 바이러스들에 대해 정밀검색할 필요가 있는 데이터 스트림들과 스캔될 필요가 없는 데이터 스트림들을 식별할 수 있다. IDS(2018)는 이제 지능적으로 고정 지연을 정밀검색해야 하는 데이터 스트림들에 대해 적용한다. 예를 들어, RSP(2100)는 고정 지연을 TCP SYN 메시지를 포함한다고 식별되는 패킷들에 대해 적용할 수 있다. 그 SYN 패킷들에서 어떠한 변칙성도 검출되지 않으면, RSP(2100)는 위의 도 34에서 기술한 고정 지연을 적용하지 않고 뒤이어 수신되는 TCP 데이터 패킷들을 수신하여 처리할 것이다. 따라서, 비-설정 TCP 세션은 지연될 수 있어도 다른 트래픽은 지연되지 않는다. In another embodiment,
도 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
ACL 체크 오퍼레이션(2050)은 사전에 알려진 필터들의 초기 ACL 리스트(2064)에 대해 들어오는 데이터 스트림(2022) 내 패킷들을 체크한다. ACL 체크 오퍼레이션(2050)은 ACL 필터들(2064)과 매치하는 패킷들을 제거하고 그런 다음 나머지 패킷들(2022)을 지연 FIFO(2030) 안에 로드한다. The
세션 룩업 오퍼레이션(2052)은 기존의 유효한 IP 세션들에 대해 패킷들(2022)을 체크한다. 예를 들어, DXP(2180)가 TCP 세션, 포트 넘버, 그리고 TCP SYN 메시지에 대한 도달 레이트를 식별하는 세션 룩업(2052)으로 정보를 전송할 수 있다. 세션 룩업(2052)은 TPC 세션과 포트 넘버가 이전에 보였는지 얼마나 오래전에 보였는지를 판단한다. 패킷들(2022)이 유효한 TCP/IP 세션이라는 것을 만족하면, 패킷들(2022)은 곧바로 패킷 출력 버퍼(POB)(2150)로 보내질 수 있다.
토큰 생성 오퍼레이션(2054)은 DXP(2180)에 의해 식별된 데이터 스트림(2022)의 신택스에 따라 토큰들(2068)을 생성한다. 한 예에서, 토큰 생성기(2054)는, 입력 버퍼(2140)에서 처리된 패킷들과 관련된 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트 넘버, 목적지 포트 넘버 및 프로토콜 넘버를 포함하는 5 들이 한 벌 데이터 집합을 포함하는 토큰들(2068)을 생성한다. 토큰들(2068)은 또 미지의 IP나 TCP 옵션들 같은 TCP 패킷 내 어떤 변형체들을 포함할 수도 있다. The
아래에 설명할 예에서, 토큰들(2068)의 일부가 이메일 메시지들과 결부된 문 장구조 요소들을 역시 포함한다. 예를 들어, DXP(2180)가 도 32c에서 개시한 것 같은 SMTP 세션과 관련된 패킷들을 식별할 수 있다. 이제 토큰 생성 오퍼레이션(2054)은 이메일 세션으로부터 SMTS/MIME 첨부같은 특정 정보를 추출한다. 이메일 메시지와 연관된 토큰(2068)의 한 예는 아래와 같은 타입, 길이, 값 (TLV) 포맷을 이용해 생성된다:In the example described below, some of the
Token #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,
Token #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
카운터 측정 에이전트(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
재구성 어의 프로세서 (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
직접 실행 파서 (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
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)의 입력을 제공한다.
생성 규칙 테이블(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
어의 코드 테이블(2210) 역시 파서 테이블(2170)에 의해 생성되는 코드들(2178)에 따라, 및/또는 생성 규칙 테이블(2190)에 의해 생성된 생성 규칙들(2176)에 따라 색인된다. 일반적으로, 파싱 결과들이 DXP(2180)으로 하여금, 주어진 생성 규칙(2176)에 대해 어의 코드 테이블(2210)으로부터의 코드 세그먼트(2212)가 SPU(2200)에 의해 로드되고 실행되어야 하는지 여부를 검출하게 한다. The lexical code table 2210 is also indexed according to the
SPU(2200)는 컨텍스트(context) 상의 심볼들에 의하여 주소가 결정될 수 있는 구조적인 메모리 인터페이스를 제공하는 메모리 서브 시스템(2215)으로의 몇 개의 억세스 경로를 가진다. 메모리 서브 시스템(2215), 파서 테이블(2170), 프로덕션 규칙 테이블(2190) 및 시만텍 코드 테이블(2210)은 온-칩 메모리, 동기식 DRAM(Dynamic Random Memory)과 CAM(Content Addressable Memory)과 같은 외부 메모리 장치 또는 그러한 자원들의 조합을 사용한다. 각 테이블이나 컨텍스트는 단지 하나 또는 그 이상의 테이블이나 컨텍스트를 가진 공유된 물리적인 메모리 공간으로의 컨텍스트 상의 인터페이스를 제공할 뿐이다.
유지용 중앙 처리 장치(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
메모리 서브 시스템(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) 사이에 연결된다.
RSP(2100)의 기능 블록들을 위한 상세한 최적화 설계는 본 발명의 범위 내에 있지 않다. 이용 가능한 어의 프로세서 기능 블록의 상세한 구조의 예를 위해 같이 출원 중이며, 여기에서는 참조로 언급되는, 출원번호 10/351,030, 제목 : A Reconfigurable Semantic Processor(2003.01.24. 출원)를 참조한다.The detailed optimization design for the functional blocks of the
RSPRSP 를 이용한 침입 탐지Intrusion detection
침입 탐지 컨텍스트에서의 RSP(2100)의 기능은 특정한 예를 이용하면 더 잘 이해할 수 있다. 이하에서 설명될 예에서, RSP(2100)는 이메일 메시지에 위치한 바이러스나 다른 말웨어(malware, 악성 소프트웨어)를 제거한다. 본 발명이 속한 기술 분야의 당업자는 본 발명에 따라 제시된 개념을 쉽게 적용하여 어떤 타입의 바이러스나 다른 타입의 말웨어라도 탐지할 수 있고 어떤 통신프로토콜을 사용하여 전송되는 어떤 데이터 스트림에 대한 침입 탐지의 어떤 유형이라도 실행할 수 있다는 것을 인식할 수 있다.The functionality of the
최초 침입 탐지 처리는 입력 데이터 스트림의 구문을 파싱하고 검출하는 것을 포함하며, 도 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,
PR 코드(2178)는 프로덕션 규칙 테이블(2190)에 저장된 대응 프로덕션 규칙(2176)에 억세스하기 위해 사용된다. 특정 룩업 구현에 의해 요청되지 않는다면, 입력값(2308)(예를 들면 n이 선택된 바이트 단위의 매치 폭인 경우 비-터미널(NT) 심볼(2172)이 현재의 입력값 DI[n](2174)과 결합됨)은 PR 테이블(2170)의 어떤 특정 순서에 할당될 필요가 없다.The
한 실시예에서, 파서 테이블(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
한 실시예에 있어서, 파서 테이블(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
DI[n] 매치값(2314)의 각 비트는 "0", "1" 또는 (Don' care 상태임을 나타내는) "X"로 설정될 수 있다. 이런 능력은 DI[n](2174)의 특정 비트/바이트만이 파서 테이블(2170)이 매치를 찾게 하기 위해 PR 코드(2178)가 코드화된 패턴을 매치시킬 것을 요청하도록 한다.Each bit of the DI [n]
예를 들면, 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
파서 테이블(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
도 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,
어드레서(2320)는 이렇게 수신된 PR 코드들(2178)과 NT 심볼들(2172) 대응하는 프로덕션 규칙들(2176)에 억세스하기 위해 사용한다. 어드레서(2320)는 어떤 구현에서는 필요하지 않을 수 있지만, 사용되는 경우에는, DXP(2180)의 일부, PRT(2190)의 일부 또는 중간 함수 블록이 될 수 있다. 예를 들어, 파서 테이블(2170)이나 DXP(2180)가 주소들을 직접 구성하면 어드레서는 사용될 필요가 없을 수 있다. The
프로덕션 규칙 테이블(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)의 일부로서 저장될 수 있다.
이와 같은 예에서, 프로덕션 규칙 코드(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
상기에서 언급한 것과 같이, 파서 테이블(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,
프로덕션 규칙 코드(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
어의 처리 유니트들(Language processing units SPUsSPUs ))
상기에 설명된 것과 같이, DXP(2180)은 IP 세션, TCP 세션 및 현재의 예에서는 SMTP 이메일 세션들과 같은 입력 스트림 내의 특정한 어의 요소들을 확인한다. 이런 문장구조적인(syntactic) 파싱 오퍼레이션은 IDS 시스템(2018)의 전체적인 성능에 중요하다. 입력 스트림의 실제 구문(syntax)은 DXP(2180)에 의해 확인되며, 상기 도 35에서 설명된 연속되는 IDS 처리는 SPU(2200)에 의해 이제 더 효과적으로 실행될 수 있다.As described above, the
예를 들면, SPU(2200)는 이메일 메시지들과 연관된 ACL 필터들을 파싱된 데이터 스트림에 적용해야만 할 수도 있다. 이것은 여러 가지 이점을 제공한다. 첫째로, 모든 패킷의 모든 바이트가 도 35의 위협을 주는 서명(2058) 모두와 비교될 필요가 있는 것은 아니다. 대안적으로, 이메일 메시지와 연관된 위협을 주는 서명의 일부분만이 SMTP 패킷에 인가된다. 이것은 IDS(2018)의 크기를 증가시키는 실질적인 이점을 가지며 IDS(2018)이 더 많은 바이러스와 말웨어를 탐지하고, 더 높은 패킷 비율에서 오퍼레이션하도록 한다.For example, the
도 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
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
참조번호 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
참조번호 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 플래그를 출력한다.
참조번호 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 검사 오프레이션은 반복한다.
패킷들이 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
SPU(2200)는 상기 패킷을 위한 5개 요소의 집합을 TCAM(2220)에서 동적으로 생성된 필터들(20780)에 인가한다. 그러면, DRAM(2280) 내에서 TCAM(2220)으로부터의 드롭 패킷 플래그 결과를 생성하는 어떤 패킷도 참조번호 2414 블록의 SPU(2200)에 의해 DRAM(2280)으로부터 제거된다. 그렇다면 미리 정해진 고정된 지연 기간 후에, 참조번호 2416의 블록 내의 SPU(2200)는 남아있는 패킷들을 출력 포트(2152)로 출력한다.
CAM(2220)은 다른 아프리오리 필터들을 포함할 수 있다는 것을 이해하여야 한다. 예를 들면, CAM(2220)은 상이한 프로토콜에 연관되거나 패킷들에 포함될 수 있는 데이터와 연관된 필터들을 포함할 수 있다. DXP(2180)는 문장구조 요소들을 TCAM(2220)의 필터들에 적용될 필요가 있는 SPU(2200)에 확인시킨다. It should be understood that the
지연 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,
도 40은 도 35에서 이전에 설명된 세션 룩업 오퍼레이션(2052)을 하는 동안에 SPU(2200)에 의해 수행되는 오퍼레이션을 설명한다. 참조번호 2430의 블록에서 DXP(2180)은 SPU(2200)에게 신호를 출력하여, 이전에 도 38에서 설명된 것처럼, 연관된 SEP 세그먼트들(2177B)을 전송하여 세션 룩업 오퍼레이션을 실행하는 것에 연관된 SCT(2210)로부터 적절한 마이크로명령어를 로드하도록 한다.FIG. 40 illustrates the operations performed by the
한 예에서, 참조번호 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,
도 41은 도 35에서 이전에 설명된 토큰 생성 오퍼레이션(2054)을 설명한다. 참조번호 2450의 블록에서, DXP(2180)는 상기의 도 36 내지 도 38에서 설명된 입력 스트림으로부터 데이터를 파싱한다. 참조번호 2452 블록에서, DXP(2180)는 바이러스나 말웨어와 연관될 수 있는 입력 버퍼(2140)에 있는 데이터 스트림의 문장구조 요소들을 확인한다. 상기의 예에서, 이것은 DXP(2180)가 이메일 메시지를 포함하는 패킷을 확인하는 것을 포함할 수 있다. 그러나, DXP(2180)에 의해 확인된 문장구조 요소들은 IP 주소들, 소스 및 목적지 주소들을 포함하는 IP 데이터 플로우, 특정 데이터 플로우를 위한 확인된 트래픽 비율 등의 어떤 것도 될 수 있다.FIG. 41 illustrates the
참조번호 2454의 블록에서 DXP(2180)는 SPU(2200)에게 신호를 출력하여 특정 토큰 생성 오퍼레이션에 연관된 SCT(2210)로부터 마이크로명령어를 로드하도록 한다. 그리고 더 특별하게, 도 38의 SEP 세그먼트(2177B)에 의해 확인된 마이크로 명령어는 SPU(2200)에게 DXP(2180)에 의해 확인된 특정 문장구조 요소들을 위한 토큰들을 생성하도록 지시한다.In
그러면 참조번호 2456 블록의 SPU(2200)는 상기 확인된 문장구조 요소들로부터 토큰들(2068, 도 35)을 생성한다. 예를 들면, SPU 코드(2212, 도 36)는 SPU(2200)에게 확인된 이메일 메시지를 위해 위치한 문장구조 요소들을 추출하라고 명령할 수 있을 것이다. SPU(2200)는 패킷 내의 "From:", "To:" 및 "Subject(제목:" 필드들로부터 정보를 저장하는 토큰들을 생성할 수 있을 것이다. SPU(2200)는 또한 데이터 스트림 내에 존재할 수 있는 어떤 이메일 부착물을 위한 토큰을 추출하고 생성할 수 있을 것이다. 예를 들면, SPU(2200)는 도 35에서 이전에 설명된 TLV 토큰 #1을 생성할 수 있었다.The
Token #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
Token #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)로 전송한다.
한 실시예에서, 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
이 구현예에서, TCAM(2220)은 위협 서명 테이블 및 ACL 필터 테이블 양쪽을 포함하는 다중 테이블들을 포함할 수 있을 것이다. TCAM(2220)의 위협 서명 테이블은 MCPU(2056)에 의해 억세스되고 TCAM(2220)의 ACL 필터들은 AMCD(2230)를 통해 SPU들(2220)에 의해 억세스된다.In this implementation, the
선택적인 실시예에서, 외부의 위협 분석 장치는 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
ACL 필터들(2070)을 실제로 생성하는 것은 본 발명이 속한 기술 분야의 당업자에게는 잘 알려진 것이므로 더 이상의 상세한 설명은 하지 않는다. 그러나, 침입 탐지 시스템들은 데이터 스트림의 확인된 문장구조 요소들과 연관된 토큰들에 따라서 ACL 필터들을 이전부터 계속 동적으로 생성하여 왔다고는 믿어지지 않는다.The actual creation of
조각화된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
도 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
다음 블록 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
다음 결정 블록 2540에 의하면, SPU(2200)는 콘텍스트 제어 블록(CCB)이 정확한 IP 패킷 단편의 수집 및 순서화를 위해 할당되었는지를 결정한다. 바람직하기로는, IP-조각화된 패킷에 대응하는 단편들을 수집하고 순서화하기 위한 CCB는 DRAM(2280)에 저장된다. CCB는 DRAM(2280)내의 IP 단편들에 대한 포인터들, 도착하지 않은 IP-단편 패킷들에 대한 비트 마스크 및 할당된 시간 기간 이후에 부가적인 IP-단편 패킷들을 대기하는 것을 중지하고 DRAM(2280)내의 CCB에 저장된 데이터를 해제하도록 시맨틱 프로세서(2100)에 강요하기 위한 타이머 값을 포함한다.According to the
바람직하기로는 SPU(2200)는 수신된 IP 패킷 단편의 헤더로부터 식별 정보 및 프로토콜과 결합된 수신된 IP 조각화된 패킷의 IP 소스 주소를 키로서 사용하여 AMCD의 (2230) 콘텐트-어드레싱가능한 메모리(CAM) 룩업 기능에 액세스함으로써 CCB가 할당되었는지를 결정한다. 선택적으로, IP 단편 키들은 DRAM(2280)내의 개별 CCB 테이블에 저장되고 수신된 IP 패킷 단편의 헤더로부터의 식별 정보와 프로토콜과 결합된 수신된 IP 조각화된 패킷의 IP 소스 주소를 사용함으로써 CAM로 액세스된다. IP 단편 키들의 이러한 선택적인 어드레싱은 키 중복 및 사이징(sizing) 문제를 회피한다.Preferably, the
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
일단 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
다음 결정 블록 2570에 의하면, SPU(2200)는 패킷으로부터의 모든 IP-단편들이 수신되었는지를 결정한다. 바람직하기로는, 이 결정은 CCB에서 비트 마스크를 사용함으로써 달성된다. 본 발명과 함께 사용하기 위하여, 비트 마스크를 구현하는데 쉽사리 이용가능한 다수의 기술들 또는 동등한 추적 메커니즘이 존재한다는 것을 당업자는 이해할 수 있다. 모든 IP-단편들이 조각화된 패킷에 대해 수신되지 않은 경우, 시맨틱 프로세서(2100)는 다른 단편이 수신될 때까지 상기 조각화된 패킷에 대한 처리를 더 연기할 수 있다.According to the
다음 블록 2580에 의하면, 모든 IP-단편들이 수신된 후에, SPU(2200)는 정확한 순서로 DRAM(2280)으로부터 IP 단편들을 독출하고 상기에 밝혀진 침입 탐지 처리와 같은, 부가적인 파싱 및 처리를 위해 재순환 버퍼(2160)에 그들을 기입한다. 본 발명의 일 실시예에서, SPU(2200)는 단지 특정화된 헤더 및 (조각화 비트가 설정되지 않은) 재조립된 IP 패킷의 제1 부분을 재순환 버퍼(2160)에 기입한다. According to the
특정화된 헤더는, 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
도 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
다음 블록 2592B에 의하면, TCP 세션이 개시기와 설정된 후, RSP(2100)는 입력 버퍼(2140)에 도착할, 블록 2592A에서 설정된 TCP 세션에 대응하는, TCP 패킷들을 기다린다. RSP(2100)는 입력 데이터를 처리하기 위한 복수의 SPU들(2200)을 가질 수 있기 때문에, RSP(2100)는 블록 2592A에서 설정된 TCP 세션에 대응하는 다음 TCP 패킷을 기다리는 동안 병행하여 다수의 패킷들을 수신하고 처리할 수 있다.According to the
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
다음 블록 2592D에 의하면, 수신된 TCP 패킷은 필요한 경우, 페이로드 데이터의 정확한 순서화를 보장하기 위하여 재순서화된다. 당 기술분야에 잘 알려져 있는 바와 같이, TCP 패킷은 모든 이전의 패킷들이 도착한 경우 적합한 순서로 있는 것으로 간주된다. 수신된 패킷이 적합한 순서로 있다고 결정되는 경우, 담당하는 SPU(2200)는 재순환을 위해 SCT(2210)로부터 마이크로명령들을 로드한다.According to the
다음 블록 2592E에 의하면, 할당된 SPU는 특정된 TCP 헤더를 생성하기 위하여 TCP 헤더로부터의 TCP 접속 정보와 TCP 비-터미널을 결합한다. 그다음 할당된 SPU(2200)는 재순환 버퍼(2160)에 특정화된 TCP 헤더를 기입한다. 선택적으로, 특정화된 TCP 헤더는 그것의 대응하는 TCP 페이로드와 함께 재순환 버퍼(2160)로 송신될 수 있다.According to the
다음 블록 2592F에 의하면, 특정화된 TCP 헤더 및 재조립된 TCP 페이로드는 TCP 데이터에서 부가적인 시맨틱 요소들을 식별하기 위하여 DXP(2180)에 의해 파싱된다. 아마도 침입을 포함하는 것으로서 식별된 어떤 시맨틱 요소들도 상술된 침입 동작들에 따라 SPU들(2200)에 의해 처리된다.According to the
분산된 토큰 생성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
각 네트워크 처리 장치(2610)는 집중된 침입 분석을 수행하는 중앙 침입 탐지기(2670)에 접속되어 있다. 각 IDS(2620A-2620C)는 입력 데이터 스트림을 파싱하고 각각 도 35에서 상술된 토큰들(2068)과 유사한, 토큰들(2640A-C)을 생성한다. 토큰들(2640)은 중앙 침입 탐지기(2670)로 송신된다.Each network processing unit 2610 is connected to a
도 43 및 도 44를 참조하면, 블록 2802에서 중앙 침입 탐지기(2670)는 각 IDS(2620)로부터 토큰들(2640)을 수신한다. 블록 2804에서 침입 탐지기(2670)는 토큰들(2640)에 따라 상이한 데이터 흐름들에 대한 트래픽 패턴들을 분석한다. 그다음 블록 2806에서 필터들이 생성되고 분석에 따라 블록 2808에서 위협 서명들이 생성될 수 있다. 그다음 새로운 필터들 및 위협 서명들은 블록 2810에서 각 IDS(2620)로 분배된다.43 and 44, in
일 예에서, 도 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
중앙 침입 탐지기(2670)는 정상적으로 탐지될 수 없는 가능한 바이러스 또는 말웨어(malware)를 식별하기 위하여 토큰들(2640B, 2640C_1 및 2640C_2)을 상관시킨다. 예를 들어, 침입 탐지기(2670)는 방화벽(2610B)으로부터의 토큰(2640B)에서 수신된 새로운 소스 IP 주소 A가 또한 웹 서버(2610C)에서 파일을 연 동일한 IP 주소 A라는 것을 결정할 수 있다. 이 예에서 공중 인터넷(2630)으로부터의 외부 링크들은 내부 네트워크 파일들을 여는 것으로 가정되지 않는다.
토큰(2640B)이 방화벽(2610B)으로부터 수신되었기 때문에, 중앙 침입 탐지기(2670)는 IP 주소 A가 공중 인터넷(2630)으로부터 외부에서 수신되었다고 결론짓는다. 따라서, 중앙 침입 탐지기(2670)는 방화벽(2610B)내의 IDS(2620B)에, 그리고 아마도 다른 네트워크 장치들(2610A 및 2610C)에 새로운 필터(2750)를 송신하는데, 이것은 소스 IP 주소 A를 지닌 패킷들이 네트워크(2600)에 진입하는 것을 방해한다.Since the token 2640B was received from the
다른 예에서, 이메일 서버(2610A)내의 IDS(2620A)는 이메일이 미지의 소스 IP 주소 A로부터 수신되었다는 것을 나타내는 토큰(2640A_1)을 생성한다. IDS(2620A)는 또한 토큰(2640A_1)에서 식별된 이메일에 포함된 MIME/첨부물을 식별하는 토큰(2640A_2)을 송신한다.In another example,
중앙 침입 탐지기(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)에 새로운 위협 서명을 추가한다.
따라서, IDS 시스템(2600)은 토큰들(2640)의 시맨틱 콘텐트 및 또한 토큰들을 송신하는 네트워크 처리 장치(2610)의 유형에 따라 필터들 및/또는 서명들을 생성할 수 있다. 예를 들어, 방화벽(2610B)에 의해 생성된 토큰들(2640B)은 네트워크내의 다른 네트워크 처리 장치들로부터 생성된 토큰들보다 더 많은 의심을 가지고 처리될 수 있다. 또한, 상술된 바와 같이, 방화벽(2610B)에 의해 식별된 새로운 IP 주소들(공중 인터넷으로부터 수신된 IP 패킷들)에 관한 지식은 바이러스들을 더 철저하게 검출하기 위하여 이메일 서버(2610A) 또는 웹 서버(2610C)에 의해 탐지된 다른 동작들에 관한 지식과 상관될 수 있다.Thus, the
다른 실시예에서, 중앙 침입 탐지기(2670)는 검출된 바이러스 또는 다른 말 웨어와 관련된 어떤 네트워크 처리 장치들도 동작불능시킬 수 있다. 예를 들어, 바이러스(2660)는 PC(2662)에서 동작되는 IDS(2662)에 의해 검출될 수 있다. IDS(2662)는 중앙 침입 탐지기(2670)에게 바이러스(2660)에 대해 통지한다. 중앙 침입 탐지기(2670)는 바이러스(2660)의 소스가 식별되거나 제거될 때까지 네트워크(2600)의 나머지 부분으로부터 PC(2650)를 접속해제할 수 있다.In another embodiment, the
트리 검색의 확장성Scalability of Tree Search
상술된 IDS(2018)는 위협이 나타날 수 있는 세션 콘텍스트내에서 스캐닝함으로써 기존의 침입 탐지를 개선한다. 패턴 매치에 대해, 정규 표현보다는, 파서 트리가 사용된다. 패킷 데이터에서의 침입 탐지 및 다른 위협은 알려져 있는 위협의 것과 매칭하는 패턴들에 대한 입력 패킷 스트림을 "스캐닝"함으로써 수행된다.The
기존의 정규 표현 스캐너들은 패킷의 모든 바이트를 스캐닝해야 하고 패킷의 어떤 부분이 위협을 포함할 수 있는지를 결정하는 능력을 갖고 있지 않다. 예를 들어, 이메일에서의 위협은 이메일 첨부물을 통해서만 올 수 있다. 이메일 메시지의 정의된 본체는 어떤 소프트웨어가 일반적으로 예기치 않거나 악의적인 동작에서 동작하지 않을 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
DXP(2180) 및 RSP(2100)의 다른 특징들은 이러한 유형의 위협 스캐닝을 위해 최적화되고 관용적인 하드웨어 구조들을 사용하는 정규 표현 스캐너들에 비해 개선된 성능을 가지고 있다. 예를 들어, 도 36의 파서 테이블(2170) 및 파서 스택(2185)에서 구현된 3진-콘텐트-어드레싱가능한-메모리(TCAM)와 공동으로, LL(k) 파서는 정규 표현 엔진들보다 고속으로 입력 스트림을 검색할 수 있다.Other features of the
정규 표현 스캐너는 가능한 매치를 결정하기에 앞서 중요 및 가변 길이 룩(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)는 식별된 세션 콘텍스트(2852)와 연관된 특정 유형의 콘텐트(2862)를 추가 또는 변경하도록 프로그램될 수 있다. 일 예에서, IDS(2018)는 이메일 또는 FTTP 메시지들에 포함된 문서들에서 신용 카드 번호들(2858)을 제거하도록 프로그램될 수 있다. 다른 예에서, IDS(2018)는 FTTP 또는 이메일 문서들에서 식별된 어떤 문서들에 디지털 워터마크(2860)를 추가하도록 프로그램될 수 있다. IDS(2018)는 예를 들어 PC(2864)의 IP 소스 주소를 포함하는 문서들에 디지털 워터마크(2860)를 추가할 수 있다.
RSP(2100)내의 DXP(2180)는 상술된 바와 같이 IP 링크(2864)를 통해 운반되는 다른 세션 콘텍스트(2852)를 식별한다. 그다음 SPU(2200)는 식별된 세션 콘텍스트(2852)와 연관된 다른 유형의 콘텐트(2862)와 연관된 토큰들을 생성할 수 있다. 예를 들어, SPU(2200)는 도 35에서 상술된 바와 같이 이메일 첨부물을 포함하는 토 큰들을 생성할 수 있다. RSP(2100)는 이메일 첨부물에 포함된 어떤 문서들도 검색할 수 있다.
제1 예에서, DXP(2180)는 WAN(2850)에 바깥으로 향하는 어떤 IP 패킷들도 식별할 수 있다. 그다음 DXP(2180)는 신용 카드 번호를 포함하는 패킷들에 포함된 어떤 문서들을 검색할 것을 SPU(2200)에 지시한다. 신용 카드 번호가 검출되는 경우, IDS(2018)는 신용 카드 번호를, 신용 카드 정보를 지우는 일련의 "X들"로 대체한다. 제2 예에서, SPU(2200)는 FTTP 또는 이메일 세션에서 검출된 문서에 디지털 워터마크(2860)를 추가한다. 그다음 변경된 신용 카드 정보 또는 워터마크를 지닌 문서는 FTTP 또는 이메일 세션에 대응하는 수신지 주소로 전송된다.In a first example,
어떤 식별된 세션 콘텍스트(2852)와 연관된 어떤 유형의 콘텐트(2862)에 유사한 변경들이 행해질 수 있다. 예를 들어, 특정 IP 소스 또는 수신지 주소는 다른 IP 주소로 변경될 수 있고, 그다음 어떤 식별된 세션 콘텍스트(2852) 또는 세션 콘텐트(2862)에 따라 IP 네트워크(2850) 바깥으로 되돌려 송신될 수 있다.Similar changes can be made to any type of
도 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)
인덱스(3054)는 결합된 심볼(3062)과 입력 데이터 세그먼트(3060)와 일치하는 엔트리(3046, 3044)에 대응하는 시맨틱 테이블(3042)에 의해 출력된다. 시맨틱 상태 맵(3048)은 PDA 엔진(3040)에 대한 다음 시맨틱 상태를 나타내는 다음 비-터미널 심볼(3054)을 식별한다. 다음 비-터미널 심볼(3054)은 스택(3052)에 푸시되고 그다음 입력 데이터(3014)의 다음 세그먼트(3060)와 결합하기 위하여 스택(3052)으로부터 나온다. PDA 엔진(3040)은 타깃 검색 스트링(3016)이 검출될 때까지 입력 데이터(3014)를 계속 파싱한다.The
우선, 스택(3052)은 PDA 엔진(3040)에 대한 시맨틱 상태들이 다른 시맨틱 상태들 내부에 유지되도록 허용하는 터미널 및 비-터미널(NT) 심볼들을 포함할 수 있다. 이것은 다수의 시맨틱 상태들이 단일의 비-터미널 심볼에 의해 표시될 수 있게 하고 실질적으로 적은 수의 상태들이 PDA 엔진(3040)에 의해 관리될 필요가 있게 한다.First,
더욱이, 도 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
역으로, 도 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 엔진(3040)은 또한 상태 분기를 감소시키거나 제거할 수 있다. PDA 엔진(3040)은 ".ORG" 시맨틱 요소를 검색하는 동일한 시맨틱 상태(3072)에 제2 "WWW." 스트링의 가능성을 유지함으로써 부가적인 분기 상태들을 제거한다. 이것은 도 47에서 경로(3075)로 표시되는데, PDA 엔진(3040)은 "WWW."의 제2 가능한 발생 및 ".ORG"를 검색하는 동안 시맨틱 상태(3072)에 남아 있다.
PDA 엔진(3040)의 다른 양상은 부가적인 검색 스트링들이 시맨틱 테이블(3042)의 복잡성에 영향을 주지 않거나 복잡성을 증가시키지 않고 추가될 수 있다는 것이다. 도 49를 참조하면, 도 46의 PDA 엔진(3040)에 의해 수행된 검색에 추가된 제3 시맨틱 요소 ".EXE"가 도시되어 있다. 상기 추가 시맨틱 요소 ".EXE"는 시맨틱 테이블(3042)에 단지 하나의 추가적인 시맨틱 상태(3076)만을 추가한다.Another aspect of the
따라서, 도 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
시맨틱 테이블(3042), 시맨틱 상태 맵(3048) 및 스택(3052)이 중앙 처리 장치(CPU)에 의해 액세스되는 메모리내의 모든 위치에 있도록 PDA 엔진(3040)이 소프트웨어로 구현될 수 있다는 것은 또한 주목되어야 한다. 그다음 범용 CPU는 하기에 설명되는 동작들을 구현한다. 다른 구현예는 도 47에서 하기에 더 상세히 설명되는 재구성가능한 시맨틱 프로세서(RSP: Reconfigurable Semantic Processor)를 사용한다.It should also be noted that the
이 예에서, 콘텐트 어드레싱가능 메모리(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
시맨틱 테이블(3042)의 제2 섹션(3044)은 입력 데이터(3014)내의 시맨틱 요소들에 대응하는 다른 시맨틱 엔트리들을 포함한다. 동일한 시맨틱 엔트리가 동일한 시맨틱 상태 섹션(3046)에 여러번 존재할 수 있다. 예를 들어, 시맨틱 엔트리 WWW.은 시맨틱 요소 "WWW."이 입력 데이터(3014)에 나타날 수 있는 다른 위치들을 식별하기 위하여 섹션 3046A에서 다른 위치들에 위치할 수 있다. 이것은 단지 하나의 예이고, PDA 엔진(3040)의 동작을 더 최적화하는데 사용된다. 대안적인 실시예에서, 단지 특정한 시맨틱 엔트리만이 단지 한번 사용될 수 있고 각 다른 데이터 위치를 검사하기 위하여 입력 데이터(3014)는 입력 버퍼(3061)에 순차적으로 이동될 수 있다.
시맨틱 테이블(3042)내의 제2 시맨틱 상태 섹션(3046B)은 사실상 두개의 시맨틱 엔트리들을 포함한다. ".ORG" 엔트리는 입력 데이터(3014)에서 ".ORG" 스트링을 검출하는데 사용되고 "WWW." 엔트리는 입력 데이터(3014)에서 가능한 제2 "WWW." 스트링을 검출하는데 사용된다. 다시, 다수의 다른 ".ORG" 및 "WWW." 엔트리들은 파싱 최적화를 위하여 시맨틱 테이블(3042)의 섹션 3046B에 선택적으로 로딩된다. 하나의 "WWW." 엔트리 및 하나의 ".ORG" 엔트리, 또는 도 50에 도시된 것 보다 더 적은 엔트리들을 사용하는 것이 동등하게 가능하다.The second
이 예에서, 시맨틱 상태 맵(3048)은 3개의 다른 섹션들을 포함한다. 하지만, 더 적은 수의 섹션들이 또한 사용될 수 있다. 다음 상태 섹션(3080)은 시맨틱 테이블(3042)내의 매칭 시맨틱 엔트리를 PDA 엔진(3040)에 의해 사용되는 다음 시맨틱 상태에 매핑한다. 시맨틱 엔트리 포인트(SEP) 섹션(3078)은 하기에 더 상세히 설명되는 시맨틱 프로세싱 유닛(SPU: Semantic Processing Unit)에 대한 마이크로명령들을 시작하는데 사용된다. 이 섹션은 선택적이고 PDA 엔진(3040)은 입력 데이터(3014)에 대해 다음에 수행하기 위한 다른 동작들을 결정하기 위하여 다음 상태 섹션(3080)에서 식별된 비-터미널 심볼을 대안적으로 사용할 수 있다.In this example, the
예를 들어, 비-터미널 심볼 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
스킵 바이트 섹션(3076)은 다음 동작 사이클에서 입력 버퍼(3061)에 이동시키기 위한 입력 데이터(3014)로부터의 바이트들의 수를 식별한다. 시맨틱 테이블(3042)에 아무런 매치도 존재하지 않는 경우 매치 모든 파서 엔트리 테이블(MAPT: Match All Parser entries Table)(3082)이 사용된다.Skip
실행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
도 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
맵 엔트리(3048B)는 또한 PDA 엔진(3040)이 다음 파싱 사이클을 위해 입력 데이터(3014)를 이동시킬 필요가 있는 바이트들의 수를 식별한다. 이 예에서, "WWW." 스트링은 입력 버퍼(3061)의 첫번째 4개의 바이트들에서 검출되었기 때문 에, 엔트리 3048B내의 스킵 바이트 값은 입력 버퍼(3061)에 다른 8 바이트들을 이동시킬 것을 PDA 엔진(3040)에 명령한다. 스킵 값은 하드웨어 종속적이고, 시맨틱 테이블(3042)의 크기에 따라 변할 수 있다. 물론 더 크거나 더 작은 시맨틱 테이블 폭을 지닌 다른 하드웨어 구현예들이 또한 사용될 수 있다.
도 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
도 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
도 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
맵 엔트리(3048D)는 검출된 URL에 대응하는 입력 데이터(3014)에 대해 부가적인 동작들을 수행하기 위한 시맨틱 프로세싱 유닛(SPU)(도 55 참조)에 의해 실행되는 마이크로명령들을 선택적으로 시작하는 포인터 SEP1을 또한 포함한다. 예를 들어, SPU는 공동 계류중이고 여기에 참조로써 포함되어 있는, 2005년 7월 21일 출원되었고, 출원 번호가 11/187,049이며, 명칭이 네트워크 인터페이스 및 방화벽 장치인 출원 및 2005년 5월 9일 출원되었고, 출원 번호가 11/125,956이며, 명칭이 침입 탐지 시스템인 출원에 설명되어 있는 바와 같이, 방화벽 동작, 바이러스 검출 동작 등을 수행하기 위한 부가적인 입력 데이터(3014)를 벗겨 낼 수 있다.The
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
또한 상술된 바와 같이, PDA 엔진(3040)은 각 파싱된 데이터 아이템에 대해 개별 상태를 유지할 필요가 없다. 상태들은 상이한 시맨틱 요소들 간의 전이들을 위해서만 유지된다. 예를 들어, 도 50, 도 52 및 도 53은 시맨틱 테이블(3042)내의 시맨틱 엔트리들 중 어떤 엔트리와 완전히 일치하지 않은 데이터 입력들을 도시한 것이다. 이 상황에서, PDA 엔진(3040)은 일치하지 않는 데이터 스트링에 대한 어떤 상태 정보를 유지하지 않고 계속 입력 데이터를 파싱한다.As also described above, the
이전에 도 46 내지 도 48에서 상기에 언급된 바와 같이, PDA 엔진(3040)에서의 시맨틱 상태들은 실질적으로 검색 스트링 길이와 관계없다. 예를 들어, 더 긴 검색 스트링 "WWWW."은 단순히 시맨틱 테이블(3042)내의 시맨틱 엔트리들 "WWW."을 더 긴 시맨틱 엔트리 "WWWW."로 대체함으로써 "WWW." 대신에 검색될 수 있다.As previously mentioned above in FIGS. 46-48, the semantic states in the
재구성가능한 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)
다이렉트 실행 파서(DXP)(3180)는 PDA 엔진(3040)을 구현하고, 입력 버퍼(3140)에서 수신되고(예를 들어, 입력 "스트림"), 출력 버퍼(3150)로 출력되고(예를 들어 출력 "스트림"), 재순환 버퍼(3160)에서 재순환되는(예를 들어 재순환 "스트림") 패킷들 또는 프레임들의 처리를 제어한다. 바람직하기로는 입력 버퍼(3140), 출력 버퍼(3150) 및 재순환 버퍼(3160)는 선입선출(FIFO) 버퍼들이다.Direct execution parser (DXP) 3180 implements
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)를 저장할 수 있다.
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
파서 테이블(3170)내의 코드들(3178)은 예를 들어, 행렬 포맷으로 또는 콘텐트-어드레싱가능한 포맷으로 저장된다. 행렬 포맷에서, 파서 테이블(3170)의 가로줄들은 내부 파서 스택(3170)에 의해 제공되는 비-터미널 코드 NT(3172)에 의해 인덱싱된다. 일 실시예에서 파서 스택(3185)은 도 46에 도시된 스택(3052)이다. 파서 테이블(3170)의 세로줄들은 입력 버퍼(3140)내의 데이터의 헤드로부터 추출된 입력 데이터 값(DI[N])(3174)에 의해 인덱싱된다. 콘텐트-어드레싱가능한 포맷에서, 파서 스택(3185)으로부터의 비-터미널 코드(3172)와 입력 버퍼(3140)로부터의 입력 데이터 값(3174)의 연결은 도 50 내지 도 54에서 입력 버퍼(3061)로 표시된 바와 같은 파서 테이블(3170)에 입력을 제공한다.
생성 규칙 테이블(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
시맨틱 코드 테이블(3210)은 또한 파서 테이블(3170)에 의해 생성된 코드들(3178)에 따라 그리고/또는 생성 규칙 테이블(3190)에 의해 생성된 생성 규칙들(3176)에 따라 인덱싱된다. 일반적으로, 파싱 결과들은 주어진 생성 규칙(3176)에 대해, 시맨틱 코드 테이블(3210)로부터의 시맨틱 엔트리 포인트(SEP) 루틴(3212)이 SPU(3200)에 의해 로딩되고 실행되어야 하는지를 DXP(3180)가 탐지할 수 있게 한다.The semantic code table 3210 is also indexed according to the
SPU(3200)는 콘텍스트 심볼들에 의해 어드레싱가능한 구조화된 메모리 인터페이스를 제공하는 메모리 서브시스템(3215)에 대한 몇몇 액세스 경로들을 가지고 있다. 메모리 서브시스템(3215), 파서 테이블(3170), 생성 규칙 테이블(3190) 및 시맨틱 코드 테이블(3210)은 온칩 메모리, 동기식 동적 램(DRAM) 및 콘텐트 어드레싱가능한 메모리(CAM) 같은 외부 메모리 장치들 또는 이러한 자원들의 조합을 사용할 수 있다. 각 테이블 또는 콘텍스트는 하나 이상의 다른 테이블들 또는 콘텍스트들에 공유된 물리적인 메모리 공간에 대한 콘텍스트 인터페이스를 단지 제공할 수 있다.
유지 보수 중앙 처리 장치(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
메모리 서브시스템(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) 테이블 및 다른 매개 변수들을 포함한다.
RSP(3100)의 기능 블록들에 대한 상세한 설계 최적화는, 여기에 참조로써 포함되어 있고, 2003년 1월 24일에 출원되었으며, 명칭이 재구성가능한 시맨틱 프로 세서인, 공동 계류중인 출원 10/351,030에 설명되어 있다.Detailed design optimization for the functional blocks of the
파서 테이블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
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
이 구조를 보는 다른 방법은 "가변 예지 능력" 파서와 같은 것이다. 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)
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)
| 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)
| 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)
| 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 |
-
2005
- 2005-12-20 KR KR1020077016831A patent/KR20070087198A/en not_active Withdrawn
- 2005-12-20 WO PCT/US2005/046073 patent/WO2006069041A2/en not_active Ceased
Cited By (3)
| 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 |