KR20130018608A - 방화벽 엔진 및 이를 이용한 패킷 매칭 방법 - Google Patents

방화벽 엔진 및 이를 이용한 패킷 매칭 방법 Download PDF

Info

Publication number
KR20130018608A
KR20130018608A KR1020120086666A KR20120086666A KR20130018608A KR 20130018608 A KR20130018608 A KR 20130018608A KR 1020120086666 A KR1020120086666 A KR 1020120086666A KR 20120086666 A KR20120086666 A KR 20120086666A KR 20130018608 A KR20130018608 A KR 20130018608A
Authority
KR
South Korea
Prior art keywords
rule
packet
buffer
matching
stored
Prior art date
Application number
KR1020120086666A
Other languages
English (en)
Other versions
KR101383397B1 (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 KR20130018608A publication Critical patent/KR20130018608A/ko
Application granted granted Critical
Publication of KR101383397B1 publication Critical patent/KR101383397B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명적 개념의 일 실시예에 따르면, 패킷을 송신 또는 수신하는 디바이스에서 패킷 매칭 방법에 있어서, 상기 디바이스가, 복수의 패킷 매칭용 룰들을 저장하는 단계; 및 상기 디바이스가, 상기 송신 또는 수신 패킷과, 상기의 복수의 패킷 매칭용 룰들 중에서 적어도 2개 이상의 룰을 동시에 매칭시키는 단계;를 포함하는 패킷 매칭 방법이 개시된다.

Description

방화벽 엔진 및 이를 이용한 패킷 매칭 방법 {Firewall engine and method of packet matching using the same}
본 발명은 방화벽 엔진 및 이를 이용한 패킷 매칭 방법에 관한 것으로, 보다 상세하게는, 하나의 패킷에 대해 한번에 복수의 룰을 매칭할 수 있는 방화벽 엔진 및 이를 이용한 패킷 매칭 방법에 관한 것이다.
인터넷이 광범위하게 사용되면서 웜이나 트로이목마, 바이러스, DDoS 등과 같은 다양한 형태의 악성 멀웨어들이 나타나고 그 피해도 커지고 있다. 따라서, 외부 네트워크로부터 디바이스를 보호하기 위해 안티멀웨어 엔진 및/또는 방화벽 엔진과 같은 네트워크 침해 대응 방법 및 장치가 반드시 필요하게 되었다.
특히, 모바일 기기의 경우는 사용할 수 있는 리소스가 제한되어 있어서, 리소스를 최소한으로 사용하면서 고속으로 데이터나 패킷을 매칭할 수 있는 고속 매칭 기술이 요구되고 있다.
본 발명적 개념의 일 실시예에 따르면 패킷을 입력 받으면 패킷, 룰, 및 마스크를 동시에 매칭하여 매칭 결과를 출력할 수 있는 매칭부를 포함하는 방화벽 엔진 및 이를 이용한 패킷 매칭 방법을 제공하는 것을 목적으로 한다.
본 발명적 개념의 일 실시예에 따르면, 하나의 패킷에 대해 복수의 패킷 매칭 룰들 중에서 적어도 2개 이상의 룰을 동시에 매칭시키는 매칭부를 포함하는 방화벽 엔진 및 이를 이용한 패킷 매칭 방법을 제공하는 것을 목적으로 한다.
본 발명적 개념의 일 실시예에 따르면, 유입되는 패킷을 매칭부의 매칭 동작에 적합한 비트열 구조의 패킷으로 변환할 수 있는 방화벽 엔진 및 이를 이용한 패킷 매칭 방법을 제공하는 것을 목적으로 한다.
본 발명적 개념의 일 실시예에 따르면, 패킷을 송신 또는 수신하는 디바이스에서 패킷 매칭 방법에 있어서, 상기 디바이스가, 복수의 패킷 매칭용 룰들을 저장하는 단계; 및 상기 디바이스가, 상기 송신 또는 수신 패킷과, 상기의 복수의 패킷 매칭용 룰들 중에서 적어도 2개 이상의 룰을 동시에 매칭시키는 단계;를 포함하는 것을 특징으로 하는 패킷 매칭 방법이 제공된다.
본 발명적 개념의 다른 실시예에 따르면, 패킷을 수신 또는 송신하는 디바이스에 사용되는 방화벽 엔진에 있어서, 제1 룰 그룹을 저장하는 제1 서브 매칭부; 및 제2 룰 그룹을 저장하는 제2 서브 매칭부;를 포함하며, 제1 서브 매칭부는 수신 또는 송신 패킷에 대하여 제1 룰 그룹에 포함된 룰들 중에 어느 하나와 매칭 동작을 수행하며, 동시에 제2 서브 매칭부는 상기 패킷에 대하여 제2 룰 그룹에 포함된 룰들 중에 어느 하나와 매칭 동작을 수행하는 것을 특징으로 하는 방화벽 엔진이 제공된다.
본 발명적 개념의 하나 이상의 실시예에 따르면 패킷을 입력받아 패킷, 룰, 및 마스크를 동시에 매칭하여 매칭 결과를 출력할 수 있다.
본 발명적 개념의 하나 이상의 실시예에 따르면 하나의 패킷에 대해 복수의 패킷 매칭 룰들 중에서 적어도 2개 이상의 룰을 동시에 매칭시킴으로써 매칭 속도를 높일 수 있다.
본 발명적 개념의 하나 이상의 실시예에 따르면 유입되는 패킷을 매칭부의 매칭 동작에 적합한 비트열 구조의 패킷으로 변환함으로써 매칭부의 하드웨어 구성을 간단화하고 매칭 속도를 높일 수 있다.
도1은 본 발명적 개념의 예시적 일 실시예에 따른 방화벽 엔진이 장착되는 디바이스를 설명하기 위한 도면이고,
도2는 본 발명적 개념의 예시적 일 실시예에 따른 방화벽 엔진을 설명하기 위한 도면이고,
도3a는 도2의 매칭부(40) 내의 룰 메모리의 일 실시예를 도식적으로 나타내는 도면이고,
도3b는 본 발명적 개념의 예시적 일 실시예에 따른 룰, 마스크, 및 패킷의 각 필드 구성을 나타내는 도면이고,
도4는 본 발명적 개념의 일 실시예에 따른 매칭부의 구성을 나타내는 도면이고,
도5는 본 발명적 개념의 일 실시예에 따른 서브 매칭부의 구성을 나타내는 도면이고,
도6은 본 발명적 개념의 일 실시예에 따른 룰, 마스크, 및 패킷에 대한 논리연산을 설명하기 위한 도면이고,
도7은 본 발명적 개념의 일 실시예에 따른 룰, 마스크, 및 패킷의 논리연산을 위한 논리 회로도를 나타내는 도면이고,
도8은 본 발명적 개념의 일 실시예에 따른 패킷 매칭 방법을 나타내는 흐름도이고,
도9a 및 도9b는 본 발명적 개념의 일 실시예에 따른 패킷 매칭 결과를 처리하는 예를 나타내는 도면이고,
도10은 본 발명적 개념의 일 실시예에 따른 도2의 패킷 캡쳐부(30)에 입력되는 패킷을 도식적으로 나타내는 도면이고,
도11은 상기 패킷 캡쳐부에 의해 변환된 패킷의 구성을 도식적으로 나타내는 도면이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 개재될 수도 있다는 것을 의미한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다' 및/또는 '포함하는'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도1은 본 발명적 개념의 예시적 일 실시예에 따른 방화벽 엔진이 장착되는 디바이스를 설명하기 위한 도면이다.
도 1을 참조하면, 일 실시예에 따른 디바이스(10)는 하드웨어 및/또는 소프트웨어의 각종 리소스(11), 방화벽 엔진(12), 룰(rule) 데이터베이스(DB) 저장부(13), 및 네트워크 인터페이스 카드(NIC)(14)를 포함할 수 있다.
상기 디바이스(10)는, 스마트폰, PDA, 랩탑 컴퓨터와 같은 휴대용 기기 또는 데스크탑 컴퓨터와 같은 비-휴대용 디바이스 중 어느 하나가 될 수 있다.
방화벽 엔진(12)은, 디바이스(10)가 인터넷 등의 네트워크를 통한 통신을 위해 패킷을 송수신할 때, 패킷의 통과를 허용하거나 차단하는 역할을 한다. 방화벽 엔진(12)는 하드웨어 및/또는 펌웨어로 구현될 수 있다.
룰 DB 저장부(13)는 상기 소정 룰의 데이터베이스를 저장하는 저장장치이다. 일 실시예에서 방화벽 엔진(12)은 상기 룰 DB 저장부(13) 내의 룰 DB를 참조하여 패킷의 통과를 허용하거나 차단한다.
NIC(14)는 디바이스(10)가 외부 네트워크와 통신하기 위한 확장카드로서, 패킷이 NIC(14)를 통해 디바이스(10)로/로부터 입력 또는 출력된다.
하드웨어 및/또는 소프트웨어의 리소스(11)는 디바이스(10) 내에서 상술한 방화벽 엔진(12), 룰 DB 저장부(13), 및 NIC(14)를 제외한 나머지 하드웨어 및/또는 소프트웨어 리소스를 모두 포함할 수 있다. 예를 들어 리소스(11)는 디바이스(10)의 중앙처리장치(CPU), 메모리, 디스플레이, 저장장치 등의 하드웨어, 이러한 하드웨어 위에 설치되는 운영체제(OS) 및 각종 어플리케이션 등의 소프트웨어 및 각종 펌웨어를 포함할 수 있다.
도시한 실시예에서 리소스(11), 방화벽 엔진(12), 룰 DB 저장부(13), 및 NIC(14)는 버스(bus)를 통해 서로 통신할 수 있다. 이를 위해 방화벽 엔진(12), 저장부(13), NIC(14) 등의 구성소자 각각은 인터페이스부나 드라이버를 더 포함할 수 있으며, 본 명세서에서는 본 발명의 요지를 흐리지 않기 위해 도시를 생략하였다.
도1은 방화벽 엔진(12), 룰 DB 저장부(13), 및 NIC 카드(14)는 시스템 온 칩(SoC)으로 디바이스(10)에 장착됨을 도시하고 있으나 이것은 방화벽 엔진(12)이 디바이스에 설치되는 일 실시예를 설명한 것에 불과하다. 대안적인 실시예에서, 방화벽 엔진(12)이 SoC가 아닌 리소스(11)측의 소정 칩 상에 장착될 수도 있고, NIC(14)도 디바이스(10)측에 설치될 수 있다. 또한 SoC를 사용하지 않고, 방화벽 엔진(12), 룰 DB 저장부(13), 및 NIC(14)가 각기 별개의 구성소자로 디바이스(10)에 설치될 수 있음도 물론이다.
도2는 본 발명적 개념의 예시적 일 실시예에 따른 방화벽 엔진을 설명하기 위한 도면이다.
도2를 참조하면 방화벽 엔진(12)은 방화벽 컨피규레이션부(configuration part)(20), 패킷 캡쳐부(30), 및 매칭부(40)를 포함한다.
방화벽 컨피규레이션부(20)는 방화벽 엔진(12)의 구성을 설정할 수 있다. 방화벽 컨피규레이션부(20)는, 예를 들어 매칭될 룰(rule)의 크기, 매칭부(40) 내에서 상기 룰을 저장하는 룰 메모리의 크기 등을 설정할 수 있다.
일 실시예에서 방화벽 컨피규레이션부(20)는 제어신호 및 어드레스 신호를 생성하여 매칭부(40)로 전송할 수 있다. 이 때 상기 제어신호는, 예를 들어 매칭부(40) 내의 룰 메모리의 크기를 설정하기 위해 로우(row) 마스크 및 컬럼(column) 마스크의 값을 지정하는 신호를 포함할 수 있다. 또한 방화벽 컨피규레이션부(20)는 매칭부(40)에 의한 매칭의 결과를 수신하여 보관하는 기능을 포함할 수 있다.
매칭부(40)는 룰을 적용하여 패킷 매칭을 수행할 수 있다. 일 실시예에서 매칭부(40)는 적용될 룰을 저장하는 룰 메모리, 룰과 패킷을 비교하기 위한 매치 로직(match logic) 및 다수의 버퍼를 포함할 수 있으며, 이에 대해서는 도4 및 도5를 참조하여 후술하기로 한다.
패킷 캡쳐부(30)는 NIC(14)를 통해 외부에서 들어오는 패킷 또는 NIC(14)를 통해 외부로 송신될 패킷을 수신하여 처리할 수 있다. 패킷 캡쳐부(30)는 수신한 패킷을 매칭부(40)의 매칭 작업에 적합한 형식에 맞게 변환할 수 있다. 즉 NIC(14)로부터 IPv4 또는 IPv6의 형식에 따른 패킷을 수신하고, 이를 소정 형식의 비트열로 변환할 수 있다. 예를 들어 매칭에 적용될 룰이 128비트 길이라고 하면, 이와 매칭될 패킷도 동일한 길이를 갖는 것이 바람직하므로, 패킷 캡쳐부(30)가 수신된 패킷을 128 비트열의 패킷으로 변환시킨다. 그 후 패킷 캡쳐부(30)는 변환된 패킷을 방화벽 컨피규레이션부(20)로 전송하고, 방화벽 컨피규레이션부(20)가 이 패킷을 매칭부(40)로 전송한다. 대안적 실시예의 경우 패킷 캡쳐부(30)가 상기 변환된 패킷을 매칭부(40)로 직접 전송할 수도 있다.
도3a는 도2의 매칭부(40) 내의 룰 메모리의 일 실시예를 도식적으로 나타낸다. 매칭부(40)는 패킷과 매칭할 다수의 룰을 저장하기 위한 룰 메모리를 포함할 수 있는데, 예컨대 도시된 일 실시예의 경우 128비트 x 256비트 크기를 가진다. 이 예에서, 하나의 룰의 크기는 최대 128비트이며, 이러한 룰이 최대 256개 저장될 수 있음을 의미한다.
도시한 바와 같이 룰 메모리는 로우 마스크(RM) 및 컬럼 마스크(CM)에 의해 룰 메모리의 실제 사용가능 크기가 설정될 수 있다. 도시된 128x256의 룰 메모리에서 로우 마스크(RM)의 길이는 256비트이고 컬럼 마스크의 길이는 128비트이다. 이 구성에서, 예를 들어 로우 마스크(RM) 중 소정 비트(예컨대 m개의 비트)가 1로, 나머지 비트는 0으로 설정되고 컬럼 마스크(CM) 중 소정 비트(예컨대 n개의 비트)가 1로, 나머지 비트가 0으로 설정된다면, 실제 사용되는 룰 메모리의 크기는 (m비트)x(n비트)가 된다.
룰 메모리의 크기는 실시 형태에 따라 가변될 수 있다. 도시된 실시예에서는 룰 메모리의 크기를 128x256로 가정하였지만, 대안적인 실시예에서 룰 메모리의 가로 및/또는 세로의 비트가 위와 다른 값을 가질 수도 있고, 위와 동일한 크기의 룰 메모리가 2개 병렬 또는 직렬로 연결됨으로써 128x512 또는 256x256의 크기를 가지도록 구성할 수도 있다.
한편 도3a에서는 룰 메모리를 하나의 메모리 어레이로 표현하였지만 이는 룰 메모리의 전체 크기를 설명하기 위한 것이고, 실제 룰 메모리는 다수의 서브 어레이로 분할되어 구현될 수 있다. 이에 대해서는 도4 및 도5를 참조하여 후술하기로 한다.
도3b는 본 발명적 개념의 예시적 일 실시예에 따른 룰, 마스크, 및 패킷의 각 필드 구성을 나타내는 도면이다.
룰 메모리가 도3a에 예시한 바와 같이 128x256 크기를 가진다고 가정할 때, 도3b를 참조하면, 룰 필드는 128비트의 길이를 갖는다. 다만 일 실시예에서 64비트의 비교 영역을 2개(Range 0 및 Range 1) 가질 경우 총 256 비트 길이가 될 수 있다. 이 경우 룰 필드의 최하위의 2개 비트는 이 비교 영역을 위한 비트로서, 비교 영역의 비교 결과를 나타내는 역할을 한다.
본 발명적 개념의 일 실시예는 마스크 필드를 더 포함한다. 도3b에 도시한 바와 같이 마스크 필드는 128 비트의 길이를 가진다. 최하위의 2개 비트는 룰 필드의 최하위의 2개 비트(즉, 비교 영역을 위한 비트)에 대응할 수 있다.
그리고 상기 룰과 매칭되는 패킷도 동일한 길이, 즉 128비트의 길이를 가진다. 다만 일 실시예에서 32비트의 비교 영역을 2개(Range 0 및 Range 1) 가질 경우 64비트가 추가되어 총 192비트의 길이를 가질 수 있다. 그러나 패킷의 최하위의 2개 비트는 더미(dummy) 비트이다. 즉 실제로 룰, 마스크, 및 패킷을 비교할 때, 최하위의 2개 비트에 대해서는, 룰과 마스크 비트들만 비교하게 된다.
도3b에 도시한 마스크는 도3a에서의 로우 마스크(RM) 및 컬럼 마스크(CM)와는 별개인 마스크로서, 각각의 룰에 하나씩 대응하여 존재하는 마스크이다(이하에서, 로우 마스크(RM) 및 컬럼 마스크(CM)와 구별하기 위해 "룰대응 마스크"로 칭하기도 함). 즉 룰 메모리에 전체 256개의 룰이 저장되어 있다면, 각각의 룰에 대응하는 룰대응 마스크도 256개가 존재한다. 룰대응 마스크는 룰이 저장된 룰 메모리에 함께 저장될 수도 있고 별도의 메모리에 저장될 수도 있다.
룰과 패킷의 매칭 작업시 룰과 패킷의 모든 비트열을 전부 비교할 필요가 없을 수도 있다. 이와 같이 룰의 일부분만을 패킷과 비교하고자 할 때, 이 룰에 대응하는 룰대응 마스크를 이용하여 룰의 상기 일부분을 제외한 나머지를 마스크 처리함으로써, 룰의 상기 일부분만을 패킷과 매칭하는 것이 가능하다. 도3b를 참조하면 룰대응 마스크는 룰과 동일한 크기, 즉 도시된 실시예의 경우 128비트를 가진다.
도4는 본 발명적 개념의 일 실시예에 따른 매칭부의 구성을 나타내는 도면이다.
도4를 참조하면, 매칭부(40)는 복수개의 서브 매칭부(40-1 내지 40-n) 및 멀티플렉서(MUX)(42)를 포함할 수 있다. 일 실시예에서 복수개의 서브 매칭부(40-1 내지 40-n)는 모두 동일한 구조로 구현될 수 있고, 도시된 일 실시예의 경우 매칭부(40)가 16개의 서브 매칭부를 포함한다. 따라서 도3a에서와 같이 전체 128x256 크기의 룰 메모리가 16개의 서브 매칭부로 분할되므로, 상기 전체 룰 메모리에 저장될 룰도 16개의 그룹으로 나뉘어 서브 매칭부에 각각 저장된다. 즉 이 실시예에서 하나의 서브 매칭부마다 128비트 크기의 룰을 16개씩 저장할 수 있다.
도4에 도시되어 있듯이 각각의 서브 매칭부는 패킷 및 어드레스 신호와 제어 신호를 수신할 수 있다. 실시 형태에 따라, 서브 매칭부는 패킷 캡쳐부(30)로부터 패킷을 수신받거나 방화벽 컨피규레이션부(20)로부터 패킷을 수신받을 수 있다. 그리고 각각의 서브 매칭부는 방화벽 컨피규레이션부(20)로부터 어드레스 신호 및 제어 신호를 받는다.
도면의 신호선들로부터 알 수 있듯이, 소정 패킷은 각각의 서브 매칭부 모두에 동시에 입력될 수 있고, 어드레스 신호 및 제어신호도 각 서브 매칭부에 동시에 입력된다. 따라서 각각의 서브 매칭부는, 입력받은 어드레스 신호에 의해 선택된 어드레스에 저장된 룰을 로딩(loading)하여 패킷과 논리연산을 수행한다. 도시된 실시에에서, 패킷, 어드레스 신호 및 제어 신호가 16개의 서브 매칭부 각각에 동시에 입력되므로, 16개의 서브 매칭부에서 상기 논리연산이 동시에 수행된다.
각 서브 매칭부에서 수행된 논리연산의 결과는 멀티플렉서(MUX)(42)로 각각 출력되고, MUX(42)는 전체 서브 매칭부의 결과에 대해 논리연산을 수행하고 그 결과를 방화벽 컨피규레이션부(20)로 전송한다.
이제 도5를 참조하여 각 서브 매칭부의 내부구조 및 논리연산 방법을 설명하기로 한다.
도5는 본 발명적 개념의 일 실시예에 따른 서브 매칭부의 구성을 나타내는 도면이다. 도5에서는 두 개의 서브 매칭부(40-1, 40-2)만을 도시하였지만 이는 설명의 편의를 위한 것이고, 도4에서와 마찬가지로 128x256 크기의 전체 룰 메모리를 갖는 매칭부(40)가 16개의 서브 매칭부로 구성되어 있다고 가정한다.
도5를 참조하면, 제1 서브 매칭부(40-1)는 매치 로직(401), 패킷 버퍼(402), 룰 버퍼(403), 마스크 버퍼(404), 룰 메모리(405), 및 마스크 메모리(406)를 포함할 수 있다.
룰 메모리(405)는 도3a를 참조하여 설명한 128x256 크기의 전체 룰 메모리가 16개로 분할된 것 중 하나이고, 따라서 룰 메모리(405)는 128x16의 크기를 가진다. 즉 16개의 128비트 크기의 제1 그룹의 룰(R1 내지 R16)을 저장할 수 있다.
마스크 메모리(406)는 룰 메모리(405)에 저장된 각 룰에 1:1로 대응하는 룰대응 마스크를 저장하는 메모리이다. 도시된 실시예에서 마스크 메모리(406)는 제1 그룹의 각 룰(R1 내지 R16)에 대응하는 제1 그룹의 룰대응 마스크(M1 내지 M16)를 저장하고 있다.
서브 매칭부(40-1)는 또한 매치 로직(401), 패킷 버퍼(402), 룰 버퍼(403), 및 마스크 버퍼(404)를 포함할 수 있다.
매치 로직(401)은 룰 메모리(405)에 속한 어느 하나의 룰을 패킷과 논리연산 함으로써 매칭 동작을 수행한다. 매치 로직(401)은 하드웨어로 구현될 수 있고, 실시 형태에 따라 룰 메모리(405)에 포함되어 구현될 수도 있다.
패킷 버퍼(402)는 방화벽 컨피규레이션부(20) 또는 패킷 캡쳐부(30)로부터 수신받는 송수신 패킷을 저장한다. 룰 버퍼(403)는 룰 메모리(405)에 저장된 제1 그룹의 룰(R1 내지 R16) 중 어드레스 신호에 따라 선택된 하나의 룰을 로딩하여 저장한다. 마스크 버퍼(404)는 상기 어드레스 신호에 따라 선택된 하나의 마스크를 로딩하여 저장한다. 이 저장되는 마스크는 룰 버퍼(403)에 로딩된 룰에 대응하는 룰대응 마스크이다. 즉 하나의 어드레스 신호에 따라, 하나의 룰과 하나의 마스크(즉, 상기 룰에 대응하는 룰대응 마스크)가 동시에 선택되어 각각 룰 버퍼(403)와 마스크 버퍼(404)에 로딩된다.
매치 로직(401)은 패킷 버퍼(402)에 저장된 패킷과, 룰 버퍼(403)에 저장된 룰과, 마스크 버퍼(404)에 저장된 마스크 간에 논리 연산을 수행함으로써 매칭 동작을 수행하고, 그 결과를 MUX(42)로 출력한다.
한편, 제2 서브 매칭부(40-2)는 상술한 제1 서브 매칭부(40-1)와 동일한 내부 구성을 가진다. 다만, 제1 서브 매칭부(40-1)가 전체 256개 룰 중 제1 그룹의 룰(R1 내지 R16) 및 이에 대응하는 제1 그룹의 룰대응 마스크(M1 내지 M16)를 저장하고 있는 반면, 제2 서브 매칭부(40-2)는 그 나머지 룰 중 제2 그룹의 룰(R17 내지 R32) 및 이에 대응하는 제2 그룹의 룰대응 마스크(M17 내지 M32)를 저장하고 있다.
도시된 바와 같이 제1 서브 매칭부(40-1)에 입력되는 어드레스 신호 및 제어 신호가 제2 서브 매칭부(40-2)에도 동일하게 입력되고 있으므로, 제2 서브 매칭부(40-2)에서도, 상기 어드레스 신호에 따라 하나의 룰 및 이에 대응하는 룰대응 마스크가 동시에 선택되어 각각 룰 버퍼(403)와 마스크 버퍼(404)에 로딩된다. 즉, 예를 들어 어드레스 신호가 룰 메모리(405) 내의 가장 상위 주소에 저장된 룰을 선택하는 신호라면, 제1 서브 매칭부(40-1)에서는 룰(R1) 및 이와 대응하는 마스크(M1)가 선택되어 제1 서브 매칭부(40-1) 내의 룰 버퍼 및 마스크 버퍼에 각각 로딩되고, 이와 동시에, 제2 서브 매칭부(40-2)에서는 룰(R17) 및 마스크(M17)가 선택되어 제2 서브 매칭부(40-2) 내의 룰 버퍼 및 마스크 버퍼에 각각 로딩된다.
각 서브 매칭부의 매치 로직(401)은 패킷 버퍼(402)에 저장된 패킷, 상기 룰 버퍼(403)에 로딩된 룰, 및 마스크 버퍼(404)에 로딩된 마스크를 논리 연산하여 매칭 동작을 동시에 수행하고, 매칭 결과를 MUX(42)로 출력한다.
그 후 각 서브 매칭부(40-1, 40-2)는 방화벽 컨피규레이션부(20)로부터 다음 어드레스 신호를 동시에 수신받고, 이에 따라 제1 서브 매칭부(40-1)는 룰(R2) 및 이의 대응 마스크(M2)를 룰 버퍼 및 마스크 버퍼로 각각 로딩하고 제2 서브 매칭부(40-2)는 룰(R18) 및 이의 대응 마스크(M18)를 룰 버퍼 및 마스크 버퍼로 각각 로딩한다. 그리고 각 서브 매칭부는 상기 동작들을 반복하여, 룰 메모리(405) 내의 모든 룰에 대해 (즉, 제1 서브 매칭부에서는 제1 그룹의 룰(R1 내지 R16)에 대해, 제2 서브 매칭부에서는 제2 그룹의 룰(R17 내지 R32)에 대해) 패킷과의 매칭 동작 및 매칭 결과의 출력 동작을 수행함으로써, 하나의 패킷에 대한 매칭을 완료하게 된다.
이 때, 하나의 패킷에 대해, 제1 그룹의 룰 중 어느 하나의 룰과 상기 패킷을 매칭시키는 동작과, 제2 그룹의 룰 중 어느 하나의 룰과 상기 패킷을 매칭시키는 동작을 동시에 수행하기 때문에, 결과적으로 패킷 매칭 동작을 상당히 단축할 수 있게 된다. 예를 들어 하나의 룰을 패킷과 논리비교하는 데 한 클럭의 시간이 소요된다면, 전체 256개의 룰 중 각 서브 매칭부가 16개씩의 룰을 저장하고 있으므로 패킷 하나에 대해 모든 룰과의 매칭 동작을 16 클럭에 수행할 수 있다.
이제 도6 및 도7을 참조하여 룰, 마스크, 및 패킷에 대한 논리연산을 설명하기로 한다.
도6은 본 발명적 개념의 일 실시예에 따른 룰, 마스크, 및 패킷에 대한 논리연산을 설명하기 위한 도면이다. 도6에서 제일 위 그림은 m번째 룰을 나타내고 가운데 그림은 상기 m번째 룰에 대응하는 룰대응 마스크이고, 가장 아래 그림은 룰과 비교되어야 할 패킷을 나타낸다. 룰, 마스크, 및 패킷은 모두 128비트 길이를 가지는 것으로 가정하였다.
이러한 비트열 구성에서, 점선으로 표시하였듯이 룰을 구성하는 각각의 비트는 이에 대응하는 마스크의 비트 및 패킷의 비트와 논리연산된다. 즉 룰의 최상위 비트(128번째 비트)는 마스크와 패킷의 최상위 비트와 논리연산되고, 룰의 최상위에서 두번째 비트는 마스크와 패킷의 최상위에서 두번째 비트와 논리연산 되며, 이러한 식으로 최하위 비트에 이르기까지 룰의 모든 비트가 각각 대응하는 마스크와 패킷의 비트와 논리연산된다.
도7은 본 발명적 개념의 일 실시예에 따른 룰, 마스크, 및 패킷의 논리연산을 위한 논리회로도를 나타내는 도면으로서, 상기 도6의 논리연산을 수행하는 논리회로의 일 실시예이다.
m번째 룰의 최상위 비트(128번째 비트)는 첫번째 AND 게이트의 입력단에 연결되고, 이에 대응하는 룰대응 마스크의 최상위 비트도 상기 첫번째 AND 게이트에 연결되어 있다. 또한 도3a에서 설명한 로우 마스크(RM) 및 컬럼 마스크(CM)도 상기 게이트에 연결되어 있는데, 상기 첫번째 AND 게이트가 m번째 룰의 최상위 비트를 논리연산하기 위한 것이므로, m번째의 로우 마스크(RM) 값 및 최상위 비트의 컬럼 마스크(CM) 값이 각각 상기 게이트의 입력단에 연결된다.
마찬가지로 m번째 룰의 최상위에서 두번째 비트(127번째 비트)는 두번째 AND 게이트의 입력단에 연결되고, 이에 대응하는 마스크의 대응 비트도 상기 두번째 AND 게이트에 연결된다. 또한 127번째 컬럼 마스크(CM) 값이 상기 두번째 게이트에 연결되며, 로우 마스크(RM) 값은 상기 첫번째 AND 게이트에 입력되는 값과 동일한 값이다. 이것은, 현재 매칭 대상이 되는 룰이 m번째 룰이기 때문이다.
이 구성에서, 예컨대 n번째 컬럼 마스크(CM) 값이 0이라면, 매칭 결과에 상관없이 n번째의 비트는 0이 되므로 해당 비트의 비교 결과가 무시된다. 만일 m번째 로우 마스크(RM)가 0이라면 m번째 룰 전체의 매칭이 무시된다.
또한 도면에 도시한 실시예에서, 상기 각각의 AND 게이트의 출력값은 패킷의 비트열의 각각의 대응 비트와 논리연산이 이루어진다. 즉 128번째 비트에 대한 AND 게이트의 결과값은 첫번째 XOR 게이트에 의해 패킷의 128번째 비트와 논리연산되고, 127번째 비트에 대한 AND 게이트의 결과는 두번째 XOR 게이트에 의해 패킷의 127번째 비트와 논리 연산되고, 이런 방식으로 최하위 비트에 대해서까지 논리 연산이 모두 수행된다. 그 후 각 비트에 대한 XOR 게이트의 출력값이 모두 AND 연산된다.
도시한 실시예서와 같이 각 비트에 대한 논리연산 회로는 복수의 논리 게이트의 조합으로 구현 가능하므로, 최상위 비트부터 최하위 비트까지의 전체 논리연산은 한 클럭에 모두 수행될 수 있다. 즉 하나의 룰을 하나의 패킷과 매칭하는 동작이 한 클럭에 수행된다.
도8은 본 발명적 개념의 일 실시예에 따른 패킷 매칭 방법을 나타내는 흐름도이다.
단계(S801)에서 매칭에 사용될 룰이 룰 메모리에 저장된다. 최초 단계에서 룰은 방화벽 엔진(12) 외부의 룰 DB 저장부(13)에 저장되어 있다가, 단계(S801)에서 이 룰이 방화벽 엔진(12)의 매칭부(40) 내의 룰 메모리에 전송되어 저장될 수 있다.
룰은 도3a에 도시된 바와 같이 물리적으로 하나의 메모리 어레이에 저장될 수 있다. 보다 바람직한 실시예에서, 룰은 도4 및 도5에서 설명한 바와 같이 다수의 서브 매칭부 내의 각각의 룰 메모리(405)에 저장될 수도 있다. 이 경우 상기 룰은 서브 매칭부의 수만큼의 그룹으로 나누어져 각 서브 매칭부의 룰 메모리에 저장된다.
또한 일 실시예에서, 상기 단계(S801)에서 상기 룰의 각각에 대응하는 룰대응 마스크도 매칭부(40) 내의 메모리에 저장될 수 있다. 룰대응 마스크는 룰 메모리에 저장될 수도 있고 별도의 마스크 메모리(406)에 저장될 수도 있다.
그 후 단계(S803)에서, 매칭부(40)가 송신용 또는 수신용 패킷을 수신하여 패킷 버퍼에 패킷을 저장한다. 도4 및 도5의 실시예에서, 수신된 패킷은 각 서브 매칭부의 각각의 패킷 버퍼(402)에 동시에 입력되어 저장된다.
다음으로 단계(S805)에서, 매칭부(40)가 어드레스 신호를 수신하고, 이 어드레스 신호에 기초하여 선택된 룰 및 이에 대응하는 룰대응 마스크를 버퍼에 로딩한다.
일 실시예에서 매칭부(40)는 어드레스 신호를 방화벽 컨피규레이션부(20)로부터 수신할 수 있다. 도4 및 도5의 실시예에서, 수신된 어드레스 신호는 각 서브 매칭부에 동시에 입력되고, 이 어드레스 신호에 따라 각 서브 매칭부마다 룰이 하나씩 선택되어 룰 버퍼(403)에 로딩된다. 또한 이와 함께, 이 룰에 대응하는 룰대응 마스크도 선택되어 마스크 버퍼(404)에 로딩된다.
또한 상기 단계(S805)에서, 어드레스 신호와 함께 제어 신호도 매칭부(40)에 입력될 수 있다. 여기서 제어 신호는 예를 들어 룰 메모리의 크기를 설정하기 위한 로우 마스크(RM) 및 컬럼 마스크(CM)에 관한 신호를 포함할 수 있다.
그 후 단계(S807)에서, 상기 패킷 버퍼(402)에 저장된 패킷에 대해 룰을 적용하는 매칭 동작을 수행한다. 구체적인 일 실시예에서, 이 매칭 동작은, 패킷 버퍼(402), 룰 버퍼(403), 및 마스크 버퍼(404)에 각각 저장되어 있는 패킷, 룰, 및 마스크를 논리연산 함으로써 수행된다.
도4 및 도5를 참조하여 설명하였듯이 이 매칭 동작은 모든 서브 매칭부에 대해 동시에 수행될 수 있다. 즉 동일 패킷에 대해 모든 서브 매칭부마다 하나씩의 룰을 동시에 매칭한다.
다음으로 단계(S809)에서, 각 서브 매칭부가 각각의 매칭 결과를 MUX(42)로 출력한다. 매칭 결과는, 예를 들어 매칭된 룰과 패킷이 동일하다고 판명되면 결과값이 0이 되고 동일하지 않다면 결과값이 1이 될 수 있다.
그 후 단계(S811)에서 각 서브 매칭부마다 해당 그룹의 모든 룰에 대해 매칭 동작을 수행하였는지 판단한다. 이 판단하는 단계는 다양한 방식으로 구현 가능하다. 일 실시예에서 상기 판단 단계(S811)는 클럭수를 카운트함으로써 수행된다. 즉, 예컨대 각 서브 매칭부마다 16개의 룰을 저장하고 한 개의 룰을 매칭할 때 1 클럭이 소요된다고 가정하면, 총 16 클럭이 경과하였는지를 카운트함으로써 상기 판단 단계를 구현할 수 있다.
상기 판단 단계(S811)의 결과 각 서브 매칭부의 모든 룰에 대해 매칭이 수행되었다면, 매칭부(40) 내의 전체 룰을 패킷과 매칭하는 동작이 완료된 것이다. 따라서 다음 단계로 넘어간다. 예를 들어 매칭부(40)가 그 다음 패킷을 수신하여 상기 단계들(S801 내지 S811)을 반복할 수 있다.
그러나 만약 상기 판단 단계(S811)의 판단 결과 아직 매칭되지 않은 룰이 남아 있다면 단계(S813)로 진행하여, 그룹 내에 아직 매칭되지 않은 룰 중 하나의 룰 및 이에 대응하는 마스크를 룰 버퍼(403) 및 마스크 버퍼(404)로 각각 로딩한다. 이 때 상기 로딩되는 룰은, 예컨대 방화벽 컨피규레이션부(20)로부터 새로운 어드레스 신호를 받고 이 신호에 기초하여 선택될 수 있다. 그러나 대안적인 실시예로서, 새로운 어드레스 신호를 받지 않더라도, 예컨대 매칭부(40)가 카운터(도시 생략)을 포함하고 있고 이 카운터에 의해 어드레스 주소를 하나씩 증가시키거나 감소시킴으로써, 아직 매칭되지 않은 룰 및 이에 대응하는 마스크를 선택하게 할 수도 있다.
상기 단계(S813)에 의해 룰 및 대응하는 마스크가 버퍼에 로딩되면, 단계(S807) 및 단계(S809)가 수행되어 상기 룰에 대해서도 패킷과의 매칭 동작이 수행되고 그 매칭 결과가 MUX(42)로 출력되고, 이러한 동작은 하나의 패킷에 대해 서브 매칭부 내의 모든 룰이 매칭될 때까지 반복된다.
상기와 같이 본 발명적 개념의 일 실시예에 따른 패킷 매칭 방법을 통해, 복수의 패킷 매칭 룰들 중에서 적어도 2개 이상의 룰을 동시에 하나의 패킷과 매칭시킬 수 있다.
한편, 도8의 패킷 매칭 방법에 따른 어느 특정 패킷에 대한 매칭의 결과값으로서, 예를 들어 상기 패킷과 일치하는 룰의 개수, 및 상기 일치하는 룰의 어드레스가 출력될 수 있다.
패킷과 일치하는 룰이 복수개인 경우, 일 실시예에서, 최대 4개까지 결과를 저장할 수 있다. 이 경우 미리 설정된 우선순위에 기초하여 우선순위가 높은 룰이 저장될 수 있다. 일 실시예에서 어드레스가 작은 룰이 우선순위가 높도록 설정할 수 있다.
이와 관련하여 도9a 및 도9b는 본 발명적 개념의 일 실시예에 따른 패킷 매칭 결과를 처리하는 예를 나타내는 도면이다.
도9a는 각각의 서브 매칭부(40-1 및 40-2)가 패킷과 일치하는 룰(Ri)을 하나씩 포함하는 경우로서, 각 룰의 각 서브 매칭부 내에서의 주소가 동일한 경우이다. 이와 같이 각 서브 매칭부 별로 동일 위치에 룰이 일치하는 것으로 판명되면, 예컨대 서브 매칭부(40-1)의 룰이 우선순위가 높은 것으로 결정되고 서브 매칭부(40-2)의 룰은 무시하도록 처리할 수 있다.
도9b는 각각의 서브 매칭부(40-1 및 40-2)가 패킷과 일치하는 룰(Rk, Rj)을 하나씩 포함하되 각 룰의 서브 매칭부 내에서의 주소가 상이한 경우이다. 이 경우에는 상기 두 룰 모두에 대해 처리가 가능하며, 다만 실시형태에 따라, 각자의 서브 매칭부 내에서 어드레스가 작은 룰(즉, Rj)이 다른 룰(Rk)에 비해 우선순위가 높은 것으로 미리 설정해놓을 수 있다.
한편, 도2를 참조하여 설명한 바와 같이 패킷 캡쳐부(30)는 NIC(14)를 통해 송수신되는 패킷을 수신하여 처리하는 기능부이다. 패킷 캡쳐부(30)는 수신한 패킷을 매칭부(40)의 매칭 작업에 적합한 형식의 소정 비트열로 변환하여 방화벽 컨피규레이션부(20) 또는 매칭부(40)로 전달한다.
이와 관련하여, 도10은 본 발명적 개념의 일 실시예에 따른 도2의 패킷 캡쳐부(30)에 입력되는 패킷을 도식적으로 나타내고, 도11은 패킷 캡쳐부(30)에 의해 변환된 패킷의 구성을 도식적으로 나타낸다.
도10을 참조하면, 변환전의 패킷은 일반적인 이더넷 패킷 구조를 가진다. 즉 TCP나 UDP 프로토콜을 따르는 패킷의 경우, 도10의 왼쪽 그림과 같이 DM(Destination Mac) 및 SM(Source Mac)으로 표시한 MAC 헤더, SIP(Source IP) 및 DIP(Destination IP)로 표시한 IP 헤더, 및 SPO(Source Port) 및 DPO(Destination Port)로 표시한 TCP 헤더, 패킷 버전(V), 프로토콜(P) 등의 정보를 포함할 수 있다. 만일 패킷이 ICMP 메시지인 경우, 도10의 오른쪽 그림과 같이 DM, SM, SIP, DIP, V, P, TP(Type), 및 CO(Code)를 포함하는 통상의 ICMP 패킷일 수 있다.
본 발명적 개념의 일 실시예에서, 이러한 도10의 패킷들이 패킷 캡쳐부(30)를 통해 변환되면 도11과 같이 변환된 패킷 구조를 가질 수 있다.
도11을 참조하면, 외부로 송신되는(Outgoing) 패킷 중 TCP 또는 UDP 프로토콜을 따르는 패킷은 도11 중 가장 위쪽의 패킷 구조를 가지도록 변환된다. 즉 소정 비트의 더미와 패킷 버전(V), 방향 비트, 및 프로토콜(P) 비트 등이 제일 앞부분에 위치하고, 목적지 Mac 주소(DM), 목적지 IP 주소(DIP), 송신측 IP 주소(SIP)가 연속으로 이어지고, 뒤이어 소정 더미 비트 이후에 목적지 포트(DPO) 및 송신측 포트(SPO)가 이어질 수 있다. 그리고 이와 유사하게, 외부로 송신되는 ICMP 메시지, 외부로부터 수신되는(Incoming) 패킷 중 TCP 또는 UDP 패킷, 외부로부터 수신되는 ICMP 메시지의 각각에 대해서도 도11에 도시한 것과 같은 패킷 구조를 가지도록 각각 변환될 수 있다.
이와 같이 패킷 캡쳐부(30)는 송신용 또는 수신용 패킷을 매칭부(40)의 매칭 동작에 적합한 크기를 갖도록 변환하는데, 예를 들어, 룰 메모리에 저장된 룰이 128비트 크기를 가진다면, 패킷 캡쳐부(30)는 패킷을 128비트열로 변환하여 매칭부(40)로 전달하고, 따라서 매칭부(40)는 동일 크기의 비트열에 대해 매칭 동작을 수행하면 되므로, 매칭부(40)를 하드웨어적으로 단순하게 구현할 수 있고 매칭의 속도를 높일 수 있다.
한편 패킷 캡쳐부(30)는 IP 어드레스가 IPv6 형식을 따르는 경우 이에 적합한 형식으로 패킷을 변환할 수도 있다. 예를 들어, IPv6 패킷에 대해서는 256비트 크기의 룰을 적용하기로 미리 설정해 놓을 수 있고, 패킷 캡쳐부(30)는 IPv6 형식의 패킷을 받으면 이 패킷을 256비트열의 패킷으로 변환시켜 매칭부(40)로 전달할 수 있다. 이 경우 룰 DB 저장부(13)는 256비트 길이의 룰의 DB를 미리 저장하여 놓았다가 매칭부(40) 내의 룰 메모리에 전송하도록 설정하면 된다. 물론, 룰의 길이가 256비트 이므로, 이 때의 도3a의 룰 메모리는 예컨대 256x256의 크기를 가질 수 있음을 이해할 것이다.
또한 상기 실시예를 도8의 패킷 매칭 방법에 적용하여, IP 어드레스가 IPv4인지 IPv6인지를 식별하는 단계를 더 포함하는 대안적 실시예를 상정할 수도 있다. 이 경우, 예컨대 도8의 단계 중 임의의 단계 사이에, 패킷 형식을 식별하는 단계를 더 추가할 수 있다. 다른 실시예로서, 소정 이벤트 발생시나 사용자 명령이 있을 때 패킷 형식을 식별하는 단계를 더 추가할 수도 있다.
일 실시예에서, 이러한 패킷 형식의 식별 단계는, (i) 방화벽 컨피규레이션부(20) 또는 패킷 캡쳐부(30)가 이더넷 패킷으로부터 패킷의 형식을 식별하는 단계, 및 (ii) 만일 현재 매칭부(40)에 저장된 룰이 이 식별된 패킷 형식과 다르다면, 식별된 패킷 형식에 맞는 룰을 룰 메모리에 로딩함으로써 룰 메모리를 업데이트하는 단계를 포함할 수 있다.
이상 설명한 본 발명에 따른 실시예들은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 디바이스 11: 리소스
12: 방화벽 엔진 13: 룰 DB 저장부
14: NIC 20: 방화벽 컨피규레이션부
30: 패킷 캡쳐부 40: 매칭부
42: 멀티플렉서 401: 매치 로직
402: 패킷 버퍼 403: 룰 버퍼
404: 마스크 버퍼 405: 룰 메모리
406: 마스크 메모리

Claims (24)

  1. 패킷을 송신 또는 수신하는 디바이스에서 패킷 매칭 방법에 있어서,
    상기 디바이스가, 복수의 패킷 매칭용 룰들을 저장하는 단계; 및
    상기 디바이스가, 상기 송신 또는 수신 패킷과, 상기의 복수의 패킷 매칭용 룰들 중에서 적어도 2개 이상의 룰을 동시에 매칭시키는 단계;를 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  2. 제 1 항에 있어서,
    상기 패킷과 동시에 매칭되는 룰들은, 상기 디바이스 내의 서로 다른 메모리에 각각 저장된 것을 특징으로 하는 패킷 매칭 방법.
  3. 제 1 항에 있어서,
    상기 복수의 매칭용 룰들 중에서 제1 룰 그룹을 제1 메모리에 저장시키고, 제2 룰 그룹을 제2 메모리에 저장시키는 단계;를 더 포함하며,
    제1 룰 그룹은 상기 복수의 매칭용 룰들 중에서 임의의 2개 이상의 룰들을 포함하고, 제2 룰 그룹은 상기 복수의 매칭용 룰들 중에서 제1 룰 그룹에 속한 룰을 제외한 룰들 중에서 임의의 2개 이상의 룰들을 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  4. 제 3 항에 있어서,
    상기 매칭시키는 단계는, 상기 수신 또는 송신 패킷을, 제1 룰 그룹에 속한 룰과 제2 룰 그룹에 속한 룰에 동시에 매칭시키는 단계를 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  5. 제 3 항에 있어서,
    제1 메모리는 제1 룰 그룹을 저장하는 영역과 제1 패킷 버퍼를 포함하며,
    제2 메모리는 제2 룰 그룹을 저장하는 영역과 제2 패킷 버퍼를 포함하며,
    상기 수신 또는 송신 패킷은 제1 패킷 버퍼와 제2 패킷 버퍼에 저장되며,
    상기 매칭시키는 단계는, 제1 패킷 버퍼에 저장된 패킷과 제1 룰 그룹에 포함된 룰들 중 어느 하나의 룰을 매칭시키고, 제2 패킷 버퍼에 저장된 패킷과 제2 룰 그룹에 포함된 룰들 중 어느 하나의 룰을 매칭시키는 단계를 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  6. 제 5 항에 있어서.
    제1 메모리는 제1 룰 버퍼를 더 포함하고, 제2 메모리는 제2 룰 버퍼를 더 포함하며,
    제1 룰 버퍼에는 제1 룰 그룹에 포함된 룰들 중 어느 하나의 룰이 저장되고, 제2 룰 버퍼에는 제2 룰 그룹에 포함된 룰들 중 어느 하나의 룰이 저장되며,
    상기 매칭시키는 단계는, 제1 패킷 버퍼에 저장된 패킷과 제1 버퍼에 저장된 룰을 매칭시키고, 제2 패킷 버퍼에 저장된 패킷과 제2 룰 버퍼에 저장된 룰을 매칭시키는 단계를 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  7. 제 5 항에 있어서,
    제1 패킷 버퍼에 저장된 패킷과 제1 룰 그룹에 포함된 룰을 매칭시키는 상기 단계가 하드웨어로 구성된 제1 논리 로직에 의해 수행되고,
    제2 패킷 버퍼에 저장된 패킷과 제2 룰 그룹에 포함된 룰을 매칭시키는 상기 단계가 하드웨어로 구성된 제2 논리 로직에 의해 수행되는 것을 특징으로 하는 패킷 매칭 방법.
  8. 제 7 항에 있어서,
    제1 논리 로직은 제1 메모리에 포함되어 있고, 제2 논리 로직은 제2 메모리에 포함되어 있는 것을 특징으로 하는 패킷 매칭 방법.
  9. 제 6 항에 있어서,
    제1 메모리는 제1 룰 그룹에 포함된 룰들에 1:1로 대응되는 마스크들로 이루어진 제1 마스크 그룹을 더 포함하고,
    제2 메모리는 제2 룰 그룹에 포함된 룰들에 1:1로 대응되는 마스크들로 이루어진 제2 마스크 그룹을 더 포함하는 것을 특징으로 하는 패킷 매칭 방법.
  10. 제 9 항에 있어서,
    제1 메모리는 제1 마스크 버퍼를 더 포함하고, 제2 메모리는 제2 마스크 버퍼를 더 포함하며,
    제1 마스크 버퍼에는, 제1 룰 버퍼에 저장된 룰에 대응된 마스크가 저장되고, 제2 마스크 버퍼에는, 제2 룰 버퍼에 저장된 룰에 대응된 마스크가 저장되는 것을 특징으로 하는 패킷 매칭 방법.
  11. 제 10 항에 있어서.
    상기 디바이스는 하드웨어로 구성된 제1 논리 로직과 제2 논리 로직을 포함하며,
    상기 매칭시키는 단계는,
    제1 논리 로직이, 제1 패킷 버퍼에 저장된 패킷과, 제1 룰 버퍼에 저장된 룰과, 제1 마스크 버퍼에 저장된 마스크에 대하여 논리적 연산을 수행하고,
    제2 논리 로직이, 제2 패킷 버퍼에 저장된 패킷과, 제2 룰 버퍼에 저장된 룰과, 제2 마스크 버퍼에 저장된 마스크에 대하여 논리적 연산을 수행하는 단계임을 특징으로 하는 패킷 매칭 방법.
  12. 패킷을 수신 또는 송신하는 디바이스에 사용되는 방화벽 엔진에 있어서,
    제1 룰 그룹을 저장하는 제1 서브 매칭부; 및
    제2 룰 그룹을 저장하는 제2 서브 매칭부;를 포함하며,
    제1 서브 매칭부는 수신 또는 송신 패킷에 대하여 제1 룰 그룹에 포함된 룰들 중에 어느 하나와 매칭동작을 수행하며, 동시에 제2 서브 매칭부는 상기 패킷에 대하여 제2 룰 그룹에 포함된 룰들 중에 어느 하나와 매칭동작을 수행하는 것을 특징으로 하는 방화벽 엔진.
  13. 제 12 항에 있어서,
    제1 서브 매칭부는 제1 패킷 버퍼를 포함하고, 제2 서브 매칭부는 제2 패킷 버퍼를 포함하며,
    상기 패킷은 제1 패킷 버퍼와 제2 패킷 버퍼에 동시에 저장되는 것을 특징으로 하는 방화벽 엔진.
  14. 제 13 항에 있어서,
    제1 서브 매칭부는 하드웨어로 구성된 제1 매치 로직을 더 포함하고, 제2 서브 매칭부는 하드웨어로 구성된 제2 매치 로직을 더 포함하며,
    제1 매치 로직은 제1 룰 그룹에 속한 어느 하나의 룰과 제1 패킷 버퍼에 저장된 패킷간에 논리 연산을 수행함으로써 매칭 동작을 수행하며,
    제2 매치 로직은 제2 룰 그룹에 속한 어느 하나의 룰과 제2 패킷 버퍼에 저장된 패킷간에 논리 연산을 수행함으로써 매칭 동작을 수행하는 것을 특징으로 하는 방화벽 엔진.
  15. 제 14 항에 있어서,
    제1 서브 매칭부는 제1 룰 그룹에 속한 룰들에 1:1로 대응된 마스크들로 이루어진 제1 마스크 그룹을 저장하고,
    제2 서브 매칭부는 제2 룰 그룹에 속한 룰들에 1:1로 대응된 마스크들로 이루어진 제2 마스크 그룹을 저장하는 것을 특징으로 하는 방화벽 엔진.
  16. 제 15 항에 있어서,
    제1 서브 매칭부는 제1 룰 버퍼를 더 포함하고, 제2 서브 매칭부는 제2 룰 버퍼를 더 포함하며, 제1 룰 그룹에 포함된 룰들이 제1 룰 버퍼에 순차적으로 저장되고, 제2 룰 그룹에 포함된 룰들이 제2 룰 버퍼에 순차적으로 저장되는 것을 특징으로 하는 방화벽 엔진.
  17. 제 16 항에 있어서,
    제1 서브 매칭부는 제1 마스크 버퍼를 더 포함하고, 제2 서브 매칭부는 제2 마스크 버퍼를 더 포함하며,
    제1 매치 로직은 제1 패킷 버퍼에 저장된 패킷과, 제1 룰 버퍼에 저장된 룰과, 제1 마스크 버퍼에 저장된 마스크간에 논리 연산을 수행함으로써 매칭 동작을 수행하며,
    제2 매치 로직은 제2 패킷 버퍼에 저장된 패킷과, 제2 룰 버퍼에 저장된 룰과, 제2 마스크 버퍼에 저장된 마스크간에 논리 연산을 수행함으로써 매칭 동작을 수행하는 것을 특징으로 하는 방화벽 엔진.
  18. 제 12 항에 있어서,
    제1 서브 매칭부의 출력과 제2 서브 매칭부의 출력에 논리 연산을 수행하는 멀티플렉서를 더 포함하는 것을 특징으로 하는 방화벽 엔진.
  19. 제 12 항에 있어서
    방화벽 외부로부터 수신한 패킷을 제1 서브 매칭부와 제2 서브 매칭부에게 제공하는 패킷 캡쳐부;를 더 포함하는 것을 특징으로 하는 방화벽 엔진.
  20. 제 19 항에 있어서,
    상기 패킷 캡쳐부는 상기 수신한 패킷의 형태를 제1 서브 매칭부와 제2 서브 매칭부에서 매칭 동작을 수행할 수 있는 형태로 변환하여 제1 서브 매칭부와 제2 서브 매칭부에 동시에 제공하는 것을 특징으로 하는 방화벽 엔진.
  21. 제 12 항에 있어서,
    제1 서브 매칭부와 제2 서브 매칭부를 제어하는 제어 신호 또는 주소 신호 중 적어도 하나를 생성하는 방화벽 컨피규레이션부;를 더 포함하는 것을 특징으로 하는 방화벽 엔진.
  22. 제 15 항에 있어서,
    제1 서브 매칭부는 제1 패킷 버퍼, 제1 룰 버퍼, 및 제1 마스크 버퍼를 더 포함하고,
    제2 서브 매칭부는 제2 패킷 버퍼, 제2 룰 버퍼, 및 제2 마스크 버퍼를 더 포함하는 것을 특징으로 하는 방화벽 엔진.
  23. 제 22 항에 있어서,
    제1 서브 매칭부와 제2 서브 매칭부를 제어하는 제어 신호와, 주소 신호를 생성하는 방화벽 컨피규레이션부;를 더 포함하며,
    상기 방화벽 컨피규레이션부는, 상기 송신 또는 수신 패킷을 제1 패킷 버퍼와 제2 패킷 버퍼에 동시에 저장시키고, 제1 룰 그룹 중에 어느 하나의 룰을 제1 룰 버퍼에 저장시키며, 제1 마스크 그룹 중에 제1 룰 버퍼에 저장된 룰과 대응된 마스크를 제1 마스크 버퍼에 저장시키는 것을 특징으로 하는 방화벽 엔진.
  24. 제 23 항에 있어서,
    상기 방화벽 컨피규레이션부는, 제1 룰 그룹에 속한 룰들을 기 정한 순서에 따라서 제1 룰 버퍼에 저장시키고, 제1 마스크 그룹에 속한 마스크들 중에서 제1 룰 버퍼에 저장된 룰들에 대응된 마스크를 제1 마스크 버퍼에 저장시키는 것을 특징으로 하는 방화벽 엔진.
KR1020120086666A 2011-08-08 2012-08-08 방화벽 엔진 및 이를 이용한 패킷 매칭 방법 KR101383397B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161521106P 2011-08-08 2011-08-08
US61/521,106 2011-08-08

Publications (2)

Publication Number Publication Date
KR20130018608A true KR20130018608A (ko) 2013-02-25
KR101383397B1 KR101383397B1 (ko) 2014-04-08

Family

ID=51795033

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020120086666A KR101383397B1 (ko) 2011-08-08 2012-08-08 방화벽 엔진 및 이를 이용한 패킷 매칭 방법
KR1020120086663A KR20130018607A (ko) 2011-08-08 2012-08-08 안티멀웨어 엔진을 구비한 단말장치 및 이를 이용한 안티멀웨어 스캔닝 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020120086663A KR20130018607A (ko) 2011-08-08 2012-08-08 안티멀웨어 엔진을 구비한 단말장치 및 이를 이용한 안티멀웨어 스캔닝 방법

Country Status (1)

Country Link
KR (2) KR101383397B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101718923B1 (ko) * 2015-08-04 2017-03-23 주식회사 안랩 다중 코어 프로세서에 기반한 악성 코드 탐지 장치 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100609170B1 (ko) * 2004-02-13 2006-08-02 엘지엔시스(주) 네트워크 보안 시스템 및 그 동작 방법
KR100851509B1 (ko) * 2007-01-24 2008-08-11 (주) 시스메이트 분산 시그니처 매칭을 통한 실시간 패킷 분류 장치 및 방법

Also Published As

Publication number Publication date
KR20130018607A (ko) 2013-02-25
KR101383397B1 (ko) 2014-04-08

Similar Documents

Publication Publication Date Title
US10419461B2 (en) Method and an apparatus to perform multi-connection traffic analysis and management
JP6989621B2 (ja) パケット伝送方法、エッジデバイス及び機械可読記憶媒体
US9159420B1 (en) Method and apparatus for content addressable memory parallel lookup
US20100118885A1 (en) Predictive packet forwarding for a network switch
JP2018139448A5 (ko)
US10397116B1 (en) Access control based on range-matching
US10489720B2 (en) System and method for vendor agnostic automatic supplementary intelligence propagation
US8438641B2 (en) Security protocol processing for anti-replay protection
US20090232137A1 (en) System and Method for Enhancing TCP Large Send and Large Receive Offload Performance
US10721250B2 (en) Automatic tunnels routing loop attack defense
CN102447626A (zh) 具有策略驱动路由的主干网
US11770406B2 (en) Systems and methods for mitigating cyberattacks
US9667650B2 (en) Anti-replay checking with multiple sequence number spaces
KR101383397B1 (ko) 방화벽 엔진 및 이를 이용한 패킷 매칭 방법
US20210160251A1 (en) Systems and methods for extending authentication in ip packets
JP5127670B2 (ja) フィルタ装置及びフィルタ方法及びプログラム
US20110216770A1 (en) Method and apparatus for routing network packets and related packet processing circuit
US11736514B2 (en) Suppressing virus propagation in a local area network
KR102538061B1 (ko) 의료 정보 보안 데이터 전송 시스템 및 전송 방법
Arshad et al. A short review on faster and more reliable tcp reassembly for high-speed networks in deep packet inspection
US11784970B2 (en) First hop security in multi-site multi-vendor cloud
US12003530B2 (en) Suppressing virus propagation in a local area network
CN103688508A (zh) 报文识别方法和防护设备
US8499026B2 (en) Distributed packet processing system for high-speed networks and distributed packet processing method using thereof
US11044197B2 (en) System and method for protecting resources using network devices

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: 20170309

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee