KR20160024747A - 네트워크 흐름을 처리 리소스로 정렬하는 기술 - Google Patents

네트워크 흐름을 처리 리소스로 정렬하는 기술 Download PDF

Info

Publication number
KR20160024747A
KR20160024747A KR1020150104443A KR20150104443A KR20160024747A KR 20160024747 A KR20160024747 A KR 20160024747A KR 1020150104443 A KR1020150104443 A KR 1020150104443A KR 20150104443 A KR20150104443 A KR 20150104443A KR 20160024747 A KR20160024747 A KR 20160024747A
Authority
KR
South Korea
Prior art keywords
network
processing node
computing device
memory
information
Prior art date
Application number
KR1020150104443A
Other languages
English (en)
Other versions
KR101724552B1 (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 인텔 코포레이션
Publication of KR20160024747A publication Critical patent/KR20160024747A/ko
Application granted granted Critical
Publication of KR101724552B1 publication Critical patent/KR101724552B1/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/33Flow control; Congestion control using forward notification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/044Network management architectures or arrangements comprising hierarchical management structures
    • 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/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (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

네트워크 흐름을 처리 리소스로 정렬하는 기술은 다수의 처리 노드를 갖는 컴퓨팅 디바이스, 네트워크 스위치 및 네트워크 제어기(소프트웨어 정의 네트워크 내에서 동작함)를 포함한다. 컴퓨팅 디바이스의 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터를 포함할 수 있다. 네트워크 스위치는 네트워크 패킷을 수신하고 전송 정보를 네트워크 제어기에게서 요청할 수 있다. 네트워크 제어기는 네트워크 패킷에 의해 겨냥된 애플리케이션 및 애플리케이션을 실행하는 처리 노드를 나타내는 네트워크 패킷에 대응하는 흐름 정보를 판정할 수 있다. 흐름 정보는 컴퓨팅 디바이스에 송신될 수 있는데, 이는 애플리케이션을 실행하는 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램할 수 있다. 네트워크 제어기는 전송 정보를 네트워크 스위치에 송신할 수도 있는데, 이는 수신된 네트워크 패킷을 전송 정보에 기초하여 애플리케이션을 실행하는 처리 노드의 네트워크 어댑터에 전송할 수 있다.

Description

네트워크 흐름을 처리 리소스로 정렬하는 기술{TECHNOLOGIES FOR ALIGNING NETWORK FLOWS TO PROCESSING RESOURCES}
현대적 컴퓨팅 디바이스는 개인적, 사업상 및 사교적 사용을 위한 널리 퍼져 있는(ubiquitous) 도구가 되어 왔다. 따라서, 많은 현대적 컴퓨팅 디바이스는 인터넷 및 기업 인트라넷을 포함하는 다양한 데이터 네트워크에 걸쳐 데이터 통신을 색출하고(retrieve) 수신하기 위해 그러한 네트워크에 연결될 수 있다. 흔히, 하나의 네트워크에 연결된 컴퓨팅 디바이스는 상이한 네트워크 상에서 연결된 컴퓨팅 디바이스와 통신할 필요가 있다.
소프트웨어 정의 네트워킹(Software-Defined Networking: SDN)은 어떻게 네트워크 트래픽이 처리될 것이며 실제로 네트워크 트래픽을 처리하는 디바이스들 또는 컴포넌트들이 별개의 평면(즉, 제어 평면(control plane) 및 데이터 평면(data plane))으로 분리되는(decoupled) 것인지에 관한 결정이 있는 네트워킹 아키텍처(networking architecture)이다. SDN 환경에서, 집중화된(centralized) SDN 제어기는 가령 네트워크 스위치(network switch)와 같은 네트워크 디바이스 대신에 네트워크 트래픽에 대한 전송(forwarding) 결정을 행하기 위해 사용된다. 전형적으로, 전송 결정은 SDN 환경에서 동작하는 네트워크 디바이스로 통신되는데, 이는 결국 네트워크 트래픽과 연관된 네트워크 패킷을 SDN 제어기에 의해 행해진 전송 결정에 기초하여 다음 목적지(destination)로 전송한다. 그러나, SDN 제어기는 네트워크 트래픽에 대한 세밀한 단위로 된(fine-grained) 전송 결정을 할 능력이 흔히 부족하다. 구체적으로, 전형적인 SDN 제어기는 디바이스 아키텍처 레벨에서보다는 시스템 레벨에서 전송 결정을 한다. 즉, 전형적인 SDN 제어기는 특정 유형의 네트워크 트래픽을 수신하고 처리하는 데에 극도로 최적인 목적지 컴퓨팅 디바이스의 개개의 컴포넌트들 및/또는 컴포넌트들의 그룹에 기초하여 전송 결정을 행할 수 없다.
본 문서에서 기술되는 개념들은 첨부된 도면에서 한정으로서가 아니라 예로서 보여진다. 예시의 단순성 및 명료성을 위해, 도면에 예시된 구성요소는 반드시 축척에 맞게(scale) 그려지지는 않는다. 적절하다고 간주되는 경우, 참조 라벨은 대응하거나 유사한 구성요소를 나타내기 위해 도면들 중에서 반복되었다.
도 1은 컴퓨팅 디바이스의 처리 리소스로 네트워크 흐름을 정렬(aligning)하는 시스템의 적어도 하나의 실시예의 단순화된 블록도(block diagram)이고,
도 2는 도 1 시스템의 컴퓨팅 디바이스의 환경의 적어도 하나의 실시예의 단순화된 블록도이며,
도 3은 도 1의 시스템의 네트워크 제어기(network controller)의 환경의 적어도 하나의 실시예의 단순화된 블록도이고,
도 4는 도 1의 시스템의 네트워크 스위치의 환경의 적어도 하나의 실시예의 단순화된 블록도이며,
도 5는 도 1 및 도 3의 네트워크 제어기에 의해 실행될 수 있는, 처리 리소스로 네트워크 흐름을 정렬하는 방법의 적어도 하나의 실시예의 단순화된 흐름도(flow diagram)이고,
도 6은 도 1 및 도 2의 컴퓨팅 디바이스에 의해 실행될 수 있는, 처리 리소스로 네트워크 흐름을 정렬하는 방법의 적어도 하나의 실시예의 단순화된 흐름도이며,
도 7은 도 1 및 도 4의 네트워크 스위치에 의해 실행될 수 있는, 처리 리소스로 네트워크 흐름을 정렬하는 방법의 적어도 하나의 실시예의 단순화된 흐름도이고,
도 8은 도 1 및 도 4의 네트워크 스위치에 의해 실행될 수 있는, 처리 리소스로 네트워크 흐름을 정렬하는 방법의 적어도 하나의 다른 실시예의 단순화된 흐름도이다.
본 개시의 개념들은 다양한 수정 및 대안적인 형태를 허용하나, 이들의 특정 실시예들은 도면에서 예로서 도시되었고 본 문서에서 상세히 기술될 것이다. 그러나, 본 개시의 개념들을 개시된 특정한 형태로 한정하려는 의도는 전혀 없으며, 반대로 의도는 본 개시 및 부기된 청구항과 일관적인(consistent) 모든 수정, 균등물 및 대안을 포섭하는(cover) 것이라는 점이 이해되어야 한다.
명세서 내에서 "하나의 실시예", "일 실시예", "예시적인 실시예" 등에 대한 언급은 기술된 실시예가 특정한 특징, 구조 또는 특성을 포함할 수 있음을 나타내나, 하나하나의 실시예가 모두 그 특정한 특징, 구조 또는 특성을 포함할 수 있거나 반드시 포함하는 것은 아닐 수 있다. 더욱이, 그러한 구(phrase)들은 반드시 동일한 실시예를 언급하고 있는 것은 아니다. 또한, 특정한 특징, 구조 또는 특성이 일 실시예와 관련하여 기술되는 경우, 명시적으로 기술되든 그렇지 않든 다른 실시예와 관련하여 그러한 특징, 구조 또는 특성을 야기하는 것은 당업자의 지식 내에 있다고 진술된다. 추가적으로, "A, B 및 C 중 적어도 하나"의 형태로 리스트 내에 포함된 항목들은 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B 및 C)를 의미할 수 있다는 점이 인식되어야 한다. 유사하게, "A, B 또는 C 중 적어도 하나"의 형태로 열거된 항목들은 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B 및 C)를 의미할 수 있다.
개시된 실시예들은 몇몇 경우에 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 개시된 실시예들은 하나 이상의 일시적(transitory) 또는 비일시적(non-transitory) 머신 판독가능(machine-readable)(가령, 컴퓨터 판독가능(computer-readable)) 저장 매체 상에 저장되거나 이에 의해 전해지는(carried) 명령어로서 구현될 수도 있는데, 이는 하나 이상의 프로세서에 의해 판독되고 실행될 수 있다. 머신 판독가능 저장 매체는 임의의 저장 디바이스, 메커니즘, 또는 머신에 의해 판독가능한 형태로 정보를 저장하거나 송신하기 위한 다른 물리적 구조로서 구현화될(embodied) 수 있다(가령, 휘발성 또는 비휘발성 메모리, 미디어 디스크 또는 다른 미디어 디바이스).
도면에서, 몇몇 구조적 또는 방법 특징들은 특정 배열 및/또는 순서로 도시될 수 있다. 그러나, 그러한 특정 배열 및/또는 순서가 요구되는 것은 아닐 수 있다는 점이 인식되어야 한다. 오히려, 몇몇 실시예에서, 그러한 특징들은 예시적인 도면에 도시된 것과는 상이한 방식 및/또는 순서로 배열될 수 있다. 추가적으로, 특정한 도면 내 구조적 또는 방법 특징의 포함은 그러한 특징이 모든 실시예에서 요구된다고 암시하도록 의도된 것은 아니고, 몇몇 실시예에서는 포함되지 않을 수 있거나 다른 특징과 조합될 수 있다.
이제 도 1을 참조하면, 예시적인 실시예에서 네트워크 흐름을 처리 리소스로 정렬하는 시스템(100)은 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및 네트워크 스위치(190)를 포함하는데, 이들 각각은 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN) 환경에서 동작하는 것이 가능할 수 있다. 사용 중에, 네트워크 스위치(190)는 원격 컴퓨팅 디바이스(180)로부터 네트워크 패킷을 수신할 수 있다. 몇몇 실시예에서, 네트워크 패킷은 컴퓨팅 디바이스(110)의 처리 노드들(112) 중 하나(가령, 처리 노드(114) 또는 처리 노드(116))의 프로세서(가령, 프로세서(120) 또는 프로세서(140))에 의해 실행되고 있는 애플리케이션(application)으로 겨냥되거나(targeted) 그렇지 않으면 방향 지어질(directed) 수 있다. 그러한 실시예에서, 네트워크 스위치(190)는 수신된 네트워크 패킷을 위한 전송 정보(forwarding information)를 네트워크 제어기(170)에 요청하는데, 이는 컴퓨팅 디바이스(110) 및/또는 SDN 환경과 연관된 아키텍처 정보(가령, 토폴로지(topology) 데이터, 구성 데이터, 레이아웃(layout) 데이터, 그리고/또는 컴퓨팅 디바이스(110) 및/또는 네트워크의 하드웨어 또는 소프트웨어 컴포넌트들을 기술하는 임의의 다른 유형의 데이터)를 포함한다. 몇몇 실시예에서, 네트워크 제어기(170)는 어떤 애플리케이션이 컴퓨팅 디바이스(110)의 어느 처리 노드(112) 내에서 실행되고 있는지를 나타내는 정보를 또한 포함한다. 아키텍처 정보를 사용하여, 네트워크 제어기(170)는 수신된 네트워크 패킷에 대응하는 네트워크 흐름 정보(network flow information)를 판정하고/하거나 생성한다. 네트워크 흐름 정보는 수신된 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 특정한 처리 노드(112)(가령, 처리 노드(114) 또는 처리 노드(116))를 식별하거나 그렇지 않으면 나타낼 수 있다. 몇몇 실시예에서, 네트워크 흐름 정보는 수신된 네트워크 패킷이 전송되어야 할 특정한 처리 노드(112)의 네트워크 어댑터(network adapter)(가령, NIC(136) 또는 NIC(156))를 식별하거나 그렇지 않으면 나타낼 수도 있다.
네트워크 흐름 정보를 판정한 후, 네트워크 제어기(170)는 네트워크 흐름 정보를 컴퓨팅 디바이스(110)에 송신하는데, 이는 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156)) 내의 흐름 필터(flow filter)를 프로그램하거나 그렇지 않으면 구성한다. 몇몇 실시예에서, 흐름 필터는 네트워크 흐름과 연관된 네트워크 패킷(가령, 수신된 네트워크 패킷 및 임의의 후속 네트워크 패킷)을 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 배분된 특정한 네트워크 메모리 큐(queue)(가령, Q0(132), Q1(134), Q2(152), Q3(154))로 복사하도록(copy) 구성될 수 있다. 몇몇 실시예에서, 네트워크 메모리 큐(가령, Q0(132), Q1(134), Q2(152), Q3(154))는 양방향(bidirectinal) 메모리 큐로서든 단방향(unidirectional) 메모리 큐로서든 동작하도록 구성될 수 있다.
흐름 필터가 컴퓨팅 디바이스(110)에 의해 프로그램된 후, 네트워크 제어기(170)는 수신된 네트워크 패킷을 위한 전송 정보를 위 흐름 정보에 기초하여 판정한다. 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 특정한 처리 노드(112)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))를 식별하거나 그렇지 않으면 나타낼 수 있다. 몇몇 실시예에서, 전송 정보는 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 통신가능하게 커플링된(communicatively coupled) 네트워크 스위치(190)의 특정한 인터페이스(interface) 또는 포트(port)(가령, PA(192), PB(194), PC(196))를 나타내는 정보를 포함할 수 있다. 네트워크 제어기(170)는 전송 정보를 네트워크 스위치(190)에 송신할 수 있는데, 이는 수신된 네트워크 패킷을 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 통신가능하게 커플링된 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194), PC(196))에 전송하기 위해 전송 정보를 이용할 수 있다. 컴퓨팅 디바이스(110) 및/또는 SDN 환경과 연관된 아키텍처 정보를 유지함으로써, 네트워크 제어기(170)는 네트워크 흐름을 특정한 애플리케이션을 실행하는 특정한 처리 노드(112)로 정렬할 수 있다는 점이 인식되어야 한다. 그런 방식으로, 특정한 네트워크 흐름과 연관된 네트워크 패킷의 처리 및 그 흐름에 의해 겨냥되는 애플리케이션의 실행은 동일한 처리 노드(112) 내에서 일어날 수 있는데, 이는 메모리 리소스 및 이용가능한 네트워크 대역폭의 더욱 효율적인 사용이고, 네트워크 및/또는 처리 지연시간(latency)을 줄이며, 컴퓨팅 디바이스(110)에 의해 더 적은 전력이 소모될 수 있게 하고, 네트워크 패킷을 처리하는 데에 더 적은 처리 리소스가 이용될 수 있게 한다. 예를 들어, 겨냥된 애플리케이션이 실행되고 있는 것과 동일한 처리 노드(112) 내에서 네트워크 흐름의 네트워크 패킷을 처리하는 것은 하나의 처리 노드(112)(가령, 처리 노드(112)) 내에서 네트워크 흐름의 네트워크 패킷을 처리하는 것 및 해당 패킷을 상이한 처리 노드(112)(가령, 처리 노드(114))(겨냥된 애플리케이션은 이 안에서 하나 이상의 통신 링크(가령, 퀵패스 인터커넥트(QuickPath Interconnect: QPI)(118), 점대점(point-to-point) 링크, 버스 링크, 배선, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등)를 통해 실행되고 있음)에 송신하는 것(가령, 전송하는 것, 보내는 것 등)보다 더욱 효율적이다. 그러한 방식으로 처리 노드들(112) 사이에 네트워크 패킷을 송신하는 것은 컴퓨팅 디바이스(110)의 지연시간, 지터(jitter) 및 스루풋(throughput)에 잠재적으로 영향을 끼칠 수 있다. 이는 겨냥된 애플리케이션이 실행되고 있는 것과는 상이한 처리 노드(112)에서 처리될 필요가 있는 많은 수의 새로운 및/또는 기존의 네트워크 흐름 또는 네트워크 패킷이 있는 경우에 특히 참일 수 있다.
컴퓨팅 디바이스(110)는 서버 컴퓨터(server computer), 데스크톱 컴퓨터(desktop computer), 랩톱 컴퓨팅 디바이스(laptop computing device), 가전 디바이스(consumer electronic device), 모바일 컴퓨팅 디바이스(mobile computing device), 모바일 전화(mobile phone), 스마트 폰(smart phone), 태블릿 컴퓨팅 디바이스(tablet computing device), 개인용 디지털 보조기기(personal digital assistant), 착용가능한 컴퓨팅 디바이스(wearable computing device), 스마트 텔레비전(smart television), 스마트 기기(smart appliance) 및/또는 다른 유형의 컴퓨팅 디바이스를 포함하나 이에 제한되지 않는, 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 컴퓨팅 디바이스로서 구현화되거나 그렇지 않으면 이를 포함할 수 있다. 몇몇 실시예에서, 컴퓨팅 디바이스(110)는 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN) 환경 내에서 동작하는 것이 가능하다. 아래에서 더욱 상세히 논의되는 바와 같이, 예시적인 컴퓨팅 디바이스(110)는 다수의 처리 노드(112)를 포함하는데, 이들 각각은 프로세서, 메모리 및 네트워크 어댑터를 포함한다. 도 1에 도시된 바와 같이, 예시적인 컴퓨팅 디바이스(110)는 또한 입출력(Input/Output: I/O) 서브시스템(162) 및 데이터 스토리지(data storage)(164)를 포함한다. 물론, 다른 실시예에서, 컴퓨팅 디바이스(110)는 컴퓨터 내에서 보통 발견되는 것(가령, 다양한 입력/출력 디바이스)과 같은 타 컴포넌트 또는 추가적인 컴포넌트를 포함할 수 있다.
몇몇 실시예에서, 컴퓨팅 디바이스(110)의 각 처리 노드(112)는 불균일 메모리 액세스(Non-Uniform Memory Access: NUMA) 노드로서 구현화될 수 있다. 예시적인 실시예에서, 컴퓨팅 디바이스(110)는 처리 노드(114) 및 처리 노드(116)를 포함한다. 예시적인 처리 노드(114)는 프로세서(120), 메모리(126) 및 네트워크 인터페이스 카드(Network Interface Card: NIC)(136)를 포함한다. 몇몇 실시예에서, 처리 노드(114) 내의 프로세서(120), 메모리(126) 및 NIC(136)는 하나 이상의 통신 링크(즉, 점대점 링크, 버스 링크, 배선, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등)를 통해 서로에게 통신가능하게 커플링될 수 있다. 추가적으로, 몇몇 실시예에서, 처리 노드(114)의 예시적인 컴포넌트 중 하나 이상은 다른 컴포넌트 내에 포함되거나 그렇지 않으면 이의 일부를 형성할 수 있다. 예를 들어, 메모리(126) 또는 이의 일부는 몇몇 실시예에서 프로세서(120) 내에 포함될 수 있다.
처리 노드(114)의 프로세서(120)는 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 프로세서로서 구현화될 수 있다. 예를 들어, 몇몇 실시예에서, 프로세서(120)는 단일 코어 프로세서(single core processor), 디지털 신호 프로세서(digital signal processor), 마이크로제어기(microcontroller), 또는 다른 프로세서 또는 처리/제어 회로로서 구현화될 수 있다. 도 1에 예시적으로 도시된 것과 같은 다른 실시예에서, 프로세서(120)는 다수의 프로세서 코어(가령, 코어 A(122) 및 코어 B(124))를 갖는 다중코어 프로세서(multi-core processor)로서 구현화될 수 있다. 그러한 실시예에서, 프로세서(120)의 각 프로세서 코어(122, 124)는 하나 이상의 애플리케이션을 실행하는 것이 가능하다.
처리 노드(114)의 메모리(126)는 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 휘발성 또는 비휘발성 메모리 또는 데이터 스토리지로서 구현화될 수 있다. 동작 중에, 메모리(126)는 운영 체제, 애플리케이션, 프로그램, 라이브러리 및 드라이버와 같은, 컴퓨팅 디바이스(110)의 동작 중에 사용되는 다양한 데이터 및 소프트웨어를 저장할 수 있다. 예를 들어, 몇몇 실시예에서, 메모리(126)의 일부(가령, 애플리케이션 메모리 공간(128))는 프로세서 코어 A(122) 및/또는 프로세서 코어 B(124)에 의해 실행되고 있는 애플리케이션에 의한 사용을 위해 배분되거나 그렇지 않으면 예약될(reserved) 수 있다. 추가적으로, 몇몇 실시예에서, 메모리(126)의 다른 부분(가령, NIC 메모리 공간(130))은 NIC(136)에 의해 보내어질 데이터 및/또는 NIC(136)에 의해 수신된 데이터의 저장을 위해 배분되거나 그렇지 않으면 예약될 수 있다. 그러한 실시예에서, NIC 메모리 공간(130)은 NIC(136)의 포트 P1(137)(가령, 인터페이스)을 통해 수신되거나 송신될 데이터(가령, 네트워크 패킷 등)를 저장하기 위한 하나 이상의 메모리 큐(가령, Q0(132) 및 Q1(134))를 포함할 수 있다. 예시적인 실시예에서, 메모리(126)는 하나 이상의 통신 링크(즉, 점대점 링크, 버스 링크, 배선, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등)를 통해 프로세서(120)에 통신가능하게 커플링된다.
컴퓨팅 노드(들)(110)의 처리 노드(114)의 NIC(136)는 하나 이상의 통신 네트워크(가령, 로컬 영역 네트워크, 개인 영역 네트워크, 광역 네트워크, 셀룰러 네트워크, 인터넷과 같은 전역적 네트워크(global network) 등)를 통한 컴퓨팅 디바이스(110) 및/또는 컴퓨팅 디바이스(110)의 처리 노드(114)와 타 컴퓨팅 디바이스 간의 통신을 가능하게 할 수 있는 임의의 유형의 통신 회로, 디바이스 또는 이들의 모음(collection)으로서 구현화될 수 있다. 예를 들어, 몇몇 실시예에서, 처리 노드(114)의 NIC(136)는 컴퓨팅 디바이스(110)의 처리 노드(114)와 원격 컴퓨팅 디바이스(180) 간의 통신을 가능하게 하는 것이 가능할 수 있다. NIC(136)는 그러한 통신을 야기하기 위해 임의의 하나 이상의 통신 기술(가령, 무선 또는 유선 통신) 및 연관된 프로토콜(가령, 이더넷(Ethernet), 와이파이(Wi-Fi®), WiMAX 등)을 사용하도록 구성될 수 있다. 예시적인 실시예에서, NIC(136)는 포트(가령, P1(137)) 또는 통신 인터페이스를 포함하거나 그렇지 않으면 이에 통신가능하게 커플링된다. 포트(가령, P1(137))는 처리 노드(114)를 임의의 수의 다른 컴퓨팅 디바이스(가령, 원격 컴퓨팅 디바이스(180)) 및/또는 네트워크(가령, 물리적 또는 논리적 네트워크)에 통신가능하게 커플링하도록 구성될 수 있다. 예를 들어, 예시적인 포트(137)는 처리 노드(114)의 NIC(136)를 네트워크 스위치(190)에 통신가능하게 커플링하는데, 이는 원격 컴퓨팅 디바이스(180), 네트워크 제어기(170) 및/또는 임의의 수의 다른 컴퓨팅 디바이스 또는 네트워크에 통신가능하게 커플링될 수 있다.
예시적인 실시예에서, NIC(136)는 하나 이상의 통신 링크(즉, 점대점 링크, 버스 링크, 배선, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등)를 통해 프로세서(120)에 통신가능하게 커플링된다. 예를 들어, 몇몇 실시예에서, NIC(136)는 처리 노드(114)의 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express: PCIe) I/O 버스를 통해 프로세서(120)에 통신가능하게 커플링된 PCIe 디바이스로서 구현화될 수 있다. 물론, NIC(136)는 처리 노드(114)의 프로세서(120)에 통신가능하게 커플링된 임의의 다른 유형의 통신 디바이스로서 구현화될 수 있다는 점이 인식되어야 한다.
몇몇 실시예에서, NIC(136)는 하나 이상의 흐름 필터(138)를 또한 포함할 수 있다. 아래에서 더욱 상세히 논의되는 바와 같이, 하나 이상의 흐름 필터(138)는 네트워크 제어기(170)로부터 수신된 네트워크 흐름 정보에 적어도 부분적으로 기초하여 또는 그렇지 않으면 이의 함수로서 컴퓨팅 디바이스(110)에 의해 NIC(136) 내에 프로그램될 수 있다. 몇몇 실시예에서, 흐름 필터(138)는 NIC(136)에 의해 수신된 네트워크 패킷 및/또는 NIC(136)에 의해 송신될 네트워크 패킷의 저장을 위해 할당되거나 그렇지 않으면 배분된 NIC 메모리 공간(130) 내 특정한 메모리 큐(가령, Q0(132), Q1(134) 등)를 지정한다. 추가적으로, 몇몇 실시예에서, 흐름 필터(138)는 NIC(136)의 특정한 포트(가령, P1(137))에 의해 수신되는 네트워크 패킷 및/또는 NIC(136)의 특정한 포트(가령, P1(137))에 의해 송신될 네트워크 패킷의 저장을 위해 배분된 NIC 메모리 공간(130) 내 특정한 메모리 큐(가령, Q0(132), Q1(134) 등)를 지정한다. 추가적으로 또는 대안적으로, 몇몇 실시예에서, NIC(136) (또는 NIC(136)나 드라이버)는 NIC(136) 내에 포함된 각 포트(가령, P1(137))에 대해 NIC 메모리 공간(130) 내 메모리 큐(가령, Q0(132), Q1(134) 등)를 사전배분하거나 사전할당할 수 있다. 즉, NIC(136)의 각 포트(가령, P1(137))는 컴퓨팅 디바이스(110)가 NIC(136) 내 흐름 필터(138)를 프로그램하기 전에 NIC 메모리 공간(130) 내 특정 메모리 큐(가령, Q0(132), Q1(134) 등)를 배분받거나 그렇지 않으면 할당받을 수 있다. 예를 들어, 몇몇 실시예에서, NIC(136) 및/또는 연관된 드라이버는 컴퓨팅 디바이스(110)의 초기화 중에 처리 노드(114)의 NIC 메모리 공간(130) 내 하나 이상의 메모리 큐(가령, Q0(132), Q1(134) 등)를 사전배분할 수 있다. 그런 방식으로, NIC(136) 내에 포함된 각 포트(가령, P1(137))를 위한 메모리 큐(가령, Q0(132), Q1(134) 등)는 NIC(136)와 동일한 처리 노드(114) 내에 배분된다. 몇몇 실시예에서, 네트워크 메모리 큐(가령, Q0(132), Q1(134), Q2(152), Q3(154))는 양방향 메모리 큐(즉, 송신 및 수신) 또는 단방향 메모리 큐(즉, 송신 혹은 수신)로서 동작하도록 구성될 수 있다는 점이 인식되어야 한다.
예시적인 처리 노드(116)는 프로세서(140), 메모리(146) 및 NIC(156)를 포함한다. 처리 노드(116)의 프로세서(140)는 다수의 프로세서 코어(가령, 코어 A(142) 및 코어 B(144))를 포함할 수 있다. 처리 노드(116)의 메모리(146)는 프로세서 코어 A(142) 및/또는 프로세서 코어 B(144)에 의해 실행되고 있는 애플리케이션에 의한 사용을 위해 배분된 메모리의 일부(가령, 애플리케이션 메모리 공간(148)), NIC(156)에 의해 수신되고/되거나 NIC(156)에 의해 보내어질 데이터의 저장을 위해 배분된 메모리의 일부(가령, NIC 메모리 공간(150)), 그리고 NIC(156)의 포트(157)(가령, 인터페이스)를 통해 수신되거나 보내어질 데이터(가령, 네트워크 패킷 등)를 저장하기 위한 하나 이상의 메모리 큐(가령, Q2(152) 및 Q3(154))를 포함한다. 예시적인 NIC(156)는 포트(가령, P2(157))를 포함하거나 그렇지 않으면 이에 통신가능하게 커플링된다. 추가적으로, 몇몇 실시예에서, NIC(156)는 하나 이상의 흐름 필터(158)를 포함한다. 처리 노드(116)의 그 컴포넌트들은 처리 노드(114)의 대응하는 컴포넌트들과 유사할 수 있는데, 이의 설명은 처리 노드(116)의 대응하는 컴포넌트들에 적용가능하며 설명의 명료성을 위해 여기서 반복되지 않는다.
몇몇 실시예에서, NIC(136) 및 NIC(156)는 스루풋을 증가시키기, 로드 밸런싱(load balancing)을 구현하기 및/또는 내고장성(fault tolerance)를 제공하기를 위해 (논리적 연결(160)에 의해 예시적으로 도시된 바와 같이) 본딩되거나(bonded) 트렁킹되거나(trunked) 그렇지 않으면 집성될(aggregated) 수 있다. 그러한 실시예에서, NIC(136) 및 NIC(156)는 예컨대 원격 컴퓨팅 디바이스(180)와 같은 타 컴퓨팅 디바이스로부터 네트워크 패킷을 수신하기 위한 단일의 인터넷 프로토콜(Internet Protocol: IP) 주소를 할당받을 수 있는 논리적 네트워크 인터페이스를 형성할 수 있다. 물론, NIC(136) 및 NIC(156)를 본딩하는 것으로부터 형성된 논리적 네트워크 인터페이스가 단일 IP 주소를 할당받을 수 있으나, NIC(136) 및 NIC(156) 각각은 별개의 매체 액세스 제어(Media Access Control: MAC) 주소를 가질 수 있다는 점이 인식되어야 한다. 추가적으로, 몇몇 실시예에서, 컴퓨팅 디바이스(110)는 하나 이상의 관리 포트(도시되지 않음)를 포함할 수 있는데, 이는 컴퓨팅 디바이스(110)를 네트워크 제어기(170)에 통신가능하게 커플링할 수 있다. 그러한 실시예에서, 컴퓨팅 디바이스(110)의 관리 포트는아래에서 더욱 상세히 논의되는 바와 같이 네트워크 제어기(170)로/로부터 정보 또는 메시지(가령, 아키텍처 정보, 전송 정보 등)를 송신하는 것 및 수신하는 것을 위해 사용될 수 있다.
프로세서(120) 및 프로세서(140) 각각은 I/O 서브시스템(162)에 통신가능하게 커플링될 수 있는데, 이는 컴퓨팅 디바이스(110)의 다른 컴포넌트와의 입력/출력 동작을 가능하게 하는 회로 및/또는 컴포넌트로서 구현화될 수 있다. 예를 들어, I/O 서브시스템(162)은 메모리 제어기 허브, 입력/출력 제어 허브, 펌웨어 디바이스, 통신 링크(즉, 점대점 링크, 버스 링크, 배선, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등) 및/또는 입력/출력 동작을 가능하게 하는 다른 컴포넌트 및 서브시스템으로서 구현화되거나 그렇지 않으면 이를 포함할 수 있다. 몇몇 실시예에서, I/O 서브시스템(162)은 시스템 온 칩(System-on-a-Chip: SoC)의 일부를 형성할 수 있고, 처리 노드(112)의 컴포넌트(가령, 프로세서, 메모리 및 네트워크 어댑터) 및 컴퓨팅 디바이스(110)의 다른 컴포넌트와 함께 단일의 집적 회로 칩(integrated circuit chip) 상에 포함될 수 있다. 예를 들어, 몇몇 실시예에서, I/O 서브시스템(162), 프로세서(120), 메모리(126) 및 NIC(136)는 단일 집적 회로 칩 상에 포함될 수 있다.
데이터 스토리지(164)는, 예컨대 메모리 디바이스 및 회로, 메모리 카드, 하드 디스크 드라이브, 솔리드 스테이트(solid-state) 드라이브 또는 다른 데이터 스토리지 디바이스와 같은, 데이터의 단기(short-term) 또는 장기(long-term) 저장을 위해 구성된 임의의 유형의 디바이스 또는 디바이스들로서 구현화될 수 있다. 예를 들어, 데이터 스토리지(164)는 컴퓨팅 디바이스(110)에 의해 초기화되고/되거나 실행될 하나 이상의 운영 체제를 저장하도록 구성될 수 있다. 몇몇 실시예에서, 운영 체제(들)의 부분들은 더 빠른 처리를 위해 및/또는 여하한 다른 이유로 동작 중에 메모리(126) 및/또는 메모리(146)로 복사될 수 있다.
네트워크 제어기(170)는 서버 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨팅 디바이스, 가전 디바이스, 모바일 컴퓨팅 디바이스, 모바일 전화, 스마트 폰, 태블릿 컴퓨팅 디바이스, 개인용 디지털 보조기기, 착용가능한 컴퓨팅 디바이스, 스마트 텔레비전, 스마트 기기 및/또는 다른 유형의 컴퓨팅 또는 네트워킹 디바이스를 포함하나 이에 한정되지 않는, 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 컴퓨팅 디바이스로서 구현화되거나 그렇지 않으면 이를 포함할 수 있다. 따라서, 네트워크 제어기(170)는 설명의 명료성을 위해 도 1에 도시되지 않은, 프로세서, 메모리 디바이스, 통신 회로 및 데이터 스토리지와 같은, 네트워크 제어기 또는 유사한 컴퓨팅 디바이스 내에서 보통 발견되는 디바이스 및 구조를 포함할 수 있다. 예시적인 실시예에서, 네트워크 제어기(170)는 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN) 환경에서 동작하는 것이 가능하다. 따라서, 네트워크 제어기(170)는 SDN 환경에서 동작할 수 있는 컴퓨팅 디바이스(110), 네트워크 스위치(190) 및/또는 다른 컴퓨팅 디바이스로부터 데이터 및/또는 정보 요청을 수신할 수 있다. 예를 들어, 네트워크 제어기(170)는 컴퓨팅 디바이스(110)의 각 처리 노드(112)의 아키텍처를 정의하거나 그렇지 않으면 나타내는 아키텍처 정보를 컴퓨팅 디바이스(110)로부터 수신할 수 있다. 네트워크 제어기(170)는 네트워크 스위치(190)의 하나 이상의 포트(가령, PA(192), PB(194), PC(196))와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간 하나 이상의 네트워크 연결(가령, 통신 링크)을 정의하거나 그렇지 않으면 나타내는 연결 정보를 네트워크 스위치(190)로부터 수신할 수도 있다.
몇몇 실시예에서, 네트워크 제어기(170)는 네트워크 스위치(190)로부터 전송 정보에 대한 하나 이상의 요청을 수신하도록 구성된다. 각 전송 정보 요청은 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관될 수 있다. 전송 정보에 대한 요청을 수신하는 것에 응답하여, 네트워크 제어기(170)는 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보 및 네트워크 스위치(190)로부터 수신된 연결 정보에는 적어도 부분적으로 기초하여 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 네트워크 흐름 정보 및 전송 정보를 판정할 수 있다. 동작 중에, 네트워크 제어기(170)는 네트워크 어댑터 중 하나(가령, NIC(136) 또는 NIC(156)) 내의 흐름 필터가 프로그램될 수 있도록 판정된 네트워크 흐름 정보를 컴퓨팅 디바이스(110)에 보낼 수 있다. 추가적으로, 네트워크 제어기(170)는 전송 정보를 네트워크 스위치(190)에 보낼 수 있는데, 이는 수신된 네트워크 패킷을 흐름 필터가 프로그램된 컴퓨팅 디바이스(110)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 전송하기 위해 전송 정보를 사용할 수 있다. 그런 방식으로 네트워크 제어기(170)는 컴퓨팅 디바이스(110)의 아키텍처 정보에 기초하여 네트워크 흐름을 컴퓨팅 디바이스(110)의 특정한 처리 컴포넌트로 정렬할 수 있다.
몇몇 실시예에서, 네트워크 제어기(170)는 컴퓨팅 디바이스 아키텍처 데이터베이스(computing device architecture database)(172) 내에 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보를 유지하거나 그렇지 않으면 저장할 수 있다. 추가적으로, 네트워크 제어기(170)는 네트워크 스위치 연결 데이터베이스(network switch connection database)(174) 내에 네트워크 스위치(190)로부터 수신된 연결 정보를 유지하거나 그렇지 않으면 저장할 수 있다. 다른 실시예에서, 아키텍처 정보 및 연결 정보는 별개의 데이터베이스보다는 동일한 데이터베이스 내에 저장되거나 유지될 수 있다. 물론, 아키텍처 정보 및 연결 정보는 예시적인 실시예에서 하나 이상의 데이터베이스 내에 저장되는 것으로 기술되나, 아키텍처 정보 및/또는 연결 정보는 다른 실시예에서 상이한 포맷(format)을 갖는 데이터 구조(가령, 문서, 파일 등) 내에 저장될 수 있다는 점이 인식되어야 한다. 예를 들어, 아키텍처 정보 및/또는 연결 정보는 CSV(Comma-Separated Value) 파일, 텍스트(text) 파일, 암호화된 데이터 파일, 하나 이상의 XML(Extensible Markup Language) 요소를 갖는 XML 문서, 또는 아키텍처 정보 및/또는 연결 정보를 저장하는 데에 적합한 임의의 다른 포맷으로서 구현화될 수 있다.
원격 컴퓨팅 디바이스(180)는 데스크톱 컴퓨터, 랩톱 컴퓨팅 디바이스, 서버 컴퓨터, 가전 디바이스, 모바일 컴퓨팅 디바이스, 모바일 전화, 스마트 폰, 태블릿 컴퓨팅 디바이스, 개인용 디지털 보조기기, 착용가능한 컴퓨팅 디바이스, 스마트 텔레비전, 스마트 기기 및/또는 다른 유형의 컴퓨팅 디바이스를 포함하나 이에 한정되지 않는, 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 컴퓨팅 디바이스로서 구현화되거나 그렇지 않으면 이를 포함할 수 있다. 따라서, 원격 컴퓨팅 디바이스(180)는 설명의 명료성을 위해 도 1에 도시되지 않은, 프로세서, 메모리 디바이스, 통신 회로 및 데이터 스토리지와 같은, 컴퓨팅 디바이스 내에서 보통 발견되는 디바이스 및 구조를 포함할 수 있다. 몇몇 실시예에서, 원격 컴퓨팅 디바이스(180)는 네트워크 스위치(190)를 통해 컴퓨팅 디바이스(110)로/로부터 네트워크 패킷을 송신하고/하거나 수신하도록 구성될 수 있다. 그러한 실시예에서, 원격 컴퓨팅 디바이스(180)는 네트워크 스위치(190)의 포트(가령, PB(194))에 직접적으로 연결될 수 있다. 물론 원격 컴퓨팅 디바이스(180)는 다른 실시예에서 네트워크 스위치(190)에 직접적으로 연결되지 않을 수 있다는 점이 인식되어야 한다. 예를 들어, 몇몇 실시예에서, 원격 컴퓨팅 디바이스(180)는 네트워크 스위치(190)에 통신가능하게 커플링된 원격 네트워크(또는 일련의 원격 네트워크)에 연결될 수 있다.
네트워크 스위치(190)는 네트워크 스위치, 네트워크 라우터(network router), 네트워크 허브(network hub), 무선 액세스 포인트(wireless access point), 데스크톱 컴퓨터, 랩톱 컴퓨팅 디바이스, 서버 컴퓨터, 가전 디바이스, 모바일 컴퓨팅 디바이스, 모바일 전화, 스마트 폰, 태블릿 컴퓨팅 디바이스, 개인용 디지털 보조기기, 착용가능한 컴퓨팅 디바이스, 스마트 텔레비전, 스마트 기기 및/또는 다른 유형의 컴퓨팅 디바이스를 포함하나 이에 한정되지 않는, 본 문서에서 기술된 기능을 수행하는 것이 가능한 임의의 유형의 네트워킹 또는 컴퓨팅 디바이스로서 구현화되거나 그렇지 않으면 이를 포함할 수 있다. 따라서, 네트워크 스위치(190)는 설명의 명료성을 위해 도 1에 도시되지 않은, 프로세서, 메모리 디바이스, 통신 회로 및 데이터 스토리지와 같은, 네트워크 스위치 또는 유사한 컴퓨팅 디바이스 내에서 보통 발견되는 디바이스 및 구조를 포함할 수 있다. 예시적인 실시예에서, 네트워크 스위치(190)는 다른 디바이스들 중에서도 컴퓨팅 디바이스(110) 및 네트워크 제어기(170)를 포함할 수 있는 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN) 환경에서 동작하는 것이 가능하다. 예시적인 네트워크 스위치(190)는 하나 이상의 포트 또는 인터페이스를 포함하는데, 이는 하나 이상의 통신 링크(가령, 점대점 링크, 버스 링크, 배선, 케이블, 광 가이드 등)를 통해 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및/또는 임의의 다른 컴퓨팅 디바이스 및/또는 통신 네트워크의 하나 이상의 포트 또는 인터페이스에 통신가능하게 커플링될 수 있다. 예를 들어, 예시적인 네트워크 스위치(190)는 제1 포트(가령, PA(192))를 포함하는데, 이는 컴퓨팅 디바이스(110)의 NIC(136)의 포트(가령, P1(137))에 통신가능하게 커플링될 수 있다. 예시적인 네트워크 스위치(190)는 제2 포트(가령, PB(194))를 또한 포함하는데, 이는 원격 컴퓨팅 디바이스(180)의 포트에 통신가능하게 커플링될 수 있다. 추가적으로, 네트워크 스위치(190)는 제3 포트(가령, PC(196))를 또한 포함할 수 있는데, 이는 컴퓨팅 디바이스(110)의 NIC(156)의 포트(가령, P2(157))에 통신가능하게 커플링될 수 있다. 물론, 네트워크 스위치(190)는 다른 실시예에서 PA(192), PB(194) 및 PC(196)보다 더 적은 포트 또는 추가적인 포트를 포함할 수 있다. 몇몇 실시예에서, 네트워크 스위치(190)는 관리 포트(도시되지 않음)를 또한 포함할 수 있는데, 이는 네트워크 스위치(190) 및 네트워크 제어기(170)를 통신가능하게 커플링할 수 있다.
몇몇 실시예에서, 네트워크 스위치(190)는 하나 이상의 네트워크 패킷을 원격 컴퓨팅 디바이스(180)로부터 수신하는데, 이는 네트워크 스위치(190)의 포트(가령, PB(194))를 통해 네트워크 스위치(190)에 통신가능하게 커플링될 수 있다. 몇몇 실시예에서, 네트워크 스위치(190)는 컴퓨팅 디바이스(110)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))로부터 하나 이상의 네트워크 패킷을 수신할 수도 있다는 점이 인식되어야 한다. 추가적으로, 몇몇 실시예에서, 네트워크 스위치(190)는 네트워크 스위치(190)의 하나 이상의 포트(가령, PA(192), PB(194), PC(196))와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180), 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간의 하나 이상의 네트워크 연결(가령, 통신 링크)을 정의하거나 그렇지 않으면 나타내는 연결 정보를 네트워크 제어기(170)로 송신하도록 구성된다. 몇몇 실시예에서, 네트워크 제어기(170)에 송신되는 연결 정보는 네트워크 스위치(190)에 의해 유지되는 로컬(local) 연결 정보에 기초할 수 있다. 네트워크 스위치(190)의 그러한 로컬 연결 정보는 네트워크 스위치(190)에 통신가능하게 커플링된 각 컴퓨팅 디바이스(가령, 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및/또는 임의의 다른 컴퓨팅 디바이스)와 연관된 매체 액세스 제어(Media Access Control: MAC) 주소를 포함할 수 있다. 추가적으로, 네트워크 스위치(190)의 그러한 로컬 연결 정보는 각 컴퓨팅 디바이스가 통신가능하게 커플링된 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196))를 식별하는 데이터를 포함할 수 있다. 몇몇 실시예에서, 로컬 연결 정보는 컴퓨팅 디바이스의 MAC 주소를 컴퓨팅 디바이스가 연결되거나 그렇지 않으면 통신가능하게 커플링된 네트워크 스위치(190)의 특정 포트(가령, PA(192), PB(194), PC(196))로 맵핑하기 위해 사용될 수 있다.
추가적으로, 몇몇 실시예에서, 네트워크 스위치(190)는 네트워크 제어기(170)에게서 전송 정보를 요청하도록 또한 구성된다. 몇몇 실시예에서, 전송 정보는 원격 컴퓨팅 디바이스(180), 컴퓨팅 디바이스(110) 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크로부터 수신된 네트워크 패킷과 연관될 수 있다. 그러한 실시예에서, 네트워크 스위치(190)는 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 수신된 네트워크 패킷을 전송하도록 구성될 수 있다. 그렇게 하기 위해, 네트워크 스위치(190)는 하나 이상의 흐름 엔트리(flow entry)를 포함하는 하나 이상의 흐름 테이블(flow table)을 유지할 수 있다. 몇몇 실시예에서, 흐름 테이블(들)의 각 흐름 엔트리는 하나 이상의 네트워크 흐름, 각 네트워크 흐름과 연관된 네트워크 패킷, 그리고 각 네트워크 흐름의 네트워크 패킷이 전송되어야 할 목적지 컴퓨팅 디바이스를 식별하기 위해 네트워크 스위치(190)에 의해 사용될 수 있다. 몇몇 실시예에서, 흐름 테이블(들)의 흐름 엔트리는 수신된 네트워크 패킷(그리고 후속적으로 수신된 네트워크 패킷)이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194), PC(196))를 판정하기 위해 네트워크 스위치(190)에 의해 사용될 수 있다. 추가적으로, 네트워크 스위치(190)가 전송 테이블(들)을 유지하는 실시예에서, 네트워크 스위치(190)는 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 전송 테이블(들)에 흐름 엔트리를 부가하도록 구성될 수 있다.
이제 도 2를 참조하면, 사용 중, 컴퓨팅 디바이스(110)는 동작 중 환경(200)을 수립한다(establish). 예시적인 환경(200)은 아키텍처 통지 모듈(architecture notification module)(202), 로컬 흐름 관리 모듈(local flow management module)(204) 및 하나 이상의 흐름 필터(138, 158)를 포함한다. 환경(200)의 모듈, 로직 및 다른 컴포넌트 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로서 구현화될 수 있다. 예를 들어, 환경(200)의 모듈, 로직 및 다른 컴포넌트 각각은 컴퓨팅 디바이스(110)의 프로세서(120, 140) 또는 다른 하드웨어 컴포넌트의 일부를 형성하거나 그렇지 않으면 컴퓨팅 디바이스(110)의 프로세서(120, 140) 또는 다른 하드웨어 컴포넌트에 의해 수립될 수 있다. 컴퓨팅 디바이스(110)는 설명의 명료성을 위해 도 2에 예시되지 않은, 컴퓨팅 디바이스 내에서 보통 발견되는 다른 컴포넌트, 서브컴포넌트, 모듈 및 디바이스를 포함할 수 있다는 점이 인식되어야 한다.
아키텍처 통지 모듈(202)은 아키텍처 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 아키텍처 정보는 컴퓨팅 디바이스(110)의 각 처리 노드(112)의 아키텍처를 정의한다. 몇몇 실시예에서, 아키텍처 통지 모듈(202)에 의해 송신되는 아키텍처 정보는 컴퓨팅 디바이스(110)의 처리 노드(112)(가령, 처리 노드(114) 및 처리 노드(116)) 각각에 의해 실행되는 애플리케이션을 나타내는 애플리케이션 데이터, 처리 노드(112) 각각의 프로세서(가령, 프로세서(120) 및 프로세서(140))의 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142), 코어 B(144))를 나타내는 프로세서 코어 데이터, 처리 노드(112) 각각 내의 배분된 메모리 큐(가령, Q0(132), Q1(134), Q2(152), Q3(154))를 나타내는 메모리 큐 데이터, 그리고/또는 처리 노드(112) 각각의 네트워크 어댑터(가령, NIC(136) 및 NIC(156))의 포트(가령, P1(137) 및 P2(157))를 나타내는 포트 데이터를 포함한다. 추가적으로 또는 대안적으로, 아키텍처 통지 모듈(202)에 의해 송신되는 아키텍처 정보는 컴퓨팅 디바이스(110)의 각 처리 노드(112)(가령, 프로세서(120) 및 프로세서(140))의 각 프로세서(가령, 프로세서(120) 및 프로세서(140))의 각 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142), 코어 B(144))에 의해 실행되는 애플리케이션을 나타내는 데이터를 포함할 수 있다.
몇몇 실시예에서, 아키텍처 통지 모듈(202)은 컴퓨팅 디바이스(110) 또는 이의 컴포넌트의 초기화 시에 아키텍처 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 예를 들어, 아키텍처 통지 모듈(202)은 컴퓨팅 디바이스(110)에 의한 부트 프로세스(boot process)의 완료에 응답하여 및/또는 컴퓨팅 디바이스(110)의 프로세서의 프로세서 코어 또는 처리 노드(112)에 의한 특정한 애플리케이션의 초기화 또는 실행에 응답하여 아키텍처 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 다른 예에서, 아키텍처 통지 모듈(202)은 구성가능한 기준 아키텍처 통지 간격(configurable reference architecture notification interval)에 기초하여 및/또는 네트워크 제어기(170)로부터 수신된 하나 이상의 명령어 또는 명령이 아키텍처 통지 모듈(202)이 아키텍처 정보를 송신할 것을 요청하는 것에 기초하여 아키텍처 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 몇몇 실시예에서, 아키텍처 통지 모듈(202)은 아키텍처 정보를 네트워크 제어기(170)에 하나 이상의 표현적 상태 전이(Representational State Transfer: REST) 메시지로서 송신하도록 구성될 수 있다. 물론, 임의의 다른 적합한 메시징(messaging) 프로토콜 및/또는 포맷(가령, 단순 객체 액세스 프로토콜(Simple Object Access Protocol: SOAP)과 같은 XML 기초 프로토콜 및/또는 포맷, 자바스크립트 객체 표기(JavaScript Object Notation: JSON)와 같은 개방 표준 기초 프로토콜 및/또는 포맷 등)이 아키텍처 통지 모듈(202)에 의해 아키텍처 정보를 네트워크 제어기(170)에 송신하는 데에 사용될 수 있다는 점이 인식되어야 한다.
로컬 흐름 관리 모듈(204)은 네트워크 제어기(170)로부터 네트워크 흐름 정보를 수신하도록 구성될 수 있다. 네트워크 제어기(170)로부터 수신된 네트워크 흐름 정보는 원격 컴퓨팅 디바이스(180)에 의해 송신되고 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관될 수 있다. 네트워크 흐름 정보는 컴퓨팅 디바이스(110)의 타겟 처리 노드(target processing node)(112)(가령, 처리 노드(114))에 의해 실행되는 애플리케이션에 기초하여 네트워크 패킷을 처리하기 위한 타겟 처리 노드(112)(가령, 처리 노드(114))를 식별할 수 있다. 몇몇 실시예에서, 네트워크 흐름 정보는 타겟 처리 노드(112)(가령, 처리 노드(114))의 특정한 프로세서 코어(가령, 코어 A(122) 또는 코어 B(124))에 의해 실행되는 애플리케이션에 기초하여 네트워크 패킷을 처리하기 위한 타겟 처리 노드(112)(가령, 처리 노드(114))를 식별할 수도 있다. 몇몇 실시예에서, 로컬 흐름 관리 모듈(204)은 컴퓨팅 디바이스(110)의 흐름 유도 모듈(flow director module) 및/또는 컴퓨팅 디바이스(110)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))로서 구현화될 수 있다는 점이 인식되어야 한다.
몇몇 실시예에서, 로컬 흐름 관리 모듈(204)은 네트워크 제어기(170)로부터 수신된 네트워크 흐름 정보에 기초하여 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136)) 내의 하나 이상의 흐름 필터(138)를 프로그램하도록 또한 구성될 수 있다. 하나 이상의 흐름 필터(가령, 흐름 필터(138))는 네트워크 스위치(190)로부터 네트워크 패킷 (및 후속적인 관련된 네트워크 패킷)을 수신하기 위해 타겟 처리 노드(112)(가령, 처리 노드(114))의 메모리(가령, 메모리(126)) 내의 메모리 큐(가령, Q0(132) 또는 Q1(134))를 지정할 수 있다. 몇몇 실시예에서, 로컬 흐름 관리 모듈(204)에 의해 프로그램된 하나 이상의 흐름 필터(가령, 흐름 필터(138))는 네트워크 스위치(190)로부터 수신된 네트워크 패킷을 타겟 처리 노드(112)(가령, 처리 노드(114))의 메모리(가령, 메모리(126)) 내의 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))로 복사하기 위해 타겟 처리 노드(112)의 네트워크 어댑터(가령, NIC(136))에 의해 사용될 수 있다.
이제 도 3을 참조하면, 사용 중에, 네트워크 제어기(170)는 동작 중 환경(300)을 수립한다. 예시적인 환경(300)은 아키텍처 관리 모듈(302), 컴퓨팅 디바이스 아키텍처 데이터베이스(172), 네트워크 스위치 연결 데이터베이스(174) 및 흐름 관리 모듈(304)을 포함한다. 몇몇 실시예에서, 흐름 관리 모듈(304)은 흐름 판정 모듈(306) 및 전송 판정 모듈(308)을 포함할 수 있다. 환경(300)의 모듈, 로직 및 다른 컴포넌트 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로서 구현화될 수 있다. 예를 들어, 환경(300)의 모듈, 로직 및 다른 컴포넌트 각각은 네트워크 제어기(170)의 프로세서 또는 다른 하드웨어 컴포넌트의 일부를 형성하거나 그렇지 않으면 네트워크 제어기(170)의 프로세서 또는 다른 하드웨어 컴포넌트에 의해 수립될 수 있다. 네트워크 제어기(170)는 설명의 명료성을 위해 도 3에 예시되지 않은, 컴퓨팅 디바이스 내에서 보통 발견되는 다른 컴포넌트, 서브컴포넌트, 모듈 및 디바이스를 포함할 수 있다는 점이 인식되어야 한다.
아키텍처 관리 모듈(302)은 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하도록 구성될 수 있다. 앞서 논의된 바와 같이, 아키텍처 정보는 컴퓨팅 디바이스(110)의 각 처리 노드(112)의 아키텍처를 정의한다. 예를 들어, 몇몇 실시예에서, 아키텍처 관리 모듈(302)에 의해 수신된 아키텍처 정보는 애플리케이션 데이터, 프로세서 데이터, 프로세서 코어 데이터, 메모리 큐 데이터, 프로세서 코어 애플리케이션 실행 데이터 및/또는 포트 데이터를 포함할 수 있다. 예시적인 실시예에서, 아키텍처 관리 모듈(302)은 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보를, 컴퓨팅 디바이스 아키텍처 데이터베이스(170) 내에 또는 아키텍처 정보를 저장하기 위한 임의의 다른 적합한 데이터 구조 내에 저장하거나 그렇지 않으면 유지하도록 구성된다.
몇몇 실시예에서, 아키텍처 관리 모듈(302)은 컴퓨팅 디바이스(110) 또는 이의 컴포넌트의 초기화에 응답하여 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하도록 구성될 수 있다. 예를 들어, 아키텍처 관리 모듈(302)은 컴퓨팅 디바이스(110)에 의한 부트 프로세스의 완료에 응답하여 및/또는 컴퓨팅 디바이스(110)의 프로세서의 프로세서 코어 또는 처리 노드(112)에 의한 특정한 애플리케이션의 초기화 또는 실행에 응답하여 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하도록 구성될 수 있다. 다른 예에서, 아키텍처 관리 모듈(302)은 구성가능한 기준 아키텍처 통지 간격에 기초하여 및/또는 컴퓨팅 디바이스(110)로 송신된 하나 이상의 명령어 또는 명령이 컴퓨팅 디바이스(110)가 아키텍처 정보를 송신할 것을 요청하는 것에 기초하여 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하도록 구성될 수 있다. 몇몇 실시예에서, 아키텍처 관리 모듈(302)은 하나 이상의 단순 객체 액세스 프로토콜(Simple Object Access Protocol: SOAP) 메시지로서 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하도록 구성될 수 있다. 물론 임의의 다른 적합한 메시징 및/또는 통지 프로토콜이 아키텍처 관리 모듈(302)에 의해 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하기 위해 사용될 수 있다는 점이 인식되어야 한다.
아키텍처 관리 모듈(302)는 네트워크 스위치(190)로부터 연결 정보를 수신하도록 또한 구성될 수 있다. 연결 정보는 네트워크 스위치(190)의 하나 이상의 포트(가령, PA(192), PB(194), PC(196))와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180), 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간 하나 이상의 연결(가령, 통신 링크)을 정의하거나 그렇지 않으면 나타낸다. 몇몇 실시예에서, 아키텍처 관리 모듈(302)은 하나 이상의 오픈플로우(OpenFlow) 메시지로서 네트워크 스위치(190)로부터 연결 정보를 수신하도록 구성될 수 있다. 추가적으로 또는 대안적으로, 아키텍처 관리 모듈(302)은 하나 이상의 표현적 상태 전이(Representational State Transfer: REST) 메시지로서 네트워크 스위치(190)로부터 연결 정보를 수신하도록 구성될 수 있다. 물론, 임의의 다른 적합한 메시징 프로토콜 및/또는 포맷(가령, 단순 객체 액세스 프로토콜(Simple Object Access Protocol: SOAP)과 같은 XML 기초 프로토콜 및/또는 포맷, 자바스크립트 객체 표기(JavaScript Object Notation: JSON)와 같은 개방 표준 기초 프로토콜 및/또는 포맷 등)이 아키텍처 관리 모듈(302)에 의해 네트워크 스위치(190)로부터 연결 정보를 수신하기 위해 사용될 수 있다는 점이 인식되어야 한다.
몇몇 실시예에서, 아키텍처 관리 모듈(302)은 네트워크 스위치(190)와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180), 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간 네트워크 연결(가령, 통신 링크)의 수립 또는 종료 시에 네트워크 스위치(190)로부터 연결 정보를 수신하도록 구성될 수 있다. 예를 들어, 아키텍처 관리 모듈(302)은 네트워크 스위치(190)가 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196)) 중 하나 이상의 링크 상태(가령, "연결됨", "연결되지 않음", "활성", "비활성", "상향", "하향" 등)에서의 변화를 검출하는 것에 응답하여 연결 정보를 수신하도록 구성될 수 있다. 몇몇 실시예에서, 아키텍처 관리 모듈(302)은 네트워크 스위치(190)가 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196))에 새로 연결된 컴퓨팅 디바이스(가령, 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및/또는 임의의 다른 컴퓨팅 디바이스)와 연관된 새 MAC 주소를 검출하는 것에 응답하여 네트워크 스위치(190)로부터 연결 정보를 수신하도록 구성될 수 있다. 추가적으로 또는 대안적으로, 몇몇 실시예에서, 아키텍처 관리 모듈(302)은 구성가능한 기준 연결 통지 간격에 기초하여 및/또는 컴퓨팅 디바이스(110)로 보내어진 하나 이상의 명령어 또는 명령이 컴퓨팅 디바이스(110)가 연결 정보를 송신할 것을 요청하는 것에 기초하여 네트워크 스위치(190)로부터 연결 정보를 수신하도록 구성될 수 있다. 예시적인 실시예에서, 아키텍처 관리 모듈(302)은 네트워크 스위치(190)로부터 수신된 연결 정보를, 네트워크 스위치 연결 데이터베이스(174) 내에 또는 연결 정보를 저장하기 위한 임의의 다른 적합한 데이터 구조 내에 저장하거나 그렇지 않으면 유지하도록 구성된다.
흐름 관리 모듈(304)은 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하도록 구성될 수 있다. 그렇게 하기 위해, 몇몇 실시예에서, 흐름 관리 모듈(304)은 흐름 판정 모듈(306)을 포함한다. 그러한 실시예에서, 흐름 판정 모듈(306)은 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보에 기초하여 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정한다. 논의된 바와 같이, 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보는 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 저장될 수 있다. 몇몇 실시예에서, 흐름 판정 모듈(306)에 의해 판정된 네트워크 흐름 정보는 타겟 처리 노드(112)(가령, 처리 노드(114))에 의해 실행되고 있는 애플리케이션에 적어도 부분적으로 기초하거나 그렇지 않으면 이의 함수로서 네트워크 패킷을 처리하기 위한 컴퓨팅 디바이스(110)의 타겟 처리 노드(112)(가령, 처리 노드(114))를 식별하거나 그렇지 않으면 나타낸다. 그러한 실시예에서, 흐름 판정 모듈(306)은 네트워크 스위치(190)에 의해 수신된 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션을 판정하거나 그렇지 않으면 식별할 수 있다. 식별된 애플리케이션을 실행하는 컴퓨팅 디바이스(110)의 타겟 처리 노드(112)(가령, 처리 노드(114))를 판정하기 위해 흐름 판정 모듈(306)은 식별된 애플리케이션을 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 저장된 아키텍처 정보와 비교할 수 있다. 몇몇 실시예에서, 식별된 애플리케이션을 실행하는 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144))를 판정하기 위해 흐름 판정 모듈(306)은 식별된 애플리케이션을 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 저장된 아키텍처 정보와 비교할 수 있다. 추가적으로 또는 대안적으로, 흐름 판정 모듈(306)은 식별된 애플리케이션을 실행하는 타겟 처리 노드(112)(가령, 처리 노드(114))와 연관된 메모리 뱅크(가령, 메모리(126)) 및 특정한 네트워크 어댑터(가령, NIC(136))를 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 저장된 아키텍처 정보에 기초하여 판정하거나 그렇지 않으면 식별할 수 있다. 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정한 후, 흐름 판정 모듈(306)은 판정된 네트워크 흐름 정보를 컴퓨팅 디바이스(110)에 송신하도록 구성될 수 있다.
흐름 관리 모듈(304)은 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 전송 정보를 판정하도록 또한 구성될 수 있다. 그렇게 하기 위해, 몇몇 실시예에서, 흐름 관리 모듈(304)은 전송 판정 모듈(308)을 포함한다. 그러한 실시예에서, 전송 판정 모듈(308)은 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보 및 네트워크 스위치(190)로부터 수신된 연결 정보에 기초하여 네트워크 패킷을 위한 전송 정보를 판정한다. 논의된 바와 같이, 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보는 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 저장될 수 있고 네트워크 스위치(190)로부터 수신된 연결 정보는 네트워크 스위치 연결 데이터베이스(174) 내에 저장될 수 있다. 몇몇 실시예에서, 전송 판정 모듈(308)에 의해 판정된 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194) 또는 PC(196))를 식별하거나 그렇지 않으면 나타낸다. 그러한 실시예에서, 전송 판정 모듈(308)은 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136))가 네트워크 스위치(190)의 특정한 포트(가령, PA(192))에 통신가능하게 커플링됨을 판정하기 위해 아키텍처 정보 및 연결 정보를 이용하도록 구성될 수 있다. 네트워크 패킷과 연관된 전송 정보를 판정한 후, 전송 판정 모듈(308)은 판정된 전송 정보를 네트워크 스위치(190)에 송신하도록 구성될 수 있다.
추가적으로 또는 대안적으로, 흐름 관리 모듈(304)은 특정한 처리 노드(112)(가령, 처리 노드(114) 또는 처리 노드(116)) 및/또는 처리 노드(112) 중 하나의 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144))에 애플리케이션을 초기화하거나 실행할 것을 명령하는 하나 이상의 명령어 또는 명령을 컴퓨팅 디바이스(110)에 송신하도록 구성될 수 있다. 몇몇 실시예에서, 흐름 관리 모듈(304)은 네트워크 스위치(190)에 의해 수신된 하나 이상의 네트워크 패킷이 컴퓨팅 디바이스(110)의 처리 노드(112)에 의해 아직 실행되고 있지 않은 애플리케이션을 겨냥하고 있음을 판정하는 것에 응답하여 그러한 명령어를 컴퓨팅 디바이스(110)에 송신할 수 있다. 몇몇 실시예에서, 흐름 관리 모듈(304)은 특정한 처리 노드(112)(가령, 처리 노드(114) 또는 처리 노드(116)) 및/또는 처리 노드(112) 중 하나의 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144))가 최소로 이용되고 있음을 판정할 수 있다. 즉, 흐름 관리 모듈(304)은 최다 리소스 및/또는 최대 처리 능력을 가진 처리 노드(112) 중 하나 및/또는 특정한 프로세서 코어를 판정할 수 있다. 그러한 실시예에서, 흐름 관리 모듈(304)에 의해 송신된 명령어 및/또는 명령은 컴퓨팅 디바이스(110)에 최다 리소스 및/또는 최대 처리 능력을 가진 것으로 판정된 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144)) 및/또는 특정한 처리 노드(112)(가령, 처리 노드(114) 또는 처리 노드(116)) 상에서 새 애플리케이션을 초기화하거나 그렇지 않으면 실행할 것을 명령할 수 있다.
이제 도 4를 참조하면, 사용 중에, 네트워크 스위치(190)는 동작 중 환경(400)을 수립한다. 예시적인 환경(400)은 연결 관리 모듈(402) 및 패킷 전송 모듈(404)을 포함한다. 환경(400)의 모듈, 로직 및 다른 컴포넌트 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로서 구현화될 수 있다. 예를 들어, 환경(400)의 모듈, 로직 및 다른 컴포넌트 각각은 네트워크 스위치(190)의 프로세서 또는 다른 하드웨어 컴포넌트의 일부를 형성하거나 그렇지 않으면 네트워크 스위치(190)의 프로세서 또는 다른 하드웨어 컴포넌트에 의해 수립될 수 있다. 네트워크 스위치(190)는 설명의 명료성을 위해 도 4에 예시되지 않은, 컴퓨팅 디바이스 내에서 보통 발견되는 다른 컴포넌트, 서브컴포넌트, 모듈 및 디바이스를 포함할 수 있다는 점이 인식되어야 한다.
연결 관리 모듈(402)은 연결 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 연결 정보는 네트워크 스위치(190)의 하나 이상의 포트(가령, PA(192), PB(194), PC(196))와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180), 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간 하나 이상의 네트워크 연결(가령, 통신 링크)을 정의하거나 그렇지 않으면 나타낸다. 몇몇 실시예에서, 연결 관리 모듈(402)은 연결 정보를 네트워크 제어기(170)에 하나 이상의 오픈플로우(OpenFlow) 메시지로서 송신하도록 구성될 수 있다. 추가적으로 또는 대안적으로, 연결 관리 모듈(402)은 하나 이상의 표현적 상태 전이(Representational State Transfer: REST) 메시지로서 네트워크 제어기(170)에 연결 정보를 송신하도록 구성될 수 있다. 물론, 임의의 다른 적합한 메시징 프로토콜 및/또는 포맷(가령, 단순 객체 액세스 프로토콜(Simple Object Access Protocol: SOAP)과 같은 XML 기초 프로토콜 및/또는 포맷, 자바스크립트 객체 표기(JavaScript Object Notation: JSON)와 같은 개방 표준 기초 프로토콜 및/또는 포맷 등)이 연결 관리 모듈(402)에 의해 연결 정보를 네트워크 제어기(170)에 송신하기 위해 사용될 수 있다는 점이 인식되어야 한다.
몇몇 실시예에서, 연결 관리 모듈(402)은 네트워크 스위치(190)와 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180), 및/또는 임의의 다른 컴퓨팅 디바이스 또는 통신 네트워크 간 네트워크 연결(가령, 통신 링크)의 수립 또는 종료 시에 연결 정보를 네트워크 제어기(170)에 송신하도록 구성될 수 있다. 예를 들어, 연결 관리 모듈(402)은 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196)) 중 하나 이상의 링크 상태(가령, "연결됨", "연결되지 않음", "활성", "비활성", "상향", "하향" 등)에서의 변화를 검출하는 것에 응답하여 연결 정보를 송신하도록 구성될 수 있다. 몇몇 실시예에서, 연결 관리 모듈(402)은 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196))에 새로 연결된 컴퓨팅 디바이스(가령, 컴퓨팅 디바이스(110), 네트워크 제어기(170), 원격 컴퓨팅 디바이스(180) 및/또는 임의의 다른 컴퓨팅 디바이스)와 연관된 새 MAC 주소를 검출하는 것에 응답하여 네트워크 제어기(170)에 연결 정보를 송신하도록 구성될 수 있다. 추가적으로 또는 대안적으로, 몇몇 실시예에서, 연결 관리 모듈(402)은 구성가능한 기준 연결 통지 간격에 기초하여 및/또는 네트워크 제어기(170)로부터 수신된 하나 이상의 명령어 또는 명령이 연결 관리 모듈(402)이 연결 정보를 송신할 것을 요청하는 것에 기초하여 네트워크 제어기(170)에 연결 정보를 송신하도록 구성될 수 있다.
패킷 전송 모듈(404)은 네트워크 스위치(190)의 포트(가령, PA(192), PB(194) 또는 PC(196))를 통해 원격 컴퓨팅 디바이스(180)로부터 네트워크 패킷을 수신하도록 구성될 수 있다. 원격 컴퓨팅 디바이스(180)로부터 네트워크 패킷을 수신하는 것에 응답하여, 패킷 전송 모듈(404)은 수신된 네트워크 패킷과 연관된 전송 정보에 대한 요청을 네트워크 제어기(170)에 송신하도록 구성된다. 패킷 전송 모듈(404)은 요청된 전송 정보를 네트워크 제어기(170)로부터 수신하도록 또한 구성될 수 있다. 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))를 식별하거나 그렇지 않으면 나타낼 수 있다. 몇몇 실시예에서, 전송 정보는 컴퓨팅 디바이스(110)의 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 통신가능하게 커플링된 네트워크 스위치(190)의 특정한 인터페이스 또는 포트(가령, PA(192), PB(194), PC(196))를 나타내는 정보를 포함할 수 있다. 추가적으로, 몇몇 실시예에서, 패킷 전송 모듈(404)은 하나 이상의 흐름 엔트리를 포함하는 하나 이상의 흐름 테이블을 유지하도록 구성될 수 있다. 그러한 실시예에서, 패킷 전송 모듈(404)은 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 전송 테이블(들)에 흐름 엔트리를 부가하도록 구성될 수 있다.
패킷 전송 모듈(404)은 원격 컴퓨팅 디바이스(180)에 의해 수신된 네트워크 패킷을 수신된 전송 정보에 기초하여 네트워크 제어기(170)에 의해 식별된 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 전송하도록 또한 구성될 수 있다. 그렇게 하기 위해, 몇몇 실시예에서, 패킷 전송 모듈(404)은 네트워크 패킷이 수신된 네트워크 스위치(190)의 포트(가령, PB(194))로부터 컴퓨팅 디바이스(110)의 식별된 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 통신가능하게 커플링된 네트워크 스위치(190)의 다른 포트(가령, PA(192))로 네트워크 패킷을, 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 전송하도록 구성될 수 있다. 네트워크 스위치(190)가 하나 이상의 흐름 엔트리를 포함하는 흐름 테이블(들)을 유지하는 실시예에서, 패킷 전송 모듈(404)은 흐름 테이블(들)의 하나 이상의 엔트리에 기초하여 네트워크 제어기(170)에 의해 식별된 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)의 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))에 원격 컴퓨팅 디바이스(180)에 의해 수신된 네트워크 패킷을 전송하도록 구성될 수 있다.
이제 도 5를 참조하면, 네트워크 제어기(170)는 컴퓨팅 디바이스(110)의 처리 노드로 네트워크 흐름을 정렬하는 방법(500)을 실행할 수 있다. 방법(500)은 네트워크 제어기(170)가 컴퓨팅 디바이스(110)로부터 아키텍처 정보를 수신하는 블록(502)과 함께 시작한다. 앞서 논의된 바와 같이, 아키텍처 정보는 컴퓨팅 디바이스(110)의 각 처리 노드(112)의 아키텍처를 정의할 수 있다. 예를 들어, 몇몇 실시예에서는, 블록(504)에서, 네트워크 제어기(170)는 어느 프로세서(가령, 프로세서(120) 및 프로세서(140)) 및 메모리 뱅크(가령, 메모리(126) 및 메모리(146))가 컴퓨팅 디바이스(110)의 어느 처리 노드(가령, 처리 노드(114) 및 처리 노드(116)) 내에 포함되는지를 나타내는 아키텍처 정보를 컴퓨팅 디바이스(110)로부터 수신한다. 몇몇 실시예에서, 아키텍처 정보는 어느 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 및 코어 B(144))가 어느 프로세서(가령, 프로세서(120) 및 프로세서(140)) 내에 포함되는지 식별하는 정보를 또한 포함할 수 있다. 추가적으로, 블록(506)에서, 네트워크 제어기(170)는 어느 애플리케이션이 컴퓨팅 디바이스(110)의 어느 처리 노드(112)(가령, 처리 노드(114) 및 처리 노드(116))에 의해 실행되고 있는지 나타내는 아키텍처 정보를 컴퓨팅 디바이스(110)로부터 수신한다. 몇몇 실시예에서, 그러한 아키텍처 정보는 프로세서(가령, 프로세서(120) 및 프로세서(140))의 어느 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144))가 어느 애플리케이션을 실행하고 있는지 식별할 수도 있다. 추가적으로 또는 대안적으로, 수신된 아키텍처 정보는 실행되고 있는 각 애플리케이션에 할당되거나 그렇지 않으면 배분된 메모리 공간(가령, 애플리케이션 메모리 공간(128) 및 애플리케이션 메모리 공간(148))을 식별하는 정보를 포함할 수 있다. 몇몇 실시예에서는, 블록(508)에서, 네트워크 제어기(170)는 어느 메모리 큐(가령, Q0(132), Q1(134), Q2(152) 및 Q3(154)가 어느 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))의 어느 포트(가령, P1(137) 또는 P2(157))에 할당되거나 그렇지 않으면 배분되었는지 나타내는 아키텍처 정보를 컴퓨팅 디바이스(110)로부터 수신할 수도 있다. 물론 네트워크 제어기(170)는 다른 실시예에서 컴퓨팅 디바이스(110)로부터 임의의 다른 유형의 아키텍처 정보를 수신할 수 있다는 점이 인식되어야 한다.
결정 블록(510)에서, 네트워크 제어기(170)는 전송 정보에 대한 요청이 네트워크 스위치(190)로부터 수신되었는지 판정한다. 전송 정보에 대한 요청은 네트워크 스위치(190)가 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196))를 통해 원격 컴퓨팅 디바이스(180)로부터 네트워크 패킷을 수신하는 것에 응답하여 네트워크 스위치(190)로부터 수신될 수 있다. 만약 전송 정보에 대한 요청이 네트워크 스위치(190)로부터 수신되었다고 결정 블록(510)에서 네트워크 제어기(170)가 판정하는 경우, 방법(500)은 블록(512)으로 나아간다. 그러나, 그렇지 않고 전송 정보에 대한 요청이 네트워크 스위치(190)로부터 수신되지 않았다고 네트워크 제어기(170)가 판정하는 경우, 방법(500)은 결정 블록(510)으로 되돌아가고(loop back) 네트워크 제어기(170)는 전송 정보에 대한 요청이 수신되었는지 판정하기를 계속한다.
블록(512)에서, 네트워크 제어기(170)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정한다. 네트워크 흐름 정보는 타겟 처리 노드에 의해 실행되는 애플리케이션에 적어도 부분적으로 기초하거나 그렇지 않으면 이의 함수로서 네트워크 패킷을 처리하기 위한 컴퓨팅 디바이스(110)의 타겟 처리 노드(112)(가령, 처리 노드(114))를 식별하거나 그렇지 않으면 나타낸다. 동작 중에, 네트워크 제어기(170)는 컴퓨팅 디바이스(110)로부터 수신되고 컴퓨팅 디바이스 아키텍처 데이터베이스(172) 내에 유지되는 아키텍처 정보에 기초하여 네트워크 흐름 정보를 판정한다. 따라서, 몇몇 실시예에서는, 블록(514)에서 네트워크 제어기(170)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션을 판정하거나 그렇지 않으면 식별할 수 있다. 그렇게 하기 위해, 네트워크 제어기(170)는 겨냥된 애플리케이션을 판정하기 위해 네트워크 패킷과 연관된 헤더 정보(header information)(가령, 5-투플(tuple)로부터의 포트 번호 및 유형)를 조사할 수 있다. 물론, 네트워크 제어기(170)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션을 판정하거나 식별하기 위한 임의의 다른 프로세스를 사용할 수 있다는 점이 인식되어야 한다. 그러한 실시예에서, 네트워크 제어기(170)는 네트워크 흐름 정보를 판정하기 위해 컴퓨팅 디바이스(110)로부터 수신된 아키텍처 정보와 판정된 애플리케이션을 비교할 수 있다. 예를 들어, 몇몇 실시예에서, 네트워크 제어기(170)는 수신된 네트워크 패킷에 의해 겨냥된 애플리케이션이 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)(가령, 처리 노드(114))에 의해 실행되고 있음을 판정할 수 있다. 그러한 실시예에서, 네트워크 제어기(170)는 수신된 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)(가령, 처리 노드(114))가 타겟 처리 노드(112)라고 판정할 수 있다. 추가적으로, 몇몇 실시예에서는, 블록(516)에서 네트워크 제어기(170)는 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124), 코어 A(142) 또는 코어 B(144))를 판정할 수도 있다. 그러한 실시예에서, 네트워크 제어기(170)는 수신된 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 프로세서 코어(가령, 코어 A(122) 또는 코어 B(124))를 포함하는 컴퓨팅 디바이스(110)의 특정한 처리 노드(112)(가령, 처리 노드(114))가 타겟 처리 노드(112)라고 판정할 수 있다.
블록(518)에서, 네트워크 제어기(170)는 네트워크 흐름 정보를 컴퓨팅 디바이스(110)에 송신한다. 그리고 네트워크 흐름 정보는 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 특정한 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136)) 내의 흐름 필터(가령, 흐름 필터(138))를 프로그램하기 위해 컴퓨팅 디바이스(110)에 의해 사용될 수 있다. 몇몇 실시예에서, 특정한 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136)) 내의 흐름 필터(가령, 흐름 필터(138))는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷 (및 후속적인 관련된 네트워크 패킷)을 수신하기 위한 특정한 타겟 처리 노드(112)(가령, 처리 노드(114))의 메모리(가령, 메모리(126)) 내의 메모리 큐(가령, Q0(132) 또는 Q1(134))를 지정한다.
블록(520)에서, 네트워크 제어기(170)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 전송 정보를 판정한다. 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194) 또는 PC(196))를 식별한다. 동작 중에, 네트워크 제어기(170)는 컴퓨팅 디바이스(110)로부터 수신되고 컴퓨팅 디바이스 아키텍처 내에 유지되는 아키텍처 정보 및/또는 네트워크 스위치(190)로부터 수신되고 네트워크 스위치 연결 데이터베이스(174) 내에 유지되는 연결 정보에 기초하여 전송 정보를 판정한다. 예를 들어, 몇몇 실시예에서, 네트워크 제어기(170)는 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136))가 네트워크 스위치(190)의 특정한 포트(가령, PA(192))에 통신가능하게 커플링됨을 판정하기 위해 아키텍처 정보 및 연결 정보를 이용할 수 있다.
블록(522)에서, 네트워크 제어기는 네트워크 스위치(190)에 전송 정보를 송신한다. 그리고 전송 정보는 수신된 네트워크 패킷을 수신된 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136))에 통신가능하게 커플링된 특정한 포트(가령, PA(192))로 전송하기 위해 네트워크 스위치(190)에 의해 사용될 수 있다.
이제 도 6을 참조하면, 컴퓨팅 디바이스(110)는 컴퓨팅 디바이스(110)의 처리 리소스로 네트워크 흐름을 정렬하는 방법(600)을 실행할 수 있다. 방법(600)은 컴퓨팅 디바이스(110)가 아키텍처 정보를 네트워크 제어기(170)에 송신하는 블록(602)과 함께 시작한다. 이번에도, 앞서 논의된 바와 같이, 아키텍처 정보는 컴퓨팅 디바이스(110)의 각 처리 노드(112)의 아키텍처를 정의할 수 있다. 예를 들어, 몇몇 실시예에서는, 블록(604)에서, 컴퓨팅 디바이스(110)는 어느 프로세서 및 메모리 뱅크가 컴퓨팅 디바이스(110)의 어느 처리 노드(112) 내에 포함되는지를 나타내는 아키텍처 정보를 네트워크 제어기(170)에 송신한다. 몇몇 실시예에서, 아키텍처 정보는 어느 프로세서 코어가 어느 프로세서 내에 포함되는지를 식별하는 정보를 또한 포함할 수 있다. 추가적으로, 블록(606)에서, 컴퓨팅 디바이스(110)는 어느 애플리케이션이 컴퓨팅 디바이스(110)의 어느 처리 노드(112)에 의해 실행되고 있는지 나타내는 아키텍처 정보를 네트워크 제어기(170)에 송신한다. 몇몇 실시예에서, 그러한 아키텍처 정보는 프로세서의 어느 프로세서 코어가 어느 애플리케이션을 실행하고 있는지 식별할 수도 있다. 추가적으로 또는 대안적으로, 송신된 아키텍처 정보는 실행되고 있는 각 애플리케이션에 할당되거나 그렇지 않으면 배분된 메모리 공간을 식별하는 정보를 포함할 수 있다. 몇몇 실시예에서는, 블록(608)에서, 컴퓨팅 디바이스(110)는 어느 메모리 큐가 어느 네트워크 어댑터(가령, NIC)의 어느 포트에 할당되거나 그렇지 않으면 배분되는지 나타내는 아키텍처 정보를 네트워크 제어기(170)에 송신할 수도 있다. 물론 컴퓨팅 디바이스(110)는 다른 실시예에서 네트워크 제어기(170)에 임의의 다른 유형의 아키텍처 정보를 송신할 수 있다는 점이 인식되어야 한다.
결정 블록(610)에서, 컴퓨팅 디바이스(110)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷과 연관된 네트워크 흐름 정보가 네트워크 제어기(170)로부터 수신되는지 판정한다. 몇몇 실시예에서, 그 네트워크 정보는 네트워크 제어기(170)에 컴퓨팅 디바이스(110)를 통신가능하게 커플링하는 컴퓨팅 디바이스(110)의 하나 이상의 관리 포트(도시되지 않음)를 통해 수신될 수 있다. 네트워크 흐름 정보는 타겟 처리 노드(112)에 의해 실행되는 애플리케이션에 적어도 부분적으로 기초하여 또는 그렇지 않으면 이의 함수로서 네트워크 패킷을 처리하기 위한 컴퓨팅 디바이스(110)의 타겟 처리 노드(112)(가령, 처리 노드(114))를 식별하거나 그렇지 않으면 나타낸다. 몇몇 실시예에서, 네트워크 흐름 정보는 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 특정한 프로세서 코어(가령, 코어 A(122), 코어 B(124))를 식별하거나 그렇지 않으면 나타낼 수도 있다. 만약 네트워크 패킷과 연관된 네트워크 흐름 정보가 네트워크 제어기(170)로부터 수신됨을 결정 블록(610)에서 컴퓨팅 디바이스(110)가 판정하는 경우, 방법(600)은 블록(612)으로 나아간다. 그러나, 그렇지 않고 네트워크 패킷과 연관된 네트워크 흐름 정보가 네트워크 제어기(170)로부터 수신되지 않음을 컴퓨팅 디바이스(110)가 판정하는 경우, 방법(600)은 결정 블록(616)으로 나아간다.
블록(612)에서, 컴퓨팅 디바이스(110)는 네트워크 패킷에 의해 겨냥된 애플리케이션을 실행하는 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136)) 내의 흐름 필터(가령, 흐름 필터(138))를 프로그램한다. 몇몇 실시예에서는, 블록(614)에서, 컴퓨팅 디바이스(110)는 네트워크 스위치(190)에 의해 수신된 네트워크 패킷 (및 후속적인 관련된 네트워크 패킷)을 수신하기 위한 타겟 처리 노드(112)(가령, 처리 노드(114))의 메모리(가령, 메모리(126)) 내의 메모리 큐(가령, Q0(132) 또는 Q1(134))를 지정하도록 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136)) 내의 흐름 필터(가령, 흐름 필터(138))를 프로그램한다.
결정 블록(616)에서, 컴퓨팅 디바이스(110)는 네트워크 패킷이 네트워크 스위치(190)로부터 수신되는지 판정한다. 그렇게 하기 위해, 몇몇 실시예에서, 컴퓨팅 디바이스(110)는 네트워크 패킷이 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136))에 의해 수신되는지 판정한다. 만약 네트워크 패킷이 네트워크 스위치(190)로부터 수신됨을 결정 블록(616)에서 컴퓨팅 디바이스(110)가 판정하는 경우, 방법(600)은 블록(618)으로 나아간다. 그러나, 그렇지 않고 네트워크 패킷이 네트워크 스위치(190)로부터 수신되지 않음을 컴퓨팅 디바이스(110)가 판정하는 경우, 방법(600)은 결정 블록(610)으로 되돌아가고 컴퓨팅 디바이스(110)는 네트워크 흐름 정보가 수신되는지 판정한다.
블록(618)에서, 타겟 처리 노드(112)(가령, 처리 노드(114))의 네트워크 어댑터(가령, NIC(136))는 수신된 네트워크 패킷을 타겟 처리 노드(112)의 메모리(가령, 메모리(126)) 내의 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))에 복사한다. 그렇게 하기 위해, 타겟 처리 노드(112)의 네트워크 어댑터(가령, NIC(136))는 이전에 프로그램된 흐름 필터(가령, 흐름 필터(138))를 네트워크 스위치(190)로부터 수신된 네트워크 패킷에 적용한다. 네트워크 패킷이 수신되나 네트워크 패킷과 연관된 네트워크 흐름 정보는 수신되지 않음을 컴퓨팅 디바이스(110)가 판정하는 실시예에서, 네트워크 패킷을 수신한 네트워크 어댑터(가령, NIC(136) 또는 NIC(156))는 수신된 네트워크 패킷을 이와 연관된 NIC 메모리 공간(가령, NIC 메모리 공간(130) 또는 NIC 메모리 공간(150)) 내의 메모리 큐(가령, Q0(132), Q1(134), Q2(152) 또는 Q3(154))로 복사한다.
블록(620)에서, 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션은 타겟 처리 노드(112)(가령, 처리 노드(114))의 메모리(가령, 메모리(126)) 내의 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))로부터 네트워크 패킷을 수신하거나 그렇지 않으면 색출한다. 몇몇 실시예에서, 겨냥된 애플리케이션은 네트워크 패킷이 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))로부터의 색출(retrieval)을 위해 이용가능한지 판정할 수 있다. 그렇게 하기 위해, 몇몇 실시예에서, 네트워크 패킷이 색출을 위해 이용가능한지 판정하기 위해 그 겨냥된 애플리케이션은 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))를 폴링할(poll) 수 있다. 추가적으로 또는 대안적으로, 그 겨냥된 애플리케이션은 컴퓨팅 디바이스(110)의 다른 컴포넌트에 의해 생성되어 네트워크 패킷이 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))로부터 색출되도록 이용가능함을 나타내는 인터럽트(interrupt)를 수신할 수 있다. 그러한 실시예에서, 그 겨냥된 애플리케이션은 네트워크 패킷이 색출을 위해 이용가능함을 판정하는 것에 응답하여 네트워크 패킷을 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))로부터 색출할 수 있다. 몇몇 실시예에서, 네트워크 패킷을 색출한 후에 그 겨냥된 애플리케이션은 지정된 메모리 큐(가령, Q0(132) 또는 Q1(134))를 소거하거나(clear) 그렇지 않으면 리셋한다(reset). 네트워크 패킷이 수신되나 네트워크 패킷과 연관된 네트워크 흐름 정보가 수신되지 않음을 컴퓨팅 디바이스(110)가 판정하는 실시예에서, 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션은 네트워크 패킷이 내부에 저장된 처리 노드(112)(가령, 처리 노드(114) 또는 처리 노드(116))의 메모리(가령, 메모리(126) 또는 메모리(146)) 내의 메모리 큐(가령, Q0(132), Q1(134), Q2(152) 또는 Q3(154))로부터 네트워크 패킷을 수신하거나 그렇지 않으면 색출한다. 몇몇 실시예에서, 네트워크 패킷에 의해 겨냥된 특정한 애플리케이션은 수신된 네트워크 패킷을 저장하는 NIC 메모리 공간(가령, NIC 메모리 공간(150))을 포함하는 처리 노드(112)(가령, 처리 노드(116))과는 상이한 처리 노드(112)(가령, 처리 노드(114)) 내에서 실행될 수 있다는 점이 인식되어야 한다. 그러한 실시예에서, 겨냥된 애플리케이션은 처리 노드(114)를 처리 노드(116)에 통신가능하게 커플링하는 통신 링크(가령, QPI(118) 등)를 통해 처리 노드(112)(가령, 처리 노드(116))의 NIC 메모리 공간(가령, NIC 메모리 공간(150))으로부터 네트워크 패킷을 수신하거나 그렇지 않으면 색출할 수 있다.
이제 도 7을 참조하면, 네트워크 스위치(190)는 컴퓨팅 디바이스(110)의 처리 리소스로 네트워크 흐름을 정렬하는 방법(700)을 실행할 수 있다. 방법(700)은 네트워크 패킷이 원격 컴퓨팅 디바이스(180)로부터 수신되는지 네트워크 스위치(190)가 판정하는 결정 블록(702)과 함께 시작한다. 몇몇 실시예에서, 네트워크 스위치(190)는 네트워크 패킷이 네트워크 스위치(190)의 포트(가령, PA(192), PB(194), PC(196))를 통해 원격 컴퓨팅 디바이스(180)로부터 수신되는지 판정한다. 만약 네트워크 패킷이 원격 컴퓨팅 디바이스(180)로부터 수신됨을 결정 블록(702)에서 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 블록(704)으로 나아간다. 그러나, 그렇지 않고 네트워크 패킷이 원격 컴퓨팅 디바이스(180)로부터 수신되지 않음을 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 결정 블록(702)으로 되돌아가고 네트워크 스위치(190)는 네트워크 패킷이 수신되는지 판정하기를 계속한다.
결정 블록(704)에서, 네트워크 스위치(190)는 네트워크 스위치(190)에 의해 유지되는 전송 테이블(들)이 수신된 네트워크 패킷과 연관된 흐름 엔트리를 포함하는지 판정할 수 있다. 논의된 바와 같이, 흐름 테이블(들)의 각 흐름 엔트리는 네트워크 제어기(170)로부터 수신된 전송 정보에 기초할 수 있고 하나 이상의 네트워크 흐름, 각 네트워크 흐름과 연관된 네트워크 패킷, 그리고 각 네트워크 흐름의 네트워크 패킷이 전송되어야 할 목적지 컴퓨팅 디바이스 (또는 이의 컴포넌트)를 식별하기 위해 네트워크 스위치(190)에 의해 사용될 수 있다. 만약 전송 테이블(들)이 수신된 네트워크 패킷과 연관된 흐름 엔트리를 포함함을 결정 블록(704)에서 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 블록(712)으로 나아간다. 그러나, 그렇지 않고 전송 테이블(들)이 수신된 네트워크 패킷과 연관된 흐름 엔트리를 포함하지 않음을 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 블록(706)으로 나아간다.
블록(706)에서, 네트워크 스위치(190)는 수신된 네트워크 패킷과 연관된 전송 정보를 네트워크 제어기(170)에 요청한다. 몇몇 실시예에서, 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194) 또는 PC(196))를 식별한다. 예를 들어, 몇몇 실시예에서, 전송 정보는 수신된 네트워크 패킷이 전송되어야 할 컴퓨팅 디바이스(110)의 타겟 처리 노드(112)(가령, 처리 노드(114))의 특정 네트워크 어댑터(가령, NIC(136))에 통신가능하게 커플링된 특정한 포트(가령, PA(192))를 식별할 수 있다.
결정 블록(708)에서, 네트워크 스위치(190)는 네트워크 패킷을 위한 요청된 전송 정보가 네트워크 제어기(170)로부터 수신되는지 판정한다. 만약 네트워크 패킷을 위한 전송 정보가 네트워크 제어기(170)로부터 수신됨을 결정 블록(708)에서 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 블록(710)으로 나아간다. 그러나, 그렇지 않고 네트워크 패킷을 위한 전송 정보가 네트워크 제어기(170)로부터 수신되지 않음을 네트워크 스위치(190)가 판정하는 경우, 방법(700)은 결정 블록(708)으로 되돌아가고 네트워크 스위치(190)는 네트워크 패킷을 위한 요청된 전송 정보가 수신되는지 판정하기를 계속한다.
블록(710)에서, 네트워크 스위치는 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 네트워크 스위치(190)에 의해 유지되는 전송 테이블(들)에 흐름 엔트리를 부가한다. 흐름 테이블(들)에 부가된 흐름 엔트리는 네트워크 흐름, 네트워크 흐름과 연관된 네트워크 패킷, 그리고 각 네트워크 흐름의 네트워크 패킷이 전송되어야 할 목적지 컴퓨팅 디바이스 (또는 이의 컴포넌트)를 식별할 수 있다. 예를 들어, 몇몇 실시예에서, 흐름 테이블(들)에 부가된 흐름 엔트리는 컴퓨팅 디바이스(110)(또는 NIC(136)와 같은 이의 특정한 컴포넌트)에 통신가능하게 커플링되고 수신된 네트워크 패킷 (및 후속적으로 수신되는 네트워크 패킷)이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194), PC(196))를 나타낼 수 있다.
블록(712)에서, 네트워크 스위치(190)는 수신된 네트워크 패킷과 연관된 전송 테이블(들)의 흐름 엔트리에 기초하여 네트워크 패킷을 전송한다. 예를 들어, 몇몇 실시예에서, 네트워크 스위치(190)는 수신된 네트워크 패킷과 연관된 전송 테이블(들)의 흐름 엔트리에 기초하여 네트워크 스위치(190)의 상이한 포트(가령, PA(192))에 네트워크 스위치(190)의 하나의 포트(가령, PB(194))를 통해 원격 컴퓨팅 디바이스(180)로부터 수신된 네트워크 패킷을 전송할 수 있다.
이제 도 8을 참조하면, 네트워크 스위치(190)는 컴퓨팅 디바이스(110)의 처리 리소스로 네트워크 흐름을 정렬하는 방법(800)을 실행할 수 있다. 몇몇 실시예에서, 네트워크 스위치(190)는 위에서 논의된 방법(700)과 병렬로 방법(800)을 실행할 수 있다. 방법(800)은 네트워크 패킷을 위한 전송 정보가 네트워크 제어기(170)로부터 수신되는지 네트워크 스위치(190)가 판정하는 블록(802)과 함께 시작한다. 만약 네트워크 패킷을 위한 전송 정보가 네트워크 제어기(170)로부터 수신됨을 결정 블록(802)에서 네트워크 스위치(190)가 판정하는 경우, 방법(800)은 블록(804)으로 나아간다. 그러나, 그렇지 않고 네트워크 패킷을 위한 전송 정보가 네트워크 제어기(170)로부터 수신되지 않음을 네트워크 스위치(190)가 판정하는 경우, 방법(800)은 결정 블록(802)으로 되돌아가고 네트워크 스위치(190)는 전송 정보가 수신되는지 판정하기를 계속한다.
블록(804)에서, 네트워크 스위치(190)는 네트워크 제어기(170)로부터 수신된 전송 정보에 기초하여 네트워크 스위치(190)에 의해 유지되는 전송 테이블(들)에 흐름 엔트리를 부가한다. 흐름 테이블(들)에 부가된 흐름 엔트리는 네트워크 흐름, 네트워크 흐름과 연관된 네트워크 패킷, 그리고 각 네트워크 흐름의 네트워크 패킷이 전송되어야 할 목적지 컴퓨팅 디바이스(또는 이의 컴포넌트)를 식별할 수 있다. 예를 들어, 몇몇 실시예에서, 흐름 테이블(들)에 부가된 흐름 엔트리는 컴퓨팅 디바이스(110)에 통신가능하게 커플링되고 수신된 네트워크 패킷 (및 후속적으로 수신된 네트워크 패킷)이 전송되어야 할 네트워크 스위치(190)의 특정한 포트(가령, PA(192), PB(194), PC(196))를 나타낼 수 있다.
예들
본 문서에서 개시된 기술들의 예시적인 예들이 아래에서 제공된다. 그 기술들의 일 실시예는 후술된 예들 중 하나 이상 및 이들의 임의의 조합을 포함할 수 있다.
예 1은 처리 리소스로의 네트워크 흐름의 정렬를 위한 컴퓨팅 디바이스를 포함하는데, 위 컴퓨팅 디바이스는 아키텍처 정보를 네트워크 제어기에 송신하는 아키텍처 통지 모듈 - 위 아키텍처 정보는 위 컴퓨팅 디바이스의 복수의 처리 노드 중 각 처리 노드의 아키텍처를 정의하되, 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터를 포함함 - ; (i) 위 네트워크 제어기로부터 네트워크 흐름 정보를 수신 - 위 네트워크 흐름 정보는 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - 하고 (ii) 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 위 메모리 내의 메모리 큐를 지정하도록 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 위 네트워크 어댑터 내의 흐름 필터를 프로그램하는 로컬 흐름 관리 모듈을 포함하되; 위 타겟 처리 노드의 위 네트워크 어댑터는 네트워크 스위치로부터 위 네트워크 패킷을 수신하고, 위 네트워크 패킷은 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해 처리된다.
예 2는 예 1의 대상(subject matter)을 포함하고, 위 아키텍처 정보는 위 복수의 처리 노드 중 각 처리 노드에 의해 실행되는 애플리케이션들을 나타낸다.
예 3은 예 1 및 예 2 중 여하한 것의 대상을 포함하고, 각 처리 노드의 위 프로세서는 복수의 처리 코어를 포함하되; 위 아키텍처 정보는 각 처리 노드의 각 프로세서의 각 처리 코어에 의해 실행되는 위 애플리케이션들을 나타내는 데이터를 포함하며; 위 네트워크 흐름 정보를 수신하는 것은 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별하는 네트워크 흐름 정보를 위 네트워크 제어기로부터 수신하는 것을 포함한다.
예 4는 예 1 내지 예 3 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드의 위 네트워크 어댑터는 또한 (i) 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 위 네트워크 어댑터의 포트에 배분 - 위 네트워크 패킷을 위 네트워크 스위치로부터 수신하는 것은 위 네트워크 어댑터의 위 포트를 통해 위 네트워크 스위치로부터 위 네트워크 패킷을 수신하는 것을 포함함 - 하고 (ii) 위 수신된 네트워크 패킷을 위 네트워크 어댑터의 위 포트에 배분된 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐에 복사한다.
예 5는 예 1 내지 예 4 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션은 (i) 위 수신된 네트워크 패킷이 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 색출되도록 이용가능한지 판정하고 (ii) 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 위 수신된 네트워크 패킷을, 위 수신된 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능하다는 판정에 응답하여 색출한다.
예 6은 예 1 내지 예 5 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능한지 판정하는 것은 (i) 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 기준 폴링 간격(reference polling interval)의 함수로서 폴링하는 것 또는 (ii) 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능함을 나타내는 인터럽트를 수신하는 것 중 적어도 하나를 포함한다.
예 7은 예 1 내지 예 6 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하며, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하고, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 로컬 흐름 관리 모듈은 또한 (i) 위 네트워크 제어기로부터 제2 네트워크 흐름 정보를 수신 - 위 제2 네트워크 흐름 정보는 제2 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - 하고 (ii) 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정하도록 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하며; 위 상이한 처리 노드의 위 제2 네트워크 어댑터는 위 네트워크 스위치로부터 위 제2 네트워크 패킷을 수신하고, 위 제2 네트워크 패킷은 위 상이한 처리 노드에 의해 실행되는 위 다른 애플리케이션에 의해 처리된다.
예 8은 예 1 내지 예 7 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드는 위 네트워크 제어기로부터 수신되는 명령어에는 적어도 기초하여 다른 애플리케이션을 실행한다.
예 9는 네트워크 흐름을 처리 리소스로 정렬하는 방법을 포함하는데, 위 방법은, 복수의 처리 노드를 갖는 컴퓨팅 디바이스에 의해, 아키텍처 정보를 네트워크 제어기에 송신하는 것 - 위 아키텍처 정보는 각 처리 노드의 아키텍처를 정의하되, 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터를 포함함 - ; 위 컴퓨팅 디바이스에 의해, 위 네트워크 제어기로부터 네트워크 흐름 정보를 수신하는 것 - 위 네트워크 흐름 정보는 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - ; 위 컴퓨팅 디바이스에 의해, 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 위 메모리 내의 메모리 큐를 지정하도록 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 위 네트워크 어댑터 내의 흐름 필터를 프로그램하는 것; 및 위 타겟 처리 노드의 위 네트워크 어댑터에 의해, 네트워크 스위치로부터 위 네트워크 패킷을 수신하는 것 - 위 네트워크 패킷은 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해 처리됨 - 을 포함한다.
예 10은 예 9의 대상을 포함하고, 위 아키텍처 정보는 위 복수의 처리 노드 중 각 처리 노드에 의해 실행되는 애플리케이션들을 나타낸다.
예 11은 예 9 및 예 10 중 여하한 것의 대상을 포함하고, 각 처리 노드의 위 프로세서는 복수의 처리 코어를 포함하되; 위 아키텍처 정보는 각 처리 노드의 각 프로세서의 각 처리 코어에 의해 실행되는 위 애플리케이션들을 나타내는 데이터를 포함하며, 위 네트워크 흐름 정보를 수신하는 것은 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별하는 네트워크 흐름 정보를 위 네트워크 제어기로부터 수신하는 것을 포함한다.
예 12는 예 9 내지 예 11 중 여하한 것의 대상을 포함하고, 위 처리 노드의 위 네트워크 어댑터에 의해, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 위 네트워크 어댑터의 포트에 배분하는 것 - 위 네트워크 패킷을 위 네트워크 스위치로부터 수신하는 것은 위 네트워크 어댑터의 위 포트를 통해 위 네트워크 스위치로부터 위 네트워크 패킷을 수신하는 것을 포함함 - ; 및 위 타겟 처리 노드의 위 네트워크 어댑터에 의해, 위 수신된 네트워크 패킷을 위 네트워크 어댑터의 위 포트에 배분된 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐에 복사하는 것을 더 포함한다.
예 13은 예 9 내지 예 12 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해, 위 수신된 네트워크 패킷이 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 색출되도록 이용가능한지 판정하는 것; 및 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 위 수신된 네트워크 패킷을, 위 수신된 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능하다는 판정에 응답하여 색출하는 것을 더 포함한다.
예 14는 예 9 내지 예 13 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능한지 판정하는 것은 (i) 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 기준 폴링 간격의 함수로서 폴링하는 것 또는 (ii) 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능함을 나타내는 인터럽트를 수신하는 것 중 적어도 하나를 포함한다.
예 15는 예 9 내지 예 14 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하며, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하고, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 컴퓨팅 디바이스에 의해, 위 네트워크 제어기로부터 제2 네트워크 흐름 정보를 수신하는 것 - 위 제2 네트워크 흐름 정보는 제2 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - ; 위 컴퓨팅 디바이스에 의해, 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정하도록 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하는 것; 및 위 상이한 처리 노드의 위 제2 네트워크 어댑터에 의해, 위 네트워크 스위치로부터 위 제2 네트워크 패킷을 수신하는 것 - 위 제2 네트워크 패킷은 위 상이한 처리 노드에 의해 실행되는 위 다른 애플리케이션에 의해 처리됨 - 을 더 포함한다.
예 16은 예 9 내지 예 15 중 여하한 것의 대상을 포함하고, 위 컴퓨팅 디바이스의 위 복수의 처리 노드 중 하나 이상에 의해, 위 네트워크 제어기로부터 수신되는 명령어에는 적어도 기초하여 다른 애플리케이션을 실행하는 것을 더 포함한다.
예 17은 처리 리소스로의 네트워크 흐름의 정렬을 위한 컴퓨팅 디바이스를 포함하는데, 위 컴퓨팅 디바이스는 프로세서; 및 위 프로세서에 의해 실행되는 경우 위 컴퓨팅 디바이스로 하여금 예 9 내지 예 16 중 여하한 것의 방법을 수행하게 하는 복수의 명령어가 저장된 메모리를 포함한다.
예 18은 하나 이상의 머신 판독가능 매체를 포함하되, 위 하나 이상의 머신 판독가능 매체는 위 하나 이상의 머신 판독가능 매체 상에 저장된 복수의 명령어를 포함하고, 위 복수의 명령어는 실행되는 것에 응답하여 컴퓨팅 디바이스가 예 9 내지 예 16 중 여하한 것의 방법을 수행하는 것을 초래한다.
예 19는 처리 리소스로의 네트워크 흐름의 정렬를 위한 컴퓨팅 디바이스를 포함하는데, 위 컴퓨팅 디바이스는 아키텍처 정보를 네트워크 제어기에 송신하는 수단 - 위 아키텍처 정보는 위 컴퓨팅 디바이스의 복수의 처리 노드 중 각 처리 노드의 아키텍처를 정의하되, 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터를 포함함 - ; 위 네트워크 제어기로부터 네트워크 흐름 정보를 수신하는 수단 - 위 네트워크 흐름 정보는 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - ; 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 위 메모리 내의 메모리 큐를 지정하도록 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 위 네트워크 어댑터 내의 흐름 필터를 프로그램하는 수단; 및 위 타겟 처리 노드의 위 네트워크 어댑터에 의해, 네트워크 스위치로부터 위 네트워크 패킷을 수신하는 수단 - 위 네트워크 패킷은 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해 처리됨 - 을 포함한다.
예 20은 예 19의 대상을 포함하고, 위 아키텍처 정보는 위 복수의 처리 노드 중 각 처리 노드에 의해 실행되는 애플리케이션들을 나타낸다.
예 21은 예 19 및 예 20 중 여하한 것의 대상을 포함하고, 각 처리 노드의 위 프로세서는 복수의 처리 코어를 포함하되; 위 아키텍처 정보는 각 처리 노드의 각 프로세서의 각 처리 코어에 의해 실행되는 위 애플리케이션들을 나타내는 데이터를 포함하며; 위 네트워크 흐름 정보를 수신하는 수단은 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별하는 네트워크 흐름 정보를 위 네트워크 제어기로부터 수신하는 수단을 포함한다.
예 22는 예 19 내지 예 21 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드의 위 네트워크 어댑터에 의해, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 위 네트워크 어댑터의 포트에 배분하는 수단 - 위 네트워크 패킷을 위 네트워크 스위치로부터 수신하는 것은 위 네트워크 어댑터의 위 포트를 통해 위 네트워크 스위치로부터 위 네트워크 패킷을 수신하는 것을 포함함 - ; 및 위 타겟 처리 노드의 위 네트워크 어댑터에 의해, 위 수신된 네트워크 패킷을 위 네트워크 어댑터의 위 포트에 배분된 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐에 복사하는 수단을 더 포함한다.
예 23은 예 19 내지 예 22 중 여하한 것의 대상을 포함하고, 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해, 위 수신된 네트워크 패킷이 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 색출되도록 이용가능한지 판정하는 수단; 및 위 타겟 처리 노드에 의해 실행되는 위 애플리케이션에 의해, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐로부터 위 수신된 네트워크 패킷을, 위 수신된 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능하다는 판정에 응답하여 색출하는 수단을 더 포함한다.
예 24는 예 19 내지 예 23 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능한지 판정하는 수단은 (i) 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐를 기준 폴링 간격의 함수로서 폴링하는 수단 또는 (ii) 위 네트워크 패킷이 위 메모리 큐로부터 색출되도록 이용가능함을 나타내는 인터럽트를 수신하는 수단 중 적어도 하나를 포함한다.
예 25는 예 19 내지 예 24 중 여하한 것의 대상을 포함하고, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하며, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하고, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 네트워크 제어기로부터 제2 네트워크 흐름 정보를 수신하는 수단 - 위 제2 네트워크 흐름 정보는 제2 네트워크 패킷과 연관되고 위 복수의 처리 노드 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - ; 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정하도록 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하는 수단; 및 위 상이한 처리 노드의 위 제2 네트워크 어댑터에 의해, 위 네트워크 스위치로부터 위 제2 네트워크 패킷을 수신하는 수단 - 위 제2 네트워크 패킷은 위 상이한 처리 노드에 의해 실행되는 위 다른 애플리케이션에 의해 처리됨 - 을 더 포함한다.
예 26은 예 19 내지 예 25 중 여하한 것의 대상을 포함하고, 위 컴퓨팅 디바이스의 위 복수의 처리 노드 중 하나 이상에 의해, 위 네트워크 제어기로부터 수신되는 명령어에는 적어도 기초하여 다른 애플리케이션을 실행하는 수단을 더 포함한다.
예 27은 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 제어기를 포함하는데, 위 네트워크 제어기는 아키텍처 정보를 컴퓨팅 디바이스로부터 수신하는 아키텍처 관리 모듈 - 위 아키텍처 정보는 위 컴퓨팅 디바이스의 복수의 처리 노드들 각각의 아키텍처를 정의함 - ; 및 (i) 네트워크 스위치로부터, 네트워크 패킷과 연관된 전송 정보에 대한 요청을 수신하고, (ii) 위 아키텍처 정보에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정 - 위 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - 하며, (iii) 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램하도록 위 컴퓨팅 디바이스에 위 판정된 네트워크 흐름 정보를 송신 - 위 흐름 필터는 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 메모리 내의 메모리 큐를 지정함 - 하고, (iv) 위 네트워크 패킷과 연관된 위 전송 정보를 판정 - 위 전송 정보는 위 컴퓨팅 디바이스의 위 타겟 처리 노드의 위 네트워크 어댑터에 통신가능하게 커플링되고 위 네트워크 패킷이 전송될 위 네트워크 스위치의 포트를 식별함 - 하며, (v) 위 판정된 전송 정보를 위 네트워크 스위치에 송신 - 위 네트워크 패킷은 위 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 하는 흐름 관리 모듈을 포함한다.
예 28은 예 27의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 것은 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 데이터, 위 처리 노드들 각각의 프로세서를 나타내는 프로세서 데이터, 위 처리 노드들 각각의 위 프로세서의 처리 코어들을 나타내는 프로세서 코어 데이터, 위 처리 노드들 각각 내의 배분된 메모리 큐들을 나타내는 메모리 큐 데이터 또는 위 처리 노드들 각각의 네트워크 어댑터들의 포트들을 나타내는 포트 데이터 중 적어도 하나를 수신하는 것을 포함한다.
예 29는 예 27 및 예 28 중 여하한 것의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 것은 위 처리 노드들 각각의 프로세서의 각 처리 코어에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 실행 데이터를 수신하는 것을 포함하고; 위 네트워크 흐름 정보를 판정하는 것은 위 애플리케이션 실행 데이터에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 것을 포함하되, 위 네트워크 흐름 정보는 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 위 타겟 처리 노드를 식별한다.
예 30은 예 27 내지 예 29 중 여하한 것의 대상을 포함하고, 위 전송 정보는 제1 전송 정보를 포함하고, 전송 정보에 대한 위 요청은 위 제1 전송 정보에 대한 요청을 포함하며, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하고, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하며, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 흐름 관리 모듈은 또한 (i) 위 네트워크 스위치로부터, 제2 네트워크 패킷과 연관된 제2 전송 정보에 대한 제2 요청을 수신하고, (ii) 위 아키텍처 정보에는 적어도 기초하여 위 제2 네트워크 패킷과 연관된 제2 네트워크 흐름 정보를 판정 - 위 제2 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - 하며, (iii) 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하도록 위 판정된 제2 네트워크 흐름 정보를 위 컴퓨팅 디바이스에 송신 - 위 제2 흐름 필터는 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정함 - 하고, (iv) 위 제2 네트워크 패킷과 연관된 위 제2 전송 정보를 판정 - 위 제2 전송 정보는 위 컴퓨팅 디바이스의 위 상이한 처리 노드의 위 제2 네트워크 어댑터에 통신가능하게 커플링되고 위 제2 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 식별함 - 하며, (v) 위 판정된 제2 전송 정보를 위 네트워크 스위치에 송신 - 위 제2 네트워크 패킷은 위 제2 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 한다.
예 31은 예 27 내지 예 30 중 여하한 것의 대상을 포함하고, 위 흐름 관리 모듈은 또한 명령 메시지(instruction message)를 위 컴퓨팅 디바이스에 송신하고, 위 명령 메시지는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 하나 이상으로써 다른 애플리케이션을 실행할 것을 위 컴퓨팅 디바이스에 명령한다.
예 32는 네트워크 흐름을 처리 리소스로 정렬하는 방법을 포함하는데, 위 방법은, 네트워크 제어기에 의해, 아키텍처 정보를 컴퓨팅 디바이스로부터 수신하는 것 - 위 아키텍처 정보는 위 컴퓨팅 디바이스의 복수의 처리 노드들 각각의 아키텍처를 정의함 - ; 위 네트워크 제어기에 의해 그리고 네트워크 스위치로부터, 네트워크 패킷과 연관된 전송 정보에 대한 요청을 수신하는 것; 위 네트워크 제어기에 의해, 위 아키텍처 정보에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 것 - 위 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - ; 위 네트워크 제어기에 의해, 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램하도록 위 컴퓨팅 디바이스에 위 판정된 네트워크 흐름 정보를 송신하는 것 - 위 흐름 필터는 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 메모리 내의 메모리 큐를 지정함 - ; 위 네트워크 제어기에 의해, 위 네트워크 패킷과 연관된 위 전송 정보를 판정하는 것 - 위 전송 정보는 위 컴퓨팅 디바이스의 위 타겟 처리 노드의 위 네트워크 어댑터에 통신가능하게 커플링되고 위 네트워크 패킷이 전송될 위 네트워크 스위치의 포트를 식별함 - ; 및 위 네트워크 제어기에 의해, 위 판정된 전송 정보를 위 네트워크 스위치에 송신하는 것 - 위 네트워크 패킷은 위 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 을 포함한다.
예 33은 예 32의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 것은 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 데이터, 위 처리 노드들 각각의 프로세서를 나타내는 프로세서 데이터, 위 처리 노드들 각각의 위 프로세서의 처리 코어들을 나타내는 프로세서 코어 데이터, 위 처리 노드들 각각 내의 배분된 메모리 큐들을 나타내는 메모리 큐 데이터 또는 위 처리 노드들 각각의 네트워크 어댑터들의 포트들을 나타내는 포트 데이터 중 적어도 하나를 수신하는 것을 포함한다.
예 34는 예 32 및 예 33 중 여하한 것의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 것은 위 처리 노드들 각각의 프로세서의 각 처리 코어에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 실행 데이터를 수신하는 것을 포함하고; 위 네트워크 흐름 정보를 판정하는 것은 위 애플리케이션 실행 데이터에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 것을 포함하되, 위 네트워크 흐름 정보는 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 위 타겟 처리 노드를 식별한다.
예 35는 예 32 내지 예 34 중 여하한 것의 대상을 포함하고, 위 전송 정보는 제1 전송 정보를 포함하고, 전송 정보에 대한 위 요청은 위 제1 전송 정보에 대한 요청을 포함하며, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하고, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하며, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 네트워크 제어기에 의해 그리고 위 네트워크 스위치로부터, 제2 네트워크 패킷과 연관된 제2 전송 정보에 대한 제2 요청을 수신하는 것; 위 네트워크 제어기에 의해, 위 아키텍처 정보에는 적어도 기초하여 위 제2 네트워크 패킷과 연관된 제2 네트워크 흐름 정보를 판정하는 것 - 위 제2 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - ; 위 네트워크 제어기에 의해, 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하도록 위 판정된 제2 네트워크 흐름 정보를 위 컴퓨팅 디바이스에 송신하는 것 - 위 제2 흐름 필터는 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정함 - ; 위 네트워크 제어기에 의해, 위 제2 네트워크 패킷과 연관된 위 제2 전송 정보를 판정하는 것 - 위 제2 전송 정보는 위 컴퓨팅 디바이스의 위 상이한 처리 노드의 위 제2 네트워크 어댑터에 통신가능하게 커플링되고 위 제2 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 식별함 - ; 및 위 네트워크 제어기에 의해, 위 판정된 제2 전송 정보를 위 네트워크 스위치에 송신하는 것 - 위 제2 네트워크 패킷은 위 제2 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 을 더 포함한다.
예 36은 예 32 내지 예 35 중 여하한 것의 대상을 포함하고, 위 네트워크 제어기에 의해, 명령 메시지를 위 컴퓨팅 디바이스에 송신하는 것을 더 포함하되, 위 명령 메시지는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 하나 이상으로써 다른 애플리케이션을 실행할 것을 위 컴퓨팅 디바이스에 명령한다.
예 37은 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 제어기를 포함하는데, 위 네트워크 제어기는 프로세서; 및 위 프로세서에 의해 실행되는 경우 위 네트워크 제어기로 하여금 예 32 내지 예 36 중 여하한 것의 방법을 수행하게 하는 복수의 명령어가 저장된 메모리를 포함한다.
예 38은 하나 이상의 머신 판독가능 매체를 포함하되, 위 하나 이상의 머신 판독가능 매체는 위 하나 이상의 머신 판독가능 매체 상에 저장된 복수의 명령어를 포함하고, 위 복수의 명령어는 실행되는 것에 응답하여 네트워크 제어기가 예 32 내지 예 36 중 여하한 것의 방법을 수행하는 것을 초래한다.
예 39는 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 제어기를 포함하는데, 위 네트워크 제어기는 아키텍처 정보를 컴퓨팅 디바이스로부터 수신하는 수단 - 위 아키텍처 정보는 위 컴퓨팅 디바이스의 복수의 처리 노드들 각각의 아키텍처를 정의함 - ; 네트워크 스위치로부터, 네트워크 패킷과 연관된 전송 정보에 대한 요청을 수신하는 수단; 위 아키텍처 정보에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 수단 - 위 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 타겟 처리 노드에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 타겟 처리 노드를 식별함 - ; 위 네트워크 흐름 정보에는 적어도 기초하여 위 타겟 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램하도록 위 컴퓨팅 디바이스에 위 판정된 네트워크 흐름 정보를 송신하는 수단 - 위 흐름 필터는 위 네트워크 패킷을 수신하기 위한 위 타겟 처리 노드의 메모리 내의 메모리 큐를 지정함 - ; 위 네트워크 패킷과 연관된 위 전송 정보를 판정하는 수단 - 위 전송 정보는 위 컴퓨팅 디바이스의 위 타겟 처리 노드의 위 네트워크 어댑터에 통신가능하게 커플링되고 위 네트워크 패킷이 전송될 위 네트워크 스위치의 포트를 식별함 - ; 및 위 판정된 전송 정보를 위 네트워크 스위치에 송신하는 수단 - 위 네트워크 패킷은 위 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 을 포함한다.
예 40은 예 39의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 수단은 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 데이터, 위 처리 노드들 각각의 프로세서를 나타내는 프로세서 데이터, 위 처리 노드들 각각의 위 프로세서의 처리 코어들을 나타내는 프로세서 코어 데이터, 위 처리 노드들 각각 내의 배분된 메모리 큐들을 나타내는 메모리 큐 데이터 또는 위 처리 노드들 각각의 네트워크 어댑터들의 포트들을 나타내는 포트 데이터 중 적어도 하나를 수신하는 수단을 포함한다.
예 41은 예 39 및 예 40 중 여하한 것의 대상을 포함하고, 위 컴퓨팅 디바이스로부터 위 아키텍처 정보를 수신하는 수단은 위 처리 노드들 각각의 프로세서의 각 처리 코어에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 실행 데이터를 수신하는 수단을 포함하고; 위 네트워크 흐름 정보를 판정하는 수단은 위 애플리케이션 실행 데이터에는 적어도 기초하여 위 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 수단을 포함하되, 위 네트워크 흐름 정보는 위 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에는 적어도 기초하여 위 네트워크 패킷을 처리하기 위한 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 위 타겟 처리 노드를 식별한다.
예 42는 예 39 내지 예 41 중 여하한 것의 대상을 포함하고, 위 전송 정보는 제1 전송 정보를 포함하고, 전송 정보에 대한 위 요청은 위 제1 전송 정보에 대한 요청을 포함하며, 위 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 위 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 위 흐름 필터는 제1 흐름 필터를 포함하고, 위 타겟 처리 노드의 위 메모리는 제1 메모리를 포함하고, 위 타겟 처리 노드의 위 메모리 내의 위 메모리 큐는 위 타겟 처리 노드의 위 제1 메모리 내의 제1 메모리 큐를 포함하며, 위 타겟 처리 노드의 위 네트워크 어댑터는 위 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되; 위 네트워크 스위치로부터, 제2 네트워크 패킷과 연관된 제2 전송 정보에 대한 제2 요청을 수신하는 수단; 위 아키텍처 정보에는 적어도 기초하여 위 제2 네트워크 패킷과 연관된 제2 네트워크 흐름 정보를 판정하는 수단 - 위 제2 네트워크 흐름 정보는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에는 적어도 기초하여 위 제2 네트워크 패킷을 처리하기 위한 위 상이한 처리 노드를 식별함 - ; 위 제2 네트워크 흐름 정보에는 적어도 기초하여 위 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하도록 위 판정된 제2 네트워크 흐름 정보를 위 컴퓨팅 디바이스에 송신하는 수단 - 위 제2 흐름 필터는 위 제2 네트워크 패킷을 수신하기 위한 위 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정함 - ; 위 제2 네트워크 패킷과 연관된 위 제2 전송 정보를 판정하는 수단 - 위 제2 전송 정보는 위 컴퓨팅 디바이스의 위 상이한 처리 노드의 위 제2 네트워크 어댑터에 통신가능하게 커플링되고 위 제2 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 식별함 - ; 및 위 판정된 제2 전송 정보를 위 네트워크 스위치에 송신하는 수단 - 위 제2 네트워크 패킷은 위 제2 전송 정보에는 적어도 기초하여 위 네트워크 스위치에 의해 전송됨 - 을 더 포함한다.
예 43은 예 39 내지 예 42 중 여하한 것의 대상을 포함하고, 명령 메시지를 위 컴퓨팅 디바이스에 송신하는 수단을 더 포함하되, 위 명령 메시지는 위 컴퓨팅 디바이스의 위 복수의 처리 노드들 중 하나 이상으로써 다른 애플리케이션을 실행할 것을 위 컴퓨팅 디바이스에 명령한다.
예 44는 네트워크 흐름을 처리 리소스로 정렬하는 네트워크 스위치를 포함하는데, 위 네트워크 스위치는 (i) 위 네트워크 스위치의 제1 포트를 통해 원격 컴퓨팅 디바이스로부터 네트워크 패킷을 수신하고, (ii) 위 수신된 네트워크 패킷과 연관된 전송 정보에 대한 요청을 네트워크 제어기에 송신하며, (iii) 위 전송 정보를 위 네트워크 제어기로부터 수신 - 위 전송 정보는 위 수신된 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 나타냄 - 하고, (iv) 컴퓨팅 디바이스로의 송신을 위해 위 제2 포트로 위 수신된 네트워크 패킷을 전송 - 위 수신된 네트워크 패킷은 위 컴퓨팅 디바이스의 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에 의해 처리됨 - 하는 패킷 전송 모듈을 포함한다.
예 45는 예 44의 대상을 포함하고, 연결 정보를 위 네트워크 제어기에 송신하는 연결 관리 모듈을 더 포함하되, 위 연결 정보는 위 네트워크 스위치의 하나 이상의 포트를 통한 위 컴퓨팅 디바이스 또는 위 원격 컴퓨팅 디바이스 중 적어도 하나 및 위 네트워크 스위치 간의 하나 이상의 네트워크 연결을 나타낸다.
예 46은 네트워크 흐름을 처리 리소스로 정렬하는 방법을 포함하는데, 위 방법은, 네트워크 스위치에 의해, 위 네트워크 스위치의 제1 포트를 통해 원격 컴퓨팅 디바이스로부터 네트워크 패킷을 수신하는 것; 위 네트워크 스위치에 의해, 위 수신된 네트워크 패킷과 연관된 전송 정보에 대한 요청을 네트워크 제어기에 송신하는 것; 위 네트워크 스위치에 의해, 위 전송 정보를 위 네트워크 제어기로부터 수신하는 것 - 위 전송 정보는 위 수신된 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 나타냄 - ; 및 위 네트워크 스위치에 의해, 컴퓨팅 디바이스로의 송신을 위해 위 제2 포트로 위 수신된 네트워크 패킷을 전송하는 것 - 위 수신된 네트워크 패킷은 위 컴퓨팅 디바이스의 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에 의해 처리됨 - 을 포함한다.
예 47은 예 46의 대상을 포함하고, 위 네트워크 스위치에 의해, 연결 정보를 위 네트워크 제어기에 송신하는 것을 더 포함하되, 위 연결 정보는 위 네트워크 스위치의 하나 이상의 포트를 통한 위 컴퓨팅 디바이스 또는 위 원격 컴퓨팅 디바이스 중 적어도 하나 및 위 네트워크 스위치 간의 하나 이상의 네트워크 연결을 나타낸다.
예 48은 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 스위치를 포함하는데, 위 네트워크 스위치는 프로세서; 및 위 프로세서에 의해 실행되는 경우 위 네트워크 스위치로 하여금 예 46 또는 예 47 중 여하한 것의 방법을 수행하게 하는 복수의 명령어가 저장된 메모리를 포함한다.
예 49는 하나 이상의 머신 판독가능 매체를 포함하되, 위 하나 이상의 머신 판독가능 매체는 위 하나 이상의 머신 판독가능 매체 상에 저장된 복수의 명령어를 포함하고, 위 복수의 명령어는 실행되는 것에 응답하여 네트워크 스위치가 예 46 또는 예 47 중 여하한 것의 방법을 수행하는 것을 초래한다.
예 50은 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 스위치를 포함하는데, 위 네트워크 스위치는 위 네트워크 스위치의 제1 포트를 통해 원격 컴퓨팅 디바이스로부터 네트워크 패킷을 수신하는 수단; 위 수신된 네트워크 패킷과 연관된 전송 정보에 대한 요청을 네트워크 제어기에 송신하는 수단; 위 전송 정보를 위 네트워크 제어기로부터 수신하는 수단 - 위 전송 정보는 위 수신된 네트워크 패킷이 전송될 위 네트워크 스위치의 제2 포트를 나타냄 - ; 컴퓨팅 디바이스로의 송신을 위해 위 제2 포트로 위 수신된 네트워크 패킷을 전송하는 수단 - 위 수신된 네트워크 패킷은 위 컴퓨팅 디바이스의 복수의 처리 노드 중 타겟 처리 노드에 의해 실행되는 애플리케이션에 의해 처리됨 - 을 포함한다.
예 51은 예 50의 대상을 포함하고, 연결 정보를 위 네트워크 제어기에 송신하는 수단을 더 포함하되, 위 연결 정보는 위 네트워크 스위치의 하나 이상의 포트를 통한 위 컴퓨팅 디바이스 또는 위 원격 컴퓨팅 디바이스 중 적어도 하나 및 위 네트워크 스위치 간의 하나 이상의 네트워크 연결을 나타낸다.

Claims (25)

  1. 처리 리소스로의 네트워크 흐름의 정렬(alignment)을 위한 컴퓨팅 디바이스로서,
    아키텍처 정보(architectural information)를 네트워크 제어기에 송신하는 아키텍처 통지 모듈 - 상기 아키텍처 정보는 상기 컴퓨팅 디바이스의 복수의 처리 노드 중 각 처리 노드의 아키텍처(architecture)를 정의하고, 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터(network adapter)를 포함함 - 과,
    (i) 상기 네트워크 제어기로부터 네트워크 흐름 정보(network flow information)를 수신 - 상기 네트워크 흐름 정보는 네트워크 패킷과 연관되고 상기 복수의 처리 노드 중 타겟 처리 노드를 식별하여 상기 타겟 처리 노드에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리함 - 하고 (ii) 상기 네트워크 패킷을 수신하기 위한 상기 타겟 처리 노드의 상기 메모리 내의 메모리 큐(memory queue)를 지정하도록 상기 네트워크 흐름 정보에 적어도 기초하여 상기 타겟 처리 노드의 상기 네트워크 어댑터 내의 흐름 필터(flow filter)를 프로그램하는 로컬 흐름 관리 모듈을 포함하되,
    상기 타겟 처리 노드의 상기 네트워크 어댑터는 네트워크 스위치(network switch)로부터 상기 네트워크 패킷을 수신하고, 상기 네트워크 패킷은 상기 타겟 처리 노드에 의해 실행되는 상기 애플리케이션에 의해 처리되는
    컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 아키텍처 정보는 상기 복수의 처리 노드 중 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는
    컴퓨팅 디바이스.
  3. 제2항에 있어서,
    각 처리 노드의 상기 프로세서는 복수의 처리 코어를 포함하고,
    상기 아키텍처 정보는 각 처리 노드의 각 프로세서의 각 처리 코어에 의해 실행되는 상기 애플리케이션들을 나타내는 데이터를 포함하며,
    상기 네트워크 흐름 정보를 수신하는 것은 상기 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리하기 위한 상기 타겟 처리 노드를 식별하는 네트워크 흐름 정보를 상기 네트워크 제어기로부터 수신하는 것을 포함하는
    컴퓨팅 디바이스.
  4. 제1항에 있어서,
    상기 타겟 처리 노드의 상기 네트워크 어댑터는 또한 (i) 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐를 상기 네트워크 어댑터의 포트(port)에 배분 - 상기 네트워크 패킷을 상기 네트워크 스위치로부터 수신하는 것은 상기 네트워크 어댑터의 상기 포트를 통해 상기 네트워크 스위치로부터 상기 네트워크 패킷을 수신하는 것을 포함함 - 하고 (ii) 상기 수신된 네트워크 패킷을 상기 네트워크 어댑터의 상기 포트에 배분된 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐에 복사하는
    컴퓨팅 디바이스.
  5. 제4항에 있어서,
    상기 타겟 처리 노드에 의해 실행되는 상기 애플리케이션은 (i) 상기 수신된 네트워크 패킷이 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐로부터 색출되도록(retrieved) 이용가능한지 판정하고 (ii) 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐로부터 상기 수신된 네트워크 패킷을 상기 수신된 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능하다는 판정에 응답하여 색출하는
    컴퓨팅 디바이스.
  6. 제5항에 있어서,
    상기 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능한지 판정하는 것은 (i) 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐를 기준 폴링 간격(reference polling interval)의 함수로서 폴링하는 것 또는 (ii) 상기 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능함을 나타내는 인터럽트(interrupt)를 수신하는 것 중 적어도 하나를 포함하는
    컴퓨팅 디바이스.
  7. 제4항에 있어서,
    상기 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 상기 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 상기 흐름 필터는 제1 흐름 필터를 포함하고, 상기 타겟 처리 노드의 상기 메모리는 제1 메모리를 포함하며, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐는 상기 타겟 처리 노드의 상기 제1 메모리 내의 제1 메모리 큐를 포함하고, 상기 타겟 처리 노드의 상기 네트워크 어댑터는 상기 타겟 처리 노드의 제1 네트워크 어댑터를 포함하며,
    상기 로컬 흐름 관리 모듈은 또한 (i) 상기 네트워크 제어기로부터 제2 네트워크 흐름 정보를 수신 - 상기 제2 네트워크 흐름 정보는 제2 네트워크 패킷과 연관되고 상기 복수의 처리 노드 중 상이한 처리 노드를 식별하여 상기 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에 적어도 기초하여 상기 제2 네트워크 패킷을 처리함 - 하고 (ii) 상기 제2 네트워크 패킷을 수신하기 위한 상기 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정하도록 상기 제2 네트워크 흐름 정보에 적어도 기초하여 상기 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하며,
    상기 상이한 처리 노드의 상기 제2 네트워크 어댑터는 상기 네트워크 스위치로부터 상기 제2 네트워크 패킷을 수신하고, 상기 제2 네트워크 패킷은 상기 상이한 처리 노드에 의해 실행되는 상기 다른 애플리케이션에 의해 처리되는
    컴퓨팅 디바이스.
  8. 제1항에 있어서,
    상기 타겟 처리 노드는 상기 네트워크 제어기로부터 수신되는 명령어에 적어도 기초하여 다른 애플리케이션을 실행하는
    컴퓨팅 디바이스.
  9. 하나 이상의 머신 판독가능 매체로서,
    상기 하나 이상의 머신 판독가능 매체 상에 저장된 복수의 명령어를 포함하되, 상기 복수의 명령어는 컴퓨팅 디바이스에 의해 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금,
    아키텍처 정보를 네트워크 제어기에 송신 - 상기 아키텍처 정보는 상기 컴퓨팅 디바이스의 복수의 처리 노드 중 각 처리 노드의 아키텍처를 정의하고, 각 처리 노드는 프로세서, 메모리 및 네트워크 어댑터를 포함함 - 하고,
    상기 네트워크 제어기로부터 네트워크 흐름 정보를 수신 - 상기 네트워크 흐름 정보는 네트워크 패킷과 연관되고 상기 복수의 처리 노드 중 타겟 처리 노드를 식별하여 상기 타겟 처리 노드에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리함 - 하며,
    상기 네트워크 패킷을 수신하기 위한 상기 타겟 처리 노드의 상기 메모리 내의 메모리 큐를 지정하도록 상기 네트워크 흐름 정보에 적어도 기초하여 상기 타겟 처리 노드의 상기 네트워크 어댑터 내의 흐름 필터를 프로그램하고,
    상기 타겟 처리 노드의 상기 네트워크 어댑터에 의해, 네트워크 스위치로부터 상기 네트워크 패킷을 수신 - 상기 네트워크 패킷은 상기 타겟 처리 노드에 의해 실행되는 상기 애플리케이션에 의해 처리됨 - 하게 하는
    하나 이상의 머신 판독가능 매체.
  10. 제9항에 있어서,
    상기 아키텍처 정보는 상기 복수의 처리 노드 중 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는
    하나 이상의 머신 판독가능 매체.
  11. 제10항에 있어서,
    각 처리 노드의 상기 프로세서는 복수의 처리 코어를 포함하고,
    상기 아키텍처 정보는 각 처리 노드의 각 프로세서의 각 처리 코어에 의해 실행되는 상기 애플리케이션들을 나타내는 데이터를 포함하며,
    상기 네트워크 흐름 정보를 수신하는 것은 상기 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리하기 위해 상기 타겟 처리 노드를 식별하는 네트워크 흐름 정보를 상기 네트워크 제어기로부터 수신하는 것을 포함하는
    하나 이상의 머신 판독가능 매체.
  12. 제9항에 있어서,
    상기 복수의 명령어는 또한 상기 컴퓨팅 디바이스로 하여금,
    상기 타겟 처리 노드의 상기 네트워크 어댑터에 의해, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐를 상기 네트워크 어댑터의 포트에 배분 - 상기 네트워크 패킷을 상기 네트워크 스위치로부터 수신하는 것은 상기 네트워크 어댑터의 상기 포트를 통해 상기 네트워크 스위치로부터 상기 네트워크 패킷을 수신하는 것을 포함함 - 하고,
    상기 타겟 처리 노드의 상기 네트워크 어댑터에 의해, 상기 수신된 네트워크 패킷을 상기 네트워크 어댑터의 상기 포트에 배분된 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐에 복사하게 하는
    하나 이상의 머신 판독가능 매체.
  13. 제12항에 있어서,
    상기 복수의 명령어는 또한 상기 컴퓨팅 디바이스로 하여금,
    상기 타겟 처리 노드에 의해 실행되는 상기 애플리케이션에 의해, 상기 수신된 네트워크 패킷이 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐로부터 색출되도록 이용가능한지 판정하고,
    상기 타겟 처리 노드에 의해 실행되는 상기 애플리케이션에 의해, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐로부터 상기 수신된 네트워크 패킷을 상기 수신된 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능하다는 판정에 응답하여 색출하게 하는
    하나 이상의 머신 판독가능 매체.
  14. 제13항에 있어서,
    상기 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능한지 판정하는 것은 (i) 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐를 기준 폴링 간격의 함수로서 폴링하는 것 또는 (ii) 상기 네트워크 패킷이 상기 메모리 큐로부터 색출되도록 이용가능함을 나타내는 인터럽트를 수신하는 것 중 적어도 하나를 포함하는
    하나 이상의 머신 판독가능 매체.
  15. 제12항에 있어서,
    상기 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 상기 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 상기 흐름 필터는 제1 흐름 필터를 포함하고, 상기 타겟 처리 노드의 상기 메모리는 제1 메모리를 포함하며, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐는 상기 타겟 처리 노드의 상기 제1 메모리 내의 제1 메모리 큐를 포함하고, 상기 타겟 처리 노드의 상기 네트워크 어댑터는 상기 타겟 처리 노드의 제1 네트워크 어댑터를 포함하며,
    상기 복수의 명령어는 또한 상기 컴퓨팅 디바이스로 하여금, (i) 상기 네트워크 제어기로부터 제2 네트워크 흐름 정보를 수신 - 상기 제2 네트워크 흐름 정보는 제2 네트워크 패킷과 연관되고 상기 복수의 처리 노드 중 상이한 처리 노드를 식별하여 상기 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에 적어도 기초하여 상기 제2 네트워크 패킷을 처리함 - 하고, (ii) 상기 제2 네트워크 패킷을 수신하기 위한 상기 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정하도록 상기 제2 네트워크 흐름 정보에 적어도 기초하여 상기 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하며, (iii) 상기 상이한 처리 노드의 상기 제2 네트워크 어댑터에 의해, 상기 네트워크 스위치로부터 상기 제2 네트워크 패킷을 수신 - 상기 제2 네트워크 패킷은 상기 상이한 처리 노드에 의해 실행되는 상기 다른 애플리케이션에 의해 처리됨 - 하게 하는
    하나 이상의 머신 판독가능 매체.
  16. 제9항에 있어서,
    상기 복수의 명령어는 또한 상기 컴퓨팅 디바이스로 하여금, 상기 타겟 처리 노드에 의해, 상기 네트워크 제어기로부터 수신되는 명령어에 적어도 기초하여 다른 애플리케이션을 실행하게 하는
    하나 이상의 머신 판독가능 매체.
  17. 처리 리소스로의 네트워크 흐름의 정렬을 위한 네트워크 제어기로서,
    아키텍처 정보를 컴퓨팅 디바이스로부터 수신하는 아키텍처 관리 모듈 - 상기 아키텍처 정보는 상기 컴퓨팅 디바이스의 복수의 처리 노드들 각각의 아키텍처를 정의함 - 과,
    (i) 네트워크 스위치로부터, 네트워크 패킷과 연관된 전송 정보에 대한 요청을 수신하고, (ii) 상기 아키텍처 정보에 적어도 기초하여 상기 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정 - 상기 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 타겟 처리 노드를 식별하여 상기 타겟 처리 노드에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리함 - 하며, (iii) 상기 네트워크 흐름 정보에 적어도 기초하여 상기 타겟 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램하도록 상기 컴퓨팅 디바이스에 상기 판정된 네트워크 흐름 정보를 송신 - 상기 흐름 필터는 상기 네트워크 패킷을 수신하기 위한 상기 타겟 처리 노드의 메모리 내의 메모리 큐를 지정함 - 하고, (iv) 상기 네트워크 패킷과 연관된 상기 전송 정보를 판정 - 상기 전송 정보는 상기 컴퓨팅 디바이스의 상기 타겟 처리 노드의 상기 네트워크 어댑터에 통신가능하게 커플링되고 상기 네트워크 패킷이 전송될 네트워크 스위치의 포트를 식별함 - 하며, (v) 상기 판정된 전송 정보를 상기 네트워크 스위치에 송신 - 상기 네트워크 패킷은 상기 전송 정보에 적어도 기초하여 상기 네트워크 스위치에 의해 전송됨 - 하는 흐름 관리 모듈을 포함하는
    네트워크 제어기.
  18. 제17항에 있어서,
    상기 컴퓨팅 디바이스로부터 상기 아키텍처 정보를 수신하는 것은 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 데이터, 상기 처리 노드들 각각의 프로세서를 나타내는 프로세서 데이터, 상기 처리 노드들 각각의 상기 프로세서의 처리 코어들을 나타내는 프로세서 코어 데이터, 상기 처리 노드들 각각 내의 배분된 메모리 큐들을 나타내는 메모리 큐 데이터 또는 상기 처리 노드들 각각의 네트워크 어댑터들의 포트들을 나타내는 포트 데이터 중 적어도 하나를 수신하는 것을 포함하는
    네트워크 제어기.
  19. 제17항에 있어서,
    상기 컴퓨팅 디바이스로부터 상기 아키텍처 정보를 수신하는 것은 상기 처리 노드들 각각의 프로세서의 각 처리 코어에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 실행 데이터를 수신하는 것을 포함하고,
    상기 네트워크 흐름 정보를 판정하는 것은 상기 애플리케이션 실행 데이터에 적어도 기초하여 상기 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 것을 포함하되, 상기 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 상기 타겟 처리 노드를 식별하여 상기 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리하는
    네트워크 제어기.
  20. 제17항에 있어서,
    상기 전송 정보는 제1 전송 정보를 포함하고, 전송 정보에 대한 상기 요청은 상기 제1 전송 정보에 대한 요청을 포함하며, 상기 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 상기 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 상기 흐름 필터는 제1 흐름 필터를 포함하고, 상기 타겟 처리 노드의 상기 메모리는 제1 메모리를 포함하고, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐는 상기 타겟 처리 노드의 상기 제1 메모리 내의 제1 메모리 큐를 포함하며, 상기 타겟 처리 노드의 상기 네트워크 어댑터는 상기 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되,
    상기 흐름 관리 모듈은 또한 (i) 상기 네트워크 스위치로부터, 제2 네트워크 패킷과 연관된 제2 전송 정보에 대한 제2 요청을 수신하고, (ii) 상기 아키텍처 정보에 적어도 기초하여 상기 제2 네트워크 패킷과 연관된 제2 네트워크 흐름 정보를 판정 - 상기 제2 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 상이한 처리 노드를 식별하여 상기 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에 적어도 기초하여 상기 제2 네트워크 패킷을 처리함 - 하며, (iii) 상기 제2 네트워크 흐름 정보에 적어도 기초하여 상기 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하도록 상기 판정된 제2 네트워크 흐름 정보를 상기 컴퓨팅 디바이스에 송신 - 상기 제2 흐름 필터는 상기 제2 네트워크 패킷을 수신하기 위한 상기 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정함 - 하고, (iv) 상기 제2 네트워크 패킷과 연관된 상기 제2 전송 정보를 판정 - 상기 제2 전송 정보는, 상기 컴퓨팅 디바이스의 상기 상이한 처리 노드의 상기 제2 네트워크 어댑터에 통신가능하게 커플링되고 상기 제2 네트워크 패킷이 전송될 상기 네트워크 스위치의 제2 포트를 식별함 - 하며, (v) 상기 판정된 제2 전송 정보를 상기 네트워크 스위치에 송신 - 상기 제2 네트워크 패킷은 상기 제2 전송 정보에 적어도 기초하여 상기 네트워크 스위치에 의해 전송됨 - 하는
    네트워크 제어기.
  21. 제17항에 있어서,
    상기 흐름 관리 모듈은 또한 명령 메시지(instruction message)를 상기 컴퓨팅 디바이스에 송신하고, 상기 명령 메시지는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 하나 이상으로써 다른 애플리케이션을 실행할 것을 상기 컴퓨팅 디바이스에 명령하는
    네트워크 제어기.
  22. 하나 이상의 머신 판독가능 매체로서,
    상기 하나 이상의 머신 판독가능 매체 상에 저장된 복수의 명령어를 포함하되, 상기 복수의 명령어는 네트워크 제어기에 의해 실행되는 것에 응답하여 상기 네트워크 제어기로 하여금,
    아키텍처 정보를 컴퓨팅 디바이스로부터 수신 - 상기 아키텍처 정보는 상기 컴퓨팅 디바이스의 복수의 처리 노드들 각각의 아키텍처를 정의함 - 하고,
    네트워크 스위치로부터, 네트워크 패킷과 연관된 전송 정보에 대한 요청을 수신하며,
    상기 아키텍처 정보에 적어도 기초하여 상기 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정 - 상기 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 타겟 처리 노드를 식별하여 상기 타겟 처리 노드에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리함 - 하고,
    상기 네트워크 흐름 정보에 적어도 기초하여 상기 타겟 처리 노드의 네트워크 어댑터 내의 흐름 필터를 프로그램하도록 상기 컴퓨팅 디바이스에 상기 판정된 네트워크 흐름 정보를 송신 - 상기 흐름 필터는 상기 네트워크 패킷을 수신하기 위한 상기 타겟 처리 노드의 메모리 내의 메모리 큐를 지정함 - 하며,
    상기 네트워크 패킷과 연관된 상기 전송 정보를 판정 - 상기 전송 정보는, 상기 컴퓨팅 디바이스의 상기 타겟 처리 노드의 상기 네트워크 어댑터에 통신가능하게 커플링되고 상기 네트워크 패킷이 전송될 상기 네트워크 스위치의 포트를 식별함 - 하고,
    상기 판정된 전송 정보를 상기 네트워크 스위치에 송신 - 상기 네트워크 패킷은 상기 전송 정보에 적어도 기초하여 상기 네트워크 스위치에 의해 전송됨 - 하게 하는
    하나 이상의 머신 판독가능 매체.
  23. 제22항에 있어서,
    상기 컴퓨팅 디바이스로부터 상기 아키텍처 정보를 수신하는 것은 각 처리 노드에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 데이터, 상기 처리 노드들 각각의 프로세서를 나타내는 프로세서 데이터, 상기 처리 노드들 각각의 상기 프로세서의 처리 코어들을 나타내는 프로세서 코어 데이터, 상기 처리 노드들 각각 내의 배분된 메모리 큐들을 나타내는 메모리 큐 데이터 또는 상기 처리 노드들 각각의 네트워크 어댑터들의 포트들을 나타내는 포트 데이터 중 적어도 하나를 수신하는 것을 포함하는
    하나 이상의 머신 판독가능 매체.
  24. 제22항에 있어서,
    상기 컴퓨팅 디바이스로부터 상기 아키텍처 정보를 수신하는 것은 상기 처리 노드들 각각의 프로세서의 각 처리 코어에 의해 실행되는 애플리케이션들을 나타내는 애플리케이션 실행 데이터를 수신하는 것을 포함하고,
    상기 네트워크 흐름 정보를 판정하는 것은 상기 애플리케이션 실행 데이터에 적어도 기초하여 상기 네트워크 패킷과 연관된 네트워크 흐름 정보를 판정하는 것을 포함하되, 상기 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 상기 타겟 처리 노드를 식별하여 상기 타겟 처리 노드의 처리 코어에 의해 실행되는 애플리케이션에 적어도 기초하여 상기 네트워크 패킷을 처리하는
    하나 이상의 머신 판독가능 매체.
  25. 제22항에 있어서,
    상기 전송 정보는 제1 전송 정보를 포함하고, 전송 정보에 대한 상기 요청은 상기 제1 전송 정보에 대한 요청을 포함하며, 상기 네트워크 패킷은 제1 네트워크 패킷을 포함하고, 상기 네트워크 흐름 정보는 제1 네트워크 흐름 정보를 포함하며, 상기 흐름 필터는 제1 흐름 필터를 포함하고, 상기 타겟 처리 노드의 상기 메모리는 제1 메모리를 포함하고, 상기 타겟 처리 노드의 상기 메모리 내의 상기 메모리 큐는 상기 타겟 처리 노드의 상기 제1 메모리 내의 제1 메모리 큐를 포함하며, 상기 타겟 처리 노드의 상기 네트워크 어댑터는 상기 타겟 처리 노드의 제1 네트워크 어댑터를 포함하되,
    상기 복수의 명령어는 또한 상기 네트워크 제어기로 하여금,
    (i) 상기 네트워크 스위치로부터, 제2 네트워크 패킷과 연관된 제2 전송 정보에 대한 제2 요청을 수신하고,
    (ii) 상기 아키텍처 정보에 적어도 기초하여 상기 제2 네트워크 패킷과 연관된 제2 네트워크 흐름 정보를 판정 - 상기 제2 네트워크 흐름 정보는 상기 컴퓨팅 디바이스의 상기 복수의 처리 노드들 중 상이한 처리 노드를 식별하여 상기 상이한 처리 노드에 의해 실행되는 다른 애플리케이션에 적어도 기초하여 상기 제2 네트워크 패킷을 처리함 - 하며,
    (iii) 상기 제2 네트워크 흐름 정보에 적어도 기초하여 상기 상이한 처리 노드의 제2 네트워크 어댑터 내의 제2 흐름 필터를 프로그램하도록 상기 판정된 제2 네트워크 흐름 정보를 상기 컴퓨팅 디바이스에 송신 - 상기 제2 흐름 필터는 상기 제2 네트워크 패킷을 수신하기 위한 상기 상이한 처리 노드의 제2 메모리 내의 제2 메모리 큐를 지정함 - 하고,
    (iv) 상기 제2 네트워크 패킷과 연관된 상기 제2 전송 정보를 판정 - 상기 제2 전송 정보는, 상기 컴퓨팅 디바이스의 상기 상이한 처리 노드의 상기 제2 네트워크 어댑터에 통신가능하게 커플링되고 상기 제2 네트워크 패킷이 전송될 상기 네트워크 스위치의 제2 포트를 식별함 - 하며,
    (v) 상기 판정된 제2 전송 정보를 상기 네트워크 스위치에 송신 - 상기 제2 네트워크 패킷은 상기 제2 전송 정보에 적어도 기초하여 상기 네트워크 스위치에 의해 전송됨 - 하게 하는
    하나 이상의 머신 판독가능 매체.
KR1020150104443A 2014-08-25 2015-07-23 네트워크 흐름을 처리 리소스로 정렬하는 기술 KR101724552B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/467,917 US10200292B2 (en) 2014-08-25 2014-08-25 Technologies for aligning network flows to processing resources
US14/467,917 2014-08-25

Publications (2)

Publication Number Publication Date
KR20160024747A true KR20160024747A (ko) 2016-03-07
KR101724552B1 KR101724552B1 (ko) 2017-04-07

Family

ID=53716332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150104443A KR101724552B1 (ko) 2014-08-25 2015-07-23 네트워크 흐름을 처리 리소스로 정렬하는 기술

Country Status (6)

Country Link
US (3) US10200292B2 (ko)
EP (1) EP2991306B1 (ko)
JP (1) JP6116072B2 (ko)
KR (1) KR101724552B1 (ko)
CN (1) CN105391648B (ko)
TW (1) TWI589136B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190107978A (ko) * 2018-03-13 2019-09-23 (주) 시스메이트 멀티 코어 프로세서 및 범용 네트워크 컨트롤러 하이브리드 구조의 네트워크 인터페이스 카드
KR20230141921A (ko) * 2019-03-06 2023-10-10 구글 엘엘씨 광학 네트워크들을 사용하는 재구성가능한 컴퓨팅 포드들

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11324022B1 (en) 2014-10-06 2022-05-03 Sprint Spectrum L.P. Method and system for selecting a carrier on which to schedule communications of a type of bearer traffic
US9807766B1 (en) * 2015-01-30 2017-10-31 Sprint Spectrum L.P. Method and system for component carrier selection based on content type
KR20170056879A (ko) * 2015-11-16 2017-05-24 한국전자통신연구원 Sdn 다중 오케스트레이터
CN106936739B (zh) 2015-12-30 2020-02-11 新华三技术有限公司 一种报文转发方法及装置
KR20170087602A (ko) * 2016-01-21 2017-07-31 현대자동차주식회사 네트워크에서 동작 모드의 전환 방법
US10142231B2 (en) 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
US10237169B2 (en) * 2016-04-01 2019-03-19 Intel Corporation Technologies for quality of service based throttling in fabric architectures
TWI646805B (zh) * 2016-11-23 2019-01-01 財團法人資訊工業策進會 網路通訊協定轉譯系統及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US20060195698A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Receive side scaling with cryptographically secure hashing

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865160B1 (en) * 1998-05-04 2005-03-08 Hewlett-Packard Development Company, L.P. Broadcast tree determination in load balancing switch protocols
WO2004081730A2 (en) * 2003-03-07 2004-09-23 Netnostics, Inc. Network architecture
JP2007265089A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ソフトウェア保守支援プログラム,処理方法および装置
US7756027B1 (en) * 2007-06-13 2010-07-13 Juniper Networks, Inc. Automatic configuration of virtual network switches
WO2009008007A2 (en) 2007-07-09 2009-01-15 Hewlett-Packard Development Company L.P. Data packet processing method for a multi core processor
US20090300209A1 (en) * 2008-06-03 2009-12-03 Uri Elzur Method and system for path based network congestion management
US8839387B2 (en) * 2009-01-28 2014-09-16 Headwater Partners I Llc Roaming services network and overlay networks
US20110004597A1 (en) * 2009-03-16 2011-01-06 Yehiel Engel System and method for content aware routing of data within a platform hub
US9098335B2 (en) * 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
US8295305B2 (en) * 2009-12-30 2012-10-23 International Business Machines Corporation Dual scheduling of work from multiple sources to multiple sinks using source and sink attributes to achieve fairness and processing efficiency
US9680750B2 (en) * 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
JP5808700B2 (ja) 2012-03-05 2015-11-10 株式会社Nttドコモ 通信制御装置、通信制御システム、仮想化サーバ管理装置、スイッチ装置および通信制御方法
US9143557B2 (en) * 2012-06-27 2015-09-22 Juniper Networks, Inc. Feedback loop for service engineered paths
US8929220B2 (en) * 2012-08-24 2015-01-06 Advanced Micro Devices, Inc. Processing system using virtual network interface controller addressing as flow control metadata
US20140162903A1 (en) 2012-10-31 2014-06-12 Purdue Research Foundation Metabolite Biomarkers For Forecasting The Outcome of Preoperative Chemotherapy For Breast Cancer Treatment
TWI487331B (zh) 2012-12-18 2015-06-01 Wistron Corp 管理網路傳輸順序之方法及其非揮發性電腦可讀媒體
US10057387B2 (en) * 2012-12-26 2018-08-21 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
US9450817B1 (en) * 2013-03-15 2016-09-20 Juniper Networks, Inc. Software defined network controller
US9485187B2 (en) * 2013-07-08 2016-11-01 Futurewei Technologies, Inc. Intelligent software-defined networking based service paths
US9787586B2 (en) * 2013-10-24 2017-10-10 University Of Houston System Location-based network routing
US10009287B2 (en) * 2013-12-26 2018-06-26 Huawei Technologies Co., Ltd. Hierarchical software-defined network traffic engineering controller
US9588923B2 (en) * 2014-01-24 2017-03-07 Applied Micro Circuits Corporation Flow pinning in a server on a chip
US9825860B2 (en) * 2014-05-30 2017-11-21 Futurewei Technologies, Inc. Flow-driven forwarding architecture for information centric networks
US20170318082A1 (en) * 2016-04-29 2017-11-02 Qualcomm Incorporated Method and system for providing efficient receive network traffic distribution that balances the load in multi-core processor systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US20060195698A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Receive side scaling with cryptographically secure hashing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190107978A (ko) * 2018-03-13 2019-09-23 (주) 시스메이트 멀티 코어 프로세서 및 범용 네트워크 컨트롤러 하이브리드 구조의 네트워크 인터페이스 카드
KR20230141921A (ko) * 2019-03-06 2023-10-10 구글 엘엘씨 광학 네트워크들을 사용하는 재구성가능한 컴퓨팅 포드들

Also Published As

Publication number Publication date
EP2991306A1 (en) 2016-03-02
KR101724552B1 (ko) 2017-04-07
EP2991306B1 (en) 2017-08-23
JP6116072B2 (ja) 2017-04-19
US10757031B2 (en) 2020-08-25
US20160057066A1 (en) 2016-02-25
US20190158412A1 (en) 2019-05-23
US10200292B2 (en) 2019-02-05
JP2016046806A (ja) 2016-04-04
TW201630384A (zh) 2016-08-16
TWI589136B (zh) 2017-06-21
US11792132B2 (en) 2023-10-17
CN105391648A (zh) 2016-03-09
CN105391648B (zh) 2019-06-04
US20200389408A1 (en) 2020-12-10

Similar Documents

Publication Publication Date Title
KR101724552B1 (ko) 네트워크 흐름을 처리 리소스로 정렬하는 기술
KR101703088B1 (ko) Sdn 기반의 통합 라우팅 방법 및 그 시스템
EP2972855B1 (en) Automatic configuration of external services based upon network activity
KR101858319B1 (ko) 조립단위 및 세립단위 로드 밸런싱 사이에서 매개하는 기술
US9009648B2 (en) Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of IP cores using high level specification
US20160182684A1 (en) Parallel processing of service functions in service function chains
US10153979B2 (en) Prioritization of network traffic in a distributed processing system
US20150215228A1 (en) Methods, systems, and computer readable media for a cloud-based virtualization orchestrator
CN108476175B (zh) 使用对偶变量的传送sdn流量工程方法与系统
US10091063B2 (en) Technologies for directed power and performance management
US20160315879A1 (en) Virtual node having separate control and data planes
US8180907B1 (en) Managing IPMI sessions
US20140047260A1 (en) Network management system, network management computer and network management method
CN107786448B (zh) 建立业务流的转发路径的方法和装置
US10715437B2 (en) Deadline driven packet prioritization for IP networks
US9686149B2 (en) Information processing system, relay device, and information processing method
US10560527B2 (en) Network service chains using hardware logic devices in an information handling system
US20150138979A1 (en) Network management control device, network management control system, and network management control method
US11271897B2 (en) Electronic apparatus for providing fast packet forwarding with reference to additional network address translation table
US11005782B2 (en) Multi-endpoint adapter/multi-processor packet routing system
Thiruvenkatam et al. Optimizing data center network throughput by solving TCP Incast problem using k‐means algorithm

Legal Events

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