KR20140143155A - 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법 - Google Patents

네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법 Download PDF

Info

Publication number
KR20140143155A
KR20140143155A KR1020147026247A KR20147026247A KR20140143155A KR 20140143155 A KR20140143155 A KR 20140143155A KR 1020147026247 A KR1020147026247 A KR 1020147026247A KR 20147026247 A KR20147026247 A KR 20147026247A KR 20140143155 A KR20140143155 A KR 20140143155A
Authority
KR
South Korea
Prior art keywords
flow
network packet
virtual
virtual machine
rule
Prior art date
Application number
KR1020147026247A
Other languages
English (en)
Other versions
KR101969194B1 (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 KR20140143155A publication Critical patent/KR20140143155A/ko
Application granted granted Critical
Publication of KR101969194B1 publication Critical patent/KR101969194B1/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/20Traffic policing
    • 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/34Signalling channels for network management communication
    • H04L41/342Signalling channels for network management communication between virtual entities, e.g. orchestrators, SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 네트워킹 장치 가상화를 위해 패킷 처리를 오프로딩하기 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들로 확장된다. 호스트는 가상 기계에 대한 규칙 세트(들)를 유지하고, 물리 네트워크 인터페이스 카드(NIC)는 가상 기계에 대한 흐름 테이블(들)을 유지한다. 물리 NIC는 가상 기계와 관련된 네트워크 패킷을 수신 및 처리한다. 네트워크 패킷의 처리는 물리 NIC가 네트워크 패킷을 물리 NIC에서의 흐름 테이블(들)과 비교하는 것을 포함한다. 네트워크 패킷이 물리 NIC에서의 흐름 테이블(들) 내의 흐름과 매칭될 경우, 물리 NIC는 매칭 흐름에 기초하여 네트워크 패킷에 대해 액션을 수행한다. 이와 달리, 네트워크 패킷이 물리 NIC에서의 흐름 테이블(들) 내의 흐름과 매칭되지 않을 경우, 물리 NIC는 규칙 세트(들)에 대한 처리를 위해 네트워크 패킷을 호스트 파티션으로 전송한다.

Description

네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법{OFFLOADING PACKET PROCESSING FOR NETWORKING DEVICE VIRTUALIZATION}
컴퓨터 시스템들 및 관련 기술은 사회의 많은 면에 영향을 준다. 사실상, 정보를 처리하는 컴퓨터 시스템의 능력은 우리가 살며 일하는 방식을 바꿔왔다. 이제, 일반적으로 컴퓨터 시스템들은 컴퓨터 시스템의 출현 전에는 수동으로 수행되었던 많은 작업(예로서, 워드 프로세싱, 스케줄링, 어카운팅 등)을 수행한다. 더욱 최근에, 컴퓨터 시스템들은 서로 그리고 다른 전자 장치들에 결합되어, 유선 컴퓨터 네트워크뿐만 아니라 무선 컴퓨터 네트워크를 형성하였으며, 이들을 통해 컴퓨터 시스템들 및 다른 전자 장치들은 전자 데이터를 전송할 수 있다. 따라서, 많은 컴퓨팅 작업의 수행은 다수의 상이한 컴퓨터 시스템 및/또는 다수의 상이한 컴퓨팅 환경에 걸쳐 분산된다.
일부 컴퓨터 시스템들은 하나 이상의 가상 기계를 호스팅(hosting)하기 위한 가상화된 환경들을 제공하도록 구성된다. 예를 들어, 반가상화된 실행 환경들은 하이퍼바이저들을 포함한다. 하이퍼바이저들은 부모 파티션 및 하나 이상의 자식 파티션(또는 가상 기계)을 제공한다. 부모 파티션은 호스트 운영 체제를 실행하고 가상화 스택을 관리하도록 구성된다. 각각의 자식 파티션은 대응하는 게스트 운영 체제를 실행하도록 구성된다. 하이퍼바이저들은 자식 파티션들이 게스트 운영 체제들 내에서 실행되는 가상 장치들(드라이버들)을 통해 물리 장치들에 액세스하는 것을 가능하게 하는 소프트웨어 인터페이스들도 제공한다.
가상화에 있어서의 일반적인 시나리오는 가상화 호스트 컴퓨터 시스템에서 실행되고 있는 가상 기계들 사이의 네트워크 패킷들을 관리하고, 가상 기계들과 호스트 컴퓨터 시스템으로부터 떨어진 컴퓨터 시스템들과의 사이에 흐르는 네트워크 패킷들을 관리하는 것이다. 따라서, 호스트 운영 체제들에서의 가상화 스택들은 네트워킹 가상화 스택들 또는 가상 스위치들을 포함할 수 있다. 가상 스위치들은 가상 기계들에 연결되어 전달되고 있는 네트워크 패킷들을 인터셉트, 검사 및 조작하도록 구성된다. 그러나, 그렇게 하는 것은 비효율적일 수 있으며, 그 결과 호스트 운영 체제와 게스트 운영 체제들 사이의 빈번하고 (CPU 사용 면에서) 비용이 드는 상황 스위치들(context switches)을 유발한다.
가상화 분야에서의 최근의 개발 기술은 단일 루트 I/O 가상화(Single-Root I/O Virtualization(SRIOV))이었다. SRIOV는 주변 컴포넌트 상호접속 익스프레스(PCIe) 장치들이 부모 및 자식 파티션들과 직접 통신하는 것을 가능하게 하는 PCIe 버스 아키텍처의 확장이다. 따라서, SRIOV는 PCIe 장치들이 자신들을 직접 (하이퍼바이저를 통해) 가상 기계들에 노출시키는 것을 가능하게 한다. 예를 들어, SRIOV-컴플라이언트 물리 네트워크 인터페이스 카드(NIC)는 호스트 파티션에 물리 기능을 제공하고, 대응하는 자식 파티션들에 하나 이상의 가상 기능을 제공할 수 있다. 게다가, 호스트 운영 체제는 물리 기능과 통신하는 물리 기능 드라이버를 포함할 수 있으며, 각각의 게스트 운영 체제는 대응하는 가상 기능과 통신하는 가상 기능 드라이버를 실행할 수 있다. 게다가, 물리 NIC는 (호스트 운영 체제를 우회하여) 게스트 운영 체제들과 직접 네트워크 패킷들을 통신할 수 있으며, 이는 네트워크 성능을 크게 개선할 수 있다.
SRIOV가 가져오는 진보에도 불구하고, 가상화 환경들에서의 네트워크 패킷 처리의 영역에서는 몇 가지 비효율적인 면이 여전히 존재한다.
본 발명은 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩을 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들로 확장된다. 예를 들어, 본 발명의 실시예들은 가상 기계 호스트에서의 네트워크 패킷 처리의 일부가 호스트로부터 물리 NIC로 오프로딩되는 것을 가능하게 하는 범용 네트워크 패킷 규칙 및 흐름 모델을 제공한다. 구체적으로, 본 발명의 실시예들은 부모 파티션(즉, 호스트 운영 체제)에서의 하나 이상의 흐름 테이블의 전부 또는 부분들이 물리 NIC로 오프로딩되는 것을 가능하게 한다. 그렇게 하는 것은 물리 NIC가 정의된 규칙들에 따라 패킷 처리를 수행하는 것을 가능하게 하면서, 가상 기계 환경들에서의 네트워크 패킷 처리의 성능을 향상시킨다.
일부 실시예들에서, 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 방법은 호스트 파티션이 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계를 포함한다. 방법은 물리 NIC가 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계도 포함한다. 물리 NIC는 가상 기계와 관련된 네트워크 패킷을 수신하고, 가상 기계에 대한 네트워크 패킷을 처리한다. 네트워크 패킷을 처리하는 단계는 물리 NIC가 네트워크 패킷과 하나 이상의 흐름 테이블을 비교하는 단계를 포함한다. 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭될 경우, 물리 NIC는 매칭 흐름에 기초하여 네트워크 패킷에 대해 액션을 수행한다. 이와 달리, 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭되지 않을 경우, 물리 NIC는 하나 이상의 규칙 세트에 대한 처리를 위해 네트워크 패킷을 호스트 파티션으로 전달한다.
다른 실시예들에서, 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 방법은 가상 스위치가 가상 기계에 대한 하나 이상의 규칙 세트를 유지하고, 또한 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계를 포함한다. 가상 스위치는 하나 이상의 흐름 테이블 중 적어도 일부를 물리 NIC로 오프로딩한다. 가상 스위치는 가상 기계에 대한 네트워크 패킷을 처리한다. 네트워크 패킷을 처리하는 단계는 가상 스위치가 가상 기계 또는 물리 NIC 중 하나로부터 네트워크 패킷을 수신하는 단계, 및 가상 스위치가 네트워크 패킷을 하나 이상의 규칙 세트 내의 규칙과 매칭시키는 단계를 포함한다. 네트워크 패킷과 규칙의 매칭에 기초하여, 가상 스위치는 하나 이상의 흐름 테이블 내에 흐름을 생성하고, 흐름을 물리 NIC로 오프로딩한다.
이 요약은 상세한 설명에서 더 후술하는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 이 요약은 청구 대상 발명의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않으며, 청구 대상 발명의 범위를 결정하는 데 있어서의 보조물로서 사용되는 것도 의도하지 않는다.
본 발명의 추가적인 특징들 및 장점들은 이어지는 설명에서 설명되며, 일부는 설명으로부터 명백하거나, 본 발명의 실시를 통해 알 수 있다. 본 발명의 특징들 및 장점들은 첨부된 청구항들에서 구체적으로 지시되는 수단들 및 조합들에 의해 인식되고 얻어질 수 있다. 본 발명의 이들 및 다른 특징들은 아래의 설명 및 첨부된 청구항들로부터 더 충분히 명백해지거나, 후술하는 바와 같은 본 발명의 실시를 통해 알 수 있다.
본 발명의 상기 및 다른 장점들 및 특징들을 획득할 수 있는 방식을 설명하기 위해, 위에서 간단히 설명된 본 발명의 더 구체적인 설명이 첨부된 도면들에 도시된 본 발명의 특정 실시예들을 참조하여 제공될 것이다. 이러한 도면들은 본 발명의 통상적인 실시예들을 도시할 뿐이며 따라서 본 발명의 범위를 한정하는 것으로 간주되지 않아야 한다는 것을 이해하면서, 본 발명을 첨부 도면들을 이용하여 더 구체적이고 상세하게 기술하고 설명할 것이다. 도면들에서:
도 1은 네트워킹 장치 가상화를 위한 물리 NIC로의 패킷 처리 오프로딩을 용이하게 하는 예시적인 컴퓨터 아키텍처를 나타낸다.
도 2는 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 예시적인 방법의 흐름도를 나타낸다.
도 3은 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 다른 예시적인 방법의 흐름도를 나타낸다.
도 4는 네트워킹 장치 가상화를 위한 물리 NIC로의 패킷 처리 오프로딩을 용이하게 하는 다른 컴퓨터 아키텍처를 나타낸다.
도 5는 예시적인 다중 계층 가상 스위치의 계층들을 포함하는 예시적인 컴퓨터 아키텍처를 나타낸다.
본 발명은 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩을 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들로 확장된다. 예를 들어, 본 발명의 실시예들은 가상 기계 호스트에서의 네트워크 패킷 처리의 일부가 호스트로부터 물리 NIC로 오프로딩되는 것을 가능하게 하는 범용 네트워크 패킷 규칙 및 흐름 모델을 제공한다. 구체적으로, 본 발명의 실시예들은 부모 파티션(즉, 호스트 운영 체제)에서의 하나 이상의 흐름 테이블의 전부 또는 부분들이 물리 NIC로 오프로딩되는 것을 가능하게 한다. 그렇게 하는 것은 물리 NIC가 정의된 규칙들에 따라 패킷 처리를 수행하는 것을 가능하게 하면서, 가상 기계 환경들에서의 네트워크 패킷 처리의 성능을 향상시킨다.
일부 실시예들에서, 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 방법은 호스트 파티션이 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계를 포함한다. 방법은 물리 NIC가 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계도 포함한다. 물리 NIC는 가상 기계와 관련된 네트워크 패킷을 수신하고, 가상 기계에 대한 네트워크 패킷을 처리한다. 네트워크 패킷을 처리하는 단계는 물리 NIC가 네트워크 패킷과 하나 이상의 흐름 테이블을 비교하는 단계를 포함한다. 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭될 경우, 물리 NIC는 매칭 흐름에 기초하여 네트워크 패킷에 대해 액션을 수행한다. 이와 달리, 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭되지 않을 경우, 물리 NIC는 하나 이상의 규칙 세트에 대한 처리를 위해 네트워크 패킷을 호스트 파티션으로 전달한다.
다른 실시예들에서, 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 방법은 가상 스위치가 가상 기계에 대한 하나 이상의 규칙 세트를 유지하고, 또한 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계를 포함한다. 가상 스위치는 하나 이상의 흐름 테이블 중 적어도 일부를 물리 NIC로 오프로딩한다. 가상 스위치는 가상 기계에 대한 네트워크 패킷을 처리한다. 네트워크 패킷을 처리하는 단계는 가상 스위치가 가상 기계 또는 물리 NIC 중 하나로부터 네트워크 패킷을 수신하는 단계, 및 가상 스위치가 네트워크 패킷을 하나 이상의 규칙 세트 내의 규칙과 매칭시키는 단계를 포함한다. 네트워크 패킷과 규칙의 매칭에 기초하여, 가상 스위치는 하나 이상의 흐름 테이블 내에 흐름을 생성하고, 흐름을 물리 NIC로 오프로딩한다.
본 발명의 실시예들은 아래에 더 상세히 설명되는 바와 같이 예를 들어 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 사용할 수 있다. 본 발명의 범위 내의 실시예들은 컴퓨터 실행 가능 명령어들 및/또는 데이터 구조들을 운반 또는 저장하기 위한 물리 및 다른 컴퓨터 판독 가능 매체도 포함한다. 그러한 컴퓨터 판독 가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있다. 컴퓨터 실행 가능 명령어들을 저장하는 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체(장치)이다. 컴퓨터 실행 가능 명령어들을 운반하는 컴퓨터 판독 가능 매체는 전송 매체이다. 따라서, 한정이 아닌 예로서, 본 발명의 실시예들은 적어도 2개의 상이한 종류의 컴퓨터 판독 가능 매체, 즉 컴퓨터 저장 매체(장치) 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체(장치)는 RAM, ROM, EEPROM, CD-ROM, (예로서, RAM 기반) 반도체 드라이브("SSD"), 플래시 메모리, 상변화 메모리("PCM"), 다른 타입의 메모리, 다른 광 디스크 저장 장치, 자기 디스크 저장 또는 다른 자기 저장 장치, 또는 원하는 프로그램 코드 수단을 컴퓨터 실행 가능 명령어들 또는 데이터 구조들의 형태로 저장하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템들 및/또는 모듈들 및/또는 다른 전자 장치들 간의 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 접속(유선, 무선 또는 유선과 무선의 조합)을 통해 컴퓨터로 전송되거나 제공될 때, 컴퓨터는 그에 따라 접속을 전송 매체로서 간주한다. 전송 매체는 원하는 프로그램 코드 수단을 컴퓨터 실행 가능 명령어들 또는 데이터 구조들의 형태로 운반하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크들을 포함할 수 있다. 전술한 것들의 조합들도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트들에 도달할 때, 컴퓨터 실행 가능 명령어들 또는 데이터 구조들의 형태의 프로그램 코드 수단은 전송 매체로부터 컴퓨터 저장 매체(장치)로 (또는 그 반대로) 자동 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행 가능 명령어들 또는 데이터 구조들은 네트워크 인터페이스 모듈(예로서, "NIC") 내의 RAM 내에 버퍼링된 후에 결국에는 컴퓨터 시스템 RAM으로 그리고/또는 컴퓨터 시스템의 덜 휘발성인 컴퓨터 저장 매체(장치)로 전송될 수 있다. 따라서, 컴퓨터 저장 매체(장치)는 전송 매체를 또한 (또는 심지어 주로) 사용하는 컴퓨터 시스템 컴포넌트들 내에 포함될 수 있다는 것을 이해해야 한다.
컴퓨터 실행 가능 명령어들은 예를 들어 프로세서에 의해 실행될 때 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 처리 장치로 하여금 소정의 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다. 컴퓨터 실행 가능 명령어들은 예를 들어 이진수들, 어셈블리 언어와 같은 중간 포맷 명령어들, 또는 심지어는 소스 코드일 수 있다. 본 발명은 구조적인 특징들 및/또는 방법적인 단계들에 고유한 언어로 설명되지만, 첨부된 청구항들에서 정의되는 발명은 설명되는 특징들 또는 단계들로 한정될 필요가 없다는 것을 이해해야 한다. 오히려, 설명되는 특징들 및 단계들은 청구항들을 구현하는 예시적인 형태들로서 개시된다.
이 분야의 기술자들은 본 발명이 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍 가능 소비자 전자 장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 이동 전화, PDA, 태블릿, 페이저, 라우터, 스위치 등을 포함하는 많은 타입의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경들에서 실시될 수 있다는 것을 알 것이다. 본 발명은 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크 또는 유선 및 무선 데이터 링크들의 조합에 의해) 링크되는 로컬 및 원격 컴퓨터 시스템들 양자가 작업들을 수행하는 분산 시스템 환경들에서도 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치들 양자에 배치될 수 있다. 일부 실시예들에서, 본 발명은 SRIOV-컴플라이언트 물리 NIC들과 관련하여 실시될 수 있지만, 본 발명의 범위는 SRIOV를 넘어 확장된다.
본 발명의 실시예들은 하나 이상의 가상 기계를 실행하는 호스트(예로서, 루트 파티션)와 관련하여 동작한다. 호스트는 가상 기계들에 의해 전송 및/또는 수신되는 네트워크 패킷들의 패킷 처리(예로서, 검사 및 아마도 조작)를 수행하는 가상 스위치를 포함한다. 예를 들어, 본 발명의 실시예들은 인터넷 프로토콜(IP) 패킷, RoCE(RDMA over Converged Ethernet) 패킷, FCoE(Fibre Channel over Ethernet) 패킷 등을 처리할 수 있다. 게다가, 본 발명의 실시예들은 패킷 처리의 적어도 일부가 호스트로부터 이더넷 NIC, InfiniBand NIC 또는 다른 타입의 물리 패브릭과 같은 물리 NIC로 오프로딩되는 것을 가능하게 하는 범용 규칙 및 흐름 모델을 제공한다. 따라서, 본 발명의 실시예들은 일반적인 방식의 패킷 처리를 가능하게 하여, 상이한 타입의 패킷 처리를 위한 상이한 가상 스위치 모듈들을 개발할 필요성을 제거한다.
구체적으로, 실시예들은 하나 이상의 흐름 테이블(또는 그들의 부분들)을 (SRIOV-컴플라이언트 물리 NIC와 같은) 물리 NIC로 오프로딩하는 것을 포함한다. 따라서, 물리 NIC의 가상 브리지는 호스트의 가상 스위치와 유사하게 패킷 처리를 수행하는 것이 가능해진다. 예를 들어, 패킷이 물리 NIC에서 수신되면, 가상 브리지는 패킷을 오프로딩된 흐름에 매칭시킬 수 있다. 이어서, 물리 NIC의 가상 브리지는 호스트와 무관하게 흐름에 대해 적절한 액션을 취할 수 있다. 그렇게 하는 것은 호스트에서 모든 규칙/흐름 패킷 처리를 행하는 것과 관련된 비효율성을 제거한다.
이제, 도면들을 참조하면, 도 1은 네트워킹 장치 가상화를 위한 물리 NIC로의 패킷 처리 오프로딩을 용이하게 하는 예시적인 컴퓨터 아키텍처(100)를 나타낸다. 도시된 바와 같이, 컴퓨터 아키텍처(100)는 호스트(102), 가상 기계(108) 및 물리 NIC(110)를 포함한다.
호스트(102)는 가상화 환경을 제공한다. 예를 들어, 호스트(102)는 (호스트 운영 체제를 실행하는) 부모 파티션 및 하나 이상의 자식 파티션을 포함할 수 있다. 각각의 자식 파티션은 가상 기계(108)와 같은 대응하는 가상 기계를 실행하기 위한 가상화된 하드웨어 환경을 제공하는 것으로 간주될 수 있다. 일부 실시예들에서, 호스트(102)는 테넌트(tenant)에게 가상 기계들을 제공하는 클라우드 컴퓨팅 환경의 일부로서 사용된다.
(가상 기계(108)를 포함하는) 각각의 가상 기계는 운영 체제, 애플리케이션 소프트웨어 등과 같은 하나 이상의 가상화된 애플리케이션을 실행한다. 도시된 바와 같이, 가상 기계(108)는 네트워크 스택(108a)(예로서, TCP/IP 스택), 가상 NIC 드라이버(108b) 및 가상 기능 드라이버(108c)를 포함한다. 네트워크 스택(108a), 가상 NIC 드라이버(108b) 및 가상 기능 드라이버(108c)를 이용하여, 가상 기계(108)는 가상 버스(116)를 통해 호스트(102)에 대해 그리고/또는 데이터 경로(114)를 통해 물리 NIC(110)에 대해 네트워크 패킷들 및 다른 정보를 송신하고/하거나 수신할 수 있다.
물리 NIC(110)는 가상화될 수 있고 하나 이상의 외부 인터페이스(예로서, 도시된 외부 인터페이스(126))를 이용하여 다른 컴퓨터 시스템들 및/또는 네트워크들에 접속되는 물리 하드웨어를 포함한다. 하나의 물리 NIC만이 도시되지만, 컴퓨터 아키텍처는 임의 수의 물리 NIC를 포함할 수 있다. 물리 NIC(110)는 가상 브리지(112)를 포함한다. 가상 브리지(112)는 물리 NIC(110)의 가상 기능들과 물리 기능들을 브리징하며, 패킷 검사 및 조작을 수행한다. 가상 브리지(112)는 나중에 더 상세히 설명되는 바와 같이 호스트(102)의 가상 스위치(104)와 협력하여 네트워크 트래픽을 조절한다. 따라서, 물리 NIC(110)는 하나 이상의 가상 기능을 호스트(102)에서 호스팅되고 있는 하나 이상의 가상 기계들에 노출시킬 수 있다. 게다가, 물리 NIC(110)는 하나 이상의 물리 기능을 호스트(102)에 노출시킬 수 있다.
예를 들어, 도 1은 물리 NIC(110)가 물리 기능(122)을 호스트(102)에 제공하는 것을 도시한다. 도 1은 호스트(102)가 대응하는 물리 기능 드라이버(124)를 포함하고, 데이터 경로(118)가 물리 NIC(110)의 물리 기능(122)과 호스트(102)의 물리 기능 드라이버(124)를 접속하는 것도 도시한다. 따라서, 물리 기능(122)과 물리 기능 드라이버(124)는 물리 NIC(110)와 호스트(102) 사이에서의 네트워크 패킷들의 교환을 위해 동작할 수 있다. 예를 들어, 물리 기능 드라이버(124)는 호스트(102)의 가상 스위치(104)와 통신할 수 있고, 물리 기능(122)은 물리 NIC(110)의 가상 브리지(112)와 통신할 수 있다.
도 1은 물리 NIC(110)가 가상 기능(120)을 가상 기능 드라이버(108c)에 대응하는 가상 기계(108)에 제공하는 것도 도시한다. 데이터 경로(114)는 물리 NIC(110)의 가상 기능(120)과 가상 기계(108)의 가상 기능 드라이버(108c)를 접속한다. 물리 NIC(110)는 둘 이상의 가상 기능을 가상 기계(108)에 제공할 수 있고/있거나, 추가적인 가상 기능들을 추가적인 가상 기계들에 제공할 수 있다. 일반적으로, 각각의 가상 기계는 할당된 가상 기능에 직접 액세스할 수 있다. 예를 들어, 가상 기계는 그의 가상 기능 드라이버를 이용하여, 호스트(102)의 개입 없이 네트워크 패킷들을 물리 NIC(110)의 할당된 가상 기능과 통신할 수 있다. 그렇게 하는 것은 프로세서 사용 및 네트워크 지연을 줄일 수 있다. 예를 들어, 가상 기계(108)와 물리 NIC(110)는 가상 기능(120)과 가상 기능 드라이버(108c)를 이용하여 데이터 경로(114)를 통해 직접 통신할 수 있다.
전술한 바와 같이, 물리 NIC(110)는 일부 실시예들에서 SRIOV-컴플라이언트 PCIe 하드웨어를 포함할 수 있다. 그러한 실시예들에서, 가상 기능(120) 또는 물리 기능(122) 중 하나 이상은 PCIe 기능들을 포함할 수 있다. 그러나, 본 명세서에서 설명되는 원리들은 다양한 하드웨어 장치들에 적용될 수 있으며, SRIOV-컴플라이언트 장치들 또는 PCIe 장치들로 한정되지 않는다는 것을 알 것이다.
일부 실시예들에서, 호스트(102)에서 호스팅되는 하나 이상의 가상 기계는 범용 규칙/흐름 모델에 따라 (착신 및/또는 발신) 규칙들 및 아마도 (착신 및/또는 발신) 흐름들과 연관될 수 있다. 도시된 바와 같이, 호스트(102)는 가상 스위치(104)를 포함한다. 가상 스위치(104)는 범용 규칙/흐름 모델에 따라 임의의 호스팅되는 가상 기계로부터 전송되고 그에 의해 수신되고 있는 네트워크 패킷들을 검사 및 조작하도록 구성된다. 예를 들어, 정의된 규칙들 및 흐름들에 기초하여, 가상 스위치(104)는 패킷들을 허용하거나, 패킷들을 차단하거나, 패킷들을 리라우팅하거나, NAT를 수행하거나, 사용되고 있는 네트워킹 기술들 및 장치들에 대한 임의의 다른 적절한 패킷 검사/조작을 수행할 수 있다.
본 명세서에서 사용될 때, 규칙은 하나 이상의 규칙 조건 및 하나 이상의 규칙 액션에 기초하여 패킷 흐름 정책(또는 그의 일부)을 정의한다. 일부 실시예들에서, 규칙들은 특정 가상 기계에 고유하다. 규칙들은 관리자들에 의해 정의될 수 있거나, 더 높은 레벨의 시스템들에 의해 정의될 수 있다. 일부 실시예들에서, 규칙들은 정적이거나 비교적 정적이다. 일부 실시예들에서, 규칙들은 규칙 세트들 내에 저장되며, 선형 매칭을 위해 구성된다.
규칙 조건들은 필드들 및 매칭 값들을 포함하는 튜플들을 이용하여 정의될 수 있다. 튜플들은 사용중인 네트워크 프로토콜(들) 및 하드웨어 장치(들)에 적합한 필드들의 임의 조합을 포함할 수 있다. 튜플들은 예를 들어 소스 및/또는 목적지 네트워크 주소(예로서, IP가 사용되고 있을 때, IP 주소), 소스 및/또는 목적지 포트, 프로토콜(예로서, 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP)), 소스 및/또는 목적지 하드웨어 주소(예로서, 이더넷 MAC 주소) 또는 이들의 조합들을 포함할 수 있다. 예를 들어, 예시적인 규칙 조건은 임의의 소스 IP 주소, 임의의 소스 포트, 임의의 목적지 IP 주소, 임의의 목적지 포트를 갖고 TCP 프로토콜을 이용하는 192.168.0.* 네트워크 상의 임의의 네트워크 패킷과 매칭되는 "192.168.0.*,*,*,*.TCP"와 같은 5-튜플에 따라 정의될 수 있다. 일부 실시예들에서, 튜플들은 흐름뿐만 아니라 패킷 조건과도 관련될 수 있다. 예를 들어, 튜플들은 IP 서비스 타입(ToS)과 관련된 필드들을 포함할 수 있다. 이 분야의 기술자는 아직 개발되지 않은 네트워킹 기술들과 관련된 튜플들을 포함하는 다른 튜플들도 가능하다는 것을 인식할 것이다.
규칙 액션들은 임의의 적절한 패킷 라우팅 및/또는 조작 동작을 포함할 수 있다. 예를 들어, 일부 예시적인 규칙 액션들은 거부, 허용, 네트워크 주소 변환(NAT), 맵핑, 계측, 캡슐화 해제, 캡슐화 등을 포함할 수 있다. 이 분야의 기술자는 아직 개발되지 않은 네트워킹 기술들과 관련된 액션들을 포함하는 다양한 다른 규칙 액션들이 가능하다는 것을 인식할 것이다.
규칙들은 패킷 처리 정책들의 풍부한 세트를 정의하는 데 사용될 수 있다. 예를 들어, 규칙 조건들(튜플들) 및 규칙 액션들을 이용하여, 규칙은 특정 IP 주소로부터의 UDP 패킷들이 허용되는 것으로 지정할 수 있다. 다른 예에서, 규칙은 지정된 포트를 갖는 임의의 목적지로 전송되는 TCP 패킷들에 대해 NAT가 수행되는 것으로 지정할 수 있다. 위의 예시적인 5-튜플 예와 "허용" 액션을 결합하면, 예시적인 규칙은 임의의 소스 IP 주소, 임의의 소스 포트, 임의의 목적지 IP 주소, 임의의 목적지 포트를 갖고 TCP 프로토콜을 이용하는 192.168.0.* 네트워크 상의 임의의 네트워크 패킷이 허용되어야 한다는 것을 의미하는 "192.168.0.*,*,*,*,TCP 허용"으로서 정의될 수 있다.
본 명세서에서 사용될 때, 흐름은 규칙들에 기초하여 생성되는 동적 상태이다. 예를 들어, 네트워크 패킷이 규칙과 매칭될 경우, 규칙에 기초하여 흐름이 생성될 수 있다. 따라서, 규칙들과 유사하게, 흐름들도 조건들(튜플들) 및 액션들에 의해 정의될 수 있다. 흐름들은 네트워크 접속들에 대한 상황을 저장하며, 스트림 또는 상황 내의 이전 패킷들에 기초하여 스트림 또는 상황 내의 현재 패킷을 어떻게 처리할지를 결정하는 데 사용될 수 있다. 흐름들은 타임아웃될 수 있다. 일부 실시예들에서, 흐름들은 착신 흐름 테이블 및/또는 발신 흐름 테이블과 같은 하나 이상의 흐름 테이블 내에 저장된다. 예를 들어, 네트워크 패킷이 예시적인 "192.168.0.*,*,*,*,TCP 허용" 규칙과 매칭될 경우, 대응하는 흐름이 하나 이상의 적절한 흐름 테이블 내에 생성될 수 있다. 일부 실시예들에서, 흐름들은 흐름의 튜플들에 기초하여 (예로서, 하나 이상의 해시를 이용하여) 인덱싱된다.
이와 더불어, 도 1은 가상 스위치가 도시된 발신 규칙 세트(106a), 착신 규칙 세트(106b), 발신 흐름 테이블(106c) 및 착신 흐름 테이블(106d)과 같은 다양한 타입의 상태들을 포함할 수 있는 가상 기계(108)에 대한 상태들(106)을 포함한다는 것을 도시한다. 발신 규칙 세트(106a)는 가상 기계(108)에 의해 전송되고 있는 패킷들에 적용되는 하나 이상의 규칙을 정의하며, 착신 규칙 세트(106b)는 가상 기계(108)를 위해 수신되고 있는 패킷들에 적용되는 하나 이상의 규칙을 정의한다. 패킷이 대응하는 규칙 세트 내의 규칙과 매칭될 경우, 흐름이 발신 흐름 테이블(106c) 및/또는 착신 흐름 테이블(106d) 내에 생성될 수 있다. 일부 상황들에서는 상태들(106)이 도시된 상태들의 서브세트를 포함할 수 있다는 것을 알 것이다.
일례로서, 가상 스위치(104)가 적절한 흐름 테이블(106c, 106d) 내의 흐름과 매칭되지 않는 가상 기계(108)와 관련된 네트워크 패킷을 (예로서, 물리 NIC(110)로부터 또는 호스팅되는 가상 기계로부터) 수신할 때, 가상 스위치(104)는 매칭 규칙을 찾기 위해 적절한 규칙 세트(즉, 가상 기계(108)를 위해 수신되고 있는 패킷에 대한 착신 규칙 세트(106b) 또는 가상 기계(108)에 의해 전송되고 있는 패킷에 대한 발신 규칙 세트(106a))를 검사할 수 있다. 가상 스위치(104)가 매칭 규칙을 발견하는 경우, 가상 스위치(104)는 규칙에 의해 정의되는 바와 같은 적절한 액션(예로서, 허용/차단/NAT 등)을 패킷에 대해 취할 수 있다.
가상 스위치(104)가 매칭 규칙을 발견하는 경우, 가상 스위치(104)는 또한 스트림/상황 내의 후속 패킷들을 처리하는 데 사용하기 위해 발신 흐름 테이블(106c) 및/또는 착신 흐름 테이블(106d) 내에 흐름(또는 한 쌍의 흐름)을 생성할 수 있다. 예를 들어, 패킷이 발신 규칙 세트(106a) 내의 규칙과 매칭될 경우, 가상 스위치(104)는 (발신 규칙 세트(106a)와 흐름 테이블들(106c, 106d)을 연결하는 화살표들에 의해 지시되는 바와 같이) 발신 흐름 테이블(106c) 및/또는 착신 흐름 테이블(106d) 내에 흐름을 생성할 수 있다. 대안으로서, 패킷이 착신 규칙 세트(106b) 내의 규칙과 매칭될 경우, 가상 스위치(104)는 (착신 규칙 세트(106b)와 흐름 테이블들(106c, 106d)을 연결하는 화살표들에 의해 지시되는 바와 같이) 발신 흐름 테이블(106c) 및/또는 착신 흐름 테이블(106d) 내에 흐름을 생성할 수 있다. 반대 방향의 흐름 테이블 내에 흐름들을 생성함으로써, 가상 스위치는 상태 기반 방화벽(stateful firewall)을 구현할 수 있다는 것을 알 것이다.
가상 스위치(104)는 또한 발신 흐름 테이블(106c)과 발신 흐름 캐시(112a) 사이의 점선 화살표 및 착신 흐름 테이블(106d)과 착신 흐름 캐시(112b) 사이의 점선 화살표에 의해 지시되는 바와 같이 상태 흐름(들)을 물리 NIC(110)의 가상 브리지(112)의 발신 흐름 캐시(112a) 및/또는 착신 흐름 캐시(112b)로 오프로딩할 수 있다. 예를 들어, 가상 스위치(104)는 흐름 캐시들(112a, 112b)에서의 흐름들의 생성을 요청하는 하나 이상의 요청을 데이터 경로(118)를 통해 물리 NIC(110)로 전송할 수 있다. 일부 상황들에서, 흐름 상태를 물리 NIC(110)로 오프로딩하는 것은 가상 브리지(112)가 가상 스위치(104)와 별개로 패킷 처리를 수행하는 것을 가능하게 하여, 호스트(102)에서의 프로세서 사용을 줄인다. 예를 들어, 흐름이 물리 NIC(110)로 오프로딩된 후에, 물리 NIC(110)는 동일 스트림의 후속 패킷을 (예를 들어, 가상 기계(108)로부터 데이터 경로(114)를 통해 또는 다른 컴퓨터 시스템으로부터 외부 인터페이스(126)를 통해) 수신할 수 있다. 이러한 상황에서, 가상 브리지(112)는 후속 패킷을 적절한 흐름 캐시(112a, 112b) 내의 흐름 상태에 매칭시킬 수 있으며, 패킷을 먼저 가상 스위치(104)로 전송하지 않고서, 흐름 자체에서 정의된 액션을 수행할 수 있다.
전술한 구성을 이용하여, 가상 기계(108)는 가상 기능 드라이버(108c)를 이용하여 발신 네트워크 패킷을 데이터 경로(114)를 통해 물리 NIC(110)의 가상 기능(120)으로 전송할 수 있다. 네트워크 패킷의 수신 시에, 가상 브리지(112)는 매칭 흐름을 찾기 위해 발신 흐름 캐시(112a)를 검색한다. 가상 브리지(112)가 발신 흐름 캐시(112a) 내에서 매칭 흐름을 발견하는 경우, 가상 브리지(112)는 흐름에 정의된 액션을 취한다. 예를 들어, 가상 브리지(112)는 패킷 조작 동작을 수행할 수 있고/있거나, 네트워크 패킷을 목적지 가상 기계로 또는 외부 인터페이스(126)를 통해 다른 컴퓨터 시스템으로 전송할 수 있다.
이와 달리, 가상 브리지(112)가 발신 흐름 캐시(112a) 내에서 매칭 흐름을 발견하지 못하는 경우, 2개의 대안 액션이 발생할 수 있다. 제1 실시예에서, 가상 브리지(112)는 네트워크 패킷을 (예를 들어, 데이터 경로(114)를 통해) 가상 기계(108)로 반환(rejection)한다. 이어서, 가상 기계(108)는 네트워크 패킷을 가상 버스(116)를 통해 가상 스위치(104)로 전송한다. 제2 실시예에서, 가상 브리지(112)는 물리 기능(122)을 이용하여 네트워크 패킷을 데이터 경로(118)를 통해 물리 기능 드라이버(124)로 전송한다. 이어서, 물리 기능 드라이버(124)는 네트워크 패킷을 가상 스위치(104)로 라우팅한다. 어느 실시예에서나, 가상 스위치(104)가 네트워크 패킷을 수신한 후, 가상 스위치(104)는 네트워크 패킷을 발신 흐름 테이블(106c) 내의 흐름에 매칭시키려고 시도한다. 네트워크 패킷이 발신 흐름 테이블(106c) 내의 흐름과 매칭되지 않는 경우, 가상 스위치(104)는 네트워크 패킷을 발신 규칙 세트(106a) 내의 규칙에 매칭시키려고 시도한다. 발신 규칙 세트(106a)에서 매칭 규칙이 발견되는 경우, 가상 스위치(104)는 매칭 규칙에 의해 정의된 바와 같은 적절한 액션(예로서, 허용/차단/NAT 등)을 취하며, 흐름 테이블들(106c/106d) 중 하나 또는 양자에서 그리고 아마도 흐름 캐시들(112a/112b) 중 하나 또는 양자에서 하나 이상의 흐름을 생성할 수 있다.
또한, 전술한 구성을 이용하여, 물리 NIC(110)는 (예로서, 다른 가상 기계로부터 대응하는 가상 기능을 통해 또는 다른 컴퓨터 시스템으로부터 외부 인터페이스(126)를 통해) 가상 기계(108)를 위해 착신 네트워크 패킷을 수신할 수 있다. 네트워크 패킷의 수신 시에, 가상 브리지(112)는 매칭 흐름을 찾기 위해 착신 흐름 캐시(112b)를 검색한다. 가상 브리지(112)가 착신 흐름 캐시(112b) 내에서 매칭 흐름을 발견하는 경우, 가상 브리지(112)는 흐름에 정의된 적절한 액션(예로서, 허용/차단/NAT 등)을 취한다. 예를 들어, 가상 브리지(112)는 가상 기능(120) 및 데이터 경로(114)를 이용하여, 패킷을 가상 기계(108)의 가상 기능 드라이버(108c)로 전송할 수 있다. 가상 브리지(112)가 착신 흐름 캐시(112b) 내에서 매칭 흐름을 발견하지 못하는 경우, 가상 브리지(112)는 물리 기능(122) 및 데이터 경로(118) 또는 가상 기능(120) 및 데이터 경로(114)를 이용하여 패킷을 호스트(102)의 가상 스위치(104)로 전송한다. 이어서, 가상 스위치(104)는 발신 네트워크 패킷과 관련하여 전술한 바와 같이 패킷을 처리한다.
발신 흐름 캐시(112a) 및 착신 흐름 캐시(112b)는 전체 흐름 테이블들(즉, 발신 흐름 테이블(106c) 및 착신 흐름 테이블(106d))의 일부 또는 서브세트만을 나타낼 수 있다는 것을 알 것이다. 예를 들어, 물리 NIC(110)는 비용 또는 다른 설계 제약들로 인해 한정된 메모리를 가질 수 있다. 따라서, 흐름 캐시들(112a/112b) 내에 흐름 테이블들(106c/106d)의 일부만을 저장하는 것은 흐름 테이블들을 물리 NIC(110)로 오프로딩하는 데 필요한 메모리의 양을 줄인다. 발신 흐름 캐시(112a) 및 착신 흐름 캐시(112b)는 전체 흐름 상태 데이터를 포함하지 않을 수 있으므로, 가상 브리지(112)에서 패킷을 처리할 때 캐시 미스가 발생할 수 있다. 캐시 미스가 발생할 때, 가상 브리지(112)는 추가 처리를 위해 패킷을 가상 스위치(104)로 전송한다. 상이한 종류의 캐시 대체/재생 정책들이 이용될 수 있다는 것을 알 것이다. 예를 들어, 캐시 미스가 발생한 후에 흐름 상태가 물리 NIC(110) 상에 배치될 수 있고, 사전 정의된 양의 비활성화 후에 물리 NIC(110)로부터 엔트리들이 실효될 수 있으며, 기타 등등일 수 있다.
게다가, 일부 실시예들에서는, 소정 타입의 흐름들만이 물리 NIC(110)에 저장된다. 예를 들어, 가상 브리지(112)는 제한된 타입의 동작들/액션들의 수행만을 지원할 수 있다. 따라서, 가상 브리지(112)에 의해 지원되는 동작들/액션들과 관련된 흐름들만이 물리 NIC(110)에 저장될 수 있다. 이러한 실시예들에서는, 임의의 추가적인 동작들/액션들이 가상 스위치(104)에 처리된다.
도 2는 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 예시적인 방법(200)의 흐름도를 나타낸다. 방법(200)은 컴퓨터 아키텍처(100)의 컴포넌트들 및 데이터와 관련하여 설명된다.
방법(200)은 호스트 파티션 내의 가상 스위치가 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계(단계 202)를 포함한다. 예를 들어, 호스트(102)의 가상 스위치(104)는 가상 기계(108)에 대한 상태들(106)을 유지할 수 있다. 상태들(106)은 가상 기계(108)에 대한 발신 규칙 세트(106a) 또는 가상 기계(108)에 대한 착신 규칙 세트(106b) 중 하나 또는 양자를 포함할 수 있다. 상태들(106)은 발신 흐름 테이블(106c) 및 착신 흐름 테이블(106d)과 같은 가상 기계(108)에 대한 하나 이상의 테이블도 포함할 수 있다. 도시되지 않았지만, 가상 스위치(104)는 다른 추가적인 가상 기계들에 대한 상태들(예로서, 규칙 세트들, 흐름 테이블들 등)을 저장할 수 있다.
방법(200)은 물리 NIC가 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계(단계 204)도 포함한다. 예를 들어, 물리 NIC(110)는 가상 기계(208)에 대한 발신 흐름 캐시(112a) 및/또는 착신 흐름 캐시(112b)를 저장할 수 있다. 흐름 캐시들은 호스트(102)에서의 임의의 흐름 테이블들의 전부 또는 일부만을 포함할 수 있다. 도시되지 않았지만, 물리 NIC(110)는 다른 추가적인 가상 기계들에 대한 흐름 테이블들을 저장할 수 있다.
방법(200)은 물리 NIC가 가상 기계와 관련된 네트워크 패킷을 수신하는 단계(단계 206)도 포함한다. 예를 들어, 물리 NIC는 다른 컴퓨터 시스템으로부터 외부 인터페이스(126)를 통해 네트워크 패킷을 수신할 수 있거나, 가상 기계(108)로부터 가상 기능(120)을 통해 네트워크 패킷을 수신할 수 있거나, 호스트(220)의 다른 가상 기계로부터 그 가상 기계와 관련된 다른 가상 기능을 통해 네트워크 패킷을 수신할 수 있다.
방법(200)은 가상 기계에 대한 네트워크 패킷을 처리하는 단계(단계 208)도 포함한다. 예를 들어, 가상 브리지(112)는 가상 기계(108)로부터 수신되거나 가상 기계(108)를 위해 수신된(즉, 가상 기계(108)에 의해 네트워크 패킷이 수신됨) 네트워크 패킷을 처리할 수 있다.
단계 208은 물리 NIC가 네트워크 패킷과 하나 이상의 흐름 테이블을 비교하는 단계(단계 210)를 포함한다. 예를 들어, 가상 브리지(112)는 네트워크 패킷이 가상 기계(108)에 의해 전송되는 경우에 네트워크 패킷과 발신 흐름 캐시(112a)를 비교할 수 있거나, 가상 브리지(112)는 네트워크 패킷이 가상 기계(108)를 위해 수신되는 경우에 네트워크 패킷과 착신 흐름 캐시(112b)를 비교할 수 있다.
단계 208은 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭될 경우 물리 NIC가 매칭 흐름에 기초하여 네트워크 패킷에 대해 액션을 수행하는 단계(단계 212)도 포함한다. 예를 들어, 네트워크 패킷이 발신 흐름 캐시(112a) 또는 착신 흐름 캐시(112b) 내의 흐름과 매칭될 경우, 가상 브리지(112)는 흐름에서 지정된 액션(예로서, 허용, 반환, NAT 등)을 수행할 수 있다.
단계 208은 네트워크 패킷이 하나 이상의 흐름 테이블 내의 흐름과 매칭되지 않을 경우 물리 NIC가 하나 이상의 규칙 세트에 대한 처리를 위해 네트워크 패킷을 호스트로 전송하는 단계(단계 214)도 포함한다. 예를 들어, 네트워크 패킷이 발신 흐름 캐시(112a) 또는 착신 흐름 캐시(112b) 내의 흐름과 매칭되지 않는 경우, 가상 브리지(112)는 추가 처리를 위해 패킷을 호스트(102)의 가상 스위치(104)로 전송할 수 있다. 일부 실시예들에서, 가상 브리지(112)는 물리 기능(122) 및 데이터 경로(118)를 이용하여 네트워크 패킷을 직접 호스트(102)로 전송한다. 다른 실시예들에서, 가상 브리지(112)는 가상 기능(120) 및 데이터 경로(114)를 이용하여 (즉, 가상 기계(108)를 통해 그리고 가상 버스(116)를 통해) 네트워크 패킷을 간접적으로 호스트(102)로 전송한다.
수신 시에, 호스트(102)는 네트워크 패킷을 가상 스위치(104)로 전송할 수 있다. 이어서, 가상 스위치(104)는 네트워크 패킷을 상태(106)(즉, 흐름 테이블들, 규칙 세트들)와 비교하고, 임의의 적절한 액션을 취할 수 있다. 예를 들어, 네트워크 패킷이 호스트(102)에서의 흐름과 매칭되는 경우, 가상 스위치(104)는 적절한 액션(예로서, 허용, 반환, NAT 등)을 취하고, 아마도 물리 NIC(110)에서 흐름 캐시를 갱신할 수 있다. 네트워크 패킷이 호스트(102)에서의 흐름과 매칭되지 않는 경우(또는, 적절한 흐름이 존재하지 않는 경우), 가상 스위치(104)는 네트워크 패킷을 적절한 규칙 세트와 비교하고, 임의의 매칭 규칙에서 지정된 바와 같은 적절한 액션을 취하고, 아마도 (예를 들어, 상태들(206) 및 물리 NIC(110)에서) 하나 이상의 새로운 흐름을 생성할 수 있다.
도 3은 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷들을 처리하기 위한 다른 예시적인 방법(300)의 흐름도를 나타낸다. 방법(300)은 컴퓨터 아키텍처(100)의 컴포넌트들 및 데이터와 관련하여 설명된다.
방법(300)은 호스트 파티션 내의 가상 스위치가 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계(단계 302)를 포함한다. 예를 들어, 호스트(102)의 가상 스위치(104)는 가상 기계(108)에 대한 상태들(106)을 유지할 수 있다. 상태들(106)은 가상 기계(108)에 대한 발신 규칙 세트(106a) 또는 가상 기계(108)에 대한 착신 규칙 세트(106b) 중 하나 또는 양자를 포함할 수 있다.
방법(300)은 가상 스위치가 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계(단계 304)도 포함한다. 예를 들어, 상태들은 가상 기계(108)에 대한 발신 흐름 테이블(106c) 또는 가상 기계(108)에 대한 착신 흐름 테이블(106d) 중 하나 또는 양자를 포함할 수 있다.
방법(300)은 가상 스위치가 하나 이상의 흐름 테이블 중 적어도 일부를 물리 NIC로 오프로딩하는 단계(단계 306)도 포함한다. 예를 들어, 가상 스위치(104)는 하나 이상의 흐름을 발신 흐름 테이블(106c)로부터 발신 흐름 캐시(112a)로 오프로딩할 수 있다. 추가로 또는 대안으로서, 가상 스위치(104)는 하나 이상의 흐름을 착신 흐름 테이블(106d)로부터 착신 흐름 캐시(112b)로 오프로딩할 수 있다.
방법(300)은 가상 스위치가 가상 기계에 대한 네트워크 패킷을 처리하는 단계(단계 308)도 포함한다. 예를 들어, 가상 스위치(104)는 가상 기계(108)로부터 또는 그를 위해 수신된 네트워크 패킷을 처리할 수 있다.
단계 308은 가상 스위치가 가상 기계 또는 물리 NIC 중 하나로부터 네트워크 패킷을 수신하는 단계(단계 310)를 포함한다. 예를 들어, 가상 스위치(104)는 가상 기계(108)로부터 가상 버스(216)를 통해 또는 물리 NIC(110)로부터 데이터 경로(118)(및 물리 기능 드라이버(124)를 통해 네트워크 패킷을 수신할 수 있다.
단계 308은 가상 스위치가 네트워크 패킷을 하나 이상의 규칙 세트 내의 규칙과 매칭시키는 단계(단계 312)도 포함한다. 예를 들어, 네트워크 패킷이 가상 기계(108)에 의해 전송되는 경우, 가상 스위치(104)는 패킷을 발신 규칙 세트(106a)에 대해 매칭시킬 수 있다. 대안으로서, 네트워크 패킷이 가상 기계(108)를 위해 수신되는 경우, 가상 스위치(104)는 패킷을 착신 규칙 세트(106b)에 대해 매칭시킬 수 있다.
단계 308은 네트워크 패킷과 규칙의 매칭에 기초하여, 가상 스위치가 하나 이상의 흐름 테이블 내에 흐름을 생성하는 단계(단계 314)도 포함한다. 예를 들어, 네트워크 패킷을 발신 규칙 세트(106a) 또는 착신 규칙 세트(106b) 내의 규칙과 매칭시킨 후, 가상 스위치는 발신 흐름 테이블(106c) 및/또는 착신 흐름 테이블(106d) 내의 규칙에 기초하여 하나 이상의 흐름을 생성할 수 있다.
단계 308은 네트워크 패킷과 규칙의 매칭에 기초하여, 가상 스위치가 흐름을 물리 NIC로 오프로딩하는 단계(단계 316)도 포함한다. 예를 들어, 매칭 규칙에 기초하여, 가상 스위치(104)는 흐름을 발신 흐름 캐시(112a) 및/또는 착신 흐름 캐시(112b)로 오프로딩할 수 있다.
도 4는 네트워킹 장치 가상화를 위한 물리 NIC로의 패킷 처리 오프로딩을 용이하게 하고, 컴퓨터 아키텍처(100)에 대한 하나 이상의 잠재적 최적화를 제공하는 다른 컴퓨터 아키텍처(400)를 나타낸다. 일부 실시예들에서, 컴퓨터 아키텍처(400)는 컴퓨터 아키텍처(100)와 결합될 수 있다. 도시된 바와 같이, 컴퓨터 아키텍처(400)는 컴퓨터 아키텍처(100)의 컴포넌트들과 유사한 컴포넌트들, 예로서 호스트(402), 가상 기계(408) 및 물리 NIC(410)를 포함한다. 그러나, 컴퓨터 아키텍처(400)에서, 가상 기계(408)의 가상 NIC 드라이버(408b)는 발신 흐름 리스트(408d)를 포함한다. 따라서, 가상 NIC 드라이버(408b)는 발신 흐름들의 일부 또는 전부에 대한 정보를 유지한다. 따라서, 가상 기능 드라이버(408c)를 이용하여 네트워크 패킷을 가상 기능(420)으로 전송하기 전에도, 가상 NIC 드라이버(408b)는 발신 흐름 리스트(408d)를 이용하여 네트워크 패킷이 발신 흐름과 매칭되는지를 결정할 수 있다. 매치가 발견되는 경우, 네트워크 패킷은 발신 흐름 캐시(412a) 내의 흐름과도 (흐름이 물리 NIC(410)로 오프로딩된 경우) 매칭될 수 있다. 발신 흐름 리스트(408d)에 기초하여 패킷이 흐름과 매칭되지 않을 경우, 가상 NIC 드라이버(408b)는 패킷을 먼저 물리 NIC(410)로 전송하지 않고서 패킷을 가상 스위치(404)로 직접 전송할 수 있다.
일부 상황들에서, 가상 기계(408)는 신뢰되지 않는 엔티티일 수 있다. 따라서, 패킷이 궁극적으로 목적지로 전송될 수 있는지의 여부가 여전히 물리 NIC(410)의 가상 브리지(412) 및/또는 가상 스위치(404)에 의해 결정된다. 예를 들어, 흐름이 발신 흐름 리스트(408d) 내에 존재하고, 가상 기계(408)가 네트워크 패킷을 물리 NIC(410)로 전송하는 경우에도, 가상 브리지(412)는 여전히 발신 흐름 캐시(412a)에 대해 패킷을 검증한다.
일부 실시예들에서는, 발신 흐름 리스트(408d) 내에 발신 흐름들의 일부만을 저장하는 것이 바람직할 수 있다. 예를 들어, 발신 흐름들 내의 소정의 정보(예로서, NAT에 사용되는 IP 주소들)는 비밀일 수 있고, 지시된 바와 같이 가상 기계(408)는 신뢰되지 않은 엔티티일 수 있다. 따라서, 발신 흐름 리스트(408d)는 액션 정보를 갖지 않는 흐름의 리스트(즉, 패킷을 흐름과 매칭시키는 데 사용되는 조건부 정보)를 포함할 수 있다. 따라서, 발신 흐름 리스트(408d)는 가상 NIC 드라이버(408b)가 패킷을 물리 NIC(410)로 또는 호스트(402)로 전송할지를 결정하는 것을 가능하게 하기에 충분한 정보만을 제공할 수 있다.
도 5는 예시적인 다중 계층 가상 스위치의 계층들을 포함하는 예시적인 컴퓨터 아키텍처(500)를 나타낸다. 예를 들어, 가상 스위치(104)는 각각의 가상 기계에 대한 규칙들 및 흐름들의 계층들을 포함할 수 있다. 각각의 도시된 계층은 규칙 세트들 및 흐름 테이블들의 독립 세트를 포함한다. 도시된 바와 같이, 계층들은 계층(502) 및 계층(504)을 포함할 수 있다. 네트워크 패킷들은 네트워크 패킷이 전송되고 있는지 또는 수신되고 있는지에 기초하여 2개의 방향 중 하나의 방향으로 계층들을 가로지른다. 예를 들어, 네트워크 패킷이 가상 기계를 위해 수신되고 있을 때, 패킷은 계층들을 하부 계층으로부터 위로 (즉, 화살표 506으로 지시되는 바와 같이 계층(504)으로부터 계층(502)으로) 가로지를 수 있다. 이와 달리, 네트워크 패킷이 가상 기계로부터 전송되고 있을 때, 패킷은 계층들을 상부 계층으로부터 아래로 (즉, 화살표 508로 지시되는 바와 같이 계층(502)으로부터 계층(504)으로) 가로지를 수 있다.
일부 실시예들에서, 각각의 계층은 네트워크 패킷을 그 자신의 흐름/규칙 세트와 매칭시키며, 패킷을 다음 계층으로 전송하기 전에 임의의 적절한 액션을 취한다. 예를 들어, 계층(504)에서 패킷이 캡슐화 해제된 후에, 계층(502)에서 패킷에 대해 NAT 동작이 수행될 수 있다. 일부 실시예들에서, "차단" 액션이 취해지는 경우, 패킷은 계층들을 가로지르는 것을 중단하고, 폐기된다. 가상 스위치(104)가 흐름 테이블들의 계층들을 포함할 수 있지만, 이러한 흐름들은 통상적으로 물리 NIC(110)로 오프로딩될 때 평면적으로 저장된다.
따라서, 본 발명은 흐름들이 물리 NIC로 오프로딩되는 것을 가능하게 하는 범용 규칙 및 흐름 모델을 제공한다. 흐름들의 오프로딩은 소정의 패킷 처리가 물리 NIC에서 수행되는 것을 가능하게 하며, 처리를 위해 일부 패킷들을 호스트의 가상 스위치로 전송할 필요성을 없앤다. 따라서, 본 발명은 가상 기계들에 대한 네트워크 패킷들의 처리와 관련된 CPU 사용 및 지연을 줄일 수 있다.
본 발명은 본 발명의 사상 또는 본질적인 특성들로부터 벗어나지 않으면서 다른 특정 형태들로 구현될 수 있다. 설명된 실시예들은 모든 측면에서 한정이 아닌 예시적인 것으로 간주되어야 한다. 따라서, 본 발명의 범위는 위의 설명이 아니라 첨부된 청구범위에 의해 지시된다. 청구범위의 균등론의 의미 및 범위 내에 속하는 모든 변경들은 청구범위 내에 포괄되어야 한다.

Claims (10)

  1. 하나 이상의 프로세서 및 시스템 메모리를 포함하고, 또한 물리 네트워크 인터페이스 카드(NIC)를 포함하고, 호스트 파티션을 실행하는 컴퓨터 시스템에서, 상기 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷을 처리하기 위한 방법으로서,
    상기 호스트 파티션이 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계와,
    상기 물리 NIC가 상기 가상 기계에 대한 하나 이상의 흐름 테이블(flow table)을 유지하는 단계와,
    상기 물리 NIC가 상기 가상 기계와 관련된 네트워크 패킷을 수신하는 단계와,
    상기 가상 기계에 대한 상기 네트워크 패킷을 처리하는 단계
    를 포함하고,
    상기 가상 기계에 대한 상기 네트워크 패킷을 처리하는 단계는
    상기 물리 NIC가 상기 네트워크 패킷과 상기 하나 이상의 흐름 테이블을 비교하는 단계와,
    상기 네트워크 패킷이 상기 하나 이상의 흐름 테이블 내의 흐름과 매칭될 경우, 상기 물리 NIC가 상기 매칭되는 흐름에 기초하여 상기 네트워크 패킷에 대해 액션을 수행하는 단계, 또는
    상기 네트워크 패킷이 상기 하나 이상의 흐름 테이블 내의 흐름과 매칭되지 않을 경우, 상기 물리 NIC가 상기 하나 이상의 규칙 세트에 대한 처리를 위해 상기 네트워크 패킷을 상기 호스트 파티션으로 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 네트워크 패킷이 상기 하나 이상의 흐름 테이블 내의 흐름과 매칭되지 않을 경우, 상기 호스트 파티션이 상기 네트워크 패킷과 상기 하나 이상의 규칙 세트를 비교하는 단계를 더 포함하는
    방법.
  3. 제2항에 있어서,
    상기 네트워크 패킷이 상기 하나 이상의 규칙 세트 내의 규칙과 매칭될 경우, 상기 호스트 파티션이 상기 매칭되는 규칙에 기초하여 상기 네트워크 패킷에 대해 액션을 수행하는 단계를 더 포함하는
    방법.
  4. 제3항에 있어서,
    상기 네트워크 패킷이 상기 하나 이상의 규칙 세트 내의 규칙과 매칭될 경우, 상기 호스트 파티션이 상기 하나 이상의 흐름 테이블 내에 상기 물리 NIC에서의 하나 이상의 흐름을 생성하는 단계를 더 포함하는
    방법.
  5. 제1항에 있어서,
    상기 호스트 파티션이 상기 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계를 더 포함하고, 상기 물리 NIC에 유지되는 상기 하나 이상의 흐름 테이블은 상기 호스트 파티션에 유지되는 상기 하나 이상의 흐름 테이블의 서브세트를 포함하는
    방법.
  6. 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템이 상기 컴퓨터 시스템에서 실행되는 가상 기계에 대한 네트워크 패킷을 처리하기 위한 방법을 구현하게 하는 컴퓨터 실행 가능 명령어를 저장한 하나 이상의 컴퓨터 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 방법은
    가상 스위치가 가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 단계와,
    상기 가상 스위치가 상기 가상 기계에 대한 하나 이상의 흐름 테이블을 유지하는 단계와,
    상기 가상 스위치가 상기 하나 이상의 흐름 테이블의 적어도 일부를 물리 NIC로 오프로딩하는 단계와,
    상기 가상 스위치가 상기 가상 기계에 대한 네트워크 패킷을 처리하는 단계
    를 포함하고,
    상기 가상 스위치가 상기 가상 기계에 대한 네트워크 패킷을 처리하는 단계는
    상기 가상 스위치가 상기 가상 기계 및 상기 물리 NIC 중 하나로부터 상기 네트워크 패킷을 수신하는 단계와,
    상기 가상 스위치가 상기 네트워크 패킷을 상기 하나 이상의 규칙 세트 내의 규칙과 매칭시키는 단계와,
    상기 네트워크 패킷과 상기 규칙의 매칭에 기초하여:
    상기 가상 스위치가 상기 하나 이상의 흐름 테이블 내에 흐름을 생성하는 단계와,
    상기 가상 스위치가 상기 흐름을 상기 물리 NIC로 오프로딩하는 단계
    를 포함하는 컴퓨터 프로그램 제품.
  7. 제6항에 있어서,
    가상 기계에 대한 하나 이상의 규칙 세트를 유지하는 상기 단계는 착신 규칙 세트 및 발신 규칙 세트를 유지하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  8. 제6항에 있어서,
    상기 가상 스위치가 상기 가상 기계에 대한 네트워크 패킷을 처리하는 상기 단계는 또한 상기 가상 스위치가 상기 규칙에 기초하여 상기 네트워크 패킷에 대해 적어도 하나의 액션을 수행하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  9. 제8항에 있어서,
    상기 적어도 하나의 액션은 패킷 검사 및 패킷 조작 동작 중 하나 이상을 포함하는
    컴퓨터 프로그램 제품.
  10. 컴퓨터 시스템으로서,
    하나 이상의 프로세서와,
    시스템 메모리와,
    물리 네트워크 인터페이스 카드(NIC)와,
    상기 하나 이상의 프로세서에 의해 실행될 때 가상 스위치를 실행하는 컴퓨터 실행 가능 명령어를 저장한 하나 이상의 컴퓨터 저장 매체
    를 포함하고,
    상기 가상 스위치는
    상기 컴퓨터 시스템의 호스트 파티션 내에서 실행되고,
    가상 기계에 대한 착신 규칙 세트 및 발신 규칙 세트를 유지하고,
    상기 가상 기계에 대한 착신 흐름 테이블 및 발신 흐름 테이블을 유지하고,
    상기 착신 흐름 테이블 및 상기 발신 테이블 중 하나 이상의 테이블의 적어도 일부를 상기 물리 NIC의 가상 브리지로 오프로딩하고,
    상기 가상 기계에 대한 네트워크 패킷을 처리하도록 구성되고,
    상기 가상 기계에 대한 네트워크 패킷을 처리하는 것은
    상기 가상 기계 및 상기 물리 NIC 중 하나 이상으로부터 상기 네트워크 패킷을 수신하고,
    상기 네트워크 패킷을 상기 착신 규칙 세트 및 상기 발신 규칙 세트 중 하나 내의 규칙과 매칭시키고,
    상기 네트워크 패킷과 상기 규칙의 매칭에 기초하여:
    상기 가상 스위치에서 상기 착신 흐름 테이블 및 상기 발신 흐름 테이블 중 하나 이상 내에 흐름을 생성하고,
    상기 물리 NIC의 상기 가상 브리지에서 상기 흐름을 상기 착신 흐름 테이블 및 상기 발신 테이블 중 하나 이상으로 오프로딩하는 것
    을 포함하는 컴퓨터 시스템.
KR1020147026247A 2012-03-21 2013-03-06 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법 KR101969194B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261613824P 2012-03-21 2012-03-21
US61/613,824 2012-03-21
US13/551,064 2012-07-17
US13/551,064 US8930690B2 (en) 2012-03-21 2012-07-17 Offloading packet processing for networking device virtualization
PCT/US2013/029222 WO2013142041A1 (en) 2012-03-21 2013-03-06 Offloading packet processing for networking device virtualization

Publications (2)

Publication Number Publication Date
KR20140143155A true KR20140143155A (ko) 2014-12-15
KR101969194B1 KR101969194B1 (ko) 2019-08-13

Family

ID=49213566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147026247A KR101969194B1 (ko) 2012-03-21 2013-03-06 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법

Country Status (7)

Country Link
US (1) US8930690B2 (ko)
EP (1) EP2828760B1 (ko)
JP (1) JP6254574B2 (ko)
KR (1) KR101969194B1 (ko)
CN (1) CN104205080B (ko)
ES (1) ES2720759T3 (ko)
WO (1) WO2013142041A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170049175A (ko) * 2015-10-28 2017-05-10 에스케이텔레콤 주식회사 네트워크 기능 가상화 운영 장치 및 방법
KR102217114B1 (ko) * 2020-07-24 2021-02-18 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
KR20220071858A (ko) * 2020-11-24 2022-05-31 한국과학기술원 네트워크 및 파일 입출력 연산 오프로딩 방법, 연산 오프로딩 시스템 및 컴퓨터 판독 가능 기록매체
KR102420610B1 (ko) * 2021-11-19 2022-07-13 넷록스 주식회사 다층 캐싱 전략을 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5691062B2 (ja) * 2011-04-04 2015-04-01 株式会社日立製作所 仮想計算機の制御方法及び管理計算機
US9432304B2 (en) 2012-03-26 2016-08-30 Oracle International Corporation System and method for supporting live migration of virtual machines based on an extended host channel adaptor (HCA) model
EP2845398B1 (en) * 2012-05-02 2020-01-01 Nokia Solutions and Networks Oy Methods and apparatus
US9565213B2 (en) 2012-10-22 2017-02-07 Centripetal Networks, Inc. Methods and systems for protecting a secured network
US9137205B2 (en) 2012-10-22 2015-09-15 Centripetal Networks, Inc. Methods and systems for protecting a secured network
US9203806B2 (en) 2013-01-11 2015-12-01 Centripetal Networks, Inc. Rule swapping in a packet network
US9124552B2 (en) 2013-03-12 2015-09-01 Centripetal Networks, Inc. Filtering network data transfers
US9990221B2 (en) 2013-03-15 2018-06-05 Oracle International Corporation System and method for providing an infiniband SR-IOV vSwitch architecture for a high performance cloud computing environment
US10051054B2 (en) * 2013-03-15 2018-08-14 Oracle International Corporation System and method for efficient virtualization in lossless interconnection networks
US9094445B2 (en) 2013-03-15 2015-07-28 Centripetal Networks, Inc. Protecting networks from cyber attacks and overloading
US20150012606A1 (en) * 2013-07-02 2015-01-08 Dell Products, Lp System and Method to Trap Virtual Functions of a Network Interface Device for Remote Direct Memory Access
US9781041B2 (en) * 2013-07-24 2017-10-03 Dell Products Lp Systems and methods for native network interface controller (NIC) teaming load balancing
CN104753885B (zh) 2013-12-30 2018-06-26 杭州华为数字技术有限公司 一种流表匹配的方法、装置和OpenFlow交换系统
US10397105B2 (en) * 2014-03-26 2019-08-27 Oracle International Corporation System and method for scalable multi-homed routing for vSwitch based HCA virtualization
US10261817B2 (en) * 2014-07-29 2019-04-16 Nxp Usa, Inc. System on a chip and method for a controller supported virtual machine monitor
US10237354B2 (en) * 2014-09-25 2019-03-19 Intel Corporation Technologies for offloading a virtual service endpoint to a network interface card
WO2016099528A1 (en) * 2014-12-19 2016-06-23 Hewlett Packard Enterprise Development Lp Multicast advertisement message for a network switch in a storage area network
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US9264370B1 (en) 2015-02-10 2016-02-16 Centripetal Networks, Inc. Correlating packets in communications networks
US9866576B2 (en) 2015-04-17 2018-01-09 Centripetal Networks, Inc. Rule-based network-threat detection
US10356012B2 (en) * 2015-08-20 2019-07-16 Intel Corporation Techniques for routing packets among virtual machines
US10558482B1 (en) 2015-09-30 2020-02-11 Amazon Technologies, Inc. Client network instances for resources in provider network environments
US10298720B1 (en) 2015-12-07 2019-05-21 Amazon Technologies, Inc. Client-defined rules in provider network environments
US9912774B2 (en) * 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US9917856B2 (en) 2015-12-23 2018-03-13 Centripetal Networks, Inc. Rule-based network-threat detection for encrypted communications
US11729144B2 (en) 2016-01-04 2023-08-15 Centripetal Networks, Llc Efficient packet capture for cyber threat analysis
EP3694159A1 (en) * 2016-08-03 2020-08-12 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
EP3340064B1 (en) * 2016-08-03 2020-12-02 Huawei Technologies Co., Ltd. Network interface card, computer device and data packet processing method
US10193968B2 (en) 2016-10-14 2019-01-29 Google Llc Virtual router with dynamic flow offload capability
US10516728B2 (en) * 2017-03-10 2019-12-24 Microsoft Technology Licensing, Llc Virtual filtering platform in distributed computing systems
CA3066826C (en) * 2017-06-30 2023-06-27 Huawei Technologies Co., Ltd. Network data processing method, network interface card, and server
US10503899B2 (en) 2017-07-10 2019-12-10 Centripetal Networks, Inc. Cyberanalysis workflow acceleration
US11233777B2 (en) 2017-07-24 2022-01-25 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US10284526B2 (en) 2017-07-24 2019-05-07 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US10547553B2 (en) * 2017-09-17 2020-01-28 Mellanox Technologies, Ltd. Stateful connection tracking
US10637828B2 (en) * 2017-09-17 2020-04-28 Mellanox Technologies, Ltd. NIC with stateful connection tracking
US10382346B2 (en) 2017-10-24 2019-08-13 Cisco Technology, Inc. Method and device for offloading processing of data flows
CN109962832B (zh) * 2017-12-26 2022-06-14 华为技术有限公司 报文处理的方法和装置
CN110324245B (zh) 2018-03-31 2021-03-23 华为技术有限公司 一种基于集成流表转发报文的方法及装置
US10333898B1 (en) 2018-07-09 2019-06-25 Centripetal Networks, Inc. Methods and systems for efficient network protection
US10834044B2 (en) * 2018-09-19 2020-11-10 Amazon Technologies, Inc. Domain name system operations implemented using scalable virtual traffic hub
US10831523B2 (en) * 2018-10-08 2020-11-10 Microsoft Technology Licensing, Llc RDMA with virtual address space
WO2020121294A1 (en) * 2018-12-10 2020-06-18 Drivenets Ltd. A system and a method for monitoring traffic flows in a communications network
CN110149231B (zh) * 2019-05-21 2022-05-31 优刻得科技股份有限公司 更新虚拟交换机的方法、装置、存储介质和设备
US11436053B2 (en) 2019-05-24 2022-09-06 Microsoft Technology Licensing, Llc Third-party hardware integration in virtual networks
CN112019431B (zh) * 2019-05-29 2023-04-18 阿里巴巴集团控股有限公司 一种转发规则的处理方法、装置及设备
US11042392B2 (en) 2019-06-14 2021-06-22 Microsoft Technology Licensing, Llc Network policy and flow state save/restore for highly available servicing
US11398987B2 (en) 2019-07-23 2022-07-26 Vmware, Inc. Host-based flow aggregation
US11743135B2 (en) 2019-07-23 2023-08-29 Vmware, Inc. Presenting data regarding grouped flows
US11340931B2 (en) * 2019-07-23 2022-05-24 Vmware, Inc. Recommendation generation based on selection of selectable elements of visual representation
US11436075B2 (en) 2019-07-23 2022-09-06 Vmware, Inc. Offloading anomaly detection from server to host
US11349876B2 (en) * 2019-07-23 2022-05-31 Vmware, Inc. Security policy recommendation generation
LU101361B1 (en) * 2019-08-26 2021-03-11 Microsoft Technology Licensing Llc Computer device including nested network interface controller switches
US11831663B2 (en) * 2019-10-10 2023-11-28 Intel Corporation Secure networking protocol optimization via NIC hardware offloading
US11321213B2 (en) 2020-01-16 2022-05-03 Vmware, Inc. Correlation key used to correlate flow and con text data
CN113285892A (zh) * 2020-02-20 2021-08-20 华为技术有限公司 报文处理系统、方法、机器可读存储介质以及程序产品
US11474857B1 (en) * 2020-05-06 2022-10-18 Amazon Technologies, Inc. Accelerated migration of compute instances using offload cards
US11934330B2 (en) * 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11740919B2 (en) * 2020-05-18 2023-08-29 Dell Products L.P. System and method for hardware offloading of nested virtual switches
US11811559B2 (en) * 2020-07-21 2023-11-07 Vmware, Inc. Logical network packet handling on physical network interface controller (PNIC)
US20230195482A1 (en) * 2020-07-21 2023-06-22 Vmware, Inc. Offloading Packet Processing Programs from Virtual Machines to a Hypervisor and Efficiently Executing the Offloaded Packet Processing Programs
US11750532B2 (en) 2020-07-21 2023-09-05 Vmware, Inc. Logical network packet handling on physical network interface controller (PNIC)
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11362996B2 (en) 2020-10-27 2022-06-14 Centripetal Networks, Inc. Methods and systems for efficient adaptive logging of cyber threat incidents
CN116866283A (zh) * 2020-10-31 2023-10-10 华为技术有限公司 一种流表处理方法及相关设备
US11363119B1 (en) 2020-12-03 2022-06-14 Wormhole Labs, Inc. Remote processing of augmented reality workloads
US11785032B2 (en) 2021-01-22 2023-10-10 Vmware, Inc. Security threat detection based on network flow analysis
US11991187B2 (en) 2021-01-22 2024-05-21 VMware LLC Security threat detection based on network flow analysis
CN114979028B (zh) * 2021-02-26 2024-02-23 中移(苏州)软件技术有限公司 一种数据包处理方法、装置以及存储介质
US11601365B2 (en) * 2021-03-30 2023-03-07 Amazon Technologies, Inc. Wide area networking service using provider network backbone network
US11824773B2 (en) 2021-03-30 2023-11-21 Amazon Technologies, Inc. Dynamic routing for peered virtual routers
US11159546B1 (en) 2021-04-20 2021-10-26 Centripetal Networks, Inc. Methods and systems for efficient threat context-aware packet filtering for network protection
US11997120B2 (en) 2021-07-09 2024-05-28 VMware LLC Detecting threats to datacenter based on analysis of anomalous events
US11831667B2 (en) 2021-07-09 2023-11-28 Vmware, Inc. Identification of time-ordered sets of connections to identify threats to a datacenter
US11792151B2 (en) 2021-10-21 2023-10-17 Vmware, Inc. Detection of threats based on responses to name resolution requests
WO2023249748A1 (en) * 2022-06-21 2023-12-28 Vmware, Inc. Accelerating data message classification with smart nics
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100333189A1 (en) * 2009-06-30 2010-12-30 Sun Microsystems, Inc. Method and system for enforcing security policies on network traffic
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904519B2 (en) 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US7190668B1 (en) * 2001-11-27 2007-03-13 Nokia Corporation Method of anchoring flows
KR100429904B1 (ko) * 2002-05-18 2004-05-03 한국전자통신연구원 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
US20060045014A1 (en) * 2002-09-30 2006-03-02 Siemens Aktiengesellschaft Method for partially maintaining packet sequences in connectionless packet switching with alternative routing
US7545809B2 (en) * 2003-05-28 2009-06-09 International Business Machines Corporation Packet classification
US20050190779A1 (en) 2004-03-01 2005-09-01 Cisco Technology, Inc., A California Corporation Scalable approach to large scale queuing through dynamic resource allocation
JP4343760B2 (ja) * 2004-04-28 2009-10-14 株式会社日立製作所 ネットワークプロトコル処理装置
US7936770B1 (en) 2005-03-08 2011-05-03 Enterasys Networks, Inc. Method and apparatus of virtual class of service and logical queue representation through network traffic distribution over multiple port interfaces
US7656894B2 (en) 2005-10-28 2010-02-02 Microsoft Corporation Offloading processing tasks to a peripheral device
US8230153B2 (en) * 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US7701849B1 (en) 2006-06-23 2010-04-20 Juniper Networks, Inc. Flow-based queuing of network traffic
US8006297B2 (en) * 2007-04-25 2011-08-23 Oracle America, Inc. Method and system for combined security protocol and packet filter offload and onload
US8001278B2 (en) * 2007-09-28 2011-08-16 Intel Corporation Network packet payload compression
US7792914B2 (en) * 2008-01-14 2010-09-07 Aten International Co., Ltd. Server with network-based remote access and server management functions using reduced number of network connections
US7983257B2 (en) 2008-07-18 2011-07-19 Emulex Design & Manufacturing Corporation Hardware switch for hypervisors and blade servers
US8385202B2 (en) 2008-08-27 2013-02-26 Cisco Technology, Inc. Virtual switch quality of service for virtual machines
US7961726B2 (en) 2008-10-07 2011-06-14 Microsoft Corporation Framework for optimizing and simplifying network communication in close proximity networks
US9740517B2 (en) * 2008-12-29 2017-08-22 Microsoft Technology Licensing, Llc Dynamic virtual machine memory management
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8537860B2 (en) 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8234400B2 (en) 2010-03-16 2012-07-31 Microsoft Corporation Shaping virtual machine communication traffic
US8739177B2 (en) 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US8804747B2 (en) * 2010-09-23 2014-08-12 Cisco Technology, Inc. Network interface controller for virtual and distributed services
US8561065B2 (en) * 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100333189A1 (en) * 2009-06-30 2010-12-30 Sun Microsystems, Inc. Method and system for enforcing security policies on network traffic
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
sNICh: Efficient Last Hop Networking in the Data Center (2010) *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170049175A (ko) * 2015-10-28 2017-05-10 에스케이텔레콤 주식회사 네트워크 기능 가상화 운영 장치 및 방법
KR102217114B1 (ko) * 2020-07-24 2021-02-18 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
WO2022019720A1 (ko) * 2020-07-24 2022-01-27 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
KR20220071858A (ko) * 2020-11-24 2022-05-31 한국과학기술원 네트워크 및 파일 입출력 연산 오프로딩 방법, 연산 오프로딩 시스템 및 컴퓨터 판독 가능 기록매체
KR102420610B1 (ko) * 2021-11-19 2022-07-13 넷록스 주식회사 다층 캐싱 전략을 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치
KR102420606B1 (ko) * 2021-11-19 2022-07-13 넷록스 주식회사 캐시 경로를 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치

Also Published As

Publication number Publication date
US8930690B2 (en) 2015-01-06
JP6254574B2 (ja) 2017-12-27
WO2013142041A1 (en) 2013-09-26
US20130254766A1 (en) 2013-09-26
EP2828760A4 (en) 2015-11-11
ES2720759T3 (es) 2019-07-24
KR101969194B1 (ko) 2019-08-13
CN104205080A (zh) 2014-12-10
EP2828760A1 (en) 2015-01-28
JP2015515798A (ja) 2015-05-28
CN104205080B (zh) 2018-04-10
EP2828760B1 (en) 2019-01-16

Similar Documents

Publication Publication Date Title
KR101969194B1 (ko) 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법
EP3593503B1 (en) Packet processor in virtual filtering platform
US10949379B2 (en) Network traffic routing in distributed computing systems
US9942148B1 (en) Tunneled packet aggregation for virtual networks
US10623309B1 (en) Rule processing of packets
US9110703B2 (en) Virtual machine packet processing
US7764678B2 (en) Routing based on dynamic classification rules
KR101231673B1 (ko) 이종 요소들의 분산된 스위치 도메인
JP2021530908A (ja) SRv6とBGPを使用するマルチクラウド接続
US9473404B2 (en) Symmetric flow processing in a software-defined networking (SDN) system
EP3507953B1 (en) Techniques for architecture-independent dynamic flow learning in a packet forwarder
WO2020151030A1 (zh) 一种处理数据报文的方法和装置
WO2012127886A1 (ja) ネットワークシステム、及びポリシー経路設定方法
EP2909780A1 (en) Providing a virtual security appliance architecture to a virtual cloud infrastructure
US11336570B1 (en) Layer three multi-homing for virtual networks
CN111865806B (zh) 基于前缀的胖流
CN114301868B (zh) 快速生成虚拟容器浮动ip的方法及网络直通的方法和装置
JP2018518926A (ja) マルチキャストデータパケット転送
EP4141666A1 (en) Dual user space-kernel space datapaths for packet processing operations
US9509600B1 (en) Methods for providing per-connection routing in a virtual environment and devices thereof
US12003429B2 (en) Dual user space-kernel space datapaths for packet processing operations
US20220232109A1 (en) Virtual tunnel endpoint (vtep) learning based on transport protocol information
CN115865802A (zh) 虚拟实例的流量镜像方法、装置、虚拟机平台及存储介质
WO2022214854A1 (en) Methods and systems for efficient metadata and data delivery between a network interface and applications

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant