KR20070010064A - 딥 패킷 필터링을 위한 프로그램 가능 하드웨어 - Google Patents

딥 패킷 필터링을 위한 프로그램 가능 하드웨어 Download PDF

Info

Publication number
KR20070010064A
KR20070010064A KR1020067024324A KR20067024324A KR20070010064A KR 20070010064 A KR20070010064 A KR 20070010064A KR 1020067024324 A KR1020067024324 A KR 1020067024324A KR 20067024324 A KR20067024324 A KR 20067024324A KR 20070010064 A KR20070010064 A KR 20070010064A
Authority
KR
South Korea
Prior art keywords
prefix
incoming data
suffix
pattern
memory
Prior art date
Application number
KR1020067024324A
Other languages
English (en)
Other versions
KR100828038B1 (ko
Inventor
영 에이치. 조
윌리엄 에이치. 망기오네-스미스
Original Assignee
더 리전트 오브 더 유니버시티 오브 캘리포니아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 더 리전트 오브 더 유니버시티 오브 캘리포니아 filed Critical 더 리전트 오브 더 유니버시티 오브 캘리포니아
Publication of KR20070010064A publication Critical patent/KR20070010064A/ko
Application granted granted Critical
Publication of KR100828038B1 publication Critical patent/KR100828038B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms

Landscapes

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

Abstract

고속 네트워크 트래픽에 대한 동적 패턴의 검색을 최적화하기 위해 향상된 딥 패킷 필터가 설계되었다. 향상된 딥 패킷 필터는 최적화된 논리 영역을 가진 하드웨어 기반의 시스템이다. 하나의 최적화 기술로서, 필요한 게이트의 수를 감소시키기 위해 하드웨어 설계상의 공통 서브-로직을 공유하는 기술이 있다. 다른 최적화 기술로서는, 패턴 세트의 부분을 저장하기 위해 내장형 메모리를 사용하여 게이트의 감소를 도모한 것이 있다. 로직 영역이 감소함에 따라 딥 패킷 필터 시스템은 단일의 현장 프로그램 가능 어레이 칩 상에서 구현될 수 있다.
딥 패킷 필터, 프리픽스 패턴, 서픽스 패턴, 서픽스 인덱스

Description

딥 패킷 필터링을 위한 프로그램 가능 하드웨어{PROGRAMMABLE HARDWARE FOR DEEP PACKET FILTERING}
본 발명은 국립과학재단(NSF)에서 수여한 등록번호 제0220100호 하에 정부 지원으로 이루어진 것이다. 정부는 본 발명의 소정의 권리를 갖는다.
네트워크 바이러스가 번식한다는 것은 네트워크 패킷 헤더만을 검사하는 종래의 방화벽으로는 컴퓨터 침입을 충분히 방어하지 못한다는 것을 의미한다. 대부분의 새로운 침입은 정적 헤더부가 아닌, 다양한 동적 위치 내의 패킷의 페이로드부에 숨겨진다. 예를 들어 인터넷에서 발견된 많은 최근의 웜(worm)은 알려지지 않은 위치의 패킷 페이로드에 내장되어 있는 어플레케이션-레벨 침입(application-level attack)이다. 이러한 침입을 받은 패킷 헤더는 패킷이 부적당한 것임을 나타내지 못하고, 실제로, 정당한 패킷으로서 나타낼 수도 있다. 그러므로 정적 패킷 헤더를 검사할 뿐만 아니라, 페이로드 전체를 샅샅이 조사하여 사전 정의된 패킷을 검색하는, 다층 감시 유닛이라고 하는 딥 패킷 검사 유닛이 통합되어 있는 보안 시스템을 갖추는 것이 바람직하다.
도 1은 통상적인 다층 검사 시스템이다. 상기 시스템은 인입 패킷(20)을 취득하고 취득된 패킷 중 층(3-7)을 모든 패킷 필터 패턴과 검사하는 다층 검사 유 닛(10)을 포함한다. 패턴(30) 중 하나라도 층(3-7) 내의 정보와 일치하는 경우, 그 패킷은 통과가 허락되지 않는다. 그렇지 않으면, 상기 패킷은 통과가 허락된다.
다층 감시 유닛(20)은 규칙 기반의 필터링 소프트웨어(rule-based filtering software)를 운용하는 하나 이상의 범용 프로세서로서 구현될 수 있다. 그렇지만, 소프트웨어 시스템이 사용하는 소모적인 패턴 검사 알고리즘으로 인해, 소프트웨어가 종종 1 Gbps 이상의 고속 네트워크 트래픽을 필터링하는 것이 곤란하다. 구체적으로, 패턴의 위치가 사전 결정되어 있지 않기 때문에, 검색 처리 동안, 페이로드의 모든 바이트의 얼라인먼트로부터의 시작 시에 패턴들이 비교해야만 한다. 그래서 규칙 기반의 패킷 필터링 소프트웨어는 이러한 고속 네트워크와 함께 사용하기에는 실용적이지 못하다.
종래의 기술분야에 있어서 더욱 빠른 네트워크를 지원하는 통상적인 하드웨어 칩이 존재한다. 이러한 칩들은 패킷의 정적 장의 검색에 기초하여 패킷 분류기로서 사용하기에 효과적이기는 하지만, 딥 패킷 필터에 필요한 동적 패턴 검색을 위한 후보로서는 빈약하다. 이것은 주로, 성능 병목이 결국 필요한 패턴 체크의 수가 증가하는 폰 노이만 아키텍처 상에서 운용되는 하부 순차 알고리즘(underlying sequential algorithm)에 기인한 것이다.
따라서, 고속 네트워크를 위한 향상된 딥 패킷 필터가 필요하다.
본 발명은 인입 데이터의 제1 비헤더부(first non-header portion)와 프리픽스 패턴을 비교하도록 구성된 프리픽스 검색 로직을 포함하는 딥 패킷 필터에 관한 것이다. 상기 딥 패킷 필터는 또한 복수의 서픽스 패턴을 저장하는 메모리, 및 상기 인입 데이터의 제1 비헤더부(non-header portion)와 상기 프리픽스 패턴과의 일치에 기초하여 서픽스 인덱스를 생성하는 수단을 포함한다. 상기 딥 패킷 필터는 상기 인입 데이터의 제2 비헤더부와, 상기 생성된 서픽스 인덱스에 의해 식별된 서픽스 패턴을 비교하도록 구성된 비교기 로직을 포함한다. 상기 인입 데이터는, 상기 제2 비헤더부의 비교에 기초하여, 통과할 수 있게 되거나 통과할 수 없게 된다.
일실시예에 따르면, 상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부와 복수의 프리픽스 패턴을 동시에 비교한다. 이것은 상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부의 복수의 바이트(byte)와 상기 복수의 프리픽스 패턴 각각의 복수의 바이트를 동시에 비교함으로써 수행된다.
일실시예에 따르면, 상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부의 복수의 바이트와 상기 복수의 프리픽스 패턴 각각의 상이한 바이트 얼라인먼트(alignment)를 동시에 비교한다.
일실시예에 따르면, 상기 프리픽스 검색 로직은 상기 프리픽스 패턴의 특정한 서브스트링(substring)을 검출하기 위한 일련의 디코더를 포함한다. 최적화 목적을 위해, 상기 특정한 서브스트링을 검출하기 위한 일련의 디코더는, 상기 특정한 서브스트링을 포함하는 상이한 프리픽스 패턴을 검출하도록 구성된 복수의 프리픽스 검색 로직 유닛에 의해 공유된다.
일실시예에 따르면, 상기 프리픽스 검색 로직, 상기 메모리, 상기 서픽스 인덱스 생성 수단, 및 상기 비교기 로직은 단일의 현장 프로그램 가능 게이트 어레이(single field-programmable gate array) 상에서 구현된다.
일실시예에 따르면, 상기 메모리는 분류된 서픽스 패턴의 목록을 저장하며, 상기 목록의 짝수 엔트리의 패턴은 상기 메모리의 제1 엔트리로부터 최종 엔트리로 저장되며, 상기 목록의 홀수 엔트리의 패턴은 상기 메모리의 최종 엔트리로부터 제1 엔트리로 저장된다.
일실시예에 따르면, 상기 서픽스 인덱스를 생성하는 수단은, 상기 프리픽스 검색 로직의 출력에 결합된 OR 게이트의 2진 트리(binary tree)로부터 도출된 논리식에 기초하여 상기 서픽스 인덱스의 각각의 비트를 생성한다.
일실시예에 따르면, 상기 프리픽스 검색 로직은 바이트 얼라인먼트를 표시하며, 상기 비교기 로직은 상기 표시된 바이트 얼라인먼트에 따라 상기 인입 데이터의 상기 제2 비헤더부를 시프트시키는 시프터를 포함한다.
일실시예에 따르면, 상기 인입 데이터의 상기 제1 비헤더부 및 상기 제2 비헤더부는 상기 인입 데이터의 페이로드부(payload portion)이다.
일실시예에 따르면, 본 발명은 딥 패킷 필터링 방법에 관한 것이며, 상기 방법은, 복수의 패턴을 프리픽스 부분과 서픽스 부분으로 분할하는 단계; 상기 복수의 패턴 각각의 상기 서픽스 부분을 메모리에 저장하는 단계; 인입 데이터의 제1 비헤더부의 적어도 한 부분과 상기 복수의 패턴 각각의 프리픽스 부분의 적어도 한 부분을 동시에 비교하는 단계; 상기 인입 데이터의 상기 제1 비헤더부와 특정한 패턴의 프리픽스 부분과의 일치에 기초하여 서픽스 인덱스를 생성하는 단계; 상기 서픽스 인덱스에 기초하여 상기 메모리에 저장된 상기 특정한 패턴의 서픽스 부분을 식별하는 단계; 상기 인입 데이터의 제2 비헤더부와 상기 식별된 서픽스 부분을 비교하는 단계; 및 상기 제2 비헤더부와 상기 식별된 서픽스 부분과의 비교에 기초하여, 상기 인입 데이터를 전송하거나 전송하지 않는 단계를 포함한다.
본 발명의 이러한 그리고 다른 특징, 관점 및 이점은 이하의 상세한 설명, 청구의 범위 및 첨부된 도면으로부터 더욱 완전하게 이해될 것이다. 물론 본 발명의 실제의 범주는 첨부된 청구의 범위에 의해 정해진다.
도 1은 통상적인 다층 검사 시스템의 블록도이다.
도 2는 향상된 딥 패킷 필터 시스템이 본 발명의 예시적 실시예에 따라 구현되는 네트워크 도시도이다.
도 3은 본 발명의 예시적 실시예에 따른 도 1의 향상된 딥 패킷 필터 시스템의 개략 블록도이다.
도 4는 본 발명의 일실시예에 따른 디코더 기반의 패턴 검색 엔진의 연산도이다.
도 5a는 본 발명의 일실시예에 따른 상이한 바이트 얼라인먼트의 "BABAB" 및 "ABAB"을 체크하도록 각각 구성된 2개 디코더 기반의 패턴 검색 엔진 도시도이다.
도 5b는 이중 세트가 제거된, 도 5a의 서브스트링 비교기 도시도이다.
도 6a는 본 발명의 일실시예에 따른 이중의 비교기가 제거되는, 패턴 "ABCDEF", "ABCXXX" 및 "ABCYYY"를 검색하기 위한 서브스트링 비교기 세트 도시도이다.
도 6b는 패턴 "ABCDEF", "ABCXXX" 및 "ABCYYY"를 검색하기 위한 비교기의 붕괴된 파이프라인 체인에 대한 도시도이다.
도 7a는 본 발명의 일실시예에 따라 15 비트 입력을 4 비트 인덱스로 인코딩하는 OR 게이트의 예시적 이진 트리 도시도이다.
도 7b는 본 발명의 일실시예에 따라 D 플립 플롭의 뒤를 이어 1-네개의 입력 게이트에 의해 대치된 2-두개의 입력 게이트를 갖는 파이프라인화된 OR 트리 도시도이다.
도 8은 본 발명의 일실시예에 따른 메모리 기반의 패턴 검색 엔진에 대한 블록도이다.
도 9는 인입 데이터가 프리픽스 부분과 서픽스 부분으로 분할되고, 상기 인입 데이터의 해당 서픽스 부분을 저장하는 리드 온리 메모리에서 어드레스를 발생하기 위해 프리픽스 부분이 프리픽스 검색 엔진에 의해 일치되는 것을 도시하는 도시도이다.
도 10은 본 발명의 일실시예에 따른 도 8의 메모리 기반의 패턴 검색 엔진에 포함된 프리픽스 검색 엔진의 더욱 상세한 블록도이다.
도 11은 본 발명의 일실시예에 따라 메모리 활용도를 향상시키는 메커니즘 도시도이다.
도 12는 본 발명의 일실시예에 따라 도 8의 메모리 기반의 패턴 검색 엔진의 메모리와 함께 사용되는 래퍼 로직(wrapper logic)에 대한 개략적 블록도이다.
도 13은 본 발명의 일실시예에 따른 도 8의 메모리 기반의 패턴 검색 엔진의 비교기 모듈에 대한 개략적 블록도이다.
도 14는 본 발명의 일실시예에 따라 도 4-6의 디코더 기반의 설계뿐만 아니라 도 8-13의 메모리 기반의 설계 모두를 결합하는 패턴 검색 엔진에 대한 블록도이다.
본 발명은 예를 들어 1Gbps 이상의 네트워크 트래픽과 같은 고속 네트워크 트래픽을 위한 동적 패턴의 검색을 최적화하도록 설계된 향상된 딥 패킷 필터 시스템에 관한 것이다. 일실시예에 따르면, 상기 향상된 딥 패킷 필터 시스템은 하드웨어에 의해 구현된다. 이러한 하드웨어 기반의 시스템의 설계에서 있어서 한 가지 문제점은 일반적으로 많은 패턴 세트를 지원하기 위해 많은 수의 로직 리소스를 필요로 한다는 점이다. 이러한 패턴 세트는 예를 들어 흔히 스노트(Snort)라고 하는 개방형 소스 네트워크 침입 검출 시스템(open source network intrusion detection system)에 의해 제공된다.
일실시예에 따르면, 상기 향상된 시스템에서는 일련의 최적화 기술을 적용하여 하드웨어의 필요한 로직 영역을 감축한다. 감축 기술 중 하나는, 하드웨어 설계에서 공통 서브-로직을 공유함으로써 사용되는 게이트의 수를 감소시키는 것이다. 다른 최적화 기술은, 패턴의 부분들을 저장하는 내장형 메모리를 사용하여 결과적으로 게이트의 감소를 가져오는 것이다.
논리 영역의 감소에 따라 딥 패킷 필터 시스템을 단일의 칩으로 구현할 수 있다. 새로운 바이러스 및 웜을 드러나게 함으로써 침입에 대한 패턴 세트를 지속 적으로 검출하기 때문에, 사용되는 칩이 빠르고 쉽게 재프로그램되는 것이 바람직하다. 따라서, 본 발명의 일실시예에서, 사용되는 칩은 단일의 현장 프로그램 가능 게이트 어레이(FPGA)이다. 그렇지만, 당업자는 본 발명이 FPGA에 제한되는 것이 아니라 빠르고 쉽게 재프로그램될 수 있는 다른 유사한 칩도 사용될 수 있다는 것을 이해할 수 있어야 한다.
도 2는 본 발명의 예시적 실시예에 따라 향상된 딥 패킷 필터 시스템이 적용되는 네트워크를 도시한다. 도시된 네트워크에서, 예를 들어 패킷은 인터넷과 같은 매체 언트러스트 매체(untrusted medium)(40)를 통해 전송되고, 수신 시에는 예를 들어 로컬 영역 네트워크 내의 디바이스와 같은 디바이스(50)의 네트워크를 보호하도록 구성된 방화벽(45)에 의해 검사된다. 일실시예에 따르면, 방화벽은 패킷의 헤더를 검사할 뿐만 아니라 패킷이 차단(drop)되어야 하는지 또는 통과되어야 하는지를 결정하기 위한 페이로드부를 검사하는 향상된 딥 패킷 검사 시스템(60)을 구비한다. 일실시예에 따르면, 방화벽은 상기 향상된 패킷 검사 시스템을 보완하는 다른 종래의 침입 검출 및 보호 메커니즘을 구비할 수도 있다.
본 발명의 일실시예에서, 상기 향상된 딥 패킷 검사 시스템은 고속 루터 또는 스위치에 통합될 수도 있다. 이러한 루터나 스위치의 시스템을 통합함으로써, 많은 공지의 어플리케이션-레벨 침입을 필터링할 수 있다.
도 3은 본 발명의 일실시예에 따라 상기 향상된 딥 패킷 필터 시스템(60)의 개락적인 블록도이다. 도시된 딥 패킷 필터 시스템은 병렬로 연결되어 있는 다양한 검사 모듈(100a-100n)(이것을 100으로 총칭함)로 구성되어 있다. 이 방식으로, 각 각의 검사 모듈은 각각의 클록 사이클에서, 인입 데이터의 일부와 소정 세트의 타겟 패턴(이를 룰 또는 시그내처라 칭함)을 동시에 비교한다. 일실시예에 따르면, 각각의 검사 모듈은 단일의 스노트 룰 시그내처(single Snort rule signature)를 구현하는 로직을 포함한다.
인입 데이터 패킷(102)은 32-비트 버스(100)에 의해 32-비트 레지스터(112)로 통과된다. 이때 레지스터에 저장되어 있는 데이터는 일치(match)를 위해 감시 모듈(100a-100n)에 동시에 전송된다.
본 발명의 일실시예에 따르면, 각각의 감시 모듈(100)은 인입 데이터의 페이로드부와 특정한 룰 패턴을 비교하고, 그 결과를 어드레스 디코더(108)에 제공하는 동적 패턴 검색 엔진(104)과 함께 구성된다. 본 발명의 일실시예에 따르면, 검색 엔진(104)은 재구성 가능한 이산 로직(reconfigurable discrete logic)의 다양한 병렬 파이프라인 시리즈(parallel pipelined series)를 포함한다.
어드레스 인코더(108)는 감시 모듈 각각으로부터의 일치 표시를 수신하고 검출된 패턴을 나타내는 패턴 ID를 출력한다. 대안으로, 어드레스 인코더(108)는 일치가 이루어졌는지의 여부를 단순하게 나타내는 OR 게이트로 대체될 수도 있다. 그런 다음 일치 표시는 사용자에게 경고하거나 및/또는 인입 데이터를 차단시키는데 사용될 수 있다.
동적 패턴 검색 엔진(104)은 또한 인입 데이터의(102)의 정적 헤더 부분을 탐색하는 하나 이상의 정적 헤더 검출기(106a-106d)와 함께 작동할 수 하여 특정한 타입의 헤더 정보를 검출할 수 있다. 검출된 헤더 정보에 기초하여, 동적 패턴 검 색 엔진(104)에 의한 딥 패킷 검사가 수행될 수 있거나 수행되지 않을 수 있다. 예를 들어, 정정 헤더 검출기는 특정한 물리적 어드레스, 프로토콜, IP 어드레스, 포트 넘버 등을 탐색할 수 있다.
본 발명의 일실시예에 따르면, 동적 패턴 검색 엔진(104)은 상이한 타입의 오프셋으로 특정한 패턴을 검색하도록 구성된 디코더의 파이프라인화된 체인으로서 구현된다. 도 4는 본 발명의 일실시예에 따라 디코더 기반의 패턴 검색 엔진(104a)의 연산도이다. 검색 엔진(104a)은 인입 데이터와 특정한 시그내처를 비교하는 서브스트링 비교기(200)가 파이프라인화된 체인을 포함한다. 재구성 가능한 로직은 일실시예에 따라 사용되기 때문에, 각각의 개별 비교기(202)는 데이터의 1바이트를 검출하는 8-1 디코더와 함께 구현될 수 있다.
도시된 디코더 기반의 패턴 검색 엔진은 스트링 "PATTERNS"을 검색하도록 구성되어 있다. 도시된 예에서, 데이터의 4 바이트는 그 처리량을 증가시키기 위해 파이프라인의 각각의 스테이지/체인에 일치된다. 입력 데이터의 복수 바이트를 제공하는 데이터 경로로 인해, 버스의 상이한 바이트 얼라인먼트에서 동일한 데이터가 검사되어야만 한다. 그래서, 4개의 상이한 세트의 서브스트링 비교기(204)를 각각의 파이프라인 스테이지에서 사용하여 4바이트 인입 데이터의 상이한 바이트 오프셋 모두를 동시에 검사한다. 그런 다음 각각의 일치 결과가 서브스트링 비교기(200)의 각각의 세트에 결합되어 있는 1-비트 레지스터(206)로 통과된다.
도시된 예에서, 32-비트 레지스터(112)를 구성하는 각각의 8-비트 레지스터는 인입 데이터 스트림의 ASCⅡ 캐릭터를 저장한다. 레지스터 A는 제1 클록 사이클 동안의 인입 데이터를, 레지스터 B는 제2 클록 사이클 동안의 인입 데이터를, 그리고 레지스터 C는 제3 클록 사이클 동안의 인입 데이터를 나타낸다. 전체적으로, 파이프라인화된 레지스터 A, B, C의 콘텐츠는 스트링 스트림 "PATTERNS"를 나타내낸다.
도시된 예의 제1 사이클 동안, 서브스트링 "PAT"는 수평열 1에서 상이한 바이트 오프셋을 갖는 4개의 상이한 서브스트링과 비교된다. 1-비트 레지스터(202) 모두는 0으로 초기화되어 있기 때문에, 그 결과는 수평열 2 및 3의 일치 패턴이 존재하더라도 래치되지 않는다. 본 예에서, 서브스트링 "PAT"에 일치하는 수평열 1, 수직열 2 내의 비교기(200a) 세트는 "1"의 결과 값으로 된다. 이 값은 해당 1-비트 레지스터(202a)를 통해 래치되어 1-비트 레지스터의 다음 수평열을 인에이블시킨다.
제2 사이클 동안, 레지스터 B 내의 서브스트링은 레지스터 A로 래치된다. 그런 다음 서브스트링은 모든 패턴 서브세트와 비교된다. 그렇지만, 래치될 수 있는 유일한 비교기 결과는 수평열 1 내의 모든 비교기와 수평열 2, 수직열 2 내의 비교기(200b) 세트이다. 패턴이 제1 사이클 동안 레지스터 B 내의 컨텐츠에 따라 실제로 개시할 수 있었던 가능성 때문에 수평열 1 레지스터 모두를 인에이블하는 것이 바람직하다. 비교기(200b)의 세트 내의 일치 패턴은 해당 1-비트 레지스터(202b)를 통해 래치되는 "1"의 값을 발생하여 1-비트 레지스터의 다음의 수평열을 인에이블시킨다.
제3 사이클 동안, 레지스터 C 내의 서브스트링은 레지스터 A로 래치된다. 수 평열 3, 수직열 2 내의 비교기(200c) 세트에 구성된 일치 패턴은 "1"의 값을 어드레스 인코더(108)로 보낸다.
전술한 바와 같이, 하드웨어 기반의 딥 패킷 필터 시스템의 설계에서 부닥치는 한 가지 문제점은 많은 수의 로직 리소스가 필요하다는 점이다. 예를 들어, 스노트 룰 세트 내의 2,207 시그내처를 실행하기 위해서는, 12개 이상의 가장 큰 FPGA가 통상적으로 필요하다. 그래서 본 발명의 일실시예에 따르면, 다양한 최적화 기술을 사용하여 딥 패킷 필터 시스템(60)이 단일의 FPGA 상에서 구현될 수 있게 한다. 이러한 최적화 기술 중의 하나가 서브스트링 비교기의 공유를 가능하게 하는, 디코더 기반의 패턴 검색 엔진(104a)을 설계하는 것이다. 도 4에 도시된 설계를 다시 참조하면, 동일한 바이트 얼라인먼트용 서브스트링 비교기의 모든 세트가 동일한 입력 핀에 연결되어 있다. 이러한 서브스트링 비교기 중 일부는 동일한 서브스트링을 체크한다. 따라서, 서브스트링 비교기의 이중 세트를 설계 기능의 손실 없이 안전하게 제거할 수 있다.
일실시예에 따르면, 서브스트링 비교기의 이중 세트를 제거하는 제1 단계 중 하나는 모든 대상 스트링을 1 내지 4 바이트 세그먼트로 이루어지는 세트로 분할하는 것이다. 그런 다음, 고유한 세그먼트의 세트를 원래의 세트로부터 추출한다. 모든 고유한 스트링 세그먼트를 서브스트링 비교기의 고유한 세트로 변환시킨다. 마지막으로, 서브스트링 비교기의 출력을 해당 동적 패턴 검색 엔진(104)에 보낸다.
도 5a는 본 발명의 일실시예에 따른 상이한 바이트 얼라인먼트에서 패턴 "BABAB" 및 "ABAB"를 체크하도록 각각 구성된 2개의 디코더 기반의 패턴 검색 엔 진(104b, 104c)을 도시한다.
도시된 실시예에서, 4 쌍의 이중 서브스트링 비교기 세트가 존재하며, 즉 서브스트링 "ABAB"를 체크하는 서브스트링 비교기 세트(304a, 304b); 서브스트링 "BAB"를 체크하는 서브스트링 비교기 세트(306a, 306b); 서브스트링 "AB"를 체크하는 서브스트링 비교기 세트(308a, 308b); 그리고 서브스트링 "B"를 체크하는 서브스트링 비교기 세트(310a, 310b)가 존재한다. 동일한 바이트 얼라인먼트를 위한 이중 서브스트링 비교기 세트의 각각의 쌍은 동일한 데이터 입력 핀에 접속되어 있기 때문에, 각각의 쌍으로부터의 하나의 서브스트링 비교기 세트는 안전하게 제거되어 AND 게이트로 대체된다.
도 5b는 이중 세트가 제거되어 있는, 도 5a의 서브스트링 비교기 세트를 도시한다. 도시된 예에서, 서브스트링 비교기 세트(304a)는, 서브스트링 비교기 세트(304b)로부터의 출력을 입력으로서 수신하는 AND 게이트(356)로 대체되며, 서브스트링 비교기 세트(310a)는, 서브스트링 비교기 세트(304a)로부터의 출력을 입력으로서 수신하는 AND 게이트(354)로 대체되며, 서브스트링 비교기 세트(308b)는, 서브스트링 비교기 세트(308a)로부터의 출력을 입력으로서 수신하는 AND 게이트(352)로 대체되며, 그리고 서브스트링 비교기 세트(306b)는, 서브스트링 비교기 세트(306a)로부터의 출력을 입력으로서 수신하는 AND 게이트(350)로 대체된다.
본 발명의 일실시예에 따르면, 디코더 기반의 패턴 검색 엔진의 로직 영역을 감축하기 위해 사용되는 다른 최적화 기술로서는 패턴 검색 엔진으로 하여금 동일한 바이트 얼라인먼트로 개별의 비교기를 공유하도록 엔진을 설계하는 것이 있다. 예를 들어, 도 5b의 디코더 기반의 패턴 검색 엔진(104b, 104c)에서, 특정한 입력으로부터 입력을 수신하는 제1 파이프라인 엔진 내의 "B" 비교기(360)의 출력은 동일한 입력 핀으로부터도 입력을 수신하는 제2 파이프라인 스테이지에서 2개의 다른 비교기(304a, 362)를 위해 사용될 수 있다. 이와 관련해서, 용장성 비교기(304a, 362)는 "B" 비교기(360)의 출력을 그 입력으로서 수신하는 AND 게이트로 대체된다. 도 5b에 도시된 예시적 검색 엔진(104b, 104c)에서의 모든 복사를 제거한 후, 8개의 8-비트 비교기만으로 기능적으로 등가의 설계를 얻을 수 있으며, 여기서 각각의 8-비트 비교기는 2개의 4-비트의 재구성 가능한 룩-업 테이블로 구성된다. 그래서 본 예에서는 전체 로직 요구가 25% 감소된다.
본 발명의 일실시예에 따르면, 상기 향상된 딥 패킷 필터 시스템(60)의 로직 영역을 감축시키기 위한 다른 최적화 기술로서는 파이프라인 체인들이 결합할 수 있게 하는 패턴 검색 엔진(104)을 위한 키워드 트리를 사용하는 것이 있다. 예를 들어, 검색되어야 할 패턴이 "ABCDEF", "ABCXXX", 및 "ABCYYY"인 경우, 도 6a에 도시된 바와 같이 복사를 제거하는 방식으로 서브스트링 비교기를 사용할 수 있다. 도시된 예에서, 서브스트링 비교기(400)는 "ABC"를 검출하고, 서브스트링 비교기(402)는 "DEF"를 검출하고, 서브스트링 비교기(404)는 "XXX"를 검출하고, 그리고 서브스트링 비교기(406)는 "YYY"를 검출한다. 그런 다음 각각의 서브스트링 비교기의 출력은 AND 게이트를 갖는 파이프라인화된 체인을 생성하는데 사용된다. 일실시예에 따르면, 상기 체인은 도 6b에 도시된 바와 같이 체인을 위한 리소스를 감소하기 위해 붕괴된다. 상기 변환은 필요한 저장량을 감소시킬 뿐만 아니라 프로그램이 트리를 아래로 가로지를 때 잠재적 패턴의 수를 좁게 한다. 일실시예에 따르면, 도 4-5의 실시예에 도시된 바와 같은 병렬 설계에서의 트리의 구성은 비교기(400-406)의 길이가 복수의 데이터 경로 폭 내에 있어야 하는 것을 요구한다.
도 3의 실시예에서의 검사 모듈(100a-110n)은 그 사이클 클록에서 일치가 일어났는지를 표시하는 1-비트 출력을 발생한다. 1519 고유한 검사 모듈을 사용하여 룰 세트를 나타내는 경우에, 검사 모듈의 출력은 1519 비트이다. 일부의 실시예에서는 일치를 표시하기 위해 모든 이러한 비트를 단순히 OR 하는 것만으로도 충분하며, 일치된 패턴에 대한 식별은 소프트웨어적으로 달성된다. 그렇지만, 종종 일치된 패턴의 인덱스 넘버를 하드웨어적으로 생성하는 것이 더 바람직하다.
인덱스 넘버를 생성하는데 있어서 한 가지 문제점은 이 인덱스 넘버는 종종, 예를 들어 1519 비트와 같이, 상당히 큰 입력으로부터 발생한다는 점이다. 다른 문제점은 동일한 클록 사이클 동안 하나 이상의 검사 모듈이 일치를 나타낼 수도 있다는 점이다.
본 발명의 일실시예에 따르면, 어드레스 인코더(108)는 검사 모듈에 의해 생성된 1519 비트를 취득하고, 어드레스 인코더(108)에 의해 제공된 OR 게이트의 이진 트리로부터의 출력들의 조합을 사용하여, 일치된 패턴의 11-비트 인덱스 넘버를 생성한다. 도 7a는 15-비트 입력(502)을 4-비트 인덱스로 인코딩하는 예시적 실시예에 따른 OR 게이트(500)의 예시적 2진 트리를 도시한다. 2진 트리의 중립 캐릭터(neutral character)에 기초하여, 트리의 해당 레벨 상의 홀수 노드 중 임의의 것이 어서트된 경우에는, 인덱스의 각각의 인덱스 비트가 어서트되어야만 하는 결 정이 이루어진다. 그래서 임의의 클록 사이클에서 하나의 입력 핀만이 어서트될 것이라는 가정을 한다면(즉, 단지 하나의 패턴이 각각의 사이클에서 검출된다), 15-비트 입력을 위한 4-비트 인덱스 인코더가 이하의 인덱스 비트 식 (1)-(4)에 따라 생성될 수 있다.
index3 = a1 (1)
index2 = b1 + b3 (2)
index1 = c1 + c3 + c5 + c7 (3)
index0 = d1 + d3 + d5 + d7 + d9 + d11 + d13 + d15 (4)
그래서 4-비트 인덱스 인코더를 생성함에 있어서, 로직을 사용하여 상기 식들에 의해 표현된 바와 같은 2진 트리의 다양한 노드의 입력들을 결합할 수 있다. 예를 들어, 인덱스의 비트 0을 발생하기 위한 로직은 트리 레벨 D에서 홀수 번호의 입력 핀의 출력을 취득하는 복수의 OR 게이트를 포함한다. 인덱스의 비트 1을 생성하기 위한 로직은 트리 레벨 C에서 홀수 번호의 입력 노드의 출력을 취득하는 복수의 OR 게이트를 포함하여, 이런 식으로 계속 포함한다. 각각의 인덱스 비트를 위한 로직의 출력에서의 1-비트 레지스터는 인코딩된 인덱스 비트를 저장한다.
전술한 바와 같이, 식 (1)-(4)에 따라 발생된 어드레스 인코더는 하나 이상의 입력 핀이 특정한 클록 사이클에서 어서트되지 않는다는 것을 가정하는 단순한 인코더이다. 그렇지만, 하나 이상의 입력 핀이 어서트되는 경우에는, 간단한 어드 레스 인코더는 패턴 인덱스를 적절하게 표시하는데 충분하지 않을 수도 있다. 충돌에 대한 한가지 해결책이 룰 세트를, 비-오버래핑 패턴을 각각 포함하는 복수의 서브세트로 분할하는 것이다. 그런 다음 단순한 어드레스 인코더는 각각의 서브-세트 패턴 검색 유닛에 제공될 수 있다. 그렇지만 일부의 경우, 제한된 출력 핀 카운트가 복수의 인덱스 출력을 갖도록 하는데 실행될 수 있다. 그러므로 이러한 경우에는 패턴 인덱스에 우선권을 지정하는 것이 바람직하다.
본 발명의 일실시예에 따르면, 소프트웨어 사전-처리를 사용하여 인덱스 넘버에 우선권을 할당한다. 다른 실시예에 따르면, 인덱스 우선권을 할당하도록 하드웨어가 직접적으로 변환된다.
소프트웨어 사전-처리 방법에 따르면, 인코더 입력을 동시에 어서트할 수 있는 모든 패턴은 식 (5)에 따라 인덱스 넘버에 할당된다.
In│In-1│...│I0 = In (5)
식 (5)는 오버래핑 패턴의 모든 인덱스에 비트-와이즈 OR(bit-wise OR)을 적용하며, 여기서 In은 n의 더 높은 값을 가지는 인덱스 넘버이고, 상기 n의 더 높은 값은 더 높은 우선권을 표시한다. 모든 인덱스가 원하는 우선권에 따른 오버래핑 패턴에 할당되면, 이때 인덱스는 그 패턴의 결과에 할당된다.
소프트웨어-사전 처리 실시예에 따른 인덱스 우선권 할당 메커니즘은 우선권이 설정된 패턴 세트의 사이즈에 제한을 둔다. 각각의 세트에 대한 인덱스의 최대수는 인덱스 출력 핀의 수와 동등하다. 현실적인 구성에서 오퍼래핑 패턴의 독립적인 세트가 수개 존재하지만, 이것들의 동시 오버래핑 패턴의 수는 통상적으로 4를 넘지 않는다. 그러므로 대부분의 세트의 경우에 있어서 이 기술은 충분하다. 상기 소프트웨어-사전 처리 메커니즘을 사용하는 이점은 추가의 게이트가 필요하지 않다는 점이다.
엄격한 우선권이 필요한 상황에 있어서는, 어드레스 인코더용 추가의 게이트를 사용하여 우선권 기반의 인덱스를 구성할 수 있도록 하드웨어 기반의 우선권 인덱스 인코더를 사용할 수 있다. 이러한 하드웨어 기반의 우선권 인코더에 따르면, 인덱스가 높을수록 우선권이 높다는 것을 의미한다.
하드웨어 기반의 우선권 인코더는 도 7a의 2진 OR 트리의 이하의 검사에 기초하여 설계된다. 도시된 2진 OR 트리에서, A1 노드(504) 하의 15-비트 입력(D 노드) 중 임의의 것이 어서트되면 최상위 인덱스 비트(most significant index bit)는 "1"이다. 더 높은 넘버가 부여된 D 노드는 낮은 넘버가 부여된 노드보다 높은 우선권을 가지기 때문에, A0 노드(512)의 출력은 고려되지 않는다. 그래서 하드웨어 기반의 우선권 인코더는 인덱스의 최상위 비트값을 A1의 출력에 할당한다.
다음 인덱스 비트를 위해, A1 및 A0 노드(504, 512)의 바로 아래의 자(childeren)인 노드를 갖는 브랜치(branches)를 고려한다. 이것은 B3 노드(508)의 출력이 어서트되면 제2 인덱스 비트가 "1"임을 추론을 야기한다. 그렇지만, B1 노드(506)의 출력이 "1"이고 더 높은 플래그가 "1"이 아니면 제1 인덱스 비트는 "0"이다. 도시된 2진 OR 트리에서, A1 노드(504)는 "0" 더 높은 플래그를 구성하는 자 노드(children nodes)가 어서트된 것이 없다는 것을 확인하기 위해 A1 노드(504)가 "0"임을 체크하기만 하면 된다. 후속의 어드레스/인덱스 비트는 이러한 추론적 절차를 사용하여 구성될 수 있다. 그래서 4-비트 우선권 인덱스 인코더는 이항의 인덱스 비트 (6)-(9)에 따른 15-비트 입력에 대해 발생될 수 있다.
Figure 112006084915793-PCT00001
그래서 하드웨어 기반의 우선권 인코더를 발생함에 있어서, 상기 식들로 표시된 바와 같은 2진 트리의 다양한 노드의 입력들을 결합하는데 추가의 로직이 사용된다. 예를 들어, 식 (7)에 따른 우선권 인덱스의 비트 2를 생성하기 위한 로직은 식 (2)에 따른 단순한 인코더의 로직과는 달리, A1 노드(504)가 "0"임을 입증하기 위한 추가의 로직이 더해진다.
본 발명의 일실시예에 따르면, 어드레스 인코더용 리소스를 최소화하기 위해, 상기 식들 중 어떤 식에 의해서도 사용되지 않는 OR 트리의 노드는 삭제한다. 그래서 도 7a에 도시된 예에서, 트리(510, 512, 514 및 518)의 엣지 상의 모든 노드들은 메인 루트 노드(510)의 시작과 함께 제거된다. 출력 인코딩 어드레스 비트에서의 레지스터에 따라, 임계 경로(critical path)는 (log n)-1 게이트 지연을 가지며, 여기서 n은 입력 핀의 수이다. 패턴 검색 구조가 모든 게이트 후에 파이프라인화 되기 때문에, 이러한 긴 게이트 체인이 임계 경로가 된다. 대부분의 FPGA에서 각각의 룩-업 테이블은 통상적으로 D-플립 플롭과 쌍을 이룬다. 그래서 인코더의 하드웨어 설계는 추가의 파이프라인 레지스터를 삽입할 수 있다.
도 7b는 대부분의 D-플립 플롭에 뒤를 이어 2-비트 입력 게이트가 1-4 입력 게이트로 대체되어 있는 파이프라인화된 OR 트리를 도시한다. 인덱스 식을 실행하는 로직 역시 파이프라인화되어 파이프라인화된 레지스터들에서 혹은 레지스터들 사이에서 단일의 게이트를 유지한다.
본 발명의 다른 실시예에 따르면, 상기 향상된 딥 패킷 필터 시스템(60)을 수행하는 로직 영역은 예를 들어 FPGA 칩에 포함된 리드-온리 메모리(ROM)와 같은 내장형 메모리를 사용하는 메모리 기반의 패턴 검색 엔진으로서 패턴 검색 엔진(104)을 구현함으로써 축소된다.
도 8은 본 발명의 일실시예에 따른 메모리 기반의 패턴 검색 엔진(104d)의 블록도이다. 도 8에 도시된 바와 같이, 이하에서 프리픽스라 칭할 인입 데이터(600)의 개시부는, 이하에 서픽스라 칭할, 상기 인입 데이터의 나머지와의 완전한 비교를 하기 전에, 프리픽스 검색 엔진(602)에 의해 사전 심사된다. 프리픽스 검색 엔진(602)은 프리픽스 부분과 사전 정의된 프리픽스 패턴을 일치시킨다. 복수의 바이트 입력을 가진 데이터 경로에 있어서, 프리픽스 검색 엔진(602) 역시 일치 프리픽스의 얼라인먼트 정보를 발생한다. 그런 다음 일치 프리픽스 패턴의 인덱스는 도 9에 도시된 바와 같이, 상이한 서픽스 패턴이 저장되어 있는 내장형 메모리(604)의 어드레스에 직접 매핑된다. 인입 데이터 및 서픽스는 정확한 일치가 일어났는지를 판단하기 위해 해당 얼라인먼트에서의 비교기(606) 모듈과 비교된다.
메모리 기반의 설계가 정확하게 기능하도록 하기 위해, 룰 세트 내의 패턴이 분할되어 하나 이상의 ROM에 매핑된다. 본 발명의 일실시예에 따르면, 패턴은 각각의 분할에서의 프리픽스가 고유하게 되도록 분할된다. 이와 관련하여, 상이한 길이 프리픽스의 경우, 분할에서 긴 프리픽스의 말미(tail end)가 짧은 프리픽스와 일치하지 않도록 패턴이 분할된다. 그렇지 않으면, 하나 이상의 프리픽스가 일어날 수 있다. 하나 이상의 프리픽스 검출이 존재하면, 프리픽스 검색 엔진(602)은 어느 서픽스를 메모리로부터 읽어낼지를 결정하지 않는다.
프리픽스 폭은 어떠한 사이즈이어도 된다. 그렇지만, 본 발명의 일실시예에 따르면, 프리픽스를, 예를 들어 4 바이트와 같은, 입력 버스의 폭과 같아지도록 설정한다. 모든 클록이 서픽스를 검색하기 위한 유효 인덱스를 잠재적으로 생성할 수 있기 때문에, 서픽스 비교는 기껏 주기당 1회 행해진다. 그래서 2개의 상이한 얼라인먼트를 생성할 수 있는 임의의 프리픽스가 개별적인 ROM에 할당된다. 1 바이트-입력을 갖는 데이터 경로에 있어서, 상기 데이터가 항상 제로 얼라인먼트에 있기 때문에, 이러한 제약은 어떠한 문제도 일으키지 않는다. 그렇지만, 데이터 경로는 복수 바이트의 입력을 제공하면 소정의 프리픽스가 2개의 상이한 얼라인먼트를 일치시킬 수 있다.
예를 들어, 4-바이트 데이터 경로에서, 프리픽스 검색 엔진(602)은 프리픽스 "ABAB"로 구성되는 것으로 가정한다. 상기 인입 데이터(600)가 "ABAB"로 시작하였다면, 프리픽스용 얼라인먼트는 0 또는 2 중 어느 하나가 된다. 이것은 제2 서브-스트링 "AB"가 패턴의 실제 개시점이 될 수 있기 때문이다. 그러므로 데이터 경로 및 프리픽스의 길이에 의존하여, 각각의 사이클에서 1 인덱스 검출까지만이 허용되도록 상기 세트 내의 모든 패턴을 검사하도록 조건이 정해진다.
고정 4-바이트 프리픽스를 갖는 4-바이트 데이터 경로에 있어서, 분할 내의 모든 프리픽스는 이하의 3가지 조건을 충족하도록 구성된다. (1) 프리픽스의 바이트 1은 바이트 4와 같지 않다. (2) 바이트 1 내지 2로부터의 서브스트링은 바이트 3 내지 4로부터의 서브스트링과 같지 않다. 그리고 (3) 바이트 1 내지 3으로부터의 서브스트링은 바이트 2 내지 4로부터의 서브스트링과 같지 않다.
도 10은 본 발명의 일실시예에 따른 메모리 기반의 패턴 검색 엔진(104d)에 포함된 프리픽스 검색 엔진(602)의 상세 블록도이다. 프리픽스 검색 엔진(602)은 도 4-6에 도시된 바와 같이 본 발명에 따라 디코더 기반의 패턴 검색 엔진으로서 구현되는 복수의 검색 모듈(610a-610n)을 포함한다. 각각의 검색 모듈(610a-610n)은 사전 결정된 프리픽스 패턴의 상이한 바이트 얼라인먼트에서의 입력 데이터의 프리픽스 부분을 비교한다. 각각의 검색 모듈(610a-610n)에 결합된 얼라인먼트 모듈(612a-612n)은 일치 프리픽스 패턴의 얼라인먼트를 표시한다. 그런 다음 다양한 얼라인먼트 모듈(612a-612n)로부터의 일치 신호가 인코딩되어 얼라인먼트 정보를 제공한다. 게다가, 어드레스 디코더(614)는 다양한 얼라인먼트 모듈(612a-612n)로부터의 일치 신호에 기초하여 서픽스 인덱스를 발생한다. 어드레스 인코더(614)는 예를 들어 도 3의 어드레스 인코더(108)와 유사하다. 프리픽스는 전술한 바와 같이 분할되기 때문에, 소정의 서브세트 내의 하나의 프리픽스만이 클록 사이클마다 검출된다. 따라서, 얼라인먼트 및 어드레스 인코딩은 일치 패턴의 우선권을 고려하지 않으며 이에 따라 로직은 단순하고 간결하게 수행될 수 있다.
본 발명의 일실시예에 따르면, 메모리(604)는 칩에 내장되어 상기 향상된 딥 패킷 필터 시스템(60)을 구현하는데 사용된다. 예를 들어, 메모리(604)는 FPGA 칩에 제공된 ROM이다. 일실시예에 따르면, 메모리의 폭은 세트 내에서 가장 긴 서픽스 엔트리만큼이나 넓게 되도록 고정된다. 서픽스의 다양한 길이로 인해, 이러한 고정된 폭을 갖는 메모리 활용은 비효율적이 될 수 있다.
도 11은 본 발명의 일실시예에 따라 메모리 활용을 향상시키는 메커니즘을 도시한다. 도 11에 도시된 바와 같이, 메모리(604a)는 분류 방식에 따라, 가변 길이의 N 서픽스 엔트리를 저장한다. 그렇지만, 메모리(604a)의 활용은 메모리의 공간의 약 절반 정도가 사용되지 않은 채 남아 있기 때문에 비효율적이다. 본 발명의 일실시예에 따르면, 그 사용되지 않는 공간은 유효 데이터로 채움으로써 메모리 공간을 더욱 효율적으로 사용할 수 있다. 이와 관련해서, 저장되어야 할 서픽스 패턴은 그 길이에 따라 제일 먼저 분류된다. 그런 다음, 모든 짝수 엔트리가 메모리의 제1 엔트리로부터 최종 엔트리로 순차 저장된다. 그런 다음, 모든 홀수 엔트리가 비트 시퀀스와 관련해서 플리핑되고 메모리(604b)의 콘텐츠에 도시된 바와 같이 최종 엔트리로부터 제1 엔트리로 저장된다. 이 처리는 홀수 엔트리를 트랜스포스된 메모리(transposed memory)에 저장된다.
재배열된 메모리 엔트리를 정확하게 판독하기 위해, 소량의 래퍼 로직(wrapper logic)이 사용된다. 도 12는 본 발명의 일실시예에 따른 래퍼 로직의 개략적인 블록도이다. 메모리의 어드레스 입력에서, 최하위 비트(most least bit)(LSB)(700)를 제외한, 모든 비트를 메모리(604)에 통과시킨다. LSB(700)를 사용하여 어드레스가 홀수인지 짝수인지를 판정한다. 어드레스가 짝수이면, 어드레스 비트의 나머지는 물리적 어드레스로서 불변인 채 통과된다. 그렇지 않으면, 어드레스 비트는 인터버(702)에서 반전된 다음 메모리(604)에 통과된다. 마찬가지로, 메모리(604)의 출력은 선택 핀에 접속된 LSB를 갖는 2-1 멀티플렉서(704)에 접속된다. LSB가 짝수 엔트리를 표시할 때, 정상적인 출력(706)이 선택된다. 홀수 엔트리가 표시되면, 역전된 비트 순서(708)를 갖는 출력이 선택된다.
도 13은 본 발명의 일실시예에 따른 비교기 모듈(606)의 개략적인 블록도이다. 서픽스 패턴이 메모리(604)로부터 판독하면, 인입 패킷 데이터(802)는 파이프라인화되어 비교기 모듈에 의해 제공된 시프트(804)에 의해 적절한 바이트 얼라인먼트로 시프트된다. 파이프라인 스테이지의 수는 가장 긴 패턴의 길이와 ROM 대기 시간(ROM latencies)에 기초하여 결정된다.
시프터는 단일 레벨의 멀티플렉서에 의해 구현되거나, 입력 버스의 폭에 의존하는 복수의 레벨로 파이프라인화 될 수 있다. 하나의 바이트 데이터 경로만이 단일의 얼라인먼트를 가지므로 시프터는 필요하지 않다.
서픽스 패턴 이외에, 메모리(604)는 또한 각각의 패턴의 길이를 저장하고 이러한 길이(808)를 비트-와이즈 비교기(806)에 제공한다. 상기 길이는 비트-와이즈 비교기(806)에 의해 디코딩되어 그 표시된 길이의 비교기를 인에이블링시킬뿐이다. 비트-와이즈 비교기(806)는 그런 다음 상기 수신된 서픽스 패턴(810)과 바이트-얼라인 패킷 데이터를 비교한다. 데이터가 서픽스 패턴을 일치시키면, 서픽스 메모리 어드레스로서 사용되는 프리픽스 검색 엔진(602)에 의해 생성된 프리픽스 인덱스가 출력으로서 송신되어 상기 검출된 패턴을 식별하게 된다. 인입 데이터 패킷은 또한 차단되거나, 및/또는 의심이 가는 패킷을 사용자에게 경고하게 된다.
본 발명의 일실시예에 따르면, 비트-와이즈(806)는 1-바이트 XOR 비교기로서 구현된다. 2개의 룩-업 테이블로 구성된 도 4-6의 디코더 기반의 설계에서 사용된 디코더들과는 달리, XOR 비교기는 8개의 룩-업 테이블로 구성된다. 그렇지만, 1세트의 비교기만이 ROM에 저장된 모든 패턴에 의해 사용되며, 바이트당 평균 게이트는 풀 디코더 실행(full decoder implementation)에 미치지 못할 수 있다.
본 발명의 일실시예에 따르면, 상기 향상된 딥 패킷 필터 시스템(60)은 도 4-6의 디코더 기반의 설계뿐만 아니라 도 8-13의 메모리 기반의 설계 모두를 통합한 것이다. 도 14는 본 발명의 일실시예에 따라 양자의 설계를 결합하는 패턴 검색 엔진(104e)의 블록도이다. 메모리에 저장된 패턴을 위한 프리픽스가 본질적으로 짧은 패턴이기 때문에, 상기 패턴들 중 나머지와 결합하여 유효 키워드 트리(900)를 생성할 수 있다. 이때, 짧은 패턴에 있어서, 디코더 기반의 검색 엔진(906)은 비교를 수행하고 어드레스 인코더(902)에 일치 표시를 송신하며, 상기 어드레스 인코더(902)는 도 3의 어드레스 인코더(108)와 유사한 것이다. 어드레스 인코더(902)는 그런 다음 해당 패턴 ID를 출력한다.
더 긴 패턴에 있어서, 디코더 기반의 검색 엔진(908)은 프리픽스의 비교를 수행하고, 출력 인덱스는 메모리 기반의 검색 엔진(904)에서 저장된 서픽스를 선택하는데 사용된다. 그런 다음 인덱스는 해당 패턴 ID로서 출력된다.
대량의 패턴이 메모리 내에 저장되어 있기 때문에, 도 14의 결합된 설계는 디코더 기반의 설계보다 게이트를 덜 필요로 한다. 그 결과, 풀 필터는 성공적으로 설치되어 작은 스파탄(Spartan) 3 - XC3S400 디바이스로 루팅된다. 실험 동안, 시스템은 총 4,415개의 룩 업 테이블을 사용하였고 XC3S400에서는 200MHz의 클록 레이트를 XC3S1000 디바이스에서는 237MHz를 사용하였다. XC3S1000 디바이스에서의 속도 증가는 더 큰 FPGA에서의 구성성분을 설치함에 있어서 더 높은 자유도를 주었기 때문이다.
패턴 검출이 낮은 경우에는 패턴을 식별할 필요 없이 일치 신호를 충분히 표시할 수 있다. 이때 소프트웨어는 어떤 패턴이 검출되었는지를 판단하기 위해 데이터베이스를 온전히 검색한다. 이러한 설계에 있어서 모든 인덱스 인코더(902)는 OR 게이트의 트리로 대체되어 게이트의 양을 줄일 수 있다. 그렇지만, 효과적인 인덱스 인코더 설계로 인해, 755개의 룩 업 테이블만이 디코더 기반의 설계로부터 재생되고 65개의 룩-업 테이블은 메모리 기반의 실행에 재생된다.
소정의 예시적인 실시예를 전술한 바와 같이 첨부된 도면을 참조하여 상세히 설명하였지만, 이러한 실시예는 단순히 예시일 뿐 본 발명을 제한하려는 것이 아님은 물론이다. 특히, 본 발명은 다양한 시스템 및 프로세스에 적용될 수 있다는 것을 이해해야 한다. 그러므로 본 발명의 범주를 벗어남이 없이, 다양한 변형 및 다른 실시예를 전술한 본 발명의 실시예에 대해 적용할 수 있다는 것을 인식해야 한다. 예를 들어, 동적 패턴 검색 엔진은 데이터 패킷의 페이로드 부분을 검색하는 것으로 설명하였지만, 당업자는 페이로드 부분 외에, 또는 페이로드 부분 대신에, 패킷의 다른 부분을 검색하도록 검색 엔진을 구성할 수도 있다는 것을 인식해야만 한다.
전술한 바에서 본 발명은 설명된 특정한 실시예나 배열에 제한되지 않으며 오히려 첨부된 청구의 범위 및 그 등가물에 의해 정의된 바와 같은 본 발명의 범주 및 정신 내에 부합하는 모든 변형, 적응 또는 수정을 망라하도록 의도된 것이다.

Claims (20)

  1. 딥 패킷 필터에 있어서,
    인입 데이터의 제1 비헤더부(first non-header portion)와 프리픽스 패턴을 비교하도록 구성된 프리픽스 검색 로직;
    상기 프리픽스 검색 로직에 결합되어 있고, 복수의 서픽스 패턴을 저장하는 메모리;
    상기 인입 데이터의 제1 비헤더부(non-header portion)와 상기 프리픽스 패턴과의 일치에 기초하여 서픽스 인덱스를 생성하는 수단; 및
    상기 인입 데이터의 제2 비헤더부와, 상기 생성된 서픽스 인덱스에 의해 식별된 서픽스 패턴을 비교하도록 구성된 비교기 로직
    을 포함하며,
    상기 인입 데이터는, 상기 제2 비헤더부의 비교에 기초하여, 통과할 수 있게 되거나 통과할 수 없게 되는, 딥 패킷 필터.
  2. 제1항에 있어서,
    상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부와 복수의 프리픽스 패턴을 동시에 비교하는, 딥 패킷 필터.
  3. 제2항에 있어서,
    상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부의 복수의 바이트(byte)와 상기 복수의 프리픽스 패턴 각각의 복수의 바이트를 동시에 비교하는, 딥 패킷 필터.
  4. 제3항에 있어서,
    상기 프리픽스 검색 로직은 상기 인입 데이터의 상기 제1 비헤더부의 복수의 바이트와 상기 복수의 프리픽스 패턴 각각의 상이한 바이트 얼라인먼트(alignment)를 동시에 비교하는, 딥 패킷 필터.
  5. 제1항에 있어서,
    상기 프리픽스 검색 로직은 상기 프리픽스 패턴의 특정한 서브스트링(substring)을 검출하기 위한 일련의 디코더를 포함하는, 딥 패킷 필터.
  6. 제5항에 있어서,
    상기 특정한 서브스트링을 검출하기 위한 일련의 디코더는, 상기 특정한 서브스트링을 포함하는 상이한 프리픽스 패턴을 검출하도록 구성된 복수의 프리픽스 검색 로직 유닛에 의해 공유되는, 딥 패킷 필터.
  7. 제1항에 있어서,
    상기 프리픽스 검색 로직, 상기 메모리, 상기 서픽스 인덱스 생성 수단, 및 상기 비교기 로직은 단일의 현장 프로그램 가능 게이트 어레이(single field-programmable gate array) 상에서 구현되는, 딥 패킷 필터.
  8. 제7항에 있어서,
    상기 메모리는 분류된 서픽스 패턴의 목록을 저장하며,
    상기 목록의 짝수 엔트리의 패턴은 상기 메모리의 제1 엔트리로부터 최종 엔트리로 저장되며, 상기 목록의 홀수 엔트리의 패턴은 상기 메모리의 최종 엔트리로부터 제1 엔트리로 저장되는, 딥 패킷 필터.
  9. 제1항에 있어서,
    상기 서픽스 인덱스를 생성하는 수단은, 상기 프리픽스 검색 로직의 출력에 결합된 OR 게이트의 2진 트리(binary tree)로부터 도출된 논리식에 기초하여 상기 서픽스 인덱스의 각각의 비트를 생성하는 수단을 포함하는, 딥 패킷 필터.
  10. 제1항에 있어서,
    상기 프리픽스 검색 로직은 바이트 얼라인먼트를 표시하며, 상기 비교기 로직은 상기 표시된 바이트 얼라인먼트에 따라 상기 인입 데이터의 상기 제2 비헤더부를 시프트시키는 시프터를 포함하는, 딥 패킷 필터.
  11. 제1항에 있어서,
    상기 인입 데이터의 상기 제1 비헤더부 및 상기 제2 비헤더부는 상기 인입 데이터의 페이로드부(payload portion)인, 딥 패킷 필터.
  12. 딥 패킷 필터링 방법에 있어서,
    복수의 패턴을 프리픽스 부분과 서픽스 부분으로 분할하는 단계;
    상기 복수의 패턴 각각의 상기 서픽스 부분을 메모리에 저장하는 단계;
    인입 데이터의 제1 비헤더부의 적어도 한 부분과 상기 복수의 패턴 각각의 프리픽스 부분의 적어도 한 부분을 동시에 비교하는 단계;
    상기 인입 데이터의 상기 제1 비헤더부와 특정한 패턴의 프리픽스 부분과의 일치에 기초하여 서픽스 인덱스를 생성하는 단계;
    상기 서픽스 인덱스에 기초하여 상기 메모리에 저장된 상기 특정한 패턴의 서픽스 부분을 식별하는 단계;
    상기 인입 데이터의 제2 비헤더부와 상기 식별된 서픽스 부분을 비교하는 단계; 및
    상기 제2 비헤더부와 상기 식별된 서픽스 부분과의 비교에 기초하여, 상기 인입 데이터를 전송하거나 전송하지 않는 단계
    를 포함하는 딥 패킷 필터링 방법.
  13. 제12항에 있어서,
    상기 동시에 비교하는 단계는, 상기 인입 데이터의 상기 제1 비헤더부의 복 수의 바이트와 상기 복수의 프리픽스 패턴 각각의 프리픽스 부분의 상이한 바이트 얼라인먼트를 동시에 비교하는 단계를 포함하는, 딥 패킷 필터링 방법.
  14. 제12항에 있어서,
    상기 비교하는 단계는 특정한 서브스트링을 검출하기 위한 일련의 디코더에 의해 수행되는, 딥 패킷 필터링 방법.
  15. 제14항에 있어서,
    상기 특정한 서브스트링을 검출하기 위한 일련의 디코더는, 상기 특정한 서브스트링을 포함하는 복수의 패턴의 상이한 프리픽스 부분을 검출하도록 구성된 복수의 프리픽스 검색 로직 유닛에 의해 공유되는, 딥 패킷 필터링 방법.
  16. 제12항에 있어서,
    상기 메모리는 현장 프로그램 가능 게이트 어레이(FPGA) 내에 내장된 리드 온리 메모리(read-only memory)인, 딥 패킷 필터링 방법.
  17. 제12항에 있어서,
    상기 메모리는 상기 복수의 패턴의 분류된 서픽스 부분의 목록을 저장하며,
    상기 목록의 짝수 엔트리에 열거된 서픽스 부분은 상기 메모리의 제1 엔트리로부터 최종 엔트리로 저장되며, 상기 목록의 홀수 엔트리에 열거된 서픽스 패턴은 상기 메모리의 최종 엔트리로부터 제1 엔트리로 저장되는, 딥 패킷 필터링 방법.
  18. 제12항에 있어서,
    상기 서픽스 인덱스를 생성하는 단계는, 상기 인입 데이터의 제1 비헤더부의 적어도 한 부분과 상기 복수의 패턴 각각의 프리픽스 부분의 적어도 한 부분을 동시에 비교하는 프리픽스 검색 로직의 출력에 결합된 OR 게이트의 2진 트리(binary tree)로부터 도출된 논리식에 기초하여 상기 서픽스 인덱스의 각각의 비트를 생성하는 단계를 포함하는, 딥 패킷 필터링 방법.
  19. 제12항에 있어서,
    상기 인입 데이터의 상기 제1 비헤더부와 상기 특정한 패턴의 상기 프리픽스 부분과의 일치와 연관된 바이트 얼라인먼트를 식별하는 단계; 및
    상기 식별된 바이트 얼라인먼트에 따라 상기 인입 데이터의 상기 제2 헤더부를 시프트시키는 단계
    를 더 포함하는 딥 패킷 필터링 방법.
  20. 제12항에 있어서,
    상기 인입 데이터의 상기 제1 비헤더부 및 상기 제2 비헤더부는 상기 인입 데이터의 페이로드부인, 딥 패킷 필터링 방법.
KR1020067024324A 2004-04-19 2005-04-19 딥 패킷 필터링을 위한 프로그램 가능 하드웨어 KR100828038B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56343504P 2004-04-19 2004-04-19
US60/563,435 2004-04-19

Publications (2)

Publication Number Publication Date
KR20070010064A true KR20070010064A (ko) 2007-01-19
KR100828038B1 KR100828038B1 (ko) 2008-05-08

Family

ID=35197644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067024324A KR100828038B1 (ko) 2004-04-19 2005-04-19 딥 패킷 필터링을 위한 프로그램 가능 하드웨어

Country Status (6)

Country Link
US (1) US7519995B2 (ko)
EP (1) EP1738531B1 (ko)
JP (1) JP4755175B2 (ko)
KR (1) KR100828038B1 (ko)
CN (1) CN101401090B (ko)
WO (1) WO2005104443A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101243298B1 (ko) * 2008-12-02 2013-03-13 한국전자통신연구원 전자 감시 시스템 및 방법

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US7664879B2 (en) * 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US8082304B2 (en) * 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US8266327B2 (en) * 2005-06-21 2012-09-11 Cisco Technology, Inc. Identity brokering in a network element
KR100981500B1 (ko) * 2006-02-07 2010-09-10 삼성전자주식회사 저밀도 패러티 검사 부호 기반의 하이브리드 재전송 방법
US7788719B1 (en) * 2006-03-23 2010-08-31 Symantec Corporation Graph buffering
US20070226483A1 (en) * 2006-03-24 2007-09-27 Dennis Cox System and method for storing and/or transmitting emulated network flows
US20090064287A1 (en) 2007-08-28 2009-03-05 Rohati Systems, Inc. Application protection architecture with triangulated authorization
US8667556B2 (en) 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
US8677453B2 (en) 2008-05-19 2014-03-18 Cisco Technology, Inc. Highly parallel evaluation of XACML policies
US8094560B2 (en) 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US20100212010A1 (en) * 2009-02-18 2010-08-19 Stringer John D Systems and methods that detect sensitive data leakages from applications
CN101599963B (zh) * 2009-06-10 2012-07-04 电子科技大学 网络疑似威胁信息筛选器及筛选处理方法
CN102576392B (zh) * 2009-10-31 2014-12-17 惠普发展公司,有限责任合伙企业 用于恶意代码检测的设备和方法及恶意代码检测器
TWI424445B (zh) * 2009-12-29 2014-01-21 Macronix Int Co Ltd 指令解碼電路及其方法
KR101201622B1 (ko) * 2010-08-19 2012-11-14 삼성에스디에스 주식회사 보안 기능을 가진 시스템 온 칩 및 이를 이용한 디바이스 및 스캔 방법
CN102014010B (zh) * 2010-12-31 2013-04-03 北京网康科技有限公司 一种网络行为管理系统及方法
US8458796B2 (en) * 2011-03-08 2013-06-04 Hewlett-Packard Development Company, L.P. Methods and systems for full pattern matching in hardware
JP5667009B2 (ja) * 2011-08-08 2015-02-12 日本電信電話株式会社 ルータ装置及びデータ解析方法
EP2813036A4 (en) * 2012-02-07 2015-10-07 Oricane Ab CLASSIFICATION ENGINE FOR CLASSIFICATION OF DATA PACKETS
US9154461B2 (en) 2012-05-16 2015-10-06 The Keyw Corporation Packet capture deep packet inspection sensor
US10824952B2 (en) 2014-09-22 2020-11-03 International Business Machines Corporation Reconfigurable array processor for pattern matching
US9891912B2 (en) 2014-10-31 2018-02-13 International Business Machines Corporation Comparison-based sort in a reconfigurable array processor having multiple processing elements for sorting array elements
JP6711000B2 (ja) * 2016-02-12 2020-06-17 日本電気株式会社 情報処理装置、ウィルス検出方法及びプログラム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2880199B2 (ja) * 1989-10-18 1999-04-05 株式会社日立製作所 記号列検索方法および検索装置
JPH04169973A (ja) * 1990-11-02 1992-06-17 Hitachi Ltd 記号列検索方法および装置
JPH05282362A (ja) * 1992-03-31 1993-10-29 Sharp Corp データ検索回路
JPH07235878A (ja) * 1993-12-28 1995-09-05 Matsushita Electric Ind Co Ltd 可変長復号化器
JP3540109B2 (ja) * 1996-12-24 2004-07-07 富士通株式会社 データ圧縮方法及び装置
JPH11232279A (ja) * 1998-02-12 1999-08-27 Kawasaki Steel Corp 分割探索方法及び装置
JP3494028B2 (ja) * 1998-09-04 2004-02-03 三菱電機株式会社 検索方式
JP2001117929A (ja) * 1999-10-15 2001-04-27 Toshiba Corp データ検索方法、データ整列方法およびデータ検索装置
JP2001168911A (ja) * 1999-12-09 2001-06-22 Hitachi Cable Ltd パケットフィルタ装置
US6781972B1 (en) * 2000-03-31 2004-08-24 Lucent Technologies Inc. Method and system for subscriber-configurable communications service
US6697363B1 (en) * 2000-06-28 2004-02-24 Alcatel Canada Inc. Method and apparatus for longest matching prefix determination in a communication network
JP2002016638A (ja) * 2000-06-29 2002-01-18 Mitsubishi Electric Corp ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体
US6693906B1 (en) * 2000-07-17 2004-02-17 Advanced Micro Devices, Inc. Apparatus and method for buffer-free evaluation of packet data bytes with multiple min terms
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
WO2002101516A2 (en) * 2001-06-13 2002-12-19 Intruvert Networks, Inc. Method and apparatus for distributed network security
AU2002220130A1 (en) * 2001-09-12 2003-03-24 Raqia Networks, Inc. High speed data stream pattern recognition
JP2003099339A (ja) * 2001-09-25 2003-04-04 Toshiba Corp 侵入検知・防御装置及びプログラム
JP3829702B2 (ja) * 2001-11-29 2006-10-04 横河電機株式会社 フレーム同期装置及び方法
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
US7134143B2 (en) * 2003-02-04 2006-11-07 Stellenberg Gerald S Method and apparatus for data packet pattern matching
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
JP2004164435A (ja) * 2002-11-14 2004-06-10 Nec Software Kyushu Ltd 接続要求中継装置、フィルタリングシステム、方法、及びプログラム
JP2004192279A (ja) * 2002-12-10 2004-07-08 Matsushita Electric Ind Co Ltd Url管理装置及びurl管理方法並びにurl管理プログラム
US7584303B2 (en) * 2002-12-20 2009-09-01 Forte 10 Networks, Inc. Lossless, stateful, real-time pattern matching with deterministic memory resources
US7444515B2 (en) * 2003-08-14 2008-10-28 Washington University Method and apparatus for detecting predefined signatures in packet payload using Bloom filters

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101243298B1 (ko) * 2008-12-02 2013-03-13 한국전자통신연구원 전자 감시 시스템 및 방법

Also Published As

Publication number Publication date
JP4755175B2 (ja) 2011-08-24
EP1738531A2 (en) 2007-01-03
US20080047008A1 (en) 2008-02-21
CN101401090A (zh) 2009-04-01
JP2007537626A (ja) 2007-12-20
US7519995B2 (en) 2009-04-14
KR100828038B1 (ko) 2008-05-08
CN101401090B (zh) 2010-08-25
WO2005104443A2 (en) 2005-11-03
EP1738531A4 (en) 2011-06-29
EP1738531B1 (en) 2014-06-11
WO2005104443A3 (en) 2008-10-23

Similar Documents

Publication Publication Date Title
KR100828038B1 (ko) 딥 패킷 필터링을 위한 프로그램 가능 하드웨어
US10949641B2 (en) Fast signature scan
US7805460B2 (en) Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string
US8866644B2 (en) Detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings using a hierarchical data structure
KR101334583B1 (ko) 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치
US8484147B2 (en) Pattern matching
Le et al. A memory-efficient and modular approach for large-scale string pattern matching
WO2007005704A1 (en) Multi-pattern packet content inspection mechanisms employing tagged values
KR20070087198A (ko) 네트워크 인터페이스 및 방화벽 장치
US7805393B1 (en) Assigning encoded state values to a search tree according to failure chains
Yusuf et al. Bitwise optimised CAM for network intrusion detection systems
US7610269B1 (en) Method and apparatus for constructing a failure tree from a search tree
Cho et al. Deep network packet filter design for reconfigurable devices
Guinde et al. Efficient hardware support for pattern matching in network intrusion detection
Weng et al. Deep packet pre-filtering and finite state encoding for adaptive intrusion detection system
Fide et al. A survey of string matching approaches in hardware
Cho et al. Programmable hardware for deep packet filtering on a large signature set
Tashev et al. Application of the Aho-Corasick algorithm to create a network intrusion detection system
Nourani et al. Bloom filter accelerator for string matching
Tashev et al. Comparative performance analysis the Aho-Corasick algorithm for developing a network detection system
Korenek et al. Intrusion detection system intended for multigigabit networks
Chang et al. Improved TCAM-based pre-filtering for network intrusion detection systems
Sheu et al. A novel hierarchical matching algorithm for intrusion detection systems
Tripp An Instrusion Detection System for Gigabit Networks
CHAND et al. Efficient Way of Detecting an Intrusion using Snort Rule Based Technique

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130410

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140409

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160412

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170414

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190412

Year of fee payment: 12