KR20150009909A - Methods for managing transaction in software defined networking network - Google Patents

Methods for managing transaction in software defined networking network Download PDF

Info

Publication number
KR20150009909A
KR20150009909A KR1020130162372A KR20130162372A KR20150009909A KR 20150009909 A KR20150009909 A KR 20150009909A KR 1020130162372 A KR1020130162372 A KR 1020130162372A KR 20130162372 A KR20130162372 A KR 20130162372A KR 20150009909 A KR20150009909 A KR 20150009909A
Authority
KR
South Korea
Prior art keywords
message
switch
group message
group
controller
Prior art date
Application number
KR1020130162372A
Other languages
Korean (ko)
Other versions
KR101595160B1 (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 US14/334,127 priority Critical patent/US9712431B2/en
Publication of KR20150009909A publication Critical patent/KR20150009909A/en
Application granted granted Critical
Publication of KR101595160B1 publication Critical patent/KR101595160B1/en
Priority to US15/624,144 priority patent/US10404581B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • 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/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance

Abstract

Disclosed is a method for managing a transaction in a software defined networking network. The method for managing a transaction performed by a controller generates a group message to change an associated state among flow tables stored in a switch to transmit the generated group message to the switch. The switch inspects validity of the group message to report the inspected validity to the controller.The controller instructs execution of the group message when an error is not included in the group message. Accordingly, simultaneity, coherence, and automation of the transaction with respect to a single switch or a plurality of switches may be ensured.

Description

소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법{METHODS FOR MANAGING TRANSACTION IN SOFTWARE DEFINED NETWORKING NETWORK}{METHODS FOR MANAGING TRANSACTION IN SOFTWARE DEFINED NETWORKING NETWORK}

본 발명은 소프트웨어 정의 네트워킹 기술에 관한 것으로, 더욱 상세하게는 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to software defined networking technologies, and more particularly, to a transaction management method in a software defined networking network.

일반적인 라우터 또는 스위치 기반으로 구성된 네트워크는 복잡한 프로토콜과 기능을 기반으로 구성되고, 각 장비 업체마다 장비를 운영하는 방식이나 사용자 인터페이스가 다르기 때문에 네트워크 운용자 또는 연구자가 새로운 네트워크 프로토콜을 개발하여 네트워크에 적용하기가 어렵고 네트워크를 확장하거나 네트워크 장비들을 서로 연동시키기 어려운 문제가 있다. 이와 같은 문제를 해결하기 위해 개방형 인터페이스를 갖는 스위치나 라우터 기술이 연구되었으나, 개방형 인터페이스를 제공하는 네트워크 기술들은 성능 대비 가격이 높기 때문에 상용화에 어려움이 있었다.Since a network composed of a general router or a switch is configured based on a complicated protocol and functions, and each equipment company operates a device or a user interface, a network operator or a researcher develops a new network protocol and applies it to the network There is a problem that it is difficult to extend the network or to interwork the network equipment with each other. In order to solve such a problem, a switch or router technology having an open interface has been studied, but network technologies providing an open interface have been difficult to commercialize because of high performance price.

오픈플로우(OpenFlow) 기술은 고비용 문제를 해결하면서 사용자 또는 개발자에게 개방형 표준 인터페이스를 제공하기 위해서 출현하였다.OpenFlow technology has emerged to provide an open standard interface to users or developers while addressing costly problems.

오픈플로우 기술은 네트워크 스위치의 패킷 포워딩(Packet Forwarding) 기능과 제어 기능을 분리하고, 이들 두 기능 간의 통신을 위한 표준화된 프로토콜을 제공한다. 따라서, 오픈플로우 기술을 이용하면 외부 제어 장치에서 구동되는 소프트웨어를 이용하여 장비 제조업체와 무관하게 스위치 내의 패킷 경로를 결정할 수 있고, 기존보다 더 정밀하게 트래픽을 관리할 수 있다.Open flow technology separates the packet forwarding and control functions of a network switch and provides a standardized protocol for communication between these two functions. Therefore, using open-flow technology, the software running on the external control device can determine the packet path in the switch regardless of the equipment manufacturer and manage the traffic more precisely than before.

ONF(Open Networking Foundation)는 오픈플로우를 기반으로 네트워크를 좀 더 손쉽게 프로그램할 수 있는 소프트웨어 정의 네트워킹(SDN: Software Defined Networking, 이하, 'SDN'이라 약칭함) 기술을 정의하였다. The Open Networking Foundation (ONF) has defined Software Defined Networking (SDN) technology that makes it easier to program networks based on open flows.

오픈플로우 기반 SDN 구조는 오픈플로우 스위치(OpenFlow Switch)와 컨트롤러(Controller)를 포함하고, 오픈플로우 스위치와 컨트롤러는 오픈플로우 프로토콜에 의해 상호 연결된다.The open-flow-based SDN architecture includes an OpenFlow Switch and a Controller, and the open-flow switch and controller are interconnected by an open-flow protocol.

오픈플로우 기반 SDN 네트워크에서는 컨트롤러가 스위치에게 플로우 테이블 정보를 제공하고, 스위치는 제공받은 플로우 테이블 정보를 이용하여 패킷의 속성을 변경하거나, 패킷의 흐름을 제어하는 방식으로 패킷을 처리한다.In an open-flow-based SDN network, a controller provides flow table information to a switch, and the switch processes the packet by changing the attributes of the packet using the provided flow table information or controlling the flow of the packet.

한편, ONF 이외에도 IETF(Internet Engineering Task Force), ETSI(European Telecommunications Standards Institute), ITU-T(International Telecommunications Union Telecommunication) 등과 같은 표준화 단체에서도 SDN 기반의 네트워크에 대한 표준화를 진행하고 있다. 예를 들어, IETF의 I2RS(Interface to Router System) 워킹 그룹(Working Group)에서는 전통적인 라우터 장비를 외부에서 감시하고 제어할 수 있도록 외부의 클라이언트(Client)와 라우터에 위치한 에이전트(Agent) 사이의 개방형 인터페이스 구조에 대해 표준화를 진행하고 있다.In addition to ONF, standardization organizations such as Internet Engineering Task Force (IETF), European Telecommunications Standards Institute (ETSI), and International Telecommunications Union Telecommunication (ITU-T) are also standardizing SDN-based networks. For example, IETF's Interface to Router System (I2RS) Working Group provides an open interface between an external client (client) and an agent (agent) located in the router so that traditional router equipment can be externally monitored and controlled. Standardization of the structure is underway.

상술한 바와 같이 ONF, IETF 등과 같은 다양한 표준화 단체에서 SDN을 위한 표준화를 진행하고 있으나, 컨트롤러와 스위치간 또는 클라이언트와 에이전트간의 트랜잭션(transaction)에 대한 일관성(consistency)을 보장하기 위한 구체적인 방법은 제시하지 않고 있다. As described above, various standardization organizations such as ONF and IETF are standardizing for SDN, but there is no concrete method for ensuring consistency in transaction between controller and switch or between client and agent It is not.

본 발명의 목적은 SDN 네트워크에서 컨트롤러와 스위치간의 트랜잭션에 대한 일관성을 보장할 수 있는 트랜잭션 관리 방법을 제공하는 것이다.It is an object of the present invention to provide a transaction management method capable of ensuring consistency of transactions between a controller and a switch in an SDN network.

본 발명에서 이루고자 하는 목적들은 상기한 목적으로 제한되지 않으며, 언급하지 않은 다른 목적들은 하기의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.Other objects and advantages of the present invention will be apparent from the following description taken in conjunction with the accompanying drawings, in which: FIG.

본 발명의 목적을 달성하기 위한 본 발명의 일 측면에 따른 트랜잭션 관리 방법은, 컨트롤러에서 수행되는 트랜잭션 관리 방법으로 스위치에 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계 및 상기 그룹 메시지를 상기 스위치에 전송하는 단계를 포함한다.According to an aspect of the present invention, there is provided a transaction management method performed by a controller, the transaction management method comprising: generating a group message for changing a status of associated ones among flow tables stored in a switch; And sending a group message to the switch.

여기서, 상기 그룹 메시지는 상기 스위치 내의 복수의 플로우 테이블 중 서로 연관된 상태를 가지는 테이블들을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지로 구성될 수 있다. 또한, 상기 복수의 메시지는 동일한 구조를 가지며 상기 그룹 메시지 내에 반복적인 형태로 포함될 수 있다.Here, the group message may be a message including a plurality of messages for simultaneously changing tables having mutually related states among a plurality of flow tables in the switch. In addition, the plurality of messages have the same structure and may be included in the group message repeatedly.

여기서, 상기 그룹 메시지는 메시지의 유형, 메시지의 개수, 메시지의 길이 및 그룹 메시지의 식별자 중 적어도 하나의 정보를 포함할 수 있다.Here, the group message may include at least one of a message type, a number of messages, a length of a message, and an identifier of a group message.

여기서, 상기 트랜잭션 관리 방법은 상기 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 수신하는 단계 및 상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계를 더 포함할 수 있다.Here, the transaction management method may include receiving an acknowledgment message indicating whether an error occurs in the group message from the switch, and transmitting a message instructing execution or cancellation of the group message to the switch based on the acknowledgment message Step < / RTI >

여기서, 상기 확인 메시지는 상기 그룹 메시지에 오류가 발생한 경우 오류 코드를 포함할 수 있다.Here, the confirmation message may include an error code when an error occurs in the group message.

여기서, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계는, 상기 그룹 메시지에 포함된 복수의 메시지 중 적어도 하나의 메시지에 오류가 발생하였음을 지시하는 확인 메시지를 수신하는 경우, 상기 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송할 수 있다.The step of transmitting a message instructing execution or cancellation of the group message to the switch may include receiving a confirmation message indicating that an error has occurred in at least one of the plurality of messages included in the group message , And may transmit a message instructing the switch to cancel the group message.

또한, 본 발명의 목적을 달성하기 위한 본 발명의 다른 측면에 따른 트랜잭션 관리 방법은, 컨트롤러에서 수행되는 트랜잭션 관리 방법으로 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계 및 상기 그룹 메시지를 상기 복수의 스위치에 전송하는 단계를 포함한다.According to another aspect of the present invention, there is provided a transaction management method performed by a controller, the method comprising: receiving, from a plurality of switches, And transmitting the group message to the plurality of switches.

여기서, 상기 그룹 메시지는 상기 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태를 가지는 복수의 플로우 테이블을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지로 구성될 수 있다.The group message may be a message including a plurality of messages for simultaneously changing a plurality of flow tables associated with each other among the flow tables stored in the plurality of switches.

여기서, 상기 트랜잭션 관리 방법은 상기 복수의 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 각각 수신하는 단계 및 상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계를 더 포함할 수 있다.Here, the transaction management method may further include: receiving an acknowledgment message indicating whether an error occurs in the group message from the plurality of switches, respectively, and transmitting a message instructing execution or cancellation of the group message to the plurality To the switch of FIG.

여기서, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계는, 상기 복수의 스위치들 중 적어도 하나의 스위치로부터 상기 그룹 메시지의 오류 발생을 지시하는 확인 메시지를 수신하면, 상기 복수의 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송할 수 있다.The step of transmitting a message instructing execution or cancellation of the group message to the plurality of switches comprises the steps of receiving an acknowledgment message indicating an error occurrence of the group message from at least one of the plurality of switches, And may transmit a message instructing cancellation of the group message to the plurality of switches.

또한, 본 발명의 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 트랜잭션 관리 방법은, 스위치에서 수행되는 트랜잭션 관리 방법으로 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 컨트롤러로부터 수신하는 단계와, 상기 그룹 메시지의 오류를 검증하는 단계 및 상기 그룹 메시지의 오류 여부 정보를 포함하는 확인 메시지를 상기 컨트롤러에 전송하는 단계를 포함한다.According to another aspect of the present invention, there is provided a transaction management method comprising: receiving, from a controller, a group message for changing a state of an associated state among flow tables stored in a transaction management method performed in a switch; And verifying the error of the group message and transmitting an acknowledgment message including the error information of the group message to the controller.

여기서, 상기 그룹 메시지를 컨트롤러로부터 수신하는 단계는, 수신한 상기 그룹 메시지를 임시 저장 영역에 저장하는 단계를 포함할 수 있다.The step of receiving the group message from the controller may include storing the received group message in a temporary storage area.

여기서, 상기 그룹 메시지의 오류를 검증하는 단계에서는 상기 그룹 메시지의 문법 및 선행 조건 중 적어도 하나에 대한 유효성 여부를 판단할 수 있다.Here, in the step of verifying the error of the group message, it is possible to determine whether at least one of the grammar and the precondition of the group message is valid.

여기서, 상기 그룹 메시지의 오류를 검증하는 단계에서는 상기 스위치의 자원 가용성을 판단할 수 있다. Here, in the step of verifying the error of the group message, the resource availability of the switch can be determined.

여기서, 상기 확인 메시지는 상기 그룹 메시지에 오류가 있는 경우 오류 코드를 포함할 수 있다.Here, the confirmation message may include an error code if there is an error in the group message.

여기서, 상기 트랜잭션 관리 방법은 상기 컨트롤러로부터 상기 그룹 메시지의 실행을 지시하는 실행 메시지를 수신하는 단계 및 임시 저장 영역에 저장된 그룹 메시지의 내용에 기초하여 플로우 테이블을 변경하는 단계를 더 포함할 수 있다.Here, the transaction management method may further include receiving an execution message indicating execution of the group message from the controller, and changing a flow table based on the contents of the group message stored in the temporary storage area.

여기서, 상기 트랜잭션 관리 방법은 상기 컨트롤러로부터 상기 그룹 메시지의 취소를 지시하는 취소 메시지를 수신하는 단계 및 임시 저장 영역에 저장된 그룹 메시지를 삭제하는 단계를 더 포함할 수 있다.Here, the transaction management method may further include receiving a cancellation message for canceling the group message from the controller, and deleting the group message stored in the temporary storage area.

본 발명의 실시예에 따른 SDN 네트워크에서 트랜잭션 관리 방법에 따르면, 컨트롤러가 스위치의 플로우 테이블을 변경하는 과정에서 플로우 테이블간 연관된 상태 또는 순차적인 작업이 요구되는 상태들을 고려하여 그룹 메시지를 생성하고, 생성된 그룹 메시지를 스위치에 전송한다. 스위치는 수신한 그룹 메시지의 유효성을 검증한 후 검증 결과를 컨트롤러에 전송한다. 컨트롤러는 그룹 메시지에 오류가 전혀 발생하지 않은 경우, 그룹 메시지의 실행을 해당 스위치에 지시하고, 그룹 메시지에 오류가 발생한 경우에는 그룹 메시지의 실행 취소를 지시한다.According to the transaction management method in the SDN network according to the embodiment of the present invention, in the process of changing the flow table of the switch, the controller generates the group message in consideration of the states associated with the flow tables or the states requiring sequential operations, To the switch. The switch verifies the received group message and sends the verification result to the controller. The controller instructs the corresponding switch to execute the group message when no error occurs in the group message, and instructs the switch to cancel the group message if an error occurs in the group message.

따라서, 단일 스위치 또는 복수의 스위치들에 저장된 플로우 테이블들간의 서로 연관성이 있는 상태를 동시에 변경할 수 있고, 이를 통해 동시성을 보장할 수 있다.Accordingly, mutually related states of flow tables stored in a single switch or a plurality of switches can be simultaneously changed, thereby ensuring concurrency.

또한, 서로 연관성이 있는 복수의 테이블을 동시에 변경함으로써 복수의 스위치들간의 변경을 동기화할 수 있고, 일관성을 보장할 수 있다. In addition, it is possible to synchronize changes between a plurality of switches and to ensure consistency by simultaneously changing a plurality of related tables.

도 1은 SDN 시스템의 구성을 나타내는 블록도이다.
도 2는 플로우 테이블에 포함되는 플로우 엔트리들의 구조를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 4는 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 5는 본 발명의 일 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 6은 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 7은 본 발명의 실시예들에 적용되는 그룹 메시지 구조를 예를 들어 도시한 것이다.
도 8은 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 실행하는 컨트롤러와 스위치의 구성의 일 예를 나타낸다.
1 is a block diagram showing a configuration of an SDN system.
2 shows the structure of the flow entries included in the flow table.
3 is a flowchart illustrating a transaction management method according to an embodiment of the present invention.
4 is a flowchart illustrating a transaction management method according to another embodiment of the present invention.
5 is a conceptual diagram showing an application example of a transaction management method according to an embodiment of the present invention.
6 is a conceptual diagram illustrating an application example of a transaction management method according to another embodiment of the present invention.
FIG. 7 illustrates an example of a group message structure applied to embodiments of the present invention.
8 shows an example of a configuration of a controller and a switch for executing a transaction management method according to the embodiments of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail.

그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the relevant art and are to be interpreted in an ideal or overly formal sense unless explicitly defined in the present application Do not.

이하, 본 발명에서 언급되는 '컨트롤러(controller)'는 트래픽의 흐름을 제어하기 위해 관련 구성 요소(예를 들면, 스위치, 라우터 등)를 제어하는 기능 요소(entity)를 의미하는 것으로, 물리적인 구현 형태나 구현 위치 등에 한정되지 않는다. 예를 들어, 상기 컨트롤러는 ONF, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 컨트롤러 기능 요소(entity)를 의미할 수 있다. 또한, 본 발명에서 언급되는 '스위치'는 트래픽(또는 패킷)을 실질적으로 포워딩하거나 스위칭 또는 라우팅하는 기능 요소를 의미하는 것으로, ONF, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 스위치, 라우터, 스위치 요소, 라우터 요소, 포워딩 요소 등을 의미할 수 있다.Hereinafter, a 'controller' referred to in the present invention refers to a functional entity that controls related components (eg, switches, routers, etc.) to control the flow of traffic. Shape, implementation position, and the like. For example, the controller may refer to a controller functional entity defined in ONF, IETF, ETSI, and / or ITU-T. A 'switch' referred to in the present invention means a functional element for substantially forwarding, switching, or routing traffic (or packet). It may be a switch defined by ONF, IETF, ETSI and / or ITU- , A switch element, a router element, a forwarding element, and the like.

또한, 이하에서 기술되는 본 발명의 실시예들은 SDN 기술의 표준화를 수행하고 있는 ONF, IETF, ETSI, ITU-T들에서 작성된 표준 문서들에 의해 뒷받침될 수 있다. 즉, 본 발명의 실시예들 중 본 발명의 기술적 사상을 명확히 드러내기 위해 구체적으로 설명하지 않은 내용들은 상기의 표준화 단체들에서 작성한 표준 문서들에 의해 뒷받침될 수 있다. 또한, 본 발명에서 사용되는 모든 용어들은 상기 표준 문서에 의해 설명될 수 있다.In addition, the embodiments of the present invention described below can be supported by standard documents prepared by ONF, IETF, ETSI, and ITU-T, which are performing standardization of SDN technology. That is, those of the embodiments of the present invention that are not specifically described in order to clearly illustrate the technical idea of the present invention can be supported by the standard documents prepared by the above standardization bodies. In addition, all terms used in the present invention can be described by the standard document.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

도 1은 SDN 시스템의 구성을 나타내는 블록도이다. 도 2는 플로우 테이블에 포함되는 플로우 엔트리들의 구조를 나타낸다.1 is a block diagram showing a configuration of an SDN system. 2 shows the structure of the flow entries included in the flow table.

도 1을 참조하면, SDN 시스템은 복수의 스위치 및 컨트롤러로 구성될 수 있고, 복수의 스위치와 컨트롤러는 오픈플로우 프로토콜을 이용하여 서로 통신할 수 있다. 도 1에서는 설명의 편의를 위하여 컨트롤러(110) 및 스위치(120)를 각각 하나씩만 도시하였으나, 컨트롤러(110) 및 스위치(120)는 실질적으로 각각 복수개로 구성될 수 있다.Referring to FIG. 1, the SDN system may include a plurality of switches and controllers, and a plurality of switches and controllers may communicate with each other using an open flow protocol. Although only one controller 110 and one switch 120 are shown in FIG. 1 for the sake of convenience, the controller 110 and the switches 120 may be constituted of a plurality of controllers 110 and 120, respectively.

스위치(120)는 패킷의 룩업(lookup) 및 포워딩(forwarding)에 사용하는 하나 또는 그 이상의 플로우 테이블(121)과 그룹 테이블(123)을 포함하고, 컨트롤러(110)와 통신을 위한 오픈플로우 채널(125)을 포함한다. The switch 120 includes one or more flow tables 121 and group tables 123 for use in lookup and forwarding of packets and includes an open flow channel 125).

스위치에 포함된 각 플로우 테이블(121)은 플로우 엔트리(flow entries)들의 집합으로, 각 플로우 엔트리는 도 2에 도시한 바와 같이 매치 필드(match fields)(201), 우선순위(Priority)(202), 카운터(counters)(203), 명령어(Instructions)(204), 타임아웃(Timeouts)(205) 및 쿠키(Cookie)(206) 필드로 구성될 수 있다.Each flow table 121 included in the switch is a set of flow entries, and each flow entry includes match fields 201, a priority 202, Counters 203, instructions 204, timeouts 205, and cookies 206 fields, as shown in FIG.

매치 필드(201)는 패킷의 매치를 위한 정보로, 유입 포트(ingress port), 패킷 헤더 정보를 포함할 수 있고, 선택적으로 이전 플로우 테이블에서 지정된 메타데이터를 포함할 수 있다. 우선순위(202)는 플로우 엔트리의 매칭 우선순위를 의미한다. 카운터(203)는 패킷이 매치되었을 때 갱신되는 값이다. 명령어(204)는 액션 집합(action sets)이나 파이프라인 처리(pipeline processing)를 변경하기 위해 사용된다. 타임아웃(205)은 플로우가 스위치에 의해 만료되기 전까지의 최대 시간 또는 유휴 시간(idle time)을 의미한다. 쿠키(206)는 컨트롤러에 의해 선택되는 불분명한 데이터 값(opaque data value)으로, 컨트롤러가 플로우 통계, 플로우 변경, 플로우 삭제 등을 필터링하기 위해 사용될 수 있다.The match field 201 is information for matching a packet, and may include an ingress port, packet header information, and optionally, metadata specified in a previous flow table. The priority 202 indicates the matching priority of the flow entry. The counter 203 is a value that is updated when a packet is matched. The instruction 204 is used to change action sets or pipeline processing. The timeout 205 indicates the maximum time or idle time before the flow is expired by the switch. The cookie 206 may be used by the controller to filter flow statistics, flow changes, flow deletions, etc. with an opaque data value selected by the controller.

패킷의 처리를 위한 매칭은 스위치(120)에 포함된 복수의 플로우 테이블들(121) 중 첫번째 플로우 테이블로부터 시작되고, 이후의 플로우 테이블들에서 계속될 수 있다.The matching for the processing of the packet may start from the first of the plurality of flow tables 121 included in the switch 120 and may continue in subsequent flow tables.

스위치(120)는 매칭 플로우 엔트리가 발견되는 경우, 매칭된 특정 플로우 엔트리와 연관된 명령을 실행한다. 또는 매칭 엔트리가 플로우 테이블에서 발견되지 않는 경우, 스위치(120)는 패킷을 오픈플로우 채널(125)을 통해 컨트롤러(110)로 포워딩하거나, 폐기(drop)할 수도 있고, 다음 플로우 테이블에서 매칭 처리를 계속할 수도 있다.The switch 120 executes the command associated with the particular flow entry matched if a matching flow entry is found. Or a matching entry is not found in the flow table, the switch 120 may forward or drop the packet to the controller 110 via the open flow channel 125 and may perform matching processing in the following flow table You can continue.

각 플로우 엔트리와 연관된 명령어들은 액션이나, 스위치 내에서 파이프라인 처리를 수정하기 위한 명령을 포함한다. The instructions associated with each flow entry include an action or an instruction to modify the pipeline processing within the switch.

명령에 포함된 액션은 패킷 포워딩, 패킷 수정 및 그룹 테이블의 처리를 기술한다. 예를 들어, 액션은 패킷이 부가적인 처리를 규정하는 그룹으로 향하도록 지정할 수 있다. 여기서, 그룹은 플러딩(flooding) 및 보다 복합적인 포워딩을 처리하기 위한 액션 집합을 표현한다. 그룹을 통해 복수의 플로우 엔트리들과 연관된 패킷의 공통적인 출력 액션들을 효율적으로 변경할 수 있다.The actions included in the command describe packet forwarding, packet modification, and processing of the group table. For example, an action may specify that a packet be directed to a group that defines additional processing. Here, the group represents a set of actions for handling flooding and more complex forwarding. The group can efficiently change common output actions of packets associated with a plurality of flow entries.

파이프라인 처리 명령들은 연속적인 처리를 위해 패킷을 다음 플로우 테이블로 보내는 것과, 메타데이터 형태의 정보들이 플로우 테이블들간 교환되도록 한다. 플로우 테이블들에 대한 파이프라인 처리는 매칭 플로우 엔트리와 연관된 명령어 집합이 다음 플로우 테이블을 특정하지 않는 경우에 중지된다. 이 시점에서 패킷은 일반적으로 수정되거나 포워딩된다.The pipeline processing instructions send packets to the next flow table for subsequent processing, and exchange metadata-type information between the flow tables. The pipeline processing for the flow tables is stopped if the set of instructions associated with the matching flow entry does not specify the next flow table. At this point, the packet is usually modified or forwarded.

또한, 플로우 엔트리는 패킷을 포트로 포워딩 할 수 있다. 여기서, 포트는 일반적인 물리적 포트를 의미할 수도 있고, 스위치(120)에 의해 정의된 논리적 포트를 의미할 수도 있다. 또한, 포트는 미리 정의된 예약 포트(reserved port)를 의미할 수도 있다. 예약 포트는 패킷을 컨트롤러(110)로 전송하거나, 플러딩(flooding), 또는 오픈플로우가 아닌 일반적인 방법을 통한 패킷 포워딩 등의 포괄적인 포워딩 처리를 규정할 수 있다. 한편, 스위치(120)에 의해 정의된 논리적 포트는 링크 통합 그룹(link aggregation group), 터널(tunnels) 또는 루프백 인터페이스(loopback interface)를 명시할 수 있다.The flow entry may also forward packets to the port. Here, the port may denote a general physical port or a logical port defined by the switch 120. In addition, the port may mean a predefined reserved port. The reservation port may forward the packet to the controller 110, or may specify a comprehensive forwarding process, such as flooding, or packet forwarding via a conventional method rather than an open flow. On the other hand, the logical port defined by the switch 120 may specify a link aggregation group, tunnels, or a loopback interface.

그룹 테이블은 복수의 그룹 엔트리(group entries)를 포함한다. 각 그룹 엔트리는 그룹의 유형과 관련된 특정 의미(semantics)를 가지는 액션 버킷 목록(action buckets list)을 포함할 수 있다. 여기서, 액션 버킷은 액션들 및 연관된 파라미터들의 집합을 의미한다. 하나 또는 하나 이상의 액션 버킷에 포함된 액션들은 패킷들을 그룹으로 전달할 수 있다.The group table includes a plurality of group entries. Each group entry may contain an action buckets list having specific semantics associated with the type of group. Here, an action bucket refers to a set of actions and associated parameters. Actions included in one or more action buckets may forward packets to a group.

컨트롤러(110)는 오픈플로우 프로토콜을 이용하여 각 스위치(120)의 플로우 테이블(121)에 플로우 엔트리들(flow entries)을 추가(add), 갱신(modify) 또는 삭제(delete)할 수 있다.The controller 110 may add, modify, or delete flow entries to the flow table 121 of each switch 120 using an open flow protocol.

오픈플로우 프로토콜은 컨트롤러-투-스위치(controller-to-switch), 비동기(asynchronous) 및 대칭(symmetric)의 세 가지 메시지 타입을 지원하며, 각 메시지 타입은 복수의 서브 타입 메시지들을 포함한다.The open flow protocol supports three message types: controller-to-switch, asynchronous, and symmetric, and each message type includes a plurality of subtype messages.

컨트롤러-투-스위치 메시지는 컨트롤러(110)에 의해 생성되는 메시지로, 스위치(120)를 직접적으로 관리하거나 스위치(120)의 상태를 검색하기 위해 사용된다. 비동기 메시지는 스위치(120)에 의해 생성되는 메시지로, 네트워크 이벤트 및 스위치(120)의 상태 변화에 상응하여 컨트롤러(110)에 저장된 정보를 갱신하기 위해 사용된다. 대칭 메시지는 스위치(120) 또는 컨트롤러(110)에 의해 생성되는 메시지로, 별도의 요청 없이 양방향으로 전송되는 메시지이다.The controller-to-switch message is a message generated by the controller 110, used to directly manage the switch 120 or to retrieve the status of the switch 120. An asynchronous message is a message generated by switch 120 that is used to update information stored in controller 110 in response to a network event and a change in state of switch 120. The symmetric message is a message generated by the switch 120 or the controller 110, and is transmitted in both directions without a separate request.

컨트롤러-투-스위치 메시지는 상태 변경(Modify-State) 메시지 및 배리어(Barrier) 메시지 등을 포함한다. 상태 변경 메시지는 스위치(120)의 상태를 관리하기 위해 컨트롤러(110)가 스위치(120)로 전송하는 메시지로, 스위치(120)의 오픈플로우 테이블(121)에서 플로우 또는 그룹 엔트리에 대해 추가, 삭제 및 변경이나, 스위치(120)의 포트 특성을 설정하기 위해 사용된다. 배리어 메시지는 배리어 요청 및 배리어 응답 메시지로 구성되고, 컨트롤러(110)가 스위치(120)에 전송한 메시지들간의 의존성 일치와, 스위치(120)가 메시지들의 실행 완료를 컨트롤러(110)에 통보하기 위해 사용된다.The controller-to-switch message includes a Modify-State message and a Barrier message. The status change message is a message sent by the controller 110 to the switch 120 to manage the state of the switch 120 and may be added or deleted for flow or group entries in the open flow table 121 of the switch 120. [ And to change or set the port characteristics of the switch 120. The barrier message consists of a barrier request and a barrier response message and is used by the controller 110 to notify the controller 110 of the dependency between the messages sent by the controller 110 to the switch 120 and the completion of the execution of the messages by the switch 120 Is used.

비동기 메시지는 플로우 삭제(Flow-Removed), 포트 상태(Port-status) 메시지 등을 포함할 수 있다. 플로우 삭제 메시지는 스위치(120)가 플로우 테이블에서 플로우 엔트리가 삭제되었음을 스위치(120)에게 통보하기 위해 사용된다. 포트 상태 메시지는 스위치(120)가 포트의 변화를 통보하기 위해 사용된다.Asynchronous messages may include Flow-Removed, Port-status messages, and the like. The flow delete message is used by the switch 120 to notify the switch 120 that the flow entry has been deleted from the flow table. The port status message is used by the switch 120 to notify the change of the port.

대칭 메시지는 헬로(Hello), 에코(Echo), 에러(Error) 메시지 등을 포함할 수 있다. 헬로 메시지는 컨트롤러(110)와 스위치(120) 사이의 연결 생성시에 교환되는 메시지이다. 에코 메시지는 에코 요청 및 에코 응답 메시지로 구성되고, 스위치(120) 또는 컨트롤러(110)에 의해 전송될 수 있다. 에코 요청 메시지를 수신한 장치는 반드시 에코 응답 메시지를 전송해야 한다. 에러 메시지는 스위치(120) 또는 컨트롤러(110)에 의해 사용되는 메시지로 문제가 발생되었음을 연결 상대방에게 통보하기 위해 사용된다.
The symmetric message may include a Hello, an Echo, an Error message, and the like. The hello message is a message exchanged when the connection between the controller 110 and the switch 120 is created. The echo message is composed of an echo request and an echo reply message, and may be transmitted by the switch 120 or the controller 110. A device that has received an echo request message MUST send an echo reply message. The error message is used to notify the connection partner that a problem has occurred with the message used by the switch 120 or the controller 110. [

일반적으로 컨트롤러(110)가 스위치(120)의 플로우 테이블을 변경할 때는 상기한 상태 변경(Modify-State) 메시지의 명령어 구분 정보에 변경 유형을 지정하여 스위치(120)에 전송한다. 컨트롤러(110)는 상태 변경 메시지를 이용하여 스위치(120)의 플로우 테이블에 한 건씩 플로우 엔트리를 추가 변경 또는 삭제할 수 있다.Generally, when the controller 110 changes the flow table of the switch 120, the controller 120 designates a change type to the command classification information of the above-described Modify-State message and transmits the command to the switch 120. The controller 110 may additionally change or delete the flow entry in the flow table of the switch 120 by using the status change message.

한편, 스위치(120)는 복수의 플로우 엔트리에 대한 변경을 지시하는 복수의 상태 변경 메시지에 대해 각 상태 변경 메시지별로 즉시 컨트롤러(110)에 응답하지 않고, 오류가 발생한 경우에만 에러(Error) 메시지를 컨트롤러(110)에 전송한다.On the other hand, the switch 120 does not immediately respond to the controller 110 for each status change message for a plurality of status change messages for instructing a change to a plurality of flow entries, and sends an error message only when an error occurs To the controller (110).

또한, 컨트롤러(110)는 스위치(120)에게 전송하는 명령의 실행 순서를 보장하기 위해 배리어(Barrier) 메시지를 사용할 수 있다. 예를 들어, 컨트롤러(110)가 특정 시점에 스위치(120)에게 배리어 메시지를 전송하면, 스위치(120)는 배리어 메시지를 수신하기 전까지의 수신한 모든 명령을 실행한 후, 실행 결과를 컨트롤러(110)에 전송한다. 즉, 컨트롤러(110)는 일련의 명령 또는 작업(operation)이 순차적으로 실행되어야 하는 경우, 배리어 메시지를 이용하여 스위치(120)의 명령 또는 작업 실행 순서를 제어할 수 있다.In addition, the controller 110 may use a Barrier message to ensure the order of execution of the commands to send to the switch 120. For example, if the controller 110 sends a barrier message to the switch 120 at a particular point in time, the switch 120 executes all the commands it has received before receiving the barrier message, . That is, the controller 110 may control a command or a task execution order of the switch 120 using a barrier message when a series of commands or operations must be sequentially executed.

상술한 바와 같이 일반적인 플로우 테이블 변경 방법에서는 스위치(120)가 컨트롤러(110)로부터 수신한 상태 변경 메시지에 대해 변경 건 별로 즉시 응답하지 않고 오류가 발생한 경우에만 컨트롤러(110)에게 에러 메시지를 전송한다. 따라서, 플로우 테이블을 변경하는 과정에서 실제로 에러가 발생했음에도 불구하고 네트워크의 장애 또는 스위치(120)의 통신 불능 상태로 인하여 스위치(120)가 컨트롤러(110)에 에러 메시지를 전달하지 못하는 경우에도 컨트롤러(110)는 플로우 테이블의 변경이 정상적으로 실행된 것으로 간주하고 이후의 제어를 수행하는 문제가 발생할 수 있다.As described above, in the general flow table changing method, the switch 120 transmits an error message to the controller 110 only when an error occurs without immediately responding to the status change message received from the controller 110 on a change-by-change basis. Therefore, even when the switch 120 fails to deliver an error message to the controller 110 due to a network failure or a communication failure of the switch 120 despite an error actually occurring in the process of changing the flow table, 110 may consider that the change of the flow table has been normally executed and perform the subsequent control.

또한, 컨트롤러(110)가 스위치(120)의 순차적인 명령 실행 순서를 보장하기 위해 배리어 메시지를 사용하고 있다. 그러나, 배리어 메시지만으로는 하나 또는 복수의 플로우 테이블에서 서로 연관이 있는 플로우 엔트리들(또는 상태들)에 대한 변경 여부를 컨트롤러(110)가 정확하게 확인할 수 없다.In addition, the controller 110 is using a barrier message to ensure sequential instruction execution order of the switch 120. [ However, with the barrier message alone, the controller 110 can not accurately determine whether to change the flow entries (or states) associated with each other in one or more flow tables.

또한, 상술한 플로우 테이블 변경 방법에서는 각 플로우 테이블 변경건에 대해 하나의 상태 변경 메시지를 전송하여 플로우 테이블을 변경하기 때문에, 복수의 플로우 테이블 변경(또는 복수의 상태 변경)이 모두 적용되어야 하거나 모두 적용되지 않아야 하는 원자성(atomicity)을 보장할 수 없다.
In addition, in the flow table changing method described above, since a single state change message is transmitted to each flow table change item to change the flow table, a plurality of flow table changes (or a plurality of state changes) It can not guarantee the atomicity that it should not.

이하에서는 상술한 바와 같은 문제를 해결하기 위한 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 설명한다.Hereinafter, a transaction management method according to embodiments of the present invention for solving the above-mentioned problems will be described.

도 3은 본 발명의 일 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다. 3 is a flowchart illustrating a transaction management method according to an embodiment of the present invention.

도 3에서는 하나의 스위치(330) 내에 저장된 복수의 플로우 테이블들에 대해 서로 연관된 상태 또는 일련의 순차적인 작업이 요구되는 상태들을 고려하여 플로우 테이블을 변경하는 과정을 예시하였다.FIG. 3 illustrates a process of changing a flow table in consideration of states associated with a plurality of flow tables stored in one switch 330 or states requiring a series of sequential operations.

도 3을 참조하면, 컨트롤러(310)는 스위치(330) 내부의 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성이나 순차적인 작업이 요구되는 플로우 엔트리들을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S301). 여기서, 그룹 메시지는 스위치(330) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다. Referring to FIG. 3, the controller 310 determines whether or not there is a correlation between the flow entries (or states) included in the flow tables within the switch 330, Or a flow entry) (S301). Here, the group message may include a plurality of messages for simultaneously changing flow entries associated with each other among the flow entries included in the plurality of flow tables stored in the switch 330. [ Also, the plurality of messages included in the group message may be configured such that the flow entry change commands having the same structure are repeatedly included in the array for collective change of a plurality of flow entries (or states).

이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비(Group Modify Prepare) 메시지를 스위치(330)에 전송한다(S302).Then, the controller 310 transmits a Group Modify Prepare message including a group message to the switch 330 (S302).

스위치(330)는 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S303). 여기서, 스위치(330)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 스위치(330)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.The switch 330 receives the group change preparation message from the controller 310 and verifies the validity of the received group message (S303). Here, the switch 330 may determine whether a precondition for executing a grammar or group message is valid for each message included in the received group message or group message. Also, the switch 330 may optionally determine whether resources are available for applying the group message.

이후, 스위치(330)는 그룹 메시지의 유효성 검증 결과를 포함하는 확인(ACK) 메시지를 컨트롤러(310)에 전송한다(S304). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 스위치(330)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.Thereafter, the switch 330 transmits an acknowledgment (ACK) message including a result of validation of the group message to the controller 310 (S304). Here, the acknowledgment message may include information on whether or not an error occurs in the group message. The switch 330 includes an error code corresponding to an error generated when an error occurs in any one of a plurality of messages included in the group message as a result of validation of the group message, and transmits the error code to the controller 310 .

또한, 스위치(330)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 스위치(330)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.In addition, when the switch 330 receives the group message from the controller 310, the switch 330 may store the received group message in the temporary storage area. Here, the switch 330 may delete the group message stored in the temporary storage area if an error occurs after verifying the validity of the group message.

컨트롤러(310)는 스위치(330)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S305).The controller 310 waits until it receives an acknowledgment message for the group message from the switch 330. When the acknowledgment message is received, the controller 310 checks whether the acknowledgment message contains information indicating an error (S305).

컨트롤러(310)는 수신한 확인 메시지에 그룹 메시지에 오류가 발생하였음을 지시하는 오류 코드가 포함된 경우, 스위치(330)에 그룹 메시지의 실행 취소를 지시하는 그룹 변경 취소(group Modify Cancel) 메시지를 전송한다(S306).If the received acknowledgment message includes an error code indicating that an error has occurred in the group message, the controller 310 transmits a group change cancel message to the switch 330, which instructs the switch 330 to cancel the group message (S306).

스위치(330)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S307).If the switch 330 receives the group change cancel message from the controller 310, the switch 330 may delete the group message stored in the temporary storage area without executing the received group message (S307).

또는, 컨트롤러(310)는 확인 메시지를 통해 그룹 메시지에 오류가 발생하지 않은 것으로 판단되는 경우, 스위치(330)에 그룹 메시지의 실행을 지시하는 그룹 변경 실행(Group Modify Execute) 메시지를 전송한다(S308).Alternatively, if it is determined that an error does not occur in the group message through the confirmation message, the controller 310 transmits a Group Modify Execute message instructing execution of the group message to the switch 330 (S308 ).

스위치(330)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S309). 여기서, 스위치(330)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.
When receiving the group change execution message from the controller 310, the switch 330 changes the corresponding flow entry (or state) of the flow table based on the group message (S309). Here, the switch 330 may add, delete or change the flow entry according to the command indicated by the group message.

도 4는 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다. 4 is a flowchart illustrating a transaction management method according to another embodiment of the present invention.

도 4는 복수의 스위치 내에 저장된 복수의 플로우 테이블들에 대해 서로 연관된 상태를 고려하여 플로우 테이블을 변경하는 과정을 예시한 것으로, 설명의 편의를 위해 복수의 스위치들 중 두 개의 스위치(330a, 330b)만 도시하였다. 그러나, 도 4에 도시한 플로우 테이블 변경 방법은 스위치의 개수가 두 개 이상인 경우에도 동일하게 적용될 수 있다.FIG. 4 illustrates a process of changing a flow table in consideration of mutually related states for a plurality of flow tables stored in a plurality of switches. For convenience of explanation, two switches 330a and 330b of the plurality of switches are illustrated, Respectively. However, the flow table changing method shown in FIG. 4 can be applied to the case where the number of switches is two or more.

도 4를 참조하면, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)에 각각 저장된 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성(또는 순차적인 작업이 요구되는 상태들)을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S401). 여기서, 그룹 메시지는 제1 스위치(330a) 및 제2 스위치(330b) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다. Referring to FIG. 4, the controller 310 determines whether the association of the flow entries (or states) included in the flow tables stored in the first switch 330a and the second switch 330b, respectively (Or flow entries), in step S401, a group message for changing states (or flow entries) associated with each other. Here, the group message may include a plurality of messages for simultaneously changing flow entries associated with one another among the flow entries included in the plurality of flow tables stored in the first switch 330a and the second switch 330b. Also, the plurality of messages included in the group message may be configured such that the flow entry change commands having the same structure are repeatedly included in the array for collective change of a plurality of flow entries (or states).

이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비 메시지를 제1 스위치(330a) 및 제2 스위치(330b)에 전송한다(S402).Thereafter, the controller 310 transmits a group change preparation message including a group message to the first switch 330a and the second switch 330b (S402).

제1 스위치(330a) 및 제2 스위치(330b)는 각각 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S403). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 제1 스위치(330a) 및 제2 스위치(330b)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.The first switch 330a and the second switch 330b respectively receive the group change preparation message from the controller 310 and verify the validity of the received group message (S403). Here, the first switch 330a and the second switch 330b may determine whether a precondition for executing a grammar or group message is valid for each message included in the received group message or group message. In addition, the first switch 330a and the second switch 330b may selectively determine whether resources for applying the group message are available.

이후, 제1 스위치(330a) 및 제2 스위치(330b)는 각각 그룹 메시지의 유효성 검증 결과를 포함하는 확인 메시지를 컨트롤러(310)에 전송한다(S404). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.Thereafter, the first switch 330a and the second switch 330b transmit an acknowledgment message including a result of the validity verification of the group message to the controller 310 (S404). Here, the acknowledgment message may include information on whether or not an error occurs in the group message. The first switch 330a and the second switch 330b may transmit an error code corresponding to an error generated when an error occurs in any one of a plurality of messages included in the group message as a result of validation of the group message, To the controller 310.

또한, 제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.In addition, the first switch 330a and the second switch 330b can receive the group message from the controller 310 and store the received group message in the temporary storage area. Here, the first switch 330a and the second switch 330b may delete the group message stored in the temporary storage area if an error occurs after verifying the validity of the group message.

컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S405).The controller 310 waits until it receives an acknowledgment message for the group message from the first switch 330a and the second switch 330b. When the controller 310 receives the acknowledgment message, the controller 310 transmits information indicating an error to the received acknowledgment message It is confirmed whether it is included (S405).

컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b) 중 어느 하나의 스위치에서라도 수신한 확인 메시지에 그룹 메시지에 오류가 발생하였음을 지시하는 오류 코드가 포함된 경우, 모든 스위치 즉, 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행 취소를 지시하는 그룹 변경 취소 메시지를 전송한다(S406).If the confirmation message received from any one of the first switch 330a and the second switch 330b includes an error code indicating that an error has occurred in the group message, And transmits a group change cancel message instructing the first switch 330a and the second switch 330b to cancel the group message (S406).

제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S407).When receiving the group change cancel message from the controller 310, the first switch 330a and the second switch 330b may delete the group message stored in the temporary storage area without executing the received group message (S407 ).

또는, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 수신한 확인 메시지가 모두 오류가 발생하지 않은 것으로 지시하는 경우, 모든 스위치 즉 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다(S408).Alternatively, when the controller 310 indicates that all of the acknowledgment messages received from the first switch 330a and the second switch 330b have not occurred, all the switches, that is, the first switch 330a and the second switch 330b, And transmits a group change execution message instructing execution of the group message to the group change execution message 330b (S408).

제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S409). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.When receiving the group change execution message from the controller 310, the first switch 330a and the second switch 330b change the corresponding flow entry (or state) of the flow table based on the group message (S409). Here, the first switch 330a and the second switch 330b may add, delete, or change the flow entry according to a command indicated by the group message.

도 4를 참조하여 설명한 바와 같이 본 발명에서는 복수의 스위치에 저장된 플로우 테이블에 대한 연관성(또는 순차적인 작업이 요구되는 상태들)을 고려하여 그룹 메시지를 정의하고, 그룹 메시지를 수신한 복수의 스위치들 중 일부의 스위치에서 그룹 메시지에 오류가 발생하는 경우, 모든 스위치의 그룹 메시지 실행을 취소하도록 한다. 따라서, 복수의 스위치들의 상태 변경에 대한 일관성을 보장할 수 있다.
As described with reference to FIG. 4, in the present invention, a group message is defined in consideration of association (or states in which sequential operations are required) to a flow table stored in a plurality of switches, and a plurality of switches If an error occurs in a group message on some of the switches, be sure to cancel the group message execution on all switches. Therefore, it is possible to ensure consistency of the state change of the plurality of switches.

도 5는 본 발명의 일 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다. 5 is a conceptual diagram showing an application example of a transaction management method according to an embodiment of the present invention.

도 5에서는 트랜잭션 관리 방법의 적용 예로서 하나의 스위치(330) 내에 저장된 복수의 플로우 테이블들 중 서로 연관된 상태를 가지는 세 개의 플로우 테이블들 대상으로 그룹 메시지를 통해 플로우 테이블을 변경하는 과정을 예시하였다. 도 4에 도시한 스위치(330)의 유입 포트(ingress port), 출력 포트1(output port1) 및 출력포트 2(output port2)는 물리적인 포트일 수도 있고, 스위치(330)가 정의한 논리적인 포트일 수도 있다.FIG. 5 illustrates a process of changing a flow table through a group message to three flow tables having mutually related states among a plurality of flow tables stored in one switch 330 as an application example of the transaction management method. The ingress port, output port 1 and output port 2 of the switch 330 shown in FIG. 4 may be a physical port or a logical port defined by the switch 330 It is possible.

먼저, 도 5에 도시한 예에서 일관성이 유지되어야 하는 플로우 테이블의 변경 조건은 하기와 같다.First, the condition for changing the flow table, which should be consistent in the example shown in Fig. 5, is as follows.

첫 째, 스위치(330)의 유입 포트(ingress port)로 입력된 패킷 중 플로우 테이블 1의 매치필드 TCP_SRC1에 부합하는 패킷은 출력 포트1(output port1)로 포워딩 되어야 한다. 여기서, 출력 포트1로 패킷 포워딩을 위한 액션은 “Output port1”로 표현될 수 있고, 해당 액션은 플로우 테이블 2에 정의되어 있을 때, 플로우 테이블 1의 매치 필드 TCP_SRC1에 대응되는 액션은 “Goto-Table2” 로 표현될 수 있다.First, a packet matching the match field TCP_SRC1 of the flow table 1 among the packets input to the ingress port of the switch 330 should be forwarded to the output port 1. Here, the action for packet forwarding to the output port 1 can be expressed as " Output port1 ", and when the action is defined in the flow table 2, the action corresponding to the match field TCP_SRC1 of the flow table 1 is " Goto- &Quot;

둘 째, 스위치(330)의 유입 포트로 입력된 패킷 중 플로우 테이블 1의 매치필드 TCP_SRC2에 부합하는 패킷은 출력 포트2(output port2)로 포워딩 되어야 한다. 여기서, 출력 포트2로 패킷 포워딩을 위한 액션은 “Output port2”로 표현될 수 있고, 해당 액션은 플로우 테이블 3에 정의되어 있을 때, 플로우 테이블 1의 매치 필드 TCP_SRC2에 대응되는 액션은 “Goto-Table3” 으로 표현될 수 있다.Second, a packet matching the match field TCP_SRC2 of the flow table 1 among the packets input to the incoming port of the switch 330 should be forwarded to the output port 2. Here, the action for packet forwarding to the output port 2 can be expressed as " Output port2 ", and when the action is defined in the flow table 3, the action corresponding to the match field TCP_SRC2 of the flow table 1 is " Goto- &Quot;

상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어에 문제가 발생하거나, 패킷이 폐기될 수 있다. The above two flow table changing conditions must be applied at the same time. If only one of the above two flow table changing conditions is applied, there may be a problem in packet flow control or a packet may be discarded.

예를 들어, 상기 첫 째 조건이 변경되지 않아 플로우 테이블 1의 매치필드 TCP_SRC1에 부합하는 패킷은 출력 포트2(output port2)로 포워딩 되는 것으로 유지되고, 둘 째 조건만 변경된 경우, TCP_SRC1 및 TCP_SRC2에 부합하는 패킷이 모두 출력 포트2(output port2)로 포워딩 되어 스위치(330) 내부에서 패킷의 충돌이 발생할 수 있다.For example, since the first condition is not changed, the packet matching the match field TCP_SRC1 of the flow table 1 is maintained to be forwarded to the output port 2, and when only the second condition is changed, the TCP_SRC1 and the TCP_SRC2 May be forwarded to the output port 2, resulting in a packet collision inside the switch 330.

따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 플로우 테이블 1, 2 및 3의 해당 플로우 엔트리가 동시에 변경되어야 한다. Therefore, the first flow table change condition and the second flow table change condition must be satisfied at the same time, and corresponding flow entries of the flow tables 1, 2, and 3 must be changed at the same time.

본 발명에서는 도 3를 통해 설명한 바와 같이 컨트롤러가 서로 연관된 복수의 플로우 엔트리들을 동시에 변경시키기 위한 그룹 메시지를 정의하여 스위치(330)에 전송하고, 스위치(330)가 수신한 그룹 메시지가 지시하는 복수의 변경 명령을 실행하도록 함으로써 하나의 스위치(330) 내에서 연관성 있는 Flow Table의 변경을 일관성 있게 수행 할 수 있다.
In the present invention, as described with reference to FIG. 3, the controller defines a group message for simultaneously changing a plurality of flow entries associated with each other, transmits the group message to the switch 330, It is possible to consistently perform the change of the associated Flow Table in one switch 330 by executing the change command.

도 6은 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다. 6 is a conceptual diagram illustrating an application example of a transaction management method according to another embodiment of the present invention.

도 6에서는 트랜잭션 관리 방법의 적용 예로서 복수의 스위치 내에 각각 저장된 복수의 플로우 테이블들 중 서로 연관된 상태를 가지는 두 개의 플로우 테이블들을 대상으로 그룹 메시지를 통해 플로우 테이블을 변경하는 과정을 예시하였다. 도 6에서는 설명의 편의를 위해 복수의 스위치들 중 제1 스위치(330a)의 출력 포트가 제2 스위치(330b)의 유입 포트에 연결된 네트워크 환경을 예시하였으나, 두 개의 이상의 스위치들에 대해서도 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법이 동일하게 적용될 수 있음은 자명하다. 또한, 각 스위치(330a, 330b)의 유입 포트 및 출력 포트는 물리적인 포트일 수도 있고, 각 스위치(330a, 330b)가 정의한 논리적인 포트일 수도 있다.6 illustrates a process of changing a flow table through a group message to two flow tables having mutually related states among a plurality of flow tables stored in a plurality of switches, respectively, as an application example of the transaction management method. 6, the output port of the first switch 330a among the plurality of switches is connected to the input port of the second switch 330b. However, for the two or more switches, It is obvious that the transaction management method according to another embodiment can be applied equally. In addition, the incoming and outgoing ports of each switch 330a, 330b may be a physical port or a logical port defined by each switch 330a, 330b.

먼저, 도 6에 도시한 예에서 일관성이 유지되어야 하는 플로우 테이블의 변경 조건은 하기와 같다.First, the change condition of the flow table, which should be kept consistent in the example shown in Fig. 6, is as follows.

첫 째, 제1 스위치(330a)의 유입 포트(ingress port)로 입력된 패킷 중 플로우 테이블의 매치필드 TCP_DST1에 부합하는 패킷은 VLAN1으로 태깅(tagging)한 후 출력 포트1(output port1)로 포워딩 되어야 한다. 여기서, VLAN1으로 태깅을 지시하는 액션은 “push VLAN1”으로 표현될 수 있고, 출력 포트1로 패킷 포워딩을 위한 액션은 “Output port1”로 표현될 수 있다. First, among the packets input to the ingress port of the first switch 330a, the packet matching the match field TCP_DST1 of the flow table must be tagged to VLAN1 and forwarded to the output port 1 do. Here, the action for instructing tagging to VLAN1 can be expressed as " push VLAN1 ", and the action for packet forwarding to output port 1 can be expressed as " Output port1 ".

둘 째, 제2 스위치(330b)의 유입 포트로 입력된 패킷 중 플로우 테이블의 매치필드 TCP_DST1 및 VLAN1으로 태깅의 매치필드에 부합하는 패킷은 VLAN1 태깅을 분리한 후, 출력 포트2(output port2)로 포워딩 되어야 한다. 여기서, VLAN1 태깅을 분리하기 위한 액션은 “Pop VLAN1”으로 표현될 수 있고, 출력 포트2로 패킷 포워딩을 위한 액션은 “Output port2”로 표현될 수 있다.Second, among the packets input to the entry port of the second switch 330b, the packet matching the match field of the tagging with the match field TCP_DST1 of the flow table and the VLAN1 is separated from the VLAN1 tagging and output to the output port 2 Be forwarded. Here, an action for separating VLAN 1 tagging can be expressed as "Pop VLAN 1", and an action for packet forwarding to output port 2 can be expressed as "Output port 2".

상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어가 문제가 발생하거나, 패킷이 폐기될 수 있다. The above two flow table changing conditions must be applied at the same time. If only one of the above two flow table changing conditions is applied, the flow control of the packet may cause a problem or the packet may be discarded.

예를 들어, 상기 첫 째 조건만 변경되고 둘 째 조건이 변경되지 않는 경우 제1 스위치(330a)의 출력 포트1을 통해 출력된 패킷이 제2 스위치(330b)의 출력 포트2로 출력되지 않는 문제가 발생할 수 있다.For example, when only the first condition is changed and the second condition is not changed, a problem is that a packet output through the output port 1 of the first switch 330a is not output to the output port 2 of the second switch 330b May occur.

따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 제1 스위치(330a) 및 제2 스위치(330b)에 각각 저장된 플로우 테이블의 해당 플로우 엔트리가 동시에 변경되어야 한다. Therefore, the first flow table change condition and the second flow table change condition must be satisfied at the same time, and corresponding flow entries of the flow tables stored respectively in the first switch 330a and the second switch 330b must be simultaneously changed do.

본 발명에서는 도 4를 통해 설명한 바와 같이 컨트롤러가 복수의 스위치들간 서로 연관된 복수의 플로우 엔트리들을 동시에 변경시키기 위한 그룹 메시지를 정의하여 복수의 스위치에 전송하고, 각 스위치가 수신한 그룹 메시지가 지시하는 복수의 변경 명령을 실행하도록 함으로써 복수의 스위치들간에 연관성 있는 Flow Table의 변경을 일관성 있게 수행 할 수 있다.
In the present invention, as described with reference to FIG. 4, the controller defines a group message for simultaneously changing a plurality of flow entries associated with a plurality of switches, transmits the group message to a plurality of switches, So that it is possible to consistently perform the change of the related Flow Table between a plurality of switches.

도 7은 본 발명의 실시예들에 적용되는 그룹 메시지 구조를 예를 들어 도시한 것이다.FIG. 7 illustrates an example of a group message structure applied to embodiments of the present invention.

도 7을 참조하면, 본 발명의 일 실시예에 따른 그룹 메시지 구조는 크게 헤더부와 메시지부로 구성될 수 있다.Referring to FIG. 7, the group message structure according to an exemplary embodiment of the present invention may include a header part and a message part.

헤더부는 프로토콜 헤더(610)와 그룹 메시지 헤더(620)로 구성될 수 있다. 프로토콜 헤더(610)는 예를 들어 오픈플로우 프로토콜 헤더로 구성될 수 있고 8바이트(byte)로 구성될 수 있다. The header portion may be composed of a protocol header 610 and a group message header 620. The protocol header 610 may be composed of, for example, an open flow protocol header and may be composed of 8 bytes.

그룹 메시지 헤더(620)는 타입(type), 카운트(count), 길이(length), 그룹 아이디(group id) 정보를 포함할 수 있다.The group message header 620 may include a type, a count, a length, and a group id.

타입(type) 정보는 2바이트로 구성될 수 있고, 그룹 메시지의 유형을 의미할 수 있다. 그룹 메시지의 유형에는 전술한 바와 같이 그룹 변경 준비(Group Modify Prepare), 확인(ACK), 그룹 변경 취소(Group Modify Cancel), 그룹 변경 실행(Group Modify Execute) 메시지를 포함할 수 있다. The type information may be composed of two bytes and may indicate the type of group message. The type of group message may include a Group Modify Prepare, an acknowledgment (ACK), a Group Modify Cancel, and a Group Modify Execute message as described above.

카운트(count) 정보는 4바이트로 구성될 수 있고, 그룹 메시지내에 포함된 메시지 개수 정보를 의미할 수 있다.The count information may be composed of 4 bytes and may mean the number of messages included in the group message.

길이(length) 정보는 2바이트로 구성될 수 있고, 그룹 메시지의 길이를 의미할 수 있다.The length information may be composed of 2 bytes and may mean the length of the group message.

그룹 아이디(group id) 정보는 1바이트로 구성될 수 있고, 그룹 메시지의 고유 식별자를 의미할 수 있다.The group ID information may be composed of one byte and may mean a unique identifier of the group message.

메시지부(630)는 플로우 테이블 아이디(table_id), 명령어(command), 우선순위(priority), 출력 포트(out_port), 매치(OFP_MATCH), 에러 코드(err_code) 정보를 포함할 수 있다.The message unit 630 may include a table_id, a command, a priority, an output port, an OFP_MATCH, and an err_code information.

플로우 테이블 아이디(table_id) 정보는 1바이트로 구성될 수 있고, 플로우 테이블을 구분하기 위한 고유 식별자를 의미할 수 있다.The flow table ID (table_id) information may be composed of one byte and may mean a unique identifier for identifying a flow table.

명령어(command) 정보는 1바이트로 구성될 수 있고, 플로우 테이블의 변경 명령을 의미할 수 있다. 명령어는 플로우 테이블에 플로우 엔트리의 추가를 지시하는 Add 명령어, 플로우 엔트리의 변경을 지시하는 Modify 명령어, 플로우 엔트리의 삭제를 지시하는 Delete 명령어를 포함할 수 있다.The command information may consist of one byte and may mean a change command of the flow table. The command may include an Add command for instructing addition of a flow entry to the flow table, a Modify command for instructing a change of the flow entry, and a Delete command for instructing deletion of the flow entry.

우선순위(priority) 정보는 2바이트로 구성될 수 있고, 플로우 엔트리의 우선순위를 지시할 수 있다. The priority information can be composed of two bytes and can indicate the priority of the flow entry.

출력 포트(out_port) 정보는 4바이트로 구성될 수 있고, 출력 포트를 의미할 수 있다.The out port information may be composed of 4 bytes and may mean an output port.

매치(OFP_MATCH) 정보는 8바이트로 구성될 수 있고, 매치 필드를 정의하는 구조체 정보를 의미할 수 있다.The OFP_MATCH information may be composed of 8 bytes and may mean structure information defining a match field.

에러 코드(err_code) 정보는 2바이트로 구성될 수 있고, 에러의 유형을 의미할 수 있다.
The error code (err_code) information may consist of two bytes and may indicate the type of error.

도 8은 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 실행하는 컨트롤러와 스위치의 구성의 일 예를 나타낸다.8 shows an example of a configuration of a controller and a switch for executing a transaction management method according to the embodiments of the present invention.

도 8에서는 하나의 컨트롤러(310)와 하나의 스위치(330)만 도시하였으나, 이는 설명의 편의를 위한 것으로, 실질적인 SDN 네트워크에서는 복수의 스위치들이 하나 또는 하나 이상의 컨트롤러(310)와 연결될 수 있고, 이 경우에도 도 8에 예시한 컨트롤러(310) 및 스위치(330)의 구성이 동일하게 적용될 수 있다.Although only one controller 310 and one switch 330 are shown in FIG. 8, this is for convenience of explanation. In an actual SDN network, a plurality of switches may be connected to one or more controllers 310, The configurations of the controller 310 and the switch 330 illustrated in FIG. 8 can be applied equally.

도 8을 참조하면, 컨트롤러(310)는 제어부(311) 및 통신부(314)를 포함할 수 있다.Referring to FIG. 8, the controller 310 may include a control unit 311 and a communication unit 314.

제어부(311)는 일반 명령 제어 모듈(312) 및 그룹 명령 제어 모듈(313)을 포함할 수 있다. 여기서, 일반 명령 제어 모듈(312)과 그룹 명령 제어 모듈(313)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.The control unit 311 may include a general command control module 312 and a group command control module 313. [ Here, the general command control module 312 and the group command control module 313 may be configured as separate physical hardware (for example, a processor), and a logical software module .

일반 명령 제어 모듈(312)은 스위치(330)의 일반적인 관리를 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 스위치(330)의 관리를 위한 제어를 수행할 수 있다.The general command control module 312 is a module for handling general management of the switch 330, and can perform control for changing the flow table other than the flow table change using the group message or managing the switch 330.

그룹 명령 제어 모듈(313)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 제어를 수행하는 모듈로, 단일 스위치(330)내의 플로우 테이블들간 연관성 또는 복수의 스위치들의 플로우 테이블들간의 연관성을 판단하고, 판단 결과에 따라 서로 연관성이 있는 상태를 변경하기 위한 그룹 메시지를 생성한 후, 생성한 그룹 메시지를 그룹 변경 준비 메시지에 포함시켜 통신부(314)를 통해 스위치(330) 또는 스위치들에 전송하는 기능을 수행한다.The group command control module 313 is a module for performing control for changing the flow table using the group message as described above. The module command control module 313 determines the association between the flow tables in the single switch 330 or the association between the flow tables of the plurality of switches Generates a group message for changing the state of association according to the determination result, and transmits the generated group message to the switch 330 or the switches through the communication unit 314 by including the generated group message in the group change preparation message Function.

또한, 그룹 명령 제어 모듈(313)은 통신부(314)를 통해 스위치(330) 또는 스위치들로부터 그룹 메시지에 대한 확인 메시지를 수신하고, 확인 메시지가 에러를 지시하는 경우 그룹 명령어의 실행을 취소하는 그룹 변경 취소 메시지를 통신부(314)를 통해 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 전송한다.In addition, the group command control module 313 receives a confirmation message for the group message from the switch 330 or the switches through the communication unit 314, and forwards the group message to the group And transmits a change cancel message to the corresponding switch or switches that transmitted the group message through the communication unit 314. [

또는, 그룹 명령 제어 모듈(313)은 그룹 메시지에 에러가 발생하지 않은 경우에는 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다.Alternatively, if an error does not occur in the group message, the group command control module 313 transmits a group change execution message instructing execution of the group message to the corresponding switch or switches that transmitted the group message.

통신부(314)는 제어부(311)로부터 제공된 메시지들(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)을 제어부(311)의 제어에 따라 특정 스위치 또는 복수의 스위치에 전송하거나, 스위치로부터 수신한 메시지(예를 들면, 확인 메시지)를 제어부(311)에 제공하는 기능을 수행한다. 여기서 통신부(314)는 미리 정의된 프로토콜에 기초하여 스위치 또는 스위치들과 메시지를 송수신할 수 있다.The communication unit 314 transmits the messages (for example, a group change preparation message, a group change cancel message, a group change execution message, etc.) provided from the control unit 311 to a specific switch or a plurality of switches under the control of the control unit 311 And provides a control unit 311 with a message (for example, a confirmation message) received from the switch. Here, the communication unit 314 can send and receive messages with the switches or switches based on a predefined protocol.

스위치(330)는 통신부(331), 처리부(332) 및 저장부(335)를 포함할 수 있다.The switch 330 may include a communication unit 331, a processing unit 332, and a storage unit 335.

통신부(331)는 처리부(332)의 제어에 따라 네트워크를 통해 컨트롤러(310)로 메시지(예를 들면, 확인 메시지)를 송신하거나, 컨트롤러(310)로부터 메시지(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)를 수신하여 처리부(332)에 제공한다. 여기서, 통신부(331)는 미리 정의된 프로토콜에 따라 처리부(332)와 메시지를 송수신할 수 있다.The communication unit 331 transmits a message (for example, a confirmation message) to the controller 310 via the network under the control of the processing unit 332 or receives a message (for example, A group change cancel message, a group change execution message, and the like) to the processing unit 332. Here, the communication unit 331 can transmit / receive a message to / from the processing unit 332 according to a predefined protocol.

처리부(332)는 일반 명령 처리 모듈(333) 및 그룹 명령 처리 모듈(334)을 포함할 수 있다. 여기서, 일반 명령 처리 모듈(333)과 그룹 명령 처리 모듈(334)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.The processing unit 332 may include a general command processing module 333 and a group command processing module 334. [ Here, the general command processing module 333 and the group command processing module 334 may be constituted by separate physical hardware (for example, a processor), or a logical software module .

일반 명령 처리 모듈(333)은 컨트롤러(310)로부터 제공된 일반적인 제어 명령을 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 관리에 대한 명령의 처리를 담당할 수 있다.The general command processing module 333 is a module for processing a general control command provided from the controller 310 and is capable of handling a flow table change other than the change of the flow table using the group message or a command for management.

그룹 명령 처리 모듈(334)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 처리를 수행한다. 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 저장부(335)의 임시 저장 영역(337)에 저장한 후 문법이나, 선행 조건 및/또는 자원 가용성 등의 유효성 검증을 수행한다. 여기서, 그룹 명령 처리 모듈(334)을 그룹 메시지가 유효성 검증 결과를 포함하는 확인 메시지를 통신부(331)를 통해 컨트롤러(310)에 전송한다. 만약 그룹 메시지의 유효성 검증에 실패하는 경우, 스위치(330)는 오류 내용에 대응되는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송한다.The group command processing module 334 performs processing for changing the flow table using the group message as described above. Upon reception of the group message from the controller 310, the group command processing module 334 stores the received group message in the temporary storage area 337 of the storage unit 335 and stores the received message in the temporary storage area 337, . Here, the group command processing module 334 transmits to the controller 310 via the communication unit 331 a confirmation message including the result of the validity check of the group message. If the validation of the group message fails, the switch 330 transmits an error code corresponding to the error content to the controller 310 in the confirmation message.

또한, 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 변경 취소 메시지에 상응하여 임시 저장 영역(337)에 저장된 그룹 메시지를 삭제하고 플로우 테이블을 변경하지 않는다. 또는, 그룹 명령 처리 모듈(334)을 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 임시 저장 영여겡 저장된 그룹 메시지가 지시하는 내용에 따라 플로우 테이블 저장 영역(336)에 저장된 플로우 테이블을 변경한다.In addition, when receiving the group change cancel message from the controller 310, the group command processing module 334 deletes the group message stored in the temporary storage area 337 according to the received group change cancel message and changes the flow table I never do that. Alternatively, when receiving the group change execution message from the controller 310, the group command processing module 334 changes the flow table stored in the flow table storage area 336 according to the contents indicated by the group message stored in the temporary storage area do.

저장부(335)는 플로우 테이블 저장 영역(336)과 임시 저장 영역(337)을 포함할 수 있다. 여기서, 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)은 물리적으로 구분된 독립적인 저장 장치로 구성될 수도 있고, 물리적인 하나의 저장 장치에 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)이 논리적으로 할당되는 형태로 구성될 수도 있다.The storage unit 335 may include a flow table storage area 336 and a temporary storage area 337. Here, the flow table storage area 336 and the temporary storage area 337 may be constituted by physically separated independent storage devices, and a flow table storage area 336 and a temporary storage area 337 may be configured in a logically assigned form.

플로우 테이블 저장 영역(336)은 복수의 플로우 테이블이 저장되는 영역이고, 임시 저장 영역(337)은 컨트롤러(310)로부터 수신한 그룹 메시지가 일시적으로 저장되는 영역이다. 임시 저장 영역(337)에 저장된 그룹 메시지는 그룹 메시지의 유효성 검증에 실패하거나 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신한 경우, 또는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하여 플로우 테이블의 변경이 완료된 경우 그룹 명령 처리 모듈(334)의 제어에 따라 삭제될 수 있다.
The flow table storage area 336 is an area in which a plurality of flow tables are stored, and the temporary storage area 337 is an area in which a group message received from the controller 310 is temporarily stored. When the group message stored in the temporary storage area 337 fails to validate the group message or receives the group change cancel message from the controller 310 or receives the group change execution message from the controller 310 and changes the flow table May be deleted under the control of the group command processing module 334.

이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. It will be possible.

110 : 컨트롤러 120 : 스위치
121 : 플로우 테이블 123 : 그룹 테이블
125 : 오픈플로우 채널 201 : 매치 필드
202 : 우선순위 203 : 카운터
204 : 명령어 205 : 타임아웃
206 : 쿠키 310 : 컨트롤러
311 : 제어부 312 : 일반 명령 제어 모듈
312 : 그룹 명령 제어 모듈 314 : 통신부
330 : 스위치 330a : 제1 스위치
330b : 제2 스위치 331 : 통신부
332 : 처리부 333 : 일반 명령 처리 모듈
334 : 그룹 명령 처리 모듈 335 : 저장부
336 : 플로우 테이블 저장 영역 337 : 임시 저장 영역
610 : 프로토콜 헤더 620 : 그룹 메시지 헤더
630 : 메시지부
110: controller 120: switch
121: Flow table 123: Group table
125: Open flow channel 201: Match field
202: Priority 203: Counter
204: Instruction 205: Timeout
206: Cookie 310: Controller
311: Control section 312: General command control module
312: Group command control module 314:
330: switch 330a: first switch
330b: second switch 331:
332: Processing section 333: General command processing module
334: Group command processing module 335:
336: Flow table storage area 337: Temporary storage area
610: Protocol header 620: Group message header
630:

Claims (18)

컨트롤러에서 수행되는 트랜잭션 관리 방법으로,
스위치에 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계; 및
상기 그룹 메시지를 상기 스위치에 전송하는 단계를 포함하는 트랜잭션 관리 방법.
As a transaction management method performed on the controller,
Generating a group message for a change of an associated state among the flow tables stored in the switch; And
And sending the group message to the switch.
청구항 1에서,
상기 그룹 메시지는 상기 스위치 내의 복수의 플로우 테이블 중 서로 연관된 상태를 가지는 테이블들을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 1,
Wherein the group message is a message including a plurality of messages for simultaneously changing tables having mutually related states among a plurality of flow tables in the switch.
청구항 2에서,
상기 복수의 메시지는 동일한 구조를 가지며 상기 그룹 메시지 내에 반복적인 형태로 포함되는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 2,
Wherein the plurality of messages have the same structure and are repeatedly included in the group message.
청구항 1에서,
상기 그룹 메시지는 메시지의 유형, 메시지의 개수, 메시지의 길이 및 그룹 메시지의 식별자 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 1,
Wherein the group message includes at least one of a type of a message, a number of messages, a length of a message, and an identifier of a group message.
청구항 1에서,
상기 트랜잭션 관리 방법은,
상기 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 수신하는 단계; 및
상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 1,
The transaction management method includes:
Receiving an acknowledgment message indicating whether an error has occurred in the group message from the switch; And
And sending a message to the switch instructing execution or cancellation of the group message based on the confirmation message.
청구항 5에서,
상기 확인 메시지는 상기 그룹 메시지에 오류가 발생한 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 5,
Wherein the acknowledgment message includes an error code when an error occurs in the group message.
청구항 5에서,
상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계는,
상기 그룹 메시지에 포함된 복수의 메시지 중 적어도 하나의 메시지에 오류가 발생하였음을 지시하는 확인 메시지를 수신하는 경우, 상기 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 5,
Wherein the step of transmitting a message instructing execution or cancellation of the group message to the switch comprises:
And a message for canceling the group message is transmitted to the switch when receiving an acknowledgment message indicating that an error has occurred in at least one of a plurality of messages included in the group message. Way.
컨트롤러에서 수행되는 트랜잭션 관리 방법으로,
복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계; 및
상기 그룹 메시지를 상기 복수의 스위치에 전송하는 단계를 포함하는 트랜잭션 관리 방법.
As a transaction management method performed on the controller,
The method comprising: generating a group message for changing states of associated ones among flow tables stored in a plurality of switches, respectively; And
And transmitting the group message to the plurality of switches.
청구항 8에서,
상기 그룹 메시지는 상기 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태를 가지는 복수의 플로우 테이블을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 8,
Wherein the group message is a message including a plurality of messages for simultaneously changing a plurality of flow tables associated with each other among flow tables stored in the plurality of switches.
청구항 8에서,
상기 트랜잭션 관리 방법은,
상기 복수의 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 각각 수신하는 단계; 및
상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 8,
The transaction management method includes:
Receiving an acknowledgment message indicating whether an error has occurred in the group message from the plurality of switches; And
And transmitting a message instructing execution or cancellation of the group message to the plurality of switches based on the confirmation message.
청구항 10에서,
상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계는,
상기 복수의 스위치들 중 적어도 하나의 스위치로부터 상기 그룹 메시지의 오류 발생을 지시하는 확인 메시지를 수신하면, 상기 복수의 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송하는 것을 특징으로 하는 트랜잭션 관리 방법.
In claim 10,
Wherein the step of transmitting a message instructing execution or cancellation of the group message to the plurality of switches comprises:
And a message for canceling the group message is transmitted to the plurality of switches when receiving an acknowledgment message indicating an error occurrence of the group message from at least one of the plurality of switches. .
스위치에서 수행되는 트랜잭션 관리 방법으로,
저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 컨트롤러로부터 수신하는 단계;
상기 그룹 메시지의 오류를 검증하는 단계; 및
상기 그룹 메시지의 오류 여부 정보를 포함하는 확인 메시지를 상기 컨트롤러에 전송하는 단계를 포함하는 트랜잭션 관리 방법.
As a transaction management method performed on a switch,
Receiving a group message from a controller for a mutual state change among stored flow tables;
Verifying an error of the group message; And
And transmitting an acknowledgment message including information on whether or not the group message is erroneous to the controller.
청구항 12에 있어서,
상기 그룹 메시지를 컨트롤러로부터 수신하는 단계는,
수신한 상기 그룹 메시지를 임시 저장 영역에 저장하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
Wherein the receiving the group message from the controller comprises:
And storing the received group message in a temporary storage area.
청구항 12에 있어서,
상기 그룹 메시지의 오류를 검증하는 단계는,
상기 그룹 메시지의 문법 및 선행 조건 중 적어도 하나에 대한 유효성 여부를 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
The step of verifying the error of the group message comprises:
And determining whether at least one of a grammar and a pre-condition of the group message is valid.
청구항 12에 있어서,
상기 그룹 메시지의 오류를 검증하는 단계는,
상기 스위치의 자원 가용성을 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
The step of verifying the error of the group message comprises:
Wherein the resource availability of the switch is determined.
청구항 12에 있어서,
상기 확인 메시지는 상기 그룹 메시지에 오류가 있는 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
Wherein the acknowledgment message includes an error code if there is an error in the group message.
청구항 12에 있어서,
상기 트랜잭션 관리 방법은
상기 컨트롤러로부터 상기 그룹 메시지의 실행을 지시하는 실행 메시지를 수신하는 단계; 및
임시 저장 영역에 저장된 그룹 메시지의 내용에 기초하여 플로우 테이블을 변경하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
The transaction management method
Receiving an execution message instructing execution of the group message from the controller; And
And changing the flow table based on the contents of the group message stored in the temporary storage area.
청구항 12에 있어서,
상기 트랜잭션 관리 방법은
상기 컨트롤러로부터 상기 그룹 메시지의 취소를 지시하는 취소 메시지를 수신하는 단계; 및
임시 저장 영역에 저장된 그룹 메시지를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
The method of claim 12,
The transaction management method
Receiving a cancellation message instructing cancellation of the group message from the controller; And
Further comprising the step of deleting the group message stored in the temporary storage area.
KR1020130162372A 2013-07-17 2013-12-24 Methods for managing transaction in software defined networking network KR101595160B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/334,127 US9712431B2 (en) 2013-07-17 2014-07-17 Methods for managing transaction in software defined network
US15/624,144 US10404581B2 (en) 2013-07-17 2017-06-15 Methods for managing transaction in software defined network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130084098 2013-07-17
KR1020130084098 2013-07-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020160014971A Division KR101975082B1 (en) 2013-07-17 2016-02-05 Methods for managing transaction in software defined networking network

Publications (2)

Publication Number Publication Date
KR20150009909A true KR20150009909A (en) 2015-01-27
KR101595160B1 KR101595160B1 (en) 2016-02-17

Family

ID=52481916

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020130162372A KR101595160B1 (en) 2013-07-17 2013-12-24 Methods for managing transaction in software defined networking network
KR1020160014971A KR101975082B1 (en) 2013-07-17 2016-02-05 Methods for managing transaction in software defined networking network

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020160014971A KR101975082B1 (en) 2013-07-17 2016-02-05 Methods for managing transaction in software defined networking network

Country Status (1)

Country Link
KR (2) KR101595160B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101641496B1 (en) * 2015-03-19 2016-07-29 아토리서치(주) Method and apparatus for updating switch states of software defined network
JP2018088650A (en) * 2016-11-29 2018-06-07 富士通株式会社 Information processing apparatus, communication control method, and communication control program

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102454398B1 (en) 2018-02-19 2022-10-14 한국전자통신연구원 Decentralized software-defined networking method and apparatus
KR102275765B1 (en) * 2019-11-08 2021-07-09 아토리서치(주) Method, apparatus and computer program for processing flow rule transactions in software defined network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012111051A1 (en) * 2011-02-17 2012-08-23 Nec Corporation Flow communication system
US20130170503A1 (en) * 2010-10-15 2013-07-04 Masaaki Ooishi Switch system, and data forwarding method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130170503A1 (en) * 2010-10-15 2013-07-04 Masaaki Ooishi Switch system, and data forwarding method
WO2012111051A1 (en) * 2011-02-17 2012-08-23 Nec Corporation Flow communication system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Open Networking Foundation, "OpenFlow Switch Specification," Version 1.3.2 (Wire Protocol 0x04) ONF TS-009 (April 25, 2013)* *
Trestian, et al, "MiceTrap: Scalable traffic engineering of datacenter mice flows using OpenFlow." 2013 IFIP/IEEE International Symposium on Integrated Network Management (2013.05)* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101641496B1 (en) * 2015-03-19 2016-07-29 아토리서치(주) Method and apparatus for updating switch states of software defined network
JP2018088650A (en) * 2016-11-29 2018-06-07 富士通株式会社 Information processing apparatus, communication control method, and communication control program

Also Published As

Publication number Publication date
KR101595160B1 (en) 2016-02-17
KR101975082B1 (en) 2019-05-03
KR20160022327A (en) 2016-02-29

Similar Documents

Publication Publication Date Title
US10404581B2 (en) Methods for managing transaction in software defined network
US10126719B2 (en) Methods for changing an authority of control for a controller in environment having multiple controllers
US11184267B2 (en) Intelligent in-band telemetry auto-configuration for IP networks
US11588703B2 (en) Systems and methods for determining a topology of a network comprising a plurality of intermediary devices and paths
TWI501599B (en) Communication control system, and communication control method
WO2019233179A1 (en) Data message detection method, device and system
CN109088820B (en) Cross-device link aggregation method and device, computing device and storage medium
KR101975082B1 (en) Methods for managing transaction in software defined networking network
KR101803332B1 (en) Network system for internet of things
US9385944B2 (en) Communication system, path switching method and communication device
US10050859B2 (en) Apparatus for processing network packet using service function chaining and method for controlling the same
US9491043B2 (en) Communication path switching device, communication path switching method and communication path switching program
KR20140072343A (en) Method for handling fault in softwate defined networking networks
US10326681B2 (en) System and method to analyze route information in a network
US20090006650A1 (en) Communication device, communication method, communication interface, and program product
Vestin et al. FastReact: In-network control and caching for industrial control networks using programmable data planes
JP4964666B2 (en) Computer, program and method for switching redundant communication paths
KR101581510B1 (en) Methods for changing an authority of control for a controller in multiple controller environment
US10333792B2 (en) Modular controller in software-defined networking environment and operating method thereof
Cabarkapa et al. Software-Defined Networking: The Impact of Scalability on Controller Performance
US20160308787A1 (en) Method for processing event between controller and network device
KR101707073B1 (en) Error detection network system based on sdn
Gadallah et al. A seven-dimensional state flow traffic modelling for multi-controller Software-Defined Networks considering multiple switches
Bergman et al. Formal Verification of FlowSync
Hillston et al. Towards a feasible active networking scenario

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
A107 Divisional application of patent
GRNT Written decision to grant