KR101678850B1 - 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램 - Google Patents

소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101678850B1
KR101678850B1 KR1020150097552A KR20150097552A KR101678850B1 KR 101678850 B1 KR101678850 B1 KR 101678850B1 KR 1020150097552 A KR1020150097552 A KR 1020150097552A KR 20150097552 A KR20150097552 A KR 20150097552A KR 101678850 B1 KR101678850 B1 KR 101678850B1
Authority
KR
South Korea
Prior art keywords
flow
switch
change
flow tables
tables
Prior art date
Application number
KR1020150097552A
Other languages
English (en)
Inventor
황인욱
송용주
Original Assignee
아토리서치(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아토리서치(주) filed Critical 아토리서치(주)
Priority to KR1020150097552A priority Critical patent/KR101678850B1/ko
Application granted granted Critical
Publication of KR101678850B1 publication Critical patent/KR101678850B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/65Re-configuration of fast packet switches
    • 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/253Routing or path finding in a switch fabric using establishment or release of connections between ports

Landscapes

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

Abstract

본 발명은 소프트웨어 정의 네트워크에서 스위치를 변경하는 방법에 대한 것으로, 상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용(contents)이 동일한 제 2 플로우 테이블 세트를 변경하는 A 단계; 및 상기 제 2 플로우 테이블 세트의 변경이 완료(commit)되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 B 단계를 포함하는 것을 특징으로 한다

Description

소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램 {METHOD, APPARATUS AND COMPUTER PROGRAM FOR UPDATING SWITCH OF SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법 및 장치에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크에서 스위치의 테이블, 포트 등의 상태 변경을 원자적(atomic)으로 처리할 수 있는 방법 및 장치에 대한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다는 장점을 갖는다.
SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치, 및 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성될 수 있다.
오픈플로우 스위치는 패킷의 송수신 기능만을 담당하며, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 데이터 플레인(Data Plane)과 콘트롤 플레인(Control Plane)을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
본 발명은 SDN 환경에서 스위치의 테이블, 포트 등에 대한 원자적 변경을 자원에 대한 잠금 없이 처리할 수 있는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 스위치를 변경하는 방법은, 상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용(contents)이 동일한 제 2 플로우 테이블 세트를 변경하는 A 단계; 및 상기 제 2 플로우 테이블 세트의 변경이 완료(commit)되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 B 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 스위치를 변경하는 처리를 실행하기 위하여 컴퓨터가 판독가능한 매체에 저장된 컴퓨터 프로그램은, 상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하는 기능; 및 상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 기능을 실행하는 것을 특징으로 한다.
한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 스위치를 변경하는 컨트롤러 서버는, 스위치와 연결하는 통신부; 및 상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하도록 상기 스위치를 제어하고, 상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하도록 상기 스위치를 제어하는 제어부를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 패킷을 처리하는 스위치는, 컨트롤러 서버와 연결하는 통신부; 및 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하고, 상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 제어부를 포함하는 것을 특징으로 한다.
본 발명에 따르면 SDN 환경에서 스위치의 원자적 변경을 효율적으로 처리할 수 있어 네트워크 운영의 신뢰성이 높아지는 효과가 있다. 나아가 본 발명에 따르면 오픈플로우 프로토콜의 번들(bundle) 기능을 모든 스위치를 대상으로 자원에 대한 잠금 없이 적용할 수 있는 효과가 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면
도 2는 본원발명의 실시예를 따라 스위치의 플로우 테이블을 변경하는 구체적인 과정을 설명하기 위한 순서도
도 3은 본원발명의 실시예를 따라 스위치의 플로우 테이블을 다중 변경하는 구체적인 과정을 설명하기 위한 순서도
도 4는 본원발명의 실시예를 따라 스위치의 그룹 테이블 및/또는 미터 테이블을 변경하는 구체적인 예시를 설명하기 위한 도면
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
본 발명의 명세서에서 “플로우 룰”의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다.
나아가 본 발명의 명세서에서 플로우 테이블, 그룹 테이블 및/또는 미터 테이블의 변경(updating)은 테이블을 구성하는 엔트리의 추가(add), 삭제(delete) 및/또는 수정(modify)을 포함하는 개념으로 이해될 수 있다. 마찬가지로 포트의 변경 역시 포트의 추가, 삭제 및/또는 수정을 포함하는 개념으로 이해될 수 있다.
나아가 본 명세서에서 오픈플로우 스위치(200)는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해될 수 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다. 도 1을 참조하면, 소프트웨어 정의 네트워크(Software Defined Network)는 컨트롤러 서버(100), 네트워크 장비(200) 및 호스트(300)를 포함할 수 있다. 네트워크 장비(200)와 호스트(300)는 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러 서버(100)는 네트워크 장비(200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러 서버(100)는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 응용 프로그램이 탑재된 형태로 구현될 수 있다.
네트워크 장비(200)는 컨트롤러 서버(100)의 제어에 따라 패킷을 처리하는 기능을 한다. 네트워크 장비(200)의 예로는 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 유선 네트워크의 스위치, 라우터 등이 있다. 다만 설명의 편의를 위해 이하에서는 네트워크 장비(200)가 오픈플로우 스위치인 경우를 중심으로 설명하도록 한다.
소프트웨어 정의 네트워크에서 컨트롤러 서버(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고 받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우 (OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러 서버(100)와 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
오픈플로우 프로토콜을 따르면, 스위치(200)는 컨트롤 채널(Control Channel)을 통해 컨트롤러 서버(100)와 정보를 교환하고, 파이프라인(Pipeline) 프로세싱을 위한 하나 이상의 플로우 테이블(Flow table), 그룹 테이블, 미터 테이블 및/또는 패킷 전달을 위한 네트워크 인터페이스로 하나 이상의 포트를 가질 수 있다.
스위치의 플로우 테이블, 그룹 테이블, 미터 테이블 및/또는 포트는 컨트롤러 서버(100)의 제어에 의해 변경될 수 있다. 보다 구체적으로 컨트롤러 서버는 변경 메시지(Mod Message)를 오픈플로우 스위치(200)에게 전송하여 스위치를 변경할 수 있다. 본 명세서에서 스위치의 변경은 해당 스위치의 플로우 테이블, 그룹 테이블, 미터 테이블 및/또는 포트 등에 대한 변경을 포함하는 개념이다.
그런데 현재의 SDN 구조에서는 복수의 변경 사항에 대한 상태 변경의 원자성을 보장할 수 없는 문제가 있다.
예를 들어, 어떤 시점에서 특정 스위치가 표 1과 같은 플로우 테이블을 적용하여 패킷을 처리하고 있는 상황에서 컨트롤러는 표 2와 같은 플로우 테이블로 변경하고자 하는 경우를 고려할 수 있다.
변경전 플로우 테이블
Priority Match Field Instruction
20 IPDstAddr = 1.0.0.1 Output 1
20 IPDstAddr = 1.0.0.2 Output 2
변경후 플로우 테이블
Priority Match Instruction 변경 내용
30 TCPdstPort = 20 Output 5 플로우 엔트리 추가
20 IPDstAddr = 1.0.0.1 Output 1
20 IPDstAddr = 1.0.0.2 Drop Instruction 수정
10 IPDstAddr = 1.0.0.3 Output 2 플로우 엔트리 추가
그러나 오픈플로우 표준에서는 복수의 변경 사항에 대한 일괄적 처리나 변경 완료 시점의 일치는 보장하지 않는다. 따라서 상기 표의 예에서 3개의 Flow Mod 메시지가 스위치에 전달되어 변경 내용이 모두 반영되거나 또는 모두 반영되지 않을 것은 보장될 수 없다.
예를 들어 위의 표 1, 2에서 우선 순위 10인 플로우 엔트리 추가는 메모리 부족으로 실패하고 다른 두 개의 변경 사항만 반영되는 경우가 발생할 수 있다. 또한 변경의 중간 상태, 즉 일부 변경 사항만 반영된 상태의 플로우 테이블이 패킷 처리에 적용되는 경우도 발생할 수 있다.
예를 들어 위의 표 1, 2에 따르면 IPDstAddr가 1.0.0.2이고 TCPdstPort가 20인 패킷은 변경 전의 정책인 Output 2 또는 변경 후의 정책인 Output 5로 처리되어야 하는데, 변경의 중간 과정에서 Drop으로 처리되는 예상치 못한 결과가 생길 수도 있다.
이와 같이 현재의 SDN 구조에서는 스위치에 대한 복수의 플로우 엔트리 변경 등 상태 변경의 원자성을 보장할 수 없는 문제가 있다. 즉, 복수의 변경 사항의 동시적 처리를 보장할 수 없기 때문에 경로 계산의 신뢰성이 낮아지고, 이는 특히 고도의 보안이 요구되는 네트워크 환경에서 큰 문제가 될 수 있다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위하여 스위치의 변경을 원자적으로 처리할 수 있는 방법을 제공하고자 한다.
한편 컨트롤러 원자성(controller atomic)은 스위치를 조회한 컨트롤러는 스위치 변경의 중간 상태를 확인할 수 없음을 의미한다. 다시 말하면, 컨트롤러 원자성을 보장하기 위해서는 복수의 변경 사항이 모두 반영되거나 모두 반영되지 않은 스위치 상태만 컨트롤러에서 확인되어야 한다.
나아가 패킷 원자성(packet atomic)은 패킷은 스위치 변경의 중간 상태를 적용받지 않음을 의미한다. 즉, 패킷 원자성을 보장하기 위해서는 패킷은 복수의 변경 사항이 모두 반영되거나 모두 반영되지 않은 스위치 상태에 따라 처리되어야 한다.
한편 위와 같은 스위치의 원자적 변경과 관련하여 오픈플로우 프로토콜은 번들 기능을 지원하고 있다. 그런데 상기 번들은 오픈플로우 프로토콜 버전 1.4 이상의 스위치에만 적용되는 기능이다. 그러나 2015년 현재, 버전 1.4 이상을 지원하는 스위치는 매우 드물기 때문에 번들 기능은 제대로 활용되기 어렵다.
나아가 스위치가 번들을 지원하는 경우라도, 오픈플로우 프로토콜은 번들의 구체적인 구현에서 세부 사항 대부분은 선택사항(optional)으로 두었다. 따라서 스위치 벤더(vendor)의 구현에 따라 자원에 잠금이 발생하거나 패킷 원자성이 지원되지 않을 수 있다.
본 발명은 상기와 같은 문제를 해결하기 위한 것으로, 본 발명을 따르면SDN 환경에서 스위치의 테이블, 포트 등에 대한 변경을 원자적으로 처리할 수 있다. 나아가 본 발명을 따르면 컨트롤러에서 스위치의 원자적 변경을 제어하기 때문에 컨트롤러의 응용 프로그램들은 스위치가 번들을 지원하는지 여부와는 무관하게 번들 기능을 사용할 수 있다.
보다 구체적으로 본 발명의 실시예를 따르면, 스위치에서는 복수의 플로우 테이블들이 동일한 내용으로 2세트씩 운용될 수 있다. 각각의 세트를 이루는 테이블들은 실질적인 내용이 동일하나 서로 연결되지 않는 특징이 있다. 상기 2 세트의 플로우 테이블은 하나의 세트는 패킷의 처리에, 하나의 세트는 플로우 엔트리의 변경에 사용되기 위한 것이다.
본 발명의 실시예를 따르면 스위치가 하나의 테이블 세트를 적용하여 패킷을 처리하는 동안, 다른 테이블 세트가 변경될 수 있다. 이를 각각 활성 테이블 세트, 비활성 테이블 세트라고 명칭한다. 스위치는 비활성 테이블 세트의 변경이 완료되면, 이를 활성 테이블 세트로 전환하여 패킷을 처리하도록 구현되기 때문에 자원에 대한 잠금 없이 컨트롤러 원자성, 패킷 원자성이 모두 지원될 수 있다.
보다 구체적인 설명은 첨부된 표와 도면에 대한 설명과 함께 후술된다.
Figure 112015066428646-pat00001
표 3은 본 발명의 실시예를 따르는 스위치의 복수의 플로우 테이블을 도식화한 것이다. 표 3의 예에서 Goto instruction으로 서로 연결된 테이블 0, 1, 2와 테이블 3, 4, 5는 각각 하나의 세트를 이룰 수 있으며, 이를 각각 제 1 테이블 세트, 제 테이블 2세트로 명칭할 수 있다.
표 3의 제 1 테이블 세트, 제 2 테이블 세트는 실질적으로 동일하나 goto table instruction 등으로 서로 연결되지 않다. 따라서 제 1 테이블 세트를 적용하여 컨트롤러가 패킷을 처리하는 동안 제 2 테이블 세트를 변경한다 하더라도, 변경의 중간 상태는 컨트롤러와 패킷에 적용되지 않는다. 해당 시점에서 패킷 처리에 적용되는 제 1 테이블 세트는 활성 테이블 세트, 플로우 테이블 변경에 사용되는 제 2 테이블 세트는 비활성 테이블 세트라고 할 수 있다.
본 발명에 따르면 활성 테이블 세트와 비활성 테이블 세트는 goto table instruction 이외에는 실질적으로 내용이 동일하다. 양자는 서로 연결되지만 않으면 족하기 때문에 각 세트를 이루는 테이블 번호는 분리된 그룹에서 선택되며 다양한 형태로 구성할 수 있다.
본 발명의 실시예를 따르면, 활성 테이블 세트를 적용하여 패킷을 처리하고 있는 동안, 비활성 테이블 세트가 변경될 수 있다. 표 4는 위의 예에서 비활성 테이블 세트가 변경된 예이다.
Figure 112015066428646-pat00002
본 발명의 실시예를 따르면 비활성 테이블 세트의 변경이 완료되면, 활성과 비활성 세트가 전환되고 변경된 테이블 세트가 적용될 수 있다.
이를 위하여 표 5와 같이 활성 테이블 세트의 진입 테이블(ingress table)인 테이블 0에 비활성 테이블 세트의 진입 테이블인 테이블 3으로 건너가도록 지시하는 최우선순위 플로우 엔트리 (Goto table 3)를 추가할 수 있다.
Figure 112015066428646-pat00003
이후 활성 테이블 세트로 전환된 테이블 3, 4, 5가 적용되어 패킷이 처리될 것이다.
이후 비활성 테이블 세트로 전환된 테이블 0, 1, 2는 활성 테이블 3, 4, 5의 변경 사항을 반영하도록 변경될 수 있다. 앞서 설명한 바와 같이, 비활성 테이블 세트를 변경한다 하더라도 변경의 중간 상태는 컨트롤러와 패킷에 적용되지 않으며, 이와 같은 방식으로 활성 테이블 세트와 비활성 테이블 세트의 동기화가 이루어 질 수 있다.
이후 다른 변경 사항이 발생하면 비활성 테이블 세트인 테이블 0, 1, 2를 변경할 수 있고, 변경이 완료되면 테이블 0의 Goto table 3 인스트럭션을 삭제하여 활성, 비활성 세트를 전환할 수 있다.
본 발명에 따르는 스위치의 플로우 테이블을 변경하는 구체적인 과정은 첨부된 도 2에 대한 설명과 함께 후술된다.
도 2는 본원발명의 실시예를 따르는 컨트롤러가 스위치의 플로우 테이블을 변경하는 구체적인 과정을 설명하기 위한 순서도이다.
도 2에 도시된 것은 아니지만, 단계 210 이전에 컨트롤러는 스위치의 상태 변경을 원자적으로 처리하기 위하여 본 발명의 실시예를 따르는 응용 프로그램 모듈을 실행할 수 있다.
다른 응용 프로그램이 적어도 하나 이상의 변경 사항들을 일괄적으로 처리하고자 하는 경우, 상기 모듈은 번들 메시지를 사용하지 않고 이를 구현할 수 있다. 따라서 본 발명의 실시예를 따르면 하위 버전의 스위치에 대해서도 번들 기능을 에뮬레이션 할 수 있다.
본 발명의 실시예를 따르면, 상기 모듈은 원자적 변경을 보장하기 위하여 스위치에게 동일한 플로우 테이블 세트를 2개씩 할당할 수 있다. 상기 두개의 플로우 테이블 세트는 goto table instruction 등 테이블 간 연결에 대한 것을 제외하고 실질적인 내용이 동일한 특징이 있다.
나아가 상기 모듈은 특정 시점에 하나의 세트는 활성화되어 패킷 처리에 이용되고 나머지 하나의 세트는 비활성 상태로 플로우 룰 변경에 이용하도록 스위치를 제어할 수 있다. (단계 210, 220)
컨트롤러의 임의의 응용 프로그램이 해당 스위치의 복수개의 원자적 변경 사항을 처리하고자 하거나 복수개의 변경 사항에 대한 번들 메시지를 처리하는 경우 (단계 230) 상기 모듈은 본 발명의 실시예를 따라 비활성 테이블 세트에 해당 변경 사항을 반영하도록 처리할 수 있다. (단계 240)
이후 변경이 완료되거나 번들이 실행되면 상기 모듈은 스위치의 활성/비활성 테이블 세트를 전환하도록 제어할 수 있다. (단계 250) 예를 들어 상기 모듈은 활성 테이블 세트의 진입 테이블에 비활성 테이블 세트의 진입 테이블로 건너가도록 지시하는 최우선순위 플로우 엔트리를 추가 또는 삭제하도록 제어하는 방식으로 활성 / 비활성 테이블 세트를 전환시킬 수 있다.
이때 비활성 플로우 테이블의 변경이 모두 성공하지 않으면, 활성/비활성 테이블 세트는 전환되지 않고, 비활성 테이블 세트에 반영된 변경 내용은 취소될 수 있다.
한편, 본 발명의 다른 실시예를 따르면 스위치의 그룹 테이블, 미터 테이블 및/또는 포트의 변경 역시 원자적으로 처리될 수 있다.
보다 구체적으로 단계 230에서 포트를 변경하고자 하는 경우, 임의의 포트를 다운(down)시키는 변경은 비활성 테이블 세트에서 다운시킬 포트가 아웃풋 포트인 구성을 삭제하는 방식으로 구현하고, 임의의 포트를 연결(up)시키는 변경은 비활성 테이블 세트에서 연결시킬 포트가 아웃풋 포트인 구성을 추가하는 방식으로 구현할 수 있다. (단계 240)
이후 단계 260에서 상기 모듈은 비활성 테이블 세트에 활성 테이블 세트의 변경 사항을 반영할 수 있다. 비활성 테이블 세트에 상기 변경 사항이 반영되는 동안, 스위치는 활성 테이블 세트를 적용하여 패킷을 처리하기 때문에 변경의 원자성은 여전히 실현될 수 있다. 단계 260을 통해 활성 테이블 세트와 비활성 테이블 세트의 구성은 동기화되고, 양자는 서로 연결되지 않으나 내용이 동일한 상태를 유지하게 될 것이다.
한편 본원발명의 실시예를 따르면 스위치의 플로우 테이블은 복수의 변경 사항의 묶음에 대해 다중으로 변경될 수 있으며, 이 경우에도 변경의 원자성이 지원될 수 있다. 이는 오픈플로우 프로토콜에서 다중 번들 (multiple bundle)을 지원하는 것과 같은 맥락의 기능이다.
도 3은 상기 다중 변경을 구체적으로 설명하기 위한 순서도이다.
컨트롤러의 임의의 응용 프로그램이 복수의 변경 사항들에 대한 다수회의 변경을 각각 스위치에 적용하고자 하거나 복수개의 변경 사항들에 대한 다수의 번들 메시지를 복수의 번들 아이디를 이용하여 생성하는 경우, 본 발명의 실시예를 따르는 모듈은 각 변경 사항들을 독립적으로 비활성 플로우 테이블에 반영하도록 처리할 수 있다. (단계 310, 320) 도 3은 이를 1차 변경과 2차 변경으로 도시한다.
이후 1차 변경이 완료되거나 1차 번들이 실행된 경우 (단계 330), 2차 변경이 완료되지 않거나 2차 번들이 실행되지 않으면 (단계 340), 비활성 테이블에서 2차 변경 사항에 대한 변경은 취소될 수 있다. (단계 350) 1차 변경이 실행됐음에도 불구하고 2차 변경을 대기하는 경우 자원의 잠금이 발생할 수 있기 때문이다.
이후 단계 360에서 비활성 테이블 세트와 활성 테이블 세트는 전환될 수 있다. 예를 들어 상기 모듈은 활성 테이블 세트의 진입 테이블에 비활성 테이블 세트의 진입 테이블로 건너가도록 지시하는 최우선순위 플로우 엔트리를 추가 또는 삭제하도록 제어하는 방식으로 활성 / 비활성 테이블 세트를 전환시킬 수 있다.
이후 단계 370에서 전환된 비활성 테이블 세트에 1차 변경 사항이 반영되면 비활성 테이블 세트와 활성 테이블 세트의 동기화는 유지될 것이다. 이후 단계 380에서 취소된 2차 변경 사항에 대해 비활성 테이블 세트를 변경하면 복수의 변경 사항 그룹들에 대한 다중 변경이 원자성을 유지하면서 진행될 수 있다.
한편 단계 340에서 1차 변경 사항과 2차 변경 사항이 모두 실행 및/또는 완료된 경우, 단계 390에서 비활성 테이블 세트와 활성 테이블 세트는 전환될 수 있다. 이후 단계 395에서 전환된 비활성 테이블 세트에 1차 변경 사항과 2차 변경 사항이 반영되면 비활성 테이블 세트와 활성 테이블 세트의 동기화는 유지될 수 있다.
한편 본원발명의 실시예를 따르면 스위치의 그룹 테이블 및/또는 미터 테이블을 변경하는 group-mod, meter-mod 요청도 원자적 변경에 포함할 수 있다.
오픈플로우 프로토콜은 복수의 그룹 테이블 및/또는 미터 테이블을 지원하지 않으며 그룹 테이블을 이루는 그룹 엔트리들은 group identifier, 미터 테이블의 미터 엔트리들은 meter identifier에 의해 분류된다.
따라서 원자적 변경을 위하여 본 발명은 그룹 엔트리 및/또는 미터 엔트리를 동일한 내용으로 2 세트씩 운용하는 방식으로 구현될 수 있다. 이는 스위치가 하나의 엔트리 세트를 적용하여 패킷을 처리하는 동안, 다른 엔트리 세트를 변경하기 위한 것이다.
표 6은 본 발명의 실시예를 따르는 스위치의 그룹 테이블 및/또는 미터 테이블 그리고 활성/비활성 플로우 테이블을 도식화한 것이다.
[표 6]
Figure 112015066428646-pat00004
표 6의 그룹 및/또는 미터 테이블에서 그룹 및/또는 미터 ID 1 엔트리와 2 엔트리는 그룹 및/또는 미터 ID를 제외하고 모든 내용이 동일하다. 그러나 각각 활성 플로우 테이블 세트와 비활성 플로우 테이블 세트에 연결되어 있기 때문에 각 엔트리는 연결되어 있지 않으며 동시에 적용될 수 없는 특징이 있다.
따라서 어느 하나의 엔트리를 적용하여 컨트롤러가 패킷을 처리하는 동안, 다른 엔트리를 변경한다 하더라도, 변경의 중간 상태는 컨트롤러와 패킷에게 적용될 수 없다. 이는 그룹 및/또는 미터 엔트리가 복수개 존재하여 세트를 이루는 경우에도 마찬가지이다.
본 발명에 따르는 스위치의 그룹 및/또는 미터 테이블을 변경하는 구체적인 과정은 첨부된 도 4에 대한 설명과 함께 후술된다. 도 4은 본원발명의 실시예를 따라 스위치의 그룹 테이블 및/또는 미터 테이블을 변경하는 구체적인 예시를 설명하기 위한 도면이다.
본 발명의 실시예를 따르는 컨트롤러는 스위치의 플로우 테이블들을 2세트씩 운영할 수 있다. 앞서 설명한 것과 같이 특정 시점에 하나의 세트는 활성화되어 패킷 처리에 이용되고 나머지 하나의 세트는 비활성 상태로 플로우 룰 변경에 이용하기 위한 것이다. (단계 210, 220)
또한 컨트롤러는 스위치의 그룹 엔트리 및/또는 미터 엔트리를 2세트씩 운영할 수 있다. 같은 맥락으로 특정 시점에 하나의 세트는 활성화되어 패킷 처리에 이용되고 나머지 하나의 세트는 비활성 상태로 상태 변경에 이용하기 위한 것이다. (단계 420, 430)
컨트롤러의 임의의 응용 프로그램이 해당 스위치의 그룹 테이블 및/또는 미터 테이블을 변경하고자 하는 경우 (단계 430) 본원발명의 실시예를 따르는 프로그램 모듈은 비활성 엔트리 세트에 해당 변경 사항을 반영하도록 처리할 수 있다. (단계 440)
이후 변경이 완료되거나 및/또는 번들이 실행되면 상기 모듈은 스위치의 활성/비활성 엔트리 세트를 전환하도록 제어할 수 있다. 예를 들어 상기 모듈은 활성 엔트리 세트와 연결된 활성 테이블 세트의 진입 테이블에 비활성 엔트리 세트와 연결된 비활성 테이블 세트의 진입 테이블로 건너가도록 지시하는 최우선순위 플로우 엔트리를 추가 또는 삭제하도록 제어하는 방식으로 활성/ 비활성 테이블 세트 및 엔트리 세트를 전환 시킬 수 있다.
이후 단계 460에서 상기 모듈은 비활성 엔트리 세트에 활성 엔트리 세트의 변경 사항을 반영할 수 있다. 비활성 엔트리 세트에 상기 변경 사항이 반영되는 동안, 스위치는 활성 엔트리 세트를 적용하여 패킷을 처리하기 때문에 변경의 원자성은 여전히 실현될 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에게 자명한 것이다.
100 : 컨트롤러 서버
200 : 오픈플로우 스위치
300 : 호스트

Claims (14)

  1. 소프트웨어 정의 네트워크에서 스위치를 변경하는 방법에 있어서,
    상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용(contents)이 동일한 제 2 플로우 테이블 세트를 변경하는 A 단계; 및
    상기 제 2 플로우 테이블 세트의 변경이 완료(commit)되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 B 단계를 포함하며
    상기 B단계는,
    상기 제 1 플로우 테이블 세트의 진입 테이블(ingress table)에 상기 제 2 플로우 테이블 세트의 진입 테이블로 건너가도록 지시(Goto-Table instruction)하는 최우선순위 플로우 엔트리를 추가 또는 삭제하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  2. 삭제
  3. 제 1항에 있어서, 상기 B단계 이후에,
    상기 제 1 플로우 테이블 세트에 상기 변경된 제 2 플로우 테이블 세트의 변경 사항을 반영하는 단계를 더 포함하는 것을 특징으로 하는 스위치 변경 방법.
  4. 제 1항에 있어서,
    상기 A 단계는,
    상기 스위치가 그룹 테이블에서 상기 제 1 플로우 테이블 세트와 연결된 제 1 그룹 엔트리 세트를 적용하는 동안, 상기 제 2 플로우 테이블 세트와 연결되고 상기 제 1 그룹 엔트리 세트와 내용이 동일한 제 2 그룹 엔트리 세트를 변경하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  5. 제 4항에 있어서, 상기 제 2 그룹 엔트리 세트를 변경하는 단계 이후에,
    상기 제 1 그룹 엔트리 세트에 상기 변경된 제 2 그룹 엔트리 세트의 변경 사항을 반영하는 단계를 더 포함하는 것을 특징으로 하는 스위치 변경 방법.
  6. 제 1항에 있어서,
    상기 A 단계는,
    상기 스위치가 미터 테이블에서 상기 제 1 플로우 테이블 세트와 연결된 제 1 미터 엔트리 세트를 적용하는 동안, 상기 제 2 플로우 테이블 세트와 연결되고 상기 제 1 미터 엔트리 세트와 내용이 동일한 제 2 미터 엔트리 세트를 변경하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  7. 제 6항에 있어서, 제 2 미터 엔트리 세트를 변경하는 단계 이후에,
    상기 제 1 미터 엔트리 세트에 상기 변경된 제 2 미터 엔트리 세트의 변경 사항을 반영하는 단계를 더 포함하는 것을 특징으로 하는 스위치 변경 방법.
  8. 제 1 항에 있어서,
    상기 A단계는,
    상기 스위치의 임의의 포트를 다운(down)시키고자 하는 경우, 상기 스위치가 상기 제 1 플로우 테이블 세트를 적용하여 패킷을 처리하는 동안, 상기 제 2 플로우 테이블 세트에서 다운시킬 포트가 아웃풋 포트(output port)인 구성을 삭제하는 단계; 및
    상기 스위치의 임의의 포트를 연결(up)하고자 하는 경우, 상기 스위치가 상기 제 1 플로우 테이블 세트를 적용하여 패킷을 처리하는 동안, 상기 제 2 플로우 테이블 세트에서 연결시킬 포트가 아웃풋 포트인 구성을 추가하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  9. 제 1항에 있어서,
    상기 B단계는,
    상기 제 2 플로우 테이블 세트의 적어도 하나 이상의 제 1 변경 사항에 대한 변경이 완료된 시점에서 상기 제 2 플로우 테이블 세트의 적어도 하나 이상의 제 2 변경 사항에 대한 변경이 완료되지 않은 경우, 상기 제 2 변경 사항에 대한 변경을 취소하는 단계; 및
    상기 제 1 플로우 테이블 세트를 적용하지 않고, 상기 제 2 변경 사항에 대한 변경이 취소되고 상기 제 1 변경 사항에 대한 변경이 완료된 제 2 플로우 테이블 세트를 적용하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  10. 제 9항에 있어서, 상기 제 1 변경 사항에 대한 변경이 완료된 제 2 플로우 테이블 세트를 적용하는 단계 이후에,
    상기 제 1 플로우 테이블 세트를 상기 제 1 변경 사항 및 상기 제 2 변경 사항에 대해 변경하는 단계를 포함하는 것을 특징으로 하는 스위치 변경 방법.
  11. 소프트웨어 정의 네트워크에서 스위치를 변경하는 처리를 실행하기 위하여 컴퓨터가 판독가능한 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하는 기능; 및
    상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 기능을 실행하며,
    상기 적용하는 기능은,
    다른 컴퓨터 프로그램이 번들 적용을 요청하면, 상기 컴퓨터 프로그램이 상기 제 1 플로우 세트의 진입 테이블(ingress table)에 상기 제 2 플로우 테이블 세트의 진입 테이블로 건너가도록 지시(Goto-Table instruction)하는 최우선순위 플로우 엔트리를 추가 또는 삭제하는 기능을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  12. 제 11항에 있어서,
    상기 변경하는 기능은,
    상기 컴퓨터 프로그램이 상기 스위치에 상기 제 2 플로우 테이블 세트를 생성하는 기능; 및
    상기 다른 컴퓨터 프로그램이 상기 스위치를 수정하기 위한 번들 생성을 요청하면, 상기 컴퓨터 프로그램이 상기 제 2 플로우 테이블 세트를 변경하는 기능을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  13. 소프트웨어 정의 네트워크에서 스위치를 변경하는 컨트롤러 서버에 있어서,
    스위치와 연결하는 통신부; 및
    상기 스위치가 제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하도록 상기 스위치를 제어하고, 상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하도록 상기 스위치를 제어하는 제어부를 포함하며,
    상기 제어부는, 상기 제 1 플로우 세트의 진입 테이블(ingress table)에 상기 제 2 플로우 테이블 세트의 진입 테이블로 건너가도록 지시(Goto-Table instruction)하는 최우선순위 플로우 엔트리를 추가 또는 삭제하도록 상기 스위치를 제어하는 것을 특징으로 하는 컨트롤러 서버.
  14. 소프트웨어 정의 네트워크에서 패킷을 처리하는 스위치에 있어서,
    컨트롤러 서버와 연결하는 통신부; 및
    제 1 플로우 테이블 세트를 적용하는 동안, 상기 제 1 플로우 테이블 세트와 연결되지 않으나 내용이 동일한 제 2 플로우 테이블 세트를 변경하고, 상기 제 2 플로우 테이블 세트의 변경이 완료되면, 상기 제 1 플로우 테이블 세트를 적용하지 않고 변경된 제 2 플로우 테이블 세트를 적용하는 제어부를 포함하며,
    상기 제어부는, 상기 제 1 플로우 테이블 세트의 진입 테이블(ingress table)에 상기 제 2 플로우 테이블 세트의 진입 테이블로 건너가도록 지시(Goto-Table instruction)하는 최우선순위 플로우 엔트리를 추가 또는 삭제하는 것을 특징으로 하는 스위치.
KR1020150097552A 2015-07-09 2015-07-09 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램 KR101678850B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150097552A KR101678850B1 (ko) 2015-07-09 2015-07-09 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150097552A KR101678850B1 (ko) 2015-07-09 2015-07-09 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램

Publications (1)

Publication Number Publication Date
KR101678850B1 true KR101678850B1 (ko) 2016-12-06

Family

ID=57576316

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150097552A KR101678850B1 (ko) 2015-07-09 2015-07-09 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101678850B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190016721A (ko) * 2017-08-09 2019-02-19 박익동 다대다(n:n) 구조의 경로 관리 스위치 및 그것에 의해 수행되는 경로 관리 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130128461A (ko) * 2011-03-23 2013-11-26 닛본 덴끼 가부시끼가이샤 통신 제어 시스템, 스위치 노드 및 통신 제어 방법
KR20130140929A (ko) * 2012-05-07 2013-12-26 한국전자통신연구원 다 단계 다 계층 스위치 및 그 작동 방법
KR20140106235A (ko) * 2013-02-26 2014-09-03 한국전자통신연구원 오픈플로우 스위치 및 그 패킷 처리 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130128461A (ko) * 2011-03-23 2013-11-26 닛본 덴끼 가부시끼가이샤 통신 제어 시스템, 스위치 노드 및 통신 제어 방법
KR20130140929A (ko) * 2012-05-07 2013-12-26 한국전자통신연구원 다 단계 다 계층 스위치 및 그 작동 방법
KR20140106235A (ko) * 2013-02-26 2014-09-03 한국전자통신연구원 오픈플로우 스위치 및 그 패킷 처리 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190016721A (ko) * 2017-08-09 2019-02-19 박익동 다대다(n:n) 구조의 경로 관리 스위치 및 그것에 의해 수행되는 경로 관리 방법
KR102007082B1 (ko) 2017-08-09 2019-08-02 박익동 다대다(n:n) 구조의 경로 관리 스위치 및 그것에 의해 수행되는 경로 관리 방법

Similar Documents

Publication Publication Date Title
US9325615B2 (en) Method and apparatus for implementing communication between virtual machines
EP2725737B1 (en) Network policy configuration method, management device and network management centre device
WO2017036288A1 (zh) 一种网元升级方法及设备
JP7012145B2 (ja) 通信方法、通信デバイス、及び記憶媒体
US20170264496A1 (en) Method and device for information processing
US20140068045A1 (en) Network system and virtual node migration method
US20150350077A1 (en) Techniques For Transforming Legacy Networks Into SDN-Enabled Networks
TWI639325B (zh) 自動配置的交換機、自動配置交換機的方法、交換機自動部署的軟體定義網路系統及其方法
CN105162704A (zh) Overlay网络中组播复制的方法及装置
KR101658824B1 (ko) 소프트웨어 정의 네트워크에서 플로우 룰을 변경하는 방법, 장치 및 컴퓨터 프로그램
KR20170042712A (ko) 포워딩 테이블 동기화 방법, 네트워크 장치, 및 시스템
WO2017162030A1 (zh) 一种虚拟网络的生成方法和装置
KR20170114923A (ko) 네트워크 슬라이스를 이용한 통신 방법 및 통신 장치
KR101864811B1 (ko) 교환 장치, 제어기, 및 교환 장치 구성 방법, 및 패킷 처리 방법 및 시스템
CN113872845A (zh) 建立vxlan隧道的方法及相关设备
CN103631652A (zh) 虚拟机迁移的实现方法及系统
EP2869641A1 (en) Network path control method, device, and system
CN106341249A (zh) 冗余端口的切换方法及装置
KR20170076064A (ko) 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램
WO2015090035A1 (zh) 网络资源的共享处理、共享方法及装置、系统
KR101678850B1 (ko) 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램
US11907253B2 (en) Secure cluster pairing for business continuity and disaster recovery
JP5063726B2 (ja) 仮想ノード装置のコンフィグ制御方法
WO2017084411A1 (zh) 软件定义网络管理方法及通信系统
US11277307B2 (en) Configuring managed devices when a network management system (NMS) is not reachable

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 4