KR102001487B1 - Method for controlling software defined networking and computing device performing the same - Google Patents

Method for controlling software defined networking and computing device performing the same Download PDF

Info

Publication number
KR102001487B1
KR102001487B1 KR1020170156500A KR20170156500A KR102001487B1 KR 102001487 B1 KR102001487 B1 KR 102001487B1 KR 1020170156500 A KR1020170156500 A KR 1020170156500A KR 20170156500 A KR20170156500 A KR 20170156500A KR 102001487 B1 KR102001487 B1 KR 102001487B1
Authority
KR
South Korea
Prior art keywords
virtual
switch
flow rule
identifier
generating
Prior art date
Application number
KR1020170156500A
Other languages
Korean (ko)
Other versions
KR20190059004A (en
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 KR1020170156500A priority Critical patent/KR102001487B1/en
Publication of KR20190059004A publication Critical patent/KR20190059004A/en
Application granted granted Critical
Publication of KR102001487B1 publication Critical patent/KR102001487B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치에 관한 것이다. 본 발명은 컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서, 상기 컴퓨팅 노드 또는 상기 가상 스위치에 하나 이상의 가상 식별자를 부여하는 단계, 상기 가상 식별자가 부여된 제1 필드 값을 매칭 조건으로 하는 플로우 룰을 생성하여 상기 물리 스위치에 전송하는 단계, 목적지 가상 머신으로 전송되는 패킷의 제1 필드 값을 상기 목적지 가상 머신의 실제 제1 필드 정보로 설정하는 플로우 룰을 생성하여 상기 목적지 가상 머신에 연결된 제1 가상 스위치에 전송하는 단계, 상기 패킷의 제1 필드 값을 상기 제1 가상 스위치 또는 상기 제1 가상 스위치를 포함하는 컴퓨팅 노드의 가상 식별자로 설정하는 액션을 포함하는 플로우 룰을 생성하여 상기 목적지 가상 머신에 연결되지 않은 제2 가상 스위치에 전송하는 단계, 상기 제1 필드는 패킷 전송에 영향을 미치지 않는 필드인 소프트웨어 정의 네트워킹 제어 방법. 본 발명에 의하면, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공할 수 있다.The present invention relates to a software defined networking control method and a computing device for performing the same. A method for controlling software defined networking comprising a computing node and a physical switch comprising a virtual switch and a virtual machine, the method comprising: assigning at least one virtual identifier to the computing node or the virtual switch; Generating a flow rule having a first field value assigned to a destination virtual machine as a matching condition and transmitting the flow rule to the physical switch; setting a first field value of a packet transmitted to the destination virtual machine as actual first field information of the destination virtual machine And setting a first field value of the packet to a virtual identifier of a computing node including the first virtual switch or the first virtual switch And generating a flow rule including an action Sending a second virtual switch that is not connected to, the first field of the software defined network control method for a field that does not affect the packet transmission. According to the present invention, it is possible to provide a software-defined networking control method with improved scalability by increasing utilization of a virtual switch having no limitation on a flow rule storage capacity.

Description

소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치{METHOD FOR CONTROLLING SOFTWARE DEFINED NETWORKING AND COMPUTING DEVICE PERFORMING THE SAME}[0001] METHOD FOR CONTROLLING SOFTWARE DEFINED NETWORKING AND COMPUTING DEVICE PERFORMING THE SAME [0002]

본 발명은 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치에 관한 것으로, 보다 자세하게는 소프트웨어 스위치와 물리 스위치 계층화를 통해 클라우드 환경에서 소프트웨어 정의 네트워킹의 제어를 최적화 하는 방법, 컨트롤러 및 컴퓨터 프로그램에 관한 것이다. The present invention relates to a software defined networking control method and a computing device for performing the same, and more particularly, to a method, a controller, and a computer program for optimizing control of software defined networking in a cloud environment through software switch and physical switch layering.

소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다. SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.Software Defined Networking (SDN) is a technology that manages all the network devices in the network by an intelligent central management system. In the SDN technology, a controller provided in a form of software can perform processing instead of a control operation related to the packet processing performed by itself in a conventional hardware type network device, so that various functions can be developed and given over the existing network structure. The SDN system generally comprises a controller server for controlling the entire network, a plurality of open flow switches controlled by the controller server for processing packets, and a host corresponding to a lower layer of the open flow switch. Here, the open flow switch is only responsible for transmitting and receiving packets, and routing, management, and control of the packets are all performed in the controller server. In other words, separating the data planes and control planes that form the network equipment is the basic structure of the SDN system.

한편, 도 1의 소프트웨어 정의 네트워킹 환경에서 물리 스위치(100)와 연결된 컴퓨팅 노드(1000) 각각은 가상 스위치(200)와 하나 이상의 가상 머신(호스트, 300)로 구성될 수 있다. 여기서 물리스위치에는 시스템에 존재하는 가상 머신(300)의 개수에 비례하는 플로우 룰이 저장된다. 만일 플로우 룰이 출발지 IP와 목적지 IP의 조합으로 이루어지면, 플로우 룰의 개수는 가상 머신(300) 개수의 제곱에 비례할 것이다.In the software defined networking environment of FIG. 1, each of the computing nodes 1000 connected to the physical switch 100 may be configured with a virtual switch 200 and one or more virtual machines (hosts) 300. Here, a flow rule proportional to the number of virtual machines 300 existing in the system is stored in the physical switch. If the flow rule is a combination of a source IP and a destination IP, the number of flow rules will be proportional to the square of the number of virtual machines 300.

일반적으로 물리 스위치(100)는 TCAM(Ternary Content Addressable Memory)을 사용한다. TCAM은 라우팅 테이블 처리 등 매우 빠른 속도를 요하는 탐색 애플리케이션에서 사용되는 내용 주소화 기억장치(CAM)의 일종으로, 이진수(Binary)로 이루어진 검색어 뿐 아니라 X(don’t care)를 허용하여 검색에 있어서 높은 유연성을 제공한다. TCAM은 그 비용이 일반 메모리에 비해 매우 높으며, 이로 인해 용량을 늘리는 것이 쉽지 않다. 따라서 현재 상용화된 TCAM이 저장할 수 있는 플로우 룰의 개수는 최소 약 900여개에서 최대 약 4000개 수준에 불과하여 사용 가능한 플로우 룰의 개수가 제한되는 문제가 있다.In general, the physical switch 100 uses a TCAM (Ternary Content Addressable Memory). TCAM is a type of content addressable memory (CAM) used in very high-speed searching applications such as routing table processing. It does not accept search words consisting of binary data but allows X (do not care) Thus providing high flexibility. TCAM has a very high cost compared to conventional memory, which makes it difficult to increase capacity. Therefore, the number of flow rules that can be stored in the commercialized TCAM is limited from about 900 to about 4000, which limits the number of available flow rules.

본 발명은 전술한 문제점을 해결하기 위한 것으로서, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공하는 것을 일 목적으로 한다. SUMMARY OF THE INVENTION It is an object of the present invention to provide a software-defined networking control method with improved scalability by increasing the utilization of a virtual switch without limitation in a flow rule storage capacity.

또한 본 발명은 플로우 룰의 개수를 최적화함으로써 네트워크 운영상의 트러블 슈팅(trouble shooting) 속도 및 정확도를 높이는 것을 다른 목적으로 한다. Another object of the present invention is to improve the trouble shooting speed and accuracy in network operation by optimizing the number of flow rules.

또한 본 발명은 네트워크 토폴로지가 변경될 때, 이를 각 플로우 테이블에 반영하는 작업(링크, 스위치, 호스트의 추가 및 삭제)을 보다 간소화함으로써 네트워크 성능을 전반적으로 개선하는 것을 다른 목적으로 한다. Another object of the present invention is to improve overall network performance by simplifying operations (link, switch, host addition and deletion) of reflecting the network topology in each flow table when the network topology is changed.

이러한 목적을 달성하기 위한 본 발명은 컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서, 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 단계, 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하는 단계, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하는 단계, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하는 단계, 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하는 플로우 룰 전송 단계, 상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것을 특징으로 한다. According to an aspect of the present invention, there is provided a method for controlling a software defined networking configured by a controller including a computing node including a virtual switch and a virtual machine and a physical switch, the method comprising: assigning a plurality of virtual identifiers to the computing node or the virtual switch Generating a first path tree having a first virtual identifier as a vertex and a second path tree having a second virtual identifier as a vertex different from the first path tree having a vertex as one of the plurality of virtual identifiers, Generating a corresponding first flow rule, setting a matching condition of the first flow rule using the first virtual identifier, generating a second flow rule corresponding to the second path tree, Setting a matching condition of the flow rule using the second virtual identifier, and setting the matching condition of the first flow rule and the second A flow rule transmitting step of transmitting a flow rule to the physical switch, wherein the virtual identifier is a virtual identifier assigned to a field value that does not affect packet transmission, and the first path tree and the second path tree have different paths .

또한 본 발명은 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 컨트롤러에 있어서, 플로우 룰을 생성하는 애플리케이션부, 상기 플로우 룰을 상기 가상 스위치와 상기 물리 스위치에 전송하는 통신부, 상기 컴퓨팅 노드 및 상기 물리 스위치의 정보를 저장하는 저장부를 포함하며, 상기 애플리케이션부는 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여하는 가상 식별자 생성부,상기 가상 식별자를 이용하여 상기 물리 스위치에 전송되는 제1 플로우 룰의 매칭 조건을 설정하는 플로우 룰 생성부를 포함하며, 상기 플로우 룰 생성부는 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하고, 상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하고, 상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하며, 상기 통신부는 상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하고, 상기 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것을 다른 특징으로 한다. The present invention also provides a controller for controlling software defined networking comprising a computing node including a virtual switch and a virtual machine and a physical switch, the controller comprising: an application unit for generating a flow rule; a processor for transmitting the flow rule to the virtual switch and the physical switch And a storage unit for storing information of the computing node and the physical switch, wherein the application unit comprises: a virtual identifier generating unit for giving a plurality of virtual identifiers to the computing node or the virtual switch; And a flow rule generation unit for setting a matching condition of a first flow rule to be transmitted to the physical switch, wherein the flow rule generation unit is configured to generate a flow rule including a first path tree having a first virtual identifier, which is one of the plurality of virtual identifiers, Apexes the second virtual identifier And generates a first flow rule corresponding to the first path tree, sets a matching condition of the first flow rule using the first virtual identifier, And sets a matching condition of the second flow rule using the second virtual identifier, and the communication unit transmits the first flow rule and the second flow rule to the physical switch Wherein the virtual identifier is a virtual identifier assigned to a field value that does not affect packet transmission, and the first path tree and the second path tree represent different paths.

전술한 바와 같은 본 발명에 의하면, 플로우 룰 저장 용량에 제한이 없는 가상 스위치의 활용도를 높임으로써, 확장성이 개선된 소프트웨어 정의 네트워킹 제어 방법을 제공할 수 있다.According to the present invention as described above, it is possible to provide a software-defined networking control method with improved scalability by increasing utilization of a virtual switch having no limitation on a flow rule storage capacity.

또한 본 발명은 플로우 룰의 개수를 최적화함으로써 네트워크 운영상의 트러블 슈팅(trouble shooting) 속도 및 정확도를 높일 수 있다. In addition, the present invention can improve trouble shooting speed and accuracy in network operation by optimizing the number of flow rules.

또한 본 발명은 네트워크 토폴로지가 변경될 때, 이를 각 플로우 테이블에 반영하는 작업(링크, 스위치, 호스트의 추가 및 삭제)을 보다 간소화함으로써 네트워크 성능을 전반적으로 개선하는 것을 다른 목적으로 한다. . Another object of the present invention is to improve overall network performance by simplifying operations (link, switch, host addition and deletion) of reflecting the network topology in each flow table when the network topology is changed. .

도 1은 본 발명의 소프트웨어 정의 네트워킹 환경 및 종래의 소프트웨어 정의 네트워킹 제어 방법을 설명하기 위한 도면,
도 2는 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 도시한 도면,
도 3은 본 발명의 일 실시 예에 따른 복수개의 식별자를 부여하여 네트워킹을 네어하는 방법을 도시한 도면,
도 4는 본 발명의 일 실시 예에 따른 다중 경로 설정 방법을 설명하기 위한 도면,
도 5는 본 발명의 일 실시 예에 따른 컨트롤러 구성을 설명하기 위한 블록도,
도 6은 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 설명하기 위한 순서도이다.
1 is a diagram for explaining a software defined networking environment of the present invention and a conventional software defined networking control method,
Figure 2 illustrates a software defined networking control method in accordance with an embodiment of the present invention;
FIG. 3 illustrates a method for providing network identifiers by assigning a plurality of identifiers according to an exemplary embodiment of the present invention.
4 is a diagram for explaining a multipath setting method according to an embodiment of the present invention;
5 is a block diagram for explaining a controller configuration according to an embodiment of the present invention;
6 is a flowchart illustrating a software defined networking control method according to an embodiment of the present invention.

전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용되며, 명세서 및 특허청구의 범위에 기재된 모든 조합은 임의의 방식으로 조합될 수 있다. 그리고 다른 식으로 규정하지 않는 한, 단수에 대한 언급은 하나 이상을 포함할 수 있고, 단수 표현에 대한 언급은 또한 복수 표현을 포함할 수 있음이 이해되어야 한다. The above and other objects, features, and advantages of the present invention will become more apparent by describing in detail exemplary embodiments thereof with reference to the attached drawings, which are not intended to limit the scope of the present invention. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the drawings, the same reference numerals are used to designate the same or similar components, and all combinations described in the specification and claims can be combined in any manner. It is to be understood that, unless the context requires otherwise, references to singular forms may include more than one, and references to singular forms may also include plural forms.

본 발명의 명세서에서 ‘플로우 룰’의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다. 나아가 ‘플로우 룰’의 용어는 오픈플로우 스위치에 대해서는 상기 네트워크 정책에 따른 플로우 엔트리를 의미하는 것으로 해석될 수 있다. 나아가 본 명세서에서 플로우 룰의 변경(updating)은 신 플로우 룰의 추가(add), 구 플로우 룰의 삭제(delete) 또는 수정(modify)을 포함하는 개념으로 이해되어야 한다.The term 'flow rule' in the description of the present invention should be understood to mean a network policy applied by a controller server in a software defined network in the ordinary artisan's field. Further, the term " flow rule " can be interpreted to mean a flow entry according to the network policy for an open flow switch. Further, updating of a flow rule in this specification should be understood as a concept involving addition of a new flow rule, deletion of a previous flow rule, or modification.

또한, 본 명세서에 기재된 ‘식별 주소’는 호스트, 디바이스 또는 프로세스를 식별하기 위한 것으로, 네트워크 계층에서의 호스트 주소인 IP주소, 호스트 내의 프로세스 주소인 포트 주소와 같은 논리 주소를 포함하며, MAC 주소와 같은 물리 주소를 포함하는 것으로 이해될 수 있다. The 'identification address' described in the present specification is for identifying a host, a device or a process, and includes a logical address such as an IP address as a host address in a network layer, a port address as a process address in the host, It can be understood to include the same physical address.

도 1은 본 발명의 소프트웨어 정의 네트워킹 환경(Software Defined Networking) 및 종래의 소프트웨어 정의 네트워킹 제어 방법(이하, ‘SDN 제어 방법’이라 함) 을 설명하기 위한 도면이다. 1 is a diagram for explaining a software defined networking environment of the present invention and a conventional software defined networking control method (hereinafter referred to as an 'SDN control method').

먼저, 본 발명의 소프트웨어 정의 네트워킹 환경은 컨트롤러(미도시), 네트워크 장비(100), 서버(또는 컴퓨팅 노드, 1000)를 포함할 수 있으며, 서버(1000)는 하나 이상의 가상 스위치(또는 소프트웨어 스위치)(200)와 하나 이상의 가상 머신(300)을 포함할 수 있다. 가상 스위치(200)와 가상 머신(300)은 고성능의 서버(1000)가 가지고 있는 리소스를 이용하여 가상의 스위치 또는 가상의 단말과 같이 동작할 수 있다. First, a software defined networking environment of the present invention may include a controller (not shown), a network appliance 100, a server (or computing node 1000), and the server 1000 may include one or more virtual switches (200) and one or more virtual machines (300). The virtual switch 200 and the virtual machine 300 can operate as a virtual switch or a virtual terminal using resources possessed by the high performance server 1000. [

본 명세서에서 네트워크 장비(100)는 패킷 처리를 위한 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 라우터, 스위치 등과 같은 네트워크 장비를 모두 포함하나, 이하에서는 설명의 편의를 위해 네트워크 장비(100)가 물리 스위치(100)인 경우를 중심으로 설명한다. The network device 100 includes all the network devices such as a mobile communication base station, a base station controller, a gateway device, a router, and a switch for packet processing. Hereinafter, for convenience of explanation, (100) will be mainly described.

물리 스위치(100)와 가상 스위치(200) 모두 컨트롤러의 제어에 따라 패킷을 처리하는 기능을 한다. 즉, 가상 스위치(200)는 동 네트워킹 환경에서 스위치로 기능하며, 따라서 가상 스위치(200)에 연결된 가상머신(300)을 각각 하나의 호스트로 볼 수 있다. 또한, 각각의 가상머신(300)은 고유의 식별주소를 가질 수 있다. Both the physical switch 100 and the virtual switch 200 function to process packets under the control of the controller. That is, the virtual switch 200 functions as a switch in the copper networking environment, and thus can view the virtual machine 300 connected to the virtual switch 200 as one host, respectively. In addition, each virtual machine 300 may have a unique identification address.

물리 스위치(100), 가상 스위치(200) 및 가상머신(300)은 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.The physical switch 100, the virtual switch 200 and the virtual machine 300 may be referred to as a node, and a link may denote a connection between two nodes.

컨트롤러는 네트워크 장비(100, 200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(100, 200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 애플리케이션(소프트웨어)가 탑재된 형태로 구현될 수 있다.The controller manages the network devices 100 and 200, and centrally manages and controls the plurality of network devices 100 and 200. Specifically, the controller includes an application (software) having functions such as topology management, path management related to packet processing, link discovery, packet flow in flow management, and the like . ≪ / RTI >

소프트웨어 정의 네트워킹에서 컨트롤러와 스위치(100, 200)는 상호간 정보를 주고받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우(OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러와 오픈플로우 스위치(100, 200)간 통신할 수 있는 표준 규격이다. In the software defined networking, the controller and the switches (100, 200) must exchange information with each other, and the widely used protocol for this is the OpenFlow protocol. That is, the open flow protocol is a standard specification for communication between the controller and the open flow switches 100 and 200.

보다 구체적으로 설명하면, 스위치(100, 200)는 크게 소프트웨어 계층과 하드웨어 계층으로 구분된다. 상기 소프트웨어 계층은 보안 채널(Secure Channel)을 통해 컨트롤러(100)과 정보를 교환한다. 상기 보안 채널은 스위치(100, 200)와 원거리에 위치한 컨트롤러 간 통신 채널이며, 컨트롤러와 스위치(100, 200) 간 교환되는 정보는 암호화된다.More specifically, the switches 100 and 200 are largely divided into a software layer and a hardware layer. The software layer exchanges information with the controller 100 through a secure channel. The secure channel is a communication channel between the switches 100 and 200 and a controller located at a remote location, and information exchanged between the controller and the switches 100 and 200 is encrypted.

상기 하드웨어 계층에는 패킷을 규정 및 처리하고, 패킷에 관련된 통계 정보를 포함하는 플로우 테이블(Flow table)이 존재한다. 상기 플로우 테이블은 패킷 처리를규정하는 플로우 룰(Flow Rule)로 구성되며, 상기 플로우 룰은 컨트롤러(100)가 생성하여 스위치(100, 200)에 전송하는 플로우 모드 메시지(Flow-Mod Message)에 의해 추가, 수정 또는 삭제될 수 있다. 스위치(100, 200)는 상기 플로우 테이블을 참조하여 패킷을 처리한다.The hardware layer has a flow table that defines and processes packets and includes statistical information related to the packets. The flow table includes a flow rule that defines packet processing. The flow rule is generated by a flow mode message (Flow-Mode Message) generated by the controller 100 and transmitted to the switches 100 and 200 Added, modified or deleted. The switches 100 and 200 process the packet with reference to the flow table.

상기 플로우 테이블은 크게 세 가지 정보, 즉 플로우를 정의하는 패킷 헤더 정보(Rule), 패킷의 처리를 정의하는 동작 정보(Action) 및 플로우별 통계 정보(Stats)를 포함할 수 있다. 그리고 플로우 테이블을 이루는 각 행을 플로우 엔트리(Flow Entry)라고 칭한다.The flow table can largely include three pieces of information: packet header information (Rule) defining a flow, operation information (Action) defining processing of a packet, and stat information (Stats) per flow. Each row constituting the flow table is referred to as a flow entry.

호스트는 스위치의 하위 계층에 해당하는 단말 등을 의미하는 것으로, 클라이언트 및 서버를 통칭하는 의미로 사용될 수 있다. 본 명세서의 소프트웨어 정의 네트워킹 환경에서 서버(1000)가 물리 스위치(100)에 연결되어 있는 하위 단말이기는 하나, 서버(1000)에 포함된 가상 스위치(200)가 전체 네트워크에서 스위치로서 기능하므로, 네트워크 전체로 볼 때, 가장 하위 계층에 해당하는 단말은 가상 머신(300)이다. 따라서 본 명세서에서는 가상 머신(300)을 호스트(300)로 지칭하며, 본 명세서에서의 호스트(300)는 서버(1000)와는 구분되는 개념으로 이해될 수 있다. A host is a terminal or the like corresponding to a lower layer of a switch, and can be used to mean a client and a server. In the software defined networking environment of this specification, although the server 1000 is a lower terminal connected to the physical switch 100, since the virtual switch 200 included in the server 1000 functions as a switch in the entire network, , The terminal corresponding to the lowest layer is the virtual machine 300. [ Therefore, in this specification, the virtual machine 300 is referred to as a host 300, and the host 300 in this specification can be understood as a concept different from the server 1000. [

호스트(300)는 소프트웨어 정의 네트워크를 통해 다른 호스트에 보내기 위한 패킷을 생성하고, 상기 패킷을 가상 스위치(200)에 연결된 네트워크 인터페이스의 포트를 통해 물리 스위치(100)로 전송할 수 있다.The host 300 may generate a packet for sending to another host via a software defined network and transmit the packet to the physical switch 100 through a port of a network interface connected to the virtual switch 200. [

도 1을 참조하여 종래의 SDN 제어 방법을 설명하면 다음과 같다.The conventional SDN control method will be described with reference to FIG.

상술한 바와 같이 각 스위치(100, 200)에 저장된 플로우 테이블은 플로우 엔트리를 포함하며, 플로우 엔트리는 매치 필드(match fields), 카운터(counters), 매치되는 패킷에 적용되는 하나 이상의 인스트럭션(instruction)으로 구성되어 있다. 스위치(100, 200)는 패킷이 포트로 입력되면, 패킷의 목적지 주소를 이용하여 해당 패킷에 매치되는 플로우 엔트리를 탐색한다. As described above, the flow table stored in each switch 100, 200 includes a flow entry, and the flow entry includes match fields, counters, and one or more instructions applied to the matched packet Consists of. When the packet is input to the port, the switches 100 and 200 search for a flow entry matching the packet using the destination address of the packet.

예를 들어, 각 스위치(100, 200)가 컨트롤러로부터 플로우 룰을 수신하여 각각 도 1에 도시된 표와 같은 플로우 테이블을 가지고 있다고 가정하자. 10.0.0.1을 주소로 하는 호스트(300A)가 목적지 주소가 10.0.0.3인 호스트(300B)로 패킷을 전송하는 경우를 살펴보자. For example, suppose that each switch 100, 200 receives a flow rule from a controller and has a flow table as shown in the table shown in Fig. Let's consider a case where a host 300A having an address of 10.0.0.1 transmits a packet to a host 300B having a destination address of 10.0.0.3.

종래 방식에 의하면, 패킷은 가상 스위치(200A)로 전송되며, 목적지 주소가 10.0.0.3인 패킷은 가상 스위치(200)의 플로우 엔트리에 의해, 1번 포트로 출력되어 물리스위치(100B)에 전송된다. 물리 스위치(100B)는 해당 패킷에 매치되는 플로우 엔트리의 액션에 따라 1번 포트로 패킷을 출력하며, 패킷은 물리 스위치(100B)의 1번 포트와 연결된 물리 스위치(100A)로 전송된다. 패킷을 수신한 물리 스위치(100A)은 마찬가지로 자신이 가지고 있는 플로우 엔트리를 참조하여, 매칭되는 플로우 엔트리의 액션에 따라 2번 포트로 패킷을 출력하며, 출력된 패킷은 물리 스위치(100C) 및 가상 스위치(200B)를 거쳐 목적지 호스트(300B)에 도달한다. According to the conventional method, a packet is transmitted to the virtual switch 200A, and a packet with a destination address of 10.0.0.3 is output to the port 1 by the flow entry of the virtual switch 200 and is transmitted to the physical switch 100B . The physical switch 100B outputs the packet to the port 1 according to the action of the flow entry matched with the packet, and the packet is transmitted to the physical switch 100A connected to the port 1 of the physical switch 100B. The physical switch 100A receiving the packet refers to the flow entry of itself and outputs the packet to the port 2 according to the action of the matched flow entry. The output packet is transmitted to the physical switch 100C and the virtual switch 100C And reaches the destination host 300B via the network 200B.

이러한 방식은 전술한 바와 같이 관리 가능한 호스트(300)의 개수에 제한을 가져온다. 각 물리 스위치(100)는 메모리가 지원할 수 있는 개수만큼의 플로우 엔트리만을 저장할 수 있기 때문에, 네트워크를 구성하는 호스트(300)의 개수가 4000여개를 넘어가면, 네트워크는 제대로 동작하지 않을 것이다. This approach limits the number of hosts 300 that can be managed as described above. Since each physical switch 100 can store only as many flow entries as can be supported by the memory, if the number of hosts 300 constituting the network exceeds 4,000, the network will not operate properly.

도 2는 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 제어 방법을 도시한 도면이다. 본 발명의 일 실시 예에 따르면, 컴퓨팅 노드에는 하나 이상의 가상 식별자가 각각 부여된다. FIG. 2 is a diagram illustrating a software defined networking control method according to an embodiment of the present invention. According to one embodiment of the present invention, the computing node is each assigned one or more virtual identifiers.

예를 들어, 도 2에 도시된 컴퓨팅 노드에는 왼쪽에서부터 순차적으로 a:a:a:a:a:a, a:a:a:a:a:b, a:a:a:a:a:c, a:a:a:a:a:d, a:a:a:a:a:e, a:a:a:a:a:f와 같은 가상의 물리 주소가 가상 식별자로 부여되어 있다. 컨트롤러(50)는 가상 식별자를 이용하여 물리 스위치에 전송되는 플로우 룰의 매칭 조건을 설정할 수 있다.A: a: a: a: a: a: a: b: a: a: a: a: a: A virtual physical address such as a, a: a: a: a: a: a: a: a: a: a: a: a: a: . The controller 50 can set the matching condition of the flow rule transmitted to the physical switch by using the virtual identifier.

예를 들어, 도 2에 도시된 바와 같이 물리 스위치(100A)에 전송되는 플로우 룰의 매치 필드(match field)에는 패킷의 목적지 물리 주소를 확인하는 매칭 조건이 설정될 수 있다. 만약 가상 식별자로 VLAN 태그가 사용되는 경우에는 패킷의 VLAN 태그를 확인하는 매칭 조건이 설정될 것이다. 가상 식별자는 패킷 전송에 영향을 미치지 않는 필드 값에 부여되는 가상의 식별자로, 컴퓨팅 노드(1000)별로 고유의 값을 갖도록 각각에 서로 다른 값이 부여되며, 논리 주소와 같이 패킷 전송에 영향을 미치는 필드가 아니라면 어떤 필드 값이든 가상 식별자가 설정 및 사용될 수 있다. 즉, 가상 식별자로는 목적지 IP 주소 또는 출발지 IP 주소를 제외한 모든 필드(MPLS, VLAN, DST_MAC)에 대응되는 값이 부여될 수 있다. For example, as shown in FIG. 2, a matching condition for identifying a destination physical address of a packet may be set in a match field of a flow rule transmitted to the physical switch 100A. If a VLAN tag is used as a virtual identifier, a matching condition for identifying the VLAN tag of the packet will be set. A virtual identifier is a virtual identifier assigned to a field value that does not affect packet transmission. Different values are assigned to each of the computing nodes 1000 to have unique values. If not a field identifier, a virtual identifier can be set and used. That is, a value corresponding to all the fields (MPLS, VLAN, DST_MAC) except for the destination IP address or the source IP address can be given as the virtual identifier.

컨트롤러(50)는 가상 식별자를 이용하여 생성된 플로우 룰을 물리 스위치에 전송하며, 따라서 물리 스위치는 컴퓨팅 노드(1000) 간 전송 경로를 결정한다. 상기 컴퓨팅 노드(1000)의 목적지 물리 주소로 가상 식별자가 부여된 도 2의 예시에서, 목적지 논리 주소가 10.0.0.3 이고, 출발지 논리 주소가 10.0.0.1인 경우를 가정하자. The controller 50 transmits the flow rule generated using the virtual identifier to the physical switch, so that the physical switch determines the transmission path between the computing nodes 1000. In the example of FIG. 2 where a virtual identifier is assigned to the destination physical address of the computing node 1000, assume that the destination logical address is 10.0.0.3 and the source logical address is 10.0.0.1.

목적지가 아닌 가상 머신(300B를 제외한 나머지 가상 머신들)에 연결된 가상 스위치(200B를 제외한 나머지 가상 스위치들)에 전송되는 플로우 룰은 목적지 가상 머신(300B)을 포함하는 컴퓨팅 노드에 부여된 가상 식별자(a:a:a:a:a:c)를 상기 목적지로 전송되는 패킷의 목적지 물리 주소로 설정하는 액션 “Mod_eth_dst -> a:a:a:a:a:c”을 포함할 수 있다.  The flow rule transmitted to the virtual switch (other than the virtual switch 200B) connected to the virtual machine other than the destination (the remaining virtual machines except for the virtual machine 300B) is a virtual identifier assigned to the computing node including the destination virtual machine 300B a: a: a: a: c ", which sets a: a: a: a: a: c as the destination physical address of a packet to be transmitted to the destination.

따라서 가상머신(300A)에서 출발한 패킷은 목적지 주소가 10.0.0.3이므로, 가상 스위치(200A)의 플로우 엔트리에 따라 목적지 물리 주소가 a:a:a:a:a:c로 변경되어 물리 스위치(100B)로 전달된다. 물리 스위치(200B)에 저장된 플로우 엔트리의 매칭 조건은 목적지 물리 주소로 설정되어 있으므로, 물리 스위치(200B)는 목적지 물리주소가 a:a:a:a:a:c인 상기 패킷을 2번 포트로 출력할 수 있다. Therefore, since the destination address of the packet originated from the virtual machine 300A is 10.0.0.3, the destination physical address is changed to a: a: a: a: a: c according to the flow entry of the virtual switch 200A, 100B. Since the matching condition of the flow entry stored in the physical switch 200B is set to the destination physical address, the physical switch 200B transmits the packet whose destination physical address is a: a: a: a: a: c to the port 2 Can be output.

이와 같은 방법으로, 패킷은 물리 스위치(100C)를 거쳐 물리 주소가 a:a:a:a:a:c인 컴퓨팅 노드(1000B)로 전송되며, 컴퓨팅 노드(1000B)의 가상 스위치(200B)에 전달된 패킷은 가상 스위치(200B)에 저장된 플로우 테이블을 참조하여 패킷의 목적지 논리 주소를 확인할 수 있다. 본 예시에서 목적지 논리 주소는 10.0.0.3이므로, 도 2에 도시된 플로우 룰에 따라, 가상 스위치(200B)는 패킷의 목적지 물리 주소 필드에 부여된 가상 식별자를 목적지 가상 머신(300B)의 물리 주소(10.0.0.3‘s MAC)로 변경한다. 이는 이는 가상 머신(300B)이 패킷 수신 후 패킷의 목적지 물리주소가 자신의 물리주소와 다르면 패킷을 드랍하는 것을 방지하기 위함이다. In this way, the packet is transmitted to the computing node 1000B whose physical address is a: a: a: a: a: c via the physical switch 100C, and is transmitted to the virtual switch 200B of the computing node 1000B The transmitted packet can identify the destination logical address of the packet by referring to the flow table stored in the virtual switch 200B. In this example, the destination logical address is 10.0.0.3. Accordingly, in accordance with the flow rule shown in FIG. 2, the virtual switch 200B transmits the virtual identifier assigned to the destination physical address field of the packet to the physical address of the destination virtual machine 300B 10.0.0.3's MAC). This is to prevent the virtual machine 300B from dropping the packet if the destination physical address of the packet is different from its physical address after the packet is received.

전술한 예시와 같이 물리 스위치(100)에 전송되는 플로우 룰과 가상 스위치(200)에 전송되는 플로우 룰은 매칭 조건과 액션이 상이하다. 따라서 물리 스위치(100)는 컴퓨팅 노드 간 전송 경로를 결정하고, 가상 스위치는 컴퓨팅 노드에 포함된 가상 머신(호스트, 300) 간의 전송 경로를 결정하는 역할을 한다. 그 결과 SDN 제어의 복잡도가 현저히 낮아지며, 물리 스위치(100)에 저장되는 플로우 엔트리의 수는 컴퓨팅 노드의 수에 비례하므로, 낮은 용량을 갖는 물리 스위치(100)의 한계를 극복할 수 있다. As described above, the flow rules transmitted to the physical switch 100 and the flow rules transmitted to the virtual switch 200 are different from each other in matching conditions and actions. Accordingly, the physical switch 100 determines the transmission path between the computing nodes, and the virtual switch determines the transmission path between the virtual machine (host 300) included in the computing node. As a result, the complexity of the SDN control is significantly lowered, and the number of flow entries stored in the physical switch 100 is proportional to the number of computing nodes, so that the limitation of the physical switch 100 having a low capacity can be overcome.

네트워크 기능 가상화로 인해 고성능 컴퓨팅 노드의 리소스를 활용하여 다수의 가상 머신을 생성하는 사례가 늘어나고 있다. 가상 스위치의 경우 저장 가능한 플로우 룰의 개수에 제한이 없어 가상 머신의 개수가 크게 증가하더라도 충분히 관리 가능하므로, 본 발명에 의하면 개별 컴퓨팅 노드의 가상 머신 증가가 전체 네트워크에 영향을 미치지 않아 네트워크의 확장성을 높일 수 있다. Network functionality Virtualization is creating an increasing number of virtual machines that utilize the resources of high-performance computing nodes. In the case of the virtual switch, since there is no limit on the number of storable flow rules, even if the number of virtual machines increases greatly, the management can be sufficiently performed. Therefore, according to the present invention, since the increase of virtual machines of individual computing nodes does not affect the entire network, .

이하에서는 도 3 내지 도 4를 참조하여 컴퓨팅 노드에 복수의 가상 식별자가 부여되는 경우의 일 실시 예를 살펴본다. Hereinafter, an embodiment in which a plurality of virtual identifiers are assigned to a computing node will be described with reference to FIG. 3 to FIG.

컴퓨팅 노드에는 하나 이상의 가상 식별자가 부여될 수 있는데, 도 3과 같이 복수개의 가상 식별자가 부여될 수 있다. 복수개의 식별자를 사용하게 되면, 동일 컴퓨팅 노드로 전달되는 패킷이라도, 식별자 별로 경로를 다르게 설정함으로써 다중 경로(multi path)를 구현할 수 있다. One or more virtual identifiers may be assigned to the computing node, and a plurality of virtual identifiers may be assigned as shown in FIG. When a plurality of identifiers are used, even a packet transmitted to the same computing node can be implemented as a multi-path by setting different paths for each identifier.

도 4를 참조하여 다중 경로를 설정하는 일 예를 살펴본다. 도 4의 예시에서 컴퓨팅 노드(1001)의 가상 식별자는 물리 주소 형태로 부여되었으며, 가상 식별자로는 a:a:a:a:a:c 와 a:a:a:a:a:d 두 개가 설정되었다. 가상 식별자를 복수 개 사용하는 경우, 하나의 식별자는 컴퓨팅 노드(또는 가상 스위치)를 정점으로 하는 다이렉티드 트리(directed tree) 하나에 대응되도록 경로가 설정될 수 있다. An example of setting a multi-path will be described with reference to FIG. In the example of FIG. 4, the virtual identifier of the computing node 1001 is given in the form of a physical address, and two virtual identifiers a: a: a: a: a: c and a: a: a: a: a: Respectively. When a plurality of virtual identifiers are used, one identifier may be set to correspond to one directed tree that has a computing node (or virtual switch) as a vertex.

즉, 컨트롤러는 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 상기 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성할 수 있으며, 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 것일 수 있다. That is, the controller can generate a first path tree having a first virtual identifier as a vertex and a second path tree having the second virtual identifier as a vertex, and the first path tree and the second path tree can generate different paths .

그리고 컨트롤러는 플로우 룰을 생성함에 있어서 제1 경로 트리에 대응하는 제4 플로우 룰을 생성하고, 상기 제4 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정할 수 있다. 나아가, 컨트롤러는 제2 경로 트리에 대응하는 제5 플로우 룰을 생성하고, 상기 제5 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정할 수 있으며, 생성된 제4 플로우 룰과 상기 제5 플로우 룰을 상기 물리 스위치에 전송할 수 있다. In generating the flow rule, the controller may generate a fourth flow rule corresponding to the first path tree, and set the matching condition of the fourth flow rule using the first virtual identifier. Further, the controller can generate a fifth flow rule corresponding to the second path tree, and can set the matching condition of the fifth flow rule using the second virtual identifier, and the generated fourth flow rule and the fifth Flow rule to the physical switch.

위 실시 예에서 각각의 스위치는 임의의 컴퓨팅 노드 A에 패킷을 전송하는 플로우 엔트리를 플로우 테이블 내에 다수 개 포함할 수 있으며, 그 결과 복수 개의 패킷 목적지 호스트가 컴퓨팅 노드 A로 동일하더라도, 각 패킷은 서로 다른 경로를 이용하여 컴퓨팅 노드 A에 전송될 수 있다. In the above embodiment, each switch may include a plurality of flow entries in the flow table that transmit packets to any computing node A, so that even if a plurality of packet destination hosts are identical to computing node A, May be transmitted to computing node A using a different path.

따라서 하나의 컴퓨팅 노드(또는 가상 스위치)를 정점으로 하는 식별자를 여러개 부여하는 것은 다중 경로를 설정할 수 있음을 의미한다. 본 발명의 복수개 가상 식별자를 이용한 다중 경로 설정은 로드 밸런싱(load balancing) 또는 트래픽 스티어링(traffic steering)에 사용될 수 있으며, 다중 경로를 이용하면 효율적으로 링크를 사용할 수 있다. Therefore, assigning multiple identifiers with one computing node (or virtual switch) as a vertex means that multiple paths can be set. The multipath setting using the plurality of virtual identifiers of the present invention can be used for load balancing or traffic steering, and the multipath can efficiently use the link.

도 3을 이용하여 보다 구체적인 실시 예를 살펴본다. 예를 들어, 가상 스위치(200C)는 10.0.0.3을 목적지로 하는 패킷 A를 가상 머신으로부터 수신하면 패킷의 목적지 물리 주소를 컴퓨팅 노드(a:a:a:a:a:c)로 설정할 수 있다. 가상 스위치(200A)는 10.0.0.3을 목적지로 하는 패킷 B를 가상 머신으로부터 수신하면 패킷의 목적지 물리 주소를 컴퓨팅 노드(a:a:a:a:b:c)로 설정할 수 있다. 여기서 a:a:a:a:a:c와 a:a:a:a:b:c는 모두 컴퓨팅 노드(1000B)의 가상 식별자이다.A more specific embodiment will be described with reference to FIG. For example, when the virtual switch 200C receives a packet A having a destination of 10.0.0.3 from the virtual machine, it can set the destination physical address of the packet to the computing node a: a: a: a: a: c . The virtual switch 200A can set the destination physical address of the packet to the computing node a: a: a: a: b: c when the packet B having the destination of 10.0.0.3 is received from the virtual machine. Here, a: a: a: a: a: c and a: a: a: a: b: c are virtual identifiers of the computing node 1000B.

패킷 A를 수신한 물리 스위치(100B)는 매칭 조건으로 목적지 물리 주소를 확인하고, 패킷 A의 물리 주소는 a:a:a:a:a:c이므로 1번 포트로 패킷을 출력할 수 있다. 패킷 B를 수신한 물리 스위치(100B)는 패킷 B의 물리 주소가 a:a:a:a:b:c 이므로, 패킷을 4번 포트로 출력할 수 있다. The physical switch 100B receiving the packet A confirms the destination physical address in accordance with the matching condition. Since the physical address of the packet A is a: a: a: a: a: c, the packet can be output to the port 1. The physical switch 100B receiving the packet B can output the packet to the port 4 since the physical address of the packet B is a: a: a: a: b: c.

즉, 도 3의 예시에서 패킷 A는 실선에 대응되는 경로로 전송되며, 물리 스위치(100C)를 통해 a:a:a:a:a:c를 물리 주소로 하는 컴퓨팅 노드(1000B)에 도달한다. In other words, in the example of FIG. 3, the packet A is transmitted on the path corresponding to the solid line, and reaches the computing node 1000B having the physical address a: a: a: a: a: c via the physical switch 100C .

패킷 B는 4번 포트를 거쳐 점선에 대응되는 경로를 따라 컴퓨팅 노드(1000B)로 전송된다. 컴퓨팅 노드(1000B)의 가상 스위치(200B)에 도착한 패킷A와 패킷 B는 둘 다 10.0.0.3을 목적지 논리 주소로 하므로, 가상 스위치(200B)는 패킷A와 패킷 B의 목적지 물리 주소를 목적지 가상 머신(300B)의 물리 주소로 변경한 후, 상기 목적지 가상 머신(300B)과 연결된 포트 2번으로 패킷을 출력할 수 있다. And the packet B is transmitted to the computing node 1000B along the path corresponding to the dotted line through the port 4. Since the packet A and the packet B arriving at the virtual switch 200B of the computing node 1000B both have the destination logical address of 10.0.0.3, the virtual switch 200B transfers the destination physical address of the packet A and the packet B to the destination virtual machine To the physical address of the destination virtual machine 300B, and then output the packet to the port 2 connected to the destination virtual machine 300B.

도 5는 본 발명의 일 실시 예에 의한 컨트롤러(50)를 설명하기 위한 블록도이다. 도 5를 참조하면, 본 발명의 일 실시 예에 의한 컨트롤러(50)는 애플리케이션부(53), 통신부(55), 저장부(57)를 포함할 수 있으며, 애플리케이션부(53)는 가상 식별자 생성부(53-1), 경로 설정부(53-2), 플로우 룰 생성부(53-3)를 포함할 수 있으며, 를 더 포함할 수 있다. 5 is a block diagram for explaining a controller 50 according to an embodiment of the present invention. 5, a controller 50 according to an embodiment of the present invention may include an application unit 53, a communication unit 55, and a storage unit 57. The application unit 53 may generate a virtual identifier A routing unit 53-1, a route setting unit 53-2, and a flow rule generating unit 53-3.

애플리케이션부(53)는 컨트롤러(50)가 수행하는 각종 기능이 구현되는 영역으로, 전술한 네트워크 토폴로지 관리, 경로 관리 등을 수행하는 애플리케이션이 포함될 수 있다. The application unit 53 is an area in which various functions performed by the controller 50 are implemented, and may include an application for performing the network topology management, the path management, and the like described above.

가상 식별자 생성부(53-1)는 컴퓨팅 노드 또는 상기 가상 스위치에 하나 이상의 가상 식별자를 부여할 수 있다. 가상 식별자 생성부(53-1)는 SDN 제어 설정에 따라 컴퓨팅 노드 또는 가상 스위치에 부여되는 가상 식별자의 개수를 조절할 수 있다. The virtual identifier generating unit 53-1 may assign one or more virtual identifiers to the computing node or the virtual switch. The virtual identifier generating unit 53-1 may adjust the number of virtual identifiers assigned to the computing node or the virtual switch according to the SDN control setting.

경로 설정부(53-2)는 컴퓨팅 노드 또는 가상 스위치에 복수개의 가상 식별자가 부여된 경우, 가상 식별자 각각을 정점으로 하는 경로 트리를 복수개 생성할 수 있다. When a plurality of virtual identifiers are assigned to the computing node or the virtual switch, the path setting unit 53-2 may generate a plurality of path trees each having a virtual identifier as a vertex.

플로우 룰 생성부(53-3)은 가상 식별자를 이용하여 상기 물리 스위치에 전송되는 제1 플로우 룰의 매칭 조건을 설정하며, 컴퓨팅 노드 또는 가상 스위치에 복수개의 가상 식별자가 부여된 경우, 경로 설정부(53-2)에서 생성된 경로 트리 각각에 대응되는 플로우 룰을 생성할 수 있다. 플로우 룰 생성부(53-3)는 물리 스위치(100)에 전송되는 플로우 룰의 매칭 조건에는 가상 식별자를 사용하고, 가상 스위치(200)에 전송되는 플로우 룰의 매칭 조건에는 가상 머신(또는 호스트)의 실제 논리 주소를 사용할 수 있다. 또한 가상 스위치(200)에 전송되는 플로우 룰에는 패킷의 물리 주소를 변경하는 액션을 포함시킬 수 있으며, 이에 대한 설명은 전술한 바 있으므로 생략하기로 한다. The flow rule generation unit 53-3 sets the matching condition of the first flow rule transmitted to the physical switch using the virtual identifier, and when a plurality of virtual identifiers are assigned to the computing node or the virtual switch, It is possible to generate a flow rule corresponding to each of the path trees generated in the path tree 53-2. The flow rule generation unit 53-3 uses a virtual identifier for the matching condition of the flow rule transmitted to the physical switch 100 and uses the virtual machine as the matching condition of the flow rule transmitted to the virtual switch 200. [ Can be used. In addition, the flow rule transmitted to the virtual switch 200 may include an action for changing the physical address of the packet, and the description thereof has been described above, so the description is omitted.

통신부(55)는 스위치(100, 200)와 통신할 수 있다. 통신부(55)는 물리 스위치(100)와 가상 스위치(200)에 각각에 대응되는 플로우 룰을 전송함으로써, 각 스위치가 플로우 룰에 따라 패킷을 전달하도록 한다. 통신부(55)는 보안 채널(Secure Channel)을 통해 스위치(100, 200)와 정보를 교환할 수 있으며, 스위치(100, 200)와 교환되는 정보는 암호화될 수 있다. The communication unit 55 can communicate with the switches 100 and 200. [ The communication unit 55 transmits the flow rules corresponding to the physical switch 100 and the virtual switch 200, respectively, so that the switches transmit packets according to the flow rules. The communication unit 55 can exchange information with the switches 100 and 200 through a secure channel and the information exchanged with the switches 100 and 200 can be encrypted.

저장부(57)는 컨트롤러 애플리케이션의 상태와 애플리케이션의 운영에 필요한 정보, 컨트롤러(50)가 스위치(100, 200)에 전송한 플로우 룰, 스위치(100, 200)의 상태, 네트워크 토폴로지 정보 등 다양한 정보를 저장할 수 있다. 특히, 저장부(57)는 경로 설정부(53-2)의 경로 트리 생성을 위한 알고리즘을 저장할 수 있다.  The storage unit 57 stores various information such as a state of the controller application and information necessary for operating the application, a flow rule transmitted by the controller 50 to the switches 100 and 200, a state of the switches 100 and 200, Can be stored. In particular, the storage unit 57 may store an algorithm for generating a path tree of the path setting unit 53-2.

도 6을 참조하여 컨트롤러의 소프트웨어 정의 네트워킹 제어 방법을 다시 한번 정리하면, 컨트롤러는 컴퓨팅 노드 또는 가상 스위치에 가상 식별자를 부여하고(S100), 가상 식별자를 이용하여 물리 스위치에 전송되는 제1 플로우 룰을 생성할 수 있다(S200), 그리고 가상 머신의 논리 주소와 같은 가상 머신 식별자를 이용하여 가상 스위치에 전송되는 제2 플로우 룰을 생성할 수 있다. 컨트롤러는 단계 400에서 제1 플로우 룰을 물리 스위치에 전송하고, 제2 플로우 룰을 가상 스위치에 전송함으로써 가상 스위치와 물리 스위치를 계층화할 수 있다. 6, the controller assigns a virtual identifier to the computing node or virtual switch (S100), and uses the virtual identifier to determine a first flow rule to be transmitted to the physical switch (S200), and generate a second flow rule to be transmitted to the virtual switch using the same virtual machine identifier as the logical address of the virtual machine. The controller may layer the virtual switch and the physical switch by transmitting the first flow rule to the physical switch and transmitting the second flow rule to the virtual switch in step 400. [

전술한 컨트롤러의 소프트웨어 정의 네트워킹 제어 방법은 각 실시 예 중 어느 하나를 실행시키기 위하여 컴퓨터 판독 가능 매체에 저장된 컨트롤러 응용 프로그램을 통해 컨트롤러(50)에서 구현될 수 있다. The software defined networking control method of the controller described above may be implemented in the controller 50 via a controller application program stored in a computer readable medium for executing any of the embodiments.

본 명세서에서 생략된 일부 실시 예는 그 실시 주체가 동일한 경우 동일하게 적용 가능하다. 또한, 전술한 본 발명은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.Some embodiments omitted in this specification are equally applicable if their implementation subject is the same. It is to be understood that both the foregoing general description and the following detailed description of the present invention are exemplary and explanatory and are intended to be exemplary and explanatory only and are not restrictive of the invention, The present invention is not limited to the drawings.


50: 컨트롤러
100: 물리 스위치
200: 가상 스위치(소프트웨어 스위치)
300: 가상 머신(호스트)
1000: 컴퓨팅 노드(서버)

50: Controller
100: physical switch
200: Virtual switch (software switch)
300: Virtual machine (host)
1000: Computing node (server)

Claims (5)

컨트롤러가 가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 방법에 있어서,
상기 컴퓨팅 노드 또는 상기 가상 스위치에 하나 이상의 가상 식별자를 부여하는 단계;
상기 가상 식별자가 부여된 제1 필드 값을 매칭 조건으로 하는 플로우 룰을 생성하여 상기 물리 스위치에 전송하는 단계;
목적지 가상 머신으로 전송되는 패킷의 제1 필드 값을 상기 목적지 가상 머신의 실제 제1 필드 정보로 설정하는 플로우 룰을 생성하여 상기 목적지 가상 머신에 연결된 제1 가상 스위치에 전송하는 단계;
상기 패킷의 제1 필드 값을 상기 제1 가상 스위치 또는 상기 제1 가상 스위치를 포함하는 컴퓨팅 노드의 가상 식별자로 설정하는 액션을 포함하는 플로우 룰을 생성하여 상기 목적지 가상 머신에 연결되지 않은 제2 가상 스위치에 전송하는 단계;
상기 제1 필드는 패킷 전송에 영향을 미치지 않는 필드인 소프트웨어 정의 네트워킹 제어 방법.

A method for controlling software defined networking comprising a computing node and a physical switch, the controller including a virtual switch and a virtual machine,
Assigning at least one virtual identifier to the computing node or the virtual switch;
Generating a flow rule having the first field value to which the virtual identifier is assigned as a matching condition, and transmitting the flow rule to the physical switch;
Generating a flow rule for setting a first field value of a packet to be transmitted to a destination virtual machine as actual first field information of the destination virtual machine and transmitting the flow rule to a first virtual switch connected to the destination virtual machine;
Generating a flow rule including an action of setting a first field value of the packet to a virtual identifier of the computing node including the first virtual switch or the first virtual switch, Transmitting to the switch;
Wherein the first field is a field that does not affect packet transmission.

제1항에 있어서,
상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자가 부여된 경우, 상기 복수개의 가상 식별자 중 하나인 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 다른 하나인 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하는 단계를 더 포함하며,
상기 플로우 룰을 생성하여 상기 물리 스위치에 전송하는 단계는,
상기 제1 경로 트리에 대응하는 제1 플로우 룰을 생성하고, 상기 제1 플로우 룰의 매칭 조건을 상기 제1 가상 식별자를 이용하여 설정하는 단계;
상기 제2 경로 트리에 대응하는 제2 플로우 룰을 생성하고, 상기 제2 플로우 룰의 매칭 조건을 상기 제2 가상 식별자를 이용하여 설정하는 단계;
상기 제1 플로우 룰과 상기 제2 플로우 룰을 상기 물리 스위치에 전송하는 단계를 포함하고,
상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 소프트웨어 정의 네트워킹 제어 방법.
The method according to claim 1,
Wherein when a plurality of virtual identifiers are assigned to the computing node or the virtual switch, a first path tree having a first virtual identifier, which is one of the plurality of virtual identifiers, as a vertex, and a second virtual identifier, 2 < / RTI > path tree,
Wherein the step of generating and transmitting the flow rule to the physical switch comprises:
Generating a first flow rule corresponding to the first path tree and setting a matching condition of the first flow rule using the first virtual identifier;
Generating a second flow rule corresponding to the second path tree and setting a matching condition of the second flow rule using the second virtual identifier;
And transmitting the first flow rule and the second flow rule to the physical switch,
Wherein the first path tree and the second path tree represent different paths.
제1항에 있어서,
상기 가상 식별자가 상기 컴퓨팅 노드의 물리 주소로 부여된 경우,
상기 제1 가상 스위치에 전송되는 플로우 룰은 상기 목적지 가상 머신으로 전송되는 패킷의 목적지 물리 주소 필드 값을 상기 목적지 가상 머신의 실제 물리 주소로 설정하는 액션을 포함하고,
상기 제2 가상 스위치에 전송되는 플로우 룰은 상기 패킷의 목적지 물리 주소 필드 값을 상기 가상 식별자로 설정하는 액션을 포함하는 소프트웨어 정의 네트워킹 제어 방법.
The method according to claim 1,
If the virtual identifier is assigned to the physical address of the computing node,
Wherein the flow rule transmitted to the first virtual switch includes an action of setting a destination physical address field value of a packet transmitted to the destination virtual machine to an actual physical address of the destination virtual machine,
Wherein the flow rule transmitted to the second virtual switch includes an action to set the destination physical address field value of the packet to the virtual identifier.
가상 스위치와 가상 머신을 포함하는 컴퓨팅 노드 및 물리 스위치로 구성된 소프트웨어 정의 네트워킹을 제어하는 컨트롤러에 있어서,
플로우 룰을 생성하는 애플리케이션부;
제1, 제2 플로우 룰을 상기 물리 스위치에 전송하고, 제3 플로우 룰을 목적지 가상 머신에 연결된 제1 가상 스위치에 전송하며, 제4 플로우 룰을 상기 목적지 가상 머신에 연결되지 않은 제2 가상 스위치에 전송하는 통신부;
상기 컴퓨팅 노드 및 상기 물리 스위치의 정보를 저장하는 저장부를 포함하며,
상기 애플리케이션부는
상기 컴퓨팅 노드 또는 상기 가상 스위치에 하나 이상의 가상 식별자를 부여하는 가상 식별자 생성부;
상기 가상 식별자를 이용하여 플로우 룰을 생성하는 플로우 룰 생성부를 포함하며,
상기 플로우 룰 생성부는
상기 가상 식별자 생성부가 상기 컴퓨팅 노드 또는 상기 가상 스위치에 복수개의 가상 식별자를 부여한 경우,
상기 복수개의 가상 식별자 중 제1 가상 식별자를 정점으로 하는 제1 경로 트리와 제2 가상 식별자를 정점으로 하는 제2 경로 트리를 생성하고,
상기 제1, 2 경로 트리에 각각 대응하는 상기 제1, 2 플로우 룰을 생성하고,
상기 제1, 2 플로우 룰의 매칭 조건을 각각 상기 제1, 2 가상 식별자를 이용하여 설정하고,
목적지 가상 머신으로 전송되는 패킷의 제1 필드 값을 상기 목적지 가상 머신의 실제 제1 필드 정보로 설정하는 제3 플로우 룰을 생성하고,
상기 패킷의 제1 필드 값을 상기 제1 가상 스위치 또는 상기 제1 가상 스위치를 포함하는 컴퓨팅 노드의 가상 식별자로 설정하는 액션을 포함하는 제4 플로우 룰을 생성하고,
상기 제1 필드는 패킷 전송에 영향을 미치지 않는 필드이며, 상기 제1 경로 트리와 상기 제2 경로 트리는 서로 다른 경로를 나타내는 컨트롤러.
1. A controller for controlling software defined networking comprising a computing node and a physical switch comprising a virtual switch and a virtual machine,
An application unit for generating a flow rule;
Sending a first flow rule to the physical switch, sending a third flow rule to a first virtual switch connected to the destination virtual machine, sending a fourth flow rule to a second virtual switch not connected to the destination virtual machine, To the communication unit;
And a storage unit for storing information of the computing node and the physical switch,
The application unit
A virtual identifier generating unit for assigning one or more virtual identifiers to the computing node or the virtual switch;
And a flow rule generation unit for generating a flow rule using the virtual identifier,
The flow rule generation unit
When the virtual identifier generating unit assigns a plurality of virtual identifiers to the computing node or the virtual switch,
Generating a first path tree having a first virtual identifier as a vertex and a second path tree having a second virtual identifier as a vertex among the plurality of virtual identifiers,
Generating the first and second flow rules respectively corresponding to the first and second path trees,
The matching conditions of the first and second flow rules are set using the first and second virtual identifiers, respectively,
Generating a third flow rule for setting a first field value of a packet transmitted to a destination virtual machine to actual first field information of the destination virtual machine,
Generating a fourth flow rule including an action of setting a first field value of the packet to a virtual identifier of the computing node including the first virtual switch or the first virtual switch,
Wherein the first field is a field that does not affect packet transmission, and wherein the first path tree and the second path tree represent different paths.
하드웨어와 결합되어 제 1 항 내지 제 3 항의 방법 중 어느 하나의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컨트롤러 응용 프로그램. 13. A controller application program stored in a computer-readable medium for executing any one of the methods of claims 1 to 3 in combination with hardware.
KR1020170156500A 2017-11-22 2017-11-22 Method for controlling software defined networking and computing device performing the same KR102001487B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170156500A KR102001487B1 (en) 2017-11-22 2017-11-22 Method for controlling software defined networking and computing device performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170156500A KR102001487B1 (en) 2017-11-22 2017-11-22 Method for controlling software defined networking and computing device performing the same

Publications (2)

Publication Number Publication Date
KR20190059004A KR20190059004A (en) 2019-05-30
KR102001487B1 true KR102001487B1 (en) 2019-07-17

Family

ID=66675709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170156500A KR102001487B1 (en) 2017-11-22 2017-11-22 Method for controlling software defined networking and computing device performing the same

Country Status (1)

Country Link
KR (1) KR102001487B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102346417B1 (en) * 2021-09-17 2022-01-04 한화시스템(주) Method for selecting leader controller node in decentralized software-defined network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101751891B1 (en) * 2016-05-04 2017-07-11 성균관대학교산학협력단 Controller, apparatus and method, for topology discovery and peer detection based on openflow in openflow wireless mesh network environment
KR101797112B1 (en) * 2016-01-25 2017-11-15 쿨클라우드(주) Manegement system for container network

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5585664B2 (en) * 2011-01-13 2014-09-10 日本電気株式会社 Network system and route control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101797112B1 (en) * 2016-01-25 2017-11-15 쿨클라우드(주) Manegement system for container network
KR101751891B1 (en) * 2016-05-04 2017-07-11 성균관대학교산학협력단 Controller, apparatus and method, for topology discovery and peer detection based on openflow in openflow wireless mesh network environment

Also Published As

Publication number Publication date
KR20190059004A (en) 2019-05-30

Similar Documents

Publication Publication Date Title
JP7417825B2 (en) slice-based routing
JP6445015B2 (en) System and method for providing data services in engineered systems for execution of middleware and applications
US20180324274A1 (en) Information system, control apparatus, method of providing virtual network, and program
US8873563B2 (en) Techniques for next-hop optimization
CN111147372B (en) Downlink message sending and forwarding method and device
CN104821890A (en) Realization method for OpenFlow multi-level flow tables based on ordinary switch chip
JP6437693B2 (en) Multicast data packet forwarding
US10911354B2 (en) Packet processing method and system, and device
JP6488426B2 (en) Multicast data packet forwarding
WO2018036254A1 (en) Packet forwarding method and device
EP3136662B1 (en) Construction method, device and system for multi-path forwarding rules
JP6529660B2 (en) Multicast data packet forwarding
CN109547354B (en) Load balancing method, device, system, core layer switch and storage medium
US9800508B2 (en) System and method of flow shaping to reduce impact of incast communications
JP2018518925A (en) Packet forwarding
JPWO2014112616A1 (en) Control device, communication device, communication system, switch control method and program
US20140040477A1 (en) Connection mesh in mirroring asymmetric clustered multiprocessor systems
WO2014050091A1 (en) Communication system, communication method, information processing apparatus, communication control method, and program
CN110290072B (en) Flow control method, flow control device, network equipment and storage medium
US10581738B2 (en) Efficient inter-VLAN routing in openflow networks
US11563698B2 (en) Packet value based packet processing
US20200028779A1 (en) Packet processing method and apparatus
CN110022263B (en) Data transmission method and related device
KR102001487B1 (en) Method for controlling software defined networking and computing device performing the same
WO2019084805A1 (en) Method and apparatus for distributing message

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