KR20160080266A - Cpu 부하 분산 패킷 처리 장치 및 방법 - Google Patents

Cpu 부하 분산 패킷 처리 장치 및 방법 Download PDF

Info

Publication number
KR20160080266A
KR20160080266A KR1020140191953A KR20140191953A KR20160080266A KR 20160080266 A KR20160080266 A KR 20160080266A KR 1020140191953 A KR1020140191953 A KR 1020140191953A KR 20140191953 A KR20140191953 A KR 20140191953A KR 20160080266 A KR20160080266 A KR 20160080266A
Authority
KR
South Korea
Prior art keywords
packet
cpu
reception queue
reception
predetermined
Prior art date
Application number
KR1020140191953A
Other languages
English (en)
Other versions
KR101683818B1 (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 KR1020140191953A priority Critical patent/KR101683818B1/ko
Publication of KR20160080266A publication Critical patent/KR20160080266A/ko
Application granted granted Critical
Publication of KR101683818B1 publication Critical patent/KR101683818B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

유휴 CPU를 최소화하고 특정 CPU로 패킷이 집중되는 것을 방지하여 전체 시스템 처리 효율을 높인 CPU 부하 분산 패킷 처리 기술이 개시된다. 이를 위해, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법은 다중 CPU 환경에서 동작하는 CPU 부하 분산 패킷 처리 방법에 있어서, 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하는 단계; 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득하는 단계; 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트 하는 단계; 및 CPU별 최대 패킷 처리량 및 가용 버퍼 사용량 정보 및 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는 단계를 포함하는 것을 특징으로 한다.

Description

CPU 부하 분산 패킷 처리 장치 및 방법{PACKET PROCESSING APPARATUS AND METHOD FOR CPU LOAD BALANCING}
본 발명은 CPU 부하 분산 패킷 처리 장치 및 방법에 관한 것으로, 보다 구체적으로 본 발명은 유휴 CPU를 최소화하고 특정 CPU로 패킷이 집중되는 것을 방지하여 전체 시스템의 처리 효율을 높인 CPU 부하 분산 패킷 처리 장치 및 방법에 관한 것이다.
현재의 네트워크 패킷 처리 시스템(정보 시스템)은 고성능(고 클럭)의 단일 CPU를 사용하기 보다는 다중 CPU를 사용하고 있다. 다중 CPU를 사용하는 네트워크 패킷 처리 시스템에서 중요한 이슈는 모든 CPU에게 패킷을 효율적으로 분산시키는 것이다. 이를 위해서 NIC(Network Interface Card)에서 제공되는 RSS(Receive Side Scaling) 기술과 리눅스 운영체제에서 제공되는 RPS(Receive Packet Steering) 기술이 있다. RSS 및 RPS 기술 모두 해쉬를 통해 패킷을 분류해서 CPU에 분산을 시킨다는 공통점이 있다. RSS는 NIC에서 패킷을 수신하여 패킷의 5-tuple 을 이용해서 해쉬값을 구한후 패킷을 분산시키는 기술이다. RPS는 패킷 분산이 수행되는 위치가 운영체제이며, NIC에서 수신한 패킷의 5-tuple 의 해쉬 값을 이용하는 점에서는 RSS와 동일하다. RPS기술은 RSS를 지원하지 않는 NIC에서 사용하거나, RSS를 지원하는 NIC라도 단일 세션으로 유입되는 패킷은 여러 CPU로 분산되지 않기 때문에 이때 RPS 기술을 사용한다.
도 1은 NIC에서 수행되는 RSS(Receive Side Scaling) 기술을 설명하기 위한 도면이다.
RSS(110)는 NIC(100)에서 수신된 패킷의 5 tuple(protocol, source port, source address, destination port, destination address)의 해쉬 값을 통해서 운영체제(300, OS)의 여러 CPU(320)로 분산하는 기술이다. RSS(100)는 기본적으로 '패킷이 멀티 세션으로 들어온다'는 전제를 가지고 있는 기술이다. 즉, 패킷이 단일세션으로 오거나 특정세션으로 치우치는 경우에는 특정 CPU로 부하가 몰리기 때문에 패킷의 드롭이 발생하게 된다. 즉, 이는 해당 CPU 가 처리하는 패킷 처리량의 한계로 해당 CPU 에 연결된 NIC 의 Rx queue 가 Full 이 발생하기 때문이다. 따라서, 이에 의하면 다중 CPU 시스템을 충분히 활용하지 못하는 상황이 발생할 수 있다. 도 1에서 미설명 부호 120은 수신 큐(RX Queue)이며, 패킷을 가용 버퍼에 수용하도록 구성된다. 그리고, 200은 PCI-Express Interface에 해당할 수 있다. 또한, 310은 수신 큐(120)로부터 수신되는 패킷을 처리하는 패킷 핸들러이다.
도 2는 RPS(Receive Packet Steering) 기술을 설명하기 위한 도면이다. 도 1과 같은 구성은 동일 부호를 사용하였으며 자세한 설명은 생략한다.
RPS는 특정 CPU로 수신된 패킷을 다른 CPU로 분산하여 패킷을 처리하는 방식이다. RPS는 NIC가 RSS(110)를 지원하지 않거나 단일 세션으로 오는 패킷을 여러 CPU(320)로 분산시켜 주지만, 성능적인 면에서 제약이 존재한다. RPS 기술은 특정 CPU 가 패킷을 수신하여 여러 CPU 로 분산을 시켜준다. 즉 NIC의 RSS에서 수행되던 일을 특정 CPU가 대신하는 것이다. 패킷을 분배하는 CPU는 여러 CPU의 버퍼에 패킷을 전달하고 인터럽트를 발생 시켜서 다른 CPU가 패킷을 처리할 수 있도록 한다. 이때 단일 세션 또는 특정 세션으로 네트워크 패킷 처리 시스템으로 들어오는 경우 패킷을 처리할 수 있는 최대의 양은 패킷 분배 CPU가 최대 처리할 수 있는 양에 의존한다. 즉, CPU 를 분산시키는 기술이기는 하지만 성능적인 면에서 제약이 발생한다. 도 2에는 CPU3의 분배 처리 속도가 패킷 유입량보다 늦어서 패킷 드롭이 발생한 경우가 도시되어 있다.
본 발명의 목적은 네크워크로부터 수신되는 패킷을 NIC에서 CPU로 효율적으로 분산되도록 하여 유휴 CPU를 최소화하는 것이다.
더불어, 본 발명은 단일 세션 또는 특정 세션으로 패킷이 치우쳐서 들어오는 경우에도 효율적으로 여러 CPU로 패킷을 분산 처리 가능케 하는 것을 목적으로 한다.
그리고, 본 발명은 특정 CPU로 패킷이 집중되어 수신되는 것을 방지하여 전체 시스템 처리 효율을 높이는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법은 다중 CPU 환경에서 동작하는 CPU 부하 분산 패킷 처리 방법에 있어서, 상기 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하는 단계; 상기 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득하는 단계; 상기 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트 하는 단계; 및 상기 CPU별 최대 패킷 처리량, 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는 단계를 포함한다.
이 때, 상기 패킷이 분배될 수신 큐를 결정하는 단계에서는, 소정 패킷이 제1 CPU에 연결된 제1 수신 큐로 전송될 때, 상기 제1 수신 큐의 가용 버퍼 사용량 정보에 기초하여 상기 제1 수신 큐가 상기 소정 패킷을 수용 가능한지 판단하는 단계; 및 상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 상기 소정 패킷을 수용할 수 있는 제2 수신 큐를 검색하는 단계를 포함할 수 있다.
이 때, 상기 패킷이 분배될 수신 큐를 결정하는 단계에서는, 상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 제2 수신 큐를 검색한 이후 상기 제2 수신 큐와 연결된 제2 CPU의 최대 패킷 처리량과 상기 패킷 유입량을 비교하는 단계; 및 상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 큰 경우, 상기 소정 패킷을 상기 제2 수신 큐로 전송하는 단계를 더 포함할 수 있다.
이 때, 상기 패킷이 분배될 수신 큐를 결정하는 단계에서는, 상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 상기 제1 CPU 및 상기 제2 CPU 이외에 상기 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있는 제3 CPU를 찾는 단계; 및 상기 소정 패킷을 상기 제3 CPU와 연결된 제3 수신 큐로 전송하는 단계를 더 포함할 수 있다.
이 때, 상기 제3 수신 큐의 가용 버퍼 사용량 정보에 기초할 때, 상기 제3 수신 큐는 상기 소정 패킷을 수용 가능할 수 있다.
이 때, 상기 소정 패킷을 상기 제2 수신 큐로 전송하는 단계 이후에, 상기 소정 패킷을 상기 제2 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송할 수 있다.
이 때, 상기 소정 패킷을 상기 제3 CPU 측으로 전송하는 단계 이후에, 상기 소정 패킷을 상기 제3 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송할 수 있다.
그리고, 상기한 목적을 달성하기 위한 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치는 다중 CPU 환경에서 동작하는 CPU 부하 분산 패킷 처리 장치에 있어서, 상기 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하여 관리하는 CPU 정보 관리부; 상기 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득하여 관리하고, 상기 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트 수신 큐 관리부; 및 상기 CPU별 최대 패킷 처리량, 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는 패킷 분배 처리부를 포함한다.
이 때, 상기 패킷 분배 처리부는, 소정 패킷이 제1 CPU에 연결된 제1 수신 큐로 전송될 때, 상기 제1 수신 큐의 가용 버퍼 사용량 정보에 기초하여 상기 제1 수신 큐가 상기 소정 패킷을 수용 가능한지 판단하고, 상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 상기 소정 패킷을 수용할 수 있는 제2 수신 큐를 검색할 수 있다.
이 때, 상기 패킷 분배 처리부는, 상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 제2 수신 큐를 검색한 이후 상기 제2 수신 큐와 연결된 제2 CPU의 최대 패킷 처리량과 상기 패킷 유입량을 비교하고, 상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 큰 경우, 상기 소정 패킷을 상기 제2 수신 큐로 전송할 수 있다.
이 때, 상기 패킷 분배 처리부는, 상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 상기 제1 CPU 및 상기 제2 CPU 이외에 상기 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있는 제3 CPU를 찾고, 상기 소정 패킷을 상기 제3 CPU와 연결된 제3 수신 큐로 전송할 수 있다.
이 때, 상기 제3 수신 큐의 가용 버퍼 사용량 정보에 기초할 때, 상기 제3 수신 큐는 상기 소정 패킷을 수용 가능할 수 있다.
이 때, 상기 소정 패킷을 상기 제2 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하도록 제어하는 패킷 전달부를 더 포함할 수 있다.
이 때, 상기 소정 패킷을 상기 제3 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하도록 제어하는 패킷 전달부를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 네크워크로부터 수신되는 패킷을 NIC에서 CPU로 효율적으로 분산되도록 하여 유휴 CPU를 최소화할 수 있다.
더불어, 본 발명의 실시예에 따르면, 단일 세션 또는 특정 세션으로 패킷이 치우쳐서 들어오는 경우를 고려하여 NIC에 분산 처리 엔진을 두어 효율적으로 여러 CPU로 패킷을 분산 처리할 수 있다.
그리고, 본 발명의 실시예에 따르면, 특정 CPU로 패킷이 집중되어 수신되는 것을 방지하여 전체 시스템 처리 효율을 높일 수 있다.
도 1은 NIC에서 수행되는 RSS(Receive Side Scaling) 기술을 설명하기 위한 도면이다.
도 2는 RPS(Receive Packet Steering) 기술을 설명하기 위한 도면이다.
도 3은 다중 CPU 환경에서 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치를 설명하기 위한 블록도이다.
도 4는 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법을 설명하기 위한 플로우챠트이다.
도 5는 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법 중 패킷이 분배될 수신 큐를 결정하는 단계를 보다 구체적으로 설명하기 위한 플로우챠트이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 본 발명의 실시예에 따른 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치의 구성 및 동작을 먼저 설명하도록 한다.
도 3은 다중 CPU 환경에서 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치를 설명하기 위한 블록도이다.
도 3을 참조하면, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치(400)는 다중 CPU 환경에서 동작한다. 다중 CPU 환경에서는 N개의 CPU로 구성된 멀티 프로세서를 구비한 운영체제(300)에 네트워크 인터페이스 카드 즉 NIC(100)를 통하여 패킷이 수신되고 있다. NIC(100)에는 N개의 프로세서로 패킷을 분산 전달하기 위하여 N개의 수신 큐들이 구성될 수 있다.
그리고, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치(400)는 NIC(Network Interface Card)에서 제공되고, RSS(Receive Side Scaling) 엔진(100)과 수신 큐(120, RX Queue)의 사이에 형성되어 동작할 수 있다.
그리고, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치(400)는 CPU 정보 관리부(410), 수신 큐 관리부(420), 패킷 분배 처리부(430)를 포함하여 구성된다. 또한, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 장치(400)는 패킷 전달부(440)를 더 포함하여 구성될 수 있다.
CPU 정보 관리부(410)는 다중 CPU(321~328) 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하여 관리한다.
수신 큐 관리부(420)는 다중 CPU(321~328) 각각에 연결된 수신 큐들(121~128)의 가용 버퍼 사용량 정보를 획득하여 관리하고, 수신 큐들(121~128)로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트한다.
패킷 분배 처리부(430)는 CPU별 최대 패킷 처리량 및 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정한다.
보다 구체적으로, 먼저, RSS 엔진(110)으로부터 받은 정보에 따라 제1 CPU(321)에 연결된 제1 수신 큐(121)로 전송될 예정인 소정 패킷이 있다고 가정한다. 이 때, 패킷 분배 처리부(430)는 제1 수신 큐(121)의 가용 버퍼 사용량 정보에 기초하여 상기 제1 수신 큐(121)가 소정 패킷을 수용 가능한지 판단한다. 판단 결과, 제1 수신 큐(121)가 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 소정 패킷을 수용할 수 있는 제2 수신 큐(122)를 검색할 수 있다. 이 때, 제2 수신 큐(122)로 가정하였지만, 다른 수신 큐들(123~128)이 해당 조건을 만족할 수도 있다. 그리고, 제2 수신 큐(122)를 검색한 이후 제2 수신 큐(122)와 연결된 제2 CPU(322)의 최대 패킷 처리량과 패킷 유입량을 비교하고, 제2 CPU(322)의 최대 패킷 처리량이 패킷 유입량 보다 큰 경우, 소정 패킷을 상기 제2 수신 큐(122)로 전송할 수 있다.
반면, 제2 CPU(322)의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 제1 CPU(321) 및 제2 CPU(322) 이외에 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있는 제3 CPU(323)를 검색하고, 소정 패킷을 상기 제3 CPU(323)와 연결된 제3 수신 큐(123)로 전송할 수 있다. 이 때, 제3 CPU(323)로 가정하였지만, 다른 CPU들(324~328)이 해당 조건을 만족할 수도 있다. 더불어 이 때, 상기 제3 수신 큐(123)의 가용 버퍼 사용량 정보에 기초할 때, 제3 수신 큐(123)는 상기 소정 패킷을 수용 가능하다는 조건을 함께 만족하여야 한다.
패킷 전달부(440)는 패킷 분배 처리부(430)에서 결정된 수신 큐 및 해당 수신 큐에 연결된 CPU 측으로 유입된 패킷을 전달한다. 그리고, 패킷 전달부(440)는 패킷 분배 처리부(430)에 의하여 패킷이 본래 전달될 수신 큐에서 다른 수신 큐로 변경되어 전달된 경우, 패킷과 함께 변경 전의 수신 큐의 정보를 변경 후의 수신 큐에 연결된 CPU 측으로 전송할 수 있다.
즉, 패킷 전달부(440)는 제1 수신 큐(121) 및 제1 CPU(321) 측으로 전송이 예정되었던 소정 패킷을 제2 수신 큐(122) 및 제2 CPU(322) 측 혹은 제3 수신 큐(123) 및 제3 CPU(323) 측으로 전송하는 것으로 변경된 때에는, 소정 패킷과 함께 제1 수신 큐(121)에 대한 정보가 제2 CPU(322) 혹은 제3 CPU(323) 측의 패킷 핸들러로 전송되도록 제어할 수 있다.
도 3에서 미설명 부호 200은 PCI-Express Interface에 해당하며, NIC(100)와 OS(300)의 사이에 인터페이스로 형성될 수 있다.
이하에서는 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법에 대하여 설명하도록 한다.
도 4는 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법을 설명하기 위한 플로우챠트이다.
도 4를 참조하면, 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법은 먼저, 도 5는 본 발명의 실시예에 따른 CPU 부하 분산 패킷 처리 방법 중 패킷이 분배될 수신 큐를 결정하는 단계를 보다 구체적으로 설명하기 위한 플로우챠트이다.
상기 CPU별 최대 패킷 처리량 및 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는
상기 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득한다(S100). 그리고, 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득한다(S200). 더불어, 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트한다(S300).
또한, S100 단계 내지 S300 단계를 통하여 획득한 CPU별 최대 패킷 처리량, 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정한다(S400).
S400 단계를 도 5와 함께 보다 구체적으로 살펴보면 다음과 같다.
RSS 엔진(110)으로부터 받은 정보에 따라 제1 CPU(321)에 연결된 제1 수신 큐(121)로 전송될 예정인 소정 패킷이 있다고 가정한다. 이 때, 소정 패킷이 제1 CPU에 연결된 제1 수신 큐로 전송될 때, 제1 수신 큐의 가용 버퍼 사용량 정보에 기초하여 제1 수신 큐가 상기 소정 패킷을 수용 가능한지 판단한다(S401).
S401의 판단 결과, 제1 수신 큐가 상기 소정 패킷을 수용 가능한 경우, 제1 수신 큐와 연결된 제1 CPU의 최대 패킷 처리량이 패킷 유입량 보다 큰가를 판단한다(S402). 이 때, 제1 CPU의 최대 패킷 처리량이 패킷 유입량 보다 큰 것으로 판단된 경우, 소정 패킷을 제1 수신 큐로 전송할 것을 최종 결정한다(S403).
S401의 판단 결과, 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 상기 소정 패킷을 수용할 수 있는 제2 수신 큐를 검색한다(S404).
제2 수신 큐를 검색한 이후 상기 제2 수신 큐와 연결된 제2 CPU의 최대 패킷 처리량이 패킷 유입량보다 큰가를 판단한다(S405). 이 때, 제2 CPU의 최대 패킷 처리량이 패킷 유입량 보다 큰 것으로 판단된 경우, 소정 패킷을 제2 수신 큐로 전송할 것을 최종 결정한다(S406).
반면, S404의 판단 결과, 소정 패킷을 수용 가능한 제2 수신 큐 즉, 다른 수신 큐들이 검색되지 않는 경우 패킷을 드롭한다(S407).
그리고, S405 단계의 판단 결과, 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 상기 제1 CPU 및 상기 제2 CPU 이외에 상기 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있으며, 가용 버퍼 사용량 정보에 기초할 때, 소정 패킷을 수용 가능한 임의의 제3 CPU를 검색한다(S408). 이 때, 제3 CPU가 검색되지 않는다면 패킷을 드롭한다(S407).
반면, 제3 CPU가 검색된 경우, 소정 패킷을 제3 수신 큐로 전송할 것을 최종 결정한다(S409).
그리고, S400 단계를 통하여 결정된 수신 큐로 소정 패킷을 전송한다(S500).
이 후, 결정된 수신 큐와 연결된 CPU 측으로 패킷을 전송한다(S600). 이 때, 패킷이 본래 전달될 수신 큐에서 다른 수신 큐로 변경되어 전달된 경우, 패킷과 함께 변경 전의 수신 큐의 정보를 변경 후의 수신 큐에 연결된 CPU 측으로 전송할 수 있다.
즉, 제1 수신 큐 및 제1 CPU 측으로 전송이 예정되었던 소정 패킷을 제2 수신 큐 및 제2 CPU 측 혹은 제3 수신 큐 및 제3 CPU 측으로 전송하는 것으로 변경된 때에는, 소정 패킷과 함께 제1 수신 큐에 대한 정보가 제2 CPU 혹은 제3 CPU 측의 패킷 핸들러로 전송되도록 제어할 수 있다.
예를 들어, 동일한 세션의 소정 패킷이 1번 수신 큐로 전송이 되는 상황에서 제1 CPU의 처리량을 넘어서거나 제1 수신 큐의 버퍼 부족으로 제3 수신 큐로 전송이 된다면, 제1 CPU에서 처리되었던 세션이 제3 CPU에서 처리하게 된다. 이 때, 제3 CPU 측에서는 제1 수신 큐의 정보를 통해서 해당 세션이 제1 CPU에서 처리되었던 것을 파악하여 세션 관리 정보의 참조나 업데이트를 용이하게 한다.
본 발명에 따른 CPU 부하 분산 패킷 처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 모든 형태의 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명의 원리들의 교시들은 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다. 또한, 소프트웨어는 프로그램 저장부 상에서 실재로 구현되는 응용 프로그램으로서 구현될 수 있다. 응용 프로그램은 임의의 적절한 아키텍쳐를 포함하는 머신에 업로드되고 머신에 의해 실행될 수 있다. 바람직하게는, 머신은 하나 이상의 중앙 처리 장치들(CPU), 컴퓨터 프로세서, 랜덤 액세스 메모리(RAM), 및 입/출력(I/O) 인터페이스들과 같은 하드웨어를 갖는 컴퓨터 플랫폼 상에 구현될 수 있다. 또한, 컴퓨터 플랫폼은 운영 체제 및 마이크로 명령 코드를 포함할 수 있다. 여기서 설명된 다양한 프로세스들 및 기능들은 마이크로 명령 코드의 일부 또는 응용 프로그램의 일부, 또는 이들의 임의의 조합일 수 있고, 이들은 CPU를 포함하는 다양한 처리 장치에 의해 실행될 수 있다. 추가로, 추가 데이터 저장부 및 프린터와 같은 다양한 다른 주변 장치들이 컴퓨터 플랫폼에 접속될 수 있다.
첨부 도면들에서 도시된 구성 시스템 컴포넌트들 및 방법들의 일부가 바람직하게는 소프트웨어로 구현되므로, 시스템 컴포넌트들 또는 프로세스 기능 블록들 사이의 실제 접속들은 본 발명의 원리들이 프로그래밍되는 방식에 따라 달라질 수 있다는 점이 추가로 이해되어야 한다. 여기서의 교시들이 주어지면, 관련 기술분야의 당업자는 본 발명의 원리들의 이들 및 유사한 구현예들 또는 구성들을 참작할 수 있을 것이다.
이상에서와 같이 본 발명에 따른 CPU 부하 분산 패킷 처리 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
100; NIC
200; PCI-Express Interface
300; OS
400; CPU 부하 분산 패킷 처리 장치
410; CPU 정보 관리부
420; 수신 큐 관리부
430; 패킷 분배 처리부
440; 패킷 전달부

Claims (14)

  1. 다중 CPU 환경에서 동작하는 CPU 부하 분산 패킷 처리 방법에 있어서,
    상기 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하는 단계;
    상기 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득하는 단계;
    상기 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트 하는 단계; 및
    상기 CPU별 최대 패킷 처리량, 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는 단계를 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  2. 청구항 1에 있어서,
    상기 패킷이 분배될 수신 큐를 결정하는 단계에서는,
    소정 패킷이 제1 CPU에 연결된 제1 수신 큐로 전송될 때, 상기 제1 수신 큐의 가용 버퍼 사용량 정보에 기초하여 상기 제1 수신 큐가 상기 소정 패킷을 수용 가능한지 판단하는 단계; 및
    상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 상기 소정 패킷을 수용할 수 있는 제2 수신 큐를 검색하는 단계를 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  3. 청구항 2에 있어서,
    상기 패킷이 분배될 수신 큐를 결정하는 단계에서는,
    상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 제2 수신 큐를 검색한 이후 상기 제2 수신 큐와 연결된 제2 CPU의 최대 패킷 처리량과 상기 패킷 유입량을 비교하는 단계; 및
    상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 큰 경우, 상기 소정 패킷을 상기 제2 수신 큐로 전송하는 단계를 더 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  4. 청구항 3에 있어서,
    상기 패킷이 분배될 수신 큐를 결정하는 단계에서는,
    상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 상기 제1 CPU 및 상기 제2 CPU 이외에 상기 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있는 제3 CPU를 찾는 단계; 및
    상기 소정 패킷을 상기 제3 CPU와 연결된 제3 수신 큐로 전송하는 단계를 더 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  5. 청구항 4에 있어서,
    상기 제3 수신 큐의 가용 버퍼 사용량 정보에 기초할 때, 상기 제3 수신 큐는 상기 소정 패킷을 수용 가능한 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  6. 청구항 3에 있어서,
    상기 소정 패킷을 상기 제2 수신 큐로 전송하는 단계 이후에,
    상기 소정 패킷을 상기 제2 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  7. 청구항 4에 있어서,
    상기 소정 패킷을 상기 제3 CPU 측으로 전송하는 단계 이후에,
    상기 소정 패킷을 상기 제3 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 방법.
  8. 다중 CPU 환경에서 동작하는 CPU 부하 분산 패킷 처리 장치에 있어서,
    상기 다중 CPU 각각이 처리할 수 있는 CPU별 최대 패킷 처리량을 획득하여 관리하는 CPU 정보 관리부;
    상기 다중 CPU 각각에 연결된 수신 큐들의 가용 버퍼 사용량 정보를 획득하여 관리하고, 상기 수신 큐들로 전송되는 패킷 유입량을 계산하여 수신 큐 관리 테이블에 업데이트 수신 큐 관리부; 및
    상기 CPU별 최대 패킷 처리량, 상기 가용 버퍼 사용량 정보 및 상기 패킷 유입량에 기초하여 유입되는 패킷이 분배될 수신 큐를 결정하는 패킷 분배 처리부를 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  9. 청구항 8에 있어서,
    상기 패킷 분배 처리부는,
    소정 패킷이 제1 CPU에 연결된 제1 수신 큐로 전송될 때, 상기 제1 수신 큐의 가용 버퍼 사용량 정보에 기초하여 상기 제1 수신 큐가 상기 소정 패킷을 수용 가능한지 판단하고,
    상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 수신 큐들의 가용 버퍼 사용량 정보에 기초하여 상기 소정 패킷을 수용할 수 있는 제2 수신 큐를 검색하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  10. 청구항 9에 있어서,
    상기 패킷 분배 처리부는,
    상기 제1 수신 큐가 상기 소정 패킷을 수용하지 못하는 것으로 판단된 경우, 상기 제2 수신 큐를 검색한 이후 상기 제2 수신 큐와 연결된 제2 CPU의 최대 패킷 처리량과 상기 패킷 유입량을 비교하고,
    상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 큰 경우, 상기 소정 패킷을 상기 제2 수신 큐로 전송하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  11. 청구항 10에 있어서,
    상기 패킷 분배 처리부는,
    상기 제2 CPU의 최대 패킷 처리량이 상기 패킷 유입량 보다 작은 경우, 상기 다중 CPU 중 상기 제1 CPU 및 상기 제2 CPU 이외에 상기 패킷 유입량 보다 큰 최대 패킷 처리량을 갖고 있는 제3 CPU를 찾고,
    상기 소정 패킷을 상기 제3 CPU와 연결된 제3 수신 큐로 전송하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  12. 청구항 11에 있어서,
    상기 제3 수신 큐의 가용 버퍼 사용량 정보에 기초할 때, 상기 제3 수신 큐는 상기 소정 패킷을 수용 가능한 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  13. 청구항 10에 있어서,
    상기 소정 패킷을 상기 제2 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하도록 제어하는 패킷 전달부를 더 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.
  14. 청구항 11에 있어서,
    상기 소정 패킷을 상기 제3 CPU 측으로 전송할 때 상기 제1 수신 큐에 대한 정보를 함께 전송하도록 제어하는 패킷 전달부를 더 포함하는 것을 특징으로 하는 CPU 부하 분산 패킷 처리 장치.

KR1020140191953A 2014-12-29 2014-12-29 Cpu 부하 분산 패킷 처리 장치 및 방법 KR101683818B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140191953A KR101683818B1 (ko) 2014-12-29 2014-12-29 Cpu 부하 분산 패킷 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140191953A KR101683818B1 (ko) 2014-12-29 2014-12-29 Cpu 부하 분산 패킷 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160080266A true KR20160080266A (ko) 2016-07-07
KR101683818B1 KR101683818B1 (ko) 2016-12-20

Family

ID=56499985

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140191953A KR101683818B1 (ko) 2014-12-29 2014-12-29 Cpu 부하 분산 패킷 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101683818B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180089752A (ko) * 2017-02-01 2018-08-09 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치
KR20220064816A (ko) * 2020-11-12 2022-05-19 한국과학기술정보연구원 컨테이너 처리 방법, 컨테이너 처리 장치 및 컨테이너 처리 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100193920B1 (ko) * 1995-11-14 1999-06-15 니시무로 타이죠 멀티 프로세서형 컴퓨터
KR20100025335A (ko) * 2008-08-27 2010-03-09 한국전자통신연구원 데이터 처리 시스템
US20100284271A1 (en) * 2002-04-12 2010-11-11 Juniper Networks, Inc. Packet spraying for load balancing across multiple packet processors
KR20130093843A (ko) * 2012-01-27 2013-08-23 주식회사 시큐아이 다중 프로세서 기반의 패킷 처리 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100193920B1 (ko) * 1995-11-14 1999-06-15 니시무로 타이죠 멀티 프로세서형 컴퓨터
US20100284271A1 (en) * 2002-04-12 2010-11-11 Juniper Networks, Inc. Packet spraying for load balancing across multiple packet processors
KR20100025335A (ko) * 2008-08-27 2010-03-09 한국전자통신연구원 데이터 처리 시스템
KR20130093843A (ko) * 2012-01-27 2013-08-23 주식회사 시큐아이 다중 프로세서 기반의 패킷 처리 장치 및 그 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180089752A (ko) * 2017-02-01 2018-08-09 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치
KR20220064816A (ko) * 2020-11-12 2022-05-19 한국과학기술정보연구원 컨테이너 처리 방법, 컨테이너 처리 장치 및 컨테이너 처리 시스템

Also Published As

Publication number Publication date
KR101683818B1 (ko) 2016-12-20

Similar Documents

Publication Publication Date Title
US20220214919A1 (en) System and method for facilitating efficient load balancing in a network interface controller (nic)
US9069722B2 (en) NUMA-aware scaling for network devices
CN114189571B (zh) 用于实施加速网络分组处理的装置和方法
US10218645B2 (en) Low-latency processing in a network node
US8249072B2 (en) Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
US8811417B2 (en) Cross-channel network operation offloading for collective operations
US20170168986A1 (en) Adaptive coalescing of remote direct memory access acknowledgements based on i/o characteristics
US9558132B2 (en) Socket management with reduced latency packet processing
CN109313618A (zh) 用于分组传递的图形处理单元(gpu)
US9390036B2 (en) Processing data packets from a receive queue in a remote direct memory access device
CN104281493A (zh) 一种提升应用交付通讯平台多进程程序性能的方法
US10291682B1 (en) Efficient transmission control protocol (TCP) reassembly for HTTP/2 streams
US20210029052A1 (en) Methods and apparatuses for packet scheduling for software- defined networking in edge computing environment
US10735294B2 (en) Integrating a communication bridge into a data processing system
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
US20220358002A1 (en) Network attached mpi processing architecture in smartnics
WO2019033891A1 (zh) 一种基于rdma的网络流量确定方法及装置
US7466716B2 (en) Reducing latency in a channel adapter by accelerated I/O control block processing
KR101683818B1 (ko) Cpu 부하 분산 패킷 처리 장치 및 방법
US9736080B2 (en) Determination method, device and storage medium
US20170104697A1 (en) Dynamic Optimization for IP Forwarding Performance
WO2015176646A1 (zh) 片上网络的Flit传输方法及装置
US8819302B2 (en) System to manage input/output performance and/or deadlock in network attached storage gateway connected to a storage area network environment
US11909841B2 (en) System, apparatus and method for adaptive peer-to-peer communication with edge platform
US20160006660A1 (en) Communication control method, information processing apparatus, and storage medium

Legal Events

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

Payment date: 20191202

Year of fee payment: 4