KR101775227B1 - 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들 - Google Patents

가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들 Download PDF

Info

Publication number
KR101775227B1
KR101775227B1 KR1020150117374A KR20150117374A KR101775227B1 KR 101775227 B1 KR101775227 B1 KR 101775227B1 KR 1020150117374 A KR1020150117374 A KR 1020150117374A KR 20150117374 A KR20150117374 A KR 20150117374A KR 101775227 B1 KR101775227 B1 KR 101775227B1
Authority
KR
South Korea
Prior art keywords
service chain
flow
memory
flow table
shared
Prior art date
Application number
KR1020150117374A
Other languages
English (en)
Other versions
KR20160035972A (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 KR20160035972A publication Critical patent/KR20160035972A/ko
Application granted granted Critical
Publication of KR101775227B1 publication Critical patent/KR101775227B1/ko

Links

Images

Classifications

    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • 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/45583Memory management, e.g. access or allocation
    • 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

Abstract

예들은, 호스트 운영 체제 및 복수의 가상 머신(VM)을 지원할 수 있는 멀티 코어 프로세서를 갖는 호스트 컴퓨팅 플랫폼을 포함할 수 있다. 지원은 멀티 코어 프로세서에 대한 처리 요소들 또는 코어들이 개별적인 VM들을 별개로 지원할 수 있는 것을 포함할 수 있다. 개별적인 VM들은 서비스 체인 흐름을 위한 패킷들을 처리하는데 이용되는 별개의 애플리케이션들을 실행가능할 수 있다. 일부 예들에서, 서비스 체인 흐름을 위한 패킷들을 개별적인 VM들 사이에 라우팅하기 위한 기술들은 적어도 일부 스위치 로직을 개별적인 VM들 사이에 분산시키는 것을 포함할 수 있다.

Description

가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들{TECHNIQUES FOR ROUTING SERVICE CHAIN FLOW PACKETS BETWEEN VIRTUAL MACHINES}
본 명세서에 설명된 실시예들은 일반적으로 가상 머신들에 의해 실행되는 애플리케이션들에 의한 처리를 위해 패킷들을 라우팅하는 것에 관한 것이다.
클라이언트 컴퓨팅 디바이스들과 연결된 네트워크 서버들을 포함할 수 있는 컴퓨팅 플랫폼들이, 하나 이상의 멀티 코어 프로세서를 포함하는 단일의 컴퓨팅 플랫폼에 의해 다수의 운영 체제 및/또는 애플리케이션이 실행될 수 있게 하는 가상 머신(들)(VM들)을 지원하거나 호스팅하도록 구성되는 것이 증가하고 있다. 멀티 코어 프로세서의 처리 요소들 또는 코어들은 복수의 VM을 지원가능할 수 있다. 각각의 VM은 적어도 하나의 애플리케이션을 별개로 실행가능할 수 있다. 일부 예들에서, 네트워크 서버들은, 로드 밸런서, 방화벽 또는 침입 검출 시스템과 같은 네트워크 서비스들의 세트를 제공하도록 구성될 수 있다. 일부 경우에, 네트워크 서비스들의 세트는 서비스 체인으로 지칭될 수 있다. 애플리케이션을 별개로 실행할 수 있는 VM들은 클라이언트로부터 수신된 네트워크 패킷들을 서비스 체인 흐름에 따라 처리하도록 구성될 수 있다.
서비스 체인 흐름을 위한 패킷들을 VM들 사이에 라우팅하도록 구성된 소프트웨어 가상 스위치들이 점점 더 일반적으로 되고 있다. 2014년 3월에 공개된 OpenFlow 스위치 규격의 버전 1.3.4 및/또는 이 표준의 이후 버전들을 포함하는 하나 이상의 산업 표준 또는 규격에 의해 기술된 것들과 같은 현재의 가상 스위칭 기술들은 서비스 체인 흐름을 위한 패킷들을 VM들 사이에 스위칭하기 위해 호스트 운영 체제 상에서 실행되거나 구동되는 하나의 가상 스위치 애플리케이션에 의존할 수 있다. 네트워크 기능 가상화(NFV: network function virtualization) 배치에서, 다수의 스레드가 가상 스위칭에 전용일 수 있다. 이들 스레드들은 멀티 코어 프로세서의 다수의 코어에 대해 밀접한 관계가 있을(affinitized) 수 있으며, 다수의 코어는 다음에 서비스 체인 흐름을 위한 패킷들을 VM들 사이에 스위칭하기 위해 주로 또는 전적으로 이용된다.
도 1은 예시적인 제1 시스템을 도시한다.
도 2는 예시적인 제2 시스템을 도시한다.
도 3은 예시적인 공유 메모리 메시를 도시한다.
도 4는 제1 장치에 대한 예시적인 블록도를 도시한다.
도 5는 제1 로직 흐름의 예를 도시한다.
도 6은 제1 저장 매체의 예를 도시한다.
도 7은 제2 장치에 대한 예시적인 블록도를 도시한다.
도 8은 제2 로직 흐름의 예를 도시한다.
도 9는 제2 저장 매체의 예를 도시한다.
도 10은 예시적인 컴퓨팅 플랫폼을 도시한다.
본 개시내용에서 예상되는 바와 같이, NFV 배치는, 멀티 코어 프로세서의 다수의 물리적 코어가 서비스 체인 흐름을 위한 패킷들을 VM들 사이에 스위칭하는데 전용화되게 할 수 있다. 다수의 물리적 코어를 전용화하는 것은 적어도 2가지 이유로 문제가 될 수 있다. 첫번째로, 다수의 코어가 소프트웨어 가상 스위치에 전용일 때, 이들 코어들은 특히 NFV 배치에서 통상적인 높은 패킷 레이트에서 병목으로 될 수 있다. 잠재적인 병목 현상은 부가적인 서비스들을 포함하도록 서비스 체인의 가능한 확장들을 제한할 수 있다. 병목 현상은 피크 패킷 트래픽 기간 동안 수락가능하지 않은 스위칭 레이턴시 및/또는 스루풋을 초래할 수 있으며, 그에 따라 수락가능하지 않은 스위칭 레이턴시 또는 성능을 회피하기 위해 서비스 체인에서의 링크들이 제한될 수 있다. 두번째로, 가상 스위치에 의해 수신된 서비스 체인 흐름을 위한 모든 패킷이 분류될 필요가 있다. 이러한 분류에 대한 필요성은 서비스 체인 흐름을 위한 패킷들을 라우팅할 때에 가상 스위치를 훨씬 더 많이 병목되게 할 수 있다. 예를 들어, 5개의 상이한 VM에 의해 실행되는 애플리케이션들에 의해 서비스되는 예시적인 서비스 체인 흐름은 이들 애플리케이션들에 의한 처리를 위해 5개의 상이한 VM들을 통해 지나가는 패킷들을 가질 수 있다. 5개의 상이한 VM을 통해 지나가는 것은 서비스 체인 흐름이 또한 가상 스위치를 6회 지나가게 할 수 있다.
스레드들이 코어들에 걸쳐 자유롭게 스케줄링되는 것을 허용하는 것, 수개의 스레드가 코어를 공유하는 것 또는 새로운 스레드들의 생성을 허용하는 것과 같이, 병목된 소프트웨어 가상 스위치의 영향들을 제한하려는 일부 시도들이 이루어졌다. 그러나, 스레드 스케줄링과 연관된 오버헤드로 인해, 성능이 악화될 수 있다. 영향들을 제한하기 위한 다른 옵션은 다수의 VM을 고정된 경로에서 함께 체인화하는 것일 수 있다. 이러한 옵션은 가상 스위치에 대한 필요성을 제거할 것이지만, VM들을 통한 서비스 체인 흐름을 위한 경로를 제어하는 능력을 또한 제거할 것이다. 이것은 주어진 서비스 체인과 연관된 워크로드 및 서비스 타입에서의 변동을 확인할 수 있는 가능성있는 동적 환경에서의 융통성을 감소시킬 수 있다. 이들 과제들과 관련하여, 본 명세서에 설명된 예들이 필요하다.
일부 제1 예들에 따르면, 서비스 체인 흐름 패킷들을 VM들 사이에 라우팅하기 위한 기술들은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 호스트 운영 체제에서, 멀티 코어 프로세서의 각각의 제2 처리 요소 및 제3 처리 요소에 의해 별개로 지원되는 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신하는 것을 포함할 수 있다. 이들 제1 예들에 있어서, 가상 스위치를 구성하는 것은, 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블(global flow table)을 발생시키는 것을 포함할 수 있다. 가상 스위치를 구성하는 것은, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝하는 것을 또한 포함할 수 있다. 가상 스위치를 구성하는 것은, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하는 것을 또한 포함할 수 있다. 다음에, 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블이 요청자에게 제공될 수 있다.
일부 제2 예들에서, 서비스 체인 흐름 패킷들을 VM들 사이에 라우팅하기 위한 기술들은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 제1 VM에서, 제1 VM에 의해 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하는 것을 포함할 수 있다. 이 기술들은, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하는 것을 또한 포함할 수 있고, 제1 흐름 테이블은, 제1 애플리케이션에 의한 서비스 체인 처리 다음에 패킷을 라우팅하기 위해 제1 VM에 의해 이용되는 것이다. 이 기술들은, 부가적인 서비스 체인 처리를 위해 패킷을 멀티 코어 프로세서의 제2 처리 요소에 의해 지원되는 제2 VM으로 라우팅하기로 결정하는 것을 또한 포함할 수 있다. 이 기술들은, 제2 VM이 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 패킷을 수신하도록, 제1 VM과 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 제2 VM으로 송신하는 것을 또한 포함할 수 있다.
도 1은 예시적인 제1 시스템을 도시한다. 일부 예들에서, 도 1에 도시된 바와 같이, 예시적인 제1 시스템은 시스템(100)을 포함한다. 시스템(100)은, 복수의 처리 요소(PE)/코어(112-1 내지 112-n)(여기서, "n"은 1보다 큰 임의의 전체 양의 정수임)를 포함하는 멀티 코어 프로세서(110)를 갖는 호스트 컴퓨팅 플랫폼(105)을 포함한다. 일부 예들에 따르면, PE/코어(112-1 내지 112-n)는 도 1에서 VM1 내지 VMm(여기서, m=n-1)으로서 도시되어 있는 VM들을 별개로 지원가능하거나 지원하도록 구성될 수 있다. 또한, 각각의 PE/코어는 (PE/코어(112-1)와 같이) 호스트 운영 체제(O/S)를 지원가능할 수 있다. 각각의 VM은 하나 이상의 애플리케이션(예를 들어, VM1 내지 VMm)을 실행하거나 구동할 수 있는 가상 중앙 처리 유닛(VCPU: virtual central processing unit)을 갖도록 구성될 수 있다.
일부 예들에 따르면, VM은, 물리 머신과 유사한, 프로그램들 또는 애플리케이션들을 실행할 수 있는 컴퓨터와 같은 머신의 소프트웨어 구현일 수 있다. VM들은, 사용량 및 실제 머신에 대한 대응 정도에 기초할 수 있는 예시적인 2가지 클래스로 분리될 수 있다. 예시적인 제1 클래스는 시스템 VM일 수 있다. 시스템 VM은 완전한 O/S의 실행을 지원하는 완전 시스템 플랫폼을 제공할 수 있다. 시스템 VM들은 기존의 아키텍처를 에뮬레이팅할 수 있고, 실제 하드웨어가 사용(예를 들어, 구식 플랫폼들 상에서의 실행)을 위해 이용가능하지 않을 수 있는 인스턴스들에서 프로그램들/애플리케이션들을 구동하기 위한 플랫폼을 제공하거나 또는 컴퓨팅 자원들의 보다 효율적인 이용을 위해 가상 머신들의 다수의 인스턴스를 갖는 목적으로 구축될 수 있다. 시스템 VM은, 사용자 또는 클라이언트의 관점에서 실제 서버로서 보여지도록 서버를 가상화하는 "컨테이너들(containers)"로서 지칭되는 다수의 격리된 사용자 공간 인스턴스를 허용하는, 컨테이너들이라고 불리는 기술에 또한 기초할 수 있다. 예시적인 제2 클래스는 프로세스 VM일 수 있다. 프로세스 VM은 단일의 프로그램/애플리케이션을 구동하고/하거나 단일의 프로세스를 지원하도록 설계될 수 있다.
일부 예들에서, 도 1에 도시된 바와 같이, 호스트 컴퓨팅 플랫폼(105)은 네트워크(140)를 통해 라우팅되는 네트워크(NW) 통신 채널(142)을 통하여 클라이언트(150)에 연결될 수 있다. 외부 NW 인터페이스(111)는, PE들/코어들(112-2 내지 112-n)에 의해 지원되는 VM1 내지 VMm에 의해 실행되는 하나 이상의 애플리케이션에 의한 궁극적인 처리를 위해 NW 통신 채널(142)을 통해 네트워크 패킷들을 수신가능할 수 있다. 메모리(120)는, 예를 들어, 이들 패킷들의 적어도 부분들을, VM1 내지 VMm에 의해 실행되는 하나 이상의 애플리케이션에 의한 수신 및/또는 후속 처리 이후에 적어도 일시적으로 유지하도록 구성될 수 있다. 일부 예들에 따르면, 호스트 컴퓨팅 플랫폼(105)은 클라이언트(150)와 같은 클라이언트들에 네트워크 서비스들을 제공하도록 구성된 데이터 센터 또는 서버 팜에 위치할 수 있다.
일부 예들에서, 도 1에 도시된 바와 같이, 네트워크 관리자(160)는 네트워크(170)를 통해 라우팅되는 내부 NW 통신 채널(172)을 통하여 호스트 컴퓨팅 플랫폼(105)에 연결될 수 있다. 일부 예들에 따르면, 내부 NW 통신 채널(172)은 컴퓨팅 플랫폼(105)에서 내부 NW 인터페이스를 통해 호스트 O/S를 지원하도록 구성된 PE/코어에 연결될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, PE/코어(112-1)는 호스트 O/S를 지원할 수 있으며, 내부 네트워크 인터페이스(113)를 통해 내부 NW 통신 채널(172)에 연결될 수 있다.
추가로 후술되는 바와 같이, 네트워크 관리자(160)와 같은 네트워크 관리자는, 서비스 체인 흐름(130)과 같은 서비스 체인 흐름을 위한 패킷들을 VM들(예를 들어, VM1 내지 VMm) 사이에 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 송신가능할 수 있다. 이 요청은 내부 NW 통신 채널(172)과 같은 내부 NW 통신 채널을 통해 송신되고, 멀티 코어 프로세서(110)의 PE/코어(112-1)와 같은 PE/코어에 의해 지원되는 호스트 O/S에 의해 수신될 수 있다. 이 요청은 내부 NW 인터페이스(113)와 같은 내부 NW 인터페이스를 통해 수신될 수 있다. 또한, 서비스 체인 흐름(130)을 위한 패킷들을 처리하기 위해 애플리케이션을 실행하는 각각의 VM과 호스트 O/S 사이에 VSwitch 제어 경로(115)와 같은 가상 스위치(VSwitch) 제어 경로가 확립될 수 있다.
일부 예들에 따르면, 추가로 후술되는 바와 같이, 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치의 구성은, VM들에 의해 별개로 실행되는 애플리케이션들에 의한 서비스 체인 처리 다음에 서비스 체인 흐름을 위한 패킷의 라우팅을 가능하게 하는 가상 스위치 로직을 VM들 사이에 분산시키는 것을 포함할 수 있다. 가상 스위치 로직을 분산시키는 것은 글로벌 흐름 테이블을 발생시키는 것, 및 다음에 VM들에 의해 실행되는 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 각각의 VM들에 의해 이용될 별개의 흐름 테이블들로 글로벌 흐름 테이블을 파티셔닝하는 것을 포함할 수 있다. 이들 예들에 있어서, 요청자(예를 들어, 네트워크 관리자(160))는 단지 글로벌 흐름 테이블을 확인하거나 글로벌 흐름 테이블에 액세스할 수 있다. 한편, 서비스 체인 흐름을 위한 패킷을 처리하기 위해 애플리케이션들을 실행하는 VM들은 단지 글로벌 흐름 테이블로부터 파티셔닝되었던 그들 각각의 흐름 테이블들을 확인하거나 그들 각각의 흐름 테이블들에 액세스할 수 있다.
일부 예들에서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있다. 예들은 이들 타입의 서비스 체인들에만 제한되지는 않고, 다른 타입들도 예상된다. 또한, 이들 예들에 있어서, 멀티 코어 프로세서의 PE들/코어들에 의해 지원되는 VM들에 의해 별개로 실행되는 애플리케이션들은 각각 서비스 체인 흐름을 위한 패킷을 처리하도록 구성될 수 있다. 서비스 체인의 타입에 종속하여, 각각의 애플리케이션은 특정 네트워크 서비스를 수행하도록 패킷을 처리할 수 있다. 예를 들어, 이메일 서비스 체인은, 바이러스, 스팸 검출 또는 피싱 검출과 같은 네트워크 서비스들을 포함할 수 있다. 서비스 제공자 서비스 체인은 예를 들어 심층 패킷 검사 또는 트래픽 모델링을 위한 네트워크 서비스들을 포함할 수 있다.
도 2는 예시적인 제2 시스템을 도시한다. 도 2에 도시된 바와 같이, 예시적인 제2 시스템은 시스템(200)을 포함한다. 일부 예들에서, 시스템(200)은, 도 1에 도시된 멀티 코어 프로세서(110)와 유사한 멀티 코어 프로세서의 일부일 수 있는 PE들/코어들(212-1 내지 212-n)을 포함할 수 있다. 일부 예들에 있어서, 도 2에 도시된 바와 같이, PE/코어(212-1)는 호스트 O/S를 지원하는 한편, PE들/코어들(212-2 내지 212-n)은 VM1 내지 VMm으로서 식별되는 VM들을 지원한다. VM1 내지 VMm은 각각의 애플리케이션들(App들) 0 내지 q를 실행가능할 수 있다(여기서, "q"는 5보다 큰 임의의 전체 양의 정수와 동등함).
일부 예들에 따르면, 네트워크 관리자(260)는, PE/코어(212-1)에 의해 지원되는 호스트 O/S에 송신되고 이것에 의해 처리되는 요청을 통해 사용자가 가상 스위치(예를 들어, 키보드/디스플레이를 갖는 터치 스크린)를 구성하는 수단을 포함할 수 있다. 이 요청은, 각각의 App(0) 내지 App(q)에 의한 처리를 위해 서비스 체인 흐름(230)을 위한 패킷들을 VM들(VM1 내지 VMm) 사이에 라우팅하도록 가상 스위치를 구성하기 위한 것일 수 있다. 이들 예들에 있어서, 가상 스위치를 구성하는 것은, 각각의 VM들(VM1 내지 VMm)에 의해 실행되는 애플리케이션들(App(0) 내지 App(q))에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따를 수 있는 경로를 사용자 또는 요청자에게 표시하는 글로벌 흐름 테이블(240)을 발생시키는 것을 포함할 수 있다. 가상 스위치를 구성하는 것은, VM1 내지 VMm 중의 각각의 VM에 대한 별개의 흐름 테이블들로 글로벌 흐름 테이블(240)을 파티셔닝하는 것, 및 다음에 각각의 VM들(VM1 내지 VMm)에 대해 이들 별개의 흐름 테이블들을 표시하는 것을 또한 포함할 수 있다. 각각의 VM이 가상 스위치 로직의 적어도 일부를 실행할 수 있는 것에 의해, 스위칭을 위해 호스트 O/S 및/또는 PE/코어(212-1) 자원들을 소모하는 것을 회피하는 것이 가능할 수 있다. 이러한 스위칭의 회피는 PE/코어 자원들을 해방할 수 있다.
일부 예들에서, 도 2에 도시된 바와 같이, VSwitch 제어 경로(115)는 각각의 애플리케이션들(App(0) 내지 App(q))을 실행하는 VM들(VM1 내지 VMm)과 호스트 O/S를 연결할 수 있다. 이들 예들에 있어서, 호스트 O/S 및/또는 PE/코어(212-1)의 로직 및/또는 피처들은 VSwitch 제어 경로(115)를 통해 별개의 흐름 테이블들을 표시가능할 수 있다. 표시하는 것은, 예를 들어, 글로벌 흐름 테이블(240)로부터 파티셔닝된 각각의 흐름 테이블들을 유지하도록 구성된 메모리(220)에서의 메모리 어드레스 범위들을 제공하는 것을 포함할 수 있다. 이들 예들에 있어서, VM1 내지 VMm에 의해 이용될 개별적인 흐름 테이블들을 제공함으로써, 각각의 VM은, 서비스 체인 흐름(230)을 위한 패킷들을, 이들 패킷들을 처리하는 애플리케이션들을 실행하도록 구성된 VM들 사이에 라우팅하도록, 가상 스위치 로직의 적어도 일부를 실행가능할 수 있다.
일부 예들에 따르면, 각각의 VM의 흐름 테이블은, 서비스 체인 흐름(230)을 위한 패킷들이 수신될 수 있는 곳을 표시하기 위해 소스 어드레스 정보(예를 들어, 소스 매체 접근 제어(MAC) 어드레스)를 포함할 수 있다. 각각의 VM의 흐름 테이블은, 특정 VM에 의해 실행되는 애플리케이션들에 의한 처리 다음에 서비스 체인 흐름(230)을 위한 패킷들이 라우팅될 수 있는 곳을 표시하기 위해 목적지 어드레스 정보(예를 들어, 목적지 MAC 어드레스)를 또한 표시할 수 있다.
도 3은 예시적인 공유 메모리 메시(300)를 도시한다. 도 3에 도시된 바와 같이, 공유 메모리 메시(300)는 공유 메모리 메시(300)를 형성하기 위해 함께 연결된 PE들/코어들(212-2 내지 212-n)을 도시한다. 일부 예들에 따르면, 공유 메모리 메시(300)는 VM1 내지 VMm 중의 각각의 VM이 도 2에 도시된 서비스 체인 흐름(230)을 위한 것들과 같은 서비스 체인을 위한 패킷들을 수신하는 것을 허용할 수 있는 공유 메모리 링(예를 들어, 동적 랜덤 액세스 메모리(DRAM))을 포함할 수 있다. 이들 예들에 있어서, 패킷들은 제로-카피 방식(zero-copy manner)으로 수신될 수 있다. 예를 들어, PE/코어(212-2)에서의 App(0)에 의한 처리 다음에, VM1은, 먼저 VM1의 흐름 테이블을 이용하여, App(0)에 의한 처리 다음에 서비스 체인 흐름(230)을 위한 하나 이상의 패킷이 저장된 공유 메모리에서의 위치를 표시하는 메시지를 VM2(목적지 VM)에 송신하기 위한 로직 및/또는 피처들을 포함할 수 있다. VM2에 의해 실행되는 App(1)에 할당된 버퍼나 메모리에 하나 이상의 패킷을 카피하는 것보다는 공유 메모리에서의 위치의 표시가 제공되기 때문에, 하나 이상의 패킷은 제로-카피 방식으로 VM2에 의해 수신될 수 있다.
도 4는 제1 장치에 대한 예시적인 블록도를 도시한다. 도 4에 도시된 바와 같이, 제1 장치는 장치(400)를 포함한다. 도 4에 도시된 장치(400)는 특정 토폴로지에서 제한된 개수의 요소들을 갖지만, 장치(400)는 주어진 구현에 대해 요구되는 바와 같이 대안적인 토폴로지들에서 더 많거나 더 적은 요소들을 포함할 수 있다는 것이 인식될 수 있다.
장치(400)는 호스트 컴퓨팅 플랫폼에 유지된 멀티 코어 프로세서의 PE/코어일 수 있는 회로(420)에 의해 지원될 수 있다. 회로(420)는 소프트웨어나 펌웨어로 구현된 하나 이상의 모듈 또는 컴포넌트(422-a)를 실행할 수 있는 VM(422)을 지원하도록 구성될 수 있다. 본 명세서에서 이용된 바와 같은 "a", "b", "c" 및 유사한 지시자들은 임의의 양의 정수를 나타내는 변수들인 것으로 의도된다는 점에 주목할 가치가 있다. 따라서, 예를 들어, 구현이 a에 대한 값=4를 설정하는 경우, 컴포넌트들(422-a)에 대한 소프트웨어 또는 펌웨어의 완전 세트는 컴포넌트들(422-1, 422-2, 422-3 또는 422-4)을 포함할 수 있다. 제시된 예들은 이 콘텍스트에서 제한되지는 않으며, 전체에 걸쳐 이용되는 상이한 변수들은 동일하거나 상이한 정수 값들을 나타낼 수 있다.
일부 예들에 따르면, 회로(420)는, AMD® Athlon®, Duron® 및 Opteron® 프로세서들; ARM® 애플리케이션, 임베디드 및 보안 프로세서들; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서들; IBM 및 Sony® 셀 프로세서들; Intel® Atom®, Celeron®, Core(2) Duo®, Core i3, Core i5, Core i7, Itanium®, Pentium®, Xeon®, Xeon Phi® 및 XScale® 프로세서들; 및 유사한 프로세서들을 포함하지만 이에 제한되지는 않는 다양한 상업적으로 입수가능한 프로세서들 중 임의의 것으로부터의 멀티 코어 프로세서의 PE/코어일 수 있다.
일부 예들에 따르면, 장치(400)는 수신 컴포넌트(422-1)를 포함할 수 있다. 수신 컴포넌트(422-1)는 회로(420)에 의해 지원되는 VM(422)에 의해 실행될 수 있다. 이들 예들에 있어서, 수신 컴포넌트(422-1)는 VM에 의해 또한 실행되는 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신할 수 있다. 패킷은 예를 들어 패킷(들)(415)에 포함될 수 있다. 수신 컴포넌트(422-1)는, 다른 VM들과 공유되는, VM에 의해 실행되는 애플리케이션에 의해 처리될 패킷의 적어도 부분들을 적어도 일시적으로 저장하는 메모리에서의 제1 위치에 대한 제1 참조를 갖는 메시지(410)에 포함된 제1 메시지의 이용을 통해 패킷을 수신할 수 있다.
일부 예들에 따르면, 장치(400)는 액세스 컴포넌트(422-2)를 포함할 수 있다. 액세스 컴포넌트(422-2)는 회로(420)에 의해 지원되는 VM(422)에 의해 실행될 수 있다. 이들 예들에 있어서, 액세스 컴포넌트(422-2)는, VM에 의해 실행되는 애플리케이션에 의한 처리 다음에 패킷을 라우팅하기 위해 복수의 흐름 테이블 중의 흐름 테이블에 액세스할 수 있다. 복수의 흐름 테이블은, 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 각각의 VM들에 의해 이용될, 글로벌 흐름 테이블로부터 파티셔닝된 별개의 흐름 테이블들일 수 있다. 흐름 테이블은 흐름 테이블(425-b)에서(예를 들어, 룩업 테이블(LUT)에서) 액세스 컴포넌트(422-2)에 의해 유지될 수 있다.
일부 예들에서, 액세스될 흐름 테이블은 구성 메시지(405)에 포함된 제2 메시지를 통해 전달되었을 수 있다. 이들 예들에 있어서, 액세스 컴포넌트(422-2)는 가상 스위치의 구성 다음에 상이한 VM에 의해 실행되는 O/S로부터 제2 메시지를 수신하였을 수 있다. 가상 스위치의 구성은 VM과 적어도 하나의 다른 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 VM에 분산시켰을 수 있다.
일부 예들에 따르면, 장치(400)는 라우팅 컴포넌트(422-3)를 포함할 수 있다. 라우팅 컴포넌트(422-3)는 회로(420)에 의해 지원되는 VM(422)에 의해 실행될 수 있다. 이들 예들에 있어서, 라우팅 컴포넌트(422-3)는 흐름 테이블(425-b)에 유지된 흐름 테이블을 이용하여, 서비스 체인 처리 다음에 패킷을, 회로(420)를 포함하는 멀티 코어 프로세서의 다른 PE/코어에 의해 지원되는 다른 VM으로 라우팅할 수 있다. 다른 VM은 부가적인 서비스 체인 처리를 수행할 수 있는 다른 애플리케이션을 실행할 수 있다.
일부 예들에서, 장치(400)는 참조 컴포넌트(422-4)를 포함할 수 있다. 참조 컴포넌트(422-4)는 회로(420)에 의해 지원되는 VM(422)에 의해 실행될 수 있다. 이들 예들에 있어서, 참조 컴포넌트(422-4)는, VM과 다른 VM들 사이에 공유되는 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제3 메시지를 다른 VM에 송신할 수 있다. 다음에, 다른 VM은 제2 위치를 이용하여 메모리로부터 패킷을 수신하고, 다른 애플리케이션이 부가적인 서비스 체인 처리를 수행하는 것을 가능하게 할 수 있다. 메시지(430)는, 다른 VM으로 송신되는, 제2 위치에 대한 제2 참조를 포함하는 제3 메시지를 포함할 수 있다.
본 명세서에는, 개시된 아키텍처의 새로운 양태들을 수행하기 위한 예시적인 방법론들을 나타내는 로직 흐름들의 세트가 포함되어 있다. 설명의 단순함을 위해 본 명세서에 제시된 하나 이상의 방법론은 일련의 동작들로서 제시되고 설명되지만, 관련 기술분야의 통상의 기술자라면, 이들 방법론들이 동작들의 순서에 의해 제한되지는 않는다는 것을 이해하고 인식할 것이다. 그것에 따르면, 일부 동작들은 본 명세서에 제시되고 설명된 것과는 상이한 순서로 그리고/또는 다른 동작들과 동시에 발생할 수 있다. 예를 들어, 관련 기술분야의 통상의 기술자라면, 방법론이 대안적으로 상태도에서와 같이 일련의 상호관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 인식할 것이다. 또한, 새로운 구현을 위해 방법론에 예시된 모든 동작이 요구되지는 않을 수 있다.
로직 흐름은 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기 또는 반도체 스토리지와 같은 적어도 하나의 비일시적인 컴퓨터 판독가능 매체 또는 머신 판독가능 매체 상에 저장된 컴퓨터 실행가능 명령어들에 의해 구현될 수 있다. 실시예들은 이 콘텍스트에서 제한되지는 않는다.
도 5는 제1 로직 흐름의 예를 도시한다. 도 5에 도시된 바와 같이, 제1 로직 흐름은 로직 흐름(500)을 포함한다. 로직 흐름(500)은 본 명세서에 설명된 하나 이상의 로직, 피처 또는 디바이스, 예컨대 장치(400)에 의해 실행되는 동작들의 일부 또는 전부를 나타낼 수 있다. 보다 구체적으로는, 로직 흐름(500)은 적어도 수신 컴포넌트(422-1), 액세스 컴포넌트(422-2), 라우팅 컴포넌트(422-3) 또는 참조 컴포넌트(422-4)에 의해 구현될 수 있다.
일부 예들에 따르면, 블록(502)에서의 로직 흐름(500)은, 멀티 코어 프로세서의 제1 PE/코어(예를 들어, 회로(420))에 의해 지원되는 제1 VM에서, 제1 VM에 의해 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신할 수 있다. 이들 예들에 있어서, 수신 컴포넌트(422-1)가 패킷을 수신할 수 있다.
일부 예들에서, 블록(504)에서의 로직 흐름(500)은, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스할 수 있는데, 제1 흐름 테이블은, 제1 애플리케이션에 의한 서비스 체인 처리 다음에 패킷을 라우팅하기 위해 제1 VM에 의해 이용되는 것이다. 이들 예들에 있어서, 액세스 컴포넌트(422-2)가 제1 흐름 테이블에 액세스할 수 있다.
일부 예들에 따르면, 블록(506)에서의 로직 흐름(500)은, 부가적인 서비스 체인 처리를 위해 패킷을 멀티 코어 프로세서의 제2 처리 요소에 의해 지원되는 제2 VM으로 라우팅하기로 결정할 수 있다. 이들 예들에 있어서, 라우팅 컴포넌트(422-3)가 제1 흐름 테이블을 이용하여, 부가적인 서비스 체인 처리를 위해 패킷을 라우팅할 제2 VM을 결정할 수 있다.
일부 예들에 따르면, 블록(508)에서의 로직 흐름(500)은, 제2 VM이 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 패킷을 수신하도록, 제1 VM과 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 제2 VM으로 송신할 수 있다. 이들 예들에 있어서, 참조 컴포넌트(422-4)가 메시지를 제2 VM으로 송신하거나 이러한 메시지의 송신을 야기시킬 수 있다.
도 6은 제1 저장 매체의 예를 도시한다. 도 6에 도시된 바와 같이, 제1 저장 매체는 저장 매체(600)를 포함한다. 저장 매체(600)는 제조물을 포함할 수 있다. 일부 예들에서, 저장 매체(600)는, 광학, 자기 또는 반도체 스토리지와 같은 임의의 비일시적인 컴퓨터 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 저장 매체(600)는 로직 흐름(500)을 구현하기 위한 명령어들과 같은 다양한 타입의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체의 예들은, 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯하여, 전자 데이터를 저장할 수 있는 임의의 유형의(tangible) 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일형 코드(compiled code), 해석형 코드(interpreted code), 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 예들은 이 콘텍스트에서 제한되지는 않는다.
도 7은 제2 장치에 대한 예시적인 블록도를 도시한다. 도 7에 도시된 바와 같이, 제1 장치는 장치(700)를 포함한다. 도 7에 도시된 장치(700)는 특정 토폴로지에서 제한된 개수의 요소들을 갖지만, 장치(700)는 주어진 구현에 대해 요구되는 바와 같이 대안적인 토폴로지들에서 더 많거나 더 적은 요소들을 포함할 수 있다는 것이 인식될 수 있다.
장치(700)는 호스트 컴퓨팅 플랫폼에 유지된 멀티 코어 프로세서의 PE/코어일 수 있는 회로(720)를 포함할 수 있다. 회로(720)는 소프트웨어나 펌웨어로 구현된 하나 이상의 모듈 또는 컴포넌트(722-a)를 실행가능할 수 있는 호스트 O/S(722)를 지원하도록 구성될 수 있다. 본 명세서에서 이용된 바와 같은 "a", "b", "c" 및 유사한 지시자들은 임의의 양의 정수를 나타내는 변수들인 것으로 의도된다는 점에 주목할 가치가 있다. 따라서, 예를 들어, 구현이 a에 대한 값=2를 설정하는 경우, 컴포넌트들(722-a)에 대한 소프트웨어 또는 펌웨어의 완전 세트는 컴포넌트들(722-1 또는 722-2)을 포함할 수 있다. 제시된 예들은 이 콘텍스트에서 제한되지는 않으며, 전체에 걸쳐 이용되는 상이한 변수들은 동일하거나 상이한 정수 값들을 나타낼 수 있다.
일부 예들에서, 회로(720)는, 장치(400)에 대해 전술한 프로세서를 포함하지만 이에 제한되지는 않는 다양한 상업적으로 입수가능한 프로세서들 중 임의의 것으로부터의 멀티 코어 프로세서의 PE/코어일 수 있다.
일부 예들에 따르면, 장치(700)는 구성 컴포넌트(722-1)를 포함할 수 있다. 구성 컴포넌트(722-1)는 회로(720)에 의해 지원되는 호스트 O/S(722)에 의해 실행될 수 있다. 이들 예들에 있어서, 구성 컴포넌트(722-1)는, 복수의 VM 중에서 2개의 VM 사이에, 예컨대 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신할 수 있다. 이들 제1 및 제2 VM은 멀티 코어 프로세서의 다른 회로(예를 들어, 다른 PE들/코어들)에 의해 별개로 지원될 수 있다. 이 요청은 구성 요청(705)에 포함될 수 있다.
일부 예들에서, 구성 컴포넌트(722-1)는, 먼저 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블을 발생시킴으로써 가상 스위치를 구성할 수 있다. 글로벌 흐름 테이블은 글로벌 흐름 테이블(724-a)에서(예를 들어, LUT에서) 또는 이 테이블과 함께 유지될 수 있다. 다음에, 구성 컴포넌트(722-1)는, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝할 수 있다. 이들 예들에 있어서, 제1 흐름 테이블 및 제2 흐름 테이블은 VM 흐름 테이블들(725-b)에서(예를 들어, LUT에서) 또는 이 테이블들과 함께 유지될 수 있다. 다음에, 구성 컴포넌트(722-1)는, 별개의 구성 메시지들에서 각각의 메시지 범위를 제1 VM 및 제2 VM에 송신함으로써, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시할 수 있다. 이들 별개의 구성 메시지들은 구성 메시지(들)(710)에 포함될 수 있다.
일부 예들에 따르면, 장치(700)는 표시 컴포넌트(722-2)를 포함할 수 있다. 표시 컴포넌트(722-2)는 회로(720)에 의해 지원되는 호스트 O/S(722)에 의해 실행될 수 있다. 이들 예들에 있어서, 액세스 컴포넌트(722-2)는 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블을 요청자에게 제공할 수 있다. 표시 컴포넌트(722-2)는, 예를 들어, 글로벌 흐름 테이블(724-a)에 유지된 글로벌 흐름 테이블의 카피를 송신하거나, 또는 요청자가 글로벌 흐름 테이블(724-a)에 유지된 글로벌 흐름 테이블의 저장된 버전에 액세스하는 것을 허용할 수 있다. 글로벌 흐름 테이블에 액세스하기 위한 정보 또는 글로벌 흐름 테이블의 카피는 구성 응답 메시지(715)에 포함될 수 있다.
본 명세서에는, 개시된 아키텍처의 새로운 양태들을 수행하기 위한 예시적인 방법론들을 나타내는 로직 흐름들의 세트가 포함되어 있다. 설명의 단순함을 위해 본 명세서에 제시된 하나 이상의 방법론은 일련의 동작들로서 제시되고 설명되지만, 관련 기술분야의 통상의 기술자라면, 이들 방법론들이 동작들의 순서에 의해 제한되지는 않는다는 것을 이해하고 인식할 것이다. 그것에 따르면, 일부 동작들은 본 명세서에 제시되고 설명된 것과는 상이한 순서로 그리고/또는 다른 동작들과 동시에 발생할 수 있다. 예를 들어, 관련 기술분야의 통상의 기술자라면, 방법론이 대안적으로 상태도에서와 같이 일련의 상호관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 인식할 것이다. 또한, 새로운 구현을 위해 방법론에 예시된 모든 동작이 요구되지는 않을 수 있다.
도 8은 제2 로직 흐름의 예를 도시한다. 도 8에 도시된 바와 같이, 제1 로직 흐름은 로직 흐름(800)을 포함한다. 로직 흐름(800)은 본 명세서에 설명된 하나 이상의 로직, 피처 또는 디바이스, 예컨대 장치(700)에 의해 실행되는 동작들의 일부 또는 전부를 나타낼 수 있다. 보다 구체적으로는, 로직 흐름(800)은 적어도 구성 컴포넌트(722-1) 또는 표시 컴포넌트(422-2)에 의해 구현될 수 있다.
일부 예들에 따르면, 블록(802)에서의, 로직 흐름(800)은, 멀티 코어 프로세서의 제1 PE/코어(예를 들어, 회로(720))에 의해 지원되는 호스트 O/S에서, 멀티 코어 프로세서의 각각의 제2 처리 요소 및 제3 처리 요소에 의해 별개로 지원되는 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신할 수 있다. 이들 예들에 있어서, 구성 컴포넌트(722-1)가 요청을 수신할 수 있다.
일부 예들에 있어서, 스위치를 구성하기 위한 로직 흐름(800)은, 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블을 발생시키는 블록(804)에서의 로직 흐름(800)을 포함할 수 있다. 블록(806)에서, 스위치를 구성하는 것은, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝하는 것을 또한 포함할 수 있다. 블록(808)에서, 스위치를 구성하는 것은, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하는 것을 또한 포함할 수 있다. 이들 예들에 있어서, 구성 컴포넌트(722-1)가 블록들(804 내지 808)에 대해 전술한 바와 같이 가상 스위치를 구성할 수 있다.
일부 예들에 따르면, 블록(810)에서의 로직 흐름(800)은, 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블을 요청자에게 제공할 수 있다. 이들 예들에 있어서, 표시 컴포넌트(722-2)가 글로벌 흐름 테이블을 요청자에게 제공할 수 있다.
도 9는 제2 저장 매체의 예를 도시한다. 도 9에 도시된 바와 같이, 제1 저장 매체는 저장 매체(900)를 포함한다. 저장 매체(900)는 제조물을 포함할 수 있다. 일부 예들에서, 저장 매체(900)는, 광학, 자기 또는 반도체 스토리지와 같은 임의의 비일시적인 컴퓨터 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 저장 매체(900)는 로직 흐름(800)을 구현하기 위한 명령어들과 같은 다양한 타입의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체의 예들은, 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯하여, 전자 데이터를 저장할 수 있는 임의의 유형의 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일형 코드, 해석형 코드, 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 예들은 이 콘텍스트에서 제한되지는 않는다.
도 10은 예시적인 컴퓨팅 플랫폼(1000)을 도시한다. 일부 예들에서, 도 10에 도시된 바와 같이, 컴퓨팅 플랫폼(1000)은 처리 컴포넌트(1040), 다른 플랫폼 컴포넌트들 또는 통신 인터페이스(1060)를 포함할 수 있다. 일부 예들에 따르면, 컴퓨팅 플랫폼(1000)은 도 1에 도시된 호스트 컴퓨팅 플랫폼(105)과 같은 호스트 컴퓨팅 플랫폼으로 구현될 수 있다.
일부 예들에 따르면, 처리 컴포넌트(1040)는 장치(400/700) 및/또는 저장 매체(600/900)를 위한 처리 동작들 또는 로직을 실행할 수 있다. 처리 컴포넌트(1040)는 다양한 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 프로세서 회로, 회로 요소(예를 들어, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC), 프로그래머블 로직 디바이스(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 디바이스 드라이버, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 예가 하드웨어 요소들을 이용하여 구현되는지 그리고/또는 소프트웨어 요소들을 이용하여 구현되는지를 판정하는 것은, 주어진 예에 대해 요구되는 바와 같이, 원하는 계산 레이트, 전력 레벨, 내열성, 처리 사이클 버짓(processing cycle budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도, 및 다른 설계나 성능 제약과 같은 임의의 개수의 인자들에 따라 변할 수 있다.
일부 예들에서, 다른 플랫폼 컴포넌트들(1050)은, 하나 이상의 프로세서, 멀티 코어 프로세서, 코프로세서, 메모리 유닛, 칩셋, 컨트롤러, 주변 장치, 인터페이스, 발진기, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입/출력(I/O) 컴포넌트(예를 들어, 디지털 디스플레이), 전원 등과 같은 통상적인 컴퓨팅 요소들을 포함할 수 있다. 메모리 유닛들의 예들은, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), DDRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), 정적 RAM(SRAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 강유전체 폴리머 메모리와 같은 폴리머 메모리, 오보닉 메모리(ovonic memory), 상변화 또는 강유전체 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광학 카드, RAID(Redundant Array of Independent Disk) 드라이브들과 같은 디바이스들의 어레이, 고체 상태 메모리 디바이스(예를 들어, USB 메모리), SSD(solid state drive), 및 정보를 저장하기에 적합한 임의의 다른 타입의 저장 매체와 같은 하나 이상의 고속 메모리 유닛의 형태의 다양한 타입의 컴퓨터 판독가능 및 머신 판독가능 저장 매체를 포함할 수 있지만, 이에 제한되지는 않는다.
일부 예들에서, 통신 인터페이스(1060)는 통신 인터페이스를 지원하기 위한 로직 및/또는 피처들을 포함할 수 있다. 이들 예들에 있어서, 통신 인터페이스(1060)는, 직접 또는 네트워크 통신 링크들을 통해 통신하기 위해 다양한 통신 프로토콜들 또는 표준들에 따라 동작하는 하나 이상의 통신 인터페이스를 포함할 수 있다. 직접 통신은 PCIe 규격과 연관된 것들과 같은 하나 이상의 산업 표준(파생물 및 변형물을 포함함)에 기술된 통신 프로토콜들 또는 표준들의 이용을 통해 일어날 수 있다. 네트워크 통신은 IEEE에 의해 공표된 하나 이상의 이더넷 표준에 기술된 것들과 같은 통신 프로토콜들 또는 표준들의 이용을 통해 일어날 수 있다. 예를 들어, 하나의 이러한 이더넷 표준은 IEEE 802.3을 포함할 수 있다. 네트워크 통신은 OpenFlow 스위치 규격과 같은 하나 이상의 OpenFlow 규격에 따라 또한 일어날 수 있다.
전술한 바와 같이, 컴퓨팅 플랫폼(1000)은 호스트 컴퓨팅 플랫폼으로 구현될 수 있다. 따라서, 본 명세서에 설명된 컴퓨팅 플랫폼(1000)의 기능들 및/또는 특정 구성들은, 서버 또는 클라이언트 컴퓨팅 디바이스에 대해 적합하게 요구된 바와 같이, 컴퓨팅 플랫폼(1000)의 다양한 실시예들에서 포함되거나 생략될 수 있다.
컴퓨팅 플랫폼(1000)의 컴포넌트들 및 피처들은, 이산 회로, 주문형 집적 회로들(ASIC들), 로직 게이트들 및/또는 싱글 칩 아키텍처들의 임의의 조합을 이용하여 구현될 수 있다. 또한, 컴퓨팅 플랫폼(1000)의 피처들은 적절한 경우에 마이크로컨트롤러들, 프로그래머블 로직 어레이들 및/또는 마이크로프로세서들, 또는 전술한 것들의 임의의 조합을 이용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 요소들은 집합적으로 또는 개별적으로 본 명세서에서 "로직" 또는 "회로"로 지칭될 수 있다는 점에 유의한다.
도 10의 블록도에 도시된 예시적인 컴퓨팅 플랫폼(1000)은 많은 잠재적인 구현들 중 하나의 기능적으로 기술하는 예를 나타낼 수 있다는 것이 인식되어야 한다. 따라서, 첨부 도면들에 도시된 블록 기능들의 분할, 생략 또는 포함은, 이들 기능들을 구현하기 위한 하드웨어 컴포넌트들, 회로들, 소프트웨어 및/또는 요소들이 실시예들에서 반드시 분할되거나, 생략되거나 또는 포함될 것임을 암시하지는 않는다.
적어도 하나의 예의 하나 이상의 양태는, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 판독될 때, 이 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금, 본 명세서에 설명된 기술들을 수행하는 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 나타내는 적어도 하나의 머신 판독가능 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. "IP 코어들"로서 공지된 이러한 표현들은 유형의 머신 판독가능 매체 상에 저장되고, 다양한 고객들 또는 제조 설비들에 공급되어, 로직 또는 프로세서를 실제로 제조하는 제조 머신들로 로딩될 수 있다.
다양한 예들은 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 이용하여 구현될 수 있다. 일부 예들에서, 하드웨어 요소들은 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 회로 요소(예를 들어, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC), 프로그래머블 로직 디바이스(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 일부 예들에서, 소프트웨어 요소들은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 예가 하드웨어 요소들을 이용하여 구현되는지 그리고/또는 소프트웨어 요소들을 이용하여 구현되는지를 판정하는 것은, 주어진 예에 대해 요구되는 바와 같이, 원하는 계산 레이트, 전력 레벨, 내열성, 처리 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도, 및 다른 설계나 성능 제약과 같은 임의의 개수의 인자들에 따라 변할 수 있다.
일부 예들은 제조물 또는 적어도 하나의 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독가능 매체는 로직을 저장하기 위한 비일시적인 저장 매체를 포함할 수 있다. 일부 예들에서, 비일시적인 저장 매체는, 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯하여, 전자 데이터를 저장할 수 있는 하나 이상의 타입의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 일부 예들에서, 로직은, 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 메소드, 프로시저, 소프트웨어 인터페이스, API, 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합과 같은 다양한 소프트웨어 요소들을 포함할 수 있다.
일부 예들에 따르면, 컴퓨터 판독가능 매체는, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 실행될 때, 이 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금, 설명된 예들에 따라 방법들 및/또는 동작들을 수행하게 하는 명령어들을 저장하거나 유지하는 비일시적인 저장 매체를 포함할 수 있다. 명령어들은, 소스 코드, 컴파일형 코드, 해석형 코드, 실행가능 코드, 정적 코드, 동적 코드 등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 명령어들은 특정 기능을 수행하도록 머신, 컴퓨팅 디바이스 또는 시스템에 지시하기 위해 미리 정의된 컴퓨터 언어, 방식 또는 신택스에 따라 구현될 수 있다. 명령어들은 임의의 적합한 고레벨, 저레벨, 객체 지향, 비주얼, 컴파일형 및/또는 해석형 프로그래밍 언어를 이용하여 구현될 수 있다.
일부 예들은 "일례에서(in one example)" 또는 "예(an example)"라는 표현을 그들의 파생물과 함께 이용하여 설명될 수 있다. 이들 용어는, 이 예와 관련하여 설명된 특정 피처, 구조 또는 특성이 적어도 하나의 예에 포함된다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일례에서"라는 구문의 출현은 반드시 모두가 동일한 예를 언급하는 것은 아니다.
일부 예들은 "연결된(coupled)" 및 "접속된(connected)"이라는 표현을 그들의 파생물과 함께 이용하여 설명될 수 있다. 이들 용어는 반드시 서로에 대한 동의어로서 의도되지는 않는다. 예를 들어, "접속된" 및/또는 "연결된"이라는 용어들을 이용한 설명은, 2개 이상의 요소가 서로 직접적으로 물리적 또는 전기적 접촉하는 것을 나타낼 수 있다. 그러나, "연결된"이라는 용어는, 2개 이상의 요소가 서로 직접적으로 접촉하지는 않지만, 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
다음의 예들은 본 명세서에 개시된 기술들의 부가적인 예들에 관한 것이다.
예 1. 예시적인 장치는, 제1 VM을 지원하는 제1 처리 요소 및 제2 VM을 지원하는 제2 처리 요소를 갖는 멀티 코어 프로세서를 포함할 수 있다. 이 장치는, 제1 VM에 의해 실행되며, 제1 VM에 의해 또한 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하는 수신 컴포넌트를 또한 포함할 수 있다. 이 장치는, 제1 VM에 의해 실행되며, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하는 액세스 컴포넌트를 또한 포함할 수 있다. 이 장치는, 제1 VM에 의해 실행되며, 제1 흐름 테이블을 이용하여, 제1 애플리케이션에 의한 서비스 체인 처리 다음에 패킷을 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 제2 VM으로 라우팅하는 라우팅 컴포넌트를 또한 포함할 수 있다. 이 장치는, 제1 VM에 의해 실행되며, 제2 VM이 패킷을 수신하도록, 제1 VM과 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 제2 VM으로 송신하는 참조 컴포넌트를 또한 포함할 수 있다.
예 2. 예 1에 있어서, 수신 컴포넌트는, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제2 메시지를 수신함으로써 제3 VM으로부터 패킷을 수신할 수 있는 장치.
예 3. 예 2에 있어서, 제1 위치 및 제2 위치는, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에 대해 동일한 메모리 어드레스일 수 있는 장치.
예 4. 예 2에 있어서, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리는, 제로-카피 방식으로 서비스 체인 처리를 위한 패킷을 제1 VM, 제2 VM 및 제3 VM이 수신하는 것을 허용할 수 있는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함할 수 있는 장치.
예 5. 예 1에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 장치.
예 6. 예 1에 있어서, 복수의 흐름 테이블은, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하도록 가상 스위치의 구성을 요청한 사용자에 대해 단일의 흐름 테이블로서 표시되도록 구성될 수 있는 장치.
예 7. 예 6에 있어서, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 제1 VM에 분산시키는 가상 스위치의 구성에 기초하여, 복수의 흐름 테이블 중에서 제1 흐름 테이블이 제1 VM에 할당될 수 있는 장치.
예 8. 예 7에 있어서, 멀티 코어 프로세서의 제4 처리 요소는, 가상 스위치를 구성하도록 제1 VM에 스위치 로직의 일부의 분산을 전달하는 가상 스위치 제어 경로를 갖는 호스트 운영 체제를 지원할 수 있는 장치.
예 9. 예 1에 있어서, 회로에 연결되어, 사용자 인터페이스 뷰를 제시하는 디지털 디스플레이를 또한 포함할 수 있는 장치.
예 10. 예시적인 방법은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 제1 VM에서, 제1 VM에 의해 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하는 단계를 포함할 수 있다. 이 방법은, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하는 단계를 또한 포함할 수 있다. 제1 흐름 테이블은, 제1 애플리케이션에 의한 서비스 체인 처리 다음에 패킷을 라우팅하기 위해 제1 VM에 의해 이용되는 것일 수 있다. 이 방법은, 부가적인 서비스 체인 처리를 위해 패킷을 멀티 코어 프로세서의 제2 처리 요소에 의해 지원되는 제2 VM으로 라우팅하기로 결정하는 단계를 또한 포함할 수 있다. 이 방법은, 제2 VM이 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 패킷을 수신하도록, 제1 VM과 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 제2 VM으로 송신하는 단계를 또한 포함할 수 있다.
예 11. 예 10에 있어서, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제2 메시지를 수신함으로써 제3 VM으로부터 패킷을 수신하는 단계를 또한 포함할 수 있는 방법.
예 12. 예 11에 있어서, 제1 위치 및 제2 위치는, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에 대해 동일한 메모리 어드레스일 수 있는 방법.
예 13. 예 11에 있어서, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리는, 제로-카피 방식으로 처리를 위한 패킷을 제1 VM, 제2 VM 및 제3 VM이 수신하는 것을 허용할 수 있는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함할 수 있는 방법.
예 14. 예 10에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 방법.
예 15. 예 10에 있어서, 복수의 흐름 테이블은, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하도록 가상 스위치의 구성을 요청한 사용자에 대해 단일의 흐름 테이블로서 표시될 수 있는 방법.
예 16. 예 15에 있어서, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 제1 VM에 분산시키는 가상 스위치의 구성에 기초하여, 복수의 흐름 테이블 중에서 제1 흐름 테이블이 제1 VM에 할당될 수 있는 방법.
예 17. 예 16에 있어서, 멀티 코어 프로세서의 제4 처리 요소는, 가상 스위치를 구성하도록 제1 VM에 스위치 로직의 일부의 분산을 전달하는 가상 스위치 제어 경로를 갖는 호스트 운영 체제를 지원할 수 있는 방법.
예 18. 적어도 하나의 머신 판독가능 매체는 복수의 명령어를 포함할 수 있고, 이들 명령어들은, 복수의 VM을 지원할 수 있는 멀티 코어 프로세서를 갖는 호스트 컴퓨팅 플랫폼에서의 시스템에 의해 실행되는 것에 응답하여, 이 시스템이 예 10 내지 예 17 중 어느 하나에 따른 방법을 수행하게 할 수 있다.
예 19. 장치는 예 10 내지 예 17 중 어느 하나의 방법을 수행하는 수단을 포함할 수 있다.
예 20. 예시적인 적어도 하나의 머신 판독가능 매체는 복수의 명령어를 포함할 수 있고, 이들 명령어들은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 제1 VM에 의해 실행되는 것에 응답하여, 제1 VM으로 하여금, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 제1 VM에 의해 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하게 할 수 있다. 이들 명령어들은 또한, 제1 VM으로 하여금, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하게 할 수 있다. 이들 명령어들은 또한, 제1 VM으로 하여금, 제1 흐름 테이블을 이용하여, 제1 애플리케이션에 의한 서비스 체인 처리 다음에 패킷을, 멀티 코어 프로세서의 제2 처리 요소에 의해 지원되는 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 제2 VM으로 라우팅하게 할 수 있다. 이들 명령어들은 또한, 제1 VM으로 하여금, 제2 VM이 패킷을 수신하도록, 제1 VM과 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 제2 VM으로 송신하게 할 수 있다.
예 21. 예 20에 있어서, 명령어들은 또한, 제1 VM으로 하여금, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제2 메시지를 수신함으로써 제3 VM으로부터 패킷을 수신하게 할 수 있는 적어도 하나의 머신 판독가능 매체.
예 22. 예 21에 있어서, 제1 위치 및 제2 위치는, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리에 대해 동일한 메모리 어드레스일 수 있는 적어도 하나의 머신 판독가능 매체.
예 23. 예 21에 있어서, 제1 VM, 제2 VM 및 제3 VM 사이에 공유되는 메모리는, 제로-카피 방식으로 서비스 체인 처리를 위한 패킷을 제1 VM, 제2 VM 및 제3 VM이 수신하는 것을 허용할 수 있는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함할 수 있는 적어도 하나의 머신 판독가능 매체.
예 24. 예 20에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 적어도 하나의 머신 판독가능 매체.
예 25. 예 20에 있어서, 복수의 흐름 테이블은, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하도록 가상 스위치의 구성을 요청한 사용자에 대해 단일의 흐름 테이블로서 표시되도록 구성될 수 있는 적어도 하나의 머신 판독가능 매체.
예 26. 예 25에 있어서, 적어도 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 제1 VM에 분산시키는 가상 스위치의 구성에 기초하여, 복수의 흐름 테이블 중에서 제1 흐름 테이블이 제1 VM에 할당될 수 있는 적어도 하나의 머신 판독가능 매체.
예 27. 예 26에 있어서, 멀티 코어 프로세서의 제4 처리 요소는, 가상 스위치를 구성하도록 제1 VM에 스위치 로직의 일부의 분산을 전달하는 가상 스위치 제어 경로를 갖는 호스트 운영 체제를 지원할 수 있는 적어도 하나의 머신 판독가능 매체.
예 28. 예시적인 장치는 호스트 운영 체제를 지원하는 제1 처리 요소를 갖는 멀티 코어 프로세서를 포함할 수 있다. 이 장치는, 호스트 운영 체제에 의해 실행되며, 멀티 코어 프로세서의 각각의 제2 처리 요소 및 제3 처리 요소에 의해 별개로 지원되는 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신하는 구성 컴포넌트를 또한 포함할 수 있다. 가상 스위치를 구성하는 것은, 구성 컴포넌트가, 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블을 발생시키는 것을 포함할 수 있다. 가상 스위치를 구성하는 것은, 구성 컴포넌트가, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝하는 것을 또한 포함할 수 있다. 가상 스위치를 구성하는 것은, 구성 컴포넌트가, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하는 것을 또한 포함할 수 있다. 이 장치는, 호스트 운영 체제에 의해 실행되며, 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블을 요청자에게 제공하는 표시 컴포넌트를 또한 포함할 수 있다.
예 29. 예 28에 있어서, 호스트 운영 체제는, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하기 위해 제1 VM 및 제2 VM과의 가상 스위치 제어 경로를 가질 수 있는 장치.
예 30. 예 28에 있어서, 글로벌 흐름 테이블은 제1 메모리에 유지되도록 구성될 수 있는 장치. 이 예에 있어서, 구성 컴포넌트가 제1 VM에 대해 제1 흐름 테이블을 표시하는 것은, 구성 컴포넌트가, 제1 흐름 테이블을 유지하는 제1 메모리의 제1 메모리 어드레스 범위를 제공하는 것을 포함할 수 있다. 표시 컴포넌트가 제2 VM에 대해 제2 흐름 테이블을 표시하는 것은, 표시 컴포넌트가, 제2 흐름 테이블을 유지하는 메모리의 제2 메모리 어드레스 범위를 제공하는 것을 포함할 수 있다.
예 31. 예 30에 있어서, 제1 VM 및 제2 VM은, 제1 VM이 패킷들을 카피하지 않고 라우팅하는 것을 허용하는, 제1 VM과 제2 VM 사이에 공유되는 제2 메모리에서의 위치에 대한 참조를 포함하는 메시지를 제1 VM이 제2 VM으로 송신하는 것을 포함하는 제로-카피 방식으로 서비스 흐름을 위한 패킷들을 라우팅가능할 수 있는 장치.
예 32. 예 31에 있어서, 제2 메모리는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함할 수 있는 장치.
예 33. 예 28에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 장치.
예 34. 예 28에 있어서, 프로세서 회로에 연결되어, 사용자 인터페이스 뷰를 제시하는 디지털 디스플레이를 또한 포함할 수 있는 장치.
예 35. 예시적인 방법은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 호스트 운영 체제에서, 멀티 코어 프로세서의 각각의 제2 처리 요소 및 제3 처리 요소에 의해 별개로 지원되는 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신하는 단계를 포함할 수 있다. 가상 스위치를 구성하는 것은, 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블을 발생시키는 것을 포함할 수 있다. 가상 스위치를 구성하는 것은, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝하는 것을 또한 포함할 수 있다. 가상 스위치를 구성하는 것은, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하는 것을 또한 포함할 수 있다. 이 방법은, 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블을 요청자에게 제공하는 단계를 또한 포함할 수 있다.
예 36. 예 35에 있어서, 호스트 운영 체제는, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하기 위해 제1 VM 및 제2 VM과의 가상 스위치 제어 경로를 가질 수 있는 방법.
예 37. 예 35에 있어서, 글로벌 흐름 테이블은 제1 메모리에 유지되도록 구성될 수 있는 방법. 이 예에 있어서, 제1 VM에 대해 제1 흐름 테이블을 표시하는 것은, 제1 흐름 테이블을 유지하는 제1 메모리의 제1 메모리 어드레스 범위를 제공하는 것을 포함할 수 있다. 또한, 제2 VM에 대해 제2 흐름 테이블을 표시하는 것은, 제2 흐름 테이블을 유지하는 메모리의 제2 메모리 어드레스 범위를 제공하는 것을 포함할 수 있다.
예 38. 예 37에 있어서, 제1 VM 및 제2 VM은, 제1 VM이 패킷들을 카피하지 않고 라우팅하는 것을 허용하는, 제1 VM과 제2 VM 사이에 공유되는 제2 메모리에서의 위치에 대한 참조를 포함하는 메시지를 제1 VM이 제2 VM으로 송신하는 것을 포함하는 제로-카피 방식으로 서비스 흐름을 위한 패킷들을 라우팅가능할 수 있는 방법.
예 39. 예 38에 있어서, 제2 메모리는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함하는 방법.
예 40. 예 35에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 방법.
예 41. 예시적인 적어도 하나의 머신 판독가능 매체는 복수의 명령어를 포함할 수 있고, 이들 명령어들은, 호스트 운영 체제 및 복수의 VM을 지원할 수 있는 멀티 코어 프로세서를 갖는 호스트 컴퓨팅 플랫폼에서의 시스템에 의해 실행되는 것에 응답하여, 이 시스템으로 하여금 예 35 내지 예 40 중 어느 하나에 따른 방법을 수행하게 할 수 있다.
예 42. 예시적인 장치는 예 35 내지 예 40 중 어느 하나의 방법을 수행하는 수단을 포함할 수 있다.
예 43. 예시적인 적어도 하나의 머신 판독가능 매체는 복수의 명령어를 포함할 수 있고, 이들 명령어들은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 호스트 운영 체제에 의해 실행되는 것에 응답하여, 호스트 운영 체제로 하여금, 멀티 코어 프로세서의 각각의 제2 처리 요소 및 제3 처리 요소에 의해 별개로 지원되는 제1 VM과 제2 VM 사이에 서비스 체인 흐름을 위한 패킷들을 라우팅하는데 이용되는 가상 스위치를 구성하라는 요청을 수신하게 할 수 있다. 이 예에 있어서, 가상 스위치를 구성하는 것은, 이들 명령어들이, 운영 체제로 하여금, 제1 VM 및 제2 VM에 의해 실행되는 별개의 애플리케이션들에 의한 처리를 위해 서비스 흐름을 위한 패킷들이 따라야 하는 경로를 표시하는 글로벌 흐름 테이블을 발생시키게 하는 것을 포함할 수 있다. 가상 스위치를 구성하는 것은, 이들 명령어들이, 운영 체제로 하여금, 글로벌 흐름 테이블을, 별개의 애플리케이션들에 의한 별개의 처리 다음에 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 제1 VM 및 제2 VM에 의해 각각 이용될 제1 흐름 테이블 및 제2 흐름 테이블로 파티셔닝하게 하는 것을 또한 포함할 수 있다. 가상 스위치를 구성하는 것은, 이들 명령어들이, 운영 체제로 하여금, 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하게 하는 것을 또한 포함할 수 있다. 이들 명령어들은 또한, 호스트 운영 체제로 하여금, 가상 스위치의 구성을 표시하기 위해 단지 글로벌 흐름 테이블을 요청자에게 제공하게 할 수 있다.
예 44. 예 43에 있어서, 호스트 운영 체제는, 제1 VM 및 제2 VM과의 가상 스위치 제어 경로를 가질 수 있는 적어도 하나의 머신 판독가능 매체. 명령어들은 또한, 호스트 운영 체제로 하여금, 가상 제어 경로를 통해 제1 VM 및 제2 VM에 대해 제1 흐름 테이블 및 제2 흐름 테이블을 표시하게 할 수 있다.
예 45. 예 43에 있어서, 글로벌 흐름 테이블은 제1 메모리에 유지되도록 구성될 수 있는 적어도 하나의 머신 판독가능 매체. 명령어들은 또한, 호스트 운영 체제로 하여금, 제1 흐름 테이블을 유지하는 제1 메모리의 제1 메모리 어드레스 범위를 제공함으로써 제1 VM에 대해 제1 흐름 테이블을 표시하게 하고, 제2 흐름 테이블을 유지하는 메모리의 제2 메모리 어드레스 범위를 제공함으로써 제2 VM에 대해 제2 흐름 테이블을 표시하게 할 수 있다.
예 46. 예 45에 있어서, 제1 VM 및 제2 VM은, 제1 VM이 패킷들을 카피하지 않고 라우팅하는 것을 허용하는, 제1 VM과 제2 VM 사이에 공유되는 제2 메모리에서의 위치에 대한 참조를 포함하는 메시지를 제1 VM이 제2 VM으로 송신하는 것을 포함하는 제로-카피 방식으로 서비스 흐름을 위한 패킷들을 라우팅가능할 수 있는 적어도 하나의 머신 판독가능 매체.
예 47. 예 46에 있어서, 제2 메모리는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함할 수 있는 적어도 하나의 머신 판독가능 매체.
예 48. 예 43에 있어서, 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것일 수 있는 적어도 하나의 머신 판독가능 매체.
본 개시내용의 요약은, 독자가 기술적 개시내용의 속성을 신속하게 확인할 수 있게 하는 요약을 요구하는 37 C.F.R. 섹션 1.72(b)에 따르도록 제공된다고 강조된다. 그것이 청구항들의 범위 또는 의미를 해석하거나 제한하는데 이용되지는 않을 것이라는 이해가 수반된다. 또한, 전술한 상세한 설명에서, 본 개시내용을 간소화하기 위해 다양한 피처들이 단일의 예에서 함께 그룹화된다는 것을 알 수 있다. 이러한 개시 방법은, 청구된 예들이 각각의 청구항에 명백히 기술되는 것보다 더 많은 피처들을 요구한다는 의도를 반영하는 것으로서 해석되어서는 안 된다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 본 발명 대상은 단일의 개시된 예의 모든 피처들보다 더 적은 피처들에 있다. 따라서, 다음의 청구항들은 상세한 설명에 포함되고, 각각의 청구항은 단독으로 별개의 예로서 존재한다. 첨부 청구항들에서, 용어들 "포함하는(including)" 및 "여기서(in which)"는 각각 용어들 "포함하는(comprising)" 및 "여기서(wherein)"의 평이한 영어 등가물들로서 이용된다. 또한, 용어들 "제1", "제2", "제3" 등은 단순히 라벨들로서 이용되며, 그들의 객체들에 대한 수치적 요건을 부과하도록 의도되지는 않는다.
본 대상은 구조적 피처들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 첨부 청구항들에 정의된 대상은 반드시 전술한 특정 피처들 또는 동작들에 제한되지는 않는다는 것이 이해되어야 한다. 오히려, 전술한 특정 피처들 및 동작들은 청구항들을 구현하는 예시적인 형태들로서 개시된다.

Claims (25)

  1. 장치로서,
    제1 가상 머신(VM)을 지원하는 제1 처리 요소 및 제2 VM을 지원하는 제2 처리 요소를 갖는 멀티 코어 프로세서;
    상기 제1 VM에 의해 실행되며, 상기 제1 VM에 의해 또한 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하는 수신 컴포넌트;
    상기 제1 VM에 의해 실행되며, 복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하는 액세스 컴포넌트;
    상기 제1 VM에 의해 실행되며, 상기 제1 흐름 테이블을 이용하여, 상기 제1 애플리케이션에 의한 서비스 체인 처리 다음에 상기 패킷을 상기 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 상기 제2 VM으로 라우팅하는 라우팅 컴포넌트; 및
    상기 제1 VM에 의해 실행되며, 상기 제2 VM이 상기 패킷을 수신하도록, 상기 제1 VM과 상기 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 상기 제2 VM으로 송신하는 참조 컴포넌트
    를 포함하고,
    상기 제1 VM 및 상기 제2 VM 사이에 공유되는 상기 메모리는, 제로-카피 방식(zero-copy manner)으로 서비스 체인 처리를 위한 상기 패킷을 상기 제1 VM 및 상기 제2 VM이 수신하는 것을 허용할 수 있는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함하는, 장치.
  2. 제1항에 있어서,
    상기 수신 컴포넌트는, 상기 제1 VM, 상기 제2 VM 및 제3 VM 사이에 공유되는 상기 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제2 메시지를 수신함으로써 상기 제3 VM으로부터 상기 패킷을 수신하는 장치.
  3. 제2항에 있어서,
    상기 제1 위치 및 상기 제2 위치는, 상기 제1 VM, 상기 제2 VM 및 상기 제3 VM 사이에 공유되는 상기 메모리에 대해 동일한 메모리 어드레스인 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 서비스 체인 흐름은 이메일 서비스 체인, 스트리밍 비디오 서비스 체인, 스트리밍 오디오 서비스 체인, 서비스 제공자 서비스 체인, 네트워크 스토리지 서비스 체인, 소셜 네트워크 서비스 체인 또는 네트워크 보안 서비스 체인에 대한 것인 장치.
  6. 제1항에 있어서,
    상기 복수의 흐름 테이블은, 적어도 상기 제1 VM과 상기 제2 VM 사이에 상기 서비스 체인 흐름을 위한 패킷들을 라우팅하도록 가상 스위치의 구성을 요청한 사용자에 대해 단일의 흐름 테이블로서 표시되도록 구성되는 장치.
  7. 제6항에 있어서,
    적어도 상기 제1 VM과 상기 제2 VM 사이에 상기 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 상기 제1 VM에 분산시키는 상기 가상 스위치의 구성에 기초하여, 상기 복수의 흐름 테이블 중에서 상기 제1 흐름 테이블이 상기 제1 VM에 할당되는 장치.
  8. 제7항에 있어서,
    상기 멀티 코어 프로세서의 제4 처리 요소는, 상기 가상 스위치를 구성하도록 상기 제1 VM에 상기 스위치 로직의 일부의 분산을 전달하는 가상 스위치 제어 경로를 갖는 호스트 운영 체제를 지원하는 장치.
  9. 제1항에 있어서,
    상기 멀티 코어 프로세서에 연결되어, 사용자 인터페이스 뷰를 제시하는 디지털 디스플레이를 포함하는 장치.
  10. 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 매체로서,
    상기 명령어들은, 멀티 코어 프로세서의 제1 처리 요소에 의해 지원되는 제1 가상 머신(VM)에 의해 실행되는 것에 응답하여, 상기 제1 VM으로 하여금,
    상기 멀티 코어 프로세서의 상기 제1 처리 요소에 의해 지원되는 상기 제1 VM에 의해 실행되는 제1 애플리케이션에 의해 처리되어야 하는 서비스 체인 흐름을 위한 패킷을 수신하게 하고;
    복수의 흐름 테이블 중에서 제1 흐름 테이블에 액세스하게 하고;
    상기 제1 흐름 테이블을 이용하여, 상기 제1 애플리케이션에 의한 서비스 체인 처리 다음에 상기 패킷을, 상기 멀티 코어 프로세서의 제2 처리 요소에 의해 지원되는 제2 VM에 의해 실행되는 제2 애플리케이션에 의한 부가적인 서비스 체인 처리를 위해 상기 제2 VM으로 라우팅하게 하며;
    상기 제2 VM이 상기 패킷을 수신하도록, 상기 제1 VM과 상기 제2 VM 사이에 공유되는 메모리에서의 제1 위치에 대한 제1 참조를 포함하는 메시지를 상기 제2 VM으로 송신하게 하는 - 상기 제1 VM 및 상기 제2 VM 사이에 공유되는 상기 메모리는, 제로-카피 방식으로 서비스 체인 처리를 위한 상기 패킷을 상기 제1 VM 및 상기 제2 VM이 수신하는 것을 허용할 수 있는 공유 메모리 메시를 생성하는 공유 메모리 링을 포함함 -
    적어도 하나의 머신 판독가능 매체.
  11. 제10항에 있어서,
    상기 명령어들은 또한, 상기 제1 VM으로 하여금, 상기 제1 VM, 상기 제2 VM 및 제3 VM 사이에 공유되는 상기 메모리에서의 제2 위치에 대한 제2 참조를 포함하는 제2 메시지를 수신함으로써 상기 제3 VM으로부터 상기 패킷을 수신하게 하는 적어도 하나의 머신 판독가능 매체.
  12. 제11항에 있어서,
    상기 제1 위치 및 상기 제2 위치는, 상기 제1 VM, 상기 제2 VM 및 상기 제3 VM 사이에 공유되는 상기 메모리에 대해 동일한 메모리 어드레스인 적어도 하나의 머신 판독가능 매체.
  13. 삭제
  14. 제10항에 있어서,
    상기 복수의 흐름 테이블은, 적어도 상기 제1 VM과 상기 제2 VM 사이에 상기 서비스 체인 흐름을 위한 패킷들을 라우팅하도록 가상 스위치의 구성을 요청한 사용자에 대해 단일의 흐름 테이블로서 표시되도록 구성되는 적어도 하나의 머신 판독가능 매체.
  15. 제14항에 있어서,
    적어도 상기 제1 VM과 상기 제2 VM 사이에 상기 서비스 체인 흐름을 위한 패킷들을 라우팅하기 위해 스위치 로직의 일부를 상기 제1 VM에 분산시키는 상기 가상 스위치의 구성에 기초하여, 상기 복수의 흐름 테이블 중에서 상기 제1 흐름 테이블이 상기 제1 VM에 할당되는 적어도 하나의 머신 판독가능 매체.
  16. 제15항에 있어서,
    상기 멀티 코어 프로세서의 제4 처리 요소는, 상기 가상 스위치를 구성하도록 상기 제1 VM에 상기 스위치 로직의 일부의 분산을 전달하는 가상 스위치 제어 경로를 갖는 호스트 운영 체제를 지원하는 적어도 하나의 머신 판독가능 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020150117374A 2014-09-24 2015-08-20 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들 KR101775227B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/494,912 US9459903B2 (en) 2014-09-24 2014-09-24 Techniques for routing service chain flow packets between virtual machines
US14/494,912 2014-09-24

Publications (2)

Publication Number Publication Date
KR20160035972A KR20160035972A (ko) 2016-04-01
KR101775227B1 true KR101775227B1 (ko) 2017-09-05

Family

ID=54011548

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150117374A KR101775227B1 (ko) 2014-09-24 2015-08-20 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들

Country Status (5)

Country Link
US (2) US9459903B2 (ko)
EP (1) EP3001616B1 (ko)
JP (1) JP6022650B2 (ko)
KR (1) KR101775227B1 (ko)
CN (1) CN105450522B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190059048A (ko) * 2017-11-22 2019-05-30 건국대학교 산학협력단 매니코어 기반 코어 파티셔닝 장치 및 방법, 이를 저장하는 기록매체

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9893995B1 (en) * 2014-09-25 2018-02-13 Cisco Technology, Inc. Systems, methods, and apparatus for implementing agents in service appliances
US9979704B2 (en) * 2014-12-17 2018-05-22 Cisco Technology, Inc. End-to-end security for virtual private service chains
US9794193B2 (en) * 2015-01-30 2017-10-17 Gigamon Inc. Software defined visibility fabric
US9985875B1 (en) 2015-03-31 2018-05-29 Juniper Networks, Inc. Route signalling based resilient application overlay network
US10250562B1 (en) 2015-03-31 2019-04-02 Juniper Networks, Inc. Route signaling driven service management
US9819507B1 (en) * 2015-05-12 2017-11-14 Mbit Wireless, Inc. Mobile broadband management over plurality of media
US9826041B1 (en) * 2015-06-04 2017-11-21 Amazon Technologies, Inc. Relative placement of volume partitions
US9826030B1 (en) 2015-06-04 2017-11-21 Amazon Technologies, Inc. Placement of volume partition replica pairs
JP2017041846A (ja) * 2015-08-21 2017-02-23 富士通株式会社 管理装置、制御装置、および、通信システム
US11082515B2 (en) * 2015-09-26 2021-08-03 Intel Corporation Technologies for offloading data object replication and service function chain management
US10067780B2 (en) * 2015-10-06 2018-09-04 Cisco Technology, Inc. Performance-based public cloud selection for a hybrid cloud environment
US9992649B1 (en) 2016-08-23 2018-06-05 Mbit Wireless, Inc. Mobile broadband management
US10523692B2 (en) * 2016-04-08 2019-12-31 Samsung Electronics Co., Ltd. Load balancing method and apparatus in intrusion detection system
EP3264711B1 (en) * 2016-06-28 2018-09-19 Virtual Open Systems Virtual switch for multi-compartment mixed critical network communications
CN109478153B (zh) * 2016-07-07 2022-02-22 康维达无线有限责任公司 机器到机器服务层通信中的消息重定向
KR102389004B1 (ko) * 2016-10-07 2022-04-22 콘비다 와이어리스, 엘엘씨 일반적 상호연동 및 확장성을 위한 서비스 계층 리소스 관리
US10541927B2 (en) * 2016-12-29 2020-01-21 Google Llc System and method for hardware-independent RDMA
US10848430B2 (en) 2016-12-30 2020-11-24 Intel Corporation Flexible packet processing
CN106789542B (zh) * 2017-03-03 2019-08-09 清华大学 一种云数据中心安全服务链的实现方法
WO2018174759A1 (en) * 2017-03-23 2018-09-27 Telefonaktiebolaget Lm Ericsson (Publ) Apparatuses, methods, computer programs and computer program products for service function chaining
US10958572B2 (en) * 2017-12-13 2021-03-23 Cisco Technology, Inc. Directing packets to service chain associated with user plane anchor
CN111868687B (zh) * 2018-03-20 2021-09-17 三菱电机株式会社 信息处理装置、方法及程序
US10681091B2 (en) 2018-07-31 2020-06-09 Juniper Networks, Inc. N:1 stateful application gateway redundancy model
US11411843B2 (en) * 2019-08-14 2022-08-09 Verizon Patent And Licensing Inc. Method and system for packet inspection in virtual network service chains
US11394786B2 (en) 2019-11-18 2022-07-19 Red Hat, Inc. Zero-copy forwarding for network function virtualization
US10877822B1 (en) * 2019-12-16 2020-12-29 Vmware, Inc. Zero-copy packet transmission between virtualized computing instances
CN111343107B (zh) * 2020-01-22 2022-03-04 苏州盛科通信股份有限公司 信息处理方法、以太网交换芯片以及存储介质
US11567791B2 (en) * 2020-06-26 2023-01-31 Intel Corporation Technology for moving data between virtual machines without copies

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140153575A1 (en) * 2009-04-27 2014-06-05 Lsi Corporation Packet data processor in a communications processor architecture
US20140376555A1 (en) 2013-06-24 2014-12-25 Electronics And Telecommunications Research Institute Network function virtualization method and apparatus using the same

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8060619B1 (en) * 2003-11-07 2011-11-15 Symantec Operating Corporation Direct connections to a plurality of storage object replicas in a computer network
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
US8784196B2 (en) * 2006-04-13 2014-07-22 Igt Remote content management and resource sharing on a gaming machine and method of implementing same
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
JP2012155600A (ja) * 2011-01-27 2012-08-16 Fujitsu Ltd 情報処理装置、制御方法、および制御プログラム
US9191327B2 (en) 2011-02-10 2015-11-17 Varmour Networks, Inc. Distributed service processing of network gateways using virtual machines
US8892883B2 (en) * 2011-05-02 2014-11-18 Crytek Ip Holding Llc Render service for remote access to applications
JP6010906B2 (ja) * 2011-12-27 2016-10-19 富士通株式会社 コンピュータネットワークシステム、構成管理方法、構成管理プログラム、記録媒体
JP2013242644A (ja) * 2012-05-18 2013-12-05 Panasonic Corp 仮想計算機システム、制御方法、およびプログラム
US9092269B2 (en) * 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140153575A1 (en) * 2009-04-27 2014-06-05 Lsi Corporation Packet data processor in a communications processor architecture
US20140376555A1 (en) 2013-06-24 2014-12-25 Electronics And Telecommunications Research Institute Network function virtualization method and apparatus using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190059048A (ko) * 2017-11-22 2019-05-30 건국대학교 산학협력단 매니코어 기반 코어 파티셔닝 장치 및 방법, 이를 저장하는 기록매체
KR102014725B1 (ko) 2017-11-22 2019-08-27 건국대학교 산학협력단 매니코어 기반 코어 파티셔닝 장치 및 방법, 이를 저장하는 기록매체

Also Published As

Publication number Publication date
US9459903B2 (en) 2016-10-04
JP6022650B2 (ja) 2016-11-09
US20160085577A1 (en) 2016-03-24
EP3001616B1 (en) 2019-11-13
CN105450522B (zh) 2019-01-11
CN105450522A (zh) 2016-03-30
EP3001616A2 (en) 2016-03-30
EP3001616A3 (en) 2016-06-29
US10331468B2 (en) 2019-06-25
JP2016072963A (ja) 2016-05-09
KR20160035972A (ko) 2016-04-01
US20170185440A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
KR101775227B1 (ko) 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들
US10230765B2 (en) Techniques to deliver security and network policies to a virtual network function
US10331492B2 (en) Techniques to dynamically allocate resources of configurable computing resources
US20160179582A1 (en) Techniques to dynamically allocate resources for local service chains of configurable computing resources
US10003649B2 (en) Systems and methods to improve read/write performance in object storage applications
US20160378570A1 (en) Techniques for Offloading Computational Tasks between Nodes
US20160182320A1 (en) Techniques to generate a graph model for cloud infrastructure elements
US9417927B2 (en) Runtime capacity planning in a simultaneous multithreading (SMT) environment
US10965597B2 (en) Virtual network function load balancer
KR20170139872A (ko) 멀티 테넌트 기반의 서비스 제공 시스템 및 방법
CN109416650A (zh) 具有加权散列函数的集中式负载均衡器
JP2007207136A (ja) データ処理装置、データ処理方法、及びデータ処理プログラム
US9774540B2 (en) Packet drop based dynamic receive priority for network devices
US20220329651A1 (en) Apparatus for container orchestration in geographically distributed multi-cloud environment and method using the same
US10009249B2 (en) System with on-demand state for applications
CN110716813A (zh) 数据流处理方法、装置、可读存储介质及处理器
US10715590B2 (en) Non-transitory computer-readable storage medium, process distribution apparatus and process distribution method
CN113703906A (zh) 一种数据处理方法、装置及系统
JP5927871B2 (ja) 管理装置、情報処理装置、管理プログラム、管理方法、プログラムおよび処理方法
US20240086225A1 (en) Container group scheduling methods and apparatuses
US20240015107A1 (en) Rate proportional scheduling to reduce packet loss in virtualized network function chains
Roseline et al. An approach for efficient capacity management in a cloud

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right