KR20210151001A - 분산 소프트웨어 정의 네트워크에서 비잔틴 장애 극복 방법 - Google Patents
분산 소프트웨어 정의 네트워크에서 비잔틴 장애 극복 방법 Download PDFInfo
- Publication number
- KR20210151001A KR20210151001A KR1020210072376A KR20210072376A KR20210151001A KR 20210151001 A KR20210151001 A KR 20210151001A KR 1020210072376 A KR1020210072376 A KR 1020210072376A KR 20210072376 A KR20210072376 A KR 20210072376A KR 20210151001 A KR20210151001 A KR 20210151001A
- Authority
- KR
- South Korea
- Prior art keywords
- byzantine
- controllers
- consensus
- message
- request message
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/55—Prevention, detection or correction of errors
- H04L49/557—Error correction, e.g. fault recovery or fault tolerance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법이 개시된다. 상기 장애 극복 방법은 프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계, 상기 프로그래머블 스위치가 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계, 상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계, 및 상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계를 포함한다.
Description
본 발명은 통신 시스템에 관한 것이며, 보다 상세하게는 분산 소프트웨어 정의 네트워킹 환경에서 비잔틴 장애를 극복하기 위한 방법 및 시스템에 관한 것이다.
소프트웨어 정의 네트워크(Software-Defined Network, SDN)는 네트워크의 제어 평면(control plane)과 데이터 평면(data plane)을 분리하고 논리적으로 중앙 집중된 제어 평면을 통해 전체 네트워크를 관리하는 기술이다. 한편, 기존 소프트웨어 정의 네트워크에서는 확장성과 가용성을 보장하기 위해 다수의 컨트롤러들이 분산된 구조를 사용한다. 분산된 컨트롤러들은 중앙 집중화된 컨트롤러와 같이 동작하기 위해 합의를 통해 각 컨트롤러의 상태를 복제하여 모든 요청에 대해 동일한 결정을 내릴 수 있다.
한편, 현재 소프트웨어 정의 네트워크의 합의는 리더(leader) 기반의 합의 알고리즘인 RAFT 또는 PAXOS를 주로 사용한다. 이러한 합의 알고리즘은 노드 장애가 발생하는 상황을 고려하여 시스템이 해당 장애를 일부 허용해도 정상적으로 동작할 수 있도록 한다. 하지만, 비잔틴 장애(Byzantine fault, 예컨대 소프트웨어 버스(software bugs)나 악의적인 공격(malicious attacks) 등)는 허용하지 않기 때문에 노드 장애를 제외한 장애가 발생하면 시스템이 동작하지 않거나 네트워크 공격에 의해 임의로 변경된 서비스 결과를 받을 수 있는 문제를 야기한다. 일 예로, 리더로 선출된 컨트롤러에 비잔틴 장애가 발생한 경우, 리더로 선출된 컨트롤러는 부정확한 상태(incorrect states)를 다른 컨트롤러들에게 복사하게 되고, 이는 메시지에 대한 악의적인 변경(malicious modification of the message)과 같은 의도하지 않은 동작을 야기한다. 또한, 기존 비잔틴 장애 극복(Byzantine Fault Tolerance, BFT)을 위한 알고리즘들은 컨트롤러간 다수의 메시지를 주고 받아야 하기 때문에 합의에 도달하는 시간이 노드 장애 극복 알고리즘보다 길고 링크 사용량도 증가하게 된다. 이는 지연 시간에 민감한 서비스에 치명적일 뿐만 아니라 네트워크 관리 측면에서도 많은 부담이 되기 때문에 소프트웨어 정의 네트워크에 적용하기 어렵다. 따라서, 합의에 빠르게 도달하여 서비스 요청에 대한 응답 지연을 줄이고, 합의 과정에 필요한 다수의 멀티캐스트 메시지를 줄여 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법이 요구된다.
본 발명이 이루고자 하는 기술적인 과제는 프로그래밍 가능한 네트워크 장치를 이용하여 소프트웨어 정의 네트워크 환경에서 합의 도달 시간과 네트워크 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법 및 장치를 제공하는 것이다.
본 발명의 일 실시예에 따른 비잔틴 장애 극복 방법은 분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법으로, 프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계, 상기 프로그래머블 스위치가 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계, 상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계, 및 상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계를 포함한다.
본 발명의 일 실시예에 비잔틴 장애 극복 방법에 의할 경우, 프로그래밍 가능한 네트워크 장치, 예컨대 프로그래머블 스위치를 이용하여 소프트웨어 정의 네트워크 환경에서 합의 도달 시간과 네트워크 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법을 제공할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 극복 시스템을 도시한다.
도 2는 도 1에 도시된 시스템에서의 합의 과정을 설명하기 위한 흐름도이다.
도 3은 도 1에 도시된 컨트롤러에서 수행되는 메시지 오더링을 설명하기 위한 도면이다.
도 4는 도 1에 도시된 스위치의 기능 블럭도이다.
도 5와 도 6은 본 발명의 일 실시예에 따른 비잔틴 노드 허용 기법과 기존의 기법에 대한 시뮬레이션 결과를 도시한다.
도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 극복 시스템을 도시한다.
도 2는 도 1에 도시된 시스템에서의 합의 과정을 설명하기 위한 흐름도이다.
도 3은 도 1에 도시된 컨트롤러에서 수행되는 메시지 오더링을 설명하기 위한 도면이다.
도 4는 도 1에 도시된 스위치의 기능 블럭도이다.
도 5와 도 6은 본 발명의 일 실시예에 따른 비잔틴 노드 허용 기법과 기존의 기법에 대한 시뮬레이션 결과를 도시한다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시예들을 상세히 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 극복 시스템을 도시한다.
도 1을 참조하면, 비잔틴 장애 극복 시스템은 분산 SDN(distributed SDN) 시스템을 의미할 수 있다. 또한, 비잔틴 장애 극복 시스템은 복수의 컨트롤러들(SDN 컨트롤러들, 컨트롤러 서버들, SDN 컨트롤러 서버들 등으로 명명될 수도 있음)과 복수의 스위치들(예컨대, 프로그래머블 스위치들(programmable switches))을 포함할 수 있다.
본 발명에서는, 비잔틴 장애 허용(Byzantine Fault Tolerant, BFT)을 위한 기능을 프로그래머블 네트워크 장치에 임베딩함으로써, 시스템 내에서 비잔틴 장애를 허용할 수 있다. 프로그래머블 네트워크 장치는 프로그래머블 스위치를 의미할 수 있다. 이를 통해, 합의 과정에서의 컨트롤러 간 다수의 멀티캐스트 과정을 최소화하여 해당 과정에서 소모되는 시간을 감소시키고, 제어 채널의 링크 사용량을 감소시킬 수 있다. 또한, 고성능의 프로그래머블 네트워크 장치를 사용함으로써 합의 과정에 필요한 연산을 기존 컨트롤러에서 소프트웨어 기반으로 처리하는 것보다 빠르게 처리할 수 있다.
시스템 모델을 도시한 도 1을 다시 참조하면, 데이터 평면(data plane)은 비잔틴 장애 허용 기능을 임베딩한 스위치(BFT switch)와 범용 네트워크 디바이스들을 포함할 수 있다. BFT 스위치는 컨트롤러에서 수행되던 BFT 기능을 수행하고, BFT 합의 과정을 위한 기능들을 수행할 수 있다. 비잔틴 장애 허용 지원을 위한 BFT 스위치의 기능은 다음과 같다.
1) 시간 동기화 ; BFT 스위치는 컨트롤러가 메시지 오더링(ordering)을 수행할 수 있도록 각기 다른 위치에서 수신된 요청들의 정확한 시간을 파악하여야 한다. 이를 위해, 스위치 간 시각 동기화 기법을 통해 내부 클럭을 주기적으로 동기화할 수 있다. 예시적인 스위치 간 시각 동기화 기법으로, P. Kannan et al.의 시각 동기화 기법(P. Kannan et al., "Precise Time-synchronization in the Data-Plane using Programmable Switching ASICs", in Proc. ACM SOSR 2019, San Jose, CA, USA, April 2019)이 이용될 수 있다. 즉, 도 1에 도시된 BFT 스위치들은 소정의 시각 동기화 기법을 적용하여 주기적으로 또는 비주기적으로 내부 클럭을 동기화함으로써 동기화된 시간 정보를 가질 수 있다.
2) 컨트롤러로의 메시지 멀티캐스트 ; BFT 스위치는 시스템을 구성하는 복수의 컨트롤러들과 동시에 통신하기 위해 메시지를 멀티캐스팅할 수 있다. BFT 스위치가 클라이언트(클라이언트의 장치로써, 단말을 의미할 수 있음)로부터 수신한 요청 메시지와 합의 결과 메시지가 복수의 컨트롤러들로 멀티캐스팅될 수 있다.
3) BFT 헤더(header) 생성 ; BFT 스위치는 합의 과정에 사용되는 정보를 전달하기 위한 BFT 헤더를 생성할 수 있다. 구체적으로, BFT 스위치는 클라이언트로부터 수신한 요청 메시지에 소정의 정보를 포함하는 헤더(BFT 헤더)를 생성 및 결합하여 복수의 컨트롤러들로 멀티캐스팅할 수 있다.
4) 각 컨트롤러의 요청 처리 결과에 대한 합의 ; BFT 스위치는 복수의 컨트롤러들 각각으로부터 수신한 요청에 대한 응답(응답 제안)에 기초하여 요청 처리 결과에 대한 합의를 수행할 수 있다.
5) 비잔틴 노드 탐지 : BFT 스위치는 복수의 컨트롤러들 각각으로부터 수신한 요청에 기초하여, 복수의 컨트롤러들 중에서 비잔틴 노드를 탐지할 수 있다.
한편, 제어 평면(control plane)은 복수의 컨트롤러들로 구성되어 있다. 컨트롤러는 리더 기반의 합의 알고리즘을 사용하는 기존의 시스템과는 다르게, 리더(leader)와 팔로워(follower) 또는 리더와 억셉터(acceptor)와 같은 역할을 담당하지 않고, 모든 컨트롤러는 동일한 역할(예컨대, 수신한 요청 메시지(request message)를 독립적으로 처리하고 서비스의 상태를 유지)을 수행할 수 있다. 또한, 시스템 내의 모든 구성 요소는 메시지의 무결성을 보장하기 위해 서명 및 메시지 인증 과정을 수행할 수 있다.
도 2는 도 1에 도시된 시스템에서의 합의 과정을 설명하기 위한 흐름도이다.
도 1과 도 2를 참조하면, BFT 스위치와 컨트롤러는 복수의 메시지들을 주고 받으며 비잔틴 장애 허용을 위한 합의 과정을 수행할 수 있다. 이때, 주고 받는 메시지의 종류는 다음과 같다.
1) 요청(Request) 메시지 ; 클라이언트가 요구하는 서비스에 대한 정보로써, 네트워크 상태 변경, 상태 정보 요청 등의 메시지를 의미할 수 있다.
2) 제안(Propose) 메시지 ; 클라이언트의 서비스 요청에 대한 컨트롤러의 처리 결과를 의미한다.
3) 커미트(Commit) 메시지 ; BFT 스위치에서 도출한 합의에 따라 컨트롤러의 상태 업데이트를 위한 정보를 포함하는 메시지를 의미할 수 있다.
4) 응답(Reply) 메시지 ; 클라이언트의 요청에 대한 응답 메시지를 의미할 수 있다.
다시 도 2를 참조하면, 클라이언트(클라이언트 단말)가 소정의 서비스를 요청하는 요청 메시지를 로컬 컨트롤러로 송신할 수 있다. 다만, 요청 메시지는 로컬 컨트롤러에 도달하기 전에 BFT 스위치에 의해 수신될 수 있다.
클라이언트에 의해 송신된 요청 메시지는 BFT 스위치에 의해 수신되고, BFT 스위치는 요청 메시지에 헤더(예컨대, BFT 헤더)를 삽입한 후 복수의 컨트롤러들에게 멀티캐스팅할 수 있다. 헤더는 비잔틴 장애 허용 합의를 위한 것으로써, 소정의 정보들을 포함할 수 있다. 예컨대, 헤더는 타임 스탬프(timestamp), 메시지 인증 코드(Message Authentication Code, MAC), 비잔틴 노드 정보, 및 메시지 타입 정보 중 적어도 하나를 포함할 수 있다. 타임 스탬프는 요청 메시지가 BFT 스위치에 도착한 시간으로써, 복수의 컨트롤러들 각각이 메시지 오더링을 수행할 수 있도록 하기 위함이다. 메시지 인증 코드는 메시지의 위조 및/또는 변조를 방지하기 위한 것으로, 요청 메시지에 대한 메시지 인증 코드를 의미하거나 헤더가 삽입된 요청 메시지에 대한 메시지 인증 코드를 의미할 수 있다. 비잔틴 노드 정보는 복수의 컨트롤러들 중 비잔틴 노드에 해당하는 컨트롤러를 식별할 수 있는 정보를 의미할 수 있다. 다만, 비잔틴 노드로 탐지된 노드가 없는 경우, 비잔틴 노드 정보는 헤더에 포함되어 있지 않거나, 탐지된 노드가 없음을 의미하는 정보가 기재될 수 있다. 메시지 타입 정보는 헤더가 삽입된 메시지의 타입(유형)을 의미하는 것으로써, 요청 메시지, 제안 메시지, 응답 메시지, 및 커미트 메시지 중 어느 하나를 의미할 수 있다.
다음으로, 각 컨트롤러에서는 메시지 오더링을 수행하고, 메시지 오더링의 결과에 따라, 각 메시지를 순차적으로 처리한다. 각 컨트롤러에서 메시지 오더링을 수행하지 않고 메시지를 처리하는 경우, 컨트롤러 간 서로 다른 응답을 하는 문제가 발생하여 합의에 도달하지 못하는 상황이 발생할 수 있다.
메시지 오더링을 설명하기 위한 도 3을 참조하면, 제1 스위치(BFT switch 1)과 제2 스위치(BFT switch 2)는 서로 다른 클라이언트로부터 각각 t1과 t2에 제1 요청 메시지(Request 1)와 제2 요청 메시지(Request 2)를 수신한다. 제1 컨트롤러(Controller 1)는 t3과 t6에 제1 요청 메시지(Request 1)와 제2 요청 메시지(Request 2)를 각각 받고, 요청이 발생한 순서에 맞게 처리하여 스위치에 응답할 수 있다. 반면에, 제2 컨트롤러(Controller 2)는 t4에 제2 요청 메시지(Request 2)를 수신하고 t5에 제1 요청 메시지(Request 1)를 수신하게 되어, 제1 컨트롤러(Controller 1)와는 다른 순서로 요청을 처리하게 된다. 이 경우, BFT 스위치는 제1 컨트롤러(Controller 1)와 제2 컨트롤러(Controller 2)로부터 서로 다른 결과 값을 받게 되어 합의에 도달하지 못할 수 있다. 이와 같은 이유로, BFT 스위치는 요청 메시지에 요청 메시지가 BFT 스위치에 도달한 시간인 타임 스탬프를 포함하는 헤더를 삽입시킬 수 있다.
또한, 복수의 컨트롤러들 각각은 BFT 스위치로부터 전송된 메시지들을 일정 기간 수집한 후에 처리할 수 있다.
예컨대, 컨트롤러는 t=a1부터 t=a2(a2는 a1 이후의 임의의 시점)까지 수신된 메시지를 오더링한 후 오더링 순서에 따라 처리할 수 있다. 이때, 컨트롤러가 오더링하는 시점을 a3라 할 때, a3는 a2와 같을 수 있다. 다만, a3가 a2와 같을 때, a2 이후에 수신된 메시지에 포함된 타임 스탬프가 a2 이전에 수신된 메시지에 포함된 타임 스탬프보다 빠를 수 있다. 이를 위해, a3는 a2보다는 미리 정해진 시간 간격이후의 시점일 수 있다. 즉, a3 시점에서 컨트롤러는 a1 시점부터 a2 시점까지 수신된 메시지를 오더링한 후 오더링 순서에 따라 메시지를 처리할 수 있다.
도 4는 도 1에 도시된 스위치의 기능 블럭도이다.
도 4를 참조하면, 스위치(100)는 수신부(110), 멀티캐스팅부(120), 합의부(130), 송신부(150), 및 저장부(150) 중 적어도 하나 이상을 포함할 수 있다. 또한, 스위치(100)는 프로그래머블 스위치를 의미할 수 있으며, 스위칭 장치나 스위칭 요소 등으로 명명될 수도 있다.
수신부(110)는 적어도 하나의 클라이언트(클라이언트 단말)로부터 적어도 하나의 메시지를 수신할 수 있다. 적어도 하나의 메시지는 요청(Request) 메시지일 수 있다. 또한, 수신부(110)에 의해 수신된 메시지는 저장부(150)에 저장될 수 있다.
멀티캐스팅부(120)는 수신부(110)에 의해 수신된 메시지 또는 수신부(110)에 의해 수신된 후 저장부(150)에 저장된 메시지에 헤더를 삽입한 후 헤더가 삽입된 메시지를 복수의 컨트롤러들에게 멀티캐스팅할 수 있다. 또한, 멀티캐스팅부(120)는 합의부(130)에 의해 탐지된 비잔틴 노드에 대한 정보(비잔틴 노드 정보)를 헤더에 삽입할 수도 있다. 비잔틴 노드 정보는 비잔틴 노드로 결정된(또는 탐지된) 컨트롤러를 식별할 수 있는 정보를 포함할 수 있다.
합의부(130)는 헤더가 삽입된 메시지에 대한 복수의 컨트롤러들 각각의 응답 제안(제안(Propose) 메시지)을 수신하고, 클라이언트의 요청에 대한 합의를 도출한다. 일 예로, 합의부(130)는 복수의 컨트롤러들 중 일정 개수 이상의 컨트롤러들 또는 일정 비율 이상의 컨트롤러들의 응답 제안이 동일할 경우, 합의 도출되었다고 판단할 수 있다. 이를 위해, 합의부(130)는 각 컨트롤러들로부터 수신된 응답 제안을 해싱하고 동일한 해싱값을 갖는 응답을 카운트할 수 있다. 이때, 카운트 값이 정해진 기준에 도달하는 경우, 합의가 도출되었다고 볼 수 있다. 따라서, 합의부(130)는 복수의 컨트롤러들 모두의 응답을 수신하기 전에 합의를 도출할 수 있다.
또한, 합의부(130)는 비잔틴 노드를 탐지하기 위해 복수의 컨트롤러들 모두에게서 응답 제안을 수신한다. 즉, 합의부(130)는 응답 제안들을 해싱하고 해싱 결과를 비교함으로써, 합의 결과와 다른 응답을 제안한 컨트롤러에 대한 비잔틴 의심도를 증가시킨다. 예컨대, 합의부(130)는, 컨트롤러가 합의와 상이한 결과(응답 또는 응답 제안)를 도출한 횟수가 미리 정해진 임계치를 넘어서거나 임계치에 도달한 경우, 해당 컨트롤러를 비잔틴 노드로 탐지(또는 결정)할 수 있다.
합의가 도출된 경우, 송신부(140)은 합의된 응답을 클라이언트로 송신한다. 또한, 송신부(140)는 합의 결과를 복수의 컨트롤러들에게 멀티캐스팅할 수 있다.
또한, 비잔틴 노드가 탐지된 경우, 송신부(140)는 해당 컨트롤러에 대한 정보(예컨대, 해당 컨트롤러를 식별할 수 있는 정보)를 포함하는 메시지를 시스템 내의 모든 디바이스(특히, 분산 SDN에 포함된 복수의 프로그래머블 스위치들)에게 송신할 수 있다. 이를 통해, 해당 노드(즉, 해당 컨트롤러)는 합의 과정에서 배제될 수 있다.
저장부(150)에는 스위치(100)의 기본적인 동작 및/또는 본 발명의 일 실시예에 따른 동작에 필요한 소프트웨어, 수신부(110)에 의해 수신된 메시지, 멀티캐스팅부(120)에 의해 생성된 헤더, 헤더가 삽입된 메시지, 합의부(130)에 의한 합의 결과, 합의 도출 과정에서 생성되는 데이터, 각 컨트롤러에 대한 비잔틴 의심도 등이 저장될 수 있다.
도 5와 도 6은 본 발명의 일 실시예에 따른 비잔틴 노드 허용 기법과 기존의 기법에 대한 시뮬레이션 결과를 도시한다. 도 5는 컨트롤러 수의 변화에 따른 통신 오버헤드를 나타내고, 도 6은 응답 시간의 누적 분포를 나타낸다.
성능 평가를 위해, 본 발명의 일 실시예에 따른 비잔틴 장애 허용 기법(SC-BFT)을 1) 리더 기반의 메커니즘(leader-based mechanism)을 따르고 스위치에게 부분적으로 합의 기능을 오프로딩하는 P4xos(H. T. Dang et al., "P4xos: Consensus as a Network Service," Technical Report. Research Report 2018-01, USI., January 2019.) 및 2) 프로그래머블 스위치의 어떠한 지원도 없는, 대표적인 컨트롤러 기반의 BFT 합의 메커니즘인 PBFT(M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," in Proc. USENIX Symposium on Operating Systems Design and Implementation, February 1999.)와 비교하였다. PBFT는 대표적인 BFT 허용 방법이고, P4xos는 비잔틴 노드를 고려하지 않고 물리적 장애만 허용하는 방법이다.
성능 평가를 위해, 1) 요청(Request) 메시지에 대하여 합의 과정 동안에 유발된 통신 오버헤드(communication overhead)와 2) 클라이언트가 응답을 받을 때까지의 경과 시간(elapsed time)으로 정의된 응답 시간(response time)을 정량화하였다.
도 5는 합의에 참여하는 노드(컨트롤러)의 수를 변화시키면서 합의 과정에서 시스템에 발생하는 합의 메시지의 수(즉, 통신 오버헤드)의 변화를 살펴본 그래프이다. 도 5에 도시되어 있듯이, 본 발명의 통신 오버헤드는 비잔틴 장애를 허용하지 않는 시스템과 유사하고 기존 비잔틴 장애 허용 방법보다 더 낮은 것을 확인할 수 있다. 이는 프로그래머블 스위치를 활용하여 합의 과정에 요구되는 스위치-컨트롤러와 컨트롤러-컨트롤러 간 메시지를 최소화하였기 때문이다.
도 6은 본 발명과 비교 기법에서 클라이언트가 요청 메시지를 보내고 응답 메시지를 받을 때까지의 시간(즉, 응답 시간)을 나타낸 그래프이다. 도 6에서 알 수 있듯이, 본 발명이 가장 낮은 응답 시간을 제공하는 것을 확인할 수 있다. 인ㄴ 비잔틴 장애 허용 기능을 임베딩한 스위치와 이를 활용한 시스템을 통해 기존의 컨트롤러에서 수행되는 합의 절차를 간소화하였기 때문이다.
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 집합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(Digital Signal Processor), 마이크로컴퓨터, FPA(Field Programmable array), PLU(Programmable Logic Unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(Operation System, OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술 분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(Processing Element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(Parallel Processor)와 같은, 다른 처리 구성(Processing Configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(Computer Program), 코드(Code), 명령(Instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(Collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(Component), 물리적 장치, 가상 장치(Virtual Equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(Signal Wave)에 영구적으로, 또는 일시적으로 구체화(Embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-optical Media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성 요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 스위치
110 : 수신부
120 : 멀티캐스팅부
130 : 합의부
140 : 송신부
150 : 저장부
110 : 수신부
120 : 멀티캐스팅부
130 : 합의부
140 : 송신부
150 : 저장부
Claims (8)
- 분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법에 있어서,
프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계;
상기 프로그래머블 스위치가 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계;
상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계; 및
상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계를 포함하는 비잔틴 장애 극복 방법. - 제1항에 있어서,
상기 헤더는 상기 프로그래머블 스위치가 상기 요청 메시지를 수신한 시간 정보를 포함하는,
비잔틴 장애 극복 방법. - 제1항에 있어서,
상기 합의를 도출하는 단계는,
동일한 응답 제안의 개수가 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는,
비잔틴 장애 극복 방법. - 제3항에 있어서,
상기 합의를 도출하는 단계는,
상기 복수의 컨트롤러들로부터 수신한 응답 제안을 해싱하는 단계;
동일한 해싱 결과 값을 갖는 응답 제안을 카운트하는 단계; 및
카운트 값이 상기 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는 단계를 포함하는,
비잔틴 장애 극복 방법. - 제4항에 있어서,
상기 카운트 값이 상기 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는 단계는,
상기 카운트 값이 상기 복수의 컨트롤러들의 개수의 절반을 초과하는 경우에 상기 합의를 도출하는,
비잔틴 장애 극복 방법. - 제1항에 있어서,
상기 복수의 컨트롤러들 중 비잔틴 노드를 탐지하는 단계를 더 포함하고,
상기 비잔틴 노드를 탐지하는 단계는, 도출된 합의 결과와 상이한 응답 제안을 송신한 컨트롤러의 비잔틴 의심도를 증가시키는 단계; 및
미리 정해진 횟수에 도달한 비잔틴 의심도를 갖는 컨트롤러를 비잔틴 노드로 결정하는 단계를 포함하는,
비잔틴 장애 극복 방법. - 제6항에 있어서,
상기 프로그래머블 스위치가 비잔틴 노드에 대한 정보를 포함하는 메시지를 상기 분산 SDN에 포함된 복수의 프로그래머블 스위치들로 송신하는 단계를 더 포함하는,
비잔틴 장애 극복 방법. - 제2항에 있서,
상기 헤더가 삽입된 요청 메시지를 수신한 복수의 컨트롤러들 각각은 상기 헤더에 포함된 상기 시간 정보를 기초로 메시지들을 오더링하고, 오더링 결과에 따라 상기 메시지들을 처리하는,
비잔틴 장애 극복 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200067849 | 2020-06-04 | ||
KR20200067849 | 2020-06-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210151001A true KR20210151001A (ko) | 2021-12-13 |
KR102507198B1 KR102507198B1 (ko) | 2023-03-09 |
Family
ID=78832125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210072376A KR102507198B1 (ko) | 2020-06-04 | 2021-06-03 | 분산 소프트웨어 정의 네트워크에서 비잔틴 장애 극복 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102507198B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015138987A (ja) * | 2014-01-20 | 2015-07-30 | 日本電気株式会社 | 通信システムおよび通信システムにおけるサービス復旧方法 |
WO2018115934A1 (en) * | 2016-12-21 | 2018-06-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet timestamping in software defined networking networks |
-
2021
- 2021-06-03 KR KR1020210072376A patent/KR102507198B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015138987A (ja) * | 2014-01-20 | 2015-07-30 | 日本電気株式会社 | 通信システムおよび通信システムにおけるサービス復旧方法 |
WO2018115934A1 (en) * | 2016-12-21 | 2018-06-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet timestamping in software defined networking networks |
Also Published As
Publication number | Publication date |
---|---|
KR102507198B1 (ko) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Panda et al. | {SCL}: Simplifying Distributed {SDN} Control Planes | |
US10833919B2 (en) | Node device operation method, work status switching apparatus, node device, and medium | |
AU2019203861B2 (en) | System and method for ending view change protocol | |
Ports et al. | Designing distributed systems using approximate synchrony in data center networks | |
AU2019203862B2 (en) | System and method for ending view change protocol | |
CN114048517B (zh) | 区块链的双通道共识系统和方法、计算机可读存储介质 | |
US10025344B2 (en) | Self-stabilizing distributed symmetric-fault tolerant synchronization protocol | |
WO2018192534A1 (zh) | 节点设备运行方法、工作状态切换装置、节点设备及介质 | |
CN110574019B (zh) | 数据中心之间鲁棒的数据复制 | |
Ho et al. | Nysiad: Practical Protocol Transformation to Tolerate Byzantine Failures. | |
Zheng et al. | LazyCtrl: A scalable hybrid network control plane design for cloud data centers | |
Ayari et al. | Fault tolerance for highly available internet services: concepts, approaches, and issues | |
Correia et al. | Worm-IT–a wormhole-based intrusion-tolerant group communication system | |
WO2014060465A1 (en) | Control system and method for supervisory control and data acquisition | |
Chai et al. | Byzantine fault tolerant event stream processing for autonomic computing | |
de Sá et al. | Adaptive request batching for byzantine replication | |
KR102507198B1 (ko) | 분산 소프트웨어 정의 네트워크에서 비잔틴 장애 극복 방법 | |
Lembke et al. | Secure and reliable network updates | |
Kang et al. | SpotLess: Concurrent Rotational Consensus Made Practical through Rapid View Synchronization | |
Tennage et al. | Baxos: Backing off for robust and efficient consensus | |
KR102652737B1 (ko) | 블록체인 네트워크를 위한 효율적인 듀얼모드 합의 프로토콜 | |
Meling et al. | When you don't trust clients: Byzantine proposer fast paxos | |
CN116762318A (zh) | 架构可用性和同步 | |
Ruchel et al. | Scalable atomic broadcast: A leaderless hierarchical algorithm | |
Lembke et al. | Consistent and secure network updates made practical |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |