KR20150030738A - 입/출력 가상 구현을 위한 방법 및 시스템 - Google Patents

입/출력 가상 구현을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20150030738A
KR20150030738A KR20157001663A KR20157001663A KR20150030738A KR 20150030738 A KR20150030738 A KR 20150030738A KR 20157001663 A KR20157001663 A KR 20157001663A KR 20157001663 A KR20157001663 A KR 20157001663A KR 20150030738 A KR20150030738 A KR 20150030738A
Authority
KR
South Korea
Prior art keywords
data
virtual
nic
server node
proxy
Prior art date
Application number
KR20157001663A
Other languages
English (en)
Inventor
마크 험멜
데이비드 메이휴
미첼 오스본
안톤 체르노프
벤카타 크리쉬난
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20150030738A publication Critical patent/KR20150030738A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q1/00Details of selecting apparatus or arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

복수의 가상 네트워크 인터페이스 카드(vNIC) 및 입/출력(I/O) 프로세싱 복합체를 포함하는 취합 디바이스가 제공된다. vNIC은 복수의 프로세싱 디바이스와 통신하고 있다. 각각의 프로세싱 디바이스는 적어도 하나의 가상 머신(VM)을 갖는다. I/O 프로세싱 복합체는 vNIC와 적어도 하나의 물리 NIC 사이에 있다. I/O 프로세싱 복합체는 적어도 하나의 프록시 NIC 및 가상 스위치를 포함한다. 가상 스위치는 적어도 하나의 VM과 적어도 하나의 프록시 NIC 사이에 복수의 vNIC 중 어느 vNIC에 의해 확립된 통신 경로를 통하여 복수의 프로세싱 디바이스 중 어느 프로세싱 디바이스와 데이터를 교환한다.

Description

입/출력 가상 구현을 위한 방법 및 시스템{SYSTEMS AND METHODS FOR INPUT/OUTPUT VIRTUALIZATION}
본 발명은 일반적으로는 가상 구현 네트워크에 관한 것으로, 더 구체적으로는, 입/출력(I/O) 가상 구현을 위한 방법 및 시스템에 관한 것이다.
데이터 센터는 일반적으로는 사업소 및 조직을 지원하는 인터넷 및 인트라넷 서비스를 제공하는 중앙집중형 시설이다. 전형적 데이터 센터는 컴퓨터, 도메인 네임 시스템(domain name system: DNS) 서버, 네트워크 스위치, 라우터, 데이터 저장 디바이스 등과 같은 다양한 유형의 전자 장비를 소장할 수 있다. 소정 데이터 센터는 스위치, 라우터 등을 포함하는 스위칭 아키텍처를 통하여 외부 디바이스와 그리고 서로 통신하는 수백 또는 수천의 상호접속된 서버 노드를 가질 수 있다. 데이터 센터는 가상 구현을 위해 구성되어, 서버 노드가 네트워크 인터페이스 카드(network interface card: NIC), 하드 디스크 드라이브 또는 다른 하드웨어를 공유하도록 허용할 수 있다. 가상 구현 환경은 전형적으로는 더 적은 하드웨어를 요구하여, 그로써 데이터 센터 가동과 연관된 전력, 건평, 케이블링 및 비용을 감축한다.
일 태양에 의하면, 복수의 가상 네트워크 인터페이스 카드(virtual network interface card: vNIC) 및 입/출력(I/O) 프로세싱 복합체를 포함하는 취합 디바이스(aggregation device)가 제공된다. vNIC은 복수의 프로세싱 디바이스와 통신하고 있다. 각각의 프로세싱 디바이스는 적어도 하나의 가상 머신(vinual machine: VM)을 갖는다. I/O 프로세싱 복합체는 논리적으로 vNIC와 적어도 하나의 물리 NIC 사이에 있다. I/O 프로세싱 복합체는 적어도 하나의 프록시 NIC 및 가상 스위치를 포함한다. 가상 스위치는 적어도 하나의 VM과 적어도 하나의 프록시 NIC 사이에 복수의 vNIC 중 어느 vNIC에 의해 확립된 통신 경로를 통하여 복수의 프로세싱 디바이스 중 어느 프로세싱 디바이스와 데이터를 교환한다.
다른 일 태양에 의하면, 복수의 서버 노드 및 취합 디바이스를 포함하는 서버 취합 시스템이 제공된다. 각각의 서버 노드는 적어도 하나의 가상 머신(VM)을 갖는다. 취합 디바이스는 복수의 서버 노드 사이에 결합되고, 서버 노드와 통신하고 있는 복수의 가상 네트워크 인터페이스 카드(vNIC); 및 입/출력(I/O) 프로세싱 복합체를 포함한다. I/O 프로세싱 복합체는 적어도 하나의 프록시 NIC, 및 적어도 하나의 VM과 적어도 하나의 프록시 NIC 사이에 복수의 vNIC 중 어느 vNIC에 의해 확립된 통신 경로를 통하여 복수의 서버 노드 중 어느 서버 노드와 데이터를 교환하는 가상 스위치를 포함한다.
일 태양에 의하면, 가상 구현 네트워크에서 I/O 연산을 수행하는 방법이 제공된다. 그 방법은 취합 디바이스에서 가상 스위치를 생성하는 단계 및 서버 노드에서의 가상 머신과 취합 디바이스에서의 가상 스위치 사이에 통신 경로를 형성하는 단계를 포함한다.
일 태양에 의하면, 컴퓨터 판독가능 프로그램 코드가 내장되어 있는 컴퓨터 판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 판독가능 프로그램 코드는 취합 디바이스에서 가상 스위치를 생성하도록 구성된 컴퓨터 판독가능 프로그램 코드, 및 서버 노드에서의 가상 머신과 취합 디바이스에서의 가상 스위치 사이에 통신 경로를 형성하도록 구성된 컴퓨터 판독가능 프로그램 코드를 포함한다.
일 태양에 의하면, I/O 가상 구현 연산(virtualization operation)과 연관된 오버헤드를 감축하기 위한 방법이 제공되며, 서버 노드 취합 디바이스에서 가상 스위치를 구성 및 배열하는 단계; 및 가상 스위치와 통신하고 있는 물리 디바이스와 하나 이상의 서버 노드 가상 머신 사이에 통신 채널을 통해 데이터 경로를 형성하는 단계를 포함한다.
일 태양에 의하면, 하나 이상의 프로세싱 디바이스에서의 복수의 가상 머신; 및 하나 이상의 프로세싱 디바이스와 통신하고 있는 입/출력(I/O) 프로세싱 복합체를 포함하는 취합 시스템이 제공된다. I/O 프로세싱 복합체는 가상 스위치를 포함한다. I/O 프로세싱 복합체는 하나 이상의 가상 머신 중 어느 가상 머신과 가상 스위치 사이에 통신 채널을 통해 데이터 경로를 확립한다.
본 발명의 상기 및 추가적 이점은 다양한 도면에서 유사한 참조 숫자가 유사한 구조적 엘리먼트 및 특징을 가리키는 수반 도면과 함께 이하의 설명을 참조함으로써 더 잘 이해될 수 있다. 도면은 반드시 축척대로는 아니며, 대신에 본 발명의 원리를 예시하는데 강조점을 둔다.
도 1은 관용적 서버 노드의 블록 선도;
도 2는, 일 실시예에 따라, 취합 시스템과 통신하고 있는 복수의 서버 노드를 포함하는 컴퓨팅 기반구조의 블록 선도;
도 3은 일 실시예에 따른 I/O 프로세싱 복합체의 블록 선도;
도 4는, 일 실시예에 따라, 서버 노드와 취합 시스템 사이에 전자 통신을 위한 방법을 예시하는 순서도;
도 5는, 일 실시예에 따라, 가상 스위치와 수신지 서버 노드 사이에 전자 통신을 위한 방법을 예시하는 순서도;
도 6은 다른 일 실시예에 따라 컴퓨팅 기반구조 내 데이터 흐름 경로의 예시도; 및
도 7은 다른 일 실시예에 따라 컴퓨팅 기반구조 내 데이터 흐름 경로의 예시도.
이하의 설명에서 특정 상세가 제시되기는 하지만, 그 시스템 및 방법은 그 상세 중 적어도 일부 없이 실시될 수 있고, 일부 경우에서는, 알려져 있는 특징 및 프로세스가 본 발명을 모호하게 하지 않도록 상세히 설명되지는 않음을 당업자는 인식하여야 한다.
도 1은 관용적 서버 노드(112)의 블록 선도이다. 서버 노드(112)는 하나 이상의 프로세서(102), 예를 들어, 마이크로프로세서, 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 메모리 컨트롤러, 멀티-코어 프로세서, 버스 어댑터, 및 다른 유형의 데이터 프로세싱 디바이스, 또는 이들 및 다른 디바이스의 조합을 포함한다.
서버 노드(112)는 또한 로컬 메모리(104) 및 네트워크 인터페이스 카드(NIC)(164)를 포함한다. 로컬 메모리(104)는 비-휘발성 또는 휘발성 메모리, 예를 들어, 동적 랜덤 액세스 메모리(동적 DRAM)(dynamic random access memory: DRAM) 또는 정적 RAM(SRAM)을 포함할 수 있다. NIC(164)은 스위칭 디바이스, 예를 들어, 네트워크 스위치 또는 라우터와의 전자 통신을 확립하기 위한 이더넷, 주변장치 상호접속 익스프레스(peripheral component interconnect express: PCIe) 또는 다른 네트워크 커넥터(118)를 포함할 수 있다.
서버 노드(112)는 가상 구현을 위해 구성될 수 있다. 따라서, 로컬 메모리(104)는 거기에 제공된 하나 이상의 가상 머신(VM)(114-1, 114-2)(일반적으로는, 114)을 포함하여, 여러 다른 프로세싱 환경이 서버 노드(112)에서 일어나도록 허용한다. VM(114-1, 114-2)은 가상 머신(152)에 대응하는 운영 체제(154-1, 154-2)(일반적으로는, 154), 게스트 디바이스 드라이버(156-1, 156-2)(일반적으로는, 156) 및 가상 네트워크 인터페이스 카드(vNIC)(158-1, 158-2)(일반적으로는, 158)를 각각 포함할 수 있다. 서버 노드(112)는 서버 노드(112)의 물리 엘리먼트의 가상 구현 추상화를 제공하는 하이퍼바이저(160)를 포함하여, 그로써 VM(114)이 하드웨어 자원, 예를 들어, NIC(164)을 공유하도록 허용한다. VM(114)은 가상입출력(virtio)와 같은 I/O 가상 구현 프레임워크를 사용하여 하이퍼바이저(160)와 통신할 수 있다.
각각의 게스트 운영 체제(154-1, 154-2)는 하나 이상의 애플리케이션에 대응하는 프로그램 코드를 실행할 수 있다. 이러한 특징은, 어느 고객이 VM(114-1)을 포함하는 제1 가상 구현 환경에서 애플리케이션 세트를 실행할 수 있는 한편, 다른 고객이 VM(114-2)을 포함하는 제2 가상 구현 환경에서 다른 애플리케이션 세트를 실행할 수 있는 데이터 센터 환경에서 바람직하다. 하이퍼바이저(160)는 VM(114-1, 114-2)에서 실행 중인 애플리케이션이 가상 네트워크 내에서 통신할 수 있도록 가상 구현 환경 내에 네트워크 접속성을 제공하는 스위치(162) 또는 가상스위치(vswitch)를 포함할 수 있다. 라우팅에 부가하여, 서버 노드(112)에서의 가상 스위치(162)는 패킷 검사 및 보안 제어, 예를 들어, 네트워크 방화벽을 위한 액세스 제어 리스트(ACL)와 같은 다른 특징을 제공할 수 있다.
하이퍼바이저(160) 및 가상 스위치(162)는 VM(114) 사이에 느리고 프로세서-집약적인 "월드 스위치"의 사용을 포함할 수 있는 서버 노드(112)에서의 I/O 가상 구현 연산을 수행한다. 이러한 방식으로 하이퍼바이저(160)에서 가상 스위칭은 오버헤드를 부가하고 VM I/O 성능을 저하시켜, 대역폭, CPU 자원의 비효율적 이용의 결과를 초래하고, 또한 높은 레이턴시의 결과를 초래한다. 가상 스위치(162)는 하나의 VM, 예를 들어, VM(114-1) 하의 클라이언트 애플리케이션을 위해 의도된 CPU 사이클을 상정할 수 있으므로, 불일치 CPU 이용이 일어날 수 있어서, 다른 VM, 예를 들어, VM(114-2)에서 실행 중인 애플리케이션에 영향을 미칠 수 있다.
가상 구현 환경과 연관된 CPU 오버헤드 및 트래픽 레이턴시를 감축하기 위하여, 게스트 가상 머신에 NIC 디바이스의 직접 패스-스루를 제공하려는 소망이 있다. 그렇지만, 그렇게 하는 것은 하이퍼바이저(160) 및 가상 스위치(162)를 우회하는 것을 요구하여, 가상 스위치(162)에 의해 제공되는 보안 및 기능성에 관한 제한의 결과를 초래한다.
본 발명의 개념은, 서버 노드 취합 시스템에서 가상 스위치를 구성 및 배열하고 서버 노드 VM으로부터 서버 노드 취합 시스템으로 통신 채널(예를 들어, PCIe 커넥션 등)을 통해 데이터 경로를 형성함으로써, NIC, 기본 입출력 시스템(basic input output system: BIOS), 호스트 버스 어댑터(host bus adapter: HBA) 하드 디스크 등과 같은 물리 디바이스와 서버 노드 VM 사이에 수행되는 I/O 가상 구현 연산과 연관된 오버헤드를 감축하기 위한 취합 시스템 및 방법을 제공한다. 서버 노드 취합 시스템에서의 가상 스위치는 서버 노드에서의 하이퍼바이저로부터의 가상 스위칭 기능을 분담한다. 그렇게 해서는, 서버 노드에서의 I/O 가상 구현 연산과 관련된 CPU-집약적 프로세싱은, 그러한 연산에 있어서 하이퍼바이저의 역할이 줄거나 없어지므로, 감축된다. 그래서 가상 네트워크는 취합 디바이스로까지 확장될 수 있어서, 전자 디바이스 사이에 대규모 통신을 요구하는 데이터 센터 또는 다른 환경에서의 확장성을 제공한다. 가상 스위치는 ACL의 프로세싱, 가상 머신 사이에 보안의 모니터링에 관하여, 또는 라우팅 결정, 터널링, 예를 들어, IP 또는 제네릭 라우팅 캡슐화(GRE) 터널링과 관련하여, 또는 가상 구현 호스트에서의 관련 특징에 국한되지 않는다. 대신에, 그러한 특징들은 서버 노드 취합 시스템에서 이용가능하게 된다.
위에서 설명된 바와 같이, 부착된 서버 노드에서의 VM은 가상입출력(당업계에 알려져 있는 I/O용 가상 구현 프레임워크)을 사용하여 하이퍼바이저와 통신할 수 있다. 본 발명의 개념의 실시예는, I/O 연산이 수행될 때, 하이퍼바이저의 역할이 I/O에 관하여 줄거나 없어짐을 확립한다. 대신에, 예를 들어, VM과 서버 노드 취합 시스템 사이에 직접 통신을 확립하는 VM I/O 연산을 수행할 하드웨어가 제공되어, VM에 의해 소비되었을 CPU 자원 및 I/O 레이턴시를 감축한다. 대신에, 서버 노드 취합 시스템은, 예를 들어, I/O 연산에 있어서 데이터를 읽고/쓰도록 상호접속된 서버 노드의 로컬 메모리와 통신한다. 서버 노드 취합 시스템은 입/출력 메모리 관리 유닛(IOMMU)을 포함할 수 있다. IOMMU는, 예를 들어 메모리 보호를 제공하는 한편, 예를 들어 직접 메모리 액세스(DMA) 연산을 수행할 때 하이퍼바이저를 가로지르는 패스-스루를 용이하게 하도록 하이퍼바이저에 의해 제어될 수 있다. 이러한 특징은 하이퍼바이저의 지시 하에 일어나는 것으로부터의 메모리-대-메모리 데이터 복사를 없앨 수 있다. 다른 하나의 특징은 vNIC이 가상 구현 서버 노드에서의 게스트에 이용가능하게 될 수 있어서, 하이퍼바이저에 의한 개입 없이 취합 시스템으로의 직접 부착을 허용한다는 것이다.
도 2는, 일 실시예에 따라, 취합 시스템(200)과 통신하고 있는 복수의 서버 노드(212-1 내지 212-N)(일반적으로는, 212)를 포함하는 컴퓨팅 기반구조의 블록 선도이다.
취합 시스템(200)은 복수의 vNIC(222-1 내지 222-N)(일반적으로는, 222), 스위치 패브릭(switch fabric)(224) 및 I/O 프로세싱 복합체(226)를 포함한다. 서버 노드(212), 또는 관련된 프로세싱 디바이스는 NIC(242)과 같은 물리 디바이스를 공유하거나, 또는 취합 시스템(300)과 통신하고 있는 메모리, BIOS 또는 다른 컴퓨터 하드웨어 컴포넌트를 공유하도록 취합 시스템(200)에 의존할 수 있다.
스위치 패브릭(224)은 네트워크 라우터(324) 등을 통하여 취합 시스템과 통신하고 있는 하나 이상의 전자 디바이스(252) 및/또는 서버 노드(212-212-N) 사이에 데이터 또는 다른 전자 정보를 교환하는 복수의 I/O 포트(도시하지 않음)를 포함한다. 스위치 패브릭(224)은, 당업자에게 주지되어 있는 바와 같이, I/O 포트 사이에 데이터를 이동시키기 위한 스위칭 구성, 예를 들어, 크로스바를 포함할 수 있다. 스위치 패브릭(224) 및 I/O 프로세싱 복합체(226)는 I/O 프로세싱 복합체(226)와 스위치 패브릭(224)에서의 출력 포트 사이에 데이터를 교환하기 위한 대역폭을 제공하는 I/O 통신 채널(227)을 통하여 상호접속될 수 있다.
I/O 프로세싱 복합체(226)는 서버 노드(212)와 하나 이상의 외부 전자 디바이스, 예를 들어, 원격 전자 디바이스(252) 사이에 교환되는 데이터를 프로세싱한다. 일 실시예에 있어서, I/O 프로세싱 복합체(226)는 서버 노드(212) 및/또는 원격 전자 디바이스(252) 사이에 데이터를 교환하도록 네트워크 프로세서를 포함한다. 다른 일 실시예에 있어서, I/O 프로세싱 복합체(226)는 복수의 vNIC(222-1 내지 222-N)(일반적으로는, 222)이 제공될 수 있는 제어 플레인 프로세서(도시하지 않음)에 따라 스위치 패브릭(224) 내외로 데이터 전송을 수행하도록 멀티플렉서 및 다른 로직을 포함한다. 여기서, I/O 프로세싱 복합체(226)는, 예를 들어 2개 이상의 서버 노드(312) 사이에서, 또는 서버 노드(212)와 원격 컴퓨팅 디바이스(252) 사이에서, 취합 시스템(200) 내외로 데이터를 송신하기 위한 스테이징 에어리어로서 역할할 수 있다.
각각의 vNIC(222)은 아래에 상세히 설명되는 I/O 프로세싱 복합체(226)에서의 가상 스위치에 접속될 수 있다. 각각의 vNIC(222)은 서버 노드(212)에서의 VM(252)을 I/O 프로세싱 복합체(226)에서의 가상 스위치에서의 포트에 논리적으로 접속시킬 수 있다. 이것은 서버 노드(222)에서의 vNIC 인터페이스(258-1 내지 258-N)(일반적으로는, 258)와 vNIC(222) 사이에 PCIe 커넥션(214) 또는 관련 네트워크 커넥션을 통하여 통신 경로를 확립하고 vNIC 인터페이스(258)를 통해 데이터를 교환함으로써 달성될 수 있다. 각각의 vNIC(222)에는 주소, 예를 들어, MAC 주소 및/또는 IP 주소가 할당될 수 있다.
서버 노드(212-1 내지 212-N)(일반적으로는, 212)는 단일 소켓 서버 또는 다른 저-전력 프로세서-기반 서버일 수 있다. 서버 노드(212)는 프로세서 클러스터 또는 다른 주지의 배열로서 구성될 수 있다. 서버 노드(212)는 예를 들어 여기서 설명되는 하나 이상의 가상 구현 환경을 포함하도록 구성될 수 있다. 서버 노드(212)는 데이터 송신 및/또는 수신 연산을 수행하도록 데이터를 프로세싱하기 위해 메모리(204)에 정의된 링 버퍼 등을 유지할 수 있다.
서버 노드(212)는 하나 이상의 마이크로프로세서, CPU, GPU, DSP, ASIC, 메모리 컨트롤러, 멀티-코어 프로세서, 또는 다른 데이터 프로세싱 디바이스, 또는 그 엘리먼트의 조합을 포함할 수 있는 적어도 하나의 프로세서(202)를 각각 포함할 수 있다.
서버 노드(212)는 로컬 메모리(204)를 각각 포함한다. 로컬 메모리(204)는 비-휘발성 또는 휘발성 메모리, 예를 들어, DRAM 또는 정적 RAM(SRAM) 중 하나 이상의 채널일 수 있다. 서버 노드(112)는 서버 노드(212)와 취합 시스템(200) 사이에 데이터 전송을 관리하도록 그리고 당업자에게 알려져 있는 다른 I/O 기능을 수행하도록 관련 I/O 컨트롤러 및 사우스브리지를 포함하는 I/O 로직(도시하지 않음)을 각각 포함할 수 있다. I/O 로직은 단방향성 또는 양방향성 통신 경로(214)를 통하여 취합 시스템(200)과 통신하도록 이더넷 인터페이스, PCIe 인터페이스 및/또는 다른 네트워크 커넥터, 인터페이스 등을 포함할 수 있다.
로컬 메모리(204)는, 하나 이상의 VM(252), 운영 체제(도시하지 않음), 및 소프트웨어 애플리케이션(도시하지 않음), 예를 들어, 데이터 센터 환경에서의 고객 애플리케이션과 관련된 프로그램 코드와 같이, 거기에 저장되는 프로그램 코드를 포함할 수 있다.
서버 노드(212)의 로컬 메모리(204)는 적어도 하나의 vNIC 인터페이스(258-1, 258-N)(일반적으로는, 258)를 포함할 수 있다. 각각의 vNIC 인터페이스(258)는 취합 시스템(200)에서 생성된 vNIC(222)과 서버 노드(112)에서의 하나 이상의 VM(252) 사이에 통신을 확립하도록 구성 및 배열된다. 일 실시예에 있어서는, vNIC 인터페이스(258)와 대응하는 vNIC(222) 사이에 1:1 관계가 확립된다. 다른 일 실시예에 있어서는, vNIC 인터페이스(258)와 vNIC(222) 사이에 N:1 관계가 확립되는데, 여기서 N은 1보다 큰 정수이다.
vNIC 인터페이스(258)는 대응하는 vNIC(222)을 제어하기 위한 데이터를 포함하는 레지스터 세트를 포함할 수 있다. vNIC 인터페이스(258)는 서버 노드 메모리(204)와 취합 시스템(200) 사이에 데이터를 전송하도록 가상 DMA 엔진을 포함할 수 있다. vNIC 인터페이스(258)는 대응하는 vNIC(222)과 통신하도록, 예를 들어, vNIC(222)에 보내진 데이터가 프로세싱되어야 함을 vNIC(222)에 알려주도록 메일박스를 포함할 수 있다. vNIC 인터페이스(258)는 CPU(202)에 인터럽트를 제공하는 인터럽트 발생기를 포함할 수 있다. 예를 들어, CPU(202)는 인터럽트되어 데이터의 도착을 나타낼 수 있다.
vNIC 인터페이스(258)는 데이터가 송신을 위해 서버 노드(212)에서의 로컬 메모리(204)로 이동됨을 나타내는 통지를 PCIe 버스 또는 다른 통신 경로(214)를 통해 대응하는 vNIC(222)에 제공할 수 있다. VM I/O는, vNIC 인터페이스(258) 및 그 대응하는 vNIC(222)을 통하여, I/O 프로세싱 복합체(226), 더 구체적으로는, I/O 프로세싱 복합체(226)에서의 가상 스위치에 직접 보내진다.
일 실시예에 있어서, VM(252)은 가상입출력과 같은 컨소시엄-제공 표준에 따라 하이퍼바이저(260)와 통신한다. 다른 일 실시예에 있어서, VM(252)은 전매 통신에 따라 하이퍼바이저(260)와 통신한다. VM(252)과 하이퍼바이저(260) 사이의 통신 방식에 무관하게, I/O 연산은 하이퍼바이저(260)에 의해 수행되는 I/O-관련 통신 개입이 없거나 거의 없이 I/O 프로세싱 복합체(226)에서의 가상 스위치(도시하지 않음)와 VM(252) 사이의 통신을 통하여 수행될 수 있다. 따라서, 이러한 특징은 I/O 성능을 개선하고 VM(252)과 I/O 프로세싱 복합체(226) 사이의 데이터 전송과 관련된 레이턴시를 감축할 수 있다.
도 3은 예를 들어 도 2에 도시된 일 실시예에 따른 I/O 프로세싱 복합체(226)의 블록 선도이다. I/O 프로세싱 복합체(226)는 프로세서(302), 메모리 디바이스(304), 적어도 하나의 프록시 NIC(306) 및 적어도 하나의 가상 스위치(308)를 포함할 수 있다.
프로세서(302)는 I/O 프로세싱 복합체(226)의 기능, 예를 들어, 데이터 패킷과 연관된 수신지 주소에 기반하여 프록시 NIC(306)에 데이터를 지향시키는 것과 같이 가상 스위치(308)와 관련된 기능을 수행하고, NIC(242)를 통하여 외부 디바이스 및/또는 서버 노드(212) 사이에 그리고 메모리 디바이스(304)로 데이터 전송을 조정하도록 프로그램 코드를 실행한다. 프로세서(302)는 하나 이상의 CPU, GPU, DSP, ASIC, 메모리 컨트롤러, 멀티-코어 프로세서, 또는 다른 유형의 데이터 프로세싱 디바이스, 또는 그 엘리먼트의 조합을 포함할 수 있다. 프로세서(302)는 가상 스위치(308) 및/또는 가상 스위치(308)와 통신하고 있는 하나 이상의 프록시 NIC(306)에 의해 사용될 수 있다.
메모리 디바이스(304)는 가상 스위치(308)에 의한 프로세싱을 위한 데이터 및/또는 디스크립터 세트를 저장할 수 있다. 메모리 디바이스(304)는 NIC(242)을 위한 버퍼, 예를 들어, 수신 버퍼를 유지할 수 있다. 프로세서(302)는 데이터를 가상 스위치(308)에 스트리밍할 수 있다. 이러한 특징은 버퍼를 복사할 필요성을 없앨 수 있는데, 메모리 디바이스(304) 내 원래 버퍼를 가리키는 새로운 디스크립터를 생성함으로써 대신 사용될 수 있다. 일 실시예에 있어서, 메모리 디바이스(304)는 I/O 프로세싱 복합체(226)의 일부분이다. 다른 일 실시예에 있어서, 메모리 디바이스(304)는 I/O 프로세싱 복합체(226)와는 별개이고 어느 다른 곳, 예를 들어, 취합 시스템(200)에서의 어느 다른 위치에 위치결정된다. 메모리(304)는 규칙, ACL, 또는, 예를 들어, 데이터를 프로세싱하도록 가상 스위치(308)에 의해 사용될 수 있는 데이터 및 실행가능한 CPU 코드를 포함하는 관련 기준을 포함할 수 있다. 규칙, ACL 등은 데이터가 수신지에 포워딩될 수 있는 조건, 예를 들어, 데이터를 거부할지 포워딩할지, 데이터를 어디로 포워딩할지, 또는 데이터가 들어있는 패킷을 어떻게 프로세싱할지에 관한 다른 정보를 결정하도록 프로세싱될 수 있다.
각각의 프록시 NIC(306)은, 예를 들어, 1:1 관계로 vNIC(222)과 직접 통신하도록 구성 및 배열된다. vNIC(222-1)은 대응하는 소스 서버 노드(212-1)로부터 수신된 데이터에 대한 수신지 정보에 따라 프로세서(302)의 제어 하에 프록시 NIC(306)과의 통신을 확립할 수 있다. vNIC(222-1)은 데이터를 수신할 가용성에 대한 요청을 프록시 NIC(306)에 보낼 수 있다. 프록시 NIC(306)은 그것이 데이터를 수신할 수 있음을 나타내는 응답을 보낼 수 있다. 그렇지 않으면, vNIC(222-1)은 프록시 NIC(306)이 vNIC(222-1)으로부터 수신된 데이터를 프로세싱하도록 이용가능할 때까지 대기할 수 있다. vNIC(222-1) 및 프록시 NIC(306)은 폴 모드에 들어갈 수 있고, 이로써 프록시 NIC(306)은 메모리 위치 상황에 관한 주기적 폴, 및 vNIC(222-1)으로부터 데이터를 수신 및 프로세싱할 가용성에 대한 요청을 수신할 수 있다.
프록시 NIC(306)은 메모리(304)에 데이터를 놓고 그리고/또는 데이터 전송 연산 동안 메모리(304)로부터 데이터를 검색할 수 있다. 프록시 NIC(306)은 데이터가 프로세싱을 위해 메모리 디바이스(304)에서 이용가능함을 나타내는 통지를 가상 스위치(308)에 발생시킬 수 있다. 프록시 NIC(306)은 또한 가상 스위치(308)에 의한 프로세싱을 위해 그리고 수신지로의 출력을 위해 메모리 디바이스(304)로부터 데이터를 검색할 수 있다. 프록시 NIC(306)은 충분한 메모리 위치가 이용가능하다고 결정한 후에 메모리(304)에 데이터를 할당할 수 있다. 프로세서(302)는 프록시 NIC(306)에 의한 메모리(304)로의 데이터 할당을 관리할 수 있다.
가상 스위치(308)는, 메모리(304) 또는 프록시 NIC(306)으로부터, 데이터 패킷, 프레임, 셀 또는 다른 데이터 유닛을 프로세싱한다. 가상 스위치(308)는 패킷, 프레임 등의 헤더 정보에 따라 데이터를 그 수신지에 라우팅할 수 있다. 가상 스위치(308)는 서버 노드(212)에서의 VM(252) 사이에 그리고/또는 VM(252)과 물리 디바이스, 예를 들어, 물리 NIC(242) 또는 관련 출력 디바이스 사이에 논리 커넥션을 제공할 수 있다. 취합 시스템(200)은 다수의 가상 스위치(308)를 포함할 수 있고, 각각은 서로 다른 프록시 NIC(306)와 연관된다. 프록시 NIC(306)으로부터 가상 스위치(308)로의 데이터 경로는 수신된 데이터를 라우팅하도록 가상 스위치(308)에 의해 사용되는 수신지 정보를 제공할 수 있다. 가상 스위치(308)는 당업자에게 알려져 있는 다른 기능, 예를 들어, 네트워크 방화벽을 위해 패킷 분류, 패킷 검사 및 보안 제어, 예를 들어, ACL 등을 수행할 수 있다. 가상 스위치(308)는 규칙 엔진(도시하지 않음), 예를 들어, 데이터 패킷을 누락 또는 포워딩할 때를 확립하는 방화벽 규칙에 따라 데이터를 프로세싱할 수 있다.
도 4는, 일 실시예에 따라, 서버 노드와 취합 시스템 사이에 전자 통신을 위한 방법(400)을 예시하는 순서도이다. 방법(400)을 설명함에 있어서는, 도 2 및 도 3을 참조하여 설명된 서버 노드(212) 및 취합 시스템(200)을 참조한다. 방법(400)은 도 2 및 도 3의 취합 시스템(200) 및/또는 하나 이상의 서버 노드(212)의 로컬 메모리(204)에 저장되는 명령어에 의해 지배될 수 있다. 방법(400)의 일부 또는 전부는 온-다이, ASIC, 시스템-온-칩(SOC) 또는 관련 디바이스에서 수행될 수 있다.
블록(402)에서는, 셀, 패킷, 프레임 또는 다른 고정 길이 또는 가변 길이 데이터 유닛이 수신지, 예를 들어, 서버 노드(212-N) 또는 외부 전자 디바이스(252)로의 출력을 위해 서버 노드, 예를 들어, 소스 서버 노드(212-1)의 로컬 메모리에 제공될 수 있다. 소스 서버 노드(212-1)의 CPU(202)는 서버 노드(212)로부터 출력될 로컬 메모리 내 데이터에 관한 디스크립터 또는 관련 정보를 발생시킬 수 있다. 디스크립터는 취합 시스템(200)에 전송될 데이터와 관련된 커맨드, 스캐터-개더 리스트 등을 포함할 수 있다. 디스크립터 정보는 데이터 컨텐트가 상주하는 서버 노드 로컬 메모리(204) 내 위치, 데이터가 송신되어야 하는 수신지 주소, 이동할 데이터의 바이트 수, 및/또는 수신지 전자 디바이스에 데이터를 송신하기 위한 다른 관련 정보를 식별할 수 있다.
블록(404)에서는, 데이터가 로컬 메모리(204) 내에 있고 송신을 위해 이용가능하다는 통지가 소스 서버 노드(212-1)의 vNIC 인터페이스(258-1)에 의해 발생될 수 있다. vNIC 인터페이스(258-1)는 송신을 위한 데이터의 가용성을 대응하는 vNIC(222-1)에 통지할 수 있다. CPU(202)는 통신 경로(214), 예를 들어, PCIE 버스를 통해 vNIC 인터페이스(252-1)를 통하여 vNIC(222-1)에 보내지는 메일박스 쓰기 또는 관련 이벤트 통지를 발생시킬 수 있다.
블록(406)에서, vNIC(222-1)은 수신지 주소 또는 관련 정보를 결정하도록 디스크립터를 읽고 프로세싱한다. 대안으로, 메타 정보에는 수신지 포트를 식별하는 송신 디스크립터 또는 패킷이 제공될 수 있다. 그에 따라, vNIC(222-1)은 데이터가 전송을 위해 이용가능함을 결정한다.
블록(408)에서, vNIC(222-1)은 소스 서버 노드(212-1)로부터의 데이터를 프로세싱하기 위해 특정 가상 스위치(308)에서의 인터페이스와 통신하는 프록시 NIC(306)을 식별하도록 수신지 정보를 사용할 수 있다. vNIC(222-1)은 통신 모드에 따라 프록시 NIC(306)과 통신할 수 있다. 하나의 모드에 의하면, vNIC(222-1)은, 프록시 NIC(306)의 상태에 무관하게, 예를 들어, 데이터를 위해 이용가능한 버퍼 위치가 있는지에 무관하게, 프록시 NIC(306)과의 직접 통신을 확립할 수 있다. 다른 하나의 모드에 의하면, 버퍼 위치가 데이터를 위해 이용가능한지 결정이 이뤄질 수 있다. 그러하다면, vNIC(222-1)과 프록시 NIC(306) 사이에 통신 경로가 확립된다. I/O 프로세싱 복합체(226)는 적어도 하나의 통신 모드를 위해 수동으로 또는 자동으로 구성될 수 있다. 따라서, 데이터 경로는 데이터 출발지, 예를 들어, 소스 서버 노드(212-1)에서의 VM(252)으로부터, 가상 스위치(308)와 차례로 통신하는 프록시 NIC(306)로 형성될 수 있다. 예를 들어, 도 6에 도시된 데이터 경로(602)를 참조하라. vNIC(222)은 연관된 VM(252)으로부터 가상 스위치(308)로 데이터 경로를 따라 데이터를 출력하도록 구성 및 배열된다.
블록(410)에서, 프록시 NIC(306)은 가상 스위치(308)에 의한 후속 프로세싱을 위해 메모리 디바이스(304)에서의 버퍼에 데이터를 전송할 수 있다. vNIC(222-1)은 서버 노드 로컬 메모리(204)로부터 디스크립터를 인출하고, 그에 따라, 프록시 NIC(306)의 지시 및 제어 하에 그 확립된 데이터 경로를 통해 메모리 디바이스(304)에 데이터를 이동시킬 수 있다.
블록(412)에서, 프록시 NIC(306)은 가상 스위치(308)에 의해 프로세싱될 수 있는 메모리 디바이스(304)에서의 데이터를 가상 스위치(308)에 알려주는 통지를 발생시킨다.
블록(414)에서, 가상 스위치(308)는 데이터를 프로세싱, 예를 들어, 데이터 패킷 등을 검사할 수 있다. 가상 스위치(308)는 데이터를 조사하여 그것이 디스크립터 및/또는 헤더 정보에 따라 필터링되어야 하는지 포워딩되어야 하는지 결정할 수 있다. 가상 스위치(308)는, 예를 들어 예정된 정책에 따라, 하나 이상의 프록시 NIC(306)과 하나 이상의 수신지 서버 노드(212) 메모리 및/또는 원격 컴퓨팅 디바이스(252) 사이에 데이터의 전송을 조정할 수 있다. 가상 스위치(308)는 프록시 NIC(306)으로부터 데이터의 소스를 식별하여, 가상 스위치(308)가 ACL 유지, 패킷 검사 등과 같은 기능을 수행하도록 허용할 수 있다. 가상 스위치(308)는 예정된 규칙을 적용하고, 수신지 MAC 주소를 프로세싱하고, 당업자에게 알려져 있는 다른 가상 스위치 기능을 수행할 수 있다. 이러한 방식으로, 서버 노드 하이퍼바이저와 관련된 프로세서-집약적 연산은 줄이거나 없앨 수 있다. 또한, 가변 부하와 관련된 문제, 예를 들어, 가상 머신에 할당된 CPU 자원이 다른 프로세스에 의해 소비되는 것이 회피될 수 있다.
도 5는, 일 실시예에 따라, 가상 스위치와 수신지 서버 노드 사이에 전자 통신을 위한 방법(500)을 예시하는 순서도이다. 방법(500)을 설명함에 있어서는, 도 2 내지 도 4를 참조한다. 방법(500)은 도 2 및 도 3의 취합 시스템(200) 및/또는 하나 이상의 서버 노드(212)의 로컬 메모리(204)에 저장되는 명령어에 의해 지배될 수 있다. 방법(500)의 일부 또는 전부는 온-다이, ASIC, 시스템-온-칩(SOC) 또는 관련 디바이스에서 수행될 수 있다.
가상 스위치(308)는 프록시 NIC(306)으로부터 데이터를 수신하여, 차례로 메모리(304)로부터 데이터를 검색할 수 있다. 가상 스위치(308)는, 예를 들어, 수신지 서버 노드(212-N) 또는 원격 컴퓨팅 디바이스(252)에 데이터를 포워딩하도록 데이터를 분류, 라우팅 또는 그렇지 않으면 프로세싱할 수 있다. 가상 스위치(308)는 패킷 캡슐화/캡슐화해제, 계층 2 보안 및 다른 주지의 가상 스위치 특징과 같은 다른 주지의 가상 스위치 기능을 수행할 수 있다.
블록(502)에서, 가상 스위치(308)는 데이터가 송신을 위해 이용가능함을 프록시 NIC(306)에 통지한다. 프록시 NIC(306)은 주소와 같이 수신지 정보로부터 결정될 수 있다.
블록(504)에서, 프록시 NIC(306)은 수신지 vNIC(222-N)과의 통신을 확립한다. 통신은 프록시 NIC(306)과 vNIC(222-N) 사이에 양방향성 경로로 확립될 수 있다. 프록시 NIC(306)은 데이터를 수신할 vNIC(222)을 식별하도록 가상 스위치(308)에 의해 포워딩된 데이터 페이로드에 대응하는 패킷 헤더 또는 다른 필드 내 수신지 정보를 프로세싱할 수 있다. 프록시 NIC(306)은 데이터가 가상 스위치(308)에 의한 라우팅을 위해 이용가능함을 vNIC(222-N)에 통지할 수 있다. 프로세서(302)는 커맨드/스캐터 데이터가 들어있는 송신 디스크립터를 생성할 수 있다. 프로세서(302)는 송신 데이터가 가상 스위치(308)로부터의 출력을 위해 이용가능함을 프록시 NIC(306)에 알려줄 수 있다.
블록(506)에서, 수신지 서버 노드(212-N)에서의 CPU(202)는 수신지 서버 노드(212-N)의 로컬 메모리(204)에서 이용가능한 데이터 버퍼를 가리키는 수신 디스크립터를 포스팅할 수 있다. 수신 디스크립터는 버퍼 주소, 길이 또는 관련 정보를 포함할 수 있다. 디스크립터는 하드웨어에서 일어나는 도어벨을 울림으로써 포스팅될 수 있다.
블록(508)에서, 수신지 vNIC(222-N)는 가상 스위치(308)로부터의 데이터를 수신하도록 수신지 노드 메모리(204)로부터 수신 버퍼를 할당할 수 있다. 수신 버퍼가 현재 이용가능하지 않으면, I/O 프로세싱 복합체(226)는 수신 버퍼가 수신지 서버 노드 메모리(204)에서 이용가능하게 되도록 대기할 수 있다.
블록(510)에서, 수신지 vNIC(222-N)는 수신 버퍼에 대한 디스크립터를 인출 및 프로세싱하고 수신지 서버 노드(212-N)에서의 로컬 메모리(204)로 데이터를 이동시킨다.
도 6은 다른 일 실시예에 따라 컴퓨팅 기반구조(20) 내 데이터 흐름 경로의 예시도이다. 도 6을 설명함에 있어서는, 도 2 내지 도 5를 참조한다.
데이터 경로(602)는 소스 서버 노드(212-1)에서의 VM(252)으로부터 취합 시스템(200)에서의 프록시 NIC(306-1)로 형성된다. 데이터 경로(602)는 여기서 설명된 방법(400)에 따라 형성될 수 있다. 프록시 NIC(306-1)은 데이터 경로(602)를 따라 vNIC(222-1)에 제공된 수신지 정보에 따라 결정된다. 프록시 NIC(306-1)는 데이터 경로(602)를 통하여 수신된 데이터(604)를 메모리(304)에서의 이용가능한 위치로 출력한다.
프록시 NIC(306-1)는 데이터가 프로세싱을 위해 이용가능함을 가상 스위치(308)에 알려주는 통지(606)를 가상 스위치(308)에 보낸다. 가상 스위치(306)는 데이터를 프로세싱(608), 예를 들어, 데이터를 수신지에 포워딩, 규칙, ACL 또는 다른 보안 특징을 적용할 수 있다. 가상 스위치(308)는, 예를 들어, 도 5를 참조하여 설명된 블록(502)에 따라 데이터를 선택된 프록시 NIC(306-2)에 출력(610)할 수 있다.
데이터 경로(612)는 가상 스위치(308)로부터 수신지 서버 노드(212-2)에서의 표적 VM(252)으로 형성된다. 데이터 경로(612)는 여기서 설명된 방법(400) 및/또는 방법(500)에 따라 형성될 수 있다.
도 7은 다른 일 실시예에 따라 컴퓨팅 기반구조(20) 내 데이터 흐름 경로의 다른 하나의 예시도이다.
데이터 패킷은 원격 컴퓨터(252)로부터 NIC(242)과 통신하고 있는 메모리(304)에서의 수신 버퍼로 출력(702)된다.
프로세서(302)는 데이터가 프로세싱을 위해 메모리(304)에 있음을 가상 스위치(308)에 통지(704)할 수 있다.
가상 스위치(308)는 메모리(304)로부터 데이터를 검색(706)하고 데이터를 프로세싱, 예를 들어, 라우팅, 검사 등을 할 수 있다.
데이터 경로(708)는 수신지 서버 노드(212-2)에서의 표적 VM(252) 및 프록시 NIC(306)으로부터 형성된다. 데이터 경로(708)는 여기서 설명된 방법(400) 및/또는 방법(500)에 따라 형성될 수 있다.
당업자에 의해 인식되는 바와 같이, 본 발명의 태양은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 본 발명의 태양은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 여기서 일반적으로는 전부 "회로", "모듈" 또는 "시스템"이라고 지칭될 수 있는 하드웨어 및 소프트웨어 태양을 조합하는 실시예의 형태를 취할 수 있다. 더욱, 본 발명의 태양은 컴퓨터 판독가능 프로그램 코드를 내장하고 있는 하나 이상의 컴퓨터 판독가능 매체(들)에 구체화된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능 매체(들)의 어떠한 조합이라도 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는 국한되는 것은 아니지만, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 상기의 어느 적합한 조합이라도 될 수 있다. 컴퓨터 판독가능 저장 매체의 더 구체적 예(빠짐없는 것은 아닌 리스트)는 이하의 것을 포함할 것이다: 하나 이상의 유선을 갖는 전기 커넥션, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그래머블 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 상기의 어느 적합한 조합. 본 문서의 맥락에 있어서, 컴퓨터 판독가능 저장 매체는 명령 실행 시스템, 장치 또는 디바이스와 연관되는 또는 그에 의한 사용을 위한 프로그램을 포함 또는 저장할 수 있는 어느 유형적 매체라도 될 수 있다.
컴퓨터 판독가능 신호 매체는, 예를 들어 기저대역으로 또는 반송파의 일부분으로서, 컴퓨터 판독가능 프로그램 코드가 내부에 내장되어 있는 상태에서 전파되는 데이터 신호를 포함할 수 있다. 그러한 전파되는 신호는, 국한되는 것은 아니지만, 전기-자기, 광학 또는 그 어느 적합한 조합을 포함하는 각종 형태를 취할 수 있다. 컴퓨터 판독가능 신호 매체는 명령 실행 시스템, 장치 또는 디바이스와 연관되는 또는 그에 의한 사용을 위한 프로그램을 통신, 전파 또는 송출할 수 있는 그리고 컴퓨터 판독가능 저장 매체가 아닌 어느 컴퓨터 판독가능 매체라도 될 수 있다. 컴퓨터 판독가능 매체 상에 구체화된 프로그램 코드는, 국한되는 것은 아니지만, 무선, 유선, 광섬유 케이블, RF 등 또는 상기의 어느 적합한 조합이라도 포함하는 어느 적합한 매체를 사용하여 송신될 수 있다.
본 발명의 태양의 연산을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향형 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 관용적 프로시저 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 어느 조합으로라도 작성될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터 상에서, 일부는 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 일부는 사용자의 컴퓨터 상에서 그리고 일부는 원격 컴퓨터 상에서 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에 있어서, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함하는 어느 유형의 네트워크라도 통하여 사용자의 컴퓨터에 접속될 수 있거나, 또는 커넥션이 (예를 들어, 인터넷 서비스 제공자를 사용하는 인터넷을 통해) 외부 컴퓨터에 이뤄질 수 있다.
본 발명의 태양은 본 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 예시적 순서도 및/또는 블록 선도를 참조하여 아래에 설명된다. 예시적 순서도 및/또는 블록 선도의 각각의 블록, 및 예시적 순서도 및/또는 블록 선도 내 블록의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음을 이해할 것이다. 이들 컴퓨터 프로그램 명령어는, 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 장치의 프로세서를 통하여 실행될 수 있는 명령어가 순서도 및/또는 블록 선도 블록 또는 블록들에 명시된 기능/조치를 구현하기 위한 수단을 생성하게 되도록, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 머신을 산출하는 다른 프로그래밍 가능한 데이터 프로세싱 장치의 프로세서에 제공될 수 있다.
이들 컴퓨터 프로그램 명령어는 또한, 컴퓨터 판독가능 매체에 저장된 명령어가 순서도 및/또는 블록 선도 블록 또는 블록들에 명시된 기능 조치를 구현하는 명령어를 포함하는 제조 물품을 산출하게 되도록, 컴퓨터에 지시할 수 있는 컴퓨터 판독가능 매체, 다른 프로그래밍 가능한 데이터 프로세싱 장치, 또는 특정 방식으로 기능하는 다른 디바이스에 저장될 수 있다. 이들 컴퓨터 프로그램 명령어는 또한, 컴퓨터 또는 다른 프로그래밍 가능한 장치 상에서 실행되는 명령어가 순서도 및/또는 블록 선도 블록 또는 블록들에 명시된 기능/조치를 구현하기 위한 프로세스를 제공하게 되도록, 일련의 연산 단계가 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스 상에 수행되게 하기 위해 컴퓨터, 다른 프로그래밍 가능한 데이터 프로세싱 장치 또는 다른 디바이스 상에 로딩될 수 있다.
도면에서의 순서도 및 블록 선도는 본 발명의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능성 및 연산을 예시하며, 이와 관련하여, 순서도 또는 블록 선도에서의 각각의 블록은 명시된 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함하는 모듈, 세그먼트, 또는 코드 일부를 표현할 수 있다. 일부 대안의 구현에서는, 블록에 언급된 기능이 도면에 언급된 순서와 다르게 일어날 수 있음을 또한 주목해야 한다. 예를 들어, 연속으로 도시된 2개의 블록은 실제로는 실질적으로 동시다발적으로 실행될 수도 있고, 블록들은 때로는, 관련 기능성에 의존하여, 역순으로 실행될 수도 있다. 예시적 순서도 및/또는 블록 선도의 각각의 블록, 및 예시적 순서도 및/또는 블록 선도 내 블록의 조합은 명시된 기능 또는 조치를 수행하는 특수 목적 하드웨어-기반 시스템, 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합에 의해 구현될 수 있다.
본 발명이 특정 실시예를 참조하여 도시 및 설명되었지만, 본 발명의 취지 및 범위로부터 벗어남이 없이 형태 및 상세의 다양한 변화가 거기에 이뤄질 수 있음을 당업자는 이해해야 한다.

Claims (43)

  1. 취합 디바이스(aggregation device)로서,
    복수의 프로세싱 디바이스와 통신하고 있는 복수의 가상 네트워크 인터페이스 카드(virtual network interface card: vNIC)로서, 각 프로세싱 디바이스는 적어도 하나의 가상 머신(vinual machine: VM)을 갖는 것인, 상기 vNIC; 및
    논리적으로 상기 vNIC과 적어도 하나의 물리 NIC 사이에 있는 입/출력(I/O) 프로세싱 복합체를 포함하되, 상기 I/O 프로세싱 복합체는 적어도 하나의 프록시 NIC 및 가상 스위치를 포함하고, 상기 가상 스위치는 상기 적어도 하나의 VM과 상기 적어도 하나의 프록시 NIC 사이에서 상기 복수의 vNIC 중의 vNIC에 의해 확립된 통신 경로를 통하여 상기 복수의 프로세싱 디바이스 중의 프로세싱 디바이스와 데이터를 교환하는 것인 취합 디바이스.
  2. 제1항에 있어서, 상기 I/O 프로세싱 복합체는 상기 프로세싱 디바이스와 상기 가상 스위치 사이에 교환되는 상기 데이터를 일시적으로 저장하는 메모리를 더 포함하는 것인 취합 디바이스.
  3. 제2항에 있어서, 상기 적어도 하나의 프록시 NIC 중의 프록시 NIC은 상기 통신 경로로부터 상기 메모리로 상기 데이터를 출력하는 것인 취합 디바이스.
  4. 제2항에 있어서, 상기 적어도 하나의 프록시 NIC 중의 프록시 NIC은 수신지 프로세싱 디바이스로의 출력을 위해 상기 메모리로부터 상기 데이터를 검색하는 것인 취합 디바이스.
  5. 제2항에 있어서, 상기 통신 경로는 상기 vNIC에 대응하는 상기 프로세싱 디바이스에서의 vNIC 인터페이스와 상기 적어도 하나의 프록시 NIC 사이에 뻗어 있는 것인 취합 디바이스.
  6. 제1항에 있어서, 상기 I/O 프로세싱 복합체에 결합된 스위치 패브릭(switch fabric)을 더 포함하되, 상기 스위치 패브릭은 복수의 포트를 포함하며, 상기 데이터는 상기 복수의 포트 중 입력 포트로부터 수신되고 상기 복수의 포트 중 출력 포트를 통하여 상기 I/O 프로세싱 복합체에 출력되는 것인 취합 디바이스.
  7. 제1항에 있어서, 상기 프로세싱 디바이스는 가상 구현 서버 노드를 포함하는 것인 취합 디바이스.
  8. 제1항에 있어서, 상기 가상 스위치는 상기 적어도 하나의 물리 NIC을 통하여 상기 프로세싱 디바이스와 원격 전자 디바이스 사이에 상기 데이터를 교환하기 위해 상기 적어도 하나의 물리 NIC에 접속되는 것인 취합 디바이스.
  9. 제1항에 있어서, 상기 취합 디바이스와 상기 복수의 프로세싱 디바이스를 접속하기 위한 주변장치 상호접속 익스프레스(peripheral component interconnect express: PCIe) 커넥터를 더 포함하는 취합 디바이스.
  10. 제1항에 있어서, 상기 취합 디바이스에서의 상기 가상 스위치는 교환되는 상기 데이터와 관련된 보안 특징을 제공하는 것인 취합 디바이스.
  11. 서버 취합 시스템으로서,
    적어도 하나의 가상 머신(VM)을 각각 갖는 복수의 서버 노드; 및
    상기 복수의 서버 노드 사이에 결합된 취합 디바이스를 포함하되, 상기 취합 디바이스는,
    상기 서버 노드와 통신하고 있는 복수의 가상 네트워크 인터페이스 카드(vNIC); 및
    입/출력(I/O) 프로세싱 복합체를 포함하고, 상기 I/O 프로세싱 복합체는 적어도 하나의 프록시 NIC, 및 상기 적어도 하나의 VM과 상기 적어도 하나의 프록시 NIC 사이에서 상기 복수의 vNIC 중의 vNIC에 의해 확립된 통신 경로를 통하여 상기 복수의 서버 노드 중의 서버 노드와 데이터를 교환하는 가상 스위치를 포함하는 것인 서버 취합 시스템.
  12. 제11항에 있어서, 상기 복수의 서버 노드 중 적어도 하나의 서버 노드는 상기 복수의 vNIC 중의 상기 vNIC과 통신하고 있는 가상 인터페이스를 포함하고, 상기 통신 경로는 상기 가상 인터페이스와 상기 적어도 하나의 프록시 NIC 사이에 뻗어 있는 것인 서버 취합 시스템.
  13. 제12항에 있어서, 상기 가상 인터페이스는,
    상기 서버 노드에서의 메모리와 상기 취합 디바이스 사이에 통신을 확립하는 가상 DMA 엔진;
    상기 vNIC에 보내지는 데이터가 프로세싱되어야 함을 상기 vNIC에 알려주는 메일박스;
    상기 서버 노드에서의 프로세서에 인터럽트를 제공하여, 상기 서버 노드에서의 데이터의 도착을 나타내는 인터럽트 발생기; 및
    상기 서버 노드에 대응하는 적어도 하나의 vNIC을 제어하기 위한 데이터를 포함하는 레지스터 세트를 포함하는 것인 서버 취합 시스템.
  14. 제11항에 있어서, 상기 I/O 프로세싱 복합체는 상기 서버 노드와 상기 가상 스위치 사이에 교환되는 상기 데이터를 일시적으로 저장하는 메모리를 더 포함하는 것인 서버 취합 시스템.
  15. 제14항에 있어서, 상기 적어도 하나의 프록시 NIC 중의 프록시 NIC은 상기 통신 경로로부터 상기 메모리로 상기 데이터를 출력하는 것인 서버 취합 시스템.
  16. 제14항에 있어서, 상기 적어도 하나의 프록시 NIC 중의 프록시 NIC은 상기 복수의 서버 노드 중 수신지 서버 노드로의 출력을 위해 상기 메모리로부터 상기 데이터를 검색하는 것인 서버 취합 시스템.
  17. 제16항에 있어서, 제2 통신 경로는 수신지 vNIC에 대응하는 상기 수신지 서버 노드에서의 가상 인터페이스와 상기 프록시 NIC 사이에 뻗어 있는 것인 서버 취합 시스템.
  18. 제11항에 있어서, 상기 I/O 프로세싱 복합체에 결합된 스위치 패브릭을 더 포함하되, 상기 스위치 패브릭은 복수의 포트를 포함하며, 상기 데이터는 상기 복수의 포트 중 입력 포트로부터 수신되고 상기 복수의 포트 중 출력 포트를 통하여 상기 I/O 프로세싱 복합체에 출력되는 것인 서버 취합 시스템.
  19. 제11항에 있어서, 상기 가상 스위치는 교환되는 상기 데이터와 관련된 보안 특징을 제공하는 것인 서버 취합 시스템.
  20. 가상 구현 네트워크에서 I/O 연산을 수행하는 방법으로서,
    취합 디바이스에서 가상 스위치를 생성하는 단계; 및
    서버 노드에서의 가상 머신과 상기 취합 디바이스에서의 상기 가상 스위치 사이에 통신 경로를 형성하는 단계를 포함하는 방법.
  21. 제20항에 있어서, 상기 서버 노드에서의 상기 가상 머신과 상기 취합 디바이스에서의 상기 가상 스위치 사이에 상기 통신 경로를 형성하는 단계는,
    상기 서버 노드에서의 로컬 메모리에 데이터를 제공하는 단계;
    상기 서버 노드에서의 가상 인터페이스로부터 상기 취합 디바이스에서의 가상 네트워크 인터페이스 카드(vNIC)로 통지를 보내는 단계;
    상기 서버 노드에서 디스크립터를 발생시키는 단계;
    상기 데이터의 수신지를 결정하도록 상기 디스크립터를 읽는 단계; 및
    상기 vNIC과 상기 취합 디바이스에서의 프록시 NIC 사이에 통신을 확립하는 단계를 포함하는 것인 방법.
  22. 제21항에 있어서,
    상기 데이터가 프로세싱을 위해 이용가능함을, 상기 프록시 NIC에 의해, 상기 가상 스위치에 통지하는 단계를 더 포함하는 방법.
  23. 제20항에 있어서, 상기 서버 노드에서의 상기 가상 머신과 상기 취합 디바이스에서의 상기 가상 스위치 사이에 상기 통신 경로를 형성하는 단계는,
    데이터가 상기 취합 디바이스로부터 상기 서버 노드로의 송신을 위해 이용가능함을, 상기 가상 스위치에 의해, 상기 취합 디바이스에서의 프록시 NIC에 통지하는 단계;
    상기 프록시 NIC과 상기 취합 디바이스에서의 수신지 vNIC 사이에 통신을 확립하는 단계; 및
    상기 수신지 vNIC과 상기 서버 노드에서의 가상 인터페이스 사이에 통신을 확립하는 단계를 포함하는 것인 방법.
  24. 제20항에 있어서,
    수신 디스크립터를 상기 서버 노드에서 포스팅하는 단계; 및
    상기 서버 노드에서의 메모리에서의 수신 버퍼를, 상기 수신지 vNIC에 의해, 할당하는 단계를 더 포함하는 방법.
  25. 제20항에 있어서,
    소스 서버 노드 정보에 따라 상기 가상 스위치에서 데이터를 프로세싱하는 단계를 더 포함하는 방법.
  26. 제20항에 있어서, 상기 취합 디바이스에서의 상기 가상 스위치는 교환되는 상기 데이터와 관련된 보안 특징을 제공하는 것인 방법.
  27. 제20항에 있어서, 상기 통신 경로를 형성하는 단계는 상기 가상 스위치와 통신하고 있는 물리 디바이스와 상기 가상 머신 사이에 통신 채널을 통해 데이터 경로를 형성하는 단계를 포함하는 것인 방법.
  28. 제27항에 있어서, 상기 물리 디바이스는 네트워크 인터페이스 카드, 기본 입출력 시스템(basic input output system: BIOS), 호스트 버스 어댑터(host bus adapter: HBA) 또는 저장 디바이스를 포함하는 것인 방법.
  29. 컴퓨터 프로그램 제품으로서,
    컴퓨터 판독가능 프로그램 코드가 내장되어 있는 컴퓨터 판독가능 저장 매체를 포함하되, 상기 컴퓨터 판독가능 프로그램 코드는,
    취합 디바이스에서 가상 스위치를 생성하도록 구성된 컴퓨터 판독가능 프로그램 코드; 및
    서버 노드에서의 가상 머신과 상기 취합 디바이스에서의 상기 가상 스위치 사이에 통신 경로를 형성하도록 구성된 컴퓨터 판독가능 프로그램 코드를 포함하는 것인 컴퓨터 프로그램 제품.
  30. I/O 가상 구현 연산(virtualization operation)과 연관된 오버헤드를 감축하기 위한 방법으로서,
    서버 노드 취합 디바이스에서 가상 스위치를 구성 및 배열하는 단계; 및
    상기 가상 스위치와 통신하고 있는 물리 디바이스와 하나 이상의 서버 노드 가상 머신 사이에 통신 채널을 통해 데이터 경로를 형성하는 단계를 포함하는 방법.
  31. 제30항에 있어서, 상기 통신 채널은 PCIe 커넥션을 포함하는 것인 방법.
  32. 제30항에 있어서, 상기 가상 스위치와 상기 하나 이상의 서버 노드 가상 머신 사이에 상기 데이터 경로를 형성하는 단계는,
    서버 노드의 가상 머신으로부터 상기 취합 디바이스에서의 가상 네트워크 인터페이스 카드(vNIC)로 통지를 보내는 단계; 및
    상기 vNIC과 상기 취합 디바이스에서의 프록시 NIC 사이에 통신 경로를 확립하는 단계를 포함하는 것인 방법.
  33. 제32항에 있어서,
    상기 데이터가 프로세싱을 위해 이용가능함을, 상기 프록시 NIC에 의해, 상기 가상 스위치에 통지하는 단계를 더 포함하는 방법.
  34. 제30항에 있어서, 상기 취합 디바이스에서의 상기 가상 스위치와 상기 하나 이상의 서버 노드 가상 머신 사이에 상기 통신 경로를 형성하는 단계는,
    데이터가 상기 취합 디바이스로부터 상기 하나 이상의 가상 머신에서의 가상 머신으로의 송신을 위해 이용가능함을, 상기 가상 스위치에 의해, 상기 취합 디바이스에서의 프록시 디바이스에 통지하는 단계;
    상기 프록시 디바이스와 상기 취합 디바이스에서의 수신지 가상 디바이스 사이에 통신을 확립하는 단계; 및
    상기 수신지 가상 디바이스와 상기 서버 노드에서의 가상 인터페이스 사이에 통신을 확립하는 단계를 포함하는 것인 방법.
  35. 제30항에 있어서,
    소스 서버 노드 정보에 따라 상기 가상 스위치에서 데이터를 프로세싱하는 단계를 더 포함하는 방법.
  36. 제30항에 있어서, 상기 취합 디바이스에서의 상기 가상 스위치는 교환되는 상기 데이터와 관련된 보안 특징을 제공하는 것인 방법.
  37. 제30항에 있어서, 상기 물리 디바이스는 네트워크 인터페이스 카드(NIC), 기본 입출력 시스템(BIOS), 호스트 버스 어댑터(HBA) 또는 저장 디바이스를 포함하는 것인 방법.
  38. 취합 시스템으로서,
    하나 이상의 프로세싱 디바이스에서의 복수의 가상 머신; 및
    상기 하나 이상의 프로세싱 디바이스와 통신하고 있는 입/출력(I/O) 프로세싱 복합체를 포함하되, 상기 I/O 프로세싱 복합체는 가상 스위치를 포함하고, 상기 I/O 프로세싱 복합체는 하나 이상의 가상 머신 중의 가상 머신과 상기 가상 스위치 사이에 통신 채널을 통해 데이터 경로를 확립하는 것인 취합 시스템.
  39. 제38항에 있어서,
    상기 I/O 프로세싱 복합체와 통신하고 있는 물리 디바이스를 더 포함하되, 상기 통신 채널은 상기 하나 이상의 가상 머신과 상기 물리 디바이스 사이에 있는 것인 취합 시스템.
  40. 제39항에 있어서, 상기 물리 디바이스는 네트워크 인터페이스 카드(NIC), 기본 입출력 시스템(BIOS), 호스트 버스 어댑터(HBA) 또는 저장 디바이스를 포함하는 것인 취합 시스템.
  41. 제38항에 있어서, 상기 I/O 프로세싱 복합체는 상기 가상 머신과 상기 가상 스위치와 상기 물리 디바이스 사이에 교환되는 상기 데이터를 일시적으로 저장하는 메모리를 더 포함하는 것인 취합 시스템.
  42. 제38항에 있어서, 상기 통신 채널은 PCIe 커넥션을 포함하는 것인 취합 시스템.
  43. 제38항에 있어서, 상기 입/출력(I/O) 프로세싱 복합체에서의 상기 가상 스위치는 교환되는 상기 데이터와 관련된 보안 특징을 제공하는 것인 취합 시스템.
KR20157001663A 2012-06-25 2013-06-10 입/출력 가상 구현을 위한 방법 및 시스템 KR20150030738A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/531,890 2012-06-25
US13/531,890 US8806025B2 (en) 2012-06-25 2012-06-25 Systems and methods for input/output virtualization
PCT/US2013/044914 WO2014004060A1 (en) 2012-06-25 2013-06-10 Systems and methods for input/output virtualization

Publications (1)

Publication Number Publication Date
KR20150030738A true KR20150030738A (ko) 2015-03-20

Family

ID=48699291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20157001663A KR20150030738A (ko) 2012-06-25 2013-06-10 입/출력 가상 구현을 위한 방법 및 시스템

Country Status (7)

Country Link
US (1) US8806025B2 (ko)
EP (1) EP2864893A1 (ko)
JP (1) JP2015521779A (ko)
KR (1) KR20150030738A (ko)
CN (1) CN104395895A (ko)
IN (1) IN2014DN10752A (ko)
WO (1) WO2014004060A1 (ko)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102170B2 (en) * 2012-05-18 2018-10-16 Dell Products, Lp System and method for providing input/output functionality by an I/O complex switch
US9898317B2 (en) 2012-06-06 2018-02-20 Juniper Networks, Inc. Physical path determination for virtual network packet flows
US8806025B2 (en) * 2012-06-25 2014-08-12 Advanced Micro Devices, Inc. Systems and methods for input/output virtualization
US10387201B2 (en) * 2012-06-26 2019-08-20 Vmware, Inc. Storage performance-based virtual machine placement
US20140006676A1 (en) * 2012-06-28 2014-01-02 Dell Products L.P. Systems and methods for dynamic allocation of information handling resources
JP5958164B2 (ja) * 2012-08-07 2016-07-27 富士通株式会社 制御装置、方法及びプログラム、並びにシステム及び情報処理方法
US9008085B2 (en) 2012-08-15 2015-04-14 International Business Machines Corporation Network interface card having overlay gateway functionality
CN103259727B (zh) 2012-08-31 2016-12-28 杭州华三通信技术有限公司 一种报文转发方法及设备
US10341263B2 (en) 2012-12-10 2019-07-02 University Of Central Florida Research Foundation, Inc. System and method for routing network frames between virtual machines
US20140280846A1 (en) * 2013-03-14 2014-09-18 Douglas Gourlay System and method for abstracting network policy from physical interfaces and creating portable network policy
US9781041B2 (en) * 2013-07-24 2017-10-03 Dell Products Lp Systems and methods for native network interface controller (NIC) teaming load balancing
CN104579695B (zh) * 2013-10-23 2018-07-20 新华三技术有限公司 一种数据转发装置和方法
US9703743B2 (en) 2014-03-31 2017-07-11 Juniper Networks, Inc. PCIe-based host network accelerators (HNAS) for data center overlay network
US9485191B2 (en) 2014-03-31 2016-11-01 Juniper Networks, Inc. Flow-control within a high-performance, scalable and drop-free data center switch fabric
US9479457B2 (en) 2014-03-31 2016-10-25 Juniper Networks, Inc. High-performance, scalable and drop-free data center switch fabric
US9294304B2 (en) * 2014-03-31 2016-03-22 Juniper Networks, Inc. Host network accelerator for data center overlay network
US10073801B2 (en) * 2014-04-25 2018-09-11 Hitachi, Ltd. Computer and method of controlling I/O switch of computer
US10261814B2 (en) 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9647894B2 (en) * 2014-07-30 2017-05-09 International Business Machines Corporation Mapping relationships among virtual elements across a system
US9767047B2 (en) 2014-10-03 2017-09-19 Citrix Systems, Inc. Methods and systems for filtering communication between peripheral devices and mobile computing devices
US9747240B2 (en) 2014-10-24 2017-08-29 Cisco Technology, Inc. Dynamic connection of PCIe devices and functions to an array of hosts
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
US10320921B2 (en) * 2014-12-17 2019-06-11 Vmware, Inc. Specializing virtual network device processing to bypass forwarding elements for high packet rate applications
CN106293502B (zh) * 2015-06-29 2019-09-24 联想(北京)有限公司 一种配置方法、数据交换方法及服务器系统
EP3306870B1 (en) * 2015-07-03 2019-09-11 Huawei Technologies Co., Ltd. Network configuration method, network system and device
US10331616B2 (en) 2015-08-05 2019-06-25 Futurewei Technologies, Inc. Integration of network linecard (LC) to host operating system (OS)
US9749266B2 (en) * 2015-08-28 2017-08-29 International Business Machines Corporation Coalescing messages using a network interface controller
US10140242B2 (en) * 2015-09-10 2018-11-27 Qualcomm Incorporated General purpose input/output (GPIO) signal bridging with I3C bus interfaces and virtualization in a multi-node network
US9798582B2 (en) * 2015-10-22 2017-10-24 International Business Machines Corporation Low latency scheduling on simultaneous multi-threading cores
JP6505172B2 (ja) 2016-08-25 2019-04-24 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation 仮想ネットワーク環境で仮想スイッチを利用してロードバランシングを処理する方法およびシステム
JP6505171B2 (ja) * 2016-08-25 2019-04-24 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation 仮想ネットワーク環境でループバックインタフェースを利用してdsrロードバランシングを処理する方法およびシステム
CN108023837B (zh) * 2016-10-31 2020-11-20 鸿富锦精密电子(天津)有限公司 虚拟网络交换机系统及其建立方法
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
US10243840B2 (en) 2017-03-01 2019-03-26 Juniper Networks, Inc. Network interface card switching for virtual networks
US20180300259A1 (en) * 2017-04-12 2018-10-18 Quanta Computer Inc. Local disks erasing mechanism for pooled physical resources
JP6855906B2 (ja) * 2017-04-25 2021-04-07 富士通株式会社 スイッチプログラム、スイッチング方法及び情報処理装置
US10757105B2 (en) * 2017-06-12 2020-08-25 At&T Intellectual Property I, L.P. On-demand network security system
US10599600B2 (en) * 2017-06-16 2020-03-24 Western Digital Technologies, Inc. Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
CN107220128A (zh) * 2017-06-19 2017-09-29 郑州云海信息技术有限公司 一种集群系统中cpu的分配方法和装置
CN109213702B (zh) * 2017-06-30 2022-08-30 伊姆西Ip控股有限责任公司 虚拟机环境中的虚拟双控制模块之间的通信
US10979368B2 (en) * 2017-08-02 2021-04-13 Nebbiolo Technologies, Inc. Architecture for converged industrial control and real time applications
CN107368178A (zh) * 2017-08-21 2017-11-21 湖南大学 基于dpdk数据包处理平台的功耗优化方法
CN109698845B (zh) * 2017-10-20 2020-10-09 华为技术有限公司 数据传输的方法、服务器、卸载卡及存储介质
US10791062B1 (en) * 2017-11-14 2020-09-29 Amazon Technologies, Inc. Independent buffer memory for network element
US10541842B2 (en) 2018-01-10 2020-01-21 Viasat, Inc. Methods and apparatus for enhancing virtual switch capabilities in a direct-access configured network interface card
CN111742524B (zh) * 2018-02-20 2021-12-14 华为技术有限公司 企业虚拟专用网络(vpn)与虚拟私有云(vpc)粘连
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
US11201781B2 (en) 2019-03-12 2021-12-14 Arista Networks, Inc. Systems and methods for automatically configuring network isolation
CN111786853A (zh) * 2020-07-01 2020-10-16 公安部第三研究所 针对安全隔离与信息交换产品实现吞吐量和延时指标测试的系统及其方法
US11463312B2 (en) * 2021-01-21 2022-10-04 Cisco Technology, Inc. Secure onboarding of network devices
CN114637574A (zh) * 2022-02-18 2022-06-17 阿里巴巴(中国)有限公司 基于半虚拟化设备的数据处理方法、装置和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US7925802B2 (en) 2007-06-21 2011-04-12 Seamicro Corp. Hardware-based virtualization of BIOS, disks, network-interfaces, and consoles using a direct interconnect fabric
US8140719B2 (en) 2007-06-21 2012-03-20 Sea Micro, Inc. Dis-aggregated and distributed data-center architecture using a direct interconnect fabric
US7945647B2 (en) * 2007-12-10 2011-05-17 Oracle America, Inc. Method and system for creating a virtual network path
US7826359B2 (en) * 2008-03-24 2010-11-02 Oracle America, Inc. Method and system for load balancing using queued packet information
US8195774B2 (en) * 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US9880954B2 (en) 2008-12-01 2018-01-30 Micron Technology, Inc. Method and apparatus for providing data access
US8254261B2 (en) * 2009-10-16 2012-08-28 Oracle America, Inc. Method and system for intra-host communication
US8726093B2 (en) 2010-06-30 2014-05-13 Oracle America, Inc. Method and system for maintaining direct hardware access in the event of network interface card failure
EP2617159B1 (en) * 2010-09-17 2018-04-04 Oracle International Corporation System and method for facilitating protection against run-away subnet manager instances in a middleware machine environment
US8806025B2 (en) * 2012-06-25 2014-08-12 Advanced Micro Devices, Inc. Systems and methods for input/output virtualization

Also Published As

Publication number Publication date
EP2864893A1 (en) 2015-04-29
WO2014004060A1 (en) 2014-01-03
JP2015521779A (ja) 2015-07-30
IN2014DN10752A (ko) 2015-09-04
CN104395895A (zh) 2015-03-04
US20130346531A1 (en) 2013-12-26
US8806025B2 (en) 2014-08-12

Similar Documents

Publication Publication Date Title
KR20150030738A (ko) 입/출력 가상 구현을 위한 방법 및 시스템
US11809338B2 (en) Shared memory for intelligent network interface cards
US11086650B2 (en) Technologies for application-specific network acceleration with unified coherency domain
US10263832B1 (en) Physical interface to virtual interface fault propagation
US20200244577A1 (en) In nic flow switching
CN112217746B (zh) 云计算系统中报文处理的方法、主机和系统
US9154451B2 (en) Systems and methods for sharing devices in a virtualization environment
EP3629162B1 (en) Technologies for control plane separation at a network interface controller
US8930595B2 (en) Memory switch for interconnecting server nodes
US9253287B2 (en) Speculation based approach for reliable message communications
US20230185732A1 (en) Transparent encryption
US11303638B2 (en) Atomic update of access control list rules
CN108984327B (zh) 报文转发方法、多核cpu及网络设备
US20220124035A1 (en) Switch-originated congestion messages
US20220014459A1 (en) Network layer 7 offload to infrastructure processing unit for service mesh
US9654421B2 (en) Providing real-time interrupts over ethernet
CN106603409B (zh) 一种数据处理系统、方法及设备
US20230100935A1 (en) Microservice deployments using accelerators
CN111492628A (zh) 用于在加速交换的情况下进行nic端口减少的技术
US9344376B2 (en) Quality of service in multi-tenant network
US9904654B2 (en) Providing I2C bus over ethernet
US20230043461A1 (en) Packet processing configurations
US20230375994A1 (en) Selection of primary and secondary management controllers in a multiple management controller system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application