KR101975082B1 - 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법 - Google Patents

소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법 Download PDF

Info

Publication number
KR101975082B1
KR101975082B1 KR1020160014971A KR20160014971A KR101975082B1 KR 101975082 B1 KR101975082 B1 KR 101975082B1 KR 1020160014971 A KR1020160014971 A KR 1020160014971A KR 20160014971 A KR20160014971 A KR 20160014971A KR 101975082 B1 KR101975082 B1 KR 101975082B1
Authority
KR
South Korea
Prior art keywords
message
group message
switch
group
controller
Prior art date
Application number
KR1020160014971A
Other languages
English (en)
Other versions
KR20160022327A (ko
Inventor
이세희
이정욱
안태진
한경아
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Publication of KR20160022327A publication Critical patent/KR20160022327A/ko
Application granted granted Critical
Publication of KR101975082B1 publication Critical patent/KR101975082B1/ko

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
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • 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
    • 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/0823Errors, e.g. transmission errors
    • 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
    • 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

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

소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법이 개시된다. 컨트롤러에서 수행되는 트랜잭션 관리 방법은 스위치에 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하여 스위치에 전송하며, 스위치는 그룹 메시지의 유효성을 검증하여 컨트롤러에 보고한다. 컨트롤러는 그룹 메시지에 에러가 없는 경우 그룹 메시지의 실행을 지시한다. 따라서, 단일 스위치 또는 복수의 스위치들에 대한 트랜잭션의 동시성, 일관성 및 원자성을 보장할 수 있다.

Description

소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법{METHODS FOR MANAGING TRANSACTION IN SOFTWARE DEFINED NETWORKING NETWORK}
본 발명은 소프트웨어 정의 네트워킹 기술에 관한 것으로, 더욱 상세하게는 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법에 관한 것이다.
일반적인 라우터 또는 스위치 기반으로 구성된 네트워크는 복잡한 프로토콜과 기능을 기반으로 구성되고, 각 장비 업체마다 장비를 운영하는 방식이나 사용자 인터페이스가 다르기 때문에 네트워크 운용자 또는 연구자가 새로운 네트워크 프로토콜을 개발하여 네트워크에 적용하기가 어렵고 네트워크를 확장하거나 네트워크 장비들을 서로 연동시키기 어려운 문제가 있다. 이와 같은 문제를 해결하기 위해 개방형 인터페이스를 갖는 스위치나 라우터 기술이 연구되었으나, 개방형 인터페이스를 제공하는 네트워크 기술들은 성능 대비 가격이 높기 때문에 상용화에 어려움이 있었다.
오픈플로우(OpenFlow) 기술은 고비용 문제를 해결하면서 사용자 또는 개발자에게 개방형 표준 인터페이스를 제공하기 위해서 출현하였다.
오픈플로우 기술은 네트워크 스위치의 패킷 포워딩(Packet Forwarding) 기능과 제어 기능을 분리하고, 이들 두 기능 간의 통신을 위한 표준화된 프로토콜을 제공한다. 따라서, 오픈플로우 기술을 이용하면 외부 제어 장치에서 구동되는 소프트웨어를 이용하여 장비 제조업체와 무관하게 스위치 내의 패킷 경로를 결정할 수 있고, 기존보다 더 정밀하게 트래픽을 관리할 수 있다.
ONF(Open Networking Foundation)는 오픈플로우를 기반으로 네트워크를 좀 더 손쉽게 프로그램할 수 있는 소프트웨어 정의 네트워킹(SDN: Software Defined Networking, 이하, 'SDN'이라 약칭함) 기술을 정의하였다.
오픈플로우 기반 SDN 구조는 오픈플로우 스위치(OpenFlow Switch)와 컨트롤러(Controller)를 포함하고, 오픈플로우 스위치와 컨트롤러는 오픈플로우 프로토콜에 의해 상호 연결된다.
오픈플로우 기반 SDN 네트워크에서는 컨트롤러가 스위치에게 플로우 테이블 정보를 제공하고, 스위치는 제공받은 플로우 테이블 정보를 이용하여 패킷의 속성을 변경하거나, 패킷의 흐름을 제어하는 방식으로 패킷을 처리한다.
한편, 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) 사이의 개방형 인터페이스 구조에 대해 표준화를 진행하고 있다.
상술한 바와 같이 ONF, IETF 등과 같은 다양한 표준화 단체에서 SDN을 위한 표준화를 진행하고 있으나, 컨트롤러와 스위치간 또는 클라이언트와 에이전트간의 트랜잭션(transaction)에 대한 일관성(consistency)을 보장하기 위한 구체적인 방법은 제시하지 않고 있다.
본 발명의 목적은 SDN 네트워크에서 컨트롤러와 스위치간의 트랜잭션에 대한 일관성을 보장할 수 있는 트랜잭션 관리 방법을 제공하는 것이다.
본 발명에서 이루고자 하는 목적들은 상기한 목적으로 제한되지 않으며, 언급하지 않은 다른 목적들은 하기의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 목적을 달성하기 위한 본 발명의 일 측면에 따른 트랜잭션 관리 방법은, 컨트롤러에서 수행되는 트랜잭션 관리 방법으로 스위치에 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계 및 상기 그룹 메시지를 상기 스위치에 전송하는 단계를 포함한다.
여기서, 상기 그룹 메시지는 상기 스위치 내의 복수의 플로우 테이블 중 서로 연관된 상태를 가지는 테이블들을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지로 구성될 수 있다. 또한, 상기 복수의 메시지는 동일한 구조를 가지며 상기 그룹 메시지 내에 반복적인 형태로 포함될 수 있다.
여기서, 상기 그룹 메시지는 메시지의 유형, 메시지의 개수, 메시지의 길이 및 그룹 메시지의 식별자 중 적어도 하나의 정보를 포함할 수 있다.
여기서, 상기 트랜잭션 관리 방법은 상기 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 수신하는 단계 및 상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계를 더 포함할 수 있다.
여기서, 상기 확인 메시지는 상기 그룹 메시지에 오류가 발생한 경우 오류 코드를 포함할 수 있다.
여기서, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계는, 상기 그룹 메시지에 포함된 복수의 메시지 중 적어도 하나의 메시지에 오류가 발생하였음을 지시하는 확인 메시지를 수신하는 경우, 상기 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송할 수 있다.
또한, 본 발명의 목적을 달성하기 위한 본 발명의 다른 측면에 따른 트랜잭션 관리 방법은, 컨트롤러에서 수행되는 트랜잭션 관리 방법으로 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 생성하는 단계 및 상기 그룹 메시지를 상기 복수의 스위치에 전송하는 단계를 포함한다.
여기서, 상기 그룹 메시지는 상기 복수의 스위치에 각각 저장된 플로우 테이블들 중 서로 연관된 상태를 가지는 복수의 플로우 테이블을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지로 구성될 수 있다.
여기서, 상기 트랜잭션 관리 방법은 상기 복수의 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 각각 수신하는 단계 및 상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계를 더 포함할 수 있다.
여기서, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계는, 상기 복수의 스위치들 중 적어도 하나의 스위치로부터 상기 그룹 메시지의 오류 발생을 지시하는 확인 메시지를 수신하면, 상기 복수의 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송할 수 있다.
또한, 본 발명의 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 트랜잭션 관리 방법은, 스위치에서 수행되는 트랜잭션 관리 방법으로 저장된 플로우 테이블들 중 서로 연관된 상태의 변경을 위한 그룹 메시지를 컨트롤러로부터 수신하는 단계와, 상기 그룹 메시지의 오류를 검증하는 단계 및 상기 그룹 메시지의 오류 여부 정보를 포함하는 확인 메시지를 상기 컨트롤러에 전송하는 단계를 포함한다.
여기서, 상기 그룹 메시지를 컨트롤러로부터 수신하는 단계는, 수신한 상기 그룹 메시지를 임시 저장 영역에 저장하는 단계를 포함할 수 있다.
여기서, 상기 그룹 메시지의 오류를 검증하는 단계에서는 상기 그룹 메시지의 문법 및 선행 조건 중 적어도 하나에 대한 유효성 여부를 판단할 수 있다.
여기서, 상기 그룹 메시지의 오류를 검증하는 단계에서는 상기 스위치의 자원 가용성을 판단할 수 있다.
여기서, 상기 확인 메시지는 상기 그룹 메시지에 오류가 있는 경우 오류 코드를 포함할 수 있다.
여기서, 상기 트랜잭션 관리 방법은 상기 컨트롤러로부터 상기 그룹 메시지의 실행을 지시하는 실행 메시지를 수신하는 단계 및 임시 저장 영역에 저장된 그룹 메시지의 내용에 기초하여 플로우 테이블을 변경하는 단계를 더 포함할 수 있다.
여기서, 상기 트랜잭션 관리 방법은 상기 컨트롤러로부터 상기 그룹 메시지의 취소를 지시하는 취소 메시지를 수신하는 단계 및 임시 저장 영역에 저장된 그룹 메시지를 삭제하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 SDN 네트워크에서 트랜잭션 관리 방법에 따르면, 컨트롤러가 스위치의 플로우 테이블을 변경하는 과정에서 플로우 테이블간 연관된 상태 또는 순차적인 작업이 요구되는 상태들을 고려하여 그룹 메시지를 생성하고, 생성된 그룹 메시지를 스위치에 전송한다. 스위치는 수신한 그룹 메시지의 유효성을 검증한 후 검증 결과를 컨트롤러에 전송한다. 컨트롤러는 그룹 메시지에 오류가 전혀 발생하지 않은 경우, 그룹 메시지의 실행을 해당 스위치에 지시하고, 그룹 메시지에 오류가 발생한 경우에는 그룹 메시지의 실행 취소를 지시한다.
따라서, 단일 스위치 또는 복수의 스위치들에 저장된 플로우 테이블들간의 서로 연관성이 있는 상태를 동시에 변경할 수 있고, 이를 통해 동시성을 보장할 수 있다.
또한, 서로 연관성이 있는 복수의 테이블을 동시에 변경함으로써 복수의 스위치들간의 변경을 동기화할 수 있고, 일관성을 보장할 수 있다.
도 1은 SDN 시스템의 구성을 나타내는 블록도이다.
도 2는 플로우 테이블에 포함되는 플로우 엔트리들의 구조를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 4는 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 5는 본 발명의 일 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 6은 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 7은 본 발명의 실시예들에 적용되는 그룹 메시지 구조를 예를 들어 도시한 것이다.
도 8은 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 실행하는 컨트롤러와 스위치의 구성의 일 예를 나타낸다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에서 언급되는 '컨트롤러(controller)'는 트래픽의 흐름을 제어하기 위해 관련 구성 요소(예를 들면, 스위치, 라우터 등)를 제어하는 기능 요소(entity)를 의미하는 것으로, 물리적인 구현 형태나 구현 위치 등에 한정되지 않는다. 예를 들어, 상기 컨트롤러는 ONF, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 컨트롤러 기능 요소(entity)를 의미할 수 있다. 또한, 본 발명에서 언급되는 '스위치'는 트래픽(또는 패킷)을 실질적으로 포워딩하거나 스위칭 또는 라우팅하는 기능 요소를 의미하는 것으로, ONF, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 스위치, 라우터, 스위치 요소, 라우터 요소, 포워딩 요소 등을 의미할 수 있다.
또한, 이하에서 기술되는 본 발명의 실시예들은 SDN 기술의 표준화를 수행하고 있는 ONF, IETF, ETSI, ITU-T들에서 작성된 표준 문서들에 의해 뒷받침될 수 있다. 즉, 본 발명의 실시예들 중 본 발명의 기술적 사상을 명확히 드러내기 위해 구체적으로 설명하지 않은 내용들은 상기의 표준화 단체들에서 작성한 표준 문서들에 의해 뒷받침될 수 있다. 또한, 본 발명에서 사용되는 모든 용어들은 상기 표준 문서에 의해 설명될 수 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 SDN 시스템의 구성을 나타내는 블록도이다. 도 2는 플로우 테이블에 포함되는 플로우 엔트리들의 구조를 나타낸다.
도 1을 참조하면, SDN 시스템은 복수의 스위치 및 컨트롤러로 구성될 수 있고, 복수의 스위치와 컨트롤러는 오픈플로우 프로토콜을 이용하여 서로 통신할 수 있다. 도 1에서는 설명의 편의를 위하여 컨트롤러(110) 및 스위치(120)를 각각 하나씩만 도시하였으나, 컨트롤러(110) 및 스위치(120)는 실질적으로 각각 복수개로 구성될 수 있다.
스위치(120)는 패킷의 룩업(lookup) 및 포워딩(forwarding)에 사용하는 하나 또는 그 이상의 플로우 테이블(121)과 그룹 테이블(123)을 포함하고, 컨트롤러(110)와 통신을 위한 오픈플로우 채널(125)을 포함한다.
스위치에 포함된 각 플로우 테이블(121)은 플로우 엔트리(flow entries)들의 집합으로, 각 플로우 엔트리는 도 2에 도시한 바와 같이 매치 필드(match fields)(201), 우선순위(Priority)(202), 카운터(counters)(203), 명령어(Instructions)(204), 타임아웃(Timeouts)(205) 및 쿠키(Cookie)(206) 필드로 구성될 수 있다.
매치 필드(201)는 패킷의 매치를 위한 정보로, 유입 포트(ingress port), 패킷 헤더 정보를 포함할 수 있고, 선택적으로 이전 플로우 테이블에서 지정된 메타데이터를 포함할 수 있다. 우선순위(202)는 플로우 엔트리의 매칭 우선순위를 의미한다. 카운터(203)는 패킷이 매치되었을 때 갱신되는 값이다. 명령어(204)는 액션 집합(action sets)이나 파이프라인 처리(pipeline processing)를 변경하기 위해 사용된다. 타임아웃(205)은 플로우가 스위치에 의해 만료되기 전까지의 최대 시간 또는 유휴 시간(idle time)을 의미한다. 쿠키(206)는 컨트롤러에 의해 선택되는 불분명한 데이터 값(opaque data value)으로, 컨트롤러가 플로우 통계, 플로우 변경, 플로우 삭제 등을 필터링하기 위해 사용될 수 있다.
패킷의 처리를 위한 매칭은 스위치(120)에 포함된 복수의 플로우 테이블들(121) 중 첫번째 플로우 테이블로부터 시작되고, 이후의 플로우 테이블들에서 계속될 수 있다.
스위치(120)는 매칭 플로우 엔트리가 발견되는 경우, 매칭된 특정 플로우 엔트리와 연관된 명령을 실행한다. 또는 매칭 엔트리가 플로우 테이블에서 발견되지 않는 경우, 스위치(120)는 패킷을 오픈플로우 채널(125)을 통해 컨트롤러(110)로 포워딩하거나, 폐기(drop)할 수도 있고, 다음 플로우 테이블에서 매칭 처리를 계속할 수도 있다.
각 플로우 엔트리와 연관된 명령어들은 액션이나, 스위치 내에서 파이프라인 처리를 수정하기 위한 명령을 포함한다.
명령에 포함된 액션은 패킷 포워딩, 패킷 수정 및 그룹 테이블의 처리를 기술한다. 예를 들어, 액션은 패킷이 부가적인 처리를 규정하는 그룹으로 향하도록 지정할 수 있다. 여기서, 그룹은 플러딩(flooding) 및 보다 복합적인 포워딩을 처리하기 위한 액션 집합을 표현한다. 그룹을 통해 복수의 플로우 엔트리들과 연관된 패킷의 공통적인 출력 액션들을 효율적으로 변경할 수 있다.
파이프라인 처리 명령들은 연속적인 처리를 위해 패킷을 다음 플로우 테이블로 보내는 것과, 메타데이터 형태의 정보들이 플로우 테이블들간 교환되도록 한다. 플로우 테이블들에 대한 파이프라인 처리는 매칭 플로우 엔트리와 연관된 명령어 집합이 다음 플로우 테이블을 특정하지 않는 경우에 중지된다. 이 시점에서 패킷은 일반적으로 수정되거나 포워딩된다.
또한, 플로우 엔트리는 패킷을 포트로 포워딩 할 수 있다. 여기서, 포트는 일반적인 물리적 포트를 의미할 수도 있고, 스위치(120)에 의해 정의된 논리적 포트를 의미할 수도 있다. 또한, 포트는 미리 정의된 예약 포트(reserved port)를 의미할 수도 있다. 예약 포트는 패킷을 컨트롤러(110)로 전송하거나, 플러딩(flooding), 또는 오픈플로우가 아닌 일반적인 방법을 통한 패킷 포워딩 등의 포괄적인 포워딩 처리를 규정할 수 있다. 한편, 스위치(120)에 의해 정의된 논리적 포트는 링크 통합 그룹(link aggregation group), 터널(tunnels) 또는 루프백 인터페이스(loopback interface)를 명시할 수 있다.
그룹 테이블은 복수의 그룹 엔트리(group entries)를 포함한다. 각 그룹 엔트리는 그룹의 유형과 관련된 특정 의미(semantics)를 가지는 액션 버킷 목록(action buckets list)을 포함할 수 있다. 여기서, 액션 버킷은 액션들 및 연관된 파라미터들의 집합을 의미한다. 하나 또는 하나 이상의 액션 버킷에 포함된 액션들은 패킷들을 그룹으로 전달할 수 있다.
컨트롤러(110)는 오픈플로우 프로토콜을 이용하여 각 스위치(120)의 플로우 테이블(121)에 플로우 엔트리들(flow entries)을 추가(add), 갱신(modify) 또는 삭제(delete)할 수 있다.
오픈플로우 프로토콜은 컨트롤러-투-스위치(controller-to-switch), 비동기(asynchronous) 및 대칭(symmetric)의 세 가지 메시지 타입을 지원하며, 각 메시지 타입은 복수의 서브 타입 메시지들을 포함한다.
컨트롤러-투-스위치 메시지는 컨트롤러(110)에 의해 생성되는 메시지로, 스위치(120)를 직접적으로 관리하거나 스위치(120)의 상태를 검색하기 위해 사용된다. 비동기 메시지는 스위치(120)에 의해 생성되는 메시지로, 네트워크 이벤트 및 스위치(120)의 상태 변화에 상응하여 컨트롤러(110)에 저장된 정보를 갱신하기 위해 사용된다. 대칭 메시지는 스위치(120) 또는 컨트롤러(110)에 의해 생성되는 메시지로, 별도의 요청 없이 양방향으로 전송되는 메시지이다.
컨트롤러-투-스위치 메시지는 상태 변경(Modify-State) 메시지 및 배리어(Barrier) 메시지 등을 포함한다. 상태 변경 메시지는 스위치(120)의 상태를 관리하기 위해 컨트롤러(110)가 스위치(120)로 전송하는 메시지로, 스위치(120)의 오픈플로우 테이블(121)에서 플로우 또는 그룹 엔트리에 대해 추가, 삭제 및 변경이나, 스위치(120)의 포트 특성을 설정하기 위해 사용된다. 배리어 메시지는 배리어 요청 및 배리어 응답 메시지로 구성되고, 컨트롤러(110)가 스위치(120)에 전송한 메시지들간의 의존성 일치와, 스위치(120)가 메시지들의 실행 완료를 컨트롤러(110)에 통보하기 위해 사용된다.
비동기 메시지는 플로우 삭제(Flow-Removed), 포트 상태(Port-status) 메시지 등을 포함할 수 있다. 플로우 삭제 메시지는 스위치(120)가 플로우 테이블에서 플로우 엔트리가 삭제되었음을 스위치(120)에게 통보하기 위해 사용된다. 포트 상태 메시지는 스위치(120)가 포트의 변화를 통보하기 위해 사용된다.
대칭 메시지는 헬로(Hello), 에코(Echo), 에러(Error) 메시지 등을 포함할 수 있다. 헬로 메시지는 컨트롤러(110)와 스위치(120) 사이의 연결 생성시에 교환되는 메시지이다. 에코 메시지는 에코 요청 및 에코 응답 메시지로 구성되고, 스위치(120) 또는 컨트롤러(110)에 의해 전송될 수 있다. 에코 요청 메시지를 수신한 장치는 반드시 에코 응답 메시지를 전송해야 한다. 에러 메시지는 스위치(120) 또는 컨트롤러(110)에 의해 사용되는 메시지로 문제가 발생되었음을 연결 상대방에게 통보하기 위해 사용된다.
일반적으로 컨트롤러(110)가 스위치(120)의 플로우 테이블을 변경할 때는 상기한 상태 변경(Modify-State) 메시지의 명령어 구분 정보에 변경 유형을 지정하여 스위치(120)에 전송한다. 컨트롤러(110)는 상태 변경 메시지를 이용하여 스위치(120)의 플로우 테이블에 한 건씩 플로우 엔트리를 추가 변경 또는 삭제할 수 있다.
한편, 스위치(120)는 복수의 플로우 엔트리에 대한 변경을 지시하는 복수의 상태 변경 메시지에 대해 각 상태 변경 메시지별로 즉시 컨트롤러(110)에 응답하지 않고, 오류가 발생한 경우에만 에러(Error) 메시지를 컨트롤러(110)에 전송한다.
또한, 컨트롤러(110)는 스위치(120)에게 전송하는 명령의 실행 순서를 보장하기 위해 배리어(Barrier) 메시지를 사용할 수 있다. 예를 들어, 컨트롤러(110)가 특정 시점에 스위치(120)에게 배리어 메시지를 전송하면, 스위치(120)는 배리어 메시지를 수신하기 전까지의 수신한 모든 명령을 실행한 후, 실행 결과를 컨트롤러(110)에 전송한다. 즉, 컨트롤러(110)는 일련의 명령 또는 작업(operation)이 순차적으로 실행되어야 하는 경우, 배리어 메시지를 이용하여 스위치(120)의 명령 또는 작업 실행 순서를 제어할 수 있다.
상술한 바와 같이 일반적인 플로우 테이블 변경 방법에서는 스위치(120)가 컨트롤러(110)로부터 수신한 상태 변경 메시지에 대해 변경 건 별로 즉시 응답하지 않고 오류가 발생한 경우에만 컨트롤러(110)에게 에러 메시지를 전송한다. 따라서, 플로우 테이블을 변경하는 과정에서 실제로 에러가 발생했음에도 불구하고 네트워크의 장애 또는 스위치(120)의 통신 불능 상태로 인하여 스위치(120)가 컨트롤러(110)에 에러 메시지를 전달하지 못하는 경우에도 컨트롤러(110)는 플로우 테이블의 변경이 정상적으로 실행된 것으로 간주하고 이후의 제어를 수행하는 문제가 발생할 수 있다.
또한, 컨트롤러(110)가 스위치(120)의 순차적인 명령 실행 순서를 보장하기 위해 배리어 메시지를 사용하고 있다. 그러나, 배리어 메시지만으로는 하나 또는 복수의 플로우 테이블에서 서로 연관이 있는 플로우 엔트리들(또는 상태들)에 대한 변경 여부를 컨트롤러(110)가 정확하게 확인할 수 없다.
또한, 상술한 플로우 테이블 변경 방법에서는 각 플로우 테이블 변경건에 대해 하나의 상태 변경 메시지를 전송하여 플로우 테이블을 변경하기 때문에, 복수의 플로우 테이블 변경(또는 복수의 상태 변경)이 모두 적용되어야 하거나 모두 적용되지 않아야 하는 원자성(atomicity)을 보장할 수 없다.
이하에서는 상술한 바와 같은 문제를 해결하기 위한 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 설명한다.
도 3은 본 발명의 일 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 3에서는 하나의 스위치(330) 내에 저장된 복수의 플로우 테이블들에 대해 서로 연관된 상태 또는 일련의 순차적인 작업이 요구되는 상태들을 고려하여 플로우 테이블을 변경하는 과정을 예시하였다.
도 3을 참조하면, 컨트롤러(310)는 스위치(330) 내부의 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성이나 순차적인 작업이 요구되는 플로우 엔트리들을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S301). 여기서, 그룹 메시지는 스위치(330) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다.
이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비(Group Modify Prepare) 메시지를 스위치(330)에 전송한다(S302).
스위치(330)는 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S303). 여기서, 스위치(330)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 스위치(330)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.
이후, 스위치(330)는 그룹 메시지의 유효성 검증 결과를 포함하는 확인(ACK) 메시지를 컨트롤러(310)에 전송한다(S304). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 스위치(330)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.
또한, 스위치(330)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 스위치(330)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.
컨트롤러(310)는 스위치(330)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S305).
컨트롤러(310)는 수신한 확인 메시지에 그룹 메시지에 오류가 발생하였음을 지시하는 오류 코드가 포함된 경우, 스위치(330)에 그룹 메시지의 실행 취소를 지시하는 그룹 변경 취소(group Modify Cancel) 메시지를 전송한다(S306).
스위치(330)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S307).
또는, 컨트롤러(310)는 확인 메시지를 통해 그룹 메시지에 오류가 발생하지 않은 것으로 판단되는 경우, 스위치(330)에 그룹 메시지의 실행을 지시하는 그룹 변경 실행(Group Modify Execute) 메시지를 전송한다(S308).
스위치(330)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S309). 여기서, 스위치(330)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법을 나타내는 순서도이다.
도 4는 복수의 스위치 내에 저장된 복수의 플로우 테이블들에 대해 서로 연관된 상태를 고려하여 플로우 테이블을 변경하는 과정을 예시한 것으로, 설명의 편의를 위해 복수의 스위치들 중 두 개의 스위치(330a, 330b)만 도시하였다. 그러나, 도 4에 도시한 플로우 테이블 변경 방법은 스위치의 개수가 두 개 이상인 경우에도 동일하게 적용될 수 있다.
도 4를 참조하면, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)에 각각 저장된 플로우 테이블들에 포함된 플로우 엔트리들(또는 상태들)의 연관성(또는 순차적인 작업이 요구되는 상태들)을 고려하여, 서로 연관된 상태(또는 플로우 엔트리)를 변경하기 위한 그룹 메시지를 생성한다(S401). 여기서, 그룹 메시지는 제1 스위치(330a) 및 제2 스위치(330b) 내에 저장된 복수의 플로우 테이블에 포함되는 플로우 엔트리들 중 서로 연관된 플로우 엔트리를 동시에 변경시키기 위한 복수의 메시지를 포함할 수 있다. 또한, 그룹 메시지에 포함되는 복수의 메시지는 복수의 플로우 엔트리(또는 상태)에 대한 일괄적인 변경을 위해 동일한 구조를 가지는 플로우 엔트리 변경 명령어들이 배열을 통해 반복되어 포함되는 형태로 구성될 수 있다.
이후, 컨트롤러(310)는 그룹 메시지를 포함하는 그룹 변경 준비 메시지를 제1 스위치(330a) 및 제2 스위치(330b)에 전송한다(S402).
제1 스위치(330a) 및 제2 스위치(330b)는 각각 컨트롤러(310)로부터 그룹 변경 준비 메시지를 수신하고, 수신한 그룹 메시지에 대한 유효성을 검증한다(S403). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 수신한 그룹 메시지 또는 그룹 메시지에 포함된 각 메시지에 대해 문법이나, 그룹 메시지를 실행하기 위한 선행 조건의 유효성 여부를 판단할 수 있다. 또한, 제1 스위치(330a) 및 제2 스위치(330b)는 선택적으로 그룹 메시지를 적용하기 위한 자원의 가용성 여부를 판단할 수 있다.
이후, 제1 스위치(330a) 및 제2 스위치(330b)는 각각 그룹 메시지의 유효성 검증 결과를 포함하는 확인 메시지를 컨트롤러(310)에 전송한다(S404). 여기서, 확인 메시지는 그룹 메시지의 오류 발생 여부에 대한 정보를 포함할 수 있다. 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증 결과 그룹 메시지에 포함된 복수의 메시지들 중 어느 하나의 메시지에서라도 오류가 발생한 경우 발생된 오류에 해당하는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송할 수 있다.
또한, 제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 임시 저장 영역에 저장할 수 있다. 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지의 유효성 검증을 수행한 후 오류가 발생하는 경우에는 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수도 있다.
컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 그룹 메시지에 대한 확인 메시지를 수신할 때까지 대기한 후, 확인 메시지를 수신하면 수신한 확인 메시지에 오류를 지시하는 정보가 포함되었는가를 확인한다(S405).
컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b) 중 어느 하나의 스위치에서라도 수신한 확인 메시지에 그룹 메시지에 오류가 발생하였음을 지시하는 오류 코드가 포함된 경우, 모든 스위치 즉, 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행 취소를 지시하는 그룹 변경 취소 메시지를 전송한다(S406).
제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 메시지를 실행하지 않고, 임시 저장 영역에 저장된 그룹 메시지를 삭제할 수 있다(S407).
또는, 컨트롤러(310)는 제1 스위치(330a) 및 제2 스위치(330b)로부터 수신한 확인 메시지가 모두 오류가 발생하지 않은 것으로 지시하는 경우, 모든 스위치 즉 제1 스위치(330a) 및 제2 스위치(330b)에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다(S408).
제1 스위치(330a) 및 제2 스위치(330b)는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 그룹 메시지에 기초하여 플로우 테이블의 해당 플로우 엔트리(또는 상태)를 변경한다(S409). 여기서, 제1 스위치(330a) 및 제2 스위치(330b)는 그룹 메시지가 지시하는 명령에 따라 플로우 엔트리를 추가하거나 삭제 또는 변경할 수 있다.
도 4를 참조하여 설명한 바와 같이 본 발명에서는 복수의 스위치에 저장된 플로우 테이블에 대한 연관성(또는 순차적인 작업이 요구되는 상태들)을 고려하여 그룹 메시지를 정의하고, 그룹 메시지를 수신한 복수의 스위치들 중 일부의 스위치에서 그룹 메시지에 오류가 발생하는 경우, 모든 스위치의 그룹 메시지 실행을 취소하도록 한다. 따라서, 복수의 스위치들의 상태 변경에 대한 일관성을 보장할 수 있다.
도 5는 본 발명의 일 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 5에서는 트랜잭션 관리 방법의 적용 예로서 하나의 스위치(330) 내에 저장된 복수의 플로우 테이블들 중 서로 연관된 상태를 가지는 세 개의 플로우 테이블들 대상으로 그룹 메시지를 통해 플로우 테이블을 변경하는 과정을 예시하였다. 도 4에 도시한 스위치(330)의 유입 포트(ingress port), 출력 포트1(output port1) 및 출력포트 2(output port2)는 물리적인 포트일 수도 있고, 스위치(330)가 정의한 논리적인 포트일 수도 있다.
먼저, 도 5에 도시한 예에서 일관성이 유지되어야 하는 플로우 테이블의 변경 조건은 하기와 같다.
첫 째, 스위치(330)의 유입 포트(ingress port)로 입력된 패킷 중 플로우 테이블 1의 매치필드 TCP_SRC1에 부합하는 패킷은 출력 포트1(output port1)로 포워딩 되어야 한다. 여기서, 출력 포트1로 패킷 포워딩을 위한 액션은 “Output port1”로 표현될 수 있고, 해당 액션은 플로우 테이블 2에 정의되어 있을 때, 플로우 테이블 1의 매치 필드 TCP_SRC1에 대응되는 액션은 “Goto-Table2” 로 표현될 수 있다.
둘 째, 스위치(330)의 유입 포트로 입력된 패킷 중 플로우 테이블 1의 매치필드 TCP_SRC2에 부합하는 패킷은 출력 포트2(output port2)로 포워딩 되어야 한다. 여기서, 출력 포트2로 패킷 포워딩을 위한 액션은 “Output port2”로 표현될 수 있고, 해당 액션은 플로우 테이블 3에 정의되어 있을 때, 플로우 테이블 1의 매치 필드 TCP_SRC2에 대응되는 액션은 “Goto-Table3” 으로 표현될 수 있다.
상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어에 문제가 발생하거나, 패킷이 폐기될 수 있다.
예를 들어, 상기 첫 째 조건이 변경되지 않아 플로우 테이블 1의 매치필드 TCP_SRC1에 부합하는 패킷은 출력 포트2(output port2)로 포워딩 되는 것으로 유지되고, 둘 째 조건만 변경된 경우, TCP_SRC1 및 TCP_SRC2에 부합하는 패킷이 모두 출력 포트2(output port2)로 포워딩 되어 스위치(330) 내부에서 패킷의 충돌이 발생할 수 있다.
따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 플로우 테이블 1, 2 및 3의 해당 플로우 엔트리가 동시에 변경되어야 한다.
본 발명에서는 도 3를 통해 설명한 바와 같이 컨트롤러가 서로 연관된 복수의 플로우 엔트리들을 동시에 변경시키기 위한 그룹 메시지를 정의하여 스위치(330)에 전송하고, 스위치(330)가 수신한 그룹 메시지가 지시하는 복수의 변경 명령을 실행하도록 함으로써 하나의 스위치(330) 내에서 연관성 있는 Flow Table의 변경을 일관성 있게 수행 할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법의 적용 예를 나타내는 개념도이다.
도 6에서는 트랜잭션 관리 방법의 적용 예로서 복수의 스위치 내에 각각 저장된 복수의 플로우 테이블들 중 서로 연관된 상태를 가지는 두 개의 플로우 테이블들을 대상으로 그룹 메시지를 통해 플로우 테이블을 변경하는 과정을 예시하였다. 도 6에서는 설명의 편의를 위해 복수의 스위치들 중 제1 스위치(330a)의 출력 포트가 제2 스위치(330b)의 유입 포트에 연결된 네트워크 환경을 예시하였으나, 두 개의 이상의 스위치들에 대해서도 본 발명의 다른 실시예에 따른 트랜잭션 관리 방법이 동일하게 적용될 수 있음은 자명하다. 또한, 각 스위치(330a, 330b)의 유입 포트 및 출력 포트는 물리적인 포트일 수도 있고, 각 스위치(330a, 330b)가 정의한 논리적인 포트일 수도 있다.
먼저, 도 6에 도시한 예에서 일관성이 유지되어야 하는 플로우 테이블의 변경 조건은 하기와 같다.
첫 째, 제1 스위치(330a)의 유입 포트(ingress port)로 입력된 패킷 중 플로우 테이블의 매치필드 TCP_DST1에 부합하는 패킷은 VLAN1으로 태깅(tagging)한 후 출력 포트1(output port1)로 포워딩 되어야 한다. 여기서, VLAN1으로 태깅을 지시하는 액션은 “push VLAN1”으로 표현될 수 있고, 출력 포트1로 패킷 포워딩을 위한 액션은 “Output port1”로 표현될 수 있다.
둘 째, 제2 스위치(330b)의 유입 포트로 입력된 패킷 중 플로우 테이블의 매치필드 TCP_DST1 및 VLAN1으로 태깅의 매치필드에 부합하는 패킷은 VLAN1 태깅을 분리한 후, 출력 포트2(output port2)로 포워딩 되어야 한다. 여기서, VLAN1 태깅을 분리하기 위한 액션은 “Pop VLAN1”으로 표현될 수 있고, 출력 포트2로 패킷 포워딩을 위한 액션은 “Output port2”로 표현될 수 있다.
상기한 두 가지 플로우 테이블 변경 조건은 동시에 적용되어야 한다. 만약 상기한 두 가지 플로우 테이블 변경 조건 중 어느 하나의 조건만 적용될 경우, 패킷의 흐름 제어가 문제가 발생하거나, 패킷이 폐기될 수 있다.
예를 들어, 상기 첫 째 조건만 변경되고 둘 째 조건이 변경되지 않는 경우 제1 스위치(330a)의 출력 포트1을 통해 출력된 패킷이 제2 스위치(330b)의 출력 포트2로 출력되지 않는 문제가 발생할 수 있다.
따라서, 상기 첫 째 플로우 테이블 변경 조건 및 둘 째 플로우 테이블 변경 조건은 동시에 만족되어야 하며, 이를 위해 제1 스위치(330a) 및 제2 스위치(330b)에 각각 저장된 플로우 테이블의 해당 플로우 엔트리가 동시에 변경되어야 한다.
본 발명에서는 도 4를 통해 설명한 바와 같이 컨트롤러가 복수의 스위치들간 서로 연관된 복수의 플로우 엔트리들을 동시에 변경시키기 위한 그룹 메시지를 정의하여 복수의 스위치에 전송하고, 각 스위치가 수신한 그룹 메시지가 지시하는 복수의 변경 명령을 실행하도록 함으로써 복수의 스위치들간에 연관성 있는 Flow Table의 변경을 일관성 있게 수행 할 수 있다.
도 7은 본 발명의 실시예들에 적용되는 그룹 메시지 구조를 예를 들어 도시한 것이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 그룹 메시지 구조는 크게 헤더부와 메시지부로 구성될 수 있다.
헤더부는 프로토콜 헤더(610)와 그룹 메시지 헤더(620)로 구성될 수 있다. 프로토콜 헤더(610)는 예를 들어 오픈플로우 프로토콜 헤더로 구성될 수 있고 8바이트(byte)로 구성될 수 있다.
그룹 메시지 헤더(620)는 타입(type), 카운트(count), 길이(length), 그룹 아이디(group id) 정보를 포함할 수 있다.
타입(type) 정보는 2바이트로 구성될 수 있고, 그룹 메시지의 유형을 의미할 수 있다. 그룹 메시지의 유형에는 전술한 바와 같이 그룹 변경 준비(Group Modify Prepare), 확인(ACK), 그룹 변경 취소(Group Modify Cancel), 그룹 변경 실행(Group Modify Execute) 메시지를 포함할 수 있다.
카운트(count) 정보는 4바이트로 구성될 수 있고, 그룹 메시지내에 포함된 메시지 개수 정보를 의미할 수 있다.
길이(length) 정보는 2바이트로 구성될 수 있고, 그룹 메시지의 길이를 의미할 수 있다.
그룹 아이디(group id) 정보는 1바이트로 구성될 수 있고, 그룹 메시지의 고유 식별자를 의미할 수 있다.
메시지부(630)는 플로우 테이블 아이디(table_id), 명령어(command), 우선순위(priority), 출력 포트(out_port), 매치(OFP_MATCH), 에러 코드(err_code) 정보를 포함할 수 있다.
플로우 테이블 아이디(table_id) 정보는 1바이트로 구성될 수 있고, 플로우 테이블을 구분하기 위한 고유 식별자를 의미할 수 있다.
명령어(command) 정보는 1바이트로 구성될 수 있고, 플로우 테이블의 변경 명령을 의미할 수 있다. 명령어는 플로우 테이블에 플로우 엔트리의 추가를 지시하는 Add 명령어, 플로우 엔트리의 변경을 지시하는 Modify 명령어, 플로우 엔트리의 삭제를 지시하는 Delete 명령어를 포함할 수 있다.
우선순위(priority) 정보는 2바이트로 구성될 수 있고, 플로우 엔트리의 우선순위를 지시할 수 있다.
출력 포트(out_port) 정보는 4바이트로 구성될 수 있고, 출력 포트를 의미할 수 있다.
매치(OFP_MATCH) 정보는 8바이트로 구성될 수 있고, 매치 필드를 정의하는 구조체 정보를 의미할 수 있다.
에러 코드(err_code) 정보는 2바이트로 구성될 수 있고, 에러의 유형을 의미할 수 있다.
도 8은 본 발명의 실시예들에 따른 트랜잭션 관리 방법을 실행하는 컨트롤러와 스위치의 구성의 일 예를 나타낸다.
도 8에서는 하나의 컨트롤러(310)와 하나의 스위치(330)만 도시하였으나, 이는 설명의 편의를 위한 것으로, 실질적인 SDN 네트워크에서는 복수의 스위치들이 하나 또는 하나 이상의 컨트롤러(310)와 연결될 수 있고, 이 경우에도 도 8에 예시한 컨트롤러(310) 및 스위치(330)의 구성이 동일하게 적용될 수 있다.
도 8을 참조하면, 컨트롤러(310)는 제어부(311) 및 통신부(314)를 포함할 수 있다.
제어부(311)는 일반 명령 제어 모듈(312) 및 그룹 명령 제어 모듈(313)을 포함할 수 있다. 여기서, 일반 명령 제어 모듈(312)과 그룹 명령 제어 모듈(313)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.
일반 명령 제어 모듈(312)은 스위치(330)의 일반적인 관리를 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 스위치(330)의 관리를 위한 제어를 수행할 수 있다.
그룹 명령 제어 모듈(313)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 제어를 수행하는 모듈로, 단일 스위치(330)내의 플로우 테이블들간 연관성 또는 복수의 스위치들의 플로우 테이블들간의 연관성을 판단하고, 판단 결과에 따라 서로 연관성이 있는 상태를 변경하기 위한 그룹 메시지를 생성한 후, 생성한 그룹 메시지를 그룹 변경 준비 메시지에 포함시켜 통신부(314)를 통해 스위치(330) 또는 스위치들에 전송하는 기능을 수행한다.
또한, 그룹 명령 제어 모듈(313)은 통신부(314)를 통해 스위치(330) 또는 스위치들로부터 그룹 메시지에 대한 확인 메시지를 수신하고, 확인 메시지가 에러를 지시하는 경우 그룹 명령어의 실행을 취소하는 그룹 변경 취소 메시지를 통신부(314)를 통해 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 전송한다.
또는, 그룹 명령 제어 모듈(313)은 그룹 메시지에 에러가 발생하지 않은 경우에는 그룹 메시지를 전송한 해당 스위치 또는 스위치들에 그룹 메시지의 실행을 지시하는 그룹 변경 실행 메시지를 전송한다.
통신부(314)는 제어부(311)로부터 제공된 메시지들(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)을 제어부(311)의 제어에 따라 특정 스위치 또는 복수의 스위치에 전송하거나, 스위치로부터 수신한 메시지(예를 들면, 확인 메시지)를 제어부(311)에 제공하는 기능을 수행한다. 여기서 통신부(314)는 미리 정의된 프로토콜에 기초하여 스위치 또는 스위치들과 메시지를 송수신할 수 있다.
스위치(330)는 통신부(331), 처리부(332) 및 저장부(335)를 포함할 수 있다.
통신부(331)는 처리부(332)의 제어에 따라 네트워크를 통해 컨트롤러(310)로 메시지(예를 들면, 확인 메시지)를 송신하거나, 컨트롤러(310)로부터 메시지(예를 들면, 그룹 변경 준비 메시지, 그룹 변경 취소 메시지, 그룹 변경 실행 메시지 등)를 수신하여 처리부(332)에 제공한다. 여기서, 통신부(331)는 미리 정의된 프로토콜에 따라 처리부(332)와 메시지를 송수신할 수 있다.
처리부(332)는 일반 명령 처리 모듈(333) 및 그룹 명령 처리 모듈(334)을 포함할 수 있다. 여기서, 일반 명령 처리 모듈(333)과 그룹 명령 처리 모듈(334)은 각각 별도의 물리적인 하드웨어(예를 들면, 프로세서)로 구성될 수도 있고, 하나의 프로세서가 소프트웨어적으로 처리하는 논리적인 소프트웨어 모듈로 구성될 수도 있다.
일반 명령 처리 모듈(333)은 컨트롤러(310)로부터 제공된 일반적인 제어 명령을 처리하는 모듈로, 그룹 메시지를 이용한 플로우 테이블 변경 이외의 플로우 테이블 변경이나 관리에 대한 명령의 처리를 담당할 수 있다.
그룹 명령 처리 모듈(334)은 전술한 바와 같이 그룹 메시지를 이용한 플로우 테이블 변경을 위한 처리를 수행한다. 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 메시지를 수신하면 수신한 그룹 메시지를 저장부(335)의 임시 저장 영역(337)에 저장한 후 문법이나, 선행 조건 및/또는 자원 가용성 등의 유효성 검증을 수행한다. 여기서, 그룹 명령 처리 모듈(334)을 그룹 메시지가 유효성 검증 결과를 포함하는 확인 메시지를 통신부(331)를 통해 컨트롤러(310)에 전송한다. 만약 그룹 메시지의 유효성 검증에 실패하는 경우, 스위치(330)는 오류 내용에 대응되는 오류 코드를 확인 메시지에 포함시켜 컨트롤러(310)에 전송한다.
또한, 그룹 명령 처리 모듈(334)은 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신하는 경우, 수신한 그룹 변경 취소 메시지에 상응하여 임시 저장 영역(337)에 저장된 그룹 메시지를 삭제하고 플로우 테이블을 변경하지 않는다. 또는, 그룹 명령 처리 모듈(334)을 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하는 경우, 임시 저장 영여겡 저장된 그룹 메시지가 지시하는 내용에 따라 플로우 테이블 저장 영역(336)에 저장된 플로우 테이블을 변경한다.
저장부(335)는 플로우 테이블 저장 영역(336)과 임시 저장 영역(337)을 포함할 수 있다. 여기서, 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)은 물리적으로 구분된 독립적인 저장 장치로 구성될 수도 있고, 물리적인 하나의 저장 장치에 플로우 테이블 저장 영역(336) 및 임시 저장 영역(337)이 논리적으로 할당되는 형태로 구성될 수도 있다.
플로우 테이블 저장 영역(336)은 복수의 플로우 테이블이 저장되는 영역이고, 임시 저장 영역(337)은 컨트롤러(310)로부터 수신한 그룹 메시지가 일시적으로 저장되는 영역이다. 임시 저장 영역(337)에 저장된 그룹 메시지는 그룹 메시지의 유효성 검증에 실패하거나 컨트롤러(310)로부터 그룹 변경 취소 메시지를 수신한 경우, 또는 컨트롤러(310)로부터 그룹 변경 실행 메시지를 수신하여 플로우 테이블의 변경이 완료된 경우 그룹 명령 처리 모듈(334)의 제어에 따라 삭제될 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
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 : 메시지부

Claims (20)

  1. 컨트롤러에서 수행되는 트랜잭션 관리 방법으로,
    스위치에 저장된 플로우 테이블들 중 순차적인 작업이 요구되는 플로우 엔트리들의 변경을 위한 그룹 메시지를 생성하는 단계;
    상기 그룹 메시지를 상기 스위치에 전송하는 단계;
    상기 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 수신하는 단계; 및
    상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계를 포함하고,
    상기 그룹 메시지는 메시지의 유형, 메시지의 길이, 및 그룹 메시지의 식별자 정보를 포함하고, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 스위치에 전송하는 단계는, 상기 그룹 메시지에 포함된 복수의 메시지 중 적어도 하나의 메시지에 오류가 발생하였음을 지시하는 확인 메시지를 수신하는 경우, 상기 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송하는 것을 특징으로 하는, 트랜잭션 관리 방법.
  2. 청구항 1에서,
    상기 그룹 메시지는 상기 스위치 내의 복수의 플로우 테이블 중 순차적인 작업이 요구되는 상태를 가지는 테이블들을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.
  3. 청구항 2에서,
    상기 복수의 메시지는 동일한 구조를 가지며 상기 그룹 메시지 내에 반복적인 형태로 포함되는 것을 특징으로 하는 트랜잭션 관리 방법.
  4. 청구항 1에 있어서,
    상기 그룹 메시지는 상기 그룹 메시지에 포함된 그룹핑된 명령어 개수 정보를 더 포함하는 트랜잭션 관리 방법.
  5. 삭제
  6. 청구항 1에서,
    상기 확인 메시지는 상기 그룹 메시지에 오류가 발생한 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
  7. 삭제
  8. 컨트롤러에서 수행되는 트랜잭션 관리 방법으로,
    복수의 스위치에 각각 저장된 플로우 테이블들 중 순차적인 작업이 요구되는 플로우 엔트리들의 변경을 위한 그룹 메시지를 생성하는 단계;
    상기 그룹 메시지를 상기 복수의 스위치에 전송하는 단계;
    상기 복수의 스위치로부터 상기 그룹 메시지의 오류 발생 여부를 지시하는 확인 메시지를 각각 수신하는 단계; 및
    상기 확인 메시지에 기초하여 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계를 포함하고,
    상기 그룹 메시지는 메시지의 유형, 메시지의 길이, 및 그룹 메시지의 식별자 정보를 포함하고, 상기 그룹 메시지의 실행 또는 취소를 지시하는 메시지를 상기 복수의 스위치에 전송하는 단계는, 상기 복수의 스위치들 중 적어도 하나의 스위치로부터 상기 그룹 메시지의 오류 발생을 지시하는 확인 메시지를 수신하면, 상기 복수의 스위치에 상기 그룹 메시지의 취소를 지시하는 메시지를 전송하는 것을 특징으로 하는 트랜잭션 관리 방법.
  9. 청구항 8에서,
    상기 그룹 메시지는 상기 복수의 스위치에 각각 저장된 플로우 테이블들 중 순차적인 작업이 요구되는 상태를 가지는 복수의 플로우 테이블을 동시에 변경시키기 위한 복수의 메시지를 포함하는 메시지인 것을 특징으로 하는 트랜잭션 관리 방법.
  10. 삭제
  11. 삭제
  12. 청구항 8에 있어서,
    상기 그룹 메시지는 상기 그룹 메시지에 포함된 그룹핑된 명령어 개수 정보를 더 포함하는 트랜잭션 관리 방법.
  13. 스위치에서 수행되는 트랜잭션 관리 방법으로,
    저장된 플로우 테이블들 중 순차적인 작업이 요구되는 플로우 엔트리들의 변경을 위한 그룹 메시지를 컨트롤러로부터 수신하는 단계;
    상기 그룹 메시지의 오류를 검증하는 단계;
    상기 그룹 메시지의 오류 여부 정보를 포함하는 확인 메시지를 상기 컨트롤러에 전송하는 단계;
    상기 컨트롤러로부터 상기 그룹 메시지의 실행을 지시하는 실행 메시지를 수신하는 단계; 및
    임시 저장 영역에 저장된 그룹 메시지의 내용에 기초하여 플로우 테이블을 변경하는 단계를 포함하고,
    상기 그룹 메시지는 메시지의 유형, 메시지의 길이, 및 그룹 메시지의 식별자 정보를 포함하는 것을 특징으로 하는,트랜잭션 관리 방법.
  14. 청구항 13에 있어서,
    상기 그룹 메시지를 컨트롤러로부터 수신하는 단계는,
    수신한 상기 그룹 메시지를 임시 저장 영역에 저장하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
  15. 청구항 13에 있어서,
    상기 그룹 메시지의 오류를 검증하는 단계는,
    상기 그룹 메시지의 문법 및 선행 조건 중 적어도 하나에 대한 유효성 여부를 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.
  16. 청구항 13에 있어서,
    상기 그룹 메시지의 오류를 검증하는 단계는,
    상기 스위치의 자원 가용성을 판단하는 것을 특징으로 하는 트랜잭션 관리 방법.
  17. 청구항 13에 있어서,
    상기 확인 메시지는 상기 그룹 메시지에 오류가 있는 경우 오류 코드를 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
  18. 삭제
  19. 청구항 13에 있어서,
    상기 트랜잭션 관리 방법은
    상기 컨트롤러로부터 상기 그룹 메시지의 취소를 지시하는 취소 메시지를 수신하는 단계; 및
    임시 저장 영역에 저장된 그룹 메시지를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 관리 방법.
  20. 청구항 13에 있어서,
    상기 그룹 메시지는 상기 그룹 메시지에 포함된 그룹핑된 명령어 개수 정보를 더 포함하는 트랜잭션 관리 방법.
KR1020160014971A 2013-07-17 2016-02-05 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법 KR101975082B1 (ko)

Applications Claiming Priority (2)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020130162372A Division KR101595160B1 (ko) 2013-07-17 2013-12-24 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법

Publications (2)

Publication Number Publication Date
KR20160022327A KR20160022327A (ko) 2016-02-29
KR101975082B1 true KR101975082B1 (ko) 2019-05-03

Family

ID=52481916

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020130162372A KR101595160B1 (ko) 2013-07-17 2013-12-24 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법
KR1020160014971A KR101975082B1 (ko) 2013-07-17 2016-02-05 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020130162372A KR101595160B1 (ko) 2013-07-17 2013-12-24 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법

Country Status (1)

Country Link
KR (2) KR101595160B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101641496B1 (ko) * 2015-03-19 2016-07-29 아토리서치(주) 소프트웨어 정의 네트워크에서 스위치의 상태 변경 방법 및 장치
JP2018088650A (ja) * 2016-11-29 2018-06-07 富士通株式会社 情報処理装置、通信制御方法及び通信制御プログラム
KR102454398B1 (ko) 2018-02-19 2022-10-14 한국전자통신연구원 분산형 소프트웨어 정의 네트워킹 방법 및 장치
KR102275765B1 (ko) * 2019-11-08 2021-07-09 아토리서치(주) 소프트웨어 정의 네트워크에서 플로우 룰 트랜잭션을 처리하는 방법, 장치 및 컴퓨터 프로그램

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103168453B (zh) * 2010-10-15 2016-08-03 日本电气株式会社 交换机系统和数据转发方法
JP5884822B2 (ja) * 2011-02-17 2016-03-15 日本電気株式会社 フロー通信システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MiceTrap: Scalable traffic engineering of datacenter mice flows using OpenFlow(Ramona Trestian 외 2명, 2013년5월) 1부.*
OpenFlow Switch Specification(ver1.3.2, 2013.04.25.) 1부.*

Also Published As

Publication number Publication date
KR20160022327A (ko) 2016-02-29
KR20150009909A (ko) 2015-01-27
KR101595160B1 (ko) 2016-02-17

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
WO2019233179A1 (zh) 一种数据报文的检测方法、设备及系统
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
CN106302199B (zh) 一种基于三层交换机设备的用户态协议栈实现方法及系统
KR101975082B1 (ko) 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법
CN109088820B (zh) 一种跨设备链路聚合方法、装置、计算装置和存储介质
KR101803332B1 (ko) 사물 인터넷 네트워크 시스템
US20090316581A1 (en) Methods, Systems and Computer Program Products for Dynamic Selection and Switching of TCP Congestion Control Algorithms Over a TCP Connection
CN101247353B (zh) 流老化方法及网络设备
US10050859B2 (en) Apparatus for processing network packet using service function chaining and method for controlling the same
KR20140072343A (ko) Sdn 망의 장애 대처 방법
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 (ja) 冗長化された通信経路を切り替える計算機、プログラム及び方法
KR101581510B1 (ko) 다중 제어장치를 구비한 환경에서 제어장치의 제어 권한 변경 방법
US10333792B2 (en) Modular controller in software-defined networking environment and operating method thereof
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
US20200145478A1 (en) Method, electronic device, and computer program product for handling congestion of data transmission
Gadallah et al. A seven-dimensional state flow traffic modelling for multi-controller Software-Defined Networks considering multiple switches
KR101707073B1 (ko) Sdn 기반의 에러 탐색 네트워크 시스템
Hillston et al. Towards a feasible active networking scenario
Bergman et al. Formal Verification of FlowSync

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right