KR102439923B1 - 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템 - Google Patents

가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템 Download PDF

Info

Publication number
KR102439923B1
KR102439923B1 KR1020200153792A KR20200153792A KR102439923B1 KR 102439923 B1 KR102439923 B1 KR 102439923B1 KR 1020200153792 A KR1020200153792 A KR 1020200153792A KR 20200153792 A KR20200153792 A KR 20200153792A KR 102439923 B1 KR102439923 B1 KR 102439923B1
Authority
KR
South Korea
Prior art keywords
broker
container
domain
domains
containers
Prior art date
Application number
KR1020200153792A
Other languages
English (en)
Other versions
KR20220067269A (ko
Inventor
박우수
Original Assignee
(주)젠토
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)젠토 filed Critical (주)젠토
Priority to KR1020200153792A priority Critical patent/KR102439923B1/ko
Publication of KR20220067269A publication Critical patent/KR20220067269A/ko
Application granted granted Critical
Publication of KR102439923B1 publication Critical patent/KR102439923B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)

Abstract

본 발명에 따른 가상화 장비를 이용한 데이터 분산 서비스(Data Distribution Service, 이하 DDS) 시스템은, 각각이 적어도 하나의 가상화 장비를 포함하는 복수의 도메인들 및 상기 복수의 도메인들에 할당된 브로커 컨테이너들의 정보를 수집하고 관리하는 브로커 매니저를 포함하되, 상기 가상화 장비는, 하드웨어 상에 가상 머신으로 생성되고, 상기 DDS 시스템의 참여자로 동작하는 컨테이너들을 포함하며, 상기 컨테이너들 중 어느 하나가 상기 브로커 컨테이너로 동작할 수 있다.

Description

가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템{Method for data distribution service using virtual device, data distribution service system}
본 발명은 가상화 장비를 이용한 데이터 분산 서비스 방법 데이터 분산 서비스 시스템에 관한 것으로, 보다 구체적으로 컨테이너 기반 가상화 시스템에서 RTPS(The Real-Time Publish Subscribe) 프로토콜을 통해 데이터 송수신을 수행하는 데이터 분산 서비스를 위한 방법 및 장치, 데이터 분산 서비스 시스템에 관한 것이다.
데이터 분산 서비스(Data Distribution Service, 이하 DDS)는 분산 환경을 위한 데이터 중심의 발간/구독(publish/subscribe) 방식의 통신을 위한 미들웨어의 표준 규격으로서, OMG(Object Management Group)에서 표준화되었다. DDS는 크게 데이터 공유 영역인 도메인(Domain)과 도메인 참여자(Domain Participant)(또는, 참여자)로 구성된다. 하나의 도메인에는 각각의 데이터에 대한 다수의 발간자(publisher)와 구독자(subscriber)가 존재하며 미리 약속된 데이터 타입인 토픽(topic)의 샘플을 교환하게 된다. DDS에서 데이터는 마치 신문을 발간 또는 구독하는 형태로 개체들 간에 분산된다.
이러한 DDS 미들웨어는 응용프로그램과 운영 체제 사이에 존재하는 서비스 계층으로서 API를 제공하며, 응용 프로그램은 이를 통해 쉽게 다른 개체와 통신을 수행할 수 있다. DDS 미들웨어는 크게 DCPS(Data-Centric Publish-Subscribe) 계층 및 RTPS(The Real-Time Publish Subscribe) 프로토콜을 사용하는 계층으로 구분될 수 있다.
DCPS 계층은 분산 환경을 위한 발간/구독의 명세를 갖는 미들웨어 인터페이스로서, 분산 환경을 위한 데이터 중심의 발간-구독 프로그래밍 모델에 대한 표준화된 인터페이스를 제공할 수 있다. RTPS 프로토콜을 사용하는 계층은 실제 데이터가 발간/구독되는 계층으로서, 도메인 형성과 사용할 데이터의 타입을 결정하고 도메인에 참여하는 원격지의 참여자들을 동적으로 탐색(Discovery)하는 기능을 제공할 수 있다. 한편, DCPS 계층은 QoS를 설정할 수 있는데, 이때 설정된 QoS에 따라 신뢰성(Reliable) 또는 비신뢰성(Unreliable)을 갖는 데이터 통신을 수행할 수 있다.
실시 예들은, 컨테이너를 이용한 가상화 장비들을 이용하여 상기와 같은 DDS를 이용하여 데이터 송수신을 수행할 수 있는 데이터 분산 서비스를 위한 방법 및 장치, 데이터 분산 서비스 시스템을 제공한다.
일 실시 예에 따른 가상화 장비를 이용한 데이터 분산 서비스(Data Distribution Service, 이하 DDS) 시스템은, 각각이 적어도 하나의 가상화 장비를 포함하는 복수의 도메인들 및 상기 복수의 도메인들에 할당된 브로커 컨테이너들의 정보를 수집하고 관리하는 브로커 매니저를 포함하되, 상기 가상화 장비는, 하드웨어 상에 가상 머신으로 생성되고, 상기 DDS 시스템의 참여자로 동작하는 컨테이너들을 포함하며, 상기 컨테이너들 중 어느 하나가 상기 브로커 컨테이너로 동작할 수 있다.
상기 복수의 도메인들 각각은, 상기 적어도 하나의 가상화 장비 각각을 노드로 지정하고, 상기 노드를 제어 및 스케줄링하는 마스터 노드 장치를 포함하고, 상기 브로커 매니저는, 임의의 도메인으로부터 브로커 컨테이너 요청이 수신되면, 상기 마스터 노드 장치로 상기 브로커 컨테이너 요청을 전달할 수 있다.
상기 마스터 노드 장치는, 상기 브로커 컨테이너 요청에 응답하여, 상기 임의의 도메인에 포함된 컨테이너들 중 어느 하나를 상기 브로커 컨테이너로 구동할 수 있다.
상기 복수의 도메인들 각각은, 상기 브로커 컨테이너의 동작을 위해 필요한 데이터 및 상기 브로커 컨테이너의 정보 중 적어도 하나를 포함하는 컨테이너 이미지를 저장하는 저장소를 더 포함하고, 상기 컨테이너들은, 상기 컨테이너 이미지를 로드할 수 있다.
상기 복수의 도메인들은, 적어도 하나의 제1 컨테이너 및 제1 브로커 컨테이너를 포함하는 제1 도메인 및 적어도 하나의 제2 컨테이너 및 제2 브로커 컨테이너를 포함하는 제2 도메인을 포함하고, 상기 제1 브로커 컨테이너 및 상기 제2 브로커 컨테이너는, 상기 적어도 하나의 제1 컨테이너와 상기 적어도 하나의 제2 컨테이너 사이의 통신을 중계할 수 있다.
상기 제1 브로커 컨테이너는, 상기 적어도 하나의 제2 컨테이너를 위한 상기 제1 도메인의 내부 식별자를 할당하고, 상기 적어도 하나의 제1 컨테이너에 대한 탐색 메시지를 상기 제2 브로커 컨테이너로 전달하며, 상기 탐색 메시지는, 상기 제2 브로커 컨테이너가 상기 적어도 하나의 제1 컨테이너를 위한 상기 제2 도메인의 내부 식별자를 할당하기 위해 이용될 수 있다.
상기 제1 브로커 컨테이너는, 상기 제2 브로커 컨테이너를 위한 내부 식별자를 할당하고, 상기 제2 브로커 컨테이너로 상기 제1 브로커 컨테이너의 식별 정보를 포함하는 얼라이브 메시지를 전송하며, 상기 얼라이브 메시지는 상기 제2 브로커 컨테이너가 상기 제1 브로커 컨테이너를 위한 상기 제2 도메인의 내부 식별자를 할당하기 위해 전송될 수 있다.
상기 제1 브로커 컨테이너는, 상기 제2 브로커 컨테이너로부터 상기 얼라이브 메시지에 응답하여 상기 제2 브로커 컨테이너의 식별 정보를 포함하는 응답 메시지가 수신되면, 상기 적어도 하나의 제2 컨테이너의 식별 정보를 상기 할당된 내부 식별자와 연계하여 매핑 정보로써 저장할 수 있다.
일 실시 에에 따른 가상화 장비를 이용한 데이터 분산 서비스(Data Distribution Service, 이하 DDS) 시스템의 데이터 분산 서비스 방법은, 상기 브로커 매니저가, 임의의 도메인으로부터 브로커 컨테이너 요청이 수신되면, 상기 임의의 도메인 내의상기 마스터 노드 장치로 상기 브로커 컨테이너 요청을 전달하는 단계 및 상기 마스터 노드 장치가, 상기 브로커 컨테이너 요청에 응답하여, 상기 임의의 도메인에 포함된 컨테이너들 중 어느 하나를 상기 브로커 컨테이너로 구동하는 단계를 포함할 수 있다.
상기 방법은, 상기 임의의 도메인에 포함된 컨테이너들이, 상기 컨테이너 이미지를 로드하는 단계를 더 포함할 수 있다.
상기 방법은, 상기 브로커 컨테이너가, 상기 임의의 도메인으로부터 상기 구동된 브로커 컨테이너에 대한 정보를 수신하는 단계 및 상기 브로커 컨테이너가, 상기 브로커 컨테이너에 대한 정보를 저장 및 관리하는 단계를 더 포함할 수 있다.
실시 예들에 따른 데이터 분산 서비스를 위한 방법 및 데이터 분산 서비스 시스템은 컨테이너를 이용한 가상화 장비에 대하여 데이터 분산 서비스를 제공할 수 있다.
도 1은 하이퍼바이저 기반 가상화 시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 2는 컨테이너 기반 가상화 시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 3은 다중 도메인으로 구성된 DDS 시스템의 일반적인 구성을 나타낸 도면이다.
도 4는 일 실시 예에 따른 브로커 매니저를 포함한 DDS 시스템을 나타낸 도면이다.
도 5는 및 도 6은 도 4에 도시된 DDS 시스템에서 브로커 컨테이너를 등록하는 방법을 설명하기 위한 도면들이다.
도 7은 일 실시 예에 따른 다중 도메인으로 구성된 DDS 시스템을 나타낸 도면이다.
도 8은 도 7에 도시된 DDS 시스템에서 브로커 장치 간 탐색 동작을 설명하기 위한 흐름도이다.
도 9는 도 8의 메시지 패킷 구조를 나타낸 도면이다.
도 10은 도 7에 도시된 DDS 시스템에서 참여자 탐색 동작을 설명하기 위한 흐름도이다.
본 명세서의 실시 예를 설명함에 있어 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우, 그 상세한 설명은 생략될 수 있다.
본 명세서에서 사용되는 "포함한다," "포함할 수 있다." 등의 표현은 개시된 해당 기능, 동작, 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작, 구성요소 등을 제한하지 않는다. 또한, 본 명세서에서, "포함하다." 또는 "가지다." 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 본 명세서에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하, 첨부된 도면을 참조하여 실시 예들을 설명한다.
도 1은 하이퍼바이저 기반 가상화 시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 하이퍼바이저(Hypervisor) 기반의 가상화 시스템에서 하드웨어(101) 상에 호스트 운영 체제(Operating System; OS)(102)가 설치되고, 호스트 OS(102)를 통하여 하이퍼바이저(103)가 구도된다. 그러면, 하이퍼바이저(130)가 자원을 분할하여 가상 머신(104)을 생성하고 각각의 가상 머신(104)에 게스트 OS(105)를 설치하여 개별적으로 운영한다. 각각의 가상 머신(104)은 각각의 사용자에게 할당되어, 사용자는 마치 물리적으로 분리된 독립적인 장치를 사용하는 것으로 인식하고 게스트 OS(105) 상에서 다양한 응용 프로그램(application)(106)을 구동하게 된다.
이러한 가상화 시스템은, 하나의 물리적 시스 템에 독자적으로 여러 서버 환경을 운영할 수 있다는 장점이 있으나, 각각의 가상 머신(104)에 개별 게스트 OS(105)를 위한 자원을 할당해야 하므로, 자원 낭비가 크다는 단점을 갖는다. 또한, 하이퍼바이저 기반 가상화 시스템에서는, 응용 프로그램(106)이 호스트 OS(102) 자원을 이용하기 위하여 반드시 게스트 OS(105)를 거쳐야 한다는 점에서 시스템 효율이 떨어진다는 문제가 있다.
이러한 문제를 해결하기 위하여, 최근에는 컨테이너(container) 기반 가상화 시스템이 개발되고 있다.
도 2는 컨테이너 기반 가상화 시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 컨테이너 기반 가상화 시스템은, 하드웨어(201) 상에 호스트 OS(202)를 설치하고, 호스트 OS(202) 상에 복수의 컨테이너(203)를 가상 머신으로 생성하는 기술이다. 각각의 컨테이너(203)는 개별 데이터(예를 들어, Binary Code, Library 등)는 컨테이너 내에 독립적으로 설치하여 사용하고, 공통 데이터는 컨테이너(203) 간 공유를 통해 이용함으로써, 자원을 효율적으로 활용할 수 있도록 한다. 구체적으로, 복수의 컨테이너(203)들에 대한 공통 데이터는 호스트 OS(202) 상에 베이스 이미지로 저장되고, 복수의 컨테이너(203)들은 베이스 이미지에 접근하여 공통 데이터를 로드할 수 있다. 또한, 각각의 컨테이너(203)의 개별 데이터는 각각의 컨테이너(203) 내부의 델타(delta) 영역에 개별 이미지로 저장될 수 있다.
상기와 같은 컨테이너 기반 가상화 시스템에서, 각각의 컨테이너는 호스트 OS(202)에서 가상화 시스템과 관련하여 제공하는 서비스와 동일한 서비스(예를 들어, 사용자 인터페이스 서비스)를 독립적으로 제공할 수 있다.
일 실시 예에서, 상술한 컨테이너 기반 가상화 시스템을 이용하는 장비(이하, 가상화 장비)가 DDS 시스템에 이용될 수 있다. 가상화 장비는, 예를 들어 데스크탑 컴퓨터, 노트북 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 셋톱 박스, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 등 다양한 형태의 단말 장치일 수 있다.
이하에서는, 가상화 장비가 적용된 DDS 시스템의 구조를 구체적으로 설명한다.
도 3은 다중 도메인으로 구성된 DDS 시스템의 일반적인 구성을 나타낸 도면이다.
도 3을 참조하면, DDS 시스템은 복수의 도메인들(1, 2, 3)을 포함한다. 도메인(1, 2, 3) 각각은 복수의 가상화 장치들을 포함할 수 있다. 가상화 장치들은 RTPS 통신 객체로 동작하며 노드라고 지칭될 수 있다.
각각의 가상화 장치들은 도 2에 도시된 것과 같이 하드웨어(201) 상에 존재하는 복수의 컨테이너(203)들을 포함할 수 있다. 이러한 컨테이너(203)들은 도메인(1, 2, 3) 내의 참여자들(1a, 2a, 3a)로써 동작할 수 있다. 일 실시 예에서, 하나의 컨테이너(203)가 하나의 참여자를 포함할 수 있다. 또는, 다른 실시 예에서, 하나의 컨테이너(203)가 복수의 참여자들을 포함할 수도 있다.
컨테이너로 구성된 각각의 참여자(1a, 2a, 3a)는 DDS 데이터를 발간하기 위한 적어도 하나의 라이터(writer)(또는, 데이터라이터(datawriter), 발간 개체)를 포함할 수 있다. 또한, 각각의 참여자(1a, 2a, 3a)는 발간된 DDS 데이터를 수신하기 위한 적어도 하나의 리더(reader)(또는, 데이터리더(datareader), 구독 개체)를 포함할 수 있다.
각각의 참여자(1a, 2a, 3a)는 하나 이상의 발간자 또는 구독자를 가질 수 있다. 발간자는 연계된 라이터를 통하여, 등록된 토픽에 대한 토픽 데이터를 발간하고, 구독자는 연계된 리더를 통하여, 등록된 토픽에 대한 토픽 데이터를 구독할 수 있다.
발간자 및 구독자는 각각의 참여자(1a, 2a, 3a)를 구성하는 실질적인 통신 주체로써, 엔드포인트(endpoint)로 지칭될 수 있다.
발간자와 구독자의 응용 프로그램에서는 특정 데이터의 주제를 나타내는 토픽을 생성하고, 이를 라이터와 리더에 관심 토픽으로 등록함으로써 상호 간에 정보를 교환한다. 관심 토픽이 상이한 발간자와 구독자는 토픽 데이터를 교환하지 않기 때문에 이들 간에는 간섭이 발생하지 않는다. 즉, DDS 시스템은 서버가 없는 피어-투-피어(Peer-to-Peer) 구조로서, 도메인 내에서 같은 관심 토픽을 갖는 참여자끼리만 통신을 한다. 관심 토픽에 대응되는 데이터는 라이터 및 DDS 네트워크를 통해서 DDS 데이터 패킷으로 전송되고, 리더는 수신된 DDS 데이터 패킷에 포함된 토픽 데이터를 확인하여 응용 프로그램에게 전달한다.
상술한 동작을 수행하기 위해, 도메인(1, 2, 3) 내에서 각각의 참여자(1a, 2a, 3a)는 RTPS 프로토을 사용하여 다른 참여자를 발견하기 위한 DDS 탐색을 수행한다. 이를 구체적으로 설명하면 다음과 같다.
각각의 참여자(1a, 2a, 3a)는 PDP 메시지를 멀티캐스트 방식으로 전송하여, 도메인(1, 2, 3) 내의 다른 참여자에게 자신의 존재를 알린다. 보다 구체적으로, 각각의 참여자(1a, 2a, 3a)를 위한 DDS 미들웨어는 PDP 메시지를 전송하여, 다른 참여자에게 자신의 존재를 알릴 수 있다. PDP 메시지는 해당 PDP 메시지를 전송하는 참여자(1a, 2a, 3a)에게 할당되는 전역 고유 식별자(Global Unique IDentifier, 이하 GUID), 참여자(1a, 2a, 3a)의 프로토콜 버전, 벤더 식별자, 멀티캐스트 로케이터(IP 주소 및 포트 번호 등) 및 참여자를 추적하는 방법 등에 대한 정보를 포함할 수 있다.
여기서, GUID는 도메인(1, 2, 3) 내에서 각각의 참여자(1a, 2a, 3a)를 식별하기 위해 할당되는 것으로, 다른 참여자는 PDP 메시지 또는 DDS 데이터 패킷의 GUID로부터 해당 PDP 메시지 또는 DDS 데이터 패킷을 전송한 다른 참여자가 자신과 동일한 도메인(1, 2, 3) 내에 존재하는 특정 참여자임을 식별할 수 있다. 이와 같이 참여자들(1a, 2a, 3a)은 PDP 메시지를 전달 및 교환함으로써, 동일한 도메인(1, 2, 3)에 속한 다른 참여자를 발견할 수 있다.
PDP 메시지 교환 이후에, 각각의 참여자(1a, 2a, 3a)는 PDP 메시지 교환에 의해 탐색된 다른 참여자에게, EDP 메시지를 유니캐스트 방식으로 전송한다. 보다 구체적으로, 각각의 참여자(1a, 2a, 3a)는 적어도 하나의 라이터 및/또는 리더에 대응하여 적어도 하나의 엔드포인트(발간자 및/또는 구독자)를 생성할 수 있다. DDS 미들웨어는 다른 참여자에게 EDP 메시지를 전송하여, 자신이 갖고 있는 엔드포인트에 대한 정보를 알릴 수 있다. 여기서 정보는 해당 엔트포인트가 발간자인지 아니면 구독자인지에 대한 정보, 해당 엔드포인트가 발간하거나 구독하는 토픽(등록된 토픽) 및 QoS 등을 포함할 수 있다.
탐색이 완료되면, 각각의 참여자(1a, 2a, 3a)는 탐색 과정에서 획득된 정보에 기초하여 DDS 데이터 패킷을 송수신한다. 즉, 참여자들(1a, 2a, 3a) 내부의 발간자들 및 구독자들은 탐색 과정에서 획득된 정보를 기초로, 동일한 토픽에 대한 데이터 패킷을 교환한다.
상술하 바와 같이 RTPS 프로토콜을 사용하는 DDS 시스템에서, 참여자들은 멀티캐스트 방식으로 다른 참여자를 탐색한다. 하나의 도메인 내에 포함된 가상화 장비들은, 해당 가상화 장비들을 위해 별도로 생성된 소프트웨어 브릿지를 통해 상술한 탐색 메시지를 송수신하여 다른 가상화 장비 내의 컨테이너들(즉, 참여자들)을 탐색할 수 있다. 반면에, 상이한 도메인 내에 포함된 가상화 장비들의 컨테이너들은, 외부 도메인의 참여자와 통신하기 위해 개별적으로 포트를 할당 받아야 한다. 이 경우, 네트워크 구조에 따라 원거리의 도메인과는 통신이 불가하여, 외부 도메인의 컨테이너들(즉, 참여자들)을 탐색할 수 없어 문제된다.
이하에서는, 이러한 문제를 해결하기 위해 가상화된 브로커 장치(즉, 브로커 컨테이너)를 이용하여, 가상화 장비를 이용한 다중 도메인 DDS 시스템을 지원하는 방법을 설명한다.
도 4는 일 실시 예에 따른 브로커 매니저를 포함한 DDS 시스템을 나타낸 도면이다.
도 4를 참조하면, 일 실시 예에 따른 DDS 시스템은 도메인(1) 및 도메인(1)을 구성하는 복수의 가상화 장비들을 포함한다. 가상화 장비들 각각은 하드웨어를 구비하고, 하드웨어 상에 할당된 적어도 하나의 컨테이너들을 포함할 수 있다. 컨테이너들은 하나 또는 다수의 참여자(1a)들을 포함할 수 있다.
도메인(1) 내의 가상화 장비들을 위해 소프트웨어 브릿지가 생성된다. 가상화 장비 내의 컨테이너들을 소프트웨어 브릿지를 통해 통신할 수 있다. 즉, 도메인(1) 내의 가상화 장비들에 포함된 컨테이너들은, 소프트웨어 브릿지를 통해 RTPS 탐색 메시지를 교환하여 서로를 탐색할 수 있다.
가상화 장비들은 RTPS 통신 객체로 노드로 지칭될 수 있다. 이러한 실시 예에서, 도메인(1)은 각각의 가상화 장치들을 노드들로 지정하고, 노드들의 전체적인 동작을 제어 및 노드들 사이의 데이터 송수신을 스케줄링하기 위한 마스터 노드 장치(40)를 포함할 수 있다.
상술한 바와 같이 도메인(1) 내에서 컨테이너들은 다른 컨테이너들과 RTPS 탐색 메시지를 교환할 수 있다. 그러나, 일반적으로 DDS 시스템에서, 컨테이너들은 다른 도메인 내에 포함된 컨테이너들과 RTPS 탐색 메시지를 교환하지 못한다. 즉, 가상화 장비를 이용하는 DDS 시스템에서, 참여자들은 상이한 도메인 내의 참여자를 탐색하지 못한다.
이러한 문제를 해결하기 위해, 본 실시 예에서 각각의 도메인(1)들은 브로커 컨테이너를 포함할 수 있다. 브로커 컨테이너는 도메인(1) 내의 가상화 장비들에 존재하는 컨테이너들 중 어느 하나가 선택되어 지정될 수 있다. 이때, DDS 시스템은, 복수의 도메인들에 대하여 브로커 컨테이너에 대한 정보를 수집하고, 이들을 관리 및 제어하는 브로커 매니저(30)를 더 포함할 수 있다. 브로커 매니저(30)는 컨트롤러(31)를 포함하여 DDS 시스템을 구성하는 도메인들 내의 브로커 컨테이너들을 생성/등록하고 관리할 수 있다. 브로커 컨테이너의 등록 방법은, 이하에서 도 5 및 도 6을 참조하여 보댜 구체적으로 설명한다.
예를 들어, 브로커 매니저(30)는, 브로커 컨테이너가 존재하지 않는 도메인으로부터 브로커 컨테이너 요청이 수신되면, 해당 도메인의 마스터 노드 장치(40)로 브로커 컨테이너의 할당을 요청할 수 있다. 마스터 노드 장치(40)를 통해 브로커 컨테이너가 가동되면, 브로커 매니저(30)는 해당 브로커 컨테이너에 대한 정보를 등록/관리하고, 해당 브로커 컨테이너에 대한 정보를 다른 도메인의 브로커 컨테이너로 전달할 수도 있다.
브로커 컨테이너는, 해당 도메인(1)의 외부에 존재하는 다른 도메인과의 DDS 통신을 중계할 수 있다. 즉, 브로커 컨테이너는 외부의 다른 도메인에 배치된 브로커 컨테이너와 통신을 수행한다.
일 실시 예에서, 브로커 컨테이너는, 내부 도메인의 컨테이너들에 외부 도메인과 통신을 위한 포트를 할당하고, 각 컨테이너들의 IP 주소와 포트 번호를 연계하여 저장 및 관리할 수 있다. 또한, 브로커 컨테이너는 포트 번호를 포함한 컨테이너의 정보를 외부 도메인의 브로커 컨테이너로 전송할 수 있다. 또한, 브로커 컨테이너는 외부 컨테이너로부터 외부 도메인 내의 컨테이너들에 대한 포트 정보를 수신할 수 있다. 브로커 컨테이너?z 외부 도메인으로부터 수신된 포트 정보에, 내부 도메인에서 사용할 IP 주소를 할당하여, 마치 외부 도메인의 컨테이너가 내부 도메인에 존재하는 것처럼 관리할 수 있다. 그러면 해당 도메인에 포함된 컨테이너들은, 외부 도메인의 컨테이너를 브로커 컨테이너를 통해 내부 도메인에 존재하는 컨테이너로 인지하고, 해당 컨테이너와 용이하게 통신을 수행할 수 있다.
일 실시 예에서, 도메인(1)은 가상화 장비들의 DDS 통신을 위해 필요한 데이터를 저장하는 저장소(50)를 포함할 수 있다. 가상화 장비들은 저장소(50)에 저장된 이미지를 로드하여, 컨테이너들의 동작을 지원할 수 있다. 예를 들어, 저장소(50)는 컨테이너들의 RTPS 탐색을 위해 필요한 데이터를 포함하는 RTPS 이미지를 저장할 수 있다.
본 실시 예에서, 저장소(50)는 컨테이너들 중 어느 하나가 브로커 컨테이너로 동작될 때 필요한 데이터를 포함하는 브로커 이미지를 더 저장할 수 있다. 브로커 매니저(30)를 통해 브로커 컨테이너로 등록된 컨테이너는, 저장소(50)에 저장된 브로커 이미지를 로드하여 브로커 컨테이너로써 필요한 동작을 수행할 수 있다.
도 5는 및 도 6은 도 4에 도시된 DDS 시스템에서 브로커 컨테이너를 등록하는 방법을 설명하기 위한 도면들이다.
도 5를 참조하면, DDS 통신을 수행하고자 하는 컨테이너는 동일한 소프트웨어 브릿지에 연결된, 즉 동일한 도메인(1) 내에 존재하는, 외부에 연결된 브로커 컨테이너가 있는지 판단할 수 있다(A).
브로커 컨테이너가 존재하는 경우, 컨테이너는 해당 브로커 컨테이너를 통해 외부 도메인의 컨테이너와 DDS 통신을 수행할 수 있다. 반면, 브로커 컨테이너가 존재하지 않는 경우, 컨테이너는 브로커 컨테이너 생성을 수행할 수 있다. 구체적으로, 컨테이너는 브로커 매니저(30)에게 브로커 컨테이너 생성을 요청할 수 있다(B).
요청을 수신한 브로커 컨테이너는 해당 컨테이너가 포함된 도메인(1)의 마스터 노드 장치(40)로 브로커 컨테이너 요청을 전달할 수 있다(C). 마스터 노드 장치(40)는 도메인(1) 내에 포함된 컨테이너들 중 어느 하나를 브로커 컨테이너로 선정하고, 선정된 컨테이너에 브로커 컨테이너를 구동시킬 수 있다(D).
브로커 컨테이너가 구동되면, 도메인(1) 내의 컨테이너들은 저장소(50) 내에 저장된 브로커 이미지를 로드하여 브로커 정보를 획득하고, 브로커 컨테이너를 통하여 외부의 도메인과 DDS 통신을 수행할 수 있다.
브로커 컨테이너로 선정된 컨테이너에는 외부 도메인에 노출되는 포트가 할당된다. 도시된 실시 예에서, 브로커 컨테이너에 할당된 포트 번호는 8301이다. 브로커 컨테이너는 할당된 포트 번호를 통해 외부 도메인의 브로커 장치와 통신하여, 도메인(1) 내의 컨테이너들과 외부 도메인의 컨테이너 사이의 통신을 중계할 수 있다.
브로커 컨테이너가 선정 및 동작되면, 해당 브로커 컨테이너가 브로커 매니저(30)에 등록될 수 있다. 일 실시 예에서, 브로커 매니저(30)는 도 6에 도시된 것과 같이 상이한 IP 주소를 사용하는 복수의 도메인들 각각에 배치된 복수의 가상화 장치들과 통신하며, 복수의 도메인들에 대한 브로커 컨테이너를 생성, 등록 및 관리할 수 있다.
도 7은 일 실시 예에 따른 다중 도메인으로 구성된 DDS 시스템을 나타낸 도면이다.
도 7을 참조하면, 일 실시 예에 따른 DDS 시스템은 다수의 도메인들(10, 20)로 구성된다. 도 7의 실시 예에서는 2개의 도메인만이 도시되지만, 도메인의 개수에는 제한이 없다.
각각의 도메인(10, 20)은 라우터(11, 21)에 연결되어 로컬 네트워크를 형성하도록 구성될 수 있다. 각각의 도메인(10, 20)은 내부 라우터(11, 21)를 통하여 다른 도메인(10, 20)과 통신할 수 있다.
각각의 도메인(10, 20)은 다수의 참여자들(12, 22)로 구성된다. 도메인(10, 20) 내에 존재하는 참여자들(12, 22)은 RTPS 통신 객체로 동작하고 노드라고 지칭될 수 있다. 일 실시 예에서, 참여자들(12, 22)은 도 2를 참조하여 설명한 가상화 장비의 컨테이너(203)들일 수 있다. 또한, 각각의 도메인(10, 20)은 도 4 내지 도 6을 참조하여 설명한 바에 따라, 브로커 매니저(30)에 브로커 컨테이너를 등록한 도메인일 수 있다. 또한, 가상화 장비의 컨테이너(203)인 참여자들(12, 22)은 상술한 브로커 컨테이너의 등록을 통해 획득된 브로커 이미지를 포함하고 있다. 도 4 내지 도 6을 참조하여 설명한 바와 같이, 가상화 장비의 컨테이너(203)인 참여자들(12, 22)은 브로커 매니저()에 등록된 브로커 컨테이너를 통해, 후술되는 방식으로 외부 도메인(10, 20)에 포함된 다른 컨테이너들, 즉 다른 참여자들(12, 22)을 탐색할 수 있다.
도 7의 실시 예에서는, 각각의 도메인(10, 20)에 하나의 참여자(12, 22)만이 도시되지만, 이보다 많은 수의 참여자가 도메인(10, 20) 내에 존재할 수 있다.
각각의 참여자(12, 22)는 하나 이상의 발간자 또는 구독자를 가질 수 있다. 발간자는 자신의 정보를 전달하기 위해서 하나 이상의 라이터(writer)(또는, 데이터라이터(datawriter), 발간 개체)를 포함할 수 있고, 구독자는 발간자의 정보를 수신하기 위한 하나 이상의 리더(reader)(또는, 데이터리더(datareader), 구독 개체)를 포함할 수 있다.
발간자와 구독자의 응용 프로그램에서는 특정 데이터의 주제를 나타내는 토픽을 생성하고, 이를 라이터와 리더에 관심 토픽으로 등록함으로써 상호 간에 정보를 교환한다. 관심 토픽이 상이한 발간자와 구독자는 토픽 데이터를 교환하지 않기 때문에 이들 간에는 간섭이 발생하지 않는다. 즉, DDS 시스템은 서버가 없는 피어-투-피어(Peer-to-Peer) 구조로서, 도메인 내에서 같은 관심 토픽을 갖는 참여자끼리만 통신을 한다. 관심 토픽에 대응되는 데이터는 라이터 및 DDS 네트워크를 통해서 DDS 데이터 패킷으로 전송되고, 리더는 수신된 DDS 데이터 패킷에 포함된 토픽 데이터를 확인하여 응용 프로그램에게 전달한다.
상술한 동작을 수행하기 위해, 각각의 도메인(10, 20) 내에서 각각의 참여자(12, 22)는 자신이 속한 도메인(10, 20)에 참여한 다른 참여자를 발견하기 위한 탐색을 수행한다. 이를 구체적으로 설명하면 다음과 같다.
각각의 참여자(12, 22)는 탐색 메시지(discovery message)(또는, 발견 메시지)를 유니캐스트 또는 멀티캐스트 방식으로 전송하여, 도메인(10, 20) 내의 다른 참여자에게 자신의 존재를 알린다. 이러한 과정을 참여자 탐색이라 한다. 탐색 메시지는 탐색 메시지를 전송하는 참여자(12, 22)에게 할당되는 전역 고유 식별자(Global Unique IDentifier, 이하 GUID), 참여자(12, 22)의 프로토콜 버전, 벤더 식별자, 유니캐스트 및 멀티캐스트 로케이터(IP 주소 및 포트 번호 등) 및 참여자를 추적하는 방법 등에 대한 정보를 포함할 수 있다. 여기서, GUID는 도메인(10, 20) 내에서 각각의 참여자(12, 22)를 식별하기 위해 할당되는 것으로, 다른 참여자는 탐색 메시지 또는 DDS 데이터 패킷의 GUID로부터 해당 탐색 메시지 또는 DDS 데이터 패킷을 전송한 다른 참여자가 자신과 동일한 도메인(10, 20) 내에 존재하는 특정 참여자임을 식별할 수 있다. 이와 같이 참여자들(12, 22)은 각각 발견 메시지를 전달 및 교환함으로써, 동일한 도메인(10)에 속한 다른 참여자를 발견할 수 있다.
참여자 탐색이 완료되면, 각각의 참여자(12, 22)는 해당 참여자 내부에서 토픽 데이터 전송을 실제로 수행하는 통신 객체인 라이터 또는 리더의 QoS 정보들을 확인하고 교환하는 종단점 탐색을 수행한다.
일반적인 DDS 시스템에서, 참여자 탐색은 동일한 도메인(10, 20) 내에서만 가능하도록 구성된다. 즉, 일반적인 DDS 시스템에서, 제1 도메인(10)에 속한 참여자(12)는 제2 도메인에 속한 참여자(22)를 탐색하지 못한다. 또한, 제2 도메인(20)에 속한 참여자(22)는 제1 도메인에 속한 참여자(12)를 탐색하지 못한다. 이는 참여자들(12, 22)이 자신이 속한 도메인(10, 20) 내에서만 탐색 메시지를 전송하고 수신할 수 있기 때문이다. 이는 다중 도메인으로 구성되는 대규모 DDS 시스템에서 DDS 통신이 효율적으로 이루어질 수 없게 한다.
상기한 문제를 해결하기 위하여, 본 발명의 다양한 실시 예에서, 각각의 도메인(10, 20)은 브로커로 동작하는 장치(13, 23)를 포함하여 구성된다. 장치(13, 23)는 DDS를 위한 장치로써, 이하에서는 편의를 위해 브로커 장치(13, 23)로 명명한다. 브로커 장치(13, 23)는 도 2를 참조하여 설명한 가상화 장비의 컨테이너(203)로, 도 4 내지 도 6을 참조하여 설명한 브로커 컨테이너일 수 있다.
브로커 장치(13, 23)는 자신이 속한 도메인(10, 20) 내의 참여자(12, 22)에 대한 정보를 다른 도메인(10, 20)의 브로커 장치(13, 23)로 전송할 수 있다. 또한, 다른 도메인(10, 20) 내의 참여자(12, 22)에 대한 정보를 수신한 브로커 장치(13, 23)는 해당 참여자(12, 22)를 위한 내부 포트 번호를 할당하고, 내부 참여자(12, 22)와 해당 참여자(12, 22) 간의 DDS 통신을 중개할 수 있다. 결과적으로, 브로커 장치(13, 23)는 다른 도메인(10, 20)에 존재하는 참여자(12, 22)가 마치 내부 도메인(10, 20)에 존재하는 것처럼 DDS 통신이 가능하게 할 수 있다.
이하에서, 브로커 장치(13, 23)를 통하여 상이한 도메인에 분산된 참여자를 탐색하고 DDS 통신을 수행할 수 있도록 하는 방법을 보다 구체적으로 설명한다.
도 8은 도 7에 도시된 DDS 시스템에서 브로커 장치 간 탐색 동작을 설명하기 위한 흐름도이고, 도 9는 도 8의 메시지 패킷 구조를 나타낸 도면이다.
도 7의 실시 예에서, 제1 도메인(10)에는 제1 브로커 장치(13)가, 제2 도메인(20)에는 제2 브로커 장치(23)가 배치된다. 제1 브로커 장치(13) 및 제2 브로커 장치(23)는 제1 도메인(10)과 제2 도메인(20) 각각에 존재하는 제1 및 제2 라우터(11, 21)를 통해 통신할 수 있다.
제1 브로커 장치(13) 및 제2 브로커 장치(23)에는 자신이 속한 도메인(10, 20)에 대응하는 IP 주소 및 포트 번호가 할당된다. 이때, 제1 브로커 장치(13) 및 제2 브로커 장치(23)에는 기설정된 값의 동일한 포트 번호가 할당될 수 있다. 도 7의 실시 예에서, 제1 브로커 장치(13)에는 192.168.0.2의 IP 주소 및 8301의 포트 번호가 할당되고, 제2 브로커 장치(23)에는 192.168.2.2의 IP 주소 및 8301의 포트 번호가 할당되어 있다. 또한, 본 발명의 다양한 실시 예에서, 제1 브로커 장치(13) 및 제2 브로커 장치(23)에는 참여자(12, 22)와 유사하게 GUID가 할당될 수 있다.
마찬가지로, 제1 라우터(11) 및 제2 라우터(21)에도 IP 주소가 할당된다. 도 7의 실시 예에서, 제1 라우터(11)에는 192.168.0.1의 IP 주소가 할당되고, 제2 라우터(21)에는 192.168.2.1의 IP 주소가 할당되어 있다. 일 실시 예에서, 제1 라우터(11) 및 제2 라우터(21)에는 외부 네트워크와 통신하기 위한 외부 네트워크 주소가 더 할당될 수 있다. 도 2의 실시 예에서, 제1 라우터(11)에는 129.254.1.2의 외부 네트워크 주소가 할당되고, 제2 라우터(21)에는 129.254.1.4의 외부 네트워크 주소가 할당되어 있다.
다양한 실시 예에서, 제1 브로커 장치(13) 및 제2 브로커 장치(23)는 서로를 발견하기 위한 탐색을 수행할 수 있다.
도 8을 참조하면, 제1 브로커 장치(13)는 다른 도메인으로부터 메시지 및/또는 패킷을 수신하기 위한 포트 번호를 할당할 수 있다. 구체적으로, 제1 브로커 장치(13)는 다른 도메인의 브로커 장치, 예를 들어 제2 도메인(20)의 제2 브로커 장치(23)를 위한 포트 번호를 할당할 수 있다(301). 도 2의 실시 예에서, 제1 브로커 장치(13)는 제2 브로커 장치(23)를 위한 포트 번호로써 57321을 할당한다. 할당된 포트 번호는 제2 브로커 장치(23)로부터 메시지 및/또는 패킷을 수신하기 위한 수신 포트로써 설정될 수 있다.
이후에, 제1 브로커 장치(13)는 제1 라우터(11) 및 제2 도메인(20)의 제2 라우터(21)를 통해 제2 브로커 장치(23)로 얼라이브(alive) 메시지를 전송할 수 있다(302). 이때, 제1 브로커 장치(13)는 얼라이브 메시지를 전송하기 위하여, 제2 라우터(21)의 외부 네트워크 주소를 인지하고 있다. 또한, 상술한 바와 같이, 제1 브로커 장치(13)는 제2 브로커 장치(23)가 자신과 동일한 포트 번호를 할당받은 것으로 인지할 수 있다. 그에 따라, 도 7의 실시 예에서, 제1 브로커 장치(13)는 목적지 주소 192.254.1.4:8301로 얼라이브 메시지를 전송한다.
본 발명의 다양한 실시 예에서, 얼라이브 메시지는 도 8에 도시된 것과 같은 패킷 구조를 가질 수 있다. 도 8을 참조하면, 패킷 구조는 PREFIX 필드와 Struct socketaddr 필드로 구성될 수 있다. PREFIX 필드는 도메인 정보, 브로커 장치(13, 23)의 식별 정보, 예를 들어 GUID 등을 포함할 수 있다. Struct socketaddr 필드는 브로커 장치(13, 23)의 IP 주소 및 패킷 번호와 같은 바인드 정보를 포함할 수 있다. 또한, 얼라이브 메시지에는 얼라이브 메시지를 수신할 브로커 장치(13, 23)를 위하여 할당된 식별 정보, 예를 들어 패킷 번호가 포함될 수 있다. 얼라이브 메시지는 참여자(12, 22)가 송수신하는 탐색 메시지와 구분하기 위해 채택된 용어로써, 다양한 실시 예에서, 얼라이브 메시지는 탐색 메시지, 킵얼라이브 메시지, 헬로 메시지, 하트비트 메시지 등으로 명명될 수 있다.
얼라이브 메시지는 제2 라우터(21)에 의해 포트 번호 8301을 갖는 제2 브로커 장치(23)로 전달된다.
제2 브로커 장치(23)는 수신된 얼라이브 메시지로부터 제1 브로커 장치(13)를 식별하고, 제1 브로커 장치(13)를 위한 포트 번호를 할당할 수 있다(303). 제2 브로커 장치(23)는 얼라이브 메시지로부터 추출되는 정보, 예를 들어 포트 번호를 기초로 제1 브로커 장치(13)를 식별할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)는 포트 번호 57321을 이용하는 제1 브로커 장치(13)를 식별할 수 있다.
제2 브로커 장치(23)는 식별된 제1 브로커 장치(13)를 위한 포트 번호를 할당할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)는 제1 브로커 장치(13)를 위한 포트 번호로써 68213을 할당한다. 할당된 포트 번호는 제1 브로커 장치(13)로부터 메시지 및/또는 데이터 등의 패킷을 수신하기 위한 수신 포트로 설정될 수 있다.
제2 브로커 장치(23)는 식별된 제1 브로커 장치(13)에 관한 정보로써, 제1 브로커 장치(13)의 도메인 정보(라우터 정보를 포함할 수 있다.), GUID, IP 주소 및 패킷 번호 등을 저장하고 관리할 수 있다. 구현하기에 따라, 제2 브로커 장치(23)는 자신이 할당한 포트 번호 및 제1 브로커 장치(13)의 정보를 연계하여 매핑 정보로써 관리할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)의 포트 번호 68213과 제1 브로커 장치의 포트 번호 57321이 연계될 수 있다.
이후에, 제2 브로커 장치(23)는 제2 라우터(21) 및 제1 도메인(10)의 제1 라우터(11)를 통해 제1 브로커 장치(13)로 응답 메시지(ACK)를 전송할 수 있다(304). 이를 위하여, 마찬가지로 제2 브로커 장치(23)는 제1 라우터(11)의 외부 네트워크 주소를 인지하고 있다. 또한, 제2 브로커 장치(23)는 얼라이브 메시지로부터 식별된 제1 브로커 장치(13)의 포트 번호 57321을 인지할 수 있다. 그에 따라, 도 7의 실시 예에서, 제2 브로커 장치(23)는 목적지 주소 192.254.1.2:27321로 응답 메시지를 전송한다.
다양한 실시 예에서, 응답 메시지는 도 9에 도시된 것과 같은 패킷 구조를 가질 수 있다. 다른 실시 예에서, 응답 메시지는 얼라이브 메시지와 상이한 패킷 구조를 가질 수 있다. 다양한 실시 예에서, 응답 메시지는 제2 브로커 장치(23)가 제1 브로커 장치(13)의 얼라이브 메시지를 올바르게 수신하였음을 나타내기 위한 정보 및 제2 브로커 장치(23)의 식별 정보로써, 예를 들어 GUID, IP 주소 및 패킷 번호 등을 포함할 수 있다.
다양한 실시 예에서, 제2 브로커 장치(23)는 제1 브로커 장치(13)로부터 수신된 얼라이브 메시지의 무결성을 검사하고, 메시지가 올바르게 수신되지 않았다고 판단되는 경우에는 부정 응답 메시지(NACK)를 전송할 수 있다. 이 경우, 제1 브로커 장치(13)와 제2 브로커 장치(23) 간 얼라이브 메시지의 재교환이 이루어질 수 있다.
제1 브로커 장치(13)는 수신된 응답 메시지로부터 제2 브로커 장치(23)를 식별할 수 있다(305). 제1 브로커 장치(13)는 응답 메시지로부터 추출되는 정보, 예를 들어 포트 번호를 기초로 제2 브로커 장치(23)를 식별할 수 있다. 도 7의 실시 예에서, 제1 브로커 장치(13)는 포트 번호 68213을 이용하는 제2 브로커 장치(23)를 식별할 수 있다.
제1 브로커 장치(13)는 식별된 제2 브로커 장치(23)에 관한 정보로써, 제2 브로커 장치(23)의 도메인 정보(라우터 정보를 포함할 수 있다.), GUID, IP 주소 및 패킷 번호 등을 저장하고 관리할 수 있다. 구현하기에 따라, 제1 브로커 장치(13)는 자신이 할당한 포트 번호 및 제2 브로커 장치(23)의 정보를 매핑 정보로써 저장할 수 있다. 도 2의 실시 예에서, 제1 브로커 장치(13)의 포트 번호 57321과 제2 브로커 장치(23)의 포트 번호 68213이 연계될 수 있다.
상술한 탐색 과정이 완료된 이후에, 제1 브로커 장치(13)와 제2 브로커 장치(23)는 기설정된 주기에 따라 얼라이브 메시지를 교환하여 서로의 존재를 확인할 수 있다(306, 307). 이때, 제1 브로커 장치(13) 및 제2 브로커 장치(23)는 서로의 포트 번호를 인지하고 있으므로, 얼라이브 메시지는 상대방의 포트 번호로 직접 전송될 수 있다. 도 7의 실시 예에서, 제1 브로커 장치(13)는 제2 브로커 장치(23)를 위하여 목적지 주소 129.254.1.4:68213으로 얼라이브 메시지를 전송하고, 제2 브로커 장치(23)는 제1 브로커 장치(13)를 위하여 목적지 주소 129.254.1.2:57321로 얼라이브 메시지를 전송한다. 얼라이브 메시지의 교환 주기는 네트워크 성능, 네트워크 부하 등을 기초로 결정될 수 있다.
이하에서는, 제1 브로커 장치(13)와 제2 브로커 장치(23)를 통하여 제1 도메인(10) 및 제2 도메인(20)의 제1 참여자(12) 및 제2 참여자(22)가 참여자 탐색을 수행하는 방법을 구체적으로 설명한다.
도 10은 도 7에 도시된 DDS 시스템에서 참여자 탐색 동작을 설명하기 위한 흐름도이다.
도 7의 실시 예에서, 제1 도메인(10)에는 제1 참여자(12)가 제2 도메인(20)에는 제2 참여자(22)가 배치된다. 제1 참여자(12) 및 제2 참여자(22)에는 각각이 속한 도메인(10, 20)에서 제공하는 IP 주소와 포트 번호가 할당된다. 이때, 제1 참여자(12) 및 제2 참여자(22)에는 RTPS 프로토콜에 의해 기설정된 값의 포트 번호가 할당될 수 있다. 도 7의 실시 예에서, 제1 참여자(12)에는 192.168.0.3의 IP 주소 및 7400의 포트 번호가 할당되고, 제2 참여자(22)에는 192.168.2.3의 IP 주소 및 7400의 포트 번호가 할당되어 있다. 추가로, 제1 참여자(12) 및 제2 참여자(22)에게는 GUID가 할당된다.
다양한 실시 예에서, 제1 참여자(12)와 제2 참여자(22)는 일반적인 RTPS 프로토콜에 따라 도메인 내의 다른 참여자에 대한 탐색을 수행한다.
먼저, 제1 참여자(12)는 제1 도메인(10) 내에 탐색 메시지를 유니캐스트 또는 멀티캐스트 방식으로 전송할 수 있다(501). 탐색 메시지에는 제1 참여자(12)의 GUID, IP 주소, 포트 번호 등에 대한 정보가 포함될 수 있다.
제1 도메인(10) 내에서 동작하는 제1 브로커 장치(13)는 제1 참여자(12)로부터 전송되는 탐색 메시지를 수신할 수 있다. 제1 브로커 장치(13)는 수신된 탐색 메시지로부터 제1 참여자(12)를 식별할 수 있다(502). 제1 브로커 장치(13)는 탐색 메시지로부터 추출되는 정보, 예를 들어 포트 번호를 기초로 제1 브로커 장치(13)를 식별할 수 있다. 제1 브로커 장치(13)는 제1 참여자(12)의 포트 번호에 관한 정보를 저장하고 관리할 수 있다.
이후에, 제1 브로커 장치(13)는 제1 라우터(11) 및 제2 도메인(20)의 제2 라우터(21)를 통해 제2 브로커 장치(23)로, 제1 참여자(12)에 대한 탐색 메시지를 전송할 수 있다(503). 브로커 장치 간에 송수신되는 탐색 메시지는 RTPS 프로토콜에서 정의되는 탐색 메시지와 동일한 패킷 구조를 가지거나 또는 별도로 정의되는 패킷 구조를 가질 수 있다. 탐색 메시지는 제1 참여자(12)에 대한 식별 정보로써, 예를 들어 도메인 정보, GUID, IP 주소, 패킷 번호 등이 포함될 수 있다.
제2 브로커 장치(23)는 수신된 탐색 메시지로부터 제1 참여자(12)를 식별하고, 제1 참여자(12)를 위한 IP 주소 및 포트 번호를 할당할 수 있다(504). 제2 브로커 장치(23)는 탐색 메시지로부터 추출되는 정보, 예를 들어 포트 번호를 기초로 제1 참여자(12)를 식별할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)는 포트 번호 7400을 이용하는 제1 참여자(12)를 식별할 수 있다.
제2 브로커 장치(23)는 식별된 제1 참여자(12)를 위한 포트 번호를 할당할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)는 제1 참여자(12)를 위한 포트 번호로써 88888을 할당한다. 여기서, 포트 번호는 제2 도메인(20)의 참여자들로부터 전송되는 패킷을 제1 참여자(12)를 위해 수신하기 위한 수신 포트로써 설정될 수 있다.
일 실시 예에서, 제2 브로커 장치(23)는 식별된 제1 참여자(12)를 위한 IP 주소를 더 할당할 수 있다. 제1 도메인(10)과 제2 도메인(20)은 내부 IP 주소로 이용될 수 있는 IP 주소의 범위가 상이할 수 있다. 따라서, 제1 도메인(10)에서 사용하는 IP 주소 범위 내의 IP 주소는 제2 도메인(20)에 존재하는 브로커 및 참여자들에 의해 올바르게 식별되지 않을 수 있다. 따라서, 제2 브로커 장치(23)는 제1 도메인(10)에 존재하는 제1 참여자(12)를 위하여 제2 도메인(20)에 대응하는 IP 주소를 할당할 수 있다. 도 7의 실시 예에서, 제2 브로커 장치(23)는 제1 참여자(12)를 위하여 192.168.2.5의 IP 주소를 할당할 수 있다.
제2 브로커 장치(23)는 식별된 제1 참여자(12)에 관한 정보로써, 제1 참여자(12)의 도메인 정보(해당 도메인의 브로커 장치에 관한 정보를 포함할 수 있다.), 해당 도메인에서의 GUID, IP 주소, 포트 번호 등을 저장하고 관리할 수 있다. 제2 브로커 장치(23)는 제1 참여자(12)에 관한 정보와 자신이 제1 참여자(12)를 위하여 할당한 IP 주소 및 포트 번호를 연계하여 매핑 정보로써 저장할 수 있다. 도 7의 실시 예에서, 제1 참여자(12)에 대하여, 제1 도메인(10) 내의 포트 번호 7400과 제2 브로커 장치(23)가 할당한 IP 주소 192.168.2.5 및 포트 번호 88888이 연계될 수 있다.
일 실시 예에서, 제2 브로커 장치(23)는 탐색 메시지에 응답하여 제1 브로커 장치(13)로 응답 메시지를 전송할 수 있다(505). 응답 메시지는 제2 브로커 장치(23)가 제1 참여자(12)를 위하여 할당한 포트 번호 등을 포함할 수 있다. 이 경우, 제1 브로커 장치(13)는 제1 도메인(10) 내에서의 제1 참여자(12)에 관한 정보와 제2 브로커 장치(23)가 제1 참여자(12)를 위하여 할당한 포트 번호를 연계하여 저장할 수 있다.
이후에, 제2 브로커 장치(23)는 제2 도메인(20) 내에 제1 참여자(12)에 대한 RTPS 탐색 메시지를 유니캐스트 또는 멀티캐스트 방식으로 전송할 수 있다(506). 탐색 메시지에는 제2 브로커 장치(23)가 제1 참여자(12)를 위하여 할당한 IP 주소, 포트 번호, 제1 참여자(12)의 GUID 등이 포함될 수 있다.
제2 브로커 장치(23)가 전송한 탐색 메시지는 제2 도메인(20) 내에서 동작하는 제2 참여자(22)에 의하여 수신될 수 있다. 탐색 메시지에는 제2 도메인(20)에서 유효한 IP 주소, 포트 번호 등이 포함되어 있으므로, 제2 참여자(22)는 제1 참여자(12)를 유효하게 식별할 수 있다(507). 제1 참여자(12)를 식별함으로써 제2 참여자(22)는 마치 제1 참여자(12)가 제2 도메인(20)에 존재하는 참여자인 것처럼 인지하고, 제1 참여자(12)를 위한 패킷을 송신하거나 제1 참여자(12)로부터 전송되는 패킷을 수신할 수 있다.
유사하게, 제2 참여자(22)도 제2 도메인(20) 내에 탐색 메시지를 유니캐스트 또는 멀티캐스트 방식으로 전송할 수 있다(508). 탐색 메시지를 수신한 제2 브로커 장치(23)는 제2 참여자(22)를 식별하고 제2 참여자(22)에 대한 포트 번호를 저장한 뒤(509), 제1 브로커 장치(13)로 제2 참여자(22)를 위한 탐색 메시지를 전송할 수 있다(510).
제1 브로커 장치(13)는 제2 참여자(22)를 위한 제1 도메인(10) 대응 IP 주소 및 포트 번호를 할당할 수 있다(511). 도 7의 실시 예에서, 제1 브로커 장치(13)는 제2 참여자(22)를 위해 포트 번호 99999를 할당한다. 제1 브로커 장치(13)는 제2 브로커 장치(23)로 응답 메시지를 전송할 수 있고(512), 제1 도메인(10) 내에 제2 참여자(22)를 위한 탐색 메시지를 전송할 수 있다(513). 제1 도메인(10) 내의 제1 참여자(12)는 제1 브로커 장치(13)가 전송한 탐색 메시지를 수신하고, 유효하게 제2 참여자(22)를 식별할 수 있다(514).
제2 참여자(22)를 위한 참여자 탐색 방법의 구체적인 내용은 제1 참여자(12)를 위한 탐색 방법과 동일하므로 상세한 설명은 생략한다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
30: 장치
31: 통신부
32: 제어부
33: 저장부

Claims (11)

  1. 가상화 장비를 이용한 데이터 분산 서비스(Data Distribution Service, 이하 DDS) 시스템으로,
    각각이 적어도 하나의 가상화 장비를 포함하는 복수의 도메인들; 및
    상기 복수의 도메인들에 할당된 브로커 컨테이너들의 정보를 수집하고 관리하는 브로커 매니저를 포함하되,
    상기 가상화 장비는,
    하드웨어 상에 가상 머신으로 생성되고, 상기 DDS 시스템의 참여자로 동작하는 컨테이너들을 포함하며,
    상기 컨테이너들 중 어느 하나가 상기 브로커 컨테이너로 동작하되,
    상기 복수의 도메인들 각각은,
    상기 적어도 하나의 가상화 장비 각각을 노드로 지정하고, 상기 노드를 제어 및 스케줄링하는 마스터 노드 장치를 포함하고,
    상기 브로커 매니저는,
    임의의 도메인으로부터 브로커 컨테이너 요청이 수신되면, 상기 마스터 노드 장치로 상기 브로커 컨테이너 요청을 전달하는, 시스템.
  2. 삭제
  3. 제1항에 있어서, 상기 마스터 노드 장치는,
    상기 브로커 컨테이너 요청에 응답하여, 상기 임의의 도메인에 포함된 컨테이너들 중 어느 하나를 상기 브로커 컨테이너로 구동하는, 시스템.
  4. 제3항에 있어서, 상기 복수의 도메인들 각각은,
    상기 브로커 컨테이너의 동작을 위해 필요한 데이터 및 상기 브로커 컨테이너의 정보 중 적어도 하나를 포함하는 컨테이너 이미지를 저장하는 저장소를 더 포함하고,
    상기 컨테이너들은,
    상기 컨테이너 이미지를 로드하는, 시스템.
  5. 제4항에 있어서, 상기 복수의 도메인들은,
    적어도 하나의 제1 컨테이너 및 제1 브로커 컨테이너를 포함하는 제1 도메인; 및
    적어도 하나의 제2 컨테이너 및 제2 브로커 컨테이너를 포함하는 제2 도메인을 포함하고,
    상기 제1 브로커 컨테이너 및 상기 제2 브로커 컨테이너는,
    상기 적어도 하나의 제1 컨테이너와 상기 적어도 하나의 제2 컨테이너 사이의 통신을 중계하는, 시스템.
  6. 제5항에 있어서, 상기 제1 브로커 컨테이너는,
    상기 적어도 하나의 제2 컨테이너를 위한 상기 제1 도메인의 내부 식별자를 할당하고, 상기 적어도 하나의 제1 컨테이너에 대한 탐색 메시지를 상기 제2 브로커 컨테이너로 전달하며,
    상기 탐색 메시지는,
    상기 제2 브로커 컨테이너가 상기 적어도 하나의 제1 컨테이너를 위한 상기 제2 도메인의 내부 식별자를 할당하기 위해 이용되는, 시스템.
  7. 제6항에 있어서, 상기 제1 브로커 컨테이너는,
    상기 제2 브로커 컨테이너를 위한 내부 식별자를 할당하고, 상기 제2 브로커 컨테이너로 상기 제1 브로커 컨테이너의 식별 정보를 포함하는 얼라이브 메시지를 전송하며,
    상기 얼라이브 메시지는 상기 제2 브로커 컨테이너가 상기 제1 브로커 컨테이너를 위한 상기 제2 도메인의 내부 식별자를 할당하기 위해 전송되는, 시스템.
  8. 제7항에 있어서, 상기 제1 브로커 컨테이너는,
    상기 제2 브로커 컨테이너로부터 상기 얼라이브 메시지에 응답하여 상기 제2 브로커 컨테이너의 식별 정보를 포함하는 응답 메시지가 수신되면, 상기 적어도 하나의 제2 컨테이너의 식별 정보를 상기 할당된 내부 식별자와 연계하여 매핑 정보로써 저장하는, 시스템.
  9. 가상화 장비를 이용한 데이터 분산 서비스(Data Distribution Service, 이하 DDS) 시스템의 데이터 분산 서비스 방법으로,
    상기 DDS 시스템은,
    각각이 적어도 하나의 가상화 장비, 및 상기 적어도 하나의 가상화 장비 각각을 노드로 지정하고, 상기 노드를 제어 및 스케줄링하는 마스터 노드 장치를 포함하는 복수의 도메인들; 및
    상기 복수의 도메인들에 할당된 브로커 컨테이너들의 정보를 수집하고 관리하는 브로커 매니저를 포함하되,
    상기 가상화 장비는,
    하드웨어 상에 가상 머신으로 생성되고, 상기 DDS 시스템의 참여자로 동작하는 컨테이너들을 포함하고,
    상기 방법은,
    상기 브로커 매니저가, 임의의 도메인으로부터 브로커 컨테이너 요청이 수신되면, 상기 임의의 도메인 내의상기 마스터 노드 장치로 상기 브로커 컨테이너 요청을 전달하는 단계; 및
    상기 마스터 노드 장치가, 상기 브로커 컨테이너 요청에 응답하여, 상기 임의의 도메인에 포함된 컨테이너들 중 어느 하나를 상기 브로커 컨테이너로 구동하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 복수의 도메인들 각각은,
    상기 브로커 컨테이너의 동작을 위해 필요한 데이터 및 상기 브로커 컨테이너의 정보 중 적어도 하나를 포함하는 컨테이너 이미지를 저장하는 저장소를 더 포함하고,
    상기 임의의 도메인에 포함된 컨테이너들이, 상기 컨테이너 이미지를 로드하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    상기 브로커 컨테이너가, 상기 임의의 도메인으로부터 상기 구동된 브로커 컨테이너에 대한 정보를 수신하는 단계; 및
    상기 브로커 컨테이너가, 상기 브로커 컨테이너에 대한 정보를 저장 및 관리하는 단계를 더 포함하는, 방법.
KR1020200153792A 2020-11-17 2020-11-17 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템 KR102439923B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200153792A KR102439923B1 (ko) 2020-11-17 2020-11-17 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200153792A KR102439923B1 (ko) 2020-11-17 2020-11-17 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템

Publications (2)

Publication Number Publication Date
KR20220067269A KR20220067269A (ko) 2022-05-24
KR102439923B1 true KR102439923B1 (ko) 2022-09-06

Family

ID=81806174

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200153792A KR102439923B1 (ko) 2020-11-17 2020-11-17 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템

Country Status (1)

Country Link
KR (1) KR102439923B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101705797B1 (ko) 2016-01-14 2017-02-10 충남대학교산학협력단 데이터 분산 서비스 기반의 통신단말 검색 시스템 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102102169B1 (ko) * 2013-06-10 2020-05-29 한국전자통신연구원 가상 데스크탑 서비스를 위한 장치 및 가상 데스크탑 서비스 방법
KR20160045388A (ko) * 2014-10-17 2016-04-27 한국과학기술원 클라우드 서비스 브로커를 이용한 가상 머신 할당 방법
KR102025375B1 (ko) * 2017-12-21 2019-09-26 (주)젠토 데이터 분산 서비스를 위한 장치 및 방법, 데이터 분산 서비스 시스템
KR102435498B1 (ko) * 2018-07-03 2022-08-24 한국전자통신연구원 계층형 엔진 프레임워크에 기반한 크로스 도메인 워크플로우 제어 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101705797B1 (ko) 2016-01-14 2017-02-10 충남대학교산학협력단 데이터 분산 서비스 기반의 통신단말 검색 시스템 및 방법

Also Published As

Publication number Publication date
KR20220067269A (ko) 2022-05-24

Similar Documents

Publication Publication Date Title
US11372802B2 (en) Virtual RDMA switching for containerized applications
US10375015B2 (en) Methods and system for allocating an IP address for an instance in a network function virtualization (NFV) system
US7346909B1 (en) Network-like communication and stack synchronization for different virtual machines on the same physical device
CN111034160B (zh) 在负载均衡连接上具有虚拟vip和源代理的非dsr分布式负载均衡器
US7356818B2 (en) Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor
US9003002B2 (en) Efficient port management for a distributed network address translation
US8010673B2 (en) Transitioning network traffic between logical partitions in one or more data processing systems
CN111885075A (zh) 容器通信方法、装置、网络设备及存储介质
CN106559451B (zh) 用户迁移方法和装置
US8386614B2 (en) Network connection manager
EP2151095B1 (en) Method and apparatus for discovering universal plug and play device using resource information
EP3451592B1 (en) Packet transmission between vxlan domains
CN112910685B (zh) 实现对容器网络统一管理的方法及装置
US20170344408A1 (en) Method and System of Performing Inter-Process Communication Between OS-Level Containers In User Space
CN108540408B (zh) 一种基于Openstack的分布式虚拟交换机的管理方法及系统
KR102025375B1 (ko) 데이터 분산 서비스를 위한 장치 및 방법, 데이터 분산 서비스 시스템
CN108886475B (zh) 服务器计算机、网络管理方法、计算机可读存储器
KR102439923B1 (ko) 가상화 장비를 이용한 데이터 분산 서비스 방법 및 데이터 분산 서비스 시스템
CN116389599A (zh) 网关服务请求的处理、云原生网关系统的管理方法及装置
KR102137118B1 (ko) 데이터 분산 서비스를 위한 방법 및 장치, 데이터 분산 서비스 시스템
JP2010146246A (ja) マルチエージェントシステム用フレームワークコンピュータプログラム、ネットワークシステム、及びエージェント間通信方法
US20200389428A1 (en) Mapping subnets in different virtual networks using private address space
CN114124740A (zh) 一种vnf实例化的方法和装置
KR102409272B1 (ko) 가상 플랫폼 환경에서의 통신 대상 ip를 기반으로 공공 ip를 공유하는 방법 및 호스트 장치
KR101331561B1 (ko) 사설 아이피의 할당 및 갱신 방법, 이를 이용한 아이피 공유기

Legal Events

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