KR20240017134A - 가상 네트워크 기능의 투명 마이그레이션 - Google Patents

가상 네트워크 기능의 투명 마이그레이션 Download PDF

Info

Publication number
KR20240017134A
KR20240017134A KR1020247003428A KR20247003428A KR20240017134A KR 20240017134 A KR20240017134 A KR 20240017134A KR 1020247003428 A KR1020247003428 A KR 1020247003428A KR 20247003428 A KR20247003428 A KR 20247003428A KR 20240017134 A KR20240017134 A KR 20240017134A
Authority
KR
South Korea
Prior art keywords
network
middlebox
end host
middle box
connection
Prior art date
Application number
KR1020247003428A
Other languages
English (en)
Other versions
KR102659644B1 (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 KR20240017134A publication Critical patent/KR20240017134A/ko
Application granted granted Critical
Publication of KR102659644B1 publication Critical patent/KR102659644B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/76Routing in software-defined topologies, e.g. routing between virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/125Shortest path evaluation based on throughput or bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

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

Abstract

가상 네트워크 기능의 투명 마이그레이션을 위한 방법(300)이 제공된다. 방법은 네트워크 흐름을 수신하고 하나 이상의 백엔드 가상 머신(150)과 통신하는 미들 박스(160)를 식별하는 단계를 포함한다. 또한 방법은 상기 미들 박스(160)의 네트워크 흐름에 대응하는 흐름 통계(202)를 수신하는 단계; 및 상기 흐름 통계가 오프로드 규칙(211)을 충족하는지 여부를 결정하는 단계를 포함한다. 상기 오프로드 규칙은 상기 네트워크 흐름을 미들 박스로부터 엔드 호스트(140, 150)로 마이그레이션 할 시기를 표시한다. 상기 흐름 통계가 오프로드 규칙을 충족하는 경우, 상기 방법은 상기 네트워크 흐름을 상기 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계를 포함한다.

Description

가상 네트워크 기능의 투명 마이그레이션{TRANSPARENT MIGRATION OF VIRTUAL NETWORK FUNCTIONS}
본 개시는 가상 네트워크 기능의 투명 마이그레이션에 관한 것이다.
소프트웨어 정의 네트워크의 컴퓨팅 디바이스는 물리적 연결이 없을 수 있지만, 가상으로 서로 연결될 수 있다(즉, 가상 네트워크). 소프트웨어 정의 네트워킹을 사용하면 낮은 수준의 기능을 추상화하여 네트워크를 관리할 수 있다. 가상 네트워크의 제어 평면은 일반적으로 네트워크의 소스 가상 머신으로부터 목적지 가상 머신으로 네트워크 트래픽의 데이터 패킷을 라우팅하는 방법을 결정한다. 데이터 평면은 네트워크 트래픽을 선택된 목적지로 포워딩한다. 소프트웨어 정의 네트워크에서, 네트워크 가상화 방법은 네트워크의 제어 평면을 데이터 평면으로부터 분리한다. 따라서, 가상 네트워크는 기본 물리적 네트워크와 거의 유사하지 않은 경우가 많으며, 즉, 네트워크 확장을 위한 기존 기법이 가상 네트워크에서 작동하지 않음을 의미한다. 결과적으로, 대규모 가상 네트워크를 형성하기 위한 확장은 기존 네트워크 기능을 사용하면 문제가 될 수 있다.
본 개시의 일 양태는 가상 네트워크 기능의 투명 마이그레이션을 위한 방법을 제공한다. 상기 방법은 데이터 프로세싱 하드웨어에 의해, 네트워크 흐름을 수신하고 하나 이상의 백엔드 가상 머신과 통신하는 미들 박스를 식별하는 단계를 포함한다. 상기 방법은 또한 데이터 프로세싱 하드웨어에서 미들 박스의 네트워크 흐름에 대응하는 흐름 통계를 수신하는 단계를 포함한다. 상기 방법은 데이터 프로세싱 하드웨어에 의해, 상기 흐름 통계가 오프로드 규칙을 충족하는지 여부를 결정하는 단계를 더 포함하며, 상기 오프로드 규칙은 네트워크 흐름을 미들 박스로부터 엔드 호스트로 언제 마이그레이션할지 표시한다. 상기 흐름 통계가 오프로드 규칙을 충족하는 경우, 상기 방법은 데이터 프로세싱 하드웨어에 의해 상기 네트워크 흐름을 상기 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계를 포함한다.
본 개시의 구현예는 다음 구성들 중 하나 이상을 포함할 수 있다. 일부 구현예에서, 상기 미들 박스는 네트워크 주소 변환기(NAT), 로드 밸런서 또는 방화벽 중 적어도 하나를 포함한다. 이러한 구현예에서, 상기 미들 박스는 네트워크 라우팅을 수행하도록 구성된 단일 네트워크 디바이스와 연관될 수 있다. 미들 박스는 네트워크 연결과 하나 이상의 백엔드 가상 머신 간의 네트워크 로드를 밸런싱하도록 구성된 로드 밸런서를 포함할 수 있다. 여기서, 로드 밸런서는 각 네트워크 연결을 하나 이상의 백엔드 가상 머신 중 대응하는 백엔드 가상 머신에 매핑하는 연결 테이블을 포함한다.
일부 예에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계는 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 단계를 포함한다. 추가적으로 또는 대안적으로, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계는 상기 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 단계, 상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 단계, 상기 네트워크 연결 요청이 새로운 네트워크 연결에 대응한다고 결정하는 단계, 상기 새로운 네트워크 연결로 상기 엔드-호스트 연결 테이블을 업데이트하는 단계, 및 상기 엔드 호스트에서 상기 새로운 네트워크 연결을 위해 상기 네트워크 흐름을 제어하는 단계를 포함할 수 있다.
일부 구성에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계는 상기 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 단계, 상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 단계, 상기 네트워크 연결 요청이 상기 엔드-호스트 연결 테이블에 존재하지 않는 기존 네트워크 연결에 대응한다고 결정하는 단계, 및 상기 기존 네트워크 연결을 위해 상기 네트워크 흐름을 상기 엔드 호스트로부터 상기 미들 박스에 통신하는 단계를 포함한다. 여기서, 네트워크 흐름을 미들 박스로부터 마이그레이션하는 단계는 미들 박스로부터 엔드 호스트로 미들 박스 연결 테이블을 전송하는 단계를 포함할 수 있다. 미들 박스 연결 테이블이 미들 박스로부터 엔드 호스트로 전송되면, 방법은 엔드 호스트와 미들 박스 간의 통신을 중단하는 단계를 포함할 수 있다. 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션한 후, 방법은 또한 상기 데이터 프로세싱 하드웨어에 의해, 일정 기간 동안 엔드 호스트로의 네트워크 흐름의 감소를 결정하는 단계; 및 상기 데이터 프로세싱 하드웨어에 의해, 상기 네트워크 흐름을 상기 엔드 호스트로부터 상기 미들 박스로 마이그레이션하는 단계를 포함할 수 있다.
일부 구현예에서, 미들 박스는 일관된 해싱에 기초하여 하나 이상의 백엔드 가상 머신과 통신하도록 구성된다. 일부 구성에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 단계는 상기 미들 박스와 통신하는 상기 하나 이상의 백엔드 가상 머신의 각 백엔드 가상 머신의 제1 헬스 특성이 정상 상태를 표시하는지 식별하는 단계, 및 상기 엔드 호스트에 대응하는 제2 헬스 특성이 상기 제1 헬스 특성의 정상 상태와 매칭된다고 결정하는 단계를 포함할 수 있다. 엔드 호스트는 하나 이상의 백엔드 가상 머신 중 하나 또는 물리적 네트워크 레이어 내의 엔드 포인트를 포함할 수 있다.
본 개시의 다른 양태는 가상 네트워크 기능의 투명 마이그레이션을 위한 시스템을 제공한다. 시스템은 데이터 프로세싱 하드웨어와 상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 데이터 프로세싱 하드웨어에서 실행될 때 상기 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령어들 저장한다. 상기 동작들은 네트워크 흐름을 수신하고 하나 이상의 백엔드 가상 머신과 통신하는 미들 박스를 식별하는 동작 및 상기 미들 박스의 네트워크 흐름에 대응하는 흐름 통계를 수신하는 동작을 포함한다. 상기 동작들은 의해, 상기 흐름 통계가 오프로드 규칙을 충족하는지 여부를 결정하는 동작을 더 포함한다. 상기 오프로드 규칙은 네트워크 흐름을 미들 박스로부터 엔드 호스트로 언제 마이그레이션할지 표시한다. 상기 흐름 통계가 오프로드 규칙을 충족하는 경우, 상기 동작들은 상기 네트워크 흐름을 상기 미들 박스로부터 엔드 호스트로 마이그레이션하는 동작을 더 포함한다.
본 양태는 다음 구성들 중 하나 이상을 포함할 수 있다. 일부 예에서, 상기 미들 박스는 네트워크 주소 변환기(NAT), 로드 밸런서 또는 방화벽 중 적어도 하나를 포함한다. 이러한 예에서, 상기 미들 박스는 네트워크 라우팅을 수행하도록 구성된 단일 네트워크 디바이스와 연관될 수 있다. 선택적으로, 미들 박스는 네트워크 연결과 하나 이상의 백엔드 가상 머신 간의 네트워크 로드를 밸런싱하도록 구성된 로드 밸런서를 포함한다. 여기서, 로드 밸런서는 각 네트워크 연결을 하나 이상의 백엔드 가상 머신 중 대응하는 백엔드 가상 머신에 매핑하는 연결 테이블을 포함한다. 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 동작은 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 동작을 포함한다. 추가적으로 또는 대안적으로, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 동작은 상기 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 동작, 상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 동작, 상기 네트워크 연결 요청이 새로운 네트워크 연결에 대응한다고 결정하는 동작, 상기 새로운 네트워크 연결로 상기 엔드-호스트 연결 테이블을 업데이트하는 동작, 및 상기 엔드 호스트에서 상기 새로운 네트워크 연결을 위해 상기 네트워크 흐름을 제어하는 동작을 포함할 수 있다.
일부 구성에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 동작은 상기 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 동작, 상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 동작, 상기 네트워크 연결 요청이 상기 엔드-호스트 연결 테이블에 존재하지 않는 기존 네트워크 연결에 대응한다고 결정하는 동작, 및 상기 기존 네트워크 연결을 위해 상기 네트워크 흐름을 상기 엔드 호스트로부터 상기 미들 박스에 통신하는 동작을 포함한다. 이 구성에서, 네트워크 흐름을 미들 박스로부터 마이그레이션하는 동작은 미들 박스로부터 엔드 호스트로 미들 박스 연결 테이블을 전송하는 동작을 포함할 수 있다. 미들 박스 연결 테이블이 미들 박스로부터 엔드 호스트로 전송되면, 동작은 엔드 호스트와 미들 박스 간의 통신을 중단하는 동작을 포함할 수 있다. 다른 구성에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션한 후, 상기 동작들은 일정 기간 동안 엔드 호스트 로의 네트워크 흐름의 감소를 결정하는 동작, 및 상기 네트워크 흐름을 상기 엔드 호스트로부터 상기 미들 박스로 마이그레이션하는 동작을 포함한다.
일부 구현예에서, 미들 박스는 일관된 해싱에 기초하여 하나 이상의 백엔드 가상 머신과 통신하도록 구성된다. 일부 구성에서, 네트워크 흐름을 미들 박스로부터 엔드 호스트로 마이그레이션하는 동작은 상기 미들 박스와 통신하는 상기 하나 이상의 백엔드 가상 머신의 각 백엔드 가상 머신의 제1 헬스 특성이 정상 상태를 표시하는지 식별하는 동작, 및 상기 엔드 호스트에 대응하는 제2 헬스 특성이 상기 제1 헬스 특성의 정상 상태와 매칭된다고 결정하는 동작을 포함할 수 있다. 엔드 호스트는 하나 이상의 백엔드 가상 머신 중 하나 또는 물리적 네트워크 레이어 내의 엔드 포인트를 포함할 수 있다.
본 개시의 하나 이상의 구현예의 세부 내용이 첨부 도면과 아래의 설명에서 기술된다. 다른 양태, 구성, 객체 및 이점은 아래의 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1a-1c는 예시적 가상 네트워킹 환경의 개략도이다.
도 2a-2d는 가상 네트워크 기능을 마이그레이션하는 예시적 미들 박스 관리자의 개략도이다.
도 3은 가상 네트워크 기능을 마이그레이션하기 위한 방법의 예시적 구성의 흐름도이다.
도 4는 가상 네트워크 기능을 마이그레이션하는 시스템 및 방법을 구현하는데 사용되는 예시적 컴퓨팅 디바이스의 개략도이다.
다양한 도면들에서 기호들은 동일한 구성요소를 표시한다.
도 1a-1c를 참조하면, 일부 구현예에서, 네트워킹 환경(100)은 물리적 네트워크 레이어(102) 및 가상 네트워크 레이어(104)를 포함한다. 일부 예에서, 물리적 네트워크 레이어(102)는 느슨하게 결합된 컴퓨팅 리소스(110, 110a-n)를 갖는 분산 시스템(예를 들어, 클라우드 환경과 같은 원격 네트워크)이다. 이러한 컴퓨팅 리소스(110)는 하나 이상의 클라이언트(120, 120a-n)에 액세스가능한 데이터 프로세싱 하드웨어(예를 들어, 하나 이상의 CPU) 및/또는 메모리 하드웨어(예를 들어, 플래시 메모리, 랜덤 액세스 메모리(RAM), 위상 변화 메모리(PCM) 및/또는 디스크)를 포함할 수 있다. 예를 들어, 컴퓨팅 리소스(110)는 복수의 서버로 도시된다. 클라이언트(120)는 네트워크(130)를 통해 물리적 네트워크 레이어(102)에 호스팅된 컴퓨팅 리소스(110)와 통신할 수 있다. 예를 들어, 클라이언트(120) 및 서버는 물리적 네트워크의 엔드 포인트를 형성하는 머신(예를 들어, 호스트)의 집합을 나타낸다.
사설 네트워크 및 기업 네트워크에서 공용 네트워크에 이르는 다양한 유형의 네트워크(130)가 있을 수 있다. 네트워크의 보다 구체적인 예는 PAN(Personal Area Network), LAN(Local Area Network), WLAN(Wireless Local Area Network), WAN(Wide Area Network), SAN(Storage/System Area Network), PON(Passive Optical Network), 엔터프라이즈 사설 네트워크(EPN), 가상 사설 네트워크(VPN) 등을 포함한다. 일부 구성에서, 클라이언트(120) 및 엔드 호스트(즉, 컴퓨팅 리소스(110)의 호스트)는 네트워크 인터페이스 컨트롤러(NIC)(네트워크 인터페이스 카드, 네트워크 어댑터 또는 LAN 어댑터라고도 함) 또는 광 네트워크의 경우 동기 전송 모듈(STM)과 같은 하드웨어를 통해 네트워크(130)에 액세스(즉, 연결) 할 수 있다. 예를 들어, 도 1a-1c는 적어도 하나의 NIC(122, 122a-n)를 갖는 각 클라이언트(120) 및 적어도 하나의 NIC(112, 112a-n)를 갖는 각 서버를 도시한다.
가상 네트워크 레이어(104)와 같은 가상 네트워크 레이어는 자신의 인터넷 프로토콜(IP) 주소 공간을 갖는 가상 네트워크(오버레이 네트워크라고도 함)를 형성하기 위해 물리적 네트워크 레이어(102) 상에 오버레이될 수 있다. 가상 네트워크 레이어(104)는 네트워크(130)가 하드웨어 어플라이언스(예를 들어, 독점 하드웨어 어플라이언스)로부터 네트워크 기능을 분리할 수 있는 방식으로(예를 들어, 네트워크 관리자에 의해) 관리, 설계 및/또는 배치될 수 있게 한다. 즉, 가상 네트워크 레이어(104)는 네트워크 서비스가 소프트웨어에 의해 동작하여 전용 하드웨어를 갖는 전통적인 네트워크에 대한 적응성 및 확장성을 허용할 수 있도록 가상 네트워크 기능(네트워크 기능 가상화라고도 함)을 허용한다. 예를 들어, 가상 네트워크의 소프트웨어 정의 네트워킹(SDN)은 네트워크 하드웨어로부터 제어 평면을 제거하고, 대신 소프트웨어에서 제어 평면을 구현한다. 일부 구현예에서, 네트워크(130)의 가상 네트워크 레이어(104)는 하이브리드 가상화 접근법에서 전용 하드웨어로 다른 네트워크 기능을 수행하면서 소프트웨어를 통해 가상으로 일부 네트워크 기능을 수행한다. 가상 및/또는 하이브리드 접근 방식은 네트워크 공간, 전력, 크기, 확장성, 배포 시간 및/또는 수리 및 유지 관리와 관련하여, 네트워크 제공자 또는 네트워크 관리자에게 유연성 및/또는 최적화를 허용할 수 있다. 예를 들어, 가상 네트워크 레이어(104)는 네트워크 서비스를 중단하지 않고 물리적 네트워크 레이어(102)에 대한 기본 변경을 허용하도록 동적으로 구성된다.
가상 네트워크 레이어(104)는 다양한 네트워크 기능을 수행하고 및/또는 물리적 네트워크의 전통적인 네트워크 기능을 미러링하도록 구성될 수 있다. 이러한 네트워크 기능의 예는 라우팅, 네트워크 주소 변환(NAT), 로드 밸런싱(LB), 보안(예: 방화벽 및 침입 탐지/방지 시스템), 프로토콜 변환, 광역 네트워크 최적화, 프록시, 캐싱 등을 포함한다. 즉, 가상 네트워크 기능은 네트워크(130) 내의 임의의 데이터 평면 프로세싱 또는 제어 평면 기능에 적용될 수 있다.
계속 도 1a-1c를 참조하면, 가상 네트워크 레이어(104)는 가상 네트워크 엔드 포인트를 포함한다. 여기서 가상 네트워크 엔드 포인트는 클라이언트 가상 머신(클라이언트 VM)(140, 140a-n) 및 백엔드 가상 머신(백엔드 VM)(150, 150a-n)과 같은 가상 머신(VM)으로 도시된다. 가상 머신(VM)은 일반적으로 사용자가 해당 호스트 컴퓨터 시스템의 기본 운영 체제를 방해하지 않고도 호스트 컴퓨터 시스템의 기능을 경험할 수 있도록 하는 하나 이상의 호스트 컴퓨터 시스템의 에뮬레이션 또는 이미지를 말한다. 하나 이상의 호스트 환경 내에서 특수 작업을 수행하기 위해 VM이 생성될 수 있다. 일부 예에서, 가상 네트워크 레이어(104)는 다수의 VM이 호스트 컴퓨터 시스템 내에 동시에 존재하도록 한다. 여러 VM을 한 번에 동작할 수 있도록, VM은 호스트 컴퓨터 시스템의 중요한 운영 체제 리소스로부터 샌드 박스 처리되는 경우가 많다. VM은 백엔드 VM(150)을 통해 물리적 네트워크 레이어(102)의 하나 이상의 컴퓨팅 리소스(110)에 매핑(예를 들어, 액세스)하도록 설계될 수 있기 때문에 가상 네트워크 레이어(104)에 유리할 수 있다. 예를 들어, 하나 이상의 클라이언트 VM(140)은 하나 이상의 백엔드 VM(150)에 매핑되며, 여기서 백엔드 VM(150)은 물리적 네트워크 레이어(102)(예를 들어, 분산 시스템)의 컴퓨팅 리소스(110)와 연관된 VM이다. 특정한 컴퓨팅 리소스(110)에 매핑함으로써, 클라이언트 VM(140)은 백엔드 VM(150)과 함께 특정한 네트워크 서비스(예를 들어, 네트워크 애플리케이션)를 위해 설계될 수 있다. 일부 구성에서, 백엔드 VM(150)은 데이터가 물리적 네트워크 레이어(102)의 서버에 포함될 수 있고 다양한 원격 클라이언트(120)에 의해 액세스되거나 이에 할당될 수 있는 호스트 기반 VM으로서 동작한다. 예를 들어, VM을 갖는 가상 네트워크 레이어(104)는 중앙에서 관리되는 네트워크 구조를 허용한다. 네트워크 가상화는 일반적으로 VM과 관련하여 설명되지만, 네트워크 가상화(예: 가상 네트워크 레이어(104) 사용)는 VPN(가상 사설망), 베어 메탈 서버, 프록시 등을 포함한 다른 유형의 네트워크 엔드 포인트를 연결하기 위해 일반화될 수 있다. 예를 들어, 네트워킹 환경(100)은 고객의 구내로부터의 요청을 포워딩하는 클라이언트로서 VPN 게이트웨이를 지원한다. 따라서, 일부 예에서 보다 일반적으로 VM은 다른 유형의 네트워크 연결을 수용하기 위한 네트워크 엔드 포인트이다.
일부 구현예에서, 네트워크 기능을 수행하기 위해, 네트워킹 환경(100)의 가상 네트워크 레이어(104)는 적어도 하나의 미들 박스(160)를 포함한다. 미들 박스(160)는 일반적으로 소스 호스트(예: 클라이언트 VM(140)를 통한 클라이언트)와 목적지 호스트(예: 백엔드 VM(150)를 통한 물리적 네트워크 레이어(102)의 서버) 사이의 데이터그램 경로에서 인터넷 프로토콜(IP) 라우터의 정상적인 표준 기능 이외의 기능을 수행하는 모든 중간 디바이스를 의미한다. 즉, 미들 박스(160)는 일반적으로 패킷 라우팅(예: 네트워크 주소 변환(NAT), 네트워크 주소 포트 변환(NAPT), 로드 밸런싱(LB), 방화벽, 침입 감지/방지 시스템, 프로토콜 변환, 프록시) 이외의 네트워크 기능을 담당한다. 미들 박스(160)는 일반적으로 라우팅 이외의 네트워크 기능을 담당하지만, 미들 박스(160)는 네트워킹 환경(100)이 라우팅 및 미들 박스 기능을 모두 지원하는 단일 디바이스를 포함하도록 라우팅도 처리하는 디바이스의 일부일 수 있다.
네트워킹 환경(100) 내에서, 미들 박스(160)는 네트워크 기능을 수행하기 위해 하나 이상의 클라이언트(120)로부터 네트워크 흐름을 수신한다. 미들 박스(들)(160)와의 네트워크 연결은 클라이언트(120)로부터의 연결 요청(124)에 기초하여 설정될 수 있다. 즉, 미들 박스(160)가 중간에 위치하여 연결에 속하는 패킷을 프로세싱하고 잠재적으로 수정하도록 클라이언트(120)와 백엔드 사이에 연결이 협상될 수 있다. 미들 박스(160)와 연결이 설정되면(예: 클라이언트 VM(140)과 백엔드 VM(150) 사이에 가상 연결을 형성), 미들 박스(160)는 미들 박스(160)의 구성된 네트워크 기능에 기초하여 네트워크 트래픽(예: 데이터(126))을 수신한다.
일부 예에서, 미들 박스(160)는 클라이언트(120)와 백엔드(예를 들어, 백엔드 VM) 사이의 패킷에 대해 NAT 또는 NAPT를 수행한다. NAPT의 경우, 미들 박스(160)는 각 연결 및 각 연결에 할당된 포트 매핑을 추적한다. 다른 예에서, 미들 박스(160)는 클라이언트(120)와 백엔드 사이에서 패킷을 포워딩하는 동시에 연결에 속하는 미래의 패킷이 동일한 백엔드에 계속 연결되도록 잠재적으로 연결을 추적하는 레이어-4 로드 밸런서 미들 박스이다. 대안적으로, 미들 박스(160)는 클라이언트(120)가 미들 박스(160)와 TCP(Transmission Control Protocol)를 설정하고 미들 박스(160)가 백엔드(즉, 클라이언트(120)를 대신하여)와 별도의 연결을 설정하는 레이-7 로드 밸런서일 수 있다. 레이어-7 로드 밸런서의 경우, 전송 프로토콜 상태(예를 들어, TCP 시퀀스 번호 및 창 크기)는 미들 박스(160)로부터 각각의 엔드 호스트(들)로 전송될 것이다.
일부 구현예에서, 가상 네트워크 레이어(104)과 같은 오버레이 네트워크는 미들 박스 기능을 수행할 것이 요구되지 않는다. 예를 들어, 물리적 이더넷 네트워크와 같은 네트워크에서 엔드 호스트에서 실행되는 소프트웨어는 목적지 MAC(medial access control) 주소를 미들 박스(160)에 대응하는 MAC 주소로 설정함으로써 미들 박스(160)로의 연결을 지시할 수 있다. 여기서, 연결을 오프로드하기 위해, 호스트는 MAC 주소를 목적지 주소(또는 목적지에 도달하기 위한 적절한 게이트웨이 주소)로 설정한다. 즉, 미들 박스(160)는 VM 대신 물리적 머신과 통신할 수 있다. 예를 들어, 로드 밸런싱에서, 클라이언트(120)와 서버는 가상 네트워크 레이어(104) 상의 VM일 필요가 없고 오히려 물리적 머신 간의 연결일 필요가 있다.
미들 박스(들)(160)는 미들 박스(들)(160)가 종종 상태 저장(stateful) 네트워크 기능을 수행한다는 점에서 라우터와 다를 수 있다. 보다 구체적으로, 상태 저장 네트워크 기능은 네트워크 기능과 연관된 네트워크 연결의 동작 상태 및/또는 특성을 추적하는 네트워크 기능을 의미한다. 예를 들어, 미들 박스(160)는 미들 박스(160)가 연결을 인식하도록 연결을 추적하고, 패킷 컨텍스트를 검사(예를 들어, 주기적으로 페이로드를 검사) 및/또는 새로운 연결을 기존 연결과 연관시킨다. 상태 저장 기능을 수행함으로써, 미들 박스(들)(160)는 클라이언트(120) 또는 VM의 이전 세션과 연관된 연결 이벤트 또는 연결 데이터를 식별 및/또는 리콜하기 위해 더 큰 수준의 데이터 세분성을 포함한다. 이러한 상태 저장 기능은 네트워크 서비스를 안정화하는데 도움이 될 수 있는 가상 네트워크 레이어(104) 보안 및 성능 이점을 제공할 수 있다.
도 1b는 일부 구현예에서, 가상 네트워크 레이어(104)는 하나 이상의 백엔드 VM(150)과 연관된 하나 이상의 미들 박스(160)를 포함함을 도시한다. 가상 네트워크 레이어(104)는 클라이언트 VM(140)과 연관된 네트워크 흐름이 특정한 세트의 백엔드 VM(150)(예를 들어, 백엔드 VM(150a-b)와 연관된 미들 박스(160a)) 전용의 적어도 하나의 미들 박스(160)에 할당되는 클러스터로 구성될 수 있다. 이러한 예에서, 클러스터는 또한 특정 미들 박스(160) 및 백엔드 VM 세트(150)를 물리적 네트워크 레이어(102)의 특정 컴퓨팅 리소스(110)와 연관시킬 수 있다. 예를 들어, 제1 미들 박스(160a)는 물리적 네트워크 레이어(102)로부터의 컴퓨팅 리소스(110a)를 활용하는 2개의 백엔드 VM(150a-b)과 연관된다. 추가적으로 또는 대안적으로, 클러스터 구성은 또한 다중 클라이언트(120)가 물리적 네트워크 레이어(102)의 컴퓨팅 리소스(110)를 공유하는 상이한 가상 네트워크에서 VM을 운영하는 다중 테넌시를 갖는 가상 네트워크를 지원할 수 있다.
도 1a 및 1b에 도시된 바와 같이, 가상 네트워크 레이어(104)의 네트워크 기능은 미들 박스(들)(160)에 의해 수행된다. 다수의 클라이언트 및/또는 호스트의 크기가 증가함에 따라, 미들 박스(160)는 미들박스(160)에서 특히 상태 추적(예: 연결 테이블)을 갖는 미들 박스(160)에 의해 수행되는 기능에서 활동을 프로그래밍 및/또는 관리하기 위해 더 많은 프로그래밍 리소스를 요구하는 네트워크 흐름 및 연결의 증가를 비례적으로 수신한다. 이러한 경우, 중개 디바이스로서 미들 박스(160)는 클라이언트 VM(140)과 백엔드 VM(150) 사이의 네트워크 기능에 대한 대기, 병목 현상 및 추가 홉을 추가할 수 있다. 따라서, 가상 네트워크 기능이 네트워크의 제어 평면에서 확장 문제를 해결할 수 있지만, 가상 네트워크 기능은 데이터 평면에서 여전히 확장 문제를 겪는다.
도 1c에 도시된 바와 같이, 일부 예에서, 가상 네트워크 레이어(104)는 미들 박스(160)를 통해 하나 이상의 중간 네트워크 연결을 오프로드하여 클라이언트 VM(140)과 백엔드 VM(150) 사이의 네트워크 연결을 지시하도록 구성된다. 예를 들어, 도 1c는 제1 클라이언트 VM(140a)과 제1 백엔드 VM(150a) 사이의 직접 네트워크 연결(170)로서 가상 네트워크 레이어(104) 내의 이전 중개 네트워크 연결을 도시한다. 이것은 단순히 하나의 예시이지만, 미들 박스 관리자(200)(도 1a-1c에 도시됨)는 오프로딩 규칙에 기초하여 미들 박스 기능에 대한 오프로딩을 동적으로 관리할 수 있다. 가상 네트워크 레이어(104)에서 가능한 동적이고 유동적인 특성으로 인해, 미들 박스 관리자(200)는 또한 가상 네트워크 레이어(104)의 확장성을 관리하여 가상 네트워크 내의 제어 평면 및/또는 데이터 평면에 대한 확장성 문제(예: 상태 저장 네트워크 기능의 확장 가능한 문제)를 해결하거나 최소화하는 것을 목표로 할 수 있다. 미들 박스(160)로부터 엔드 호스트(예를 들어, 백엔드 VM(150))로 네트워크 흐름을 오프로드하거나 마이그레이션함으로써, 가상 네트워크 레이어(104)는 네트워크 기능과 연관된 네트워크 흐름의 균형을 전략적으로 밸런싱하여, 특히 보다 크거나 성장하는 네트워크 내에서 클라이언트 네트워킹 경험을 향상시킬 수 있다. 엔드 호스트는 백엔드 VM(150)과 같은 가상 네트워크 레이어(104) 내의 엔드 포인트, 또는 일부 구성에서 물리적 네트워크 레이어(102) 내의 엔드 포인트를 지칭할 수 있다.
미들 박스 관리는 로드 밸런싱의 네트워크 기능과 관련하여 이하에서 설명될 수 있지만, 미들 박스 관리 기법은 다른 미들 박스 기능(예: NAT, 방화벽 등)에도 동일하게 적용될 수 있다. 일반적으로, 클라이언트(120)는 네트워크 로드를 밸런싱하기 위해 서버들로 로드 밸런스 서비스를 사용할 수 있다. 전통적으로 로드 밸런싱에 대한 한 가지 접근법은 CPU, 로컬 스토리지 및/또는 패킷 프로세싱 수단을 포함하는 전용 미들 박스 어플라이언스(예: ASIC(application specific integrated circuit))를 사용한다. 전용 어플라이언스를 사용하면, 클라이언트(120)가 연결을 시작할 때(예: 연결 요청(124)에 의해), 네트워크(130)는 전용 미들 박스 어플라이언스에 연결을 송신하고 미들 박스 어플라이언스는 트래픽을 백엔드(예: 백엔드 VM(150))로 프록시한다. 전용 미들 박스 어플라이언스인 미들 박스 어플라이언스는 네트워크의 물리적 하드웨어이다. 안타깝게도, 물리적 하드웨어로서 전용 미들 박스 어플라이언스는 크기 변경을 수용하기 위해 물리적 하드웨어를 비례적으로 확장해야하므로 확장성 문제가 발생한다. 더욱이, 전용 하드웨어 어플라이언스는 네트워크(130) 내에서 피크 트래픽 수요를 충족시키기 위해 프로비저닝되어야하기 때문에, 전용 어플라이언스는 또한 큰 정도의 오버 프로비저닝을 초래할 수 있다.
로드 밸런싱에 대한 또 다른 전통적인 접근법은 클라이언트 측 로드 밸런싱이다. 클라이언트 측 네트워킹 기능은 미들 박스 기능이 엔드 호스트에서 구현되어 미들 박스를 제거하는 분산법이다. 이러한 예 중 하나는 클라이언트 측 네트워킹 기능이 운영 체제(OS) 커널 또는 가상 스위치(예: Open vSwitch)에 내장된 경우다. 예를 들어 클라이언트 측 로드 밸런싱에서, 클라이언트 호스트는 소프트웨어를 사용하여 사용할 백엔드를 독립적으로 결정한다. 이 접근법은 모든 로드 밸런싱 기능을 엔드 호스트로 시프팅하며, 여기서 엔드 호스트는 모든 백엔드 테이블을 가진다. 전용 하드웨어 접근법과 달리, 클라이언트 측 기능(예: 분산 접근법)은 데이터 평면 확장을 수용할 수 있지만 제어 평면 확장에는 문제가 있다. 이는 분산 접근법에서 클라이언트 측 기능 결정을 허용하기 위해 모든 서비스, 백엔드, 헬스 특성 등에 관한 정보를 클라이언트에 분산시켜야 하기 때문이다.
이러한 전통적인 접근법과 달리, 도 2a-2d는 미들 박스 관리자(200)를 사용한 하이브리드 접근법을 예시한다. 여기서, 미들 박스 관리자(200)는 네트워크 흐름을 수신하는 미들 박스(160)로부터 하나 이상의 백엔드 VM(150)으로의 흐름 통계와 같은 메트릭(202)을 수신하고 메트릭(202)에 기초하여 미들 박스(160)로부터 네트워크 흐름을 마이그레이션(즉, 오프로드)하도록 구성된다. 일부 예에서, 메트릭스(202)의 측정 및/또는 분석은 네트워킹 환경(100)(예를 들어, 미들 박스(160), 엔드 호스트(들), 랙 상단 스위치 등) 내의 다른 네트워크 컴포넌트에서 발생하며, 미들 박스 관리자(200)는 이러한 다른 네트워크 컴포넌트로부터 명령어를 수신하여 특정 네트워크 흐름을 오프로드한다. 미들 박스 관리자(200)는 네트워크 관리자 또는 가상 네트워크 레이어(104)와 연관된 제어 평면의 요소일 수 있다.
일부 구현예에서, 미들 박스(160)로부터 네트워크 흐름을 마이그레이션할지 여부를 결정하기 위해, 미들 박스 관리자(200)는 적어도 하나의 오프로드 규칙(211)으로 구성된 오프로더(210)를 포함한다. 오프로더(210)는 주어진 오프로드 규칙(211)의 기준을 충족하는 미들 박스(160)를 통해 네트워크 흐름을 오프로드할지 여부를 결정한다. 도 2a에 도시된 바와 같이, 오프로더(210)는 적어도 하나의 메트릭(202)이 적어도 하나의 오프로드 규칙(211)을 만족하는지 여부에 기초하여 특정 연결 또는 특정 연결과 연관된 네트워크 흐름을 오프로드할지 여부를 결정한다. 예를 들어, 오프로드 규칙(211)은 특정 속도 또는 대역폭(예를 들어, 20kbps)을 초과하는 임의의 흐름을 오프로드할 수 있으며, 이에 따라 이 예에서 메트릭(202)은 네트워크 흐름의 속도/대역폭에 대응한다. 오프로드 규칙은 복합되거나 제한될 수 있다. 예를 들어, 제1 오프로드 규칙(211)은 20kbps를 초과하는 흐름을 오프로드할 수 있지만, 제2 오프로드 규칙(211)은 제1 규칙에 의해 오프로드된 흐름의 수를 제한할 수 있다(예: 미들 박스 관리자(200)는 20kbps 초과하는 20개 이하의 흐름을 오프로드할 수 있다). 추가 오프로드 규칙(211)은 고 대역폭 흐름이 사용하는 특정 미들 박스(160)를 통과하는 총 대역폭이 미들 박스(160)에 대한 구성 가능한 대역폭 임계 값을 초과할 때 고 대역폭 흐름을 오프로드하는 것일 수 있다. 다른 예에서, 오프로더(210)는 서브넷 내의 또는 특정 물리적 반경 내의 모든 흐름을 오프로드한다. 오프로더(210)는 미들 박스(160)를 통해 현재 이동하는 총 대역폭, 주어진 호스트에 이미 오프로드된 플로우의 수, 오프로드된 플로우의 총 수(예를 들어, 제어 평면 또는 가상 네트워크 레이어(104) 내) 및 다른 흐름 통계와 같은 요인에 기초하여, 오프로드 규칙(211)을 동적으로 결정할 수 있다. 추가적으로 또는 대안적으로, 오프로드 규칙(211)은 미들 박스(160) 또는 SDN 네트워크 제어기의 로드에 따라 자동으로 조정되는 임계값을 포함할 수 있다.
도 2b를 참조하면, 가상 네트워크 레이어(104)는 미들 박스(160)에 의해 지원되는 4개의 클라이언트 VM(140a-d) 및 2개의 백엔드 VM(150a-b)을 포함한다. 여기서, 오프로더(210)는 직접 네트워크 연결(170)(점선 화살표로 표시됨)을 사용하여 미들 박스(160)로부터 제2 백엔드 VM(150b)에 제4 클라이언트 VM(140d)과 연관된 네트워크 흐름 또는 연결을 오프로드하기로 결정한다(예를 들어, "오프로드" 주위에 점선으로 표시됨). 도 2b는 제2 백엔드 VM(150b)이 가상 네트워크 레이어(104)에 새롭거나(예를 들어, 리소스의 확장성을 위해) 이미 존재하고 현재 제4 클라이언트 VM(140d)으로부터 네트워크 흐름을 수신하기 위해 연결될 수 있음을 나타내기 위해 점선으로 제2 백엔드 VM(150b)을 도시한다.
일부 예에서, 미들 박스 관리자(200)는 메트릭(202)으로부터의 흐름 통계에 기초하여 네트워크 흐름의 이상치 유형(비공통 유형)을 식별하도록 구성된다. 그 후 미들 박스 관리자(200)는 이러한 이상치와 연관된 연결을 엔드 호스트로 마이그레이션(예를 들어, 직접 연결)할 후보로 식별할 수 있다. 일부 예에서, 미들 박스 관리자(200)는 오프로더(210)와 연관된 적어도 하나의 오프로드 규칙(211)에 기초하여 네트워크 흐름을 마이그레이션하기 전에 이상치 후보를 먼저 마이그레이션하도록 구성된다.
일부 구현예에서, 네트워킹 환경(100)의 미들 박스(160)는 고정성(stickiness) 요구 사항을 포함한다. 고정성 요구 사항은 종종 미들 박스(160)에 대한 연결이 클라이언트(120)(예를 들어, 각 세션)와의 각각의 인터렉션에 대해 재설정되거나 초기화될 필요가 없도록 기존 연결을 유지하는 것을 지칭한다. 미들 박스(160)에 대한 연결을 추적하기 위해, 미들 박스(160)는 연결 레코드(162)를 포함할 수 있다. 레코드(162)는 기존의 소스 및 목적지 연결을 나타내는 테이블일 수 있다(예를 들어, 도 2a-2c에 의해 도시됨). 고정성의 개념에 대한 예시는 만약 도 2a가 3개의 클라이언트 VM(140a-c)을 포함하면, 도 2b에 도시된 바와 같이 4개의 클라이언트 VM(140a-d)으로 전환된다는 것이다. 고정성을 유지하기 위한 이 전환에서, 미들 박스(160)가 제4 클라이언트 VM(140d)으로부터 새로운 연결 요청 또는 네트워크 흐름을 수신하면, 미들 박스 관리자(200)는 새로운 제4 클라이언트 VM(140d)을 연결을 방해하지 않는 대응하는 백엔드 VM(150)에 매핑하도록 구성된다. 예를 들어, 미들 박스 관리자(200)는 제1, 제2 또는 제3 클라이언트 VM(140a-c)의 기존 네트워크 흐름을 제1 백엔드 VM(150a)로부터 제2 백엔드 VM(150b)으로 오프로드하는 대신 이러한 기존 연결을 유지하고, 제4 클라이언트 VM(150d) 및 제2 백엔드 VM(150b) 사이에 직접 연결을 형성한다. 이와 관련하여, 일부 구현예에서, 가상 네트워크 레이어(104)에 추가된 새로운 백엔드 VM은 기존 연결을 방해하는 것을 피하기 위해 새로운 연결에만 사용될 수 있다.
도 2c와 같은 일부 구성에서, 미들 박스 관리자(200)는 커넥터(220)를 포함하여 고정성을 유지한다. 여기서, 커넥터(220)는 상태 비저장 미들 박스 네트워크 기능(예: 로드 밸런싱)에 대한 일관된 해싱 및/또는 상태 저장 미들 박스 네트워크 기능에 대한 연결 추적과 같은 기법을 사용하여 고정성을 유지할 수 있다. 일관된 해싱 기법으로, 커넥터(220)는 상태 비저장 방식으로 연결에 대한 중단을 최소화하려고 시도한다. 예를 들어, N개의 백엔드 VM(150)이 N + 1개의 백엔드 VM(150)으로 전환될 때, 재할당되는 연결 수는 1/N과 같다. 즉, 일관된 해싱은 기존 연결 중단을 방지하는 것이 아니라 재할당된 백엔드 연결 수를 최소화한다.
일부 예에서, 커넥터(220)는 연결 추적 기법을 사용한다. 연결 추적을 통해 미들 박스(160)(예: 로드 밸런서, NAT 또는 방화벽)는 연결 테이블과 같은 레코드(162)를 갖는다. 레코드(162)는 다양한 클라이언트 VM(140)을 백엔드 VM(150)(또는 백엔드 VM(150)을 물리적 네트워크 레이어(102)의 컴퓨팅 리소스(110))에 연결하는 과거 미들 박스 결정 및 활동을 추적한다. 이 접근법은 오프로딩 또는 로드 밸런싱시 레코드(162) 내의 기존 연결이 미들 박스 관리자(200)에 의해 재구성되지 않기 때문에 기존 연결에 대한 중단을 방지할 수 있다.
추가적으로 또는 대안적으로, 커넥터(220)가 연결 추적을 사용하는 경우, 미들 박스 관리자(200)는 기존 연결을 오프로드하기로 결정할 수 있다. 이것이 발생할 때, 커넥터(220)는 레코드(162)가 오프로드된 연결과 함께 전송되는 것을 보장할 수 있다. 레코드(162)(예를 들어, 연결 테이블)를 전송함으로써, 오프로드된 엔드 호스트는 주어진 네트워크 연결에 대한 상태를 계속 추적할 수 있다. 예를 들어, 도 2c는 미들 박스(160)로부터 오프로딩되는 제4 클라이언트 VM(140d)을 고려하기 위해 제2 백엔드 VM(150b)으로 전송되는 레코드(162)를 도시한다.
일부 예에서, 미들 박스 관리자(200)가 미들 박스(160)로부터 엔드 호스트로 연결을 마이그레이션할 때, 커넥터(220)는 오프로드 프로세스를 위한 전환 단계를 프로세싱한다. 전환 단계의 일부로서, 커넥터(220)는 엔드 호스트에서 새로운 레코드(162a)(예를 들어, 연결 테이블)를 개시한다. 처음에, 엔드 호스트에서 이 새로운 레코드(162a)는 비어 있지만, 커넥터(220)는 새로운 연결로 새로운 레코드(162a)를 업데이트하여 엔드 호스트가 이러한 새로운 연결로부터의 임의의 후속 네트워크 흐름을 제어하도록 한다. 이 전환 단계 동안, 미들 박스(160)는 엔드 호스트에서 새로운 레코드(162a) 내에 없는 기존 연결로부터의 네트워크 흐름을 처리할 수 있다. 즉, 미들 박스(160)는 미들 박스(160)에서 기존 레코드(162b) 내의 기존 연결을 계속 제어하는 반면, 미들 박스(160)는 기존 레코드(162b)를 엔드 호스트에 통신한다. 전송이 완료되면, 전환 프로세스는 새로운 레코드(162a)와 엔드 호스트에서 기존 레코드(162b)의 병합된 레코드(162ab)를 형성했다. 이 시점에서, 미들 박스(160)는 연결 처리를 중단한다(즉, 기존 레코드(162b)로부터의 기존 연결 처리를 중단).
도 2a-2c를 참조하면, 레코드(162)는 테이블의 단순화된 버전으로 도시된다. 일부 구현예에서, 레코드(162)는 개별 TCP 스트림을 추적하는 연결 테이블이다. 레코드(162)는 소스 IP, 목적지 IP, 프로토콜(예: TCP, 사용자 데이터 그램 프로토콜(UDP), 인터넷 제어 메시지 프로토콜(ICMP)), 소스 전송 포트, 목적지 전송 포트 또는 사용 관련 데이터(예: 마지막 사용 시간)와 같은 연결 데이터의 임의의 조합을 포함할 수 있다. 레코드(162)가 테이블인 경우, 레코드(162)는 연결 데이터의 유형 별로 열을 포함할 수 있다. 레코드(162)는 또한 각 엔트리와 연관된 상태를 포함할 수 있다. 일부 예에서, NAPT용 미들 박스(160)가 IP 및 전송 포트를 다른 IP 및 전송 포트에 재작성할 때, 레코드(162)는 이러한 번역을 기록한다. 예를 들어, 로드 밸런싱에서, 레코드(162)는 주어진 연결에 대해 선택/설정된 백엔드에 대한 식별자(ID)를 포함한다. 방화벽에 대한 레코드(162)는 시퀀스 번호 유효성 검사 프로세스에 대응하는 일련의 번호를 포함하지 않거나 포함할 수 있다.
일부 예에서, 네트워킹 환경(100)은 상태 비저장 및 상태 저장 네트워크 동작의 조합으로 트래픽을 지원하는 다수의 미들 박스(160)를 포함한다. 예를 들어, 엔드 호스트가 미들 박스에 로드를 밸런싱하고, 미들 박스/엔드 호스트가 백엔드로 로드를 밸런싱하도록 네트워킹 환경(100)에 중첩된 로드 밸런싱(다중 레이어)이 존재할 수 있다. 이와 같은 상황에서, 네트워크 연결을 오프로드하거나 마이그레이션하기 위해, 커넥터(220)는 미들 박스(160)의 하나 이상의 레이어에 걸쳐 네트워킹 환경(100)의 네트워크 기능을 최적화하기 위해 일관된 해싱 또는 연결 추적 또는 둘 모두의 일부 조합을 사용할 수 있다.
도 2d를 참조하면, 미들 박스 관리자(200)는 헬스 검사기(230)를 더 포함할 수 있다. 헬스 검사기(230)는 각 백엔드 VM(150)의 헬스 특성(232)을 검사하도록 구성된다. 예를 들어, 도 2d는 제1 백엔드 VM(150a)로부터 제1 헬스 특성(232a) 및 제2 백엔드 VM(150b)으로부터 제2 헬스 특성(232b)을 수신하는 미들 박스 관리자(200)를 도시한다. 이러한 헬스 특성(232)은 헬스 검사기(230)에 통신되거나 헬스 검사기(230)에 의해 식별될 수 있다. 일부 예에서, 미들 박스 기능 동안, 헬스 검사기(230)는 대응하는 미들 박스(160)에 연결된 각각의 백엔드 VM(150)이 정상 상태를 나타내는지 확인한다. 이러한 예에서, 미들 박스 관리자(200)가 네트워크 연결을 마이그레이션하거나 오프로드하기로 결정할 때(예를 들어, 제2 백엔드 VM(150b)으로 오프로드된 도 2d에 도시됨), 헬스 검사기(230)는 원래 미들 박스 연결에 대응하는 제1 헬스 특성(232a)을 의도된 엔드 호스트(예를 들어, 제2 백엔드 VM(150b))의 제2 헬스 특성(232b)과 비교한다. 헬스 검사기(230)가 의도된 엔드 호스트에 대응하는 제2 헬스 특성(232b)이 제1 헬스 특성(232a)의 헬스 상태와 일치한다고 판단하면, 헬스 검사기(230)는 미들 박스 관리자(200)가 네트워크 흐름을 마이그레이션하도록 할 수 있다. 일부 예에서, 헬스 검사기(230)가 의도된 엔드 호스트에 대응하는 제2 헬스 특성(232b)이 제1 헬스 특성(232a)의 헬스 상태(즉, 비정상 상태에 대응)와 일치하지 않는다고 결정할 때, 헬스 검사기(230)는 미들 박스 관리자(200)가 마이그레이션하는 것을 금지한다. 즉, 미들 박스 관리자(200)는 먼저 연결 및 마이그레이션된 연결에 대한 엔드 호스트를 마이그레이션하기로 결정하여, 선택된 엔드 호스트가 정상 상태를 나타내는 헬스 특성(232)을 포함하도록 할 수 있다. 비록 도 2d는 헬스 검사기(230) 및 커넥터(220)를 갖는 미들 박스 관리자(220)를 도시하였지만, 일부 구성에서 헬스 검사기(230)는 커넥터(220)의 기능(예를 들어, 일관된 해싱 및/또는 연결 추적)없이 미들 박스 관리자(200)에 의해 사용될 수 있다.
미들 박스 관리자(200)는 네트워킹 환경(100)에 대한 성능 영향을 갖는 특정 입도(granularity)에서 동작(즉, 오프로더(210)에 의한 오프로드)할 수 있다. 오프로딩이 발생할 때, 특정 기준과 일치하는 패킷은 미들 박스(160)가 아닌 엔드 호스트(예를 들어, 백엔드 VM(150))에 의해 적용되는 네트워크 기능을 가질 것이다. 입도는 일반적으로 패킷 기준의 특이성을 지칭한다. 일부 예에서, 미들 박스 관리자(200)는 소스 IP, 목적지 IP, IP 프로토콜, 소스 전송 포트 및 목적지 전송 포트(예를 들어, 단일 전송 제어 프로토콜(TCP) 연결)를 참조하는 5-튜플 입도로 동작한다. 여기서 이 5-튜플 입도는 비교적 간단한 방식으로 로드 밸런싱, 방화벽 또는 NAPT와 같은 네트워크 기능에 사용될 수 있지만 많은 수의 흐름을 오프로드해야 한다.
다른 예에서 로드 밸런싱과 관련된 오프로드는 <sender, load-balanced IP>의 입도로 발생한다. 이 모델에서, 오프로딩이 발생할 때, 엔드 호스트는 클라이언트(120)에 의해 사용하기 위해 로드 밸런싱된 백엔드의 테이블(예를 들어, 레코드(162))로 프로그래밍된다. 그러면 엔드 호스트는 해당 클라이언트(120)로부터의 향후 연결을 위해 독립적으로 백엔드를 선택할 수 있다. 여기서, 이러한 연결은 별도로 오프로딩될 필요가 없다.
일부 구현예에서, 방화벽은 <source IP range, destination IP range, protocol>의 입도로 오프로딩된다. 이 모델에서, 오프로딩이 발생하면, 엔드 호스트는 주어진 소스 IP 범위, 목적지 IP 범위 및 프로토콜에 대해 방화벽이 허용하는 포트를 나타내는 방화벽 분류기로 프로그래밍된다. 예를 들어, 미들 박스(160)에 구성된 수천 개의 방화벽 규칙이 목적지 IP 접두사 10.0.0.0/8에 기초하여 TCP 포트(22 및 80)이 허용되어야 함을 나타내면, 이 모델의 구현예는 tcp:22,80가 엔드 호스트에 허용되어야 한다고 나타내는 방화벽 분류자를 오프로딩할 것이다. 여기서 주요 확장 이점은 모든 엔드 호스트에서 모든 방화벽 규칙을 프로그래밍할 필요가 없다는 것이다. 이 모델에서, 상태 저장 방화벽은 오프로딩시 연결 추적 상태가 전송될 것을 요구한다. 추가적으로 또는 대안적으로, 방화벽은 <source IP range, destination IP range>의 입도에서 오프로딩될 것이지만, 이 수준의 입도는 방화벽 분류자가 프로토콜 정보를 전달해야하기 때문에 더 큰 방화벽 분류자를 결과로 한다.
NAPT 기능을 오프로딩할 때, 미들 박스 관리자(200)는 주어진 송신자와 연관된 모든 이그레스(egress) 흐름을 오프로드할 수 있다. 오프로딩이 발생하면, SDN 컨트롤러는 엔드 호스트가 송신자에 의해 개시된 향후 연결에 할당할 수 있는 IP 및 포트 세트를 사용하여 엔드 호스트를 프로그래밍한다. 일부 예에서, 엔드 호스트가 모든 지정된 IP 및 포트를 소진할 때, 엔드 호스트가 IP 및 포트를 분석할 때까지(예를 들어, 컨트롤러로부터 다른 IP 및 포트 세트를 수신할 때까지) 미래의 연결이 미들 박스(160)로 되돌아 갈 수 있다. 이 모델에서 오프로딩이 발생하면 기존의 연결 추적 상태는 미들 박스(160)로부터 엔드 호스트로 전송되어야 한다.
일부 구현예에서, 오프로딩을 제어하기 위해, 미들 박스(160) 및/또는 미들 박스 관리자(200)는 프로그래밍 가능한 소프트웨어 또는 하드웨어(예를 들어, ASIC(application specific integrated circuits) 또는 FPGA(field programmable grid-array))이다. 여기서, 소프트웨어 또는 하드웨어는 엔드 호스트, 엔드 호스트에 인접(예: bump-in-the-wire 토폴로지)하거나 랙 상단 스위치에 위치될 수 있다.
도 3은 가상 네트워크 기능을 마이그레이션하는 방법(300)의 예이다. 미들 박스 관리자(200)는 방법(300)을 실행할 수 있다. 물리적 네트워크 레이어(102)의 데이터 프로세싱 하드웨어 또는 다른 데이터 프로세싱 하드웨어는 미들 박스 관리자(200)를 실행할 수 있다. 동작(302)에서, 방법(300)은 네트워크 흐름을 수신하고 하나 이상의 백엔드 VM(150)과 통신하는 미들 박스(160)를 식별한다. 동작(304)에서, 방법(300)은 미들 박스(160)의 네트워크 흐름에 대응하는 흐름 통계(메트릭스(202)라고도 함)를 수신한다. 동작(306)에서, 방법(300)은 흐름 통계가 오프로드 규칙(211)을 만족하는지 여부를 결정한다. 여기서, 오프로드 규칙(211)은 네트워크 흐름을 미들 박스(160)로부터 엔드 호스트로 마이그레이션 할 시기를 나타낸다. 동작(308)에서, 흐름 통계가 오프로드 규칙(211)을 만족하면, 방법(300)은 네트워크 흐름을 미들 박스(160)로부터 엔드 호스트로 마이그레이션한다.
도 4는 본 문서에 기술된 시스템 및 방법을 구현하는데 사용될 수 있는 예시적 컴퓨팅 디바이스(400)의 개략도이다. 컴퓨팅 디바이스(400)는 랩톱, 데스크톱, 워크 스테이션, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 메인 프레임 및 다른 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터들을 나타내기 위한 것이다. 여기에 도시된 컴포넌트들, 그들의 연결 및 관계, 및 그들의 기능은 단지 예시적인 것을 의미하며, 본 명세서에 기술된 및/또는 청구된 발명의 구현을 제한하는 것을 의미하지는 않는다.
컴퓨팅 디바이스(400)는 프로세서(410), 메모리(420), 저장 디바이스(430), 메모리(420) 및 고속 확장 포트(450)에 연결되는 고속 인터페이스/제어기(440) 및 저속 버스(470) 및 저장 디바이스(430)에 연결되는 저속 인터페이스/제어기(460)를 포함한다. 컴포넌트들(410, 420, 430, 440, 450 및 460) 각각은 다양한 버스들을 사용하여 상호 연결되고, 공통 마더 보드 상에 또는 적절한 다른 방식으로 장착될 수 있다. 프로세서(410)(예: 데이터 프로세싱 하드웨어)는 메모리(420) 또는 저장 디바이스(430)에 저장된 명령어들을 포함하는, 컴퓨팅 디바이스(400) 내에서 실행하기 위한 명령어들을 프로세싱하여, 고속 인터페이스(440)에 연결된 디스플레이(480)와 같은 외부 입/출력 디바이스상에 그래픽 사용자 인터페이스(GUI)에 대한 그래픽 정보를 디스플레이할 수 있다. 예를 들어, 미들 박스 관리자(200)는 프로세서(410)(예: 데이터 프로세싱 하드웨어)에서 실행될 수 있다. 메모리(420) 및 저장 디바이스(430)는 데이터 프로세싱 하드웨어(예: 프로세서(410))와 통신하는 메모리 하드웨어에 대응할 수 있다. 다른 구현예에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수의 유형의 메모리와 함께, 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(400)은 필요한 동작의 부분들을 제공하는 각 디바이스와 연결될 수 있다(예를 들어, 서버 뱅크, 블레이드 서버 그룹 또는 멀티 프로세서 시스템).
메모리(420)는 컴퓨팅 디바이스(400) 내에 비일시적으로 정보를 저장한다. 메모리(420)는 컴퓨터 판독가능 매체, 휘발성 메모리 유닛(들), 비휘발성 메모리 유닛(들)일 수 있다. 비일시적 메모리(420)는 컴퓨팅 디바이스(400)에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램(예를 들어, 명령어 시퀀스) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는데 사용되는 물리적 디바이스일 수 있다. 비휘발성 메모리의 예는 플래시 메모리 및 읽기 전용 메모리(ROM)/프로그래밍 가능한 읽기 전용 메모리(PROM)/지울 수 있는 프로그램 가능한 읽기 전용 메모리(EPROM)/전자적으로 지울 수 있는 프로그래밍 가능한 읽기 전용 메모리(EEPROM)(예: 일반적으로 부팅 프로그램과 같은 펌웨어에 사용됨)를 포함하지만, 이에 한정되지 않는다. 휘발성 메모리의 예는 RAM(Random Access Memory), DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), PCM(Phase Change Memory), 디스크 또는 테이프 등을 포함하지만, 이에 한정되지 않는다.
저장 디바이스(430)는 컴퓨팅 디바이스(400)에 대한 대형 스토리지를 제공할 수 있다. 일부 구현예에서, 저장 디바이스(430)는 컴퓨터 판독가능 매체이다. 다양한 상이한 구현예에서, 저장 디바이스(430)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성의 디바이스를 포함하는 디바이스의 어레이일 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어에 유형적으로 수록된다. 컴퓨터 프로그램 제품은 또한 실행될 때 상기 기술된 바와 같은 하나 이상의 방법을 수행하는 명령어들을 포함한다. 정보 캐리어는 메모리(420), 저장 디바이스(430) 또는 프로세서(410)상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체이다.
고속 제어기(440)는 컴퓨팅 디바이스(400)에 대한 대역폭 집중 동작들을 관리하는 반면, 저속 제어기(460)는 낮은 대역폭 집중 동작들을 관리한다. 이러한 기능들의 할당은 단지 예시적인 것이다. 일부 구현예에서, 고속 제어기(440)는 메모리(420), 디스플레이(480)(예를 들어, 그래픽 프로세서 또는 가속기를 통해) 및 다양한 확장 카드(도시되지 않음)를 수용할 수 있는 고속 확장 포트(450)에 연결된다. 일부 구현예에서, 저속 제어기(460)는 저장 디바이스(430) 및 저속 확장 포트(490)에 연결된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트(490)는 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입력/출력 디바이스 또는 예를 들어 네트워크 어댑터를 통해 스위치 또는 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
컴퓨팅 디바이스(400)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 표준 서버(400a)로서 또는 그러한 서버(400a)의 그룹에서 여러 번, 랩톱 컴퓨터(400b)로서 또는 랙 서버 시스템(400c)의 일부로서 구현될 수 있다.
본 명세서에 기술된 시스템들 및 기법들의 다양한 구현예들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특수하게 설계된 ASIC들(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 구현될 수 있다. 이들 다양한 구현예들은 적어도 하나의 프로그래머블 프로세서를 포함하는 프로그래머블 시스템 상에서 실행가능하고 및/또는 인터프리트가능한 하나 이상의 컴퓨터 프로그램들에서의 구현예를 포함할 수 있고, 이는 전용 또는 범용일 수 있고, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령어들을 수신하고 그에 데이터 및 명령어들을 전송하기 위해 연결될 수 있다.
이들 컴퓨터 프로그램들(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로도 알려짐)은 프로그래머블 프로세서에 대한 기계 명령어들을 포함하며, 하이레벨 절차어 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/기계어에서 구현될 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "기계 판독가능 매체", "컴퓨터 판독가능 매체"는 기계 판독가능 신호로서 기계 명령어들을 수신하는 기계 판독가능 매체를 포함하여, 기계 명령어들 및/또는 데이터를 프로그래머블 프로세서에 제공하는데 사용되는 임의의 컴퓨터 프로그램 물, 장치 및/또는 디바이스 예를 들어, 자기 디스크, 광학 디스크, 메모리, 비일시적 컴퓨터 판독가능 매체, 프로그래머블 로직 디바이스(PLD)를 지칭한다. 용어 “기계 판독가능 신호”는 기계 명령어들 및/또는 데이터를 프로그래머블 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 개시의 하나 이상의 양태는 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터 또는 터치 스크린과 같은 디스플레이 디바이스 및 선택적으로 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹브라우저에 웹페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
다수의 구현예들이 기술되었다. 그럼에도 불구하고, 다양한 수정들이 본 발명의 정신과 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현예들도 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 데이터 프로세싱 하드웨어에 의해 실행될 때 상기 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 컴퓨터로 구현되는 방법으로서, 상기 동작들은:
    네트워크 흐름을 수신하고 가상 네트워크 레이어에서 가상 네트워크 엔드포인트에 대응하는 하나 이상의 백엔드 가상 머신과 통신하는 미들 박스를 식별하는 동작;
    네트워크 연결과 하나 이상의 백엔드 가상 머신 간의 네트워크 로드를 밸런싱하도록 구성된 로드 밸런서로부터, 네트워크 흐름을 미들박스로부터 엔드 호스트로 마이그레이션하라는 표시를 수신하는 동작;
    네트워크 흐름을 상기 미들박스로부터 최종 호스트로 마이그레이션하라는 표시를 수신하는 것에 응답하여, 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작; 및
    상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 것에 응답하여, 각각의 네트워크 연결을 하나 이상의 백엔드 가상 머신 중 대응하는 것에 매핑하는 연결 테이블을 업데이트하는 동작을 포함하는, 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서, 상기 미들박스는 제2 로드 밸런서를 포함하는, 컴퓨터로 구현되는 방법.
  3. 청구항 1에 있어서, 상기 미들박스는 방화벽을 포함하는, 컴퓨터로 구현되는 방법.
  4. 청구항 1에 있어서, 상기 미들박스는 네트워크 라우팅을 수행하도록 구성된 단일 네트워크 디바이스와 연관되는, 컴퓨터로 구현되는 방법.
  5. 청구항 1에 있어서, 상기 네트워크 흐름을 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 것을 포함하는, 컴퓨터로 구현되는 방법.
  6. 청구항 5에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은:
    상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 것;
    상기 네트워크 연결 요청이 새로운 네트워크 연결에 대응한다고 결정하는 것;
    상기 새로운 네트워크 연결로 상기 엔드-호스트 연결 테이블을 업데이트하는 것; 및
    상기 엔드 호스트에서 상기 새로운 네트워크 연결을 위해 상기 네트워크 흐름을 제어하는 것을 포함하는, 컴퓨터로 구현되는 방법.
  7. 청구항 6에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 마이그레이션하는 동작은:
    상기 연결 테이블을 상기 미들박스로부터 엔드 호스트로 전송하는 것; 및
    상기 연결 테이블이 상기 미들박스로부터 엔드 호스트로 전송되면, 상기 엔드 호스트와 미들박스 간의 통신을 중단하는 것을 포함하는, 컴퓨터로 구현되는 방법.
  8. 청구항 1에 있어서, 상기 동작들은 상기 네트워크 흐름을 사용하여 가상 네트워크 레이어에서 상태 저장 네트워크 기능을 수행하는 동작을 더 포함하는, 컴퓨터로 구현되는 방법.
  9. 청구항 1에 있어서, 상기 미들박스는 일관된 해싱에 기초하여 상기 하나 이상의 백엔드 가상 머신과 통신하도록 구성되는, 컴퓨터로 구현되는 방법.
  10. 청구항 1에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은:
    상기 미들 박스와 통신하는 상기 하나 이상의 백엔드 가상 머신의 각 백엔드 가상 머신의 제1 헬스 특성이 정상 상태를 표시하는지 식별하는 것; 및
    상기 엔드 호스트에 대응하는 제2 헬스 특성이 상기 제1 헬스 특성의 정상 상태와 매칭된다고 결정하는 것을 더 포함하는, 컴퓨터로 구현되는 방법.
  11. 시스템으로서,
    데이터 프로세싱 하드웨어; 및
    상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함하고, 상기 메모리 하드웨어는 명령어를 저장하며, 상기 명령어는 상기 데이터 프로세싱 하드웨어에서 실행될 때 상기 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    네트워크 흐름을 수신하고 가상 네트워크 레이어에서 가상 네트워크 엔드포인트에 대응하는 하나 이상의 백엔드 가상 머신과 통신하는 미들 박스를 식별하는 동작;
    네트워크 연결과 하나 이상의 백엔드 가상 머신 간의 네트워크 로드를 밸런싱하도록 구성된 로드 밸런서로부터, 네트워크 흐름을 미들박스로부터 엔드 호스트로 마이그레이션하라는 표시를 수신하는 동작;
    네트워크 흐름을 상기 미들박스로부터 최종 호스트로 마이그레이션하라는 표시를 수신하는 것에 응답하여, 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작; 및
    상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 것에 응답하여, 각각의 네트워크 연결을 하나 이상의 백엔드 가상 머신 중 대응하는 것에 매핑하는 연결 테이블을 업데이트하는 동작을 포함하는, 시스템.
  12. 청구항 11에 있어서, 상기 미들박스는 제2 로드 밸런서를 포함하는, 시스템.
  13. 청구항 11에 있어서, 상기 미들박스는 방화벽을 포함하는, 시스템.
  14. 청구항 11에 있어서, 상기 미들박스는 네트워크 라우팅을 수행하도록 구성된 단일 네트워크 디바이스와 연관되는, 시스템.
  15. 청구항 11에 있어서, 상기 네트워크 흐름을 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은 엔드 호스트에서 엔드-호스트 연결 테이블을 개시하는 것을 포함하는, 시스템.
  16. 청구항 15에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은:
    상기 엔드 호스트에서 수신된 네트워크 연결 요청을 식별하는 것;
    상기 네트워크 연결 요청이 새로운 네트워크 연결에 대응한다고 결정하는 것;
    상기 새로운 네트워크 연결로 상기 엔드-호스트 연결 테이블을 업데이트하는 것; 및
    상기 엔드 호스트에서 상기 새로운 네트워크 연결을 위해 상기 네트워크 흐름을 제어하는 것을 포함하는, 시스템.
  17. 청구항 16에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 마이그레이션하는 동작은:
    상기 연결 테이블을 상기 미들박스로부터 엔드 호스트로 전송하는 것; 및
    상기 연결 테이블이 상기 미들박스로부터 엔드 호스트로 전송되면, 상기 엔드 호스트와 미들박스 간의 통신을 중단하는 것을 포함하는, 시스템.
  18. 청구항 11에 있어서, 상기 동작들은 상기 네트워크 흐름을 사용하여 가상 네트워크 레이어에서 상태 저장 네트워크 기능을 수행하는 동작을 더 포함하는, 시스템.
  19. 청구항 11에 있어서, 상기 미들박스는 일관된 해싱에 기초하여 상기 하나 이상의 백엔드 가상 머신과 통신하도록 구성되는, 시스템.
  20. 청구항 11에 있어서, 상기 네트워크 흐름을 상기 미들박스로부터 엔드 호스트로 마이그레이션하는 동작은:
    상기 미들 박스와 통신하는 상기 하나 이상의 백엔드 가상 머신의 각 백엔드 가상 머신의 제1 헬스 특성이 정상 상태를 표시하는지 식별하는 것; 및
    상기 엔드 호스트에 대응하는 제2 헬스 특성이 상기 제1 헬스 특성의 정상 상태와 매칭된다고 결정하는 것을 더 포함하는, 시스템.
KR1020247003428A 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션 KR102659644B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/219,929 US11070475B2 (en) 2018-12-13 2018-12-13 Transparent migration of virtual network functions
US16/219,929 2018-12-13
PCT/US2019/060256 WO2020123066A1 (en) 2018-12-13 2019-11-07 Transparent migration of virtual network functions
KR1020217017570A KR102632518B1 (ko) 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217017570A Division KR102632518B1 (ko) 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션

Publications (2)

Publication Number Publication Date
KR20240017134A true KR20240017134A (ko) 2024-02-06
KR102659644B1 KR102659644B1 (ko) 2024-04-22

Family

ID=69160077

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247003428A KR102659644B1 (ko) 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션
KR1020217017570A KR102632518B1 (ko) 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217017570A KR102632518B1 (ko) 2018-12-13 2019-11-07 가상 네트워크 기능의 투명 마이그레이션

Country Status (5)

Country Link
US (3) US11070475B2 (ko)
EP (2) EP4307640A3 (ko)
KR (2) KR102659644B1 (ko)
CN (1) CN113424501A (ko)
WO (1) WO2020123066A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11115322B1 (en) 2019-03-27 2021-09-07 Amazon Technologies, Inc. Stateful network router for managing network appliances
US11310309B1 (en) 2020-12-11 2022-04-19 Amazon Technologies, Inc. Arc jump: per-key selection of an alternative server when implemented bounded loads
US11140220B1 (en) * 2020-12-11 2021-10-05 Amazon Technologies, Inc. Consistent hashing using the power of k choices in server placement
US11258846B1 (en) 2021-05-26 2022-02-22 Capital One Services, Llc Real-time serverless streaming in a multi-cloud environment
US11909656B1 (en) * 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090086651A1 (en) * 2007-10-02 2009-04-02 Luft Siegfried J Intelligent collection and management of flow statistics
US20180109606A1 (en) * 2016-10-14 2018-04-19 Google Inc. Virtual router with dynamic flow offload capability

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
CN1599351A (zh) * 2003-12-17 2005-03-23 浪潮电子信息产业股份有限公司 构建高性价比机群网络负载均衡转发器的方法
US7738452B1 (en) * 2005-06-22 2010-06-15 Cisco Technology, Inc. Techniques for load balancing subscriber-aware application proxies
US8473557B2 (en) * 2010-08-24 2013-06-25 At&T Intellectual Property I, L.P. Methods and apparatus to migrate virtual machines between distributive computing networks across a wide area network
CN101986666B (zh) * 2010-11-05 2013-07-24 清华大学 基于虚拟网络接口和反向地址转换的网络数据传输方法
US10142218B2 (en) * 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US9203703B2 (en) * 2011-08-17 2015-12-01 Nicira, Inc. Packet conflict resolution
US8913611B2 (en) 2011-11-15 2014-12-16 Nicira, Inc. Connection identifier assignment and source network address translation
WO2013126442A1 (en) * 2012-02-20 2013-08-29 Virtustream Canada Holdings, Inc. Systems involving firewall of virtual machine traffic and methods of processing information associated with same
CN103491053A (zh) * 2012-06-08 2014-01-01 北京百度网讯科技有限公司 Udp负载均衡方法、系统及装置
US9407557B2 (en) * 2012-12-22 2016-08-02 Edgewater Networks, Inc. Methods and systems to split equipment control between local and remote processing units
US20150006730A1 (en) * 2013-06-27 2015-01-01 Sap Ag Enabling multi-tenant virtual servers in a cloud system
US20160274951A1 (en) * 2013-11-26 2016-09-22 Nec Corporation Virtual middle box management system, virtual middle box management method, and virtual middle box management program
US20150180769A1 (en) * 2013-12-20 2015-06-25 Alcatel-Lucent Usa Inc. Scale-up of sdn control plane using virtual switch based overlay
US9635114B2 (en) 2014-01-24 2017-04-25 Netapp, Inc. Externally initiated application session endpoint migration
WO2015187946A1 (en) * 2014-06-05 2015-12-10 KEMP Technologies Inc. Adaptive load balancer and methods for intelligent data traffic steering
US9667543B2 (en) * 2014-08-08 2017-05-30 Microsoft Technology Licensing, Llc Routing requests with varied protocols to the same endpoint within a cluster
US10409649B1 (en) * 2014-09-30 2019-09-10 Amazon Technologies, Inc. Predictive load balancer resource management
US9667560B2 (en) * 2014-12-24 2017-05-30 Nicira, Inc. Flow sequencing
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US9712386B1 (en) * 2015-02-18 2017-07-18 Amazon Technologies, Inc. Grouping routing resources for isolated virtual network traffic management
US10536357B2 (en) * 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US20170070912A1 (en) * 2015-09-08 2017-03-09 Argela-USA, Inc. Method and apparatus for programmable spectrum switching licensed and unlicensed spectrum
US9781037B2 (en) * 2015-09-15 2017-10-03 Cisco Technology, Inc. Method and apparatus for advanced statistics collection
US20170126789A1 (en) * 2015-10-30 2017-05-04 AppDynamics, Inc. Automatic Software Controller Configuration based on Application and Network Data
US9998371B2 (en) * 2015-12-16 2018-06-12 Nicira, Inc. Packet communication between container data compute nodes and a managed forwarding element
US10063469B2 (en) * 2015-12-16 2018-08-28 Nicira, Inc. Forwarding element implementation for containers
US10348687B2 (en) 2015-12-18 2019-07-09 Worcester Polytechnic Institute Method and apparatus for using software defined networking and network function virtualization to secure residential networks
WO2017113273A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种软件定义数据中心及其中的服务集群的调度和流量监控方法
JP6505172B2 (ja) * 2016-08-25 2019-04-24 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation 仮想ネットワーク環境で仮想スイッチを利用してロードバランシングを処理する方法およびシステム
US10320895B2 (en) * 2016-11-15 2019-06-11 Microsoft Technology Licensing, Llc Live migration of load balanced virtual machines via traffic bypass
CN106850459B (zh) * 2017-02-27 2020-02-04 苏州浪潮智能科技有限公司 一种实现虚拟网络负载均衡的方法及装置
US10331973B2 (en) * 2017-06-26 2019-06-25 Nicira, Inc. System and method for deploying graphical diagram topologies
US11128700B2 (en) * 2018-01-26 2021-09-21 Cisco Technology, Inc. Load balancing configuration based on traffic flow telemetry

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090086651A1 (en) * 2007-10-02 2009-04-02 Luft Siegfried J Intelligent collection and management of flow statistics
US20180109606A1 (en) * 2016-10-14 2018-04-19 Google Inc. Virtual router with dynamic flow offload capability

Also Published As

Publication number Publication date
KR102659644B1 (ko) 2024-04-22
WO2020123066A1 (en) 2020-06-18
EP4307640A3 (en) 2024-03-20
US20240089207A1 (en) 2024-03-14
EP3895391A1 (en) 2021-10-20
EP3895391B1 (en) 2024-01-03
KR102632518B1 (ko) 2024-02-02
CN113424501A (zh) 2021-09-21
US20200195558A1 (en) 2020-06-18
KR20210088673A (ko) 2021-07-14
US20210328927A1 (en) 2021-10-21
US11070475B2 (en) 2021-07-20
US12010024B2 (en) 2024-06-11
EP4307640A2 (en) 2024-01-17

Similar Documents

Publication Publication Date Title
US11409550B2 (en) Low latency connections to workspaces in a cloud computing environment
KR102659644B1 (ko) 가상 네트워크 기능의 투명 마이그레이션
US11438194B2 (en) Scalable tenant networks
US11848800B2 (en) Connecting virtual computer networks with overlapping IP addresses using transit virtual computer network
US10901769B2 (en) Performance-based public cloud selection for a hybrid cloud environment
US11102079B2 (en) Cross-regional virtual network peering
US7962587B2 (en) Method and system for enforcing resource constraints for virtual machines across migration
CN113454971A (zh) 基于远程智能nic的服务加速
Bankston et al. Performance of container network technologies in cloud environments
US11870647B1 (en) Mapping on-premise network nodes to cloud network nodes
US20240022452A1 (en) Dynamic on-demand virtual private network (vpn) session distribution for gateways
Ekanayake Mudiyanselage An SDN-based Framework for QoSaware Mobile Cloud Computing

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant