KR102179769B1 - Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method - Google Patents

Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method Download PDF

Info

Publication number
KR102179769B1
KR102179769B1 KR1020190136628A KR20190136628A KR102179769B1 KR 102179769 B1 KR102179769 B1 KR 102179769B1 KR 1020190136628 A KR1020190136628 A KR 1020190136628A KR 20190136628 A KR20190136628 A KR 20190136628A KR 102179769 B1 KR102179769 B1 KR 102179769B1
Authority
KR
South Korea
Prior art keywords
tenant
network
queue
array
index
Prior art date
Application number
KR1020190136628A
Other languages
Korean (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 KR1020190136628A priority Critical patent/KR102179769B1/en
Application granted granted Critical
Publication of KR102179769B1 publication Critical patent/KR102179769B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card

Abstract

A network policy application method supporting multiple queues includes: a step of initializing an intra-module tenant mapping array, a tenant weight array, a starting queue index array, and a port number array and variables based on network policy content submitted by a network administrator; a step of ensuring inter-tenant network isolation by assigning a network interface card (NIC) queue by the weight assigned to each tenant based on the tenant ID, the tenant weight, and the tenant′s starting queue index and current queue-tracking index acquired from the initialized arrays; and a step of ensuring network isolation between intra-tenant applications by inserting a high-priority application packet into the head of Qdisc in order to differentiate the priorities of the intra-tenant applications. According to the present invention, it is possible to apply an intra-server network policy by means of multiple packet schedulers, with an existing commercial MQ-NIC alone, and even without cost and replacement time necessary for new hardware development.

Description

다중 큐를 지원하는 네트워크 정책 적용 방법, 이를 수행하기 위한 기록 매체 및 장치{METHOD TO ENFORCE NETWORK POLICY WITH COMMODITY MULTIQUEUE, RECORDING MEDIUM AND DEVICE FOR PERFORMING THE METHOD}How to apply a network policy that supports multiple queues, recording media and devices for performing this {METHOD TO ENFORCE NETWORK POLICY WITH COMMODITY MULTIQUEUE, RECORDING MEDIUM AND DEVICE FOR PERFORMING THE METHOD}

본 발명은 다중 큐를 지원하는 네트워크 정책 적용 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것으로서, 더욱 상세하게는 패킷 데이터 처리 방법에 관한 것으로, 다중 큐를 지원하는 네트워크 인터페이스 카드(Network Interface Cards, NIC)를 장착한 컴퓨터 서버 장치에서 다양한 패킷 스케줄링 방법을 표현하는 기술에 관한 것이다.The present invention relates to a method for applying a network policy supporting multiple queues, a recording medium and an apparatus for performing the same, and more particularly, to a method for processing packet data, and includes network interface cards supporting multiple queues. NIC) in a computer server device equipped with a technology for expressing various packet scheduling methods.

클라우드 데이터 센터의 서버는 다양한 응용을 사용하는 다수의 테넌트가 공유한다. 서버는 데이터 센터 네트워크의 첫 번째 병목 지점이므로 테넌트는 테넌트 간 및 테넌트 내 응용 간 네트워크 격리를 필요로 한다. The servers in the cloud data center are shared by multiple tenants using various applications. Servers are the first bottleneck in the data center network, so tenants need network isolation between tenants and between applications within tenants.

네트워크 격리를 보장하기 위해 운영자는 테넌트 사이의 가중치를 지정하고 테넌트 내에서 서로 다른 성능 요구 사항을 갖는 응용 프로그램 간 우선 순위를 지정하는 등의 네트워크 정책을 명세하며, 이러한 네트워크 정책은 일반적으로 패킷 스케줄러에 의해 적용된다.To ensure network isolation, operators specify network policies, such as assigning weights between tenants and prioritizing between applications with different performance requirements within tenants, and these network policies are usually in the packet scheduler. Applied by

한편, 오늘 날의 10Gbps 이상의 고속 네트워크 인터페이스 카드 (Network Interface Cards, NIC)는 다중 큐(Multiqueue)를 지원한다. 단일 큐를 지원하는 NIC에서는 패킷 스케줄링을 통한 네트워크 정책 적용이 서버 내 qdisc에서 일어났으나, 다중 큐 지원 NIC (MQ-NIC)가 장착된 서버에서는 NIC가 최종적인 네트워크 정책 적용 지점이 된다. Meanwhile, today's 10Gbps or higher high-speed network interface cards (NICs) support multiple queues. In a NIC supporting a single queue, the application of network policy through packet scheduling took place in qdisc in the server, but in a server equipped with a multi-queue supporting NIC (MQ-NIC), the NIC becomes the final network policy application point.

그러나, 오늘날의 MQ-NIC는 큐당 공정성을 보장하기 위한 라운드 로빈 (Round-Robin, RR) 패킷 스케줄러만을 지원한다. 다양한 패킷 스케줄러를 지원하는 NIC 하드웨어를 설계할 수도 있으나, 이는 근본적으로 과도한 교체 비용이 발생하며, 실제 배치까지 상당한 시간이 필요하다는 단점이 있다.However, today's MQ-NIC only supports a Round-Robin (RR) packet scheduler to ensure per-queue fairness. Although it is possible to design NIC hardware supporting various packet schedulers, this has a drawback in that it incurs excessive replacement cost and requires a considerable amount of time until actual deployment.

KR 10-1489414 B1KR 10-1489414 B1 KR 10-0817676 B1KR 10-0817676 B1 US 9225659 B2US 9225659 B2

이에, 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로 본 발명의 목적은 하드웨어 수정 없이 소프트웨어 방법만으로 다중 큐 NIC를 장착한 네트워크 서버 내에서 다양한 네트워크 정책 적용 방법을 제공하는 것이다. Accordingly, the technical problem of the present invention is conceived in this respect, and an object of the present invention is to provide a method of applying various network policies in a network server equipped with a multi-queue NIC only by a software method without hardware modification.

본 발명의 다른 목적은 상기 다중 큐를 지원하는 네트워크 정책 적용 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 기록 매체를 제공하는 것이다.Another object of the present invention is to provide a recording medium in which a computer program is recorded for performing a method of applying a network policy supporting the multiple queues.

본 발명의 또 다른 목적은 상기 다중 큐를 지원하는 네트워크 정책 적용 방법을 수행하기 위한 장치를 제공하는 것이다.Another object of the present invention is to provide an apparatus for performing a method for applying a network policy supporting the multiple queues.

상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 다중 큐를 지원하는 네트워크 정책 적용 방법은, 네트워크 관리자가 제출한 네트워크 정책 내용을 기초로, 모듈 내부의 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열과 변수들을 초기화하는 단계; 초기화된 배열로부터 획득한 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스 및 현재의 큐를 추적하는 인덱스를 기초로, 각 테넌트에게 할당된 가중치만큼의 네트워크 인터페이스 카드(Network Interface Cards, NIC) 큐를 할당하여 테넌트 간 네트워크 격리를 보장하는 단계; 및 테넌트 내 응용 간의 우선순위를 다르게 하기 위해 우선순위가 높은 응용 패킷을 Qdisc의 머리에 삽입하여 테넌트 내 응용 간의 네트워크 격리를 보장하는 단계;를 포함한다.A network policy application method supporting multiple queues according to an embodiment for realizing the object of the present invention is, based on the network policy content submitted by the network administrator, a tenant mapping arrangement in a module, a tenant weight arrangement, and start Initializing a queue index array and a port number array and variables; Based on the tenant ID obtained from the initialized array, the tenant weight, the tenant's starting queue index, and the index tracking the current queue, network interface cards (NIC) queues equal to the weight assigned to each tenant are allocated. Thereby ensuring network isolation between tenants; And inserting a high-priority application packet into the head of Qdisc in order to have different priorities between applications in the tenant to ensure network isolation between applications in the tenant.

본 발명의 실시예에서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는, 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값이 해당 테넌트의 가중치 이상인 경우, 현재 큐 인덱스에 해당하는 값을 0으로 초기화할 수 있다.In an embodiment of the present invention, in the step of ensuring network isolation between tenants, when the value corresponding to the index tracking the current queue of the tenant is equal to or greater than the weight of the corresponding tenant, the value corresponding to the current queue index is initialized to 0. can do.

본 발명의 실시예에서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는, 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터를 상기 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값과 시작 큐 인덱스를 합한 값으로 갱신할 수 있다.In an embodiment of the present invention, in the step of ensuring network isolation between tenants, the queue mapping metadata of the socket to which the packet currently being processed belongs, the value corresponding to the index tracking the current queue of the tenant, and the start queue index. It can be updated with the summed value.

본 발명의 실시예에서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는, 다음 패킷을 위해 현재의 큐를 추적하는 인덱스를 갱신하는 단계를 더 포함할 수 있다. In an embodiment of the present invention, the step of ensuring network isolation between tenants may further include updating an index tracking a current queue for a next packet.

본 발명의 실시예에서, 상기 테넌트 내 응용 간의 네트워크 격리를 보장하는 단계는, 현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 현재 처리 중인 패킷이 속한 소켓의 우선순위 메타데이터 값을 1로 설정하여 높은 우선순위를 부여하고, 그 이외의 경우 우선순위 메타데이터 값을 0으로 설정하여 낮은 우선순위를 부여할 수 있다.In an embodiment of the present invention, in the step of ensuring network isolation between applications in the tenant, if the port of the packet currently being used is included in the port number array, the priority metadata value of the socket to which the packet currently being processed belongs is set to 1. By setting, a high priority can be given, and in other cases, a lower priority can be given by setting the priority metadata value to 0.

본 발명의 실시예에서, 다중 큐를 지원하는 네트워크 정책 적용 방법은, 상기 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터 값과 상기 우선순위 메타데이터 값을 기초로 현재 사용 중인 패킷의 인큐 여부를 결정하는 단계를 더 포함할 수 있다.In an embodiment of the present invention, a method of applying a network policy supporting multiple queues may determine whether to enqueue a packet currently being used based on a queue mapping metadata value of a socket to which the packet currently being processed belongs and the priority metadata value. It may further include the step of determining.

본 발명의 실시예에서, 상기 테넌트 매핑 배열은 현재 처리 중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있도록 CPU 코어 별로 할당되어 있는 테넌트의 인덱스를 표기하고, 상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하고, 상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트 별로 점유하는 NIC 큐 인덱스를 계산하여 저장하고, 상기 포트 번호 배열은 특정 테넌트가 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장할 수 있다.In an embodiment of the present invention, the tenant mapping arrangement indicates an index of a tenant allocated for each CPU core so that a packet currently being processed is a packet owned by a tenant, and the tenant weight arrangement indicates a network scheduling weight for each tenant. And the start queue index array calculates and stores the NIC queue index occupied by each tenant based on the tenant weight array value, and the port number array is the application for which a specific tenant wants to give high priority. The port numbers used can be saved in an array format.

상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 컴퓨터로 판독 가능한 저장 매체에는, 다중 큐를 지원하는 네트워크 정책 적용 방법을 수행하기 위한 컴퓨터 프로그램이 기록되어 있다. In a computer-readable storage medium according to an embodiment for realizing another object of the present invention, a computer program for performing a method of applying a network policy supporting multiple queues is recorded.

상기한 본 발명의 또 다른 목적을 실현하기 위한 일 실시예에 따른 다중 큐를 지원하는 네트워크 정책 적용 장치는, 네트워크 관리자가 제출한 네트워크 정책 내용을 기초로, 모듈 내부의 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열과 변수들을 초기화하는 정책 초기화부; 상기 정책 초기화부로부터 획득한 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스 및 현재의 큐를 추적하는 인덱스를 기초로, 각 테넌트에게 할당된 가중치만큼의 네트워크 인터페이스 카드(Network Interface Cards, NIC) 큐를 할당하여 테넌트 간 네트워크 격리를 보장하는 플랫 정책 시행부; 및 테넌트 내 응용 간의 우선순위를 다르게 하기 위해 우선순위가 높은 응용 패킷을 Qdisc의 머리에 삽입하여 테넌트 내 응용 간의 네트워크 격리를 보장하는 계층 정책 시행부;를 포함한다.A network policy application apparatus supporting multiple queues according to an embodiment for realizing another object of the present invention described above is, based on the network policy content submitted by a network administrator, a tenant mapping arrangement and a tenant weight arrangement in a module. , A policy initialization unit for initializing a start queue index array and a port number array and variables; Based on the tenant ID obtained from the policy initiating unit, the tenant weight, the tenant's start queue index, and the index tracking the current queue, a network interface card (NIC) queue equal to the weight assigned to each tenant A flat policy enforcement unit that ensures network isolation between tenants by allocating; And a hierarchical policy enforcement unit that guarantees network isolation between applications in the tenant by inserting an application packet having a high priority into the head of Qdisc in order to change the priorities between applications in the tenant.

본 발명의 실시예에서, 상기 플랫 정책 시행부는, 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값이 해당 테넌트의 가중치 이상인 경우, 현재 큐 인덱스에 해당하는 값을 0으로 초기화하고, 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터를 상기 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값과 시작 큐 인덱스를 합한 값으로 갱신하고, 다음 패킷을 위해 현재의 큐를 추적하는 인덱스를 갱신할 수 있다.In an embodiment of the present invention, the flat policy enforcement unit initializes the value corresponding to the current queue index to 0 when the value corresponding to the index tracking the tenant's current queue is equal to or greater than the weight of the corresponding tenant, and is currently being processed. Update the queue mapping metadata of the socket to which the packet belongs to the sum of the index corresponding to the current queue tracking index of the tenant and the starting queue index, and update the index tracking the current queue for the next packet. have.

본 발명의 실시예에서, 상기 계층 정책 시행부는, 현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 현재 처리 중인 패킷이 속한 소켓의 우선순위 메타데이터 값을 1로 설정하여 높은 우선순위를 부여하고, 그 이외의 경우 우선순위 메타데이터 값을 0으로 설정하여 낮은 우선순위를 부여할 수 있다.In an embodiment of the present invention, the layer policy enforcement unit sets the priority metadata value of the socket to which the packet currently being processed belongs to 1 if the port of the packet currently being used is included in the port number array to give a higher priority. In other cases, a lower priority may be given by setting the priority metadata value to 0.

본 발명의 실시예에서, 상기 다중 큐를 지원하는 네트워크 정책 적용 장치는, 상기 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터 값과 상기 우선순위 메타데이터 값을 기초로 현재 사용 중인 패킷의 인큐 여부를 결정할 수 있다.In an embodiment of the present invention, the apparatus for applying a network policy supporting the multi-queue includes whether to enqueue a packet currently being used based on a queue mapping metadata value of a socket to which the packet currently being processed belongs and the priority metadata value. Can be determined.

본 발명의 실시예에서, 상기 테넌트 매핑 배열은 현재 처리 중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있도록 CPU 코어 별로 할당되어 있는 테넌트의 인덱스를 표기하고, 상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하고, 상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트 별로 점유하는 NIC 큐 인덱스를 계산하여 저장하고, 상기 포트 번호 배열은 특정 테넌트가 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장할 수 있다.In an embodiment of the present invention, the tenant mapping arrangement indicates an index of a tenant allocated for each CPU core so that a packet currently being processed is a packet owned by a tenant, and the tenant weight arrangement indicates a network scheduling weight for each tenant. And the start queue index array calculates and stores the NIC queue index occupied by each tenant based on the tenant weight array value, and the port number array is the application for which a specific tenant wants to give high priority. The port numbers used can be saved in an array format.

이와 같은 다중 큐를 지원하는 네트워크 정책 적용 방법에 따르면, 새로운 하드웨어 개발에 필요한 비용 및 교체 시간 없이, 현존하는 상용 MQ-NIC만으로도 여러 패킷 스케줄러를 사용하여 서버 내 네트워크 정책을 적용할 수 있다.According to this method of applying a network policy supporting multiple queues, network policies within the server can be applied using multiple packet schedulers with only the existing commercial MQ-NIC, without the cost and replacement time required for new hardware development.

도 1은 본 발명의 일 실시예에 따른 다중 큐를 지원하는 네트워크 정책 적용 장치를 포함한 네트워크 서버의 개념도이다.
도 2는 본 발명의 플랫 정책 시행(Flat policy enforcement)의 의사코드(pseudocode)의 예시를 보여주는 도면이다.
도 3은 본 발명의 계층 정책 시행(Hierarchical Policy Enforcement)의 의사코드(pseudocode)의 예시를 보여주는 도면이다.
도 4는 본 발명의 패킷 인큐 결정의 의사코드(pseudocode)의 예시를 보여주는 도면이다.
도 5는 본 발명이 종래 기술에 비하여 각 테넌트에게 할당해주는 대역폭을 보여주는 실험 결과이다.
도 6은 본 발명이 종래 기술에 비하여 높은 우선순위를 가져야 하는 트래픽의 지연시간을 보여주는 실험 결과이다.
1 is a conceptual diagram of a network server including an apparatus for applying a network policy supporting multiple queues according to an embodiment of the present invention.
2 is a diagram showing an example of a pseudocode of flat policy enforcement of the present invention.
3 is a diagram showing an example of a pseudocode of hierarchical policy enforcement according to the present invention.
4 is a diagram showing an example of a pseudocode of a packet enqueue determination according to the present invention.
5 is an experimental result showing the bandwidth allocated to each tenant by the present invention compared to the prior art.
6 is an experimental result showing the delay time of traffic that the present invention should have a higher priority than the prior art.

후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.DETAILED DESCRIPTION OF THE INVENTION The detailed description of the present invention to be described below refers to the accompanying drawings, which illustrate specific embodiments in which the present invention may be practiced. These embodiments are described in detail sufficient to enable a person skilled in the art to practice the present invention. It is to be understood that the various embodiments of the present invention are different from each other but need not be mutually exclusive. For example, specific shapes, structures, and characteristics described herein may be implemented in other embodiments without departing from the spirit and scope of the present invention in relation to one embodiment. In addition, it should be understood that the location or arrangement of individual components within each disclosed embodiment may be changed without departing from the spirit and scope of the present invention. Accordingly, the detailed description to be described below is not intended to be taken in a limiting sense, and the scope of the present invention, if appropriately described, is limited only by the appended claims, along with all scopes equivalent to those claimed by the claims. In the drawings, like reference numerals refer to the same or similar functions over several aspects.

이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다. Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the drawings.

도 1은 본 발명의 일 실시예에 따른 다중 큐를 지원하는 네트워크 정책 적용 장치를 포함한 네트워크 서버의 개념도이다.1 is a conceptual diagram of a network server including an apparatus for applying a network policy supporting multiple queues according to an embodiment of the present invention.

본 발명에 따른 다중 큐를 지원하는 네트워크 정책 적용 장치(10, 이하 장치)는 다중 큐를 지원하는 네트워크 인터페이스 카드(Network Interface Cards, NIC)를 장착한 컴퓨터 서버 장치에서 다양한 패킷 스케줄링 방법을 표현하는 패킷 데이터 처리 장치이다.The network policy application device (10, hereinafter device) supporting multiple queues according to the present invention is a packet expressing various packet scheduling methods in a computer server device equipped with network interface cards (NICs) supporting multiple queues. It is a data processing device.

도 1을 참조하면, 본 발명에 따른 장치(100)는 네트워크 서버(1) 내에서 TCP/IP 스택(300)과 Qdisc(500) 사이에서 넷필터(Netfilter) 모듈의 형태로 작동한다. Qdisc(500)는 네트워크 인터페이스 카드 내 큐(queue)들과 일대일 매핑하여 작동한다. Referring to FIG. 1, an apparatus 100 according to the present invention operates in the form of a Netfilter module between a TCP/IP stack 300 and a Qdisc 500 in a network server 1. The Qdisc 500 operates by one-to-one mapping with queues in the network interface card.

본 발명에 따른 장치(100)는 정책 초기화(Policy initialization), 플랫 정책 시행(Flat policy enforcement) 및 계층 정책 시행(Hierarchical Policy Enforcement)의 3 단계를 수행하며, 각각 정책 초기화부(110), 플랫 정책 시행부(130) 및 계층 정책 시행부(150)를 통해 수행할 수 있다.The device 100 according to the present invention performs three steps of policy initialization, flat policy enforcement, and hierarchical policy enforcement, and the policy initialization unit 110 and the flat policy It can be performed through the enforcement unit 130 and the hierarchical policy enforcement unit 150.

본 발명의 상기 장치(100)는 다중 큐를 지원하는 네트워크 정책 적용을 수행하기 위한 소프트웨어(애플리케이션)가 설치되어 실행될 수 있으며, 상기 정책 초기화부(110), 상기 플랫 정책 시행부(130) 및 상기 계층 정책 시행부(150)의 구성은 상기 장치(100)에서 실행되는 상기 다중 큐를 지원하는 네트워크 정책 적용을 수행하기 위한 소프트웨어에 의해 제어될 수 있다. The device 100 of the present invention may be installed and executed with software (application) for performing network policy application supporting multiple queues, and the policy initialization unit 110, the flat policy enforcement unit 130, and the The configuration of the hierarchical policy enforcement unit 150 may be controlled by software for performing network policy application supporting the multiple queues executed in the device 100.

상기 장치(100)는 별도의 단말이거나 또는 단말의 일부 모듈일 수 있다. 또한, 상기 정책 초기화부(110), 상기 플랫 정책 시행부(130) 및 상기 계층 정책 시행부(150)의 구성은 통합 모듈로 형성되거나, 하나 이상의 모듈로 이루어 질 수 있다. 그러나, 이와 반대로 각 구성은 별도의 모듈로 이루어질 수도 있다.The device 100 may be a separate terminal or some modules of the terminal. In addition, the configuration of the policy initialization unit 110, the flat policy enforcement unit 130, and the hierarchical policy enforcement unit 150 may be formed of an integrated module or one or more modules. However, on the contrary, each component may be formed as a separate module.

상기 장치(100)는 이동성을 갖거나 고정될 수 있다. 상기 장치(100)는, 서버(server) 또는 엔진(engine) 형태일 수 있으며, 모듈(module), 디바이스(device), 기구(apparatus), 단말(terminal), UE(user equipment), MS(mobile station) 등 다른 용어로 불릴 수 있다. The device 100 may be movable or fixed. The device 100 may be in the form of a server or an engine, and may be a module, a device, an apparatus, a terminal, a user equipment (UE), or a mobile device (MS). station).

상기 장치(100)는 운영체제(Operation System; OS), 즉 시스템을 기반으로 다양한 소프트웨어를 실행하거나 제작할 수 있다. 상기 운영체제는 소프트웨어가 장치의 하드웨어를 사용할 수 있도록 하기 위한 시스템 프로그램으로서, 본 발명에서는 리눅스 계열일 수 있다.The device 100 may execute or manufacture various software based on an operating system (OS), that is, a system. The operating system is a system program for allowing software to use the hardware of the device, and in the present invention may be a Linux system.

상기 정책 초기화부(110)는 네트워크 관리자가 제출한 네트워크 정책 내용을 기초로, 모듈 내부의 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열과 변수들을 초기화한다.The policy initialization unit 110 initializes a tenant mapping arrangement, a tenant weight arrangement, a start queue index arrangement, a port number arrangement, and variables inside the module based on the network policy contents submitted by the network administrator.

상기 테넌트 매핑 배열은 현재 처리 중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있도록 CPU 코어 별로 할당되어 있는 테넌트의 인덱스를 표기한다.The tenant mapping arrangement indicates the index of a tenant allocated for each CPU core so as to distinguish which tenant-owned packets are currently being processed.

상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하고, 상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트 별로 점유하는 NIC 큐 인덱스를 계산하여 저장한다.The tenant weight array stores network scheduling weights for each tenant, and the start queue index array calculates and stores a NIC queue index occupied by each tenant based on a tenant weight array value.

상기 포트 번호 배열은 특정 테넌트가 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장한다.In the port number arrangement, if there is an application that a specific tenant wants to give high priority to, the port number used by the application is stored in an array format.

상기 플랫 정책 시행부(130)는 상기 정책 초기화(110)부로부터 획득한 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스 및 현재의 큐를 추적하는 인덱스를 기초로, 각 테넌트에게 할당된 가중치만큼의 네트워크 인터페이스 카드(Network Interface Cards, NIC) 큐를 할당하여 테넌트 간 네트워크 격리를 보장한다.The flat policy enforcement unit 130 is based on the tenant ID obtained from the policy initialization unit 110, the tenant weight, the start queue index of the tenant, and the index for tracking the current queue, based on the weight assigned to each tenant. Network Interface Cards (NIC) queues are allocated to ensure network isolation between tenants.

이를 위해, 상기 플랫 정책 시행부(130)는 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값이 해당 테넌트의 가중치 이상인 경우, 현재 큐 인덱스에 해당하는 값을 0으로 초기화한다. To this end, when the value corresponding to the index tracking the current queue of the tenant is equal to or greater than the weight of the corresponding tenant, the flat policy enforcement unit 130 initializes the value corresponding to the current queue index to 0.

또한, 상기 플랫 정책 시행부(130)는 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터를 상기 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값과 시작 큐 인덱스를 합한 값으로 갱신하고, 다음 패킷을 위해 현재의 큐를 추적하는 인덱스를 갱신한다.In addition, the flat policy enforcement unit 130 updates the queue mapping metadata of the socket to which the packet currently being processed belongs to the sum of the value corresponding to the index tracking the current queue of the tenant and the start queue index, and then Update the index tracking the current queue for packets.

상기 계층 정책 시행부(150)는 테넌트 내 응용 간의 우선순위를 다르게 하기 위해 우선순위가 높은 응용 패킷을 Qdisc의 머리에 삽입하여 테넌트 내 응용 간의 네트워크 격리를 보장한다.The hierarchical policy enforcement unit 150 guarantees network isolation between applications in the tenant by inserting an application packet with a high priority into the head of Qdisc in order to change the priorities between applications in the tenant.

상기 계층 정책 시행부(150)는 현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 현재 처리 중인 패킷이 속한 소켓의 우선순위 메타데이터 값을 1로 설정하여 높은 우선순위를 부여하고, 그 이외의 경우 우선순위 메타데이터 값을 0으로 설정하여 낮은 우선순위를 부여한다.If the port of the packet currently being used is included in the port number array, the layer policy enforcement unit 150 sets the priority metadata value of the socket to which the packet currently being processed belongs to 1, and assigns a higher priority. In the case of, the priority metadata value is set to 0 to give a lower priority.

본 발명에 따른 장치(100)는 상기 플랫 정책 시행부(130)로부터 전달받은 상기 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터 값과 상기 계층 정책 시행부(150)에서 전달받은 상기 우선순위 메타데이터 값을 기초로 현재 사용 중인 패킷의 인큐 여부를 결정한다.The apparatus 100 according to the present invention includes a queue mapping metadata value of a socket to which the packet currently being processed, received from the flat policy enforcement unit 130, belongs, and the priority meta data transmitted from the layer policy enforcement unit 150. Determines whether to enqueue a packet currently in use based on the data value.

상기 정책 초기화부(110), 상기 플랫 정책 시행부(130) 및 상기 계층 정책 시행부(150)가 각각 수행하는 정책 초기화(Policy initialization), 플랫 정책 시행(Flat policy enforcement) 및 계층 정책 시행(Hierarchical Policy Enforcement)의 구체적인 단계는 이하 자세하게 설명한다.The policy initialization unit 110, the flat policy enforcement unit 130, and the hierarchical policy enforcement unit 150 respectively perform policy initialization, flat policy enforcement, and hierarchical policy enforcement. Policy Enforcement) will be described in detail below.

1단계인 상기 정책 초기화(Policy initialization)단계는 네트워크 관리자가 제출한 네트워크 정책 내용을 바탕으로 상기 장치(100) 내부의 배열과 변수들을 초기화한다. In the first step, the policy initialization step, the array and variables inside the device 100 are initialized based on the network policy contents submitted by the network administrator.

상기 장치(100)는 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열의 4개 배열을 사용한다.The device 100 uses four arrays of a tenant mapping array, a tenant weight array, a start queue index array, and a port number array.

상기 테넌트 매핑 배열은 CPU 코어 별로 할당되어있는 테넌트의 인덱스를 표기한다. 소켓버퍼(SKB)의 sender_cpu 메타데이터를 통해 현재 처리중인 패킷을 담당하는 CPU 코어 인덱스를 알 수 있다. 따라서, 상기 장치(100)가 관리하는 테넌트 매핑 배열 값을 참조하면 현재 처리중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있다. The tenant mapping array indicates the index of the tenant allocated for each CPU core. Through the sender_cpu metadata of the socket buffer (SKB), the index of the CPU core responsible for the packet currently being processed can be known. Accordingly, referring to the tenant mapping array value managed by the device 100, it is possible to distinguish which tenant-owned packets are currently being processed.

상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하는 배열이다. The tenant weight array is an array that stores network scheduling weights for each tenant.

상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트별로 점유하는 NIC 큐 인덱스를 계산하여 저장한다. 예를 들어, 두 테넌트 0과 1이 각각 2와 1의 가중치를 가지고 있다면 시작 큐 인덱스 배열의 값은 {0,0,1}이 된다. The start queue index array calculates and stores a NIC queue index occupied by each tenant based on a tenant weight array value. For example, if two tenants 0 and 1 have weights of 2 and 1, respectively, the value of the start queue index array is {0,0,1}.

상기 포트 번호 배열은 특정 테넌트가 자신이 사용하는 응용 중 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장한다. In the port number arrangement, if there is an application that a specific tenant wants to assign a high priority to among the applications it uses, the port number used by the application is stored in an array format.

2단계인 플랫 정책 시행(Flat policy enforcement) 단계에서는 테넌트 간 네트워크 격리를 보장한다. 상기 장치(100)는 각 테넌트에게 할당된 가중치만큼의 NIC 큐를 할당한다. 이를 통해, 우회적으로 가중치 기반 패킷 스케줄러를 표현할 수 있다. In the second phase, the Flat policy enforcement phase, it ensures network isolation between tenants. The device 100 allocates a NIC queue equal to the weight assigned to each tenant. Through this, a weight-based packet scheduler can be expressed indirectly.

도 2는 이 단계의 의사코드를 나타낸 것이다. 현재 처리 중인 패킷의 큐 번호를 결정하기 위해서는 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스, 그리고 현재의 큐 인덱스를 추적하는 인덱스가 필요하다(도 2의 줄 1-5). 이러한 값들은 1단계에서 초기화한 배열들에 의해서 얻어질 수 있다(도 2의 줄 7-8). 2 shows the pseudocode of this step. In order to determine the queue number of the packet currently being processed, a tenant ID, a tenant weight, a tenant start queue index, and an index tracking the current queue index are needed (lines 1-5 of FIG. 2). These values can be obtained by the arrays initialized in step 1 (lines 7-8 of FIG. 2).

참고로 ci는 1단계에서 0으로 초기화된다. 패킷들을 할당된 큐들에 고르게 분배하기 위해서 ci는 해당 값이 wi를 초과할 때마다 초기화된다(도 2의 줄 11-13). For reference, c i is initialized to 0 in step 1. In order to distribute packets evenly to the allocated queues, c i is initialized whenever the corresponding value exceeds w i (lines 11-13 of FIG. 2).

상기 장치(100)는 현재 처리 중인 패킷이 속한 소켓의 queue_mapping 메타데이터를 본 단계에서 얻어진 인덱스 값을 시작 큐 인덱스와 합한 값으로 갱신하며(도 2의 줄 14), 다음 패킷을 위해 추적용 인덱스 역시 갱신한다(도 2의 줄 15).The device 100 updates the queue_mapping metadata of the socket to which the packet currently being processed belongs to the sum of the index value obtained in this step with the start queue index (line 14 of FIG. 2), and the tracking index for the next packet is also Update (line 15 in Fig. 2).

3단계인 계층 정책 시행(Hierarchical Policy Enforcement) 단계에서는 테넌트 내 응용 간 네트워크 격리를 보장한다. 테넌트 내 응용 간의 우선순위를 달리하기 위해서 상기 장치(100)는 우선순위가 높은 응용 패킷을 qdisc의 꼬리가 아닌 머리에 삽입한다. The third step, Hierarchical Policy Enforcement, ensures network isolation between applications in tenants. In order to change the priorities between applications within a tenant, the device 100 inserts an application packet with a high priority into the head of qdisc, not the tail.

참고로, 상기 장치(100)에서는 qdisc과 NIC 큐들이 일대일 매핑되어 동기화되어 있다. qdisc의 머리에 삽입하면 현재 qdisc에 버퍼되어 있는 다른 패킷들을 건너뛰게 되므로 우선순위 스케줄링 없이도 우선순위 스케줄링을 우회적으로 표현할 수 있다. For reference, in the device 100, qdisc and NIC queues are mapped and synchronized one-to-one. When inserted into the head of qdisc, other packets currently buffered in qdisc are skipped, so priority scheduling can be expressed indirectly without priority scheduling.

도 3은 계층 정책 시행 과정의 의사코드를 나타낸다. 상기 장치(100)는 현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 SKB의 priority 메타데이터 값을 1로 설정하여 높은 우선순위를 부여한다(도 3의 줄 5-6). 그렇지 않다면 priority 메타데이터 값은 0으로 설정되어 낮은 우선순위를 부여받게 된다(도 3의 줄 7-8). 3 shows a pseudo code of a hierarchical policy enforcement process. If the port of the packet currently being used is included in the port number array, the device 100 sets the priority metadata value of SKB to 1 to give a high priority (line 5-6 of FIG. 3). Otherwise, the priority metadata value is set to 0 and a lower priority is given (lines 7-8 of FIG. 3).

도 4는 상기 장치(100)가 어떻게 패킷 인큐 결정을 내리는지를 보여준다. 상기 장치(100)를 거치면서 처리된 값을 바탕으로 qdisc는 우회적으로 다양한 패킷 스케줄링을 표현하게 되고, qdisc의 패킷들은 NIC로 내려감으로써 목표는 달성된다. 4 shows how the device 100 makes a packet enqueue decision. Based on the values processed through the device 100, qdisc indirectly expresses various packet scheduling, and the packets of qdisc are passed down to the NIC, thereby achieving the goal.

다중 큐 스케줄링을 지원하는 multiq qdisc는 도 2에서 얻어진 NIC 큐 인덱스값을 queue_mapping 메타데이터를 참조하여 구한다(도 4의 줄 5). 또한, 도 3에서 얻어진 priority 메타데이터 값을 구한다(도 4의 줄 6). The multiq qdisc supporting multi-queue scheduling is obtained by referring to the queue_mapping metadata for the NIC queue index value obtained in FIG. 2 (line 5 of FIG. 4). In addition, the priority metadata value obtained in FIG. 3 is obtained (line 6 in FIG. 4).

이를 통해 qdisc는 priority 값에 따라 꼬리 인큐 혹은 헤드 인큐를 수행하게 되며 패킷은 항상 queue_mapping에 해당되는 큐에 삽입된다(도 4의 줄 5-8).Through this, qdisc performs tail enqueue or head enqueue according to the priority value, and packets are always inserted into the queue corresponding to queue_mapping (lines 5-8 of FIG. 4).

본 발명의 유효성을 평가하기 위해 리눅스 상에서 상기 장치(100)를 넷필터(Netfilter) 모듈로 구현하고 Intel 82599 10GbE NIC를 장착한 서버 두 대를 10Gbps 스위치에 연결한 테스트베드를 구성하여 iperf과 sockperf를 사용한 실험을 진행하였다. 비교 대상은 현재 리눅스 커널에서 지원하는 NIC 큐 할당방법인 XPS를 그 대상으로 삼았다. In order to evaluate the effectiveness of the present invention, the device 100 is implemented as a Netfilter module on Linux, and a test bed in which two servers equipped with Intel 82599 10GbE NICs are connected to a 10Gbps switch is configured, and iperf and sockperf are connected. The experiment used was carried out. The comparison target was XPS, which is a NIC queue allocation method supported by the current Linux kernel.

도 5는 테넌트 3개가 존재하는 경우를 가정한 것으로 각 테넌트 1,2,3은 순서대로 1,2,3의 가중치를 갖는다. 각 테넌트는 0초부터 5초마다 각각 8, 16, 32개의 플로우를 발생시킨다. In FIG. 5, it is assumed that there are three tenants, and each tenant 1,2,3 has weights of 1,2,3 in order. Each tenant generates 8, 16, and 32 flows every 5 seconds from 0 seconds.

도 5를 참조하면, 상기 장치(100)가 각 테넌트에게 할당한 가중치만큼 대역폭을 보장해줌을 알 수 있다. 반면 XPS는 많은 수의 플로우를 가지는 테넌트에게 더 많은 대역폭을 할당해 줌을 알 수 있다. 이는 XPS는 테넌트별 트래픽을 격리하지 못하기 때문이다. Referring to FIG. 5, it can be seen that the device 100 guarantees a bandwidth equal to the weight allocated to each tenant. On the other hand, it can be seen that XPS allocates more bandwidth to tenants with a large number of flows. This is because XPS cannot isolate traffic per tenant.

도 6은 두 테넌트가 동일한 가중치를 가지고 iperf로 두 테넌트 모두 8개의 플로우를 발생시켰을 때, 높은 우선순위를 가져야하는 sockperf 트래픽이 겪은 지연 시간을 나타낸 것이다. 상기 장치(100)는 헤드 인큐를 통해 테넌트 내 응용간 네트워크 격리를 보장하므로 XPS보다 낮은 지연을 보임을 알 수 있다. 6 shows the delay time experienced by sockperf traffic, which should have a high priority, when two tenants have the same weight and generate 8 flows in both tenants with iperf. Since the device 100 guarantees network isolation between applications in a tenant through head enqueue, it can be seen that the delay is lower than that of XPS.

또한, 도 6의 오른쪽은 각 테넌트가 대역폭을 얼마나 균등하게 공유해주는지 보여주는 Jain's fairness index를 나타낸 것으로 TONIC은 1에 해당하는 완벽한 공평성을 보여줌을 알 수 있다.In addition, the right side of FIG. 6 shows Jain's fairness index showing how equally each tenant shares the bandwidth, and it can be seen that TONIC shows perfect fairness equal to 1.

이와 같은, 다중 큐를 지원하는 네트워크 정책 적용 방법은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. Such a method of applying a network policy supporting multiple queues may be implemented as an application or in the form of program instructions that can be executed through various computer components and recorded in a computer-readable recording medium. The computer-readable recording medium may include program instructions, data files, data structures, etc. alone or in combination.

상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. The program instructions recorded in the computer-readable recording medium may be specially designed and constructed for the present invention, and may be known and usable to those skilled in the computer software field.

컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs and DVDs, magnetic-optical media such as floptical disks. media), and a hardware device specially configured to store and execute program instructions such as ROM, RAM, flash memory, and the like.

프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Examples of the program instructions include not only machine language codes such as those produced by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware device may be configured to operate as one or more software modules to perform processing according to the present invention, and vice versa.

이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to embodiments, it is understood that those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention described in the following claims. You can understand.

본 발명은 리눅스 운영체제를 사용하는 네트워크 서버에 적용 가능하며, 나아가 유무선 네트워킹/통신 장비를 활용하는 ICT 시장 전반에 걸쳐 적용이 가능하다.The present invention can be applied to a network server using a Linux operating system, and further, can be applied to the entire ICT market using wired/wireless networking/communication equipment.

1: 네트워크 서버
100: 다중 큐를 지원하는 네트워크 정책 적용 장치
110: 정책 초기화부
130: 플랫 정책 시행부
150: 계층 정책 시행부
300: TCP/IP 스택
500: Qdisc
1: network server
100: network policy application device supporting multiple queues
110: policy initialization unit
130: Flat Policy Enforcement Department
150: Hierarchy Policy Enforcement Department
300: TCP/IP stack
500: Qdisc

Claims (13)

네트워크 관리자가 제출한 네트워크 정책 내용을 기초로, 모듈 내부의 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열과 변수들을 초기화하는 단계;
초기화된 배열로부터 획득한 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스 및 현재의 큐를 추적하는 인덱스를 기초로, 각 테넌트에게 할당된 가중치만큼의 네트워크 인터페이스 카드(Network Interface Cards, NIC) 큐를 할당하여 테넌트 간 네트워크 격리를 보장하는 단계; 및
테넌트 내 응용 간의 우선순위를 다르게 하기 위해 우선순위가 높은 응용 패킷을 Qdisc의 머리에 삽입하여 테넌트 내 응용 간의 네트워크 격리를 보장하는 단계;를 포함하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
Initializing a tenant mapping array, a tenant weight array, a start queue index array, and a port number array and variables inside the module based on the network policy content submitted by the network administrator;
Based on the tenant ID obtained from the initialized array, the tenant weight, the tenant's starting queue index, and the index tracking the current queue, network interface cards (NIC) queues equal to the weight assigned to each tenant are allocated. Thereby ensuring network isolation between tenants; And
A method of applying a network policy supporting multiple queues, including; inserting a high-priority application packet into the head of Qdisc to ensure network isolation between applications in the tenant in order to change the priorities between applications in the tenant.
제1항에 있어서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는,
테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값이 해당 테넌트의 가중치 이상인 경우, 현재 큐 인덱스에 해당하는 값을 0으로 초기화하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 1, wherein the step of ensuring network isolation between tenants,
Network policy application method that supports multiple queues in which the value corresponding to the current queue index is initialized to 0 when the value corresponding to the index tracking the tenant's current queue is greater than or equal to the weight of the corresponding tenant.
제2항에 있어서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는,
현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터를 상기 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값과 시작 큐 인덱스를 합한 값으로 갱신하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 2, wherein the step of ensuring network isolation between tenants,
A network policy application method supporting multiple queues, in which queue mapping metadata of a socket to which a packet currently being processed belongs is updated with a value corresponding to a value corresponding to an index tracking the current queue of the tenant and a value corresponding to the sum of the start queue index.
제3항에 있어서, 상기 테넌트 간 네트워크 격리를 보장하는 단계는,
다음 패킷을 위해 현재의 큐를 추적하는 인덱스를 갱신하는 단계를 더 포함하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 3, wherein the step of ensuring network isolation between tenants,
A method of applying a network policy supporting multiple queues, further comprising updating an index tracking a current queue for a next packet.
제3항에 있어서, 상기 테넌트 내 응용 간의 네트워크 격리를 보장하는 단계는,
현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 현재 처리 중인 패킷이 속한 소켓의 우선순위 메타데이터 값을 1로 설정하여 높은 우선순위를 부여하고, 그 이외의 경우 우선순위 메타데이터 값을 0으로 설정하여 낮은 우선순위를 부여하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 3, wherein ensuring network isolation between applications in the tenant comprises:
If the port of the packet currently in use is included in the port number array, the priority metadata value of the socket to which the packet currently being processed belongs is set to 1 to give a higher priority. Otherwise, the priority metadata value is set to 0. A network policy application method that supports multiple queues, giving low priority by setting to.
제5항에 있어서,
상기 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터 값과 상기 우선순위 메타데이터 값을 기초로 현재 사용 중인 패킷의 인큐 여부를 결정하는 단계를 더 포함하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 5,
The method of applying a network policy supporting multiple queues, further comprising determining whether to enqueue a packet currently being used based on a queue mapping metadata value of a socket to which the packet currently being processed belongs and the priority metadata value.
제1항에 있어서,
상기 테넌트 매핑 배열은 현재 처리 중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있도록 CPU 코어 별로 할당되어 있는 테넌트의 인덱스를 표기하고,
상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하고,
상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트 별로 점유하는 NIC 큐 인덱스를 계산하여 저장하고,
상기 포트 번호 배열은 특정 테넌트가 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장하는, 다중 큐를 지원하는 네트워크 정책 적용 방법.
The method of claim 1,
The tenant mapping array indicates the index of the tenant allocated for each CPU core so that the packet currently being processed is a packet owned by which tenant, and
The tenant weight array stores network scheduling weights for each tenant,
The start queue index array calculates and stores the NIC queue index occupied by each tenant based on the tenant weight array value,
The port number arrangement is a method of applying a network policy supporting multiple queues in which, if there is an application that a specific tenant wants to give high priority to, the port number used by the application is stored in an array form.
제1항 내지 제7항 중 어느 하나의 항에 따른 상기 다중 큐를 지원하는 네트워크 정책 적용 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
A computer-readable recording medium having a computer program recorded thereon for performing the method for applying a network policy supporting the multi-queue according to any one of claims 1 to 7.
네트워크 관리자가 제출한 네트워크 정책 내용을 기초로, 모듈 내부의 테넌트 매핑 배열, 테넌트 가중치 배열, 시작 큐 인덱스 배열 및 포트 번호 배열과 변수들을 초기화하는 정책 초기화부;
상기 정책 초기화부로부터 획득한 테넌트 ID, 테넌트 가중치, 테넌트의 시작 큐 인덱스 및 현재의 큐를 추적하는 인덱스를 기초로, 각 테넌트에게 할당된 가중치만큼의 네트워크 인터페이스 카드(Network Interface Cards, NIC) 큐를 할당하여 테넌트 간 네트워크 격리를 보장하는 플랫 정책 시행부; 및
테넌트 내 응용 간의 우선순위를 다르게 하기 위해 우선순위가 높은 응용 패킷을 Qdisc의 머리에 삽입하여 테넌트 내 응용 간의 네트워크 격리를 보장하는 계층 정책 시행부;를 포함하는, 다중 큐를 지원하는 네트워크 정책 적용 장치.
A policy initialization unit that initializes a tenant mapping array, a tenant weight array, a start queue index array, and a port number array and variables inside the module based on the network policy content submitted by the network administrator;
Based on the tenant ID obtained from the policy initiating unit, the tenant weight, the tenant's start queue index, and the index tracking the current queue, a network interface card (NIC) queue equal to the weight assigned to each tenant A flat policy enforcement unit that ensures network isolation between tenants by allocating; And
A network policy application device that supports multiple queues, including; a hierarchical policy enforcement unit that guarantees network isolation between applications in the tenant by inserting a high-priority application packet into the head of Qdisc to change the priorities between applications in the tenant .
제9항에 있어서, 상기 플랫 정책 시행부는,
테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값이 해당 테넌트의 가중치 이상인 경우, 현재 큐 인덱스에 해당하는 값을 0으로 초기화하고,
현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터를 상기 테넌트의 현재의 큐를 추적하는 인덱스에 해당하는 값과 시작 큐 인덱스를 합한 값으로 갱신하고,
다음 패킷을 위해 현재의 큐를 추적하는 인덱스를 갱신하는, 다중 큐를 지원하는 네트워크 정책 적용 장치.
The method of claim 9, wherein the flat policy enforcement unit,
If the value corresponding to the index tracking the current queue of the tenant is equal to or greater than the weight of the corresponding tenant, the value corresponding to the current queue index is initialized to 0,
Update the queue mapping metadata of the socket to which the packet currently being processed belongs to the sum of the value corresponding to the index for tracking the current queue of the tenant and the start queue index, and
Network policy enforcement device supporting multiple queues, updating the index tracking the current queue for the next packet.
제10항에 있어서, 상기 계층 정책 시행부는,
현재 사용 중인 패킷의 포트가 포트 번호 배열에 포함되어 있다면 현재 처리 중인 패킷이 속한 소켓의 우선순위 메타데이터 값을 1로 설정하여 높은 우선순위를 부여하고, 그 이외의 경우 우선순위 메타데이터 값을 0으로 설정하여 낮은 우선순위를 부여하는, 다중 큐를 지원하는 네트워크 정책 적용 장치.
The method of claim 10, wherein the hierarchical policy enforcement unit,
If the port of the packet currently in use is included in the port number array, the priority metadata value of the socket to which the packet currently being processed belongs is set to 1 to give a higher priority. Otherwise, the priority metadata value is set to 0. Network policy application device that supports multiple queues, giving low priority by setting to.
제11항에 있어서,
상기 현재 처리 중인 패킷이 속한 소켓의 큐 매핑 메타데이터 값과 상기 우선순위 메타데이터 값을 기초로 현재 사용 중인 패킷의 인큐 여부를 결정하는, 다중 큐를 지원하는 네트워크 정책 적용 장치.
The method of claim 11,
A network policy application device supporting multiple queues for determining whether to enqueue a currently used packet based on a queue mapping metadata value of a socket to which the packet currently being processed belongs and the priority metadata value.
제9항에 있어서,
상기 테넌트 매핑 배열은 현재 처리 중인 패킷이 어느 테넌트 소유의 패킷인지 구분할 수 있도록 CPU 코어 별로 할당되어 있는 테넌트의 인덱스를 표기하고,
상기 테넌트 가중치 배열은 테넌트 별 네트워크 스케줄링 가중치를 저장하고,
상기 시작 큐 인덱스 배열은 테넌트 가중치 배열 값을 기반으로 각 테넌트 별로 점유하는 NIC 큐 인덱스를 계산하여 저장하고,
상기 포트 번호 배열은 특정 테넌트가 높은 우선순위를 부여하고 싶은 응용이 있다면 해당 응용이 사용하는 포트 번호를 배열 형태로 저장하는, 다중 큐를 지원하는 네트워크 정책 적용 장치.
The method of claim 9,
The tenant mapping array indicates the index of the tenant allocated for each CPU core so that the packet currently being processed is a packet owned by which tenant, and
The tenant weight array stores network scheduling weights for each tenant,
The start queue index array calculates and stores the NIC queue index occupied by each tenant based on the tenant weight array value,
The port number arrangement is a network policy application device supporting multiple queues for storing the port numbers used by the application in the form of an array if there is an application for which a specific tenant wants to give high priority.
KR1020190136628A 2019-10-30 2019-10-30 Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method KR102179769B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190136628A KR102179769B1 (en) 2019-10-30 2019-10-30 Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190136628A KR102179769B1 (en) 2019-10-30 2019-10-30 Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method

Publications (1)

Publication Number Publication Date
KR102179769B1 true KR102179769B1 (en) 2020-11-17

Family

ID=73642418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190136628A KR102179769B1 (en) 2019-10-30 2019-10-30 Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method

Country Status (1)

Country Link
KR (1) KR102179769B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100817676B1 (en) 2000-02-23 2008-03-27 썬 마이크로시스템즈, 인코포레이티드 Method and apparatus for dynamic class-based packet scheduling
KR101489414B1 (en) 2011-06-22 2015-02-04 와이-랜 랩스, 인코포레이티드 Systems and methods for detection for prioritizing and scheduling packets in a communication network
KR20150113783A (en) * 2014-03-31 2015-10-08 한국전자통신연구원 Apparatus and Method for Mapping of Tenant Based Dynamic Processor
US9225659B2 (en) 2010-03-22 2015-12-29 Riverbed Technology, Inc. Method and apparatus for scheduling a heterogeneous communication flow

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100817676B1 (en) 2000-02-23 2008-03-27 썬 마이크로시스템즈, 인코포레이티드 Method and apparatus for dynamic class-based packet scheduling
US9225659B2 (en) 2010-03-22 2015-12-29 Riverbed Technology, Inc. Method and apparatus for scheduling a heterogeneous communication flow
KR101489414B1 (en) 2011-06-22 2015-02-04 와이-랜 랩스, 인코포레이티드 Systems and methods for detection for prioritizing and scheduling packets in a communication network
KR20150113783A (en) * 2014-03-31 2015-10-08 한국전자통신연구원 Apparatus and Method for Mapping of Tenant Based Dynamic Processor

Similar Documents

Publication Publication Date Title
US10326713B2 (en) Data enqueuing method, data dequeuing method, and queue management circuit
US9590914B2 (en) Randomized per-packet port channel load balancing
CN105900063B (en) Scheduling method and device in multiprocessing environment
US7701849B1 (en) Flow-based queuing of network traffic
US8595385B1 (en) Method and system for submission queue acceleration
EP2677703B1 (en) Method and device for scheduling queue
AU2012261696B2 (en) Wireless service access method and apparatus
US20150281128A1 (en) High-performance, scalable and drop-free data center switch fabric
US11146489B2 (en) Congestion flow identification method and network device
US20190007330A1 (en) Technologies for scalable network packet processing with lock-free rings
US11159443B2 (en) Queue management in a forwarder
KR101639797B1 (en) Network interface apparatus and method for processing virtual machine packets
US9438670B2 (en) Data replication for a virtual networking system
US10560385B2 (en) Method and system for controlling network data traffic in a hierarchical system
US10469404B1 (en) Network multi-level rate limiter
US10348651B2 (en) Apparatus and method for virtual switching
KR102179769B1 (en) Method to enforce network policy with commodity multiqueue, recording medium and device for performing the method
US9762502B1 (en) Method and system for validating rate-limiter determination made by untrusted software
EP3163818B1 (en) Packet processing method and related device for network device
US20180331934A1 (en) State synchronization for global control in a distributed security system
CN111756586B (en) Fair bandwidth allocation method based on priority queue in data center network, switch and readable storage medium
CN110300068B (en) ARP resource management method and device and electronic equipment
US11228532B2 (en) Method of executing QoS policy and network device
KR102291987B1 (en) Method for managing multiple queues in switch ports, recording medium and device for performing the method
US10560394B2 (en) Dynamic transmission side scaling

Legal Events

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