KR20190069154A - SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC - Google Patents

SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC Download PDF

Info

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

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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

일실시예에 따른 디바이스는 SDN에 포함된 서버 또는 단말로써, 애플리케이션 레이어 및 컨트롤 레이어 사이에서 전송되는 데이터를 gRPC 프로토콜을 이용하여 전송할 수 있다. 보다 구체적으로, gRPC 프로토콜은 애플리케이션 레이어 및 컨트롤 레이어 각각의 프로세스에 의해 호출되는 노스바운드 API로 사용될 수 있다.

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}
본 발명은 SDN 및 SDN에 연결된 디바이스에 관한 것이다.
소프트웨어 정의 네트워크(SDN, Software Defined Network)는 하드웨어 디바이스인 컨트롤러를 소프트웨어 영역으로 분리함으로써, 컨트롤러를 프로그램 가능하게 만드는 네트워크 기술이다. 소프트웨어 영역의 제어 평면(control plane)을 통해 네트워크 전체를 중앙 집중 방식으로 제어되는 네트워크이다. 따라서, 소프트웨어 정의 네트워크의 단말은 데이터 통신을 보다 효율적으로 수행할 수 있다. 더 나아가서, 소프트웨어 정의 네트워크는 일괄적인 정책 적용등을 수행하여 빠르고 안전한 네트워크 운용을 지원할 수 있다.
본 발명은 노스바운드 API로 gRPC를 사용하여 애플리케이션 레이어 및 컨트롤 레이어 사이의 통신을 수행하는 소프트웨어 정의 네트워크를 제안한다.
일실시예에 따르면, 애플리케이션 레이어에 포함된 애플리케이션으로부터 메소드를 호출하기 위한 요청을 수신하는 단계, 네트워크를 제어하는 컨트롤 레이어에 포함된 복수의 네트워크 서비스 펑션 중에서 상기 메소드를 가진 네트워크 서비스 펑션으로, gRPC를 통해 상기 요청을 전달하는 단계, 상기 메소드를 가진 네트워크 서비스 펑션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계 및 상기 애플리케이션에 상기 수신한 결과를 제공하는 단계를 포함하는 소프트웨어 정의 네트워크에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 gRPC는, 상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 요청을 전달하는 단계는, 상기 요청에 포함된 파라미터가 결합된 PB(Protocol Buffer) 메시지를 상기 네트워크 서비스 펑션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 요청을 수신하는 단계는, 상기 애플리케이션 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 결과를 수신하는 단계는, 상기 전달된 요청에 따라 상기 네트워크 서비스 펑션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 네트워크를 제어하는 컨트롤 레이어에 포함된 네트워크 서비스 펑션으로부터 메소드(method)를 호출하기 위한 요청(request)을 수신하는 단계, 애플리케이션 레이어에 속하는 복수의 애플리케이션 중에서 상기 메소드를 가진 애플리케이션으로, gRPC(general remote procedure call)를 통해 상기 요청을 전달하는 단계, 상기 메소드를 가진 애플리케이션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계 및 상기 네트워크 서비스 펑션에 상기 수신한 결과를 제공하는 단계를 포함하는 소프트웨어 정의 네트워크(SDN, Software Defined Network)에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 gRPC는, 상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API(Northbound API)로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 요청을 전달하는 단계는, 상기 요청에 포함된 파라미터가 결합된 PB 메시지를 상기 애플리케이션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 요청을 수신하는 단계는, 상기 컨트롤 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 상기 결과를 수신하는 단계는, 상기 전달된 요청에 따라 상기 애플리케이션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법이 제공된다.
일실시예에 따르면, 노스바운드 API로 gRPC를 사용하여 애플리케이션 레이어 및 컨트롤 레이어 사이의 통신을 수행할 수 있다.
도 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에 대응하여 수행하는 동작을 설명하기 위한 흐름도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 노스바운드 API로 gRPC(general remote procedure call) 프로토콜을 사용하는 SDN에 연결된 디바이스의 SDN 레이어의 구조를 개념적으로 도시한 도면이다. SDN 레이어는 SDN에 연결된 디바이스가 사용하는 프로토콜 디자인 및 통신을 복수의 레이어로 구분한 것이다. 상기 디바이스는 SDN에 연결된 서버 또는 단말을 의미한다. 도 1의 SDN 레이어의 구조는 OpenDaylight 아키텍쳐를 기반으로 설계된 HLD(High Level Design) 구조일 수 있다.
도 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)에 포함될 수 있다.
도 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)를 포함할 수 있다.
도 1을 참고하면, SDN의 인프라스트럭쳐를 구성하는 프로세스, 서비스 등이 인프라스트럭쳐 레이어(130)에서 실행될 수 있다. 예를 들어, OpenFlow Enabled Switch가 인프라스트럭쳐 레이어(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에 연결되는 디바이스의 보안성이 확보될 수 있다.
추가적으로, 도 1을 참고하면, 컨트롤 레이어(120) 및 인프라스트럭쳐 레이어(130) 사이의 통신에 사용되는 인터페이스로써, LISP, BGP(Border Gateway Protocol), PCEP(Path Computation Element Communication Protocol), SNMP(Simple Network Management Protocol) 등의 표준 프로토콜 및 디바이스에 고유한 인터페이스가 사용될 수 있다.
일실시예에 따르면, 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) 만으로 동시에 비동기 형태로 전송될 수 있다.
또한, Header의 overhead를 줄이기 위하여 Header table 및 Huffman encoding 기법이 gRPC 프로토콜에서 사용되므로, 애플리케이션이 다수의 request를 보내고, request-header 값에 중복된 값이 존재하는 경우, 중복된 값이 존재하는 Header field가 검출될 수 있다. 그 다음, 검출된 Header field에 대응하는 index 값만이 전송될 수 있다.
아울러, 브라우저 렌더링의 지연 문제를 해결하는 stream prioritization 기법 및 client의 요청 횟수를 최소화하는 server push 기법이 gRPC 프로토콜에서 사용되므로, 응답 속도가 평균 50% 이상 향상될 수 있다.
상술한 바와 같이, 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에서 발생되는 통신 속도가 저하되는 문제가 방지될 수 있다.
특히, 다수의 Switch가 연결된 Big network일수록, gRPC 프로토콜이 노스바운드 API로 사용됨에 따른 성능 향상의 정도가 증가할 수 있다. 따라서, 사용자가 보다 편리하게 Big network를 이용할 수 있다. 로컬 디바이스가 로컬 디바이스에서 실행되는 애플리케이션에 의해 원격 디바이스의 프로그램 또는 서비스를 호출할 때에, gRPC 프로토콜은 로컬 디바이스에서 실행되는 프로그램 또는 서비스를 호출하는 것처럼 원격 디바이스의 프로그램 또는 서비스를 호출하게 만들 수 있다. 따라서, 애플리케이션의 개발자가 네트워크 통신 문제를 다루지 않고 편리하게 애플리케이션을 개발할 수 있다. 따라서, 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN의 디바이스는 효율성 및 성능의 측면에서 이점을 제공할 수 있다.
도 2는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 애플리케이션(210) 및 네트워크 서비스 펑션(220) 간의 동작을 설명하기 위한 예시적인 도면이다. 애플리케이션(210)은 디바이스의 애플리케이션 레이어에서 실행되고, 네트워크 서비스 펑션(220)은 디바이스의 컨트롤 레이어에서 실행될 수 있다. 네트워크 서비스 펑션(220)뿐만 아니라, 컨트롤 레이어에서 실행되는 다른 프로세스 또는 서비스(예를 들어, 도 1의 Dove Manager 등)가 도 2에서 설명하는 바와 유사하게 애플리케이션(210)과 통신할 수 있다.
gRPC 프로토콜은 Web을 이용하여 사용될 수 있다. gRPC 프로토콜은 프로토콜 버퍼(PB, Protocol Buffer)라는 직렬변환기(serializer)를 활용할 수 있다. 애플리케이션(210) 및 네트워크 서비스 펑션(220)의 코드를 생성하는 플러그인 및 페이로드 메시지 구조가 직렬변환기에 의해 제공될 수 있다.
네트워크 서비스 펑션(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)에서 생성될 수 있다.
gRPC request는 HTTP 2.0에서 지원되는 TLS 통신을 이용하여 네트워크 서비스 펑션(220)으로 전송될 수 있다. gRPC request는 사용자(230)가 호출한 서비스에 대응하는 API call 및 API를 실행하는데 필요한 파라미터(즉, 서비스를 호출하는데 필요한 파라미터로써, 로컬 객체(211)에서 컴파일러(212)로 전달된 파라미터)를 포함할 수 있다. gRPC request는 네트워크 서비스 펑션(220)의 컴파일러(221)로 전달될 수 있다. 컴파일러(221)는 gRPC request를 디코딩할 수 있다.
네트워크 서비스 펑션(220)에서, 서비스에 필요한 메소드의 선언 및 구현이 수행될 수 잇다. 더 나아가서, gRPC 서버가 실행됨으로써, 사용자(230)의 요청에 대응하는 서비스가 호출될 수 있다. 도 2를 참고하면, 컴파일러(221)는 gRPC request로부터 추출된 사용자(230)의 요청 또는 애플리케이션(210)의 요청에 대응하여, PB compiler API(222) 또는 API repository에 포함된 서비스를 호출하거나, 서비스에 대응하는 메소드를 실행함으로써, 사용자(230)의 요청 또는 애플리케이션(210)의 요청을 처리할 수 있다. 서비스를 호출한 결과 또는 메소드를 실행한 결과는 컴파일러(221)로 전송될 수 있다. 컴파일러(221)는 서비스를 호출한 결과 또는 메소드를 실행한 결과에 기초하여 gRPC response를 생성할 수 있다. 보다 구체적으로, 컴파일러(221)는 서비스를 호출한 결과 또는 메소드를 실행한 결과를 인코딩할 수 있다.
gRPC response는 HTTP 2.0에서 지원되는 TLS 통신을 이용하여 애플리케이션(210)으로 전송될 수 있다. gRPC response는 애플리케이션(210)의 컴파일러(212)로 전송될 수 있다. 컴파일러(212)에 의해, 사용자(230)가 서비스를 호출한 것에 대응하는 결과가 로컬 객체(211)로 전송되거나, 사용자(230)로 출력될 수 있다.
결국, 애플리케이션(210)은 네트워크 서비스 펑션(220)의 메소드를 호출함으로써 작동될 수 있고, 상대적으로 가벼운 통신 프로토콜이 애플리케이션(210)에서 사용됨에 따라, 애플리케이션이 보다 효율적으로 개발될 수 있다.
도 2에서 설명한 애플리케이션(210)에 의해 네트워크 서비스 펑션(220)의 서비스가 호출되는 동작은 역으로도 수행될 수 있다. 즉, 네트워크 서비스 펑션(220)에 의해 애플리케이션(210)의 서비스 도는 메소드가 호출될 수도 있다.
도 3은 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스의 동작을 설명하기 위한 흐름도이다. 디바이스는 애플리케이션 레이어 및 컨트롤 레이어 사이에서 정보를 주고받기 위한 인터페이스로써, gRPC 프로토콜을 사용할 수 있다. gRPC 프로토콜은 HTTP 1.1 기반의 노스바운드 API인 REST(Representational State Transfer) API를 대체할 수 있다.
도 3을 참고하면, 단계(310)에서, 디바이스는 애플리케이션으로부터, 컨트롤 레이어의 메소드 또는 서비스를 호출하기 위한 요청(request)을 수신할 수 있다. 역으로, 디바이스는 컨트롤 레이어에서 실행되는 프로세스(예를 들어, 네트워크 서비스 펑션)로부터, 애플리케이션의 메소드 또는 서비스를 호출하기 위한 요청을 수신할 수 있다. 상기 요청은 애플리케이션 또는 네트워크 서비스 펑션에 구현된 로컬 객체에 의해 생성될 수 있다.
도 3을 참고하면, 단계(320)에서, 디바이스는 수신한 요청에 대응하여 gRPC request를 생성할 수 있다. gRPC request는 요청을 수신한 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. 애플리케이션으로부터 요청을 수신한 경우, gRPC request는 애플리케이션에 대응하여 실행되는 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. 컨트롤 레이어에서 실행되는 프로세스로부터 요청을 수신한 경우, gRPC request는 프로세스에 대응하여 실행되는 컴파일러 또는 gRPC 서비스에 의해 생성될 수 있다. gRPC request는 호출을 목표로 하는 메소드 또는 서비스에 대한 파라미터를 포함할 수 있다.
도 3을 참고하면, 단계(330)에서, 디바이스는 생성한 gRPC request를 gRPC를 통해 전송할 수 있다. gRPC request는 HTTP 2.0 기반의 TLS 통신을 이용하여 전송될 수 있다. gRPC request는 호출을 목표로 하는 애플리케이션 또는 컨트롤 레이어의 프로세스로 전송될 수 있다. gRPC request를 수신한 애플리케이션 또는 컨트롤 레이어의 프로세스는 gRPC request에 대응하여 메소드 또는 서비스를 호출한 결과를, gRPC response를 통해 회신할 수 있다.
단계(340)에서, gRPC request에 대응하는 gRPC response를 수신한 경우, 단계(350)에서, 디바이스는 단계(310)에서 요청을 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스로 gRPC response에 포함된 결과를 제공할 수 있다. 애플리케이션이 요청을 전송한 경우, gRPC response에 포함된 결과는 컨트롤 레이어의 프로세스에서 제공되는 메소드 또는 서비스를 호출한 결과를 포함할 수 있다. 이 경우, 디바이스는 gRPC response에 포함된 결과를 애플리케이션으로 전송할 수 있다. 컨트롤 레이어의 프로세스가 요청을 전송한 경우, gRPC response에 포함된 결과는 애플리케이션에서 제공되는 메소드 또는 서비스를 호출한 결과를 포함할 수 있다. 이 경우, 디바이스는 gRPC response에 포함된 결과를 컨트롤 레이어의 프로세스로 전송할 수 있다.
도 4는 일실시예에 따른 노스바운드 API로 gRPC 프로토콜을 사용하는 SDN에 연결된 디바이스가 gRPC request에 대응하여 수행하는 동작을 설명하기 위한 흐름도이다.
도 4를 참고하면, 단계(410)에서, 디바이스는 gRPC request를 수신할 수 있다. gRPC request는 HTTP 2.0에 기초하여 애플리케이션 또는 컨트롤 레이어의 프로세스로부터 수신될 수 있다.
도 4를 참고하면, 단계(420)에서, 디바이스는 수신한 gRPC request를 디코딩할 수 있다. 디바이스는 수신한 gRPC request는 디코딩함으로써, gRPC request를 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스에 의해 호출되는 컨트롤 레이어 또는 애플리케이션의 메소드 또는 서비스를 식별할 수 있다.
도 4를 참고하면, 단계(430)에서, 디바이스는 식별된 메소드 또는 서비스를 실행하거나 호출할 수 있다. 애플리케이션에 의해 생성된 gRPC request를 수신한 경우, 디바이스는 컨트롤 레이어의 프로세스에 포함된 메소드 또는 서비스를 호출할 수 있다. 컨트롤 레이어의 프로세스에 의해 생성된 gRPC request를 수신한 경우, 디바이스는 애플리케이션에 포함된 메소드 또는 서비스를 호출할 수 있다. 메소드 또는 서비스를 호출하는 과정에서, 디바이스는 gRPC request에 포함된 파라미터를 활용할 수 있다.
도 4를 참고하면, 단계(440)에서, 디바이스는 호출된 메소드 또는 서비스의 결과 값을 포함하는 gRPC response를 생성할 수 있다. 단계(450)에서, 디바이스는 생성된 gRPC response를 gRPC request를 전송한 애플리케이션 또는 컨트롤 레이어의 프로세스로 전송할 수 있다. gRPC response는 HTTP 2.0에 기초하여 전송될 수 있다.
요약하면, 일실시예에 따른 디바이스는 SDN에 포함된 서버 또는 단말로써, 애플리케이션 레이어 및 컨트롤 레이어 사이에서 전송되는 데이터를 gRPC 프로토콜을 이용하여 전송할 수 있다. 보다 구체적으로, gRPC 프로토콜은 애플리케이션 레이어 및 컨트롤 레이어 각각의 프로세스에 의해 호출되는 노스바운드 API로 사용될 수 있다. RPC 기반의 HTTP 2.0에서 사용될 수 있는 gRPC 프로토콜이 사용됨에 따라, 통신 속도의 성능, 개발자의 편리성, 보안성이 개선될 수 있다. 따라서, 애플리케이션 레이어 및 컨트롤 레이어 사이의 보안 및 속도가 개선됨에 따라, SDN의 안정성이 개선될 수 있다. 더 나아가서, SDN을 이용한 네트워크의 지능화가 애플리케이션 개발의 편리성으로 인해 보다 용이하게 구현될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110: 애플리케이션 레이어
120: 컨트롤 레이어
130: 인프라스트럭쳐 레이어

Claims (10)

  1. 애플리케이션 레이어에 포함된 애플리케이션으로부터 메소드를 호출하기 위한 요청을 수신하는 단계;
    네트워크를 제어하는 컨트롤 레이어에 포함된 복수의 네트워크 서비스 펑션 중에서 상기 메소드를 가진 네트워크 서비스 펑션으로, gRPC를 통해 상기 요청을 전달하는 단계;
    상기 메소드를 가진 네트워크 서비스 펑션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계; 및
    상기 애플리케이션에 상기 수신한 결과를 제공하는 단계
    를 포함하는 소프트웨어 정의 네트워크에서 애플리케이션 레이어를 위한 통신 방법.
  2. 제1항에 있어서,
    상기 gRPC는,
    상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  3. 제1항에 있어서,
    상기 요청을 전달하는 단계는,
    상기 요청에 포함된 파라미터가 결합된 PB(Protocol Buffer) 메시지를 상기 네트워크 서비스 펑션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  4. 제1항에 있어서,
    상기 요청을 수신하는 단계는,
    상기 애플리케이션 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  5. 제1항에 있어서,
    상기 결과를 수신하는 단계는,
    상기 전달된 요청에 따라 상기 네트워크 서비스 펑션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  6. 네트워크를 제어하는 컨트롤 레이어에 포함된 네트워크 서비스 펑션으로부터 메소드(method)를 호출하기 위한 요청(request)을 수신하는 단계;
    애플리케이션 레이어에 속하는 복수의 애플리케이션 중에서 상기 메소드를 가진 애플리케이션으로, gRPC(general remote procedure call)를 통해 상기 요청을 전달하는 단계;
    상기 메소드를 가진 애플리케이션으로부터, 상기 요청에 대응하는 결과를 수신하는 단계; 및
    상기 네트워크 서비스 펑션에 상기 수신한 결과를 제공하는 단계
    를 포함하는 소프트웨어 정의 네트워크(SDN, Software Defined Network)에서 애플리케이션 레이어를 위한 통신 방법.
  7. 제6항에 있어서,
    상기 gRPC는,
    상기 컨트롤 레이어 및 상기 애플리케이션 레이어 간의 통신을 위한 노스바운드 API(Northbound API)로써 사용되는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  8. 제6항에 있어서,
    상기 요청을 전달하는 단계는,
    상기 요청에 포함된 파라미터가 결합된 PB 메시지를 상기 애플리케이션으로 전달하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  9. 제6항에 있어서,
    상기 요청을 수신하는 단계는,
    상기 컨트롤 레이어의 로컬 객체에 포함된 메소드의 호출에 기초하여 상기 요청을 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
  10. 제6항에 있어서,
    상기 결과를 수신하는 단계는,
    상기 전달된 요청에 따라 상기 애플리케이션의 메소드를 호출한 결과를 수신하는 SDN에서 애플리케이션 레이어를 위한 통신 방법.
KR1020170169575A 2017-12-11 2017-12-11 SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC KR102021671B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170169575A KR102021671B1 (ko) 2017-12-11 2017-12-11 SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170169575A KR102021671B1 (ko) 2017-12-11 2017-12-11 SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC

Publications (2)

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

Family

ID=67104736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170169575A KR102021671B1 (ko) 2017-12-11 2017-12-11 SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC

Country Status (1)

Country Link
KR (1) KR102021671B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3873067A4 (en) * 2019-12-24 2021-09-01 Wangsu Science & Technology Co., Ltd. DATA TRANSFER METHOD AND DEVICE

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150052036A (ko) * 2012-09-14 2015-05-13 픽시, 인코포레이티드 소프트웨어 정의 네트워크 연결 저장 시스템 및 방법
JP2017060079A (ja) * 2015-09-18 2017-03-23 日本電信電話株式会社 サービスファンクション制御システム、サービスファンクション制御方法、サービスコントロールノード、及びプログラム
KR101757257B1 (ko) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Sdn 기반의 장애회복을 위한 동적제어장치 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150052036A (ko) * 2012-09-14 2015-05-13 픽시, 인코포레이티드 소프트웨어 정의 네트워크 연결 저장 시스템 및 방법
JP2017060079A (ja) * 2015-09-18 2017-03-23 日本電信電話株式会社 サービスファンクション制御システム、サービスファンクション制御方法、サービスコントロールノード、及びプログラム
KR101757257B1 (ko) * 2016-08-18 2017-07-13 한국과학기술정보연구원 Sdn 기반의 장애회복을 위한 동적제어장치 및 그 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3873067A4 (en) * 2019-12-24 2021-09-01 Wangsu Science & Technology Co., Ltd. DATA TRANSFER METHOD AND DEVICE
US11303737B2 (en) 2019-12-24 2022-04-12 Wangsu Science & Technology Co., Ltd. Method and device for data transmission

Also Published As

Publication number Publication date
KR102021671B1 (ko) 2019-09-16

Similar Documents

Publication Publication Date Title
US10547463B2 (en) Multicast helper to link virtual extensible LANs
EP3143733B1 (en) Virtual flow network in a cloud environment
US10367736B2 (en) Extended tag networking
CN109561108B (zh) 一种基于策略的容器网络资源隔离控制方法
US10313229B2 (en) Method and apparatus for path selection
KR101703088B1 (ko) Sdn 기반의 통합 라우팅 방법 및 그 시스템
US9509549B2 (en) Extending routing rules from external services
US9178828B2 (en) Architecture for agentless service insertion
US9559896B2 (en) Network-assisted configuration and programming of gateways in a network environment
US11848981B2 (en) Secure multi-directional data pipeline for data distribution systems
US9148368B2 (en) Packet routing with analysis assist for embedded applications sharing a single network interface over multiple virtual networks
US9083644B2 (en) Packet routing for embedded applications sharing a single network interface over multiple virtual networks
JP2015534320A (ja) ポリシーベースのデータセンタネットワーク自動化を提供するシステムおよび方法
KR20180058594A (ko) Sdn/tap 어플리케이션
US8675669B2 (en) Policy homomorphic network extension
US11595410B2 (en) Fragmented cross-domain solution
US9374308B2 (en) Openflow switch mode transition processing
KR102021671B1 (ko) SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC
KR20180086964A (ko) 패킷 전송 방법 및 오픈플로우 스위치
US11258720B2 (en) Flow-based isolation in a service network implemented over a software-defined network
KR102054259B1 (ko) 소프트웨어 정의 네트워크에서 인텐트 기반의 자원관리를 수행하는 방법 및 그 시스템, 그 방법을 수행하는 프로그램이 기록된 컴퓨터 판독이 가능한 기록매체
US11425221B1 (en) Runtime extensible application programming interface server
Kumazoe et al. P4-based implementation and evaluation of adaptive early packet discarding scheme
TWI578737B (zh) 交換機、控制設備及其管理方法
KR20190115257A (ko) Sdn 및 nfv를 이용한 도로 교통 네트워크의 보안 서비스 제공 시스템 및 그 방법

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