KR101767439B1 - 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램 - Google Patents

소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101767439B1
KR101767439B1 KR1020160019796A KR20160019796A KR101767439B1 KR 101767439 B1 KR101767439 B1 KR 101767439B1 KR 1020160019796 A KR1020160019796 A KR 1020160019796A KR 20160019796 A KR20160019796 A KR 20160019796A KR 101767439 B1 KR101767439 B1 KR 101767439B1
Authority
KR
South Korea
Prior art keywords
packet
tag
switch
header
field
Prior art date
Application number
KR1020160019796A
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 KR1020160019796A priority Critical patent/KR101767439B1/ko
Application granted granted Critical
Publication of KR101767439B1 publication Critical patent/KR101767439B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

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

Abstract

본 발명은 소프트웨어 정의 네트워크에서 컨트롤러가 패킷의 경로를 설정하는 방법에 대한 것으로, 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로들을 계산하고, 상기 경로와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하여, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하는 A 단계; 스위치에, 수신한 패킷의 헤더 중 상기 필드를 확인하고, 상기 필드의 태그 값을 기준으로 상기 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하는 B 단계; 및 상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 C 단계를 포함하는 것을 특징으로 한다.

Description

소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램 {METHOD, APPARATUS AND COMPUTER PROGRAM FOR MANAGING PATHS FOR PACKETS OF SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법에 대한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다는 장점을 갖는다.
SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
Open Networking Foundation, “OpenFlow Specification 1.2.0”
본 발명은 소프트웨어 정의 네트워크에서 패킷의 경로를 보다 효율적으로 설정하는 방법을 제공하는 것을 목적으로 한다. 보다 구체적으로 본 발명은 패킷을 태깅하고, 패킷의 태그 값 기준으로 경로를 설정하는 플로우 룰을 운용하는 방법을 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 컨트롤러가 패킷의 경로를 설정하는 방법은, 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로들을 계산하고, 상기 경로와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하여, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하는 A 단계; 스위치에, 수신한 패킷의 헤더 중 상기 필드를 확인하고, 상기 필드의 태그 값을 기준으로 상기 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하는 B 단계; 및 상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 C 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는, 소프트웨어 정의 네트워크의 컨트롤러에서 패킷의 경로를 설정하는 장치는, 스위치와 통신하는 통신부; 및 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로들을 계산하고, 상기 경로와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하여, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하고, 상기 스위치에, 상기 필드의 태그 값을 기준으로 수신한 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하고, 상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 제어부를 포함하는 것을 특징으로 한다.
한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 컨트롤러가 패킷의 경로를 설정하는 처리를 수행하기 위하여 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램은, 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로들을 계산하고, 상기 경로와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하여, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하는 기능; 스위치에, 수신한 패킷의 헤더 중 상기 필드를 확인하고, 상기 필드의 태그 값을 기준으로 상기 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하는 기능; 및 상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 기능을 수행하는 것을 특징으로 한다.
본 발명에 따르면, 패킷의 태그 값 기준으로 플로우 룰을 운용하기 때문에, 플로우 테이블 사이즈가 대폭 감소되고 네트워크 리소스를 효율적으로 사용할 수 있는 효과가 있다. 나아가 본 발명에 따르면 패킷의 출발지에서 도착지까지 전체 경로를 기준으로 플로우 룰을 관리할 수 있기 때문에, 토폴로지 변경에 따른 지연이 감소되고, 네트워크 확장성이 증가되는 효과가 있다.
도 1은 소프트웨어 정의 네트워킹을 설명하기 위한 도면
도 2는 본 발명의 실시예를 따르는 플로우 룰 설정 방법을 설명하기 위한 도면
도 3은 본 발명의 실시예를 따라 태그 기반으로 플로우 룰을 설정하는 방법을 설명하기 위한 순서도
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
본 발명의 명세서에서 “플로우 룰”의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다.
나아가 본 명세서에서 오픈플로우 스위치(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)의 예로는 오픈플로우 스위치가 있다.
소프트웨어 정의 네트워크에서 컨트롤러 서버(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고 받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우 (OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러 서버(100)와 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
오픈플로우 프로토콜을 따르면, 스위치(200)는 컨트롤 채널(Control Channel)을 통해 컨트롤러 서버(100)와 정보를 교환하고, 파이프라인(Pipeline) 프로세싱을 위한 하나 이상의 플로우 테이블(Flow table), 그룹 테이블, 미터 테이블 및/또는 패킷 전달을 위한 네트워크 인터페이스로 하나 이상의 포트를 가질 수 있다.
한편, 상기 오픈플로우 프로토콜을 따르면, 네트워크의 크기가 커질수록 스위치의 플로우 테이블 사이즈는 급격히 증가되는 문제가 있다.
예를 들어 도 2와 같은 네트워크 구성을 고려할 수 있다. 도 2는 본 발명의 실시예를 따르는 플로우 룰 설정 방법을 설명하기 위한 도면이다.
도 2의 네트워크에서 제 1 호스트 (210)의 IP 주소는 10.0.0.1, 제 2 호스트 (220)의 IP 주소는 10.0.0.2, 제 3 호스트 (230)의 IP 주소는 10.0.0.3, 제 4 호스트 (240)의 IP 주소는 10.0.0.4, 제 5 호스트 (250)의 IP 주소는 10.0.0.5, 제 6 호스트 (260)의 IP 주소는 10.0.0.6 인 경우, 각 스위치들의 (270, 280, 290) 플로우 테이블을 IP 기반으로 구성하면, 적어도 18개의 플로우 엔트리가 필요할 것이다.
이는 제 1 스위치 (270)와 연결된 제 1 호스트 (210), 제 2 호스트 (220), 제 3 호스트 (230)과 제 3 스위치와 연결된 제 4 호스트 (240), 제 5 호스트 (250), 제 6 호스트 (260)들의 통신을 위한 것이다.
참고적으로 본 명세서는 제 1 호스트 (210), 제 2 호스트 (220), 제 3 호스트 (230) 사이의 통신 또는 제 4 호스트 (240), 제 5 호스트 (250), 제 6 호스트 (260) 사이의 통신은 고려하지 않고 작성되었다.
이 경우, 제 2 스위치 (280)가 제 1 스위치 (270) 및 제 3 스위치 (290)에 각각 포트 1 및 포트 2를 통해 연결된 경우, 아래의 표 1은 제 2 스위치 (280)에 저장된 플로우 테이블을 의미한다.
Match Fields Instructions
출발지 IP 주소 도착지 IP 주소
1 10.0.0.1 10.0.0.4 Output : 포트 2
2 10.0.0.1 10.0.0.5 Output : 포트 2
3 10.0.0.1 10.0.0.6 Output : 포트 2
4 10.0.0.2 10.0.0.4 Output : 포트 2
5 10.0.0.2 10.0.0.5 Output : 포트 2
6 10.0.0.2 10.0.0.6 Output : 포트 2
7 10.0.0.3 10.0.0.4 Output : 포트 2
8 10.0.0.3 10.0.0.5 Output : 포트 2
9 10.0.0.3 10.0.0.6 Output : 포트 2
10 10.0.0.4 10.0.0.1 Output : 포트 1
11 10.0.0.4 10.0.0.2 Output : 포트 1
12 10.0.0.4 10.0.0.3 Output : 포트 1
13 10.0.0.5 10.0.0.1 Output : 포트 1
14 10.0.0.5 10.0.0.2 Output : 포트 1
15 10.0.0.5 10.0.0.3 Output : 포트 1
16 10.0.0.6 10.0.0.1 Output : 포트 1
17 10.0.0.6 10.0.0.2 Output : 포트 1
18 10.0.0.6 10.0.0.3 Output : 포트 1
그러나 도 2와 같은 네트워크 구조에서 제 2 스위치(280)는 제 1 스위치(270)에서 수신한 패킷을 모두 제 3 스위치 (290)에 전달하고, 제 3 스위치 (290)에서 수신한 패킷을 모두 제 1 스위치 (270)에 전달하면 족하다. 그러나 종래의 오픈플로우 프로토콜에 따르면 모두 18개의 플로우 엔트리로 플로우 테이블을 구성해야 한다.
이 경우 스위치의 플로우 테이블의 사이즈는 네트워크가 커질수록 급격히 증가된다. 그러나 스위치의 저장 용량은 제한되어 있으며, 토폴로지가 일부라도 변경되면, 컨트롤러는 많은 플로우 엔트리를 수정해야 하고, 계산이 복잡해지는 문제가 발생한다.
본 발명은 상기와 같은 문제를 해결하기 위한 것이다.
본 발명의 실시예를 따르면, 패킷을 태깅하고, 상기 태그 값에 패킷의 전체 경로를 매칭하여, 태그값 기준으로 플로우 룰을 생성할 수 있다.
앞의 도 2의 예에서, 제 1 호스트 (210), 제 2 호스트 (220) 또는 제 3 호스트 (230)가 생성한 패킷은 제 1 스위치 (270), 제 2 스위치 (280) 및 제 3 스위치 (290) 순서로 네트워크를 통과할 수 있다.
이를 제 1 경로라고 하면, 제 4 호스트 (240), 제 5 호스트 (250) 또는 제 6 호스트 (260)가 생성한 패킷은 제 3 스위치 (290), 제 2 스위치 (280) 및 제 1 스위치 (270) 순서로 네트워크를 통과하고, 이를 제 2 경로라고 할 수 있다. 본 발명의 실시예를 따르면, 도 2의 네트워크는 상기 제 1 경로 및 제 2 경로만을 기준으로 패킷의 경로가 설정될 수 있다.
보다 구체적으로, 컨트롤러는 패킷 헤더의 특정 필드를 태그로 활용할 수 있도록 정의하고, 태그와 상기 제 1 경로, 상기 제 2 경로를 미리 매칭하여, 특정 태그 값을 가지는 패킷의 경로 정보에 대한 태그 테이블을 생성할 수 있다.
나아가, 본 발명의 실시예를 따르면, 스위치들은 태그 값을 기준으로 경로를 설정하는 플로우 테이블에 따라 패킷을 처리할 수 있다. 나아가 엣지 스위치, 즉, 패킷의 출발지 또는 도착지가 되는 호스트와 연결된 스위치는 태깅되지 않은 패킷에 태그를 부여하거나 또는 태깅된 패킷의 태그 설정을 해제할 수 있다.
이와 같은 경우, 도 2의 예에서, 컨트롤러는 제 1 태그를 제 1 경로와 매칭하고, 제 2 태그를 제 2 경로와 매칭하여 태그 테이블을 생성할 것이다.
이후 컨트롤러는 제 1 스위치 (270), 제 2 스위치 (280) 및 제 3 스위치 (290)에 제 1 태그 값을 가지는 패킷은 제 1 경로 (즉, 제 1 스위치 -> 제 2 스위치 -> 제 3 스위치)를 따라 포워딩하도록 지시하고, 제 2 태그 값을 가지는 패킷은 제 2 경로 (즉, 제 3 스위치 -> 제 2 스위치 -> 제 1 스위치)를 따라 포워딩하도록 지시하는 플로우 룰을 전송할 것이다.
예를 들어, 컨트롤러가 패킷 헤더의 출발지 또는 도착지 맥주소 필드를 태그로 활용하기로 한 경우, 아래의 표 2는 컨트롤러의 태그 테이블을 의미한다.
경로 태그 패킷 정보
1 제 1 스위치 -> 제 2 스위치 -> 제 3 스위치 TAG=1 출발지 IP 주소 도착지 IP 주소
10.0.0.1 10.0.0.4
10.0.0.1 10.0.0.5
10.0.0.1 10.0.0.6
10.0.0.2 10.0.0.4
10.0.0.2 10.0.0.5
10.0.0.2 10.0.0.6
10.0.0.3 10.0.0.4
10.0.0.3 10.0.0.5
10.0.0.3 10.0.0.6
2 제 3 스위치 -> 제 2 스위치 -> 제 1 스위치 TAG=2 출발지 IP 주소 도착지 IP
10.0.0.4 10.0.0.1
10.0.0.4 10.0.0.2
10.0.0.4 10.0.0.3
10.0.0.5 10.0.0.1
10.0.0.5 10.0.0.2
10.0.0.5 10.0.0.3
10.0.0.6 10.0.0.1
10.0.0.6 10.0.0.2
10.0.0.6 10.0.0.3
나아가 컨트롤러는 엣지 스위치가 아닌 중간 스위치, 즉 도 2의 예에서 제 2 스위치 (280)에 표 3와 같은 플로우 룰을 전송할 것이다.
Match Fields Instructions
TAG
1 1 Output : 포트 2
2 2 Output : 포트 1
표 1과 표 3를 비교하면, 제 2 스위치 (280)의 플로우 테이블 사이즈가 1/9로 축소된 것을 알 수 있다.
한편, 엣지 스위치인 제 1 스위치 (270)및 제 3 스위치 (290)는 표 3의 취지에 따르는 플로우 룰과 함께, 패킷에 태그를 설정하거나 해제하기 위한 플로우 룰 및 태그가 해제된 패킷을 전송하기 위한 플로우 룰을 더 포함할 수 있다.
앞의 예에서 제 1 스위치 (270)는 호스트로부터 패킷을 수신하면, 태그 설정을 지시하는 플로우 룰에 따라 패킷의 헤더 중 특정 필드 값을 1로 태깅할 수 있다.
나아가, 해당 필드에 2로 태깅된 패킷을 수신하면 태그 값을 해제하고, 종래의 오픈플로우 표준에 따르는 플로우 룰에 따라 해당 호스트에 포워딩 할 것이다.
아래의 표 4는 도 2의 제 1 스위치 (270)가 제 1 호스트 (210), 제 2 호스트 (220), 제 3 호스트 (230) 및 제 2 스위치 (280)와 각각 포트 1, 포트 2, 포트 3, 및 포트 4를 통해 연결되어 있는 경우, 본 발명의 실시예를 따르는 플로우 테이블 구성을 의미한다.
Match Fields Instructions
TAG 출발지 IP 주소 도착지 IP 주소
1 10.0.0.4 TAG=1 설정
2 10.0.0.5 TAG=1 설정
3 10.0.0.6 TAG=1 설정
4 1 Output : 포트 4
5 2 TAG 해제
6 10.0.0.1 Output : 포트 1
7 10.0.0.2 Output : 포트 2
8 10.0.0.3 Output : 포트 3
본 발명의 실시예를 따르는 태깅 룰, 즉 패킷에 태그 설정 또는 해제하는 방법은 두 가지를 고려할 수 있다.
첫번째 방법은 스위치가 컨트롤러에 패킷인 메시지 형태로 해당 패킷을 컨트롤러에 전송하고, 컨트롤러가 해당 패킷에 태그를 설정하거나 해제하여 패킷 아웃 메시지 형태로 다시 스위치에 전송하는 것이다.
첫번째 방법에 따르면 표 4의 제 1 스위치 (270)의 플로우 테이블의 첫번째, 두번째, 세번째 그리고 다섯번째 플로우 엔트리의 instruction은 “패킷인”이 될 것이다.
패킷인 메시지를 수신한 컨트롤러는 표 2의 태그 테이블을 참고하여 태깅되지 않은 패킷은 태그 값을 설정하고, 태그 값 설정에 대한 정보를 태그 테이블에 기록할 수 있다. 한편, 패킷 인 메시지로 태깅된 패킷을 수신한 컨트롤러는 상기 태그 테이블을 참고하여 패킷의 해당 필드에 태깅되기 전의 값을 기록하여 태그 값을 해제할 것이다.
두번째 방법은 스위치가 직접 패킷을 변경하는 것이다. 이 경우, 스위치는 오픈플로우 표준에서 규정하는 Set-field Action을 이용하여, 해당 필드를 수정하거나 또는 VLAN, MPLS 등의 헤더를 푸쉬 (push)하거나 팝(pop) 할 수 있다.
오픈플로우 표준은 푸쉬 태그 액션 및 팝 태그 액션을 VLAN 헤더, MPLS 헤더 등에 지원하고 있으며, 본 발명의 실시예를 따르면 상기 프로토콜을 이용하여 패킷에 태그 값을 설정하거나 태그 값을 해제할 수 있다.
예를 들어 VLAN을 태그로 이용할 경우, 도 2의 제 3 스위치 (290)은 호스트로부터 패킷을 수신하면, 수신한 패킷에 VID를 2로 하는 VLAN 헤더를 푸쉬할 수 있다.
나아가 VLAN 헤더의 VID가 1인 패킷을 수신하면, VLAN 헤더를 팝하고, 종래의 오픈플로우 표준에 따르는 플로우 룰에 따라 해당 호스트에 포워딩할 것이다.
아래의 표 5는 도 2의 제 3 스위치 (290)가 제 4 호스트 (240), 제 5 호스트 (250), 제 6 호스트 (260) 및 제 2 스위치 (280)와 각각 포트 1, 포트 2, 포트 3, 및 포트 4를 통해 연결되어 있는 경우, 본 발명의 실시예를 따르는 플로우 테이블 구성을 의미한다.
Match Fields Instructions
TAG 출발지 IP 주소 도착지 IP 주소
1 10.0.0.1 TAG=2 설정
2 10.0.0.2 TAG=2 설정
3 10.0.0.3 TAG=2 설정
4 2 Output : 포트 4
5 1 TAG 해제
6 10.0.0.4 Output : 포트 1
7 10.0.0.5 Output : 포트 2
8 10.0.0.6 Output : 포트 3
한편, 지금까지 태그는 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로와 매칭되는 것으로 설명되었다. 그러나 본 발명은 이에 한정되지 않는다.
본 발명의 다른 실시예를 따르면, 태그는 네트워크 토폴로지의 적어도 일부이며, 루트까지 경로가 유일한 방향성 트리(directed tree)와 매칭될 수도 있다.
상기 방향성 트리는 패킷이 해당 트리의 어느 위치에서 출발해도 루트까지 경로가 유일하게 결정되기 때문에 경로 설정의 기준이 될 수 있다. 나아가 상기 방향성 트리를 기준으로 경로를 설정하면, 토폴로지의 구성 요소가 추가되는 경우, 컨트롤러가 다시 전체 네트워크에 대해 방향성 트리를 계산할 필요없이 해당 구성만 변경 전 트리에 추가할 수 있어 효율적인 경로 관리가 가능한 장점이 있다.
도 3은 본 발명의 실시예를 따라 태그 기반으로 플로우 룰을 설정하는 방법을 설명하기 위한 순서도이다.
도 3의 단계 310에서 컨트롤러는 태그 테이블을 구성할 수 있다.
본 발명의 실시예를 따르면, 컨트롤러는 임의의 패킷이 출발지에서 도착지까지 통과하는 스위치 순서에 대한 경로들을 계산하고, 패킷 헤더의 특정 필드를 태그 값으로 활용할 수 있도록 정의하고, 상기 경로와 상기 태그 값을 매칭하여, 해당 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성할 수 있다.
나아가 본 발명의 다른 실시예를 따르면, 컨트롤러는 네트워크 토폴로지의 적어도 일부이며, 루트까지 경로가 유일한 방향성 트리를 계산하고, 상기 방향성 트리와 상기 태그 값을 매칭하여 태그 테이블을 생성할 수도 있다.
단계 320에서 컨트롤러는 네트워크의 스위치에 태그 값을 기준으로 경로를 설정하는 플로우 룰을 전송할 수 있다
나아가 컨트롤러는 엣지 스위치, 즉 패킷의 출발지 또는 도착지가 되는 호스트와 연결된 스위치에 패킷에 태그를 설정하거나 해제하는 태그 룰을 전송할 수 있다. (단계 325, 단계 330) 도 3의 예는 스위치 1, 스위치 3이 엣지 스위치인 경우이다.
단계 340에서 스위치 1이 연결된 호스트로부터 패킷을 수신한 경우, 스위치 1은 태그 룰에 따라 패킷에 태그를 부여할 수 있다.
보다 구체적으로, 스위치 1은 패킷인 메시지 형태로 해당 패킷을 컨트롤러에 전송하고 (단계 342), 패킷인 메시지를 수신한 컨트롤러는 태그 테이블을 참고하여 해당 패킷에 태그 값을 부여할 수 있다.
보다 구체적으로 컨트롤러는 패킷 헤더의 지정된 필드를 해당 태그 값으로 변경하고, 변경 내용을 태그 테이블에 기록하고 (단계 344) 변경한 패킷을 패킷 아웃 메시지 형태로 스위치 1 에 전송할 수 있다. (단계 346)
한편, 스위치 1은 직접 패킷에 태그 값을 부여할 수 있다. 예를 들어 스위치 1 은 오픈플로우 표준에서 규정하는 Set-field Action을 이용하여, 해당 필드를 미리 지정된 태그 값으로 변경하거나 지정된 헤더를 푸쉬할 수 있다. (단계 348)
나아가, 스위치 1은 태깅된 패킷을 자신의 플로우 테이블을 참고하여, 스위치 2에 전송할 수 있다. (단계 350) 스위치 1의 플로우 테이블은 단계 325에서 태그 기반으로 설정되어 있다.
태깅된 패킷을 수신한 스위치 2는 역시 자신의 플로우 테이블을 참고하여 태깅된 패킷을 스위치 3에 전송할 수 있다. (단계 360)
엣지 스위치인 스위치 3은 패킷을 전송하기 전에, 패킷의 태그 값을 해제할 수 있다.
보다 구체적으로, 스위치 3은 패킷인 메시지 형태로 해당 패킷을 컨트롤러에 전송하고 (단계 374) 패킷인 메시지를 수신한 컨트롤러는 태그 테이블을 참고하여 해당 패킷에 태그 값을 해제할 수 있다. 예를 들어 컨트롤러는 패킷의 헤더의 지정된 필드를 태깅되기 전의 값으로 복구하고 (단계 376) 복구한 패킷을 패킷 아웃 메시지 형태로 스위치 3에 전송할 수 있다. (단계 378)
한편 스위치 3은 직접 패킷에 태그 값을 해제할 수 있다. 예를 들어 스위치 3은 오픈플로우 표준에서 규정하는 Set-field Action을 이용하여, 해당 필드를 기존의 값으로 변경하거나 지정된 헤더를 팝할 수 있다. (단계 372)
이후 스위치 3은 패킷을 도착지 호스트로 전송할 수 있다. (단계 380)
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에 자명한 것이다.

Claims (8)

  1. 소프트웨어 정의 네트워크에서 컨트롤러가 패킷의 경로를 설정하는 방법에 있어서,
    상기 네트워크에서 임의의 패킷이 통과하는 스위치의 순서를 정의하고 상기 스위치의 순서와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하고, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하는 A 단계;
    스위치에, 수신한 패킷의 헤더 중 상기 필드를 확인하고, 상기 필드의 태그 값을 기준으로 상기 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하는 B 단계; 및
    상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 C 단계를 포함하며,
    상기 B 단계는,
    상기 태그 테이블에, 제 1 태그가 제 1 스위치, 제 2 스위치 및 제 3 스위치 순서와 매칭되고, 제 2 태그가 제 3 스위치, 제 2 스위치 및 제 1 스위치 순서와 매칭되어 있는 경우, 상기 제 2 스위치에, 패킷의 헤더의 상기 필드 값이 상기 제 1 태그이면, 상기 제 3 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하고, 패킷의 헤더의 상기 필드 값이 상기 제 2 태그이면, 상기 제 1 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하도록 지시하는 태그 기반 플로우 룰을 전송하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  2. 제 1항에 있어서,
    상기 C 단계는,
    상기 엣지 스위치가 호스트로부터 패킷을 수신하는 경우, 상기 패킷을 패킷인 메시지 형태로 상기 컨트롤러에 전송하도록 지시하는 단계; 및
    상기 엣지 스위치로부터 태그되지 않은 패킷을 수신하면, 상기 태그 테이블을 참고하여 상기 패킷의 헤더 중 상기 필드를 지정된 태그 값으로 변경하고, 변경한 패킷을 패킷 아웃 메시지 형태로 상기 엣지 스위치에 전송하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  3. 제 1항에 있어서,
    상기 C 단계는,
    상기 엣지 스위치가 호스트로부터 패킷을 수신하는 경우, 상기 패킷의 헤더 중 미리 설정된 필드를 지정된 태그 값으로 변경하도록 지시하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  4. 제 1항에 있어서,
    상기 C 단계는,
    상기 엣지 스위치가 호스트에 패킷을 전송하는 경우, 전송 전에 상기 패킷을 패킷인 메시지 형태로 상기 컨트롤러에 전송하도록 지시하는 단계; 및
    상기 엣지 스위치로부터 태그된 패킷을 수신하면, 상기 태그 테이블을 참고하여 상기 패킷의 헤더 중 상기 필드를 지정된 값으로 복구하고, 복구한 패킷을 패킷 아웃 메시지 형태로 상기 엣지 스위치에 전송하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  5. 제 1 항에 있어서,
    상기 C 단계는,
    상기 엣지 스위치가 호스트에 패킷을 전송하는 경우, 전송 전에 상기 패킷의 헤더 중 상기 필드를 지정된 값으로 복구하도록 지시하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  6. 제 1 항에 있어서,
    상기 A 단계는,
    네트워크 토폴로지의 적어도 일부이며, 루트까지 경로가 유일한 방향성 트리들을 계산하고, 상기 방향성 트리와 상기 태그 값을 매칭하여, 상기 태그 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 패킷 경로 설정 방법.
  7. 소프트웨어 정의 네트워크의 컨트롤러에서 패킷의 경로를 설정하는 장치에 있어서,
    스위치와 통신하는 통신부; 및
    상기 네트워크에서 임의의 패킷이 통과하는 스위치의 순서를 정의하고 상기 스위치의 순서와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하고, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하고, 상기 스위치에, 상기 필드의 태그 값을 기준으로 수신한 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하고, 상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 제어부를 포함하며,
    상기 제어부는, 상기 태그 테이블에, 제 1 태그가 제 1 스위치, 제 2 스위치 및 제 3 스위치 순서와 매칭되고, 제 2 태그가 제 3 스위치, 제 2 스위치 및 제 1 스위치 순서와 매칭되어 있는 경우, 상기 제 2 스위치에, 패킷의 헤더의 상기 필드 값이 상기 제 1 태그이면, 상기 제 3 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하고, 패킷의 헤더의 상기 필드 값이 상기 제 2 태그이면, 상기 제 1 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하도록 지시하는 태그 기반 플로우 룰을 전송하도록 상기 통신부를 제어하는 것을 특징으로 하는 패킷 경로 설정 장치.
  8. 소프트웨어 정의 네트워크에서 컨트롤러가 패킷의 경로를 설정하는 처리를 수행하기 위하여 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 네트워크에서 임의의 패킷이 통과하는 스위치의 순서를 정의하고 상기 스위치의 순서와 패킷의 헤더 중 미리 설정된 임의의 필드에 부여되는 태그 값들을 매칭하고, 상기 태그 값을 가지는 패킷의 정보에 대한 태그 테이블을 생성하는 기능;
    스위치에, 수신한 패킷의 헤더 중 상기 필드를 확인하고, 상기 필드의 태그 값을 기준으로 상기 패킷의 처리를 지정하는 태그 기반 플로우 룰을 전송하는 기능; 및
    상기 네트워크의 엣지 스위치에, 수신한 패킷에 대한 태그 설정 및 전송할 패킷에 대한 태그 해제를 지시하는 기능을 수행하며,
    상기 태그 기반 플로우 룰을 전송하는 기능은, 상기 태그 테이블에, 제 1 태그가 제 1 스위치, 제 2 스위치 및 제 3 스위치 순서와 매칭되고, 제 2 태그가 제 3 스위치, 제 2 스위치 및 제 1 스위치 순서와 매칭되어 있는 경우, 상기 제 2 스위치에, 패킷의 헤더의 상기 필드 값이 상기 제 1 태그이면, 상기 제 3 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하고, 패킷의 헤더의 상기 필드 값이 상기 제 2 태그이면, 상기 제 1 스위치와 연결된 아웃포트로 상기 패킷을 포워딩하도록 지시하는 기능을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020160019796A 2016-02-19 2016-02-19 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램 KR101767439B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160019796A KR101767439B1 (ko) 2016-02-19 2016-02-19 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160019796A KR101767439B1 (ko) 2016-02-19 2016-02-19 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램

Publications (1)

Publication Number Publication Date
KR101767439B1 true KR101767439B1 (ko) 2017-08-24

Family

ID=59758433

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160019796A KR101767439B1 (ko) 2016-02-19 2016-02-19 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101767439B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101906437B1 (ko) 2016-12-13 2018-10-10 아토리서치(주) 네트워크 보안 정책을 테스트하는 방법, 장치 및 컴퓨터 프로그램

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012204882A (ja) * 2011-03-23 2012-10-22 Research Organization Of Information & Systems ハイブリッド通信システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012204882A (ja) * 2011-03-23 2012-10-22 Research Organization Of Information & Systems ハイブリッド通信システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101906437B1 (ko) 2016-12-13 2018-10-10 아토리서치(주) 네트워크 보안 정책을 테스트하는 방법, 장치 및 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
EP2974133B1 (en) Method and system for controlling an underlying physical network by a software defined network
US9379975B2 (en) Communication control system, control server, forwarding node, communication control method, and communication control program
US10791053B2 (en) Service function chain SFC-based communication method, and apparatus
JP5488979B2 (ja) コンピュータシステム、コントローラ、スイッチ、及び通信方法
US9900238B2 (en) Overlay network-based original packet flow mapping apparatus and method therefor
WO2013185715A1 (zh) 一种实现虚拟网络的方法和虚拟网络
KR101881434B1 (ko) 포워딩 테이블 동기화 방법, 네트워크 장치, 및 시스템
US9515927B2 (en) System and method for layer 3 proxy routing
RU2612599C1 (ru) Устройство управления, система связи, способ управления коммутаторами и программа
EP3069471B1 (en) Optimized multicast routing in a clos-like network
CN108429680B (zh) 一种基于虚拟私有云的路由配置方法、系统、介质及设备
US10374935B2 (en) Link discovery method, system, and device
TWI639325B (zh) 自動配置的交換機、自動配置交換機的方法、交換機自動部署的軟體定義網路系統及其方法
CN104202266A (zh) 一种通信方法、交换机、控制器及通信系统
KR101855742B1 (ko) 소프트웨어 정의 네트워킹에서의 목적지 기반 패킷 전송 제어 방법 및 장치
WO2018149338A1 (zh) 基于sdn的远端流镜像控制方法、实现方法及相关设备
KR101658824B1 (ko) 소프트웨어 정의 네트워크에서 플로우 룰을 변경하는 방법, 장치 및 컴퓨터 프로그램
CN106713026A (zh) 业务链拓扑结构、业务链设置方法和控制器
KR101767439B1 (ko) 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램
US10623301B2 (en) Method, routing bridge and non-transitory computer-readable storage medium for network routing
CN108512737A (zh) 一种数据中心ip层互联的方法和sdn控制器
KR102092091B1 (ko) 소프트웨어 정의 네트워크에서 고가용성 및 고신뢰성을 제공하는 방법, 장치 및 컴퓨터 프로그램
CN114301839A (zh) 一种组播报文传输方法及装置
KR102023901B1 (ko) 소프트웨어 정의 네트워크에서 패킷의 경로를 설정하는 방법, 장치 및 컴퓨터 프로그램
KR102485180B1 (ko) Sdn 스위치 및 이의 멀티캐스트 방법

Legal Events

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