KR101448951B1 - 패킷 처리 장치 및 방법 - Google Patents

패킷 처리 장치 및 방법 Download PDF

Info

Publication number
KR101448951B1
KR101448951B1 KR1020130021187A KR20130021187A KR101448951B1 KR 101448951 B1 KR101448951 B1 KR 101448951B1 KR 1020130021187 A KR1020130021187 A KR 1020130021187A KR 20130021187 A KR20130021187 A KR 20130021187A KR 101448951 B1 KR101448951 B1 KR 101448951B1
Authority
KR
South Korea
Prior art keywords
packet
packet processing
queue
nic
processing system
Prior art date
Application number
KR1020130021187A
Other languages
English (en)
Other versions
KR20140106912A (ko
Inventor
이종호
Original Assignee
주식회사 시큐아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 시큐아이 filed Critical 주식회사 시큐아이
Priority to KR1020130021187A priority Critical patent/KR101448951B1/ko
Publication of KR20140106912A publication Critical patent/KR20140106912A/ko
Application granted granted Critical
Publication of KR101448951B1 publication Critical patent/KR101448951B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 실시예에 따라, 패킷 처리 시스템이 개시된다. 상기 시스템은 외부 네트워크로부터 패킷을 수신하기 위한 적어도 하나의 네트워크 인터페이스 카드(network interface card, NIC) ― 상기 수신된 패킷은 상기 NIC의 NIC 큐(queue)에 저장됨 ― ; 및 패킷을 프로세싱하기 위한 복수의 패킷 처리 장치를 포함하고, 상기 패킷을 수신한 NIC는 상기 복수의 패킷 처리 장치 중 하나의 패킷 처리 장치로 패킷 수신 신호를 통지하고, 상기 패킷 처리 장치 각각은, 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치로부터 패킷이 할당되기 위한 복수의 대기 큐 ― 상기 복수의 대기 큐 각각은 상기 패킷 처리 시스템 내의 각각의 패킷 처리 장치를 지시하는 식별자를 가짐 ― ; 및 상기 패킷 수신 신호에 응답하여, 상기 패킷 수신 신호를 통지한 NIC의 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는 경우, 상기 NIC 큐에 저장된 패킷을 상기 식별자에 따라 상기 다른 패킷 처리 장치의 복수의 대기 큐 중 하나의 대기 큐로 할당하기 위한 패킷 컨트롤러를 포함할 수 있다.

Description

패킷 처리 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING PACKET}
본 발명은 패킷 처리 기술에 관한 것으로서, 더 구체적으로는 멀티프로세서 시스템에서 패킷 충돌을 방지할 수 있는 패킷 처리 기술에 관한 것이다.
도 1은 종래의 예시적인 패킷 처리 시스템을 도시한다.
도시되는 바와 같이, 종래의 패킷 처리 시스템은 각각이 프로세서, 하나의 처리 큐 및 하나의 대기 큐를 포함하는 복수의 패킷 처리 장치(110 내지 140), 외부로부터 유입된 패킷을 패킷 처리 장치(110 내지 140)에 전달하는 복수의 네트워크 인터페이스 카드(network interface card, NIC)(150, 160)를 포함한다.
NIC(150, 160)는 외부로부터 유입되는 패킷을 내부의 NIC 큐에 저장할 수 있다. 도 1에는 각각의 NIC(150, 160)가 하나의 NIC 큐를 가지는 것으로 도시되나, NIC(150, 160)은 다수의 큐를 가질 수 있으며, 예를 들어, NIC(150, 160)는 패킷을 처리하는 프로세서의 개수와 동일한 개수의 큐를 확보해서 프로세서와 NIC 큐를 1:1로 매핑함으로써 성능을 향상시키고 있다.
도시되는 바와 같이, 제 1 NIC(150)가 패킷을 수신한 후에 제 1 NIC(150)의 NIC 큐에 패킷을 저장할 수 있다. 이러한 패킷 수신을 통지하기 위해 제 2 패킷 처리 장치(120)로 하드웨어 인터럽트 신호를 발생시킬 수 있다. 하드웨어 인터럽트 신호를 수신한 제 2 패킷 처리 장치(120)는 제 1 NIC(150)의 NIC 큐에 저장된 패킷을 프로세싱할 수 있다.
또한, 제 2 패킷 처리 장치(120)는 제 1 NIC(150)의 NIC 큐에 대기 큐에 저장된 패킷을 직접 프로세싱하지 않고, 다른 패킷 처리 장치(110, 130, 140)가 프로세싱하게 할 수 있다. 예를 들어, 제 1 NIC(150)의 NIC 큐에 저장된 패킷이 제 3 패킷 처리 장치(130)가 프로세싱해야 한다고 판단하면, 상기 패킷을 제 3 패킷 처리 장치(130)의 대기 큐에 할당하고, 이러한 할당 사실을 통지하기 위해 제 3 패킷 처리 장치(130)로 소프트웨어 인터럽트 신호를 발생시키게 된다. 대기 큐로의 할당은 상기 패킷이 저장된 NIC 큐의 주소를 대기 큐에 전달함으로써 수행될 수 있다.
한편, 제 3 패킷 처리 장치(130)가 제 2 패킷 처리 장치(120)로부터 소프트웨어 인터럽트 신호를 수신하는 것과 동일한 방식으로, 제 4 패킷 처리 장치(140)로부터 소프트웨어 인터럽트 신호를 수신할 수 있다. 즉, 제 4 패킷 처리 장치(140)가 제 2 NIC(160)가 수신하여 제 2 NIC(160)의 NIC 큐에 저장된 패킷을 제 3 패킷 처리 장치(130)가 프로세싱해야 한다고 판단한 경우, 상기 패킷을 제 3 패킷 처리 장치(130)의 대기 큐에 할당하고, 이러한 할당 사실을 통지하기 위해 제 3 패킷 처리 장치(130)로 소프트웨어 인터럽트 신호를 발생시킬 수 있다.
그러나 제 3 패킷 처리 장치(130)는 하나의 대기 큐를 가지기 때문에, 제 2 패킷 처리 장치(120)와 제 4 패킷 처리 장치(140)의 이러한 패킷 할당이 동시에 일어날 때, 제 3 패킷 처리 장치(130)의 대기 큐는 공유자원이 되어 시스템의 성능이 저하되게 된다.
이와 같이, 멀티프로세서를 이용하는 패킷 처리 시스템에서, 하나의 프로세서(즉, 하나의 패킷 처리 장치)로 패킷이 집중됨으로써 패킷 중 적어도 일부가 소실되거나, 대기 큐를 복수의 패킷 처리 장치에서 공유 자원으로서 사용하게 됨으로써 시스템의 성능이 저하될 수 있다. 따라서 이러한 문제를 발생시키지 않으면서 프로세서 간의 패킷을 분산 및 처리할 수 있는 기술이 요구된다.
본 발명은 상기 문제점을 해결하기 위한 것으로서, 패킷 처리 장치 간의 패킷 분산에 따라 발생할 수 있는 부하를 감소시키면서 패킷을 분산시킬 수 있는 기술을 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 따라, 패킷 처리 시스템이 개시된다. 상기 시스템은 외부 네트워크로부터 패킷을 수신하기 위한 적어도 네트워크 인터페이스 카드(network interface card, NIC) ― 상기 수신된 패킷은 상기 NIC의 NIC 큐(queue)에 저장됨 ― ; 및 패킷을 프로세싱하기 위한 복수의 패킷 처리 장치를 포함하고, 상기 패킷을 수신한 NIC는 상기 복수의 패킷 처리 장치 중 하나의 패킷 처리 장치로 패킷 수신 신호를 통지하고, 상기 패킷 처리 장치 각각은, 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치로부터 패킷이 할당되기 위한 복수의 대기 큐 ― 상기 복수의 대기 큐 각각은 상기 패킷 처리 시스템 내의 각각의 패킷 처리 장치를 지시하는 식별자를 가짐 ― ; 및 상기 패킷 수신 신호에 응답하여, 상기 패킷 수신 신호를 통지한 NIC의 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는 경우, 상기 NIC 큐에 저장된 패킷을 상기 식별자에 따라 상기 다른 패킷 처리 장치의 복수의 대기 큐 중 하나의 대기 큐로 할당하기 위한 패킷 컨트롤러를 포함할 수 있다.
본 발명은 패킷 처리 장치 내의 대기 큐를 복수 개로 구성하고, 각각의 대기 큐에 접근할 수 있는 패킷 처리 장치를 상이하게 함으로써, 패킷 분산에 의해 임의의 패킷 처리 장치에 패킷이 집중되더라도 대기 큐로의 접근에 의해 발생하는 부하를 감소시켜 시스템의 성능 저하를 방지할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 종래의 예시적인 패킷 처리 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른 패킷 처리 시스템을 포함하는 통신 네트워크의 예시를 도시한다.
도 3은 본 발명의 일 실시예에 따른 패킷 처리 시스템의 블록도를 도시한다.
도 4는 본 발명의 실시예에 따른 패킷 처리 장치의 블록도이다.
도 5는 본 발명의 일 실시예에 따른 패킷 처리 시스템의 동작의 예시를 도시한다.
이하, 본 발명에 따른 실시예들은 첨부된 도면들을 참조하여 설명한다. 한편, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다. 또한, 이하에서 본 발명의 실시예들을 설명할 것이나, 본 발명의 기술적 사상은 이에 한정되거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 출원에서 사용되는 바와 같이, 용어들 "컴포넌트", "모듈" 및 "시스템" 등은 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 소프트웨어와 같은, 컴퓨터-관련 엔티티들을 지칭하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서 상에 실행되는 프로세스, 프로세서, 객체(object), 실행가능물(executable), 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있으나 이에 한정되지는 않는다. 예를 들어, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터 상에 로컬화되거나(localized) 그리고/또는 둘 이상의 컴퓨터들 사이에 분산될 수 있다. 또한, 이러한 컴포넌트들은 다양한 데이터 구조들이 저장되는 다양한 컴퓨터 판독가능한 매체로부터 실행될 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통한 데이터)에 따라 로컬 및/또는 원격 프로세스들을 통해 통신할 수 있다.
도 2는 본 발명의 일 실시예에 따른 패킷 처리 시스템을 포함하는 통신 네트워크(200)의 예시를 도시한다.
통신 네트워크(200)는 외부 네트워크(220), 내부 네트워크(230) 및 외부 네트워크(220)와 내부 네트워크(230) 사이에 위치하는 패킷 처리 시스템(210)을 포함할 수 있다.
패킷 처리 시스템(210)은 외부 네트워크 및 내부 네트워크 사이에서 통신되는 패킷을 프로세싱하기 위한 것이다. 특히 본 발명의 따른 패킷 처리 시스템(210)은 외부 네트워크(220)로부터 적어도 하나의 서버 및/또는 적어도 하나의 사용자 단말을 포함하는 내부 네트워크(230)를 보호하기 위한 보안 장치로서 이용될 수 있으며, 이러한 보안 장치는 예를 들어, 방화벽, 침입 탐지 시스템(IDS), 침입 차단 시스템(IPS), UTM 장비 등으로 구현될 수 있다.
구체적으로, 본 발명에 따른 패킷 처리 시스템(210)은 네트워크 인터페이스 카드(network interface card, NIC) 및 패킷 처리 장치를 포함할 수 있다. NIC는 외부 네트워크(220)와 내부 네트워크(230) 간의 패킷 전송을 중계할 수 있다. 패킷 처리 장치는 복수 개로 구성되며, NIC에 의해 수신된 패킷을 직접 프로세싱(예를 들어, 보안 정책에 따른 패킷 검사 등)하거나, 다른 패킷 처리 장치에 할당할 수 있다 .
본 발명은 패킷 처리 장치 내의 대기 큐를 복수 개로 구성하고, 각각의 대기 큐에 접근할 수 있는 패킷 처리 장치를 상이하게 함으로써, 패킷 분산에 의해 임의의 패킷 처리 장치에 패킷 할당이 집중되더라도 대기 큐 액세스에 의해 발생하는 부하를 감소시켜 시스템의 성능 저하를 방지할 수 있다.
도 3은 본 발명의 일 실시예에 따른 패킷 처리 시스템의 블록도(300)를 도시한다.
시스템(300)은 패킷 처리 장치(310, 320) 및 네트워크 인터페이스 카드(network interface card, NIC)(330, 340)를 포함할 수 있다. 2 개의 패킷 처리 장치(310, 320) 및 2 개의 NIC(330, 340)가 도시되지만 이는 예시적인 것으로서 본 발명이 적용되는 실시예에 따라 다양한 개수의 패킷 처리 장치 및 NIC가 이용될 수 있다.
NIC(330, 340)는 외부 네트워크로부터 패킷을 수신할 수 있다. NIC(330, 340) 각각은 내부에 NIC 큐를 포함하며, 외부 네트워크로부터 수신된 패킷을 NIC 큐에 저장할 수 있다. 패킷 처리 장치(310, 320)로 패킷 수신 사실을 통지하기 위해 패킷 처리 장치(310, 320)로 패킷 수신 신호, 예를 들어, 하드웨어 인터럽트(hardware interrupt) 신호를 발생시킬 수 있다.
NIC(330, 340)는 각각 미리 결정된 패킷 처리 장치(310, 320)로 패킷 수신 신호를 발생시킬 수 있다. 도 3을 참조하면, NIC(330)는 패킷 처리 장치(310)로 패킷 수신 신호를 발생시키고, NIC(340)는 패킷 처리 장치(320)로 패킷 수신 신호를 발생시킬 수 있다. 그러나 이러한 구성은 예시적인 것으로서 본 발명이 적용되는 실시예에 따라 다양한 구성이 적용될 수 있다. 예를 들어, NIC(330, 340)는 패킷 처리 장치(310, 320)의 부하율 또는 수신된 패킷의 세션에 기초하여 패킷 처리 장치를 선택하고, 선택된 패킷 처리 장치로 패킷 수신 신호를 발생시킬 수 있다.
패킷 수신 신호에 응답하여, 패킷 처리 장치(310, 320)는 NIC(330, 340)에 의해 수신되어 NIC 큐에 저장된 패킷을 프로세싱할 수 있다. 예를 들어, 패킷 처리 장치(310, 320)가 네트워크 보안 장비에 이용되는 경우 지정된 보안 정책에 따라 패킷을 검사할 수 있다. 또한, 패킷 처리 장치(310, 320)는 패킷을 프로세싱하기 전에 패킷을 프로세싱할 패킷 처리 장치(310, 320)를 결정할 수 있다. 패킷을 다른 패킷 처리 장치가 프로세싱해야 하는 경우, 패킷 처리 장치는 패킷을 다른 패킷 처리 장치에 할당할 수 있다. 이때 패킷 할당 사실을 통지하기 위해 다른 패킷 처리 장치로 패킷 할당 신호, 예를 들어, 소프트웨어 인터럽트(software interrupt) 신호를 발생시킨다. 패킷 할당 신호를 수신한 다른 패킷 처리 장치는 패킷을 프로세싱할 수 있다. 패킷 프로세싱을 담당할 패킷 처리 장치의 결정은 패킷의 세션에 기초할 수 있다. 그러나 이러한 구성은 예시적인 것으로서 본 발명이 적용되는 실시예에 따라 다양한 구성이 적용될 수 있다. 예를 들어, 패킷 처리 장치의 부하율 등에 기초하여 패킷 처리 장치가 결정될 수 있다.
도 4는 본 발명의 실시예에 따른 패킷 처리 장치(400)의 블록도이다.
패킷 처리 장치(400)는 프로세서(410), 처리 큐(420), 복수의 대기 큐(430), 패킷 컨트롤러(440)를 포함할 수 있다.
프로세서(410)는 패킷을 프로세싱할 수 있다. 예를 들어, 패킷 처리 장치(400)가 네트워크 보안 장비에 이용되는 경우 보안 정책에 따라 패킷을 검사할 수 있다. 프로세서(410)는 (예를 들어, 도 3에서 도시되는) NIC의 NIC 큐에 저장된 패킷 또는 처리 큐(420)에 할당된 패킷을 프로세싱할 수 있다. 예를 들어, NIC의 NIC 큐 및 처리 큐(420) 모두에 패킷이 존재하는 경우, 소정의 개수의 패킷 또는 소정의 시간에 기초하여 NIC의 NIC 큐에 저장된 패킷 및 처리 큐(420)에 할당된 패킷을 순차적으로 처리할 수 있다.
처리 큐(420)에는 프로세서(410)에 의해 프로세싱될 패킷이 할당될 수 있다. 이러한 할당은 상기 패킷이 저장된 NIC 큐의 주소를 처리 큐(420)에 전달함으로써 수행될 수 있다. 처리 큐(420)에는 상기 패킷이 저장된 NIC 큐의 주소가 저장될 수 있다. 하기 설명할 바와 같이, 패킷 처리 시스템 내의 다른 패킷 처리 장치로부터 할당된 패킷은 대기 큐(430)에 할당되며, 대기 큐(430)가 처리 큐(420)가 되면, 처리 큐(420)에 할당된 패킷이 프로세서(410)에 의해 프로세싱될 수 있다.
대기 큐(430)에는 패킷 처리 시스템 내의 다른 패킷 처리 장치로부터 패킷이 할당될 수 있다. 이러한 할당은 상기 패킷이 저장된 NIC 큐의 주소를 대기 큐(430)에 전달함으로써 수행될 수 있다. 대기 큐(430)에는 상기 패킷이 저장된 NIC 큐의 주소가 저장될 수 있다.
대기 큐(430)와 처리 큐(420)는 상호교환되는 방식으로 동작할 수 있다. 구체적으로, 프로세서(410)가 처리 큐(420)에 할당된 패킷들을 모두 프로세싱하면, 처리 큐(420)는 신규 대기 큐(430)가 되고, 기존의 대기 큐(430) 중 하나가 신규 처리 큐(420)가 될 수 있다. 처리 큐(420)가 신규 대기 큐(430)가 될 때, 신규 대기 큐(430)는 신규 처리 큐(420)가 되는 종래의 대기 큐(430)의 속성(예를 들어, 대기 큐(430)의 식별자)을 그대로 상속받을 수 있다. 종래의 대기 큐(430) 중 신규 처리 큐(420)가 되는 대기 큐(430)는 본 발명이 적용되는 실시예에 따라 다양한 방식으로 선택될 수 있다. 예를 들어, 신규 처리 큐(420)는 기존의 대기 큐(430) 중에서 라운드 로빈 방식에 의해 결정될 수 있다.
대기 큐(430)는 복수 개로 구성될 수 있다. 예를 들어, 대기 큐(430)의 개수는 (패킷 처리 시스템 내의 패킷 처리 장치의 개수 - 1) 일 수 있다. 이때, 하기 설명할 바와 같이, 복수의 대기 큐(430) 각각은 패킷 처리 시스템 내의 다른 패킷 처리 장치를 지시하는 식별자를 가질 수 있다. 이와 같은 대기 큐(430)의 개수는 예시적인 것으로서 본 발명이 적용되는 실시예에 따라 다양한 개수의 대기 큐가 이용될 수 있다.
패킷 컨트롤러(440)는 NIC의 NIC 큐에 저장된 패킷들을 프로세싱할 패킷 처리 장치를 결정할 수 있다. NIC 큐에 저장된 패킷이 패킷 처리 장치(400)가 아닌 다른 패킷 처리 장치에 의해 프로세싱되어야 하는 경우, 상기 다른 패킷 처리 장치로 NIC 큐에 저장된 패킷들을 할당할 수 있다.
먼저, 패킷 컨트롤러(440)는 패킷을 할당하기 전에 패킷 처리 시스템에 포함된 복수의 패킷 처리 장치 중 패킷을 할당해야 하는 패킷 처리 장치를 결정할 수 있다.
일 실시예에서, 패킷 컨트롤러(440)는 패킷의 세션에 따라 패킷을 할당할 패킷 처리 장치를 결정할 수 있다. 이를 통해 동일한 세션에 해당하는 패킷은 동일한 패킷 처리 장치에 의해 프로세싱되게 할 수 있다. 패킷의 세션은 패킷의 프로토콜, 발신자 IP 주소, 발신자 포트, 수신자 IP 주소, 및 수신자 포트 중 적어도 하나에 따라 결정될 수 있다. 예를 들어, 패킷의 프로토콜, 발신자 IP 주소, 발신자 포트, 수신자 IP 주소, 및 수신자 포트 중 적어도 하나에 기초하여 해시값을 산출하고, 산출된 해시값에 따라 패킷을 할당할 패킷 처리 장치를 결정할 수 있다.
일 실시예에서, 패킷 컨트롤러(440)는 패킷 처리 장치의 부하율에 따라 패킷을 할당할 패킷 처리 장치를 결정할 수 있다. 이를 통해 패킷 처리 시스템 전체의 부하 분산을 달성할 수 있다. 여기서 부하율은 패킷 처리 장치에 가해지는 부하의 정도를 나타내는 것으로서, 예를 들어, 패킷 처리 장치에 포함된 복수의 대기 큐 중 패킷이 할당되어 있는 대기 큐의 비율에 의해 결정될 수 있다. 이러한 부하율은 예시적인 것으로서, 패킷 처리 장치의 부하의 정도를 나타낼 수 있는 다양한 기술이 부하 분산에 이용될 수 있다.
일 실시예에서, 패킷 컨트롤러(440)는 패킷의 페이로드 중 적어도 일부의 해시값에 따라 패킷을 할당할 패킷 처리 장치를 결정할 수 있다.
계속해서, 패킷 컨트롤러(440)는 패킷을 할당할 패킷 처리 장치를 결정한 후에, 결정된 패킷 처리 장치에 포함된 복수의 대기 큐 중 패킷을 할당할 대기 큐를 선택할 수 있다.
일 실시예에서, 패킷을 할당할 대기 큐는 패킷 처리 시스템 내의 패킷 처리 장치를 지시하는 식별자에 기초하여 결정될 수 있다. 복수의 대기 큐 각각은 패킷 처리 시스템 내의 다른 패킷 처리 장치를 지시하는 식별자를 포함할 수 있는데, 패킷 컨트롤러(440)는 NIC의 NIC 큐에 저장된 패킷을 복수의 대기 큐 중 패킷 컨트롤러(440)가 포함된 패킷 처리 장치(400)를 지시하는 식별자를 가진 대기 큐로 전송할 수 있다. 각각의 패킷 처리 장치를 지시하는 식별자에 기초하여 대기 큐를 선택하고 패킷을 할당하기 때문에, 복수의 상이한 패킷 처리 장치에서 동일한 대기 큐에 실질적으로 동시에 접근하는 것을 방지할 수 있다.
부가적으로, 패킷을 할당할 대기 큐는 식별자 및 부하율에 따라 결정될 수 있다. 즉, 복수의 대기 큐의 각각의 식별자에 기초하여 패킷을 할당할 대기 큐를 결정하였으나, 결정된 대기 큐의 부하율이 소정의 값 이상인 경우, 상기 패킷을 드랍(drop)하거나 다른 대기 큐에 할당할 수 있다. 여기서 소정의 값은 본 발명의 적용되는 실시예에 따라 다양한 값이 적용될 수 있다. 예를 들어, 소정의 값은 영(0), 즉 대기 큐에 어떠한 패킷도 할당되지 않은 경우를 의미할 수 있다.
도 5는 본 발명의 일 실시예에 따른 패킷 처리 시스템(500)의 동작의 예시를 도시한다.
도시되는 바와 같이, 시스템은(500)은 패킷을 프로세싱하기 위한 복수의 패킷 처리 장치(510 내지 540), 외부로부터 패킷을 수신하여 NIC 큐에 저장하는 복수의 네트워크 인터페이스 카드(NIC)(550, 560)를 포함하며, 복수의 패킷 처리 장치(510 내지 540) 각각은 프로세서, 하나의 처리 큐 및 세 개의 대기 큐를 포함하고 있다.
도 5를 참조하면, 제 1 NIC(550)가 패킷을 수신한 후에 제 1 NIC(550)의 NIC 큐에 패킷을 저장할 수 있으며, 제 1 NIC(550)의 NIC 큐와 매핑된 제 2 패킷 처리 장치(520)로 패킷 수신 사실을 통지할 수 있다. 또한, 이러한 패킷 수신 사실을 통지하기 위해 제 2 패킷 처리 장치(520)로 패킷 수신 신호, 예를 들어, 하드웨어 인터럽트 신호를 발생시킬 수 있다.
제 2 패킷 처리 장치(520)는 패킷 수신 신호에 응답하여, 제 1 NIC(550)의 NIC 큐에 저장된 패킷을 직접 프로세싱할지 다른 패킷 처리 장치(510, 530, 540)에 할당할지를 결정하게 된다. 제 2 패킷 처리 장치(520)가 패킷이 제 3 패킷 처리 장치(530)에 할당되어야 한다고 판단하면, 이어서, 제 3 패킷 처리 장치(530)의 복수의 대기 큐 중 어느 대기 큐에 패킷을 할당할지를 결정하게 된다.
도시되는 바와 같이, 제 3 패킷 처리 장치(530)는 세 개의 대기 큐를 가지며, 각 대기 큐에는 "1", "2" 및 "4"의 식별자가 주어진다. 각 식별자는 제 3 패킷 처리 장치(530) 외부의 다른 패킷 처리 장치(즉, 510, 520, 540)를 지시하는 것으로서, 구체적으로, "1"의 식별자는 제 1 패킷 처리 장치(510)를 지시하고, "2"의 식별자는 제 2 패킷 처리 장치(520)를 지시하며, "4"의 식별자는 제 4 패킷 처리 장치(540)를 지시한다. 따라서 제 2 패킷 처리 장치(520)는 제 3 패킷 처리 장치(530)에서 "2"의 식별자를 갖는 대기 큐에 패킷을 할당할 수 있다. 또한, 제 2 패킷 처리 장치(520)는 이러한 패킷 전송의 사실을 통지하기 위해 제 3 패킷 처리 장치(530)로 패킷 할당 신호, 예를 들어, 소프트웨어 인터럽트 신호를 발생시키게 된다.
제 4 패킷 처리 장치(540) 또한 제 2 NIC(560)가 패킷을 수신하여 NIC 큐에 저장한 후에, 제 2 NIC(560)로부터 패킷 수신 신호, 예를 들어, 하드웨어 인터럽트 신호를 수신할 수 있다. 제 4 패킷 처리 장치(540)는 패킷 수신 신호에 응답하여, 제 2 NIC(560)의 NIC 큐에 저장된 패킷이 제 3 패킷 처리 장치(530)에 할당되어야 해야 한다고 판단할 수 있으며, 이러한 경우 제 3 패킷 처리 장치(530)에서 "4"의 식별자를 갖는 대기 큐에 패킷을 할당할 수 있다. 또한, 제 4 패킷 처리 장치(540)는 이러한 패킷 할당 사실을 통지하기 위해 제 3 패킷 처리 장치(530)로 패킷 할당 신호, 예를 들어, 소프트웨어 인터럽트 신호를 발생시키게 된다.
이와 같이, 본 발명에 따른 패킷 처리 장치는 대기 큐를 복수 개로 구성함으로써, 적어도 두 개의 외부 패킷 처리 장치로부터 동시에 전송되는 패킷을 수신할 수 있다. 또한, 식별자를 통해 각 패킷 처리 장치가 접근할 수 있는 대기 큐를 상이하게 하여 패킷 충돌을 방지할 수 있다.
도 5에서 도시되는 패킷 처리 시스템(500)은 예시적인 것으로서 본 발명이 적용되는 실시예에 따라 다양한 구성이 적용될 수 있다.
여기 제시되는 실시예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드 또는 이들의 조합에 의해 구현될 수 있음이 이해되어야 한다. 하드웨어 구현의 경우, 프로세싱 유닛들은 하나 이상의 주문형 반도체(ASIC)들, 디지털 신호 프로세서(DSP)들, 디지털 신호 프로세싱 디바이스(DSPD)들, 프로그램어블 논리 디바이스(PLD)들, 필드 프로그램어블 게이트 어레이(FPGA)들, 프로세서들, 컨트롤러들, 마이크로-컨트롤러들, 마이크로프로세서들, 여기서 제시되는 기능들을 수행하도록 설계되는 다른 전자 유닛들 또는 이들의 조합 내에서 구현될 수 있다.
실시예들이 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드, 프로그램 코드 또는 코드 세그먼트들로 구현되는 경우, 이들은 저장 컴포넌트와 같은, 기계-판독가능한 매체에 저장될 수 있다. 코드 세그먼트는 프로시져, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스 또는 명령들, 데이터 구조들 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수 있다. 코드 세그먼트는 정보, 데이터, 인수들, 파라미터들 또는 메모리 컨텐츠들을 전송 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전송, 토큰 전송, 네트워크 전송 등을 포함하는 임의의 적절한 수단을 사용하여 전송, 포워딩 또는 송신될 수 있다.
소프트웨어 구현의 경우, 여기 제시되는 기술들은 여기 제시되는 기능들을 수행하는 모듈들(예를 들어, 프로시져들, 함수들 등)을 통해 구현될 수 있다. 소프트웨어 코드들은 메모리 유닛들에 저장되고 프로세서들에 의해 실행될 수 있다. 메모리 유닛은 프로세서 내부에 또는 프로세서 외부에서 구현될 수 있으며, 외부에 구현되는 경우 메모리는 공지된 다양한 수단을 통해 프로세서에 통신으로 커플링될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (9)

  1. 패킷 처리 시스템으로서,
    외부 네트워크로부터 패킷을 수신하기 위한 적어도 하나의 네트워크 인터페이스 카드(network interface card, NIC) ― 상기 수신된 패킷은 상기 NIC의 NIC 큐(queue)에 저장됨 ― ; 및
    패킷을 프로세싱하기 위한 복수의 패킷 처리 장치를 포함하고,
    상기 패킷을 수신한 NIC는 상기 복수의 패킷 처리 장치 중 하나의 패킷 처리 장치로 패킷 수신 신호를 통지하고,
    상기 패킷 처리 장치 각각은:
    상기 패킷 처리 시스템 내의 다른 패킷 처리 장치로부터 패킷이 할당되기 위한 복수의 대기 큐 ― 상기 복수의 대기 큐 각각은 상기 패킷 처리 시스템 내의 각각의 패킷 처리 장치를 지시하는 식별자를 가짐 ― ; 및
    상기 패킷 수신 신호에 응답하여, 상기 패킷 수신 신호를 통지한 NIC의 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는 경우, 상기 NIC 큐에 저장된 패킷을 상기 식별자에 따라 상기 다른 패킷 처리 장치의 복수의 대기 큐 중 하나의 대기 큐로 할당하기 위한 패킷 컨트롤러를 포함하는,
    패킷 처리 시스템.
  2. 제 1 항에 있어서,
    상기 할당은 상기 패킷이 저장된 NIC 큐의 주소를 전달함으로써 수행되는,
    패킷 처리 시스템.
  3. 제 1 항에 있어서,
    상기 하나의 대기 큐에 다른 패킷이 할당되어 있는 경우, 상기 패킷 컨트롤러는 상기 NIC 큐에 저장된 패킷을 상기 하나의 대기 큐에 할당하지 않는,
    패킷 처리 시스템.
  4. 제 1 항에 있어서,
    상기 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는지는 상기 NIC 큐에 저장된 패킷의 세션에 따라 결정되는,
    패킷 처리 시스템.
  5. 제 1 항에 있어서,
    상기 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는지는 상기 다른 패킷 처리 장치의 부하율에 따라 결정되는,
    패킷 처리 시스템.
  6. 제 1 항에 있어서,
    상기 NIC 큐에 저장된 패킷이 상기 패킷 처리 시스템 내의 다른 패킷 처리 장치에 의해 프로세싱되어야 하는지는 상기 NIC 큐에 저장된 패킷의 페이로드 중 적어도 일부의 해시값에 따라 결정되는,
    패킷 처리 시스템.
  7. 제 1 항에 있어서,
    상기 패킷 처리 장치 각각은:
    패킷을 프로세싱하기 위한 프로세서; 및
    상기 프로세서에 의해 프로세싱되는 패킷을 저장하기 위한 처리 큐를 더 포함하고,
    상기 프로세서는 상기 패킷 수신 신호를 통지한 NIC의 NIC 큐에 저장된 패킷 및 상기 처리 큐에 할당된 패킷 중 적어도 하나를 프로세싱하는,
    패킷 처리 시스템.
  8. 제 7 항에 있어서,
    상기 프로세서에 의해 상기 처리 큐에 할당된 패킷에 대한 프로세싱이 완료되면, 상기 복수의 대기 큐 중 하나의 대기 큐와 상기 처리 큐는 상호 교환되는,
    패킷 처리 시스템.
  9. 제 1 항에 있어서,
    상기 패킷 처리 장치 각각에 포함된 복수의 대기 큐의 개수는 (상기 복수의 패킷 처리 장치의 개수 - 1) 인,
    패킷 처리 시스템.
KR1020130021187A 2013-02-27 2013-02-27 패킷 처리 장치 및 방법 KR101448951B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130021187A KR101448951B1 (ko) 2013-02-27 2013-02-27 패킷 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130021187A KR101448951B1 (ko) 2013-02-27 2013-02-27 패킷 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140106912A KR20140106912A (ko) 2014-09-04
KR101448951B1 true KR101448951B1 (ko) 2014-10-13

Family

ID=51755016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130021187A KR101448951B1 (ko) 2013-02-27 2013-02-27 패킷 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101448951B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101639797B1 (ko) * 2015-10-16 2016-07-14 주식회사 구버넷 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
KR102112270B1 (ko) * 2018-10-19 2020-05-19 주식회사 구버넷 다중계층 네트워크 환경에서 패킷을 처리하는 방법 및 그 장치
US11797333B2 (en) * 2019-12-11 2023-10-24 Intel Corporation Efficient receive interrupt signaling

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100287910B1 (ko) 1998-12-30 2001-06-01 서평원 스위칭 장치의 보드간 통신방법
KR20050012220A (ko) * 2001-10-22 2005-01-31 선 마이크로시스템즈, 인코포레이티드 2단계 해시 매칭 프로세스를 사용하는 패킷 분류기를 위한방법 및 장치
US20080002730A1 (en) 2006-06-30 2008-01-03 Sun Microsystems, Inc. Serialization queue framework for transmitting packets

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100287910B1 (ko) 1998-12-30 2001-06-01 서평원 스위칭 장치의 보드간 통신방법
KR20050012220A (ko) * 2001-10-22 2005-01-31 선 마이크로시스템즈, 인코포레이티드 2단계 해시 매칭 프로세스를 사용하는 패킷 분류기를 위한방법 및 장치
US20080002730A1 (en) 2006-06-30 2008-01-03 Sun Microsystems, Inc. Serialization queue framework for transmitting packets

Also Published As

Publication number Publication date
KR20140106912A (ko) 2014-09-04

Similar Documents

Publication Publication Date Title
US10623309B1 (en) Rule processing of packets
US9019978B2 (en) Port mirroring at a network interface device
US8036127B2 (en) Notifying network applications of receive overflow conditions
US9253156B2 (en) Dynamically defining network access rules
US11477125B2 (en) Overload protection engine
US8625448B2 (en) Method and system for validating network traffic classification in a blade server
JP7334396B2 (ja) 動的仮想システム・オン・チップのための方法および装置
US10027687B2 (en) Security level and status exchange between TCP/UDP client(s) and server(s) for secure transactions
WO2014077904A1 (en) Policy enforcement in computing environment
US20190042314A1 (en) Resource allocation
US10348683B2 (en) Network packet filtering via media access control (MAC) address learning
JP7270036B2 (ja) ネットワークノードでのロックなし通信処理のための方法、システム、およびコンピュータ読取可能媒体
CN110545541A (zh) 防御攻击行为的方法、装置、设备、终端和介质
WO2015036860A2 (en) Line-rate packet filtering technique for general purpose operating systems
CN111371694B (zh) 一种分流方法、装置和系统、处理设备和存储介质
US20120198542A1 (en) Shared Security Device
KR101448951B1 (ko) 패킷 처리 장치 및 방법
CN114666276A (zh) 一种发送报文的方法和装置
US11875839B2 (en) Flow based rate limit
CN109327400B (zh) 一种数据通信方法及数据通信网络
CN108881060A (zh) 一种处理通信报文的方法及装置
US20080002586A1 (en) End-point based tamper resistant congestion management
US11271897B2 (en) Electronic apparatus for providing fast packet forwarding with reference to additional network address translation table
KR20130093843A (ko) 다중 프로세서 기반의 패킷 처리 장치 및 그 방법
CN104811391B (zh) 数据包的处理方法、装置及服务器

Legal Events

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

Payment date: 20170927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 6