KR101635732B1 - 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치 - Google Patents

네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR101635732B1
KR101635732B1 KR1020150185396A KR20150185396A KR101635732B1 KR 101635732 B1 KR101635732 B1 KR 101635732B1 KR 1020150185396 A KR1020150185396 A KR 1020150185396A KR 20150185396 A KR20150185396 A KR 20150185396A KR 101635732 B1 KR101635732 B1 KR 101635732B1
Authority
KR
South Korea
Prior art keywords
packet
core
session
fragmentation
fragmented
Prior art date
Application number
KR1020150185396A
Other languages
English (en)
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 KR1020150185396A priority Critical patent/KR101635732B1/ko
Application granted granted Critical
Publication of KR101635732B1 publication Critical patent/KR101635732B1/ko

Links

Images

Classifications

    • 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/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 멀티 코어를 구비하는 네트워크 장치에서 단편화 패킷 처리에 소요되는 프로세싱 자원 낭비를 최소화하고, 논-세션 코어가 세션 테이블에 억세스하기 위해 타 코어와 경쟁관계를 갖거나, 락(Lock)을 유발하는 것을 최소화하는 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치를 제안한다. 이를 위해 본 발명은 네트워크 장치에서 단편화 패킷을 처리하는 방법에 있어서, (a) 네트워크 장치가, 제1 단편화 패킷을 수신하는 단계 및 (b) 네트워크 장치에 포함되는 멀티 코어 중 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 할 때, 제2 단편화 패킷이 세션 코어를 제외한 나머지 논-세션 코어에 할당되는 경우, 네트워크 장치는, 제2 단편화 패킷이 제1 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)와 동일한 정보를 가지는 것으로 판단되면, 논-세션 코어에 할당된 제2 단편화 패킷을 세션 코어로 리-다이렉트(Re-direct)하는 단계를 포함한다.

Description

네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치{METHOD FOR PROCESSING FRAGMENT PACKETS AND NEWORK DEVICE USING THE SAME}
본 발명은 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치에 관한 것으로서, 더욱 상세하게는 멀티 코어를 구비하는 네트워크 장치에서, 단편화 패킷들 중 동일 군에 속하는 것들을 단일 코어에서 처리하도록 함으로써, 단편화 패킷의 재조립 과정에서 발생하는 시간 손실을 최소화하며, 각 코어가 단편화 패킷 처리를 위해 단편화 리스트에 억세스할 때 발생하는 레이스 컨디션 상태나 락(Lock)을 최소화함으로써, 네트워크 장치의 처리 성능을 극대화하는 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치에 관한 것이다.
통상적으로, 네트워크 장치에서 처리되는 패킷의 크기는 서로 상이하다. 네트워크 장치는 수신되는 패킷의 크기가 처리 가능한 크기보다 크면 둘 또는 그 이상의 단편화 패킷으로 분할하는데, 이때, 발생하는 패킷을 단편화 패킷(Fragment packet)이라 한다. 단편화 패킷은 다시 원래의 패킷으로 재조립되어야 한다.
라우터, 스위치, 허브 및 공유기와 같은 네트워크 장치들은 패킷 처리능력을 증대하기 위해 멀티 코어를 탑재하는 추세에 있고, 노드나 단말기 사이에 배치되는 네트워크 장치가 수신되는 패킷을 처리하여 다음 노드나 단말기로 전달할 때, 세션이 형성되는 코어와 그렇지 않은 코어에 단편화 패킷이 분배되어 처리될 수 있다. 이 경우, 단편화 패킷은 세션이 형성된 코어(이하, 세션 코어라 한다)에서 재조립되는 것이 바람직하며, 세션 코어를 제외한 나머지 코어(이하, 논-세션 코어라 한다)에서는 수신된 단편화 패킷을 세션 코어로 전달하여 최종적으로 세션 코어에서 단편화 패킷을 재조립하도록 하여야 한다.
여기서, 논-세션 코어로 유입된 단편화 패킷은 논-세션 코어의 출력단을 지나 세션 코어로 전달되고, 논-세션 코어는 세션 정보를 참조하여 어느 코어에서 단편화 패킷을 재조립해야 하는가를 판단해야 한다. 세션 정보는 통상 메모리(RAM : Random Access Memory)에 상주하므로, 각 코어(세선 코어 및 논-세션 코어)는 메모리에 억세스하여 세션 정보를 획득하고자 하며, 이때, 각 코어는 메모리 억세스를 위해 상호 경쟁상태일 수 있다. 이는 각 코어가 유입된 단편화 패킷 처리를 위해 경쟁한다는 것을 의미하며, 각 코어의 처리 속도를 저하시킬 우려가 있다. 또한, 하나의 메모리에는 두 개의 코어가 동시에 억세스할 수 없으므로, 하나의 코어가 메모리에 억세스 하였을 때, 다른 코어들은 메모리 억세스를 위해 대기하여야 하는데, 이러한 상태를 락(Lock)이라 한다. 락 상태에서 다수의 코어가 대기 상태를 갖는다는 것은 다수의 코어가 유휴 상태가 되어야 하며, 패킷 처리능력을 유효하게 이용하지 못한다는 것을 의미한다.
이러한 단편화 패킷 처리 문제에 대해, 공개특허 10-2009-0089690은 조각 패킷이 버퍼에 모두 수신되지 않는 경우, 수신된 조각 패킷을 폐기함으로써, 버퍼 낭비 및 프로세싱 부하 낭비를 방지하는 통신 시스템을 제안한 바 있고, 공개특허 10-2011-0060534는 단편화 패킷과 비 단편화 패킷에 대한 세션 상태정보를 독립적으로 관리함으로써, 단편화 패킷 처리 시, 세션 정보를 억세스하기 위한 프로세서들의 경쟁을 최소화하는 세션 관리방법을 제안한 바 있다.
그러나, 공개특허 10-2009-0089690은 동일한 식별자를 갖는 조각 패킷이 버퍼에 모두 수신되지 않을 경우, 발생하는 시간 손실과 버퍼 손실을 최소화하여 프로세서의 처리 성능을 유지하고자 하나, 버퍼링 시간에 따라서는 충분히 도착할 수 있는 조각 패킷을 사전에 폐기하고 재수신하는 것이 처리성능 극대화에 부합하는가에 대해서 의문이 있으며, 공개특허 10-2011-0060534는 단편화 패킷용 세션 정보와 비 단편화 패킷용 세션 정보를 별도로 생성하는 것을 주 요지로 하고 있으나, 수신되는 단편화 패킷의 량이 증가할 경우, 유효성이 떨어질 수 있다.
본 발명의 목적은, 멀티 코어로 유입된 단편화 패킷들을 세션 코어로 몰아주어 처리토록 함으로써, 논-세션 코어가 단편화 패킷 처리에 투입하는 시간을 최소화하는 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치를 제공함에 있다.
또한, 본 발명의 다른 목적은 네트워크 인터페이스부에서 세션 코어로 단편화 패킷들을 몰아주고, 논-세션 코어는 단편화 패킷 처리에 관여하지 않도록 함으로써, 논-세션 코어에 가해지는 불필요한 프로세싱 부하를 차단하는 단편화 패킷을 처리하는 방법 및 장치를 제공함에 있다.
본 발명의 일 태양에 따르면, 네트워크 장치에서 단편화 패킷을 처리하는 방법에 있어서, (a) 네트워크 장치가, 제1 단편화 패킷을 수신하는 단계 및 (b) 상기 네트워크 장치에 포함되는 멀티 코어 중 상기 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 할 때, 제2 단편화 패킷이 상기 세션 코어를 제외한 나머지 논-세션 코어에 할당되는 경우, 상기 네트워크 장치는, 상기 제2 단편화 패킷이 상기 제1 단편화 패킷의 4-tuple(프로토콜, 목적지 ip, 소스 ip, Ip id)와 동일한 정보를 가지는 것으로 판단되면, 상기 논-세션 코어에 할당된 상기 제2 단편화 패킷을 상기 세션 코어로 리-다이렉트(Re-direct)하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 네트워크 장치에서 단편화 패킷을 처리하는 방법에 있어서, (a) 네트워크 장치는, 수신된 제1 단편화 패킷을 처리하는 코어를 세션 코어로서 기록하는 단계, (b) 상기 네트워크 장치는, 상기 제1 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)를 참조로 하여, 후속으로 수신되는 제2 단편화 패킷의 4-tuple 정보와 비교하는 단계 및 (c) 상기 네트워크 장치는, 상기 후속으로 수신되는 제2 단편화 패킷의 4-tuple 정보가 상기 제1 단편화 패킷의 4-tuple 정보와 일치하는 경우, 상기 후속으로 수신되는 제2 단편화 패킷을 상기 세션 코어로 전달하는 단계를 포함하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 네트워크 장치에서 단편화 패킷을 처리하는 네트워크 장치에 있어서, 제1 단편화 패킷을 수신하는 통신부 및 멀티 코어를 포함하고, 상기 멀티 코어 중 상기 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 하고 제2 단편화 패킷이 상기 세션 코어를 제외한 나머지 논-세션 코어에 할당되는 경우, 상기 제2 단편화 패킷이 상기 제1 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)와 동일한 정보를 가지는 것으로 판단되면, 상기 논-세션 코어에 할당된 상기 제2 단편화 패킷을 상기 세션 코어로 리-다이렉트(Re-direct)하는 프로세서를 포함하는 장치를 제공한다.
본 발명의 또 다른 태양에 따르면, 단편화 패킷을 처리하는 네트워크 장치에 있어서, 복수의 코어를 구비하는 프로세서 및 상기 복수의 코어 중, 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 할 때, 상기 제1 단편화 패킷에 후속하는 제2단편화 패킷의 4-Tuple (프로토콜, 목적지 ip, 소스 ip, Ip id) 정보가 상기 제1 단편화 패킷의 4-Tuple 정보와 동일한 경우, 상기 제2 단편화 패킷을 상기 세션 코어로 전달하는 통신부를 포함하는 장치를 제공한다.
본 발명에 따르면, 멀티 코어를 구비하는 네트워크 장치에서 단편화 패킷 처리에 소요되는 프로세싱 자원 낭비를 최소화할 수 있다.
또한, 멀티 코어 중 세션 코어에만 동일 군의 단편화 패킷을 전달하여 처리토록 함으로써, 논-세션 코어가 단편화 패킷 처리에서 배제되도록 하고, 이를 통해 논-세션 코어의 프로세싱 자원을 확보할 수 있다. 이때, 논-세션 코어가 세션 테이블에 억세스하기 위해 타 코어와 경쟁관계를 갖거나, 락(Lock)을 유발하지 않도록 할 수 있다.
도 1은 본 발명의 일 실시예에 따라 네트워크 장치 및 네트워크 장치의 단편화 패킷을 처리방법에 대한 개념도를 도시한다.
도 2는 본 발명의 다른 실시예에 따라 네트워크 장치 및 네트워크 장치의 단편화 패킷을 처리방법에 대한 개념도를 도시한다.
도 3은 본 발명의 단편화 패킷 처리방법과 비교 설명하기 위한 종래의 단편화 패킷 처리방법을 도시한다.
도 4는 도 2를 통해 설명된 실시예에서 프로세서에 캐쉬를 할당하는 캐쉬 할당방법에 대한 개념도를 도시한다.
본 명세서에서 언급되는 네트워크 장치는 스위치, 라우터 및 공유기와 같은 장비가 해당할 수 있으며, 이 외에도, 이더넷 커넥터, 네트워크 인터페이스부(NIC : Network Interface Card) 및 프로세서를 구비하는 장치라면, 본 명세서에서 언급되는 네트워크 장치라 할 수 있다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따라 네트워크 장치 및 네트워크 장치의 단편화 패킷 처리방법에 대한 개념도를 도시한다.
도 1을 참조하면 실시예에 따른 네트워크 장치는, 이더넷 커넥터(110), 네트워크 인터페이스부(NIC)(120), 프로세서(130)를 포함하여 구성될 수 있다.
네트워크 인터페이스부(120)는 이더넷 커넥터(110)로부터 수신되는 외부 패킷을 프로세서(130)로 전달하거나 또는 프로세서(130)에서 외부 네트워크로 전달할 패킷을 이더넷 커넥터(110)로 전달할 수 있다.
프로세서(130)는 멀티 코어(Multi-core)를 구비할 수 있으며, 멀티 코어일 때는 단일 세션(session)에 속하는 패킷들을 분산 처리할 수 있다. 프로세서(130)는 네트워크 장치(100)에 설정된 패킷 처리량에 따라 입출되는 패킷의 길이를 구획할 수 있다. 예를 들어, 네트워크 장치(100)에서 입출 가능한 패킷의 길이가 1500 바이트이고, 입출되는 패킷의 길이가 2000 바이트인 경우 프로세서(130)는 2000 바이트의 패킷을 1500 바이트 + 500 바이트로 구획하여 두 개의 패킷으로 분할할 수 있다. 이때 분할된 두 패킷들을 단편화 패킷(Fragment packet)이라 하며, 프로세서(130)로 단편화 패킷이 유입되면, 프로세서(130)는 단편화 패킷을 재조립할 수 있다. 도 1에서, 실시예에 따른 프로세서(130)는 3개의 코어(130a, 130b, 130c)로 구성되는 것을 예시한다. 프로세서(130)는 2개, 3개, 4개 또는 그 이상의 코어로 구성될 수 있으나, 본 발명에 대한 설명과 이해의 편의를 위해, 3개만이 예시되었을 뿐, 프로세서(130)를 구성하는 코어의 개수는 도시되고 설명된 것에 의해 제한되지 않음을 미리 밝혀둔다.
구체적으로, 네트워크 인터페이스부(120)는 단편화 패킷들이 유입될 때, 세션(session)을 형성하는 세션 코어 정보를 세션 테이블에 기록한다. 세션 테이블에 등록되는 세션 코어가 코어 1(130a)이라고 가정할 때, 코어 2(130b)와 코어 3(130c)은 논-세션 코어라고 할 수 있다. 논-세션 코어(130b, 130c)에는 포트(Port) 정보가 없는 단편화 패킷들이 수신될 수도 있다.
패킷을 단편화할 때, 세션을 이룰 수 있는 최초 패킷에는 5-Tuple 정보가 포함되나, 후속되는 패킷에는 포트 정보가 포함되지 않으므로, 각 코어(130a 내지 130c)에는 5-Tuple 정보를 포함하지 않는 단편화 패킷들이 분배되며, 논-세션 코어(130b, 130c)는 세션 테이블을 참조하여 포트 정보가 누락된 단편화 패킷이 동일 군에 속하는 패킷인가를 판단하기 곤란하다.
이에, 논-세션 코어(130b, 130c)는 4-Tuple 정보(프로토콜, 목적지 주소, 소스 주소, ip id)를 포함하는 단편화 테이블(Fragment table)을 참조하여 동일한 패킷 군을 판단할 수 있다. 단편화 테이블에는 세션 코어 및 세션 코어의 4-Tuple 정보가 기록될 수 있다.
여기서, Ip id 값은 Internet Protocol (IPv4)에 대해 정의된 RFC 791 규약에 따른 것으로서, IP 프로토콜 레벨에서 단편화되는 단편화 패킷에서, 최초 단편화되는 패킷에만 TCP/UDP 정보가 포함되고, 이후에 단편화되는 단편화 패킷에는 포트 정보가 생략되며, 대신, 각 단편화 패킷에 대한 Ip Id 정보를 이용하여 단편화 패킷을 구분하도록 정의하는데 따라, 단편화 패킷을 구분하는 값으로 이용하고 있다. 본 실시예에서, Ip-Id 값에 대한 보다 상세한 사항은 Internet Protocol (IPv4)에 대해 정의된 RFC 791 규약을 참조하도록 한다.
논-세션 코어(130b, 130c)는 단편화 패킷이 수신되면, 단편화 패킷의 4-Tuple 정보를 참조하여 할당되는 단편화 패킷이 세션 코어에 배분되어 있는 단편화 패킷의 4-Tuple 정보와 매칭되는 것이 있는지 판단한다. 판단 결과, 세션 코어(130b, 130c)에서 처리되는 단편화 패킷과 동일한 단편화 패킷이 수신되었다면, 논-세션 코어(Non-session core)인 코어 2(130a)와 코어 3(130c)는 수신된 단편화 패킷을 세션 코어(130b)로 리-다이렉트(Re-direct)할 수 있다. 이에 따라, 논-세션 코어(130a, 130c)는 단편화 패킷 처리를 위해 프로세싱 자원을 낭비하지 않을 수 있다. 반면, 세션 코어(130b)는 논-세션 코어(130a, 130c)에서 단편화 패킷을 직접 받아 재조립함으로써, 단편화 패킷 처리를 위한 시간 지연을 방지할 수 있다.
이는 논-세션 코어인 코어 2(130a)와 코어 3(130c)에서의 처리된 단편화 패킷을 수신할 필요가 없다는 것이며, 코어 2(130a)와 코어 3(130c)의 처리결과를 기다릴 필요가 없이 신속하게 단편화 패킷을 재조립할 수 있다는 것을 의미한다.
여기서, 리-다이렉트(Re-direct) 과정은, 인터럽트 방식에 의해 구현되고, 세션 코어(130b)를 제외한 나머지 코어(130a, 130c)는 단편화 패킷 조합에 관여되지 않는 점에서 단편화 패킷 재조립에 소요되는 시간을 단축할 수 있다.
여기서, 논-세션 코어(103a, 130c)에서 세션 코어(130b)로 인터럽트 방식의 처리 순서를 살펴보면,
1) 코어 2(130a)와 코어 3(130c)이 코어 1(130b)에 인터럽트를 가하고,
2) 코어 1(130b)이 코어 2(130a)와 코어 3(130c)의 인터럽트에 응답하면,
3) 코어 2(130a) 또는 코어 3(130c)에서 각각의 단편화 패킷(들)을 코어 1(130b)로 전달하고,
4) 코어 1(130b)은 인터럽트 수신된 단편화 패킷들의 패킷 순서를 참조하여 기 수신된 단편화 패킷들 사이에 재 배열하여 온전한 패킷으로 재조립할 수 있다.
1) 내지 4)의 순서에 따라 인터럽트가 처리되면 논-세션 코어인 코어 2(130a)와 코어 3(130c)는 유휴 상태가 되므로 프로세서(130)의 자원 확보가 용이하고, 이더넷 커넥터(110) - 네트워크 인터페이스부(120)를 통해 신규 세션에 따른 패킷이 유입될 때, 신속히 신규 패킷 처리에 이용될 수 있다. 또한, 단일 세션(session)과 관련된 단편화 패킷들이 모두 하나의 세션 코어(130b)에 모여 처리되므로, 각 코어(130a 내지 130c)에서 분산 처리되던 단편화 패킷의 재조립 시간은 단축될 수 있다.
한편, 세션 코어(130b)로 단편화 패킷들이 유입되면 세션 코어는 단편화 패킷들의 Fragment offset 값을 참조하여 단편화 패킷들의 조합 순서를 판단하고 판단된 조합 순서에 따라 단일 패킷으로 재조립할 수 있다. 이는 표 1을 함께 참조하여 설명하도록 한다.
Figure 112015126583533-pat00001
표 1에는 길이가 4000 바이트인 패킷이 예시되는데, 실시예에 따른 네트워크 장치(100)로 3 분할된 단편화 패킷(MTU = 1500에 따라 3분할 되었음)이 유입되었을 때, 실시예에 따른 네트워크 장치(100)에서 단편화 패킷을 재조립하는 과정을 설명하도록 한다.
MTU = 1500인 조건에서 4000 바이트의 패킷이 분할되면, 3개의 단편화 패킷이 생성될 수 있다. 표 1에서, P1, P2, P3로 패킷이 단편화되는데, P1과 P2는 MTU값(1500 바이트)에 따라 1500 바이트로 구획되고, 단편화 패킷(P3)은 1000 바이트(4000 바이트 - 3000 바이트)로 구획될 수 있다. 그러나, 각 단편화 패킷(P1, P2, P3)의 헤더 길이가 20 바이트씩 할당되므로 실제 각 단편화 패킷(P1, P2, P3)의 데이터 길이는 1480 바이트에 해당한다. 각 단편화 패킷(P1, P2, P3)의 헤더에는 데이터 길이(P1, P2 = 1480 바이트, P3 = 980 바이트), 패킷 ID, MF 플래그 및 Fragment offset값이 기록된다. 여기서, 패킷 ID는 동일한 패킷에서 분할된 각 단편화 패킷(P1, P2, P3)에 동일한 값이 부여되고, MF 플래그는 1비트 플래그로서, 각 단편화 패킷(P1, P2, P3)이 자신 이후에 추가적인 단편화 패킷이 존재하는지를 나타낸다. MF 플래그 값이 "0"이면 해당 단편화 패킷(P1, P2, P3) 이후에는 추가적인 단편화 패킷이 없다는 것을 의미하고, MF 플래그 값이 "1"이면, 해당 단편화 패킷(P1, P2, P3) 이후에 추가되는 단편화 패킷이 존재한다는 것을 의미한다.
표 1을 통해 설명된 단편화 패킷의 구조와 이에 대한 설명은 후술할 패킷 구조에서도 동일하게 적용되며, 이하에서는 중복되는 설명은 생략하도록 한다.
도 2는 본 발명의 다른 실시예에 따라 네트워크 장치 및 네트워크 장치의 단편화 패킷에 대한 처리방법에 대한 개념도를 도시한다.
도 2를 참조하면, 다른 실시예에 따른 네트워크 장치(100)는 이더넷 커넥터(110), 네트워크 인터페이스부(120), 프로세서(130)를 포함하여 구성될 수 있다.
네트워크 인터페이스부(120)는 이더넷 커넥터(110)로부터 수신되는 외부 패킷을 프로세서(130)로 전달하거나 또는 프로세서(130)에서 외부 네트워크로 전달할 패킷을 이더넷 커넥터(110)로 제공할 수 있다.
또한, 네트워크 인터페이스부(120)는, 세션 테이블 및 단편화 테이블(121)을 구비하며, 세션 테이블을 참조하여 이더넷 커넥터(110)를 통해 수신되는 패킷을 처리하기 위하여 세션을 형성하는 세션 코어(예를 들어, 130a) 및 세션 코어(130a)에 수신된 단편화 패킷의 5-Tuple 정보를 획득하고, 이를 비교하여 후속하는 단편화 패킷들 중 세션을 형성한 단편화 패킷과 동일 군의 패킷이 존재하는 가를 판단할 수 있다.
참고로, 단편화 패킷들 중 최초 단편화 패킷만이 5-Tuple 정보(프로토콜, 목적지 주소, 소스 주소, 목적지 포트, 소스 포트)를 구비하고, 이후의 단편화 패킷들은 포트 정보가 빠지므로, ip id 정보를 참조로 하여 단편화 패킷을 구분할 수 있다.
코어(130a 내지 130n) 중 세션을 이룬 코어가 코어 1(130a)이고, 코어 1(130a)을 세션 코어라고 할 때, 네트워크 인터페이스부(120)(즉, 통신부)는 세션 코어에 대한 4-tuple 정보와 일치하는 단편화 패킷이 유입되면, 유입된 단편화 패킷을 세션 코어(130a)로 전달하여 세션 코어(130a)가 4-tuple 정보가 일치하는 동일 패킷 군에 속하는 단편화 패킷들을 전달받아 원래의 패킷으로 재조립할 수 있다.
도 2의 실시예에 따른 네트워크 장치(100) 및 네트워크 장치의 단편화 패킷 처리방법에 따르면, 네트워크 인터페이스부(120)에서 단편화 패킷들 중 동일 패킷 군에 속하는 것들을 단일 코어(예컨대 130a)에 전달하므로 코어(130a 내지 130n) 사이에 인터럽트가 발생하지 않으며, 각 코어(130a 내지 130n)는 네트워크 인터페이스부(120)에서 전달하는 패킷의 처리 작업에 집중할 수 있어 단편화 패킷 처리 속도를 증가시킬 수 있다. 이는 종래의 단편화 패킷 처리방법을 도시한 도 3과 비교 설명하도록 한다.
도 3을 참조하면, 종래의 단편화 패킷 처리방법은, 멀티 코어(10a 내지 10n)가 각각 단편화 패킷들(FP1 내지 FPn)을 수신하고, 각 단편화 패킷(FP1 내지 FPn)을 처리 후, 멀티 코어(10a 내지 10n) 중 어느 하나가 단편화 패킷(FP1 내지 FPn)을 원래의 패킷으로 조립하도록 구성됨을 볼 수 있다.
도 3에서, 각 코어(10a 내지 10n)는 단편화 리스트(Fragment list)를 공유하며, 처리중인 단편화 패킷의 패킷 정보(예를 들어, 4-tuple 정보)를 획득하기 위해 단편화 리스트(Fragment list)가 저장되는 메모리(예를 들어, RAM)에 억세스할 수 있다. 메모리에 여러 코어(10a 내지 10n)가 동일 시점에 억세스할 수 없으므로, 각 코어(10a 내지 10n)는 하나의 단편화 리스트(Fragment list)에 억세스하기 위한 경쟁이 발생하며, 제때 단편화 리스트(Fragment list)에 억세스하지 못하고 대기하여야 하는데, 통상 이러한 경쟁상황을 레이스 컨디션(Race condition)이라 한다. 레이스 컨디션은 복수의 코어(10a 내지 10n)가 단일 메모리에 억세스하기 위해 벌어지는 경쟁에 의해 메모리에 대한 억세스가 성공한 하나의 코어(10a 내지 10n 중 어느 하나)를 제외한 나머지 코어들이 메모리 억세스를 위해 대기하여야 하는 바, 네트워크 장치 전체의 성능을 저하시키는 측면이 있다.
반면, 도 2에 도시된 실시예에서, 각 코어(130a 내지 130n)는 레이스 컨디션을 유발하지 않는데, 이는 각 코어(130a 내지 130n)가 단편화 테이블(121)에 억세스할 필요가 없는데 따른다. 단편화 테이블(121)은 네트워크 인터페이스부(120) 만이 억세스 하며, 네트워크 인터페이스부(120) 만이 단편화 테이블(121)을 참조하여 유입되는 각 패킷(또는 단편화 패킷)을 분석하고 분석된 단편화 패킷들 중 동일 패킷 군에 해당하는 것들이 단일 코어(130a 내지 130n 중 어느 하나)에 전달된다. 즉, 도 2에 도시된 실시예에서는 레이스 컨디션이 발생하지 않는다.
도 4는 도 2를 통해 설명된 실시예에서 프로세서(130)에 캐쉬를 할당하는 캐쉬 할당방법에 대한 개념도를 도시한다.
본 출원인은 단편화 패킷의 조합을 하나의 코어(세션 코어)에서 처리하는 것을 주 요지임을 설명하였다.
네트워크 장치(100)가 세션 코어에 처리할 단편화 패킷을 몰아주고, 세션 코어(100)에 캐쉬를 더 많이 할당한다면 처리 효율이 올라가리라 예측할 수 있다. 멀티 코어로 구성되는 프로세서의 경우, 각 코어가 독자적으로 운용하는 레벨 2 캐쉬(L2 캐쉬)와 모든 코어(130a 내지 130d)가 공유하는 레벨 3 캐쉬(L3 캐쉬)를 구비할 수 있다.
프로세서(130)의 종류에 따라 다소 차이는 있으나, 본 실시예에서는, 각 코어(130a 내지 130d)별로 독립적으로 할당되는 독립 캐쉬를 기준으로 설명하도록 한다.
이에 본 출원인은 도 4에 도시된 바와 같이, 코어 각각이 독립 캐쉬를 이용하여 패킷 재조립 작업을 처리하는 방안을 제안한다. 코어 각각이 독립 캐쉬를 이용하여 단편화 패킷을 조립하면, 독립 캐쉬에서 단편화 리스트를 리드/라이트하는 주체가 코어 각각으로 한정되고, 타 코어가 해당 독립 캐쉬에 억세스하지 않으므로, 독립 캐쉬 각각의 데이터 오염이나, 캐쉬 미스가 발생할 우려가 없다.
이는, 각 코어(130a 내지 130d)의 캐쉬 히트레이트(Hit rate)가 증가한다는 의미와 동일한 의미가 되며, 캐쉬 히트레이트의 증가는 곧 코어(130a 내지 130d)의 패킷 처리 속도 증가와 직결됨은 당 업자에게 자명할 것이다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
110 : 이더넷 커넥터 120 : 네트워크 인터페이스부
121 : 세션 테이블 130 : 프로세서
130a 내지 130n : 코어

Claims (18)

  1. 네트워크 장치의 단편화 패킷의 처리 및 패킷 재조립을 촉진하는 방법으로서,
    상기 네트워크 장치는 복수의 코어를 포함하며, 각각의 코어는 상기 각각의 코어만이 억세스할 수 있는 개별의 독립 캐쉬를 구비하고, 상기 독립 캐쉬 각각에는 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)를 기록하고 있는 단편화 테이블이 마련되며, 상기 방법은,
    (a) 네트워크 장치가, 제1 단편화 패킷을 수신하는 단계; 및
    (b) 상기 네트워크 장치에 포함되는 상기 복수의 코어 중 상기 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 할 때, 제2 단편화 패킷이 상기 세션 코어를 제외한 나머지 논-세션 코어에 할당되는 경우, 상기 네트워크 장치는, 상기 제2 단편화 패킷이 상기 제1 단편화 패킷의 4-tuple 정보와 동일한 정보를 가지는 것으로 판단되면, 상기 논-세션 코어에 할당된 상기 제2 단편화 패킷을 상기 세션 코어로 인터럽트를 가하여 리-다이렉트(Re-direct)하는 단계;를 포함하되,
    상기 단편화 테이블은 코어 별로 관리되는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 세션 코어는,
    상기 논-세션 코어에서 상기 세션 코어로 유입되는 상기 제2 단편화 패킷의 Fragment offset 값을 참조로 하여, 상기 제1 단편화 패킷 및 상기 제2 단편화 패킷들의 조합 순서를 결정하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 (a) 단계에서,
    상기 단편화 테이블을 참조로 하여, 상기 논-세션 코어에 리-다이렉트 대상 코어인 상기 세션 코어에 대한 정보를 통보하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 제1 단편화 패킷의 5-tuple 정보(프로토콜, 목적지 ip, 소스 ip, 목적지 port, 소스 port)를 참조로 하여 상기 세션 코어가 결정되는 것을 특징으로 하는 방법.
  6. 네트워크 장치의 단편화 패킷의 처리 및 패킷 재조립을 촉진하는 방법으로서,
    상기 네트워크 장치는 복수의 코어를 포함하며, 각각의 코어는 상기 각각의 코어만이 억세스할 수 있는 개별의 독립 캐쉬를 구비하고, 상기 독립 캐쉬 각각에는 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)를 기록하고 있는 단편화 테이블이 마련되며, 상기 방법은,
    (a) 네트워크 장치는, 수신된 제1 단편화 패킷을 처리하는 코어를 세션 코어로서 기록하는 단계;
    (b) 상기 네트워크 장치는, 상기 제1 단편화 패킷의 4-tuple 정보를 참조로 하여, 후속으로 수신되는 제2 단편화 패킷의 4-tuple 정보와 비교하는 단계; 및
    (c) 상기 네트워크 장치는, 상기 후속으로 수신되는 제2 단편화 패킷의 4-tuple 정보가 상기 제1 단편화 패킷의 4-tuple 정보와 일치하는 경우, 상기 후속으로 수신되는 제2 단편화 패킷을 상기 세션 코어로 전달하는 단계;를 포함하되,
    상기 단편화 테이블은 코어 별로 관리되는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 (b) 단계에서,
    상기 네트워크 장치는,
    i) 단편화 패킷들이 수신될 때, 상기 단편화 패킷들의 헤더 정보에서 4-tuple 정보를 추출하고 ii) 이를 단편화 테이블과 비교하여 동일 군에 속하는 패킷 군을 분류하는 것을 특징으로 하는 방법.
  8. 삭제
  9. 제6항에 있어서,
    상기 제1 단편화 패킷의 5-tuple 정보(프로토콜, 목적지 ip, 소스 ip, 목적지 port, 소스 port)을 참조로 하여 상기 세션 코어가 결정되는 것을 특징으로 하는 방법.
  10. 단편화 패킷을 처리 및 재조립하는 네트워크 장치에 있어서,
    제1 단편화 패킷을 수신하는 통신부; 및
    복수의 코어를 포함하는 프로세서로서, 각각의 코어는 상기 각각의 코어만이 억세스할 수 있는 개별의 독립 캐쉬를 구비하고, 상기 독립 캐쉬 각각에는 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)를 기록하고 있는 단편화 테이블이 마련되며, 상기 복수의 코어 중 상기 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 하고 제2 단편화 패킷이 상기 세션 코어를 제외한 나머지 논-세션 코어에 할당되는 경우, 상기 제2 단편화 패킷이 상기 제1 단편화 패킷의 4-tuple 정보와 동일한 정보를 가지는 것으로 판단되면, 상기 논-세션 코어에 할당된 상기 제2 단편화 패킷을 상기 세션 코어로 인터럽트를 가하여 리-다이렉트(Re-direct)하는 프로세서;를 포함하되,
    상기 단편화 테이블은 코어 별로 관리되는 것을 특징으로 하는 장치.
  11. 삭제
  12. 제10항에 있어서,
    상기 세션 코어는,
    상기 논-세션 코어에서 상기 세션 코어로 유입되는 상기 제2 단편화 패킷의 Fragment offset 값을 참조로 하여, 상기 제1 단편화 패킷 및 상기 제2 단편화 패킷들의 조합 순서를 결정하는 것을 특징으로 하는 장치.
  13. 제10항에 있어서,
    상기 논-세션 코어는,
    상기 4-tuple 정보를 기록하고 있는 단편화 테이블을 참조로 하여, 리-다이렉트 대상 코어인 상기 세션 코어에 대한 정보를 판단하는 것을 특징으로 하는 장치.
  14. 제10항에 있어서,
    상기 세션 코어는,
    상기 제1 단편화 패킷의 5-tuple 정보(프로토콜, 목적지 ip, 소스 ip, 목적지 port, 소스 port)을 참조로 하여 결정되는 것을 특징으로 하는 장치.
  15. 단편화 패킷을 처리 및 재조립하는 네트워크 장치에 있어서,
    복수의 코어를 구비하는 프로세서로서, 각각의 코어는 상기 각각의 코어만이 억세스할 수 있는 개별의 독립 캐쉬를 구비하고, 상기 독립 캐쉬 각각에는 단편화 패킷의 4-tuple 정보(프로토콜, 목적지 ip, 소스 ip, Ip id)를 기록하고 있는 단편화 테이블이 마련되는 프로세서; 및
    상기 복수의 코어 중, 제1 단편화 패킷과 세션을 이루는 코어를 세션 코어라고 할 때, 상기 제1 단편화 패킷에 후속하는 제2 단편화 패킷의 4-Tuple 정보가 상기 제1 단편화 패킷의 4-Tuple 정보와 동일한 경우, 상기 제2 단편화 패킷을 상기 세션 코어로 전달하는 통신부;를 포함하되,
    상기 단편화 테이블은 코어 별로 관리되는 것을 특징으로 하는 장치.
  16. 제15항에 있어서,
    상기 통신부는,
    상기 제2 단편화 패킷의 헤더 정보에서 상기 4-Tuple 정보를 추출하고, 이를 단편화 테이블과 비교하여 동일성을 판단하는 것을 특징으로 하는 장치.
  17. 삭제
  18. 제15항에 있어서,
    상기 통신부는,
    상기 제1 단편화 패킷의 5-tuple 정보(프로토콜, 목적지 ip, 소스 ip, 목적지 port, 소스 port)를 참조로 하여 상기 세션 코어를 결정하는 것을 특징으로 하는 장치.
KR1020150185396A 2015-12-23 2015-12-23 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치 KR101635732B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150185396A KR101635732B1 (ko) 2015-12-23 2015-12-23 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150185396A KR101635732B1 (ko) 2015-12-23 2015-12-23 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101635732B1 true KR101635732B1 (ko) 2016-07-04

Family

ID=56501653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150185396A KR101635732B1 (ko) 2015-12-23 2015-12-23 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101635732B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110060534A (ko) * 2009-11-30 2011-06-08 한국전자통신연구원 세션 관리 방법
KR20110106096A (ko) * 2010-03-22 2011-09-28 주식회사 퓨쳐시스템 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법
US20140115122A1 (en) * 2009-12-23 2014-04-24 Citrix Systems, Inc. Systems and methods for managing ports for rtsp across cores in a multi-core system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110060534A (ko) * 2009-11-30 2011-06-08 한국전자통신연구원 세션 관리 방법
US20140115122A1 (en) * 2009-12-23 2014-04-24 Citrix Systems, Inc. Systems and methods for managing ports for rtsp across cores in a multi-core system
KR20110106096A (ko) * 2010-03-22 2011-09-28 주식회사 퓨쳐시스템 플로우 프로세싱 유닛 및 플로우 프로세싱 유닛 제어 방법

Similar Documents

Publication Publication Date Title
US11855895B2 (en) Systems, apparatuses and methods for network packet management
US7535907B2 (en) TCP engine
US9166921B2 (en) Selective packet sequence acceleration in a network environment
US9246825B2 (en) Accelerated processing of aggregate data flows in a network environment
US8792353B1 (en) Preserving sequencing during selective packet acceleration in a network environment
US8948013B1 (en) Selective packet sequence acceleration in a network environment
WO2018165009A1 (en) Vertical packet aggregation using a distributed network
US20070223472A1 (en) Network processing apparatus, multiprocessor system and network protocol processing method
US20060056406A1 (en) Packet queuing, scheduling and ordering
US20070286073A1 (en) Method for in-place, lightweight Ack promotion in a wireless network environment
KR101409311B1 (ko) 패킷 처리 및 전처리기를 위한 장치 및 방법
WO2017050117A1 (zh) 网络负载均衡处理***及其方法和装置
US8867568B2 (en) Method for parsing network packets having future defined tags
EP3122012B1 (en) Data processing method and apparatus for openflow network
US9210094B1 (en) Utilization of TCP segmentation offload with jumbo and non-jumbo networks
US7969977B2 (en) Processing apparatus and method for processing IP packets
CN114268518A (zh) 一种实现sdwan数据隧道转发加速的方法及***
WO2024037366A1 (zh) 转发规则下发方法、智能网卡及存储介质
KR101635732B1 (ko) 네트워크 장치에서 단편화 패킷을 처리하는 방법 및 장치
US20050198007A1 (en) Method, system and algorithm for dynamically managing a connection context database
US8719902B2 (en) Secure communication device, secure communication method, and program
US10110977B2 (en) Photonic frame switching system determining moment of transmitting photonic frame based on time used for changing wavelength of tunable laser diode
US9641461B2 (en) Relay device, communication system, and communication method
JP2010011344A (ja) パケット処理装置
CN114567484A (zh) 一种报文处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190625

Year of fee payment: 4