KR101276796B1 - 패턴 매칭 장치 및 방법 - Google Patents

패턴 매칭 장치 및 방법 Download PDF

Info

Publication number
KR101276796B1
KR101276796B1 KR1020090079439A KR20090079439A KR101276796B1 KR 101276796 B1 KR101276796 B1 KR 101276796B1 KR 1020090079439 A KR1020090079439 A KR 1020090079439A KR 20090079439 A KR20090079439 A KR 20090079439A KR 101276796 B1 KR101276796 B1 KR 101276796B1
Authority
KR
South Korea
Prior art keywords
pattern
input
output terminal
terminal
input terminal
Prior art date
Application number
KR1020090079439A
Other languages
English (en)
Other versions
KR20100063640A (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 한국전자통신연구원
Priority to US12/629,478 priority Critical patent/US8463988B2/en
Publication of KR20100063640A publication Critical patent/KR20100063640A/ko
Application granted granted Critical
Publication of KR101276796B1 publication Critical patent/KR101276796B1/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/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

패턴 매칭 장치는 한 바이트씩 입력되는 데이터 스트림 내에서 검색하고자 하는 패턴에 포함되는 문자열을 검출하고, 검출한 문자열들로 구성될 수 있는 정규 표현들 중에 검색하고자 하는 패턴을 나타내는 정규 표현을 검출한다.
패턴 매칭, 문자열, CAM(Content Addressable Memory), 연쇄 회로

Description

패턴 매칭 장치 및 방법{APPARATUS AND METHOD FOR MATCHING PATTERN}
본 발명은 패턴 매칭 장치 및 방법에 관한 것으로, 특히 통신 네트워크 장비 또는 시스템에서 고속으로 처리되는 데이터 패킷에 대한 패턴 매칭 장치 및 방법에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-S-001-01, 과제명: WiBro 네트워크 신뢰성 확보 및 위치인지 기술 개발].
통신 네트워크는 진화하고 수없이 많은 서비스들을 새로이 창출하고 있으며, 사용자의 요구는 갈수록 다양해지고 있다. 이에 따라 네트워크에는 수없이 많은 정보가 생성되고 소멸되며 저장되기도 한다. 이러한 정보 중에는 보안이 필요한 것들이 있으며, 이를 위한 기술 또한 발전되고 있다. 최근 네트워크 상에는 정보 보안을 위협하는 요소들이 복합적이고 다양화된 방법으로 나타나고 있다. 또한, 네트워크에 접속해 있는 네트워크 장비 및 통신 단말에는 이러한 위협 요소를 감지하고 차단하기 위한 기능들이 다양한 형태로 제공되고 있다. 네트워크를 위협하는 요소들은 네트워크를 통해 전달되는 패킷의 모든 계층에 걸쳐 나타날 수 있다. 특히, 응용 계층에 나타나는 요소들을 감지하기 위해서는 그 데이터를 처음부터 끝까지 모두 분석해야만 한다.
응용 계층의 데이터로부터 특정 정보를 찾기 위해 패턴 매칭 기술이 활용된다. 즉, 응용 계층의 데이터를 검색해서 찾고자 하는 특정 정보와 일치하는 패턴이 존재하는지 여부를 판단하는 것이다. 찾고자 하는 특정 정보의 위치가 정해져 있는 것이 아니므로 매우 빠른 시간 내에 검색이 끝날 수도 있고 경우에 따라서는 데이터를 끝까지 검색해야 할 수도 있다.
패턴 매칭 기술은 크게 두 가지 형태로 분류할 수 있다. 첫 번째로는 다양한 형태의 중앙 처리 장치와 메모리를 활용하여 소프트웨어적으로 패턴을 찾는 기술이 있다. 이 기술은 알고리즘 설계가 용이하고, 그 알고리즘을 소프트웨어로 구현함에 있어서도 매우 편리하다. 그러나, 중앙 처리 장치와 메모리의 데이터 처리 속도에 의존적이며 데이터를 처리함에 있어서 병렬 처리가 용이하지 않아 데이터를 보다 고속으로 처리함에 있어서는 어느 정도 한계가 있다. 이러한 한계를 극복하기 위해, 두 번째로는 CAM(Content Addressable Memory)을 활용하여 하드웨어적으로 패턴을 찾는 기술이 있다. 이 기술은 CAM의 병렬 처리 기능을 활용한 것으로, CAM은 다수의 엔트리를 포함하고 있다. 각 엔트리는 찾고자 하는 데이터를 저장할 수 있는 메모리와 그 메모리에 저장되어 있는 데이터와 CAM에 입력되는 데이터를 비교할 수 있는 비교기를 포함하고 있다. 또한, CAM에 입력되는 데이터는 CAM에 포함되는 모든 엔트리에 저장되어 있는 데이터와 동시에 비교된다. CAM의 이러한 기능을 활용하면, 응용 계층의 데이터로부터 특정 정보를 찾아냄에 있어서 보다 고속으로 그 데이터를 처리할 수가 있다.
일반적으로, 패턴 매칭 장치는 단순한 문자열만을 찾는 것에 그치지 않고, 문자열들의 조합으로 발생될 수 있는 패턴을 찾기 위한 기술들을 포함하고 있다. 그 대표적인 것이 정규 표현 매칭(Regular Expression Matching) 기술이다. 정규 표현은 특정 문자의 집합 또는 문자열을 기호로 바꾸어 놓는 방법으로, 문자열의 집합을 정확하게 표현하기 위해 쓰이는 표현 규칙, 언어의 문법 정의나 검색해야 할 문자열의 지정에 쓰인다.
종래 기술로서, 단일 CAM으로 그 엔트리에 포함된 문자열을 찾는 문자열 매칭과 검출된 문자열로 구성되는 정규 표현을 찾는 정규 표현 매칭을 수행하는 패턴 매칭 장치의 경우, 이 패턴 매칭 장치가 찾고자 하는 패턴에 포함되는 문자열의 수가 많아질수록 그리고 찾고자 하는 패턴에 포함되는 문자열의 길이가 길어질수록, 정규 표현 매칭에 따른 상태 천이가 급속히 증가함에 따라 CAM에 포함되는 메모리 및 상태 천이를 위해 사용되는 메모리가 크게 증가한다.
본 발명이 해결하고자 하는 기술적 과제는 메모리를 효율적으로 사용할 수 있는 패턴 매칭 장치 및 방법을 제공하는 것이다.
본 발명의 한 실시 예에 따르면, 패턴 매칭 장치의 패턴 매칭 방법이 제공된다. 패턴 매칭 방법에 따르면, 한 바이트 데이터씩 입력되는 데이터 스트림 내에서 검색하고자 하는 패턴에 포함되는 문자열을 검출하는 단계, 입력되는 상기 한 바이트 데이터를 지연시키는 단계, 검출한 상기 문자열과 지연시킨 상기 한 바이트의 데이터를 이용하여 패턴 키를 생성하는 단계, 그리고 생성한 상기 패턴 키들로 구성될 수 있는 정규 표현들 중에 검색하고자 하는 상기 패턴을 나타내는 정규 표현을 검출하는 단계를 포함한다.
본 발명의 다른 한 실시 예에 따르면, 패턴 매칭 장치가 제공된다. 패턴 매칭 장치는 문자열 매칭부, 지연부, 키 발생부, 그리고 정규 표현 매칭부를 포함한다. 문자열 매칭부는 한 바이트 데이터씩 입력되는 데이터 스트림 내에서 검색하고자 하는 패턴에 포함되는 문자열을 검출한다. 지연부는 입력되는 상기 한 바이트 데이터를 지연시킨다. 키 발생부는 검출한 상기 문자열과 지연시킨 상기 한 바이트 데이터를 이용하여 패턴 키를 생성한다. 그리고 정규 표현 매칭부는 생성한 상기 패턴 키들로 구성될 수 있는 정규 표현들 중에 검색하고자 하는 상기 패턴을 나타내는 정규 표현을 검출한다.
본 발명의 실시 예에 의하면, 패턴 매칭 장치에 필요한 메모리를 보다 효율적으로 사용할 수 있으며, 문자열 매칭과 정규 패턴 매칭을 분리함으로써 필요한 경우 그 중 한 부분만 확장이 가능해질 수 있다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상 세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 본 발명의 실시 예에 따른 패턴 매칭 장치 및 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
일반적으로, 응용 계층의 데이터는 ASCII 문자와 같은 형태의 문자들로 구성되며, 문자는 1-바이트의 데이터로 구성되므로, 본 발명의 실시 예에서는 이를 고려하여 데이터가 1-바이트씩 입력됨을 예로 하여 패턴 매칭 장치 및 방법에 대해 설명한다.
본 발명에서의 문자열은 시간상으로 연속되는 문자들의 순차열을 의미한다. 또한, 본 발명에서 패턴은 문자 및 문자열들의 조합으로 나타낼 수 있는 형태를 의미한다. 예를 들어, "A High Speed and Performance Pattern Matching System for Network Security"라는 문장에서 "Pattern Matching"이나 "Network Security"는 이 문장에서 찾을 수 있는 문자열이다. 뿐만 아니라 이 문장 전체도 일종의 문자열로 취급할 수 있다. 그러나 이 문장에서 "High Speed System"이라는 문자열은 존재하지 않는다. 다만, "High Speed System"이라는 문자열은 이 문장에서 찾을 수 있는 "High Speed"와 "System" 두 문자열들의 조합으로 구성된 패턴이라 할 수 있다.
도 1은 본 발명의 실시 예에 따른 패턴 매칭 장치를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 패턴 매칭 장치(10)는 문자열 매칭부(100), 지연부(200), 키 발생부(300) 및 정규 표현 매칭부(400)를 포함한다.
문자열 매칭부(100)는 1-바이트씩 입력되는 데이터 스트림 내에 특징적인 문자열들이 있는지 검색하고, 검색한 문자열을 키 발생부(300)로 출력한다. 여기서, 특징적인 문자열들은 최종적으로 찾고자 하는 패턴에 포함되는 것들이다.
지연부(200)는 1-바이트씩 입력되는 데이터 스트림을 문자열 매칭부(100)에서 1-바이트의 데이터 스트림을 처리하는 데 소요되는 시간만큼 지연시키고, 지연시킨 1-바이트의 데이터 스트림을 키 발생부(300)로 출력한다. 이러한 지연부(200)는 일련의 플립플롭(Flip-Flop)을 연결한 형태의 버퍼로 이루어질 수 있다.
즉, 지연부(200)는 문자열 매칭부(100)가 1-바이트의 데이터 스트림을 처리하는 데 소요되는 시간이 1 클록이면 1-바이트 버퍼를 사용하여 데이터 스트림을 1 클록만큼 지연시키고 문자열 매칭부(100)가 1-바이트의 데이터 스트림을 처리하는 데 소요되는 시간이 2 클록이면 2-바이트 버퍼를 사용하여 데이터 스트림을 2 클록만큼 지연시킬 수 있다. 여기서, 클록은 본 발명의 실시 예에 따른 패턴 매칭 장치(10)가 기계적으로 동작하는 데 필요한 기본 단위 시간을 의미한다.
키 발생부(300)는 문자열 매칭부(100)에 의해 검색된 문자열과 지연부(200)에 의해 지연된 1-바이트의 데이터 스트림을 포함하는 패턴 키를 생성한다.
정규 표현 매칭부(400)는 키 발생부(300)에 의해 생성된 패턴 키들로 구성되는 정규 표현(Regular Expression)들 중에서 찾고자 하는 패턴을 나타내는 정규 표현이 있는지 검색한다. 여기서, 정규 표현은 키 발생부(300)에서 생성될 수 있는 패턴 키들로 구성되며, 찾고자 하는 패턴은 이러한 정규 표현으로 표현 가능하다.
도 2는 도 1에 도시된 문자열 매칭부를 나타낸 도면이다.
도 2를 참조하면, 문자열 매칭부(100)는 연상 메모리인 내용 주소지정가능 메모리(Content Addressable Memory, 이하 "CAM"이라 함)(110), 연쇄부(120) 및 인덱스 변환부(130)를 포함한다.
CAM(110)은 복수의 엔트리(Entry)를 포함한다. 각 엔트리(Entry)에는 문자(Character)가 컨텐츠(Content)로서 저장된다.
CAM(110)은 1-바이트의 데이터 스트림을 입력받고, 입력받은 1-바이트의 데이터 스트림을 모든 엔트리(Entry)에 저장되어 있는 컨텐츠들과 동시에 비교하여 일치하는 켄텐츠가 저장되어 있는 엔트리(Entry)가 존재하면 그 엔트리(Entry)에 해당되는 히트 신호(C1, C2, …)를 발생시킨다. 여기서, CAM(110)에 입력되는 1-바이트의 데이터 스트림은 문자로 표현이 가능하다. 이때, 특징적인 문자열에 포함되는 문자열들은 CAM(110)의 엔트리(Entry)들에 순차적으로 저장된다. 따라서, CAM(110)을 이용해 특징적인 문자열을 검색하면 그 문자열에 포함된 문자들이 저장 되어 있는 CAM(110)의 엔트리(Entry)들에서 연쇄적으로 히트 신호(C1, C2, …)들이 출력된다.
예를 들어, "pattern"이라는 문자열을 검색하고자 하는 경우, 우선, 도 2에 도시한 바와 같이, "pattern"에 포함되는 문자들을 CAM(110)에 차례로 저장한다. "t"처럼 같은 문자가 여러 번 반복되더라도 그 각각을 모두 CAM(110)의 해당 엔트리(Entry)에 저장한다. 이어서, CAM(110)에 "pattern"이라는 문자열이 1-바이트씩 입력되면, "pattern"에 포함된 문자들을 저장하고 있는 CAM(110)의 각 엔트리(Entry)에서 연쇄적으로 히트 신호(C1, C2, …, C7)가 출력된다.
한편, 본 발명의 실시 예에 따른 CAM(110)은 TCAM(Ternary CAM)일 수 있다. TCAM은 엔트리(Entry)를 무관심 항(Don't-Care Term)으로 만들 수 있는 기능을 포함한다. 예를 들어, 문자 "a"로 시작되는 3-바이트 문자열을 모두 찾고자 하는 경우, TCAM의 한 엔트리(Entry)에 "a"라는 컨텐츠를 저장하고, 이어지는 엔트리(Entry)들을 무관심 항으로 만든다. 이렇게 하면, "a**"라는 형태의 문자열이 입력되는 TCAM은 "a"를 저장하고 있는 엔트리(Entry)와 이어지는 무관심 항들을 저장하고 있는 두 엔트리(Entry)에서 차례로 히트 신호가 발생된다. 여기서, "*"는 무관심 항을 나타낸다. 무관심 항은 그 위치에 어떤 문자가 나타나도 상관없음을 의미한다.
연쇄부(120)는 특징적인 문자열에 포함되는 문자들을 저장하고 있는 CAM(110)의 각 엔트리(Entry)에서 연쇄적으로 출력되는 히트 신호(C1, C2, …)들을 논리적으로 조합하여 특징적인 문자열이 검출되었음을 알리는 검출 신호(S1, S2, …)를 발생시킨다. 즉, 찾고자 하는 문자열의 첫 문자부터 마지막 문자까지 그 문자열을 구성하는 문자들이 시간상 연쇄적으로 발생되는 경우, 그 문자열이 검출되었음을 알리는 검출 신호(S1, S2, …)를 각각 발생시킨다.
또한, 연쇄부(120)는 발생된 검출 신호(S1, S2, …)를 인덱스로 변환하여 인덱스 변환부(130)로 출력한다.
도 3은 도 2에 도시된 연쇄부의 일 실시 예를 나타낸 도면이다. 도 3에서는 "pattern"과 "system"이라는 문자열에 포함되는 문자들을 저장하고 있는 CAM(110)의 각 엔트리(Entry)에서 연쇄적으로 출력되는 히트 신호(C1, C2, …C13)가 출력된 경우를 가정하고 연쇄부(120a)를 도시하였다.
도 3을 참고하면, 연쇄부(120a)는 검색하고자 하는 문자열에 대응하는 복수의 연쇄 회로(122, 124)를 포함한다.
연쇄 회로(122/124)는 해당 문자열의 각 문자에 대응하여 출력되는 히트 신호(C1, C2, …C7/C8, C9, …C13)가 각각 입력되는 복수의 입력 단자와 해당 문자열의 검출을 알리는 검출 신호(S1, S2)를 출력하는 출력 단자를 가진다.
이러한 연쇄 회로(122/124)는 복수의 플립플롭(FF1-FF6/FF8-FF12)과 복수의 논리곱 소자(AND2-AND7/AND9-AND13)를 포함한다. 각 플립플롭(FF1-FF6/FF8-FF12)의 출력 단자가 논리곱 소자(AND2-AND7/AND9-AND13)의 두 입력 단자 중 하나의 입력 단자(이하, "제1 입력 단자"라 함)에 연결되어 있고, 각 논리곱 소자(AND2-AND7/AND9-AND13)의 출력 단자가 각 플립플롭(FF2-FF6/FF9-FF12)의 입력 단자에 연결되어 있다. 이때, 플립플롭(FF1-FF6/FF8-FF12) 중 맨 앞에 위치하는 플립플롭(FF1/FF8)의 입력 단자와 논리곱 소자(AND2-AND7/AND9-AND13)의 두 입력 단자 중 다른 하나의 입력 단자(이하, "제2 입력 단자"이라 함)로는 해당 문자열의 첫 문자부터 마지막 문자에 대응하는 히트 신호(C1-C7/C8-C13)가 입력된다. 그리고 논리곱 소자(AND2-AND7/AND9-AND13) 중 마지막에 위치하는 논리곱 소자(AND7/AND13)의 출력 단자가 연쇄 회로(122/124)의 출력 단자를 형성한다.
이러한 플립플롭(FF1-FF6/FF8-FF12)은 입력 단자로 입력되는 데이터를 1 클록만큼 지연시킨 후 출력 단자로 출력하며, 논리곱 소자(AND2-AND7/AND9-AND13)는 제1 및 제2 입력단으로 입력되는 데이터 즉, 플립플롭(FF1-FF6/FF8-FF12)의 출력 단자로 출력되는 신호와 히트 신호(C2-C7/C8-C13)를 논리곱 연산하여 출력한다.
예를 들면, 도 2에 도시한 바와 같이, "pattern"과 "system"이라는 문자들이 CAM(110)의 엔트리(Entry)에 저장되어 있으며, 입력되는 문자열이 "pattern"인 경우, CAM(110)의 각 엔트리(Entry)에서는 연쇄적으로 히트 신호(C1-C7)가 출력된다. 우선, "p"가 입력되면 히트 신호(C1)가 플립플롭(FF1)으로 출력되고, 플립플롭(FF1)은 히트 신호(C1)를 다음 1-바이트가 입력될 때까지 지연시킨 후 논리곱 소자(AND2)로 출력한다. 이어서, "a"가 입력되면 히트 신호(C2)가 논리곱 소자(AND2)로 출력되고, 논리곱 소자(AND2)는 히트 신호(C2)와 플립플롭(FF1)으로부터 출력된 히트 신호(C1)를 논리곱 연산하여 플립플롭(FF2)으로 출력한다. 그러면, 플립플롭(FF2)은 논리곱 연산된 히트 신호(C1, C2)를 다음 1 바이트가 입력될 때까지 지연시킨 후 논리곱 소자(AND3)로 출력한다. 이러한 방식으로 "pattern"의 마지막 문자 "n"이 입력될 때까지 연쇄 회로(122)가 동작하면 "pattern"에 포함된 모든 문자들에 해당되는 히트 신호(C1-C7)들을 논리곱 연산한 결과가 논리곱 소자(AND7)의 출력 단자로 출력되며, 히트 신호(C1-C7)들을 논리곱 연산한 결과가 검출 신호(S1)가 된다.
한편, 도 3에 도시된 연쇄부(120a)는 찾고자 하는 문자열이 정해지면, 찾고자 하는 문자열에 따라 플립플롭(FF1-FF6/FF8-FF12)과 논리곱 소자(AND2-AND7/AND9-AND13)들을 연결하여 각 문자열에 대응하는 연쇄 회로(122/124)가 생성된다. 따라서, 찾고자 하는 두 문자열 사이의 경계가 명확하게 나타난다. 그러나, 도 3에 도시된 연쇄부(120a)는 새로운 문자열이 추가될 때마다 연쇄 회로를 새로이 추가해야 한다. 이러한 작업은 소프트웨어로 처리하는 것은 간단할 수 있으나 하드웨어적으로 처리하고자 하는 경우에는 매우 번거롭거나 불가능한 일이 될 수도 있다. 예를 들어, FPGA(field programmable gate array)로 연쇄 회로(122, 124)를 구현한다면, 연쇄 회로가 추가될 때마다 FPGA에 포함된 모든 기능을 정지하고 새로 작성된 코드를 FPGA에 프로그래밍한 후 다시 동작시켜야 한다. 이것은 매우 번거로운 작업이 된다. 따라서, 연쇄부(120)는 CAM(110)과 더불어 쉽게 프로그래밍 가능한 구조로 만들어야 한다.
도 4는 도 2에 도시된 연쇄부의 다른 실시 예를 나타낸 도면이다.
도 4를 참고하면, 연쇄부(120b)는 복수의 스테이지(1261-12613)를 포함한다. 각 스테이지(1261-12613)는 두 입력 단자와 두 출력 단자 및 제어 단자를 가지며, 각 스테이지(1261-12613)의 두 입력 단자 중 하나의 입력 단자(이하, "제1 입력 단자"라고 함)는 인접한 스테이지의 두 출력 단자 중 하나의 출력 단자(이하, "제1 출력 단자"라 함)에 연결되어 있고, 각 스테이지(1261-12613)의 두 입력 단자 중 다른 하나의 입력 단자(이하, "제2 입력 단자"라고 함)는 검색하고자 하는 문자열의 각 문자에 대응하는 히트 신호(C1-C13)가 순차적으로 입력된다. 그리고 제어 단자로는 제어 신호(Se1-Se13)가 입력되며, 각 스테이지(1261-12613)의 두 출력 단자 중 다른 하나의 출력 단자(이하, "제2 출력 단자"라 함)로 검출 신호(S1, S2)가 출력된다.
스테이지(1261/…/12613)는 논리곱 소자(AND1'/…/AND13'), 플립플롭(FF1'/… /FF13'), 제1 다중화기(MUX1/…/MUX13) 및 제2 다중화기(MUX1'/…/MUX13')를 포함한다. 이때, 각 스테이지(1261/…/12613) 중 하나의 스테이지(1262)만을 설명하면, 논리곱 소자(AND2')의 제1 입력 단자가 스테이지(1262)의 제1 입력 단자를 형성하며, 논리곱 소자(AND2')의 제2 입력 단자가 스테이지(1262)의 제2 입력 단자를 형성한다. 논리곱 소자(AND2')의 출력 단자가 플립플롭(FF2')의 입력 단자 및 다중화기(MUX2)의 제2 입력 단자에 연결되어 있고, 플립플롭(FF2')의 출력 단자가 다중화기(MUX2')의 제1 입력 단자에 연결되어 있다. 그리고 다중화기(MUX2)의 제1 입력 단자로 "0"의 데이터가 입력되고, 다중화기(MUX2')의 제2 입력 단자로 "1"의 데이터가 입력된다. 다중화기(MUX2')의 출력 단자가 스테이지(1262)의 제1 출력 단자를 형성하고, 다중화기(MUX2)의 출력 단자가 스테이지(1262)의 제2 출력 단자를 형성한다. 그리고 제어 신호(Se2)가 다중화기(MUX2, MUX2')의 제어 단자로 입력된다.
나머지 스테이지(1261/1263/…/12613) 또한 스테이지(1262)와 동일하게 구성될 수 있다. 단, 스테이지(1261-12613) 중 맨 앞에 위치하는 스테이지(1261)의 논리곱 소자(AND1')의 제1 입력 단자로는 "1"의 데이터가 입력되며, 스테이지(1261)에서는 논리곱 소자(AND1')가 생략되고 히트 신호(c1)가 플립플롭(FF1')의 입력 단자 및 다 중화기(MUX1)의 제2 입력 단자로 입력될 수 있다.
이와 같이 구성된 연쇄부(120b)는 제어 신호(Se1-Se13)에 의해 문자열과 문자열 사이의 경계를 구분시킬 수 있다.
예를 들어 설명하면, 제어 신호(Se1-Se13)가 "1"이면 다중화기(MUX1-MUX13, MUX1'-MUX13')는 제2 입력 단자의 데이터를 출력하고 제어 신호(Se1-Se13)가 "0"이면 다중화기(MUX1-MUX13, MUX1'-MUX13')는 제1 입력 단자의 데이터를 출력한다고 가정한다. 그러면, 제어 신호(Se1)가 "1"인 경우, 다중화기(MUX1')는 제1 입력 단자의 데이터를 출력하므로, 플립플롭(FF1')의 출력 단자가 논리곱 소자(AND2')의 제1 입력 단자에 연결되면서 일종의 연쇄 회로를 형성하게 된다.
반면, 제어 신호(Se1)가 "0"인 경우, 다중화기(MUX1')는 제2 입력 단자의 데이터를 출력하므로, 플립플롭(FF1')의 출력 단자와 논리곱 소자(AND2')의 입력 단자 가 연결되지 않는다. 즉, 스테이지(1261)와 스테이지(1262)가 분리된다.
즉, 제어 신호(Se1)가 "0"인 경우 문자열과 문자열 사이의 경계가 발생되며, 이에 따라 연쇄 회로가 다른 연쇄 회로와 분리될 수 있다.
이와 같이, 스테이지(1261)와 스테이지(1262)가 분리된 경우, 논리곱 소자(AND1')의 연산 결과가 검출 신호(T1)로서 출력된다. 따라서, 제어 신호(Se1-Se6) 가 "1"이고 제어 신호(Se7)가 "0"이면, 도 3에 도시된 연쇄 회로(122)와 동일한 연쇄 회로가 구성될 수 있으며, 다중화기(MUX7')의 출력 단자로 논리곱 소자(AND7')의 연산 결과(T7)가 출력된다. 이때, 연산 결과(T7)가 도 3의 검출 신호(S1)와 동일한 값을 가진다.
이와 같은 연쇄부(120b)는 새로운 문자열이 추가될 때마다 연쇄 회로를 새로이 추가하지 않고도 쉽게 구현할 수가 있다.
다시, 도 2를 보면, 인덱스 변환부(130)는 연쇄부(120)로부터 출력되는 인덱스를 문자열 ID(String Identifier)로 변환시킨다.
일반적으로, 찾고자 하는 문자열들의 수에 비해 CAM(110)에 포함된 엔트리(Entry)의 수가 상당히 많다. 또한, 도 4의 경우, 연쇄부(120b)에서 발생 가능한 검출 신호(T1, T2, …)의 수는 CAM(110)에 포함된 엔트리(Entry)의 수와 동일해진다. 따라서, 도 4에 도시된 연쇄부(120b)에서 출력된 인덱스는 상당히 큰 수를 표현하기 위해 하드웨어적으로 불필요한 로직을 요구한다. 도 2에 도시한 바와 같이, "pattern"과 "system"이라는 문자열들이 검출되면, 연쇄부(120)에서 검출 신호(S1, S2)가 발생되고 이 검출 신호(S1, S2)에 대응하는 인덱스 7과 13은 두 문자열을 대표하는 요소가 된다. 두 인덱스 7과 13은 하드웨어적으로 표현하기 위해서는 4비트가 필요하나, 인덱스 7과 13을 각각 문자열 ID인 1과 2로 변환하면 2 비트로 두 문자열을 표현할 수가 있으므로, 하드웨어를 간소화시킬 수 있다.
또한, 인덱스 변환부(130)는 서로 다른 문자열들이 하나의 그룹으로 묶어진 경우, 그 그룹에 속하는 문자열들에 대해서 동일한 문자열 ID를 부여할 수도 있다.
이러한 문자열 매칭부(100)는 특징적인 문자열을 검색하기 위한 수단뿐만 아니라 특징적인 문자를 검색하기 위한 수단으로 사용될 수 있다.
도 5a 및 도 5b는 각각 도 1에 도시된 키 발생부의 패턴 키 생성 방법을 나타낸 도면이다.
도 5a를 참고하면, 키 발생부(300)는 문자열 매칭부(100)의 인덱스 변환부(130)에서 출력되는 문자열 ID와 지연부(200)에서 출력되는 1-바이트 문자(Character)를 포함하는 패턴 키를 생성하여 출력한다.
이와 달리, 도 5b를 참고하면, 키 발생부(300)는 문자열 매칭부(100)에서 발생되는 특정 문자열의 검출을 알리는 검출 신호에 따라 그 검출 신호와 더불어 특정 문자열에 해당되는 문자열 ID를 패턴 키로서 생성하여 출력하거나 지연부(200)에서 출력되는 1-바이트 문자(Character)를 패턴 키로서 생성하여 출력할 수도 있다.
즉, 키 발생부(300)는 문자열 매칭부(100)에서 특정 문자열이 검출된 경우, 이에 대응하는 검출 신호와 문자열 ID를 패턴 키로서 출력하고, 그 외의 경우에는 1-바이트 문자(Character)를 패턴 키로서 출력한다. 이러한 키 발생부(300)는 두 입력 단자가 각각 문자열 매칭부(100) 및 지연부(200)에 연결되어 있는 다중화기(MUX)를 이용할 수 있다.
도 6은 도 1에 도시된 정규 표현 매칭부의 일 실시 예를 나타낸 도면이다.
도 6에 도시한 바와 같이, 정규 표현 매칭부(400)는 CAM(410), 상태 천이부(420) 및 지연부(430)를 포함한다.
CAM(410)는 복수의 엔트리(Entry)를 포함한다. 각 엔트리(Entry)에는 패턴 키 및 상태 변수가 컨텐츠로서 저장된다. 이때, 패턴 키는 키 발생부(300)에서 생성되어 출력된 것으로, 문자열 ID 또는 문자(Character)일 수 있으며, 상태 변수는 상태 천이부(420)로부터 출력된다.
CAM(410)은 키 발생부(300) 및 상태 천이부(420)에서 각각 패턴 키와 상태 변수를 입력받고, 입력받은 패턴 키와 상태 변수를 모든 엔트리(Entry)에 저장되어 있는 컨텐츠들과 동시에 비교하여 일치되는 엔트리(Entry)가 존재하면 그 엔트리(Entry)에 해당되는 히트 신호(h1, h2, …)를 출력한다.
또한, CAM(410)은 히트 신호(h1, h2, …)를 출력한 엔트리(Entry)에 대한 인덱스를 상태 천이부(420) 및 지연부(430)로 출력한다. 여기서, 엔트리(Entry)에 대한 인덱스는 CAM(410) 내에서 해당 엔트리(Entry)의 위치를 주소의 형태로 표현한 것이다.
이러한 CAM(410)도 TCAM(Ternary CAM)으로 이루어질 수 있다. 즉, 엔트리(Entry)에 포함되는 요소들 즉, 패턴 키와 상태 변수를 무관심항(Don't-care Term)으로 만들 수 있다. 뿐만 아니라 패턴 키를 구성하고 있는 요소들 각각을 무관심 항으로 만들 수 있는 기능도 포함한다. 예를 들어, 현재 상태에 상관없이 문자열 "High"가 검출될 때 상태 1로 천이하고자 한다면, 그에 해당하는 엔트 리(Entry)에서 상태 변수를 무관심 항으로 만들면 된다. 또한 특정 패턴이 검출된 상태 3이나 상태 5에서 이후로 검출되는 문자나 문자열에 상관없이 초기 상태로 천이하고자 한다면, 그에 해당하는 엔트리(Entry)에서 패턴 키를 무관심항으로 만들면 된다.
상태 천이부(420)는 CAM(410)의 각 에트리(Entry)의 인덱스에 대응되는 상태 변수를 저장하고 있다. 따라서, 상태 천이부(420)는 CAM(410)에서 히트 신호를 출력한 엔트리(Entry)의 인덱스에 대응하는 상태 변수를 CAM(410)으로 출력한다. 예를 들면, CAM(410)으로부터 히트 신호(h2)가 출력되면, 상태 천이부(420)는 히트 신호(h2)를 출력한 엔트리(Entry)의 인덱스 2에 대응되는 상태 변수 1을 CAM(410)으로 출력한다.
또한, 상태 천이부(420)는 특정 인덱스에서 실행 정보(Action)를 출력할 수 있다. 여기서, 실행 정보(Action)에는 찾고자 하는 패턴이 검출되었음을 알리는 히트 신호(Hit)와 찾고자 하는 패턴이 검출되었을 때 다음 단계에서 수행해야될 사항이 포함될 수도 있다.
예를 들면, "High", "Speed", "Network" 등의 문자열이 순차적으로 발생되는 형태의 패턴 1과 "High", "Performance" 및 "System" 등의 문자열이 순차적으로 발생되는 형태의 패턴 2를 찾고자 하는 경우, 예측 가능한 형태의 상태 천이도는 도 7이 나타낼 수 있다.
도 7은 상태 천이도의 일 실시 예를 나타낸 도면이고, 도 8은 도 7에 도시된 문자열에 대응되는 문자열 ID를 표시한 구성도이다.
도 7를 참고하면, 상태 천이부(420)는 상태 0에서 "High"가 검출되면 상태 1로 천이하고, 상태 1에서 "Speed"가 검출되면 상태 2로 천이하고, 상태 2에서 "Network"이 검출되면 상태 3으로 천이한다. 이때, 상태 3은 패턴 1이 검출되었음을 의미하므로, 상태 천이부(420)는 상태 3에 대한 실행 정보(Action)로서 패턴이 검출되었음을 알리는 히트 신호(Hit)를 출력한다.
또한, 상태 천이부(420)는 상태 1에서 "Performance"가 검출되면 상태 4로 천이하고, 상태 4에서 "System"이 검출되면 상태 5로 천이한다. 이때, 상태 5는 패턴 2가 검출되었음을 의미하므로, 상태 천이부(420)는 상태 5에 대한 실행 정보(Action)로서 패턴이 검출되었음을 알리는 히트 신호(Hit)를 출력한다.
이러한 상태 천이도는 상태 6과 같이 추가적으로 발생 가능한 형태의 상태 천이를 더 포함할 수도 있다. 뿐만 아니라, 도 7에 표시된 상태 천이 형태 외에도 다양한 형태의 상태 천이가 가능하다.
또한, 도 8을 참고하면, 도 7에 표현된 문자열들 각각에 도 8에 표현된 형태로 문자열 ID가 부여되면, 도 7의 상태 천이도는 도 6과 같이 구성될 수 있다.
본 발명의 실시 예에 따른 패턴 매칭 장치(10)에 "A High Speed and Performance Pattern Matching System for Network Security"라는 데이터 스트림이 입력될 때 이를 도 6 및 도 7에 따라 분석하면 다음과 같다. 단, 데이터 스트림이 패턴 매칭 장치(10)에 처음으로 입력되는 데이터 스트림이라 가정한다.
먼저, 상태 0에서 "high"가 검출되므로, CAM(410)은 히트 신호(h2)와 히트 신호(h2)를 출력한 엔트리에 대응하는 인덱스 2를 상태 천이부(420)로 출력한다. 상태 천이부(420)는 상태 0에서 인덱스 2에 대응하는 상태 1로 천이하고, 상태 1에 대한 정보(state)를 CAM(410)으로 전달한다.
상태 1에서 "Speed"가 검출되면, CAM(410)은 히트 신호(h3)와 히트 신호(h3)를 출력한 엔트리에 대응하는 인덱스 3을 상태 천이부(420)로 출력한다. 상태 천이부(420)는 상태 1에서 인덱스 3에 대응하는 상태 2로 천이하고, 상태 2에 대한 정보(state)를 CAM(410)으로 전달한다.
이어서, 상태 2에서 "Performance"가 검출되면, CAM(410)은 히트 신호(h7)와 히트 신호(h7)를 출력한 엔트리에 대응하는 인덱스 7을 상태 천이부(420)로 출력한다. 상태 천이부(420)는 상태 2에서 인덱스 7에 대응하는 상태 6으로 천이하고, 상태 6에 대한 정보(state)를 CAM(410)으로 전달한다.
다음, 상태 6에서 "System"이 검출되면, CAM(410)은 히트 신호(h8)와 히트 신호(h8)를 출력한 엔트리에 대응하는 인덱스 8을 상태 천이부(420)로 출력한다. 상태 천이부(420)는 상태 6에서 인덱스 8에 대응하는 상태 6으로 천이한다. 이때, 상태 5는 패턴 2가 검출되었음을 의미하므로, 상태 천이부(420)는 상태 5로 천이함과 더불어 그에 대한 실행 정보(Action)로 히트 신호(Hit)를 출력한다.
다시, 도 6을 보면, 지연부(430)는 CAM(410)으로부터 출력되는 인덱스를 상 태 천이부(420)에서 히트 신호(Hit)를 출력하는 데까지 소요되는 시간만큼을 지연시킨 후 출력한다.
이러한 정규 표현 매칭부(400)는 도 6에 도시된 바와 달리 구성될 수도 있다.
도 9는 도 1에 도시된 정규 표현 매칭부의 다른 실시예를 나타낸 도면이다.
도 9를 참고하면, 정규 표현 매칭부(400')는 CAM(410'), 연쇄부(440) 및 메모리부(450)을 포함한다.
CAM(410')은 복수의 엔트리(Entry)를 포함한다. 각 엔트리(Entry)에는 패턴 키가 컨텐츠(Content)로서 저장된다. 이때, 패턴 키는 키 발생부(300)에서 생성되어 출력된 것으로, 문자열 ID 또는 문자(Character)일 수 있다.
CAM(410)은 키 발생부(300)에서 패턴 키를 입력받고, 입력받은 패턴 키를 모든 엔트리(Entry)에 저장되어 있는 컨텐츠(Content)들과 동시에 비교하여 일치되는 엔트리(Entry)가 존재하면 그 엔트리(Entry)에 해당되는 히트 신호(h1, h2, …)를 출력한다.
연쇄부(440)는 CAM(410)의 각 엔트리(Entry)에서 연쇄적으로 출력되는 히트 신호(h1, h2, …)들을 논리적으로 조합하여 패턴이 검출되었음을 알리는 검출 신호(P1, P2, …)를 발생시킨다. 즉, 연쇄부(440)는 찾고자 하는 패턴의 첫 문자 또는 첫 문자열부터 마지막 문자 또는 마지막 문자열까지 패턴을 구성하는 문자 또는 문자열들이 시간상 연쇄적으로 발생되는 경우, 그 패턴이 검출되었음을 알리는 검출 신호(P1, P2, …)를 발생시킨다.
또한, 연쇄부(440)는 검출 신호(P1, P2, …)를 인덱스로 변환하여 인덱스 변환부(130)로 출력한다.
도 10은 도 9에 도시된 연쇄부의 일실시예를 나타낸 도면이고, 도 11은 도 10에 도시된 래치를 나타낸 도면이다. 도 10에서는 찾고자 하는 패턴이 "High", "Speed", "Network"의 문자열들이 순차적으로 발생되는 패턴 1과 "High", "Performance", "System"의 문자열들이 순차적으로 발생되는 형태의 패턴 2일 때, "High", "Speed" 및 "Network"와 "High", "Performance" 및 "System"의 문자열에 해당하는 히트 신호가 CAM(410)으로부터 순차적으로 출력된 경우를 가정하고 연쇄부(120a)를 도시하였다. 또한, 도 11에서는 복수의 래치(L1-L4) 중 하나의 래치(L1)만을 도시하였으며, 나머지 래치(L2-L4)도 이와 동일하게 구성될 수 있다.
도 10을 참고하면, 연쇄부(440a)는 찾고자 하는 패턴에 대응하여 형성되는 연쇄 회로(442/444)를 포함한다.
연쇄 회로(442/444)는 복수의 래치(L1-L4) 및 복수의 논리곱 소자(AND21-AND24)를 포함한다. 이러한 연쇄 회로(442/444)는 도 3에 도시된 연쇄 회로(122/124)의 플립플롭을 래치로 대체한 것을 제외하고는 도 3에 도시된 연쇄 회로(122/124)와 유사한 구조를 가진다.
래치(L1-L4)는 입력 단자, 두 제어 단자 및 출력 단자를 가지며, 입력 단자 로 하나의 데이터가 입력되면, 그 다음 데이터가 입력되기 전까지 해당 데이터를 유지하여 출력 단자로 출력한다.
도 11을 참고하면, 래치(L1)는 다중화기(MUXL1) 및 플립플롭(FFL1)을 포함한다. 다중화기(MUXL1)의 두 입력 단자 중 하나의 입력 단자(이하, "제1 입력 단자"라 함)는 플립플롭(FFL1)의 출력 단자에 연결되어 있고, 다중화기(MUXL1)의 출력 단자는 플립플롭(FFL1)의 입력 단자에 연결되어 있다. 그리고 다중화기(MUXL1)의 제어 단자가 래치(L1)의 제어 단자를 형성하며, 이 제어 단자로는 제어 신호(h)가 입력된다. 다중화기(MUXL1)의 두 입력 단자 중 다른 하나의 입력 단자(이하, "제2 입력 단자"라 함)는 래치(L1)의 입력 단자를 형성하고, 플립플롭(FFL1)의 출력 단자가 래치(L1)의 출력 단자를 형성한다.
다중화기(MUXL1)는 제어 신호(h)에 따라서 제1 또는 제2 입력 단자의 데이터를 출력한다. 예를 들어, 제어 신호(h)가 "1"이면 다중화기(MUXL1)는 제2 입력 단자의 데이터를 출력하고 제어 신호(h)가 "0"이면 제1 입력 입자의 데이터를 출력할 수 있다.
도 11에 도시한 바와 같이, 다중화기(MUXL1)의 제2 입력 단자로 "1"이 입력되는 것으로 가정하면, 제어 신호(h)가 "1"이 되면, 플립플롭(FFL1)에 "1"이 입력되 고, 플립플롭(FFL1)은 입력된 "1"을 출력한다. 제어 신호(h)가 "0"이면 플립플롭(FFL1)에 플립플롭(FFL1)의 출력 단자로 출력되는 "1"이 다시 입력된다. 따라서 플립플롭(FFL1)의 출력은 계속 "1"을 유지한다.
또한, 래치(L1)는 출력되는 값을 "0"으로 변경하기 위한 수단을 추가적으로 포함할 수 있다. 즉, 제어 신호로서 리셋(Reset) 신호가 플립플롭(FFL1)으로 입력되면 플립플롭(FFL1)은 "0"을 출력한다.
즉, 래치(L1-L4)는 도 3 및 도 4에 도시된 플립플롭(FF1-FF12, FF1'-FF12')과 유사한 기능을 수행한다. 따라서, 연쇄부(440a)의 연쇄 회로(442/444)의 동작은 도 3에 도시된 연쇄부(120a)의 연쇄 회로(122/124)의 동작과 동일해진다.
예를 들어서, "High", "Speed", "Network"의 문자열들이 순차적으로 발생되는 형태의 패턴 1과 "High", "Performance", "System"의 문자열들이 순차적으로 발생되는 형태의 패턴 2를 찾고자 하는 경우, 두 패턴에 포함되는 문자열들 각각에 도 8과 같은 문자열 ID를 부여하고, 도 9에 도시된 바와 같이 CAM(410)에 문자열 ID들이 순차적으로 저장되어 있다고 가정한다.
패턴 1 또는 패턴 2에 포함된 문자열들이 순차적으로 검출되면 CAM(410)은 그에 해당되는 히트 신호(h1, h2, …)들을 순차적으로 출력한다.
우선, "High"가 입력되면 CAM(410')은 히트 신호(h1)를 래치(L1)로 출력한 다. 래치(L1)는 히트 신호(h1)를 다음 히트 신호(h2)가 입력될 때까지 유지하여 출력한다. 이어서, "Speed"가 입력되면 CAM(410')은 히트 신호(h2)를 논리곱 소자(AND11)로 출력한다. 이때, 래치(L1)는 히트 신호(h1)를 논리곱 소자(AND11)로 출력한다. 논리곱 소자(AND11)는 두 히트 신호(h1, h2)를 논리곱 연산하여 래치(L2)로 출력한다. 래치(L2)는 두 히트 신호(h1, h2)의 논리 곱 연산 결과를 다음 히트 신호(h3)가 입력될 때까지 유지하여 출력한다.
이어서, "Network"이 입력되면 CAM(410')은 히트 신호(h3)를 논리곱 소자(AND1)로 출력한다. 논리곱 소자(AND12)는 두 히트 신호(h1, h2)를 논리곱 연산한 결과와 히트 신호(h3)를 논리곱 연산하여 출력한다. 이때, 논리곱 소자(AND12)로부터 출력된 값이 곧 패턴 1이 검출되었음을 알리는 검출 신호(P1)가 된다.
도 12는 도 9에 도시된 연쇄부의 다른 실시 예를 나타낸 도면이다.
도 12를 참고하면, 연쇄부(440b)는 복수의 스테이지(4461-4466)를 포함하며, 각 스테이지(4461-4466)는 논리곱 소자(AND21'/…/AND26'), 래치(L1'/…/L6'), 제1 다중화기(MUX21/…/MUX26) 및 제2 다중화기(MUX21'/…/MUX26')를 포함한다. 이때, 각 스테이지(4461-4466)는 도 4에 도시된 각 스테이지(1261-12613)의 플립플롭을 래치로 대체한 것을 제외하고는 도 4에 도시된 각 스테이지(1261-12613)와 유사한 구조를 가진다. 따라서, 연쇄부(440b)의 동작은 도 4에 도시된 연쇄부(120b)의 동작과 유사하다.
예를 들어서, 제어 신호(Pe1)가 "1"이면 다중화기(MUX21')는 제1 입력 단자의 데이터를 출력하므로, 래치(L1')의 출력 단자가 논리곱 소자(AND22')의 입력 단자에 연결되면서 일종의 연쇄 회로를 형성하게 된다. 반면, 제어 신호(Pe1)가 "0"이면 다중화기(MUX21')는 제2 입력 단자의 데이터를 출력하므로, 래치(L1')의 출력 단자와 논리곱 소자(AND22')의 입력 단자가 연결되지 않는다. 즉, 스테이지(4461)와 스테이지(4462)가 분리된다. 이때, 논리곱 소자(AND21')의 연산 결과가 연쇄부(440b)의 검출 신호(Q1)로서 출력된다.
따라서, 제어 신호(Pe1, Pe2)가 "1"이고 제어 신호(Pe3)가 "0"이면, 도 10에 도시된 연쇄 회로(442)와 동일한 연쇄 회로가 구성될 수 있다. 이때, 다중화기(MUX23)의 출력 단자로 논리곱 소자(AND23')의 논리곱 연산 결과가 연쇄부(440b)의 검출 신호(Q3)로서 출력되며, 검출 신호(Q3)는 도 10의 검출 신호(P1)와 동일한 값을 가진다.
다시, 도 9를 보면, 메모리부(450)는 연쇄부(440)에서 출력되는 인덱스에 대응되는 실행 정보를 출력한다. 실행 정보에는 찾고자 하는 패턴이 검출되었음을 알리는 히트 신호(Hit)와 찾고자 하는 패턴이 검출되었음에 따른 다음 단계에서 수행 해야될 사항들이 포함된다.
마지막으로, 지연부(430')는 메모리부(450)에서 인덱스를 처리하고 그에 대한 실행 정보를 출력하기까지에 소요되는 시간만큼 해당 인덱스를 지연시킨 후 출력한다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시 예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시 예의 기재로부터 본 발명이 속하는 기술 분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다.
도 1은 본 발명의 실시 예에 따른 패턴 매칭 장치를 나타낸 도면이고,
도 2는 도 1에 도시된 문자열 매칭부를 나타낸 도면이고,
도 3은 도 2에 도시된 연쇄부의 일 실시 예를 나타낸 도면이고,
도 4는 도 2에 도시된 연쇄부의 다른 실시 예를 나타낸 도면이고,
도 5a 및 도 5b는 각각 도 1에 도시된 키 발생부의 패턴 키 생성 방법을 나타낸 도면이고,
도 6은 도 1에 도시된 정규 표현 매칭부의 일 실시 예를 나타낸 도면이고,
도 7은 상태 천이도의 일 실시 예를 나타낸 도면이고, 도 8은 도 7에 도시된 문자열에 대응되는 문자열 ID를 표시한 구성도이고,
도 9는 도 1에 도시된 정규 표현 매칭부의 다른 실시 예를 나타낸 도면이고,
도 10은 도 9에 도시된 연쇄부의 일 실시 예를 나타낸 도면이고,
도 11은 도 10에 도시된 래치를 나타낸 도면이고,
도 12는 도 9에 도시된 연쇄부의 다른 실시 예를 나타낸 도면이다.

Claims (23)

  1. 패턴 매칭 장치의 패턴 매칭 방법에 있어서,
    한 바이트 데이터씩 입력되는 데이터 스트림 내에서 검색하고자 하는 패턴에 포함되는 문자열을 검출하는 단계,
    입력되는 상기 한 바이트 데이터를 지연시키는 단계,
    검출한 상기 문자열과 지연시킨 상기 한 바이트 데이터를 이용하여 패턴 키를 생성하는 단계, 그리고
    생성한 상기 패턴 키들로 구성될 수 있는 정규 표현들 중에 검색하고자 하는 상기 패턴을 나타내는 정규 표현을 검출하는 단계
    를 포함하는 패턴 매칭 방법.
  2. 제1항에 있어서,
    상기 패턴 매칭 장치는 복수의 엔트리에 검색하고자 하는 문자열에 해당하는 문자가 각각 컨텐츠로 저장되어 있는 CAM(Content Addressable Memory)을 포함하며,
    상기 문자열을 검출하는 단계는,
    한 바이트씩 입력되는 데이터를 상기 복수의 엔트리에 저장되어 있는 문자들과 비교하는 단계,
    상기 복수의 엔트리 중 상기 데이터와 일치하는 문자가 저장되어 있는 엔트 리에 해당되는 히트 신호를 발생시키는 단계, 그리고
    상기 히트 신호가 순차적으로 발생될 경우, 검색하고자 하는 문자열의 검출을 알리는 검출 신호를 발생시키는 단계를 포함하는 패턴 매칭 방법.
  3. 제2항에 있어서,
    상기 문자열을 검출하는 단계는,
    상기 검출 신호에 대응하는 인덱스를 발생시키는 단계, 그리고
    상기 인덱스를 문자열 ID로 변환하는 단계를 더 포함하는 패턴 매칭 방법.
  4. 제3항에 있어서,
    상기 패턴 키를 생성하는 단계는,
    상기 검색하고자 하는 문자열이 검출된 경우, 상기 검출 신호와 상기 검출한 문자열에 해당되는 문자열 ID를 상기 패턴 키로서 생성하는 단계, 그리고
    상기 검색하고자 하는 문자열이 검출되지 않은 경우, 상기 지연시킨 한 바이트 데이터를 상기 패턴 키로서 생성하는 단계를 포함하는 패턴 매칭 방법.
  5. 제1항에 있어서,
    상기 패턴 매칭 장치는 복수의 엔트리에 각각 패턴 키를 컨텐츠로 저장하고 있는 CAM(Content Addressable Memory)을 포함하며,
    상기 정규 표현들을 검출하는 단계는,
    상기 생성한 패턴 키를 상기 복수의 엔트리에 저장되어 있는 컨텐츠들과 비교하는 단계,
    상기 복수의 엔트리 중 상기 생성한 패턴 키와 일치하는 컨텐츠를 저장하고 있는 엔트리에 해당되는 히트 신호를 발생시키는 단계, 그리고
    상기 히트 신호가 순차적으로 발생될 경우 상기 패턴의 검출을 알리는 히트 신호를 발생시키는 단계를 포함하는 패턴 매칭 방법.
  6. 제1항에 있어서,
    상기 패턴 매칭 장치는 복수의 엔트리에 패턴 키와 상태 변수가 각각 컨텐츠로 저장되어 있는 CAM(Content Addressable Memory), 그리고 상기 복수의 엔트리에 각각 해당되는 인덱스에 대응하는 상태 변수를 저장하고 있는 상태 천이부를 포함하며,
    상기 정규 표현을 검출하는 단계는,
    입력되는 패턴 키와 입력되는 상태 변수를 상기 복수의 엔트리에 저장되어 있는 컨텐츠들과 비교하는 단계,
    상기 복수의 엔트리 중 상기 입력되는 패턴 키와 상기 상태 변수에 일치하는 컨텐츠를 저장하고 있는 엔트리에 해당되는 히트 신호를 발생시키는 단계, 그리고
    상기 히트 신호를 발생시킨 엔트리에 대한 인덱스를 출력하는 단계, 그리고
    상기 인덱스에 대응되는 상태 변수를 입력시키는 단계를 포함하는 패턴 매칭 방법.
  7. 제6항에 있어서,
    상기 정규 표현을 검출하는 단계는,
    상기 복수의 엔트리에 해당하는 인덱스 중 특정 인덱스에 대응되는 실행 정보를 출력하는 단계를 더 포함하며,
    상기 실행 정보는 상기 패턴의 검출을 알리는 히트 신호를 포함하는 패턴 매칭 방법.
  8. 제2항 내지 제7항 중 어느 한 항에 있어서,
    상기 CAM은 TCAM(Ternary CAM)인 패턴 매칭 방법.
  9. 패턴 매칭 장치에 있어서,
    한 바이트 데이터씩 입력되는 데이터 스트림 내에서 검색하고자 하는 패턴에 포함되는 문자열을 검출하는 문자열 매칭부,
    입력되는 상기 한 바이트 데이터를 지연시키는 지연부,
    검출한 상기 문자열과 지연시킨 상기 한 바이트 데이터를 이용하여 패턴 키를 생성하는 키 발생부, 그리고
    생성한 상기 패턴 키들로 구성될 수 있는 정규 표현들 중에 검색하고자 하는 상기 패턴을 나타내는 정규 표현을 검출하는 정규 표현 매칭부
    를 포함하는 패턴 매칭 장치.
  10. 제9항에 있어서,
    상기 문자열 매칭부는,
    문자가 컨텐츠로서 각각 저장되어 있는 복수의 엔트리를 포함하며, 상기 복수의 엔트리 중 상기 입력되는 한 바이트 데이터와 일치하는 문자가 저장되어 있는 엔트리에 해당하는 히트 신호를 발생시키는 CAM(Content Addressable Memory),
    상기 히트 신호가 순차적으로 발생되는 경우 상기 문자열의 검출을 알리는 검출 신호를 발생시키며, 상기 검출 신호에 대응하는 인덱스를 출력하는 연쇄부, 그리고
    상기 인덱스를 문자열 ID로 변환하는 인덱스 변환부를 포함하는 패턴 매칭 장치.
  11. 제10항에 있어서,
    검색하고자 하는 문자열들이 복수의 그룹으로 나누어지며,
    상기 인덱스 변환부는 동일한 그룹에 속하는 문자열에 해당하는 인덱스를 동일한 문자열 ID로 변환하는 패턴 매칭 장치.
  12. 제10항에 있어서,
    상기 연쇄부는,
    상기 검색하고자 하는 문자열의 각 문자에 대응하는 히트 신호가 입력되는 복수의 제1 입력 단자, 그리고 상기 검출 신호를 출력하는 제1 출력 단자를 가지는 복수의 연쇄 회로를 포함하는 패턴 매칭 장치.
  13. 제12항에 있어서,
    각 연쇄 회로는,
    제2 입력 단자, 그리고 제2 출력 단자를 가지는 복수의 플립플롭, 그리고
    제3 및 제4 입력 단자, 그리고 제3 출력 단자를 가지는 복수의 논리 게이트를 포함하며,
    각 플립플롭의 제2 출력 단자가 각 논리 게이트의 제3 입력 단자에 연결되어 있고, 복수의 논리 게이트 중 마지막에 위치하는 논리 게이트를 제외한 나머지 논리 게이트의 제3 출력 단자가 상기 복수의 플립플롭 중 맨 앞에 위치하는 플립플롭을 제외한 나머지 플립플롭의 제2 입력 단자에 연결되어 있으며,
    상기 마지막에 위치하는 논리 게이트의 제3 출력 단자가 상기 제1 출력 단자를 형성하며, 상기 맨 앞에 위치하는 플립플롭의 제2 입력 단자와 상기 각 논리 게이트의 제4 입력 단자가 각각 상기 복수의 제1 입력 단자를 형성하는 패턴 매칭 장치.
  14. 제10항에 있어서,
    상기 연쇄부는,
    검색하고자 하는 문자열에 각각 대응하는 복수의 연쇄 회로를 포함하고,
    각 연쇄 회로는,
    각각 제1 및 제2 입력 단자, 제1 및 제2 출력 단자, 그리고 제어 단자를 가지는 복수의 스테이지를 포함하며,
    각 스테이지의 상기 제1 입력 단자는 인접한 스테이지의 상기 제2 출력 단자에 연결되어 있으며,
    각 스테이지의 상기 제2 입력 단자는 검색하고자 하는 문자열의 각 문자에 대응하는 히트 신호를 입력받고, 상기 제어 단자는 제어 신호를 입력받으며, 상기 제1 출력 단자는 상기 검출 신호를 출력하며,
    상기 제어 신호에 의해 인접한 스테이지가 분리되는 패턴 매칭 장치.
  15. 제14항에 있어서,
    각 스테이지는,
    상기 제1 및 제2 입력 단자로 입력되는 데이터를 논리곱 연산하여 출력 단자로 출력하는 논리 게이트,
    상기 논리 게이트의 출력 단자와 연결되어 있는 입력 단자, 그리고 출력 단자를 가지는 플립플롭,
    제1 데이터가 입력되는 제3 입력 단자, 상기 논리 게이트의 출력 단자와 연결되어 있는 제4 입력 단자, 그리고 상기 제1 출력 단자를 형성하는 제3 출력 단자를 가지는 제1 다중화기, 그리고
    상기 플립플롭의 출력 단자에 연결되어 있는 제5 입력 단자, 제2 데이터가 입력되는 제6 입력 단자, 그리고 상기 제2 출력 단자를 형성하는 제4 출력 단자를 가지는 제2 다중화기를 포함하는 패턴 매칭 장치.
  16. 제14항에 있어서,
    상기 제어 신호에 의해 검색하고자 하는 문자열 사이의 경계가 구분되는 패턴 매칭 장치.
  17. 제9항에 있어서,
    상기 정규 표현 매칭부는,
    패턴 키와 상태 변수가 컨텐츠로서 각각 저장되어 있는 복수의 엔트리를 포함하며, 상기 복수의 엔트리 중 상기 키 발생부에서 생성한 패턴 키와 일치하는 패턴 키가 저장되어 있는 엔트리에 해당하는 제1 히트 신호를 발생시키고, 상기 히트 신호를 발생시킨 엔트리에 대응하는 인덱스를 출력하는 CAM, 그리고
    복수의 엔트리의 각 인덱스에 대응하는 상태 변수가 저장되어 있으며, 상기 CAM으로부터 출력된 인덱스에 대응하는 상태 변수를 상기 CAM으로 출력하는 상태 천이부를 포함하며,
    상기 상태 천이부는 상기 각 인덱스 중 특정 인덱스에 대응하는 실행 정보를 출력하며,
    상기 실행 정보는 상기 패턴의 검출을 알리는 제2 히트 신호를 포함하는 패턴 매칭 장치.
  18. 제9항에 있어서,
    상기 정규 표현 매칭부는,
    패턴 키가 컨텐츠로서 각각 저장되어 있는 복수의 엔트리를 포함하며, 상기 복수의 엔트리 중 상기 키 발생부에서 생성한 패턴 키와 일치하는 패턴 키가 저장되어 있는 엔트리에 해당하는 히트 신호를 출력하는 CAM,
    상기 히트 신호가 순차적으로 출력하는 경우 상기 패턴의 검출을 알리는 검출 신호를 발생시키며, 상기 검출 신호에 대응하는 인덱스를 출력하는 연쇄부, 그리고
    상기 인덱스에 대응하는 실행 정보를 출력하는 메모리부
    를 포함하는 패턴 매칭 장치.
  19. 제18항에 있어서,
    상기 연쇄부는,
    상기 패턴에 포함되는 문자열에 대응하는 히트 신호가 입력되는 복수의 제1 입력 단자, 그리고 상기 검출 신호를 출력하는 제1 출력 단자를 가지는 복수의 연쇄 회로를 포함하며,
    각 연쇄 회로는,
    제2 입력 단자, 그리고 제2 출력 단자를 가지는 복수의 래치, 그리고
    제3 및 제4 입력 단자, 그리고 제3 출력 단자를 가지는 복수의 논리 게이트 를 포함하며,
    각 래치의 제2 출력 단자가 각 논리 게이트의 제3 입력 단자에 연결되어 있고, 복수의 논리 게이트 중 마지막에 위치하는 논리 게이트를 제외한 나머지 논리 게이트의 제3 출력 단자가 상기 복수의 래치 중 맨 앞에 위치하는 래치를 제외한 나머지 래치의 제2 입력 단자에 연결되어 있으며,
    상기 마지막에 위치하는 논리 게이트의 제3 출력 단자가 상기 제1 출력 단자를 형성하며, 상기 맨 앞에 위치하는 래치의 제2 입력 단자와 상기 각 논리 게이트의 제4 입력 단자가 각각 상기 복수의 제1 입력 단자를 형성하는 패턴 매칭 장치.
  20. 제18항에 있어서,
    상기 연쇄부는,
    상기 패턴에 포함되는 문자열에 각각 대응하는 복수의 연쇄 회로를 포함하고,
    각 연쇄 회로는,
    각각 제1 및 제2 입력 단자, 제1 및 제2 출력 단자, 그리고 제어 단자를 가지는 복수의 스테이지를 포함하며,
    각 스테이지의 상기 제1 입력 단자는 인접한 스테이지의 상기 제2 출력 단자에 연결되어 있으며,
    각 스테이지의 상기 제2 입력 단자는 상기 문자열 검출부에서 검출한 문자열에 대응하는 히트 신호를 입력 받고, 상기 제어 단자는 제어 신호를 입력 받으며, 상기 제1 출력 단자는 상기 검출 신호를 출력하며,
    상기 제어 신호에 의해 인접한 스테이지가 분리되는 패턴 매칭 장치.
  21. 제20항에 있어서,
    상기 각 스테이지는,
    상기 제1 및 제2 입력 단자로 입력되는 데이터를 논리곱 연산하여 출력 단자로 출력하는 논리 게이트,
    상기 논리 게이트의 출력 단자와 연결되어 있는 입력 단자, 그리고 출력 단자를 가지는 래치,
    제1 데이터가 입력되는 제3 입력 단자, 상기 논리 게이트의 출력 단자와 연결되어 있는 제4 입력 단자, 그리고 상기 제1 출력 단자를 형성하는 제3 출력 단자를 가지는 제1 다중화기, 그리고
    상기 래치의 출력 단자에 연결되어 있는 제5 입력 단자, 제2 데이터가 입력되는 제6 입력 단자, 그리고 상기 제2 출력 단자를 형성하는 제4 출력 단자를 가지는 제2 다중화기를 포함하는 패턴 매칭 장치.
  22. 제19항 또는 제21항에 있어서,
    상기 래치는,
    두 입력 단자 및 출력 단자를 가지는 제3 다중화기, 그리고
    상기 제3 다중화기의 출력 단자에 연결되어 있는 입력 단자 및 상기 제3 다 중화기의 두 입력 단자 중 하나의 입력 단자에 연결되어 있는 출력 단자를 가지는 플립플롭을 포함하며,
    상기 다중화기의 두 입력 단자 중 다른 하나의 입력 단자가 상기 래치의 입력 단자를 형성하는 패턴 매칭 장치.
  23. 제22항에 있어서,
    상기 플립플롭은 리셋 신호가 입력되는 제어 단자를 더 포함하는 패턴 매칭 장치.
KR1020090079439A 2008-12-03 2009-08-26 패턴 매칭 장치 및 방법 KR101276796B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/629,478 US8463988B2 (en) 2008-12-03 2009-12-02 System and method for matching patterns

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20080121998 2008-12-03
KR1020080121998 2008-12-03

Publications (2)

Publication Number Publication Date
KR20100063640A KR20100063640A (ko) 2010-06-11
KR101276796B1 true KR101276796B1 (ko) 2013-07-30

Family

ID=42363562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090079439A KR101276796B1 (ko) 2008-12-03 2009-08-26 패턴 매칭 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101276796B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230166472A (ko) 2022-05-31 2023-12-07 삼성에스디에스 주식회사 패턴 검출 방법 및 그 시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101716017B1 (ko) * 2015-01-13 2017-03-14 단국대학교 산학협력단 문자열 매칭 장치 및 그 방법
US11276463B2 (en) * 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050050099A (ko) * 2002-08-28 2005-05-27 비하나 인코퍼레이티드 고속 문맥 검색 및 데이터 패턴의 특성화를 수행하는 프로그램가능한 룰 프로세싱 장치
KR20060080176A (ko) * 2003-08-13 2006-07-07 센서리 네트웍스, 인코포레이티드 집적 회로 장치 및 고 쓰루풋 시그네쳐 기반 네트워크애플리케이션을 위한 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050050099A (ko) * 2002-08-28 2005-05-27 비하나 인코퍼레이티드 고속 문맥 검색 및 데이터 패턴의 특성화를 수행하는 프로그램가능한 룰 프로세싱 장치
KR20060080176A (ko) * 2003-08-13 2006-07-07 센서리 네트웍스, 인코포레이티드 집적 회로 장치 및 고 쓰루풋 시그네쳐 기반 네트워크애플리케이션을 위한 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230166472A (ko) 2022-05-31 2023-12-07 삼성에스디에스 주식회사 패턴 검출 방법 및 그 시스템

Also Published As

Publication number Publication date
KR20100063640A (ko) 2010-06-11

Similar Documents

Publication Publication Date Title
Lin et al. Optimization of pattern matching circuits for regular expression on FPGA
US7899904B2 (en) Hardware processing of regular expressions
US8972450B2 (en) Multi-stage parallel multi-character string matching device
Bispo et al. Regular expression matching for reconfigurable packet inspection
US20110022617A1 (en) Finite automaton generation system for string matching for multi-byte processing
Le et al. A memory-efficient and modular approach for large-scale string pattern matching
US20060259508A1 (en) Method and apparatus for detecting semantic elements using a push down automaton
US8527488B1 (en) Negative regular expression search operations
Bando et al. Scalable lookahead regular expression detection system for deep packet inspection
Wang et al. Memory-based architecture for multicharacter Aho–Corasick string matching
JP2017049753A (ja) 半導体装置および情報処理システム
KR101276796B1 (ko) 패턴 매칭 장치 및 방법
US10691964B2 (en) Methods and systems for event reporting
Erdem Tree-based string pattern matching on FPGAs
US8463988B2 (en) System and method for matching patterns
KR101382787B1 (ko) 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법
Chang et al. The cost effective pre-processing based NFA pattern matching architecture for NIDS
Lin et al. Optimization of pattern matching algorithm for memory based architecture
Sourdis Designs and algorithms for packet and content inspection.
Soewito et al. Self-addressable memory-based FSM: a scalable intrusion detection engine
Polig et al. Token-based dictionary pattern matching for text analytics
Faezipour et al. Constraint repetition inspection for regular expression on FPGA
Wang et al. Hardware accelerator to detect multi-segment virus patterns
Chen et al. A multi-character transition string matching architecture based on Aho-Corasick algorithm
KR101262337B1 (ko) 다문자 병렬 데이터 스트림에 대한 패턴 매칭 방법 및 장치

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
LAPS Lapse due to unpaid annual fee