KR101628219B1 - 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치 - Google Patents

소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치 Download PDF

Info

Publication number
KR101628219B1
KR101628219B1 KR1020150010322A KR20150010322A KR101628219B1 KR 101628219 B1 KR101628219 B1 KR 101628219B1 KR 1020150010322 A KR1020150010322 A KR 1020150010322A KR 20150010322 A KR20150010322 A KR 20150010322A KR 101628219 B1 KR101628219 B1 KR 101628219B1
Authority
KR
South Korea
Prior art keywords
switch
flow table
controller
volatile storage
storage device
Prior art date
Application number
KR1020150010322A
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 KR1020150010322A priority Critical patent/KR101628219B1/ko
Application granted granted Critical
Publication of KR101628219B1 publication Critical patent/KR101628219B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications

Abstract

본 발명은 소프트웨어 정의 네트워크를 제어하는 컨트롤러 서버가 네트워크를 복구하는 방법에 대한 것으로, 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하여 비휘발성 저장장치에 저장하는 단계; 및 저장이 완료된 후, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 한다. 본 발명에 따르면, 컨트롤러의 저장소 변경 사항 및 네트워크 업데이트를 동기화할 수 있는 효과가 있다.

Description

소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치 {METHOD AND APPARATUS FOR OPERATING CONTROLLER OF SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법 및 장치에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크의 컨트롤러를 운용하는 방법 및 장치에 대한 것이다.
소프트웨어 정의 네트워킹 (SDN, Software Defined Networking)의 등장은 최근 네트워크 구조를 바꾸고 있다. 소프트웨어 정의 네트워크 기술은 복잡한 컨트롤 플레인(control plane)의 기능을 데이터 플레인(data plane)과 분리하여, 컨트롤 플레인의 복잡한 기능을 소프트웨어로 처리하고, 데이터 플레인은 네트워크 패킷의 전달, 무시, 변경 등 컨트롤 플레인이 지시하는 단순한 기능만을 수행하도록 한다. 이런 변화로, 복잡한 하드웨어의 제약 없이 소프트웨어로 새로운 네트워크 기능을 개발할 수 있으며, 동시에 이전 네트워크 구조에서 불가능했던 다양한 시도를 할 수 있게 되었다.
예를 들어, 클라우드 네트워크와 같은 환경에서, 각 네트워크 스위치 혹은 라우터의 기능을 동적으로 설정하여 에너지 소비를 줄일 수 있으며, 엔터프라이즈 네트워크 환경에서는 각 스위치나 라우터에 원하는 접근 제어 방식을 구현할 수 있다. 이를 이용하여 기존의 네트워크에서 사용되는 장비의 수와 장비 관리 비용을 줄일 수 있다. 또 새롭게 개발한 기능을 자유롭게 시험할 수 있다.
컨트롤 플레인을 담당하는 컨트롤러 (즉, 제어장치)와 데이터 플레인을 담당하는 스위치 사이의 통신은 국제 표준인 오픈플로우(OpenFlow) 프로토콜을 통해서 이루어진다. 오픈플로우 프로토콜을 지원하는 스위치는 패킷이 전달되면, 제어 장치가 미리 정한 규칙에 따라서, 패킷을 다른 스위치로 전달하거나, 제어 장치로 전달하거나, 버리는 등의 단순한 동작을 수행한다.
소프트웨어 정의 네트워크에서 스위치가 제어 장치로 보내거나, 제어 장치의 어플리케이션이 서로 주고 받는 메시지를 제어 장치의 이벤트라고 부른다.
제어 장치에 전달되는 이벤트의 예를 들어보면 다음과 같다. 플로우 테이블에 처리규칙이 없는 새로운 플로우가 생기면, 패킷 유입 이벤트(packet in)가 발생하고, 네트워크 스위치가 꺼지면, 연결다운 이벤트(connection down)가 발생한다. 소프트웨어 정의 네트워크의 토폴로지가 바뀌면, 토폴로지 변경 이벤트(topology change)가 발생한다. 네트워크 스위치의 턴온이나 오류 해소로 인하여 다운된 네트워크 스위치가 켜지면, 연결 업 이벤트(connection up)가 발생한다. 제어 장치의 어플리케이션은 이와 같은 이벤트에 대한 적절한 동작을 수행하는 소프트웨어이다.
본 발명은 SDN 환경에서 컨트롤러를 운용하는 방법 및 장치를 제공하는 것을 목적으로 한다.
나아가 본 발명은 SDN의 컨트롤러를 구현하는 서버(즉, 컨트롤러 서버)에서 백업을 위한 비휘발성 저장 장치를 운용하고, 상기 비휘발성 저장 장치에 기록된 내용과 네트워크 업데이트를 동기화하여, 컨트롤러 서버에서 장애가 발생해도 네트워크와 재시동된 컨트롤러의 정합성을 유지할 수 있도록 하는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크를 제어하는 서버가 네트워크를 복구하는 방법은, 플로우 테이블 변경 사항을 비휘발성 저장장치에 저장하는 단계; 저장이 완료된 후, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 단계; 및 재시동되는 경우, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크를 제어하는 서버에서 네트워크를 복구하는 처리를 실행시키기 위해 매체에 저장된 컴퓨터 프로그램은, 플로우 테이블 변경 사항을 비휘발성 저장장치에 저장하는 기능; 저장이 완료된 후, 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 기능; 및 상기 서버가 재시동되는 경우, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항을 해당 스위치에게 전송하는 기능을 수행하는 것을 특징으로 한다.
한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크를 제어하는 서버에서 네트워크를 복구하는 장치는, 비휘발성 저장장치; 및 플로우 테이블 변경 사항을 상기 비휘발성 저장장치에 저장하고, 저장이 완료된 후 상기 플로우 테이블 변경 사항을 해당 스위치에게 전송하도록 제어하며, 상기 서버가 재시동되는 경우, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항을 해당 스위치에게 전송하도록 제어하는 제어부를 포함하는 것을 특징으로 한다.
본 발명에 따르면, SDN의 컨트롤러를 구현하는 서버의 비휘발성 저장장치의 기록과 네트워크 업데이트를 동기화할 수 있는 효과가 있다. 나아가 본 발명에 따르면 컨트롤러 서버를 재시동하는 경우라도 네트워크와 컨트롤러의 정합성을 유지할 수 있어, 소프트웨어 정의 네트워크를 안정적으로 제어할 수 있는 효과가 있다.
도 1은 소프트웨어 정의 네트워크의 컨트롤러의 동작을 설명하기 위한 도면
도 2은 본원발명의 실시예를 따라 컨트롤러를 운용하는 예시를 설명하기 위한 순서도
도 3는 본원발명의 실시예를 따르는 컨트롤러의 구성을 설명하기 위한 도면
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다.
도 1에 도시된 바와 같이, 소프트웨어 정의 네트워크는 SDN 제어 장치 100, 오픈플로우 스위치 200, 단말 300를 포함할 수 있다. 오픈플로우 스위치 200 및 단말 300를 포함하여 노드(Node)라고 지칭할 수 있으며 링크는 2개의 노드 사이의 연결을 의미할 수 있다.
제어 장치 100은 스위치 200에 명령을 하고, 스위치 200는 그 명령에 따라 패킷을 목적지로 전송하거나 수정, 폐기하는 등의 처리를 할 수 있다. 단말 300는 소프트웨어 정의 네트워크를 통해 다른 단말에 보내기 위한 패킷을 생성하여 네트워크 인터페이스의 포트를 통해 스위치 200로 패킷을 전송할 수 있다.
오픈플로우 스위치 200는 단말 300 또는 다른 스위치 200로부터 패킷을 수신하면, 플로우 테이블에 기초하여 패킷을 스위칭할 수 있다. 이때, 플로우 테이블에 해당 패킷 스위칭을 위한 플로우 엔트리가 없다면, 네트워크 스위치 200는 제어 장치 100에 플로우룰 요청 메시지를 전송할 수 있다. 본 명세서에서 오픈플로우 스위치 200는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해되어야 한다.
도 1에 도시된 제어 장치(100)는 어플리케이션과 함께 SDN의 컨트롤러를 구현하고, 컨트롤러는 메모리에 저장소(repository)를 운영할 수 있다. 저장소는 컨트롤러 어플리케이션의 상태와 어플리케이션의 운영에 필요한 정보, 컨트롤러가 스위치에 전송한 명령, 스위치의 상태 등을 포함하는 다양한 정보를 저장할 수 있다. 저장소는 컨트롤러 소프트웨어 내부에 포함되어 있을 수 있으며, 분산 데이터베이스나 파일 시스템과 같은 다른 소프트웨어 제품을 이용하여 구현할 수도 있다.
도 1의 예에서, 제어장치 100에서 구현되는 컨트롤러는 스위치 200에 플로우룰 변경사항이 발생하면, 변경 사항을 스위치에 전송하고 난 후 저장소에 기록하거나, 또는 플로우룰 변경 사항을 저장소에 기록하고 난 후 스위치에 전송하는 방식으로 동작할 수 있다.
한편, 제어 장치 100에 전원공급이 중단되거나 하드웨어 또는 소프트웨어 에러 등의 장애가 발생하여 재시동되는 경우를 고려할 수 있다. 컨트롤러의 장애로 인한 네트워크의 복구가 문제되는 경우이다. 그러나 종래에는 재시동된 컨트롤러의 저장소의 기록 내용과 네트워크의 정합성을 담보할 수 없는 문제가 있었다.
예를 들어, 컨트롤러가 스위치에게 변경사항을 전송하고 난 후 저장소에 변경 사항을 기록하는 경우, 스위치에게 변경 사항을 전송한 직후 컨트롤러 서버에서 장애가 발생하면, 스위치는 업데이트 되었으나, 저장소에는 업데이트 내용이 기록되어 있지 않은 문제가 발생한다. 즉, 재시동된 컨트롤러의 저장소 내용과 스위치의 업데이트가 불일치하게 된다.
반면 컨트롤러가 저장소에 변경 사항을 기록하고 난 후, 스위치에게 변경 사항을 전송하는 경우, 저장소에 변경 사항이 기록된 직후, 컨트롤러 서버에서 장애가 발생하면, 스위치는 업데이트 되어 있지 않으나, 컨트롤러의 저장소에는 업데이트 내용이 기록된 문제가 발생한다. 즉, 두 경우 모두 재시동된 컨트롤러의 저장소의 내용과 스위치의 업데이트가 불일치하게 되는 결과가 발생될 수 있다.
이와 같이 종래 방식을 따르면 장애 발생시 네트워크와 컨트롤러의 정합성을 담보할 수 없는 문제가 발생한다. 오픈플로우 프로토콜은 스위치의 업데이트와 컨트롤러 저장소의 내용을 완전히 동기화하는 것을 지원하지 않는다. 따라서 이와 같은 현상이 빈번하게 발생할 수 있으며, 컨트롤러 서버 (즉, 제어장치 100)의 재시동시 어플리케이션의 정합성이 맞지 않거나 버그가 발생하기 쉽다.
그러나 SDN에서는 운용의 안정성을 보장하기 위해 컨트롤러에 장애가 발생하여 재시동하는 경우라도, 장애 발생 당시의 컨트롤러의 작업이 복구될 필요가 있다. 즉, 컨트롤러가 임의의 스위치에게 플로우룰 변경 사항을 적용하는 과정에서 장애가 발생하더라도, 재시동된 컨트롤러가 종래의 작업을 승계하여 장애를 복구할 수 있어야 SDN의 안정적인 운용이 가능하다.
이와 같이, 컨트롤러가 장애로 재시동되더라도, 장애 직전의 작업을 복구할 수 있어야 소프트웨어 정의 네트워크의 안정적인 운영을 보장할 수 있으나, 현재는 컨트롤러의 복구 기술의 매우 부족하여 안정적인 SDN 운영에 걸림돌이 되고 있다.
종래의 대부분의 상용 제품에서는 장애가 발생하면 스위치에 있는 모든 플로우룰과 컨트롤러의 저장소를 삭제하고 초기화하는 방식으로 장애를 복구한다. 장애 직전의 저장소와 현재 스위치의 상태를 완전히 파악하고 동기화할 수 없기 때문에, 컨트롤러 서버에 장애가 발생하면 스위치와 컨트롤러의 저장소를 완전히 초기화하는 것이다.
그러나 위와 같이 초기화를 통한 장애 복구 방식은 필연적으로 네트워크를 정상 상태로 회복시키는데 많은 시간과 리소스가 소요될 수 밖에 없다. 컨트롤러의 어플리케이션을 개발하는 경우에도, 컨트롤러 서버의 장애로 네트워크가 초기화되는 경우를 고려해야 하기 때문에 매우 비효율적인 방식이라고 할 수 있다. 나아가 장애 발생 전 어플리케이션이 설정한 보안 정책을 반영한 플로우룰이 없는 상태에서 컨트롤러가 재시동되어 네트워크가 일시적으로 보안 위험에 노출되는 문제도 발생할 수 있다.
따라서 본 발명에서는 SDN에서 스위치의 업데이트 내용과 컨트롤러의 저장소 내용을 동기화할 수 있는 방법을 제안하고자 한다. 이를 통해 컨트롤러 서버에 장애가 발생해 재시동하는 경우라도, 스위치와 컨트롤러 사이의 정합성을 담보할 수 있도록 하여 SDN을 안정적으로 운영할 수 있도록 하기 위해서이다.
보다 구체적으로, 본 발명에 따르면 컨트롤러는 임의의 스위치에 대한 플로우룰 변경 사항이 발생하면, 변경 내용을 멱등성을 가지는 동등한 내용으로 변환하여 비휘발성 저장장치에 기록하고 난 후, 스위치를 업데이트하도록 구현된다.
나아가 본 발명에 따르면 컨트롤러 서버 (즉, 제어 장치)에 장애가 발생하여 컨트롤러가 재시동되면, 비휘발성 저장장치에 기록된 변경 사항을 바탕으로 컨트롤러의 저장소 내용을 복구하고, 스위치의 업데이트를 진행할 수 있다.
본 발명에 따르는 컨트롤러의 운용 방법은 첨부된 도 2에 대한 설명과 함께 아래에서 구체적으로 설명된다.
도 2는 본원발명의 실시예를 따라 컨트롤러를 운용하는 예시를 설명하기 위한 순서도이다.
한편 도 2에는 컨트롤러의 제어를 받는 하나의 스위치를 도시하고 있으나, 이는 설명의 편의를 위한 것이며 본 발명은 이에 제한되지 않는다. 즉, 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크는 컨트롤러가 복수의 스위치를 제어할 수 있으며, 도 2에 도시된 스위치는 컨트롤러의 제어를 받는 임의의 스위치를 의미한다.
도 2의 단계 210에서 컨트롤러가 제어하는 스위치에 변경사항이 발생한 경우, 단계 212에서 컨트롤러는 플로우룰 변경 사항을 스위치에서 복수회 적용되어도 결과가 달라지지 않도록 멱등성을 가지도록 변환하여 비휘발성 저장장치에 기록할 수 있다.
플로우룰 변경 사항을 멱등성을 가지도록 변환하여 비휘발성 저장장치에 기록하는 이유는, 컨트롤러 서버에 장애가 발생하여 재시동되는 경우 재시동 전의 컨트롤러가 플로우룰 변경사항을 스위치에 적용했는지 여부와 무관하게 재시동 후의 컨트롤러도 비휘발성 저장장치로부터 복구한 플로우룰 변경사항을 스위치에게 적용하도록 하기 위해서이다.
오픈플로우 프로토콜에 따르면 플로우룰 변경 (flow mod) 명령은 아래의 표 1과 같은 형태로 구분될 수 있다.
Command 설명
OFPFC_ADD 0 새로운 플로우룰을 추가
OFPFC_MODIFY 1 매칭되는 플로우룰 모두 수정
OFPFC_MODIFY_STRICT 2 매치와 우선순위 (priority)가 일치하는 것만 수정
OFPFC_DELETE 3 매칭된 플로우룰을 모두 삭제
OFPFC_DELETE_STRICT 4 매치와 우선순위가 일치하는 것만 삭제
표 1에서 OFPFC_MODIFY 명령 및 OFPFC_MODIFY_STRICT 명령을 제외하고는 플로우룰 변경 (flow mod) 명령은 모두 멱등성을 가진다. 플로우 테이블에 이미 존재하는 플로우룰을 다시 추가하거나, 존재하지 않는 플로우룰을 삭제하는 경우, 플로우 테이블에는 아무런 변화가 일어나지 않기 때문이다.
따라서 본 발명에 따르면 컨트롤러는 모든 룰의 OFPFC_MODIFY 또는 OFPFC_MODIFY_STRICT 를 멱등성을 가지도록 OFPFC_ADD, OFPFC_DELETE를 이용한 변경으로 변환하여 비휘발성 저장장치에 기록할 수 있다.
보다 구체적으로, 특정 플로우룰을 다른 플로우룰로 수정하는 과정은, 해당 플로우룰을 삭제한 후 다른 플로우룰을 추가하는 과정과 효과가 동일하다. 앞서 설명한 바와 같이 플로우룰 삭제 및 추가 명령은 멱등성을 가지기 때문에, 플로우룰 삭제와 추가로 변경 사항을 나타내면 상기 변경 사항은 멱등성이 보장된다.
비휘발성 저장장치의 기록이 완료되면, 단계 214에서 컨트롤러는 스위치에게 변경사항을 적용하면서 저장소에 변경사항을 반영할 수 있다. 본원발명에 따르면 비휘발성 저장장치에 변경 내용의 기록이 완료된 후 컨트롤러가 스위치의 변경 내용을 반영하게 되는데, 반대의 순서로 하게 되면 재시동시 변경 사항이 유실되었는지 여부를 보장할 수 없다.
한편, 단계 220 내지 단계 224는 재시동시 복구 대상인 변경 사항의 양을 줄일 수 있도록 체크포인트 시점을 생성하는 과정이다. 본원발명에 따르면 컨트롤러는 체크포인트 시점 이전에 기록된 변경 사항들은 이미 네트워크에 반영된 것으로 전제하고 비휘발성 저장장치에서 기록을 해제하여 복구 대상을 최적화할 수 있다.
보다 구체적으로 단계 220에서 컨트롤러는 스위치에게 배리어 요청 메시지 (Barrier, OFPT_BARRIER_REQUEST message)를 전송하고, 단계 222에서 스위치는 배리어 응답 메시지 (OFPT_BARRIER_REPLY message) 를 컨트롤러에게 전송할 수 있다.
프로토콜의 특성상 배리어 요청이 전송되어 응답을 받으면, 배리어 이전의 명령들은 스위치에 반영이 완료된 상태이기 때문에, 본 발명은 배리어의 전송시점을 체크포인트 시점으로 설정한다.
따라서 단계 224에서 컨트롤러는 배리어 요청 메시지 전송 이전에 저장된 기록 1을 비휘발성 저장장치에서 삭제할 수 있다. 한편, 본 발명의 다른 실시예를 따르면, 단계 224에서 컨트롤러는 배리어 요청 메시지 전송 이전에 저장된 기록 1이 유지될 필요가 없음을 비휘발성 저장장치에 기록하거나, 또는 상기 기록 1의 저장이 유지할 필요가 없음을 인식할 수 있다.
본원발명에 따르면 이와 같은 체크 포인트는 미리 설정된 주기로 또는 가장 최근의 체크포인트 이후로 발생한 변경사항의 양이 미리 설정된 범위를 초과하는 등 임의의 조건을 만족하는 경우 반영될 수 있다.
단계 230 내지 234는 다른 변경사항 2가 발생한 경우, 단계 210 내지 214와 동일한 과정이 반복되는 구간이다.
보다 구체적으로, 단계 230에서 컨트롤러가 제어하는 스위치에 제 2 변경사항이 발생한 경우, 단계 232에서 컨트롤러는 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하여 비휘발성 저장장치에 기록할 수 있다. 이후 단계 234에서 컨트롤러는 스위치에게 변경사항 2를 적용하면서 저장소에 반영할 수 있다.
한편, 단계 240에서 컨트롤러가 제어하는 스위치에 제 3 변경사항이 발생한 경우, 단계 242에서 컨트롤러는 마찬가지로 멱등성을 가지도록 제 3 변경사항을 변환하여 비휘발성 저장장치에 기록할 수 있다.
이때 단계 250에서 컨트롤러 서버에 장애가 발생한 경우를 고려할 수 있다. 변경사항 3이 아직 스위치에게 적용되지 않은 상황에서 컨트롤러 서버에 장애가 생기면 컨트롤러의 저장소 내용과 스위치의 업데이트 현황에 차이가 발생할 수 있다.
그러나 본원발명에 따르면 멱등성을 가지는 변경사항에 대한 기록이 비휘발성 저장장치에 존재하기 때문에, 컨트롤러는 재시동된 경우라도 변경사항을 복구하고 스위치에게 적용하여 장애를 쉽게 복구할 수 있다.
본원발명에 따르면 장애가 발생하여 컨트롤러 서버가 재시동 되면, 재시동된 컨트롤러는 비휘발성 저장장치의 기록을 바탕으로 저장소 내용을 업데이트하고, 변경 사항을 스위치에 적용할 수 있다. 예를 들어, 단계 250에서 컨트롤러에 장애가 발생하여 단계 250에서 재시동된 경우라도, 체크포인트 시점 이후인 기록 2, 3을 재시동된 컨트롤러가 스위치에게 반영하고 저장소를 업데이트하는 방식으로 장애를 복구할 수 있다.
보다 구체적으로 단계 270 에서 재시동 후 컨트롤러는 비휘발성 저장장치를 참고하여 변경사항 2에 대해 저장소를 업데이트하고, 스위치에게 적용할 수 있다. 변경사항 2는 이미 재시동 전의 컨트롤러에 의해 스위치에게 적용된 상태이지만, 비휘발성 저장장치에 저장된 기록 2는 멱등성을 가지기 때문에 한번 더 적용해도 올바른 결과가 보장된다.
이후 단계 280에서 컨트롤러는 비휘발성 저장장치의 기록에 따라 변경사항 3에 대해 저장소를 업데이트하고 스위치에게 적용할 수 있다. 이는 컨트롤러가 스위치에게 적용하기 전에 장애로 인하여 완료되지 못한 사항이므로, 재시동후의 컨트롤러가 수행하면 네트워크와 컨트롤러의 정합성이 유지된다.
한편 단계 260은 본원발명의 실시예에 따라 복구 불가능한 스위치를 판별하는 단계이다.
컨트롤러는 재시동 과정에서 스위치의 상태를 확인할 수 있다. 컨트롤러는 재시동 직후, 스위치와 연결되면서 오픈플로우 프로토콜에 따라 스위치의 상태 정보 요청 메시지 (StatsRequest message)를 전송하고, 스위치로부터 상태 정보 응답 메시지 (StatsReply message)를 수신하는 과정을 거친다. 이러한 과정을 이용하여 컨트롤러는 스위치에 존재하는 플로우룰의 수를 확인할 수 있다.
만약 플로우룰의 개수가 미리 정해진 범위 이하이면, 컨트롤러는 해당 스위치를 복구 불가능한 것으로 판단할 수 있다. 예를 들어 컨트롤러 재부팅 중에 스위치가 꺼졌다 켜진 경우에서는, 비휘발성 저장장치의 기록에도 불구하고 해당 스위치는 복구가 불가능하기 때문이다.
한편, 본원발명에 따르면 플로우룰의 개수 이외에도, 스위치의 여러가지 상태 정보를 바탕으로 컨트롤러는 스위치의 복구 불가능 여부를 판단할 수 있다.
도 2의 예에서 컨트롤러는 단계 260에서 스위치의 복구 불가능여부를 판단하고, 복구 가능한 스위치에 대해서는 단계 270 내지 280을 거쳐 복구를 완료하며, 복구 불가능한 스위치에 대해서는 장애가 발생한 것으로 판단하여 어플리케이션에 메시지를 전송할 수 있다.
한편 본 발명의 실시예를 따르면, 복구 불능으로 판단된 스위치가 미리 설정된 수보다 많은 경우, 컨트롤러는 복구 과정을 진행하는 대신에 네트워크 전체의 스위치에 있는 플로우 테이블을 초기화할 수도 있다.
예를 들어 컨트롤러와 네트워크 전체에 전원이 차단되어 작동이 중지되었다가 재시동되는 경우라면, 각각의 스위치에 대해 복구과정을 진행하는 것보다 전체 스위치를 초기화하는 것이 더 합리적이기 때문이다.
한편, 본원발명의 다른 실시예를 따르면, 컨트롤러는 미리 설정된 조건을 만족하는 변경 사항만 비휘발성 저장장치에 기록할 수도 있다. 모든 변경 내용을 멱등성을 가지도록 변경하여 비휘발성 저장장치에 기록하는 것이 전체 네트워크 운영에 부담이 될 수 있기 때문이다.
예를 들어, 네트워크 운영자는 장애 발생시 복구할 플로우룰의 우선 순위 등을 고려하여 복구 대상 플로우룰의 조건을 설정하고, 조건을 만족하는 변경사항만 비휘발성 저장장치에 기록하도록 설정할 수 있다.
상기 실시예를 따르면 컨트롤러 서버에서 장애가 발생하면, 미리 설정된 조건의 플로우룰은 반드시 복구되는 것이 보장되지만, 그 이외의 플로우룰의 복구는 보장하지 않는 것으로 컨트롤러의 기능을 제공할 수 있다.
도3는 본원발명의 실시예를 따르는 제어 장치 (100)의 구성을 설명하기 위한 도면이다.
본원발명의 실시예를 따르면 제어장치 100는 통신부 350, 비휘발성 저장장치 310, 제어부 320 및 저장부 330를 포함하여 구성될 수 있다.
통신부 350은 스위치 200와 통신 채널을 연결하고 상기 채널을 통해 신호를 송수신하는 역할을 수행할 수 있다. 상기 통신 채널은 오픈플로우 표준에 따른 통신 채널 또는 오픈플로우 이외의 다른 형식의 통신 채널일 수 있다.
저장부 330는 제어 장치 100의 동작에 필요한 프로그램 및 데이터를 저장하는 역할을 수행하며, 프로그램 영역과 데이터 영역으로 구분될 수 있다.
프로그램 영역은 SDN을 제어하는 프로그램 (즉, 컨트롤러) 및 컨트롤러 환경에서 운영되는 각종 어플리케이션을 저장할 수 있다.
데이터 영역은 제어 장치 100의 사용에 따라 발생하는 데이터가 저장되는 영역으로, 컨트롤러의 저장소 (repository)의 역할을 수행할 수 있다. 저장소는 컨트롤러 및 어플리케이션의 상태와 어플리케이션의 운영에 필요한 정보, 컨트롤러가 스위치에 전송한 명령, 스위치의 상태 등을 포함하는 다양한 정보를 저장할 수 있다. 이와 같은 저장소는 컨트롤러 소프트웨어 내부에 포함되어 있을 수 있으며, 분산 데이터베이스나 파일 시스템과 같은 다른 소프트웨어 제품을 이용하여 구현될 수도 있다.
도 3에서 비휘발성 저장장치 310은 제어 장치 100 내부에 포함되는 것으로 도시되어 있지만 본 발명은 이에 한정되지 않는다. 즉, 비휘발성 저장장치는 제어 장치와 네트워크로 연결된 별도의 서버에서 구현될 수도 있다. 이 경우 통신부 350를 통해 제어장치 100는 비휘발성 저장장치를 운영하는 서버와 정보를 송수신할 수 있다.
제어부 220는 제어 장치 100의 전반적인 동작을 제어할 수 있다. 즉, 어플리케이션 실행하고 통신부 350를 통해 스위치 200와 정보를 송수신하여 전체 SDN을 관리할 수 있다.
특히 본 발명의 실시예에서 제어부 320는 플로우룰 변경 사항을 멱등성 (idempotence)을 가지도록 변환하여 비휘발성 저장장치 310에 저장하고, 저장이 완료된 후에 플로우룰 변경 사항을 스위치에게 적용하고, 제어 장치 100가 재시동되는 경우, 비휘발성 저장장치에 저장된 플로우룰 변경 사항을 해당 스위치에게 적용하여 장애를 복구하는 일련의 과정을 제어할 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에게 자명한 것이다.
100 : SDN 제어 장치
200 : 오픈플로우 스위치
300 : 단말

Claims (8)

  1. 소프트웨어 정의 네트워크를 제어하는 서버가 네트워크를 복구하는 방법에 있어서,
    플로우 테이블 변경 사항을 해당 스위치에 전송하기 전에 비휘발성 저장장치에 저장하고,
    저장이 완료되면, 상기 플로우 테이블 변경 사항을 해당 스위치에 전송하고 저장소에 반영하는 A 단계; 및
    재시동되는 경우, 상기 비휘발성 저장장치를 참고하여 상기 저장소를 변경하고, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항 중, 상기 스위치에 반영된 것으로 미리 확인되지 않은 변경 사항을 해당 스위치에 전송하는 B 단계를 포함하는 것을 특징으로 하는 복구 방법.
  2. 제 1 항에 있어서, 상기 A 단계 이후에,
    미리 설정된 주기가 되거나, 또는 상기 스위치에 반영된 것으로 확인되지 않은 변경 사항의 개수가 미리 설정된 범위를 초과하는 경우, 배리어 요청 메시지 (OFPT_BARRIER_REQUEST message)를 스위치에 전송하는 단계; 및
    상기 스위치로부터 배리어 응답 메시지 (OFPT_BARRIER_REPLY message)를 수신하면, 상기 배리어 요청 메시지의 전송 시점 이전에 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항은 상기 스위치에 반영된 것으로 확인하는 단계를 포함하는 것을 특징으로 하는 복구 방법.
  3. 제 1항에 있어서, 상기 A단계는, 상기 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하여 상기 비휘발성 저장장치에 저장하고, 저장이 완료되면 변환된 플로우 테이블 변경 사항을 해당 스위치에 전송하고 저장소에 반영하는 단계인 것을 특징으로 하는 복구 방법.
  4. 제 3항에 있어서, 상기 A 단계는,
    상기 플로우 테이블 변경 사항 중 플로우 룰 수정 명령을 플로우 룰 삭제 명령 및 플로우 룰 추가 명령 중 적어도 하나 이상을 이용하여 멱등성을 가지도록 변환하는 단계를 포함하는 것을 특징으로 하는 복구 방법.
  5. 소프트웨어 정의 네트워크를 제어하는 서버에서 네트워크를 복구하는 처리를 실행시키기 위해 컴퓨터가 읽을 수 있는 매체에 저장된 컴퓨터 프로그램에 있어서,
    플로우 테이블 변경 사항을 해당 스위치에게 전송하기 전에 비휘발성 저장장치에 저장하는 기능;
    저장이 완료되면, 상기 플로우 테이블 변경 사항을 해당 스위치에 전송하고 저장소에 반영하는 기능; 및
    상기 서버가 재시동되는 경우, 상기 비휘발성 저장장치를 참고하여 상기저장소를 변경하고, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항 증, 상기 스위치에 반영된 것으로 미리 확인되지 않은 변경 사항을 해당 스위치에 전송하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 프로그램.
  6. 제 5항에 있어서, 상기 컴퓨터 프로그램은,
    상기 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하여 상기 비휘발성 저장장치에 저장하는 기능;
    미리 설정된 주기로 배리어 요청 메시지 (OFPT_BARRIER_REQUEST message)를 스위치에 전송하는 기능; 및
    상기 스위치로부터 배리어 응답 메시지 (OFPT_BARRIER_REPLY message)를 수신하면, 상기 배리어 요청 메시지의 전송 시점 이전에 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항을 해제하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 프로그램.
  7. 소프트웨어 정의 네트워크를 제어하는 서버에서 네트워크를 복구하는 장치에 있어서,
    비휘발성 저장장치; 및
    플로우 테이블 변경 사항을 해당 스위치에게 전송하기 전에 상기 비휘발성 저장장치에 저장하고, 저장이 완료되면, 상기 플로우 테이블 변경 사항을 해당 스위치에 전송하고 저장소에 반영하도록 제어하며, 상기 서버가 재시동되는 경우, 상기 비휘발성 저장장치를 참고하여 상기 저장소를 변경하고, 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항 중 상기 스위치에 반영된 것으로 미리 확인되지 않은 변경 사항을 해당 스위치에 전송하도록 제어하는 제어부를 포함하는 것을 특징으로 하는 복구 장치.
  8. 제 7항에 있어서, 제어부는,
    상기 플로우 테이블 변경 사항을 멱등성을 가지도록 변환하여 상기 비휘발성 저장장치에 저장하고, 미리 설정된 주기로 배리어 요청 메시지 (OFPT_BARRIER_REQUEST message)를 스위치에 전송하도록 제어하고, 상기 스위치로부터 배리어 응답 메시지 (OFPT_BARRIER_REPLY message)를 수신하면, 상기 배리어 요청 메시지의 전송 시점 이전에 상기 비휘발성 저장장치에 저장된 플로우 테이블 변경 사항을 해제하는 것을 특징으로 하는 복구 장치.
KR1020150010322A 2015-01-22 2015-01-22 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치 KR101628219B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150010322A KR101628219B1 (ko) 2015-01-22 2015-01-22 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150010322A KR101628219B1 (ko) 2015-01-22 2015-01-22 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101628219B1 true KR101628219B1 (ko) 2016-06-21

Family

ID=56353915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150010322A KR101628219B1 (ko) 2015-01-22 2015-01-22 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101628219B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101757257B1 (ko) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Sdn 기반의 장애회복을 위한 동적제어장치 및 그 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140010235A1 (en) * 2011-03-18 2014-01-09 Nec Corporation Network system and switching method thereof
KR20140086353A (ko) * 2012-12-28 2014-07-08 인제대학교 산학협력단 라우터에서 라우팅 테이블을 관리하는 방법 및 그 라우터

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140010235A1 (en) * 2011-03-18 2014-01-09 Nec Corporation Network system and switching method thereof
KR20140086353A (ko) * 2012-12-28 2014-07-08 인제대학교 산학협력단 라우터에서 라우팅 테이블을 관리하는 방법 및 그 라우터

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Omid Alipourfard. Innite CacheFlow : A Caching Solution for Switches in Software Dened Networks. ARIZONA STATE UNIVERSITY, 2014년* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101757257B1 (ko) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Sdn 기반의 장애회복을 위한 동적제어장치 및 그 방법

Similar Documents

Publication Publication Date Title
US10282262B2 (en) Non-disruptive controller replacement in a cross-cluster redundancy configuration
US11194679B2 (en) Method and apparatus for redundancy in active-active cluster system
US8285824B2 (en) Storage system and data replication method that refuses one or more requests for changing the first logical configuration information until the first storage apparatus and second storage apparatus are synchronized
US8122280B2 (en) Method and system for providing high availability to computer applications
US9021459B1 (en) High availability in-service software upgrade using virtual machine instances in dual control units of a network device
US9992058B2 (en) Redundant storage solution
EP3407187B1 (en) Optical line terminal, and method for upgrading master device and slave device
CN106657167B (zh) 管理服务器、服务器集群、以及管理方法
WO2023273085A1 (zh) 一种服务器及其控制方法
WO2021057438A1 (zh) 主备切换方法、装置、bras设备及存储介质
KR101650691B1 (ko) 소프트웨어 정의 네트워크에서 분산 컨트롤러를 운용하는 방법 및 장치
CN103036934A (zh) 基于镜像的广域网集群部署系统和方法
US8990619B1 (en) Method and systems to perform a rolling stack upgrade
CN113448688A (zh) 云迁移场景自动修正网络配置的方法、系统及计算机介质
KR101628219B1 (ko) 소프트웨어 정의 네트워크에서 컨트롤러를 운용하는 방법 및 장치
JP2007207250A (ja) ソフトウェア複製
WO2011158367A1 (ja) 実行中のプログラムの更新技術
JP6311265B2 (ja) 通信中継装置、通信中継システム、中継定義情報の更新方法及び更新プログラム
JP6635138B2 (ja) 通信ノード、通信システム、更新方法及び更新プログラム
CN117459482B (zh) 交换机的重启方法和装置、存储介质及电子装置
JP2015153128A (ja) 呼処理制御装置及びそのソフトウェア更新方法、呼処理システム、並びにコンピュータ・プログラム
US10764140B2 (en) Communication system, communication device, and communication method
JP6554801B2 (ja) 冗長通信装置及びその制御方法
CN110609764A (zh) 用于数据备份的方法、设备和计算机程序产品
US20230185567A1 (en) In-service software upgrade with active service monitoring

Legal Events

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