KR101595160B1 - Methods for managing transaction in software defined networking network - Google Patents
Methods for managing transaction in software defined networking network Download PDFInfo
- Publication number
- KR101595160B1 KR101595160B1 KR1020130162372A KR20130162372A KR101595160B1 KR 101595160 B1 KR101595160 B1 KR 101595160B1 KR 1020130162372 A KR1020130162372 A KR 1020130162372A KR 20130162372 A KR20130162372 A KR 20130162372A KR 101595160 B1 KR101595160 B1 KR 101595160B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- switch
- group
- group message
- controller
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000006855 networking Effects 0.000 title abstract description 6
- 238000007726 management method Methods 0.000 claims abstract description 33
- 230000008859 change Effects 0.000 claims description 65
- 238000012790 confirmation Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 30
- 230000009471 action Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 12
- 230000004888 barrier function Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 235000014510 cooky Nutrition 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/55—Prevention, detection or correction of errors
- H04L49/557—Error correction, e.g. fault recovery or fault tolerance
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법이 개시된다. 컨트롤러에서 수행되는 트랜잭션 관리 방법은 스위치에 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하여 스위치에 전송하며, 스위치는 그룹 메시지의 유효성을 검증하여 컨트롤러에 보고한다. 컨트롤러는 그룹 메시지에 에러가 없는 경우 그룹 메시지의 실행을 지시한다. 따라서, 단일 스위치 또는 복수의 스위치들에 대한 트랜잭션의 동시성, 일관성 및 원자성을 보장할 수 있다.A method for managing transactions in a software defined networking network is disclosed. The transaction management method performed by the controller generates a group message for changing the state of the associated one of the flow tables stored in the switch, and transmits the group message to the switch. The switch verifies the group message and reports it to the controller. The controller instructs the execution of the group message if there is no error in the group message. Thus, the concurrency, consistency, and atomicity of transactions for a single switch or a plurality of switches can be guaranteed.
Description
본 발명은 소프트웨어 정의 네트워킹 기술에 관한 것으로, 더욱 상세하게는 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법에 관한 것이다.BACKGROUND OF THE
일반적인 라우터 또는 스위치 기반으로 구성된 네트워크는 복잡한 프로토콜과 기능을 기반으로 구성되고, 각 장비 업체마다 장비를 운영하는 방식이나 사용자 인터페이스가 다르기 때문에 네트워크 운용자 또는 연구자가 새로운 네트워크 프로토콜을 개발하여 네트워크에 적용하기가 어렵고 네트워크를 확장하거나 네트워크 장비들을 서로 연동시키기 어려운 문제가 있다. 이와 같은 문제를 해결하기 위해 개방형 인터페이스를 갖는 스위치나 라우터 기술이 연구되었으나, 개방형 인터페이스를 제공하는 네트워크 기술들은 성능 대비 가격이 높기 때문에 상용화에 어려움이 있었다.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
스위치(120)는 패킷의 룩업(lookup) 및 포워딩(forwarding)에 사용하는 하나 또는 그 이상의 플로우 테이블(121)과 그룹 테이블(123)을 포함하고, 컨트롤러(110)와 통신을 위한 오픈플로우 채널(125)을 포함한다. The
스위치에 포함된 각 플로우 테이블(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
매치 필드(201)는 패킷의 매치를 위한 정보로, 유입 포트(ingress port), 패킷 헤더 정보를 포함할 수 있고, 선택적으로 이전 플로우 테이블에서 지정된 메타데이터를 포함할 수 있다. 우선순위(202)는 플로우 엔트리의 매칭 우선순위를 의미한다. 카운터(203)는 패킷이 매치되었을 때 갱신되는 값이다. 명령어(204)는 액션 집합(action sets)이나 파이프라인 처리(pipeline processing)를 변경하기 위해 사용된다. 타임아웃(205)은 플로우가 스위치에 의해 만료되기 전까지의 최대 시간 또는 유휴 시간(idle time)을 의미한다. 쿠키(206)는 컨트롤러에 의해 선택되는 불분명한 데이터 값(opaque data value)으로, 컨트롤러가 플로우 통계, 플로우 변경, 플로우 삭제 등을 필터링하기 위해 사용될 수 있다.The
패킷의 처리를 위한 매칭은 스위치(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
스위치(120)는 매칭 플로우 엔트리가 발견되는 경우, 매칭된 특정 플로우 엔트리와 연관된 명령을 실행한다. 또는 매칭 엔트리가 플로우 테이블에서 발견되지 않는 경우, 스위치(120)는 패킷을 오픈플로우 채널(125)을 통해 컨트롤러(110)로 포워딩하거나, 폐기(drop)할 수도 있고, 다음 플로우 테이블에서 매칭 처리를 계속할 수도 있다.The
각 플로우 엔트리와 연관된 명령어들은 액션이나, 스위치 내에서 파이프라인 처리를 수정하기 위한 명령을 포함한다. 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
그룹 테이블은 복수의 그룹 엔트리(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-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
컨트롤러-투-스위치 메시지는 상태 변경(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
비동기 메시지는 플로우 삭제(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
대칭 메시지는 헬로(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
일반적으로 컨트롤러(110)가 스위치(120)의 플로우 테이블을 변경할 때는 상기한 상태 변경(Modify-State) 메시지의 명령어 구분 정보에 변경 유형을 지정하여 스위치(120)에 전송한다. 컨트롤러(110)는 상태 변경 메시지를 이용하여 스위치(120)의 플로우 테이블에 한 건씩 플로우 엔트리를 추가 변경 또는 삭제할 수 있다.Generally, when the
한편, 스위치(120)는 복수의 플로우 엔트리에 대한 변경을 지시하는 복수의 상태 변경 메시지에 대해 각 상태 변경 메시지별로 즉시 컨트롤러(110)에 응답하지 않고, 오류가 발생한 경우에만 에러(Error) 메시지를 컨트롤러(110)에 전송한다.On the other hand, the
또한, 컨트롤러(110)는 스위치(120)에게 전송하는 명령의 실행 순서를 보장하기 위해 배리어(Barrier) 메시지를 사용할 수 있다. 예를 들어, 컨트롤러(110)가 특정 시점에 스위치(120)에게 배리어 메시지를 전송하면, 스위치(120)는 배리어 메시지를 수신하기 전까지의 수신한 모든 명령을 실행한 후, 실행 결과를 컨트롤러(110)에 전송한다. 즉, 컨트롤러(110)는 일련의 명령 또는 작업(operation)이 순차적으로 실행되어야 하는 경우, 배리어 메시지를 이용하여 스위치(120)의 명령 또는 작업 실행 순서를 제어할 수 있다.In addition, the
상술한 바와 같이 일반적인 플로우 테이블 변경 방법에서는 스위치(120)가 컨트롤러(110)로부터 수신한 상태 변경 메시지에 대해 변경 건 별로 즉시 응답하지 않고 오류가 발생한 경우에만 컨트롤러(110)에게 에러 메시지를 전송한다. 따라서, 플로우 테이블을 변경하는 과정에서 실제로 에러가 발생했음에도 불구하고 네트워크의 장애 또는 스위치(120)의 통신 불능 상태로 인하여 스위치(120)가 컨트롤러(110)에 에러 메시지를 전달하지 못하는 경우에도 컨트롤러(110)는 플로우 테이블의 변경이 정상적으로 실행된 것으로 간주하고 이후의 제어를 수행하는 문제가 발생할 수 있다.As described above, in the general flow table changing method, the
또한, 컨트롤러(110)가 스위치(120)의 순차적인 명령 실행 순서를 보장하기 위해 배리어 메시지를 사용하고 있다. 그러나, 배리어 메시지만으로는 하나 또는 복수의 플로우 테이블에서 서로 연관이 있는 플로우 엔트리들(또는 상태들)에 대한 변경 여부를 컨트롤러(110)가 정확하게 확인할 수 없다.In addition, the
또한, 상술한 플로우 테이블 변경 방법에서는 각 플로우 테이블 변경건에 대해 하나의 상태 변경 메시지를 전송하여 플로우 테이블을 변경하기 때문에, 복수의 플로우 테이블 변경(또는 복수의 상태 변경)이 모두 적용되어야 하거나 모두 적용되지 않아야 하는 원자성(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
도 3을 참조하면, 컨트롤러(310)는 스위치(330) 내부의 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성이나 순차적인 작업이 요구되는 플로우 엔트리들을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S301). 여기서, 그룹 메시지는 스위치(330) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다. Referring to FIG. 3, the
이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비(Group Modify Prepare) 메시지를 스위치(330)에 전송한다(S302).Then, the
스위치(330)는 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S303). 여기서, 스위치(330)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 스위치(330)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.The
이후, 스위치(330)는 그룹 메시지의 유효성 검증 결과를 포함하는 확인(ACK) 메시지를 컨트롤러(310)에 전송한다(S304). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 스위치(330)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.Thereafter, the
또한, 스위치(330)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 스위치(330)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.In addition, when the
컨트롤러(310)는 스위치(330)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S305).The
컨트롤러(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
스위치(330)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S307).If the
또는, 컨트롤러(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
스위치(330)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S309). 여기서, 스위치(330)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.
When receiving the group change execution message from the
도 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
도 4를 참조하면, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)에 각각 저장된 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성(또는 순차적인 작업이 요구되는 상태들)을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S401). 여기서, 그룹 메시지는 제1 스위치(330a) 및 제2 스위치(330b) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다. Referring to FIG. 4, the
이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비 메시지를 제1 스위치(330a) 및 제2 스위치(330b)에 전송한다(S402).Thereafter, the
제1 스위치(330a) 및 제2 스위치(330b)는 각각 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S403). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 제1 스위치(330a) 및 제2 스위치(330b)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.The
이후, 제1 스위치(330a) 및 제2 스위치(330b)는 각각 그룹 메시지의 유효성 검증 결과를 포함하는 확인 메시지를 컨트롤러(310)에 전송한다(S404). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.Thereafter, the
또한, 제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.In addition, the
컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S405).The
컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b) 중 어느 하나의 스위치에서라도 수신한 확인 메시지에 그룹 메시지에 오류가 발생하였음을 지시하는 오류 코드가 포함된 경우, 모든 스위치 즉, 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행 취소를 지시하는 그룹 변경 취소 메시지를 전송한다(S406).If the confirmation message received from any one of the
제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S407).When receiving the group change cancel message from the
또는, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 수신한 확인 메시지가 모두 오류가 발생하지 않은 것으로 지시하는 경우, 모든 스위치 즉 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다(S408).Alternatively, when the
제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S409). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.When receiving the group change execution message from the
도 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
먼저, 도 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
둘 째, 스위치(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
상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어에 문제가 발생하거나, 패킷이 폐기될 수 있다. 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
따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 플로우 테이블 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
도 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
먼저, 도 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
둘 째, 제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
상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어가 문제가 발생하거나, 패킷이 폐기될 수 있다. 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
따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 제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
본 발명에서는 도 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
그룹 메시지 헤더(620)는 타입(type), 카운트(count), 길이(length), 그룹 아이디(group id) 정보를 포함할 수 있다.The
타입(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
플로우 테이블 아이디(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
도 8을 참조하면, 컨트롤러(310)는 제어부(311) 및 통신부(314)를 포함할 수 있다.Referring to FIG. 8, the
제어부(311)는 일반 명령 제어 모듈(312) 및 그룹 명령 제어 모듈(313)을 포함할 수 있다. 여기서, 일반 명령 제어 모듈(312)과 그룹 명령 제어 모듈(313)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.The
일반 명령 제어 모듈(312)은 스위치(330)의 일반적인 관리를 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 스위치(330)의 관리를 위한 제어를 수행할 수 있다.The general
그룹 명령 제어 모듈(313)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 제어를 수행하는 모듈로, 단일 스위치(330)내의 플로우 테이블들간 연관성 또는 복수의 스위치들의 플로우 테이블들간의 연관성을 판단하고, 판단 결과에 따라 서로 연관성이 있는 상태를 변경하기 위한 그룹 메시지를 생성한 후, 생성한 그룹 메시지를 그룹 변경 준비 메시지에 포함시켜 통신부(314)를 통해 스위치(330) 또는 스위치들에 전송하는 기능을 수행한다.The group
또한, 그룹 명령 제어 모듈(313)은 통신부(314)를 통해 스위치(330) 또는 스위치들로부터 그룹 메시지에 대한 확인 메시지를 수신하고, 확인 메시지가 에러를 지시하는 경우 그룹 명령어의 실행을 취소하는 그룹 변경 취소 메시지를 통신부(314)를 통해 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 전송한다.In addition, the group
또는, 그룹 명령 제어 모듈(313)은 그룹 메시지에 에러가 발생하지 않은 경우에는 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다.Alternatively, if an error does not occur in the group message, the group
통신부(314)는 제어부(311)로부터 제공된 메시지들(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)을 제어부(311)의 제어에 따라 특정 스위치 또는 복수의 스위치에 전송하거나, 스위치로부터 수신한 메시지(예를 들면, 확인 메시지)를 제어부(311)에 제공하는 기능을 수행한다. 여기서 통신부(314)는 미리 정의된 프로토콜에 기초하여 스위치 또는 스위치들과 메시지를 송수신할 수 있다.The
스위치(330)는 통신부(331), 처리부(332) 및 저장부(335)를 포함할 수 있다.The
통신부(331)는 처리부(332)의 제어에 따라 네트워크를 통해 컨트롤러(310)로 메시지(예를 들면, 확인 메시지)를 송신하거나, 컨트롤러(310)로부터 메시지(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)를 수신하여 처리부(332)에 제공한다. 여기서, 통신부(331)는 미리 정의된 프로토콜에 따라 처리부(332)와 메시지를 송수신할 수 있다.The
처리부(332)는 일반 명령 처리 모듈(333) 및 그룹 명령 처리 모듈(334)을 포함할 수 있다. 여기서, 일반 명령 처리 모듈(333)과 그룹 명령 처리 모듈(334)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.The
일반 명령 처리 모듈(333)은 컨트롤러(310)로부터 제공된 일반적인 제어 명령을 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 관리에 대한 명령의 처리를 담당할 수 있다.The general
그룹 명령 처리 모듈(334)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 처리를 수행한다. 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 저장부(335)의 임시 저장 영역(337)에 저장한 후 문법이나, 선행 조건 및/또는 자원 가용성 등의 유효성 검증을 수행한다. 여기서, 그룹 명령 처리 모듈(334)을 그룹 메시지가 유효성 검증 결과를 포함하는 확인 메시지를 통신부(331)를 통해 컨트롤러(310)에 전송한다. 만약 그룹 메시지의 유효성 검증에 실패하는 경우, 스위치(330)는 오류 내용에 대응되는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송한다.The group
또한, 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 변경 취소 메시지에 상응하여 임시 저장 영역(337)에 저장된 그룹 메시지를 삭제하고 플로우 테이블을 변경하지 않는다. 또는, 그룹 명령 처리 모듈(334)을 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 임시 저장 영여겡 저장된 그룹 메시지가 지시하는 내용에 따라 플로우 테이블 저장 영역(336)에 저장된 플로우 테이블을 변경한다.In addition, when receiving the group change cancel message from the
저장부(335)는 플로우 테이블 저장 영역(336)과 임시 저장 영역(337)을 포함할 수 있다. 여기서, 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)은 물리적으로 구분된 독립적인 저장 장치로 구성될 수도 있고, 물리적인 하나의 저장 장치에 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)이 논리적으로 할당되는 형태로 구성될 수도 있다.The
플로우 테이블 저장 영역(336)은 복수의 플로우 테이블이 저장되는 영역이고, 임시 저장 영역(337)은 컨트롤러(310)로부터 수신한 그룹 메시지가 일시적으로 저장되는 영역이다. 임시 저장 영역(337)에 저장된 그룹 메시지는 그룹 메시지의 유효성 검증에 실패하거나 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신한 경우, 또는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하여 플로우 테이블의 변경이 완료된 경우 그룹 명령 처리 모듈(334)의 제어에 따라 삭제될 수 있다.
The flow
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
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;
Sending the group message to the switch;
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,
Wherein the step of transmitting a message instructing execution or cancellation of the group message to the switch comprises the steps of: when receiving an acknowledgment message indicating that an error has occurred in at least one of the plurality of messages included in the group message, And sending a message instructing the switch to cancel the group message.
상기 그룹 메시지는 상기 스위치 내의 복수의 플로우 테이블 중 서로 연관된 상태를 가지는 테이블들을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.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.
상기 복수의 메시지는 동일한 구조를 가지며 상기 그룹 메시지 내에 반복적인 형태로 포함되는 것을 특징으로 하는 트랜잭션 관리 방법.In claim 2,
Wherein the plurality of messages have the same structure and are repeatedly included in the group message.
상기 그룹 메시지는 메시지의 유형, 메시지의 개수, 메시지의 길이 및 그룹 메시지의 식별자 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.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.
상기 확인 메시지는 상기 그룹 메시지에 오류가 발생한 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.In claim 1,
Wherein the acknowledgment message includes an error code when an error occurs in the group message.
복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계;
상기 그룹 메시지를 상기 복수의 스위치에 전송하는 단계;
상기 복수의 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 각각 수신하는 단계; 및
상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계를 포함하고,
상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계는, 상기 복수의 스위치들 중 적어도 하나의 스위치로부터 상기 그룹 메시지의 오류 발생을 지시하는 확인 메시지를 수신하면, 상기 복수의 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송하는 것을 특징으로 하는 트랜잭션 관리 방법.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;
Transmitting the group message to the plurality of switches;
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,
Wherein the step of transmitting a message instructing execution or cancellation of the group message to the plurality of switches comprises the steps of: when receiving an acknowledgment message indicating an error occurrence of the group message from at least one of the plurality of switches, And a message indicating the cancellation of the group message is transmitted to the switch of the group management apparatus.
상기 그룹 메시지는 상기 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태를 가지는 복수의 플로우 테이블을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.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.
저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 컨트롤러로부터 수신하는 단계;
상기 그룹 메시지의 오류를 검증하는 단계; 및
상기 그룹 메시지의 오류 여부 정보를 포함하는 확인 메시지를 상기 컨트롤러에 전송하는 단계를 포함하고,
상기 컨트롤러로부터 상기 그룹 메시지의 실행을 지시하는 실행 메시지 또는 상기 그룹 메시지의 취소를 지시하는 취소 메시지를 수신하고, 상기 실행 메시지 또는 상기 취소 메시지에 대응하여 임시 저장 영역에 저장된 그룹 메시지의 내용에 기초하여 플로우 테이블을 변경하거나, 임시 저장 영역에 저장된 그룹 메시지를 삭제하는 것을 특징으로 하는 트랜잭션 관리 방법.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 the error information of the group message to the controller,
Receiving an execution message instructing execution of the group message or a cancel message instructing cancellation of the group message from the controller, and based on the contents of the group message stored in the temporary storage area corresponding to the execution message or the cancel message, The flow table is changed or the group message stored in the temporary storage area is deleted.
상기 그룹 메시지를 컨트롤러로부터 수신하는 단계는,
수신한 상기 그룹 메시지를 임시 저장 영역에 저장하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.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.
상기 그룹 메시지의 오류를 검증하는 단계는,
상기 그룹 메시지의 문법 및 선행 조건 중 적어도 하나에 대한 유효성 여부를 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.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.
상기 그룹 메시지의 오류를 검증하는 단계는,
상기 스위치의 자원 가용성을 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.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.
상기 확인 메시지는 상기 그룹 메시지에 오류가 있는 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.The method of claim 12,
Wherein the acknowledgment message includes an error code if there is an error in the group message.
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 |
---|---|---|---|
KR1020130084098 | 2013-07-17 | ||
KR20130084098 | 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 KR20150009909A (en) | 2015-01-27 |
KR101595160B1 true 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) |
Families Citing this family (4)
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 |
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)
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 |
-
2013
- 2013-12-24 KR KR1020130162372A patent/KR101595160B1/en active IP Right Grant
-
2016
- 2016-02-05 KR KR1020160014971A patent/KR101975082B1/en active IP Right Grant
Patent Citations (2)
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)
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)* |
Also Published As
Publication number | Publication date |
---|---|
KR20150009909A (en) | 2015-01-27 |
KR20160022327A (en) | 2016-02-29 |
KR101975082B1 (en) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10404581B2 (en) | Methods for managing transaction in software defined network | |
US11184267B2 (en) | Intelligent in-band telemetry auto-configuration for IP networks | |
US10126719B2 (en) | Methods for changing an authority of control for a controller in environment having multiple controllers | |
WO2019233179A1 (en) | Data message detection method, device and system | |
TWI501599B (en) | Communication control system, and communication control method | |
US11588703B2 (en) | Systems and methods for determining a topology of a network comprising a plurality of intermediary devices and paths | |
KR101803332B1 (en) | Network system for internet of things | |
CN109088820B (en) | Cross-device link aggregation method and device, computing device and storage medium | |
US20090316581A1 (en) | Methods, Systems and Computer Program Products for Dynamic Selection and Switching of TCP Congestion Control Algorithms Over a TCP Connection | |
US10050859B2 (en) | Apparatus for processing network packet using service function chaining and method for controlling the same | |
CN101247353B (en) | Stream aging method and network appliance | |
KR101975082B1 (en) | Methods for managing transaction in software defined networking network | |
KR20140072343A (en) | Method for handling fault in softwate defined networking networks | |
US10326681B2 (en) | System and method to analyze route information in a network | |
US20160241485A1 (en) | Method for updating flow table | |
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 | |
CN111726201A (en) | AIRT-ROS virtual network card packet loss solution method | |
US10333792B2 (en) | Modular controller in software-defined networking environment and operating method thereof | |
Gadallah et al. | A seven-dimensional state flow traffic modelling for multi-controller Software-Defined Networks considering multiple switches | |
Kim et al. | Active control and management system for providing the ultra-low latency service on deterministic networks | |
US20160308787A1 (en) | Method for processing event between controller and network device | |
KR101707073B1 (en) | Error detection network system based on sdn |
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 |