KR101880222B1 - 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법 - Google Patents

오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법 Download PDF

Info

Publication number
KR101880222B1
KR101880222B1 KR1020160174531A KR20160174531A KR101880222B1 KR 101880222 B1 KR101880222 B1 KR 101880222B1 KR 1020160174531 A KR1020160174531 A KR 1020160174531A KR 20160174531 A KR20160174531 A KR 20160174531A KR 101880222 B1 KR101880222 B1 KR 101880222B1
Authority
KR
South Korea
Prior art keywords
flow
open flow
error
open
flow switch
Prior art date
Application number
KR1020160174531A
Other languages
English (en)
Other versions
KR20180071659A (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 성균관대학교산학협력단
Priority to KR1020160174531A priority Critical patent/KR101880222B1/ko
Priority to PCT/KR2017/003206 priority patent/WO2018117336A1/ko
Publication of KR20180071659A publication Critical patent/KR20180071659A/ko
Application granted granted Critical
Publication of KR101880222B1 publication Critical patent/KR101880222B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • 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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate 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/28Routing or path finding of packets in data switching networks using route fault recovery
    • 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/42Centralised 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/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/645Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Abstract

본 발명은 통신 모듈, 오류 복구 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함한다. 이때, 프로세서는 프로그램의 실행에 따라, 플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류가 감지되면, 플로우의 정보 및 오류에 대응하는 컴포넌트의 정보에 기초하여 플로우에 대응하는 대체 경로를 설정한다. 그리고 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하며, 오류에 대응하는 컴포넌트는 프로세서가 플로우에 따라 패킷을 전달하는 오픈플로우 스위치 또는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치와의 링크이다.

Description

오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법{SWITCH, CONTROLLER AND METHOD FAILURE RECOVERY USING OPENFLOW BASED ON OPENFLOW}
본 발명은 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법에 관한 것이다.
오픈플로우(openflow)는 소프트웨어 정의 네트워크(software definition network; SDN)의 인터페이스 표준 기술이다. 이때, 오픈플로우 기반 네트워크는 오픈플로우 컨트롤러(openflow controller)와 오픈플로우 스위치를 포함하며, 오픈플로우 프로토콜(openflow protocol)을 이용하여 내부 통신을 수행한다.
오픈플로우 기반 네트워크는 하드웨어 방식으로 고정되어 있고 폐쇄적이던 기존의 네트워크 구조를 프로그래밍이 가능한 개방형 구조로 바꾼 것이다. 오픈플로우 기반 네트워크의 핵심적인 특징은 기존 네트워크 장비에서 제어 및 관리 기능을 담당하는 컨트롤 플레인(control plane)을 소프트웨어로 분리하는 것이다. 그러므로 오픈플로우 기반 네트워크는 제조 업체가 제공하는 방식이 아닌, 사용자들이 주도해 원하는 네트워크를 구축 및 운영할 수 있는 장점이 있다.
오픈플로우 기반 네트워크는 오픈플로우 컨트롤러 및 복수의 오픈플로우 스위치(openflow switch)를 포함한다. 오픈플로우 컨트롤러는 수신된 패킷(packet)을 처리하기 위한 플로우(flow) 정보를 제공할 수 있다. 그리고 오픈플로우 스위치는 오픈플로우 컨트롤러가 전송한 플로우 정보에 따라 패킷을 처리한다.
오픈플로우 기반 네트워크에서 오류가 발생하는 경우, 오픈플로우 스위치는 플로우 당 미리 설정된 대체 경로에 기초하여 중단된 플로우를 우회할 수 있다. 그러므로 각 오픈플로우 스위치는 하나 이상의 플로우에 대응하는 경로 및 해당 경로에 대한 대체 경로를 저장한다. 즉,플로우의 수가 증가함에 따라, 오픈플로우 스위치에 저장해야 하는 경로 및 대체 경로가 증가할 수 있으며, 이에 따른 오픈플로우 스위치 상의 메모리 과부하가 발생할 수 있다.
이와 관련되어, 한국 등록특허공보 제10-1585413호(발명의 명칭: "소프트웨어 정의 네트워크 기반 클라우드 컴퓨팅 시스템을 위한 오픈플로우 컨트롤러 및 재해복구 방법")는 라우드 컴퓨팅 시스템에 포함된 가상 머신이 라이브 마이그레이션되면, 라이브 마이그레이션된 가상 머신을 탐지하고, 라이브 마이그레이션된 가상 머신에 대응하는 포워딩 경로를 추출하고, 추출된 포워딩 경로에 기초하여 저장된 포워딩 경로를 업데이트하며, 추출된 포워딩 경로에 대응하는 오픈플로우 스위치를 검색하고, 검색된 오픈플로우 스위치에 추출된 포워딩 경로를 업데이트하는 재해복구 방법을 개시하고 있다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 경로 상의 오류 복구를 위한 대체 경로를 제공하는 오픈플로우 스위치 및 오픈플로우 컨트롤러와 오픈플로우 스위치에서의 오류 복구 방법, 오픈플로우 컨트롤러에서의 대체 경로 제공 방법을 제공한다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 오류를 복구하기 위한 오픈플로우 스위치는 통신 모듈, 오류 복구 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함한다. 이때, 프로세서는 프로그램의 실행에 따라, 플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류가 감지되면, 플로우의 정보 및 오류에 대응하는 컴포넌트의 정보에 기초하여 플로우에 대응하는 대체 경로를 설정한다. 그리고 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하며, 오류에 대응하는 컴포넌트는 프로세서가 플로우에 따라 패킷을 전달하는 오픈플로우 스위치 또는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치와의 링크이다.
또한, 본 발명의 제 2 측면에 따른 오픈플로우 컨트롤러는 복수의 오픈플로우 스위치와 데이터 통신을 수행하는 통신 모듈, 대체 경로 생성 프로그램이 저장된 메모리 및 메모리에 저장된 프로그램을 실행하는 프로세서를 포함한다. 이때, 프로세서는 프로그램의 실행에 따라 복수의 플로우를 수집하고, 복수의 플로우의 정보에 기초하여 각 플로우를 플로우 그룹으로 분류하고, 플로우 그룹에 대응하는 대체 경로를 생성하고, 복수의 오픈플로우 스위치로 생성된 대체 경로를 전달한다. 그리고 대체 경로는 플로우의 오류에 대응하는 것이고, 오류는 플로우에 포함된 오픈플로우 스위치에 대한 오류이거나, 플로우에 포함된 오픈플로우 스위치에 대응하는 링크에 대한 오류이다.
본 발명의 제 3 측면에 따른 오픈플로우 스위치에서의 오류 복구 방법은 플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류를 감지하는 단계; 및 플로우의 정보 및 오류에 대응하는 컴포넌트의 정보에 기초하여 플로우에 대응하는 대체 경로를 설정하는 단계를 포함한다. 이때, 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하며, 오류에 대응하는 컴포넌트는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치 또는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치와의 링크이다.
그리고 본 발명의 제 4 측면에 따른 오픈플로우 컨트롤러에서의 오류 복구 방법은 복수의 플로우를 수집하고, 복수의 플로우의 정보에 기초하여 각 플로우를 플로우 그룹으로 분류하는 단계; 플로우 그룹에 대응하는 대체 경로를 생성하는 단계; 및 복수의 오픈플로우 스위치로 생성된 대체 경로를 전달하는 단계를 포함한다. 이때, 대체 경로는 플로우의 오류에 대응하는 것이고, 오류는 플로우에 포함된 오픈플로우 스위치에 대한 오류이거나, 플로우에 포함된 오픈플로우 스위치에 대응하는 링크에 대한 오류이다.
본 발명은 각 오픈플로우 스위치가 오픈플로우 기반 네트워크 상의 복수의 플로우에 대응하는 대체 경로를 저장하지 않고, 목적지의 주소가 동일한 플로우 그룹에 대한 대체 경로를 저장할 수 있다. 그러므로 본 발명은 각 오픈플로우 스위치에 저장되는 대체 경로의 수를 줄일 수 있어 효율적이다.
또한, 본 발명은 오픈플로우 컨트롤러의 과부하를 줄일 수 있다. 그러므로 본 발명은 오픈플로우 기반 네트워크 상에서 발생할 수 있는 오류에 빠르게 대처할 수 있다.
도 1은 오픈플로우 기반 네트워크의 예시도이다.
도 2는 오픈플로우 기반 네트워크의 오픈플로우 스위치 오류에 대한 예시도이다.
도 3은 오픈플로우 기반 네트워크의 링크 오류에 대한 예시도이다.
도 4는 오픈플로우 기반 네트워크의 에지 컴포넌트 오류에 대한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 오픈플로우 스위치의 블록도이다.
도 6은 본 발명의 일 실시예에 따른 플로우 테이블 및 그룹 테이블의 예시도이다.
도 7은 본 발명의 일 실시예에 따른 코어 컴포넌트에 대한 오류 복구 과정을 설명하기 위한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 에지 컴포넌트에 대한 오류 복구 과정을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러의 블록도이다.
도 10은 본 발명의 일 실시예에 따른 오픈플로우 스위치에서의 오류 복구 방법의 순서도이다.
도 11은 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러의 오류 복구 방법에 대한 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
다음은 도 1 내지 도 4를 참조하여 일반적인 오픈플로우 기반 네트워크(100)에서의 복구 방법을 설명한다.
도 1은 오픈플로우 기반 네트워크(100)의 예시도이다.
도 1을 참조하면, 오픈플로우 기반 네트워크(100)는 6개의 오픈플로우 스위치 (110, 120, 130, 140, 150, 160)를 포함할 수 있다. 또한, 오픈플로우 기반 네트워크(100)는 제 1 호스트(170), 제 2 호스트(171) 및 제 3 호스트(172)를 포함할 수 있다.
오픈플로우 기반 네트워크(100)는 6개의 스위치(110, 120, 130, 140, 150, 160)와 직간접적으로 연결된 오픈플로우 컨트롤러, 목적지 호스트 및 출발지 호스트를 포함할 수 있다.
출발지 호스트는 패킷을 목적지 호스트로 전달할 수 있다. 이때, 목적지 호스트 및 출발지 호스트는 제 1 호스트(170), 제 2 호스트(171) 및 제 3 호스트(172) 또는 도 1에 도시되지 않은 타 호스트일 수 있다. 예를 들어, 호스트는 서버, 컴퓨터 또는 모바일 장치일 수 있으나, 이에 한정된 것은 아니다.
각각의 오픈플로우 스위치는 링크를 통하여 타 오픈플로우 스위치, 오픈플로우 컨트롤러 또는 호스트 등과 연결될 수 있다.
또한, 오픈플로우 기반 네트워크(100)는 에지 컴포넌트(edge components) 및 코어 컴포넌트(core components)를 포함할 수 있다. 이때, 에지 컴포넌트는 목적지 호스트 또는 출발지 호스트와 직접 연결된 것을 의미하며, 에지 스위치(edge switch) 및 에지 링크(edge link)를 포함할 수 있다.
예를 들어, 도 1을 참조하면, 에지 스위치는 제 3 오픈플로우 스위치(130) 및 제 4 오픈플로우 스위치(140)가 될 수 있으며, 에지 링크는 제 3 오픈플로우 스위치(130) 또는 제 4 오픈플로우 스위치(140)와 연결된 링크가 될 수 있다.
또한, 코어 컴포넌트는 출발지 호스트에서 수신한 패킷을 다른 코어 컴포넌트 또는 에지 컴포넌트로 전달하는 것으로, 코어 스위치(core switch) 및 코어 링크(core link)를 포함할 수 있다.
예를 들어, 도 1을 참조하면, 코어 스위치는 제 1 오픈플로우 스위치(110), 제 2 오픈플로우 스위치(120), 제 5 오픈플로우 스위치(150) 및 제 6 오픈플로우 스위치가 될 수 있다. 또한, 코어 링크는 제 1 오픈플로우 스위치(110), 제 2 오픈플로우 스위치(120), 제 5 오픈플로우 스위치(150) 및 제 6 오픈플로우 스위치와 연결된 링크가 될 수 있다.
오픈플로우 기반 네트워크(100)는 제 1 호스트(170) 또는 제 2 호스트(171)가 목적지 호스트인 제 1 플로우와 제 3 호스트(172)가 목적지 호스트인 제 2 플로우를 포함할 수 있다. 제 1 플로우의 최적의 경로는 "제 1 오픈플로우 스위치(110) -> 제 2 오픈플로우 스위치(120) -> 제 4 오픈플로우 스위치(140)"일 수 있다. 또한, 제 2 플로우의 최적의 경로는 "제 1 오픈플로우 스위치(110) -> 제 2 오픈플로우 스위치(120) -> 제 3 오픈플로우 스위치(130)"일 수 있다. 이때, 제 1 플로우 및 제 2 플로우는 제 1 오픈플로우 스위치(110) 및 제 2 오픈플로우 간의 링크를 공유할 수 있다. 즉, 제 2 오픈플로우 스위치(120)는 제 1 플로우 및 제 2 플로우를 위한 중앙 스위치(center switch) 역할을 할 수 있다.
오픈플로우 기반 네트워크(100)에 포함된 컴포넌트 중 어느 하나에 오류가 발생하면, 오픈플로우 기반 네트워크(100)에 포함된 각 오픈플로우 스위치는 오픈플로우 컨트롤러를 통하여 우회 경로에 기초하여 타 컴포넌트로 우회할 수 있다.
이때, 오류는 오픈플로우 기반 네트워크(100)에 포함된 오픈플로우 스위치가 전원이 꺼지거나, 고장이 발생하여, 패킷을 수신할 수 없거나, 수신한 패킷을 다른 오픈플로우 스위치 또는 호스트로 전달할 수 없는 것을 의미한다. 또는, 오류는 오픈플로우 스위치 간의 링크가 끊어진 것일 수 있으나, 이에 한정된 것은 아니다.
도 2는 오픈플로우 기반 네트워크(100)의 오픈플로우 스위치 오류에 대한 예시도이다.
예를 들어, 도 2를 참조하면, 오픈플로우 기반 네트워크(100)에 포함된 제 2 오픈플로우 스위치(120)에 오류가 발생할 수 있다. 즉, 오픈플로우 기반 네트워크(100)는 제 1 오픈플로우 스위치(110)와 제 2 오픈플로우 스위치(120) 간의 링크, 제 2 오픈플로우 스위치(120)와 제 4 오픈플로우 스위치(140) 간의 링크, 및 제 2 오픈플로우 스위치(120)와 제 3 오픈플로우 스위치(130) 간의 링크를 이용할 수 없다.
오픈플로우 기반 네트워크(100)는 대체 경로에 기초하여 오류가 발생한 스위치(failed switch)와 미리 정해진 홉(hop) 간격인 타 스위치로 우회할 수 있다. 예를 들어, 오픈플로우 기반 네트워크(100)는 지역 보호 메커니즘(local protection mechanism)에 기초하여 생성된 우회 경로에 따라 우회할 수 있다.
예를 들어, 미리 정해진 홉은 2홉 이내가 될 수 있다. 그러므로 제 1 플로우는 제 2 오픈플로우 스위치(120)와 1 홉 간격인 스위치 중 제 4 오픈플로우 스위치(140)로 우회할 수 있다. 즉, 제 1 플로우의 경로는 "제 1 오픈플로우 스위치(110) -> 제 5 오픈플로우 스위치(150) -> 제 4 오픈플로우 스위치(140)"로 우회할 수 있다. 비슷한 방법으로 제 2 플로우는 제 6 오픈플로우 스위치(160)를 우회할 수 있다. 즉, 제 2 플로우의 경로는 "제 1 오픈플로우 스위치(110) -> 제 6 오픈플로우 스위치(160) -> 제 3 오픈플로우 스위치(130)"로 우회할 수 있다.
도 3은 오픈플로우 기반 네트워크(100)의 링크 오류에 대한 예시도이다.
도 3을 참조하면, 제 1 오픈플로우 스위치(110)와 제 2 오픈플로우 스위치(120) 간의 링크에 오류가 발생할 수 있다. 그러므로 제 1 플로우의 경로는 "제 1 오픈플로우 스위치(110) -> 제 5 오픈플로우 스위치(150) -> 제 4 오픈플로우 스위치(140)"로 우회할 수 있다. 또한, 제 2 플로우의 경로는 "제 1 오픈플로우 스위치(110) -> 제 6 오픈플로우 스위치(160) -> 제 3 오픈플로우 스위치(130)"로 우회할 수 있다.
이와 같이, 코어 컴포넌트에 오류가 발생하면, 오픈플로우 기반 네트워크(100)는 우회 경로를 통하여 오류가 발생한 코어 컴포넌트를 우회할 수 있다. 그러나 에지 컴포넌트에 이상이 발생하는 경우 오픈플로우 기반 네트워크(100)는 미리 정해진 홉수 이내에 해당 이상에 영향을 받지 않는 스위치를 포함하지 않을 수 있다.
도 4는 오픈플로우 기반 네트워크(100)의 에지 컴포넌트 오류에 대한 예시도이다.
예를 들어, 도 4를 참조하면, 제 2 오픈플로우 스위치(120)와 제 4 오픈플로우 스위치(140) 간의 링크에 이상이 발생하면, 오픈플로우 기반 네트워크(100)는 더 이상 우회 가능한 우회 경로를 찾을 수 없다. 이때, 오픈플로우 기반 네트워크(100)의 오픈플로우 컨트롤러는 이상이 발생한 링크 문제를 해결하기 위하여 백업 경로를 설정할 수 있다. 즉, 제 2 오픈플로우 스위치(120)는 제 2 오픈플로우 스위치(120)와 제 4 오픈플로우 스위치(140) 간의 링크가 복구될 때까지 백업 경로를 따라, 제 2 오픈플로우 스위치(120)로 도착한 패킷을 제 1 오픈플로우 스위치(110), 제 5 오픈플로우 스위치(150) 및 제 4 오픈플로우 스위치(140)로 우회시킬 수 있다.
이때, 종래의 오픈플로우 기반 네트워크(100)는 오픈플로우 기반 네트워크(100)에 포함된 오픈플로우 컨트롤러를 통하여 리액티브(reactive) 방식으로 백업 경로를 생성할 수 있다.
예를 들어, 오픈플로우 컨트롤러는 특정 오픈플로우 스위치 또는 특정 링크에 기초하여 중단된 플로우를 위한 플로우 규칙(flow rule)을 수정하여 미리 설정된 백업 경로에 따라 전송될 수 있다. 이때, 플로우 규칙을 수정하기 위하여 오픈플로우 컨트롤러는 플로우 규칙에 대응하는 대체 포트를 산출하여야 한다. 그러므로 오픈플로우 컨트롤러는 각 오픈플로우 스위치의 대체 포트 정보를 수신할 수 있다. 그리고 오픈플로우 컨트롤러는 수신한 대체 포트 정보 및 LOS(loss of signal) 시그널 메커니즘에 기초하여 각 오픈플로우 스위치의 포트 상태를 감지하여 우회 노드를 설정할 수 있다.
오픈플로우 컨트롤러는 오류가 발생한 포트를 대체할 수 있는 포트를 산출할 수 있다. 그리고 오픈플로우 컨트롤러는 대체 포트를 산출한 이후 미리 설정된 백업 경로로 중단된 플로우를 전송하기 위하여 최적 경로 규칙을 수정할 수 있다.
예를 들어 다시 도 2 및 도 3을 참조하면, 제 2 오픈플로우 스위치(120)에 오류가 발견되거나, 제 1 오픈플로우 스위치(110) 및 제 2 오픈플로우 스위치(120) 간의 경로 상에 오류가 발견되면, 제 2 오픈플로우 스위치(120)로 패킷을 전달하고자 하는 제 1 오픈플로우 스위치(110)는 오픈플로우 컨트롤러로 이상 통보 메시지를 전달할 수 있다.
오픈플로우 컨트롤러는 플로우 수정 메시지를 생성하여 해당 오픈플로우 스위치에 전달할 수 있다. 이때, 플로우 수정 메시지는 미리 정해진 대체 경로를 통하여, 전송이 중단된 플로우를 제 2 오픈플로우 스위치(120)와 미리 정해진 홉 수 이내의 다른 오픈플로우 스위치를 통하여 전달할 수 있도록 하는 메시지일 수 있다. 즉, 제 5 오픈플로우 스위치(150)는 제 1 플로우에 기초하여 패킷을 전달하기 위한 플로우 규칙을 설치할 수 있다.
다음은 도 5 내지 도 8을 참조하여 본 발명의 일 실시예에 따른 오픈플로우 스위치(500)를 설명한다.
도 5는 본 발명의 일 실시예에 따른 오픈플로우 스위치(500)의 블록도이다.
오픈플로우 스위치(500)는 출발지 호스트로부터 전달된 패킷을 목적지 호스트로 전달되도록 할 수 있다. 이때, 오픈플로우 스위치(500)는 출발지 호스트 또는 목적지 호스트와 직접 연결되거나 하나 이상의 타 오픈플로우 스위치(500)를 통하여 간접적으로 연결될 수 있다.
또한, 오픈플로우 스위치(500)는 오픈플로우 컨트롤러(540)와 직접적으로 연결되거나, 하나 이상의 타 오픈플로우 스위치(500)를 통하여 연결될 수 있다.
오픈플로우 스위치(500)는 통신 모듈(510), 메모리(520) 및 프로세서(530)를 포함한다.
통신 모듈(510)은 호스트 및 오픈플로우 스위치(500)와 데이터 통신을 수행할 수 있다. 또한, 통신 모듈(510)은 오픈플로우 컨트롤러(540)와 데이터 통신을 수행할 수 있다.
메모리(520)는 오류 복구 프로그램이 저장된다. 이때, 메모리(520)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치를 통칭하는 것이다.
또한, 메모리(520)는 플로우 테이블 및 그룹 테이블을 저장한다. 플로우 테이블 및 그룹 테이블은 도 6을 참조하여 설명한다.
도 6은 본 발명의 일 실시예에 따른 플로우 테이블 및 그룹 테이블의 예시도이다. 이때, 도 6의 (a)는 플로우 테이블의 예시도이다. 또한, 도 6의 (b)는 그룹 테이블의 예시도이다.
플로우 테이블은 엔트리로 플로우 규칙을 저장한다.
예를 들어, 플로우 규칙은 출발지 IP(internet protocol), 목적지 IP, 진입 포트, VLAN ID 및 액션(action)을 포함할 수 있다. 이때, 출발지 IP는 출발지 호스트의 IP와 같은 주소일 수 있다. 또한, 목적지 IP는 목적지 호스트의 IP와 같은 주소일 수 있다. 또한, VLAN ID는 컴포넌트에 대응하여 유일한(unique) 식별자일 수 있다.
이때, 컴포넌트는 오픈플로우 스위치(500) 및 링크를 포함하는 개념이다. 링크는 두 오픈플로우 스위치(500) 간의 유선 연결 또는 무선 연결을 의미한다.
액션은 해당 플로우 규칙에 대응하는 액션이 정의된다. 예를 들어, 도 6의 (a)를 참조하면, 액션은 패킷을 전달하기 위하여 사용할 수 있는 그룹 ID를 포함할 수 있다.
또한, 도 6의 (b)를 참조하면 그룹 테이블은 그룹 식별자, 그룹 타입 및 액션 버킷(action bucket)을 포함할 수 있다. 이때, 그룹 식별자는 플로우 규칙의 액션과 매칭되는 것일 수 있다. 또한, 그룹 타입은 "ALL", "SELECT", "INDIRECT" 및 "FAST-FAILOVER" 등이 될 수 있다. 액션 버킷은 그룹에 대응하는 액션을 포함할 수 있다. 이때, 액션 버킷은 주 경로 및 대체 경로에 대한 정보를 포함할 수 있다. 예를 들어, 그룹 유형이 "FAST-FAILOVER"인 경우, 액션 버킷은 "주 경로 - 포트 3을 통하여 출력" 또는 "대체 경로 - 포트 4를 통하여 출력"과 같이 설정될 수 있다.
이때, 플로우 테이블 및 그룹 테이블은 통신 모듈(510)을 통하여 오픈플로우 컨트롤러(540)로부터 수신한 것일 수 있다.
한편, 프로세서(530)는 통신 모듈(510)을 통하여 패킷을 수신할 수 있다. 그리고 프로세서(530)는 통신 모듈(510)을 통하여 패킷에 대응하는 플로우에 따라 패킷을 타 오픈플로우 스위치(500) 또는 목적지 호스트로 전달할 수 있다. 이때, 프로세서(530)는 플로우 테이블 및 그룹 테이블에 기초한 경로에 따라 수신한 패킷을 전달할 수 있다.
도 7은 본 발명의 일 실시예에 따른 코어 컴포넌트에 대한 오류 복구 과정을 설명하기 위한 예시도이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 오픈플로우 기반 네트워크(700)에 포함된 제 1 오픈플로우 스위치(710)는 수신한 제 1 플로우에 대응하는 패킷을 목적지 호스트로 전달하기 위하여 기설정된 경로에 따라 링크를 통하여 제 2 오픈플로우 스위치(720)로 전송할 수 있다.
또한, 제 2 오픈플로우 스위치(720)는 오픈플로우 컨트롤러(540)로부터 수신한 패킷을 제 4 오픈플로우 스위치(740)로 전송할 수 있다. 그리고 제 4 오픈플로우 스위치(740)는 제 2 오픈플로우 스위치(720)로부터 수신한 패킷을 제 3 호스트(172)로 전송할 수 있다.
이와 같이, 오픈플로우 기반 네트워크(700)는 해당 플로우의 기설정된 경로에 따라 패킷을 목적지 호스트로 전달할 수 있다.
한편, 패킷을 전달하는 경로 상에 포함된 특정 컴포넌트에 오류가 발생하면, 프로세서(530)는 해당 컴포넌트를 우회할 수 있는 대체 경로를 설정할 수 있다. 이때, 컴포넌트는 패킷을 수신할 타 오픈플로우 스위치(500)이거나, 해당 오픈플로우 스위치(500)와의 링크를 포함할 수 있다.
오류는 프로세서(530)가 통신 모듈(510)을 통하여 패킷을 전달하게 되는 타 오픈플로우 스위치가 고장 나거나, 해당 오픈플로우 스위치에서 패킷을 수신할 수 있는 문제가 발생한 것을 의미할 수 있다. 또는, 오류는 프로세서(530)가 통신 모듈(510)을 통하여 패킷을 전달할 때, 해당 패킷을 수신하는 타 오픈플로우 스위치와의 링크가 끊어지거나, 링크에 문제가 발생하여 해당 오픈플로우 스위치가 패킷을 수신할 수 없는 경우를 의미할 수 있다.
구체적으로 경로에 따라 패킷을 전달해야 하는 대상 오픈플로우 스위치로 패킷을 전달하지 못하는 경우, 프로세서(530)는 대상 오픈플로우 스위치 또는 대상 오픈플로우 스위치와의 링크를 포함하는 컴포넌트의 오류를 감지할 수 있다. 이때, 오류는 해당 오픈플로우 스위치(500) 또는 해당 오픈플로우 스위치(500)와의 링크에 대한 것일 수 있다.
컴포넌트 상에 오류가 감지되면, 프로세서(530)는 패킷에 대응하는 플로우의 정보 및 오류가 발생한 컴포넌트의 정보에 기초하여 대체 경로를 설정할 수 있다.
구체적으로 대체 경로는 프로세서(530)가 오픈플로우 컨트롤러(540)를 통하여 대체 경로를 수신하여 메모리(520)에 저장한 것일 수 있다.
예를 들어, 대체 경로는 메모리(520)에 저장된 그룹 테이블에 저장된 것일 수 있다. 이때, 대체 경로에 대응하는 그룹 엔트리는 그룹 유형이 "FAST-FAILOVER"로 설정된 것일 수 있다.
이때, 대체 경로는 오픈플로우 컨트롤러(540)가 오류에 기초하여 수집된 하나 이상의 플로우의 정보에 기초하여 생성한 것일 수 있다. 또한, 오류에 기초하여 수집된 하나 이상의 플로우는 해당 오류에 기초하여 패킷의 전송이 중단된 플로우일 수 있다.
대체 경로는 목적지 호스트 주소가 동일한 플로우 그룹 당 하나씩 생성될 수 있다. 예를 들어, 오픈플로우 컨트롤러(540)는 목적지 호스트의 주소가 동일한 플로우를 분류하고, 하나 이상의 플로우 그룹을 생성할 수 있다. 또는, 오픈플로우 컨트롤러(540)는 목적지 호스트와 연결된 오픈플로우 스위치(500)의 주소가 동일한 플로우를 분류하여 하나 이상의 플로우 그룹을 생성할 수 있다. 이하에서는 목적지 호스트의 주소가 동일한 플로우에 기초하여 플로우 그룹을 생성하는 것으로 설명하나, 이에 한정되는 것은 아니다.
그리고 오픈플로우 컨트롤러(540)는 각 플로우 그룹 당 하나의 대체 경로를 생성할 수 있다. 즉, 오픈플로우 컨트롤러(540)는 플로우 그룹에 포함된 목적지가 동일한 하나 이상의 플로우 당 하나의 대체 경로를 생성할 수 있다.
이때, 오픈플로우 컨트롤러(540)는 오픈플로우 스위치(500) 및 링크에 대응하여 설정된 VLAN(virtual local address network) ID에 기초하여 목적지 호스트가 동일한 플로우 그룹을 분류할 수 있다. 이때, 오픈플로우 스위치(500) 및 링크에 대응하여 설정되는 VLAN ID는 유일한 식별자일 수 있다.
또한, 오픈플로우 컨트롤러(540)는 플로우 태깅(flow tagging) 메커니즘에 기초하여 대체 경로를 생성할 수 있다. 오픈플로우 컨트롤러(540)는 대체 경로에 포함된 헤더 태그와 매칭되는 플로우 규칙이 설정할 수 있다.
대체 경로는 오류가 발생할 수 있는 컴포넌트의 유형에 기초하여 상이하게 설정될 수 있다. 예를 들어, 컴포넌트가 호스트와 직접 연결되는 오픈플로우 스위치(500) 또는 해당 오픈플로우 스위치(500)에 대응하는 링크를 포함하는 에지 컴포넌트인 경우, 대체 경로는 해당 에지 컴포넌트에 포함된 링크에 기초하여 생성될 수 있다. 또는, 컴포넌트가 타 오픈플로우 스위치(500)와 연결된 오픈플로우 스위치(500) 또는 해당 오픈플로우 스위치(500)에 대응하는 링크를 포함하는 코어 컴포넌트인 경우, 대체 경로는 해당 코어 컴포넌트에 포함된 오픈플로우 스위치(500)에 기초하여 생성된 것일 수 있다.
이러한 과정을 통하여, 오픈플로우 컨트롤러(540)는 오류에 대응하는 오픈플로우 컨트롤러(540)와 미리 정해진 홉 수 이내에 위치한 오픈플로우 컨트롤러(540)로 우회할 수 있도록 대체 경로를 생성할 수 있다. 이때, 미리 정해진 홉 수는 2홉이 될 수 있다.
프로세서(530)는 통신 모듈(510)을 통하여 오픈플로우 컨트롤러(540)로부터 하나 이상의 플로우 그룹에 대응하는 대체 경로를 수신하여 저장할 수 있다. 이때, 프로세서(530)는 해당 플로우 그룹에 대응하는 대체 경로를 그룹 테이블에 그룹 엔트리로 저장할 수 있다. 이때, 프로세서(530)는 그룹 유형을 "FAST-FAILOVER"로 설정하여 해당 대체 경로가 포함된 그룹 엔트리를 그룹 테이블에 저장할 수 있다.
이하에서는 도 7 및 도 8을 참조하여 오픈플로우 스위치(500)의 오류 복구 과정을 예를 들어 설명한다.
도 7을 참조하면 제 1 오픈플로우 스위치(710)의 VLAN ID는 1이며, 제 2 오픈플로우 스위치(720)의 VLAN ID는 3, 제 3 오픈플로우 스위치(730)의 VLAN ID는 5, 제 4 오픈플로우 스위치(740)의 VLAN ID는 9, 제 5 오픈플로우 스위치(750)의 VLAN ID는 7, 제 6 오픈플로우 스위치(760)의 VLAN ID는 12가 될 수 있다. 또한, 도 7을 참조하면, 오류는 제 2 오픈플로우 스위치(720)에 대응하는 코어 컴포넌트에 발생한 것이 될 수 있다. 즉, 오류는 제 2 오픈플로우 스위치(720) 또는 제 2 오픈플로우 스위치(720)에 대응하는 링크에 발생한 것이 될 수 있다.
제 1 오픈플로우 스위치(710)는 수신한 제 1 패킷을 제 2 오픈플로우 스위치(720)로 전달할 수 있다. 이때, 제 1 패킷은 목적지 호스트가 제 3 호스트(772)인 패킷일 될 수 있다.
제 1 오픈플로우 스위치(710)는 제 1 패킷을 제 3 호스트(772)로 전달하기 위하여 제 1 오픈플로우 스위치(710)의 메모리(520)에 저장된 플로우 테이블 및 그룹 테이블에 기초하여 제 1 패킷에 대응하는 플로우의 경로를 추출할 수 있다. 예를 들어, 경로는 플로우 테이블에 저장된 제 1 패킷에 대응하는 플로우 규칙에 포함된 그룹 식별자와 매칭되는 그룹 테이블의 그룹 엔트리에 기초하여 설정되는 것일 수 있다. 즉, 해당 경로는 해당 패킷을 제 2 오픈플로우 스위치(720)를 통하여 제 4 오픈플로우 스위치(740)로 전달하는 것일 수 있다.
그리고 제 1 오픈플로우 스위치(710)는 경로에 기초하여 제 2 오픈플로우 스위치(720)로 제 1 패킷을 전달할 수 있다. 이때, 제 2 오픈플로우 스위치(720)가 오류에 의하여 제 1 패킷을 수신할 수 없다면, 제 1 오픈플로우 스위치(710)는 제 2 오픈플로우 스위치(720)의 오류를 감지할 수 있다.
제 1 오픈플로우 스위치(710)는 제 2 오픈플로우 스위치(720)의 정보 및 제 1 패킷에 대응하는 플로우의 정보에 기초하여 대체 경로를 추출할 수 있다. 예를 들어, 제 1 오픈플로우 스위치(710)는 해당 플로우에 대응하는 플로우 규칙을 추출할 수 있다. 그리고 제 1 오픈플로우 스위치(710)는 해당 플로우의 플로우 규칙과 매칭하는 그룹 엔트리를 추출할 수 있다. 그리고 제 1 오픈플로우 스위치(710)는 그룹 엔트리에 포함된 액션 버킷에 기초하여 대체 경로를 추출할 수 있다.
이때, 대체 경로는 앞에서 설명한 바와 같이 오픈플로우 컨트롤러(540)가 생성하여 전달한 것일 수 있다. 이때, 대체 경로는 오류에 대응하는 오픈플로우 스위치(500)의 VLAN ID에 기초하여 추출된 것일 수 있다. 예를 들어, 대체 경로는 제 2 오픈플로우 스위치(720)의 VLAN ID에 기초하여 추출될 수 있다. 또한, 대체 경로는 앞에서 설명한 바와 같이 제 2 오픈플로우 스위치(720)와 미리 정해진 홉 수 이내의 오픈플로우 스위치(500)가 포함되는 것일 수 있다.
그리고 제 1 오픈플로우 스위치(710)는 대체 경로에 따라, 제 6 오픈플로우 스위치(760) 및 제 3 오픈플로우 스위치(730)를 통하여 제 1 호스트(770)로 제 1 패킷을 전달할 수 있다.
도 8은 본 발명의 일 실시예에 따른 에지 컴포넌트에 대한 오류 복구 과정을 설명하기 위한 예시도이다.
도 8을 참조하면 제 1 오픈플로우 스위치(710)는 수신한 제 2 패킷을 제 2 오픈플로우 스위치(720)로 전달할 수 있다. 이때, 제 2 패킷은 목적지 호스트가 제 3 호스트(772)인 패킷일 될 수 있다.
또한, 제 2 오픈플로우 스위치(720)는 제 4 오픈플로우 스위치(740)로 제 2 패킷을 전달할 수 있다. 이때, 제 4 오픈플로우 스위치(740)에 대응하는 에지 컴포넌트에 오류가 발생하면, 제 2 오픈플로우 스위치(720)는 제 4 오픈플로우 스위치(740)의 정보 및 제 2 패킷에 대응하는 플로우의 정보에 기초하여 대체 경로를 추출할 수 있다.
예를 들어, 대체 경로는 오류가 발생한 제 2 오픈플로우 스위치(720) 및 제 4 오픈플로우 스위치(740) 간의 링크에 기초하여 생성된 것일 수 있다. 대체 경로는 제 2 오픈플로우 스위치(720) 및 제 4 오픈플로우 스위치(740) 간의 링크의 VLAN ID인 10에 기초하여 추출될 수 있다. 즉, 대체 경로는 VLAN ID가 10인 컴포넌트에 대응하여 생성된 것일 수 있다.
대체 경로는 제 2 오픈플로우 스위치(720)가 제 2 패킷을 제 1 오픈플로우 스위치(710), 제 5 오픈플로우 스위치(750) 및 제 4 오픈플로우 스위치(740)를 통하여 제 3 호스트(772)에 전달하는 것일 수 있다. 그러므로 제 2 오픈플로우 스위치(720)는 제 1 오픈플로우 스위치(710)로 제 2 패킷을 전달할 수 있다.
다음은 도 9를 참조하여, 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러(540)를 설명한다.
도 9는 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러(540)의 블록도이다.
오픈플로우 컨트롤러(540)는 오픈플로우 스위치(500)와 연결될 수 있다. 오픈플로우 컨트롤러(540)는 오픈플로우 기반 네트워크(100)에 포함된 복수의 오픈플로우 스위치(500) 또는 링크에 대응하는 오류에 기초하여 대체 경로를 생성할 수 있다. 이때, 오픈플로우 컨트롤러(540)는 통신 모듈(600), 메모리(610) 및 프로세서(620)를 포함할 수 있다.
통신 모듈(600)은 오픈플로우 기반 네트워크(100)에 포함된 복수의 오픈플로우 스위치(500)와 데이터 통신을 수행할 수 있다.
메모리(610)는 대체 경로 생성 프로그램이 저장된다. 이때, 메모리(610)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치를 통칭하는 것이다.
프로세서(620)는 대체 경로 생성 프로그램에 기초하여 오픈플로우 스위치(500) 또는 두 오픈 플로우 스위치(500( 간의 링크 상에 오류가 발생하는 경우에 대비하여 대체 경로를 생성할 수 있다. 이때, 오류는 특정 플로우에 포함된 오픈플로우 스위치(500)에 대한 오류일 수 있다. 또는 오류는 특정 플로우에 포함된 오픈플로우 스위치(500)에 대응하는 링크에 대한 오류일 수 있다.
구체적으로 프로세서(620)는 연결된 오픈플로우 스위치(500) 복수의 플로우를 수집할 수 있다.
그리고 프로세서(620)는 복수의 플로우의 정보에 기초하여 각 플로우를 복수의 플로우 그룹으로 분류할 수 있다.
이때, 프로세서(620)는 각 플로우에 포함된 오픈플로우 스위치(500) 및 링크와 같은 컴포넌트에 대응하는 VLAN ID에 기초하여 복수의 플로우를 분류할 수 있다.
프로세서(620)는 각 플로우 그룹에 대응하는 대체 경로를 생성할 수 있다.
이때, 프로세서(620)는 오류에 대응하는 컴포넌트가 에지 컴포넌트인 경우, 오류에 대응하는 컴포넌트에 포함된 링크에 기초하여 대체 경로를 생성할 수 있다. 이때, 에지 컴포넌트는 오픈플로우 스위치(500) 중 호스트와 직접 연결된 오픈플로우 스위치(500) 또는 호스트와 직접 연결된 오픈플로우 스위치(500)에 대응하는 링크가 될 수 있다.
또한, 프로세서(620)는 오류에 대응하는 컴포넌트가 코어 컴포넌트인 경우, 해당 컴포넌트에 포함된 오픈플로우 스위치(500)에 기초하여 대체 경로를 생성할 수 있다. 이때, 코어 컴포넌트는 타 오픈플로우 스위치(500)와 연결된 오픈플로우 스위치(500) 또는 타 오픈플로우 스위치(500)와 연결된 오픈플로우 스위치(500)에 대응하는 링크가 될 수 있다.
그리고 프로세서(620)는 통신 모듈(600)을 통하여 대체 경로를 복수의 오픈플로우 스위치(500)로 전달할 수 있다.
다음은 도 10을 참조하여, 본 발명의 일 실시예에 따른 오픈플로우 스위치(500)에서의 오류 복구 방법을 설명한다.
도 10은 본 발명의 일 실시예에 따른 오픈플로우 스위치(500)에서의 오류 복구 방법의 순서도이다.
오픈플로우 스위치(500)는 플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류를 감지한다(S900). 이때, 컴포넌트는 오픈플로우 스위치(500) 또는 링크를 포함한다. 또한, 오류에 대응하는 컴포넌트는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치(500) 또는 플로우에 따라 패킷을 전달하는 오픈플로우 스위치(500)와의 링크이다.
또한, 오픈플로우 스위치(500)는 플로우의 정보 및 오류에 대응하는 컴포넌트의 정보에 기초하여 플로우에 대응하는 대체 경로를 설정한다(S910).
이때, 오류를 감지하기 이전에, 오픈플로우 스위치(500)는 하나 이상의 플로우 규칙을 포함하는 플로우 테이블 및 하나 이상의 그룹 엔트리를 포함하는 그룹 테이블을 저장할 수 있다.
그리고 오픈플로우 스위치(500)는 플로우 테이블에 저장된 플로우에 대응하는 플로우 규칙을 추출할 수 있다. 오픈플로우 스위치(500)는 추출된 플로우 규칙과 매칭되는 그룹 엔트리를 선택할 수 있다. 이후, 오픈플로우 스위치(500)는 선택된 그룹 엔트리에 기초하여 대체 경로를 설정할 수 있다.
다음은 도 11을 참조하여 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러(540)의 오류 복구 방법을 설명한다.
도 11은 본 발명의 일 실시예에 따른 오픈플로우 컨트롤러(540)의 오류 복구 방법에 대한 순서도이다.
오픈플로우 컨트롤러(540)는 복수의 플로우를 수집하고, 복수의 플로우의 정보에 기초하여 각 플로우를 플로우 그룹으로 분류한다(S1100).
그리고 오픈플로우 컨트롤러(540)는 플로우 그룹에 대응하는 대체 경로를 생성한다(S1110). 이때, 대체 경로는 플로우의 오류에 대응하는 것이다. 또한, 오류는 플로우에 포함된 오픈플로우 스위치(500)에 대한 오류이거나, 플로우에 포함된 오픈플로우 스위치(500)에 대응하는 링크에 대한 오류이다.
오픈플로우 컨트롤러(540)는 복수의 오픈플로우 스위치(500)로 생성된 대체 경로를 전달한다(S1120).
본 발명의 일 실시예에 따른 오류 복구를 위한 오픈플로우 스위치(500), 오픈플로우 컨트롤러(540) 및 오류 복구 방법은 각 오픈플로우 스위치(500)가 오픈플로우 기반 네트워크상의 복수의 플로우에 대응하는 대체 경로를 저장하지 않고, 목적지의 주소가 동일한 플로우 그룹에 대한 대체 경로를 저장할 수 있다. 그러므로 오류 복구를 위한 오픈플로우 스위치(500), 오픈플로우 컨트롤러(540) 및 오류 복구 방법은 각 오픈플로우 스위치(500)에 저장되는 대체 경로의 수를 줄일 수 있어 효율적이다.
또한, 오류 복구를 위한 오픈플로우 스위치(500), 오픈플로우 컨트롤러(540) 및 오류 복구 방법은 오픈플로우 컨트롤러(540)의 과부하를 줄일 수 있다. 그러므로 오류 복구를 위한 오픈플로우 스위치(500), 오픈플로우 컨트롤러(540) 및 오류 복구 방법은 오픈플로우 기반 네트워크 상에서 발생할 수 있는 오류에 빠르게 대처할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
500: 오픈플로우 스위치
510: 통신 모듈
520: 메모리
530: 프로세서
540: 오픈플로우 컨트롤러
600: 통신 모듈
610: 메모리
620: 프로세서

Claims (15)

  1. 오류를 복구하기 위한 오픈플로우 스위치에 있어서,
    통신 모듈,
    오류 복구 프로그램이 저장된 메모리 및
    상기 프로그램을 실행하는 프로세서를 포함하되,
    상기 프로세서는 상기 프로그램의 실행에 따라, 플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류가 감지되면, 상기 플로우의 정보 및 상기 오류에 대응하는 컴포넌트의 정보에 기초하여 상기 플로우에 대응하는 대체 경로를 설정하되,
    상기 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하며,
    상기 오류에 대응하는 컴포넌트는 상기 프로세서가 상기 플로우에 따라 패킷을 전달하는 오픈플로우 스위치 또는 상기 플로우에 따라 패킷을 전달하는 오픈플로우 스위치와의 링크이고,
    상기 프로세서는
    오픈플로우 컨트롤러로부터 상기 플로우에 대응하는 경로, 및 상기 플로우에 대응한 대체 경로를 수신하고,
    상기 대체 경로는
    상기 오픈플로우 컨트롤러가 목적지 호스트 주소가 동일한 적어도 하나의 플로우를 플로우 그룹으로 분류하고, 상기 플로우 그룹 각각에 대응하도록 생성한 것인, 오픈플로우 스위치.
  2. 제 1 항에 있어서,
    상기 메모리는 하나 이상의 플로우 규칙을 포함하는 플로우 테이블 및 하나 이상의 그룹 엔트리를 포함하는 그룹 테이블을 저장하되,
    상기 프로세서는 상기 플로우 테이블에 저장된 상기 플로우에 대응하는 플로우 규칙을 추출하고, 상기 추출된 플로우 규칙과 매칭되는 그룹 엔트리를 선택하고, 상기 선택된 그룹 엔트리에 기초하여 상기 플로우에 대응하는 대체 경로를 설정하고,
    상기 그룹 엔트리는
    상기 플로우 그룹 각각에 대응되는 것인, 오픈플로우 스위치.
  3. 제 2 항에 있어서,
    상기 플로우 규칙은 목적지 호스트의 주소, VLAN(virtual local area network)의 식별자 및 액션을 포함하고,
    상기 그룹 엔트리는 그룹 유형 및 액션 버킷을 포함하는, 오픈플로우 스위치.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 대체 경로는 상기 오류에 대응하는 컴포넌트가 에지 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 링크에 기초하여 생성된 것이며, 상기 오류에 대응하는 컴포넌트가 코어 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 오픈플로우 스위치에 기초하여 생성된 것이되,
    상기 코어 컴포넌트는 타 오픈플로우 스위치와 연결된 오픈플로우 스위치 또는 상기 타 오픈플로우 스위치와 연결된 오픈플로우 스위치에 대응하는 링크이고,
    상기 에지 컴포넌트는 호스트와 연결된 오픈플로우 스위치 또는 상기 호스트와 연결된 오픈플로우 스위치에 대응하는 링크인, 오픈플로우 스위치.
  7. 제 1 항에 있어서,
    상기 대체 경로는 상기 오류에 대응하는 컴포넌트와 미리 정해진 홉 수 이내에 위치한 컴포넌트가 포함되도록 생성되는 것인, 오픈플로우 스위치.
  8. 오픈플로우 컨트롤러에 있어서,
    복수의 오픈플로우 스위치와 데이터 통신을 수행하는 통신 모듈,
    대체 경로 생성 프로그램이 저장된 메모리 및
    상기 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하되,
    상기 프로세서는 상기 프로그램의 실행에 따라 복수의 플로우를 수집하고, 상기 복수의 플로우의 정보에 기초하여 각 플로우를 플로우 그룹으로 분류하고, 상기 플로우 그룹에 대응하는 대체 경로를 생성하고, 상기 복수의 오픈플로우 스위치로 상기 생성된 대체 경로를 전달하되,
    상기 대체 경로는 상기 플로우의 오류에 대응하는 것이고,
    상기 오류는 상기 플로우에 포함된 오픈플로우 스위치에 대한 오류이거나, 상기 플로우에 포함된 오픈플로우 스위치에 대응하는 링크에 대한 오류이고,
    상기 프로세서는 목적지 호스트 주소가 동일한 적어도 하나의 플로우를 플로우 그룹으로 분류하고, 상기 플로우 그룹 각각에 대응하도록 상기 대체 경로를 생성하는 것인, 오픈플로우 컨트롤러.
  9. 제 8 항에 있어서,
    상기 프로세서는 각 플로우에 포함된 컴포넌트에 대응하는 VLAN(virtual local address network) 식별자에 기초하여 상기 복수의 플로우를 분류하되,
    상기 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하는, 오픈플로우 컨트롤러.
  10. 제 8 항에 있어서,
    상기 프로세서는 상기 오류에 대응하는 컴포넌트가 에지 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 링크에 기초하여 상기 대체 경로를 생성하고,
    상기 오류에 대응하는 컴포넌트가 코어 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 오픈플로우 스위치에 기초하여 상기 대체 경로를 생성하되,
    상기 코어 컴포넌트는 타 오픈플로우 스위치와 연결된 오픈플로우 스위치 또는 상기 타 오픈플로우 스위치와 연결된 오픈플로우 스위치에 대응하는 링크이고,
    상기 에지 컴포넌트는 상기 복수의 오픈플로우 스위치 중 호스트와 연결된 오픈플로우 스위치 또는 상기 호스트와 연결된 오픈플로우 스위치에 대응하는 링크인, 오픈플로우 컨트롤러
  11. 오픈플로우 스위치에서의 오류 복구 방법에 있어서,
    플로우에 대응하는 경로에 포함된 컴포넌트 상에 오류를 감지하는 단계; 및
    상기 플로우의 정보 및 상기 오류에 대응하는 컴포넌트의 정보에 기초하여 상기 플로우에 대응하는 대체 경로를 설정하는 단계를 포함하되,
    상기 컴포넌트는 오픈플로우 스위치 또는 링크를 포함하며,
    상기 오류에 대응하는 컴포넌트는 상기 플로우에 따라 패킷을 전달하는 오픈플로우 스위치 또는 상기 플로우에 따라 패킷을 전달하는 오픈플로우 스위치와의 링크이고,
    상기 대체 경로는
    오픈플로우 컨트롤러가 목적지 호스트 주소가 동일한 적어도 하나의 플로우를 플로우 그룹으로 분류하고, 상기 플로우 그룹 각각에 대응하도록 생성한 것인, 오류 복구 방법.
  12. 제 11 항에 있어서,
    상기 오류를 감지하는 단계 이전에, 하나 이상의 플로우 규칙을 포함하는 플로우 테이블 및 하나 이상의 그룹 엔트리를 포함하는 그룹 테이블을 저장하는 단계를 더 포함하고,
    상기 대체 경로를 설정하는 단계는,
    상기 플로우 테이블에 저장된 상기 플로우에 대응하는 플로우 규칙을 추출하는 단계;
    상기 추출된 플로우 규칙과 매칭되는 그룹 엔트리를 선택하는 단계; 및
    상기 선택된 그룹 엔트리에 기초하여 상기 대체 경로를 설정하는 단계를 포함하는, 오류 복구 방법.
  13. 오픈플로우 컨트롤러에서의 오류 복구 방법에 있어서,
    복수의 플로우를 수집하고, 상기 복수의 플로우의 정보에 기초하여 각 플로우를 플로우 그룹으로 분류하는 단계;
    상기 플로우 그룹에 대응하는 대체 경로를 생성하는 단계; 및
    상기 복수의 오픈플로우 스위치로 상기 생성된 대체 경로를 전달하는 단계를 포함하되,
    상기 대체 경로는 상기 플로우의 오류에 대응하는 것이고,
    상기 오류는 상기 플로우에 포함된 오픈플로우 스위치에 대한 오류이거나, 상기 플로우에 포함된 오픈플로우 스위치에 대응하는 링크에 대한 오류이고,
    상기 플로우 그룹에 대응하는 대체 경로를 생성하는 단계는
    목적지 호스트 주소가 동일한 적어도 하나의 플로우를 상기 플로우 그룹으로 분류하고, 상기 플로우 그룹 각각에 대응하도록 상기 대체 경로를 생성하는 것인, 오류 복구 방법.
  14. 제 13 항에 있어서,
    상기 플로우 그룹에 대응하는 대체 경로를 생성하는 단계는,
    상기 오류에 대응하는 컴포넌트가 에지 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 링크에 기초하여 상기 대체 경로를 생성하는 단계; 및
    상기 오류에 대응하는 컴포넌트가 코어 컴포넌트인 경우, 상기 오류에 대응하는 컴포넌트에 포함된 오픈플로우 스위치에 기초하여 상기 대체 경로를 생성하는 단계를 포함하되,
    상기 코어 컴포넌트는 타 오픈플로우 스위치와 연결된 오픈플로우 스위치 또는 상기 타 오픈플로우 스위치와 연결된 오픈플로우 스위치에 대응하는 링크이고,
    상기 에지 컴포넌트는 상기 복수의 오픈플로우 스위치 중 호스트와 연결된 오픈플로우 스위치 또는 상기 호스트와 연결된 오픈플로우 스위치에 대응하는 링크인, 오류 복구 방법.
  15. 제 11 항 내지 제 14 항 중 어느 한 항에 기재된 방법을 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020160174531A 2016-12-20 2016-12-20 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법 KR101880222B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160174531A KR101880222B1 (ko) 2016-12-20 2016-12-20 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법
PCT/KR2017/003206 WO2018117336A1 (ko) 2016-12-20 2017-03-24 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160174531A KR101880222B1 (ko) 2016-12-20 2016-12-20 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법

Publications (2)

Publication Number Publication Date
KR20180071659A KR20180071659A (ko) 2018-06-28
KR101880222B1 true KR101880222B1 (ko) 2018-08-17

Family

ID=62626804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160174531A KR101880222B1 (ko) 2016-12-20 2016-12-20 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법

Country Status (2)

Country Link
KR (1) KR101880222B1 (ko)
WO (1) WO2018117336A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011144495A1 (en) * 2010-05-19 2011-11-24 Telefonaktiebolaget L M Ericsson (Publ) Methods and apparatus for use in an openflow network
KR20150051107A (ko) * 2013-11-01 2015-05-11 주식회사 케이티 신속한 경로 설정 및 장애 복구 방법
KR101668426B1 (ko) * 2014-12-12 2016-10-28 주식회사 케이티 Sdn 상에서 최적 경로 계산 시스템 및 방법
KR101615045B1 (ko) * 2014-12-19 2016-04-22 주식회사 디케이아이테크놀로지 지능형 보안 네트워킹 시스템 및 그 방법
KR101739100B1 (ko) * 2015-03-30 2017-05-24 쿨클라우드(주) 서비스 체이닝 가능한 오픈플로우 스위치 제어 방법 및 그 제어기

Also Published As

Publication number Publication date
WO2018117336A1 (ko) 2018-06-28
KR20180071659A (ko) 2018-06-28

Similar Documents

Publication Publication Date Title
US11245620B2 (en) Method for forwarding packet and network device
US10868757B2 (en) Efficient routing in software defined networks
EP2817928B1 (en) Controller placement for fast failover in the split architecture
JP6518697B2 (ja) コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法
RU2612599C1 (ru) Устройство управления, система связи, способ управления коммутаторами и программа
US10148554B2 (en) System and methods for load placement in data centers
US9544223B2 (en) Communication system, control apparatus, method for controlling same, and program
US20130003745A1 (en) Information system, control device, method of managing virtual network, and program
US9608900B2 (en) Techniques for flooding optimization for link state protocols in a network topology
EP3355533B1 (en) Path switching
US20170237654A1 (en) Fast failover recovery in software defined networks
EP3213441B1 (en) Redundancy for port extender chains
CN111385194B (zh) 一种网络路径收敛的方法以及相关设备
WO2018095095A1 (zh) 建立分离路径的方法和装置
CN105075196A (zh) 控制器、通信系统、路径切换方法和程序
US20200044960A1 (en) Network automatic link backup method and network system thereof
US20160112248A1 (en) Communication node, communication system, packet processing method, and program
CN106603401A (zh) 快速重路由方法和装置
KR101880222B1 (ko) 오류 복구를 위한 오픈플로우 스위치, 오픈플로우 컨트롤러 및 오류 복구 방법
US20190044848A1 (en) Virtual switching framework
US20170012869A1 (en) Forwarding table management in computer networks
KR20150080953A (ko) 팻-트리 네트워크 장애 복구 방법 및 장치
JP6233969B2 (ja) ネットワーク管理システム、管理装置、制御装置、管理方法、制御方法、およびプログラム
JP2014168157A (ja) 通信システム、制御装置、制御装置の制御方法及びプログラム
Waliker et al. Network change notification protocol (NCNP) for Multi-Layer Networks

Legal Events

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