KR101912393B1 - 네트워크 장치 및 그의 인터럽트 관리 방법 - Google Patents

네트워크 장치 및 그의 인터럽트 관리 방법 Download PDF

Info

Publication number
KR101912393B1
KR101912393B1 KR1020170020593A KR20170020593A KR101912393B1 KR 101912393 B1 KR101912393 B1 KR 101912393B1 KR 1020170020593 A KR1020170020593 A KR 1020170020593A KR 20170020593 A KR20170020593 A KR 20170020593A KR 101912393 B1 KR101912393 B1 KR 101912393B1
Authority
KR
South Korea
Prior art keywords
core
port
processors
network interface
queues
Prior art date
Application number
KR1020170020593A
Other languages
English (en)
Other versions
KR20180094369A (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 KR1020170020593A priority Critical patent/KR101912393B1/ko
Publication of KR20180094369A publication Critical patent/KR20180094369A/ko
Application granted granted Critical
Publication of KR101912393B1 publication Critical patent/KR101912393B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 복수의 코어를 통하여 패킷 처리를 수행하는 복수의 프로세서, 상기 복수의 프로세서와 각각 연결되고, 외부로부터 패킷이 유입되면, 상기 패킷이 유입된 큐(Queue)에 대응하여 미리 할당된 코어로, 인터럽트를 전달하는 복수의 네트워크 인터페이스 카드 및 상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 카드에 대한 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 설정되는 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 인터럽트 분배 장치를 포함하는 것을 특징으로 하는 네트워크 장치 및 그의 인터럽트 관리 방법에 관한 것이다.

Description

네트워크 장치 및 그의 인터럽트 관리 방법{Network device and interrupt management method of the network device}
본 발명은 네트워크 장치 및 그의 인터럽트 관리 방법에 관한 것으로, 보다 구체적으로 네트워크 장치에서 발생하는 인터럽트를 동적으로 코어에 할당하도록 하는 네트워크 장치 및 그의 인터럽트 관리 방법에 관한 것이다.
네트워크 인터페이스 카드는 큐(Queue)에 저장된 패킷을 처리하기 위해 해당 패킷을 처리할 프로세서 내의 코어로 인터럽트를 전달하고, 이후에 해당 코어로 패킷을 전달한다.
네트워크 인터페이스 카드는 구현 기술에 따라 사용할 수 있는 큐의 개수가 제한되어 있어, 큐에 저장된 패킷이 신속하게 코어로 전달되지 못하는 경우 패킷 처리 지연에 따른 패킷 드롭이 발생하게 된다. 따라서, 네트워크 장치에 있어서 인터럽트를 어느 코어가 처리하도록 결정하느냐에 따라 성능이 크게 좌우된다.
종래에는 초기에 인터럽트를 처리할 코어를 정적으로 미리 설정하는 방식을 이용하였다. 그러나 이러한 방식은 특정 코어에 인터럽트가 집중되는 현상을 일으키거나, 현재 로드가 없어 대기 중인 코어를 효율적으로 활용할 수 없도록 한다. 또한, 이러한 종래의 방식은 네트워크 인터페이스 카드의 큐 개수, 프로세서의 코어 수, 시스템 구조, 링크업 상태, 프로세서 장애 등, 네트워크 장치에서 발생하는 다양한 상황을 고려하지 못하기 때문에 장치의 최대 성능을 발휘할 수 없는 문제가 있었다.
본 발명은 상기한 문제를 해결하기 위한 것으로, 네트워크 장치에서 발생하는 인터럽트를 동작 환경에 알맞게 동적으로 프로세서에 할당하도록 하는 네트워크 장치 및 그의 인터럽트 관리 방법을 제공한다.
상술한 과제를 해결하기 위한 본 발명에 따른 네트워크 장치는, 복수의 코어를 통하여 패킷 처리를 수행하는 복수의 프로세서, 상기 복수의 프로세서와 각각 연결되고, 외부로부터 패킷이 유입되면, 상기 패킷이 유입된 큐(Queue)에 대응하여 미리 할당된 코어로, 인터럽트를 전달하는 복수의 네트워크 인터페이스 카드 및 상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 카드에 대한 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 설정되는 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 인터럽트 분배 장치를 포함하는 것을 특징으로 한다.
또한, 상기 인터럽트 분배 장치는, 상기 모니터링 결과를 기초로, 상기 복수의 큐에 대하여, 상기 복수의 큐가 설정되는 네트워크 인터페이스 카드와 직접 연결된 프로세서의 코어를 각각 할당하는 것을 특징으로 한다.
또한, 상기 인터럽트 분배 장치는, 상기 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 구비되는 임의의 포트가 링크다운 상태인 것으로 판단되면, 상기 임의의 포트에 설정된 복수의 큐에 할당된 코어를 회수하는 것을 특징으로 한다.
또한, 상기 인터럽트 분배 장치는, 상기 대응되는 코어가 할당되지 않은 큐에 대하여, 상기 회수된 코어를 할당하는 것을 특징으로 한다.
또한, 상기 인터럽트 분배 장치는, 상기 모니터링 결과를 기초로, 임의의 코어에 장애가 발생한 것으로 판단되면, 상기 임의의 코어를 할당받은 큐에 대하여 다른 코어를 재할당하는 것을 특징으로 한다.
또한, 상기 모니터링 결과는, 상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 간 연결 상태, 상기 복수의 프로세서 및 상기 복수의 프로세서 각각에 구비되는 상기 복수의 코어에 대한 상태, 상기 복수의 네트워크 인터페이스 카드에 구비되는 적어도 하나의 포트에 대한 상태 중 적어도 하나에 대한 모니터링 결과를 포함하는 것을 특징으로 한다.
또한, 상기 복수의 네트워크 인터페이스 카드는, 적어도 하나의 포트를 포함하고, 상기 적어도 하나의 포트 각각에 적어도 하나의 큐를 설정하는 것을 특징으로 한다.
또한, 상기 복수의 네트워크 인터페이스 카드는, PCIe 인터페이스를 통하여 상기 복수의 프로세서와 각각 독립적으로 연결되는 것을 특징으로 한다.
또한, 인터럽트 분배 장치는, 상기 모니터링 결과 및 상기 복수의 큐에 동적으로 할당되는 코어에 관한 정보를 인터럽트 분배 정보로 저장하고 관리하는 것을 특징으로 한다.
또한, 상기 인터럽트 분배 정보는, 큐 번호, PCIe 번호, 포트 번호, 포트 상태, 인터럽트 번호, 할당된 코어, 할당된 코어의 상태 중 적어도 하나를 포함하는 것을 특징으로 한다.
또한, 상술한 과제를 해결하기 위한 본 발명에 따른 네트워크 장치의 인터럽트 관리 방법은, 복수의 코어를 통하여 패킷 처리를 수행하는 복수의 프로세서 및 상기 복수의 프로세서 각각에 독립적으로 연결된 복수의 네트워크 인터페이스 카드의 상태를 모니터링하는 단계 및 상기 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 설정되는 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계를 포함하되, 상기 복수의 큐는, 외부로부터 패킷이 유입되면, 상기 할당된 코어로 인터럽트를 전달하도록 구성되는 것을 특징으로 한다.
또한, 상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는, 상기 모니터링 결과를 기초로, 상기 복수의 큐 각각이 설정되는 네트워크 인터페이스 카드와 직접 연결된 프로세서를 판단하는 단계 및 상기 복수의 큐 각각에 대하여 상기 판단된 프로세서의 코어를 할당하는 하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는, 상기 모니터링 결과를 기초로, 링크다운 상태인 포트가 존재하는지 여부를 판단하는 단계 및 상기 판단 결과 임의의 포트가 링크다운 상태인 것으로 판단되면, 상기 임의의 포트에 설정되는 복수의 큐에 할당된 코어를 회수하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는, 상기 대응되는 코어가 할당되지 않은 큐에 대하여, 상기 회수된 코어를 할당하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는, 상기 모니터링 결과를 기초로, 장애가 발생한 코어가 존재하는지 여부를 판단하는 단계 및 상기 판단 결과 임의의 코어에 장애가 발생한 것으로 판단되면, 상기 임의의 코어를 할당받은 큐에 대하여 다른 코어를 재할당하는 것을 특징으로 한다.
또한, 상기 모니터링하는 단계는, 상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 간 연결 상태, 상기 복수의 프로세서 및 상기 복수의 프로세서 각각에 구비되는 상기 복수의 코어에 대한 상태, 상기 복수의 네트워크 인터페이스 카드에 구비되는 적어도 하나의 포트에 대한 상태 중 적어도 하나를 모니터링하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 모니터링 결과 및 상기 복수의 큐에 동적으로 할당되는 코어에 관한 정보를 인터럽트 분배 정보로 저장하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명에 따른 네트워크 장치 및 그의 인터럽트 관리 방법은, 네트워크의 다양한 상황을 고려하여 인터럽트를 코어에 할당함으로써, 네트워크 장치의 최대 성능을 발휘하고, 장애 상황에 대한 대비가 가능하도록 한다.
도 1은 NUMA 구조를 설명하기 위한 도면이다.
도 2 내지 도 6은 네트워크 인터페이스 카드의 각 큐에 프로세서의 코어를 할당하는 예를 나타낸 도면이다.
도 7은 본 발명에 따른 네트워크 장치의 구조를 나타낸 블록도이다.
도 8은 본 발명에 따른 네트워크 장치의 인터럽트 관리 방법을 나타낸 순서도이다.
본 명세서의 실시 예를 설명함에 있어 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우, 그 상세한 설명은 생략될 수 있다.
본 명세서에서 사용되는 "포함한다," "포함할 수 있다." 등의 표현은 개시된 해당 기능, 동작, 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작, 구성요소 등을 제한하지 않는다. 또한, 본 명세서에서, "포함하다." 또는 "가지다." 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.  
본 명세서에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하, 첨부된 도면을 참조하여 본 발명을 설명한다.
도 1은 NUMA 구조를 설명하기 위한 도면이다.
기존의 네트워크 장치는 네트워크 장치 내에 구비되는 복수의 프로세서들이 상호 간에 연결되어 하나의 메모리를 공유하는 UMA(Uniform Memory Access) 구조를 이용하였다.
UMA 구조는 그 형태가 간단하고 프로그래밍이 쉽다는 장점을 갖지만, 복수의 프로세서들이 동일 메모리 주소에 접근하는 경우에 성능 충돌이 발생할 수 있어, 시스템의 크기가 커질수록 효율성이 떨어지게 된다.
이러한 문제를 해결하기 위해, 최근에는 네트워크 장치에 NUMA(Non-Uniformed Memory Access) 구조가 적용되었다.
NUMA 구조는 복수의 프로세서를 포함하며, 복수의 프로세서는 복수의 메모리에 각각 독립적으로 연결된다. 또한, 복수의 프로세서는 복수의 네트워크 인터페이스 카드에 각각 연결된다.
도 1의 실시 예에서, 네트워크 장치(100)는 프로세서 1(111) 및 프로세서 2(112)를 포함하여 구성되며, 프로세서 1(111) 및 프로세서 2(112)는 메모리 1(121) 및 메모리 2(122)에 각각 독립적으로 연결된다.
각각의 프로세서(111, 112)는 멀티코어 시스템으로 구성될 수 있다. 도 1의 실시 예에서, 프로세서 1(111)은 코어 0 내지 코어 7(Core 0 내지 Core 7)을 포함하며, 프로세서 2(112)는 코어 8 내지 코어 15(Core 8 내지 Core 15)를 포함할 수 있다.
NUMA 구조에 있어서, 각각의 프로세서(111, 112)가 메모리(121, 122)에 접근하기 위해 소요되는 시간은 프로세서(111, 112)와 메모리(121, 122)의 상대적인 위치에 따라 달라진다. 즉, 도 1에서 프로세서 1(111)이 메모리 1(121)에 접근하기 위해 소요되는 시간은 메모리 2(122)에 접근하기 위해 소요되는 시간보다 짧다. 또한, 도 1에서 프로세서 2(112)가 메모리 1(121)에 접근하기 위해 소요되는 시간은 메모리 2에(122) 접근하기 위해 소요되는 시간보다 길다.
또한, 도 1의 실시 예에서, 네트워크 장치(100)는 외부와 데이터 통신을 수행하기 위한 네트워크 인터페이스 카드 1(131) 및 네트워크 인터페이스 카드 2(132)를 포함한다. 각각의 네트워크 인터페이스 카드(131, 132)는 각각의 프로세서(111, 112)에 독립적으로 연결될 수 있다.
이때, 각 네트워크 인터페이스 카드(131, 132)와 프로세서(111, 112)는 PCIe 인터페이스(141, 142)를 통하여 연결될 수 있다. 각각의 프로세서(111, 112)는 PCIe 인터페이스(141, 142)에 번호를 할당하고, 할당된 번호를 이용하여 각각의 PCIe 인터페이스(141, 142)에 연결된 네트워크 인터페이스 카드(131, 132)를 식별할 수 있다.
메모리(121, 122)와 마찬가지로, PCIe 인터페이스(141, 142)를 통하여 직접 연결된 프로세서(111, 112)와 네트워크 인터페이스 카드(131, 132) 간 통신 속도는 빠르지만, PCIe 인터페이스(141, 142)를 통하여 직접 연결되지 않은 프로세서(111, 112)와 네트워크 인터페이스 카드(131, 132) 간 통신 속도는 상대적으로 느리다.
각각의 네트워크 인터페이스 카드(131, 132)는 적어도 하나의 포트를 포함하여 구성될 수 있다. 도 1의 실시 예에서, 네트워크 인터페이스 카드 1(131)은 포트 0(Port 0) 및 포트 1(Port 1)을 포함하고, 네트워크 인터페이스 카드 2(132)는 포트 2(Port 2) 및 포트 3(Port 3)을 포함하여 구성될 수 있다.
각각의 포트(Port 0, Port 1, Port 2, Port 3)에는 임의의 개수의 큐가 할당된다. 각각의 포트(Port 0, Port 1, Port 2, Port 3)에 할당되는 큐의 수는 제한된 개수 내에서 유동적으로 변화할 수 있다. 도 1의 실시 예에서는 각각의 포트에 4개의 큐(Q0, Q1, Q2, Q3)가 할당되는 예가 도시되어 있다.
임의의 포트로 패킷이 유입되면, 기설정된 알고리즘에 따라 결정되는 큐에 패킷이 저장될 수 있다. 큐에 패킷이 저장되면, 네트워크 인터페이스 카드(131, 132)는 해당 큐에 대응하는 코어로 패킷이 수신되었음을 알리는 인터럽트를 전송한다. 이후에, 해당 코어에서 패킷 처리 가능 상태를 알리는 응답이 수신되면, 네트워크 인터페이스 카드(131, 132)는 해당 패킷을 해당 코어로 전달한다.
상술한 패킷 처리 동작을 수행하기 위해, 네트워크 장치(100)에서는 각각의 큐에 대응하는 코어가 할당되어야 한다. 이하에서는, 네트워크 장치(100)에서 각각의 큐에 코어를 할당하는 다양한 실시 예를 설명한다.
도 2 내지 도 6은 네트워크 인터페이스 카드의 각 큐에 프로세서의 코어를 할당하는 예를 나타낸 도면이다.
도 2의 실시 예에서, 네트워크 인터페이스 카드의 각 큐에는 복수의 프로세서에 포함된 코어들이 1:1로 할당될 수 있다.
일 예로, 도 2의 실시 예에서, 네트워크 인터페이스 카드 1(131)의 포트 0(PORT 0)에 16개의 큐(Q0 내지 Q15)가 설정되어 있다. 16개의 큐(Q0 내지 Q15)에는, 프로세서 1(111) 및 프로세서 2(112)를 구성하는 코어 0 내지 코어 15(Core 0 내지 Core 15)가 1:1 매핑될 수 있다.
도시되지 않았지만, 나머지 포트들(PORT 1 내지 PORT 3)에 설정된 큐들도 포트 0(PORT 0)과 마찬가지로, 코어 0(Core 0) 내지 코어 15(Core 15)에 1:1 매핑될 수 있다.
이러한 할당은 각 큐에 코어를 범용적으로 할당하는 것으로, 네트워크 환경의 변화는 고려하지 않는다. 도 2와 같이 각 큐에 코어가 할당되는 경우, 인터럽트는 모든 코어로 분산된다. 그러나 일반적인 네트워크 장치(100)에서 큐의 수와 코어의 수가 일치하지 않는 경우에, 각각의 큐에 어떤 코어를 할당해야 하는지 문제된다.
도 3의 실시 예에서, 네트워크 인터페이스 카드 1(131)의 포트 0(PORT 0)에는 4개의 큐(Q0 내지 Q3)가 설정된다. 큐(Q0 내지 Q3)에는 프로세서 2(112)의 코어 8 내지 코어 11(Core 8 내지 Core 11)에 각각 할당된다.
상술한 바와 같이, NUMA 구조에서 PCIe 인터페이스를 통해 직접 연결되지 않는 프로세서 2(112)와 네트워크 인터페이스 카드 1(131) 간의 통신 속도는 상대적으로 느리므로, 도 3과 같은 실시 예에서, 네트워크 장치(100)의 성능은 떨어지게 된다.
즉, 네트워크 장치(100)에 있어서 네트워크 인터페이스 카드의 큐에 코어를 할당할 때에는, 해당 네트워크 인터페이스 카드와 직접 연결된 프로세서가 어느 것인지를 고려해야 한다. 다시 말해, 네트워크 장치(100)는 네트워크 인터페이스 카드가 연결된 PCIe 인터페이스의 root port가 어느 프로세서인지를 판단하고, 해당 네트워크 인터페이스 카드의 큐에 대하여 판단된 프로세서의 코어를 할당해야 한다.
도 4의 실시 예에서, 네트워크 인터페이스 카드 1(131)의 포트 0(PORT 0) 및 포트 1(PORT 1)에는 각각 5개의 큐(Q0 내지 Q4, Q5 내지 Q9)가 설정된다.
도 4에서, 네트워크 인터페이스 카드 1(131)의 모든 포트(PORT 0 및 PORT 1)에 설정된 큐(Q0 내지 Q4, Q5 내지 Q9)는 모두 10개이나, 네트워크 인터페이스 카드 1(131)에 직접 연결된 프로세서 1(111)의 코어는 코어 0 내지 코어 7(Core 0 내지 Core 7)로 모두 8개이다.
이 경우, 큐의 개수보다 코어의 개수가 적기 때문에, 모든 큐(Q0 내지 Q9)에 코어가 할당되지 못할 수 있다.
일 예로, 도 4에 도시된 바와 같이, 포트 0(PORT 0)의 큐 0 내지 큐 3(Q0 내지 Q3)에는 프로세서 1(111)의 코어 0 내지 코어 3(Core 0 내지 Core 3)가 할당되지만, 큐 4(Q4)에는 코어가 할당되지 못할 수 있다.
유사하게, 포트 1(PORT 1)의 큐 5 내지 큐 8(Q5 내지 Q8)에는 프로세서 1(111)의 코어 4 내지 코어 7(Core 4 내지 Core 7)가 각각 할당되지만, 큐 9(Q9)에는 코어가 할당되지 못할 수 있다.
만약, 네트워크 인터페이스 카드 1(131)의 포트 1(PORT 1)이 어떠한 이유로 링크 다운된 경우, 포트 1(PORT 1)을 통하여는 패킷이 수신되지 않으므로 포트 1(PORT 1)에 할당된 코어 4 내지 코어 7(Core 4 내지 Core 7)은 처리할 패킷이 없어 유휴 자원이 발생하게 된다. 그럼에도 불구하고, 링크 온 상태의 포트 0(PORT 0)에서 큐 4(Q4)에는 여전히 코어가 할당되지 못하여 유휴 자원을 효율적으로 사용하지 못하는 문제가 있다.
따라서, 네트워크 장치(100)에 있어서 네트워크 인터페이스 카드의 큐에 코어를 할당할 때에는, 각 포트의 링크 상태(링크업 또는 링크다운 상태)를 고려하여 능동적으로 코어를 할당할 수 있어야 한다.
즉, 네트워크 장치(100)는 임의의 네트워크 인터페이스 카드의 포트가 링크다운인 것으로 감지되면, 해당 포트에 할당된 코어를 회수하고, 코어 할당이 필요한 다른 큐를 위하여 회수된 코어를 할당할 수 있다.
도 4의 실시 예에서, 포트 1(PORT 1)이 링크 다운된 것을 판단된 경우, 네트워크 장치(100)는 도 5에 도시된 바와 같이, 포트 1(PORT 1)의 큐 5 내지 큐 9(Q5 내지 Q9)에 할당된 코어를 회수하고, 포트 0(PORT 0)의 큐 4(Q4)에 대하여 코어 7(Core 7)을 할당할 수 있다.
도 5와 같이 각 포트에 코어가 할당된 상태에서, 도 6에 도시된 바와 같이 코어 7(Core 7)에 장애가 발생하는 경우를 가정한다. 코어의 장애는 로드 과부하, 전원 공급 중단, 물리적인 고장 등으로 발생할 수 있다.
이 경우, 코어 7(Core 7)을 할당받은 큐 4(Q4)에서 패킷 처리를 위해 코어 7(Core 7)로 인터럽트를 전송하더라도, 코어 7(Core 7)에서는 그에 따를 처리를 수행하지 못하고, 큐 4(Q4)의 패킷 역시 정상적으로 처리될 수 없다.
따라서, 네트워크 장치(100)는 각 프로세서를 구성하는 코어의 상태를 모니터링하고, 임의의 코어에 장애가 발생한 것으로 감지되는 경우, 해당 코어를 할당받은 큐에 대하여 새로운 코어를 재할당하여야 한다.
본 발명에서는, 상술한 바와 같이 네트워크에서 발생할 수 있는 다양한 상황을 고려하여 각각의 큐에 코어를 할당하는 방법을 제공한다.
도 7은 본 발명에 따른 네트워크 장치의 구조를 나타낸 블록도이다.
도 7을 참조하면, 본 발명에 따른 네트워크 장치(700)는 복수의 프로세서(711, 712) 및 복수의 메모리(721, 722)를 포함할 수 있다. 도 7에서는 2개의 프로세서와 2개의 메모리가 포함된 예를 도시하였으나, 본 발명은 이에 한정되지 않으며 네트워크 장치(700)에는 3개 이상의 프로세서 및 그에 대응하는 3개 이상의 메모리가 포함될 수 있다. 또한, 복수의 프로세서(711, 712)는 복수의 네트워크 인터페이스 카드(731, 732)와 각각 연결된다. 이때, 각 네트워크 인터페이스 카드(731, 732)와 프로세서(711, 712)는 PCIe 인터페이스(751, 752)를 통하여 연결될 수 있다.
복수의 프로세서(711, 712), 복수의 메모리(721, 722) 및 복수의 네트워크 인터페이스 카드(731, 732) 각각 및 이들이 유기적인 관계의 설명은 도 1을 참조하여 설명한 바와 동일하므로 생략한다.
본 발명에 따른 네트워크 장치(700)는 인터럽트 분배 장치(740)를 더 포함하여 구성된다. 인터럽트 분배 장치(740)는, 복수의 네트워크 인터페이스 카드(731, 732)에 각 포트 별로 설정되는 적어도 하나의 큐에 대하여, 복수의 프로세서(711, 712)에 구비되는 코어를 각각 할당한다. 즉, 인터럽트 분배 장치(740)는 임의의 큐에 패킷이 유입되는 경우, 해당 큐에서 유입된 패킷에 대응하는 인터럽트를 전송할 코어를 할당할 수 있다.
이를 위하여 인터럽트 분배 장치(740)는 통신부(741), 제어부(742) 및 저장부(743)를 포함하여 구성될 수 있다.
통신부(741)는 인터럽트 분배 장치(740)의 외부와 데이터 통신을 수행한다. 구체적으로, 통신부(741)는 복수의 프로세서(711, 712), 복수의 메모리(721, 722) 및 복수의 네트워크 인터페이스 카드(731, 732) 중 적어도 하나로부터 데이터를 수신하여 제어부(742)로 전달하거나, 제어부(742)의 제어에 따라 이들로 데이터를 전송할 수 있다.
제어부(742)는 인터럽트 분배 장치(740)의 전반적인 동작을 제어한다.
구체적으로, 제어부(742)는 프로세서 및 네트워크 인터페이스 카드 간 연결 상태, 프로세서 및 프로세서에 구비되는 코어의 상태, 네트워크 인터페이스 카드의 포트 상태 및 각 포트의 큐 상태 중 적어도 하나를 모니터링할 수 있다.
일 실시 예에서, 제어부(742)는 네트워크 장치(700)의 시스템 구조를 모니터링할 수 있다. 구체적으로, 제어부(742)는 네트워크 장치(700)의 시스템 구조가 UMA 구조인지, NUMA 구조인지 등을 판단할 수 있다.
일 실시 예에서, 제어부(742)는 각각의 프로세서(711, 712)와 네트워크 인터페이스 카드(731, 732) 간 연결 상태를 모니터링할 수 있다. 구체적으로, 제어부(742)는 각각의 네트워크 인터페이스 카드(731, 732)에 대하여 직접 연결된 프로세서(711, 712)를 판단할 수 있다. 이를 위하여, 제어부(742)는 각 네트워크 인터페이스 카드(731, 732)가 연결된 프로세서(711, 712)의 PCIe 인터페이스(751, 752) 번호를 식별할 수 있다.
일 실시 예에서, 제어부(742)는 복수의 프로세서(711, 712)의 상태를 모니터링할 수 있다. 구체적으로, 제어부(742)는 각 프로세서(711, 712) 내에 구비되는 복수의 코어의 개수 및 각각의 코어에 대한 장애 상태 여부를 판단할 수 있다.
일 실시 예에서, 제어부(742)는 각 네트워크 인터페이스 카드(731, 732)의 포트 상태 및 큐 상태 중 적어도 하나를 모니터링할 수 있다. 구체적으로, 제어부(742)는 각 네트워크 인터페이스 카드(731, 732)에 구비되는 적어도 하나의 포트에 대한 포트 번호 및 각 포트에 설정되는 적어도 하나의 큐의 개수 및 각 큐의 큐 번호를 판단할 수 있다. 또한, 제어부(742)는 적어도 하나의 큐에 대한 코어 할당 여부 및 할당된 코어에 관한 정보를 판단할 수 있다. 일 실시 예에서, 기저장된 인터럽트 분배 정보가 존재하는 경우, 제어부(742)는 인터럽트 분배 정보를 기초로, 적어도 하나의 큐에 할당된 코어에 관한 정보를 판단할 수 있다.
제어부(742)는 상술한 모니터링 결과에 기초하여, 적어도 하나의 큐에 대해 코어를 할당할 수 있다.
구체적으로, 제어부(742)는 적어도 하나의 큐에 대해, 각 큐가 설정된 네트워크 인터페이스 카드에 직접 연결된 프로세서의 코어를 할당할 수 있다.
또한, 제어부(742)는 임의의 포트가 링크다운 상태인 것으로 판단되면, 해당 포트에 설정된 적어도 하나의 큐에 할당되었던 코어를 회수하고, 회수된 코어를 링크업 상태의 다른 포트에 설정된 큐에 할당할 수 있다. 일 실시 예에서, 제어부(742)는 판단된 전체 코어의 개수가 판단된 전체 큐의 개수보다 적을 때, 포트의 링크 상태를 기초로 적어도 하나의 큐 각각에 코어를 할당할 수 있다.
또한, 제어부(742)는 임의의 큐에 할당된 코어가 장애 상태인 것으로 판단되면, 해당 코어를 할당받은 큐에 대하여 장애 상태가 아닌 다른 코어를 재할당할 수 있다.
제어부(742)는 모니터링 결과에 따라 적어도 하나의 큐에 동적으로 할당되는 코어에 관한 정보를 인터럽트 분배 정보로 저장하고 관리할 수 있다. 일 실시 예에서, 인터럽트 분배 정보는 하기 표 1과 같은 인터럽트 분배 테이블로 구성될 수 있다.
큐 번호 PCIe 포트 번호 포트 상태 인터럽트 번호 할당 코어 할당 코어 상태
0 0 0 UP 93 0 Normal
1 0 1 UP 108 1 Normal
0 1 0 UP 95 9 Normal
표 1에 개시된 인터럽트 분배 정보는 일 실시 예에 불과한 것으로, 다양한 실시 예에서, 인터럽트 분배 정보는 설정에 따라 더 많은 정보가 추가되거나 정보의 일부가 생략될 수 있다.
저장부(743)는 인터럽트 분배 장치(740)의 동작을 위하여 필요한 프로그램, 데이터 등을 저장할 수 있다. 도 7의 실시 예에서는, 저장부(743)가 인터럽트 분배 장치(740) 내에 독립적으로 구비되는 것으로 설명하나, 본 발명의 기술 사상은 이애 한정되지 않으며, 일 예로, 인터럽트 분배 장치(740)는 네트워크 장치(700)에 구비되는 저장 장치를 이용할 수 있다.
본 발명의 다양한 실시 예에서, 저장부(743)는 제어부(742)의 제어에 따라 모니터링 결과를 통해 수집되는 데이터, 인터럽트 분배 정보 등을 저장할 수 있다.
도 8은 본 발명에 따른 네트워크 장치의 인터럽트 관리 방법을 나타낸 순서도이다.
도 8을 참조하면, 본 발명에 따른 네트워크 장치(700)가 구동되면, 네트워크 장치(700)는 프로세서 및 네트워크 인터페이스 카드 간 연결 상태, 프로세서 상태, 네트워크 인터페이스 카드의 포트 상태 및 각 포트의 큐 상태 중 적어도 하나를 모니터링할 수 있다(810).
이후에, 네트워크 장치(700)는 모니터링 결과를 기초로, 네트워크 인터페이스 카드의 각 포트에 할당된 적어도 하나의 큐에 대하여, 대응되는 코어를 각각 할당할 수 있다(820).
구체적으로, 네트워크 장치(700)는 네트워크 장치(700) 내에 구비되는 복수의 네트워크 인터페이스 카드 각각에 대하여 직접 연결된 프로세서를 판단할 수 있다(821).
이후에, 네트워크 장치(700)는 판단된 전체 코어의 개수가 판단된 전체 큐의 개수보다 적은 지 여부를 판단할 수 있다(822).
판단된 전체 코어의 개수가 판단된 전체 큐의 개수보다 적지 않으면, 네트워크 장치(700)는 전체 큐에 대하여, 각각의 큐가 설정된 포트와 직접 연결된 프로세서의 코어를 각각 할당할 수 있다(823). 이때, 네트워크 장치(700)는 각 큐가 설정된 포트와 직접 연결된 프로세서의 코어들 중 임의의 코어를, 해당 큐에 할당할 수 있다.
판단된 전체 코어의 개수가 판단된 전체 큐의 개수보다 적으면, 네트워크 장치(700)는 전체 큐의 일부에 대하여 코어를 각각 할당할 수 있다(824).
이후에, 네트워크 장치(700)는 링크다운 상태인 포트가 존재하는지 여부를 판단할 수 있다(825).
링크다운 상태인 포트가 감지되면, 네트워크 장치(700)는 해당 포트에 설정된 적어도 하나의 큐에 대하여 할당되었던 코어를 회수할 수 있다(826). 추가로, 네트워크 장치(700)는 코어가 할당되지 않은 큐가 있는 경우, 회수된 코어를 해당 큐에 할당할 수 있다.
이후에, 네트워크 장치(700)는 장애가 발생한 코어가 존재하는지 여부를 판단할 수 있다(827). 장애가 발생한 코어가 감지되면, 네트워크 장치(700)는 해당 코어를 할당받은 큐에 대하여 할당 가능한 코어를 재판단하여 할당할 수 있다(828).
네트워크 장치(700)는 적어도 하나의 큐에 대하여 할당된 코어에 관한 정보를 인터럽트 관리 정보로써 저장하고 관리할 수 있다(830).
네트워크 장치(700)는 시스템 종료 요청, 전원 공급 중단 등 시스템 종료 이벤트가 발생할 때까지(840), 상술한 동작을 반복하여 인터럽트 관리를 수행할 수 있다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
700: 네트워크 장치
711, 712: 프로세서
721, 722: 메모리
731, 732: 네트워크 인터페이스 카드
740: 인터럽트 분배 장치
741: 통신부
742: 제어부
743: 저장부
751, 752: PCIe 인터페이스

Claims (17)

  1. 복수의 코어를 통하여 패킷 처리를 수행하는 복수의 프로세서;
    상기 복수의 프로세서와 각각 연결되고, 외부로부터 패킷이 유입되면, 상기 패킷이 유입된 큐(Queue)에 대응하여 미리 할당된 코어로, 인터럽트를 전달하는 복수의 네트워크 인터페이스 카드; 및
    상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 카드에 대한 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 설정되는 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 인터럽트 분배 장치를 포함하되,
    상기 인터럽트 분배 장치는,
    상기 모니터링 결과를 기초로, 상기 복수의 큐에 대하여, 상기 복수의 큐가 설정되는 네트워크 인터페이스 카드와 직접 연결된 프로세서의 코어를 각각 할당하며, 상기 복수의 네트워크 인터페이스 카드에 구비되는 임의의 포트가 링크다운 상태인 것으로 판단되면, 상기 임의의 포트에 설정된 복수의 큐에 할당된 코어를 회수하여 상기 대응되는 코어가 할당되지 않은 큐에 재할당하는 것을 특징으로 하는 네트워크 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 인터럽트 분배 장치는,
    상기 모니터링 결과를 기초로, 임의의 코어에 장애가 발생한 것으로 판단되면, 상기 임의의 코어를 할당받은 큐에 대하여 다른 코어를 재할당하는 것을 특징으로 하는 네트워크 장치.
  6. 제1항에 있어서, 상기 모니터링 결과는,
    상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 간 연결 상태, 상기 복수의 프로세서 및 상기 복수의 프로세서 각각에 구비되는 상기 복수의 코어에 대한 상태, 상기 복수의 네트워크 인터페이스 카드에 구비되는 적어도 하나의 포트에 대한 상태 중 적어도 하나에 대한 모니터링 결과를 포함하는 것을 특징으로 하는 네트워크 장치.
  7. 제1항에 있어서, 상기 복수의 네트워크 인터페이스 카드는,
    적어도 하나의 포트를 포함하고, 상기 적어도 하나의 포트 각각에 적어도 하나의 큐를 설정하는 것을 특징으로 하는 네트워크 장치.
  8. 제1항에 있어서, 상기 복수의 네트워크 인터페이스 카드는,
    PCIe 인터페이스를 통하여 상기 복수의 프로세서와 각각 독립적으로 연결되는 것을 특징으로 하는 네트워크 장치.
  9. 제1항에 있어서, 인터럽트 분배 장치는,
    상기 모니터링 결과 및 상기 복수의 큐에 동적으로 할당되는 코어에 관한 정보를 인터럽트 분배 정보로 저장하고 관리하는 것을 특징으로 하는 네트워크 장치.
  10. 제9항에 있어서, 상기 인터럽트 분배 정보는,
    큐 번호, PCIe 번호, 포트 번호, 포트 상태, 인터럽트 번호, 할당된 코어, 할당된 코어의 상태 중 적어도 하나를 포함하는 것을 특징으로 하는 네트워크 장치.
  11. 복수의 코어를 통하여 패킷 처리를 수행하는 복수의 프로세서 및 상기 복수의 프로세서 각각에 독립적으로 연결된 복수의 네트워크 인터페이스 카드의 상태를 모니터링하는 단계; 및
    상기 모니터링 결과를 기초로, 상기 복수의 네트워크 인터페이스 카드에 설정되는 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계를 포함하되,
    상기 복수의 큐는,
    외부로부터 패킷이 유입되면, 상기 할당된 코어로 인터럽트를 전달하도록 구성되고,
    상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는,
    상기 모니터링 결과를 기초로, 상기 복수의 큐 각각이 설정되는 네트워크 인터페이스 카드와 직접 연결된 프로세서를 판단하는 단계;
    상기 복수의 큐 각각에 대하여 상기 판단된 프로세서의 코어를 할당하는 하는 단계;
    링크다운 상태인 포트가 존재하는지 여부를 판단하는 단계;
    상기 판단 결과 임의의 포트가 링크다운 상태인 것으로 판단되면, 상기 임의의 포트에 설정되는 복수의 큐에 할당된 코어를 회수하여 상기 대응되는 코어가 할당되지 않은 큐에 재할당하는 단계를 포함하는 것을 특징으로 하는 네트워크 장치의 인터럽트 관리 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 제11항에 있어서, 상기 복수의 큐에 대하여 대응되는 코어를 각각 할당하는 단계는,
    상기 모니터링 결과를 기초로, 장애가 발생한 코어가 존재하는지 여부를 판단하는 단계; 및
    상기 판단 결과 임의의 코어에 장애가 발생한 것으로 판단되면, 상기 임의의 코어를 할당받은 큐에 대하여 다른 코어를 재할당하는 것을 특징으로 하는 네트워크 장치의 인터럽트 관리 방법.
  16. 제11항에 있어서, 상기 모니터링하는 단계는,
    상기 복수의 프로세서 및 상기 복수의 네트워크 인터페이스 간 연결 상태, 상기 복수의 프로세서 및 상기 복수의 프로세서 각각에 구비되는 상기 복수의 코어에 대한 상태, 상기 복수의 네트워크 인터페이스 카드에 구비되는 적어도 하나의 포트에 대한 상태 중 적어도 하나를 모니터링하는 단계를 포함하는 것을 특징으로 하는 네트워크 장치의 인터럽트 관리 방법.
  17. 제11항에 있어서,
    상기 모니터링 결과 및 상기 복수의 큐에 동적으로 할당되는 코어에 관한 정보를 인터럽트 분배 정보로 저장하는 단계를 더 포함하는 것을 특징으로 하는 네트워크 장치의 인터럽트 관리 방법.
KR1020170020593A 2017-02-15 2017-02-15 네트워크 장치 및 그의 인터럽트 관리 방법 KR101912393B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170020593A KR101912393B1 (ko) 2017-02-15 2017-02-15 네트워크 장치 및 그의 인터럽트 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170020593A KR101912393B1 (ko) 2017-02-15 2017-02-15 네트워크 장치 및 그의 인터럽트 관리 방법

Publications (2)

Publication Number Publication Date
KR20180094369A KR20180094369A (ko) 2018-08-23
KR101912393B1 true KR101912393B1 (ko) 2018-10-26

Family

ID=63454881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170020593A KR101912393B1 (ko) 2017-02-15 2017-02-15 네트워크 장치 및 그의 인터럽트 관리 방법

Country Status (1)

Country Link
KR (1) KR101912393B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220134956A (ko) 2021-03-29 2022-10-06 숭실대학교산학협력단 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102260820B1 (ko) * 2019-07-08 2021-06-07 숭실대학교산학협력단 대칭적 인터페이스 기반 인터럽트 신호 처리 장치 및 방법
KR102260819B1 (ko) * 2019-07-08 2021-06-07 숭실대학교산학협력단 다중 프로세서 인터럽트 신호 처리 장치
KR102419015B1 (ko) * 2021-12-22 2022-07-08 한화시스템 주식회사 Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010226275A (ja) * 2009-03-23 2010-10-07 Nec Corp 通信装置および通信方法
US20160154717A1 (en) * 2012-09-28 2016-06-02 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7715428B2 (en) * 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010226275A (ja) * 2009-03-23 2010-10-07 Nec Corp 通信装置および通信方法
US20160154717A1 (en) * 2012-09-28 2016-06-02 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220134956A (ko) 2021-03-29 2022-10-06 숭실대학교산학협력단 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서

Also Published As

Publication number Publication date
KR20180094369A (ko) 2018-08-23

Similar Documents

Publication Publication Date Title
KR101912393B1 (ko) 네트워크 장치 및 그의 인터럽트 관리 방법
CN108463988B (zh) 用于负载均衡的网络文件访问的系统
JP5332000B2 (ja) 複合型計算機装置、複合型計算機の管理方法及び管理サーバ
US20050289390A1 (en) Failover method for a cluster computer system
US8032786B2 (en) Information-processing equipment and system therefor with switching control for switchover operation
EP3399709B1 (en) Method for forwarding packet
US7065623B2 (en) Bandwidth utilization in a PPRC system
JP4529767B2 (ja) クラスタ構成コンピュータシステム及びその系リセット方法
US20200319983A1 (en) Redundancy Method, Device, and System
US10142435B2 (en) Method, device and computer storage medium for implementing interface cache dynamic allocation
WO2009092322A1 (zh) 一种多处理器系统故障恢复的方法及装置
WO2019160030A1 (ja) サービス提供システム、資源割り当て方法、及び資源割り当てプログラム
JP2008217285A (ja) 情報処理システムの運用管理装置および運用管理方法
JP2007156679A (ja) サーバの障害回復方法及びデータベースシステム
KR101586354B1 (ko) 병렬 연결식 서버시스템의 통신 장애 복구방법
CN111459642A (zh) 一种分布式系统中故障处理和任务处理方法及装置
EP0107453A1 (en) Data processing systems
US9548906B2 (en) High availability multi-partition networking device with reserve partition and method for operating
KR19990043986A (ko) 업무 인계 시스템
JP2009069963A (ja) マルチプロセッサシステム
CN110674539B (zh) 一种硬盘保护设备、方法及系统
JP2007199829A (ja) 計算機制御方法、情報処理システム、運用管理装置、計算機および計算機制御プログラム
JP2006189963A (ja) ストレージアクセス制御方法、クラスタシステム、パス接続スイッチおよびストレージアクセス制御プログラム
JP2009026182A (ja) プログラム実行システム及び実行装置
US20130013830A1 (en) Method for managing subnet in computer system, bus adaptor and computer system

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