KR101953546B1 - 가상 스위칭 장치 및 방법 - Google Patents

가상 스위칭 장치 및 방법 Download PDF

Info

Publication number
KR101953546B1
KR101953546B1 KR1020150190116A KR20150190116A KR101953546B1 KR 101953546 B1 KR101953546 B1 KR 101953546B1 KR 1020150190116 A KR1020150190116 A KR 1020150190116A KR 20150190116 A KR20150190116 A KR 20150190116A KR 101953546 B1 KR101953546 B1 KR 101953546B1
Authority
KR
South Korea
Prior art keywords
queue
flow
data
virtual
stored
Prior art date
Application number
KR1020150190116A
Other languages
English (en)
Other versions
KR20170080846A (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 한국전자통신연구원
Priority to KR1020150190116A priority Critical patent/KR101953546B1/ko
Priority to US15/298,592 priority patent/US10348651B2/en
Publication of KR20170080846A publication Critical patent/KR20170080846A/ko
Application granted granted Critical
Publication of KR101953546B1 publication Critical patent/KR101953546B1/ko

Links

Images

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/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Abstract

본 발명의 일 실시예에 따른 가상 스위칭 장치는, 하나 이상의 큐를 저장하는 큐 메모리, 데이터를 저장하는 데이터 메모리, 데이터를 플로우로 분류하고, 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼, 데이터에 따른 프로세스를 수행하는 복수의 가상 머신 및 큐에 저장된 포인터를 참조하여 데이터 메모리에서 데이터를 추출하고, 데이터를 가상 머신으로 전송하는 가상 스위치를 포함하되, 가상 스위치는 단일 큐에 상응하는 데이터를 단일 가상 스위치로 전송하는 것을 특징으로 한다.

Description

가상 스위칭 장치 및 방법{APPARATUS AND METHOD FOR VIRTUAL SWITCHING}
본 발명은 하나 이상의 가상 머신에 데이터를 배분하는 가상 스위칭 기술에 관한 것이다.
가상 머신 큐(VMQ: Virtual Machine Queue) 기술은 네트워크 인터페이스 카드(NIC) 내부에 가상 머신에 대한 큐인 가상 머신 큐를 생성한 후, 각각의 가상 머신 큐를 호스트 내의 프로세서에 할당하는 방법이다. 따라서, 가상 머신 큐 기술은 가상화 환경에서도 네트워크 트래픽에 대해 멀티 프로세서가 분산 처리할 수 있도록 하여, 트래픽이 크더라도 유연한 처리가 가능하게 한다. 가상 머신 큐를 지원하는 서버 시스템은 가상 머신 큐를 설정하고, 해당 가상 머신 큐를 처리할 프로세서를 할당한다. 가상 머신 큐를 지원하는 서버 시스템은 L2 가상 스위치를 통하여 데이터를 가상 머신을 운영하는 프로세서로 전달한다. 그러나, 가상 머신 큐 기술은 가상 머신 큐를 정적으로 할당하기 때문에, 트래픽 폭주가 발생하는 큐에 대해 적은 수의 프로세서가 할당 될 수도 있고, 트래픽을 거의 사용하지 않는 소수 수의 큐에 많은 수의 프로세서들에 할당 되는 문제가 발생할 수도 있는 문제점이 있다.
DVMQ(Dynamic Virtual Machine Queue) 기술은 네트워크 트래픽 량과 프로세서의 총 사용량에 기반하여 가상 머신 큐를 멀티 프로세서에 동적으로 할당하는 방법이다. 그러나 VMDQ 기술은 가상 머신 별로 할당된 큐를 바탕으로 프로세서를 동적으로 할당하기 때문에, 트래픽의 분류 기준이 가상 머신의 L2(MAC 주소) 기반으로만 분류하여 처리할 수 밖에 없는 제약사항이 있을 뿐만 아니라, 특정 테넌트에 속한 가상 머신들의 네트워크 트래픽 처리가 다른 테넌트에 속한 네트워크 트래픽의 폭주로 인한 영향을 받지 않도록 하지 못하는 문제점을 가지고 있다.
또한 VMQ, VMDQ 기술은 가상 머신의 L2(MAC 주소) 기반으로 가상 스위치에 대한 정적/동적 프로세서 할당하는 기술을 사용함으로써, 트래픽의 분류가 L2(MAC 주소) 단위로만 처리됨으로 인해, 좋은 QOS(Quality of Service)를 제공할 수 없다는 한계가 있다.
본 발명이 해결하고자 하는 과제는 가상화 환경에서 트래픽에 포함된 데이터의 재순서화(reordering) 문제를 제기하지 않으면서, 트래픽을 L3 계층 이상을 기준으로 분류하고, 특정 테넌트에 속한 네트워크 트래픽의 폭주로 인해 다른 테넌트에 속한 네트워크 트래픽 처리에 영향을 받지 않도록 하는 가상 스위칭 장치 및 방법을 제공하는 것이다.
본 발명의 일 측면에 따르면, 하나 이상의 큐를 저장하는 큐 메모리; 데이터를 저장하는 데이터 메모리; 상기 데이터를 플로우로 분류하고, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼; 상기 데이터에 따른 프로세스를 수행하는 복수의 가상 머신; 및 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 가상 머신으로 전송하는 가상 스위치;를 포함하되, 상기 가상 스위치는 단일 큐에 상응하는 데이터를 단일 가상 스위치로 전송하는 것을 특징으로 하는 가상 스위칭 장치가 제공된다.
상기 가상 스위칭 장치는 상기 플로우를 식별하는 정보인 플로우 정보 및 상기 큐를 식별하는 정보인 큐 정보를 포함하는 플로우 테이블을 저장하는 테이블 제공부;를 더 포함하되, 상기 맵퍼는 상기 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인할 수 있다.
상기 맵퍼는 상기 플로우 테이블에 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑할 수 있다.
상기 맵퍼는 기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하고, 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑할 수 있다.
상기 맵퍼가 상기 플로우와 상기 신규 큐를 맵핑하는 경우, 상기 신규 큐에 대한 가상 스위치를 배정하는 가상 스위치 매니저; 를 더 포함할 수 있다.
상기 가상 스위치 매니저는 배정된 가상 스위치를 통해 전송되는 데이터의 용량이 미리 설정된 임계치 이상인 경우, 새로운 가상 스위치를 생성하고, 상기 새로운 가상 스위치를 상기 신규 큐에 대한 가상 스위치로 배정할 수 있다.
상기 맵퍼는, 기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑할 수 있다.
상기 맵퍼는, 기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑할 수 있다.
상기 맵퍼는, 상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 적용한 값인 플로우 정보에 따라 상기 데이터를 분류할 수 있다.
상기 맵퍼는, 상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 적용한 값과 상기 가상 머신의 테넌트 정보를 결합한 값인 플로우 정보에 따라 상기 데이터를 분류할 수 있다.
본 발명의 다른 측면에 따르면, 가상 스위칭 장치가 병렬 처리를 수행하는 방법에 있어서, 데이터를 수신하고, 상기 데이터를 데이터 메모리에 저장하는 단계; 상기 데이터를 플로우로 분류하는 단계; 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계; 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 큐에 대해 배정된 가상 머신으로 전송하는 단계; 및 상기 큐에 배정된 상기 가상 머신를 통해 상기 데이터에 상응하는 프로세스를 수행하는 단계;를 포함하는 가상 스위칭 방법이 제공된다.
상기 가상 스위칭 방법은 상기 가상 스위칭 장치는 상기 플로우를 식별하는 정보인 플로우 정보 및 상기 큐를 식별하는 정보인 큐 정보를 포함하는 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인하는 단계를 더 포함할 수 있다.
상기 가상 스위칭 방법은 상기 플로우 테이블에 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계를 더 포함할 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계는, 상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하는 단계; 및 상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계를 포함할 수 있다.
상기 가상 스위칭 방법은 상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 분배기를 배정하는 단계; 및 상기 신규 큐에 대한 단일 프로세서를 배정하는 단계;를 더 포함할 수 있다.
상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 가상 스위치를 배정하는 단계는, 상기 배정된 가상 스위치를 통해 전송되는 데이터의 용량이 미리 설정된 임계치 이상인 경우, 새로운 가상 스위치를 생성하고, 상기 새로운 가상 스위치를 상기 신규 큐에 대한 가상 스위치로 배정하는 단계일 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는, 맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계일 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는, 맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계일 수 있다.
상기 데이터를 플로우로 분류하는 단계는, 상기 데이터를 상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 적용한 값인 플로우 정보에 상응하는 플로우로 분류할 수 있다.
상기 데이터를 플로우로 분류하는 단계는, 상기 데이터를 상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 적용한 값과 상기 가상 머신의 테넌트 정보를 결합한 값인 플로우 정보에 상응하는 플로우로 분류할 수 있다.
상술한 바와 같이 본 발명의 일 실시예에 따르면, 가상화 환경에서 트래픽에 포함된 데이터의 재순서화 문제를 제기하지 않으면서, 각 가상 머신으로 트래픽을 분배할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 트래픽을 L3 계층 이상을 기준으로 분류하여 좋은 QOS를 제공할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 특정 테넌트에 속한 네트워크 트래픽의 폭주로 인해 다른 테넌트에 속한 네트워크 트래픽 처리에 영향을 받지 않도록 할 수 있다.
도 1은 본 발명의 제1 실시예에 따른 가상 스위칭 장치를 예시한 도면.
도 2는 본 발명의 제1 실시예에 따른 가상 스위칭 장치가 가상 스위칭을 수행하는 과정을 예시한 순서도.
도 3은 본 발명의 제1 실시예에 따른 가상 스위칭 장치의 각 큐에 대한 입력데이터가 가상 머신으로 전달되는 경로를 예시한 도면.
도 4는 본 발명의 제2 실시예에 따른 가상 스위칭 장치를 예시한 도면.
도 5는 본 발명의 제2 실시예에 따른 가상 스위칭 장치가 가상 스위칭을 수행하는 과정을 예시한 순서도.
도 6은 본 발명의 제2 실시예에 따른 가상 스위칭 장치의 각 큐에 대한 입력데이터가 가상 머신으로 전달되는 경로를 예시한 도면.
도 7은 본 발명의 제1 실시예 및 제2 실시예에 따른 가상 스위칭 장치가 구현된 컴퓨터 시스템을 예시한 도면
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소로 신호를 “전송한다”로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되어 신호를 전송할 수 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 신호를 전송할 수도 있다고 이해되어야 할 것이다.
도 1은 본 발명의 제1 실시예에 따른 가상 스위칭 장치를 예시한 도면이다.
도 1을 참조하면, 본 발명의 제1 실시예에 따른 가상 스위칭 장치는 맵퍼(110), 데이터 메모리(120), 테이블 제공부(130), 큐 메모리(140), 큐 매니저(150), 복수의 가상 스위치(160), 가상 스위치 매니저(170), 복수의 가상 머신(180), 가상 머신 매니저(190)를 포함한다.
맵퍼(110)는 네트워크를 통해 데이터(이하, 맵퍼(110)가 수신한 데이터를 입력 데이터라 지칭)를 수신하고, 플로우 테이블을 참조하여 입력 데이터를 속성에 따라 미리 지정된 플로우 중 어느 하나로 분류하고, 입력 데이터를 데이터 메모리(120)에 저장하고, 입력 데이터의 플로우와 맵핑된 큐에 입력 데이터가 저장된 주소를 나타내는 포인터를 저장한다. 이 때, 플로우 테이블은 각 플로우와 각 큐의 맵핑 관계를 나타내는 테이블이다. 예를 들어, 플로우 테이블은 SIP(Source Internet Protocol) 주소 값, DIP(Destination Internet Protocol) 주소 값, SPORT(Source Port) 필드 값, DPORT(Destination Port) 필드 값, PROTOCOL 필드 값 등과 같은 입력 데이터의 헤더에 포함된 값이나 입력 데이터의 페이로드 정보에 포함된 값(이하, 식별 기준 값이라 지칭)에 대해 비트 마스킹 처리한 값인 플로우 정보와 하나의 큐를 타 큐에 대해 식별할 수 있는 식별 정보인 큐 정보를 맵핑하여 저장하는 테이블일 수 있다. 맵퍼(110)는 플로우 테이블에서 식별 기준 값에 대해 비트 마스킹 처리한 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 따른 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
상술한 바와 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보와 큐 정보를 맵핑하여 저장하는 테이블 일 수 있다. 맵퍼(110)는 플로우 테이블에 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 상응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 상술한 두 가지 설명과 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보를 주소로 하였을 때, 해당 주소에 큐 정보를 저장하는 테이블일 수 있다. 맵퍼(110)는 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보를 주소로 하는 저장 영역에 저장된 큐 정보에 상응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 맵퍼(110)는 플로우 테이블에 각 플로우에 대한 플로우 만료 정보를 플로우 정보에 맵핑하여 저장할 수 있다. 플로우 만료 정보는 1 bit 이상으로 구성된 값일 수 있고, 각 플로우를 비활성화할 시점을 판단하기 위한 기준이 되는 정보이다.
즉, 맵퍼(110)는 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 큐에 저장한다. 맵퍼(110)는 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있지 않은 경우, 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는지 판단한다. 맵퍼(110)는 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는 경우, 신규 큐의 생성을 요청하는 큐 생성 요청 신호를 큐 매니저(150)로 전송한다. 맵퍼(110)는 큐 매니저(150)로부터 큐 정보를 수신하는 경우, 신규 큐에 입력 데이터에 상응하는 포인터를 저장한다. 또는, 맵퍼(110)는 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하지 않는 경우, 현재 큐 메모리(140)에 활성화된 큐 중 어느 하나에 입력 데이터에 상응하는 포인터를 저장한다.
이 때, 맵퍼(110)는 미리 설정된 매핑 모드가 "파워 절약 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 많은 포인터가 저장되어 있는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다. 맵퍼(110)는 미리 설정된 매핑 모드가 "균등 분배 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 적은 포인터가 저장되어 있는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
이 때, 매핑 모드는 사용자에 의해 미리 설정되는 모드로써, 포인터가 큐에 저장되는 방식을 상술한 "파워 절약 모드" 및 "균등 분배 모드"로 구분하여 나타낸다. 맵퍼(110)는 포인터를 큐에 저장한 이후, 각 플로우 정보와 큐 정보를 맵핑하여 플로우 테이블에 저장하는 갱신 과정을 수행하고, 큐 매니저(150)로 입력 데이터에 대한 포인터의 큐잉이 완료됨을 알리는 큐잉 완료 신호를 전송한다. 또한, 맵퍼(110)는 입력 데이터에 상응하는 플로우가 신규 플로우인 경우(플로우 정보와 큐 정보가 맵핑되어 있지 않은 경우)에 입력 데이터에 대한 큐잉을 완료한 후, 신규 플로우의 포인터를 큐잉함을 알리는 신규 플로우 신호를 큐 매니저(150)로 전송한다.
또한, 맵퍼(110)는 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 큐에 저장하는 경우, 입력 데이터에 상응하는 플로우 정보에 맵핑된 플로우 만료 정보를 미리 지정된 수치로 리셋(reset)한다.
데이터 메모리(120)는 맵퍼(110)로부터 입력 데이터를 수신하는 경우, 입력 데이터를 저장한다.
테이블 제공부(130)는 플로우 테이블을 저장하고, 맵퍼(110)의 요청에 따라 플로우 테이블을 검색하거나 플로우 테이블을 갱신한다.
큐 메모리(140)는 하나 이상의 큐를 통해 입력 데이터에 상응하는 포인터를 저장한다.
큐 매니저(150)는 맵퍼(110)로부터 큐 생성 요청 신호를 수신하는 경우, 큐 메모리(140) 내에 신규 큐를 생성하고, 신규 큐의 생성이 완료됨을 알리는 큐 생성 완료 신호를 가상 스위치 매니저(170)로 전송한다. 큐 매니저(150)는 가상 스위치 매니저(170)로부터 신규 큐에 저장된 데이터를 분배할 가상 스위치(160) 또는 신규 큐에 저장된 데이터를 처리할 가상 머신(180)의 배정이 완료됨을 알리는 배정 완료 신호를 수신하는 경우, 테이블 제공부(130)에 신규 큐에 상응하는 큐 정보를 저장하도록 큐 테이블을 갱신한다. 이 때, 큐 테이블은 현재 활성화된 큐 정보와 각 큐에 저장된 포인터의 수 및 큐 만료 정보를 맵핑하여 저장하는 테이블일 수 있다. 큐 만료 정보는 1bit 이상으로 구성된 값일 수 있고, 각 큐를 비활성화할 시점을 판단하기 위한 기준이 되는 정보로써, 초기값은 0일 수 있다. 큐 매니저(150)는 큐 테이블을 갱신한 이후, 신규 생성된 큐 정보를 맵퍼(110)로 전송한다. 또한, 큐 매니저(150)는 맵퍼(110)로부터 큐잉 완료 신호를 수신하는 경우, 큐잉 완료 신호에 상응하는 큐에 큐잉된 포인터의 수를 갱신(1만큼 증가)할 수 있다. 큐 매니저(150)는 맵퍼(110)로부터 신규 플로우 신호를 수신하는 경우, 큐 만료 정보를 1만큼 증가시킨다.
하나 이상의 가상 스위치(160)는 하나 이상의 큐에 저장된 포인터에 상응하는 입력 데이터를 데이터 메모리(120)로부터 추출하고, 라운드 로빈(Round Robin), 가중치 라운드 로빈(Weighted Round Robin) 등의 분배 정책에 따라 입력 데이터를 하나 이상의 가상 머신(180)으로 분배한다. 이 때, 가상 스위치(160)는 단일 큐에 해당하는 플로우에 속하는 입력 데이터를 단일 가상 머신(180)으로 분배할 수 있다. 즉, 가상 스위치(160)는 단일 큐에 해당하는 플로우에 속하는 입력 데이터를 상이한 복수의 가상 머신(180)으로 분배하지 않는다. 이 때, 가상 스위치(160)는 큐에 저장된 포인터에 상응하는 입력 데이터를 가상 머신(180)으로 전송한 이후, 큐 매니저(150)로 분배 완료 신호를 전송한다. 이후, 큐 매니저(150)는 분배 완료 신호를 수신하는 경우, 큐 테이블에 저장된 해당 큐에 대응하는 포인터의 수를 차감할 수 있다.
가상 스위치 매니저(170)는 큐 매니저(150)로부터 신규 큐에 대한 큐 생성 완료 신호를 수신하는 경우, 신규 큐의 입력 데이터를 분배할 가상 스위치(160)를 배정한다. 가상 스위치 매니저(170)는 가상 스위치(160)의 배정 후, 배정 완료 신호를 큐 매니저(150)로 전송한다. 가상 스위치(160)는 가상 스위치 매니저(170)에 따라 배정된 큐에 대응하는 입력 데이터를 하나 이상의 가상 머신(180)으로 전송할 수 있다. 가상 스위치 매니저(170)는 초기에 하나의 가상 스위치(160)를 각 큐에 대해 배정하여, 하나의 가상 스위치(160)가 입력 데이터를 하나 이상의 가상 머신(180)으로 전송하도록 할 수 있다. 이 때, 하나의 가상 스위치(160)를 통해 전송되는 입력 데이터의 용량이 미리 설정된 임계치 이상이 되는 경우, 가상 스위치 매니저(170)는 새로운 가상 스위치(160)를 생성하고, 새로운 가상 스위치(160)를 신규 큐의 입력 데이터를 분배할 가상 스위치(160)로 배정할 수 있다.
하나 이상의 가상 머신(180)은 입력 데이터를 가상 스위치(160)로부터 수신하고, 입력 데이터에 따른 처리 과정을 수행한다. 이 때, 가상 머신(180)은 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 경우, 플로우의 수에 상관없이 해당 플로우의 모든 데이터를 처리할 수 있다. 반대로, 가상 머신(180)이 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 경우, 큐 매니저(150)는 신규 큐를 큐 메모리(140) 상에 생성하고, 신규 큐의 생성에 따른 큐 생성 완료 신호를 가상 스위치 매니저(170)로 전송할 수 있다. 이 때, 큐 매니저(150)는 큐 테이블을 참조하여 단일 큐에 저장된 포인터의 수가 지정된 임계값을 초과하는 경우, 가상 머신(180)이 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 것으로 판단할 수 있다. 또한, 큐 메니저(150)는 큐 테이블을 참조하여 단일 큐에 저장된 포인터의 수가 지정된 임계값 이하인 경우, 가상 머신(180)이 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 것으로 판단할 수 있다.
복수의 가상 머신(180)은 가상 스위치(160)로부터 데이터를 수신하고, 수신한 데이터에 따른 프로세스를 수행한다. 가상 머신(180)은 하나 이상의 프로세서를 통해 운영되는 가상 머신일 수 있다.
가상 머신 매니저(190)는 각 가상 머신(180)의 라이프 사이클(가상 머신의 생성, 시작, 중지, 재시작, 복제, 삭제 등등)을 관리한다.
맵퍼(110)는 주기적으로 플로우 테이블의 플로우 만료 정보를 참조하여, 비활성화가 가능한 플로우에 대해서 플로우 테이블에서 해당 플로우에 상응하는 플로우 정보, 큐 정보 및 플로우 만료 정보를 초기화하여 비활성화 시킨다. 이 때, 맵퍼(110)는 주기적으로 플로우 테이블의 각 플로우에 대한 플로우 만료 정보를 1만큼 차감하고, 플로우 만료 정보가 0인 플로우를 비활성화 가능한 플로우로 판단할 수 있다.
또한, 맵퍼(110)는 큐 테이블에 저장된 큐 만료 정보 중 플로우 만료 정보가 0인 플로우가 맵핑된 큐에 대한 큐 만료 정보를 1만큼 차감할 수 있다.
큐 매니저(150)는 주기적으로 큐 테이블을 참조하여, 비활성화가 가능한 큐를 확인한다. 예를 들어, 큐 매니저(150)는 각 큐 중 큐 테이블에 저장된 포인터의 수가 0이고, 큐 만료 정보가 0인 큐를 비활성화가 가능한 큐로 판단할 수 있다. 큐 매니저(150)는 전체 큐 중 어느 하나의 비활성화가 가능할 경우, 해당 큐에 대한 비활성화를 요청하는 비활성화 요청 신호를 가상 스위치 매니저(170)로 전송한다.
가상 스위치 매니저(170)는 비활성화 요청 신호를 수신하는 경우, 하나 이상의 가상 스위치(160)가 해당 큐에 상응하는 입력 데이터를 분배하는 것을 중단하도록 할 수 있다. 또한, 가상 스위치 매니저(170)는 하나 이상의 가상 스위치(160)가 입력 데이터를 분배하는 과정을 수행하지 않는 경우, 해당 가상 스위치(160)를 비활성화 시킬 수 있다.
도 2는 본 발명의 제1 실시예에 따른 가상 스위칭 장치가 가상 스위칭을 수행하는 과정을 예시한 순서도이고, 도 3은 본 발명의 제1 실시예에 따른 가상 스위칭 장치의 각 큐에 대한 입력데이터가 가상 머신으로 전달되는 경로를 예시한 도면이다. 이하 설명하는 각 과정은 가상 스위칭 장치에 포함된 각 기능부에 의해 수행되는 과정이나, 발명의 간결하고 명확한 설명을 위해 각 과정의 주체를 가상 스위칭 장치로 통칭하도록 한다.
도 2를 참조하면, 단계 210에서 가상 스위칭 장치는 입력 데이터를 수신한다.
단계 220에서 가상 스위칭 장치는 입력 데이터를 속성에 따라 하나 이상의 플로우로 분류한다. 예를 들어, 가상 스위칭 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 특정 비트 마스킹 처리가 된 값에 따라 입력 데이터를 플로우 중 어느 하나로 분류할 수 있다. 또는 가상 스위칭 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 해시 함수를 적용하여 생성한 값에 따라 입력 데이터를 플로우 중 어느 하나로 분류할 수 있다. 이 때, 가상 스위칭 장치는 각 플로우에 상응하는 입력 데이터를 데이터 메모리(120)에 저장할 수 있다.
단계 230에서 가상 스위칭 장치는 입력 데이터가 신규 플로우에 해당하는지 판단한다. 예를 들어, 가상 스위칭 장치는 플로우 테이블에 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 여부에 따라 입력 데이터가 신규 플로우에 해당하는지 판단할 수 있다.
단계 230에서 입력 데이터가 신규 플로우에 해당하지 않는 경우, 단계 240에서 가상 스위칭 장치는 기존 활성화된 플로우로써 입력 데이터를 큐에 맵핑한다. 예를 들어, 가상 스위칭 장치는 입력 데이터에 상응하는 플로우 정보가 플로우 테이블에 저장되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 해당 큐 정보에 대응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
단계 230에서 입력 데이터가 신규 플로우에 해당하는 경우, 단계 245에서 가상 스위칭 장치는 큐 테이블을 참조하여 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는지 판단한다.
단계 245에서 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 단계 250에서 가상 스위칭 장치는 신규 큐를 생성하고, 신규 큐와 신규 플로우를 맵핑한다.
단계 255에서 가상 스위칭 장치는 신규 큐에 대한 가상 스위치(160) 및 가상 머신(180)를 배정한다. 이 때, 가상 스위칭 장치는 신규 큐에 대해 단일 가상 머신(180)를 배정할 수 있다. 이 때, 각의 가상 스위치는 하나 이상의 큐에 큐잉되어 있는 데이터를 라운드 로빈, 가중치 라운드 로빈 등과 같은 동적으로 설정 가능한 정책에 따라 스위칭하여 가상 머신으로 전송할 수 있다.
단계 245에서 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 단계 260에서 가상 스위칭 장치는 맵핑 모드가 어떤 모드인지 판단한다.
단계 260에서 맵핑 모드가 파워 절약 모드인 경우, 단계 265에서 가상 스위칭 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 많은 포인터가 저장되어 있는 큐와 플로우를 맵핑한다.
단계 260에서 맵핑 모드가 균등 분배 모드인 경우, 단계 270에서 가상 스위칭 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 적은 포인터가 저장되어 있는 큐와 플로우를 맵핑한다.
단계 275에서 가상 스위칭 장치는 이전 단계에서 매핑된 큐와 플로우에 따라 플로우 테이블을 갱신한다.
단계 280에서 가상 스위칭 장치는 플로우와 맵핑된 큐에 입력 데이터의 포인터를 저장한다.
단계 285에서 가상 스위칭 장치는 각 큐에 상응하는 입력 데이터를 해당 큐에 배정된 가상 머신(180)를 통해 처리한다. 이 때, 가상 스위칭 장치는 각 큐에 대해 단일 가상 머신(180)를 배정하였기 때문에, 각 큐에 상응하는 입력 데이터는 단일 큐에 상응하는 입력 데이터는 하나 이상의 가상 스위치(160)를 통해 단일 가상 머신(180)로 전송될 수 있다. 도 3을 참조하여 예를 들면, 가상 스위칭 장치가 제1 큐(310), 제2 큐(320) 및 제3 큐(330), 제1 가상 스위치(340), 제2 가상 스위치 (350), 제1 가상 머신(360), 제2 가상 머신(370) 및 제3 가상 머신(380)를 활성화시키고, 제1 큐(310)에 대해서는 제1 가상 스위치 (340), 제2 가상 스위치 (350) 및 제1 가상 스위치(360)가 배정되었다고 가정하는 경우, 가상 스위칭 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 가상 스위치(340) 및 제2 가상 스위치(350)를 통해 제1 가상 머신(360)으로 전송할 수 있다. 이 때, 가상 스위칭 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 가상 머신(360) 이외의 가상 머신(370, 380)에 전송되지 않도록 함으로써, 입력 데이터의 처리 순서가 뒤바뀌는 상황을 방지할 수 있다.
단계 290에서 가상 스위칭 장치는 각 가상 머신을 통해 입력 데이터의 처리를 통해 생성한 결과 데이터를 출력한다.
도 4는 본 발명의 제2 실시예에 따른 가상 스위칭 장치를 예시한 도면이다.
도 4를 참조하면, 본 발명의 제2 실시예에 따른 가상 스위칭 장치는 맵퍼(410), 데이터 메모리(420), 테이블 제공부(430), 큐 메모리(440), 큐 매니저(450), 복수의 가상 스위치(460), 가상 스위치 매니저(470), 복수의 가상 머신(480), 가상 머신 매니저(490)를 포함한다.
맵퍼(410)는 네트워크를 통해 데이터(이하, 맵퍼(410)가 수신한 데이터를 입력 데이터라 지칭)를 수신하고, 플로우 테이블을 참조하여 입력 데이터를 속성에 따라 미리 지정된 플로우 중 어느 하나로 분류하고, 입력 데이터를 데이터 메모리(420)에 저장하고, 입력 데이터의 플로우와 맵핑된 테넌트 큐에 입력 데이터가 저장된 주소를 나타내는 포인터를 저장한다. 이 때, 테넌트 큐는 각 가상 머신(480)의 테넌트에 대응하는 큐일 수 있고, 하나 이상의 테넌트 큐가 각 테넌트에 대해 생성될 수 있다. 테넌트 큐가 생성되는 과정은 추후 상세히 설명하도록 한다. 이 때, 플로우 테이블은 각 플로우와 각 테넌트 큐의 맵핑 관계를 나타내는 테이블이다. 예를 들어, 플로우 테이블은 SIP(Source Internet Protocol) 주소 값, DIP(Destination Internet Protocol) 주소 값, SPORT(Source Port) 필드 값, DPORT(Destination Port) 필드 값, PROTOCOL 필드 값 등과 같은 입력 데이터의 헤더에 포함된 값이나 입력 데이터의 페이로드 정보에 포함된 값(이하, 식별 기준 값이라 지칭)에 대해 비트 마스킹 처리한 값과 가상 머신(480)의 테넌트 정보를 결합한 값인 플로우 정보와 하나의 테넌트 큐를 타 테넌트 큐에 대해 식별할 수 있는 식별 정보인 큐 정보를 맵핑하여 저장하는 테이블일 수 있다. 이 때, 가상 머신(480)의 테넌트 정보는 입력 데이터의 VLAN ID 필드의 값이거나, 터널링 프로토콜 ID 필드의 값일 수 있다. 맵퍼(410)는 플로우 테이블에서 식별 기준 값에 대해 비트 마스킹 처리한 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 따른 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
상술한 바와 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값과 가상 머신(480)의 테넌트 정보를 결합한 값인 플로우 정보와 큐 정보를 맵핑하여 저장하는 테이블 일 수 있다. 맵퍼(410)는 플로우 테이블에 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 상응하는 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 상술한 두 가지 설명과 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값과 가상 머신(480)의 테넌트 정보를 결합한 값인 플로우 정보를 주소로 하였을 때, 해당 주소에 큐 정보를 저장하는 테이블일 수 있다. 맵퍼(410)는 플로우 정보를 주소로 하는 저장 영역에 저장된 큐 정보에 상응하는 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 맵퍼(410)는 플로우 테이블에 각 플로우에 대한 플로우 만료 정보를 플로우 정보에 맵핑하여 저장할 수 있다. 플로우 만료 정보는 1 bit 이상으로 구성된 값일 수 있고, 각 플로우를 비활성화할 시점을 판단하기 위한 기준이 되는 정보이다.
즉, 맵퍼(410)는 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 테넌트 큐에 저장한다. 맵퍼(410)는 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있지 않은 경우, 현재 큐 메모리(440)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는지 판단한다. 맵퍼(410)는 현재 큐 메모리(440)에 활성화된 각 테넌트 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는 경우, 신규 테넌트 큐의 생성을 요청하는 큐 생성 요청 신호를 큐 매니저(450)로 전송한다. 맵퍼(410)는 큐 매니저(450)로부터 신규 테넌트 큐에 대응하는 큐 정보를 수신하는 경우, 신규 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장한다. 또는, 맵퍼(410)는 현재 큐 메모리(440)에 활성화된 각 테넌트 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하지 않는 경우, 현재 큐 메모리(440)에 활성화된 테넌트 큐 중 어느 하나에 입력 데이터에 상응하는 포인터를 저장한다.
이 때, 맵퍼(410)는 미리 설정된 매핑 모드가 "파워 절약 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 테넌트 큐 중 가장 많은 포인터가 저장되어 있는 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다. 맵퍼(410)는 미리 설정된 매핑 모드가 "균등 분배 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 테넌트 큐 중 가장 적은 포인터가 저장되어 있는 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
이 때, 매핑 모드는 사용자에 의해 미리 설정되는 모드로써, 포인터가 큐에 저장되는 방식을 상술한 "파워 절약 모드" 및 "균등 분배 모드"로 구분하여 나타낸다. 맵퍼(410)는 포인터를 큐에 저장한 이후, 각 플로우 정보와 큐 정보를 맵핑하여 플로우 테이블에 저장하는 갱신 과정을 수행하고, 큐 매니저(450)로 입력 데이터에 대한 포인터의 큐잉이 완료됨을 알리는 큐잉 완료 신호를 전송한다. 또한, 맵퍼(410)는 입력 데이터에 상응하는 플로우가 신규 플로우인 경우(플로우 정보와 큐 정보가 맵핑되어 있지 않은 경우)에 입력 데이터에 대한 큐잉을 완료한 후, 신규 플로우의 포인터를 큐잉함을 알리는 신규 플로우 신호를 큐 매니저(450)로 전송한다.
또한, 맵퍼(410)는 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 테넌트 큐에 저장하는 경우, 입력 데이터에 상응하는 플로우 정보에 맵핑된 플로우 만료 정보를 미리 지정된 수치로 리셋(reset)한다.
데이터 메모리(420)는 맵퍼(410)로부터 입력 데이터를 수신하는 경우, 입력 데이터를 저장한다.
테이블 제공부(430)는 플로우 테이블을 저장하고, 맵퍼(410)의 요청에 따라 플로우 테이블을 검색하거나 플로우 테이블을 갱신한다.
큐 메모리(440)는 하나 이상의 테넌트 큐를 통해 입력 데이터에 상응하는 포인터를 저장한다.
큐 매니저(450)는 맵퍼(410)로부터 큐 생성 요청 신호를 수신하는 경우, 큐 메모리(440) 내에 신규 테넌트 큐를 생성하고, 신규 테넌트 큐의 생성이 완료됨을 알리는 큐 생성 완료 신호를 가상 스위치 매니저(470)로 전송한다. 큐 매니저(450)는 가상 스위치 매니저(470)로부터 신규 테넌트 큐에 저장된 데이터를 분배할 가상 스위치(460)의 배정이 완료됨을 알리는 배정 완료 신호를 수신하는 경우, 테이블 제공부(430)에 신규 테넌트 큐에 상응하는 큐 정보를 저장하도록 큐 테이블을 갱신한다. 이 때, 큐 테이블은 현재 활성화된 큐 정보와 각 테넌트 큐에 저장된 포인터의 수 및 큐 만료 정보를 맵핑하여 저장하는 테이블일 수 있다. 큐 만료 정보는 1bit 이상으로 구성된 값일 수 있고, 각 테넌트 큐를 비활성화할 시점을 판단하기 위한 기준이 되는 정보로써, 초기값은 0일 수 있다. 큐 매니저(450)는 큐 테이블을 갱신한 이후, 신규 생성된 큐 정보를 맵퍼(410)로 전송한다. 또한, 큐 매니저(450)는 맵퍼(410)로부터 큐잉 완료 신호를 수신하는 경우, 큐잉 완료 신호에 상응하는 테넌트 큐에 큐잉된 포인터의 수를 갱신(1만큼 증가)할 수 있다. 큐 매니저(450)는 맵퍼(410)로부터 신규 플로우 신호를 수신하는 경우, 큐 만료 정보를 1만큼 증가시킨다.
하나 이상의 가상 스위치(460)는 하나 이상의 테넌트 큐에 저장된 포인터에 상응하는 입력 데이터를 데이터 메모리(420)로부터 추출하고, 라운드 로빈(Round Robin), 가중치 라운드 로빈(Weighted Round Robin) 등의 분배 정책에 따라 입력 데이터를 하나 이상의 가상 머신(480)으로 분배한다. 이 때, 가상 스위치(460)는 단일 테넌트 큐에 해당하는 플로우에 속하는 입력 데이터를 단일 가상 머신(480)으로 분배할 수 있다. 즉, 가상 스위치(460)는 단일 큐에 해당하는 플로우에 속하는 입력 데이터를 상이한 복수의 가상 머신(480)으로 분배하지 않는다. 이 때, 가상 스위치(460)는 테넌트 큐에 저장된 포인터에 상응하는 입력 데이터를 가상 머신(480)으로 전송한 이후, 큐 매니저(450)로 분배 완료 신호를 전송한다. 이후, 큐 매니저(450)는 분배 완료 신호를 수신하는 경우, 큐 테이블에 저장된 해당 테넌트 큐에 대응하는 포인터의 수를 차감할 수 있다. 또한, 가상 스위치(460)는 특정 테넌트(예를 들어, 485)에 상응하는 테넌트 큐에 대한 입력 데이터를 해당 테넌트(예를 들어, 485)에 해당하는 가상 머신(480)으로 전송할 수 있다.
가상 스위치 매니저(470)는 큐 매니저(450)로부터 신규 테넌트 큐에 대한 큐 생성 완료 신호를 수신하는 경우, 신규 테넌트 큐를 분배할 가상 스위치(160)를 배정한다. 가상 스위치 매니저(470)는 가상 스위치(460)의 배정 후, 배정 완료 신호를 큐 매니저(450)로 전송한다. 가상 스위치(460)는 가상 스위치 매니저(470)에 따라 배정된 테넌트 큐에 대응하는 입력 데이터를 하나 이상의 가상 머신(480)으로 전송할 수 있다. 가상 스위치 매니저(470)는 초기에 하나의 가상 스위치(460)를 각 큐에 대해 배정하여, 하나의 가상 스위치(460)가 입력 데이터를 하나 이상의 가상 머신(480)으로 전송하도록 할 수 있다. 이 때, 하나의 가상 스위치(460)를 통해 전송되는 입력 데이터의 용량이 미리 설정된 임계치 이상이 되는 경우, 가상 스위치 매니저(470)는 새로운 가상 스위치(460)를 생성하고, 새로운 가상 스위치(460)를 신규 큐의 입력 데이터를 분배할 가상 스위치(460)로 배정할 수 있다.
하나 이상의 가상 머신(480)은 입력 데이터를 가상 스위치(460)로부터 수신하고, 입력 데이터에 따른 처리 과정을 수행한다. 이 때, 가상 머신(480)은 단일 테넌트 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 경우, 플로우의 수에 상관없이 해당 플로우의 모든 데이터를 처리할 수 있다. 반대로, 가상 머신(480)이 단일 테넌트 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 경우, 큐 매니저(450)는 신규 테넌트 큐를 큐 메모리(440) 상에 생성하고, 신규 테넌트 큐의 생성에 따른 큐 생성 완료 신호를 가상 스위치 매니저(470)로 전송할 수 있다. 이 때, 큐 매니저(450)는 큐 테이블을 참조하여 단일 테넌트 큐에 저장된 포인터의 수가 지정된 임계값을 초과하는 경우, 가상 머신(480)이 단일 테넌트 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 것으로 판단할 수 있다. 또한, 큐 메니저(450)는 큐 테이블을 참조하여 단일 테넌트 큐에 저장된 포인터의 수가 지정된 임계값 이하인 경우, 가상 머신(480)이 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 것으로 판단할 수 있다.
복수의 가상 머신(480)은 가상 스위치(460)로부터 데이터를 수신하고, 수신한 데이터에 따른 프로세스를 수행한다. 가상 머신(480)은 하나 이상의 프로세서를 통해 운영되는 가상 머신일 수 있다.
가상 머신 매니저(490)는 각 가상 머신(480)의 라이프 사이클(가상 머신의 생성, 시작, 중지, 재시작, 복제, 삭제 등등)을 관리한다.
맵퍼(410)는 주기적으로 플로우 테이블의 플로우 만료 정보를 참조하여, 비활성화가 가능한 플로우에 대해서 플로우 테이블에서 해당 플로우에 상응하는 플로우 정보, 큐 정보 및 플로우 만료 정보를 초기화하여 비활성화 시킨다. 이 때, 맵퍼(410)는 주기적으로 플로우 테이블의 각 플로우에 대한 플로우 만료 정보를 1만큼 차감하고, 플로우 만료 정보가 0인 플로우를 비활성화 가능한 플로우로 판단할 수 있다.
또한, 맵퍼(410)는 큐 테이블에 저장된 큐 만료 정보 중 플로우 만료 정보가 0인 플로우가 맵핑된 테넌트 큐에 대한 큐 만료 정보를 1만큼 차감할 수 있다.
큐 매니저(450)는 주기적으로 큐 테이블을 참조하여, 비활성화가 가능한 테넌트 큐를 확인한다. 예를 들어, 큐 매니저(450)는 각 테넌트 큐 중 큐 테이블에 저장된 포인터의 수가 0이고, 큐 만료 정보가 0인 큐를 비활성화가 가능한 테넌트 큐로 판단할 수 있다. 큐 매니저(450)는 전체 테넌트 큐 중 어느 하나의 비활성화가 가능할 경우, 해당 테넌트 큐에 대한 비활성화를 요청하는 비활성화 요청 신호를 가상 스위치 매니저(170)로 전송한다.
가상 스위치 매니저(470)는 비활성화 요청 신호를 수신하는 경우, 하나 이상의 가상 스위치(460)가 해당 테넌트 큐에 상응하는 입력 데이터를 분배하는 것을 중단하도록 할 수 있다. 또한, 가상 스위치 매니저(470)는 하나 이상의 가상 스위치(460)가 입력 데이터를 분배하는 과정을 수행하지 않는 경우, 해당 가상 스위치(460)를 비활성화 시킬 수 있다.
도 5는 본 발명의 제2 실시예에 따른 가상 스위칭 장치가 가상 스위칭을 수행하는 과정을 예시한 순서도이고, 도 6은 본 발명의 제2 실시예에 따른 가상 스위칭 장치의 각 큐에 대한 입력데이터가 가상 머신으로 전달되는 경로를 예시한 도면이다. 이하 설명하는 각 과정은 가상 스위칭 장치에 포함된 각 기능부에 의해 수행되는 과정이나, 발명의 간결하고 명확한 설명을 위해 각 과정의 주체를 가상 스위칭 장치로 통칭하도록 한다. 이 때, 가상 스위칭 장치에서 운영하는 각 가상 머신(480)은 하나 이상의 테넌트 중 어느 하나(485)에 포함되고, 각 테넌트 큐는 상술한 테넌트 중 어느 하나에 할당된 테넌트 큐일 수 있다.
도 5를 참조하면, 단계 510에서 가상 스위칭 장치는 입력 데이터를 수신한다.
단계 520에서 가상 스위칭 장치는 입력 데이터를 속성에 따라 하나 이상의 플로우로 분류한다. 예를 들어, 가상 스위칭 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 특정 비트 마스킹 처리가 된 값과 가상 머신(480)의 테넌트 정보를 결합한 값인 플로우 정보에 따라 입력 데이터를 지정된 플로우 중 어느 하나로 분류할 수 있다. 이 때, 가상 머신(480)의 테넌트 정보는 입력 데이터의 VLAN ID 필드의 값이거나, 터널링 프로토콜 ID 필드의 값일 수 있다.
또는 가상 스위칭 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 해시 함수를 적용하여 생성한 값과 가상 머신(480)의 테넌트 정보를 결합한 값인 플로우 정보에 따라 입력 데이터를 플로우 중 어느 하나로 분류할 수 있다. 이 때, 가상 스위칭 장치는 각 플로우에 상응하는 입력 데이터를 데이터 메모리(420)에 저장할 수 있다. 따라서, 가상 스위칭 장치는 입력 데이터를 처리할 가상 머신(480)의 테넌트 정보에 따라 입력 데이터를 분류하기 때문에, 각 테넌트 큐는 특정 테넌트에 대응하는 플로우와 맵핑될 수 있다.
단계 530에서 가상 스위칭 장치는 입력 데이터가 신규 플로우에 해당하는지 판단한다. 예를 들어, 가상 스위칭 장치는 플로우 테이블에 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 여부에 따라 입력 데이터가 신규 플로우에 해당하는지 판단할 수 있다.
단계 530에서 입력 데이터가 신규 플로우에 해당하지 않는 경우, 단계 540에서 가상 스위칭 장치는 기존 활성화된 플로우로써 입력 데이터를 테넌트 큐에 맵핑한다. 예를 들어, 가상 스위칭 장치는 입력 데이터에 상응하는 플로우 정보가 플로우 테이블에 저장되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 해당 큐 정보에 대응하는 테넌트 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
단계 530에서 입력 데이터가 신규 플로우에 해당하는 경우, 단계 545에서 가상 스위칭 장치는 큐 테이블을 참조하여 각 테넌트 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는지 판단한다.
단계 545에서 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 단계 550에서 가상 스위칭 장치는 신규 테넌트 큐를 생성하고, 신규 테넌트 큐와 신규 플로우를 맵핑한다.
단계 555에서 가상 스위칭 장치는 신규 테넌트 큐에 대한 가상 스위치(460) 및 가상 머신(480)를 배정한다. 이 때, 가상 스위칭 장치는 신규 테넌트 큐에 대해 단일 가상 머신(480)를 배정할 수 있다. 이 때, 각의 가상 스위치는 하나 이상의 테넌트 큐에 큐잉되어 있는 데이터를 라운드 로빈, 가중치 라운드 로빈 등과 같은 동적으로 설정 가능한 정책에 따라 스위칭하여 가상 머신으로 전송할 수 있다.
단계 545에서 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 테넌트 큐가 존재하는 경우, 단계 560에서 가상 스위칭 장치는 맵핑 모드가 어떤 모드인지 판단한다.
단계 560에서 맵핑 모드가 파워 절약 모드인 경우, 단계 565에서 가상 스위칭 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 테넌트 큐 중 가장 많은 포인터가 저장되어 있는 테넌트 큐와 플로우를 맵핑한다.
단계 560에서 맵핑 모드가 균등 분배 모드인 경우, 단계 570에서 가상 스위칭 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 테넌트 큐 중 가장 적은 포인터가 저장되어 있는 테넌트 큐와 플로우를 맵핑한다.
단계 575에서 가상 스위칭 장치는 이전 단계에서 매핑된 테넌트 큐와 플로우에 따라 플로우 테이블을 갱신한다.
단계 580에서 가상 스위칭 장치는 플로우와 맵핑된 테넌트 큐에 입력 데이터의 포인터를 저장한다.
단계 585에서 가상 스위칭 장치는 각 테넌트 큐에 상응하는 입력 데이터를 해당 테넌트 큐에 배정된 가상 머신(480)를 통해 처리한다. 이 때, 가상 스위칭 장치는 각 테넌트 큐에 대해 단일 가상 머신(480)를 배정하였기 때문에, 각 테넌트 큐에 상응하는 입력 데이터는 단일 테넌트 큐에 상응하는 입력 데이터는 하나 이상의 가상 스위치(460)를 통해 단일 가상 머신(480)로 전송될 수 있다. 도 3을 참조하여 예를 들면, 가상 스위칭 장치가 제1 테넌트 큐(310), 제2 테넌트 큐(320) 및 제3 테넌트 큐(330), 제1 가상 스위치(340), 제2 가상 스위치 (350), 제1 가상 머신(360), 제2 가상 머신(370) 및 제3 가상 머신(380)를 활성화시키고, 제1 테넌트 큐(310) 및 제2 테넌트 큐(320)는 제1 가상 머신(360) 및 제2 가상 머신(370)을 포함하는 테넌트(610)에 대응하는 큐(630)이고, 제3 테넌트 큐(330)는 제3 가상 머신(380)을 포함하는 테넌트(620)에 대응하는 큐(640)라고 가정하자. 가상 스위칭 장치는 제1 큐(310)에 대해서는 제1 가상 스위치 (340), 제2 가상 스위치 (350) 및 제1 가상 머신(360)이 배정되었다고 가정하는 경우, 가상 스위칭 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 가상 스위치(340) 및 제2 가상 스위치(350)를 통해 제1 가상 머신(360)으로 전송할 수 있다. 이 때, 가상 스위칭 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 가상 머신(360) 이외의 가상 머신(370, 380)에 전송되지 않도록 함으로써, 입력 데이터의 처리 순서가 뒤바뀌는 상황을 방지할 수 있다.
단계 290에서 가상 스위칭 장치는 각 가상 머신을 통해 입력 데이터의 처리를 통해 생성한 결과 데이터를 출력한다.
상술한 본 발명의 일 실시예에 따른 가상 스위칭 장치는 컴퓨터 시스템으로 구현될 수 있다.
도 7은 본 발명의 제1 실시예 및 제2 실시예에 따른 가상 스위칭 장치가 구현된 컴퓨터 시스템을 예시한 도면이다.
도 7을 참조하면, 본 발명에 따른 실시예는 컴퓨터 시스템내에, 예를 들어, 컴퓨터 판독가능 기록매체로 구현될 수 있다. 도 7에 도시된 바와 같이, 컴퓨터 시스템(700)은 하나 이상의 프로세서(710), 메모리(720), 저장부(730), 사용자 인터페이스 입력부(740) 및 사용자 인터페이스 출력부(750) 중 적어도 하나 이상의 요소를 포함할 수 있으며, 이들은 버스(760)를 통해 서로 통신할 수 있다. 또한, 컴퓨터 시스템(700)은 네트워크에 접속하기 위한 네트워크 인터페이스(770)를 또한 포함할 수 있다. 프로세서(710)는 메모리(720) 및/또는 저장소(730)에 저장된 처리 명령어를 실행시키는 CPU 또는 반도체 소자일 수 있고, 하나 이상의 프로세서(710)가 컴퓨터 시스템(700) 내에 포함될 수 있다. 메모리(720) 및 저장부(730)는 다양한 유형의 휘발성/비휘발성 기억 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(724) 및 RAM(1325)를 포함할 수 있다.
이제까지 본 발명에 대하여 그 실시 예를 중심으로 살펴보았다. 전술한 실시 예 외의 많은 실시 예들이 본 발명의 특허청구범위 내에 존재한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 하나 이상의 큐를 저장하는 큐 메모리;
    데이터를 저장하는 데이터 메모리;
    상기 데이터를 플로우로 분류하고, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼;
    상기 데이터에 따른 프로세스를 수행하는 복수의 가상 머신; 및
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 가상 머신으로 전송하는 가상 스위치를 포함하고,
    상기 가상 스위치는,
    단일 큐에 상응하는 데이터를 단일 가상 머신으로 전송하고,
    상기 맵퍼는,
    상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 기초로 산출된 해시 값을 포함하는 상기 플로우를 식별하는 플로우 정보에 따라 상기 데이터를 분류하는 가상 스위칭 장치.
  2. 제1항에 있어서,
    상기 플로우 정보 및 상기 큐를 식별하는 정보인 큐 정보를 포함하는 플로우 테이블을 저장하는 테이블 제공부를 더 포함하고,
    상기 맵퍼는,
    상기 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인하는 가상 스위칭 장치.
  3. 제2항에 있어서,
    상기 맵퍼는,
    상기 플로우 테이블에서 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 가상 스위칭 장치.
  4. 제3항에 있어서,
    상기 맵퍼는,
    기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하고, 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 가상 스위칭 장치.
  5. 제4항에 있어서,
    상기 맵퍼가 상기 플로우와 상기 신규 큐를 맵핑하는 경우, 상기 신규 큐에 대한 가상 스위치를 배정하는 가상 스위치 매니저를 더 포함하는 가상 스위칭 장치.
  6. 제5항에 있어서,
    상기 가상 스위치 매니저는,
    배정된 가상 스위치를 통해 전송되는 데이터의 용량이 미리 설정된 임계치 이상인 경우, 새로운 가상 스위치를 생성하고, 상기 새로운 가상 스위치를 상기 신규 큐에 대한 가상 스위치로 배정하는 가상 스위칭 장치.
  7. 제4항에 있어서,
    상기 맵퍼는,
    기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 가상 스위칭 장치.
  8. 제4항에 있어서,
    상기 맵퍼는,
    기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 가상 스위칭 장치.
  9. 삭제
  10. 제1항에 있어서,
    상기 해시 값은,
    상기 해시 함수를 적용한 값과 상기 가상 머신의 테넌트 정보를 결합한 값 또는 상기 해시 함수를 적용한 값을 포함하는 가상 스위칭 장치.
  11. 가상 스위칭 장치가 병렬 처리를 수행하는 방법에 있어서,
    데이터를 수신하고, 상기 데이터를 데이터 메모리에 저장하는 단계;
    상기 데이터를 플로우로 분류하는 단계;
    상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계;
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 큐에 대해 배정된 가상 머신으로 전송하는 단계; 및
    상기 큐에 배정된 상기 가상 머신를 통해 상기 데이터에 상응하는 프로세스를 수행하는 단계를 포함하고,
    상기 데이터를 플로우로 분류하는 단계는,
    상기 데이터를 상기 데이터의 식별 기준 값에 대해 비트 마스킹 처리한 값 또는 해시 함수를 기초로 산출된 해시 값을 포함하는 상기 플로우를 식별하는 플로우 정보에 따라 데이터를 분류하는 단계를 포함하는 가상 스위칭 방법.
  12. 제11항에 있어서,
    상기 플로우 정보 및 상기 큐를 식별하는 정보인 큐 정보를 포함하는 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인하는 단계를 더 포함하는 가상 스위칭 방법.
  13. 제12항에 있어서,
    상기 플로우 테이블에 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계를 더 포함하는 가상 스위칭 방법.
  14. 제13항에 있어서,
    상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계는,
    상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하는 단계; 및
    상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계를 포함하는 가상 스위칭 방법.
  15. 제14항에 있어서,
    상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 가상 스위치를 배정하는 단계; 및
    상기 신규 큐에 대한 단일 프로세서를 배정하는 단계를 더 포함하는 가상 스위칭 방법.
  16. 제15항에 있어서,
    상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 가상 스위치를 배정하는 단계는,
    상기 배정된 가상 스위치를 통해 전송되는 데이터의 용량이 미리 설정된 임계치 이상인 경우, 새로운 가상 스위치를 생성하고, 상기 새로운 가상 스위치를 상기 신규 큐에 대한 가상 스위치로 배정하는 단계를 포함하는 가상 스위칭 방법.
  17. 제14항에 있어서,
    상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는,
    맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계를 포함하는 가상 스위칭 방법.
  18. 제14항에 있어서,
    상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는,
    맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계를 포함하는 가상 스위칭 방법.
  19. 삭제
  20. 제11항에 있어서,
    상기 해시 값은,
    상기 해시 함수를 적용한 값과 상기 가상 머신의 테넌트 정보를 결합한 값 또는 상기 해시 함수를 적용한 값을 포함하는 가상 스위칭 방법.
KR1020150190116A 2015-12-30 2015-12-30 가상 스위칭 장치 및 방법 KR101953546B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150190116A KR101953546B1 (ko) 2015-12-30 2015-12-30 가상 스위칭 장치 및 방법
US15/298,592 US10348651B2 (en) 2015-12-30 2016-10-20 Apparatus and method for virtual switching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150190116A KR101953546B1 (ko) 2015-12-30 2015-12-30 가상 스위칭 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170080846A KR20170080846A (ko) 2017-07-11
KR101953546B1 true KR101953546B1 (ko) 2019-06-03

Family

ID=59227018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150190116A KR101953546B1 (ko) 2015-12-30 2015-12-30 가상 스위칭 장치 및 방법

Country Status (2)

Country Link
US (1) US10348651B2 (ko)
KR (1) KR101953546B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979328B2 (en) * 2017-03-31 2021-04-13 Intel Corporation Resource monitoring
US10601693B2 (en) * 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
KR102519838B1 (ko) * 2018-04-04 2023-04-11 한국전자통신연구원 데이터 융합 스위칭 장치 및 방법
US20190044892A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Technologies for using a hardware queue manager as a virtual guest to host networking interface

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460848B1 (ko) * 2009-04-01 2014-11-20 니시라, 인크. 가상 스위치를 구현 및 관리하는 방법 및 장치

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854117B1 (en) 2000-10-31 2005-02-08 Caspian Networks, Inc. Parallel network processor array
US7765405B2 (en) 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
US8107486B1 (en) * 2006-10-11 2012-01-31 Marvell International Ltd. Flexible queue controller reserve list
US7966620B2 (en) * 2008-11-07 2011-06-21 Microsoft Corporation Secure network optimizations when receiving data directly in a virtual machine's memory address space
US8566822B2 (en) * 2009-07-22 2013-10-22 Broadcom Corporation Method and system for distributing hypervisor functionality over multiple physical devices in a network and configuring sub-hypervisor to control the virtual machines
US8346999B2 (en) 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8984526B2 (en) 2012-03-09 2015-03-17 Microsoft Technology Licensing, Llc Dynamic processor mapping for virtual machine network traffic queues
US9092269B2 (en) * 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
KR102020049B1 (ko) * 2013-01-11 2019-11-04 한국전자통신연구원 멀티 테넌트 클라우드 서비스의 서비스 품질을 보장하기 위한 스위치, 방법 및 상기 스위치를 포함하는 시스템
US9417901B2 (en) 2013-01-11 2016-08-16 Electronics And Telecommunications Research Institute Switch and method for guaranteeing quality of service of multi-tenant cloud service and system having the same switch
US9219689B2 (en) * 2013-03-15 2015-12-22 International Business Machines Corporation Source-driven switch probing with feedback request
KR102153585B1 (ko) * 2013-06-24 2020-09-09 한국전자통신연구원 네트워크 기능 가상화 장치 및 방법
KR20150000160A (ko) 2013-06-24 2015-01-02 한국전자통신연구원 분산 가상 스위치를 이용한 네트워크 구현 방법, 이를 수행하는 네트워크 장치 및 분산 가상 스위치 기반 네트워크 시스템
US20150033222A1 (en) * 2013-07-25 2015-01-29 Cavium, Inc. Network Interface Card with Virtual Switch and Traffic Flow Policy Enforcement
US10355997B2 (en) * 2013-09-26 2019-07-16 Appformix Inc. System and method for improving TCP performance in virtualized environments
US9385959B2 (en) * 2013-09-26 2016-07-05 Acelio, Inc. System and method for improving TCP performance in virtualized environments
KR101571810B1 (ko) 2013-12-30 2015-11-25 주식회사 시큐아이 복수의 가상 머신들을 포함하는 컴퓨팅 시스템
US9454497B2 (en) * 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
US20160285753A1 (en) * 2015-03-27 2016-09-29 Telefonaktiebolaget L M Ericsson (Publ) Lock free flow learning in a network device
US10063446B2 (en) * 2015-06-26 2018-08-28 Intel Corporation Netflow collection and export offload using network silicon
US20170093677A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Method and apparatus to securely measure quality of service end to end in a network
US10027604B2 (en) * 2015-11-24 2018-07-17 Red Hat Israel, Ltd. Implicit dynamic receive queue steering for unidirectional flows in virtualized systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460848B1 (ko) * 2009-04-01 2014-11-20 니시라, 인크. 가상 스위치를 구현 및 관리하는 방법 및 장치

Also Published As

Publication number Publication date
US20170195261A1 (en) 2017-07-06
KR20170080846A (ko) 2017-07-11
US10348651B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
KR101583325B1 (ko) 가상 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
US20210289030A1 (en) Methods, systems and devices for parallel network interface data structures with differential data storage and processing service capabilities
KR101953546B1 (ko) 가상 스위칭 장치 및 방법
WO2020052605A1 (zh) 一种网络切片的选择方法及装置
KR101639797B1 (ko) 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
US9584481B2 (en) Host providing system and communication control method
US20150234668A1 (en) Virtual machine load balancing
US11689470B2 (en) Allocation of processors for processing packets
US9594584B2 (en) Apparatus and method for mapping of tenant based dynamic processor
US9584446B2 (en) Memory buffer management method and system having multiple receive ring buffers
KR20130130295A (ko) 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법
CN107896196B (zh) 一种分配报文的方法和装置
US10594631B1 (en) Methods and apparatus for memory resource management in a network device
CN112751717B (zh) 一种业务流量的管理系统以及方法
CN107408058A (zh) 一种虚拟资源的部署方法、装置及系统
EP3342113B1 (en) Dynamic allocation of resources within network devices
KR20180134219A (ko) 가상머신 패킷의 처리방법과 그 장치
KR20170018138A (ko) 병렬 처리 장치 및 방법
KR101773528B1 (ko) 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
US10992601B2 (en) Packet processing method and apparatus in multi-layered network environment
KR20170056773A (ko) 플로우 기반 병렬 처리 방법 및 장치
KR102112270B1 (ko) 다중계층 네트워크 환경에서 패킷을 처리하는 방법 및 그 장치
KR20150114911A (ko) 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치
KR20190119230A (ko) 데이터 융합 스위칭 장치 및 방법
KR20190069032A (ko) 가상플로우의 인식 방법과 그 장치

Legal Events

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