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

패킷 처리 장치 및 패킷 처리 방법 Download PDF

Info

Publication number
KR20140092439A
KR20140092439A KR1020120155002A KR20120155002A KR20140092439A KR 20140092439 A KR20140092439 A KR 20140092439A KR 1020120155002 A KR1020120155002 A KR 1020120155002A KR 20120155002 A KR20120155002 A KR 20120155002A KR 20140092439 A KR20140092439 A KR 20140092439A
Authority
KR
South Korea
Prior art keywords
packet
engine
transmitted
packets
processing
Prior art date
Application number
KR1020120155002A
Other languages
English (en)
Other versions
KR101463783B1 (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 KR1020120155002A priority Critical patent/KR101463783B1/ko
Publication of KR20140092439A publication Critical patent/KR20140092439A/ko
Application granted granted Critical
Publication of KR101463783B1 publication Critical patent/KR101463783B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본발명은, 멀티 프로세서 시스템에서 동일한 세션에 의한 패킷을 처리하는 방법 및 장치에 관한 것으로서, 상기 멀티 프로세서 시스템은 동일한 세션에 의한 패킷을 수신하여 분배하는 패킷 분배 엔진, 분배된 패킷을 처리하는 패킷 처리 엔진 및 상기 처리된 패킷을 상기 멀티 프로세서 시스템에 연결된 디바이스로 전송하는 패킷 송신 엔진을 포함하고, 상기 패킷 처리 엔진에 의해 처리된 패킷이 상기 패킷 송신 엔진으로 전달되며, 상기 패킷 송신 엔진은 상기 전달된 패킷이 상기 디바이스로 기 전송된 패킷과 연속적인 지에 따라 상기 전달된 패킷을 상기 디바이스로 전송하거나 상기 멀티 프로세서 시스템 내의 메모리에 저장하도록 함으로써 멀티 프로세서 시스템에서의 단일 세션의 패킷 처리 효율을 증가시킬 수 있다.

Description

패킷 처리 장치 및 패킷 처리 방법 {PACKET PROCESSING DEVICE AND METHOD THEREOF}
본 발명은 패킷 처리 장치 및 방법에 관한 것으로서, 멀티 프로세서 시스템에서 단일 세션의 패킷들이 하나의 프로세서로 집중되는 것을 방지하여 프로세서의 성능을 최대화할 수 있는 패킷 처리 장치 등에 관한 것이다.
근래 멀티 프로세서 시스템이 일반화됨에 따라 네트워크 인터페이스 카드(Network Interface Card 또는 Network Interface Controller)에서 멀티 프로세서 시스템을 지원하기 위한 기능이 일반화되고 있다.
RSS(Receive Side Scaling)는 네트워크 인터페이스 카드에서 패킷을 수신할 때 가능한 컴퓨터 프로세서의 개수만큼 패킷을 분류하여 해당 버퍼에 전달하는 기술이다. 10 Gbps 이상의 고속 패킷 처리를 실시간으로 수행하는데 멀티 프로세서 및 이를 이용한 RSS 기술은 필수적이다.
한편, RSS 는, 멀티 프로세서 시스템을 활용하기 위해 유용한 기술이지만 패킷을 세션을 기반으로 프로세서에 분배하기 때문에 네트워크를 통하여 단일 세션의 패킷만이 유입되는 경우에는 멀티 프로세서 중 하나의 프로세서로만 패킷이 몰리게 되어 멀티 프로세서 전체 성능에 비해 패킷 처리 능력이 떨어지게 된다. 이러한 현상은, 프로세서의 수가 많을수록 성능 저하가 심해진다.
도 1은 멀티 프로세서 시스템에서의 패킷 처리 흐름을 나타낸 도이다. 도 1을 참조하면, n 개의 프로세서로 동작하는 멀티 프로세서 시스템(20)으로 패킷이 유입되고 있고, 각 프로세서(P0, P1, P2, … Pn-1) 는 패킷 수신, 프로세싱 및 송신을 해당 프로세서 내에서 처리하고 있다. 또한, 각 프로세서(P0, P1, P2, … Pn-1)는 패킷의 수신, 프로세싱 및 송신을 자체적으로 처리하기 위한 기능을 수행하는 논리적인 모듈들(Rx0, Rx1, Rx2, … Rxn-1, Processing0, Processing1, Processing2, … Processing n-1, Tx0, Tx1, Tx2, … Txn-1)을 구비할 수 있다. 예컨대, 프로세서(P0) 는 패킷 수신 모듈(Rx0), 패킷 프로세싱 모듈(Processing0) 및 패킷 송신 모듈(Tx0) 를 구비할 수 있다.
도 1의 멀티 프로세서 시스템(20)은 패킷의 처리를 담당하는 호스트일 수 있고, 하드웨어(10, 11)는 네트워크 인터페이스 카드(Network Interface Card) 와 같은 네트워크 디바이스일 수 있다. 한편, 패킷을 전달하는 네트워크 인터페이스 카드(10)가 단일 세션에 대한 패킷을 단일의 프로세서로 내보내는 처리를 하는 경우에는, 예컨대, 프로세서(P0)로만 패킷이 유입되어 프로세서(P0)만이 동작할 수 있고, 다른 프로세서들(P1, P2, … Pn-1)은 아이들(idle) 상태가 된다. 즉, n 개의 멀티 프로세서 시스템의 전체 성능을 충분히 활용하지 못하게 된다.
최근 출시된 샌디브리지 제온 프로세서의 경우 프로세서 하나에 코어가 8개이고, 2개의 프로세서를 사용할 경우 전체 코어는 16개가 된다. 또한 각 코어는 하이프스레드(Hyper-Thread)를 지원하기 때문에 물리적으로는 16개의 코어를 가지지만 소프트웨어에서는 32개의 코어를 가지는 것처럼 보일 수 있다. 이 때 단일 세션의 트래픽이 몰리게 될 경우 32개의 코어 중 1개의 코어만 사용하기 때문에 CPU의 프로세싱 능력을 최대한으로 요구하는 네트워크 보안장비의 경우 CPU 자원의 여유가 충분함에도 불구하고 단일 세션 트래픽에서의 성능은 1/32 만큼 떨어질 수 밖에 없다. 즉, 패킷 처리 성능을 향상시키기 위한 멀티 프로세서 시스템에서 단일 세션의 패킷이 유입되는 경우에는 오히려 그 성능이 떨어지는 경우가 생기게 된다.
본 발명은 상술한 문제점을 해결하기 위하여 단일 세션의 패킷이 유입되는 경우에 패킷을 처리하는 네트워크 보안 장비 내에서 소프트웨어적인 방법에 의해 패킷을 멀티 프로세서로 분산하도록 한다.
본 발명은 멀티 프로세서 시스템에서 패킷 수신 코어가 패킷을 수신한 순서에 따라 패킷 송신 코어가 패킷을 송신하도록 함으로써 패킷의 처리의 정확도도 향상시키도록 한다.
본발명의 일 실시예에 따른 멀티 프로세서 시스템에서 동일한 세션에 의한 패킷을 처리하는 방법은, 상기 멀티 프로세서 시스템은 동일한 세션에 의한 패킷을 수신하여 분배하는 패킷 분배 엔진, 분배된 패킷을 처리하는 패킷 처리 엔진 및 상기 처리된 패킷을 상기 멀티 프로세서 시스템에 연결된 디바이스로 전송하는 패킷 송신 엔진을 포함하고, 상기 패킷 처리 엔진에 의해 처리된 패킷이 상기 패킷 송신 엔진으로 전달되는 단계; 상기 패킷 송신 엔진은 상기 전달된 패킷이 상기 디바이스로 기 전송된 패킷과 연속적인 지를 판단하는 단계; 및 상기 전달된 패킷의 연속 여부에 따라 상기 전달된 패킷을 상기 디바이스로 전송하거나 상기 멀티 프로세서 시스템 내의 메모리에 저장하는 단계를 포함한다.
본발명의 일 실시예에 따른 멀티 프로세서 시스템에서 동일한 세션에 의한 패킷을 처리하는 장치는, 상기 멀티 프로세서 시스템은 동일한 세션에 의한 패킷을 수신하여 분배하는 패킷 분배 엔진, 분배된 패킷을 처리하는 패킷 처리 엔진, 상기 처리된 패킷을 상기 멀티 프로세서 시스템에 연결된 디바이스로 전송하는 패킷 송신 엔진 및 상기 디바이스로 전송되기 전 패킷을 임시적으로 저장하는 메모리를 포함하고, 상기 패킷 처리 엔진은 처리된 패킷이 상기 패킷 송신 엔진으로 전달하고, 상기 패킷 송신 엔진은 상기 전달된 패킷이 상기 디바이스로 기 전송된 패킷과 연속적인 지를 판단하여 상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 연속적인 경우에는 상기 디바이스로 상기 전달된 패킷을 전송하고, 상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 불연속적인 경우에는 상기 메모리에 상기 전달된 패킷을 저장한다.
본발명에 따르면 단일 세션의 패킷이 멀티 프로세서 시스템에 유입되더라도 패킷 처리의 성능이 떨어지지 않도록 한다.
본 발명에 따르면 패킷의 수신 순서를 고려하여 패킷을 다시 송신하도록 함으로써 패킷의 처리 정확성도 보장하도록 한다.
도 1은 멀티 프로세서 시스템에서의 패킷 처리 흐름을 나타낸 도이다.
도 2는 본발명의 일 실시예에 따른 멀티 프로세서 시스템에서 패킷 처리 시의 데이터 처리를 도식화한 도이다.
도 3a 내지 도 3f 는 본 발명의 일 실시예에 따른 패킷 처리 방법에 있어서 프로세서 및 메모리 간 데이터 처리를 구체적으로 도식화한 도이다.
도 4는 본발명의 일 실시예에 따른 패킷 처리 방법에 대한 순서도를 나타낸다.
도 5는 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다.
도 6은 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다.
도 7은 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
한편, 본 발명의 일 실시예에 따른 패킷 처리 장치는 네트워크 인터페이스 카드로부터 데이터를 수신하는 호스트, 호스트 내에 구비되어 패킷을 처리할 수 있는 구성요소의 집합 또는 임의의 장치일 수 있고, 본 발명의 청구범위에서 명시하는 패킷 처리 장치가 구현하는 동작을 모두 수행하는 장치 및 그 장치를 포함하는 디바이스에 대해서도 본 발명이 적용될 수 있다.
도 2는 본발명의 일 실시예에 따른 멀티 프로세서 시스템에서 패킷 처리 시의 데이터 처리를 도식화한 도이다. 도 2를 참조하면 본 발명의 일 실시예에 따른 패킷 처리 장치(20)에 패킷이 유입되고 있다. 패킷 처리 장치(20)는, 네트워크 인터페이스 카드(미도시)로부터 패킷을 수신하여 관련하는 처리를 수행하는 호스트일 수 있고, 패킷 분배 엔진(101), 패킷 처리 엔진(102), 패킷 송신 엔진(103) 및 메모리(200)를 포함하는 임의의 장치일 수 있다. 패킷 분배 엔진(101), 패킷 처리 엔진(102) 및 패킷 송신 엔진(103)는 멀티 프로세서 시스템을 구성하는 복수의 프로세서들 중 일부 프로세서로서 물리적으로 독립된 프로세서일 수 있으나 하나의 프로세서 내에 논리적으로 분리된 가상의 프로세서 또는 코어로 구성될 수 있다. 본명세서에서는 멀티 프로세서를 구성하는 프로세서 및 프로세서에서 논리적으로 구비되는 코어를 모두 프로세서로 명명하여 설명한다.
패킷 분배 엔진(101)는 적어도 하나의 프로세서(P0)를 포함하고, 패킷 처리 엔진(102)는 복수의 프로세서(P2, P3, P4, …)를 포함하며, 패킷 송신 엔진(103)은 프로세서(P1)를 포함할 수 있다. 즉, 본 발명에서는 입력된 패킷을 곧바로 프로세서들에게 일괄적으로 분배하여 처리하게 하지 않고, 1차적으로는 패킷 분배 엔진(101)을 구성하는 프로세서들(P0)로 분배하고, 2차적으로 패킷 처리 엔진(102)의 프로세서들(P2, P3,…)에 전달하며, 3차적으로 패킷 송신 엔진(103)에 의하여 패킷 처리 엔진(102)으로부터 전달되는 패킷들을 순서에 맞추어서 임의의 디바이스(미도시)로 송신하는 것과 같이 패킷의 전달 경로를 단계적으로 설정할 수 있다. 즉, 본발명에서는, 하나의 세션에 의한 패킷들이더라도 패킷 분배 엔진(101)으로부터 다수의 프로세서를 포함하는 패킷 처리 엔진(102)으로 패킷들이 분배되어 하나의 세션에 의한 패킷이더라도 신속하게 처리할 수 있다. 또한, 패킷 송신 엔진(103)을 구비함으로써, 하나의 세션에 의한 패킷들이 패킷 처리 엔진(102)의 복수 프로세서들에 의해 동시다발적으로 처리되더라도 패킷 분배 엔진(101)에서 패킷이 수신된 순서를 기반으로 송신되도록 패킷 송신 처리가 원활하게 수행되도록 한다.
패킷 분배 엔진(101)은 동일한 세션에 의한 패킷을 수신하여 패킷 처리 엔진(102)으로 분배할 수 있다. 종래 멀티 프로세서에서는 프로세서들 모두가 패킷을 수신, 처리하는 것과 달리 본 발명에서는 패킷 분배 엔진(101)만이 패킷을 수신할 수 있다. 이 경우 패킷 분배 엔진(101)에 포함된 프로세서(P0)는 패킷을 수신하면서 그 수신된 순서, 즉 수신 정보를 패킷에 기록할 수 있다. 패킷에 기록된 패킷의 수신 정보에 따라 차후에 패킷이 송신됨으로써, 복수의 패킷 처리 엔진(102)에 의해 하나의 세션에 의한 패킷들이 임의 순서로 처리되어 패킷 순서가 복잡해지더라도 패킷 송신 엔진(103))에서 이를 보완할 수 있다. 도 2에서는 패킷 분배 엔진(101)의 프로세서가 1개로 예시되지만 실시예에 따라 복수일 수 있다.
패킷 분배 엔진(101)으로 유입된 패킷은 소정 알고리즘에 따라 전달 경로가 결정될 수 있다. 예컨대, 도 2에서 프로세서(P0)에 패킷이 수신되는 경우, 패킷 처리 엔진(102) 내 프로세서들(P2, P3,…) 중 하나로 패킷이 전달될 수 있고 그 경로는 알고리즘에 따라 달라질 수 있다. 패킷 분배 엔진(101)으로부터 패킷 처리 엔진(102) 간의 패킷 분배 방법에 대해서는 도 5 이하에서 구체적으로 설명한다.
패킷 처리 엔진(102)는 적어도 하나의 프로세서들(P2, P3,…)을 구비하고 패킷 분배 엔진(101)으로부터 수신되는 패킷에 대하여 암호화/복호화 처리 및 보안 처리와 같은 다양한 패킷 처리를 수행할 수 있다. 패킷 처리 엔진(102) 내 프로세서들(P2, P3,…) 의 패킷 처리 속도는 프로세서들마다 상이하기 때문에 패킷 송신 엔진(103)으로 전달되는 패킷들의 순서는, 패킷들이 패킷 분배 엔진(101)으로 수신되는 순서와 달라질 수 있다. 이를 위해 패킷 송신 엔진(103)은 그 순서를 고려하여 패킷을 디바이스(미도시)로 전송할 수 있다.
도 2를 참조하면, 패킷 송신 엔진(103)으로부터 디바이스(미도시)로 패킷이 전달되기 전에 메모리(200)에 임시로 저장될 수 있다. 패킷 송신 엔진(103)에서는 패킷 처리 엔진(102)로부터 전달되는 패킷에 기록된 수신 정보를 기반으로 패킷을 송신하게 되는데, 기 전송된 패킷에 연속적인 패킷이 아닌 경우에는, 연속적인 패킷을 먼저 송신하고 해당 패킷의 순서에 따라 패킷을 송신할 필요가 있다. 이 경우 본 발명에 따른 멀티 프로세서 시스템에서는 메모리(200)를 구비하여 기 전송된 패킷과 불연속적인 패킷을 임시적으로 저장하도록 한다. 즉, 패킷 송신 엔진(103)은 전달된 패킷이 디바이스에 기 전송된 패킷과 연속적인 지를 판단하여 곧바로 송신할 것인지 또는 메모리(200)에 일시적으로 저장할 것인지를 판단한다. 이하에서는 본발명의 일 실시예에 따라 패킷 송신 엔진(103)이 패킷 처리 엔진(102)으로부터 전달되는 패킷을 송신, 메모리(200)에 일시적으로 저장하는 동작에 대해 구체적으로 설명한다.
도 3a 내지 도 3f 는 본 발명의 일 실시예에 따른 패킷 처리 방법에 있어서 프로세서 및 메모리 간 데이터 처리를 구체적으로 도식화한 도이다.
도 3a를 참조하면, 패킷 처리 엔진(102)에서 처리된 패킷0 이 패킷 송신 엔진(103)으로 전달된다. 패킷0 에는 그 패킷 수신 정보가 도 2의 패킷 분배 엔진(101)에 의해 기록되어 있을 수 있다. 패킷 송신 엔진(103)은 패킷0 이 디바이스(11)에 최근에 전송된 패킷으로부터 연속적인 경우 패킷0 을 디바이스(11)로 전송한다. 디바이스(11)는 본발명의 패킷 처리 장치와 연결되거나, 또는 본발명의 멀티 프로세서 시스템과 연결되는 임의의 네트워크 디바이스로서 네트워크 인터페이스 카드 등으로 예시될 수 있다.
도 3b 에서 패킷1 이 패킷 처리 엔진(102)으로부터 패킷 송신 엔진(103)으로 전달된다. 패킷1 은 기 전송된 패킷0의 다음 패킷일 수 있다. 즉, 패킷1은 패킷0으로부터 연속적인 패킷이기 때문에 패킷 송신 엔진(103)은 연속하여 패킷1 을 디바이스(11)로 전송할 수 있다. 즉, 본발명에서는 패킷(p0, p1,…) 이 복수의 프로세서(P2,…)에서 처리되더라도 패킷 송신 엔진(103)에서 그 처리 순서를 고려하여 디바이스(11)로 전송되도록 한다.
도 3c에서 패킷3이 패킷 처리 엔진(102)으로부터 패킷 송신 엔진(103)에 전달된다. 패킷3은 이전에 송신된 패킷1과 연속적이지 아니한, 즉 불연속적인 패킷이다. 패킷2가 패킷 처리 엔진(102)에서 처리 완료되기 전에 다른 패킷인 패킷3이 먼저 처리되어 패킷 송신 엔진(103)으로 전달된 경우이다. 패킷 송신 엔진(103)은 패킷3 이 기 전송된 패킷1과 연속적이지 않은 것으로 판단하고 패킷3을 메모리(200)에 임시적으로 저장할 수 있다. 패킷1과 연속적인 패킷2를 먼저 전송해야 하기 때문이다.
도 3d에서, 패킷4가 패킷 송신 엔진(103)으로 전달되고, 패킷4 역시 기 전송된 패킷1로부터 연속적이지 않기 때문에 메모리(200)에 저장될 수 있다. 이에 따라 기 전송된 패킷1로부터 연속적인 패킷, 즉, 패킷2가 전달되지 않더라도 다른 패킷들(패킷3, 패킷4)이 메모리(200)에 일시적으로 저장되어 패킷2가 패킷 송신 엔진(103)에 전달, 송신될 때까지 대기할 수 있다.
도 3e에서 패킷2가 패킷 송신 엔진(103)으로 전달되고, 패킷 송신 엔진(103)은 패킷2가 패킷 1로부터 연속적인 것으로 판단하여 디바이스(11)로 곧바로 전송할 수 있다. 이에 따라 본발명의 최근에 디바이스(11)로 전송된 패킷, 즉, 기 전송된 패킷은 패킷2가 된다.
도 3f에서, 패킷 송신 엔진(103)은 메모리(200)에 저장된 패킷들(패킷3, 패킷4)를 디바이스(11)로 전송한다. 즉, 패킷2가 전송이 된 후에야 메모리(200)에 임시로 저장한 패킷들을 디바이스로 전송하도록 함으로써 패킷 처리 순서의 정확도를 보장할 수 있다. 이 때 패킷 송신 엔진(103)은 기 전송된 패킷2와, 메모리에 저장될 패킷3,4 가 연속적인 지를 더 판단할 필요가 있다. 예컨대, 패킷0, 1, 2 가 전송이 되더라도, 메모리에 저장된 패킷이 패킷 6,7 인 경우에는 그 중간의 패킷 3,4,5 가 아직 패킷 송신 엔진에 전달되지 아니한 경우이기 때문이다. 즉, 패킷 송신 엔진(103)에서는 패킷을 전달받을 때마다, 또한, 패킷을 디바이스(11)로 송신할 때마다 기 전송된 패킷의 정보를 임시로 저장하고, 메모리(200)에 저장된 패킷들이 있는지, 있다면 그 패킷들이 기 전송된 패킷과 연속적인 지를 판단하여 메모리(200) 내 패킷을 디바이스(11)로 전송함으로써 패킷의 처리 순서를 유지할 수 있다.
한편, 도 3a 내지 도 3f 에서는 패킷들이 순서가 연속적이지 않은 상태로 패킷 송신 엔진(103)으로 들어오고 있지만, 패킷의 누락은 생기지 않는다. 만일 패킷2를 대기하기 위해 다른 패킷들(패킷3, 패킷4)을 메모리(200)에 저장하고 있더라고, 패킷2가 끝끝내 패킷 송신 엔진(102)에 전달되지 아니할 수 있다. 즉, 패킷의 누락이 생길 수 있다. 이러한 경우에도 패킷 송신 엔진(102)이 패킷2를 기다리기 위해 패킷3,4 및 이후의 패킷들을 메모리(200)에 지속적으로 저장한다면 메모리(200)의 용량이 초과되거나 패킷 처리의 효율성에 오히려 장애가 초래될 수 있다. 이러한 경우를 대비하여, 본발명에서는, 소정 타임아웃을 가진 타이머(미도시)를 구비하고 패킷2가 소정 타임아웃 동안에도 수신되지 아니한 경우에는 메모리(200)에 저장된 패킷3,4 라도 미리 송신하도록 함으로써 패킷의 적체 및 메모리(200)의 과부하를 방지할 수 있다. 메모리(200)로부터 패킷3,4가 모두 송신된 경우에는 타이머를 다시 초기화할 수 있다.
타이머의 초기화는 메모리(200)에 저장된 패킷들을 모두 내보낼 때 수행될 수 있지만, 메모리(200)에 패킷들이 저장되어 있지 않더라도 기 설정된 타임아웃 이벤트가 발생된 경우에는 주기적으로 초기화될 수 있다.
타이머의 타임아웃은 멀티 프로세서 시스템의 처리 속도 및 처리 정확성을 기반으로 설정 및 변경될 수 있다. 예컨대, 패킷 처리의 속도가 우선시되는 시스템의 경우에는 타임아웃을 적게 설정할 수 있고, 패킷 처리의 정확도가 우선시되는 경우에는 타임아웃을 크게 설정할 수 있기 때문이다.
도 4는 본발명의 일 실시예에 따른 패킷 처리 방법에 대한 순서도를 나타낸다. 도 4에서 예시되는 동작들은 본발명의 패킷 처리 방법이 실행되는 패킷 처리 장치에서 수행되는 동작들일 수 있다.
단계(S11)에서, 패킷 처리 엔진에 의해 처리된 패킷이 패킷 송신 엔진으로 전달된다.
단계(S12)에서, 패킷 송신 엔진은 전달된 패킷이 멀티 프로세서 시스템에 연결된 디바이스, 예컨대 네트워크 장치로 기 전송된 패킷과 연속적인 지를 판단한다. 기 전송된 패킷과 연속적인 지 여부는, 패킷 분배 엔진에서 기록한 패킷의 순서 정보를 기초로 판단될 수 있다. 패킷 분배 엔진은 동일 세션에 의한 패킷이 수신될 때마다 패킷의 헤더에 패킷 순서를 기록할 수 있다. 이로 인하여 패킷 처리 엔진을 구성하는 다수의 프로세서에 의해 패킷이 동시다발적으로 처리되더라도 패킷 송신 엔진이 패킷의 원래 순서에 따라 패킷을 송신하도록 한다.
단계(S13)에서, 패킷 송신 엔진으로 전달된 패킷이 기 전송된 패킷과 연속적인 경우에는 디바이스로 해당 패킷을 송신한다.
단계(S14)에서, 패킷을 저장한 후, 또는 패킷을 다른 디바이스로 전송(S13)한 후에, 패킷 송신 엔진은, 단계(S15)에서 메모리에 저장된 적어도 하나의 패킷이 기 전송된 패킷과 연속적인 지를 판단한다. 즉, 연속적인 패킷을 기다리기 위해 메모리에 임시로 저장해 놓았던 패킷들을 송신하기 위함이다.
단계(S15)에서, 메모리에 저장된 적어도 하나의 패킷이 기 전송된 패킷과 연속적인 경우에는, 상기 저장된 적어도 하나의 패킷을 디바이스에 전송한다.
한편, 단계(S16)에서, 메모리에 저장된 적어도 하나의 패킷이 기 전송된 패킷과 연속적이지 않은 경우에는 새롭게 전달된 패킷을 대기한다(S11). 또한, 메모리에 패킷이 전혀 저장되어 있지 아니한 경우에도 단계(S11)로 돌아와 패킷을 대기한다. 한편, 새로운 패킷을 전달받기에 앞서서, 또는 동시에, 타이머의 타임아웃 여부를 체크할 수 있다(S18). 타임아웃 이벤트가 발생한 경우에는 메모리 내 패킷들을 모두 디바이스로 전송할 수 있다. 이로써 메모리의 과부하를 방지하고 패킷 처리의 신속성을 보장할 수 있다. 타임아웃 이벤트가 발생하지 아니한 경우에는 다른 패킷의 전달을 대기한다(S11). 한편, 다른 패킷의 전달을 대기하는 경우라도 소정 타임아웃 동안에 패킷이 전달되지 아니한 경우에는 지속적으로 메모리를 비우고(S17), 타이머를 초기화(S17)함으로써 멀티 프로세서 시스템을 리프레쉬할 수 있다. 예컨대, 본발명에서는 동일한 세션에 의한 패킷을 효율적으로 처리하기 위한 것이지만, 해당하는 동일한 세션의 패킷 수신이 완료된 경우에는 다른 세션의 패킷들이 송수신될 것이기 때문이다. 본발명에서는 기 설정한 타임아웃에 따라 패킷의 수신 상태를 체크하고 지속적으로 메모리 및 프로세서들(패킷 분배 엔진, 패킷 처리 엔진 및 패킷 송신 엔진)을 리프레쉬할 수 있다.
단계(S17)에서, 메모리에 저장된 패킷들을 모두 송신한 후 타이머를 초기화한다. 타이머는, 메모리에 저장된 적어도 하나의 패킷이 기전송된 패킷과 불연속적이거나(S15), 패킷 송신 엔진에 전달된 패킷들이 모두 기 전송된 패킷과 불연속이어서 이들을 메모리에 저장한 후(S14) 에도, 타임아웃 이벤트에 따라 메모리 내 저장된 모든 패킷을 전송하고, 타이머를 초기화함으로써 시스템을 리프레쉬한다.
도 5는 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다. 도 5를 참조하면, 본발명의 일 실시예에 따라 패킷 분배 엔진(101)으로부터 패킷이 라운드 로빈(Round-Robin) 방식으로 패킷 처리 엔진(102)으로 분배되고 있다. 분배되는 패킷들은 동일한 세션에 의한 패킷들이지만, 그 처리 속도를 증가시키기 위하여 복수의 프로세서들(P2, P3, P4, …)에 의해 분배되어 처리될 수 있다. 도 5에서는, 프로세서(P2, P3, P4, …)를 돌아가면서 패킷이 1,2,3,4 와 같은 순서대로 하나씩 분산되는 방법이다. 라운드 로빈 방식은, 단일 세션에서도 모든 코어를 균일하게 사용할 수 있는 가장 간단한 방법일 수 있다. 원래는, 단일 세션의 모든 패킷이 전체 프로세서(P2, P3, P4,…)로 분산되면서 프로세서의 패킷 처리 속도에 따라서 패킷의 순서가 뒤바뀔 수 있는 가능성이 있지만, 본발명에서는 패킷 송신 엔진이 이를 보완함으로써, 패킷의 순서가 뒤바뀌는 문제가 보정될 수 있다.
도 6은 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다. 도 6을 참조하면, 본발명의 일 실시예에 따라 패킷 분배 엔진(101)으로부터 패킷이 벌크 라운드 로빈(Bulk Round-Robin) 방식으로 패킷 처리 엔진(102)으로 분배되고 있다. 벌크 라운드 로빈 방식은 정해진 일정 개수의 패킷, 예컨대 4개 단위로 각 프로세서에 패킷들의 집합이 순서대로 분산되는 방법이다. 라운드 로빈 방식과 유사하지만, 적어도 한 번에 전달되는 패킷들, 예컨대, (1,2,3,4), (5,6,7,8), (9,10, 11, 12) 및 (13, 14, 15, 16) 에서 한번에 전달되는 패킷들 사이의 순서는 유지될 수 있다. 또한, 멀티 프로세서의 시스템에서 캐시 동작의 특성 상, 동일한 프로세서에서 처리를 반복하면 캐시의 효율이 높아지게 되는데, 단위 패킷 개수 4만큼은 동일한 프로세서에서 처리되기 때문에 라운드 로빈 방식에 비해서 캐시 효율이 높아질 수 있다. 도 6에서는 한꺼번에 처리되는 단위 패킷의 개수가 4 이지만, 코어의 패킷 처리 능력을 감안하여 그 수가 결정될 수 있다. 코어의 패킷 처리 성능이 좋을수록 단위를 크게 설정할 수 있다.
한편, 라운드 로빈 방식의 변형예로서, 스티키 라운드 로빈(Sticky Round Robin) 방식으로 패킷이 분배될 수 있다. 이 방식은 기본적으로 하나의 프로세서로 모든 패킷을 전달하고, 해당 프로세서가 성능의 여유가 있어서 전달받는 모든 패킷을 처리할 수 있다면 하나의 프로세서만 사용될 수 있다. 만일 해당 프로세서가 전달받은 패킷을 더 이상 처리할 여유가 없는 경우가 생기는 경우 다른 프로세서로 패킷이 전달되도록 하여 패킷 처리의 부하를 감소시킬 수 있다. 이러한 방식은 적어도 프로세서의 처리 용량에 여유가 있는 경우에는, 패킷을 처리하는 프로세서가 바뀌지 않기 때문에 캐시의 효율이 높아지며, 패킷 순서의 유지도 어느정도 보장될 수 있다. 일반적인 네트워크 환경에서는 네트워크 트래픽이 많지 않기 때문에, 해당 방식에 의해 패킷 처리를 효과적으로 할 수 있다.
도 7은 본발명의 일 실시예에 따른 패킷 처리 방법에 있어서 패킷 분배의 일례를 나타낸다. 도 7을 참조하면, 본발명의 일 실시예에 따라 패킷 분배 엔진(101)으로부터 패킷이 하이퍼쓰레드 스티키 라운드로빈(Hyper Thread Aware Sticky Sticky Round Robin) 방식으로 패킷 처리 엔진(102)으로 분배되고 있다.
이 방식은 앞서 설명한 스티키 라운드 로빈 방식의 단점을 개선한 방식이다. 최신 아키텍처의 CPU의 경우 하이퍼쓰레드(Hyper-Thread)를 지원하는 시스템이 있고, 하나의 프로세서가 프로그램을 실행하는 실행 유닛 하나를 구비하면서, 레지스터 세트를 복수 개 구비할 수 있다. 이 기법은 하나의 코어를 좀 더 효율적으로 사용할 수 있는 기술이다.
물리적으로는 하나의 코어이지만, 논리적으로는 레지스터 세트의 개수만큼의 코어로 보이기 때문에, 운영체제에서는 시스템이 많은 수의 코어를 가진 것처럼 보일 수 있다. 일반적으로 사용되는 인텔 아키텍처의 경우 하나의 코어가 두 개의 논리적인 코어로 분리되기 때문에, 전체 코어 수는 두 배로 많아지게 된다. 이러한 경우 논리적으로는 코어가 두 배로 보이긴 하지만 두 코어는 물리적인 하나의 실행 유닛을 나누어 사용하기 때문에, 일정 부분 성능이 좋아지긴 하지만 그 성능이 논리적 코어 개수인 두 배만큼 향상되지는 않는다.
도 7을 참조하면, 물리적으로 2개의 프로세서(102, 104; 코어)를 구비하면서, 하이퍼쓰레드(Hyper Thread)를 이용하여 4개의 프로세서(P2, P3, P4, P5)로 인식되는 시스템에서, P2, P3 프로세서가 동일한 프로세서(102)를 공유하고, P4, P5 프로세서가 다른 하나의 물리적 프로세서(104)를 공유하고 있다. 패킷1이 P2로 분배된 후에는 이후의 패킷2는 패킷1과는 다른 물리적 프로세서(104)에 구비된 프로세서(P4)로 분배될 수 있다. 이후 다음 패킷3은 물리적 프로세서(102, 104) 모두 50%의 용량 점유율로 패킷이 처리되고 있으므로 휴지 상태인 프로세서(P3, P5) 중 임의의 프로세서로 분배될 수 있다. 마찬가지로, 다음 패킷4는 나머지 프로세서로 분배된다. 즉, 패킷이 1?2?3?4 의 순서로 분배되는 경우 동일한 물리적 프로세서가 연속적으로 선택되지 않도록, 휴지 상태인 프로세서로 분배되기 위하여 프로세서들(P2, P3, P4, P5) 각각에 패킷들이 1?3?2?4 의 순서로 분배될 수 있다. 즉, 패킷 분배 엔진(101)으로부터 패킷 처리 엔진(102, 104)으로 패킷이 분배되는 경우 하이퍼쓰레드의 특성을 고려하여 서로 다른 물리 코어가 먼저 선택되도록 하여 프로세서의 사용 효율을 높일 수 있다. 예컨대, 도 7의 시스템의 경우 유입되는 8개 패킷에 대한 프로세서들의 선택 순서는 1, 3, 5, 7, 2, 4, 6, 8 이 되도록 할 수 있다.
도 5 내지 도 7에서 사용되는 패킷 분배 방식 이외에도, 다양한 세션 기반의 패킷 분산 방식이 이용될 수 있으며, 본발명의 실시예에 따라 네트워크 트래픽과 시스템의 상태에 따라 여러가지 세션 기반의 분산 방법이 사용될 수 있다.
이상, 본발명의 일 실시예에 따른 패킷 처리 방법 등에 대해 설명하였다. 본발명의 패킷 처리 방법은, 전자적 기록 코드로 컴퓨터 판독 가능한 기록 매체에 기록될 수 있고, 해당하는 기록 매체의 로딩에 의해 임의의 디바이스 등에서 실행될 수 있다. 본발명은 해당 컴퓨터 판독 가능한 기록매체 및 본발명이 실행되는 임의의 디바이스에 대해서도 적용될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 설명하였다. 그러나, 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것으로, 본 발명의 범위가 상기의 실시예에 한정되는 것은 아니며, 여러 가지 다른 형태로 변형이 가능함은 물론이다.

Claims (12)

  1. 멀티 프로세서 시스템에서 동일한 세션에 의한 패킷을 처리하는 방법에 있어서,
    상기 멀티 프로세서 시스템은 동일한 세션에 의한 패킷을 수신하여 분배하는 패킷 분배 엔진, 분배된 패킷을 처리하는 패킷 처리 엔진 및 상기 처리된 패킷을 상기 멀티 프로세서 시스템에 연결된 디바이스로 전송하는 패킷 송신 엔진을 포함하고,
    상기 패킷 처리 엔진에 의해 처리된 패킷이 상기 패킷 송신 엔진으로 전달되는 단계;
    상기 패킷 송신 엔진은 상기 전달된 패킷이 상기 디바이스로 기 전송된 패킷과 연속적인 지를 판단하는 단계; 및
    상기 전달된 패킷의 연속 여부에 따라 상기 전달된 패킷을 상기 디바이스로 전송하거나 상기 멀티 프로세서 시스템 내의 메모리에 저장하는 단계를 포함하는 패킷 처리 방법.
  2. 제1항에 있어서,
    상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 연속적인 경우에는 상기 디바이스로 상기 전달된 패킷을 전송하고,
    상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 불연속적인 경우에는 상기 메모리에 상기 전달된 패킷을 저장하는 단계를 포함하는 패킷 처리 방법.
  3. 제1항에 있어서,
    상기 패킷 분배 엔진이 상기 수신한 패킷에 수신 정보를 기록하는 단계를 더 포함하는 패킷 처리 방법.
  4. 제3항에 있어서,
    상기 패킷 송신 엔진은 상기 수신 정보를 기반으로 상기 전달된 패킷이 상기 기 전송된 패킷과 연속적인 지를 판단하는 것을 더 포함하는 패킷 처리 방법.
  5. 제1항에 있어서,
    상기 메모리에 저장된 적어도 하나의 패킷이 상기 기 전송된 패킷과 연속적인 경우 상기 저장된 적어도 하나의 패킷을 상기 디바이스에 전송하는 단계를 더 포함하는 패킷 처리 방법.
  6. 제5항에 있어서,
    상기 멀티 프로세서 시스템은 소정 타임아웃을 가진 타이머를 더 포함하고,
    상기 저장된 적어도 하나의 패킷을 상기 디바이스로 전송한 후 상기 타이머를 초기화하는 단계를 더 포함하는 패킷 처리 방법.
  7. 제6항에 있어서,
    상기 메모리에 저장된 적어도 하나의 패킷 및 상기 패킷 송신 엔진에 전달된 패킷 모두 상기 기 전송된 패킷과 불연속인 경우, 상기 타이머의 타임아웃에 따라 상기 메모리 내 저장된 적어도 하나의 패킷을 모두 전송하고, 상기 타이머를 초기화하는 단계를 더 포함하는 패킷 처리 방법.
  8. 제6항에 있어서,
    상기 타이머의 타임아웃은 상기 멀티 프로세서 시스템의 처리 속도 및 처리 정확성을 기반으로 설정 및 변경되는 패킷 처리 방법.
  9. 제1항에 있어서,
    상기 패킷 분배 엔진은 상기 패킷 처리 엔진들에 대하여 수신된 패킷을 라운드 로빈(Round-Robin), 벌크 라운드 로빈(Bulk Round-Robin), 스티키 라운드 로빈(Sticky Round-Robin) 및 하이퍼쓰레드 스티키 라운드로빈(Hyper Thread Aware Sticky Sticky Round Robin)방식 중 적어도 하나의 방식으로 분배하는 패킷 처리 방법.
  10. 멀티 프로세서 시스템에서 동일한 세션에 의한 패킷을 처리하는 장치에 있어서,
    상기 멀티 프로세서 시스템은 동일한 세션에 의한 패킷을 수신하여 분배하는 패킷 분배 엔진, 분배된 패킷을 처리하는 패킷 처리 엔진, 상기 처리된 패킷을 상기 멀티 프로세서 시스템에 연결된 디바이스로 전송하는 패킷 송신 엔진 및 상기 디바이스로 전송되기 전 패킷을 임시적으로 저장하는 메모리를 포함하고,
    상기 패킷 처리 엔진은 처리된 패킷이 상기 패킷 송신 엔진으로 전달하고,
    상기 패킷 송신 엔진은 상기 전달된 패킷이 상기 디바이스로 기 전송된 패킷과 연속적인 지를 판단하여 상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 연속적인 경우에는 상기 디바이스로 상기 전달된 패킷을 전송하고, 상기 패킷 송신 엔진으로 전달된 패킷이 상기 기 전송된 패킷과 불연속적인 경우에는 상기 메모리에 상기 전달된 패킷을 저장하는 패킷 처리 장치.
  11. 제10항에 있어서,
    상기 패킷 분배 엔진은 상기 수신한 패킷에 수신 정보를 기록하고, 상기 패킷 송신 엔진은 상기 수신 정보를 기반으로 상기 전달된 패킷이 상기 기 전송된 패킷과 연속적인 지를 판단하는 것을 더 포함하는 패킷 처리 장치.
  12. 제10항에 있어서,
    소정 타임아웃을 가진 타이머를 더 포함하고,
    상기 패킷 송신 엔진은 상기 타임아웃에 따라 상기 메모리에 저장된 적어도 하나의 패킷을 모두 상기 디바이스에 전송하는 패킷 처리 장치.
KR1020120155002A 2012-12-27 2012-12-27 패킷 처리 장치 및 패킷 처리 방법 KR101463783B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120155002A KR101463783B1 (ko) 2012-12-27 2012-12-27 패킷 처리 장치 및 패킷 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120155002A KR101463783B1 (ko) 2012-12-27 2012-12-27 패킷 처리 장치 및 패킷 처리 방법

Publications (2)

Publication Number Publication Date
KR20140092439A true KR20140092439A (ko) 2014-07-24
KR101463783B1 KR101463783B1 (ko) 2014-11-28

Family

ID=51739075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120155002A KR101463783B1 (ko) 2012-12-27 2012-12-27 패킷 처리 장치 및 패킷 처리 방법

Country Status (1)

Country Link
KR (1) KR101463783B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220120939A (ko) * 2021-02-24 2022-08-31 주식회사 윈스 네트워크 장비에서의 패킷 프로세싱 방법, 장치 및 컴퓨터 프로그램

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210012305A (ko) 2019-07-24 2021-02-03 삼성전자주식회사 집적회로 장치, 시스템 온 칩 및 패킷 처리 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100899526B1 (ko) * 2007-09-07 2009-05-27 삼성네트웍스 주식회사 다중 프로세서 기반의 패킷 처리 장치 및 방법
JP4591789B2 (ja) * 2007-12-13 2010-12-01 Necエンジニアリング株式会社 パケット転送方法およびパケット転送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220120939A (ko) * 2021-02-24 2022-08-31 주식회사 윈스 네트워크 장비에서의 패킷 프로세싱 방법, 장치 및 컴퓨터 프로그램

Also Published As

Publication number Publication date
KR101463783B1 (ko) 2014-11-28

Similar Documents

Publication Publication Date Title
US9325637B2 (en) System for performing distributed data cut-through
CN113728315A (zh) 促进网络接口控制器(nic)中的有效消息匹配的系统和方法
US20050172091A1 (en) Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US9002969B2 (en) Distributed multimedia server system, multimedia information distribution method, and computer product
CN110602156A (zh) 一种负载均衡调度方法及装置
US20140086260A1 (en) Managing starvation and congestion in a two-dimensional network having flow control
WO2012143953A2 (en) Optimized multi-root input output virtualization aware switch
US9774651B2 (en) Method and apparatus for rapid data distribution
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
CN106101019A (zh) 一种基于中断绑定的多队列网卡性能调优方法
Rizzo Revisiting Network I/O APIs: The netmap Framework: It is possible to achieve huge performance improvements in the way packet processing is done on modern operating systems.
US20050044221A1 (en) Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors having multiple ports
KR101463783B1 (ko) 패킷 처리 장치 및 패킷 처리 방법
US20150254191A1 (en) Software Enabled Network Storage Accelerator (SENSA) - Embedded Buffer for Internal Data Transactions
CN101950279B (zh) 均衡数据信息流量的方法、总线系统和译码器
EP2929444B1 (en) Apparatus and circuit for processing data
US9270602B1 (en) Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions
US9137167B2 (en) Host ethernet adapter frame forwarding
CN109743350B (zh) 一种科学计算应用影像区交换通信模式的卸载实现方法
CN116471242A (zh) 基于rdma的发送端、接收端、数据传输系统及方法
US20230208776A1 (en) On chip router
KR102338872B1 (ko) 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
CN113572575A (zh) 一种自适应数据传输方法及系统
KR20210006127A (ko) 다중 프로세서 인터럽트 신호 처리 장치
US11750522B2 (en) System and method for reducing congestion in a network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191107

Year of fee payment: 6