KR102021671B1 - A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network - Google Patents

A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network Download PDF

Info

Publication number
KR102021671B1
KR102021671B1 KR1020170169575A KR20170169575A KR102021671B1 KR 102021671 B1 KR102021671 B1 KR 102021671B1 KR 1020170169575 A KR1020170169575 A KR 1020170169575A KR 20170169575 A KR20170169575 A KR 20170169575A KR 102021671 B1 KR102021671 B1 KR 102021671B1
Authority
KR
South Korea
Prior art keywords
request
application
grpc
sdn
application layer
Prior art date
Application number
KR1020170169575A
Other languages
Korean (ko)
Other versions
KR20190069154A (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 KR1020170169575A priority Critical patent/KR102021671B1/en
Publication of KR20190069154A publication Critical patent/KR20190069154A/en
Application granted granted Critical
Publication of KR102021671B1 publication Critical patent/KR102021671B1/en

Links

Images

Classifications

    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

일실시예에 따른 디바이스는 SDN에 포함된 서버 또는 단말로써, 애플리케이션 레이어 및 컨트롤 레이어 사이에서 전송되는 데이터를 gRPC 프로토콜을 이용하여 전송할 수 있다. 보다 구체적으로, gRPC 프로토콜은 애플리케이션 레이어 및 컨트롤 레이어 각각의 프로세스에 의해 호출되는 노스바운드 API로 사용될 수 있다.According to an embodiment, a device may be a server or a terminal included in an SDN, and may transmit data transmitted between an application layer and a control layer using a gRPC protocol. More specifically, the gRPC protocol may be used as a northbound API called by the process of each of the application layer and the control layer.

Figure R1020170169575
Figure R1020170169575

Description

SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC{A GENERAL REMOTE PROCEDURE CALL AS A NORTHBOUND APPLICATION PROGRAMMING INTERFACE FOR COMMUNICATION IN AN APPLICATION LAYER OF A SOFTWARE DEFINED NETWORK}GRPC {A GENERAL REMOTE PROCEDURE CALL AS A NORTHBOUND APPLICATION PROGRAMMING INTERFACE FOR COMMUNICATION IN AN APPLICATION LAYER OF A SOFTWARE DEFINED NETWORK}

본 발명은 SDN 및 SDN에 연결된 디바이스에 관한 것이다.The present invention relates to an SDN and a device connected to the SDN.

소프트웨어 정의 네트워크(SDN, Software Defined Network)는 하드웨어 디바이스인 컨트롤러를 소프트웨어 영역으로 분리함으로써, 컨트롤러를 프로그램 가능하게 만드는 네트워크 기술이다. 소프트웨어 영역의 제어 평면(control plane)을 통해 네트워크 전체를 중앙 집중 방식으로 제어되는 네트워크이다. 따라서, 소프트웨어 정의 네트워크의 단말은 데이터 통신을 보다 효율적으로 수행할 수 있다. 더 나아가서, 소프트웨어 정의 네트워크는 일괄적인 정책 적용등을 수행하여 빠르고 안전한 네트워크 운용을 지원할 수 있다.Software Defined Network (SDN) is a network technology that makes a controller programmable by separating the controller, which is a hardware device, into the software domain. The network is controlled centrally through the control plane of the software domain. Thus, the terminal of the software defined network can perform data communication more efficiently. Furthermore, software defined networks can support fast and secure network operations by performing batch policy enforcement.

본 발명은 노스바운드 API로 gRPC를 사용하여 애플리케이션 레이어 및 컨트롤 레이어 사이의 통신을 수행하는 소프트웨어 정의 네트워크를 제안한다.The present invention proposes a software defined network that performs communication between an application layer and a control layer using gRPC as a northbound API.

일실시예에 따르면, 애플리케이션 레이어에 포함된 애플리케이션으로부터 메소드를 호출하기 위한 요청을 수신하는 단계, 네트워크를 제어하는 컨트롤 레이어에 포함된 복수의 네트워크 서비스 펑션 중에서 상기 메소드를 가진 네트워크 서비스 펑션으로, gRPC를 통해 상기 요청을 전달하는 단계, 상기 메소드를 가진 네트워크 서비스 펑션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계 및 상기 애플리케이션에 상기 수신한 결과를 제공하는 단계를 포함하는 소프트웨어 정의 네트워크에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, receiving a request for calling a method from an application included in an application layer, and a network service function having the method among a plurality of network service functions included in a control layer controlling a network, Forwarding the request via, receiving a result corresponding to the request from a network service function having the method, and providing the received result to the application. A communication method is provided.

일실시예에 따르면, 상기 gRPC는, 상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, the gRPC is provided with a communication method for an application layer in the SDN used as a northbound API for communication between the control layer and the application layer.

일실시예에 따르면, 상기 요청을 전달하는 단계는, 상기 요청에 포함된 파라미터가 결합된 PB(Protocol Buffer) 메시지를 상기 네트워크 서비스 펑션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to one embodiment, the step of forwarding the request, there is provided a communication method for an application layer in the SDN for delivering a protocol buffer (PB) message combined with the parameters included in the request to the network service function.

일실시예에 따르면, 상기 요청을 수신하는 단계는, 상기 애플리케이션 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, the receiving of the request may provide a communication method for an application layer in the SDN receiving the request based on a call of a method included in a local object of the application layer.

일실시예에 따르면, 상기 결과를 수신하는 단계는, 상기 전달된 요청에 따라 상기 네트워크 서비스 펑션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, the receiving of the result may include providing a communication method for an application layer in the SDN receiving a result of calling a method of the network service function according to the delivered request.

일실시예에 따르면, 네트워크를 제어하는 컨트롤 레이어에 포함된 네트워크 서비스 펑션으로부터 메소드(method)를 호출하기 위한 요청(request)을 수신하는 단계, 애플리케이션 레이어에 속하는 복수의 애플리케이션 중에서 상기 메소드를 가진 애플리케이션으로, gRPC(general remote procedure call)를 통해 상기 요청을 전달하는 단계, 상기 메소드를 가진 애플리케이션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계 및 상기 네트워크 서비스 펑션에 상기 수신한 결과를 제공하는 단계를 포함하는 소프트웨어 정의 네트워크(SDN, Software Defined Network)에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, receiving a request for calling a method from a network service function included in a control layer controlling a network, the application having the method among a plurality of applications belonging to an application layer and forwarding the request via a general remote procedure call (gRPC), receiving a result corresponding to the request from an application having the method, and providing the received result to the network service function. A communication method for an application layer in a software defined network (SDN) is provided.

일실시예에 따르면, 상기 gRPC는, 상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API(Northbound API)로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to one embodiment, the gRPC is provided with a communication method for an application layer in the SDN used as a Northbound API (Northbound API) for communication between the control layer and the application layer.

일실시예에 따르면, 상기 요청을 전달하는 단계는, 상기 요청에 포함된 파라미터가 결합된 PB 메시지를 상기 애플리케이션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to one embodiment, the step of forwarding the request, a communication method for an application layer in the SDN for delivering a PB message combined with parameters included in the request to the application.

일실시예에 따르면, 상기 요청을 수신하는 단계는, 상기 컨트롤 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, the receiving of the request may provide a communication method for an application layer in an SDN receiving the request based on a call of a method included in a local object of the control layer.

일실시예에 따르면, 상기 결과를 수신하는 단계는, 상기 전달된 요청에 따라 상기 애플리케이션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.According to an embodiment, the receiving of the result may provide a communication method for an application layer in the SDN for receiving a result of calling a method of the application according to the forwarded request.

일실시예에 따르면, 노스바운드 API로 gRPC를 사용하여 애플리케이션 레이어 및 컨트롤 레이어 사이의 통신을 수행할 수 있다.According to one embodiment, gRPC may be used as a northbound API to perform communication between an application layer and a control layer.

도 1은 일실시예에 따른 노스바운드 API로 gRPC(general remote procedure call) 프로토콜을 사용하는 SDN에 연결된 디바이스의 SDN 레이어의 구조를 개념적으로 도시한 도면이다.
도 2는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 애플리케이션(210) 및 네트워크 서비스 펑션(220) 간의 동작을 설명하기 위한 예시적인 도면이다.
도 3은 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 동작을 설명하기 위한 흐름도이다.
도 4는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스가 gRPC request에 대응하여 수행하는 동작을 설명하기 위한 흐름도이다.
FIG. 1 is a diagram conceptually illustrating a structure of an SDN layer of a device connected to an SDN using a gRPC protocol as a northbound API according to an embodiment.
FIG. 2 is an exemplary diagram for describing an operation between an application 210 and a network service function 220 of a device connected to an SDN using a gRPC protocol with a northbound API according to an embodiment.
3 is a flowchart illustrating an operation of a device connected to an SDN using a gRPC protocol with a northbound API according to an embodiment.
4 is a flowchart illustrating an operation performed by a device connected to an SDN using a gRPC protocol as a northbound API in response to a gRPC request.

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

본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Embodiments according to the inventive concept may be variously modified and have various forms, so embodiments are illustrated in the drawings and described in detail herein. However, this is not intended to limit the embodiments in accordance with the concept of the present invention to specific embodiments, and includes 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 terms are only for the purpose of distinguishing one component from another component, for example, without departing from the scope of the rights according to the inventive concept, the first component may be called a second component, Similarly, the second component may also be referred to as the first component.

어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.When a component is said to be “connected” or “connected” to another component, it may be directly connected to or connected to that other component, but it may be understood that other components may be present in the middle. Should be. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it should be understood that there is no other component in between. Expressions that describe the relationship between components, such as "between" and "immediately between," or "directly neighboring to," should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, the terms “comprise” or “have” are intended to designate that the stated feature, number, step, operation, component, part, or combination thereof exists, but includes one or more other features or numbers, It is to be understood that it does not exclude in advance the possibility of the presence or addition of steps, actions, 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. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art, and are not construed in ideal or excessively formal meanings unless expressly defined herein. Do not.

이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments 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 embodiments. Like reference numerals in the drawings denote like elements.

도 1은 일실시예에 따른 노스바운드 API로 gRPC(general remote procedure call) 프로토콜을 사용하는 SDN에 연결된 디바이스의 SDN 레이어의 구조를 개념적으로 도시한 도면이다. SDN 레이어는 SDN에 연결된 디바이스가 사용하는 프로토콜 디자인 및 통신을 복수의 레이어로 구분한 것이다. 상기 디바이스는 SDN에 연결된 서버 또는 단말을 의미한다. 도 1의 SDN 레이어의 구조는 OpenDaylight 아키텍쳐를 기반으로 설계된 HLD(High Level Design) 구조일 수 있다.FIG. 1 is a diagram conceptually illustrating a structure of an SDN layer of a device connected to an SDN using a gRPC protocol as a northbound API according to an embodiment. The SDN layer divides the protocol design and communication used by the devices connected to the SDN into multiple layers. The device refers to a server or a terminal connected to the SDN. The structure of the SDN layer of FIG. 1 may be a high level design (HLD) structure designed based on the OpenDaylight architecture.

도 1을 참고하면, SDN에 연결된 디바이스에서 실행되는 서비스, 프로세스 또는 스레드는 복수의 레이어 중 어느 하나로 분류될 수 있다. 도 1을 참고하면, SDN의 운영관리 및 모니터링 등의 4 계층에서 7 계층에 이르는 여러 계층의 보안 서비스를 제공하는 프로세스가 애플리케이션 레이어(110)에서 실행될 수 있다. 상기 보안 서비스는 네트워크에서 발생되는 보안 문제를 해결하는데 사용될 수 있다. 이하에서는 애플리케이션 레이어(110)에서 실행되는 프로세스 또는 서비스를 애플리케이션이라 한다. 도 1을 참고하면, GUI(Graphic User Interface)를 제어하는 애플리케이션(Management GUI/CLI), VTN(Virtual Tenant Network) coordinator, DDoS Protection, gRPC Service API 및 다른 네트워크 애플리케이션 및 서비스가 애플리케이션 레이어(110)에서 실행될 수 있다. gRPC 프로토콜이 노스바운드 API로써 사용됨에 따라, 서버측의 애플리케이션이 gRPC 서비스를 지원하는 메소드를 가진 API를 가져야 하므로, gRPC 서비스를 지원하기 위한 API 또는 모듈이 애플리케이션 레이어(110)에 포함될 수 있다.Referring to FIG. 1, a service, a process, or a thread running in a device connected to an SDN may be classified into any one of a plurality of layers. Referring to FIG. 1, a process of providing security services of various layers ranging from four layers to seven layers, such as operation management and monitoring of the SDN, may be executed in the application layer 110. The security service can be used to solve security problems occurring in the network. Hereinafter, a process or service executed in the application layer 110 is called an application. Referring to FIG. 1, an application controlling a graphical user interface (GUI), a virtual tenant network (VTN) coordinator, a DDoS protection, a gRPC service API, and other network applications and services are applied at an application layer 110. Can be executed. As the gRPC protocol is used as a northbound API, since an application on the server side must have an API having a method supporting a gRPC service, an API or a module for supporting a gRPC service may be included in the application layer 110.

도 1을 참고하면, SDN의 통신 및 정책을 제어하는 프로세스 또는 서비스가 실행되는 컨트롤 레이어(120)에서 실행될 수 있다. 예를 들어, Topology Manager, Switch Manager, Host trackers, Stats manager, Shortest path forwarding 등의 기본 네트워크 서비스 펑션 및 DOVE(Distributed Overlay Virtual Ethernet) Manager, Affinity Service, LISP(Locator/Identifier Separation Protocol), VTN Manager, Traffic Redirection 등의 프로세스 또는 서비스가 컨트롤 레이어(120)에서 실행될 수 있다. 컨트롤 레이어(120)는 Plug-in Manager, Capability Abstractions, Flow programming, Inventory 등의 프로세스 또는 서비스가 실행되는 서비스 추상화 레이어(SAL, Service Abstraction Layer)를 포함할 수 있다.Referring to FIG. 1, the process or service for controlling communication and policy of the SDN may be executed in the control layer 120. For example, basic network service functions such as Topology Manager, Switch Manager, Host trackers, Stats manager, Shortest path forwarding, and Distributed Overlay Virtual Ethernet (DOVE) Manager, Affinity Service, Locator / Identifier Separation Protocol (LISP), VTN Manager, Processes or services, such as Traffic Redirection, may be executed in the control layer 120. The control layer 120 may include a service abstraction layer (SAL) in which a process or service such as Plug-in Manager, Capability Abstractions, Flow programming, Inventory, or the like is executed.

도 1을 참고하면, SDN의 인프라스트럭쳐를 구성하는 프로세스, 서비스 등이 인프라스트럭쳐 레이어(130)에서 실행될 수 있다. 예를 들어, OpenFlow Enabled Switch가 인프라스트럭쳐 레이어(130)에서 실행될 수 있다.Referring to FIG. 1, a process, a service, and the like that configure an infrastructure of the SDN may be executed in the infrastructure layer 130. For example, an OpenFlow Enabled Switch can be executed in the infrastructure layer 130.

컨트롤 레이어(120)에서 실행되는 프로세스 또는 서비스는 애플리케이션 레이어(110) 및 인프라스트럭쳐 레이어(130) 각각과 통신하기 위한 API(Application Programming Interface)를 사용할 수 있다. 컨트롤 레이어(120) 및 애플리케이션 레이어(110) 사이의 통신에 사용되는 API를 노스바운드 API(Northbound API)라 하고, 컨트롤 레이어(120) 및 인프라스트럭쳐 레이어(130) 사이의 통신에 사용되는 API를 사우스바운드 API(Southbound API)라 한다. Open Flow가 사우스바운드 API로써 사용될 수 있다. Open Flow가 사우스바운드 API로써 사용되는 경우, Secure channel을 생성하는 TLS가 사용되는 것처럼, HTTP 2.0에서 TLS(Transport Layer Security) 통신을 하는 gRPC가 사용될 수 있다. TLS(Transport Layer Security) 통신을 하는 gRPC가 사용됨으로써, SDN에 연결되는 디바이스의 보안성이 확보될 수 있다.The process or service executed in the control layer 120 may use an application programming interface (API) for communicating with each of the application layer 110 and the infrastructure layer 130. The API used for communication between the control layer 120 and the application layer 110 is referred to as a northbound API, and the API used for communication between the control layer 120 and the infrastructure layer 130 is called a south. It is called Bound API. Open Flow can be used as a southbound API. When Open Flow is used as a southbound API, gRPC for TLS (Transport Layer Security) communication in HTTP 2.0 may be used, just as TLS for creating a secure channel is used. By using gRPC for TLS communication, security of a device connected to the SDN may be secured.

추가적으로, 도 1을 참고하면, 컨트롤 레이어(120) 및 인프라스트럭쳐 레이어(130) 사이의 통신에 사용되는 인터페이스로써, LISP, BGP(Border Gateway Protocol), PCEP(Path Computation Element Communication Protocol), SNMP(Simple Network Management Protocol) 등의 표준 프로토콜 및 디바이스에 고유한 인터페이스가 사용될 수 있다.Additionally, referring to FIG. 1, as an interface used for communication between the control layer 120 and the infrastructure layer 130, LISP, Border Gateway Protocol (BGP), Path Computation Element Communication Protocol (PCEP), and SNMP (Simple) are used. Interfaces specific to standard protocols and devices, such as Network Management Protocol, may be used.

일실시예에 따르면, gRPC(general Remote Procedure Call) 프로토콜이 노스바운드 API로써 사용될 수 있다. gRPC 프로토콜은 RPC 기반의 프로토콜로써, HTTP(Hyper Text Transfer Protocol) 2.0에서 동작할 수 있다. HTTP 2.0은 Multiplexed stream, Header compression, Stream prioritization, Server push 등을 지원할 수 있다. gRPC 프로토콜이 HTTP 2.0에서 동작하고, HTTP 2.0에서는 데이터가 steam 형태로 송수신되므로, 서비스에 대한 response는 request의 순서와 관계없이 전송될 수 있다. 따라서, 여러 컨텐츠가 단일 연결(connection) 만으로 동시에 비동기 형태로 전송될 수 있다.According to one embodiment, the General Remote Procedure Call (gRPC) protocol may be used as the northbound API. The gRPC protocol is an RPC based protocol and may operate in Hyper Text Transfer Protocol (HTTP) 2.0. HTTP 2.0 can support multiplexed streams, header compression, stream prioritization, and server push. Since the gRPC protocol works in HTTP 2.0, and data is sent and received in the form of steam in HTTP 2.0, a response to a service can be transmitted regardless of the order of requests. Therefore, multiple contents can be transmitted asynchronously at the same time with only a single connection.

또한, Header의 overhead를 줄이기 위하여 Header table 및 Huffman encoding 기법이 gRPC 프로토콜에서 사용되므로, 애플리케이션이 다수의 request를 보내고, request-header 값에 중복된 값이 존재하는 경우, 중복된 값이 존재하는 Header field가 검출될 수 있다. 그 다음, 검출된 Header field에 대응하는 index 값만이 전송될 수 있다.In addition, since the header table and the Huffman encoding scheme are used in the gRPC protocol to reduce the overhead of the header, when the application sends a plurality of requests and duplicate values exist in the request-header value, the header field contains duplicate values. Can be detected. Then, only the index value corresponding to the detected header field may be transmitted.

아울러, 브라우저 렌더링의 지연 문제를 해결하는 stream prioritization 기법 및 client의 요청 횟수를 최소화하는 server push 기법이 gRPC 프로토콜에서 사용되므로, 응답 속도가 평균 50% 이상 향상될 수 있다.In addition, since the gRPC protocol uses a stream prioritization technique that solves the browser rendering delay problem and a server push technique that minimizes the number of client requests, the response speed can be improved by 50% or more on average.

상술한 바와 같이, HTTP 2.0에서 동작하는 gRPC 프로토콜은 Multiplexed stream 기능 및 Header compression 기능을 지원할 수 있다. 따라서, gRPC 프로토콜을 이용하여, RPC가 Multiplexed stream 기능을 통해 단일 연결(connection)을 통해 처리할 수 있다. 또한, HTTP 1.1의 문제인 HOLB(Head-of-Line Blocking) 및 Head overhead로 인한 통신 속도 저하 문제가 Multiplexed stream 기능 및 Header compression 기능에 의해 해결될 수 있다. 결국, Multiplexed stream 기능 및 Header compression 기능을 지원하는 HTTP 2.0 기반의 gRPC 프로토콜이 노스바운드 API로 사용됨으로써, HTTP 1.1에서 발생되는 통신 속도가 저하되는 문제가 방지될 수 있다.As described above, the gRPC protocol operating in HTTP 2.0 may support a multiplexed stream function and a header compression function. Therefore, using the gRPC protocol, the RPC can be processed through a single connection through the Multiplexed Stream function. In addition, the problem of communication speed degradation due to Head-of-Line Blocking (HOLB) and head overhead, which is a problem of HTTP 1.1, may be solved by a multiplexed stream function and a header compression function. As a result, since the HTTP 2.0-based gRPC protocol supporting the multiplexed stream function and the header compression function is used as the northbound API, a problem in that the communication speed that occurs in HTTP 1.1 may be prevented.

특히, 다수의 Switch가 연결된 Big network일수록, gRPC 프로토콜이 노스바운드 API로 사용됨에 따른 성능 향상의 정도가 증가할 수 있다. 따라서, 사용자가 보다 편리하게 Big network를 이용할 수 있다. 로컬 디바이스가 로컬 디바이스에서 실행되는 애플리케이션에 의해 원격 디바이스의 프로그램 또는 서비스를 호출할 때에, gRPC 프로토콜은 로컬 디바이스에서 실행되는 프로그램 또는 서비스를 호출하는 것처럼 원격 디바이스의 프로그램 또는 서비스를 호출하게 만들 수 있다. 따라서, 애플리케이션의 개발자가 네트워크 통신 문제를 다루지 않고 편리하게 애플리케이션을 개발할 수 있다. 따라서, 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN의 디바이스는 효율성 및 성능의 측면에서 이점을 제공할 수 있다. In particular, in a big network in which a plurality of switches are connected, the degree of performance improvement may increase as the gRPC protocol is used as a northbound API. Therefore, the user can use the Big network more conveniently. When a local device calls a remote device's program or service by an application running on the local device, the gRPC protocol may cause the remote device's program or service to be invoked as though it invoked a program or service running on the local device. Thus, the developer of the application can conveniently develop the application without dealing with network communication problems. Thus, SDN's devices using the gRPC protocol as a northbound API can provide advantages in terms of efficiency and performance.

도 2는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 애플리케이션(210) 및 네트워크 서비스 펑션(220) 간의 동작을 설명하기 위한 예시적인 도면이다. 애플리케이션(210)은 디바이스의 애플리케이션 레이어에서 실행되고, 네트워크 서비스 펑션(220)은 디바이스의 컨트롤 레이어에서 실행될 수 있다. 네트워크 서비스 펑션(220)뿐만 아니라, 컨트롤 레이어에서 실행되는 다른 프로세스 또는 서비스(예를 들어, 도 1의 Dove Manager 등)가 도 2에서 설명하는 바와 유사하게 애플리케이션(210)과 통신할 수 있다.FIG. 2 is an exemplary diagram for describing an operation between an application 210 and a network service function 220 of a device connected to an SDN using a gRPC protocol with a northbound API according to an embodiment. The application 210 may be executed at the application layer of the device, and the network service function 220 may be executed at the control layer of the device. In addition to the network service function 220, other processes or services (eg, Dove Manager of FIG. 1, etc.) running in the control layer may communicate with the application 210 similar to that described in FIG. 2.

gRPC 프로토콜은 Web을 이용하여 사용될 수 있다. gRPC 프로토콜은 프로토콜 버퍼(PB, Protocol Buffer)라는 직렬변환기(serializer)를 활용할 수 있다. 애플리케이션(210) 및 네트워크 서비스 펑션(220)의 코드를 생성하는 플러그인 및 페이로드 메시지 구조가 직렬변환기에 의해 제공될 수 있다.The gRPC protocol can be used using the Web. The gRPC protocol may utilize a serializer called a protocol buffer (PB). Plug-in and payload message structures that generate code for the application 210 and the network service function 220 may be provided by the serializer.

네트워크 서비스 펑션(220) 또는 기타 컨트롤 레이어에서 실행되는 프로세스 또는 서비스를 호출하기 위한 로컬 객체(211)가 애플리케이션(210)에서 생성될 수 있다. 로컬 객체(211)는 네트워크 서비스 펑션(220)과 동일한 메소드(Method)를 구현하는 Stub일 수 있다. 도 2를 참고하면, 사용자(230)는 디바이스의 애플리케이션(210)의 로컬 객체(211)를 이용하여 네트워크 서비스 펑션(220)에 의해 제공되는 서비스를 호출할 수 있다. 이 경우, 서비스를 호출하는데 필요한 파라미터가 로컬 객체(211)에서 애플리케이션(210)의 컴파일러(212)로 전달될 수 있다. 컴파일러(212)에서, PB Message(Protocol Buffer Message) 및 전달된 파라미터가 gRPC 프로토콜에 기초하여 결합될 수 있다. PB Message 및 파라미터가 결합됨으로써, gRPC request가 컴파일러(212)에서 생성될 수 있다.A local object 211 may be created in the application 210 for calling a process or service running in the network service function 220 or other control layer. The local object 211 may be a stub that implements the same method as the network service function 220. Referring to FIG. 2, the user 230 may call a service provided by the network service function 220 using the local object 211 of the application 210 of the device. In this case, parameters required to invoke the service may be passed from the local object 211 to the compiler 212 of the application 210. In the compiler 212, a Protocol Buffer Message (PB Message) and passed parameters may be combined based on the gRPC protocol. By combining the PB Message and the parameters, a gRPC request can be generated in the compiler 212.

gRPC request는 HTTP 2.0에서 지원되는 TLS 통신을 이용하여 네트워크 서비스 펑션(220)으로 전송될 수 있다. gRPC request는 사용자(230)가 호출한 서비스에 대응하는 API call 및 API를 실행하는데 필요한 파라미터(즉, 서비스를 호출하는데 필요한 파라미터로써, 로컬 객체(211)에서 컴파일러(212)로 전달된 파라미터)를 포함할 수 있다. gRPC request는 네트워크 서비스 펑션(220)의 컴파일러(221)로 전달될 수 있다. 컴파일러(221)는 gRPC request를 디코딩할 수 있다.The gRPC request may be transmitted to the network service function 220 using TLS communication supported in HTTP 2.0. The gRPC request includes API calls corresponding to the service called by the user 230 and parameters required to execute the API (that is, parameters required to call the service, parameters passed from the local object 211 to the compiler 212). It may include. The gRPC request may be delivered to the compiler 221 of the network service function 220. Compiler 221 may decode a gRPC request.

네트워크 서비스 펑션(220)에서, 서비스에 필요한 메소드의 선언 및 구현이 수행될 수 잇다. 더 나아가서, gRPC 서버가 실행됨으로써, 사용자(230)의 요청에 대응하는 서비스가 호출될 수 있다. 도 2를 참고하면, 컴파일러(221)는 gRPC request로부터 추출된 사용자(230)의 요청 또는 애플리케이션(210)의 요청에 대응하여, PB compiler API(222) 또는 API repository에 포함된 서비스를 호출하거나, 서비스에 대응하는 메소드를 실행함으로써, 사용자(230)의 요청 또는 애플리케이션(210)의 요청을 처리할 수 있다. 서비스를 호출한 결과 또는 메소드를 실행한 결과는 컴파일러(221)로 전송될 수 있다. 컴파일러(221)는 서비스를 호출한 결과 또는 메소드를 실행한 결과에 기초하여 gRPC response를 생성할 수 있다. 보다 구체적으로, 컴파일러(221)는 서비스를 호출한 결과 또는 메소드를 실행한 결과를 인코딩할 수 있다.In the network service function 220, the declaration and implementation of the methods required for the service can be performed. Furthermore, by executing the gRPC server, the service corresponding to the request of the user 230 can be called. Referring to FIG. 2, the compiler 221 calls a service included in the PB compiler API 222 or an API repository in response to a request of a user 230 or a request of an application 210 extracted from a gRPC request. By executing a method corresponding to the service, a request of the user 230 or a request of the application 210 may be processed. The result of invoking the service or the result of executing the method may be transmitted to the compiler 221. The compiler 221 may generate a gRPC response based on a result of invoking a service or a result of executing a method. More specifically, the compiler 221 may encode a result of calling a service or a result of executing a method.

gRPC response는 HTTP 2.0에서 지원되는 TLS 통신을 이용하여 애플리케이션(210)으로 전송될 수 있다. gRPC response는 애플리케이션(210)의 컴파일러(212)로 전송될 수 있다. 컴파일러(212)에 의해, 사용자(230)가 서비스를 호출한 것에 대응하는 결과가 로컬 객체(211)로 전송되거나, 사용자(230)로 출력될 수 있다.The gRPC response may be sent to the application 210 using TLS communication supported in HTTP 2.0. The gRPC response may be sent to the compiler 212 of the application 210. By the compiler 212, a result corresponding to the user 230 calling the service may be transmitted to the local object 211 or output to the user 230.

결국, 애플리케이션(210)은 네트워크 서비스 펑션(220)의 메소드를 호출함으로써 작동될 수 있고, 상대적으로 가벼운 통신 프로토콜이 애플리케이션(210)에서 사용됨에 따라, 애플리케이션이 보다 효율적으로 개발될 수 있다.As a result, the application 210 can be operated by calling a method of the network service function 220, and as the relatively light communication protocol is used in the application 210, the application can be developed more efficiently.

도 2에서 설명한 애플리케이션(210)에 의해 네트워크 서비스 펑션(220)의 서비스가 호출되는 동작은 역으로도 수행될 수 있다. 즉, 네트워크 서비스 펑션(220)에 의해 애플리케이션(210)의 서비스 도는 메소드가 호출될 수도 있다.An operation of calling a service of the network service function 220 by the application 210 described with reference to FIG. 2 may also be performed in reverse. That is, the service or method of the application 210 may be called by the network service function 220.

도 3은 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 동작을 설명하기 위한 흐름도이다. 디바이스는 애플리케이션 레이어 및 컨트롤 레이어 사이에서 정보를 주고받기 위한 인터페이스로써, gRPC 프로토콜을 사용할 수 있다. gRPC 프로토콜은 HTTP 1.1 기반의 노스바운드 API인 REST(Representational State Transfer) API를 대체할 수 있다.3 is a flowchart illustrating an operation of a device connected to an SDN using a gRPC protocol with a northbound API according to an embodiment. The device may use the gRPC protocol as an interface for exchanging information between the application layer and the control layer. The gRPC protocol can replace the Representational State Transfer (REST) API, a Northbound API based on HTTP 1.1.

도 3을 참고하면, 단계(310)에서, 디바이스는 애플리케이션으로부터, 컨트롤 레이어의 메소드 또는 서비스를 호출하기 위한 요청(request)을 수신할 수 있다. 역으로, 디바이스는 컨트롤 레이어에서 실행되는 프로세스(예를 들어, 네트워크 서비스 펑션)로부터, 애플리케이션의 메소드 또는 서비스를 호출하기 위한 요청을 수신할 수 있다. 상기 요청은 애플리케이션 또는 네트워크 서비스 펑션에 구현된 로컬 객체에 의해 생성될 수 있다.Referring to FIG. 3, in step 310, the device may receive a request for calling a method or service of a control layer from an application. Conversely, a device may receive a request to invoke a method or service of an application from a process (eg, a network service function) running at the control layer. The request may be generated by a local object implemented in an application or a network service function.

도 3을 참고하면, 단계(320)에서, 디바이스는 수신한 요청에 대응하여 gRPC request를 생성할 수 있다. gRPC request는 요청을 수신한 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. 애플리케이션으로부터 요청을 수신한 경우, gRPC request는 애플리케이션에 대응하여 실행되는 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. 컨트롤 레이어에서 실행되는 프로세스로부터 요청을 수신한 경우, gRPC request는 프로세스에 대응하여 실행되는 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. gRPC request는 호출을 목표로 하는 메소드 또는 서비스에 대한 파라미터를 포함할 수 있다.Referring to FIG. 3, in step 320, the device may generate a gRPC request in response to the received request. The gRPC request may be generated by the compiler or gRPC service that received the request. When a request is received from an application, the gRPC request may be generated by a compiler or a gRPC service executed in response to the application. When a request is received from a process executed in the control layer, the gRPC request may be generated by a compiler or a gRPC service executed corresponding to the process. The gRPC request may contain parameters for the method or service targeted for the call.

도 3을 참고하면, 단계(330)에서, 디바이스는 생성한 gRPC request를 gRPC를 통해 전송할 수 있다. gRPC request는 HTTP 2.0 기반의 TLS 통신을 이용하여 전송될 수 있다. gRPC request는 호출을 목표로 하는 애플리케이션 또는 컨트롤 레이어의 프로세스로 전송될 수 있다. gRPC request를 수신한 애플리케이션 또는 컨트롤 레이어의 프로세스는 gRPC request에 대응하여 메소드 또는 서비스를 호출한 결과를, gRPC response를 통해 회신할 수 있다.Referring to FIG. 3, in step 330, the device may transmit the generated gRPC request through gRPC. The gRPC request may be sent using HTTP 2.0 based TLS communication. gRPC requests can be sent to processes in the application or control layer that target the call. The process of the application or control layer that receives the gRPC request may return the result of calling a method or service in response to the gRPC request through the gRPC response.

단계(340)에서, gRPC request에 대응하는 gRPC response를 수신한 경우, 단계(350)에서, 디바이스는 단계(310)에서 요청을 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스로 gRPC response에 포함된 결과를 제공할 수 있다. 애플리케이션이 요청을 전송한 경우, gRPC response에 포함된 결과는 컨트롤 레이어의 프로세스에서 제공되는 메소드 또는 서비스를 호출한 결과를 포함할 수 있다. 이 경우, 디바이스는 gRPC response에 포함된 결과를 애플리케이션으로 전송할 수 있다. 컨트롤 레이어의 프로세스가 요청을 전송한 경우, gRPC response에 포함된 결과는 애플리케이션에서 제공되는 메소드 또는 서비스를 호출한 결과를 포함할 수 있다. 이 경우, 디바이스는 gRPC response에 포함된 결과를 컨트롤 레이어의 프로세스로 전송할 수 있다.In step 340, when receiving a gRPC response corresponding to the gRPC request, in step 350, the device provides the results included in the gRPC response to the process of the application or control layer that sent the request in step 310. can do. When an application sends a request, the result contained in the gRPC response may include the result of invoking a method or service provided by a process in the control layer. In this case, the device can send the results contained in the gRPC response to the application. When a process in the control layer sends a request, the result contained in the gRPC response may include the result of invoking a method or service provided by the application. In this case, the device can send the results contained in the gRPC response to the control layer's process.

도 4는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스가 gRPC request에 대응하여 수행하는 동작을 설명하기 위한 흐름도이다.4 is a flowchart illustrating an operation performed by a device connected to an SDN using a gRPC protocol as a northbound API in response to a gRPC request.

도 4를 참고하면, 단계(410)에서, 디바이스는 gRPC request를 수신할 수 있다. gRPC request는 HTTP 2.0에 기초하여 애플리케이션 또는 컨트롤 레이어의 프로세스로부터 수신될 수 있다.Referring to FIG. 4, in step 410, the device may receive a gRPC request. The gRPC request may be received from a process at the application or control layer based on HTTP 2.0.

도 4를 참고하면, 단계(420)에서, 디바이스는 수신한 gRPC request를 디코딩할 수 있다. 디바이스는 수신한 gRPC request는 디코딩함으로써, gRPC request를 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스에 의해 호출되는 컨트롤 레이어 또는 애플리케이션의 메소드 또는 서비스를 식별할 수 있다.Referring to FIG. 4, in step 420, the device may decode the received gRPC request. The device may identify the method or service of the control layer or the application that is called by the process of the application or control layer that has sent the gRPC request by decoding the received gRPC request.

도 4를 참고하면, 단계(430)에서, 디바이스는 식별된 메소드 또는 서비스를 실행하거나 호출할 수 있다. 애플리케이션에 의해 생성된 gRPC request를 수신한 경우, 디바이스는 컨트롤 레이어의 프로세스에 포함된 메소드 또는 서비스를 호출할 수 있다. 컨트롤 레이어의 프로세스에 의해 생성된 gRPC request를 수신한 경우, 디바이스는 애플리케이션에 포함된 메소드 또는 서비스를 호출할 수 있다. 메소드 또는 서비스를 호출하는 과정에서, 디바이스는 gRPC request에 포함된 파라미터를 활용할 수 있다.Referring to FIG. 4, at step 430, the device may execute or invoke the identified method or service. When the gRPC request generated by the application is received, the device may call a method or service included in the process of the control layer. When the gRPC request generated by the process of the control layer is received, the device may call a method or service included in the application. In the process of invoking a method or service, the device may utilize parameters included in a gRPC request.

도 4를 참고하면, 단계(440)에서, 디바이스는 호출된 메소드 또는 서비스의 결과 값을 포함하는 gRPC response를 생성할 수 있다. 단계(450)에서, 디바이스는 생성된 gRPC response를 gRPC request를 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스로 전송할 수 있다. gRPC response는 HTTP 2.0에 기초하여 전송될 수 있다.Referring to FIG. 4, in step 440, the device may generate a gRPC response that includes a result value of the called method or service. In operation 450, the device may transmit the generated gRPC response to a process of an application or control layer that has sent a gRPC request. The gRPC response may be sent based on HTTP 2.0.

요약하면, 일실시예에 따른 디바이스는 SDN에 포함된 서버 또는 단말로써, 애플리케이션 레이어 및 컨트롤 레이어 사이에서 전송되는 데이터를 gRPC 프로토콜을 이용하여 전송할 수 있다. 보다 구체적으로, gRPC 프로토콜은 애플리케이션 레이어 및 컨트롤 레이어 각각의 프로세스에 의해 호출되는 노스바운드 API로 사용될 수 있다. RPC 기반의 HTTP 2.0에서 사용될 수 있는 gRPC 프로토콜이 사용됨에 따라, 통신 속도의 성능, 개발자의 편리성, 보안성이 개선될 수 있다. 따라서, 애플리케이션 레이어 및 컨트롤 레이어 사이의 보안 및 속도가 개선됨에 따라, SDN의 안정성이 개선될 수 있다. 더 나아가서, SDN을 이용한 네트워크의 지능화가 애플리케이션 개발의 편리성으로 인해 보다 용이하게 구현될 수 있다.In summary, a device according to an embodiment may be a server or a terminal included in an SDN, and may transmit data transmitted between an application layer and a control layer using a gRPC protocol. More specifically, the gRPC protocol may be used as a northbound API called by the process of each of the application layer and the control layer. As the gRPC protocol that can be used in RPC-based HTTP 2.0 is used, the performance of communication speed, convenience of developer, and security can be improved. Therefore, as the security and speed between the application layer and the control layer are improved, the stability of the SDN can be improved. Furthermore, the intelligence of the network using SDN can be more easily implemented due to the convenience of application development.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the devices and components described in the embodiments are, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable gate arrays (FPGAs). Can be implemented using one or more general purpose or special purpose computers, such as a programmable logic unit (PLU), a 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. The processing device may also access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of explanation, one processing device may be described as being used, but one of ordinary skill in the art will appreciate 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 may include. For example, the processing device may include a plurality of processors or one processor and one controller. In addition, other processing configurations are possible, such as parallel processors.

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

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device 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 embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the claims that follow.

110: 애플리케이션 레이어
120: 컨트롤 레이어
130: 인프라스트럭쳐 레이어
110: application layer
120: control layer
130: infrastructure layer

Claims (10)

애플리케이션 레이어에 포함된 애플리케이션으로부터 메소드를 호출하기 위한 요청을 수신하는 단계;
네트워크를 제어하는 컨트롤 레이어에 포함된 복수의 네트워크 서비스 펑션 중에서 상기 메소드를 가진 네트워크 서비스 펑션으로, gRPC를 통해 상기 요청을 전달하는 단계;
상기 메소드를 가진 네트워크 서비스 펑션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계; 및
상기 애플리케이션에 상기 수신한 결과를 제공하는 단계
를 포함하고,
상기 요청을 수신하는 단계는,
상기 애플리케이션 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 소프트웨어 정의 네트워크(SDN, Software Defined Network)에서 애플리케이션 레이어를 위한 통신 방법.
Receiving a request to call a method from an application included in an application layer;
Transmitting the request through a gRPC to a network service function having the method among a plurality of network service functions included in a control layer controlling a network;
Receiving a result corresponding to the request from a network service function having the method; And
Providing the received result to the application
Including,
Receiving the request,
A communication method for an application layer in a software defined network (SDN) for receiving the request based on a call of a method included in a local object of the application layer.
제1항에 있어서,
상기 gRPC는,
상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 1,
The gRPC is,
A communication method for an application layer in an SDN used as a northbound API for communication between the control layer and the application layer.
제1항에 있어서,
상기 요청을 전달하는 단계는,
상기 요청에 포함된 파라미터가 결합된 PB(Protocol Buffer) 메시지를 상기 네트워크 서비스 펑션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 1,
Delivering the request,
A communication method for an application layer in the SDN for delivering a protocol buffer (PB) message combined with the parameters included in the request to the network service function.
삭제delete 제1항에 있어서,
상기 결과를 수신하는 단계는,
상기 전달된 요청에 따라 상기 네트워크 서비스 펑션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 1,
Receiving the result,
The communication method for the application layer in the SDN receiving the result of calling the method of the network service function in accordance with the forwarded request.
네트워크를 제어하는 컨트롤 레이어에 포함된 네트워크 서비스 펑션으로부터 메소드(method)를 호출하기 위한 요청(request)을 수신하는 단계;
애플리케이션 레이어에 속하는 복수의 애플리케이션 중에서 상기 메소드를 가진 애플리케이션으로, gRPC(general remote procedure call)를 통해 상기 요청을 전달하는 단계;
상기 메소드를 가진 애플리케이션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계; 및
상기 네트워크 서비스 펑션에 상기 수신한 결과를 제공하는 단계
를 포함하는 소프트웨어 정의 네트워크(SDN, Software Defined Network)에서 애플리케이션 레이어를 위한 통신 방법.
Receiving a request for calling a method from a network service function included in a control layer controlling a network;
Transmitting the request through a general remote procedure call (gRPC) to an application having the method among a plurality of applications belonging to an application layer;
Receiving, from an application having the method, a result corresponding to the request; And
Providing the received result to the network service function
Communication method for an application layer in a software defined network (SDN) comprising a.
제6항에 있어서,
상기 gRPC는,
상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API(Northbound API)로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 6,
The gRPC is,
A communication method for an application layer in SDN used as a northbound API for communication between the control layer and the application layer.
제6항에 있어서,
상기 요청을 전달하는 단계는,
상기 요청에 포함된 파라미터가 결합된 PB 메시지를 상기 애플리케이션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 6,
Delivering the request,
A communication method for an application layer in the SDN for delivering a combined PB message included in the request to the application.
제6항에 있어서,
상기 요청을 수신하는 단계는,
상기 컨트롤 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 6,
Receiving the request,
And a communication method for an application layer in the SDN receiving the request based on a call of a method included in a local object of the control layer.
제6항에 있어서,
상기 결과를 수신하는 단계는,
상기 전달된 요청에 따라 상기 애플리케이션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
The method of claim 6,
Receiving the result,
And communication method for an application layer in the SDN receiving a result of calling a method of the application according to the forwarded request.
KR1020170169575A 2017-12-11 2017-12-11 A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network KR102021671B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170169575A KR102021671B1 (en) 2017-12-11 2017-12-11 A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170169575A KR102021671B1 (en) 2017-12-11 2017-12-11 A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network

Publications (2)

Publication Number Publication Date
KR20190069154A KR20190069154A (en) 2019-06-19
KR102021671B1 true KR102021671B1 (en) 2019-09-16

Family

ID=67104736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170169575A KR102021671B1 (en) 2017-12-11 2017-12-11 A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network

Country Status (1)

Country Link
KR (1) KR102021671B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111147573A (en) * 2019-12-24 2020-05-12 网宿科技股份有限公司 Data transmission method and device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017060079A (en) * 2015-09-18 2017-03-23 日本電信電話株式会社 System and method for service function control, service control node and program
KR101757257B1 (en) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Method and apparatus for dynamic control for recoverying error based on software defined network enviroment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769105B2 (en) * 2012-09-14 2014-07-01 Peaxy, Inc. Software-defined network attachable storage system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017060079A (en) * 2015-09-18 2017-03-23 日本電信電話株式会社 System and method for service function control, service control node and program
KR101757257B1 (en) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Method and apparatus for dynamic control for recoverying error based on software defined network enviroment

Also Published As

Publication number Publication date
KR20190069154A (en) 2019-06-19

Similar Documents

Publication Publication Date Title
US10862758B2 (en) Generation of network configuration and configuration commands for impacted nodes of a software defined wide area network
US9800502B2 (en) Quantized congestion notification for computing environments
US10263883B2 (en) Data flow configuration in hybrid system of silicon and micro-electro-mechanical-switch (MEMS) elements
US9509549B2 (en) Extending routing rules from external services
US9178828B2 (en) Architecture for agentless service insertion
US9270566B2 (en) Monitoring server load balancing
US9535707B2 (en) Processing element management in a streaming data system
US9148368B2 (en) Packet routing with analysis assist for embedded applications sharing a single network interface over multiple virtual networks
US11848981B2 (en) Secure multi-directional data pipeline for data distribution systems
US20140056152A1 (en) Port mirroring in distributed switching systems
US9077659B2 (en) Packet routing for embedded applications sharing a single network interface over multiple virtual networks
EP3069484A1 (en) Shortening of service paths in service chains in a communications network
US9007962B2 (en) Deadlock-free routing using edge-disjoint sub-networks
US20230261873A1 (en) Verifiable computation for cross-domain information sharing
US9344373B2 (en) Packet I/O support for a logical switch router architecture
KR102021671B1 (en) A general remote procedure call as a northbound application programming interface for communication in an application layer of a software defined network
US9374308B2 (en) Openflow switch mode transition processing
US20210281581A1 (en) Fragmented cross-domain solution
JP6204407B2 (en) Service providing system, service providing method, and service providing program
KR102082605B1 (en) Method for hardware-assisted network function virtualization and the apparatus thereof
KR101800145B1 (en) Software switch for providng network service and method for operating software switch
KR102028650B1 (en) System and Method of Service Function Chaining in Programmable Switch
KR102136923B1 (en) System and method for providing security service of road traffic network using software defined networking and network function virtualization
Kumazoe et al. P4-based implementation and evaluation of adaptive early packet discarding scheme
KR20220080329A (en) System of hybrid object storage for enhancing put object throughput and its operation method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant