KR102507198B1 - Method for byzantine fault tolerant in distributed software defined networks - Google Patents

Method for byzantine fault tolerant in distributed software defined networks Download PDF

Info

Publication number
KR102507198B1
KR102507198B1 KR1020210072376A KR20210072376A KR102507198B1 KR 102507198 B1 KR102507198 B1 KR 102507198B1 KR 1020210072376 A KR1020210072376 A KR 1020210072376A KR 20210072376 A KR20210072376 A KR 20210072376A KR 102507198 B1 KR102507198 B1 KR 102507198B1
Authority
KR
South Korea
Prior art keywords
byzantine
agreement
controllers
request message
controller
Prior art date
Application number
KR1020210072376A
Other languages
Korean (ko)
Other versions
KR20210151001A (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 고려대학교 산학협력단
Publication of KR20210151001A publication Critical patent/KR20210151001A/en
Application granted granted Critical
Publication of KR102507198B1 publication Critical patent/KR102507198B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation

Abstract

분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법이 개시된다. 상기 장애 극복 방법은 프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계, 상기 프로그래머블 스위치가 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계, 상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계, 및 상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계를 포함한다.A method for overcoming a byzantine failover in a distributed software defined networks (SDN) environment is disclosed. The failover method includes receiving, by a programmable switch, a request message from a client, generating, by the programmable switch, a request message to which a header is inserted, and transmitting the request message to which the header is inserted to a plurality of controllers. , the programmable switch receiving a response proposal from at least some of the plurality of controllers, and the programmable switch drawing an agreement on the request message.

Description

분산 소프트웨어 정의 네트워크에서 비잔틴 장애 극복 방법{METHOD FOR BYZANTINE FAULT TOLERANT IN DISTRIBUTED SOFTWARE DEFINED NETWORKS}METHOD FOR BYZANTINE FAULT TOLERANT IN DISTRIBUTED SOFTWARE DEFINED NETWORKS

본 발명은 통신 시스템에 관한 것이며, 보다 상세하게는 분산 소프트웨어 정의 네트워킹 환경에서 비잔틴 장애를 극복하기 위한 방법 및 시스템에 관한 것이다.The present invention relates to communication systems and, more particularly, to methods and systems for overcoming Byzantine Faults in distributed software defined networking environments.

소프트웨어 정의 네트워크(Software-Defined Network, SDN)는 네트워크의 제어 평면(control plane)과 데이터 평면(data plane)을 분리하고 논리적으로 중앙 집중된 제어 평면을 통해 전체 네트워크를 관리하는 기술이다. 한편, 기존 소프트웨어 정의 네트워크에서는 확장성과 가용성을 보장하기 위해 다수의 컨트롤러들이 분산된 구조를 사용한다. 분산된 컨트롤러들은 중앙 집중화된 컨트롤러와 같이 동작하기 위해 합의를 통해 각 컨트롤러의 상태를 복제하여 모든 요청에 대해 동일한 결정을 내릴 수 있다.Software-Defined Network (SDN) is a technology that separates the control plane and data plane of the network and manages the entire network through a logically centralized control plane. On the other hand, existing software-defined networks use a structure in which multiple controllers are distributed to ensure scalability and availability. Distributed controllers can replicate the state of each controller through consensus to act like a centralized controller, making the same decision for every request.

한편, 현재 소프트웨어 정의 네트워크의 합의는 리더(leader) 기반의 합의 알고리즘인 RAFT 또는 PAXOS를 주로 사용한다. 이러한 합의 알고리즘은 노드 장애가 발생하는 상황을 고려하여 시스템이 해당 장애를 일부 허용해도 정상적으로 동작할 수 있도록 한다. 하지만, 비잔틴 장애(Byzantine fault, 예컨대 소프트웨어 버스(software bugs)나 악의적인 공격(malicious attacks) 등)는 허용하지 않기 때문에 노드 장애를 제외한 장애가 발생하면 시스템이 동작하지 않거나 네트워크 공격에 의해 임의로 변경된 서비스 결과를 받을 수 있는 문제를 야기한다. 일 예로, 리더로 선출된 컨트롤러에 비잔틴 장애가 발생한 경우, 리더로 선출된 컨트롤러는 부정확한 상태(incorrect states)를 다른 컨트롤러들에게 복사하게 되고, 이는 메시지에 대한 악의적인 변경(malicious modification of the message)과 같은 의도하지 않은 동작을 야기한다. 또한, 기존 비잔틴 장애 극복(Byzantine Fault Tolerance, BFT)을 위한 알고리즘들은 컨트롤러간 다수의 메시지를 주고 받아야 하기 때문에 합의에 도달하는 시간이 노드 장애 극복 알고리즘보다 길고 링크 사용량도 증가하게 된다. 이는 지연 시간에 민감한 서비스에 치명적일 뿐만 아니라 네트워크 관리 측면에서도 많은 부담이 되기 때문에 소프트웨어 정의 네트워크에 적용하기 어렵다. 따라서, 합의에 빠르게 도달하여 서비스 요청에 대한 응답 지연을 줄이고, 합의 과정에 필요한 다수의 멀티캐스트 메시지를 줄여 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법이 요구된다.On the other hand, the consensus of the current software-defined network mainly uses RAFT or PAXOS, which is a leader-based consensus algorithm. This consensus algorithm considers the situation where a node failure occurs and allows the system to operate normally even if some of the failures are tolerated. However, because Byzantine faults (e.g., software bugs or malicious attacks) are not allowed, when failures other than node failures occur, the system does not operate or the service is arbitrarily changed by network attacks. cause problems that can receive For example, if a byzantine failure occurs in a controller elected as the leader, the controller elected as the leader copies incorrect states to other controllers, resulting in malicious modification of the message. cause unintended behavior. In addition, since existing Byzantine Fault Tolerance (BFT) algorithms require exchanging multiple messages between controllers, the time to reach an agreement is longer than that of node failover algorithms, and link usage also increases. This is not only fatal to latency-sensitive services, but also burdensome in terms of network management, making it difficult to apply to software-defined networks. Therefore, there is a need for a Byzantine failover method capable of reaching an agreement quickly, reducing a response delay to a service request, and reducing link usage by reducing a number of multicast messages required for an agreement process.

본 발명이 이루고자 하는 기술적인 과제는 프로그래밍 가능한 네트워크 장치를 이용하여 소프트웨어 정의 네트워크 환경에서 합의 도달 시간과 네트워크 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법 및 장치를 제공하는 것이다.A technical problem to be achieved by the present invention is to provide a byzantine failover method and apparatus capable of reducing an agreement reaching time and network link usage in a software defined network environment by using a programmable network device.

본 발명의 일 실시예에 따른 비잔틴 장애 극복 방법은 분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법으로, 프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계, 상기 프로그래머블 스위치가 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계, 상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계, 및 상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계를 포함한다.A Byzantine failover method according to an embodiment of the present invention is a Byzantine failover method in a distributed software defined networks (SDN) environment, comprising the steps of a programmable switch receiving a request message from a client, the programmable switch sending a header Generating a request message with an inserted header and transmitting the request message with the header inserted to a plurality of controllers, receiving, by the programmable switch, a response proposal from at least some of the plurality of controllers, and the programmable switch Eliciting an agreement on the request message.

본 발명의 일 실시예에 비잔틴 장애 극복 방법에 의할 경우, 프로그래밍 가능한 네트워크 장치, 예컨대 프로그래머블 스위치를 이용하여 소프트웨어 정의 네트워크 환경에서 합의 도달 시간과 네트워크 링크 사용량을 줄일 수 있는 비잔틴 장애 극복 방법을 제공할 수 있는 효과가 있다.In the case of the byzantine failover method according to an embodiment of the present invention, it is possible to provide a byzantine failover method capable of reducing the reach time and network link usage in a software defined network environment using a programmable network device, for example, a programmable switch. There are possible effects.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 극복 시스템을 도시한다.
도 2는 도 1에 도시된 시스템에서의 합의 과정을 설명하기 위한 흐름도이다.
도 3은 도 1에 도시된 컨트롤러에서 수행되는 메시지 오더링을 설명하기 위한 도면이다.
도 4는 도 1에 도시된 스위치의 기능 블럭도이다.
도 5와 도 6은 본 발명의 일 실시예에 따른 비잔틴 노드 허용 기법과 기존의 기법에 대한 시뮬레이션 결과를 도시한다.
A detailed description of each drawing is provided in order to more fully understand the drawings cited in the detailed description of the present invention.
1 illustrates a Byzantine failover system according to one embodiment of the present invention.
FIG. 2 is a flowchart for explaining an agreement process in the system shown in FIG. 1 .
FIG. 3 is a diagram for explaining message ordering performed by the controller shown in FIG. 1 .
4 is a functional block diagram of the switch shown in FIG. 1;
5 and 6 show simulation results for the Byzantine node permission scheme and the existing scheme according to an embodiment of the present invention.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.Specific structural or functional descriptions of the embodiments according to the concept of the present invention disclosed in this specification are only illustrated for the purpose of explaining the embodiments according to the concept of the present invention, and the embodiments according to the concept of the present invention may be embodied in many forms and are not limited to the embodiments described herein.

본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.Embodiments according to the concept of the present invention can apply various changes and can have various forms, so the embodiments are illustrated in the drawings and described in detail in this specification. However, this is not intended to limit the embodiments according to the concept of the present invention to specific disclosed forms, and includes all modifications, equivalents, or substitutes included in the spirit and scope of the present invention.

제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.Terms such as first or second may be used to describe various components, but the components should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another, e.g. without departing from the scope of rights according to the concept of the present invention, a first component may be termed a second component and similarly a second component may be termed a second component. A component may also be referred to as a first component.

어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, but other elements may exist in the middle. It should be. On the other hand, when a component is referred to as “directly connected” or “directly connected” to another component, it should be understood that no other component exists in the middle. Other expressions describing the relationship between components, such as "between" and "directly between" or "adjacent to" and "directly adjacent to", etc., should be interpreted similarly.

본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Terms used in this specification are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "having" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in this specification, but one or more other features It should be understood that it does not preclude the possibility of the presence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and unless explicitly defined in this specification, it should not be interpreted in an ideal or excessively formal meaning. don't

이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시예들을 상세히 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these examples. Like reference numerals in each figure indicate like elements.

도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 극복 시스템을 도시한다.1 illustrates a Byzantine failover system according to one embodiment of the present invention.

도 1을 참조하면, 비잔틴 장애 극복 시스템은 분산 SDN(distributed SDN) 시스템을 의미할 수 있다. 또한, 비잔틴 장애 극복 시스템은 복수의 컨트롤러들(SDN 컨트롤러들, 컨트롤러 서버들, SDN 컨트롤러 서버들 등으로 명명될 수도 있음)과 복수의 스위치들(예컨대, 프로그래머블 스위치들(programmable switches))을 포함할 수 있다.Referring to FIG. 1 , a Byzantine failover system may mean a distributed SDN (Distributed SDN) system. In addition, the Byzantine failover system may include a plurality of controllers (which may also be referred to as SDN controllers, controller servers, SDN controller servers, etc.) and a plurality of switches (eg, programmable switches). can

본 발명에서는, 비잔틴 장애 허용(Byzantine Fault Tolerant, BFT)을 위한 기능을 프로그래머블 네트워크 장치에 임베딩함으로써, 시스템 내에서 비잔틴 장애를 허용할 수 있다. 프로그래머블 네트워크 장치는 프로그래머블 스위치를 의미할 수 있다. 이를 통해, 합의 과정에서의 컨트롤러 간 다수의 멀티캐스트 과정을 최소화하여 해당 과정에서 소모되는 시간을 감소시키고, 제어 채널의 링크 사용량을 감소시킬 수 있다. 또한, 고성능의 프로그래머블 네트워크 장치를 사용함으로써 합의 과정에 필요한 연산을 기존 컨트롤러에서 소프트웨어 기반으로 처리하는 것보다 빠르게 처리할 수 있다.In the present invention, it is possible to tolerate Byzantine Fault Tolerant (BFT) within a system by embedding a function for Byzantine Fault Tolerant (BFT) into a programmable network device. A programmable network device may mean a programmable switch. Through this, it is possible to minimize the number of multicast processes between controllers in the agreement process, thereby reducing the time consumed in the corresponding process and reducing the link usage of the control channel. In addition, by using a high-performance programmable network device, calculations required for the consensus process can be processed faster than software-based processing in an existing controller.

시스템 모델을 도시한 도 1을 다시 참조하면, 데이터 평면(data plane)은 비잔틴 장애 허용 기능을 임베딩한 스위치(BFT switch)와 범용 네트워크 디바이스들을 포함할 수 있다. BFT 스위치는 컨트롤러에서 수행되던 BFT 기능을 수행하고, BFT 합의 과정을 위한 기능들을 수행할 수 있다. 비잔틴 장애 허용 지원을 위한 BFT 스위치의 기능은 다음과 같다.Referring again to FIG. 1 showing the system model, the data plane may include a switch (BFT switch) embedding a Byzantine fault tolerance function and general-purpose network devices. The BFT switch may perform the BFT function performed in the controller and perform functions for the BFT consensus process. The functions of the BFT switch for supporting Byzantine Fault Tolerance are as follows.

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 스위치들은 소정의 시각 동기화 기법을 적용하여 주기적으로 또는 비주기적으로 내부 클럭을 동기화함으로써 동기화된 시간 정보를 가질 수 있다.1) Time Synchronization; The BFT switch must know the exact time of requests received at different locations so that the controller can perform message ordering. To this end, the internal clock may be periodically synchronized through a time synchronization technique between switches. As an exemplary time synchronization technique between switches, the time synchronization technique of 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) may be used. That is, the BFT switches shown in FIG. 1 may have synchronized time information by periodically or non-periodically synchronizing internal clocks by applying a predetermined time synchronization technique.

2) 컨트롤러로의 메시지 멀티캐스트 ; BFT 스위치는 시스템을 구성하는 복수의 컨트롤러들과 동시에 통신하기 위해 메시지를 멀티캐스팅할 수 있다. BFT 스위치가 클라이언트(클라이언트의 장치로써, 단말을 의미할 수 있음)로부터 수신한 요청 메시지와 합의 결과 메시지가 복수의 컨트롤러들로 멀티캐스팅될 수 있다.2) multicast messages to the controller; The BFT switch can multicast messages to simultaneously communicate with a plurality of controllers constituting the system. A request message and an agreement result message received by the BFT switch from a client (a device of a client, which may mean a terminal) may be multicast to a plurality of controllers.

3) BFT 헤더(header) 생성 ; BFT 스위치는 합의 과정에 사용되는 정보를 전달하기 위한 BFT 헤더를 생성할 수 있다. 구체적으로, BFT 스위치는 클라이언트로부터 수신한 요청 메시지에 소정의 정보를 포함하는 헤더(BFT 헤더)를 생성 및 결합하여 복수의 컨트롤러들로 멀티캐스팅할 수 있다.3) Generate BFT header; The BFT switch may generate a BFT header for conveying information used in the consensus process. Specifically, the BFT switch may generate and combine a header (BFT header) including predetermined information with a request message received from a client, and multicast the request message to a plurality of controllers.

4) 각 컨트롤러의 요청 처리 결과에 대한 합의 ; BFT 스위치는 복수의 컨트롤러들 각각으로부터 수신한 요청에 대한 응답(응답 제안)에 기초하여 요청 처리 결과에 대한 합의를 수행할 수 있다.4) agreement on the outcome of request processing by each controller; The BFT switch may perform an agreement on a request processing result based on a response (response proposal) to the request received from each of the plurality of controllers.

5) 비잔틴 노드 탐지 : BFT 스위치는 복수의 컨트롤러들 각각으로부터 수신한 요청에 기초하여, 복수의 컨트롤러들 중에서 비잔틴 노드를 탐지할 수 있다.5) Byzantine node detection: The BFT switch may detect a Byzantine node among a plurality of controllers based on a request received from each of the plurality of controllers.

한편, 제어 평면(control plane)은 복수의 컨트롤러들로 구성되어 있다. 컨트롤러는 리더 기반의 합의 알고리즘을 사용하는 기존의 시스템과는 다르게, 리더(leader)와 팔로워(follower) 또는 리더와 억셉터(acceptor)와 같은 역할을 담당하지 않고, 모든 컨트롤러는 동일한 역할(예컨대, 수신한 요청 메시지(request message)를 독립적으로 처리하고 서비스의 상태를 유지)을 수행할 수 있다. 또한, 시스템 내의 모든 구성 요소는 메시지의 무결성을 보장하기 위해 서명 및 메시지 인증 과정을 수행할 수 있다.Meanwhile, a control plane is composed of a plurality of controllers. Unlike existing systems that use leader-based consensus algorithms, controllers do not play roles such as leader and follower or leader and acceptor, and all controllers have the same role (e.g., It can independently process the received request message and maintain the state of the service). In addition, all components in the system can perform signature and message authentication processes to ensure message integrity.

도 2는 도 1에 도시된 시스템에서의 합의 과정을 설명하기 위한 흐름도이다.FIG. 2 is a flowchart for explaining an agreement process in the system shown in FIG. 1 .

도 1과 도 2를 참조하면, BFT 스위치와 컨트롤러는 복수의 메시지들을 주고 받으며 비잔틴 장애 허용을 위한 합의 과정을 수행할 수 있다. 이때, 주고 받는 메시지의 종류는 다음과 같다.Referring to FIGS. 1 and 2 , the BFT switch and the controller may exchange and receive a plurality of messages and perform an agreement process for tolerating Byzantine faults. At this time, the types of exchanged messages are as follows.

1) 요청(Request) 메시지 ; 클라이언트가 요구하는 서비스에 대한 정보로써, 네트워크 상태 변경, 상태 정보 요청 등의 메시지를 의미할 수 있다.1) Request message; As information about a service requested by a client, it may mean a message such as network status change or status information request.

2) 제안(Propose) 메시지 ; 클라이언트의 서비스 요청에 대한 컨트롤러의 처리 결과를 의미한다.2) Propose message; It refers to the processing result of the controller for the service request of the client.

3) 커미트(Commit) 메시지 ; BFT 스위치에서 도출한 합의에 따라 컨트롤러의 상태 업데이트를 위한 정보를 포함하는 메시지를 의미할 수 있다.3) Commit message; It may mean a message including information for updating the state of the controller according to the agreement derived from the BFT switch.

4) 응답(Reply) 메시지 ; 클라이언트의 요청에 대한 응답 메시지를 의미할 수 있다.4) Reply message; It may mean a response message to a client's request.

다시 도 2를 참조하면, 클라이언트(클라이언트 단말)가 소정의 서비스를 요청하는 요청 메시지를 로컬 컨트롤러로 송신할 수 있다. 다만, 요청 메시지는 로컬 컨트롤러에 도달하기 전에 BFT 스위치에 의해 수신될 수 있다.Referring back to FIG. 2 , a client (client terminal) may transmit a request message requesting a predetermined service to the local controller. However, the request message may be received by the BFT switch before reaching the local controller.

클라이언트에 의해 송신된 요청 메시지는 BFT 스위치에 의해 수신되고, BFT 스위치는 요청 메시지에 헤더(예컨대, BFT 헤더)를 삽입한 후 복수의 컨트롤러들에게 멀티캐스팅할 수 있다. 헤더는 비잔틴 장애 허용 합의를 위한 것으로써, 소정의 정보들을 포함할 수 있다. 예컨대, 헤더는 타임 스탬프(timestamp), 메시지 인증 코드(Message Authentication Code, MAC), 비잔틴 노드 정보, 및 메시지 타입 정보 중 적어도 하나를 포함할 수 있다. 타임 스탬프는 요청 메시지가 BFT 스위치에 도착한 시간으로써, 복수의 컨트롤러들 각각이 메시지 오더링을 수행할 수 있도록 하기 위함이다. 메시지 인증 코드는 메시지의 위조 및/또는 변조를 방지하기 위한 것으로, 요청 메시지에 대한 메시지 인증 코드를 의미하거나 헤더가 삽입된 요청 메시지에 대한 메시지 인증 코드를 의미할 수 있다. 비잔틴 노드 정보는 복수의 컨트롤러들 중 비잔틴 노드에 해당하는 컨트롤러를 식별할 수 있는 정보를 의미할 수 있다. 다만, 비잔틴 노드로 탐지된 노드가 없는 경우, 비잔틴 노드 정보는 헤더에 포함되어 있지 않거나, 탐지된 노드가 없음을 의미하는 정보가 기재될 수 있다. 메시지 타입 정보는 헤더가 삽입된 메시지의 타입(유형)을 의미하는 것으로써, 요청 메시지, 제안 메시지, 응답 메시지, 및 커미트 메시지 중 어느 하나를 의미할 수 있다.The request message sent by the client is received by the BFT switch, and the BFT switch inserts a header (eg, BFT header) into the request message and then multicasts it to a plurality of controllers. The header is for Byzantine Fault Tolerance Agreement and may include predetermined information. For example, the header may include at least one of a timestamp, a message authentication code (MAC), Byzantine node information, and message type information. The time stamp is the time at which the request message arrives at the BFT switch, so that each of a plurality of controllers can perform message ordering. The message authentication code is for preventing forgery and/or falsification of a message, and may mean a message authentication code for a request message or a message authentication code for a header-inserted request message. Byzantine node information may refer to information capable of identifying a controller corresponding to a Byzantine node among a plurality of controllers. However, when there is no node detected as a Byzantine node, Byzantine node information may not be included in the header, or information indicating that there is no detected node may be described. Message type information refers to the type (type) of a message into which a header is inserted, and may mean any one of a request message, a proposal message, a response message, and a commit message.

다음으로, 각 컨트롤러에서는 메시지 오더링을 수행하고, 메시지 오더링의 결과에 따라, 각 메시지를 순차적으로 처리한다. 각 컨트롤러에서 메시지 오더링을 수행하지 않고 메시지를 처리하는 경우, 컨트롤러 간 서로 다른 응답을 하는 문제가 발생하여 합의에 도달하지 못하는 상황이 발생할 수 있다.Next, each controller performs message ordering, and sequentially processes each message according to the result of the message ordering. If each controller processes a message without performing message ordering, a problem of different responses between controllers may occur, resulting in a situation in which an agreement cannot be reached.

메시지 오더링을 설명하기 위한 도 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 스위치에 도달한 시간인 타임 스탬프를 포함하는 헤더를 삽입시킬 수 있다.Referring to FIG. 3 for explaining message ordering, the first switch (BFT switch 1) and the second switch (BFT switch 2) send a first request message (Request 1) and a second request message (Request 1) at t1 and t2, respectively, from different clients. Receives a request message (Request 2). The first controller (Controller 1) may receive the first request message (Request 1) and the second request message (Request 2) at t3 and t6, respectively, process the requests according to the order in which they occur, and respond to the switch. On the other hand, the second controller (Controller 2) receives the second request message (Request 2) at t4 and receives the first request message (Request 1) at t5, in a different order from that of the first controller (Controller 1). will process the request. In this case, the BFT switch may not reach an agreement because it receives different result values from the first controller (Controller 1) and the second controller (Controller 2). For this reason, the BFT switch may insert a header including a time stamp, which is the time at which the request message reaches the BFT switch, in the request message.

또한, 복수의 컨트롤러들 각각은 BFT 스위치로부터 전송된 메시지들을 일정 기간 수집한 후에 처리할 수 있다.Also, each of the plurality of controllers may process messages transmitted from the BFT switch after collecting them for a certain period of time.

예컨대, 컨트롤러는 t=a1부터 t=a2(a2는 a1 이후의 임의의 시점)까지 수신된 메시지를 오더링한 후 오더링 순서에 따라 처리할 수 있다. 이때, 컨트롤러가 오더링하는 시점을 a3라 할 때, a3는 a2와 같을 수 있다. 다만, a3가 a2와 같을 때, a2 이후에 수신된 메시지에 포함된 타임 스탬프가 a2 이전에 수신된 메시지에 포함된 타임 스탬프보다 빠를 수 있다. 이를 위해, a3는 a2보다는 미리 정해진 시간 간격이후의 시점일 수 있다. 즉, a3 시점에서 컨트롤러는 a1 시점부터 a2 시점까지 수신된 메시지를 오더링한 후 오더링 순서에 따라 메시지를 처리할 수 있다.For example, the controller may order messages received from t=a1 to t=a2 (where a2 is an arbitrary point in time after a1) and then process them according to the ordering order. In this case, when the time point at which the controller places the order is a3, a3 may be equal to a2. However, when a3 is equal to a2, the time stamp included in the message received after a2 may be earlier than the time stamp included in the message received before a2. To this end, a3 may be a point in time after a predetermined time interval rather than a2. That is, at time a3, the controller may order messages received from time a1 to time a2 and then process the messages according to the ordering order.

도 4는 도 1에 도시된 스위치의 기능 블럭도이다.4 is a functional block diagram of the switch shown in FIG. 1;

도 4를 참조하면, 스위치(100)는 수신부(110), 멀티캐스팅부(120), 합의부(130), 송신부(150), 및 저장부(150) 중 적어도 하나 이상을 포함할 수 있다. 또한, 스위치(100)는 프로그래머블 스위치를 의미할 수 있으며, 스위칭 장치나 스위칭 요소 등으로 명명될 수도 있다.Referring to FIG. 4 , the switch 100 may include at least one of a receiving unit 110, a multicasting unit 120, an agreement unit 130, a transmission unit 150, and a storage unit 150. Also, the switch 100 may refer to a programmable switch, and may also be referred to as a switching device or a switching element.

수신부(110)는 적어도 하나의 클라이언트(클라이언트 단말)로부터 적어도 하나의 메시지를 수신할 수 있다. 적어도 하나의 메시지는 요청(Request) 메시지일 수 있다. 또한, 수신부(110)에 의해 수신된 메시지는 저장부(150)에 저장될 수 있다.The receiver 110 may receive at least one message from at least one client (client terminal). At least one message may be a request message. Also, the message received by the receiving unit 110 may be stored in the storage unit 150 .

멀티캐스팅부(120)는 수신부(110)에 의해 수신된 메시지 또는 수신부(110)에 의해 수신된 후 저장부(150)에 저장된 메시지에 헤더를 삽입한 후 헤더가 삽입된 메시지를 복수의 컨트롤러들에게 멀티캐스팅할 수 있다. 또한, 멀티캐스팅부(120)는 합의부(130)에 의해 탐지된 비잔틴 노드에 대한 정보(비잔틴 노드 정보)를 헤더에 삽입할 수도 있다. 비잔틴 노드 정보는 비잔틴 노드로 결정된(또는 탐지된) 컨트롤러를 식별할 수 있는 정보를 포함할 수 있다.The multicasting unit 120 inserts a header into a message received by the receiving unit 110 or a message received by the receiving unit 110 and stored in the storage unit 150, and then transmits the header-inserted message to a plurality of controllers. You can multicast to Also, the multicasting unit 120 may insert information on the Byzantine node detected by the consensus unit 130 (Byzantine node information) into the header. Byzantine node information may include information capable of identifying a controller determined (or detected) as a Byzantine node.

합의부(130)는 헤더가 삽입된 메시지에 대한 복수의 컨트롤러들 각각의 응답 제안(제안(Propose) 메시지)을 수신하고, 클라이언트의 요청에 대한 합의를 도출한다. 일 예로, 합의부(130)는 복수의 컨트롤러들 중 일정 개수 이상의 컨트롤러들 또는 일정 비율 이상의 컨트롤러들의 응답 제안이 동일할 경우, 합의 도출되었다고 판단할 수 있다. 이를 위해, 합의부(130)는 각 컨트롤러들로부터 수신된 응답 제안을 해싱하고 동일한 해싱값을 갖는 응답을 카운트할 수 있다. 이때, 카운트 값이 정해진 기준에 도달하는 경우, 합의가 도출되었다고 볼 수 있다. 따라서, 합의부(130)는 복수의 컨트롤러들 모두의 응답을 수신하기 전에 합의를 도출할 수 있다.The consensus unit 130 receives a response proposal (a proposal message) from each of a plurality of controllers to the header-inserted message, and derives an agreement on the request of the client. For example, the agreement unit 130 may determine that an agreement has been reached when the response proposals of more than a certain number of controllers or more than a certain ratio of controllers among the plurality of controllers are the same. To this end, the agreement unit 130 may hash the response proposals received from each controller and count responses having the same hashing value. At this time, when the count value reaches a predetermined criterion, it can be considered that an agreement has been reached. Accordingly, the consensus unit 130 may derive an agreement before receiving responses from all of the plurality of controllers.

또한, 합의부(130)는 비잔틴 노드를 탐지하기 위해 복수의 컨트롤러들 모두에게서 응답 제안을 수신한다. 즉, 합의부(130)는 응답 제안들을 해싱하고 해싱 결과를 비교함으로써, 합의 결과와 다른 응답을 제안한 컨트롤러에 대한 비잔틴 의심도를 증가시킨다. 예컨대, 합의부(130)는, 컨트롤러가 합의와 상이한 결과(응답 또는 응답 제안)를 도출한 횟수가 미리 정해진 임계치를 넘어서거나 임계치에 도달한 경우, 해당 컨트롤러를 비잔틴 노드로 탐지(또는 결정)할 수 있다.Also, the consensus unit 130 receives response proposals from all of the plurality of controllers in order to detect the Byzantine node. That is, the consensus unit 130 increases the degree of Byzantine suspicion for a controller that proposes a different response from the consensus result by hashing response proposals and comparing hashing results. For example, the consensus unit 130 may detect (or determine) the controller as a Byzantine node when the number of times the controller derives a different result (response or response proposal) from the consensus exceeds or reaches a predetermined threshold. there is.

합의가 도출된 경우, 송신부(140)은 합의된 응답을 클라이언트로 송신한다. 또한, 송신부(140)는 합의 결과를 복수의 컨트롤러들에게 멀티캐스팅할 수 있다.When an agreement is reached, the transmitter 140 transmits an agreed response to the client. Also, the transmitter 140 may multicast the result of the agreement to a plurality of controllers.

또한, 비잔틴 노드가 탐지된 경우, 송신부(140)는 해당 컨트롤러에 대한 정보(예컨대, 해당 컨트롤러를 식별할 수 있는 정보)를 포함하는 메시지를 시스템 내의 모든 디바이스(특히, 분산 SDN에 포함된 복수의 프로그래머블 스위치들)에게 송신할 수 있다. 이를 통해, 해당 노드(즉, 해당 컨트롤러)는 합의 과정에서 배제될 수 있다. In addition, when a Byzantine node is detected, the transmitter 140 sends a message including information about the controller (eg, information for identifying the controller) to all devices in the system (in particular, to multiple devices included in the distributed SDN). programmable switches). Through this, the corresponding node (ie, the corresponding controller) can be excluded from the consensus process.

저장부(150)에는 스위치(100)의 기본적인 동작 및/또는 본 발명의 일 실시예에 따른 동작에 필요한 소프트웨어, 수신부(110)에 의해 수신된 메시지, 멀티캐스팅부(120)에 의해 생성된 헤더, 헤더가 삽입된 메시지, 합의부(130)에 의한 합의 결과, 합의 도출 과정에서 생성되는 데이터, 각 컨트롤러에 대한 비잔틴 의심도 등이 저장될 수 있다.The storage unit 150 includes software necessary for basic operations of the switch 100 and/or operations according to an embodiment of the present invention, messages received by the receiver 110, and headers generated by the multicasting unit 120. , the header-inserted message, the result of the agreement by the agreement unit 130, data generated in the process of deriving the agreement, and the degree of Byzantine suspicion for each controller may be stored.

도 5와 도 6은 본 발명의 일 실시예에 따른 비잔틴 노드 허용 기법과 기존의 기법에 대한 시뮬레이션 결과를 도시한다. 도 5는 컨트롤러 수의 변화에 따른 통신 오버헤드를 나타내고, 도 6은 응답 시간의 누적 분포를 나타낸다.5 and 6 show simulation results for the Byzantine node permission scheme and the existing scheme according to an embodiment of the present invention. 5 shows communication overhead according to a change in the number of controllers, and FIG. 6 shows a cumulative distribution of response time.

성능 평가를 위해, 본 발명의 일 실시예에 따른 비잔틴 장애 허용 기법(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는 비잔틴 노드를 고려하지 않고 물리적 장애만 허용하는 방법이다.For performance evaluation, Byzantine Fault Tolerance (SC-BFT) according to an embodiment of the present invention is 1) P4xos (H.T. Dang et al., "P4xos: Consensus as a Network Service," Technical Report. Research Report 2018-01, USI., January 2019.) and 2) a representative controller-based BFT consensus mechanism without any support of programmable switches. Compared with PBFT (M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," in Proc. USENIX Symposium on Operating Systems Design and Implementation, February 1999.). PBFT is a typical BFT acceptance method, and P4xos is a method that allows only physical failure without considering Byzantine nodes.

성능 평가를 위해, 1) 요청(Request) 메시지에 대하여 합의 과정 동안에 유발된 통신 오버헤드(communication overhead)와 2) 클라이언트가 응답을 받을 때까지의 경과 시간(elapsed time)으로 정의된 응답 시간(response time)을 정량화하였다.For performance evaluation, 1) the communication overhead caused during the consensus process for the request message and 2) the response time defined as the elapsed time until the client receives a response. time) was quantified.

도 5는 합의에 참여하는 노드(컨트롤러)의 수를 변화시키면서 합의 과정에서 시스템에 발생하는 합의 메시지의 수(즉, 통신 오버헤드)의 변화를 살펴본 그래프이다. 도 5에 도시되어 있듯이, 본 발명의 통신 오버헤드는 비잔틴 장애를 허용하지 않는 시스템과 유사하고 기존 비잔틴 장애 허용 방법보다 더 낮은 것을 확인할 수 있다. 이는 프로그래머블 스위치를 활용하여 합의 과정에 요구되는 스위치-컨트롤러와 컨트롤러-컨트롤러 간 메시지를 최소화하였기 때문이다.5 is a graph examining changes in the number of consensus messages (ie, communication overhead) occurring in the system during the consensus process while changing the number of nodes (controllers) participating in the consensus. As shown in FIG. 5, it can be seen that the communication overhead of the present invention is similar to a system that does not tolerate Byzantine failure and is lower than the conventional Byzantine failure tolerance method. This is because the message between the switch-controller and the controller-controller required for the consensus process is minimized by using a programmable switch.

도 6은 본 발명과 비교 기법에서 클라이언트가 요청 메시지를 보내고 응답 메시지를 받을 때까지의 시간(즉, 응답 시간)을 나타낸 그래프이다. 도 6에서 알 수 있듯이, 본 발명이 가장 낮은 응답 시간을 제공하는 것을 확인할 수 있다. 인ㄴ 비잔틴 장애 허용 기능을 임베딩한 스위치와 이를 활용한 시스템을 통해 기존의 컨트롤러에서 수행되는 합의 절차를 간소화하였기 때문이다.6 is a graph showing the time until a client sends a request message and receives a response message (ie, response time) in the comparison technique with the present invention. As can be seen in Figure 6, it can be seen that the present invention provides the lowest response time. This is because the agreement procedure performed in the existing controller is simplified through a switch embedding the Byzantine fault tolerant function and a system using it.

이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 집합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 콘트롤러, 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)도 가능하다.The device described above may be implemented as a hardware component, a software component, and/or a set of hardware components and software components. For example, devices and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA), It may be implemented using one or more general purpose or special purpose computers, such as a Programmable Logic Unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Also, other processing configurations are possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(Computer Program), 코드(Code), 명령(Instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(Collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(Component), 물리적 장치, 가상 장치(Virtual Equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(Signal Wave)에 영구적으로, 또는 일시적으로 구체화(Embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of these, and may configure a processing device to operate as desired or process independently or collectively. You can command the device. Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or to provide instructions or data to a processing device. , or may be permanently or temporarily embodied in the transmitted signal wave. Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer readable media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-optical Media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program commands recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - Includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, ROM, RAM, flash memory, etc. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성 요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.Although the present invention has been described with reference to the embodiments shown in the drawings, this is only exemplary, and those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom. For example, the described techniques may be performed in an order different from the method described, and/or components of the described system, structure, device, circuit, etc. may be combined or combined in a different form than the method described, or other components may be used. Or even if it is replaced or substituted by equivalents, appropriate results can be achieved. Therefore, the true technical protection scope of the present invention should be determined by the technical spirit of the attached claims.

100 : 스위치
110 : 수신부
120 : 멀티캐스팅부
130 : 합의부
140 : 송신부
150 : 저장부
100: switch
110: receiver
120: multicasting unit
130: Agreement
140: transmission unit
150: storage unit

Claims (8)

분산 SDN(distributed Software Defined Networks) 환경에서의 비잔틴 장애 극복 방법에 있어서,
프로그래머블 스위치가 클라이언트로부터 요청(Request) 메시지를 수신하는 단계;
상기 프로그래머블 스위치가, 상기 프로그래머블 스위치가 상기 요청 메시지를 수신한 시간 정보를 포함하는 헤더가 삽입된 요청 메시지를 생성하고, 상기 헤더가 삽입된 요청 메시지를 복수의 컨트롤러들에게 송신하는 단계;
상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 적어도 일부로부터 응답 제안을 수신하는 단계;
상기 프로그래머블 스위치가 상기 요청 메시지에 대한 합의를 도출하는 단계; 및
상기 프로그래머블 스위치가 상기 복수의 컨트롤러들 중 비잔틴 노드를 탐지하는 단계를 포함하고,
상기 비잔틴 노드를 탐지하는 단계는, 도출된 합의 결과와 상이한 응답 제안을 송신한 컨트롤러의 비잔틴 의심도를 증가시키는 단계; 및
미리 정해진 횟수에 도달한 비잔틴 의심도를 갖는 컨트롤러를 비잔틴 노드로 결정하는 단계를 포함하는,
비잔틴 장애 극복 방법.
In a method for overcoming byzantine failure in a distributed software defined networks (SDN) environment,
Receiving, by a programmable switch, a request message from a client;
generating, by the programmable switch, a request message into which a header including information about a time at which the programmable switch received the request message is inserted, and transmitting the request message into which the header is inserted to a plurality of controllers;
receiving, by the programmable switch, a response proposal from at least some of the plurality of controllers;
deriving an agreement on the request message by the programmable switch; and
detecting, by the programmable switch, a Byzantine node among the plurality of controllers;
The step of detecting the Byzantine node may include increasing the degree of Byzantine suspicion of a controller that has transmitted a response proposal different from the derived consensus result; and
Determining a controller having a degree of Byzantine suspicion that has reached a predetermined number of times as a Byzantine node,
How to overcome Byzantine failure.
삭제delete 제1항에 있어서,
상기 합의를 도출하는 단계는,
동일한 응답 제안의 개수가 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는,
비잔틴 장애 극복 방법.
According to claim 1,
The step of reaching the agreement is,
Deriving the agreement when the number of identical response proposals meets a predetermined criterion,
How to overcome Byzantine failure.
제3항에 있어서,
상기 합의를 도출하는 단계는,
상기 복수의 컨트롤러들로부터 수신한 응답 제안을 해싱하는 단계;
동일한 해싱 결과 값을 갖는 응답 제안을 카운트하는 단계; 및
카운트 값이 상기 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는 단계를 포함하는,
비잔틴 장애 극복 방법.
According to claim 3,
The step of reaching the agreement is,
hashing response proposals received from the plurality of controllers;
counting response proposals having the same hashing result value; and
Deriving the agreement if the count value meets the predetermined criterion.
How to overcome Byzantine failure.
제4항에 있어서,
상기 카운트 값이 상기 미리 정해진 기준을 충족하는 경우에 상기 합의를 도출하는 단계는,
상기 카운트 값이 상기 복수의 컨트롤러들의 개수의 절반을 초과하는 경우에 상기 합의를 도출하는,
비잔틴 장애 극복 방법.
According to claim 4,
Deriving the agreement when the count value satisfies the predetermined criterion,
Deriving the agreement when the count value exceeds half of the number of the plurality of controllers,
How to overcome Byzantine failure.
삭제delete 제1항에 있어서,
상기 프로그래머블 스위치가 비잔틴 노드에 대한 정보를 포함하는 메시지를 상기 분산 SDN에 포함된 복수의 프로그래머블 스위치들로 송신하는 단계를 더 포함하는,
비잔틴 장애 극복 방법.
According to claim 1,
Transmitting, by the programmable switch, a message including information about a Byzantine node to a plurality of programmable switches included in the distributed SDN,
How to overcome Byzantine failure.
제1항에 있어서,
상기 헤더가 삽입된 요청 메시지를 수신한 복수의 컨트롤러들 각각은 상기 헤더에 포함된 상기 시간 정보를 기초로 메시지들을 오더링하고, 오더링 결과에 따라 상기 메시지들을 처리하는,
비잔틴 장애 극복 방법.
According to claim 1,
Each of the plurality of controllers receiving the header-inserted request message orders messages based on the time information included in the header, and processes the messages according to an ordering result.
How to overcome Byzantine failure.
KR1020210072376A 2020-06-04 2021-06-03 Method for byzantine fault tolerant in distributed software defined networks KR102507198B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20200067849 2020-06-04
KR1020200067849 2020-06-04

Publications (2)

Publication Number Publication Date
KR20210151001A KR20210151001A (en) 2021-12-13
KR102507198B1 true KR102507198B1 (en) 2023-03-09

Family

ID=78832125

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210072376A KR102507198B1 (en) 2020-06-04 2021-06-03 Method for byzantine fault tolerant in distributed software defined networks

Country Status (1)

Country Link
KR (1) KR102507198B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015138987A (en) * 2014-01-20 2015-07-30 日本電気株式会社 Communication system and service restoration method in communication system
WO2018115934A1 (en) * 2016-12-21 2018-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Packet timestamping in software defined networking networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015138987A (en) * 2014-01-20 2015-07-30 日本電気株式会社 Communication system and service restoration method in communication system
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
KR20210151001A (en) 2021-12-13

Similar Documents

Publication Publication Date Title
AU2019203861B2 (en) System and method for ending view change protocol
Ports et al. Designing distributed systems using approximate synchrony in data center networks
US11522698B2 (en) Method and system for byzantine fault-tolerance replicating of data
EP3596888B1 (en) System and method for ending view change protocol
US10025344B2 (en) Self-stabilizing distributed symmetric-fault tolerant synchronization protocol
Zhang et al. Research on consensus efficiency based on practical byzantine fault tolerance
CN114048517B (en) Dual channel consensus system and method for blockchains, computer readable storage medium
CN110574019B (en) Robust data replication between data centers
Rullo et al. Redundancy as a measure of fault-tolerance for the Internet of Things: A review
Vizier et al. ComChain: A blockchain with Byzantine fault‐tolerant reconfiguration
Correia et al. Worm-IT–a wormhole-based intrusion-tolerant group communication system
Venâncio et al. VNF‐Consensus: A virtual network function for maintaining a consistent distributed software‐defined network control plane
CN103995901A (en) Method for determining data node failure
KR102507198B1 (en) Method for byzantine fault tolerant in distributed software defined networks
de Sá et al. Adaptive request batching for byzantine replication
Meling et al. When you don't trust clients: Byzantine proposer fast paxos
KR20230046085A (en) An efficient dual-mode consensus protocol for blockchain networks
CN116762318A (en) Architecture availability and synchronization
Lembke et al. Consistent and secure network updates made practical
Gao et al. FIBFT: An Improved Byzantine Consensus Mechanism for Edge Computing
Mohiuddin et al. FCR: Fast and Consistent Controller-Replication in Software Defined Networking
Shailly A critical review based on Fault Tolerance in Software Defined Networks
AU2019101575A4 (en) System and method for ending view change protocol
Duan Building reliable and practical byzantine fault tolerance
Eugster Toward Robust Control for 6G Networks

Legal Events

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