KR20210059574A - 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법 - Google Patents

릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR20210059574A
KR20210059574A KR1020190147205A KR20190147205A KR20210059574A KR 20210059574 A KR20210059574 A KR 20210059574A KR 1020190147205 A KR1020190147205 A KR 1020190147205A KR 20190147205 A KR20190147205 A KR 20190147205A KR 20210059574 A KR20210059574 A KR 20210059574A
Authority
KR
South Korea
Prior art keywords
packet
block
relay
node
information
Prior art date
Application number
KR1020190147205A
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 KR1020190147205A priority Critical patent/KR20210059574A/ko
Priority to US17/097,248 priority patent/US11831546B2/en
Publication of KR20210059574A publication Critical patent/KR20210059574A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/16Flow control; Congestion control in connection oriented networks, e.g. frame relay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/196Integration of transport layer protocols, e.g. TCP and UDP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명에 따른 릴레이 네트워크 시스템은 상호 연결되어 릴레이 네트워크를 구성하는 복수의 릴레이 노드 및 상기 릴레이 노드와 각각 연결된 하나 이상의 블록체인 피어 노드를 포함하되, 상기 릴레이 노드는 유저 레벨에서 연결 요청 정보가 포함된 연결패킷 및 블록정보가 포함된 블록패킷 중 적어도 하나를 수신하며, 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하고, 상기 전송 처리가 완료됨에 따라 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트한다.

Description

릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법{RELAY NODE, RELAY NETWORK SYSTEM AND METHOD FOR OPERATING THEREOF}
본 발명은 블록체인 기술에 관련된 것으로서, 보다 구체적으로는 유저 레벨에서 패킷을 처리할 수 있는 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법에 대한 것이다.
현재 비트코인(Bitcoin), 이더리움(Ethereum) 등 다양한 퍼블릭 블록체인 플랫폼이 존재하지만, 실생활이 서비스에 사용되기에는 현저히 부족한 성능을 가지고 있다.
특히, 블록체인의 대표적인 성능인 TPS(Transaction Per Second)를 향상시키면서 블록체인의 보안성을 유지하는 것이 필요하지만, 이를 위해서는 블록 전파 시간을 단축시키는 것이 선행되어야만 한다.
종래에는 블록 전파 시간을 단축시키기 위해 다양한 연구들이 진행되어 왔으나, 종래 기술은 단일 블록체인만을 지원하거나, 릴레이 노드의 구현 방법이 기존 블록체인 클라이언트의 구현에서 크게 벗어나지 않아, 지연 시간(Delay) 및 확장성(Scalability) 측면에서 한계가 있다.
본 발명의 실시예는 블록 전파 시간을 단축하기 위하여, 블록 전파에 특화된 저지연 블록 릴레이 노드 및 해당 릴레이 노드들로 구성된 릴레이 네트워크 시스템과 이의 동작 방법을 제공한다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 메모리 및 상기 메모리에 저장된 프로그램을 실행시키는 프로세서로 구성되며, 블록체인 피어 노드 및 타 릴레이 노드 중 하나 이상과 연결된 릴레이 노드는 연결 요청 정보가 포함된 연결패킷 및 블록정보가 포함된 블록패킷 중 적어도 하나를 송수신하는 패킷 송수신부, 상기 블록패킷을 상기 패킷 송수신부를 통해 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 블록패킷 처리부, 상기 블록패킷을 송수신하기 위해 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트하는 연결패킷 처리부 및 유저 레벨에서 상기 연결패킷 및 블록패킷을 처리하기 위한 유저 레벨 패킷 처리부를 포함한다.
일 실시예로, 상기 패킷 송수신부는 상기 유저 레벨 패킷 처리부를 통해 네트워크 인터페이스 카드로부터 패킷을 독출하고, 상기 패킷이 블록패킷 및 연결패킷 중 어느 패킷에 해당하는지 식별하여 메모리 상에 저장하는 패킷 수신부를 포함할 수 있다.
본 발명에 따른 릴레이 노드는 일 실시예로, 상기 독출된 패킷에 대응하는 블록체인 플랫폼을 식별하는 블록체인 종류 식별부를 더 포함할 수 있다.
일 실시예로, 상기 패킷 송수신부는 상기 수신한 블록패킷의 페이로드를 전송 대상인 상대노드 개수만큼 상기 유저 레벨 패킷 처리부를 통해 복제하고, 상기 연결정보 테이블에 기초하여 상기 상대 노드의 IP 주소 및 포트 번호마다 패킷 헤더를 생성하여 상기 페이로드와 결합한 후 네트워크 인터페이스 카드를 통해 전송할 수 있다.
일 실시예로, 상기 패킷 송수신부는 상기 수신한 블록패킷을 상기 유저 레벨 패킷 처리부의 TCP 스택을 이용하여 블록정보를 독출하고, 상기 연결된 블록체인 피어 노드의 TCP 연결정보를 이용하여 상기 블록패킷을 전송하는 TCP 블록 송신부를 포함할 수 있다.
일 실시예로, 상기 연결정보는 블록체인 플랫폼 종류 정보, 상대노드의 IP 주소 정보, 프로토콜 종류 정보, 블록 전송에 사용된 포트 번호 정보 및 최근 전송한 블록 번호 정보 중 하나 이상을 포함할 수 있다.
일 실시예로, 상기 유저 레벨 패킷 처리부는 DPDK(Data Plane Development Kit)일 수 있다.
또한, 본 발명의 제 2 측면에 따른 릴레이 네트워크 시스템은 상호 연결되어 릴레이 네트워크를 구성하는 복수의 릴레이 노드 및 상기 릴레이 노드와 각각 연결된 하나 이상의 블록체인 피어 노드를 포함한다. 이때, 상기 릴레이 노드는 유저 레벨에서 연결 요청 정보가 포함된 연결패킷 및 블록정보가 포함된 블록패킷 중 적어도 하나를 수신하며, 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하고, 상기 전송 처리가 완료됨에 따라 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트한다.
본 발명에 따른 릴레이 네트워크 시스템은 일 실시예로, 상기 릴레이 노드 및 상기 블록체인 피어 노드로부터의 릴레이 네트워크로의 연결 요청에 따라, 릴레이 노드 테이블을 참조하여 해당 노드가 연결될 릴레이 노드의 IP 주소 및 포트 번호를 제공하는 릴레이 매니저를 더 포함할 수 있다.
일 실시예로, 상기 릴레이 노드 테이블은 릴레이 노드가 주기적으로 업데이트하는 블록체인 피어 노드의 연결 개수 정보, 릴레이 노드의 연결 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 포함할 수 있다.
일 실시예로, 상기 릴레이 매니저는 상기 릴레이 노드로부터 상기 연결 요청을 수신함에 따라, 복수의 후보 릴레이 노드 중 상기 연결 요청한 릴레이 노드와 RTT가 가장 짧은 릴레이 노드를 우선 할당할 수 있다.
일 실시예로, 상기 릴레이 매니저는 상기 후보 릴레이 노드 각각에 대하여 직접 연결시의 RTT와, 상기 우선 할당된 릴레이 노드를 경유시의 RTT를 비교하고, 상기 직접 연결시의 RTT가 경유시의 RTT보다 기 설정된 배수 미만인 경우 해당 후보 릴레이 노드를 추가적으로 직접 연결하도록 할당할 수 있다.
일 실시예로, 상기 릴레이 노드는 상기 릴레이 매니저로 현재 연결된 블록체인 피어 노드 개수 정보, 타 릴레이 노드 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 업데이트할 수 있다.
일 실시예로, 상기 블록체인 피어 노드는 상기 릴레이 매니저로 상기 릴레이 네트워크로의 연결을 요청함에 따라, 릴레이 노드를 상기 릴레이 매니저로부터 할당받아 연결할 수 있다.
일 실시예로, 상기 릴레이 매니저는 상기 블록체인 피어 노드로부터 상기 연결 요청을 수신함에 따라, 상기 블록체인 피어 노드와의 RTT가 가장 짧고, 기 설정된 블록 송수신 대역폭을 초과하지 않으며, 블록체인 피어 노드의 연결 상한 개수를 초과하지 않는 릴레이 노드를 할당할 수 있다.
또한, 본 발명의 제 3 측면에 따른 블록체인 피어 노드 및 타 릴레이 노드 중 하나 이상과 연결된 릴레이 노드에서의 동작 방법은 패킷을 수신하는 단계; 상기 수신한 패킷이 연결 요청 정보가 포함된 연결패킷인지 블록정보가 포함된 블록패킷인지 여부를 판단하는 단계; 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계; 상기 블록패킷이 전송됨에 따라 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트하는 단계를 포함한다. 이때, 상기 연결패킷 및 블록패킷은 유저 레벨에서 처리된다.
일 실시예로, 상기 패킷을 수신하는 단계는, 상기 유저 레벨 상태에서 네트워크 인터페이스 카드로부터 패킷을 독출하는 단계; 상기 패킷이 블록패킷 및 연결패킷 중 어느 패킷에 해당하는지 식별됨에 따라 메모리 상에 저장하는 단계; 및 상기 독출된 패킷에 대응하는 블록체인 플랫폼을 식별하는 단계를 포함할 수 있다.
일 실시예로, 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계는, 상기 수신한 블록패킷의 페이로드를 UDP로 전송할 대상인 상대노드 개수만큼 상기 유저 레벨에서 복제하는 단계; 상기 연결정보 테이블에 기초하여 상기 상대 노드의 IP 주소 및 포트 번호마다 패킷 헤더를 생성하는 단계; 및 상기 생성된 패킷 헤더를 상기 페이로드와 결합하여 네트워크 인터페이스 카드를 통해 전송하는 단계를 포함할 수 있다.
일 실시예로, 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계는, 상기 유저 레벨에서 TCP 스택을 이용하여 상기 수신한 블록패킷의 블록정보를 독출하는 단계; 및 상기 연결된 블록체인 피어 노드의 TCP 연결정보를 이용하여 상기 블록패킷을 전송하는 단계를 포함할 수 있다.
일 실시예로, 상기 연결정보는 블록체인 플랫폼 종류 정보, 상대노드의 IP 주소 정보, 프로토콜 종류 정보, 블록 전송에 사용된 포트 번호 정보 및 최근 전송한 블록 번호 정보 중 하나 이상을 포함할 수 있다.
상술한 과제를 해결하기 위한 본 발명에 따른 컴퓨터 프로그램은, 하드웨어인 컴퓨터와 결합되어 상기 릴레이 노드의 동작 방법을 실행하며, 매체에 저장된다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 더 제공될 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
전술한 본 발명의 일 실시예에 따르면, 블록체인 P2P 네트워크에서 블록 전파만을 전문적으로 담당하는 릴레이 노드를 구현할 수 있다.
특히, 종래 기술과 달리 유저 레벨에서의 패킷 처리를 통해 더 높은 대역폭으로 저지연 블록 전파가 가능하다는 장점이 있다.
또한, 릴레이 매니저를 통해 릴레이 노드 및 블록체인 피어 노드를 보다 효율적으로 연결 및 관리할 수 있다는 장점이 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 릴레이 네트워크 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 릴레이 노드를 설명하기 위한 블록도이다.
도 3은 릴레이 노드에서 블록패킷을 송수신하는 내용을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에서의 릴레이 네트워크 시스템의 구성을 설명하기 위한 블록도이다.
도 5는 릴레이 노드에서의 동작 방법을 설명하기 위한 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명은 릴레이 노드(100), 릴레이 네트워크 시스템(1) 및 이의 동작 방법에 관한 것이다.
블록체인 플랫폼의 성능을 측정할 때 가장 많이 사용되는 지표는 TPS(Transaction Per Second)이며, 비트코인은 7TPS, 이더리움은 20TPS 정도로 낮은 성능을 가지고 있다.
이처럼 블록체인 플랫폼의 TPS가 낮은 직접적인 원인으로는 크게 두가지가 있다.
첫째로는 블록 하나의 크기가 충분히 크지 않아 트랜잭션이 많이 담기지 않는 문제가 있으며, 둘째로는 새로운 블록을 생성하는 속도가 충분히 빠르지 않다는 문제가 있다.
예를 들어, 비트코인의 경우 블록 하나의 크기는 1MB이며, 매 10분마다 블록 1개를 생성하고 있다.
위와 같은 환경에서 TPS를 높이기 위해서는 블록의 크기를 키우거나, 블록 생성 속도를 더욱 빠르게 하면 되나, 두 방법 모두 블록 전파 시간이라는 또다른 성능 요소로 인한 한계점이 발생하게 된다.
여기에서, 블록 전파 시간은 새롭게 생성된 블록이 네트워크에 참여하는 모든 노드에게 전달되기까지 걸리는 시간을 의미한다.
블록체인의 기본 동작 과정에서 마이너(Miner)가 블록을 생성하면, 블록체인에 참여하고 있는 노드들에게 P2P(Peer-to-Peer) 네트워크를 통해 단계적으로 전파된다.
이때, TPS를 높이기 위해 블록 크기를 증가시키면, 피어 간 전송해야 하는 데이터의 양이 많아지므로 블록 전파 시간이 길어지게 된다.
그리고 이렇게 길어진 블록 전파 시간이 블록 생성 주기보다도 커질 경우, 노드가 신규 블록을 수신하기 전에 또다른 신규 블록이 생성되어, 블록체인 원장을 최신 상태로 유지하는 것이 원천적으로 불가능해진다.
또한, 블록 전파 시간이 블록 생성 주기만큼 길지 않은 경우, 블록 전파 상황에 따라 참여 노드끼리 원장이 다르게 유지되어, 블록체인의 보안성을 떨어뜨리는 Fork 현상이 더욱 빈번하게 일어나게 된다.
결론적으로, 블록체인의 대표적인 성능인 TPS를 향상시키면서 블록체인의 보안성을 유지하려면 블록 전파 시간을 단축시키는 것이 선행되어야 한다.
한편, 블록 전파 시간을 단축시키기 위하여 기존에 블록 압축, 피어 간 블록 전송 프로토콜 등과 같은 다양한 연구들이 진행되어 왔다.
하지만, 종래 기술은 일반적인 퍼블릭 블록체인 네트워크 형태인 비구조적(Unstructured) P2P 네트워크에서 발생하는 근본적인 한계가 지적되어, 제한된 피어 연결 개수와 대역폭을 갖는 일반 노드가 아닌 블록 전파에 특화된 릴레이 노드, 그리고 릴레이 노드끼리 연결된 릴레이 네트워크에 대한 필요성이 대두되었다.
그러나 기존에 제안된 릴레이 노드 및 네트워크는 단일 블록체인(Bitcoin)만을 지원하거나, 릴레이 노드의 구현 방법이 기존 블록체인 클라이언트의 구현에서 크게 벗어나지 않아, 지연시간(Delay) 및 확장성(Scalability) 측면에서 한계점을 가지고 있다.
이와 달리, 본 발명의 일 실시예는 다종 블록체인을 지원하는 저지연 블록 릴레이 노드를 만들기 위한 고속 패킷 처리 및 전달 방법을 제공하며, 릴레이 노드(100) 간의 블록 전송 방법과, 릴레이 노드(100)와 피어 노드(200) 간의 블록 전송 방법, 그리고 효율적인 릴레이 네트워크 구조 구축 방법을 제공한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 릴레이 네트워크 시스템(1)을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 릴레이 네트워크 시스템(1)은 릴레이 노드(100) 및 블록체인 피어 노드(200)를 포함한다.
릴레이 노드(100)는 복수 개가 도 1에 도시된 바와 같이 하나 이상의 블록체인 피어 노드(200)와 연결되거나, 또 다른 릴레이 노드와 상호 연결되어 릴레이 네트워크를 구성한다.
그리고 블록체인 피어 노드(200)는 릴레이 노드(100)와 각각 연결되어 있다.
이때, 도 1에 도시된 릴레이 네트워크는 여러 예시 중 하나에 불과하며, 실제 네트워크에서는 더 많은 수의 릴레이 노드(100)와 블록체인 피어 노드(200)가 상호 연결될 수 있다.
즉, 하나의 릴레이 노드는 2개 이상의 블록체인 피어 노드와 연결될 수 있으며, 2개 이상의 릴레이 노드와 연결될 수 있다.
일 실시예로, 본 발명에서의 릴레이 노드(100)는 비트코인, 이더리움 등 다종의 블록체인 피어 노드(200)와 동시에 연결될 수 있다.
이때, 릴레이 노드(100)는 블록체인 피어 노드(200)가 사용하는 블록체인 플랫폼의 피어 연결 프로토콜을 이용하여 다종의 블록체인 피어 노드와 각각 연결될 수 있다.
한편, 블록체인이나 이더리움 등과 같은 퍼블릭 블록 체인 플랫폼은 블록체인 피어 노드(200)와의 연결 및 블록 전송을 위해 기본적으로 TCP 프로토콜을 사용하고 있는바, 본 발명의 일 실시예에서의 릴레이 노드(100) 또한 블록체인 피어 노드(200)가 필요로 하는 TCP 연결을 유지하는 기능을 제공할 수 있다.
또한 본 발명의 일 실시예는, 만약 블록체인 플랫폼이 UDP 프로토콜을 지원하면 릴레이 노드(100)는 TCP 연결 대신 블록 전송을 위한 UDP 포트를 제공할 수 있다.
이하에서는 도 2를 참조하여 본 발명의 일 실시예에서의 릴레이 노드(100)에 대하여 보다 구체적으로 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 릴레이 노드(100)를 설명하기 위한 블록도이다.
본 발명의 일 실시예에 따른 릴레이 노드(100)는 패킷 송수신부(130), 블록체인 종류 식별부(150), 블록패킷 처리부(170), 연결패킷 처리부(160) 및 유저 레벨 패킷 처리부(120)를 포함한다.
한편, 릴레이 노드(100)는 일반적으로 사용하는 물리 서버 상에서 소프트웨어 형태로 구현될 수 있으며, 예를 들어 리눅스(Linux) 등의 운영체제 상에서 구현될 수 있다.
패킷 송수신부(130)는 연결패킷 및 블록패킷 중 적어도 하나를 송수신한다.
여기에서 연결패킷은 연결 요청 정보가 포함된 패킷을 의미하고, 블록패킷은 블록정보가 포함된 패킷을 의미한다.
구체적으로 본 발명의 일 실시예에서 패킷 송수신부(130)는 유저 레벨 패킷 처리부(120)를 통해 네트워크 인터페이스 카드(110)로부터 패킷을 독출하고, 패킷이 블록패킷 및 연결 패킷 중 어느 패킷에 해당하는지를 식별하여 메모리(420) 상에 저장하는 패킷 수신부(132)를 포함할 수 있다.
즉, 후술하는 바와 같이 유저 레벨 패킷 처리부(120)는 DPDK(Data Plane Development Kit)일 수 있으며, 패킷 수신부(132)는 DPDK(120)가 제공하는 Poll-Mode 드라이버를 이용하여 네트워크 인터페이스 카드(110)로부터 패킷을 독출하여 메모리(420) 상에 저장할 수 있다.
그리고 패킷 수신부(132)는 독출한 해당 패킷이 연결패킷인지 블록패킷인지를 구분하게 된다. 이때, 연결패킷과 블록패킷은 패킷 헤더의 목적지 포트 번호의 차이로 구분될 수 있다.
블록체인 종류 식별부(150)는 패킷 수신부(132)에 의해 패킷이 독출되면, 독출된 패킷에 대응하는 블록체인 플랫폼을 식별한다.
즉, 블록체인 종류 식별부(150)는 패킷 수신부(132)에서 연결패킷 또는 블록패킷이 수신되었을 때, 사전에 저장되어 있는 블록체인 플랫폼 시그니처를 이용하여 해당 패킷이 어느 플랫폼의 패킷인지를 식별할 수 있다.
또한, 패킷 송수신부(130)는 UDP 블록 송신부(133)와 TCP 블록 송신부(131)를 포함할 수 있다.
UDP 블록 송신부(133)는 블록패킷을 수신한 경우에 있어, 수신한 블록패킷의 페이로드(Payload)를 전송 대상인 상대 노드 개수만큼 복제한다.
이때, UDP 블록 송신부(133)는 유저 레벨 패킷 처리부(120)를 통해 페이로드를 복제할 수 있으며, 일 실시예로 DPDK 라이브러리를 이용하여 복제할 수 있다.
그 다음 UDP 블록 송신부(133)는 후술하는 연결 패킷 처리부(120)에 의해 관리되는 연결정보 테이블에 기초하여 상대 노드의 IP 주소 및 포트 번호마다 패킷 헤더를 생성하고, 생성된 패킷 헤더를 페이로드와 결한한 후, 최종적으로 완성된 패킷을 네트워크 인터페이스 카드(110)를 통해 전송할 수 있다.
TCP 블록 송신부(131)는 블록패킷을 수신한 경우에 있어, 수신한 블록패킷에 대한 블록정보를 독출하고, 현재 연결되어 있는 각 블록체인 피어 노드와의 TCP 연결정보를 이용하여 블록패킷을 전송한다.
이때, TCP 블록 송신부(131)는 유저 레벨 패킷 처리부(120)를 통해 블록정보를 독출할 수 있으며, 일 실시예로 DPDK의 TCP 스택을 이용하여 블록정보를 독출할 수 있다.
도 3은 릴레이 노드(100)에서 블록패킷을 송수신하는 내용을 설명하기 위한 도면이다.
릴레이 노드(100)와 블록체인 피어 노드(200) 간의 블록체인 송수신 시에는 도 3의 (a) 및 (b)와 같이 사전에 블록체인 피어 노드(200)와의 연결 과정에서 결정한 대로, TCP와 UDP 방식 중 어느 하나를 선택하여 송수신할 수 있다.
반면, 릴레이 노드(100, 100') 간의 통신시에는 도 3의 (c)와 같이 UDP 방식을 기본적으로 사용하게 된다.
다시 도 2를 참조하면, 블록패킷 처리부(170)는 블록패킷을 패킷 송수신부(130)를 통해 릴레이 노드(100)와 연결된 블록체인 피어 노드(200) 및 타 릴레이 노드(100')로 전송 처리한다.
일 실시예로, 블록패킷 처리부(170)는 수신한 패킷이 블록패킷인 경우, 릴레이 노드(100)와 연결되어 있는 블록체인 피어 노드(200) 및 타 릴레이 노드(100')에게 블록패킷을 그대로 전송할 수 있다.
이때, 본 발명의 일 실시예에서 블록패킷 처리부(170)는 UDP 블록 송신부(133)를 이용하여 블록패킷을 타 릴레이 노드(100')로 전송할 수 있다.
또한, 일 실시예로 블록패킷 처리부(170)는 최초 연결시의 프로토콜 정보를 참조하여 TCP 블록 송신부(131)와 UDP 블록 송신부(133)를 필요에 따라 선택적으로 이용하여 블록패킷을 블록체인 피어 노드(200)로 전송할 수 있다.
연결패킷 처리부(160)는 블록패킷을 송수신하기 위해 연결된 블록체인 피어 노드(200) 및 타 릴레이 노드(100')와의 연결정보를 연결패킷에 대응되도록 연결정보 테이블을 업데이트한다.
일 실시예로, 연결패킷 처리부(160)는 패킷 수신부(132)에서 수신한 패킷이 블록체인 피어 노드(200) 또는 타 릴레이 노드(100')로부터 들어오는 연결패킷인 경우, TCP 연결 요청에 대해서는 유저 레벨 패킷 처리부(120), 예를 들어 DPDK의 TCP 스택을 이용하여 TCP 연결을 생성할 수 있다.
일 실시예로, 연결패킷 처리부(160)는 UDP 연결 요청에 대해서는 블록패킷을 수신한 UDP 포트 번호를 해당 노드로 회신할 수 있다.
두 경우 모두 연결 수립이 완료되고 나면, 연결패킷 처리부(160)는 해당 연결정보를 연결정보 테이블에 업데이트한다.
이때, 연결정보 테이블은 블록을 송수신하기로 연결을 맺은 타 릴레이 노드(100') 또는 블록체인 피어 노드(200)의 연결정보를 관리한다.
일 실시예로, 연결정보 테이블에 의해 관리되는 연결정보는 블록체인 플랫폼의 종류 정보, 상대노드의 IP 주소 정보, 프로토콜 종류 정보, 블록 전송에 사용된 포트 번호 정보 및 상대노드에게 가장 최근에 전송한 블록 번호 정보 중 하나 이상을 포함할 수 있다.
한편, 블록패킷 처리부(170)와 연결패킷 처리부(160)는 각 플랫폼마다 구별되되어 복수 개가 구비될 수 있으며, 하나의 처리부에서 복수 개의 플랫폼을 처리하는 형태로 구현될 수도 있음은 물론이다.
유저 레벨 패킷 처리부(120)는 유저 레벨에서 연결패킷 및 블록패킷을 처리한다.
즉, 본 발명의 일 실시예는 릴레이 노드(100)가 수신하고 송신하는 패킷의 고속 처리를 위하여 운영체제에서 제공하는 커널 레벨 패킷 처리부가 아닌 별도의 유저 레벨 패킷 처리부(120)를 사용하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 유저 레벨 패킷 처리부(120)는 커널 레벨 패킷 처리에 비하여 높은 대역폭과 낮은 지연 시간을 제공할 수 있으며, 패킷을 목적에 따라 자유롭게 변경할 수 있다.
일 실시예로, 본 발명에서는 가장 널리 사용되는 유저 레벨 패킷 처리 라이브러리인 Intel DPDK(Data Plane Development Kit)를 사용할 수 있으며, 반드시 이에 한정되는 것은 아니고 다른 종류의 유저 레벨 패킷 처리 라이브러리 또한 동일한 개념으로 사용하여 구현할 수 있음은 물론이다.
한편, 전술한 바와 같이 본 발명의 일 실시예에서 릴레이 노드(100)가 송수신하는 패킷은 연결패킷과 블록패킷 두 종류가 존재한다.
이때, 본 발명의 일 실시예는 각 패킷의 포맷이나 전송을 위한 응용 계층 프로토콜로 해당 블록체인 플랫폼이 정의하고 있는 표준 포맷과 프로토콜을 그대로 사용하여 호환성을 유지할 수 있다.
일 실시예로, 두 릴레이 노드 상호간에 사용되는 연결패킷은 UDP 프로토콜 위에서 최소한의 기능만을 포함한 형태로 정의될 수 있다.
일 실시예로, 릴레이 노드 사이에 사용되는 블록패킷은 단순 패킷 포워딩에만 사용되므로, 추가적인 패킷 포맷이나 프로토콜 없이 첫 릴레이 노드가 수신한 블록체인 플랫폼의 패킷 포맷을 그대로 사용할 수 있다.
한편, 본 발명의 일 실시예에 따른 릴레이 네트워크 시스템(1)은 릴레이 매니저(300)를 더 포함할 수 있다.
릴레이 노드(100)는 하나 이상의 다른 릴레이 노드(100')와 연결되어 릴레이 네트워크를 구성하게 되며, 블록체인 피어 노드(200)는 하나의 릴레이 노드(100)에 각각 연결되어 릴레이 네트워크 상에서 블록을 송수신하게 된다.
이 과정에서 본 발명의 일 실시예는 효율적인 네트워크 구조 구축을 위해 릴레이 매니저(300)를 이용할 수 있다.
이때, 릴레이 매니저(300)는 릴레이 노드(100)와 별도의 물리적인 서버로 구현될 수 있으나, 반드시 이에 한정되는 것은 아니며 하나의 서버 컴퓨터 상에 구현되어 각각 독립적인 프로그램을 통해 실행될 수도 있음은 물론이다.
구체적으로, 릴레이 매니저(300)는 릴레이 노드(100) 및 블록체인 피어 노드(200)로부터의 릴레이 네트워크로의 연결 요청에 따라, 릴레이 노드 테이블을 참조하여 해당 노드가 연결될 릴레이 노드(100)의 IP 주소 및 포트 번호를 제공할 수 있다.
여기에서 릴레이 노드 테이블은 릴레이 노드들이 주기적으로 업데이트하는 블록체인 피어 노드의 연결 개수 정보, 릴레이 노드의 연결 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 포함할 수 있다.
릴레이 매니저(300)는 릴레이 노드(100)로부터 연결 요청을 수신하게 되면, 복수의 후보 릴레이 노드 중 연결 요청한 릴레이 노드와의 RTT(Round Trip Time)가 가장 짧은 릴레이 노드를 우선 할당할 수 있다.
그 다음 릴레이 매니저(300)는 복수의 후보 릴레이 노드 각각에 대하여 직접 연결시의 RTT와, 상기 우선 할당된 릴레이 노드를 경유할 시의 RTT를 비교하고, 직접 연결시의 RTT가 경유시의 RTT보다 기 설정된 배수 미만인 경우(예를 들어, 1.5배수 미만)인 경우, 해당 조건을 만족하는 릴레이 노드를 추가적으로 직접 연결하도록 할당할 수 있다.
한편, 릴레이 노드(100)는 최초 시동시에 릴레이 노드(100)의 존재를 릴레이 매니저(300)에 등록할 수 있다.
또한, 릴레이 노드(100)는 동작 중에 릴레이 매니저(300)와 주기적인 통신을 통해, 현재 릴레이 노드에 연결된 블록체인 피어 노드의 개수 정보, 현재 연결된 타 릴레이 노드 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 업데이트할 수 있다.
블록체인 피어 노드(200)는 릴레이 네트워크로의 연결을 원할 경우 릴레이 매니저(300)로 연결 요청을 하게 되며, 이에 따라 릴레이 매니저(300)로부터 릴레이 노드(100)를 할당받아 연결할 수 있다.
이때, 블록체인 피어 노드(200)의 연결 요청에 대응하여 릴레이 매니저(300)는 블록체인 피어 노드(200)와의 RTT가 가장 짧고, 기 설정된 블록 송수신 대역폭을 초과하지 않으며, 블록체인 피어 노드의 연결 상한 개수를 초과하지 않는 3가지 조건을 만족하는 하나의 릴레이 노드를 할당할 수 있다.
이때, 본 발명은 실시예에 따라 전술한 3가지 조건을 모두 만족하는 하나의 릴레이 노드(100)를 할당하거나, 또는 경우에 따라 3가지 조건 중 하나 이상을 만족하는 하나의 릴레이 노드(100)를 할당하도록 할 수도 있다.
힌편, 릴레이 노드 간의 가장 빠른 통신을 위해서는 릴레이 노드들을 풀 메쉬(Full mesh) 네트워크로 구성하는 것이 가장 좋다.
하지만, 이 경우 릴레이 노드 간의 블록 전송 대역폭이 높아져서, 블록체인 피어 노드에게 할당되는 대역폭이 상대적으로 적어질 수 있다.
따라서, 본 발명의 일 실시예는 전술한 조건에 따라 1차적으로는 가장 가까운 릴레이 노드와의 연결을 통해 릴레이 네트워크 상의 모든 릴레이 노드로의 연결성(Connectivity)을 제공한 뒤, 2차적으로는 간접 연결로 인한 특정 노드와의 RTT가 너무 커지지 않도록 성능 보완을 위해, 조건에 따라 직접 연결을 추가하여 효율적인 네트워크를 구축할 수 있다.
도 4는 본 발명의 일 실시예에서의 릴레이 네트워크 시스템(1)의 구성을 설명하기 위한 블록도이다.
한편, 도 4를 참조하면, 본 발명의 일 실시예에서 릴레이 노드(100), 블록체인 피어 노드(200) 및 릴레이 매니저(300)는 각각 통신모듈(410), 메모리(420) 및 프로세서(430)를 포함하도록 구성될 수 있다.
통신모듈(410)은 각 구성요소 상호 간의 블록 및 각종 데이터를 송수신하기 위한 것으로 유선 통신모듈 또는 무선 통신모듈을 통해 구현될 수 있다.
메모리(420)에는 각 데이터의 송수신 및 처리를 위한 프로그램이 저장되며, 프로세서(430)는 메모리(420)에 저장된 프로그램을 실행시킨다. 여기에서, 메모리(420)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 휘발성 저장장치를 통칭하는 것이다.
예를 들어, 메모리(420)는 콤팩트 플래시(compact flash; CF) 카드, SD(secure digital) 카드, 메모리 스틱(memory stick), 솔리드 스테이트 드라이브(solid-state drive; SSD) 및 마이크로(micro) SD 카드 등과 같은 낸드 플래시 메모리(NAND flash memory), 하드 디스크 드라이브(hard disk drive; HDD) 등과 같은 마그네틱 컴퓨터 기억 장치 및 CD-ROM, DVD-ROM 등과 같은 광학 디스크 드라이브(optical disc drive) 등을 포함할 수 있다.
참고로, 본 발명의 실시예에 따른 도 1 내지 도 4에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 형태로 구현될 수 있으며, 소정의 역할들을 수행할 수 있다.
그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.
구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.
이하에서는 도 5를 참조하여 본 발명의 일 실시예에 따른 블록체인 피어 노드 및 타 릴레이 노드 중 하나 이상과 연결된 릴레이 노드에서의 동작 방법에 대해 설명하도록 한다.
도 5는 릴레이 노드에서의 동작 방법을 설명하기 위한 순서도이다.
릴레이 노드의 동작은 패킷의 수신과 함께 시작된다(S110).
릴레이 노드는 패킷을 수신함에 따라, 수신한 패킷이 연결 요청 정보가 포함된 연결패킷인지, 아니면 블록정보가 포함된 블록패킷인지 여부를 판단한다(S120).
다음으로, 릴레이 노드는 수신한 패킷이 어느 블록체인 플랫폼의 패킷인지를 식별하고(S130), 식별이 완료됨에 따라 각 블록체인 플랫폼 별로 블록패킷과 연결패킷을 처리하게 된다.
이때, 릴레이 노드는 유저 레벨 상태에서 네트워크 인터페이스 카드로부터 패킷을 독출하고, 독출한 패킷이 블록패킷 및 연결패킷 중 어느 패킷에 해당하는지 식별됨에 따라 메모리 상에 저장한 후, 독출된 패킷에 대응하는 블록체인 플랫폼을 식별할 수 있다.
다음으로, 릴레이 노드는 연결정보 테이블을 참조하여 블록패킷을 릴레이 노드와 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하고(S140), 블록패킷이 전송됨에 따라 릴레이 노드와 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 연결패킷에 대응되도록 연결정보 테이블을 업데이트한다(S150).
한편, 상술한 설명에서, 단계 S110 내지 S150은 본 발명의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다. 아울러, 기타 생략된 내용이라 하더라도 도 1 내지 도 4의 내용은 도 5의 릴레이 노드의 동작 방법에도 적용될 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 매체에 저장된 컴퓨터 프로그램 또는 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템(100)은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1: 릴레이 네트워크 시스템
100: 릴레이 노드
200: 블록체인 피어 노드
300: 릴레이 매니저
410: 통신모듈
420: 메모리
430: 프로세서

Claims (20)

  1. 메모리 및 상기 메모리에 저장된 프로그램을 실행시키는 프로세서로 구성되며, 블록체인 피어 노드 및 타 릴레이 노드 중 하나 이상과 연결된 릴레이 노드에 있어서,
    연결 요청 정보가 포함된 연결패킷 및 블록정보가 포함된 블록패킷 중 적어도 하나를 송수신하는 패킷 송수신부,
    상기 블록패킷을 상기 패킷 송수신부를 통해 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 블록패킷 처리부,
    상기 블록패킷을 송수신하기 위해 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트하는 연결패킷 처리부 및
    유저 레벨에서 상기 연결패킷 및 블록패킷을 처리하기 위한 유저 레벨 패킷 처리부를 포함하는 릴레이 노드.
  2. 제 1 항에 있어서,
    상기 패킷 송수신부는 상기 유저 레벨 패킷 처리부를 통해 네트워크 인터페이스 카드로부터 패킷을 독출하고, 상기 패킷이 블록패킷 및 연결패킷 중 어느 패킷에 해당하는지 식별하여 메모리 상에 저장하는 패킷 수신부를 포함하는 것인 릴레이 노드.
  3. 제 2 항에 있어서,
    상기 독출된 패킷에 대응하는 블록체인 플랫폼을 식별하는 블록체인 종류 식별부를 더 포함하는 릴레이 노드.
  4. 제 1 항에 있어서,
    상기 패킷 송수신부는 상기 수신한 블록패킷의 페이로드를 전송 대상인 상대노드 개수만큼 상기 유저 레벨 패킷 처리부를 통해 복제하고, 상기 연결정보 테이블에 기초하여 상기 상대 노드의 IP 주소 및 포트 번호마다 패킷 헤더를 생성하여 상기 페이로드와 결합한 후 네트워크 인터페이스 카드를 통해 전송하는 UDP 블록 송신부를 포함하는 것인 릴레이 노드.
  5. 제 1 항에 있어서,
    상기 패킷 송수신부는 상기 수신한 블록패킷을 상기 유저 레벨 패킷 처리부의 TCP 스택을 이용하여 블록정보를 독출하고, 상기 연결된 블록체인 피어 노드의 TCP 연결정보를 이용하여 상기 블록패킷을 전송하는 TCP 블록 송신부를 포함하는 것인 릴레이 노드.
  6. 제 1 항에 있어서,
    상기 연결정보는 블록체인 플랫폼 종류 정보, 상대노드의 IP 주소 정보, 프로토콜 종류 정보, 블록 전송에 사용된 포트 번호 정보 및 최근 전송한 블록 번호 정보 중 하나 이상을 포함하는 것인 릴레이 노드.
  7. 제 1 항에 있어서,
    상기 유저 레벨 패킷 처리부는 DPDK(Data Plane Development Kit)인 것인 릴레이 노드.
  8. 릴레이 네트워크 시스템에 있어서,
    상호 연결되어 릴레이 네트워크를 구성하는 복수의 릴레이 노드 및
    상기 릴레이 노드와 각각 연결된 하나 이상의 블록체인 피어 노드를 포함하되,
    상기 릴레이 노드는 유저 레벨에서 연결 요청 정보가 포함된 연결패킷 및 블록정보가 포함된 블록패킷 중 적어도 하나를 수신하며, 상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하고, 상기 전송 처리가 완료됨에 따라 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트하는 것을 특징으로 하는 릴레이 네트워크 시스템.
  9. 제 8 항에 있어서,
    상기 릴레이 노드 및 상기 블록체인 피어 노드로부터의 릴레이 네트워크로의 연결 요청에 따라, 릴레이 노드 테이블을 참조하여 해당 노드가 연결될 릴레이 노드의 IP 주소 및 포트 번호를 제공하는 릴레이 매니저를 더 포함하는 릴레이 네트워크 시스템.
  10. 제 9 항에 있어서,
    상기 릴레이 노드 테이블은 릴레이 노드가 주기적으로 업데이트하는 블록체인 피어 노드의 연결 개수 정보, 릴레이 노드의 연결 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 포함하는 것인 릴레이 네트워크 시스템.
  11. 제 9 항에 있어서,
    상기 릴레이 매니저는 상기 릴레이 노드로부터 상기 연결 요청을 수신함에 따라, 복수의 후보 릴레이 노드 중 상기 연결 요청한 릴레이 노드와 RTT(Round Trip Time)가 가장 짧은 릴레이 노드를 우선 할당하는 것인 릴레이 네트워크 시스템.
  12. 제 11 항에 있어서,
    상기 릴레이 매니저는 상기 후보 릴레이 노드 각각에 대하여 직접 연결시의 RTT와, 상기 우선 할당된 릴레이 노드를 경유시의 RTT를 비교하고,
    상기 직접 연결시의 RTT가 경유시의 RTT보다 기 설정된 배수 미만인 경우 해당 후보 릴레이 노드를 추가적으로 직접 연결하도록 할당하는 것인 릴레이 네트워크 시스템.
  13. 제 9 항에 있어서,
    상기 릴레이 노드는 상기 릴레이 매니저로 현재 연결된 블록체인 피어 노드 개수 정보, 타 릴레이 노드 개수 정보, 블록 수신 대역폭 정보 및 블록 송신 대역폭 정보 중 하나 이상을 업데이트하는 것인 릴레이 네트워크 시스템.
  14. 제 9 항에 있어서,
    상기 블록체인 피어 노드는 상기 릴레이 매니저로 상기 릴레이 네트워크로의 연결을 요청함에 따라, 릴레이 노드를 상기 릴레이 매니저로부터 할당받아 연결하는 것인 릴레이 네트워크 시스템.
  15. 제 14 항에 있어서,
    상기 릴레이 매니저는 상기 블록체인 피어 노드로부터 상기 연결 요청을 수신함에 따라, 상기 블록체인 피어 노드와의 RTT가 가장 짧고, 기 설정된 블록 송수신 대역폭을 초과하지 않으며, 블록체인 피어 노드의 연결 상한 개수를 초과하지 않는 릴레이 노드를 할당하는 것인 릴레이 네트워크 시스템.
  16. 블록체인 피어 노드 및 타 릴레이 노드 중 하나 이상과 연결된 릴레이 노드에서의 동작 방법에 있어서,
    패킷을 수신하는 단계;
    상기 수신한 패킷이 연결 요청 정보가 포함된 연결패킷인지 블록정보가 포함된 블록패킷인지 여부를 판단하는 단계;
    상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계;
    상기 블록패킷이 전송됨에 따라 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드와의 연결정보를 상기 연결패킷에 대응되도록 연결정보 테이블을 업데이트하는 단계를 포함하되,
    상기 연결패킷 및 블록패킷은 유저 레벨에서 처리되는 것을 특징으로 하는 릴레이 노드에서의 동작 방법.
  17. 제 16 항에 있어서,
    상기 패킷을 수신하는 단계는,
    상기 유저 레벨 상태에서 네트워크 인터페이스 카드로부터 패킷을 독출하는 단계;
    상기 패킷이 블록패킷 및 연결패킷 중 어느 패킷에 해당하는지 식별됨에 따라 메모리 상에 저장하는 단계; 및
    상기 독출된 패킷에 대응하는 블록체인 플랫폼을 식별하는 단계를 포함하는 릴레이 노드에서의 동작 방법.
  18. 제 16 항에 있어서,
    상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계는,
    상기 수신한 블록패킷의 페이로드를 UDP로 전송할 대상인 상대노드 개수만큼 상기 유저 레벨에서 복제하는 단계;
    상기 연결정보 테이블에 기초하여 상기 상대 노드의 IP 주소 및 포트 번호마다 패킷 헤더를 생성하는 단계; 및
    상기 생성된 패킷 헤더를 상기 페이로드와 결합하여 네트워크 인터페이스 카드를 통해 전송하는 단계를 포함하는 릴레이 노드에서의 동작 방법.
  19. 제 16 항에 있어서,
    상기 블록패킷을 상기 연결된 블록체인 피어 노드 및 타 릴레이 노드로 전송 처리하는 단계는,
    상기 유저 레벨에서 TCP 스택을 이용하여 상기 수신한 블록패킷의 블록정보를 독출하는 단계; 및
    상기 연결된 블록체인 피어 노드의 TCP 연결정보를 이용하여 상기 블록패킷을 전송하는 단계를 포함하는 릴레이 노드에서의 동작 방법.
  20. 제 16 항에 있어서,
    상기 연결정보는 블록체인 플랫폼 종류 정보, 상대노드의 IP 주소 정보, 프로토콜 종류 정보, 블록 전송에 사용된 포트 번호 정보 및 최근 전송한 블록 번호 정보 중 하나 이상을 포함하는 것인 릴레이 노드에서의 동작 방법.
KR1020190147205A 2019-11-15 2019-11-15 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법 KR20210059574A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190147205A KR20210059574A (ko) 2019-11-15 2019-11-15 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법
US17/097,248 US11831546B2 (en) 2019-11-15 2020-11-13 Relay node, relay network system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190147205A KR20210059574A (ko) 2019-11-15 2019-11-15 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210059574A true KR20210059574A (ko) 2021-05-25

Family

ID=75909010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190147205A KR20210059574A (ko) 2019-11-15 2019-11-15 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US11831546B2 (ko)
KR (1) KR20210059574A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220036346A1 (en) * 2020-07-28 2022-02-03 Sensoriant, Inc. Systems and methods for re-organizing blockchains for efficient operations
US20220417045A1 (en) * 2021-06-28 2022-12-29 Medellin Applied Research Concepts, LLC Device for implementing gated array blockchain protection codes for iot devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101727525B1 (ko) 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치
WO2018125989A2 (en) * 2016-12-30 2018-07-05 Intel Corporation The internet of things
US11587050B2 (en) 2017-09-12 2023-02-21 Northwestern University Blockchain distribution network
KR20190067581A (ko) 2017-12-07 2019-06-17 한국전자통신연구원 블록체인 트랜잭션 분산 처리 장치 및 방법
KR102417067B1 (ko) 2017-12-08 2022-07-05 한국전자통신연구원 블록 체인 네트워크의 노드에서 수행되는 블록 생성 방법 및 장치
KR20210134638A (ko) * 2019-03-29 2021-11-10 인텔 코포레이션 자율 차량 시스템
US11641364B2 (en) * 2020-03-03 2023-05-02 International Business Machines Corporation Cross-domain state synchronization

Also Published As

Publication number Publication date
US20210152471A1 (en) 2021-05-20
US11831546B2 (en) 2023-11-28

Similar Documents

Publication Publication Date Title
US20190327175A1 (en) Methods, apparatuses and computer program products for transmitting data
KR102349208B1 (ko) 서브넷 관리(sa) 쿼리 캐싱을 통한 동적 클라우드 제공을 위한 시스템 및 방법
US7941613B2 (en) Shared memory architecture
JP4696089B2 (ja) 分散ストレージシステム
CN114844626A (zh) 安全区块链路由技术
US9880870B1 (en) Live migration of virtual machines using packet duplication
KR101141126B1 (ko) P2p 네트워크에서 노드들이 비정상인지 아닌지를 진단하기 위한 방법, 장치 및 시스템
US10574477B2 (en) Priority tagging based solutions in fc sans independent of target priority tagging capability
US10466935B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
CN110915188A (zh) 用于区块链网络中的高效传播的概率中继
KR101995056B1 (ko) 분산 파일 시스템 및 이의 운영방법
KR20210059574A (ko) 릴레이 노드, 릴레이 네트워크 시스템 및 이의 동작 방법
US20150215345A1 (en) Path selection using tcp handshake in a multipath environment
CN112954406B (zh) 数据下载方法、装置、计算机设备和存储介质
CN108337116B (zh) 消息保序方法及装置
CN103503421A (zh) 负荷平衡系统中的sctp关联端点重定位
US20220046028A1 (en) Method and system for determining a state of an account in a network device running a light client protocol of a distributed ledger technology network
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN113885797A (zh) 一种数据存储方法、装置、设备及存储介质
KR20210152365A (ko) 데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법
CN110636149B (zh) 远程访问方法、装置、路由器及存储介质
US20200341968A1 (en) Differential Update of Local Cache from Central Database
US12002043B2 (en) Method for enabling efficient evaluation of transactions in a distributed ledger network
WO2023143103A1 (zh) 报文处理方法、网关设备及存储系统
US20220385726A1 (en) Information processing apparatus, computer-readable recording medium storing program, and information processing method