KR101409311B1 - 패킷 처리 및 전처리기를 위한 장치 및 방법 - Google Patents

패킷 처리 및 전처리기를 위한 장치 및 방법 Download PDF

Info

Publication number
KR101409311B1
KR101409311B1 KR1020127033097A KR20127033097A KR101409311B1 KR 101409311 B1 KR101409311 B1 KR 101409311B1 KR 1020127033097 A KR1020127033097 A KR 1020127033097A KR 20127033097 A KR20127033097 A KR 20127033097A KR 101409311 B1 KR101409311 B1 KR 101409311B1
Authority
KR
South Korea
Prior art keywords
packet
information
flow
processor
module
Prior art date
Application number
KR1020127033097A
Other languages
English (en)
Other versions
KR20130032319A (ko
Inventor
창종 게
Original Assignee
항조우 에이치3씨 테크놀로지스 코., 엘티디.
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 항조우 에이치3씨 테크놀로지스 코., 엘티디. filed Critical 항조우 에이치3씨 테크놀로지스 코., 엘티디.
Publication of KR20130032319A publication Critical patent/KR20130032319A/ko
Application granted granted Critical
Publication of KR101409311B1 publication Critical patent/KR101409311B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • 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/026Capturing of monitoring data using flow identification
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

패킷 처리를 위한 장치가 제공된다. 그러한 장치는 서버에서 실행될 것이며, 전처리기, 및 전처리기와 각각 연결된 적어도 두 개의 처리기들을 포함한다. 전처리기는 서버로부터 외부로 수신된 패킷들을 분류하고, 분류된 패킷들을 각각의 처리기들에 분배하며, 여기에서 동일한 플로우 내의 패킷들이 동일한 처리기에 분배된다. 처리기들 각각은 전처리기에 의해 분배된 패킷을 수신하고 처리한다.

Description

패킷 처리 및 전처리기를 위한 장치 및 방법{METHOD AND APPARATUS FOR PACKET PROCESSING AND A PREPROCESSOR}
현재, 서버들은 대부분의 네트워크 데이터의 소스들로서 기능하고 있으며 따라서 그 서버들을 위한 전반적인 성능 요구사항들은 상대적으로 높다. 그러므로, 서버들의 처리기들을 위한 성능 요구사항들 또한 상대적으로 높다.
서버들에 적용되는 처리기들을 위한 성능 요구사항들이 점점 높아지고 있기 때문에, 대부분의 통상적인 서버들은 서로 병렬로 동작하는 고성능 처리기들을 채택한다. 그러나, 고성능 처리기들은 또한 대량의 전력을 소비하며, 그 결과, 고성능 처리기들을 채택한 서버들은 또한 고전력 소비를 겪게 된다. 저전력 소비를 갖는 통상적인 처리기들이 이용가능하지만, 그들은 낮은 성능을 가지며 가전과 같은 영역에서만 일반적으로 적용되고 서버들에 대한 사용에는 적절하지 않을 수 있다.
고성능 처리기들의 고전력 소비와 관련된 문제들 중 일부를 극복하면서 고성능을 가능하게 하는 장치가 본 명세서에서 개시된다. 개시된 장치는 서버에서 실행될 수 있으며, 저전력 소비 레벨들에서 동작하는 복수의 병렬 처리기들과 결합한 전처리기를 포함한다. 전처기리는 외부에서 수신된 패킷들을 분류하고 그 패킷들을 각각 처리기들에 분배하며, 여기에서 동일한 플로우 내의 패킷들은 동일한 처리기에 의한 처리를 위해 분배된다. 따라서, 한 관점에서, 저전력을 소비하는 처리기들은 상대적으로 고성능 레벨을 달성하기 위해 병렬로 그들 각각에 분배되는 패킷들을 처리할 수도 있다. 다른 관점에서, 저전력 소비 처리기들이 병렬로 실행되기 때문에 본 장치의 전력 소비 레벨은 고성능 처리기들의 사용과 비교하여 감소될 수 있다. 본 장치가 서버에 적용될 때, 그 서버의 전력 소비가 또한 감소될 수 있다. 다른 예에서, 본 명세서에서 개시된 장치는 저전력 소비 처리기들 대신에 다른 유형의 처리기들을 채택할 수도 있다. 이 예에서, 전처리기 내의 전처리로 인해, 병렬 처리기들 각각은 전처리기에 의해 송신된 패킷을 처리할 수 있도록 되어지지만, 패킷이 처리기 내에서 처리되어야 하는지 여부를 결정할 필요가 없으며, 따라서 병렬 처리기들 사이에서 패킷을 송신할 필요가 없다. 다음 예들에서, 병렬 처리기들은 저전력 소비 처리기들 또는 다른 유형의 처리기들 일 수 있으며, 따라서 임의의 한 가지 유형의 처리기들이 되도록 구성되어야 하는 것은 아니다.
이상의 관점에서, 그 기술적 체계가 다음에 의해 실행될 수 있다:
장치 내의 전처리기는, 고속 접속 인터페이스를 통해 복수의 처리기들, 예컨대 저전력 소비 처리기들에 각각 연결된다. 전처리기는 외부에서 수신된 패킷들을 분류하고 처리기들에 그 패킷들을 분배할 것이다. 외부에서 수신된 패킷은 서버의 외부의 소스에 의해 송신되고 서버의 외부 인터페이스에 의해 수신된 패킷 (예컨대, NIC, 또는 다른 디바이스 등에 연결하는 서데스 링크(SerDes link) 등). 동일한 플로우 내의 패킷들은 동일한 처리기로 송신된다. 처리기들 각각은 전처리기에 의해 송신된 패킷들을 수신하고 처리한다.
도 1은 본 발명의 예에 따른 패킷 처리를 위한 장치의 구조를 예시하는 개략도이다.
도 2는 본 발명의 예에 따른 전처리기의 구조를 예시하는 개략도이다.
도 3은 본 발명의 예에 따른 패킷 처리를 위한 방법의 플로우 차트이다.
그 기술적인 체계들은 첨부되는 도면 및 특정 실시예들을 참조하여 상세히 추가적으로 설명될 것이다.
도 1은 예에 따른 패킷 처리를 위한 장치의 구조를 예시하는 개략도이다. 도 1에서 도시된 바와 같이, 패킷 처리를 위한 장치는 전처리기(11) 및 적어도 두 개의 처리기들(12), 예컨대 저전력 소비 처리기들을 포함한다. 전처리기(11)는 고속 접속 인터페이스를 경유하여 적어도 두 개의 처리기들(12)에 각각 연결된다. 전처리기(11)는 외부 인터페이스를 통하여 입력된 패킷들을 수신하고, 그 패킷들을 분류하고, 분류된 패킷들을 처리기들(12)에 분배하며, 여기에서 동일하거나 공통의 플로우 내의 패킷들 모두는 동일한 처리기(12)로 분배된다. 적어도 두 개의 처리기들(12) 각각은 처리기(11)에 의해 분배되는 패킷들을 처리할 것이며, 처리기들(12)의 수는 실제적인 애플리케이션들에 따라 결정될 수도 있다.
부가적으로, 전처리기(11)는 동일한 처리기(12)로의 동일한 플로우에 속한 수신된 패킷들을 후속하여 전송할 것이다.
예컨대, 전처리기(11)를 가진 서버의 전체 전력 소비는 특정 회사의 필드 프로그래머블 게이트 어레이(FPGA: Field-programmable Gate Array) 및 열 개의 처리기들(12)을 포함하며, 네 개의 코어(core)들을 구비하는 1.5 Ghz CPU를 가진 각 서버는, 전처리기(111) 및 처리기들(12)이 도 1에 예시된 조합에 따른 서버에서 실행된 후에, 약 82 와트(Watt)이다.
상대적으로, 특정 회사에 의해 제공된 여섯 개의 코어들을 구비하는 2.266 Ghz CPU 를 가진 105 와트만큼 높을 수 있다. 따라서, 이상의 예에서 전처리기를 갖는 장치의 총 전력 소비는, 이상에서 언급된 여섯 개의 코어들을 구비하는 2.266 Ghz CPU의 총 전력 소비보다 낮다.
도시된 바와 같이, 본 명세서에서의 처리된 패킷 처리를 위한 장치가 서버에서 실행될 때, 서버는 고성능 처리기들을 이용하는 통상적인 서버들과 비교하여 상대적으로 낮은 양의 전력을 소비하면서 고성능 레벨에서 동작할 수 있다.
예에 따르면, 전처리기(11)는 도 2에서 도시된 구조를 갖는다. 도 2에서 도시된 바와 같이, 전처리기(11)는 패킷 수신 모듈(21), 패킷 처리 모듈(22), 플로우 분류 모듈(23), 및 플로우 테이블 유지 모듈(24)을 포함할 수도 있다.
패킷 수신 모듈(21)은 외부 인터페이스를 통해 패킷들을 수신하고, 패킷 처리 모듈(22)에 수신된 패킷들 중에 분할된(fragmented) 패킷을 송신하고, 수신된 패킷들 중에 비분할된 패킷을 플로우 분류 모듈(23)로 송신한다. 그 이후에, 비분할된 패킷은 또한 쇼트를 위한 패킷(packet for short)로 지칭된다.
실제 애플리케이션들에서, 외부 인터페이스를 경유하여 서버에 의해 수신된 패킷들의 수는 상대적으로 크지만 그 유형들은 다양할 수 있다. 패킷 포맷의 완전성의 관점에서, 패킷들은 두 가지 유형으로 나뉘는데, 한 가지는 분할된 패킷들이고, 다른 한가지는 비분할된 패킷들(쇼트를 위한 패킷들로 지칭됨)이다. 패킷들은 동일한 플로우에 속하거나 상이한 플로우들에 속할 수 있다. 상이한 플로우들은 서로 관련되거나 관련되지 않을 수 있다. 이 예에서, 패킷은 플로우의 가장 작은 유닛으로 처리된다. 비분할된 패킷의 5중 정보(quintuple information)는 완전하지만 분할된 패킷의 제1 분할조각은 분할된 패킷의 후속 분할조각들의 포맷과 약간 상이한 포맷을 가지게 되며, 즉 제1 분할조각의 5중 정보는 완전하지만 후속 분할조각들의 5중 정보는 완전하지 않다. 그러므로, 분할된 패킷들은 추가의 처리가 필요하다.
패킷의 완전한 5중 정보는: SIP(Source Internet Protocol address), DIP(Destination Internet Protocol address), PROTOCAL 번호, SPORT(Source Port) 번호, 및 DPORT(Destination Port) 번호를 포함한다. 분할된 패킷의 후속 분할조각은 5중 정보 중 SIP, DIP 및 PROTOCAL 만을 포함하고 SPORT 및 DPORT는 제외할 수도 있다.
패킷 처리 모듈(22)는, 분할된 패킷이 패킷의 제1 분할조각일 때, 그 제1 분할조각의 5중 정보 및 IPID(Internet PROTOCOL Identity) 정보를 기록하고, 플로우 분류 모듈(23)에 제1 분할조각을 송신할 것이다. 분할된 패킷이 패킷의 후속 분할조각인 경우, 패킷 처리 모듈(22)은 기록된 정보가 SIP, DIP, PROTOCAL 및 IPID 를 포함하는 정보에 대응하는 5중 정보를 포함하는지 여부를 문의할 것이다. 기록된 정보가 대응 5중 정보를 포함하는 경우, 패킷 처리 모듈(22)은 5중 정보 내에 SPORT 및 DPORT 정보를 획득하고, 후속 분할조각의 완전한 5중 정보와 같이 획득된 SPORT 및 DPORT 정보 뿐만 아니라 후속 분할조각 내의 SIP, DIP, PROTOCAL을 취하고, 후속 분할조각 및 후속 분할조각의 완전한 5중 정보를 플로우 분류 모듈(23)으로 송신거나, 후속 분할조각 및 획득된 SPORT 및 DPORT 정보를 플로우 분류 모듈(23)로 송신한다. 기록된 정보가 대응하는 5중 정보를 포함하지 않은 경우, 패킷 처리 모듈(22)은 다른 분할된 패킷, 즉 패킷의 제1 분할조각이 수신될 때까지 후속 분할조각을 버퍼링하고, 제1 분할조각의 5중 정보 및 IPID 정보를 기록하며, 제1 분할조각의 기록된 정보 내의 SPORT 및 DPORT 정보를 획득하기 위해 후속 분할조각 내의 IPID 정보 뿐만 아니라 SIP, DIP, 및 PROTOCAL에 따라 제1 분할조각의 기록된 정보를 탐색하고, 후속 분할조각의 완전한 5중 정보와 같은 획득된 SPORT 및 DPORT 정보 뿐만 아니라 후속 분할조각 내의 SIP, DIP, PROTOCAL을 취하고, 후속 분할조각 및 후속 분할조각의 완전한 5중 정보를 플로우 분류 모듈(23)으로 송신거나, 후속 분할조각 및 획득된 SPORT 및 DPORT 정보를 플로우 분류 모듈(23)로 송신할 것이다.
플로우 분류 모듈(23)은 패킷 수신 모듈(21)에 의해 송신된 패킷의 5중 정보 및 패킷 처리 모듈에 의해 송신된 패킷의 5중 정보를 플로우 테이블 유지 모듈(24)에 송신하고, 플로우 테이블 유지 모듈(24)로부터 패킷의 5중 정보에 대응하는 처리기 식별자를 수신하고, 수신된 처리기 식별자에 대응하는 처리기에 그 패킷을 송신할 것이다.
플로우 테이블 유지 모듈(24)은 플로우 분류 모듈(23)에 의해 송신된 패킷의 5중 정보를 수신하고, 패킷의 5중 정보에 대응하는 플로우 테이블 엔트리가 존재하는지 여부를 문의할 것이다. 대응 플로우 테이블 엔트리가 존재하면, 플로우 테이블 유지 모듈(24)은 플로우 테이블 엔트리 내의 처리기 식별자를 획득하고, 플로우 분류 모듈(23)에 처리기 식별자를 송신할 것이다. 대응 플로우 테이블 엔트리가 존재하지 않으면, 플로우 테이블 유지 모듈(24)은 플로우 분류 모듈(23)에 의해 송신된 패킷의 5중 정보에 따라 플로우 테이블 엔트리를 생성할 것이며, 여기에서 플로우 테이블 엔트리는 적어도 패킷의 5중 정보와 그 패킷을 처리하기 위한 처리기의 처리기 식별자를 포함한다.
부가적으로, 전처리기(11)는 패킷 파싱 모듈(packet parsing module)(25)을 더 포함한다. 이 경우, 패킷 수신 모듈(21)은 추가적으로 비분할된 패킷(통상적으로 패킷으로 지칭됨)을 패킷 파싱 모듈(25)에 송신할 것이다. 패킷 처리 모듈(22)은 추가적으로 분할된 패킷을 패킷 파싱 모듈(25)에 송신할 것이다. 부가적으로, 패킷 파싱 모듈(25)은 패킷 수신 모듈(21)에 의해 송신된 패킷과 패킷 처리 모듈(22)에 의해 송신된 패킷을 파싱할 것이다. 패킷이 속한 플로우가 관련된 플로우를 갖는다고 결정되는 경우, 패킷 파싱 모듈(25)은, 그 패킷의 5중 정보와 관련 플로우의 5중 정보가 동일한 처리기 식별자에 대응하는 각각의 플로우 테이블 엔트리들을 생성하도록 플로우 테이블 유지 모듈(24)에게 지시하기 위해 플로우 테이블 유지 모듈(24)에 서로 관련된 플로우들의 5중 정보를 송신할 것이다. 플로우 테이블 유지 모듈(24)은 추가적으로 패킷 파싱 모듈(25)에 의해 송신된 5중 정보를 수신하고 그 5중 정보에 따라 플로우 테이블 엔트리들을 생성할 것이며, 여기에서 패킷의 5중 정보 및 관련 플로우의 5중 정보는 플로우 테이블 엔트리들 각각 내의 동일 처리기 식별자에 대응한다.
예에서, 적어도 두 개의 플로우들, 플로우 1 및 플로우 2가 존재하고, 패킷이 속하는 플로우가 관련 플로우를 갖는다고 결정하는 상이한 유형의 방식들이 존재할 수 있는 경우가 가정된다.
1. 플로우 1이 플로우 2보다 늦게 텍스트 서버와 같은 서버에 도착한 경우, 즉 플로우 2가 서버에 먼저 도착한 경우, 이것은, 플로우 1이 서버 1에 도착하기 전에 플로우 2 내의 패킷이 다른 플로우(이 예에서는 플로우 1로 가정됨)의 5중 정보를 포함한다고 결정된다면 플로우 2가 관련 플로우(즉, 이 예에서는 플로우 1)를 갖는다는 미리정해진 규칙에 따라 결정될 수 있다. 예컨대, FTP 제어 접속을 위한 PORT 패킷이 데이터 접속의 5중 정보를 포함한다고 결정되는 경우, 그 데이터 접속은 FTP 제어 접속의 관련 플로우이다. 세부적으로, 플로우 2가 특정한 애플리케이션 프로토콜을 채택한다고 가능하면, 플로우 2 내의 일부 패킷이 서버에 도착할 때 서버는 플로우 2의 패킷이 애플리케이션 프로토콜의 특징들에 따른 새로운 플로우(즉, 이 예에서는 플로우 1)의 5중 정보의 일부 또는 전부를 포함하고, 그후 플로우 2는 관련 플로우(이 예에서 플로우 1)를 갖는다고 결정할 수도 있다. 예컨대, 서버는 FTP 제어 접속의 PORT 패킷을 파싱하는 것을 통해 데이터 접속의 5중 정보를 결정할 수 있으며, 즉 서버는 현재 FTP 제어 접속과 연관된 새로운 플로우를 결정할 수도 있다.
2. 플로우 1이 플로우 2 전에 서버에 도착하는 경우, 즉 서버가 플로우 1의 패킷들의 일부를 수신한 후에 플로우 2의 제1 패킷을 수신한 경우, 이것은, 동일한 SIP 어드레스를 갖는 플로우들이 관련 플로우들로서 정의되거나 플로우 2의 제1 패킷의 SIP가 플로우 1의 SIP와 동일하다고 결정된다면, 플로우 2가 관련 플로우(즉, 이 예에서 플로우 1)을 갖는다고 결정된다. 이러한 상황은 해커가 서버를 공격하는 경우에 적용될 수도 있다. 예컨대, 플로우 1이 사용자부터 온다고 가정하면, 사용자가 해커라고 결정된 경우, 플로우 1의 SIP가 그 사용자의 IP 어드레스이기 때문에 해커의 적대적인 공격을 방지하기 위해 그 사용자로부터 송신된 데이터 전부는 유효하지 않은 데이터로서 처리되어야 한다. 즉, 플로우 1과 동일한 SIP를 갖는 플로우들 모두는 그 사용자의 데이터 플로우들로서 간주된다. 이 경우에, 동일한 SIP를 갖는 모든 플로우들은 관련 플로우들로 간주될 수 있다.
3. 플로우 1이 플로우 2 전에 서버에 도착하는 경우, 즉 서버가 플로우 1의 패킷들의 일부가 수신된 후 플로우 2의 패킷을 수신한 경우, 이것은, 플로우 2 내의 특정 패킷이 플로우 1의 5중 정보를 갖는다고 결정된다면, 플로우 2가 관련 플로우(플로우 1)을 갖는다는 미리정해진 규칙에 따라 결정될 수 있다.
이상의 세 개지 방법들은 단지 예시들이며, 그 방법들이 패킷이 속한 플로우가 관련 플로우를 갖는지 그리고 실행될 수 있는지 여부를 결정하기 위해 특정 플로우의 패킷을 파싱할 수 있는 한, 실제로 다른 방법들이 존재할 수 있다.
패킷이 속한 플로우가 관련 플로우를 갖는다고 결정될 경우, 패킷 파싱 모듈(25)은 플로우 테이블 유지 모듈(24)에게 플로우 테이블 엔트리를 생성하도록 지시하기 위해 패킷이 속하는 플로우의 5중 정보 및 관련 플로우의 5중 정보를 플로우 테이블 유지 모듈(24)에 송신한다.
이 예에서, 플로우 테이블 엔트리를 생성하는 것은 플로우를 위한 새로운 플로우 테이블 엔트리를 생성하는 것과 그 플로우의 이전 플로우 테이블 엔트리를 변경하는 것을 포함할 수 있다. 예컨대, 관련 플로우 내의 패킷들 중 어느 것도 이전에 처리되지 않은 경우, 플로우 테이블 엔트리는 관련 플로우를 위해 생성되어야 한다. 플로우의 이전 플로우 테이블 엔트리를 변경하기 위한 상황들은 이하에 설명된 바와 같다. 두 개의 플로우들, 플로우 1 및 플로우 2가 존재한다고 가정한다. 플로우 1은 처리기 1에 의해 처리되고 플로우 2는 처리기 2에 의해 처리되며, 플로우 2의 패킷은 플로우 1이 처리되고 있는 동안 수신되며, 플로우 2는 관련 플로우(플로우 2의 패킷을 파싱한 후에 플로우 1이 됨)를 가진다고 결정된다. 이 경우에, 두 개의 관련 플로우들이 하나의 처리기에 의해 처리될 수 있도록 하기 위해, 즉 플로우 1 또한 처리기 2에 의해 처리되는 것을 보장하도록 플로우 1의 플로우 테이블 엔트리가 변경될 수 있거나; 또는 플로우 2의 플로우 테이블 엔트리가 변경되어, 즉 플로우 2 또한 처리기 1에 의해 처리된다.
플로우 테이블을 생성하는 것은 예컨대 이하와 같은 상이한 상황들을 가질 수 있다:
1. 플로우 1이 플로우 2보다 늦게 서버에 도착하는 경우, 즉 플로우 2가 서버에 먼저 도착하는 경우에, 플로우 2 내의 패킷이 플로우 1의 5중 정보를 갖고 있는지의 결정은, 플로우 1이 서버에 도착하기 전에 이루어질 수 있다. 이 경우에, 플로우 2의 플로우 테이블 엔트리가 이미 존재한다면, 관련 플로우를 위한 플로우 테이블 엔트리는 관련 플로우의 5중 정보에 따라 생성될 수도 있으며, 관련 플로우를 위한 플로우 테이블 엔트리 내의 처리기 식별자는 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일한 것이다.
2. 플로우 1이 플로우 2 전에 서버에 도착한 경우, 즉 서버가 플로우 1의 패킷들의 부분들이 수신된 후에 플로우 2의 제1 패킷을 수신한 경우, 동일한 SIP를 갖는 플로우들이 관련 플로우들이라고 미리 정의된다면, 플로우 2 내의 제1 패킷의 SIP가 플로우 1 내의 SIP 와 동일한 것이라는 결정이 이루어질 것이다. 이 경우에, 플로우 1을 위한 플로우 테이블 엔트리가 이미 존재한다면, 플로우 테이블 엔트리는 플로우 2의 5중 정보에 따라 플로우 2를 위해 생성되어야 하고, 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자는 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일한 것이다.
3. 플로우 1이 플로우 2 전에 서버에 도착하는 경우, 즉 서버가 플로우 1의 패킷들의 부분을 수신한 후에 플로우 2의 패킷을 수신하는 경우, 플로우 2 내의 특정 패킷이 플로우 1의 5중 정보를 갖고 있다는 결정이 이루어진다면, 두 가지 상황들이 존재한다: 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자가, 그것이 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일하도록 플로우 2의 5중 정보에 따라 변경될 수 있는 것; 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자가, 그것이 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일하도록 플로우 1의 5중 정보에 따라 변경될 수 있는 것.
예에서, 전처리기(11)는 각 처리기의 정보를 획득하기 위해 처리기 감시 모듈(26)을 더 포함할 수 있다. 각 처리기의 정보는 적어도 각 처리기의 처리기 식별자, 각 처리기가 정상적으로 작동하는지 여부, 및 각 처리기의 현재 부하(load) 상황을 포함한다.
플로우 테이블 유지 모듈(24)은 추가적으로 처리기 감시 모듈(26)로부터 처리기 식별자를 획득하고 처리기 식별자 및 5중 정보에 따라 플로우 테이블 엔트리를 생성할 것이다.
예에서, 처리기 감시 모듈(26)로부터 플로우 테이블 유지 모듈(24)에 의해 획득된 처리기 식별자는, 처리기들 사이의 부하 균형이 실현될 수 있도록 현재 최소한의 부하를 갖는 처리기에 대응하는 처리기 식별자일 수 있다.
게다가, 플로우 테이블 유지 모듈(24)은 추가적으로 각 플로우 테이블 엔트리를 위한 최장 사용 기간을 설정할 것이다. 각 플로우 테이블 엔트리는 하나의 최장 사용 기간에 대응하고, 최장 사용기간들 모두는 동일하거나 상이할 수 있다. 플로우 테이블 유지 모듈(24)은 플로우 테이블 엔트리가 최장 사용 기간 동안 사용되는 경우 플로우 테이블 엔트리의 사용 시간의 타이밍을 재시작하며, 그 최장 사용기간이 만료된 때 플로우 테이블 엔트리를 삭제한다.
예에서, 플로우 테이블 엔트리의 포맷은 표 1로 참조될 수 있다.
컨텐츠 길이
(바이트)
컨텐츠 설명
SIP 4 소스 IP 어드레스 (Source IP address)
DIP 4 목적지 IP 어드레스 (Destination IP address)
SPORT 2 소스 포트 번호 (source port number)
DPORT 2 목적지 포트 번호(Destination port number)
PROTOCOL 2 프로토콜 번호
처리기 식별자 2 플로우 내의 패킷들이 처리기 식별자에 대응하는 처리기에 송신됨.
최장 사용기간 4 플로우 테이블 엔트리의 사용 기간은, 플로우 테이블 엔트리가 생성되었을 때에는 0이며, 초당 1씩 증가함; 플로우 테이블 엔트리는 최장 사용기간이 만료된 때에 삭제됨
이상의 예들은 전처리기의 구조를 설명한다.
패킷 처리 및 전처리기를 위한 이상의 장치에 기초하여, 도 3은 본 발명의 예에 따른 패킷 처리를 위한 방법의 플로우차트를 도시한다. 도 3에서 도시된 바와 같이 그러한 방법은 다음을 포함한다:
블록 301: 패킷 처리를 위한 장치 내의 전처리기는 외부 인터페이스를 통해 패킷을 수신한다.
실제 애플리케이션에서, 외부 인터페이스를 통해 수신된 패킷들의 수는 크고 그 유형들은 다양할 수 있다. 패킷 포맷의 완전성의 측면에서, 패킷들은 두 가지 유형으로 나뉠 수 있는 데, 한 가지는 분할된 패킷들이고 다른 한 가지는 비분할된 패킷들(통상적으로 쇼트를 위한 패킷들로 지칭됨)이다. 패킷들은 동일한 플로우에 속하거나 상이한 플로우들에 속할 수 있다. 상이한 플로우들은 관련되거나 관련되지 않을 수 있다.
블록 302: 전처리기는 패킷이 분할된 패킷인지 여부를 결정한다. 패킷이 분할된 패킷인 경우, 블록 303이 실행되며; 그렇지 않으면 블록들 304 - 306 및 307 - 308 이 실행된다.
블록 302에서, 비분할된 패킷의 5중 정보는 완전한 반면, 분할된 패킷의 제1 분할조각은 분할된 패킷의 후속 분할조각들의 포맷과 약간 상이한 포맷을 가진다. 제1 분할조각의 5중 정보는 완전하지만, 후속 분할조각들의 5중 정보는 불완전하고 단지 5중 정보에서 세가지 정보, SIP, DIP, ,및 PROTOCAL를 포함할 뿐이며, 다른 두 정보 SPORT 및 DPORT는 포함하지 않는다. 그러나, 처리기는 패킷의 처리시 패킷의 완전한 5중 정보를 획득해야 하며, 따라서 상이한 방식들로 분할된 패킷과 비분할된 패킷을 처리해야 한다.
블록 303: 분할된 패킷이 분할된 패킷의 완전한 5중 정보를 획득하기 위해 처리되며, 그후 블록들 304-306 및 307-308이 각각 실행된다.
블록 303에서, 분할된 패킷의 완전한 5중 정보는 이하를 통해 획득될 수 있다:
분할된 패킷이 제1 분할조각인지 또는 후속 분할조각인지 여부에 관한 결정은 분할된 패킷의 패킷 헤더 정보에 따라 이루어진다. 분할된 패킷이 제1 분할조각인 경우, 제1 분할조각의 5중 정보 및 IPID 정보가 기록되고, 그후에 블록들 304-306 및 307-308이 각각 실행된다. 분할된 패킷이 후속 분할조각인 경우, 기록된 정보가 후속 분할조각들에서 IPID 정보뿐 아니라 SIP, DIP 및 PROTOCAL 정보에 따라 대응 5중 정보를 포함하는지 여부에 관한 결정이 이루어진다. 기록된 정보가 대응 5중 정보를 포함하는 경우, SPORT 및 DPORT 정보가 대응 5중 정보로부터 획득된다. 그리고나서, 후속 분할조각 내의 SIP, DIP, 및 PROTOCAL 정보 및 획득된 SPORT 및 DPORT 정보가 후속 분할조각의 완전한 5중 정보로서 함께 취해지고, 그후에 블록들 304-306 및 307-308이 각각 실행된다. 기록된 정보가 대응 5중 정보를 전혀 포함하지 않는 경우, 제1 분할조각인 또다른 분할된 패킷이 수신될 때까지 후속 분할조각이 버퍼링되며, 제1 분할조각의 5중 정보 및 IPID 정보가 기록되고, 제1 분할조각의 기록된 정보는 SIP, DIP, 및 PROTOCAL 정보에 따라 탐색되고; 후속 분할조각 내의 SIP, DIp 및 PROTOCAL 정보 및 획득된 SPORT 및 DPORT 정보는 후속 분할조각의 완전한 5중 정보로서 취해지고; 그후에, 블록들 304-306 및 블록들 307-308이 각각 실행된다.
분할된 패킷이 제1 분할조각인지 후속 패킷인지 여부는 패킷 헤더 정보에 따라 결정될 수 있다는 것을 유의해야 하며, 다시 상세히 설명되지 않을 것이다.
이하의 블록들 304-306은 패킷을 처리하는 프로세스, 즉 패킷의 5중 정보에 따라 패킷을 처리하기 위한 처리기를 결정하는 프로세스에 관한 것이다. 블록들 307-308은 패킷이 속하는 플로우의 관련 플로우를 위해 플로우 테이블을 생성하는 프로세스에 관한 것이다. 두 개의 프로세스들이 동시에 또는 번갈아 실행될 수 있으며, 임의의 시간 시퀀스로 실행될 수 있는 상이한 프로세스들이다. 이하의 예에서, 블록들 304-306이 먼저 실행되고 블록들 307-308이 두번째로 실행된다.
블록들 307-308을 실행하지 않고 단지 블록들 304-306을 실행하는 것도 가능하다는 것을 유의해야 한다. 이하의 설명은 단지 예시이다.
블록 304: 플로우 테이블 엔트리는 패킷의 5중 정보에 따라 탐색된다.
블록 304에서, 플로우 테이블 엔트리는 적어도 패킷의 5중 정보 및 패킷을 처리하기 위한 처리기의 처리기 식별자를 포함하며, 플로우 테이블 엔트리의 최장 사용 기간을 더 포함할 수 있다. 각각의 플로우 테이블 엔트리는 하나의 최장 사용 기간에 대응하며, 최장 사용 기간들 모두는 동일하거나 상이할 수 있다. 플로우 테이블 엔트리의 사용 시간은 플로우 테이블 엔트리가 최장 사용 기간 동안 사용된 때 재계산될 수 있으며, 플로우 테이블 엔트리는 최장 사용 기간이 만료된 때에 삭제된다.
동일한 플로우에서 상이한 패킷들의 5중 정보는 동일하기 때문에, 동일한 플로우 내의 모든 패킷들이 동일한 프로세서를 사용할 수도 있다는 것이 보장될 수 있으며, 이것은 처리기 내의 처리 과정을 단순화시킨다.
블록 305: 패킷에 대응하는 플로우 테이블 엔트리가 탐색되었는지 여부에 대한 결정이 이루어진다. 플로우 테이블 엔트리가 탐색되면, 블록 309가 실행되고; 그렇지 않으면 블록 306이 실행된다.
플로우 테이블 엔트리가 탐색될 때, 패킷은 플로우 테이블 엔트리 내의 처리기 식별자에 대응하는 처리기로 송신되고 처리기에 의해 처리된다. 그동안에, 플로우 테이블 엔트리 내의 최장 사용 기간은 타이밍을 재시작하기 위해 제거된다.
블록 306: 플로우 테이블 엔트리가 복수의 처리기들로부터 선택된 한 개의 처리기를 위해 생성되며, 선택된 프로세서의 부하 정보가 업데이트된다. 그리고나서, 블록 309가 실행된다.
어떠한 대응 플로우 테이블 엔트리도 탐색되지 않는 경우, 이것은 패킷이 플로우의 제1 패킷이거나 그 패킷의 동일한 플로우에 속하는 다른 패킷들이 처리된 적이 없음을 나타낸다. 이러한 경우, 패킷을 위한 대응 플로우 테이블 엔트리가 생성되어야 하며, 즉 대응 플로우 테이블 엔트리가 패킷의 5중 정보에 따라 생성된다. 그동안에, 처리기가 처리기들로부터 선택되고 선택된 처리기의 처리기 식별자는 플로우 테이블 엔트리 내에 저장된다. 부가적으로, 최장 사용 기간이 패킷을 처리하는 처리기를 위해 설정될 수 있다.
처리기들 간의 부하 균형을 유지하기 위해 현재 최소한의 부하를 갖는 처리기가 선택될 수 있으며, 선택된 처리기의 부하 정보가 업데이트되어야 한다.
전처리기가 처리기들의 부하 상황들과 같은 처리기 정보를 주기적으로 감시하고 선택된 처리기의 부하 정보가 업데이트되어야 한다는 것을 유의해야 한다.
그와 같이, 패킷의 5중 정보에 따라 패킷을 처리하기 위해 처리기를 결정하는 프로세스가 완료된다. 이하에서, 패킷이 속하는 플로우의 관련 플로우를 위한 플로우 테이블 엔트리를 생성하는 프로세스가 블록 307-308에서 상세하게 설명될 것이다.
블록 307: 패킷이 파싱되고, 패킷이 속한 플로우의 관련 플로우가 존재하는지 여부에 대한 결정이 파싱 결과에 따라 이루어진다. 관련 플로우가 존재하는 경우, 블록 308이 실행된다. 그렇지 않은 경우, 이 프로세스는 종결된다.
블록 307에서, 적어도 두 개의 플로우, 플로우 1 및 플로우 2가 존재한다고 가정한다. 패킷이 속하는 플로우의 관련 플로우가 이하의 상이한 상황들에서 결정될 수 있다:
1. 플로우 1이 플로우 2보다 늦게 서버에 도착하는 경우, 즉 플로우 2가 먼저 서버에 도착하는 경우, 플로우 1이 서버에 도착하기 전에 플로우 2 내의 패킷이 플로우 1의 5중 정보를 갖는지에 대한 결정이 이루어질 수 있으며, 따라서 이것은 플로우 2가 관련 플로우, 즉 플로우 1을 갖는다는 미리정해진 규칙에 따라 결정된다. 예컨대, FTP 제어 접속을 위한 PORT 패킷이 데이터 접속의 5중 정보를 갖는다고 결정되는 경우, 데이터 접속은 FTP 제어 접속의 관련 플로우이다.
2. 플로우 1이 플로우 2 전에 서버에 도착하는 경우, 즉 서버가 플로우 1의 b패킷들의 부분이 수신된 후에 플로우 2의 제1 패킷을 수신하는 경우, 동일한 SIP 어드레스를 갖는 플로우들이 관련 플로우들로서 정의된다면 그리고 플로우 2 내의 제1 패킷의 SIP가 플로우 1 내의 SIP와 동일한 것이라면, 플로우 2가 관련 플로우(플로우 1)을 갖는다는 결정이 이루어질 수 있다. 이러한 상황은 해커가 서버를 공격한 경우에 적용될 수 있다. 예컨대, 플로우 1이 사용자로부터 온다고 가정한다. 그 사용자가 해커라고 결정된 경우, 플로우 1의 SIP가 그 사용자의 IP 어드레스이기 때문에 해커의 적대적인 공격을 방지하기 위해 그 사용자에 의해 송신된 데이터 모두는 유효하지 않은 데이터로서 처리되어야 한다. 즉, 플로우 1과 동일한 SIP를 갖는 플로우들은 그 사용자의 데이터 플로우들로 간주된다. 이러한 경우, 동일한 SIP를 갖는 플로우들 모두는 관련 플로우들로서 간주될 수 있다.
3. 플로우 1이 플로우 2 전에 서버에 도착한 경우, 즉 서버가 플로우 1의 패킷들의 부분을 수신한 후에 플로우 2의 패킷을 수신한 경우, 플로우 2 내의 특정 패킷이 플로우 1의 5중 정보를 가지고 있다는 결정이 이루어진다면 플로우 2가 관련 플로우(플로우 1)을 갖는다는 미리정해진 규칙에 따라 결정이 이루어질 수 있다.
이상의 세 가지 상황들은 단지 예시들이며, 상황들이 실제로 실행될 수 있는 한, 패킷이 속하는 플로우가 관련 플로우를 갖는지 여부를 결정하는 데 다른 상황들 또한 사용될 수 있다.
블록 308: 플로우 테이블 엔트리 내의 패킷의 5중 정보 및 관련 플로우의 5중 정보가 동일한 처리기 식별자에 대응하도록 하기 위해 플로우 테이블 엔트리가 그 5중 정보에 따라 생성된다. 그리고 나서 이러한 프로세스는 종결된다.
플로우 테이블 엔트리를 생성하는 프로세스는 패킷의 플로우를 위한 새로운 플로우 테이블 엔트리를 생성하는 것을 포함하거나, 그 플로우의 이전 플로우 테이블 엔트리를 변경하는 것을 포함할 수 있다. 예컨대, 관련 플로우 내의 패킷들 중 어느 것도 이전에 처리되지 않은 경우, 플로우 테이블 엔트리는 관련 플로우를 위해 생성되어야 한다. 플로우의 이전 플로우 테이블 엔트리를 변경하기 위한 상황들이 이하에서 설명된다. 두 개의 플로우들, 플로우 1 및 플로우 2가 존재한다고 가정한다. 플로우 1은 처리기 1에 의해 처리되고 플로우 2는 처리기 2에 의해 처리되며, 플로우 2의 패킷은 플로우 1이 처리되고 있는 때 수신되며, 플로우 2는 플로우 2의 패킷을 파싱하고 있는 동안 관련 플로우(플로우 1)를 가진다는 것이 발견된다. 이러한 경우, 플로우 1의 플로우 테이블 엔트리는 두 개의 관련 플로우들이 하나의 처리기에 의해 처리될 수 있다는 것, 즉 플로우 1 또한 처리기 2에 의해 처리되는 것이나; 플로우 2의 플로우 테이블 엔트리가 변경되는 것, 즉 플로우 2 또한 처리기 1에 의해 처리되는 것을 보장하기 위해 변경될 수 있다.
플로우 테이블 엔트리를 생성하는 프로세스는 예컨데, 이하와 같은 상이한 상황들을 가질 수 있다는 것을 유의해야 한다:
1. 플로우 1이 플로우 2보다 늦게 서버에 도착하는 경우, 즉 플로우 2가 서버에 먼저 도착하는 경우, 플로우 1이 서버에 도착하기 전에 플로우 2 내의 패킷이 플로우 1의 5중 정보를 갖는다는 결정이 이루어질 수 있다. 이러한 경우에, 플로우 2를 위한 플로우 테이블 엔트리가 이미 존재한다면, 플로우 테이블 엔트리가 관련 플로우의 5중 정보에 따라 관련 플로우를 위해 생성되고, 플로우 테이블 엔트리 내의 처리기 식별자는 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일하다.
2. 플로우 1이 플로우 2 전에 서버에 도착할 경우, 즉 서버가 플로우 1의 패킷들의 부분이 수신된 후에 플로우 2의 제1 패킷을 수신한 경우, 동일한 SIP를 갖는 플로우들이 관련 플로우들이라고 미리 정의된다면 플로우 2 내의 제1 패킷의 SIP가 플로우 1의 SIP와 동일하다는 결정이 이루어질 수 있다. 이 경우에, 플로우 1을 위한 플로우 테이블 엔트리가 이미 존재한다면, 플로우 테이블 엔트리가 플로우 2의 5중 정보에 따라 플로우 2를 위해 생성될 수 있다. 게다가, 플로우 2를 위해 생성된 플로우 테이블 엔트리 내의 처리기 식별자는 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일한 것이다.
3. 플로우 1이 플로우 2 전에 서버에 도착한 경우, 즉 서버가 플로우 1의 패킷들의 부분이 수신된 후에 플로우 2의 패킷을 수신한 경우, 플로우 2 내의 수신된 패킷은 플로우 1의 5중 정보를 갖는다고 결정된 후에 두 개의 상황들이 존재한다: 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일하도록 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자가 따라서 변경되는 것; 플로우 2를 위한 플로우 테이블 엔트리 내의 처리기 식별자와 동일하도록 플로우 1을 위한 플로우 테이블 엔트리 내의 처리기 식별자가 따라서 변경되는 것.
블록 309: 패킷은 패킷을 위한 플로우 테이블 엔트리 내의 처리기 식별자에 대응하는 처리기에 분배되고, 패킷 처리가 종결된다.
블록 309가 블록들 304-306 후에 실행된다는 것을 유의한다.
따라서, 이상에 논의된 예시들에서의 패킷 처리를 위한 방법의 전체 과정은 완료된다.
도 3에서 예시된 과정은 특정 패킷이 처리되는 예에 의해 설명되고 다른 패킷들 또한 도 3과 동일한 과정에 의해 처리될 수 있으며, 이는 다시 설명되지 않을 것이다.
요약하면, 본 명세서에서 설명된 예들에서의 패킷 처리를 위한 장치에서, 전처리기 및 복수의 병렬 처리기들은 서버에 결합되어 적용되며; 전처리기는 미리정해진 규칙에 따라 외부에서 수신된 패킷들을 분류하고 분류된 패킷들을 처리기들에 각각 분배하며, 여기에서 동일한 플로우 내의 패킷들은 동일한 처리기에 분배된다. 전처리기는 외부에서 수신된 패킷들을 분류하기 때문에, 각 처리기가 패킷들을 다시 분류할 필요가 없으며, 따라서 패킷들의 분류는 더 정확하고 통상의 서버들에서보다 단순하다. 부가적으로, 복수의 처리기들은 병렬로 그들에 분배되는 패킷들을 처리할 수 있으며, 상대적으로 더 높은 전체 성능이 실현될 수 있다. 그 장치가 서버에 적용되는 경우, 서버의 전체 전력 소비가 감소될 수 있다.
한편, 전처리기는, 동일한 플로우 내의 패킷들이 동일한 처리기에 의해 처리되지만 상이한 처리기들에 의해서는 처리되지 않도록, 패킷들을 미리 분배한다. 이에 관하여, 동일한 플로우 내의 패킷들은 처리기들 사이에서 송신될 필요없으며, 처리기들 내의 처리 과정은 단순화된다.
부가적으로, 병렬 처리기들은, 패킷 처리를 위한 장치의 전력 소비를 추가적으로 감소시키고 패킷 처리를 위한 장치를 사용하는 서버의 전력 소비를 감소시키는, 저전력 소비를 갖는 처리기들을 포함할 수 있다.
게다가, 상이한 처리기들 사이에 동작들을 조절하기 위해, 각 처리기의 상태 정보는 본 명세서에서 설명된 예들에서 감시되고, 상이한 처리기들 사이의 간섭을 감소시키며, 그 시스템을 더 안정되게 만든다.
이상의 설명은 예시들로서만 간주되어야 한다. 그러나, 보호범위는 이상의 설명에 제한되지 않는다. 본 기술분야의 당업자들에게 쉽게 이루어질 수 있는 임의의 변경 또는 치환은 보호 범위에 속하는 것으로 간주되어야 한다.

Claims (15)

  1. 서버에서 실행되는, 패킷 처리를 위한 장치로서,
    전처리기; 및
    상기 전처리기와 각각 연결된 적어도 두 개의 처리기들을 포함하고,
    상기 전처리기는 상기 서버의 외부 인터페이스에서 수신된 패킷들을 분류하고, 상기 각각의 처리기들에 분류된 패킷들을 분배하며, 동일한 플로우 내의 패킷들은 동일한 처리기에 분배되고, 서로 관련되어 있는 플로우들에 속하는 패킷들도 동일한 처리기에 분배되며, 상기 처리기들 각각은 상기 전처리기에 의해 상기 처리기들에 분배된 패킷을 수신하고 처리하는, 패킷 처리 장치.
  2. 삭제
  3. 제1항에 있어서,
    패킷 수신 모듈;
    패킷 처리 모듈;
    플로우 분류 모듈; 및
    플로우 테이블 유지 모듈을 포함하고,
    상기 패킷 수신 모듈은 상기 서버의 외부 인터페이스로부터 패킷들을 수신하고, 수신된 패킷들 중에 분할된 패킷들을 상기 패킷 처리 모듈에 송신하고, 수신된 패킷들 중에 비분할된 패킷은 상기 플로우 분류 모듈에 송신하며;
    상기 패킷 처리 모듈은:
    상기 분할된 패킷이 상기 분할된 패킷의 제1 분할조각일 때, 상기 제1 분할조각의 5중 정보 및 IPID(Internet Protocol Identity) 정보를 기록하고, 상기 플로우 분류 모듈에 상기 제1 분할조각을 송신하며;
    상기 분할된 패킷이 후속 분할조각일 때, 상기 후속 분할조각의 5중 정보에 대응하는 SPORT(Source PORT) 및 DPORT(Destination PORT) 정보를 획득하고,
    상기 SPORT 및 DPORT 정보가 획득되는 경우, 상기 후속 분할조각 및 상기 플로우 분류 모듈에 획득된 SPORT 및 DPORT 정보를 송신하고,
    SPORT 및 DPORT 정보가 획득되는 경우, 상기 후속 분할조각을 버퍼링하고 상기 SPORT 및 DPORT 정보를 계속 획득하며, 상기 SPORT 및 DPORT 정보가 획득된 때 획득된 상기 SPORT 및 DPORT 정보 및 상기 후속 분할조각을 상기 플로우 분류 모듈에 송신하고;
    상기 플로우 분류 모듈은 상기 패킷 수신 모듈에 의해 송신된 패킷의 5중 정보와 상기 패킷 처리 모듈에 의해 상기 플로우 테이블 유지 모듈로 송신된 패킷의 5중 정보를 수신하고, 상기 플로우 테이블 유지 모듈로부터의 패킷의 5중 정보에 대응하는 처리기 식별자를 수신하며, 수신된 상기 처리기 식별자에 대응하는 처리기에 상기 패킷을 송신하고;
    상기 플로우 테이블 유지 모듈은 상기 플로우 분류 모듈에 의해 송신된 패킷의 5중 정보를 수신하고, 상기 패킷의 5중 정보에 대응하는 플로우 테이블 엔트리가 존재하는지 여부를 문의하며;
    상기 플로우 테이블 엔트리가 존재하면, 상기 플로우 테이블 엔트리 내의 처리기 식별자를 획득하고 상기 처리기 식별자를 상기 플로우 분류 모듈에 송신하며;
    상기 플로우 테이블 엔트리가 존재하지 않으면, 상기 플로우 분류 모듈에 의해 송신된 패킷의 5중 정보에 따라 플로우 테이블 엔트리를 생성하며, 상기 플로우 테이블 엔트리는 상기 패킷의 5중 정보 및 상기 패킷을 처리하기 위한 처리기의 처리기 식별자를 포함하는, 패킷 처리 장치.
  4. 제3항에 있어서,
    상기 전처리기는 패킷 파싱 모듈을 더 포함하고;
    상기 패킷 수신 모듈은 추가적으로, 상기 패킷 파싱 모듈에 수신된 비분할된 패킷을 송신하고;
    상기 패킷 처리 모듈은 추가적으로, 상기 패킷 파싱 모듈에 상기 분할된 패킷을 송신하며;
    상기 패킷 파싱 모듈은:
    상기 패킷 수신 모듈에 의해 송신된 패킷과 상기 패킷 처리 모듈에 의해 송신된 패킷을 파싱하고,
    상기 패킷이 속하는 플로우가 관련 플로우를 갖는다는 결정이 이루어지면, 상기 패킷의 5중 정보 및 상기 관련 플로우의 5중 정보가 동일한 처리기 식별자에 대응하는 각각의 플로우 테이블 엔트리들을 생성하도록 상기 플로우 테이블 유지 모듈에게 지시하기 위해 상기 플로우 테이블 유지 모듈에 관련된 플로우들의 각각의 5중 정보를 송신하고,
    상기 플로우 테이블 유지 모듈은 상기 패킷 파싱 모듈에 의해 송신된 5중 정보를 수신하고, 그 5중 정보에 따라 상기 플로우 테이블 엔트리들을 생성하며, 상기 패킷의 5중 정보 및 상기 관련 플로우의 5중 정보는 상기 플로우 테이블 엔트리들 각각에서 동일한 처리기 식별자에 대응하는, 패킷 처리 장치.
  5. 제4항에 있어서,
    상기 전처리기는 처리기 감시 모듈을 더 포함하고;
    상기 처리기 감시 모듈은 적어도 두 개의 처리기들 각각의 정보를 획득하고, 그 정보는 상기 적어도 두 개의 처리기들 각각의 처리기 식별자, 상기 적어도 두 개의 처리기들 각각이 정상적으로 동작하고 있는지 여부, 및 상기 적어도 두 개의 처리기들 각각의 부하 상황을 포함하며;
    상기 플로우 테이블 유지 모듈은 추가적으로, 상기 처리기 감시 모듈로부터 상기 처리기의 처리기 식별자를 획득하고, 상기 처리기 식별자 및 상기 5중 정보에 따라서 상기 플로우 테이블 엔트리들을 생성하는, 패킷 처리 장치.
  6. 제5항에 있어서,
    상기 플로우 테이블 유지 모듈에 의해 상기 처리기 감시 모듈로부터 획득된 상기 처리기의 처리기 식별자는 현재 최소 부하를 가지고 있는 처리기의 처리기 식별자인, 패킷 처리 장치.
  7. 제5항에 있어서,
    상기 플로우 테이블 유지 모듈은 추가적으로, 플로우 테이블 엔트리를 위한 최장 사용 기간을 적어도 하나 설정하고, 상기 플로우 테이블 엔트리가 상기 최장 사용 기간에 이를 때 상기 플로우 테이블 엔트리를 삭제하는, 패킷 처리 장치.
  8. 패킷 처리를 위한 방법으로서, 상기 방법은 전처리기 및 상기 전처리기와 각각 연결된 적어도 두 개의 처리기들을 포함하는 서버에서 실행되고, 상기 방법은:
    상기 전처리기에 의해, 상기 서버의 외부 인터페이스로부터 패킷을 수신하는 단계;
    상기 전처리기에 의해, 상기 패킷을 분류하는 단계; 및
    상기 전처리기에 의해, 상기 적어도 두 개의 처리기들 중의 처리기에 상기 분류된 패킷을 분배하는 단계로서, 동일한 플로우에서의 패킷들은 동일한 처리기에 분배되며, 서로 관련되어 있는 플로우들에 속하는 패킷들도 동일한 처리기에 분배되는, 상기 분배 단계를 포함하는, 패킷 처리 방법.
  9. 제8항에 있어서,
    상기 전처리기에 의해 상기 패킷을 분류하는 단계는:
    수신된 상기 패킷이 분할된 패킷인지 여부를 상기 전처리기에 의해 결정하는 것을 포함하고;
    상기 패킷이 분할된 패킷인 경우,
    상기 분할된 패킷을 처리하고,
    상기 분할된 패킷의 완전한 5중 정보를 획득하고,
    상기 분할된 패킷의 5중 정보에 따라 상기 패킷을 처리하기 위한 처리기를 결정하고,
    결정된 상기 처리기에 상기 패킷을 분배하며;
    상기 패킷이 분할된 패킷이 아닌 경우, 상기 패킷의 5중 정보에 따라 상기 패킷을 처리하기 위한 처리기를 직접 결정하고, 상기 패킷을 상기 결정된 처리기에 분배하는, 패킷 처리 방법.
  10. 제9항에 있어서,
    상기 분할된 패킷을 처리하고 상기 분할된 패킷의 완전한 5중 정보를 획득하는 것은:
    상기 분할된 패킷의 패킷 헤더 식별자 정보에 따라 상기 분할된 패킷이 제1 분할조각인지 여부를 결정하는 것을 포함하고,
    상기 분할된 패킷이 상기 제1 분할조각인 경우에, 상기 제1 분할조각의 IPID(Internet Protocol Identity) 정보 및 5중 정보를 기록하고;
    상기 분할된 패킷이 후속 분할조각인 경우에, 기록된 정보가 상기 후속 분할조각의 IPID 정보 뿐 아니라 상기 후속 분할조각의 5중 정보 내의 SIP(Source IP address), DIP(Destination IP address) 및 PROTOCOL 정보에 대응하는 5중 정보를 포함하는지 여부를 문의하고;
    상기 기록된 정보가 상기 대응하는 5중 정보를 포함하면, 상기 대응하는 5중 정보로부터 SPORT(Source Port) 및 DPORT(Destination PORT) 정보를 획득하고, 상기 후속 분할조각의 5중 정보 내의 SIP, DIP, 및 PROTOCOL 정보, 및 상기 후속 분할조각의 완전한 5중 정보로서 획득된 상기 SPORT 및 DPORT 정보를 취하고;
    상기 기록된 정보가 대응하는 5중 정보를 포함하고 있지 않으면, 상기 제1 분할조각인 다른 분할된 패킷이 수신될 때까지 상기 후속 분할조각을 버퍼링하고, 상기 제1 분할조각의 5중 정보와 IPID 정보를 기록하고, 상기 제1 분할조각의 기록된 정보로부터 SPORT 및 DPORT 정보를 획득하기 위해 버퍼링된 후속 분할조각 내의 상기 SIP, DIP, 및 PROTOCOL 정보 및 IPID 정보에 대응하는 5중 정보를 위해 상기 제1 분할조각의 기록된 정보를 탐색하고, 상기 후속 분할조각 내의 SIP, DIP, 및 PROTOCOL 정보 및 상기 완전한 5중 정보로서 획득된 상기 SPORT 및 DPORT 정보를 취하는, 패킷 처리 방법.
  11. 제10항에 있어서,
    상기 분할된 패킷의 5중 정보에 따라 상기 패킷을 처리하기 위한 처리기를 결정하는 것은:
    상기 패킷의 5중 정보에 대응하는 플로우 테이블 엔트리가 존재하는지 여부를 결정하는 것을 포함하고;
    상기 플로우 테이블 엔트리가 존재하면, 상기 플로우 테이블 엔트리 내의 처리기 식별자에 대응하는 처리기를 상기 패킷을 처리하기 위한 처리기로서 취하고;
    상기 플로우 테이블 엔트리가 존재하지 않으면, 상기 적어도 두 개의 처리기들로부터 처리기를 선택하고, 선택된 상기 처리기 및 상기 분할된 패킷의 5중 정보에 따라서 플로우 테이블 엔트리를 생성하며, 선택된 상기 처리기를 상기 패킷을 처리하기 위한 처리기로서 취하는, 패킷 처리 방법.
  12. 제11항에 있어서,
    선택된 상기 처리기는 상기 적어도 두 개의 처리기들 중에 현재 최소한의 부하를 가진 처리기이며;
    상기 방법은, 상기 처리기 선택 후에, 선택된 상기 처리기의 현재 부하 정보를 업데이트하는 것을 더 포함하는, 패킷 처리 방법.
  13. 제11항에 있어서,
    상기 패킷을 수신한 후에, 상기 패킷이 속하는 플로우가 관련 플로우를 갖는지 여부를 결정하고;
    상기 플로우가 관련 플로우를 가지고 있으면, 상기 적어도 두 개의 처리기들로부터 처리기를 선택하고, 상기 플로우의 5중 정보 및 선택된 처리기에 따라 플로우 테이블 엔트리를 변경하며, 선택된 상기 처리기 및 상기 관련 플로우의 5중 정보에 따라 다른 플로우 테이블 엔트리를 생성하거나 변경하고, 선택된 상기 처리기를 상기 플로우 및 상기 관련 플로우를 처리하기 위한 처리기로서 취하는, 패킷 처리 방법.
  14. 서버에서 실행되는 전처리기로서,
    상기 서버는 상기 전처리기 및 상기 전처리기와 각각 연결된 적어도 두 개의 처리기들을 포함하며, 상기 전처리기는:
    패킷 수신 모듈;
    패킷 처리 모듈;
    플로우 분류 모듈; 및
    플로우 테이블 유지 모듈을 포함하고,
    상기 패킷 수신 모듈은 상기 서버의 외부 인터페이스로부터 패킷들을 수신하고, 수신된 상기 패킷들 중 분할된 패킷을 상기 패킷 처리 모듈에 송신하고, 수신된 상기 패킷들 중 비분할 패킷을 상기 플로우 분류 모듈에 송신하며;
    상기 패킷 처리 모듈은:
    상기 분할된 패킷이 상기 분할된 패킷의 제1 분할조각일 때, 상기 제1 분할조각의 5중 정보 및 IPID 정보를 기록하고, 상기 플로우 분류 모듈에 상기 제1 분할조각을 송신하며;
    상기 분할된 패킷이 후속 분할조각인 경우, 상기 후속 분할조각의 5중 정보에 대응하는 SPORT 및 DPORT 정보를 획득하고;
    상기 SPORT 및 DPORT 정보가 획득되면, 상기 플로우 분류 모듈에 획득된 상기 SPORT 및 DPORT 정보 및 상기 후속 분할조각을 송신하고,
    SPORT 및 DPORT 정보가 획득되지 않으면, 상기 후속 분할조각을 버퍼링하고 계속하여 상기 SPORT 및 DPORT 정보를 획득하며, 상기 SPORT 및 DPORT 정보가 획득된 때 상기 플로우 분류 모듈에 획득된 상기 SPORT 및 DPORT 정보 및 상기 후속 분할조각을 송신하고;
    상기 플로우 분류 모듈은 상기 패킷 수신 모듈에 의해 송신된 패킷의 5중 정보 및 상기 패킷 처리 모듈에 의해 상기 플로우 패킷 유지 모듈에 송신된 패킷의 5중 정보를 수신하고, 상기 플로우 테이블 유지 모듈로부터 패킷의 5중 정보에 대응하는 처리기 식별자를 수신하고, 수신된 상기 처리기 식별자에 대응하는 처리기에 상기 패킷을 송신하고;
    상기 플로우 테이블 유지 모듈은 상기 플로우 분류 모듈에 의해 송신된 패킷의 5중 정보를 수신하고, 상기 패킷의 5중 정보에 대응하는 플로우 테이블 엔트리가 존재하는지 여부를 문의하고;
    상기 플로우 테이블 엔트리가 존재하는 경우, 상기 플로우 테이블 엔트리 내의 처리기 식별자를 획득하고, 상기 플로우 분류 모듈에 상기 처리기 식별자를 송신하며;
    상기 플로우 테이블 엔트리가 존재하지 않는 경우, 상기 플로우 분류 모듈에 의해 송신된 상기 패킷의 5중 정보에 따라 플로우 테이블 엔트리를 생성하며, 상기 플로우 테이블 엔트리는 상기 패킷의 5중 정보와 상기 패킷을 처리하기 위한 처리기의 처리기 식별자를 포함하는, 전처리기.
  15. 제14항에 있어서,
    패킷 파싱 모듈을 더 포함하고;
    상기 패킷 수신 모듈은 추가적으로, 수신된 상기 비분할된 패킷을 상기 패킷 파싱 모듈에 송신하고;
    상기 패킷 처리 모듈은 추가적으로, 상기 분할된 패킷을 상기 패킷 파싱 모듈에 송신하고;
    상기 패킷 파싱 모듈은 상기 패킷 수신 모듈에 의해 송신된 패킷 및 상기 패킷 처리 모듈에 의해 송신된 패킷을 파싱하고; 상기 패킷이 속한 플로우가 관련 플로우를 갖는다는 결정이 이루어지면, 상기 패킷의 5중 정보 및 상기 관련 플로우의 5중 정보가 동일한 처리기 식별자에 대응하는 각각의 플로우 테이블 엔트리들을 생성하도록 상기 플로우 테이블 유지 모듈에게 지시하기 위해 관련된 플로우들의 각각의 5중 정보를 상기 플로우 테이블 유지 모듈에 송신하며;
    상기 플로우 테이블 유지 모듈은 추가적으로, 상기 패킷 파싱 모듈에 의해 송신된 5중 정보를 수신하고, 그 5중 정보에 따라 상기 플로우 테이블 엔트리들을 생성하며, 상기 패킷의 5중 정보 및 상기 관련 플로우의 5중 정보는 상기 플로우 테이블 엔트리들 각각 내의 동일한 처리기 식별자에 대응하는, 전처리기.
KR1020127033097A 2010-08-11 2011-08-11 패킷 처리 및 전처리기를 위한 장치 및 방법 KR101409311B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201010250651.8A CN102377640B (zh) 2010-08-11 2010-08-11 一种报文处理装置和报文处理方法、及预处理器
CN201010250651.8 2010-08-11
PCT/CN2011/078244 WO2012019545A1 (en) 2010-08-11 2011-08-11 Method and apparatus for packet processing and a preprocessor

Publications (2)

Publication Number Publication Date
KR20130032319A KR20130032319A (ko) 2013-04-01
KR101409311B1 true KR101409311B1 (ko) 2014-06-18

Family

ID=45567372

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127033097A KR101409311B1 (ko) 2010-08-11 2011-08-11 패킷 처리 및 전처리기를 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US20130138920A1 (ko)
EP (1) EP2604006B1 (ko)
KR (1) KR101409311B1 (ko)
CN (1) CN102377640B (ko)
WO (1) WO2012019545A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102664815A (zh) * 2012-05-21 2012-09-12 华为技术有限公司 报文流量的负荷分担方法、装置和系统
CN103888364A (zh) * 2012-12-24 2014-06-25 华为技术有限公司 报文分流方法及设备
CN104734993B (zh) * 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
CN105871741B (zh) * 2015-01-23 2018-12-25 阿里巴巴集团控股有限公司 一种报文分流方法及装置
CN105676995B (zh) * 2015-12-31 2017-03-22 南京华捷艾米软件科技有限公司 一种实现三维测量芯片低功耗的方法
US10491520B2 (en) * 2017-04-06 2019-11-26 Ca, Inc. Container-based software appliance
US11169845B2 (en) * 2017-12-21 2021-11-09 Ciena Corporation Flow and application based processor scheduling for network functions virtualization applications using flow identification based on logical calculations on frame based fields
WO2019178813A1 (zh) 2018-03-22 2019-09-26 华为技术有限公司 处理报文分片的方法、装置和系统
CN110198315B (zh) * 2019-05-30 2022-02-25 新华三信息安全技术有限公司 一种报文处理的方法及装置
CN110601990A (zh) * 2019-10-30 2019-12-20 杭州迪普科技股份有限公司 一种报文分流方法和装置
CN112383480B (zh) * 2020-10-29 2022-11-04 曙光网络科技有限公司 流表的处理方法、装置、监管设备和存储介质
CN116074250B (zh) * 2023-02-23 2023-08-22 阿里巴巴(中国)有限公司 流表处理方法、系统、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086393A1 (en) * 2003-10-03 2005-04-21 Meng David Q. Controlling power of network processor engines
US20050190694A1 (en) * 2000-04-03 2005-09-01 P-Cube Method and apparatus for wire-speed application layer classification of upstream and downstream data packets
EP2061190A1 (en) * 2006-09-01 2009-05-20 Huawei Technologies Co., Ltd. Method, apparatus and system for complex flow classification of fragmented datagrams

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003028304A1 (en) * 2001-09-27 2003-04-03 Broadcom Corporation Highly integrated media access control
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine
US7882554B2 (en) * 2005-08-19 2011-02-01 Cpacket Networks, Inc. Apparatus and method for selective mirroring
US20080002702A1 (en) * 2006-06-30 2008-01-03 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (MCAL)
CN101150493B (zh) * 2006-09-20 2012-06-27 华为技术有限公司 一种在接入终端上实现业务分流的方法及系统
EP1983718A1 (en) * 2007-04-17 2008-10-22 Danmarks Tekniske Universitet Method and apparatus for inspection of compressed data packages
US7724776B2 (en) * 2007-10-30 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Method and ingress node for handling fragmented datagrams in an IP network
US8208406B1 (en) * 2008-03-25 2012-06-26 Juniper Networks, Inc. Packet forwarding using feedback controlled weighted queues dynamically adjusted based on processor utilization
CN101286936B (zh) * 2008-05-16 2010-10-27 成都市华为赛门铁克科技有限公司 数据报文的处理方法及装置
US8272055B2 (en) * 2008-10-08 2012-09-18 Sourcefire, Inc. Target-based SMB and DCE/RPC processing for an intrusion detection system or intrusion prevention system
CN101729513B (zh) * 2008-10-27 2014-02-19 华为数字技术(成都)有限公司 网络认证方法和装置
CN101478551B (zh) * 2009-01-19 2011-12-28 清华大学 基于多核处理器的多域网包分类方法
CN101656677B (zh) * 2009-09-18 2011-11-16 杭州迪普科技有限公司 一种报文分流处理方法及装置
JP5643609B2 (ja) * 2009-12-24 2014-12-17 キヤノン株式会社 通信装置、その処理方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050190694A1 (en) * 2000-04-03 2005-09-01 P-Cube Method and apparatus for wire-speed application layer classification of upstream and downstream data packets
US20050086393A1 (en) * 2003-10-03 2005-04-21 Meng David Q. Controlling power of network processor engines
EP2061190A1 (en) * 2006-09-01 2009-05-20 Huawei Technologies Co., Ltd. Method, apparatus and system for complex flow classification of fragmented datagrams

Also Published As

Publication number Publication date
EP2604006A1 (en) 2013-06-19
CN102377640A (zh) 2012-03-14
CN102377640B (zh) 2014-12-31
EP2604006A4 (en) 2013-12-25
US20130138920A1 (en) 2013-05-30
EP2604006B1 (en) 2016-06-08
KR20130032319A (ko) 2013-04-01
WO2012019545A1 (en) 2012-02-16

Similar Documents

Publication Publication Date Title
KR101409311B1 (ko) 패킷 처리 및 전처리기를 위한 장치 및 방법
US9647954B2 (en) Method and system for optimizing a network by independently scaling control segments and data flow
EP3314827B1 (en) Method and system for managing data traffic in a computing network
US8447871B1 (en) Simplified method for processing multiple connections from the same client
US8677011B2 (en) Load distribution system, load distribution method, apparatuses constituting load distribution system, and program
US20050060418A1 (en) Packet classification
US8018866B1 (en) Adaptively applying network acceleration services with an intermediate network device
US8913613B2 (en) Method and system for classification and management of inter-blade network traffic in a blade server
US20060242313A1 (en) Network content processor including packet engine
WO2020151030A1 (zh) 一种处理数据报文的方法和装置
US8767757B1 (en) Packet forwarding system and method using patricia trie configured hardware
US9973400B2 (en) Network flow information collection method and apparatus
US9356844B2 (en) Efficient application recognition in network traffic
US8413225B2 (en) Systems and methods for management of common application firewall session data in a multiple core system
US20140198793A1 (en) Traffic forwarding in a point multi-point link aggregation using a link selector data table
US10225201B2 (en) Scalable multicast for notification-driven content delivery in information centric networks
JP2007234014A (ja) スケーラブルなコンテンツベースのイベントマルチキャストプラットフォーム
US20150043586A1 (en) Control Apparatus, Communication Apparatus, Communication System, Communication Method, and Program
WO2024093064A1 (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
Tang et al. Elephant Flow Detection Mechanism in SDN‐Based Data Center Networks
US11012542B2 (en) Data processing method and apparatus
Ren et al. On Scalable Service Function Chaining with $\mathcal {O}(1) $ Flowtable Entries
US8819107B2 (en) Relay apparatus, recording medium storing a relay program, and a relay method
Karrakchou et al. EP4: An application-aware network architecture with a customizable data plane
Kurihara et al. List interest: Packing interests for reduction of router workload in ccn 1.0

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee