KR101662685B1 - 심층 패킷 검사 방법 및 기기, 그리고 코프로세서 - Google Patents

심층 패킷 검사 방법 및 기기, 그리고 코프로세서 Download PDF

Info

Publication number
KR101662685B1
KR101662685B1 KR1020157020935A KR20157020935A KR101662685B1 KR 101662685 B1 KR101662685 B1 KR 101662685B1 KR 1020157020935 A KR1020157020935 A KR 1020157020935A KR 20157020935 A KR20157020935 A KR 20157020935A KR 101662685 B1 KR101662685 B1 KR 101662685B1
Authority
KR
South Korea
Prior art keywords
coprocessor
data packet
original data
application layer
result
Prior art date
Application number
KR1020157020935A
Other languages
English (en)
Other versions
KR20150103248A (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 KR20150103248A publication Critical patent/KR20150103248A/ko
Application granted granted Critical
Publication of KR101662685B1 publication Critical patent/KR101662685B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • 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
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • 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/0209Architectural arrangements, e.g. perimeter networks or demilitarized zones
    • H04L63/0218Distributed architectures, e.g. distributed firewalls

Landscapes

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

Abstract

본 발명은 심층 패킷 검사 방법 및 기기, 그리고 코프로세서를 제공한다. 심층 패킷 검사 방법은, 코프로세서의 송수신기 모듈이 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 상기 코프로세서의 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계; 상기 프로세서 코어가 상기 코프로세서의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하도록 하는 단계; 및 상기 프로세서 코어가 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하여, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리할 수 있도록 하는 단계를 포함한다. 본 발명의 실시예에 의해 제공된 심층 패킷 검사 방법 및 기기는 범용 프로세서의 자원 점유를 줄이고 동작 속도를 증가시킨다.

Description

심층 패킷 검사 방법 및 기기, 그리고 코프로세서 {DEEP PACKET INSPECTION METHOD AND DEVICE, AND COPROCESSOR}
본 발명은 컴퓨터 기술에 관한 것으로, 구체적으로는, 심층 패킷 검사 방법 및 기기, 그리고 코프로세서에 관한 것이다.
관련 출원의 상호참조
본 출원은 2013년 8월 5일에 출원된 중국 특허출원 제201310337064.6호에 대해 우선권을 주장하여 2014년 1월 21일에 출원된 국제출원 PCT/CN2014/071025의 계속이며, 이 두 출원은 모두 인용에 의해 그 전체가 본 출원에 포함된다.
네트워크 침입 검출 및 애플리케이션 프로토콜 식별을 위한 핵심 기술인 심층 패킷 검사(Deep Packet Inspection, 약칭하여 DPI) 기술은, 네트워크 및 정보 보안 분야에서 점차 중요한 역할을 한다. DPI 기술은 네트워크 최적화, 애플리케이션 트래픽 제어, 및 보안 검출과 같은 서비스를 구현하기 위해, 특징 매칭 알고리즘(feature matching algorithm)을 사용하여 데이터 패킷에 대한 심층 분석을 구현하여, 데이터 패킷의 애플리케이션 정보를 취득한다.
종래기술에서, DPI 서비스는 일반적으로 범용 프로세서를 사용하여 구현되며, 범용 프로세서는 매처(matcher)를 통합하고, 범용 프로세서는 매처를 구동하는 소프트웨어 로직을 사용하여 특징 매칭을 구현한다. 범용 프로세서는 일반적으로 DPI 서비스를 위해 특별히 설계되지는 않기 때문에, 보편성 요건(universality requirement)을 보장하기 위해, 범용 프로세서에 의해 통합된 매처는 일반적으로 유니버설 매칭 알고리즘(universal matching algorithm), 예를 들어, 정규 표현 매칭 알고리즘(regular expression matching algorithm,)을 지원하지만, DPI 서비스를 위해 특별히 설계된 매칭 알고리즘은 지원하지 않아, 매칭 성능이 나쁘고 서비스 처리가 병목되게 된다. 게다가, 모든 DPI 서비스는 범용 프로세서로 구현되며, 범용 프로세서의 자원은 한정되어 있기 때문에, DPI 서비스의 성능이 제한된다. 도 1에 도시된 바와 같이, 종래 기술에서, DPI 서비스를 구현하는 다른 방법은 영구적으로 하드웨어 엔티티에 DPI 서비스 로직을 기입하는 것이며, 하드웨어 엔티티는 는 FPGA(Field-Programmable Gate Array, 필드 프로그래머블 게이트 어레이), 또는 ASIC(Application Specific Integrated Circuit, 애플리케이션 특정 집적회로)일 수 있다. 예를 들어, 기기의 DPI 서비스 로직은 네 단계로 나누어진다: 1. 종점 테이블 매칭; 2. IP 포트 식별; 3. 애플리케이션 계층 패킷 텍스트 특성 매칭; 및 4. 복잡한 디코딩 후의 식별). 처음 세 단계는 모든 구현을 위해 하드웨어 로직에 영구적으로 기록될 수 있다. 그러나 로직이 매우 복잡한 단계 4는 하드웨어 로직에 의해 구현될 수 없고, 따라서 완료를 위해 범용 프로세서에 남아있다.
하드웨어를 사용하여 구현되는 로직의 영구적인 기록이 확장성이 부족할 것은 명백하다: DPI 서비스 로직이 변경되는 경우(예를 들어, 전술한 예에서 네 단계가 다섯 단계로 되거나 순서가 변경되는 경우), 하드웨어 코드는 필드 네트워크상의 기기에 재기록되고, 예뮬레이팅된 다음, 발행되어야 한다. 이는 네트워크 트래픽의 변화에 신속하게 적응될 수 없고; DPI 서비스 로직의 여러 단계는 별도로 소프트웨어 및 하드웨어 가속 칩 로직을 사용하여 범용인 프로세서에 의해 구현되기 때문에, 범용 프로세서가 DPI 처리에 긴 지연이 일으키는, 하드웨어 가속 칩과 여러 번 상호작용하는 것을 피할 수 없다.
본 발명의 실시예는 DPI 성능 및 확장성을 향상시키기 위한, 심층 패킷 검사 방법 및 기기, 그리고 코프로세서를 제공한다.
제1 측면에 따르면, 본 발명의 실시예는 심층 패킷 검사 방법을 제공하며, 상기 심층 패킷 검사 방법은,
코프로세서의 송수신기 모듈이, 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 상기 코프로세서의 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계; 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계 - 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 및 상기 프로세서 코어가, 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하여, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 하는 단계를 포함한다.
제1 가능한 구현 방식에서, 코프로세서의 송수신기 모듈이 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신한 이후, 상기 코프로세서의 프로세서 코어에 상기 원 데이터 패킷을 전송하기 이전에, 상기 심층 패킷 검사 방법은, 상기 원 데이터 패킷에 대해 흐름 처리(flow processing)를 수행하는 단계를 더 포함하고; 상기 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계는, 상기 프로세서 코어에 상기 흐름 처리된 데이터 패킷을 전송하는 단계를 포함하고;
상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 흐름 처리된 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계를 포함한다.
제1 측면의 제1 가능한 구형 방식을 참조하여, 제2 가능한 구현 방식에서, 상기 원 데이터 패킷에 대해 흐름 처리를 수행하는 단계는,
상기 원 데이터 패킷에 대해 단편화된(fragmented) IP 패킷의 재조립 처리 및 비순차(out-of-order) TCP 패킷의 재정렬 처리(reordering processing)를 수행하는 단계를 포함한다.
제1 측면의 제1 가능한 구현 방식을 참조하여, 제3 가능한 구현 방식에서, 상기 코프로세서에는 둘 이상의 프로세서 코어가 제공되고; 상기 코프로세서의 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계는,
상기 프로세서 코어 각각의 부하 상태에 따라 상기 둘 이상의 프로세서 코어에서 하나의 프로세서 코어를 선택하고, 상기 선택된 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계를 포함한다.
제1 측면을 참조하여, 제4 가능하는 구현 방식에서, 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하는 것은,
상기 프로세서 코어가, 상기 코프로세서의 스위칭 버스 모듈을 사용하여 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하는 것을 포함한다.
제1 측면을 참조하여, 제5 가능한 구현 방식에서, 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
상기 프로세서 코어가 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서(protocol identifying sub-coprocessor)를 호출하는 단계; 상기 프로세서 코어의 호출하의 상기 프로토콜 식별 서브 코프로세서가, 상기 원 데이터 패킷에 대해 종점 룩업(endpoint lookup)을 수행하고, 상기 프로세서에 코어에 종점 룩업 결과를 반환하는 단계; 및 상기 프로세서 코어가, 적어도 상기 종점 룩업 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함한다.
제1 측면을 참조하여, 제6 가능한 구현 방식에서, 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
상기 프로세서 코어가, 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서를 호출하는 단계; 상기 프로세서 코어의 호출하의 상기 프로토콜 식별 서브 코프로세서가, 상기 코프로세서에 포함된 스트링 매칭 엔진을 호출하는 단계; 상기 프로토콜 식별 서브 코프로세서의 호출하의 스트링 매칭 엔진(string matching engine)이, 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과(feature matching result)를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하는 단계; 및 상기 프로세서 코어가, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 상기 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함한다.
제1 측면을 참조하여, 제7 가능한 구현 방식에서, 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
상기 프로세서 코어가 상기 코프로세서에 포함된 정규 표현 매칭 엔진(regular expression matching engine)을 호출하는 단계; 상기 프로세서 코어의 호출하의 상기 정규 표현 매칭 엔진이, 상기 원 데이터 패킷에 대해 정규 표현 매칭을 수행하여 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하는 단계; 및 상기 프로세서 코어가, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함한다.
제1 측면을 참조하여, 제8 가능한 구현 방식에서, 상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
상기 프로세서 코어가 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서를 호출하여 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 취득하는 단계; 및
상기 프로세서 코어가, 상기 코프로세서에 포함된 프로토콜 파싱 서브 코프로세서를 호출하여 파싱 결과를 취득하고, 상기 파싱 결과 및 상기 애플리케이션 계층 프로토콜 타입을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로서 사용하는 단계를 포함한다.
제1 측면의 제6 가능한 구현 방식을 참조하여, 제9 가능한 구현 방식에서,
상기 프로토콜 식별 서브 코프로세서의 호출하의 스트링 매칭 엔진이, 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하는 단계는,
상기 프로토콜 식별 서브 코프로세서의 호출하에서, 상기 스트링 매칭 엔진이, 제1 메모리로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 상기 스트링 매칭 알고리즘 상태 테이블에 따라 상기 흐름 처리된 데이터 패킷에 대해 스트링 매칭을 수행하여 상기 특징 매칭 결과를 취득하는 단계를 포함한다.
제1 측면 또는 제1 내지 제9 가능한 구현 방식 중 어느 하나를 참조하여, 제11 가능한 구현 방식에서,
상기 프로세서 코어가 상기 범용 프로세서에 상기 애플리케애션 계층 파싱 결과를 전송하는 단계는,
상기 프로세서 코어가 상기 코프로세서에 포함된 결과 보고 처리 모듈에 상기 애플리케이션 계층 파싱 결과를 전송하는 단계; 및
상기 결과 보고 처리 모듈이, 미리 설정된 형식에 따라 상기 애플리케이션 계층 파싱 결과를 캡슐화하고(encapsulating), 상기 캡슐화된 애플리케이션 계층 파싱 결과를 상기 범용 프로세서에 전송하는 단계를 포함한다.
제2 측면에 따르면, 본 발명의 실시예는 심층 패킷 검사 방법을 제공하며, 상기 심층 패킷 검사 방법은,
범용 프로세서가 코프로세서에 원 데이터 패킷을 전송하는 단계;
상기 범용 프로세서가 상기 코프로세서에 의해 전송되는, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 수신하는 단계 - 상기 애플리케이션 계층 파싱 결과는, 상기 코프로세서의 프로세서 코어에 의해 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하도록 함으로써 취득되고, 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 및 상기 범용 프로세서가 적어도 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하는 단계를 포함한다.
제1 가능한 구현 방식에서, 상기 범용 프로세서가 적어도 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하는 단계는, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라, 상기 원 데이터 패킷이 암호화된 데이터 패킷인지를 판정하고, 상기 원 데이터 패킷이 암호화된 데이터 패킷이면 상기 원 데이터 패킷을 해독하는 단계를 포함한다.
제2 가능한 구현 방식에서, 상기 범용 프로세서가 적어도 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하는 단계는,
상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라, 상기 원 데이터 패킷이 속하는 흐름의 서비스 유형을 판정하고, 상기 서비스 유형에 따라 상기 흐름에 대해 트래픽 통계(traffic statistics), 과금(charging), 또는 송신 가속(transmission acceleration)을 수행하는 단계를 포함한다.
제3 가능한 구현 방식에서, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형 및 URL(Uniform Resource Locator) 매칭 결과를 포함하고, 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형은, 상기 코프로세서의 프로세서 코어에 의해 상기 코프로세서의 프로토콜 식별 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 프로토콜 식별을 수행함으로써 취득되고, 상기 URL 매칭 결과는, 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형이 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)인 것으로 판정되는 경우에 상기 코프로세서의 프로세서 코어에 의해 상기 코프로세서의 URL 매칭 엔진을 호출하여 상기 원 데이터 패킷에 대해 URL 매칭을 수행함으로써 취득되며;
상기 범용 프로세서가 적어도 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하는 단계는,
상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과 및 상기 URL 매칭 결과에 따라, 상기 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되는지를 판정하고, 상기 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되면, 상기 흐름을 차단하는 단계를 포함한다.
제3 측면에 따르면, 본 발명의 실시예는 송수신기 모듈, 서브 코프로세서, 및 프로세서 코어를 포함하는 코프로세서를 포함하며,
상기 송수신기 모듈은, 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 상기 프로세서 코어에 상기 원 데이터 패킷을 전송하도록 구성되고;
상기 프로세서 코어는, 상기 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하고 - 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성되어, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 하고;
상기 서브 코프로세서는 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 정보를 취득하도록 구성된다.
제1 가능한 구현 방식에서, 상기 송수신기 모듈은,
상기 범용 프로세서에 의해 전송되는 상기 원 데이터 패킷을 수신하도록 구성된 수신 유닛;
상기 수신 유닛이 상기 범용 프로세서에 의해 전송되는 상기 원 데이터 패킷을 수신한 이후에, 상기 원 데이터 패킷에 대해 흐름 처리를 수행하도록 구성된 흐름 처리 유닛; 및
상기 프로세서 코어에 상기 흐름 처리된 데이터 패킷을 전송하도록 구성된 분배 유닛(distributing unit)을 포함하고,
상기 프로세서 코어는 구체적으로, 상기 서브 코프로세서를 호출하여 상기 흐름 처리된 데이터 패킷에 대해 상기 애플리케이션 계층 파싱을 수행하도록 구성된다.
제3 측면의 제1 가능한 구현 방식을 참조하여, 제2 가능한 구현 방식에서, 상기 흐름 처리 유닛은 구체적으로, 상기 원 데이터 패킷에 대해 단편화된 IP 패킷의 재조립 처리 및 비순차 TCP 패킷의 재정렬 처리를 수행하도록 구성된다.
제3 측면의 제1 또는 제2 가능한 구현 방식을 참조하여, 제3 가능한 구현 방식에서, 둘 이상의 프로세서 코어가 존재하고;
상기 분배 유닛은 구체적으로, 상기 둘 이상의 프로세서 코어의 각 프로세서 코어의 부하 상태를 결정하고, 상기 프로세서 코어 각각의 부하 상태에 따라 상기 둘 이상의 프로세서 코어에서 하나의 프로세서 코어를 선택하고, 상기 선택된 프로세서 코어에 상기 흐름 처리된 데이터 패킷을 전송하도록 구성된다.
제3 측면, 제3 측면의 제1, 제2, 또는 제3 가능한 구현 방식을 참조하여, 제4 가능한 구현 방식에서, 상기 코프로세서는 스위칭 버스 모듈을 더 포함하고;
상기 프로세서 코어는 구체적으로, 상기 코프로세서의 스위칭 버스 모듈을 사용하여 상기 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하도록 구성된다.
제3 측면을 참조하여, 제5 가능한 구현 방식에서, 상기 서브 코프로세서는 구체적으로, 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 종점 룩업을 수행하여 종점 룩업 결과를 취득하고, 상기 프로세서에 코어에 상기 종점 룩업 결과를 반환하도록 구성되고; 상기 프로세서 코어는 구체적으로, 적어도 상기 종점 룩업 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 파싱 결과를 전송하도록 구성된다.
제3 측면을 참조하여, 제6 가능한 구현 방식에서, 상기 서브 코프로세서는 프로토콜 식별 서브 코프로세서 및 스트링 매칭 엔진을 포함하고, 상기 프로토콜 식별 서브 코프로세서는 구체적으로, 상기 프로세서 코어의 호출하의 스트링 매칭 엔진을 호출하도록 구성되고, 상기 스트링 매칭 엔진은 상기 프로토콜 식별 서브 코프로세서의 호출하에 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하며; 상기 프로세서 코어는 구체적으로, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
제3 측면을 참조하여, 제7 가능한 구현 방식에서, 상기 서브 코프로세서는 구체적으로 정규 표현 매칭 엔진이고, 상기 정규 표현 매칭 엔진은, 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 정규 표현 매칭을 수행하여 특징 매칭 결과를 취득하여, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하도록 구성되고; 상기 프로세서 코어는 구체적으로, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
제3 측면의 제5 가능한 구현 방식을 참조하여, 제8 가능한 구현 방식에서, 상기 서브 코프로세서는 프로토콜 파싱 서브 코프로세서를 더 포함하고, 상기 프로토콜 파싱 서브 코프로세서는 상기 원 데이터 패킷에 대해 프로토콜 파싱을 수행하여 파싱 결과를 취득하고, 상기 프로세서 코어에 상기 파싱 결과를 반환하도록 구성되고; 상기 프로세서 코어는 상기 범용 프로세서에 상기 파싱 결과를 전송하도록 더 구성되어, 상기 범용 프로세서가 상기 애플리케이션 계층 프로토콜 유형 및 상기 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 한다.
제3 측면의 제6 가능한 구현 방식을 참조하여 제9 가능한 구현 방식에서, 상기 스트링 매칭 엔진은 구체적으로, 상기 프로토콜 식별 서브 코프로세서의 호출하에, 제1 메모리로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 상기 스트링 매칭 알고리즘 상태 테이블에 따라 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 상기 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하도록 구성되고, 상기 제1 메모리는 상기 스트링 매칭 알고리즘 상태 테이블을 저장하도록 구성된다.
제3 측면의 제9 가능한 구현 방식을 참조하여, 제10 가능한 구현 방식에서, 상기 프로세서 코어는 구체적으로, 제2 메모리에서 상태 및 규칙 데이터 구조를 읽고, 상기 특징 매칭 결과와 상기 상태 및 규칙 데이터 구조에 따라 상기 원 데이터 패킷의 애플리케이션 프로토콜 유형을 결정하도록 구성되고, 상기 제2 메모리는 상기 상태 및 규칙 데이터 구조를 저장하도록 구성된다.
제4 측면에 따르면, 본 발명의 실시예는 범용 프로세서를 제공하며, 상기 범용 프로세서는,
코프로세서에 원 데이터 패킷을 전송하도록 구성된 전송 모듈;
상기 코프로세서에 의해 전송되는, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 수신하도록 구성된 수신 모듈 - 상기 애플리케이션 계층 파싱 결과는, 상기 코프로세서의 프로세서 코어에 의해 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하도록 함으로써 취득되고, 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 및
적어도 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 구성된 처리 모듈을 포함한다.
제1 가능한 구현 방식에서, 상기 처리 모듈은 구체적으로, 상기 애플리케이션 계층 파싱 결과에 따라, 상기 원 데이터 패킷이 암호화된 데이터 패킷인 것으로 식별되면, 상기 원 데이터 패킷을 해독하도록 구성된다.
제2 가능한 구현 방식에서,
상기 원 데이터 패킷의 상기 애플리케이션 계층 파싱 결과는, 상기 원 데이터 패킷의 상기 애플리케이션 계층 프로토콜 유형 및 URL 매칭 결과를 포함하고, 상기 URL 매칭 결과는, 상기 코프로세서의 프로세서 코어에 의해, 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형이 하이퍼텍스트 전송 프로토콜인 것으로 판정되는 경우에, 상기 코프로세서의 URL 매칭 엔진을 호출하여 상기 원 데이터 패킷에 대해 URL 매칭을 수행함으로써 취득되며;
상기 처리 모듈은 구체적으로, 상기 원 데이터 패킷의 상기 애플리케이션 계층 프로토콜 유형 및 상기 URL 매칭 결과에 따라, 상기 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되는지를 판정하고, 상기 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되면, 상기 흐름을 차단하도록 구성된다.
제5 측면에 따르면, 본 발명의 실시예는 심층 패킷 검사 기기를 제공하며, 상기 심층 패킷 검사 기기는, 본 발명의 임의 실시예에 의해 제공되는 코프로세서, 및 본 발명의 임의의 실시예에 의해 제공되는 따른 범용 프로세서를 포함한다.
제1 가능한 구현 방식에서, 하나의 범용 프로세서가 존재한다.
제2 가능한 구현 방식에서, 둘 이상의 범용 프로세서가 존재하고; 심층 패킷 검사 장치는 네트워크 어댑터 및 부하 밸런싱 장치를 더 포함하고, 상기 네트워크 어댑터는 네트워크로부터 데이터 패킷을 수신하고, 상기 부하 밸런싱 장치에 상기 데이터 패킷을 전송하도록 구성되고; 상기 부하 밸런싱 장치는 상기 둘 이상의 범용 프로세서의 각 범용 프로세서의 부하 상태를 결정하고, 상기 범용 프로세서 각각의 부하 상태에 따라 하나의 범용 프로세서를 선택하고, 상기 선택된 범용 프로세서에 상기 데이터 패킷을 전송하도록 구성된다.
전술한 기술적 해결방안으로부터, 본 발명의 실시예에 의해 제공되는 심층 패킷 검사 방법 및 장치, 그리고 코프로세서, 범용 프로세서 및 코프로세서는 협력하여 DPI를 구현하고; 코프로세서 내의 서브 코프로세서는 특별히 DPI 서비스를 위해 범용 프로세서로부터 DPI 기능을 오프로드(offload)하도록 특별히 설계될 수 있으며, 이는 범용 프로세서의 자원 점유를 감소시켜, 범용 프로세서가 부가 가치 서비스를 처리할 수 있도록 한다. 또한, 프로세서 코어는 코프로세서 내에 제공되고, 서브 코프로세서는 프로세서 코어의 호출하에 동작하여, 즉각적인 상태 정보가 유지될 수 있고, 프로세서 코어와 서브 코프로세서 사이의 상호작용은 모두 칩내(in-chip) 상호작용이고, 이는 코프로세서와 범용 프로세스 사이의 빈번한 상호작용을 회피하여, 처리 지연을 단축시킨다.
도 1은 종래 기술의 심층 패킷 검사 방법의 모식도이다.
도 2는 본 발명의 실시예에 따른 심층 패킷 검사 아키텍처의 개략도이다.
도 3은 본 발명의 실시예에 따른 심층 패킷 검사의 애플리케이션 시나리오의 개략도이다.
도 4는 본 발명의 실시예에 따른 제1 심층 패킷 검사 방법의 흐름도이다.
도 5는 본 발명의 실시예에 따른 제2 심층 패킷 검사 방법의 흐름도이다.
도 6a 및 도 6b는 본 발명의 실시예에 따른 심층 패킷 검사 방법의 흐름도이다.
도 7a 및도 7b는 본 발명의 실시예에 따른 다른 심층 패킷 검사 방법의 흐름도이다.
도 8은 본 발명의 실시예에 따른 또 다른 른 심층 패킷 검사 방법의 흐름도이다.
도 9는 본 발명의 실시예에 따른 제1 코프로세서의 개략 구성도이다.
도 10은 본 발명의 실시예에 따른 제2 코프로세서의 개략 구성도이다.
도 11은 본 발명의 실시예에 따른 범용 프로세서의 개략적 구성도이다.
도 12는 본 발명의 실시예에 따른 제1 심층 패킷 검사 기기의 개략 구성도이다;
도 13은 본 발명의 실시예에 따른 제2 심층 패킷 검사 기기의 개략 구성도이다.
도 14는 본 발명의 실시예에 따른 제3 심층 패킷 검사 기기의 개략 구성도이다.
본 발명의 목적, 기술적 해결방안, 및 이점이 더욱 명확하게 하기 위해, 이하에 본 발명의 실시예에서의 첨부도면을 참조하여 본 발명의 실시예의 기술적 해결방안을 명확하게 설명한다. 명백히, 설명한 실시예는 본 발명의 실시예의 전부가 아니라 일부이다. 본 발명이 속하는 기술분야의 통상의 기술을 가진 자(이하, 당업자라고 함)가 본 발명의 실시예에 기초하여 창의적인 노력 없이 얻은 모든 다른 실시예는 본 발명의 보호 범위에 속한다.
당업자가 본 발명의 기술적 해결방안을 더 잘 이해하도록 하기 위해, 도 2에 도시되어 있는 본 발명의 실시예의 심층 패킷 검사(Deep Packet Inspection, 약칭하여 DPI) 아키텍처를 먼저 개괄적으로 설명한다.
본 발명의 실시예에서, DPI 처리 태스크(processing task)를 위한 기능 모듈은 다수의 계층(전형적으로 4개의 계층)으로 분할되어 있으며, 상위 계층일수록 더 복잡하고 일반적인 서비스를 처리하고, 낮은 계층일수록 더 간단하고 더 전용의 알고리즘을 가진다.
이들 계층은, 각각 범용 프로세서와 DPI 코프로세서인 두 개의 칩으로 구현된다. 하드웨어 가속 성능을 향상시키기 위해, 가능한 한 많은 DPI 관련 태스크가 DPI 코프로세서에 의해 수행될 수 있다. 이 경우에, 범용 프로세서는 이러한 유형의 태스크에 대해 성능 면에서 개선되고 부가 가치 서비스(value-added service)에 초점을 맞추고 있기 때문에, 더 많은 연산 집약적 태스크(arithmetic-intensive task)을 수행할 수 있다. DPI 코프로세서는 DPI 서비스 제어 계층, DPI 서브 서비스 논리 계층 및 알고리즘 엔진 계층의 로직 구현을 책임진다. DPI 코프로세서는 내부적으로 다수의 서브 코프로세서(sub-coprocessor)를 더 포함하고, 각 서브 코프로세서는 특정 DPI의 서브 서비스(subservice)를 완료하도록 구성된다. DPI 서브 서비스 복잡성의 차이에 따라, 서브 코프로세서는 구체적으로 상위 계층 서브 코프로세서(예컨대 도 2에서 서브 코프로세서 A)와 하위 계층 서브 코프로세서(예컨대 도 2에서 서브 코프로세서 B, C, 및 D)로 분류될 수 있고, 하위 계층 서브 코프로세서는 구체적으로 소프트웨어 또는 하드웨어에 의해 구현되는 알고리즘 엔진일 수 있으며, 스트링 매칭 엔진 및 정규 표현 매칭 엔진과 같은, 특정 알고리즘을 사용하여 전용 기능(dedicated function)을 구현하도록 구성될 수 있고; 하위 계층 서브 코프로세서에 비해, 상위 계층 서브 코프로세서는 프로토콜 식별 및 파싱과 같은, 더 일반적인 DPI의 서브서비스를 수행하도록 구성된다. 예를 들어, 상위 계층 서브 코프로세서는 다수의 서브 코프로세서 및/또는 알고리즘 엔진 기능을 통합하는 논리 또는 물리 엔티티일 수 있있고, 더 고급이고 일반적인 DPI 서브 기능을 구현하도록 구성될 수 있다. 또한, 상위 계층 서브 코프로세서는 필요한 기능을 구현하기 위해 하위 계층 서브 코프로세스를 호출할 수도 있고, 동일 계층의 서브 코프로세서는 협동 방식으로 기능을 완료하기 위해 서로를 호출할 수도 있다.
구체적으로, 도 3에 도시된 바와 같은 애플리케이션 시나리오에서, 태스크는 다음 계층들로 분할될 수 있다:
계층 1: 연산 집약적 계층으로, DPI 서비스 로직에서 암호화 및 해독, 코딩 및 디코딩, 및 복잡한 로직 처리; 부가 가치 서비스와 같은 다른 비 DPI 서비스; 정책 매칭(policy matching); 패킷 액션 실행(packet action execution) 등을 포함한, 대량의 연산 처리를 필요로 하는 태스크를 담당한다. 본 발명의 실시예에서,이 계층의 태스크는 범용 프로세서에 의해 완료된다.
계층 2: DPI 서비스 제어 계층으로, DPI 코프로세서에 코어를 배치함으로써, DPI 엔진의 여러 단계에 걸친 시퀀스 제어 수행, 상태 및 규칙 매칭, 교차 패킷(cross-packet) 처리, 및 중간 상태 저장과 같은 DPI 서비스에 관련된 제어 로직을 포함한, DPI 서비스 제어 로직을 실행한다. 본 발명의 실시예에서, 이 계층의 태스크는 DPI 코프로세서 내의 프로세서 코어(core)에 의해 완료된다.
계층 3: DPI 서브서비스 논리 계층으로, 예를 들어, 애플리케이션 프로토콜 식별, 프로토콜 심층 파싱, 및 데이터 패킷 거동 특징 분석과 같은, 영구적으로 기록될 수 있는, DPI 특정 서브서비스를 담당한다. 본 발명의 실시예에서, 이 계층의 태스크는, 예를 들어, 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 식별하기 위한 프로토콜 식별 서브 코프로세서, 프로토콜에 대해 심층 파싱을 수행하기 위한 프로토콜 파싱 서브 코프로세서와 같은, DPI 코프로세서 내의 상위 계층 서브 코프로세서에 의해 완료된다,
계층 4: 알고리즘 엔진 계층으로, 구체적으로는 예를 들어, 정규 표현 매칭, 부동 소수점 연산, 멀티 모드 스트링 매칭, 단일 모드 스트링 매칭, 거동 파라미터 연산 등의, DPI에 최적화된 알고리즘 엔진 태스크를 담당한다. 이 계층의 태스크는, 예를 들어, 정규 표현 매칭 엔진, 부동 소수점 연산 엔진, 스트링 매칭 엔진 등, DPI 코프로세서 내의 하위 계층 서브 코프로세서에 의해 완료된다.
특별히 유의해야 할 것은, DPI 코프로세서의 내부에, 즉, 계층 2 내지 계층 4에는 내부 버스 또는 스위칭 버스 모듈이 이들 계층화된 모듈 간의 메시지 및 데이터 상호 작용을 위해 필요하다는 것이다. 그러나, 칩 간 상호 작용은 계층 1과 다른 계층 사이에, 즉 범용 프로세서와 DPI 코프로세서 사이에 수행되고, 이는 상호작용을 수행하기 위해, 통상, 예를 들어 PCIE(Peripheral Component Interconnect Express) 버스일 수 있는, 업계에서 이미 입수 가능한 일부 표준 버스를 필요로 한다. 사용 시의 버스의 유형은 범용 프로세서가 제공하는 외부 인터페이스에 따라 달라진다.
더욱 바람직하게는, 계층화된 설계 아키텍처(layered design architecture)에 더해, 본 발명의 실시예에서, 외부 메모리는 DPI 코프로세서를 위해, DPI 중간 상태를 저장하도록 더 구성될 수 있으므로, 더욱 우수한 확장성 및 성능을 달성할 수 있다. 이 경우에, DPI 코프로세서는 상태를 저장할 필요가 있는 태스크가 처리될 때, 그 태스크는 범용 프로세서에 의해 완료될 필요가 없고, DPI 코프로세서는 더 많은 프로세서 자원을 오프로드할 수 있다. 또, 구성된 외부 메모리는 DPI 처리 중에 사용될 필요가 있는 다양한 특징 필드 데이터 구조 및 알고리즘 특정 데이터 구조를 더 저장할 수 있다. 이 경우에, DPI 코프로세서는, 범용 프로세서를 사용하여 버스를 통해 데이터를 읽는 대신에 직접 신속하게 데이터를 읽을 수 있어, 더 높은 처리 성능을 달성할 수 있다. 예를 들어, 외부 메모리 A는, 흐름 테이블 및 상태 및 규칙을 포함한, 소프트웨어 코어에 특정한 데이터 구조를 저장하여, DPI 코프로세서가 패킷에 기초하여 처리를 실행하는 대신 흐름의 상태를 감지할 수 있도록 한다. 외부 메모리 B는 DFA(Deterministic Finite Automaton, 결정적 유한 오토마톤) 상태 테이블, 단일 모드 매칭 알고리즘 보조 데이터(ancillary data), 및 서브 코프로세서의 알고리즘 데이터 구조 등의 다양한 매칭 엔진 및 서브 코프로세서의 데이터 구조를 저장한다. 유의해야 할 것은 외부 메모리 A 및 외부 메모리 B는 단지 논리적으로 분할되어 있을 뿐이고, 이 둘은 동일한 물리 메모리에 위치할 수 있다는 것이다.
전술한 DPI 아키텍처에 기초하여, 본 발명의 실시예는 심층 패킷 검사 방법을 제공한다. 도 4는 본 발명의 실시예에 따른 제1 심층 패킷 검사 방법의 흐름도이다. 도 4에 도시된 바와 같이, 본 실시예에 의해 제공되는 심층 패킷 검사 방법은 구체적으로, 네트워크 기기의 심층 패킷 검사(DPI) 프로세스에 적용 가능할 수 있으며, 네트워크 기기는, 예를 들어, 라우터 및 게이트웨이일 수 있다. 심층 패킷 검사 기기는, 심층 패킷 검사 장치가 범용 프로세서 및 코프로세서를 포함하는 네트워크 기기에 제공될 수 있으며, 본 실시예에 의해 제공되는 심층 패킷 검사 방법은 코프로세서를 사용하여 수행된다.
본 실시예에 의해 제공되는 심층 패킷 검사 방법은 구체적으로 다음과 같은 단계를 포함한다:
단계 A10: 코프로세서의 송수신기 모듈이 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 코프로세서의 프로세서 코어에 원 데이터 패킷을 전송한다.
단계 A20: 프로세서 코어가 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 원 데이터 패킷의 애플리케이션 계층 파싱을 수행하여, 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하며, 원 데이터 패킷의 애플리케이션 계층 파싱 결과는 원 데이터 패킷의 애플리케이션 계층 정보, 여기에 일일이 열거하지는 않지만, 예를 들어, 애플리케이션 계층 프로토콜 유형, 데이터 패킷이 속하는 서비스 등을 나타내는 데 사용된다.
단계 A30: 프로세서 코어가 범용 프로세서에 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 전송하여, 범용 프로세서가 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리하도록 한다.
구체적으로, 네트워크 기기는 수신된 흐름 내의 데이터 패킷을 심층 분석함으로써 네트워크 최적화 및 애플리케이션 트래픽 제어를 구현할 필요가 있으며; 네트워크 기기는 네트워크 어댑터를 사용하여 범용 프로세서에 데이터 패킷을 전송하고, 범용 프로세서는 실행을 해 DPI 관련 태스크를 DPI 코프로세서에 건넨다.
본 발명의 실시예에서, 코프로세서는 FPGA(Field Programmable Gate Array, 필드 프로그래머블 게이트 어레이) 또는 ASIC(Application Specific Integrated Circuit, 애플리케이션 특정 집적회로)을 사용하여 구현될 수 있다. 하나 이상의 프로세서 코어는 코프로세서 내에 배치되고, 송수신기 모듈 및 복수의 서브 코프로세서가 코프로세서에 더 제공되고; 서브 코프로세서는 하드웨어 기술 언어(ardware description language)를 사용하여 구현되고, 하드웨어 기술 언어는 VHDL(Very-High-Speed Integrated Circuit Hardware Description Language, 초고속 집적회로 하드웨어 기술 언어) 또는 Verilog HDL일 수 있다. 서브 코프로세서는 서비스 처리 성능을 개선하기 위해, 데이터에 대해 애플리케이션 프로토콜 식별, 프로토콜 파싱, 및 데이터 패킷에 등을 수행하도록 구성될 수 있다.
범용 프로세서가 원 데이터 패킷을 코프로세서의 송수신기 모듈에 전송하고; 그 후, 송수신기 모듈이 코프로세서 내의 프로세서 코어에 원 데이터 패킷을 전달한다. 코프로세서의 프로세서 코어가, 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 파싱 결과를 취득하고; 그 후, 범용 프로세서가 애플리케이션 계층 파싱 결과에 따라, 트래픽 통계, 가속, 트래픽 제한, 차단, 및 필터링을 수행하는 등의 데이터 패킷을 처리한다. 범용 프로세서는 파싱 결과에 따라 흐름 테이블을 생성할 수 있으며, 흐름 테이블은 다수의 흐름 테이블 엔트리 및 처리 지시를 기록하고, 범용 프로세서는 수신된 데이터 패킷과 흐름 테이블 엔트리를 매칭하여, 상기 데이터 패킷이 속하는 흐름을 결정하고 그에 따라 처리를 수행한다.
본 실시예에 의해 제공되는 심층 패킷 검사 방법에서, 범용 프로세서와 코프로세서는 DPI를 구현하기 위해 협력하고; 코프로세서의 서브 코프로세서는 미세한 입도(finer granularity)에 따라 코프로세서 나눔으로써 DPI 서비스를 위해 특별히 설계될 수 있고; 따라서, DPI 기능은 범용 프로세서로부터 오프로드되고, 이는 범용 프로세서의 자원 점유를 감소시켜, 프로세서 코어가 다른 부가 가티 서비스를 처리할 수 있도록 한다. 또한, 프로세서 코어가 DPI 서비스 제어를 수행하기 위해 코프로세서에 재공되고 서브 코프로세서가 프로세서 코어의 호출하에 동작하며, 이로써 서비스 처리의 유연성이 매우 향상되고; 프로세서 코어와 서브 코프로세서 사이의 상호작용은 모두 칩내 상호작용이며, 이는 코프로세서와 범용 프로세서 사이의 빈번한 상호작용을 피하므로, DPI 성능을 향상시킨다.
도 5는 본 발명의 실시예에 따른 제2 심층 패킷 검사 방법의 흐름도이다. 도 5에 도시된 바와 같이, 본 발명의 본 실시예에 따른 심층 패킷 검사 방법은 다음 단계들을 포함한다:
단계 A101: 코프로세서의 송수신기 모듈이 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신한다.
단계 A102: 원 데이터 패킷의 흐름 처리를 수행한다.
구체적으로, 원 데이터 패킷에 대해 흐름 처리를 수행하는 단계는, 원 데이터 패킷에 대해 단편화된(fragmented) IP 패킷의 재조립 처리 및 비순차(out-of-order) TCP 패킷의 재정렬 처리를 수행하는 단계를 포함한다. 또한, 원 데이터 패킷에 대해 흐름 처리를 수행하는 단계는 원 데이터 패킷에 대한 시퀀스 처리를 보장하는 메시지 흐름을 수행하는 단계를 포함한다.
단계 A103: 코프로세서의 프로세서 코어에 흐름 처리된 데이터 패킷을 전송한다.
실제 애플케이션 프로세스에서, 코프로세서 상의 프로세서 코어의 수는 DPI 서비스의 요건에 따라 설정될 수 있다. 즉, 하나 이상의 프로세서 코어가 존재한다. 둘 이상의 프로세서 코어가 코프로세서에 제공되는 경우, 원 데이터 패킷을 코프로세서의 프로세서 코어에 전송하는 단계는 구체적으로,
협력 방식으로 처리를 수행하는 복수의 프로세서 코어 각각의 부하 상태를 결정하고, 부하 밸런싱 정책에 따라 다수의 프로세서 코어에서 하나의 프로세서 코어를 선택하고, 선택된 프로세서 코어에 원 데이터 패킷을 전송하는 단계를 포함하는
단계 A104: 프로세서 코어가 하나 이상의 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득한다.
본 실시예에서, 프로세서 코어는 구체적으로, 코프로세서의 스위칭 버스 모듈을 사용하여 하나 이상의 서브 코프로세서를 호출하여, 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행한다.
구체적으로, 스위칭 버스 모듈은 Switch-Arbiter 스위칭 모듈일 수 있고, 프로세서 코어와 프로세서 코어에 포함된 각종 서브 코프로세서 사이의 통신은 스위칭 버스 모듈을 사용하여 구현된다.
단계 A105: 프로세서 코어가 범용 프로세서에 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 전송하여, 범용 프로세서가 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리하도록 한다.
구체적으로, 실시예에서, 결과보고 처리 모듈이 코프로세서에 더 제공될 수 있고; 프로세서 코어는 결과 보고 처리 모듈에 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 전송할 수 있으며; 결과 보고 처리 모듈은 미리 설정된 형식에 따라 애플리케이션 계층 파싱 결과를 캡슐화하고, 캡슐화된 결과를 범용 프로세서에 하며, 미리 설정된 형식은, 예를 들어, TLV(Type Length Value)일 수 있으며, TLV 구조는 유형, 길이, 값을 갖는 일반 데이터 기술 형식이다.
본 실시예에서, 사용을 위해 코프로세서에 제공될 수 있으며, 메모리는 제1 메모리와 제2 메모리를 포함할 수 있고, 제1 메모리 및 제2 메모리는 두 개의 물리적으로 독립된 메모리일 수 있거나, 제1 메모리 및 제2 메모리는 물리적으로 동일한 메모리상에 있지만 논리적으로 분리되는 것일 수 있다. 제1 메모리는 서브 코프로세서가 필요로 하는 데이터 구조를 저장하도록 구성되고, 제2 메모리는 흐름 중간 상태 데이터, 종점 데이블 데이터, 포트 특징 테이블, 그리고 상태 및 규칙 테이블과 같은, DPI 서비스 제어 계층에 의해 사용되는 데이터를 저장하도록 구성된다.
일반적으로는, 규칙은 네트워크 공격을 막기 위한 거동의 특징 또는 애플리케이션 프로토콜 식별을 위한 프로토콜 특징을 기술하는 데 사용되고; 제2 메모리 내의 상태 및 규칙 테이블 하나 이상의 규칙을 기록하는 데 사용된다. 규칙은 일반적으로 일군의 특징을 포함하고; 이러한 특징들은 데이터 패킷에 대한 세부사항, 예를 들어, 데이터 패킷의 근원지/목적지 주소, 근원지/목적지 포트, 송신 프로토콜 유형, 데이터 패킷의 부하에 포함된 특수 스트링, 그리고 데이터 패킷이 단편화 여부를 기술하는 데 사용된다. 서브 코프로세서는 데이터 패킷을 분석하여 특칭 매칭 결과를 취득하고; 애플리케이션 계층 프로토콜 타입을 결정하는 경우, 프로세서 코어는 특징 매칭 결과에 따라 각 규칙 내의 특징을 매칭하고, 데이터 패킷이 규칙을 충족하면, 그 규칙에 대응하는 애플리케이션 계층 프로토콜 유형은 데이터 패킷의 애플리케이션 계층 프로토콜 유형이다. 특징은 여러 방식, 예를 들어, 스트링, 정규 표현, 거동 특징으로 기술될 수 있으며, 특징 매칭 결과는 상이한 특징에 대해서는 상이한 방식으로 취득될 수 있다.
본 실시예에서, DPI 서브서비스 복잡성의 차이에 따라, 코프로세서에 포함된 서브 코프로세서는 구체적으로 일반적인 DPI 서브서비스를 수행하기 위한 상위 계층 서브 코프로세서(프로토콜 식별 서브 코프로세서 및 프로토콜 파싱 서브 코프로세서 등)와 전용 기능, 예를 들어 소프트웨어 또는 하드웨어로 구현되는 알고리즘 엔진(스트링 매칭 엔진 및 정규 표현 매칭 엔진 등)을 구현하기 위한 하위 계층 서브 코프로세서로 분류될 수 있으며, 상위 계층 서브 코프로세서는 하위 계층 서브 코프로세서를 호출하여 필요한 기능을 구현할 수 있고, 동일 계층의 서브 코프로세서도 또한 협력 방식으로 기능을 완료하기 위해 서로 호출할 수 있다. 이에 기초하여, 서브 코프로세서의 유형의 차이에 따라, 단계 A104의 구체적인 구현 방식도 다르다:
(1) 프로세서 코어가 상위 계층 서브 코프로세서, 예를 들어 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 식별하기 위한 프로토콜 식별 서브 코프로세서를 호출하면, 가능한 구현 방식에서, 프로토콜 식별 서브 코프로세서는 프로세서 코어의 호출하에서 원 데이터 패킷에 대해 종점 룩업(endpoint lookup)을 수행하여 종점 룩업 결과를 취득하고, 프로세서 코어에 종점 룩업 결과를 반환하고; 프로세서 코어는 적어도 종점 룩업 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 결정된 애플리케이션 계층 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함한다.
구체적으로, 상태 머신이 프로토콜 식별 서브 코프로세서에 제공된다. 하나 이상의 레코드가 데이터 패킷이 위치하는 흐름의 목적지 IP 어드레스, 근원지 IP 주소, 목적지 포트, 및 근원지 포트 중 몇 개를 좀점 데이블에서 발견될 수 있으면, 데이터 패킷의 애플리케이션 계층 프로토콜 유형은 더 이상의 단계를 수행하지 않고 종점 테이블에서 직접 취득될 수 있다. 예를 들어, 종점 테이블 레코드는, 목적지 IP 주소: 103.224.1.9, 목적지 포트: 443, 애플리케이션 계층 프로토콜 유형: gmail_webmail이다. 흐름의 데이터 패킷이 목적지 IP 어드레스의 443 포트에 전송되면, 흐름의 데이터 패킷의 애플리케이션 계층 프로토콜 타입이 gmail_webmail임을 나타내는, DPI 처리 결과는바로 특정될 수 있다.
다른 가능한 구현 방식에서, 프로토콜 식별 서브 코프로세서는 하위 계층 서브 코프로세서, 예를 들어 프로세서의 호출하의 스트링 매칭 엔진을 호출하여, 대응하는 기능을 완료하는 데 도움이 되도록 하고, 스트링 매칭 엔진은 프로토콜 식별 서브 코프로세서의 호출 하에 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어에 특징 매칭 결과를 반환하며; 프로세서 코어는 적어도 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 그 애플리케이션 계층 프로토콜 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용한다.
구체적으로는, 스트링 매칭 엔진은 단일 모드 스트링 매칭 엔진 또는 멀티 모드 스트링 매칭 엔진일 수 있다. 단일 모드 스트링 매칭 엔진은 단일 모드 스트링 매칭 알고리즘을 사용할 수 있으며, 단일 모드 스트링 매칭 알고리즘은 BM(Boyer Moore) 알고리즘일 수 있다. 멀티 모드 스트링 매칭 엔진은 멀티 모드 스트링 매칭 알고리즘을 사용할 수 있고, 멀티 모드 스트링 매칭 알고리즘은 AC(Aho-Corasick) 알고리즘, 우 맨버(Wu-Manber) 알고리즘, ExB 알고리즘 등일 수 있다. 멀티 모드 스트링 매칭의 프로세스에서, 하나 이상의 스트링 특징이 타켓 스트링을 한번 스캔함으로써 발견될 수 있다.
데이터 패킷에 대해 멀티 모드 스트링 매칭이 수행될 필요가 있는 경우, 프로토콜 식별 서브 코프로세서가 멀티 모드 스트링 매칭 엔진을 호출하고, 멀티 모드 스트링 매칭 엔진은 데이터 패킷을 스캔하여 데이터 패킷에서 하나 이상의 스트링 특징을 발견하여 특징 매칭 결과를 취득하고, 프로세서 코어에 특징 매칭 결과를 반화하며; 프로세서 코어는 그 후 그 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정한다.
본 실시예에서, 스트링 매칭 엔진은 프로토콜 식별 서브 코프로세서의 호출하에서 흐름 처리된 데이터 패킷에 대해 스트림 매칭을 수행하는 것은,
스트링 매칭 엔진이, 프로토콜 식별 서브 코프로세스의 호출하에서, 제1 메모리로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 스트링 매칭 알고리즘 상태 테이블에 따라 원 데이터 패킷에 대해 스트링 매칭을 수행하는 것을 포함한다.
구체적으로, 제1 메모리는 스트링 매칭 알고리즘 상태 테이블을 저장하고; 스트링 매칭 엔진이 멀티 모드 스트링 매칭 엔진인 경우, 스트링 매칭 알고리즘 상태 테이블은 멀티 모드 스트링 매칭 알고리즘 상태 테이블이고; 스트링 매칭 엔진이 단일모드 스트링 매칭 엔진인 경우, 스트링 매칭 알고리즘 상태 테이블은 단일 모드 스트링 매칭 알고리즘 상태 테이블이다. 예를 들어, 멀티 모드 스트링 매칭 알고리즘은 AC 알고리즘이고; 멀티 모드 스트링 매칭 알고리즘 상태 테이블은 AC 상태 테이블이고; 멀티 모드 스트링 매칭 엔진은 멀티 모드 스트링 매칭 알고리즘 상태 테이블에 따라 데이터 패킷에 대해 멀티 모드 스트링 매칭을 구현할 수 있다. 스트링 매칭 엔진은 제1 메모리에 대해 직접 읽기 또는 쓰기 작업을 수행하지 않는다. 코프로세서에 캐시(cache)가 제공되며, 데이터 상호작용은 캐시와 제1 메모리 사이에 DMA(Direct Memory Access, 직접 메모리 액세스) 방식으로 구현될 수 있다. 캐시의 제공은 최대 메모리 액세스 요청이 캐시를 사용하여 완료될 수 있는, 외부 메모리에의 액세스 횟수를 감소시킬 수 있고, 시스템 성능을 크게 향상시킨다.
(2) 프로세서 코어가 하위 계층 서브 코프로세서, 예를 들어, 정규 표현 매칭을 수행하는 데 특별히 사용되는 정규 표현 매칭 엔진을 호출하면, 정규 표현 매칭 엔진은 프로세서 코어의 호출하에서 원 데이터 패킷에 대해 정교 표현 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어에 특징 매칭 결과를 반환하고, 프로세서 코어가, 적어도 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 결정된 애플리케이션 계층 프로토콜 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용한다.
구체적으로, 정규 표현 매칭 엔진 알고리즘은 정규 표현 매칭 알고리즘을 사용할 수 있고, 정규 표형 매칭 알고리즘은 NFA(Nondeterministic Finite Automaton, 비결정적 유한 오토마톤) 알고리즘, DFA(Deterministic Finite Automaton, 결정적 유한 오토마톤) 알고리즘 등일 수 있고; 정규 표현 매칭의 프로세스에서, 특징은 스트링을 사용하여 기술되지 않고, 정규 표현(regular expression)에 의해 기술된다.
데이터 패킷에 대해 정규 표현 매칭이 수행될 필요가 있을 때, 프로세서 코어는 정규 표현 매칭 엔진을 직접 호출할 수 있다. 정규 표현 매칭 엔진은 데이터 패킷을 검색하여 특징 매칭 결과를 취득하고, 프로세서 코어에 특징 매칭 결과를 반화하며; 그 후 프로세서 코어는 특징 매칭 결과에 따라 원래의 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정한다.
본 실시예에서, 정규 표현 매칭 엔진이 프로세서 코어의 호출하에 원 데이터 패킷에 대해 정규 표현 매칭을 수행하는 것은,
정규 표현 매칭 엔진이, 프로세서 코의 호출하에, 제1 메모리에서 정규 표현 매칭 알고리즘 상태 테이블을 읽고, 정규 표현 매칭 알고리즘 상태 테이블에 따라 원 데이터 패킷에 대해 정규 표현 매칭을 수행하는 것을 포함한다.
구체적으로, 제1 메모리는 정규 표현 매칭 알고리즘 상태 테이블을 저장하 며; 예를 들어, 정규 표현 매칭 알고리즘은 DFA 알고리즘, 정규 표현 매칭 알고리즘 상태 테이블은 DFA 상태 테이블이며, 정규 표현 매칭 엔진은 정규 표현 매칭 알고리즘 상태 테이블에 따라 데티어 패킷에 대해 정규 표현 매칭을 수행할 수 있다.
본 발명의 다른 실시예에서, 프로세서 코어는 또한 거동 특징 통계 서브 코프로세서를 호출하여 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 취득할 수 있다. 구체적으로, 거동 특징 통계 서브 코프로세서는 프로세서 코어의 호출하에 원 데이터 패킷에 대해 거동 특징 매칭을 수행하ㅇ여 특징 매칭 결과를 취득하고, 프로세서 코어에 그 특징 매칭 결과를 반환하고; 프로세서 코어는 특징 매칭 결과에 따라 애플리케이션 계층 프로토콜 타입을 결정한다.
구체적으로, 거동 특징 모델은 상이한 애플리케이션 프로토콜에 대해 사전에 생성될 수 있다. 거동 특징 매칭이 데이터 패킷에 대해 수행될 필요가 있는 경우, 거동 특징 통계 서브 코프로세서는 데이터 패킷 내의 거동 특징을 매칭하여 특징 매칭 결과를 취득하고, 프로세서 코어에 특징 매칭 결과를 반환하고; 그러면 프로세서 코어는 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정한다. 이 실시예에서, 프로세서 코어가 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정하는 것은,
프로세서 코어가, 캐시를 사용하여 제2 메모리에서 상태 및 규칙 테이블을 읽고, 특징 매칭 결과 및 상태(codition) 및 규칙(rule) 테이블에 따라 원래의 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정하는 것을 포함한다.
구체적으로, 제2 메모리는 상태 및 규칙 테이블을 저장하고; 상태 및 규칙 테이블은 규칙과 애플리케이션 계층 프로토콜 유형 사이의 대응 관계를 저장한다. 프로세서 코어는 특징 매칭 결과를 규칙 내의 특징과 대조하여, 특징 매칭 결과가 규칙을 충족하는지를 결정하고, 규칙이 충족되면, 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정할 수 있다. 프로세서 코어는 제2 메모리에서 직접 읽기 또는 쓰기 작업을 수행하지 않으며; 코프로세서에는 캐시가 제공되고, 데이터 상호작용은 캐시와 제2 메모리 사이에 DMA 방식으로 구현될 수 있다.
다른 실시예에서, 코프로세서에는 프로토콜 파싱 서브 코프로세서는가 더 제공되며, 상태 머신이 프로토콜 파싱 서브 코프로세서에 제공될 수 있다.
데이터 패킷에 의해 운반되는(carried) 애플리케이션 계층 프로토콜 유형이 데이터 패킷에 대해 애플리케이션 프로토콜 식별을 수행함으로써 알게 된 후, 처리 또는 다양한 부가 가치 서비스에 대한 규칙 매칭을 용이하게 하기 위해 데이터 패킷 내의 정보를 더 알아야 하면, 관련 정보를 추출하기 위해 심층 파싱이 애플리케이션 프로토콜 형식에 따라 데이터 패킷에 대해 더 수행되어, 파싱 결과를 취득할 수 있다.
구체적으로는, 프로세서 코어가 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 것은 구체적으로,
프로세서 코어가 코프로세서에 포함된 프로토콜 식별 서브 코프로세서를 호출하여 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 취득하고;
프로세서 코어가, 코프로세서에 포함된 프로토콜 파싱 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 프로토콜 파싱을 수행하여 파싱 결과를 취득하고, 파싱 결과 및 애플리케이션 계층 프로토콜 타입을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로서 사용하는 것을 포함한다.
본 실시예에서, URL 매칭 엔진이 코프로세서에 더 제공될 수 있고; 프로세서 코어는 원 데이터 패킷의 애플리케이션 프로토콜을 식별하기 위해 코프로세서의 프로토콜 식별 서브 코프로세서를 호출한 후, 프로세서 코어가 애플리케이션 계층 프로토콜 유형이 하이퍼텍스트 전송 프로토콜인 것으로 판정하면, 코프로세서의 URL 매칭 엔진이 호출되고; URL 매칭 엔진은 프로세서 코어의 호출하에서 원 데이터 패킷에 대해 URL 매칭을 수행하여 URL 매칭 결과를 취득하고, 프로세서 코어에 URL 매칭 결과를 반환하며, 처리 결과는 URL 매칭 결과를 더 포함한다.
예를 들어, 프로세서 코어가 데이터 패킷에 대응하는 흐름의 애플리케이션 계층 프로토콜 유형이 하이퍼텍스트 전송 프로토콜(HTTP)인 것으로 식별하는 경우, URL 매칭 엔진은 데이터 패킷을 더 분석하기 위해 호출될 수 있다. URL 매칭 엔진은 데이터 패킷의 URL 값을 취득하기 위해 분석을 수행할 수도 있다. 코프로세서는 URL 매칭 결과를 처리 결과로 사용하여 범용 프로세서에 처리 결과를 전송하고, 범용 프로세서는 URL 매칭 결과에 따라 URL과 관련된 네트워크 관리 작업을 수행할 수 있다.
실제 애플리케이션에서는, 심층 패킷 검사 기기의 범용 프로세서 및 코프로세서가 협력방식으로 DPI 서비스를 구현하고, 코프로세서 내의 기능 모듈은 실제 DPI 서비스 요건에 따라 제공될 수 있으며; 전술한 실시예는 여러 기능 모듈 구현 방식을 제공하지만, 본 발명은 이에 한정되지 않는다. 또한, 처리 절차는 상이한 DPI 서비스에 대해 상이할 수 있다. 특징 매칭 작업도 특징 매칭 결과를 얻기 위해 코프로세서의 프로세서 코어를 사용하여 완료될 수 있으며, 그 후 프로세서 코어는 특징 매칭 결과에 따라 애플리케이션 계층 프로토콜 타입을 결정한다. 예를 들어, HTTP 프로토콜의 특징 중 하나는 TCP 포트 번호가 80인 것일 수 있으며; 이 포트의 매칭 프로세스는 많은 컴퓨팅 자원이 필요로 하지 않기 때문에 코프로세서의 프로세서 코어에 의해 완료될 수 있다.
본 실시예에 의해 제공되는 심?V 패킷 검사 방법에서, 범용 프로세서와 코프로세서는 DPI를 구현하기 위해 협력하고; 코프로세서 내의 서브 코프로세서는 미세한 입도에 따라 코프로세서를 분할함으로써 DPI 서비스를 위해 특별히 설계될 수 있으며; 따라서 DPI 기능은 범용 프로세서에서 오프로드되고, 이는 범용 프로세서의 자원 점유를 줄여, 범용 프로세서가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또한, 프로세서 코어가 DPI 서비스 제어를 수행하기 위해 코프로세서에 제공되고, 서브 코프로세서는 프로세서 코어의 호출하에 동작하며, 이는 서비스 처리의 유연성을 크게 향상시키고; 외부 메모리는 DPI 코프로세서가 DPI 중간 상태를 저장하도록 구성되므로, 더 우수한 확장성 및 성능을 달성한다. 상태가 저장될 필요가 있는 태스크가 처리되는 경우, 태스크는 범용 프로세스에 의해 완료되어야 할 필요는 없고, DPI 코프로세서는 더 많은 프로세서 자원을 오프로드할 수 있다. 또, 외부 메모리는, DPI 코프로세서가 다양한 특징 필드 데이터 구조 및 DPI 처리 중에 사용될 필요가 있는 알고리즘 특정 데이터 구조를 저장하도록 구성된다. 이 경우에, DPI 코프로세서는 데이터를 범용 프로세서를 사용하여 버스를 통해 읽는 대신 데이터를 직접 신속하게 읽을 수 있으며, 이는 처리 성능을 더 향상시킨다.
이하에 구체적인 예를 참조하여 본 발명의 실시예에 따른 DPI 아키텍처에 기초한 심층 패킷 검사를 수행하는 구체적인 프로세스를 설명한다. 도 6a 및 도 6b는 본 발명의 실시예에 따른 심층 패킷 검사 방법의 흐름도이다. 이하에 도 6a 및 도 6b를 참조하여 본 발명에 의해 제공되는 심층 패킷 검사 방법을 설명한다.
단계 1a: 범용 프로세서가 코프로세서의 송수신기 모듈에 데이터 패킷을 전송
단계 2a: 송수신기 모듈이 프로세서 코어에 데이터 패킷을 전송한다.
단계 3a: 프로세서 코어가 프로토콜 식별 서브 코프로세서를 호출하고, 스위칭 버스 모듈을 사용하여 프로토콜 식별 서브 코프로세서에 데이터 패킷을 전송하고; 프로토콜 식별 코프로세서가 데이터 패킷에 대한 종점 룩업을 수행한다.
단계 4a: 프로토콜 식별 서브 코프로세서가 룩업의 성공 여부를 판정하고; 성공이면 단계 5a를 수행하고, 실패면 단계 6a를 수행한다.
단계 5a: 프로토콜 식별 서브 코프로세서가 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 종점 룩업 특징 매칭 결과를 전송한다.
단계 6a: 프로토콜 식별 서브 코프로세서가 스위칭 버스 모듈을 사용하여 프로세서 코어에 룩업 실패 결과를 피드백한다.
단계 7a: 프로토콜 식별 서브 코프로세서가 멀티 모드 스트링 매칭 엔진을 호출하고, 스위칭 버스 모듈을 사용하여 멀티 모드 스트링 매칭 엔진에 데이터 패킷을 전송하고; 멀티 모드 스트림 매칭 엔진이 데이터 패킷에 대해 멀티 모드 스트링 매칭을 수행한다.
단계 8a: 멀티 모드 스트링 매칭 엔진이 매칭의 성공 여부를 판정하고, 설공이면 단계 9a를 수행하고, 실패이면 단계 10a를 수행한다.
단계 9a: 멀티 모드 스트링 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 특징 매칭 결과를 전송하고, 단계 15a를 수행한다.
단계 10a: 멀티 모드 스트링 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 매칭 실패 결과를 피드백한다.
단계 11a: 프로세서 코어가 정규 표현 매칭 엔진을 호출하고, 스위칭 버스 모듈을 사용하여 정규 표현 매칭 엔진에 데이터 패킷을 전송하고; 정규 표현 매칭 엔진이 데이터 패킷에 대해 정규 표현 매칭을 수행한다.
단계 12a: 정규 표현 매칭 엔진이 매칭의 성공 여부를 판정하고; 성공이면 단계 13a를 수행하고, 실패이면 단계 14a를 수행한다.
단계 13a: 정규 표현 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 특징 매칭 결과를 전송하고, 단계 15a를 수행한다.
단계 14a: 정규 표현 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 매칭 실패 결과를 피드백하고, 프로세서 코어가 매칭 실패 결과를 처리 결과로서 결과 보고 처리 모듈에 전송하고, 단계 20a를 수행한다.
단계 15a: 프로세서 코어가 특징 매칭 결과에 따라 애플리케이션 프로토콜 유형을 결정한다.
단계 16a: 프로세서 코어가 데이터 패킷에 대해 심층 파싱이 수행될 필요가 있는지를 판정하고; 필요하면 단계 17a를 수행하고; 불필요하면 단계 19a를 수행한다.
단계 17a: 프로세서 코어가 프로토콜 파싱 서브 코프로세서를 호출하고, 스위칭 버스 모듈을 사용하여 프로토콜 파싱 서브 코프로세서에 데이터 패킷을 전송하고; 프로토콜 파싱 서브 코프로세서가 데이터 패킷에 대해 프로토콜 파싱을 수행하여 파싱 결과를 취득하고 스위칭 버스 모듈을 사용하여 프로세서 코어에 파싱 결과를 전송한다.
단계 18a: 프로세서 코어가 애플리케이션 프로토콜 유형 및 파싱 결과를 처리 결과로서 결과 보고 처리 모듈에 전송하고, 단계 20a를 수행한다.
단계 19a: 프로세서 코어가 애플리케이션 프로토콜 유형을 처리 결과로서 결과 보고 처리 모듈에 전송한다.
단계 20a: 결과 보고 처리 모듈은 처리 결과를 캡슐화한 후 범용 프로세서에 전송한다.
이하에 다른 구체적인 예를 참조하여 본 발명의 실시예에 따른 DPI 아키텍처에 기반한 심층 패킷 검사를 수행하는 구체적인 프로세스를 설명한다. 도 7a 및 도 7b는 본 발명의 실시예에 따른 다른 심층 패킷 검사 방법의 흐름도이다. 이하에 도 7a 및 도 7b를 참조하여 본 실시예에 의해 제공되는 심층 패킷 검사 방법을 설명한다.
단계 1b: 범용 프로세서가 코프로세서의 송수신기 모듈에 데이터 패킷을 전송한다.
단계 2b: 송수신기 모듈이 프로세서 코어에 데이터 패킷을 전송한다.
단계 3b: 프로세서 코어가 멀티 모드 스트링 매칭 엔진을 호출하고, 스위칭 버스 모듈을 사용하여 멀티 모드 스트링 매칭 엔진에 데이터 패킷을 전송하며; 멀티 모드 스트링 매칭 엔진이 데이터 패킷에 대해 멀티 모드 스트링 매칭을 수행한다.
단계 4b: 멀티 모드 스트링 매칭 엔진이 매칭의 성공 여부를 판정하고; 성공이면 단계 5b를 수행하고, 실패이면 단계 6b를 수행한다.
단계 5b: 멀티 모드 스트링 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 특징 매칭 결과를 전송하고 단계 15b를 수행한다.
단계 6b: 멀티 모드 스트링 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 특징 매칭 결과를 피드백한다.
단계 7b: 프로세서 코어가 정규 표현 매칭 엔진을 호출하고, 스위칭 버스 모듈을 사용하여 정규 표현 매칭 엔진에 데이터 패킷을 전송하고; 정규 표현 매칭 엔진이 데이터 패킷에 대해 정규 표현 매칭을 수행한다.
단계 8b: 정규 표현 매칭 엔진이 매칭의 성공 여부를 판정하고; 성공이면 단계 9b를 수행하고, 실패이면 단계 10b를 수행한다.
단계 9b: 정규 표현 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 특징 매칭 결과를 전송하고, 단계 15b를 수행한다.
단계 10b: 정규 표현 매칭 엔진이 스위칭 버스 모듈을 사용하여 프로세서 코어에 매칭 실패 결과를 피드백한다.
단계 11b: 프로세서 코어가 거동 특징 통계 서브 코프로세서(behavior feature statistics sub-coprocessor)를 호출하고, 스위칭 버스 모듈을 사용하여 거동 특징 통계 서브 코프로세서에 데이터 패킷을 전송하고; 거동 특징 통계 서브 코프로세서가 데이터 패킷에 대해 거동 특징 매칭을 수행한다.
단계 12b: 거동 특징 통계 서브 코프로세서가 매칭의 성공 여부를 판정하고; 성공이면 단계 13b를 수행하고, 실패이면 단계14를 수행한다.
단계 13b: 거동 특징 통계 서브 코프로세서가 스위칭 버스 모듈을 사용하여 프로세서 코어에 취득된 특징 매칭 결과를 전송하고, 단계 15b를 수행한다.
단계 14b: 거동 특징 통계 서브 코프로세서가 스위칭 버스 모듈을 사용하여 프로세서 코어에 매칭 실패 결과를 피드백하고, 프로세서 코어가 매칭 실패 결과를 처리 결과로서 결과 보고 처리 모듈에 전송하고, 단계 20b를 수행한다.
단계 15b: 프로세서 코어가 특징 매칭 결과에 따라 애플리케이션 프로토콜 유형을 결정한다.
단계 16b: 애플리케이션 프로토콜 유형이 HTTP이면, 프로세서 코어는 데이터 패킷의 URL의 값을 취득할 필요가 있는지를 판정하고; 필요하면 단계17b를 수행하고; 불필요하면 단계 19b를 수행한다.
단계 17b: 프로세서 코어가 URL 매칭 엔진을 호출하고, 스위칭 버스 모듈을 사용하여 URL 매칭 엔진에 데이터 패킷을 전송하고; URL 매칭 엔진이 데이터 패킷의 URL의 값을 취득하기 위해 분석을 수행하여, URL 매칭 결과를 취득하고, 스위칭 버스 모듈을 사용하여 프로세서 코어에 URL 매칭 결과를 전송한다.
단계 18b: 프로세서 코어가 애플리케이션 프로토콜 유형 및 URL 매칭 결과를 처리 결과로서 결과 보고 처리 모듈에 전송한다.
단계 19b: 프로세서 코어가 애플리케이션 프로토콜 유형을 처리 결과로서 결과 보고 처리 모듈에 전송한다.
단계 20b: 결과 보고 처리 모듈이 처리 결과를 캡슐화한 다음 범용 프로세서에 전송한다.
도 8은 본 발명의 실시예에 따른 다른 심층 패킷 검사 방법의 흐름도이다. 도 8에 도시된 바와 같이, 본 실시예에 의해 제공되는 심층 패킷 검사 방법은 도 4에 도시된 실시예에 의해 제공되는 방법과 협력하여 구현될 수 있으며, 구체적인 구현 프로세스는 여기에 다시 상세하게 설명하지 않는다. 본 실시예에 의해 제공되는 심층 패킷 검사 방법은 범용 프로세서를 사용하여 수행되고; 상기 방법은 구체적으로 다음과 같은 단계를 포함한다:
단계 B10: 범용 프로세서가 코프로세서에 원 데이터 패킷을 전송한다.
단계 B20: 범용 프로세서가 코프로세서에 의해 전송되는, 원 데이터 패킷의 애플리케이션 계층 처리 결과를 수신하며, 애플리케이션 계층 파싱 결과는, 코프로세서의 프로세서 코어에 의해 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여 취득되고, 애플리케이션 계층 파싱 결과는 원 데이터 패킷의 애플리케이션 계층 정보, 예를 들어 애플리케이션 계층 프로토콜 타입, 원 데이터 패킷이 속하는 서비스, 등을 나타내는 데 사용된다.
단계 B30: 범용 프로세서가 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리한다.
구체적으로, 네트워크 기기가 수신된 흐름 내의 데이터 패킷을 심층 분석하여 네트워크 최적화 및 애플리케이션 트래픽 제어를 구현할 필요가 있는 경우, 네트워크 기기의 네트워크 어댑터는 범용 프로세서의 그 흐름을 전송한다. 범용 프로세서는 코프로세서에 원 데이터 패킷을 전송하고; 코프로세서는 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 애플리케이션 계층 파싱 결과를 취득하고, 애플리케이션 계층 파싱 결과는 애플리케이션 계층 프로토콜 타입, 프로토콜 심층 파싱 결과, URL 매칭 결과 등을 포함할 수 있으며, 범용 프로세서에 애플리케이션 계층 파싱 결과를 반환하고, 범용 프로세서는, 트래픽 통개, 가속, 트래픽 제한, 차단, 필터링의 수행과 같은, 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리한다.
본 실시예에 의해 제공되는 심층 패킷 검사 방법에서는, 범용 프로세서가 코프로세서에 원 데이터 패킷을 전송하고, 코프로세서에 의해 전송되는 처리 결과를 수신하고, 그 처리 결과에 따라 원 데이터 패킷을 처리한다. 범용 프로세서와 코프로세서는 DPI를 구현하기 위해 협력하고; 코프로세서 내의 서브 코프로세서는 DPI 서비스를 위해 범용 프로세서에서 DPI 기능을 오프로드하로록 특별히 설계될 수 있으며, 이는 범용 프로세서의 자원 점유를 줄여, 일반 프로세서가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또한, 프로세서 코어가 코프로세서에 제공되고 서브 코프로세서는 프로세서 코어의 호출하에 칩내 상호작용일 수도 있는 프로세서 코어와 서브 코프로세서 사이의 상호작용을 실행하며, 이는 코프로세서와 범용 프로세서 사이의 빈번한 상호작용을 회피하여, 동작속도를 향상시킨다.
실시예에서, 범용 프로세서가 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리하는 것은 구체적으로,
범용 프로세서가 원 데이터 패킷의 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 암호화된 데이터 패킷인 것으로 판정하면, 원 데이터 패킷을 해독하는 것을 포함한다.
구체적으로는, 범용 프로세서는 코프로세서에 원 데이터 패킷을 전송한다; 원 데이터 패킷이 암호화되어 있는 것을 식별하는 경우, 코프로세서는 원 데이터 패킷이 암호화된 데이터 패킷임을 나타내는 처리 결과를 범용 프로세서에 반환하고; 이에 따라 범용 프로세서는 원 데이터 패킷을 해독한 다음, 해독된 원 데이터 패킷을 코프로세서에 전송할 수 있으며, 코프로세서가 원 데이터 패킷을 처리하는 프로세스에 대한 전술한 실시예에 대한 설명을 참조할 수 있다.
실제 애플리케이션에서, 해독 처리와 같은, 작업(operation)의 구현은 복잡하고; 코프로세서가 수행할 수 없는 태스크는 범용 프로세서에 의해 구현될 수 있다. 확실히, 해독 모듈이 코프로세서에 제공되는 경우, 코프로세서는 스스로 원 데이터 패킷을 해독할 수 있다.
범용 프로세서가 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리하는 다른 실시예에서는,
범용 프로세서가, 원 데이터 패킷의 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 속하는 흐름의 서비스 유형을 결정하면, 그 서비스 유형에 따라 그 흐름에 대해 트래픽 통계, 과금 또는 송신 가속을 수행하는 것을 포함할 수 있다.
구체적으로는, 운영자가 VoIP(Voice over Internet Protocol) 트래픽에 대해 과금하고자 하면, 범용 프로세서는, 원 데이터 패킷의 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 위치하는 데이터 흐름이 스카이프(Skype) 프로토콜을 사용하는 VoIP 전화의 데이터 흐름인 것으로 판정하는 경우, 그 흐름에 대해 트래픽 통계를 내어, VoIP 전화 서비스에 대해 과금을 구현한다.
사용자가 일부 애플리케이션, 예를 들어 온라인 게임에 대한 트래픽 가속을 수행하고자 하는 경우, 범용 프로세서는, 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 속하는 흐름이 온라인 게임 서비스에 사용된 것으로 판정하는 경우 그 흐름에 대해 가속을 수행하여, 그 흐름에 대한 송신 속도를 보장한다.
사용자가 어떤 프로그램을 차단하고자 하는 경우, 범용 프로세서는 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 속하는 프름이 특정 애플리케이션 프로그램에 사용되는 것으로 판정하는 경우에 그 흐름을 차단할 수 있다.
바람직하게는, 다른 실시예에서, 원 데이터 패킷의 애플리케이션 계층 파싱 결과는 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입 및 URL 매칭 결과를 포함하고, 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입은, 코프로세서의 프로세서 코어에 의해 코프로세서의 프로토콜 식별 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 프로토콜 식별을 수행함으로써 취득될 수 있고; 또한 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입은 하이퍼텍스트 전송 프로토콜(HTTP)인 것으로 판정하는 경우, 코프로세서의 프로세서 코어는 또한 코프로세서의 URL 매칭 엔진을 호출하여 원 데이터 패킷에 대해 URL 매칭을 수행하여 URL 매칭 결과를 취득하고, 범용 프로세서에 URL 매칭 결과를 전송할 수 있고; 이에 따라 코프로세서에 의해 전송된 URL 매칭 결과를 수신한 후, 범용 프로세서는, 애플리케이션 계층 프로토콜 타입 및 URL 매칭 결과에 따라, 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되는지를 판정하고, 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되면, 그 흐름을 차단한다.
구체적으로, 사용자가 청소년이 불건전한 웹사이트에 액세스하는 것을 방지하기 위한 그린 인터넷 액세스 서비스(green Internet access service)를 활성화하고자 하면; 범용 프로세서는 처리 결과에서 HTTP인 애플리케이션 계층 프로토콜 유형 및 URL 매칭 결과에 따라, 액세스하려는 웹 사이트가 URL이 제한되어 있는 것으로 판정한 경우, 그 흐름을 차단하여, 청소면이 불건전한 웹사이트를 액세싱하는 것을 방지한다.
도 9는 본 발명의 실시예에 따른 코프로세서의 개략 구성도이다. 도 9에 도시된 바와 같이, 본 실시예에 의해 제공되는 코프로세서(91)는 구체적으로는 본 발명의 임의의 실시예에 의해 제공되는 심층 패킷 검사 방법의 단계들을 구현할 수 있고 코프로세서 적용 가능하며, 구체적인 구현 프로세스는 여기서 다시 상세하게 설명하지 않는다. 본 실시예에 의해 제공되는 코프로세서(91)는 구체적으로는 송수신기 모듈(11), 프로세서 코어(12), 및 서브 코프로세서(13)를 포함한다.
상기 송수신기 모듈(11)은, 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 프로세서 코어에(12) 원 데이터 패킷을 전송하도록 구성된다.
프로세서 코어(12)는, 코프로세서(91)의 서브 코프로세서(13)를 호출하여 원 데이터 패킷에 대해 애플리케이션 프로토콜 식별을 수행하여 처리 결과를 생성하고, 범용 프로세서에 처리 결과를 전송하도록 구성된다.
서브 코프로세서(13)는 프로세서 코어(12)의 호출하에 원 데이터 패킷에 대해 애플리케이션 프로토콜 식별을 수행하도록 구성된다.
코프로세서(91)는 FPGA 또는 ASIC을 사용하여 구현될 수 있다. 하나 이상의 프로세서 코어(12)가 코프로세서(91)에 배치되고; 송수신기 모듈(11) 및 서브 코프로세서(13)가 또한 코프로세서(91)에 제공되며; 서브 코프로세서(13)는 하드웨어 기술 언어를 사용하여 구현현되고, 하드웨어 기술 언어는 VHDL 또는 Verilog HDL일 수 있다. 서브 코프로세서(13)는 특별히 데이터 패킷에 대해 애플리케이션 프로토콜 식별을 수행하도록 구성되어, 서비스 처리 효과를 향상시킨다.
본 실시예에서, 코프로세서(91)는 스위칭 버스 모듈(14)을 더 포함할 수 있다. 이에 상응하여, 프로세서 코어(12)는 코프로세서(91)의 스위칭 버스 모듈(14)을 사용하여 서브 코프로세서(13)를 호출할 수 있다.
제1 메모리(15) 및 제2 메모리(16)가 코프로세서(91)의 기능 모듈을 위해 더 구성될 수 있으며, 제1 메모리는 흐름 테이블 및 상태 및 규칙을 포함하는 소프트웨어 코어에 특정한 데이터 구조를 저장하여, DPI 코프로세서가 패킷에 기초하여 처리를 수행하는 대신 흐름의 상태를 감지할 수 있도록 한다. 제2 메모리는, DFA 상태 테이블, 단일 모드 매칭 알고리즘 보조 데이터, 및 서브 코프로세서의 알고리즘 데이터 구조와 같은, 다양한 매칭 엔진 및 서브 코프로세서의 데이터 구조를 저장한다. 유의해야 할 것은, 제1 메모리와 제2 메모리는 논리적으로 분리되어 있을 뿐이고, 이 둘은 동일 물리 메모리 상에 위치할 수 있다는 것이다.
본 실시 예에 의해 제공되는 코프로세서(91)에서, 송수신기 모듈(11)은 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 코프로세서(91)의 프로세서 코어(12)에 원 데이터 패킷을 전송한다. 프로세서 코어(12)는 코프로세서(91)의 서브 코프로세서(13)을 호출하여 원 데이터 패킷에 대해 애플리케이션 프로토콜 식별을 수행하여 처리 결과 생성하고; 프로세서 코어(12)는 범용 프로세서에 처리 결과를 전송하여, 범용 프로세서가 처리 결과에 따라 원 데이터 패킷을 처리하도록 한다. 범용 프로세서와 코프로세서(91)는 DPI를 구현하기 위해 협력하고 코프로세서(91) 내의 서브 코프로세서(13)는 범용 프로세서에서 DPI 기능을 오프로드하도록 DPI 서비스를 위해 특별히 설계될 수 있고, 이는 범용 프로세서의 자원 점유를 감소시켜, 범용 프로세서가 다른 부가 가치 서비를 처리할 수 있도록 한다. 또한, 코프로세서(91)에 프로세서 코어(12)가 제공되고 서브 코프로세서13)는 프로세서 코어(12)의 호출하게 동작하여, 중간 상태 정보가 유지될 수 있도록 하고 프로세서 코어(12)와 서브 코프로세서(13) 사이의 상호작용은 모두 칩내 상호작용이며, 이는 코프로세서(91)와 범용 프로세서 사이의 빈번한 상호작용을 회피하여, 동작 속도를 향상시킨다.
도 10은 본 발명의 실시예에 따른 다른 코프로세서(10)의 개략 구성도이다. 도 10에 도시된 바와 같이, 본 실시예에서, 송수신기 모듈(11)은 수신 유닛(111), 흐름 처리 유닛(112), 및 분배 유닛(113)을 포함할 수 있다. 수신 유닛(111)은 범용 프로세서에 의해 전송되는 원의 데이터 패킷을 수신하도록 구성되고 흐름 처리 유닛(112)은 원 데이터 패킷에 대해 흐름 처리를 수행하도록 구성되고; 분배 유닛(113)은 프로세서 코어(12)에 흐름 처리된 데이터 패킷을 전송하도록 구성된다. 구체적으로 흐름 처리 유닛(112)은 원 데이터 패킷에 대해 단편화된 IP 패킷의 재조립 처리 및 비순차 TCP 패킷의 재정렬 처리를 수행하도록 구성된다. 코프로세서(10)가 다수의 프로세서 코어를 포함하는 경우, 분배 유닛(113)은 구체적으로, 둘 이상의 프로세서 코어의 각 프로세서 코어의 부하 상태를 결정하고, 각 프로세서 코어의 부하 상태에 따라 둘 이상의 프로세서 코어에서 하나의 프로세서 코어를 선택하고, 선택된 프로세서 코어에 흐름 처리된 데이터 패킷을 전송하도록 구성되고; 이에 상응하여, 선택된 프로세서 코어는 서브 코프로세서(13)를 호출하여 흐름 처리된 데이터 패킷에 대해 애플리케이션 계층 파싱, 예를 들어 애플리케이션 프로토콜 식별을 수행하도록 구성된다.
본 실시예에서, 코프로세서(10)는 스위칭 버스 모듈(14)을 더 포함할 수 있다. 이에 상응하여, 프로세서 코어(12)는 구체적으로는 코프로세서(10)의 스위칭 버스 모듈(14)을 사용하여 서브 코프로세서(13)를 호출한다.
실시예에서, 서브 코프로세서(13)는 종점 룩업 서브 코프로세서(131)일 수 있다. 이 경우, 서브 코프로세서(13)는 구체적으로 프로세서 코어(12)의 호출하에 원 데이터 패킷에 대한 종점 룩업을 수행하여 종점 룩업 결과를 취득하고, 프로세서 코어(12)에 종점 룩업 결과를 반환하도록 구성된다. 프로세서 코어(12)는 구체적으로 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 결정하고, 결정된 애플리케이션 계층 프로토콜 타입을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하고 범용 프로세서에 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
도 10에 도시된 바와 같이 다른 실시 예에서, 서브 코프로세서(13)는 프로토콜 식별 서브 코프로세서 및 스트링 매칭 엔진(132)을 포함한다. 프로토콜 식별 서브 코프로세서는 프로세서 코어가 서브 코프로세서(13)를 호출한 후에 스트링 매칭 엔진(132)을 호출하도록 구성되고; 스트링 매칭 엔진(132)은 프로토콜 식별 서브 코프로세서의 호출하에 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어에 그 특징 매칭 결과를 반환하도록 구성된다.
이에 상응하여, 프로세서 코어(12)는 구체적으로는, 적어도 특징 매칭 결과에 따라 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 결정된 애플리케이션 계층 프로토콜 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 범용 프로세서으 그 애플리케이션 파싱 결과를 전송하도록 구성된다.
다른 실시 예에서, 서브 코프로세서(13)는 정규 표현 매칭 엔진일 수도 있다. 정규 표현 매칭 엔진은 프로세서 코어(12)의 호출하에 원 데이터 패킷에 대해 정규 표현 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어(12)에 특징 매칭 결과를 반환하도록 구성된다. 프로세서 코어(12)는 구체적으로 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 결정된 애플케이션 계층 프로토콜 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 범용 프로세서에 그 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
바람직하게는, 서브 코프로세서(13)는 프로세서 코어(12)의 호출하에 원 데이터 패킷에 대해 거동 특징 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어(12)에 그 특징 매칭 결과를 반한하도록 구성된 거동 특징 통계 서브 코프로세서(133)를 더 포함할 수 있다. 프로세서 코어(12)는 구체적으로는 특징 매칭 결과에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 결정된 애플리케이션 계층 프로토콜 유형을 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 범용 프로세서에 그 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
바람직하게는, 본 실시예에서, 코프로세서(10)는 프로세서 코어(12)의 호출하에 원 데이터 패킷에 대해 프로토콜 파싱을 수행하여 파싱 결과를 취득하고, 프로세서 코어(12)에 그 파싱 결과를 반환하도록 구성된 프로토콜 파싱 서브 코프로세서(15)를 더 포함할 수 있으며; 이에 상응하게, 프로세서 코어(12)는 구체적으로 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형 및 프로토콜 파싱 서브 코프로세서(15)에 의해 취득된 파싱 결과를 원 데이터 패킷의 애플리케이션 계층 파싱 결과로서 범용 프로세서에 전송하도록 구성된다.
바람직하게는, 본 실시예에서는, 코프로세서(10)는, 프로세서 코어(12)의 호출하에 원 데이터 패킷에 URL 매칭을 수행하여 URL 매칭 결과를 취득하고, 프로세서 코어(12)에 그 URL 매칭 결과를 반환하도록 구성된 URL 매칭 엔진(16)을 더 포함할 수 있으며; 프로세서 코어(12)는 구체적으로 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형 및 URL 매칭 결과를 원 데이터 패킷의 애플리케이션 계층 파싱 결과로서 범용 프로세서에 전송하도록 구성된다.
바람직하게는, 본 실시예에서, 코프로세서(10)는 결과 보고 처리 모듈(17)을 더 포함한다. 프로세서 코어(12)는 구체적으로 결과 보고 처리 모듈(17)에 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 전송하도록 구성되고; 결과 보고 처리 모듈(17)은 미리 설정된 포맷에 따라 애플리케이션 계층 파싱 결과를 캡슐화하고, 범용 프로세서에 캡슐화된 애플리케이션 계층 파싱 결과를 전송하도록 구성된다.
실제 애플리케이션에서, DPI 기기의 범용 프로세서 및 코프로세서(91)는 협동 방식으로 DPI 서비스를 구현하고, 코프로세서(91) 내의 기능 모듈은 실제 DPI의 서비스 요건에 따라 제공될 수 있고 프로세서 코어(12)의 로직도 또한 실제 DPI 서비스 요건에 따라 프로그램될 수 있다. 전술한 실시예는 기능 모듈의 여러 구현 방식을 제공하지만, 본 발명은 이에 한정되지 않는다.
DPI 기기는 여러 계층, 예를 들어 위에서 아래까지 4개의 계층: 연산 집약적 계층, DPI 서비스 제어 계층, DPI 서브서비스 논리 계층 및 알고리즘 엔진 계층으로 분할될 수 있다. 상위 계층일수록 더 복잡하고 일반적인 서비스를 처리하고, 하위 계층일수록 더 간단하고 더 전용의 알고리즘을 가진다. 하드웨어 가속 성능을 향상시키기 위해, 가능한 한 많은 DPI 관련 태스크가 코프로세서에 의해 수행되어야 한다. 이 경우에, 범용 프로세서는 더 연산 집약적 태스크(arithmetic-intensive task)를 수행할 수 있다. 코프로세서는 DPI 서비스 제어 계층, DPI 서브 서비스 논리 계층 및 알고리즘 엔진 계층의 로직 구현을 책임진다.
원칙적으로, 상위 계층 모듈은 하위 계층 모듈을 호출하여 필요한 기능을 구현한다. 물론, 동일한 계층의 모듈은 협동 방식으로 기능을 완료하기 위해 서로를 호출할 수 있다. 이하에 계층에 대해 상세히 설명한다:
계층 1: 연산 집약적 계층으로, DPI 서비스 로직에서 암호화 및 해독, 코딩 및 디코딩, 및 복잡한 로직 처리; 부가 가치 서비스와 같은 다른 비 DPI 서비스; 정책 매칭(policy matching); 패킷 액션 실행(packet action execution) 등을 포함한, 대량의 연산 처리를 필요로 하는 작업을 담당한다.
계층 2: DPI 서비스 제어 계층으로, 코프로세서에 프로세서 코어를 배치함으로써, DPI 엔진의 여러 단계에 걸친 시퀀스 제어, 상태 및 규칙 매칭, 교차 패킷(cross-packet) 처리, 및 중간 상태 저장과 같은 DPI 서비스에 관련된 제어 로직을 포함한, DPI 서비스 제어 로직을 실행한다.
계층 3: DPI 서브서비스 논리 계층으로, 예를 들어, 애플리케이션 프로토콜 식별, 프로토콜 파싱 서브 코프로세서, 및 거동 특징 통계 서브 코프로세서 등의 고정될 수 있는 DPI 특정 서브서비스를 담당한다.
계층 4: 알고리즘 엔진 계층으로, 구체적으로는 예를 들어, 정규 표현 매칭 엔진, 부동 소수점 표현 엔진, 멀티 모드 스트링 매칭 엔진, 단일 모드 스트링 매칭 엔진, 및 거동 파라미터 연산 엔진 등의, DPI에 최적화된 알고리즘 엔진 태스크를 담당한다.
특별히 유의해야 할 것은, 코프로세서의 내부에, 즉, 계층 2 내지 계층 4에는 스위칭 버스 모듈이 이들 계층화된 모듈 간의 메시지 및 데이터 상호 작용을 위해 구성되어 있다는 것이다. 그러나 칩 간 상호 작용은 계층 1과 다른 계층 사이에, 즉 범용 프로세서와 코프로세서 사이에 수행되고, 이는 표준 버스, 예를 들어 PCIE를 사용하여 구현될 수 있다. 버스의 유형은 범용 프로세서에 의해 제공되는 외부 인터페이스에 따라 설정될 수 있다.
대응하는 계층에 할당될 수 있는 모듈에 더해, 부수적인 처리를 위한 일부 모듈도 있으며, 이들 모듈은 계층에 무관하고 고정된 로직을 사용하여 구현되며, 예를 들어, 코프로세서(91) 내의 송수신기 모듈, 결과 보고 처리 모듈, 메모리 판독 및 기록 모듈, 캐시, 등을 들 수 있다.
실제 구현 프로세스에서, 범용 프로세서는 서비스 유형에 따라, 범용 프로세서 자체 또는 코프로세서가 처리를 수행하는지를 미리 결정할 수 있고; 서비스 유형이 상위 계층의 것이고 복잡한 처리 알고리즘에 대응하면, 범용 프로세서가 처리를 수행하고, 서비스 유형이 DPI 관련 서비스이면, 코프로세서가 처리를 수행한다.
계층화된 설계 아키텍처에 더해, 본 발명의 본 실시예는, DPI 중간 상태를 저장하여 더 우수한 확장성 및 성능을 달성하기 위해, 도 10의 제1 메모리(83) 및 제2 메모리(84)와 같이, 코프로세서를 위한 외부 메모리를 구성할 것을 더 제안한다. 이 경우, 상태가 저장될 필요가 있는 태스크가 처리되는 경우, 그 태스크는 범용 프로세서에 의해 완료될 필요는 없고, 코프로세서는 더 많은 프로세서 자원을 오프로드할 수 있다. 또, 구성된 외부 메모리는 DPI 처리 중에 사용될 필요가 있는 다양한 특징 필드 데이터 구조 및 알고리즘 특정 데이터 구조를 더 저장할 수 있다. 이 경우에, 코프로세서는, 범용 프로세서를 사용하여 버스를 통해 데이터를 읽는 대신에 직접 신속하게 데이터를 읽을 수 있어, 더 높은 처리 성능을 달성할 수 있다.
본 실시예에서, 스트링 매칭 엔진(132)은 구체적으로, 프로세서 코어(12)의 호출하에, 제1 메모리(83)로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 스트링 매칭 알고리즘 상태 테이블에 따라 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하도록 구성되고, 제1 메모리(83)는 스트링 매칭 알고리즘 상태 테이블을 저장하도록 구성된다.
구체적으로, 제1 메모리(83)는 코프로세서(10)의 기능 모듈을 위해 구성되고; 제1 메모리(83)는 스트링 매칭 알고리즘 상태 테이블을 저장하고; 스트링 매칭 엔진(132)이 멀티 모드 스트링 매칭 엔진인 경우,
스트링 매칭 알고리즘 상태 테이블은 멀티 모드 스트링 매칭 알고리즘 상태 테이블이고; 스트링 매칭 엔진(132)이 단일모드 스트링 매칭 엔진인 경우, 스트링 매칭 알고리즘 상태 테이블은 단일 모드 스트링 매칭 알고리즘 상태 테이블이다. 예를 들어, 멀티 모드 스트링 매칭 알고리즘은 AC 알고리즘이고; 멀티 모드 스트링 매칭 알고리즘 상태 테이블은 AC 상태 테이블이고; 멀티 모드 스트링 매칭 엔진은 멀티 모드 스트링 매칭 알고리즘 상태 테이블에 따라 데이터 패킷에 대해 멀티 모드 스트링 매칭을 구현할 수 있다. 멀티 모드 스트링 매칭 엔진은 제1 메모리(82)에 대해 직접 읽기 또는 쓰기 작업을 수행하지 않고; 코프로세서(10)는 캐시(cache)를 구비하여 이 캐시를 사용하여 제1 메모리(83)에 액세스한다.
본 실시예에서, 정규 표현 매칭 엔진은 구체적으로, 프로세서 코어(12)의 호출하에, 제1 메모리(83)에서 정규 표현 매칭 알고리즘 상태 테이블을 읽고, 정규 표현 매칭 알고리즘 상태 테이블에 따라 원 데이터 패킷에 대해 정규 표현 매칭을 수행하도록 구성되며, 제1 메모리(83)는 정규 표현 매칭 알고리즘 상태 테이블을 저장하도록 구성된다.
구체적으로, 제1 메모리(83)는 정규 표현 매칭 알고리즘 상태 테이블을 저장한다. 예를 들어, 정규 표현 매칭 알고리즘은 DFA 알고리즘인 경우, 정규 표현 매칭 알고리즘 상태 테이블은 DFA 상태 테이블이며, 정규 표헌 매칭 엔진은 정규 표현 매칭 알고리즘 상태 테이블에 따라 데이터 패킷에 대해 정규 표현 매칭을 구현할 수 있다. 정규 표현 매칭 엔진은 제1 메모리(83)에서 읽기 또는 TM기 작업을 직접 수행하지 않으며; 코프로세서(10)가 캐시를 구비하여 이 캐시를 사용하여 제1 메모리(83)를 액세스한다.
본 실시예에서는, 스트링 매칭 엔진(132)이 제1 메모리(83) 내의 스트링 매칭 알고리즘 상태 테이블에 따라 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하고, 프로세서 코어(12)는 제2 메모리(84)에서 상태 및 규칙 데이터 구조를 읽고, 특징 매칭 결과와 상태 및 규칙 데이터 구조에 따라 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하도록 구성되고, 제2 메모리(84)는 상태 및 규칙 데이터 구소를 저장하도록 구성된다.
구체적으로, 제2 메모리(84)는 코프로세서(10)의 프로세서 코어(12)을 위해 구성되고; 제2 메모리(84)는 상태 및 규칙 데이터 구조를 저장하고, 상태 및 규칙 데이터 구조는 서비스 규칙과 애플리케이션 계층 프로토콜 타입 간의 대응관계를 저장하는 데 사용되고; 프로세서 코어(12)는 스트링 매칭 엔진에 의해 취득된 특징 매칭 결과에 따라 제2 메모리의 상태 및 규칙 데이터 구조를 검색하여 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입을 취득한다.
프로세서 코어(12)가 제2 메모리(84)에 직접 읽기 또는 쓰기를 직접 수행하지 않는 것도 허용되고; 코프로세서(10)는 캐시를 구비하고 캐시를 사용하여 제2 메모리(84)에 액세스한다.
본 실시예에서, 제1 메모리(83) 및 제2 메모리(84)는 이중 뱅크 모드(double bank mode)일 수 있다.
구체적으로, 제1 메모리(83) 및 제2 메모리(84)는 이중 뱅크(더블 은행) 모드로 설계될 수 있으며, 제1 뱅크는 현재 사용되는 데이터 구조를 저장하는 데 사용되며 현재의 뱅크라고 하며, 제2 뱅크는 업그레이드된 데이터 구조를 저장하는 데 사용되며, 업그레이드 뱅크로 지칭된다. 시스템의 동작 프로세스에서, 코프로세서(10)는 서비스 처리를 구현하기 위해 현재의 뱅크 내의 데이터를 액세스한다. 이 프로세스에서, 메모리 내의 데이터가 업그레이드되어야 하는 경우, 업그레이드될 데이터는 업그레이드 뱅크로 적재될 수 있고; 업그레드 프로세스는 메모리의 현재 뱅크에 대한 코프로세서(10)의 액세스에 영향을 주지 않고; 새로운 데이터는 적재된 후에 시스템 뱅크로 스위칭되며; 이 경우에, 제1 뱅크가 시스템 뱅크로 사용되고 제2 뱅크가 현재의 뱅크로 사용된다. 유사하게, 제1 뱅그와 제2 뱅크는 업그레이드 데이터를 저장하기 위해 교대로 사용되며, 이는 업그레이드가 현재의 서비스를 중단하지 않고 유효하도록 보장한다. 주목할 가치가 있는 것은, 실제 애플리케이션에서, 시스템 뱅크가 스위칭되 후, 일부 서비스 트랙은 여전히 처리 프로세스중에 있으므로, 여전히 처리 프로세스 중에 있는 서비스 트래픽은 새로운 시스템 뱅크로 강제로 스위칭될 수 없다. 이 경우에, 새로운 서비스 트래픽은 새로운 시스템 뱅크의 데이터를 사용하여 처리되고, 기존의 서비스 트래픽은 원래의 시스템 뱅크를 사용하여 처리를 계속한다. 원래의 시스템 뱅크는 기존의 모든 서비스 트래픽이 완전히 처리된 후에만 비활성 상태로 설정된다. 이것은 현재의 서비스를 중단시키지 않고 시스템 업그레이드를 달성한다.
예를 들어, 비트토런트 프로토콜(BitTorrent protocol)의 원본 식별 특징(original identifying feature)은 "Bttorrent"이지만; 비트토런트 소프트웨어가 업그레이드되기 때문에, 새로운 특징은 "XBttorrent"이고; 따라서, DPI 식별을 위한 지식 기반은 갱신될 필요가 있으며, 본 발명의 코프로세서(10)의 대응하는 데이터 구조는 AC 상태 테이블에 저장된 특정 스트링 특징이다. 따라서, 새로 컴파일된 특징 데이터 구조는 업그레이드 뱅크로 적재될 필요가 있다. 적재 프로세스에서, 멀티 모드 스트링 매칭 엔진은 여전히 현재의 뱅크를 사용한다. 적재가 완료되면, 현재의 뱅크와 시스템 뱅크가 스위칭된다. 멀티 모드 스트링 매칭 엔진은 새로운 AC 상태 테이블을 읽을 수 있다.
실제 애플리케이션 프로세스는 주로 컴파일 부분(compiling part)과 실행 부분(running part)을 포함한다.
컴파일링 부분: 특징 컴파일러(feature compiler), 파싱 서브 프로세서 컴파일러(parsing sub-processor compiler), 결과 템플릿 컴파일러(result template compiler), 및 정책 컴파일러(policy compiler).
실제 애플리케이션에서, 컴파일러는 주로 다음을 포함한다:
a. 프런트엔드 컴파일러(front-end compiler): 특징 컴파일러, 파싱 서브 프로세서 컴파일러, 매칭 규칙 컴파일러, 등.
b. 백그라운드 컴파일러(backgound compiler): 정규 표현 컴파일러, 단일 모드 스트링 알고리즘 컴파일러, 멀티 모드 문자열 알고리즘 컴파일러 등.
프런트 엔드 컴파일러의 주요 기능은 다음을 포함한다: 다양한 DPI 서비스의 규칙(예를 들어, 애플리케이션 프로토콜 식별, IPS/IDS 및 URL 필터링)을 본 발명에 따른 코프로세서에 의해 사용될 수 있는 규칙, 즉, 정규 표현, 스트링, 값, 등으로 분류하는 것; 제2 메모리에 데이터 구조, 즉, 상태 및 규칙의 데이터 구조 등을 생성하는 것; 코프로세서 내의 프로세서 코어의 소프트웨어 로직 상위레벨 프로그래밍 언어 코드를 코프로세서의 프로세서 코어에 의해 실행될 수 있는 명령으로 컴파일링하는 것; 범용 프로세서에 의해 사용되는 다양한 DPI 서비스 데이터 구조, 즉 해독 식별 및 알고리즘 식별을 지원하기 위해 전술한 데이터 구조를 컴파일링하는 것.
백그라운드 컴파일러의 주요 기능은 다음을 포함한다: 다양한 코프로세서에서 최하위 계층 알고리즘 엔진 모듈에 의해 사용되는 데이터 구조, 즉, 전술한 설명에 예시되었고 여기서는 다시 상세하게 설명하지 않는, 제1 메모리 내의 제이터 구조를 컴파일링하는 것을 포함한다.
두 종류의 컴파일러에 더해, 컴파일링 부분의 모듈은 코프로세서 드라이브 프로그램을 더 포함하며, 이는 각종 컴파일링된 데이터 구조를 코프로세서의 제1 메모리와 제2 메모리, 및 코프로세서의 칩 내 메모리(예를 들면, 프로세서 코어의 로직 명령어는 프로세서의 칩내 메모리에 저장됨)에 적재하는 것을 담당한다.
실행 부분: 구성 API의 하드웨어 모듈, DPI 처리 API, 구동 프로그램, DPI 서비스 제어 계층의 프로세서 코어의 펌웨어, DPI의 서브 처리 계층(파싱 캐릭터 프로세서, URL 필터링 모듈 및 정책 매칭 모듈), 및 알고리즘 엔진 계층(단일 모드 스트링 매칭 진, 정규 표현 매칭 엔진, 및 멀티 모드 스트링 매칭 엔진).
도 11은 본 발명의 실시예에 따른 범용 프로세서의 개략 구성도이다. 도 11에 도시된 바와 같이, 본 실시예에 의해 제공되는 범용 프로세서(82)는 구체적으로는 본 발명의 임의의 실시예에 의해 제공되는 심층 패킷 검사 방법의 단계들을 구현할 수 있고 범용 프로세서에 적용 가능하며, 구체적인 구현 프로세스는 여기서 다시 상세하게 설명하지 않는다. 본 실시예에 의해 제공되는 범용 프로세서는 전송 모듈(21), 송수신기 모듈(22), 및 처리 모듈(23)을 포함한다.
전송 모듈(21)은 코프로세서에 원 데이터 패킷을 전송하도록 구성된다.
수신 모듈(22)은 코프로세서에 의해 전송되는, 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 수신하도록 구성되고,
애플리케이션 계층 파싱 결과는 코프로세서의 프로세서 코어에 의해 코프로세서의 적어도 하나의 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하도록 함으로써 취득되고, 애플리케이션 계층 파싱 결과는 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용된다.
처리 모듈(23)은 적어도 애플리케이션 계층 파싱 결과에 따라 원 데이터 패킷을 처리하도록 구성된다.
본 실시예에 의해 제공되는 범용 프로세서에서, 범용 프로세서는, 코프로세서를 원 데이터 패킷을 전송하고, 코프로세서에 의해 전송되는 처리 결과를 수신하고, 처리 결과에 따라 원 데이터 패킷을 처리한다. 범용 프로세서 및 코프로세서는 DPI를 구현하기 위해 협력하고; 코프로세서 내의 서브 코프로세서는 특별히 DPI 서비스를 위해 범용 프로세서로부터 DPI 기능을 오프로드하도록 설계되고, 이는 범용 프로세서의 자원 점유를 줄여 범용 프로세서가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또, 프로세서 코어가 코프로세서에 제공되며 서브 코프로세서가 프로세서 코어의 호출하에 동작하여, 중간 상태 정보가 유지될 수 있고, 프로세서 코어와 서브 코프로세서 사이의 상호작용은 모두 칩내 상호작용이어서, 이는 코프로세서와 범용 프로세서 사이의 빈번한 상호작용을 회피하여 실행 속도를 증가시킨다.
실시예에서, 처리 모듈(23)은 구체적으로, 원 데이터 패킷의 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 호화된 데이터 패킷인 것으로 식별되면, 원 데이터 패킷을 해독하도록 구성된다.
다른 실시예에서, 처리 모듈(23)은 구체적으로, 원 데이터 패킷의 애플리케이션 계층 파싱 결과에 따라, 원 데이터 패킷이 속하는 흐름의 서비스 유형을 결정하고, 그 서비스 유형에 따라 원 데이터 패킷이 속하는 흐름에 대해 트래픽 통계, 과금, 또는 송신 가속을 전송 가속을 수행하도록 구성된다.
다른 실시예에서, 원 데이터 패킷의 애플리케이션 계층 파싱 결과는 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형 및 URL 매칭 결과를 포함하고, 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형은 코프로세서의 프로토콜 식별 서브 코프로세서를 호출하여 원 데이터 패킷에 대해 프로토콜 식별을 수행함으로써 취득될 수 있고; 또한 원 데이터 패킷의 애플리케이션 계층 프로토콜 타입은 하이퍼텍스트 전송 프로토콜(HTTP)인 것으로 판정하는 경우, 코프로세서의 프로세서 코어는 또한 코프로세서의 URL 매칭 엔진을 호출하여 원 데이터 패킷에 대해 URL 매칭을 수행하여 URL 매칭 결과를 취득하고, 범용 프로세서에 URL 매칭 결과를 전송할 수 있고; 이에 따라 코프로세서에 의해 전송된 URL 매칭 결과를 수신한 후, 범용 프로세서는, 애플리케이션 계층 프로토콜 타입 및 URL 매칭 결과에 따라, 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되는지를 판정하고, 원 데이터 패킷이 속하는 흐름이 제한된 웹사이트를 액세스하는 데 사용되면, 그 흐름을 차단한다.
도 12는 본 발명의 실시예에 따른 제1 DPI 기기의 개략 구성도이다. 도 12에 도시된 바와 같이, 본 실시예에 의해 제공되는 DPI 기기는 본 발명의 임의의 실시 예에 제공되는 코프로세서(81) 및 본 발명의 임의의 실시예에서 제공되는 범용 프로세서(82)를 포함한다.
본 실시예에서 제공되는 DPI 기기에서, 범용 프로세서(82) 및 코어 프로세서(81)는 DPI를 구현하기 위해 협력하며; 코 프로세서(81) 내의 서브 코프로세서는 DPI 서비스를 위해 특별히 설계될 수 있으며; DPI 기능은 범용 프로세서(82)로부터 오프로드되어, 범용 프로세서(82)가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또한, 프로세서 코어가 코 프로세서(81)에 제공되고 서브 코프로세서는 프로세서 코어의 호출하여 동작하여 중간 상태 정보가 유지될 수 있고; 프로세서 코어와 코 프로세서 사이의 모든 상호 작용은 칩내 상호작용이어서, 이는 코프로세서(81)와 범용 프로세서(82) 사이의 빈번한 상호 작용을 회피하여 실행 속도를 증가시킨다.
실시예에서, DPI 기기에 포함된 하나의 범용 프로세서가 존재한다. 실제 애플리케이션에서, 하나의 코 프로세서가 또한 하나 이상의 범용 프로세서와 협력하여 DPI 서비스를 구현할 수 있다.
다른 실시예에서, DPI 기기에 포함된 둘 이상의 범용 프로세서가 존재하고; DPI 기기는, 네트워크 어댑터와 부하 밸런싱 장치를 더 포함한다.
네트워크 어댑터는 네트워크로부터 데이터 패킷을 수신하고, 부하 밸런싱 장치에 데이터 패킷을 전송하도록 구성되고;
부하 밸런싱 장치는 둘 이상의 범용 프로세서의 각 범용 프로세서의 부하 상태를 결정하고, 범용 프로세서 각각의 부하 상태에 따라 하나의 범용 프로세서를 선택하고, 선택된 범용 프로세서에 상기 데이터 패킷을 전송하도록 구성된다.
도 13은 본 발명의 실시예에 따른 제2 DPI 기기의 개략 구성도이다. 도 13에 도시된 바와 같이, 두 개의 범용 CPU(도 13에서 33 및 35)가 DPI 기기에 제공되는 예를 사용하며, 네트워크 어댑터(31)와 부하 밸런싱 장치(32)가 DPI 기기에 더 제공된다. 네트워크 어댑터(31)는 네트워크의 다른 기기에 의해 전송된 데이터 패킷을 수신하고, 부하 분담을 담당하는 부하 밸런싱 장치(32)를 사용하여, 처리를 위해 적절한 범용 CPU에 직접 전송하고, DMA를 방식을 사용하지 않는다. 범용 CPU는, DPI 처리가 필요하다고 판단한 경우, 코 프로세서(34)에 데이터 패킷을 전송하고; 코프로세서(34)가 처리를 완료한 후 PCIE 인터페이스를 통해 DPI 처리 결과를 수신하고; DPI 처리 결과에 따라 다른 서비스 처리를 더 수행한 후, 네트워크 어댑터(31)를 사용하여, 전달될 데이터 패킷을 전달한다.
부하 밸런싱 장치(32)는 FPGA를 사용하여 구현될 수 있고; 부하 밸런싱 장치(32)는, 한편으로, 데이터 패킷을 처리하기 위해 각 범용 CPU의 부하 상태에 따라 적절한 범용 CPU를 선택하고, 다른 한편으로, 메시지 수신 및 로직 송신을 구현하다. DPI 기기가 단 하나의 범용 CPU를 갖는 경우, 부하 밸런싱 장치(32)가 제공되지 않는 것이 가능하고, 메시지 수신 및 로직 송신은 다른 칩을 사용하여 구현될 수 있으며; 본 발명의 실시예에서의 범용 CPU는 구체적으로 카비움(Cavium) 범용 CPU일 수 있다.
본 발명의 본 실시예에서 제공되는 DPI 기기에서, 범용 프로세서와 코 프로세서는 DPI를 구현하기 위해 협력하고; 코 프로세서 내의 서브 코프로세서는 특별히 범용 프로세서로부터 DPI 기능을 오프로드하도록 DPI 서비스를 위해 설계될 수 있어, 범용 프로세서의 자원 점유를 줄여, 범용 프로세서가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또, 프로세서 코어가 코프로세서에 제공되며 서브 코프로세서가 프로세서 코어의 호출하에 동작하여, 중간 상태 정보가 유지될 수 있고, 프로세서 코어와 서브 코프로세서 사이의 상호작용은 모두 칩내 상호작용이어서, 이는 코프로세서와 범용 프로세서 사이의 빈번한 상호작용을 회피하여 실행 속도를 증가시킨다.
도 14는 본 발명의 실시예에 따른 제3 DPI 기기의 개략 구성도이다. 도 14에 도시된 바와 같이, 본 실시예에서, DPI 기기는 두 개의 범용 CPU(도 14에서 42 및 45)를 포함하며; DDR3 메모리(43)는 범용 CPU(42)를 위해 구성되고, DDR3 메모리(46)는 범용 CPU(45)를 위해 구성된다. DPI 기기에 네트워크 어댑터(41)가 더 제공되고; 네트워크 내의 다른 기기에 의해 전송되는 데이터 패킷을 수신한 후, 네트워크 어댑터(41)는 먼저 PCI-E 인터페이스를 사용하여 DMA 방식으로, 범용 CPU(42)가 데이터 패킷을 판독하도록 트리거하고, 데이터 패킷을 네트워크 어댑터에 의해 사용된 DDR3 메모리(43)에 저장한다. 범용 CPU(42)가, 어떤 처리를 수행한 후에, DPI 처리가 수행될 필요가 있는 것을 발견하면, 범용 CPU(42)는 DPI 처리를 위해 코 프로세서(44)에 DMA 방식으로 데이터 패킷을 전송하고; 처리를 완료한 후, 코 프로세서(44)는 추가 처리를 위해 범용 CPU(42)에 DPI 처리 결과를 반환하고; 그 후 샌디 브리지(Sandy-Brige) 범용 CPU(42)는 네트워크 어댑터(41)를 사용하여 네트워크 내의 다음 네트워크 기기에, 전달해야 할 데이터 패킷을 전송한다. 유의해야 할 것은 본 발명의 실시예에 따른 범용 CPU는 샌디 브리지(Sandy-Brige) 범용 CPU일 수 있다는 것이다.
본 발명의 본 실시예에서 제공된 DPI 기기에서, 범용 프로세서와 코 프로세서는 DPI를 구현하기 위해 협력하고; 코 프로세서 내의 서브 코프로세서는 특별히 DPI 서비스를 위해 범용 프로세서로부터 DPI 기능을 오프로드하도록 설계될 수 있으며, 이는 범용 프로세서의 자원 점유를 줄여, 범용 프로세서가 다른 부가 가치 서비스를 처리할 수 있도록 한다. 또, 프로세서 코어가 코프로세서에 제공되며 서브 코프로세서가 프로세서 코어의 호출하에 동작하여, 중간 상태 정보가 유지될 수 있도록 하며, 프로세서 코어와 서브 코프로세서 사이의 상호작용은 모두 칩내 상호작용이어서, 코프로세서와 범용 프로세서 사이의 빈번한 상호작용을 회피하여 실행 속도를 증가시킨다.
본 발명의 실시예들에 의해 제공되는 심층 패킷 검사 방법 및 기기는 다수의 애플리케이션 시나리오, 예를 들어, 애플리케이션 프로토콜 식별, 심층 프로토콜 파싱, IDS(Intrusion Detection System), 및 기업 네트워크 라우터 상의 정책 엔진을 수행하기 위해 DPI 코프로세서를 사용하는 것; 애플리케이션 프로토콜 식별, 심층 프로토콜 파싱, 및 라우터 및 BRAS(Broadband Remote Access Server) 상의 정책 엔진을 수행하기 위해 DPI 코프로세서를 사용하는 것; 애플리케이션 프로토콜 식별, 심층 프로토콜 파싱, 콘텐츠 필터링, 및 GGSN(Gateway GPRS Support Node) 상의 정책 엔진을 수행하기 위해 DPI 코프로세서를 사용하는 것; 애플리케이션 프로토콜 식별, 심층 프로토콜 파싱, 콘텐츠 필터링 및 애플리케이션 게이트웨이 상의 정책 엔진을 수행하기 위해 DPI 코프로세서를 사용하는 것; 그리고 애플리케이션 프로토콜 식별, 심층 프로토콜 파싱, 무선 자원 최적화, 및 무선 액세스 네트워크 요소 RNC(Radio Network Controller) 및 NodeB 상의 정책 엔진을 정책 엔진을 수행하기 위해 DPI 코프로세서를 사용하는 것을 포함하지만 이에 한정되는 것은 아니다.
당업자는 전술한 방법 실시예의 단계 중 일부 또는 전부를, 관련 하드웨어에 명령하는 프로그램으로 구현할 수 있음을 이해할 수 있을 것이다. 상기 프로그램은 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있다. 상기 프로그램이 실행될 때, 전술한 방법 실시예의 단계들이 수행된다. 상기 저장 매체는 ROM, RAM, 자기 디스크, 또는 광 디스크 등의, 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
끝으로, 유의할 것은 전술한 실시예는 본 발명의 기술적 해결방안을 설명하기 위한 것이지 본 발명을 한정하기 위한 것이 아니라는 것이다. 전술한 실시예를 참조하여 본 발명을 자세하게 설명하였지만, 당업자는 여전히, 본 발명의 실시예의 기술적 방안의 범위를 벗어나지 않으면서, 전술한 실시예에 기재된 기술 방안에 수정을 가하거나 그 기술적 특징의 일부 또는 전부를 동등물로 대체할 수 있음을 알아야 한다.

Claims (35)

  1. 코프로세서의 송수신기 모듈이, 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 상기 코프로세서의 프로세서 코어에 상기 원 데이터 패킷을 전송하는 단계 - 상기 코프로세서는 복수의 서브 코프로세서를 포함함 - ;
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계 - 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 및
    상기 프로세서 코어가, 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하여, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 하는 단계
    를 포함하고,
    상기 복수의 서브 코프로세서 각각은 특정 DPI 서브서비스(subservice)를 완료하도록 구성되고, 상기 복수의 서브 코프로세서는 DPI 서브서비스 복잡성의 차이에 따라 적어도 하나의 상위 계층 서브 코프로세서와 적어도 하나의 하위 계층 서브 코프로세서로 분류되며, 상기 상위 계층 서브 코프로세서는 필요한 기능을 실행하기 위해 상기 하위 계층 서브 코프로세서를 호출할 수 있는,
    심층 패킷 검사(DPI) 방법.
  2. 제1항에 있어서,
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하는 것은,
    상기 프로세서 코어가, 상기 코프로세서의 스위칭 버스 모듈을 사용하여 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하는 것을 포함하는, 심층 패킷 검사 방법.
  3. 제1항에 있어서,
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
    상기 프로세서 코어가 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서(protocol identifying sub-coprocessor)를 호출하는 단계;
    상기 프로세서 코어의 호출하의 상기 프로토콜 식별 서브 코프로세서가, 상기 원 데이터 패킷에 대해 종점 룩업(endpoint lookup)을 수행하고, 상기 프로세서에 코어에 종점 룩업 결과를 반환하는 단계; 및
    상기 프로세서 코어가, 적어도 상기 종점 룩업 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함하는, 심층 패킷 검사 방법.
  4. 제1항에 있어서,
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
    상기 프로세서 코어가, 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서를 호출하는 단계;
    상기 프로세서 코어의 호출하의 상기 프로토콜 식별 서브 코프로세서가, 상기 코프로세서에 포함된 스트링 매칭 엔진을 호출하는 단계;
    상기 프로토콜 식별 서브 코프로세서의 호출하의 스트링 매칭 엔진(string matching engine)이, 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과(feature matching result)를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하는 단계; 및
    상기 프로세서 코어가, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 상기 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함하는, 심층 패킷 검사 방법.
  5. 제1항에 있어서,
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
    상기 프로세서 코어가 상기 코프로세서에 포함된 정규 표현 매칭 엔진(regular expression matching engine)을 호출하는 단계;
    상기 프로세서 코어의 호출하의 상기 정규 표현 매칭 엔진이, 상기 원 데이터 패킷에 대해 정규 표현 매칭을 수행하여 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하는 단계; 및
    상기 프로세서 코어가, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하는 단계를 포함하는, 심층 패킷 검사 방법.
  6. 제1항에 있어서,
    상기 프로세서 코어가, 상기 코프로세서의 하나 이상의 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하는 단계는,
    상기 프로세서 코어가 상기 코프로세서에 포함된 프로토콜 식별 서브 코프로세서를 호출하여 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 취득하는 단계; 및
    상기 프로세서 코어가, 상기 코프로세서에 포함된 프로토콜 파싱 서브 코프로세서를 호출하여 파싱 결과를 취득하고, 상기 파싱 결과 및 상기 애플리케이션 계층 프로토콜 타입을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로서 사용하는 단계를 포함하는, 심층 패킷 검사 방법.
  7. 제1항에 있어서,
    상기 프로세서 코어가 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하는 단계는,
    상기 프로세서 코어가 상기 코프로세서에 포함된 결과 보고 처리 모듈에 상기 애플리케이션 계층 파싱 결과를 전송하는 단계; 및
    상기 결과 보고 처리 모듈이, 미리 설정된 형식에 따라 상기 애플리케이션 계층 파싱 결과를 캡슐화하고(encapsulating), 상기 캡슐화된 애플리케이션 계층 파싱 결과를 상기 범용 프로세서에 전송하는 단계를 포함하는, 심층 패킷 검사 방법.
  8. 제4항에 있어서,
    상기 프로토콜 식별 서브 코프로세서의 호출하의 스트링 매칭 엔진이, 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하는 단계는,
    상기 프로토콜 식별 서브 코프로세서의 호출하에, 상기 스트링 매칭 엔진이, 제1 메모리로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 상기 스트링 매칭 알고리즘 상태 테이블에 따라 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 상기 특징 매칭 결과를 취득하는 단계를 포함하는, 심층 패킷 검사 방법.
  9. 제8항에 있어서,
    상기 프로세서 코어가, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하는 것은,
    상기 프로세서 코어가, 제2 메모리에서 상태 및 규칙 데이터 구조(condition and rule data structure)를 읽고, 상기 특징 매칭 결과와 상기 상태 및 규칙 데이터 구조에 따라 상기 원 데이터 패킷의 애플리케이션 프로토콜 유형을 결정하는 단계를 포함하는, 심층 패킷 검사 방법.
  10. 송수신기 모듈, 복수의 서브 코프로세서, 및 프로세서 코어를 포함하는 코프로세서로서,
    상기 송수신기 모듈은, 범용 프로세서에 의해 전송되는 원 데이터 패킷을 수신하고, 상기 프로세서 코어에 상기 원 데이터 패킷을 전송하도록 구성되고;
    상기 프로세서 코어는, 상기 복수의 서브 코프로세서 중 적어도 하나를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과를 취득하고 - 상기 애플리케이션 계층 파싱 결과는 상기 원 데이터 패킷의 애플리케이션 계층 정보를 나타내는 데 사용됨 -; 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성되어, 상기 범용 프로세서가 상기 애플리케이션 계층 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 하고;
    상기 서브 코프로세서는 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하여, 상기 원 데이터 패킷의 애플리케이션 계층 정보를 취득하도록 구성되며,
    상기 복수의 서브 코프로세서 각각은 특정 DPI 서브서비스를 완료하도록 구성되고, 상기 복수의 서브 코프로세서는 DPI 서브서비스 복잡성의 차이에 따라 적어도 하나의 상위 계층 서브 코프로세서와 적어도 하나의 하위 계층 서브 코프로세서로 분류되며, 상기 상위 계층 서브 코프로세서는 필요한 기능을 실행하기 위해 상기 하위 계층 서브 코프로세서를 호출할 수 있는,
    코프로세서.
  11. 제10항에 있어서,
    상기 프로세서 코어는, 상기 코프로세서의 스위칭 버스 모듈을 사용하여 상기 서브 코프로세서를 호출하여 상기 원 데이터 패킷에 대해 애플리케이션 계층 파싱을 수행하도록 구성되는, 코프로세서.
  12. 제10항에 있어서,
    상기 서브 코프로세서는, 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 종점 룩업을 수행하여 종점 룩업 결과를 취득하고, 상기 프로세서에 코어에 상기 종점 룩업 결과를 반환하도록 구성되고;
    상기 프로세서 코어는, 적어도 상기 종점 룩업 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 파싱 결과를 전송하도록, 구성되는, 코프로세서.
  13. 제10항에 있어서,
    상기 서브 코프로세서는 프로토콜 식별 서브 코프로세서 및 스트링 매칭 엔진을 포함하고,
    상기 프로토콜 식별 서브 코프로세서는, 상기 프로세서 코어의 호출하의 스트링 매칭 엔진을 호출하도록 구성되고, 상기 스트링 매칭 엔진은 상기 프로토콜 식별 서브 코프로세서의 호출하에 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하며;
    상기 프로세서 코어는, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성되는, 코프로세서.
  14. 제10항에 있어서,
    상기 서브 코프로세서는 정규 표현 매칭 엔진이고,
    상기 정규 표현 매칭 엔진은, 상기 프로세서 코어의 호출하에 상기 원 데이터 패킷에 대해 정규 표현 매칭을 수행하여 특징 매칭 결과를 취득하여, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하도록 구성되고;
    상기 프로세서 코어는, 적어도 상기 특징 매칭 결과에 따라 상기 원 데이터 패킷의 애플리케이션 계층 프로토콜 유형을 결정하고, 상기 결정된 애플리케이션 계층 프로토콜 유형을 상기 원 데이터 패킷의 애플리케이션 계층 파싱 결과로 사용하여 상기 범용 프로세서에 상기 애플리케이션 계층 파싱 결과를 전송하도록, 구성되는, 코프로세서.
  15. 제13항에 있어서,
    상기 서브 코프로세서는 프로토콜 파싱 서브 코프로세서를 더 포함하고,
    상기 프로토콜 파싱 서브 코프로세서는 상기 원 데이터 패킷에 대해 프로토콜 파싱을 수행하여 파싱 결과를 취득하고, 상기 프로세서 코어에 상기 파싱 결과를 반환하도록 구성되고;
    상기 프로세서 코어는 상기 범용 프로세서에 상기 파싱 결과를 전송하도록 더 구성되어, 상기 범용 프로세서가 상기 애플리케이션 계층 프로토콜 유형 및 상기 파싱 결과에 따라 상기 원 데이터 패킷을 처리하도록 하는, 코프로세서.
  16. 제10항에 있어서,
    결과 보고 처리 모듈을 더 포함하고,
    상기 프로세서 코어는, 상기 결과 보고 처리 모듈에 상기 애플리케이션 계층 파싱 결과를 전송하도록 구성되고;
    상기 결과 보고 처리 모듈은, 미리 설정된 형식에 따라 상기 애플리케이션 계층 파싱 결과를 캡슐화하고, 상기 캡슐화된 애플리케이션 계층 파싱 결과를 상기 범용 프로세서에 전송하도록 구성되는, 코프로세서.
  17. 제13항에 있어서,
    상기 스트링 매칭 엔진은, 상기 프로토콜 식별 서브 코프로세서의 호출하에, 제1 메모리로부터 스트링 매칭 알고리즘 상태 테이블을 읽고, 상기 스트링 매칭 알고리즘 상태 테이블에 따라 상기 원 데이터 패킷에 대해 스트링 매칭을 수행하여 상기 특징 매칭 결과를 취득하고, 상기 프로세서 코어에 상기 특징 매칭 결과를 반환하도록 구성되고,
    상기 제1 메모리는 상기 스트링 매칭 알고리즘 상태 테이블을 저장하도록 구성되는, 코프로세서.
  18. 제17항에 있어서,
    상기 프로세서 코어는, 제2 메모리에서 상태 및 규칙 데이터 구조를 읽고, 상기 특징 매칭 결과와 상기 상태 및 규칙 데이터 구조에 따라 상기 원 데이터 패킷의 애플리케이션 프로토콜 유형을 결정하도록 구성되고,
    상기 제2 메모리는 상기 상태 및 규칙 데이터 구조를 저장하도록 구성되는, 코프로세서.
  19. 제18항에 있어서,
    상기 제1 메모리 및 상기 제2 메모리는 이중 뱅크 모드(double bank mode)인, 코프로세서.
  20. 제10항에 따른 코프로세서, 및
    범용 프로세서
    를 포함하는 심층 패킷 검사(DPI) 기기.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020157020935A 2013-08-05 2014-01-21 심층 패킷 검사 방법 및 기기, 그리고 코프로세서 KR101662685B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310337064.6 2013-08-05
CN201310337064.6A CN104348677A (zh) 2013-08-05 2013-08-05 一种深度报文检测方法、设备及协处理器
PCT/CN2014/071025 WO2015018188A1 (zh) 2013-08-05 2014-01-21 一种深度报文检测方法、设备及协处理器

Publications (2)

Publication Number Publication Date
KR20150103248A KR20150103248A (ko) 2015-09-09
KR101662685B1 true KR101662685B1 (ko) 2016-10-05

Family

ID=52460603

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020935A KR101662685B1 (ko) 2013-08-05 2014-01-21 심층 패킷 검사 방법 및 기기, 그리고 코프로세서

Country Status (8)

Country Link
US (1) US20160119198A1 (ko)
EP (1) EP2933955B1 (ko)
JP (1) JP6192725B2 (ko)
KR (1) KR101662685B1 (ko)
CN (1) CN104348677A (ko)
CA (1) CA2898053C (ko)
RU (1) RU2630414C2 (ko)
WO (1) WO2015018188A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9887911B2 (en) 2013-02-28 2018-02-06 Xaptum, Inc. Systems, methods, and devices for adaptive communication in a data communication network
CN104780080B (zh) * 2015-04-13 2018-09-25 苏州迈科网络安全技术股份有限公司 深度报文检测方法及系统
CN105162626B (zh) * 2015-08-20 2018-07-06 西安工程大学 基于众核处理器的网络流量深度识别系统及识别方法
CN105357258B (zh) 2015-09-28 2020-06-26 华为技术有限公司 一种加速管理节点、加速节点、客户端及方法
CN105141468B (zh) * 2015-10-08 2019-02-05 盛科网络(苏州)有限公司 高效实现网络芯片流量统计的方法及装置
CN105429820B (zh) * 2015-11-05 2018-10-09 武汉烽火网络有限责任公司 基于软件定义网络的深度包检测系统及方法
US9723027B2 (en) 2015-11-10 2017-08-01 Sonicwall Inc. Firewall informed by web server security policy identifying authorized resources and hosts
CN106815112B (zh) * 2015-11-27 2020-03-24 大唐软件技术股份有限公司 一种基于深度包检测的海量数据监控系统及方法
US9860259B2 (en) * 2015-12-10 2018-01-02 Sonicwall Us Holdings Inc. Reassembly free deep packet inspection for peer to peer networks
CN107026821B (zh) * 2016-02-01 2021-06-01 阿里巴巴集团控股有限公司 报文的处理方法及装置
CN105847179B (zh) * 2016-03-23 2019-07-26 武汉绿色网络信息服务有限责任公司 一种dpi系统中数据并发上报的方法及装置
JP6717092B2 (ja) 2016-07-14 2020-07-01 富士通株式会社 制御装置および制御装置における処理方法
WO2018082044A1 (zh) * 2016-11-04 2018-05-11 华为技术有限公司 一种网络热点控制的方法以及相关设备
US10397263B2 (en) * 2017-04-25 2019-08-27 Futurewei Technologies, Inc. Hierarchical pattern matching for deep packet analysis
CN107204923B (zh) * 2017-05-24 2020-06-02 全讯汇聚网络科技(北京)有限公司 一种协议分流方法、系统及路由器
CN109388499A (zh) * 2017-08-04 2019-02-26 东软集团股份有限公司 报文转发方法及装置、计算机可读存储介质、电子设备
CN107682215B (zh) * 2017-08-31 2021-07-06 哈尔滨工程大学 一种基于改进lrfu状态记录的dpi业务识别方法
CN114884738A (zh) * 2017-11-17 2022-08-09 华为技术有限公司 一种识别加密数据流的方法及装置
US10666655B2 (en) * 2017-11-20 2020-05-26 Microsoft Technology Licensing, Llc Securing shared components
CN110098970A (zh) * 2018-01-30 2019-08-06 江苏博智软件科技股份有限公司 一种基于多框架的高性能协议还原模块
US11057352B2 (en) 2018-02-28 2021-07-06 Xaptum, Inc. Communication system and method for machine data routing
US10965653B2 (en) 2018-03-28 2021-03-30 Xaptum, Inc. Scalable and secure message brokering approach in a communication system
US10805439B2 (en) 2018-04-30 2020-10-13 Xaptum, Inc. Communicating data messages utilizing a proprietary network
CN108900374B (zh) * 2018-06-22 2021-05-25 网宿科技股份有限公司 一种应用于dpi设备的数据处理方法和装置
CN110855602B (zh) * 2018-08-21 2022-02-25 国家计算机网络与信息安全管理中心 物联网云平台事件识别方法及系统
US10924593B2 (en) 2018-08-31 2021-02-16 Xaptum, Inc. Virtualization with distributed adaptive message brokering
CN109308200A (zh) * 2018-09-10 2019-02-05 麒麟合盛网络技术股份有限公司 一种内存数据加载方法、装置及其设备
US11188384B2 (en) * 2018-11-07 2021-11-30 Ebay Inc. Resource trust model for securing component state data for a resource using blockchains
CN111163043B (zh) * 2018-11-08 2023-03-21 全球能源互联网研究院有限公司 一种源网荷系统实时交互协议深度解析方法和系统
US10938877B2 (en) 2018-11-30 2021-03-02 Xaptum, Inc. Optimizing data transmission parameters of a proprietary network
CN109783409A (zh) * 2019-01-24 2019-05-21 北京百度网讯科技有限公司 用于处理数据的方法和装置
US10912053B2 (en) 2019-01-31 2021-02-02 Xaptum, Inc. Enforcing geographic restrictions for multitenant overlay networks
KR102045702B1 (ko) * 2019-05-03 2019-11-15 한국과학기술원 심층 패킷 분석에서 정규 표현식 매칭 방법 및 그 장치
CN113812116A (zh) * 2019-06-17 2021-12-17 西门子股份公司 网络行为模型构建方法、装置和计算机可读介质
CN110502378B (zh) * 2019-08-16 2022-11-22 兆讯恒达科技股份有限公司 一种配置多算法协处理器自检的方法
CN110661682B (zh) * 2019-09-19 2021-05-25 上海天旦网络科技发展有限公司 通用互联数据自动分析系统、方法、设备
US11411919B2 (en) 2019-10-01 2022-08-09 EXFO Solutions SAS Deep packet inspection application classification systems and methods
EP3820082A1 (en) * 2019-11-07 2021-05-12 Rohde & Schwarz GmbH & Co. KG System for analyzing data traffic as well as method for analyzing data traffic
CN111130946B (zh) * 2019-12-30 2022-03-25 联想(北京)有限公司 一种深度报文识别的加速方法、装置和存储介质
CN111817917B (zh) * 2020-07-03 2021-12-24 中移(杭州)信息技术有限公司 一种深度包检测的方法、装置、服务器及存储介质
CN111865724B (zh) * 2020-07-28 2022-02-08 公安部第三研究所 视频监控设备信息采集控制实现方法
CN112637223B (zh) * 2020-12-26 2023-03-24 曙光网络科技有限公司 应用协议识别方法、装置、计算机设备和存储介质
CN112787828B (zh) * 2021-01-08 2023-03-21 重庆创通联智物联网有限公司 一种应用程序的流量统计方法、设备、移动电子设备
CN114827431A (zh) * 2021-01-27 2022-07-29 Oppo广东移动通信有限公司 场景包处理方法、协处理芯片、主处理芯片及电子设备
CN112671618B (zh) * 2021-03-15 2021-06-15 北京安帝科技有限公司 深度报文检测方法和装置
CN113191454A (zh) * 2021-05-26 2021-07-30 清创网御(北京)科技有限公司 一种多核处理器平台的流量分类方法
CN113905411B (zh) * 2021-10-28 2023-05-02 中国联合网络通信集团有限公司 深度包检测识别规则的检测方法、装置、设备及存储介质
CN114050926A (zh) * 2021-11-09 2022-02-15 南方电网科学研究院有限责任公司 一种数据报文深度检测方法和装置
CN115473850B (zh) * 2022-09-14 2024-01-05 电信科学技术第十研究所有限公司 一种基于ai的实时数据过滤方法、系统及存储介质
CN115665051B (zh) * 2022-12-29 2023-03-28 北京浩瀚深度信息技术股份有限公司 基于fpga+rldram3实现高速流表的方法
CN116545772B (zh) * 2023-07-04 2023-09-19 杭州海康威视数字技术股份有限公司 轻量级物联网流量的协议识别方法、装置及设备
CN116962551B (zh) * 2023-07-28 2024-03-19 中科驭数(北京)科技有限公司 基于dpu应用层报文重组的dpi安全检测方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238855A1 (en) * 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
WO2013032473A1 (en) * 2011-08-31 2013-03-07 Hewlett-Packard Development Company, L.P. Tiered deep packet inspection in network devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3989634B2 (ja) * 1998-09-28 2007-10-10 株式会社ローラン 集積回路及び集積回路用のデータを記録した記録媒体
JP2007325293A (ja) * 2002-08-20 2007-12-13 Nec Corp 攻撃検知システムおよび攻撃検知方法
US7146643B2 (en) * 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
CN101102184B (zh) * 2007-08-02 2011-04-20 中兴通讯股份有限公司 宽带接入服务器及用于宽带接入服务器的高速dpi单板装置
US20090190505A1 (en) * 2008-01-30 2009-07-30 Alcatel Lucent Method and apparatus for targeted content delivery based on real-time communication session analysis
JP2009296195A (ja) * 2008-06-04 2009-12-17 Mitsubishi Electric Corp 複数のcpuコアを備えたfpgaを用いた暗号装置
CN101997700A (zh) * 2009-08-11 2011-03-30 上海大学 基于深度包检测和深度流检测技术的IPv6监测设备
US8468546B2 (en) * 2011-02-07 2013-06-18 International Business Machines Corporation Merging result from a parser in a network processor with result from an external coprocessor
JP5667009B2 (ja) * 2011-08-08 2015-02-12 日本電信電話株式会社 ルータ装置及びデータ解析方法
CA2768483C (en) * 2011-12-30 2019-08-20 Sandvine Incorporated Ulc Systems and methods for managing quality of service
CN102932203B (zh) * 2012-10-31 2015-06-10 东软集团股份有限公司 异构平台间的深度报文检测方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238855A1 (en) * 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
WO2013032473A1 (en) * 2011-08-31 2013-03-07 Hewlett-Packard Development Company, L.P. Tiered deep packet inspection in network devices

Also Published As

Publication number Publication date
CA2898053C (en) 2017-10-31
RU2630414C2 (ru) 2017-09-07
US20160119198A1 (en) 2016-04-28
WO2015018188A1 (zh) 2015-02-12
CA2898053A1 (en) 2015-02-12
JP2015537278A (ja) 2015-12-24
EP2933955A1 (en) 2015-10-21
EP2933955B1 (en) 2017-06-28
KR20150103248A (ko) 2015-09-09
EP2933955A4 (en) 2016-02-10
CN104348677A (zh) 2015-02-11
JP6192725B2 (ja) 2017-09-06
RU2015137525A (ru) 2017-03-06

Similar Documents

Publication Publication Date Title
KR101662685B1 (ko) 심층 패킷 검사 방법 및 기기, 그리고 코프로세서
US11456965B2 (en) Network service request throttling system
US9992166B2 (en) Hierarchical rule development and binding for web application server firewall
CN102137059B (zh) 一种恶意访问的拦截方法和系统
CN104219316B (zh) 一种分布式系统中的调用请求处理方法及装置
CN105812351B (zh) 实现会话共享的方法和系统
AU2014235793B2 (en) Automatic tuning of virtual data center resource utilization policies
US10771342B2 (en) Encoding and verifying network intents for stateful networks
US9356844B2 (en) Efficient application recognition in network traffic
CN104065644A (zh) 基于日志分析的cc攻击识别方法和设备
CN106027595A (zh) 用于cdn节点的访问日志处理方法及系统
CN107135188A (zh) 金融信息交换fix协议的业务实现方法、装置及系统
US20210250380A1 (en) Secure software defined storage
CN115604199B (zh) 一种云原生平台微服务网关的服务路由方法和系统
CN116049085A (zh) 一种数据处理系统及方法
CN108512889B (zh) 一种基于http的应用响应推送方法及代理服务器
US9923794B2 (en) Method, apparatus, and system for identifying abnormal IP data stream
KR102165272B1 (ko) 블록체인에 저장되는 데이터를 관리하는 방법 및 서버
CN107704328A (zh) 客户端访问文件系统的方法、系统、装置及存储介质
CN106685901A (zh) 用于处理跨域数据的方法、第一服务器及第二服务器
CN118057792A (zh) 一种传输数据的方法和装置
Giacometti Authorizing access to edge resources using 5G device authentication
CN116009876A (zh) 一种数据校验方法、装置及存储介质
CN117201096A (zh) 一种地址组策略的添加方法和装置
CN104348795A (zh) 通用网关接口业务入侵防护的方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant