KR101576518B1 - 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치 - Google Patents

소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치 Download PDF

Info

Publication number
KR101576518B1
KR101576518B1 KR1020140163530A KR20140163530A KR101576518B1 KR 101576518 B1 KR101576518 B1 KR 101576518B1 KR 1020140163530 A KR1020140163530 A KR 1020140163530A KR 20140163530 A KR20140163530 A KR 20140163530A KR 101576518 B1 KR101576518 B1 KR 101576518B1
Authority
KR
South Korea
Prior art keywords
switch
software module
control device
software
open flow
Prior art date
Application number
KR1020140163530A
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 KR1020140163530A priority Critical patent/KR101576518B1/ko
Application granted granted Critical
Publication of KR101576518B1 publication Critical patent/KR101576518B1/ko

Links

Images

Classifications

    • 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
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

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

Abstract

본 발명은 소프트웨어 정의 네트워크의 스위치가 소프트웨어를 실행하는 방법에 대한 것으로, 상기 소프트웨어 정의 네트워크의 제어 장치와 네트워크 연결을 확립하는 단계; 상기 제어 장치로부터 소프트웨어 모듈을 수신하는 단계; 및 상기 소프트웨어 모듈을 실행하는 단계를 포함하는 것을 특징으로 한다. 본 발명에 따르면 스위치가 오픈플로우 프로토콜을 지원하면서 동시에 오픈플로우 영역을 넘어서는 기능을 수행할 수 있어, 소프트웨어 정의 네트워킹으로 구현할 수 있는 기능을 확대하고 성능을 높일 수 있는 효과가 있다.

Description

소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치 {METHOD AND APPARATUS FOR EXPANSION AND UTILIZATION OF OPENFLOW PROTOCOL}
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법 및 장치에 대한 것이다. 보다 구체적으로 본 발명은 오픈플로우 프로토콜을 확장하여 소프트웨어 정의 네트워크의 스위치의 제어능력을 향상시킬 수 있는 방법 및 장치에 대한 것이다.
소프트웨어 정의 네트워킹 (SDN, Software Defined Networking)의 등장은 최근 네트워크 구조를 바꾸고 있다. 소프트웨어 정의 네트워크 기술은 복잡한 컨트롤 플레인(control plane)의 기능을 데이터 플레인(data plane)과 분리하여, 컨트롤 플레인의 복잡한 기능을 소프트웨어로 처리하고, 데이터 플레인은 네트워크 패킷의 전달, 무시, 변경 등 컨트롤 플레인이 지시하는 단순한 기능만을 수행하도록 한다. 이런 변화로, 복잡한 하드웨어의 제약 없이 소프트웨어로 새로운 네트워크 기능을 개발할 수 있으며, 동시에 이전 네트워크 구조에서 불가능했던 다양한 시도를 할 수 있게 되었다.
예를 들어, 클라우드 네트워크와 같은 환경에서, 각 네트워크 스위치 혹은 라우터의 기능을 동적으로 설정하여 에너지 소비를 줄일 수 있으며, 엔터프라이즈 네트워크 환경에서는 각 스위치나 라우터에 원하는 접근 제어 방식을 구현할 수 있다. 이를 이용하여 기존의 네트워크에서 사용되는 장비의 수와 장비 관리 비용을 줄일 수 있다. 또 새롭게 개발한 기능을 자유롭게 시험할 수 있다.
컨트롤 플레인을 담당하는 컨트롤러 (즉, 제어장치)와 데이터 플레인을 담당하는 스위치 사이의 통신은 국제 표준인 오픈플로우(OpenFlow) 프로토콜을 통해서 이루어진다. 오픈플로우 프로토콜을 지원하는 스위치는 패킷이 전달되면, 제어 장치가 미리 정한 규칙에 따라서, 패킷을 다른 스위치나 제어 장치로 전달하거나, 제어 장치로 전달하거나, 버리는 등의 단순한 동작을 수행한다.
소프트웨어 정의 네트워크에서 스위치가 제어 장치로 보내거나, 제어 장치의 응용 프로그램이 서로 주고 받는 메시지를 제어 장치의 이벤트라고 부른다.
제어 장치에 전달되는 이벤트의 예를 들어보면 다음과 같다. 플로우 테이블에 처리규칙이 없는 새로운 플로우가 생기면, 패킷 유입 이벤트(packet in)가 발생하고, 네트워크 스위치가 꺼지면, 연결다운 이벤트(connection down)가 발생한다. 소프트웨어 정의 네트워크의 토폴로지가 바뀌면, 토폴로지 변경 이벤트(topology event)가 발생한다. 네트워크 스위치의 턴온이나 오류 해소로 인하여 다운된 네트워크 스위치가 켜지면, 연결 업 이벤트(connection up)가 발생한다. 제어 장치의 응용 프로그램은 이와 같은 이벤트에 대한 적절한 동작을 수행하는 소프트웨어이다.
발명은 SDN 환경에서 소프트웨어 정의 네트워킹으로 구현할 수 있는 서비스를 확대할 수 있는 방법 및 장치를 제공하는 것을 목적으로 한다.
나아가 본 발명은 스위치가 오픈플로우 프로토콜을 지원하면서 동시에 오픈플로우 영역을 넘어서는 기능을 수행할 수 있도록 하는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크의 스위치가 소프트웨어를 실행하는 방법은, 상기 소프트웨어 정의 네트워크의 제어 장치와 네트워크 연결을 확립하는 단계; 상기 제어 장치로부터 소프트웨어 모듈을 수신하는 단계; 및 상기 소프트웨어 모듈을 실행하는 단계를 포함하는 것을 특징으로 한다.
특히 상기 소프트웨어 모듈을 수신하는 단계는, 상기 제어 장치와 오픈플로우 채널 이외의 통신 채널을 연결하는 단계; 및 상기 제어 장치로부터 상기 통신 채널을 통하여 소프트웨어 모듈을 수신하는 단계를 포함하거나, 또는 상기 제어 장치와 오픈플로우 채널을 연결하는 단계; 및 상기 제어 장치로부터 상기 오픈플로우 채널을 통하여 상기 소프트웨어 모듈을 포함하는 벤더 메시지(VENDOR message)를 수신하는 단계를 포함할 수 있다.
한편, 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크의 제어 장치가 소프트웨어를 전송하는 방법은, 상기 소프트웨어 정의 네트워크의 스위치와 네트워크 연결을 확립하는 단계; 및 상기 스위치에게 소프트웨어 모듈을 전송하는 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 소프트웨어를 실행하는 스위치는, 상기 소프트웨어 정의 네트워크의 제어 장치와 네트워크 연결을 확립하는 통신부; 및 상기 제어 장치로부터 소프트웨어 모듈을 수신하도록 제어하고, 상기 소프트웨어 모듈을 실행하는 제어부를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 소프트웨어를 전송하는 제어 장치는, 상기 소프트웨어 정의 네트워크의 스위치와 네트워크 연결을 확립하는 통신부; 및 상기 스위치에게 소프트웨어 모듈을 전송하도록 제어하는 제어부를 포함하는 것을 특징으로 한다.
본 발명에 따르면, 스위치가 오픈플로우 프로토콜을 지원하면서 동시에 오픈플로우 영역을 넘어서는 기능을 수행할 수 있어, 소프트웨어 정의 네트워킹으로 구현할 수 있는 서비스를 확대할 수 있는 효과가 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면
도 2는 종래 기술을 따르는 SDN에서 사용자 맞춤형 네트워크 제어 서비스를 제공하는 방법과 문제점을 설명하기 위한 도면
도 3는 본원발명의 실시예를 따르는 SDN에서 사용자 맞춤형 네트워크 제어 서비스를 제공하는 방법을 간단하게 설명하기 위한 도면
도 4은 본원발명의 실시예를 따르는 스위치가 오픈플로우 프로토콜을 준수하면서 오픈플로우 영역을 넘어서는 프로그램을 수행하는 과정을 설명하기 위한 순서도
도 5a는 종래의 스위치의 내부 소프트웨어 구조를 설명하기 위한 도면
도 5b는 본원발명의 실시예를 따르는 스위치의 내부 소프트웨어 구조를 설명하기 위한 도면
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다.
도 1에 도시된 바와 같이, 소프트웨어 정의 네트워크는 SDN 제어 장치 100, 오픈플로우 스위치 200, 단말 300를 포함할 수 있다. 스위치 200 및 단말 300를 포함하여 노드(Node)라고 지칭할 수 있으며 링크는 2개의 노드 사이의 연결을 의미할 수 있다.
제어 장치 100은 스위치 200에 명령을 하고, 스위치 200는 그 명령에 따라 패킷을 목적지로 전송하거나 수정, 폐기하는 등의 처리를 할 수 있다. 단말 300는 소프트웨어 정의 네트워크를 통해 다른 단말에 보내기 위한 패킷을 생성하여 네트워크 인터페이스의 포트를 통해 스위치 200로 패킷을 전송할 수 있다.
스위치 200는 단말 300 또는 다른 스위치 200로부터 패킷을 수신하면, 플로우 테이블에 기초하여 패킷을 스위칭할 수 있다. 이때, 플로우 테이블에 해당 패킷 스위칭을 위한 플로우 엔트리가 없다면, 네트워크 스위치 200는 제어 장치 100에 플로우 룰 요청 메시지를 전송할 수 있다.
한편 오픈플로우는 SDN 제어 장치와 네트워크 장치간의 통신 표준 인터페이스로서, SDN에서 제어 장치와 스위치 사이에 오가는 통신의 내용은 미리 정해져 있는 오픈플로우 표준에 따라서만 정의될 수 있다.
제어 장치는 오픈플로우 프로토콜을 이용하여 패킷의 포워딩 방법이나 VLAN 우선순위 값 등을 스위치에 전달하여 네트워크를 제어할 수 있으며, 스위치는 제어 장치에게 사전에 등록된 플로우 엔트리가 없는 패킷에 대한 정보를 제어 장치에 문의하고 그 결정을 받아 패킷을 처리할 수 있다.
오픈플로우에서 플로우 엔트리는 ?조건(Match), ?처리(Actions) 및 ?통계(Counters) 정보를 포함한다. 플로우 엔트리에 따라 스위치는 어떤 조건을 만족하는 패킷이 들어왔을 때, 해당 패킷을 임의의 포트로 포워드하거나 (Forward packet to port), 인캡슐하여 제어 장치로 포워드하거나 (Encapsulate and forward to controller), 버리는 (Drop packet) 등의 처리를 할 수 있다.
이와 같이 오픈플로우 프로토콜은 전송, 폐기, 지정된 필드의 값을 다시 작성하는 것 등 단순한 처리만을 지원한다. 따라서 오픈플로우 표준을 따르면 SDN 구현이 명확하고 빠른 장점이 있다. 반면 다양한 요구사항을 수용하여 개별적으로 필요한 기능을 커스터마이징하는 것은 용이하지 않은 단점이 있다.
도 2는 종래 기술을 따르는 SDN에서 오픈플로우 프로토콜에 따라 사용자 맞춤형 네트워크 제어 서비스를 제공하는 방법과 발생할 수 있는 문제점을 설명하기 위한 도면이다.
예를 들어 해당 SDN 관리자는 임의의 패킷에 대해 보안과 관련된 특정한 검사를 수행하기를 원할 수 있다. 이러한 처리는 오픈플로우가 지원하지 않기 때문에 종래의 SDN에서는 도 2에 도시된 것과 같은 방법으로 사용자 니즈를 처리할 수 있다.
도 2a에서, 제어 장치는 모든 패킷에 대해 제어 장치로 포워드할 것을 지시하는 플로우 엔트리를 스위치에 전송하고(1), 스위치는 플로우 엔트리에 따라 입력된 모든 패킷(2)을 제어 장치로 전송(3)하며, 제어 장치의 응용프로그램이 패킷 검사를 수행하여 검사를 통과한 패킷을 다시 스위치에 전송(4)할 수 있다.
도 2b에서, 제어 장치는 모든 패킷에 대해 패킷 검사 서버로 포워드할 것을 지시하는 플로우 엔트리를 스위치에 전송하고(1), 스위치는 플로우 엔트리에 따라 입력된 모든 패킷(2)을 패킷 검사 서버로 전송(3)하며, 패킷 검사 서버가 패킷 검사를 수행하여 검사를 통과한 패킷을 다시 스위치에 전송(4)할 수 있다.
그러나 도 2a와 도 2b의 모두 효율적인 방법이라고는 할 수 없다. 도 2a에서 도시된 방법의 경우, 제어 장치로 모든 패킷이 전달되고, 제어 장치가 모든 패킷에 대한 검사를 수행해야 하기 때문에 전체 네트워크 성능이 저하될 수 밖에 없기 때문이다. 도 2b에 도시된 방법의 경우에도 각각의 스위치가 패킷을 다른 서버로 전송하기 위한 딜레이가 발생하며, 제어 장치에서 패킷 검사 서버를 제어할 수 없어 소프트웨어 정의 네트워크의 제어 능력이 떨어지는 문제가 발생한다.
따라서 본 발명은 스위치와 제어 장치가 오픈플로우 프로토콜을 지원하면서 오픈플로우 영역을 넘어서는 기능을 수행할 수 있도록 하여, SDN에서 제공할 수 있는 서비스의 범위를 효율적으로 확대하는 방법을 제공하고자 한다.
도 3는 본원발명의 실시예를 따르는 SDN에서 사용자 맞춤형 네트워크 제어 서비스를 제공하는 기본 개념을 설명하기 위한 도면이다.
모든 패킷에 대해 특정한 검사를 수행하는 서비스의 경우, 본원발명의 실시예를 따르면 도 3에 도시되어 있는 방법을 이용하여 효율적으로 제공될 수 있다.
도 3에 도시된 바와 같이 본 발명의 실시예를 따르면, SDN 제어 장치는 스위치에게 오픈플로우 채널(OpenFlow channel) 또는 별개의 채널을 통하여 패킷 검사 프로그램 모듈을 전송하고 (1), 상기 패킷 검사 프로그램의 실행 규칙에 대한 정보를 스위치에 전송할 수 있다(2). 이때 상기 실행 규칙에 대한 정보는 오픈플로우 프로토콜로 작성되어, 스위치의 플로우 테이블과 함께 저장되거나 오픈플로우 프로토콜을 따르지 않고 별도로 저장될 수도 있다. 이후 스위치는 테이블을 참조하여 모든 패킷(3)에 대해 제어 장치의 관여 없이 패킷을 검사할 수 있다.
본원발명에서 SDN 제어 장치가 임의의 소프트웨어를 전송하고, 스위치가 임의의 소프트웨어를 실행하는 구체적인 실시예는 첨부된 도 4에 대한 설명과 함께 후술된다.
도 4은 본원발명의 실시예를 따르는 스위치가 오픈플로우 프로토콜을 지원하면서 오픈플로우 영역을 넘어서는 기능을 수행하는 과정을 설명하기 위한 순서도이다.
단계 410에서 SDN 제어 장치 100는 스위치 200와 네트워크를 연결 할 수 있으며, 오픈플로우 프로토콜에 따라 단계 420에서 양자간에 오픈플로우 채널이 수립될 수 있다. (The OpenFlow channel is the interface that connects each OpenFlow switch to a controller.)
단계 440에서 제어 장치 100는 오픈플로우 채널을 통하여 임의의 소프트웨어 모듈을 스위치 200에게 전송할 수 있다. 본 발명의 실시예에서 제어 장치 100는 오픈플로우 표준이 벤더 확장(Vendor Extension)으로 지정하는 벤더 메시지 (OFPT_VENDOR message)를 이용하여 상기 소프트웨어 모듈을 오픈플로우 채널을 통하여 스위치에게 전송할 수 있다.
상기 벤더 메시지는 32 비트의 벤더 필드(The vendor field is a 32-bit value that uniquely identifies the vendor)를 헤더로, 상기 소프트웨어 모듈을 바디로 구성할 수 있으며, 본 발명의 실시예를 따르는 SDN 제어 장치와 스위치는 상기 벤더 필드를 이용하여 소프트웨어 모듈을 인식할 수 있다.
본 발명의 실시예를 따르면 소프트웨어 모듈은 리눅스 바이너리와 같이 스위치 운영체제에서 동작하는 바이너리, C 또는 C++과 같이 스위치 운영 체제 컴파일러에 대한 소스코드, 파이썬과 같이 스위치 운영체제 인터프리터에 대한 소스코드, 또는 스위치 고유의 인터프리터에 대한 소스코드를 예시할 수 있다.
특히 본 발명에서 도 4의 단계 420 내지 440은 시간의 순서가 있는 것으로 제한하여 해석될 수 없다. 예를 들어 제어 장치 100는 단계 430에서 오픈플로우 채널 이외의 다른 통신 채널을 수립하고, 단계 440에서 상기 다른 통신 채널을 통하여 임의의 소프트웨어를 스위치 200에게 전송할 수도 있다. 이 경우 오픈플로우 채널 이외의 다른 통신 채널을 통하기 때문에 상기 소프트웨어 모듈에 대한 신호는 오픈플로우 프로토콜을 준수할 필요가 없다.
한편 단계 440에서 제어 장치 100는 스위치 200가 수신한 프로그램 모듈을 실행할 수 있도록, 소프트웨어 모듈의 실행 규칙에 대한 정보를 전송할 수 있다.
이때 상기 실행 규칙에 대한 정보는 오픈플로우 프로토콜로 작성되어 스위치의 플로우 테이블과 함께 저장될 수 있다. 보다 구체적으로 테이블은 상기 소프트웨어 모듈의 대상이 되는 패킷에 대한 처리(action)을 상기 스위치의 플로우 테이블의 포트를 이용하여 지시하는 플로우 엔트리 정보를 포함할 수 있다.
이때 제어 장치는 포트 값을 스위치가 인식할 수 있도록 임의로 지정할 수 있다. 제어 장치는 오픈플로우 스펙에서 정의하는 예약 포트 이외의 포트를 지정하거나, 60001번과 같이 일반적으로 사용하지 않은 충분히 큰 포트 번호를 지정할 수 있다. 예를 들어 스위치가 “포트 60001 포워드”에 대한 플로우 룰을 임의의 소프트웨어 모듈의 실행으로 해석하도록 하는 방법을 이용하여 소프트웨어 모듈의 실행 규칙을 지정할 수 있다.
본 발명의 다른 실시예를 따르면, 소프트웨어 모듈의 실행 규칙에 대한 정보는 오픈플로우 프로토콜을 따르지 않고, 스위치의 플로우 테이블과 별개로 저장될 수 있다. 이러한 정보는 단계 430의 오픈플로우 채널 이외의 채널을 이용하여 전송될 수 있다. 이 경우 오픈플로우를 준수할 필요가 없으므로 사용자의 필요에 따른 보다 자유로운 설정이 가능하다.
이후 스위치 200는 단계 450에서 수신한 소프트웨어 모듈을 저장하고, 단계 460에서 수신한 실행규칙에 대한 정보를 참고하여 저장된 소프트웨어 모듈을 실행할 수 있다.
도 4의 블록 470, 480 및 490은 본 발명의 실시예에 따라 제어 장치 100가 소프트웨어 모듈을 전송하고, 스위치 200가 이를 실행하는 단계 420 내지 단계 460의 보다 구체적인 예시이다.
도 4에서는 블록 470 내지 490이 순서가 있는 것처럼 도시되어 있지만 본 발명은 이에 한정되지 않으며, 각각의 블록은 개별적으로 진행될 수 있다. 블록 470 내지 490에 대한 설명에서 앞서 설명한 내용과 중복되는 내용은 생략하여 기술한다.
블록 490은 본원발명의 실시예에 따라 스위치 200가 패킷을 바로 검사 또는 변경할 수 있는 기능에 대한 부분이다.
단계 493에서 제어 장치 100는 임의의 패킷에 대한 검사 또는 변경하는 기능을 수행하는 프로그램 모듈을 오픈플로우 채널 또는 오픈플로우가 아닌 채널을 통하여 스위치 100에게 전송할 수 있다.
이때 제어 장치 100는 스위치 200가 수신한 프로그램 모듈을 실행할 수 있도록, 오픈플로우 스펙에서 정의하는 예약 포트(Reserved OpenFlow Port) 이외의 포트를 이용하여, 전송한 프로그램을 임의의 조건에 대해 실행할 것을 지시하는 실행 규칙을 전송할 수 있다. 또는 상기 실행 규칙을 오픈플로우 프로토콜을 따르지 않는 다른 형식으로 작성하여 전송할 수도 있다.
이후 단계 495 또는 497에서 스위치 200는 패킷이 입력되면, 플로우 테이블을 참고하여 패킷을 검사하거나 변경할 수 있다.
이러한 실시예를 이용하면 종래의 스위치가 수행할 수 없는 다양한 기능을 지원할 수 있게 된다. 예를 들어 스위치는 패킷 각각을 검사, 변경할 수 있으며, 나아가 임의의 범주로 패킷을 누적하여 검사, 변경할 수도 있다. 나아가 스위치는 종래의 오픈플로우 포로토콜로 구현할 수 없었던, 헤더뿐 아니라 전체 패킷을 검사하여 변경하는 기능도 지원할 수 있게 된다.
블록 470은 본원발명의 실시예에 따라 제어 장치 100가 스위치 200로 업데이트 파일을 전송하고, 스위치가 직접 업데이트를 수행할 수 있는 기능에 대한 부분이다.
단계 473에서 제어 장치 100는 펌웨어 업데이트 기능을 수행하는 프로그램 모듈을 오픈플로우 채널 또는 오픈플로우가 아닌 채널을 통하여 스위치 100에게 전송할 수 있으며, 업데이트 조건에 대한 플로우 테이블도 전송할 수 있다.
이후 단계 475에서 스위치 200는 상기 업데이트 조건이 충족되면 펌웨어 업데이트를 수행하고, 단계 477에서 네트워크 재연결을 수립하여 업데이트된 스위치의 상태를 보고할 수 있다.
종래에는 오픈플로우 스위치의 펌웨어를 업데이트해야 하는 경우, 관리자가 직접 스위치에 접속해서 처리해야 했으나, 본 발명의 실시예를 따르면 다수의 오픈플로우 스위치의 업데이트를 제어 장치가 직접 제어할 수 있다. 나아가 다수의 스위치의 업데이트를 제어 장치가 일괄적으로 제어할 수 있으며, 제어 장치의 응용프로그램의 필요에 따라 각각의 스위치에 대한 업데이트 조건을 설정할 수 있다. 따라서 네트워크 전체의 성능과 안정성이 상승되며, 보다 유연한 네트워크 운용이 가능해지고 관리비용이 절감되는 효과가 발생한다.
블록 480은 본원발명의 실시예에 따라 제어 장치 100의 별도 문의 메시지 없이도 스위치 200가 미리 설정된 규칙에 따라 자신의 상태를 보고하는 메시지를 전송할 수 있는 기능에 대한 부분이다.
단계 483에서 제어 장치 100는 스위치 상태를 검사하는 기능을 수행하는 프로그램 모듈을 오픈플로우 채널 또는 오픈플로우가 아닌 채널을 통하여 스위치 100에게 전송할 수 있으며, 상태 보고 조건에 대한 플로우 테이블도 전송할 수 있다. 이때 상태 보고 조건에 대한 테이블은 오픈플로우 프로토콜을 따르지 않고 별개로 저장될 수 있다.
이후 스위치 200는 단계 485에서 상기 상태 보고 조건이 충족되는지 여부를 확인할 수 있다. 상기 상태 보고 조건은 스위치의 CPU 점유율이 어느 정도 이상인 경우, 스위치가 다운되는 경우, 임의의 인터럽트가 발생하는 경우, 임의의 대역폭이 사용되는 경우 또는 임의의 주기 등을 예시할 수 있다.
이러한 상태보고 조건이 충족되는 경우, 단계 487에서 스위치는 스위치의 상태 정보를 포함하는 메시지를 (예를 들어 StatusReply message) 제어 장치에게 전송할 수 있다.
한편 블록 480의 예시는 SDN에서 대역폭 사용량의 범위에 따라 링크를 다른 색으로 표시하는 제어 장치의 응용 프로그램의 실행에 활용될 수 있다. 이 경우, 종래에는 제어 장치가 주기적으로 스위치의 상태를 확인하기 위해 상태 문의 메시지를 전송하고, 스위치로부터 상태응답 메시지를 수신하는 일련의 과정(polling)을 수행해야 했다.
그러나 본원발명의 상기 실시예를 따르면, 제어 장치가 대역폭의 사용량 범위가 바뀌는지 검사하는 모듈을 스위치에게 전송하고, 사용량 범위를 넘는 조건으로 상태 보고 메시지를 전송하도록 설정하면, 동일한 작업에 대해 제어 장치와 스위치의 부하가 줄어들고 반응속도가 빨라질 수 있다.
도 5a는 종래의 스위치의 내부 소프트웨어 구조를 설명하기 위한 도면이며, 도 5b는 본원발명의 실시예를 따르는 오픈플로우 스위치의 내부 소프트웨어 구조를 설명하기 위한 도면이다.
종래의 스위치는 도 5a에서 도시된 바와 같이 제어 장치와 SecureChannel을 통하여 오픈플로우 프로토콜로 통신하며, 다수의 플로우 테이블을 가질 수 있다. 나아가 다른 플로우 테이블에 있는 엔트리와 비교하여 패킷 처리가 계속되도록 지시하는 파이프라인도 가질 수 있다.
이와 비교하여 본원발명의 실시예를 따르는 스위치 200는 도 5b에 도시된 바와 같이 통신부, 소프트웨어 모듈부, 소프트웨어 실행부를 더 포함할 수 있다.
통신부는 제어 장치 100와 통신 채널을 연결하고 상기 채널을 통해 제어 장치와 신호를 송수신하는 역할을 수행할 수 있다. 상기 통신 채널은 오픈플로우 표준에 따른 통신 채널 또는 오픈플로우 이외의 다른 형식의 통신 채널일 수 있다.
특히 본원발명의 실시예를 따르는 통신부는 제어 장치 100로부터 소프트웨어 모듈을 수신할 수 있다. 상기 소프트웨어 모듈은 오픈플로우 표준을 따르는 형태의 신호 또는 오픈플로우 이외의 다른 신호의 형태일 수 있다.
소프트웨어 모듈부는 제어 장치 100로부터 수신한 소프트웨어 모듈을 저장하는 기능을 수행할 수 있다.
소프트웨어 실행부는 임의의 패킷이 들어왔을 때, 플로우 테이블을 참조하여, 임의의 소프트웨어 모듈에 대한 실행 조건을 확인하고, 해당 소프트웨어 모듈을 실행하여 패킷을 처리하는 기능을 수행할 수 있다.
한편 본원발명의 실시예를 따르면 제어 장치 100가 스위치의 통신부로 전송하는 소프트웨어 모듈로는 스위치의 인아웃 패킷에 대해 수행되는 소프트웨어 모듈, 스위치의 펌웨어 업데이트를 수행하는 소프트웨어 모듈, 스위치의 상태를 검사하며 미리 설정한 상태가 되거나 미리 설정한 주기로 스위치의 상태를 제어 장치 100로 전송하는 모듈을 예시할 수 있다. 더 나아가 본원발명의 실시예를 따르면, 통신부의 기능을 수행하는 프로그램 모듈, 소프트웨어 실행부의 기능을 수행하는 프로그램 모듈도 포함될 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에게 자명한 것이다.
100 : SDN 제어 장치
200 : 오픈플로우 스위치
300 : 단말

Claims (25)

  1. 소프트웨어 정의 네트워크의 스위치가 소프트웨어를 실행하는 방법에 있어서,
    상기 소프트웨어 정의 네트워크의 제어 장치와 네트워크 연결을 확립하는 단계;
    상기 제어 장치로부터 소프트웨어 모듈을 수신하는 단계; 및
    상기 소프트웨어 모듈의 대상이 되는 패킷에 대한 처리를 상기 스위치의 플로우 테이블의 예약되지 않은 포트를 이용하여 지시하는 플로우 엔트리를 상기 스위치의 플로우 테이블에 저장하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  2. 제 1항에 있어서,
    상기 소프트웨어 모듈을 수신하는 단계는,
    상기 제어 장치와 오픈플로우 채널 이외의 통신 채널을 연결하는 단계; 및
    상기 제어 장치로부터 상기 통신 채널을 통하여 소프트웨어 모듈을 수신하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  3. 제 1항에 있어서,
    상기 소프트웨어 모듈을 수신하는 단계는,
    상기 제어 장치와 오픈플로우 채널을 연결하는 단계; 및
    상기 제어 장치로부터 상기 오픈플로우 채널을 통하여 상기 소프트웨어 모듈을 포함하는 벤더 메시지를 수신하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  4. 제 2항 또는 제 3항에 있어서,
    상기 소프트웨어 모듈의 실행 규칙에 대한 정보를 수신하는 단계를 더 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  5. 제 4항에 있어서, 상기 실행 규칙에 대한 정보는,
    오픈플로우 프로토콜을 따르지 않으며, 상기 스위치의 플로우 테이블과 별개로 저장되는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  6. 삭제
  7. 제 4항에 있어서,
    상기 소프트웨어 모듈은, 상기 스위치의 패킷을 검사 또는 변경하는 기능을 수행하며,
    상기 소프트웨어 모듈을 실행하는 단계는,
    입출력 패킷에 대해, 상기 실행 규칙에 대한 정보를 참조하여 상기 패킷을 검사 또는 변경하는 처리를 수행하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  8. 제 4항에 있어서,
    상기 소프트웨어 모듈은, 상기 스위치의 펌웨어를 업데이트 하는 기능을 수행하며,
    상기 소프트웨어 모듈을 실행하는 단계는,
    상기 스위치의 펌웨어를 업데이트하는 단계; 및
    상기 제어 장치와 네트워크를 연결하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행방법.
  9. 제 4항에 있어서
    상기 소프트웨어 모듈은, 상기 스위치의 상태를 검사하는 기능을 수행하며,
    상기 소프트웨어 모듈을 실행하는 단계는,
    상기 실행규칙에 따라 상기 스위치의 상태를 검사하는 단계; 및
    상기 제어 장치에게 상기 스위치의 상태를 보고하는 단계를 포함하는 것을 특징으로 하는 스위치의 소프트웨어 실행 방법.
  10. 소프트웨어 정의 네트워크의 제어 장치가 소프트웨어를 전송하는 방법에 있어서,
    상기 소프트웨어 정의 네트워크의 스위치와 네트워크 연결을 확립하는 단계;
    상기 스위치에게 소프트웨어 모듈을 전송하는 단계; 및
    상기 스위치에게, 상기 소프트웨어 모듈의 대상이 되는 패킷에 대한 처리를 상기 스위치의 플로우 테이블의 예약되지 않은 포트를 이용하여 지시하는 플로우 엔트리를 전송하는 단계를 포함하는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  11. 제 10항에 있어서, 상기 소프트웨어 모듈을 전송하는 단계는,
    상기 스위치와 오픈플로우 채널 이외의 통신 채널을 연결하는 단계; 및
    상기 스위치에게 상기 통신 채널을 통하여 소프트웨어 모듈을 전송하는 단계를 포함하는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  12. 제 10항에 있어서, 상기 소프트웨어 모듈을 전송하는 단계는,
    상기 스위치와 오픈플로우 채널을 연결하는 단계; 및
    상기 스위치와 상기 오픈플로우 채널을 통하여 상기 소프트웨어 모듈을 포함하는 벤더 메시지를 전송하는 단계를 포함하는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  13. 제 11항 또는 제 12항에 있어서,
    상기 스위치에게 상기 상기 소프트웨어 모듈의 실행 규칙에 대한 정보를 전송하는 단계를 더 포함하는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  14. 제 13항에 있어서, 상기 실행 규칙에 대한 정보는,
    오픈플로우 프로토콜을 따르지 않으며, 상기 스위치의 플로우 테이블과 별개로 저장되는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  15. 삭제
  16. 제 13항에 있어서,
    상기 소프트웨어 모듈은, 상기 스위치의 입출력 패킷을 검사 또는 변경하는 기능, 상기 스위치의 펌웨어를 업데이트 하는 기능, 또는 상기 스위치의 상태를 검사하는 기능 중 적어도 하나를 수행하는 것을 특징으로 하는 제어 장치의 소프트웨어 전송 방법.
  17. 소프트웨어 정의 네트워크에서 소프트웨어를 실행하는 스위치에 있어서,
    상기 소프트웨어 정의 네트워크의 제어 장치와 네트워크 연결을 확립하는 통신부; 및
    상기 제어 장치로부터 소프트웨어 모듈을 수신하도록 제어하고, 상기 소프트웨어 모듈을 실행하는 제어부를 포함하며,
    상기 제어부는, 상기 소프트웨어 모듈의 대상이 되는 패킷에 대한 처리를 상기 스위치의 플로우 테이블의 예약되지 않은 포트를 이용하여 지시하는 플로우 엔트리를 상기 스위치의 플로우 테이블에 저장하는 것을 특징으로 하는 스위치.
  18. 제 17항에 있어서,
    상기 통신부는, 상기 제어 장치와 오픈플로우 채널 이외의 통신 채널을 연결하고,
    상기 제어부는, 상기 제어 장치로부터 상기 통신 채널을 통하여 소프트웨어 모듈을 수신하도록 제어하는 것을 특징으로 하는 스위치.
  19. 제 17항에 있어서,
    상기 통신부는, 상기 제어 장치와 오픈플로우 채널을 연결하고, 상기 제어 장치로부터 상기 오픈플로우 채널을 통하여 상기 소프트웨어 모듈을 포함하는 벤더 메시지를 수신하도록 제어하는 것을 특징으로 하는 스위치.
  20. 제 18항 또는 제 19항에 있어서,
    상기 제어부는, 상기 소프트웨어 모듈의 실행 규칙에 대한 정보를 수신하도록 제어하는 것을 특징으로 하는 스위치. ,
  21. 제 20항에 있어서, 상기 소프트웨어 모듈은,
    상기 스위치의 입출력 패킷을 검사 또는 변경하는 기능, 상기 스위치의 펌웨어를 업데이트 하는 기능, 또는 상기 스위치의 상태를 검사하는 기능 중 적어도 하나를 수행하는 것을 특징으로 하는 스위치.
  22. 소프트웨어 정의 네트워크에서 소프트웨어를 전송하는 제어 장치에 있어서,
    상기 소프트웨어 정의 네트워크의 스위치와 네트워크 연결을 확립하는 통신부; 및
    상기 스위치에게 소프트웨어 모듈을 전송하도록 제어하는 제어부를 포함하며,
    상기 제어부는, 상기 스위치에게, 상기 소프트웨어 모듈의 대상이 되는 패킷에 대한 처리를 상기 스위치의 플로우 테이블의 예약되지 않은 포트를 이용하여 지시하는 플로우 엔트리를 전송하는 것을 특징으로 하는 제어 장치.
  23. 제 22항에 있어서,
    상기 통신부는, 상기 스위치와 오픈플로우 채널 이외의 통신 채널을 연결하고,
    상기 제어부는, 상기 스위치에게 상기 통신 채널을 통하여 소프트웨어 모듈을 전송하도록 제어하는 것을 특징으로 하는 제어 장치.
  24. 제 22항에 있어서,
    상기 통신부는, 상기 스위치와 오픈플로우 채널을 연결하고, 상기 스위치에게 상기 오픈플로우 채널을 통하여 상기 소프트웨어 모듈을 포함하는 벤더 메시지를 전송하도록 제어하는 것을 특징으로 하는 제어 장치.
  25. 제 23항 또는 제 24항에 있어서,
    상기 제어부는, 상기 소프트웨어 모듈의 실행 규칙에 대한 정보를 전송하도록 제어하며,
    상기 소프트웨어 모듈은, 상기 스위치의 입출력 패킷을 검사 또는 변경하는 기능, 상기 스위치의 펌웨어를 업데이트 하는 기능, 또는 상기 스위치의 상태를 검사하는 기능 중 적어도 하나를 수행하는 것을 특징으로 하는 제어 장치.
KR1020140163530A 2014-11-21 2014-11-21 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치 KR101576518B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140163530A KR101576518B1 (ko) 2014-11-21 2014-11-21 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140163530A KR101576518B1 (ko) 2014-11-21 2014-11-21 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101576518B1 true KR101576518B1 (ko) 2015-12-11

Family

ID=55020730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140163530A KR101576518B1 (ko) 2014-11-21 2014-11-21 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101576518B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017203327A1 (en) * 2016-05-25 2017-11-30 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding using vendor extension in a software-defined networking (sdn) system
KR20180045508A (ko) * 2016-10-26 2018-05-04 숭실대학교산학협력단 스위치 손상을 감지할 수 있는 소프트웨어 정의 네트워크 및 이에 포함되는 컨트롤러

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040057558A1 (en) * 2002-09-23 2004-03-25 Beyda William J. System and method for automating communications system software upgrades
JP2014178720A (ja) 2013-03-13 2014-09-25 Nec Corp サービス管理装置、サービス管理システム、方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040057558A1 (en) * 2002-09-23 2004-03-25 Beyda William J. System and method for automating communications system software upgrades
JP2014178720A (ja) 2013-03-13 2014-09-25 Nec Corp サービス管理装置、サービス管理システム、方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Open Flow Foundation, "OpenFlow Management and Configuration Protocol," Version 1.1.1, (OF-Config 1.1.1), ONF TS-008, (March 23, 2013)*

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017203327A1 (en) * 2016-05-25 2017-11-30 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding using vendor extension in a software-defined networking (sdn) system
US20200204485A1 (en) * 2016-05-25 2020-06-25 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding using vendor extension in a software-defined networking (sdn) system
US11165692B2 (en) 2016-05-25 2021-11-02 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding using vendor extension in a software-defined networking (SDN) system
KR20180045508A (ko) * 2016-10-26 2018-05-04 숭실대학교산학협력단 스위치 손상을 감지할 수 있는 소프트웨어 정의 네트워크 및 이에 포함되는 컨트롤러

Similar Documents

Publication Publication Date Title
US11005747B2 (en) Method for implementing network virtualization and related apparatus and communications system
US10044830B2 (en) Information system, control apparatus, method of providing virtual network, and program
JP6538986B2 (ja) 仮想マシンパケット制御
US9609065B2 (en) Bridge for implementing a converged network protocol to facilitate communication between different communication protocol networks
WO2011087085A1 (ja) 計算機、ネットワーク接続切替え方法およびプログラム
EP3142303A1 (en) Network control method and apparatus
US10122654B2 (en) Divided hierarchical network system based on software-defined networks
KR20140106235A (ko) 오픈플로우 스위치 및 그 패킷 처리 방법
US10050906B2 (en) Virtual node having separate control and data planes
KR101658824B1 (ko) 소프트웨어 정의 네트워크에서 플로우 룰을 변경하는 방법, 장치 및 컴퓨터 프로그램
CN107645394B (zh) 一种sdn网络中的交换机配置方法
US9065862B2 (en) Communication device, method for controlling the communication device, and communication system
KR101576518B1 (ko) 소프트웨어 정의 네트워크에서 오픈플로우 프로토콜을 확장하여 활용하는 방법 및 장치
CN113196710A (zh) 分发节点、自动化网络和用于传输报文的方法
CN104320322B (zh) 一种报文控制方法和设备
US20180139139A1 (en) Clos Network Load Balancing Method and Apparatus
US20170005912A1 (en) Method, apparatus and system for transmitting information
US20150009798A1 (en) Communication system, control apparatus, communication apparatus, information-relaying method, and program
KR20210016802A (ko) 소프트웨어 정의 네트워킹 환경에서 서버-클라이언트 기반의 네트워크 서비스를 위한 플로우 테이블을 최적화하는 방법 및 이를 위한 sdn 스위치
KR20160072718A (ko) 소프트웨어 정의 네트워크에서 인접 네트워크 장비 발견 시스템 및 방법
US20150304239A1 (en) Telecommunication network node supporting hybrid management using a hardware abstraction and management protocol cross-connect function
KR101969304B1 (ko) 패킷-아웃 메시지를 이용한 소프트웨어 정의 네트워킹 환경에서의 장애 처리 방법 및 컴퓨터 프로그램
KR20170057770A (ko) 가상 스위치의 패킷 전송 제어 방법
US20160373305A1 (en) Network control apparatus, network system, network control method, and program
KR101724922B1 (ko) 미들박스 제어 장치 및 방법

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: 20181231

Year of fee payment: 4