KR20160090485A - Method and apparatus for operating distributed controllers of software defined network - Google Patents

Method and apparatus for operating distributed controllers of software defined network Download PDF

Info

Publication number
KR20160090485A
KR20160090485A KR1020150010321A KR20150010321A KR20160090485A KR 20160090485 A KR20160090485 A KR 20160090485A KR 1020150010321 A KR1020150010321 A KR 1020150010321A KR 20150010321 A KR20150010321 A KR 20150010321A KR 20160090485 A KR20160090485 A KR 20160090485A
Authority
KR
South Korea
Prior art keywords
server
flow table
controller
table change
controller instance
Prior art date
Application number
KR1020150010321A
Other languages
Korean (ko)
Other versions
KR101650691B1 (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 KR1020150010321A priority Critical patent/KR101650691B1/en
Publication of KR20160090485A publication Critical patent/KR20160090485A/en
Application granted granted Critical
Publication of KR101650691B1 publication Critical patent/KR101650691B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0695Management of faults, events, alarms or notifications the faulty arrangement being the maintenance, administration or management system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/60Software-defined switches

Abstract

The present invention relates to a method where two or more servers distribute a software defined network (SDN) to control the SDN. The method comprises: a step where a first server in which a first controller instance is installed transmits a flow table change item to a second server in which a second controller instance is installed; and a step where the first server transmits the flow table change item to a corresponding switch when the first server receives a reception confirmation message for the flow table change item from the second server. According to the present invention, a storage location change item and a network update can be synchronized between a plurality of servers (instances) realizing distributed controllers of an SDN.

Description

소프트웨어 정의 네트워크에서 분산 컨트롤러를 운용하는 방법 및 장치 {METHOD AND APPARATUS FOR OPERATING DISTRIBUTED CONTROLLERS OF SOFTWARE DEFINED NETWORK}[0001] METHOD AND APPARATUS FOR OPERATING DISTRIBUTED CONTROLLERS OF SOFTWARE DEFINED NETWORK [0002]

본 발명은 소프트웨어 정의 네트워크를 제어하는 방법 및 장치에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크의 분산 컨트롤러를 운용하는 방법 및 장치에 대한 것이다.The present invention relates to a method and apparatus for controlling a software defined network. More particularly, the present invention relates to a method and apparatus for operating a distributed controller in a software defined network.

소프트웨어 정의 네트워킹 (SDN, Software Defined Networking)의 등장은 최근 네트워크 구조를 바꾸고 있다. 소프트웨어 정의 네트워크 기술은 복잡한 컨트롤 플레인(control plane)의 기능을 데이터 플레인(data plane)과 분리하여, 컨트롤 플레인의 복잡한 기능을 소프트웨어로 처리하고, 데이터 플레인은 네트워크 패킷의 전달, 무시, 변경 등 컨트롤 플레인이 지시하는 단순한 기능만을 수행하도록 한다. 이런 변화로, 복잡한 하드웨어의 제약 없이 소프트웨어로 새로운 네트워크 기능을 개발할 수 있으며, 동시에 이전 네트워크 구조에서 불가능했던 다양한 시도를 할 수 있게 되었다.The emergence of Software Defined Networking (SDN) is changing the network structure in recent years. Software-defined network technology separates the complexity of the control plane from the data plane, processing the complex functions of the control plane with software, and the data plane is the control plane So that only a simple function of the instruction is performed. With these changes, software can develop new network functions without complex hardware constraints, while at the same time making various attempts that were not possible with previous network architectures.

예를 들어, 클라우드 네트워크와 같은 환경에서, 각 네트워크 스위치 혹은 라우터의 기능을 동적으로 설정하여 에너지 소비를 줄일 수 있으며, 엔터프라이즈 네트워크 환경에서는 각 스위치나 라우터에 원하는 접근 제어 방식을 구현할 수 있다. 이를 이용하여 기존의 네트워크에서 사용되는 장비의 수와 장비 관리 비용을 줄일 수 있다. 또 새롭게 개발한 기능을 자유롭게 시험할 수 있다.For example, in an environment such as a cloud network, the function of each network switch or router can be dynamically set to reduce energy consumption. In an enterprise network environment, a desired access control method can be implemented for each switch or router. This can reduce the number of equipment used in existing networks and equipment management costs. You can freely test newly developed functions.

컨트롤 플레인을 담당하는 컨트롤러 (즉, 제어장치)와 데이터 플레인을 담당하는 스위치 사이의 통신은 국제 표준인 오픈플로우(OpenFlow) 프로토콜을 통해서 이루어진다. 오픈플로우 프로토콜을 지원하는 스위치는 패킷이 전달되면, 제어 장치가 미리 정한 규칙에 따라서, 패킷을 다른 스위치로 전달하거나, 제어 장치로 전달하거나, 버리는 등의 단순한 동작을 수행한다.Communication between the controller responsible for the control plane (i.e., the control device) and the switch responsible for the data plane is accomplished through the international standard OpenFlow protocol. A switch supporting an open flow protocol performs a simple operation such as transferring a packet to another switch, transferring the packet to a control device, or discarding the packet according to a predetermined rule, when a packet is delivered.

소프트웨어 정의 네트워크에서 스위치가 제어 장치로 보내거나, 제어 장치의 어플리케이션이 서로 주고 받는 메시지를 제어 장치의 이벤트라고 부른다. In a software defined network, a message sent by a switch to a control device, or a message sent by the application of the control device to each other is called an event of the control device.

제어 장치에 전달되는 이벤트의 예를 들어보면 다음과 같다. 플로우 테이블에 처리규칙이 없는 새로운 플로우가 생기면, 패킷 유입 이벤트(packet in)가 발생하고, 네트워크 스위치가 꺼지면, 연결다운 이벤트(connection down)가 발생한다. 소프트웨어 정의 네트워크의 토폴로지가 바뀌면, 토폴로지 변경 이벤트(topology change)가 발생한다. 네트워크 스위치의 턴온이나 오류 해소로 인하여 다운된 네트워크 스위치가 켜지면, 연결 업 이벤트(connection up)가 발생한다. 제어 장치의 어플리케이션은 이와 같은 이벤트에 대한 적절한 동작을 수행하는 소프트웨어이다. An example of an event delivered to the controller is as follows. If there is a new flow in the flow table without a processing rule, a packet in event (packet in) occurs, and when the network switch is turned off, a connection down event occurs. When the topology of a software defined network changes, a topology change event occurs. When the network switch is turned on due to the turn-on or failure of the network switch, a connection up event occurs. The application of the control device is software that performs the appropriate operation for such an event.

본 발명은 SDN 환경에서 분산 컨트롤러를 운용하는 방법 및 장치를 제공하는 것을 목적으로 한다. It is an object of the present invention to provide a method and apparatus for operating a distributed controller in an SDN environment.

나아가 본 발명은 SDN의 분산 컨트롤러를 구현하는 복수의 서버(인스턴스)들 사이에 저장소 변경 사항 및 네트워크 업데이트를 동기화하여, 하나 이상의 인스턴스에 장애가 발생해도 네트워크와 컨트롤러의 정합성을 유지할 수 있도록 하는 방법 및 장치를 제공하는 것을 목적으로 한다. Further, the present invention provides a method and apparatus for synchronizing repository changes and network updates among a plurality of servers (instances) implementing SDN's distributed controller so that consistency of the network and the controller can be maintained even if one or more instances fail, And to provide the above-mentioned objects.

본 발명의 실시예를 따르는 둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법은, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버가, 플로우 테이블 변경 사항을 제 2 컨트롤러 인스턴스를 설치한 제 2 서버에게 전송하는 단계; 상기 제 1 서버가, 상기 제 2서버로부터 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 한다. A method for distributing and controlling a software defined network by two or more servers according to an embodiment of the present invention includes the steps of distributing a flow table change to a second server that has installed a second controller instance Transmitting; When the first server receives the acknowledgment message for the flow table change from the second server, transmitting the flow table change to the corresponding switch.

한편 본 발명의 실시예를 따르는 둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법은, 제 2 컨트롤러 인스턴스를 설치한 제 2 서버가, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버로부터 플로우 테이블 변경 사항을 수신하는 단계; 상기 제 2 서버가 상기 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하는 단계; 상기 제 2 서버가, 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하는 단계를 포함하는 것을 특징으로 한다. Meanwhile, a method in which two or more servers according to an embodiment of the present invention distribute and control a software defined network is characterized in that a second server installing a second controller instance receives a flow table change request from a first server installing a first controller instance ; The second server storing the flow table changes and sending an acknowledgment message for the flow table changes to the first server; And when the second server receives the checkpoint time point information from the first server, deleting the flow table change of the first server received before the time of the checkpoint.

나아가, 본 발명의 실시예를 따르는 둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법은, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버가, 플로우 테이블 변경 사항을 공유 저장소에 저장하는 단계; 제 2컨트롤러 인스턴스를 설치한 제 2서버가, 플로우 테이블 변경 사항을 상기 공유 저장소에 저장하는 단계; 및 상기 제 2 서버가 상기 제 1 서버의 장애를 인식하면, 상기 공유 저장소에 저장되어 있는 상기 제 1 서버의 플로우 테이블 변경 사항을 상기 제 2 서버가 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 한다. Further, a method for distributing and controlling a software defined network by two or more servers according to an embodiment of the present invention includes: a step in which a first server installing a first controller instance stores flow table changes in a shared repository; Storing a flow table change in the shared repository, the second server having installed the second controller instance; And transmitting the flow table change of the first server stored in the shared storage to the second server when the second server recognizes the failure of the first server. do.

한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크를 분산하여 제어하는 둘 이상의 서버를 포함하는 시스템은, 제 1 컨트롤러 인스턴스가 설치된 제 1 서버; 및 제 2 컨트롤러 인스턴스가 설치된 제 2 서버를 포함하고, 상기 제 1 서버는, 플로우 테이블 변경 사항을 상기 제 2 서버에게 전송하고, 상기 제 2서버로부터 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 것을 특징으로 한다. A system including two or more servers that distribute and control a software defined network according to an embodiment of the present invention includes a first server having a first controller instance installed therein; And a second server in which a second controller instance is installed, the first server sending a flow table change to the second server, receiving an acknowledgment message for the flow table change from the second server And transmits the flow table change to the corresponding switch.

그리고 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크를 분산하여 제어하는 둘 이상의 서버를 포함하는 시스템은, 제 1 컨트롤러 인스턴스가 설치된 제 1 서버; 및 제 2 컨트롤러 인스턴스가 설치된 제 2 서버를 포함하고, 상기 제 2 서버는, 상기 제 1 서버로부터 수신한 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하며, 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하고, 제 1 서버의 장애를 인식하면, 저장된 상기 제 1 서버의 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 것을 특징으로 한다. A system including two or more servers that distribute and control a software defined network according to an embodiment of the present invention includes: a first server in which a first controller instance is installed; And a second server in which a second controller instance is installed, the second server stores a flow table change received from the first server, and transmits to the first server an acknowledgment message for the flow table change Upon receipt of the checkpoint point-in-time information from the first server, deletes the flow-table change item of the first server received before the checkpoint point, recognizes the fault of the first server, 1 < / RTI > of the server to the corresponding switch.

나아가 본 발명의 실시예를 따르는 둘 이상의 서버에서 소프트웨어 정의 네트워크를 분산하여 제어하는 처리를 실행시키기 위해 매체에 저장된 컴퓨터 프로그램은, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버에서, 플로우 테이블 변경 사항을 제 2 컨트롤러 인스턴스를 설치한 제 2 서버에게 전송하는 기능; 및 상기 제 1 서버에서, 상기 제 2서버로부터 상기 변환한 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 기능을 실행하는 것을 특징으로 한다. Further, a computer program stored in a medium for executing a process of distributing and controlling a software defined network in two or more servers according to an embodiment of the present invention may be configured such that, in a first server in which a first controller instance is installed, 2 controller instance to the second server that installed it; And transmitting the flow table change message to the corresponding switch when receiving the acknowledgment message for the converted flow table change message from the second server in the first server.

그리고 본 발명의 실시예를 따르는 둘 이상의 서버에서 소프트웨어 정의 네트워크를 분산하여 제어하는 처리를 실행시키기 위해 매체에 저장된 컴퓨터 프로그램은, 제 2 컨트롤러 인스턴스를 설치한 제 2 서버에서, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버로부터 플로우 테이블 변경 사항을 수신하는 기능; 상기 제 2 서버에서 상기 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하는 기능; 및 상기 제 2 서버에서 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하는 기능을 실행하는 것을 특징으로 한다. A computer program stored in a medium for executing a process of distributing and controlling a software defined network in two or more servers according to an embodiment of the present invention includes a first controller instance installed in a second server in which a second controller instance is installed Receiving a flow table change from a first server; Storing the flow table change in the second server and transmitting an acknowledgment message for the flow table change to the first server; And a function of deleting a flow table change item of the first server received before the checkpoint time when the second server receives the checkpoint time point information from the first server.

본 발명에 따르면, SDN의 분산 컨트롤러를 구현하는 복수의 서버(인스턴스)들 사이에 저장소 변경 사항 및 네트워크 업데이트를 동기화할 수 있는 효과가 있다. 나아가 본 발명에 따르면 인스턴스 중 어느 하나에 장애가 발생해도 네트워크와 컨트롤러의 정합성을 유지할 수 있어, 소프트웨어 정의 네트워크를 안정적으로 제어할 수 있는 효과가 있다. According to the present invention, it is possible to synchronize storage changes and network updates among a plurality of servers (instances) implementing a distributed controller of the SDN. Further, according to the present invention, even if any one of the instances fails, the consistency of the network and the controller can be maintained, and the software defined network can be stably controlled.

도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면
도 2은 소프트웨어 정의 네트워크의 분산 컨트롤러의 동작 방식을 설명하기 위한 도면
도 3는 컨트롤러 서버(인스턴스)의 장애시 발생될 수 있는 문제점을 설명하기 위한 도면
도 4는 본원발명의 실시예를 따라 분산 컨트롤러를 운영하는 구체적인 방법을 설명하기 위한 순서도
도 5은 본원발명의 다른 실시예를 따라 분산 컨트롤러를 운용하는 예시를 설명하기 위한 도면
1 is a diagram for explaining the configuration of a software defined network;
2 is a diagram for explaining an operation method of a distributed controller of a software defined network;
3 is a diagram for explaining a problem that may occur when a controller server (instance) fails;
4 is a flowchart for explaining a specific method of operating a distributed controller according to an embodiment of the present invention
5 is a view for explaining an example of operating a distributed controller according to another embodiment of the present invention

본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. It is to be understood that the present invention is not limited to the description of the embodiments described below, and that various modifications may be made without departing from the technical 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.

한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. In the drawings, the same components are denoted by the same reference numerals. And in the accompanying drawings, some of the elements may be exaggerated, omitted or schematically illustrated. It is intended to clearly illustrate the gist of the present invention by omitting unnecessary explanations not related to the gist of the present invention. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다. 1 is a diagram for explaining a configuration of a software defined network.

도 1에 도시된 바와 같이, 소프트웨어 정의 네트워크는 SDN 제어 장치 100, 오픈플로우 스위치 200, 단말 300를 포함할 수 있다. 오픈플로우 스위치 200 및 단말 300를 포함하여 노드(Node)라고 지칭할 수 있으며 링크는 2개의 노드 사이의 연결을 의미할 수 있다. As shown in FIG. 1, a software defined network may include an SDN control device 100, an open flow switch 200, and a terminal 300. An open flow switch 200 and a terminal 300, and a link may refer to a connection between two nodes.

제어 장치 100은 스위치 200에 명령을 하고, 스위치 200는 그 명령에 따라 패킷을 목적지로 전송하거나 수정, 폐기하는 등의 처리를 할 수 있다. 단말 300는 소프트웨어 정의 네트워크를 통해 다른 단말에 보내기 위한 패킷을 생성하여 네트워크 인터페이스의 포트를 통해 스위치 200로 패킷을 전송할 수 있다. The control device 100 commands the switch 200, and the switch 200 can perform processing such as transmitting, modifying, or discarding a packet to a destination according to the command. The terminal 300 may generate a packet for transmission to another terminal through a software defined network and transmit the packet to the switch 200 through a port of the network interface.

오픈플로우 스위치 200는 단말 300 또는 다른 스위치 200로부터 패킷을 수신하면, 플로우 테이블에 기초하여 패킷을 스위칭할 수 있다. 이때, 플로우 테이블에 해당 패킷 스위칭을 위한 플로우 엔트리가 없다면, 네트워크 스위치 200는 제어 장치 100에 플로우 룰 요청 메시지를 전송할 수 있다. 본 명세서에서 오픈플로우 스위치 200는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해되어야 한다. When the open flow switch 200 receives a packet from the terminal 300 or another switch 200, it can switch packets based on the flow table. At this time, if there is no flow entry for packet switching in the flow table, the network switch 200 can transmit a flow rule request message to the control device 100. [ In the present specification, the open flow switch 200 should be understood as a concept including a switch supporting only an open flow protocol, a virtual switch supporting an open flow protocol, and a general L2 switch supporting an open flow protocol.

한편, 도 1의 SDN은 구현에 따라 제어 장치 100를 복수의 서버로 구성할 수 있으며, 이를 분산 컨트롤러라고 한다. 네트워크를 하나의 컨트롤러 서버로 제어하는 경우, 서버에 장애가 발생하면 네트워크 운영이 중지될 확률이 높기 때문에, 두 대 이상의 서버에 컨트롤러를 설치하여 서버에서 발생할 수 있는 장애에 대한 위험을 분산시키는 것이다. Meanwhile, the SDN of FIG. 1 can be configured as a plurality of servers according to the implementation, and is called a distributed controller. If the network is controlled by a single controller server, it is highly likely that if the server fails, the network operation is stopped, so the controller is installed on more than one server to distribute the risk to the server.

분산 컨트롤러 환경에서는 두 대 이상의 서버에 컨트롤러가 설치되고, 컨트롤러 서버들이 협력하면서 네트워크를 제어할 수 있다. 분산 컨트롤러 환경에서 서버에 설치된 컨트롤러 각각을 컨트롤러 인스턴스라고 한다. In a distributed controller environment, controllers are installed on two or more servers, and controller servers can cooperate to control the network. In a distributed controller environment, each controller installed on the server is called a controller instance.

도 2는 소프트웨어 정의 네트워크의 분산 컨트롤러의 동작 방식을 설명하기 위한 도면이다. 본 발명의 실시예를 따르는 SDN은 도 2에 도시된 바와 같이 컨트롤러 인스턴스를 각각 구현하는 하나 이상의 컨트롤러 서버 (210, 220) 및 스위치 (230 내지 260)를 포함하여 구성할 수 있다. 2 is a diagram for explaining a method of operating a distributed controller of a software defined network. The SDN according to an embodiment of the present invention may include one or more controller servers 210 and 220 and switches 230 to 260, respectively, which implement controller instances as shown in FIG.

도 2에 도시된 바와 같이, 분산 컨트롤러 환경에서 컨트롤러 인스턴스 (210, 220) 각각은 저장소 (repository)를 가질 수 있으며, 저장소는 컨트롤러 어플리케이션의 상태와 어플리케이션의 운영에 필요한 정보, 컨트롤러가 스위치에 전송한 명령, 스위치의 상태 등을 포함하는 다양한 정보를 저장할 수 있다.2, each of the controller instances 210 and 220 in the distributed controller environment may have a repository, which includes information about the status of the controller application and the operation of the application, Command, state of the switch, and the like.

저장소는 컨트롤러 소프트웨어 내부에 포함되어 있을 수 있으며, 분산 데이터베이스나 파일 시스템과 같은 다른 소프트웨어 제품을 이용하여 구현할 수도 있다. The repository may be contained within the controller software, or it may be implemented using other software products, such as a distributed database or file system.

도 2의 SDN에서, 제 1 컨트롤러 인스턴스 210은 스위치 230, 240을 제어하며, 제 2 컨트롤러 인스턴스 220은 스위치 250 및 260을 제어하고 있다. 이 경우, 제어하고 있는 스위치에 플로우 룰 변경 사항이 발생하면, 컨트롤러 인스턴스는 플로우 룰 변경 사항을 스위치에 전송하고 난 후 저장소에 기록하거나, 또는 플로우 룰 변경 사항을 저장소에 기록하고 난 후 스위치에 전송하는 방식으로 동작할 수 있다. In the SDN of FIG. 2, the first controller instance 210 controls switches 230 and 240, and the second controller instance 220 controls switches 250 and 260. In this case, when a flow rule change occurs on the controlling switch, the controller instance sends the flow rule changes to the switch and then writes them to the storage, or writes the flow rule changes to the storage and sends them to the switch Lt; / RTI >

이러한 분산 컨트롤러 환경에서는 어느 하나의 컨트롤러에 장애가 발생해도, 다른 컨트롤러가 장애 발생 컨트롤러의 작업을 복구할 수 있어야 전체 네트워크 운용의 안정성을 보장할 수 있다. 분산 컨트롤러는 컨트롤러 인스턴스에서 발생할 수 있는 장애에 대한 위험을 분산시키는 목적도 가지기 때문이다. In such a distributed controller environment, if one of the controllers fails, another controller can recover the operation of the failed controller to ensure the stability of the entire network operation. Distributed controllers also have the purpose of distributing the risk of failures that can occur in the controller instance.

예를 들어 도 2의 SDN 구성에서 제 1 컨트롤러 인스턴스 210가 스위치 230에 플로우룰 변경 사항을 적용하는 과정에서 210의 서버에 장애가 발생하면, 제 2 컨트롤러 인스턴스 220가 210의 작업을 승계할 수 있어야 할 것이다. 즉, 210에 장애가 발생해도 220이 장애 발생 서버의 어플리케이션이 처리하던 230에 대한 작업을 승계하여 처리할 수 있어야 소프트웨어 정의 네트워크의 안정적인 운용이 가능하다. For example, if the first controller instance 210 in the SDN configuration of FIG. 2 applies a flow rule change to the switch 230, and the server 210 fails, then the second controller instance 220 should be able to inherit the job of 210 will be. In other words, if a failure occurs in 210, 220 can succeed in the operation of 230 that the application of the failed server has processed, so that the software defined network can be operated stably.

즉, 분산 컨트롤러 환경에서는 어느 하나의 컨트롤러 서버에 장애가 발생해도, 다른 컨트롤러 서버가 발생한 장애를 복구하도록 설계할 필요가 있다. 그러나 현재는 분산 컨트롤러의 복구 기술의 매우 부족하여 안정적인 SDN 운영에 걸림돌이 되고 있다. That is, in a distributed controller environment, even if one controller server fails, it is necessary to design the other controller server to recover from the failure that occurs. However, at present, there is a very shortage of the recovery technology of the distributed controller, which is a stumbling block to stable SDN operation.

도 3은 종래의 컨트롤러 서버(인스턴스)의 장애시 발생될 수 있는 문제점을 설명하기 위한 도면이다. FIG. 3 is a diagram for explaining a problem that may occur when a controller server (instance) in the related art fails.

도 3의 A는 제 1 컨트롤러 인스턴스가 스위치에게 변경 사항을 전송하고 난 후, 저장소에 변경 사항을 기록하면서 제 2 컨트롤러 인스턴스에게 변경 사항을 전송하는 방식으로 동작하는 경우이다. FIG. 3A illustrates a case where the first controller instance transmits a change to the switch, and then writes the change to the storage, and transmits the change to the second controller instance.

이 경우, 스위치에게 변경 사항을 전송한 직후 제 1 컨트롤러 서버에서 장애가 발생하면, 스위치는 업데이트 되었으나, 해당 스위치를 제어해야 하는 제 2 컨트롤러 인스턴스가 업데이트 내용을 인식할 수 없는 문제가 발생한다. 즉, 스위치의 업데이트와 컨트롤러의 저장내용이 불일치하게 된다. In this case, if a failure occurs in the first controller server immediately after the change is transmitted to the switch, a problem arises that the switch is updated but the second controller instance, which needs to control the switch, can not recognize the update contents. That is, the update of the switch and the stored contents of the controller become inconsistent.

도 3의 B는 제 1 컨트롤러 인스턴스가 저장소에 변경 사항을 기록하면서 제 2 컨트롤러 인스턴스에게 변경 사항을 전송하고 난 후, 스위치에게 변경 사항을 전송하는 방식으로 동작하는 경우이다. FIG. 3B illustrates a case where the first controller instance transmits the change to the second controller instance while recording the change in the storage, and then operates in such a manner that the change is transmitted to the switch.

이 경우, 제 2 컨트롤러에게 변경 사항을 전송한 직후, 제 1 컨트롤러 서버에서 장애가 발생하면, 스위치는 업데이트 되어 있지 않으나, 제 1 컨트롤러 인스턴스의 저장소에는 업데이트 내용이 기록되어 있으며 제 2 컨트롤러 인스턴스도 업데이트 내용으로 스위치의 상태를 인식하게 된다. 즉, A, B 경우 모두 스위치의 업데이트와 컨트롤러의 저장내용이 불일치하게 되는 결과가 발생될 수 있다. In this case, if a failure occurs in the first controller server immediately after the change is transmitted to the second controller, the switch is not updated, but the contents of the update are recorded in the storage of the first controller instance, The state of the switch is recognized. That is, in the case of A and B, the update of the switch and the contents stored in the controller may be inconsistent.

이와 같이 종래 방식을 따르면 장애 발생시 네트워크와 컨트롤러의 정합성을 담보할 수 없는 문제가 발생한다. 오픈플로우 프로토콜은 스위치의 업데이트와 컨트롤러 인스턴스의 전송을 완전히 동기화하는 것을 지원하지 않는다. 따라서 이와 같은 현상이 빈번하게 발생할 수 있으며, 장애 복구시 어플리케이션의 정합성이 맞지 않거나 버그가 발생하기 쉽다. According to the conventional method, there arises a problem that the consistency between the network and the controller can not be guaranteed in the event of a failure. The open flow protocol does not support fully synchronizing the update of the switch with the transmission of the controller instance. Therefore, such a phenomenon may occur frequently, and the application is inconsistent or bug-prone when a failure occurs.

종래의 대부분의 상용 제품에서는 장애가 발생하면 스위치에 있는 모든 플로우 룰과 컨트롤러 인스턴스의 저장소를 삭제하고 초기화하는 방식으로 장애를 복구한다. 장애 직전의 저장소와 현재 스위치의 상태를 완전히 파악하고 동기화할 수 없기 때문에, 컨트롤러 서버에 장애가 발생하면 스위치와 분산 컨트롤러의 저장소를 완전히 초기화하는 것이다. In most conventional commercial products, if a failure occurs, the failure is recovered by deleting and initializing all flow rules and controller instance storage on the switch. Because the state of the store just before the failure and the state of the current switch can not be fully identified and synchronized, if the controller server fails, the switch and the storage of the distributed controller are fully initialized.

그러나 위와 같이 초기화를 통한 장애 복구 방식은 필연적으로 네트워크를 정상 상태로 회복시키는데 많은 시간과 리소스가 소요될 수 밖에 없다. 나아가 컨트롤러의 어플리케이션을 개발하는 경우에도, 컨트롤러 인스턴스의 장애로 문제가 생기는 경우를 고려해야 하기 때문에 매우 비효율적인 방식이라고 할 수 있다. However, as mentioned above, the failure recovery method through the initialization inevitably takes a lot of time and resources to restore the network to a normal state. Furthermore, even when developing an application for a controller, it is very inefficient because it is necessary to consider a case where a failure occurs in the controller instance.

따라서 본 발명에서는 SDN 분산 컨트롤러 환경에서 스위치의 업데이트내용과 컨트롤러 인스턴스의 저장소 내용을 동기화할 수 있는 방법을 제안하고자 한다. 이를 통해 어느 하나의 컨트롤러 인스턴스에 장애가 발생해도, 스위치와 컨트롤러 사이의 정합성을 담보할 수 있도록 하여 분산 컨트롤러가 소프트웨어 정의 네트워크를 안정적으로 제어할 수 있도록 하기 위해서이다. Accordingly, the present invention proposes a method of synchronizing update contents of a switch and storage contents of a controller instance in an SDN distributed controller environment. This is to enable the distributed controller to stably control the software defined network by ensuring consistency between the switch and the controller even if one controller instance fails.

보다 구체적으로, 본 발명에 따르면 분산 컨트롤러의 임의의 컨트롤러 인스턴스 (제 1 컨트롤러)는 저장소 변경 사항 또는 임의의 스위치에 대해 링크 업/ 다운 등의 플로우룰 변경 사항이 발생한 경우, 변경 내용을 다른 컨트롤러 인스턴스(제 2 컨트롤러)에게 전송하고, 다른 컨트롤러 인스턴스로부터 수신 확인 메시지를 받으면, 스위치를 업데이트하도록 구현된다. More specifically, according to the present invention, any controller instance (primary controller) of the distributed controller can change the flow of a rule change, such as link up / down, to a storage change or any switch, (Second controller), and when receiving an acknowledgment message from another controller instance, the switch is updated.

나아가 본 발명에 따르면 제 1 컨트롤러에게 장애가 발생하면, 제 2 컨트롤러가 수신한 변경 사항을 바탕으로 제 1 컨트롤러의 저장소 내용을 복구하고, 스위치의 업데이트를 진행할 수 있다. Further, according to the present invention, when a failure occurs in the first controller, the contents of the first controller can be restored based on the changes received by the second controller, and the switch can be updated.

본 발명에 따르는 분산 컨트롤러의 운용 방법은 첨부된 도 4에 대한 설명과 함께 아래에서 구체적으로 설명된다. A method of operating the distributed controller according to the present invention will be described in detail below with reference to FIG. 4 attached hereto.

도 4은 본원발명의 실시예를 따라 분산 컨트롤러를 운용하는 예시를 설명하기 위한 순서도이다. 도 4의 예에서 SDN 분산 컨트롤러는 제 1 컨트롤러 및 제 2 컨트롤러를 포함하여 구성되며, 스위치는 정상 상황에서 제 1 컨트롤러의 제어를 받는다. 4 is a flowchart for explaining an example of operating a distributed controller according to an embodiment of the present invention. In the example of FIG. 4, the SDN distribution controller includes a first controller and a second controller, and the switch is under the control of the first controller in a normal situation.

한편, 도 4는 제 1 컨트롤러의 제어를 받는 하나의 스위치를 도시하고 있으나, 이는 설명의 편의를 위한 것이며 본 발명은 이에 제한되지 않는다. 즉, 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크는 각각의 컨트롤러 인스턴스가 복수의 스위치를 제어할 수 있으며, 도 4에 도시된 스위치는 정상 상황에서 제 1 컨트롤러의 제어를 받는 임의의 스위치를 의미한다. Meanwhile, FIG. 4 shows one switch under the control of the first controller, but this is for convenience of description, and the present invention is not limited thereto. That is, in the software defined network according to the embodiment of the present invention, each controller instance can control a plurality of switches, and the switch shown in Fig. 4 means any switch under the control of the first controller in a normal situation .

도 4의 단계 410에서 제 1 컨트롤러가 제어하는 스위치에 변경 사항이 발생한 경우, 단계 412에서 제 1 컨트롤러는 플로우룰 변경 사항을 멱등성을 가지도록 변환하여 제 2 컨트롤러에게 전송할 수 있다. If a change occurs in the switch controlled by the first controller in step 410 of FIG. 4, the first controller may convert the flow rule change to have a power-equality in step 412 and transmit it to the second controller.

플로우룰 변경 사항을 멱등성을 가지도록 변환하여 전송하는 이유는, 만약 제 1 컨트롤러에 장애가 발생하여 제 2 컨트롤러가 장애를 복구하는 경우, 제 1 컨트롤러가 플로우룰 변경 사항을 스위치에 적용했는지 여부와 무관하게 제 2 컨트롤러도 플로우룰 변경 사항을 스위치에게 적용하도록 하기 위해서이다. The reason for converting the flow rule changes to have power equality is that if the first controller fails and the second controller repairs the failure, the first controller determines whether flow rule changes have been applied to the switch Regardless of whether the second controller also applies flow-rule changes to the switch.

오픈플로우 프로토콜에 따르면 플로우룰 변경 (flow mod) 명령은 아래의 표 1과 같은 형태로 구분될 수 있다. According to the open flow protocol, the flow mode command can be classified as shown in Table 1 below.

CommandCommand value 설명Explanation OFPFC_ADDOFPFC_ADD 00 새로운 플로우룰을 추가Add new flow rules OFPFC_MODIFYOFPFC_MODIFY 1One 매칭되는 플로우룰 모두 수정Modify all matched flow rules OFPFC_MODIFY_STRICTOFPFC_MODIFY_STRICT 22 매치와 우선순위 (priority)가 일치하는 것만 수정 Match only match with priority (priority) OFPFC_DELETEOFPFC_DELETE 33 매칭된 플로우룰을 모두 삭제Delete all matched flow rules OFPFC_DELETE_STRICTOFPFC_DELETE_STRICT 44 매치와 우선순위가 일치하는 것만 삭제Only remove matching matches and priorities

표 1에서 OFPFC_MODIFY 명령 및 OFPFC_MODIFY_STRICT 명령을 제외하고는 플로우룰 변경 (flow mod) 명령은 모두 멱등성을 가진다. 플로우 테이블에 이미 존재하는 플로우룰을 다시 추가하거나, 존재하지 않는 플로우룰을 삭제하는 경우, 플로우 테이블에는 아무런 변화가 일어나지 않기 때문이다. In Table 1, except for the OFPFC_MODIFY and OFPFC_MODIFY_STRICT commands, all flow rule commands have a power equality. This is because no change occurs in the flow table when the flow rule already existing in the flow table is added again or when a non-existing flow rule is deleted.

따라서 본 발명에 따르면 제 1 컨트롤러는 모든 룰의 OFPFC_MODIFY 또는 OFPFC_MODIFY_STRICT 를 멱등성을 가지도록 OFPFC_ADD, OFPFC_DELETE를 이용한 변경으로 변환하여 제 2 컨트롤러에게 전송할 수 있다. Therefore, according to the present invention, the first controller can convert OFPFC_MODIFY or OFPFC_MODIFY_STRICT of all the rules into a change using OFPFC_ADD and OFPFC_DELETE so as to have a power equality, and transmit the change to the second controller.

보다 구체적으로, 특정 플로우룰을 다른 플로우룰로 수정하는 과정은, 해당 플로우룰을 삭제한 후 다른 플로우룰을 추가하는 과정과 효과가 동일하다. 앞서 설명한 바와 같이 플로우룰 삭제 및 추가 명령은 멱등성을 가지기 때문에, 플로우룰 삭제와 추가로 변경 사항을 나타내면 상기 변경 사항은 멱등성이 보장된다. More specifically, the process of modifying a specific flow rule to another flow rule has the same effect as the process of adding another flow rule after deleting the flow rule. As described above, since the flow rule deletion and addition commands have the exponentiation, if the flow rule deletion and additionally indicate the change, the change is guaranteed to be equal to the power.

단계 414에서 변경 내용을 수신한 제 2 컨트롤러는 이를 기록하고, 단계 416에서 수신확인 메시지를 전송할 수 있다. 보다 구체적으로 제 2 컨트롤러는 저장소 변경 사항은 저장소에 적용하고, 스위치 변경 사항은 메모리 또는 디스크 등에 기록할 수 있다. The second controller that received the change in step 414 may record it and may transmit an acknowledgment message in step 416. More specifically, the second controller can apply the storage changes to the storage and write the switch changes to memory, disk, and the like.

단계 418에서 제 1 컨트롤러는 수신확인 메시지를 확인하고 나서 스위치에 변경 사항을 적용할 수 있다. 즉, 본원발명에 따르면 제 2 컨트롤러가 변경 내용을 기록하고 나서 제 1 컨트롤러가 변경 내용을 반영하게 되는데, 반대의 순서로 하게 되면 변경 사항이 유실되지 않음을 보장할 수 없기 때문이다. In step 418, the first controller can acknowledge the acknowledgment message and then apply the change to the switch. That is, according to the present invention, the first controller reflects the changed contents after the second controller records the changed contents, and it is impossible to guarantee that the changed contents are not lost if the opposite order is set.

한편, 단계 420 내지 단계 425는 장애 발생시 복구 대상인 변경 사항의 양을 줄일 수 있도록 체크포인트 시점을 생성하는 과정이다. 본원발명에 따르면 컨트롤러 인스턴스 각각은 체크포인트 시점 이전에 기록된 변경 사항들은 이미 네트워크에 반영된 것으로 전제하고 저장소에서 해제하거나 기록을 삭제하여 복구 대상을 최소화할 수 있다. In steps 420 to 425, a checkpoint time point is generated to reduce the amount of changes to be restored when a failure occurs. According to the present invention, each of the controller instances can minimize the recovery object by assuming that the changes recorded before the checkpoint time have already been reflected in the network, and release the record or delete the record.

보다 구체적으로 단계 420에서 제 1 컨트롤러는 자신이 제어하는 하나 이상의 스위치에게 배리어 요청 메시지 (Barrier, OFPT_BARRIER_REQUEST message)를 전송하고, 단계 422에서 스위치는 배리어 응답 메시지 (OFPT_BARRIER_REPLY message) 를 제 1 컨트롤러에게 전송할 수 있다. More specifically, in step 420, the first controller sends a barrier request message (Barrier, OFPT_BARRIER_REQUEST message) to one or more switches it controls, and in step 422 the switch can send a barrier response message (OFPT_BARRIER_REPLY message) to the first controller have.

프로토콜의 특성상 배리어 요청이 전송되어 응답을 받으면 배리어 이전의 명령들은 스위치에 반영이 완료된 상태이기 때문에, 본 발명은 배리어의 전송시점을 체크포인트 시점으로 설정한다. When the barrier request is transmitted and the response is received due to the nature of the protocol, the commands before the barrier are reflected in the switch, and therefore, the present invention sets the transmission time point of the barrier to the checkpoint time point.

따라서 단계 423에서 제 1 컨트롤러는 제 2 컨트롤러에게 체크포인트 정보로 배리어 요청 메시지 전송 시점에 대한 정보를 제공하고, 단계 425에서 제 2 컨트롤러는 체크포인트 시점 이전에 수신한 기록 1을 삭제할 수 있다. 한편, 본 발명의 다른 실시예를 따르면, 단계 425에서 제 2 컨트롤러는 체크 포인트 시점 이전에 수신한 기록 1의 저장이 유지될 필요가 없음을 자신의 저장소에 기록하거나, 또는 상기 기록 1의 저장이 유지할 필요가 없음을 인식할 수 있다. Accordingly, in step 423, the first controller provides the second controller with information on the time of transmitting the barrier request message as checkpoint information, and in step 425, the second controller deletes the record 1 received prior to the checkpoint time. According to another embodiment of the present invention, in step 425, the second controller records in its own storage that the storage of the received record 1 does not need to be maintained before the checkpoint time, or the storage of the record 1 It can be recognized that there is no need to maintain.

본원발명에 따르면 이와 같은 체크 포인트 정보는 미리 설정된 주기로 또는 가장 최근의 체크포인트 이후로 발생한 변경 사항의 양이 미리 설정된 범위를 초과하는 등 임의의 조건을 만족하는 경우 전송될 수 있다. According to the present invention, such checkpoint information can be transmitted when it satisfies any condition such as a predetermined period or the amount of change occurring after the most recent checkpoint exceeds a predetermined range.

단계 430 내지 438는 다른 변경 사항 2가 발생한 경우, 단계 410 내지 418과 동일한 과정이 반복되는 구간이다. Steps 430 to 438 are the same as the steps 410 to 418 when another change 2 occurs.

보다 구체적으로, 단계 430에서 제 1 컨트롤러가 제어하는 스위치에 제 2 변경 사항이 발생한 경우, 단계 432에서 제 1 컨트롤러는 플로우룰 변경 사항을 멱등성을 가지도록 변환하여 제 2 컨트롤러에게 전송할 수 있다. More specifically, if a second change occurs in the switch controlled by the first controller in step 430, the first controller may convert the flow rule change to have a power-equality and transmit the change to the second controller in step 432.

단계 434에서 제 2 컨트롤러는 이를 기록하고, 제 1 컨트롤러는 단계 436에서 수신확인 메시지를 확인하면 단계 438에서 스위치에게 변경 사항 2를 적용할 수 있다. The second controller records it in step 434, and if the first controller confirms the acknowledgment message in step 436, it can apply change 2 to the switch in step 438.

한편, 단계 440에서 제 1 컨트롤러가 제어하는 스위치에 제 3 변경 사항이 발생한 경우, 단계 442에서 제 1 컨트롤러는 마찬가지로 멱등성을 가지도록 변환하여 제 2 컨트롤러에게 전송할 수 있다. 단계 444에서 제 2 컨트롤러는 이를 기록하고, 단계 445에서 제 1 컨트롤러에게 수신확인 메시지를 전송할 수 있다. On the other hand, if a third change occurs in the switch controlled by the first controller in step 440, the first controller likewise can convert the third change to have a power equality in step 442 and transmit it to the second controller. In step 444, the second controller records it, and in step 445, it can transmit an acknowledgment message to the first controller.

이때 단계 446에서 제 1 컨트롤러에게 장애가 발생한 경우를 고려할 수있다. 변경 사항 3이 아직 스위치에게 적용되지 않은 상황에서 제 1 컨트롤러에게 장애가 생기면 제 1, 2 컨트롤러의 기록내용과 스위치의 업데이트 현황에 차이가 발생된다. 그러나 본원발명에 따르면 멱등성을 가지는 변경 사항에 대한 기록이 제 2 컨트롤러에 존재하기 때문에, 제 2 컨트롤러는 변경 사항을 스위치에게 적용하여 장애를 쉽게 복구할 수 있다. At this time, it is possible to consider a case where a failure occurs in the first controller in step 446. If change 3 is not yet applied to the switch, if the first controller fails, the contents of the first and second controllers are different from the update status of the switch. However, according to the present invention, because the second controller has a record of the changes having a power equality, the second controller can easily recover the fault by applying the change to the switch.

예를 들어, 복구작업을 진행할 컨트롤러로 제 2 컨트롤러가 선정되면, 제 2 컨트롤러는 장애가 발생한 제 1 컨트롤러로부터 수신한 변경 사항을 스위치에 적용할 수 있다. 즉, 단계 446에서 제 1 컨트롤러에 장애가 발생하면, 체크포인트 시점 이후인 기록 2, 3을 제 2 컨트롤러가 스위치에게 반영하는 방식으로 장애를 복구한다. For example, if a second controller is selected as the controller to proceed with the recovery operation, the second controller can apply the change received from the failed first controller to the switch. That is, if a fault occurs in the first controller in step 446, the fault is recovered in such a manner that the second controller reflects the records 2 and 3 after the check point time to the switch.

단계 450에서 제 2 컨트롤러는 기록 2에 따라 변경 사항 2를 스위치에게 적용할 수 있다. 이는 이미 제 1 컨트롤러에 의해 스위치에게 적용된 상태이지만, 제 2 컨트롤러에 저장된 변경 사항 2는 멱등성을 가지기 때문에 한번 더 적용해도 올바른 결과가 보장된다. At step 450, the second controller may apply change 2 to the switch according to record 2. This is already applied to the switch by the first controller, but since the change 2 stored in the second controller has a power equality, the correct result is assured even once again.

이후 단계 455에서 제 2 컨트롤러는 기록 3에 따라 변경 사항 3을 스위치에게 적용할 수 있다. 이는 제 1 컨트롤러가 스위치에게 적용되기 전 장애로 인하여 완료되지 못한 사항이므로, 제 2 컨트롤러가 수행하여 네트워크와 컨트롤러의 정합성을 유지할 수 있다. Thereafter, in step 455, the second controller may apply change 3 to the switch according to record 3. This is an issue that the first controller has not been completed due to a failure before being applied to the switch, so that the second controller can maintain consistency between the network and the controller.

한편, 본원발명의 다른 실시예를 따르면, 미리 설정된 조건을 만족하는 변경 사항만 컨트롤러 인스턴스 사이에 송수신되도록 설정할 수 있다. 각각의 컨트롤러 인스턴스가 모든 변경 내용을 다른 컨트롤러 인스턴스에게 전송하는 것이 전체 네트워크의 성능을 저하시킬 수 있기 때문이다. According to another embodiment of the present invention, only the changes satisfying predetermined conditions can be set to be transmitted / received between the controller instances. This is because each controller instance sending all changes to another controller instance can degrade the performance of the entire network.

예를 들어, 네트워크 운영자는 장애 발생시 복구할 플로우룰의 우선 순위 등을 고려하여 복구 대상 플로우룰의 조건을 설정하고, 조건을 만족하는 변경 사항만 다른 컨트롤러로 전송하도록 설정할 수 있다. For example, the network operator can set the condition of the recovery target flow rule in consideration of the priority of the flow rule to be restored in the event of a failure, and set only the change satisfying the condition to be transmitted to another controller.

상기 실시예를 따르면 임의의 컨트롤러 인스턴스에서 장애가 발생하면, 미리 설정된 조건의 플로우룰은 반드시 복구되는 것이 보장되지만, 그 이외의 플로우룰의 복구는 보장하지 않는 것으로 분산 컨트롤러의 기능을 제공할 수 있다. According to the above embodiment, when a fault occurs in an arbitrary controller instance, the flow rule of a predetermined condition is surely restored, but the restoration of other flow rules is not guaranteed, so that the function of the distributed controller can be provided.

도 5은 본원발명의 다른 실시예에 따라 분산 컨트롤러를 운용하는 예시를 설명하기 위한 도면이다. 5 is a view for explaining an example of operating a distributed controller according to another embodiment of the present invention.

본원발명의 다른 실시예를 따르면 도 5에 도시된 바와 같이, 제 1 컨트롤러 210와 제 2 컨트롤러 220 사이에 공유 저장소 500을 운용할 수 있다. 매번 스위치를 변경할 때마다 다른 컨트롤러 인스턴스에게 변경 사항을 전송하고 수신확인을 하는 것은 전체 네트워크 성능에 부담이 될 수 있기 때문에, 공유 저장소 500을 운용하는 것이다. According to another embodiment of the present invention, as shown in FIG. 5, a shared storage 500 may be operated between the first controller 210 and the second controller 220. Since each time a switch is changed, sending changes to another controller instance and acknowledging it can be a burden on the overall network performance, it is running shared storage 500.

상기 실시예를 따르면 컨트롤러 인스턴스간 매번 동기화를 할 필요가 없어서, 컨트롤러 인스턴스마다 다른 컨트롤러 인스턴스의 변경 사항을 메모리나 디스크에 기록하는 비용이 감소되고 전체 네트워크의 성능이 향상되는 효과가 있다. According to the above-described embodiment, there is no need to synchronize the controller instances each time, so that the cost of recording changes in controller instances in different controller instances to a memory or disk is reduced, and the performance of the entire network is improved.

도 5의 예에서 임의의 컨트롤러 인스턴스는 공유 저장소 500 (네트워크 디스크 혹은 데이터베이스 서버)에 스위치 변경 사항을 저장하고 난 후, 스위치에 변경 사항을 적용할 수 있다. 나아가 미리 설정된 주기에 따라 저장소 변경 사항을 누적하여 공유저장소에 저장할 수도 있다.In the example of FIG. 5, any controller instance may store the switch changes in the shared storage 500 (network disk or database server) and then apply the changes to the switch. Furthermore, storage changes can be cumulatively stored in a shared repository according to a predetermined cycle.

이후 임의의 컨트롤러 인스턴스에 장애가 발생하면 복구 컨트롤러는 공유 저장소로부터 장애 컨트롤러가 기록한 변경 사항을 읽어와서 도 4와 같은 과정으로 복구를 진행할 수 있다. If any controller instance fails in the future, the recovery controller reads the changes recorded by the fault controller from the shared storage and proceeds to the recovery process as shown in FIG. 4.

도 5의 예에서 210이 230 또는/및 240에게 플로우룰 변경 사항을 적용하고자 하는 경우, 210은 변경 사항을 멱등성을 가지도록 변환하여 500에 저장할 수 있다. 나아가 210은 미리 설정된 주기로 누적된 저장소 변경 사항을 500에 저장할 수도 있다. In the example of FIG. 5, if 210 wishes to apply a flow rule change to 230 or / and 240, 210 may convert the change to have a power of equality and store it in 500. Further, 210 may store accumulated repository changes in 500 at preset intervals.

이후 210에 장애가 발생하면, 220은 500에서 210이 기록한 변경 사항을 참고하여 230 또는/및 240에게 플로우룰 변경 사항을 적용하는 등 복구를 진행할 수 있다. If a failure occurs at 210, then 220 can proceed to recovery by applying flow rule changes to 230 and / or 240 by referring to the changes recorded at 500 through 210.

본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에게 자명한 것이다.The embodiments of the present invention disclosed in the present specification and drawings are intended to be illustrative only and not intended to limit the scope of the present invention. It is to be understood by those skilled in the art that other modifications based on the technical idea of the present invention are possible in addition to the embodiments disclosed herein.

100 : SDN 제어 장치
200 : 오픈플로우 스위치
300 : 단말
100: SDN control device
200: Open flow switch
300: terminal

Claims (11)

둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법에 있어서,
제 1 컨트롤러 인스턴스를 설치한 제 1 서버가, 플로우 테이블 변경 사항을 제 2 컨트롤러 인스턴스를 설치한 제 2 서버에게 전송하는 단계;
상기 제 1 서버가, 상기 제 2서버로부터 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 하는 제어 방법.
A method for distributed control of a software defined network by two or more servers,
The first server installing the first controller instance sends a flow table change to the second server that installed the second controller instance;
And when the first server receives the acknowledgment message for the flow table change from the second server, transmitting the flow table change to the corresponding switch.
제 1 항에 있어서,
상기 제 1 서버가, 미리 설정된 주기 또는 조건에 따라 배리어 요청 메시지 (OFPT_BARRIER_REQUEST message)를 상기 스위치에게 전송하는 단계; 및
상기 제 1 서버가 상기 스위치로부터 배리어 응답 메시지 (OFPT_BARRIER_REPLY message)를 수신하면, 체크포인트 시점 정보로 상기 배리어 요청 메시지의 전송 시점에 대한 정보를 상기 제 2 서버에게 전송하는 단계를 포함하는 것을 특징으로 하는 제어 방법.
The method according to claim 1,
The first server transmitting a barrier request message (OFPT_BARRIER_REQUEST message) to the switch according to a predetermined period or condition; And
When the first server receives a barrier response message (OFPT_BARRIER_REPLY message) from the switch, transmitting information on a transmission time point of the barrier request message to the second server with checkpoint time point information Control method.
제 1항에 있어서, 상기 플로우 테이블 변경 사항을 전송하는 단계는,
상기 제 1 서버가, 상기 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하는 단계; 및
상기 제 1서버가 변환한 플로우 테이블 변경 사항을 상기 제 2 서버에게 전송하는 단계를 포함하는 것을 특징으로 하는 제어 방법.
2. The method of claim 1, wherein the step of transmitting the flow table change comprises:
The first server converting the flow table changes to have a power equality; And
And transmitting the flow table change information converted by the first server to the second server.
제 3항에 있어서, 상기 변환하는 단계는,
상기 제 1 서버가, 플로우 테이블 변경 사항 중 미리 설정된 조건을 만족하는 것만 멱등성을 가지도록 변환하는 단계인 것을 특징으로 하는 제어 방법.
4. The method of claim 3,
Wherein the first server is a step of converting only a flow table change satisfying a preset condition so as to have a power equality.
둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법에 있어서,
제 2 컨트롤러 인스턴스를 설치한 제 2 서버가, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버로부터 플로우 테이블 변경 사항을 수신하는 단계;
상기 제 2 서버가 상기 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하는 단계;
상기 제 2 서버가, 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하는 단계를 포함하는 것을 특징으로 하는 제어 방법.
A method for distributed control of a software defined network by two or more servers,
Receiving a flow table change from a first server that installed the first controller instance, the second server having installed the second controller instance;
The second server storing the flow table changes and sending an acknowledgment message for the flow table changes to the first server;
And when the second server receives the checkpoint time point information from the first server, deleting the flow table change point of the first server received prior to the check point time point.
제 5항에 있어서,
상기 제 2 서버가 상기 제 1 서버의 장애를 인식하면, 상기 제 2 서버에 저장되어 있는 상기 제 1 서버의 플로우 테이블 변경 사항을 상기 제 2 서버가 해당 스위치에게 전송하는 단계를 더 포함하는 것을 특징으로 하는 제어 방법.
6. The method of claim 5,
And when the second server recognizes the failure of the first server, transmitting a flow table change of the first server stored in the second server to the second server by the second server .
둘 이상의 서버가 소프트웨어 정의 네트워크를 분산하여 제어하는 방법에 있어서,
제 1 컨트롤러 인스턴스를 설치한 제 1 서버가, 플로우 테이블 변경 사항을 공유 저장소에 저장하는 단계;
제 2컨트롤러 인스턴스를 설치한 제 2서버가, 플로우 테이블 변경 사항을 상기 공유 저장소에 저장하는 단계; 및
상기 제 2 서버가 상기 제 1 서버의 장애를 인식하면, 상기 공유 저장소에 저장되어 있는 상기 제 1 서버의 플로우 테이블 변경 사항을 상기 제 2 서버가 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 하는 제어 방법.
A method for distributed control of a software defined network by two or more servers,
The first server having installed the first controller instance stores the flow table changes in a shared repository;
Storing a flow table change in the shared repository, the second server having installed the second controller instance; And
And transmitting the flow table change of the first server stored in the shared storage to the second server when the second server recognizes the failure of the first server. Control method.
소프트웨어 정의 네트워크를 분산하여 제어하는 둘 이상의 서버를 포함하는 시스템에 있어서,
제 1 컨트롤러 인스턴스가 설치된 제 1 서버; 및
제 2 컨트롤러 인스턴스가 설치된 제 2 서버를 포함하고,
상기 제 1 서버는, 플로우 테이블 변경 사항을 상기 제 2 서버에게 전송하고, 상기 제 2서버로부터 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 것을 특징으로 하는 제어 시스템.
1. A system comprising two or more servers that distributively control a software defined network,
A first server in which a first controller instance is installed; And
A second server in which a second controller instance is installed,
Wherein the first server transmits the flow table change to the second server and upon receiving the acknowledgment message for the flow table change from the second server, Characterized by a control system.
소프트웨어 정의 네트워크를 분산하여 제어하는 둘 이상의 서버를 포함하는 시스템에 있어서,
제 1 컨트롤러 인스턴스가 설치된 제 1 서버; 및
제 2 컨트롤러 인스턴스가 설치된 제 2 서버를 포함하고,
상기 제 2 서버는, 상기 제 1 서버로부터 수신한 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하며, 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하고, 제 1 서버의 장애를 인식하면, 저장된 상기 제 1 서버의 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 것을 특징으로 하는 제어 시스템.
1. A system comprising two or more servers that distributively control a software defined network,
A first server in which a first controller instance is installed; And
A second server in which a second controller instance is installed,
Wherein the second server stores the flow table change information received from the first server and transmits an acknowledgment message for the flow table change to the first server, Upon receipt, the flow table change information of the first server received before the checkpoint time is deleted, and if the failure of the first server is recognized, the flow table change of the stored first server is transmitted to the corresponding switch Characterized by a control system.
둘 이상의 서버에서 소프트웨어 정의 네트워크를 분산하여 제어하는 처리를 실행시키기 위해 매체에 저장된 컴퓨터 프로그램에 있어서,
제 1 컨트롤러 인스턴스를 설치한 제 1 서버에서, 플로우 테이블 변경 사항을 제 2 컨트롤러 인스턴스를 설치한 제 2 서버에게 전송하는 기능; 및
상기 제 1 서버에서, 상기 제 2서버로부터 상기 변환한 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 수신하면, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 기능을 실행하는 것을 특징으로 하는 컴퓨터 프로그램.
A computer program stored in a medium for executing a process of distributing and controlling a software defined network in two or more servers,
Transmitting, at a first server that installed the first controller instance, a flow table change to a second server that installed the second controller instance; And
Wherein the first server executes a function of transmitting the flow table change message to a corresponding switch upon receiving an acknowledgment message for the converted flow table change message from the second server.
둘 이상의 서버에서 소프트웨어 정의 네트워크를 분산하여 제어하는 처리를 실행시키기 위해 매체에 저장된 컴퓨터 프로그램에 있어서,
제 2 컨트롤러 인스턴스를 설치한 제 2 서버에서, 제 1 컨트롤러 인스턴스를 설치한 제 1 서버로부터 플로우 테이블 변경 사항을 수신하는 기능;
상기 제 2 서버에서 상기 플로우 테이블 변경 사항을 저장하고, 상기 제 1 서버에게 상기 플로우 테이블 변경 사항에 대한 수신 확인 메시지를 전송하는 기능; 및
상기 제 2 서버에서 상기 제 1 서버로부터 체크포인트 시점 정보를 수신하면, 상기 체크포인트 시점 이전에 수신한 상기 제 1 서버의 플로우 테이블 변경 사항을 삭제하는 기능을 실행하는 것을 특징으로 하는 컴퓨터 프로그램.
A computer program stored in a medium for executing a process of distributing and controlling a software defined network in two or more servers,
Receiving, at a second server where a second controller instance is installed, a flow table change from a first server that installed the first controller instance;
Storing the flow table change in the second server and transmitting an acknowledgment message for the flow table change to the first server; And
And when the second server receives the checkpoint time point information from the first server, executes a function of deleting a flow table change of the first server received before the time of the check point.
KR1020150010321A 2015-01-22 2015-01-22 Method and apparatus for operating distributed controllers of software defined network KR101650691B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150010321A KR101650691B1 (en) 2015-01-22 2015-01-22 Method and apparatus for operating distributed controllers of software defined network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150010321A KR101650691B1 (en) 2015-01-22 2015-01-22 Method and apparatus for operating distributed controllers of software defined network

Publications (2)

Publication Number Publication Date
KR20160090485A true KR20160090485A (en) 2016-08-01
KR101650691B1 KR101650691B1 (en) 2016-08-24

Family

ID=56706748

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150010321A KR101650691B1 (en) 2015-01-22 2015-01-22 Method and apparatus for operating distributed controllers of software defined network

Country Status (1)

Country Link
KR (1) KR101650691B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101894660B1 (en) * 2017-04-11 2018-09-05 한국과학기술원 Controller in software defined networking environment and operating method thereof
KR20190077804A (en) * 2017-12-26 2019-07-04 고려대학교 산학협력단 Method for selecting shard leader for fast synchronizations in software defined network
KR20200061531A (en) 2018-11-26 2020-06-03 한국과학기술원 System for secure software defined networking(sdn) based on block-chain and the method thereof
CN115314356A (en) * 2022-08-09 2022-11-08 中电云数智科技有限公司 OVN-based cross-region distributed SDN control device and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530108A (en) * 2007-06-15 2010-09-02 サヴィス・インコーポレーテッド Shared data center disaster recovery system and method
US20130329548A1 (en) * 2012-06-06 2013-12-12 Harshad Bhaskar Nakil Re-routing network traffic after link failure
KR20140111939A (en) * 2012-12-24 2014-09-22 후아웨이 테크놀러지 컴퍼니 리미티드 Software defined network-based data processing method, node, and system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530108A (en) * 2007-06-15 2010-09-02 サヴィス・インコーポレーテッド Shared data center disaster recovery system and method
US20130329548A1 (en) * 2012-06-06 2013-12-12 Harshad Bhaskar Nakil Re-routing network traffic after link failure
KR20140111939A (en) * 2012-12-24 2014-09-22 후아웨이 테크놀러지 컴퍼니 리미티드 Software defined network-based data processing method, node, and system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101894660B1 (en) * 2017-04-11 2018-09-05 한국과학기술원 Controller in software defined networking environment and operating method thereof
KR20190077804A (en) * 2017-12-26 2019-07-04 고려대학교 산학협력단 Method for selecting shard leader for fast synchronizations in software defined network
WO2019132230A1 (en) * 2017-12-26 2019-07-04 고려대학교 산학협력단 Method for selecting shard leader in software-defined network
KR20200061531A (en) 2018-11-26 2020-06-03 한국과학기술원 System for secure software defined networking(sdn) based on block-chain and the method thereof
CN115314356A (en) * 2022-08-09 2022-11-08 中电云数智科技有限公司 OVN-based cross-region distributed SDN control device and method
CN115314356B (en) * 2022-08-09 2023-11-24 中电云计算技术有限公司 Cross-region distributed SDN control device and method based on OVN

Also Published As

Publication number Publication date
KR101650691B1 (en) 2016-08-24

Similar Documents

Publication Publication Date Title
US9197494B2 (en) Communication system, control device, node, processing rule setting method and program
CN109729111B (en) Method, apparatus and computer program product for managing distributed systems
US9348662B2 (en) Network system and communication control method
US9401958B2 (en) Method, apparatus, and system for migrating user service
JP2017525008A (en) Arbitration processing method, quorum storage device, and system after cluster brain division
JP2010045760A (en) Connection recovery device for redundant system, method and processing program
KR101650691B1 (en) Method and apparatus for operating distributed controllers of software defined network
US9846624B2 (en) Fast single-master failover
EP3376717B1 (en) Link discovery method and apparatus
CN110943928B (en) Method for synchronizing forwarding information states, controller, network forwarding device and storage medium
CN110401651A (en) A kind of distributed type assemblies node monitoring method, apparatus and system
CN103036934A (en) Wide area network clustered deployment system and method based on mirror image
CN103399806A (en) Method and system for updating and managing network backups
CN109379239B (en) Method and device for configuring access switch in OpenStack environment
JP6740543B2 (en) Communication device, system, rollback method, and program
KR101358995B1 (en) Method and system for managing high availability
WO2023207625A1 (en) Network configuration information processing method, sdn controller, system and storage medium
KR101610048B1 (en) Method, apparatus and computer program for managing repository of software defined network controller
JP6953713B2 (en) Communication nodes, communication systems, communication methods and programs
KR101628219B1 (en) Method and apparatus for operating controller of software defined network
CN107179912B (en) Hot upgrading method for distributed architecture software defined network controller
CN113391759B (en) Communication method and equipment
KR20180099143A (en) Apparatus and method for recovering tcp-session
CN105991349B (en) Neighbor table entry backup method and device
WO2024093328A1 (en) Virtual desktop connection method and apparatus

Legal Events

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

Payment date: 20190731

Year of fee payment: 4