KR102482518B1 - TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템 - Google Patents

TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템 Download PDF

Info

Publication number
KR102482518B1
KR102482518B1 KR1020190030526A KR20190030526A KR102482518B1 KR 102482518 B1 KR102482518 B1 KR 102482518B1 KR 1020190030526 A KR1020190030526 A KR 1020190030526A KR 20190030526 A KR20190030526 A KR 20190030526A KR 102482518 B1 KR102482518 B1 KR 102482518B1
Authority
KR
South Korea
Prior art keywords
information
server
turn
webrtc
media quality
Prior art date
Application number
KR1020190030526A
Other languages
English (en)
Other versions
KR20200110961A (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 KR1020190030526A priority Critical patent/KR102482518B1/ko
Publication of KR20200110961A publication Critical patent/KR20200110961A/ko
Application granted granted Critical
Publication of KR102482518B1 publication Critical patent/KR102482518B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)

Abstract

TURN(Traversal Using Relays around Network Address Translation) 서버를 동적으로 할당하는 방법, WebRTC(Web Real-Time Communication) 서버 및 WebRTC 시스템이 개시된다. 본 개시의 일 실시예에 따른 방법은, WebRTC 클라이언트로부터 ICE(Interactive Connectivity Establishment) 서버 요청 정보를 수신하는 단계; WebRTC 클라이언트 및 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스에 액세스하는 단계; 데이터베이스에 기초하여 복수의 TURN 서버 중 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하는 단계; 및 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 WebRTC 클라이언트로 전송하는 단계를 포함할 수 있다.

Description

TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템{METHOD, WEB REAL-TIME COMMUNICATIONS SERVER AND WEB REAL-TIME COMMUNICATIONS SYSTEM FOR ASSIGNING TRAVERSAL USING RELAYS AROUND NAT SERVER}
본 개시는 TURN(Traversal Using Relays around NAT) 서버를 동적으로 할당하는 방법, WebRTC(Web Real-Time Communications) 서버 및 WebRTC 시스템에 관한 것이다.
일반적인 웹 환경에서 웹 브라우저의 웹 어플리케이션(Web Application)을 통해 실시간 통신(Real Time Communication: RTC) 서비스를 제공하기 위해서는 별도의 네이티브 어플리케이션(Native Application) 또는 플러그인(Plug-in)이 설치되어야 한다.
그런데, 실시간 통신을 위해 별도의 어플리케이션 또는 플러그인을 다운로드한 후 설치 및 업그레드하는 과정은 사용 상의 불편함을 초래할 뿐만 아니라 호환성의 문제로 인하여 오류가 발생할 수 있다.
최근, 별도의 어플리케이션 또는 플러그인을 설치하지 않고, 사용자 단말의 OS(Operation system)와는 무관하게 웹 브라우저의 웹 어플리케이션을 통해 실시간 통신 서비스를 지원하기 위한 기술들이 개발되었고, 이를 지원하기 위한 웹 브라우저의 표준화 작업이 진행 중이며, 이러한 기술을 WebRTC(Web Real-Time Communications)라고 칭하고 있다.
WebRTC 클라이언트는 ICE(Interactive Connectivity Establishment) 프로토콜을 이용하여 WebRTC 클라이언트간(즉, 피어(Peer)간) 직접 미디어 연결에 실패하는 경우, 지정된 TURN(Traversal Using Relays around NAT) 서버의 미디어 중계(Media relay)를 통해 피어간 미디어를 전달하게 된다. 종래의 WebRTC 시스템에서는 WebRTC 서버에 의해 TURN 서버가 고정적(static)으로 지정되고, 지정된 TURN 서버를 통해 미디어가 전달되었다. 이로 인해, 지정된 TURN Server와 WebRTC 클라이언트의 네트워크가 지역적으로 떨어져 있을 경우, 네트워크 패킷 전달에 지연과 손실이 발생하여 WebRTC 미디어 품질(Quality)이 저하되는 문제점이 있다.
본 개시는 TURN 서버와 연관된 정보에 기초하여 최적의 미디어 품질을 제공할 수 있는 TURN 서버를 동적으로 할당하는 방법, WebRTC 서버 및 WebRTC 시스템을 제공할 수 있다.
본 개시의 일 실시예에 따르면, 복수의 TURN(Traversal Using Relays around Network Address Translation) 서버를 포함하는 WebRTC(Web Real-Time Communication) 시스템에서 TURN 서버를 할당하는 방법이 개시된다. 본 개시의 일 실시예에 따른 방법은, WebRTC 클라이언트로부터 ICE(Interactive Connectivity Establishment) 서버 요청 정보를 수신하는 단계; WebRTC 클라이언트 및 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스에 액세스하는 단계; 데이터베이스에 기초하여 복수의 TURN 서버 중 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하는 단계; 및 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 WebRTC 클라이언트로 전송하는 단계를 포함할 수 있다.
일 실시예에 있어서, ICE 서버 요청 정보는 WebRTC 클라이언트의 공인(public) IP 정보를 포함하고, 관리 정보는 공인 IP 정보 및 복수의 TURN 서버에 각각 대응하는 복수의 TURN 서버 정보 - 복수의 TURN 서버 정보 각각은 해당 TURN 서버의 IP 정보를 포함함 - 를 포함할 수 있다.
일 실시예에 있어서, 복수의 TURN 서버 중 제1 TURN 서버를 선택하는 단계는, WebRTC 클라이언트와 복수의 TURN 서버 간의 거리에 기초하여 제1 TURN 서버를 선택하는 단계를 포함할 수 있다.
일 실시예에 있어서, WebRTC 클라이언트와 복수의 TURN 서버 간의 거리에 기초하여 제1 TURN 서버를 선택하는 단계는, 공인 IP 정보 및 복수의 TURN 서버 정보에 기초하여 WebRTC 클라이언트와 복수의 TURN 서버 간의 거리를 산출하여 복수의 거리 정보를 생성하는 단계; 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하는 단계; 및 데이터베이스로부터 결정된 거리 정보에 해당하는 TURN 서버 정보를 추출하는 단계를 포함할 수 있다.
일 실시예에 있어서, 방법은 공인 IP 정보 및 복수의 거리 정보에 기초하여 데이터베이스를 업데이트하는 단계를 더 포함할 수 있다.
일 실시예에 있어서, 관리 정보는 복수의 TURN 서버에 각각 대응하는 복수의 미디어 품질 정보 - 복수의 미디어 품질 정보 각각은 미디어 품질값을 포함함 - 및 복수의 부하 상태 정보를 더 포함할 수 있다.
일 실시예에 있어서, 복수의 TURN 서버 중 제1 TURN 서버를 선택하는 단계는, 미디어 품질 정보 및 부하 상태 정보에 기초하여 제1 TURN 서버를 선택하는 단계를 포함할 수 있다.
일 실시예에 있어서, 미디어 품질 정보 및 부하 상태 정보에 기초하여 제1 TURN 서버를 선택하는 단계는, 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정하는 단계; 결정된 미디어 품질 정보가 복수개인지 판단하는 단계; 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 데이터베이스로부터 결정된 미디어 품질 정보에 해당하는 TURN 서버 정보를 추출하는 단계; 및 결정된 미디어 품질 정보가 복수개인 것으로 판단되면, 데이터베이스로부터 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 가장 낮은 부하 상태에 해당하는 TURN 서버 정보를 추출하는 단계를 포함할 수 있다.
일 실시예에 있어서, TURN 서버를 할당하는 방법은, WebRTC 클라이언트로부터 새로운 미디어 품질 정보 및 새로운 부하 상태 정보를 수신하는 단계; 및 새로운 미디어 품질 정보 및 새로운 부하 상태 정보에 기초하여 데이터베이스를 업데이트하는 단계를 더 포함할 수 있다.
본 개시의 일 실시예에 따르면, WebRTC 서버가 개시된다. 본 개시의 일 실시예에 따른 WebRTC 서버는 WebRTC 클라이언트 및 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스를 저장하는 저장부; WebRTC 클라이언트로부터 ICE 서버 요청 정보를 수신하도록 구성되는 통신 모듈; 및 데이터베이스에 기초하여 복수의 TURN 서버 중 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하고, 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성하며, ICE 서버 정보를 통신 모듈을 통해 WebRTC 클라이언트로 전송하도록 구성되는 프로세서를 포함할 수 있다.
일 실시예에 있어서, ICE 서버 요청 정보는 WebRTC 클라이언트의 공인 IP 정보를 포함하고, 관리 정보는 공인 IP 정보 및 복수의 TURN 서버에 각각 대응하는 복수의 TURN 서버 정보 - 복수의 TURN 서버 정보 각각은 해당 TURN 서버의 IP 정보를 포함함 - 를 포함할 수 있다.
일 실시예에 있어서, 프로세서는 WebRTC 클라이언트와 복수의 TURN 서버 간의 거리에 기초하여 제1 TURN 서버를 선택하도록 구성될 수 있다.
일 실시예에 있어서, 프로세서는, 공인 IP 정보 및 복수의 TURN 서버 정보에 기초하여 WebRTC 클라이언트와 복수의 TURN 서버 간의 거리를 산출하여 복수의 거리 정보를 생성하고, 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하고, 데이터베이스로부터 결정된 거리 정보에 해당하는 TURN 서버 정보를 추출하도록 구성될 수 있다.
일 실시예에 있어서, 프로세서는 공인 IP 정보 및 복수의 거리 정보에 기초하여 데이터베이스를 업데이트하도록 더 구성될 수 있다.
일 실시예에 있어서, 관리 정보는 복수의 TURN 서버에 각각 대응하는 복수의 미디어 품질 정보 - 복수의 미디어 품질 정보 각각은 미디어 품질값을 포함함 - 및 복수의 부하 상태 정보를 더 포함할 수 있다.
일 실시예에 있어서, 프로세서는 미디어 품질 정보 및 부하 상태 정보에 기초하여 제1 TURN 서버를 선택하도록 구성될 수 있다.
일 실시예에 있어서, 프로세서는, 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정하고, 결정된 미디어 품질 정보가 복수개인지 판단하고, 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 데이터베이스로부터 결정된 미디어 품질 정보에 해당하는 TURN 서버 정보를 추출하고, 결정된 미디어 품질 정보가 복수개인 것으로 판단되면, 데이터베이스로부터 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 가장 낮은 부하 상태에 해당하는 TURN 서버 정보를 추출하도록 구성될 수 있다.
일 실시예에 있어서, 통신 모듈은 WebRTC 클라이언트로부터 새로운 미디어 품질 정보 및 새로운 부하 상태 정보를 수신하도록 더 구성될 수 있고, 프로세서는 새로운 미디어 품질 정보 및 새로운 부하 상태 정보에 기초하여 데이터베이스를 업데이트하도록 더 구성될 수 있다.
본 개시의 일 실시예에 따르면, WebRTC 시스템이 개시된다. 본 개시의 일 실시예에 따른 WebRTC 시스템은, 복수의 TURN 서버; ICE 서버 요청 정보를 전송하도록 구성되는 WebRTC 클라이언트; 및 복수의 TURN 서버 및 WebRTC 클라이언트에 연결되고, WebRTC 클라이언트 및 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스에 액세스하고, 데이터베이스에 기초하여 복수의 TURN 서버 중 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하며, 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 WebRTC 클라이언트로 전송하도록 구성되는 WebRTC 서버를 포함할 수 있다.
본 개시의 다양한 실시예에 따르면, 최적의 미디어 품질을 제공하기 위한 TURN(Traversal Using Relays around NAT) 서버가 동적으로 할당될 수 있다. 특히, 클라우드(Cloud) 환경에서 WebRTC 클라이언트의 지리적 위치가 다를 수 있으므로, 지역별로 복수의 TURN 서버를 운용하는 경우, WebRTC 클라이언트가 인접한 TURN 서버로 접속하여 최적의 미디어 품질을 제공할 수 있도록 TURN 서버를 동적으로 할당할 수 있다.
도 1은 본 개시의 일 실시예에 따른 WebRTC(Web Real-Time Communications) 시스템의 구성을 개략적으로 나타낸 블록도이다.
도 2는 본 개시의 일 실시예에 따른 WebRTC 서버의 구성을 개략적으로 나타낸 블록도이다.
도 3은 본 개시의 일 실시예에 따라 TURN(Traversal Using Relays around NAT(Network Address Translation)) 서버를 할당하는 방법을 나타낸 흐름도이다.
도 4는 본 개시의 일 실시예에 따라 최적의 TURN 서버를 선택하는 방법을 나타낸 흐름도이다.
도 5는 본 개시의 일 실시예에 따라 데이터베이스를 업데이트하는 방법을 나타낸 흐름도이다.
본 개시의 실시예들은 본 개시의 기술적 사상을 설명하기 위한 목적으로 예시된 것이다. 본 개시에 따른 권리범위가 이하에 제시되는 실시예들이나 이들 실시예들에 대한 구체적 설명으로 한정되는 것은 아니다.
본 개시에 사용되는 모든 기술적 용어들 및 과학적 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 갖는다. 본 개시에 사용되는 모든 용어들은 본 개시를 더욱 명확히 설명하기 위한 목적으로 선택된 것이며 본 개시에 따른 권리범위를 제한하기 위해 선택된 것이 아니다.
본 개시에서 사용되는 "포함하는", "구비하는", "갖는" 등과 같은 표현은, 해당 표현이 포함되는 어구 또는 문장에서 달리 언급하지 않는 한, 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 개시에서 기술된 단수형의 표현은 달리 언급하지 않는 한 복수형의 의미를 포함할 수 있으며, 이는 청구범위에 기재된 단수형의 표현에도 마찬가지로 적용된다.
본 개시에서 사용되는 "제1", "제2" 등의 표현들은 복수의 구성요소들을 상호 구분하기 위해 사용되며, 해당 구성요소들의 순서 또는 중요도를 한정하는 것은 아니다.
본 개시에서 사용되는 용어 "부"는, 소프트웨어, 또는 FPGA(field-programmable gate array), ASIC(application specific integrated circuit)과 같은 하드웨어 구성요소를 의미한다. 그러나, "부"는 하드웨어 및 소프트웨어에 한정되는 것은 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세서, 함수, 속성, 프로시저, 서브루틴, 프로그램 코드의 세그먼트, 드라이버, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조, 테이블, 어레이 및 변수를 포함한다. 구성요소와 "부" 내에서 제공되는 기능은 더 작은 수의 구성요소 및 "부"로 결합되거나 추가적인 구성요소와 "부"로 더 분리될 수 있다.
본 개시에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되며, 이 표현은 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 개시에서, 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 경우, 어떤 구성요소가 다른 구성요소에 직접적으로 연결될 수 있거나 접속될 수 있는 것으로, 또는 새로운 다른 구성요소를 매개로 하여 연결될 수 있거나 접속될 수 있는 것으로 이해되어야 한다.
이하, 첨부된 도면들을 참조하여, 본 개시의 실시예들을 설명한다. 첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
도 1은 본 개시의 일 실시예에 따른 WebRTC(Web Real-Time Communication) 시스템의 구성을 개략적으로 나타낸 블록도이다. 일 실시예에 있어서, WebRTC 시스템(100)은 VoIP(Voice over Internet Protocol) 시스템, PBX(Private Branch eXchange) 시스템, UC(Unified Communications) 시스템, 미디어 서비스 시스템 등을 포함할 수 있다. 도 1을 참조하면 WebRTC 시스템(100)은 WebRTC 서버(110), TURN(Traversal Using Relays around NAT(Network Address Translation)) 서버(120_1, 120_2, … 120_M) 및 WebRTC 클라이언트(130_1, 130_2, … 130_N)를 포함할 수 있다.
WebRTC 서버(110)는 클라우드(Cloud) 환경에 존재하고, 지역별로 복수의 TURN 서버(120_1 내지 120_M)가 운용될 때, WebRTC 클라이언트(130_j(1≤j≤N))의 위치에 따라 최적의 미디어 품질(Media Quality)를 제공할 수 있는 TURN 서버(120_i(1≤i≤M))를 할당할 수 있다.
TURN 서버(120_1, 120_2, … 120_M)는 일반적으로 STUN(Session Traversal Utilities for NAT) 및 TURN을 모두 지원할 수 있다. 일 실시예에 있어서, TURN 서버(120_1, 120_2, … 120_M)는 WebRTC 클라이언트가 ICE(Interactive Connectivity Establishment) 프로토콜(protocol)을 이용하여 피어(peer) 간의 직접 미디어 연결에 실패할 경우, 미디어를 중계(relay)하여 피어 간 미디어 통신을 수행할 수 있도록 한다.
WebRTC 클라이언트(130_1 내지 130_N)는 ICE(Interactive Connectivity Establishment) 프로토콜을 이용하여 WebRTC 클라이언트 간(즉, 피어 간) P2P(Peer To Peer) 연결을 수행하여 미디어의 전송을 수행할 수 있다. 또한, WebRTC 클라이언트(130_1 내지 130_N)는 ICE 프로토콜에 따라 STUN의 실패 시, WebRTC 서버(110)에 의해 할당된 TURN 서버(120_i(1≤i≤M))를 통해 미디어의 전송을 수행할 수 있다. 또한, WebRTC 클라이언트(130_1 내지 130_N)는 미디어 전송이 완료되면, WebRTC 미디어 품질 정보(이하, 간단히 "미디어 품질 정보"라 함), WebRTC 클라이언트의 공인(public) IP 정보, 할당된 TURN 서버의 IP 정보를 WebRTC 서버(110)로 전송할 수 있다. 일 실시예에 있어서, 미디어 품질 정보는 RTT(Round-Trip Time), 패킷 손실(Packet Loss), 지터(Jitter) 등을 포함할 수 있다.
도 2는 본 개시의 일 실시예에 따른 WebRTC 서버의 구성을 개략적으로 나타낸 블록도이다. 도 2를 참조하면, WebRTC 서버(110)는 저장부(210), 통신 모듈(220) 및 프로세서(230)를 포함할 수 있다.
저장부(210)는 WebRTC 클라이언트(130_1 내지 130_N) 및 TURN 서버(120_1 내지 120_M)와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스를 저장할 수 있다. 일 실시예에 있어서, 관리 정보는 WebRTC 클라이언트(130_1 내지 130_N)의 공인 IP 정보 및 TURN 서버(120_1 내지 120_M)에 대응하는 TURN 서버 정보를 포함할 수 있다. 예를 들면, TURN 서버 정보는 TURN 서버(120_1 내지 120_M)의 IP 정보를 포함할 수 있다. 일 실시예에 있어서, 관리 정보는 TURN 서버(120_1 내지 120_M)에 각각 대응하는 복수의 미디어 품질 정보 및 복수의 부하 상태 정보를 더 포함할 수 있다. 즉, 관리 정보는 TURN 서버(120_1 내지 120_M)에 해당하는 TURN 서버 정보에 대해 미디어 품질 정보 및 부하 상태 정보를 더 포함할 수 있다. 예를 들면, 미디어 품질 정보는 미디어 품질값을 포함할 수 있다.
일 실시예에 있어서, 저장부(210)는 자기 디스크(예를 들어, 자기 테이프, 플렉시블 디스크, 하드 디스크 등), 광 디스크(예를 들어, CD, DVD 등), 반도체 메모리(예를 들어, USB 메모리, 메모리 카드 등) 등을 포함할 수 있지만, 반드시 이에 한정되는 것은 아니다.
통신 모듈(220)은 WebRTC 클라이언트(130_1 내지 130_N)와 연결되어, WebRTC 클라이언트(130_1 내지 130_N)와 정보의 송수신을 수행할 수 있다. 일 실시예에 있어서, 통신 모듈(220)은 WebRTC 클라이언트(130_1 내지 130_N)로부터 ICE 서버 요청 정보를 수신하고, 수신된 ICE 서버 요청 정보를 프로세서(230)로 전송할 수 있다. 또한, 통신 모듈(220)은 WebRTC 클라이언트(130_1 내지 130_N)로부터 미디어 품질 정보, WebRTC 클라이언트(130_1 내지 130_N)의 공인 IP 정보 및 TURN 서버(120_1 내지 120_M)의 IP 정보를 수신하고, 수신된 미디어 품질 정보, 공인 IP 정보 및 IP 정보를 프로세서(230)로 전송할 수 있다. 또한, 통신 모듈(220)은 WebRTC 클라이언트(130_1 내지 130_N)로부터 TURN 서버(120_1 내지 120_M)의 부하 상태 정보를 수신하고, 수신된 부하 상태 정보를 프로세서(230)로 전송할 수 있다. 일 실시예에 있어서, 통신 모듈(220)은 프로세서(230)로부터 ICE 서버 정보를 수신하고, 수신된 ICE 서버 정보를 WebRTC 클라이언트(130_1 내지 130_N)로 전송할 수 있다.
프로세서(230)는 저장부(210) 및 통신 모듈(220)에 연결되고, 저장부(210)에 저장된 데이터베이스에 기초하여 최적의 TURN 서버를 동적으로 할당할 수 있다. 일 실시예에 있어서, 프로세서(230)는 저장부(210)에 저장된 데이터베이스에 기초하여 TURN 서버(120_1 내지 120_M) 중 ICE 서버 요청 정보에 해당하는 최적의 TURN 서버(120_i(1≤i≤M))를 선택하고, 선택된 TURN 서버(120_i(1≤i≤M))에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성하며, ICE 서버 정보를 통신 모듈(220)을 통해 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다.
일 실시예에 있어서, 프로세서(230)는 ICE 서버 정보를 전송한 WebRTC 클라이언트(130_j(1≤j≤N))와 TURN 서버(120_1 내지 120_M) 간의 거리에 기초하여 최적의 TURN 서버(120_i(1≤i≤M))를 선택할 수 있다.
예를 들면, 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보 및 TURN 서버(120_1 내지 120_M)의 TURN 서버 정보에 기초하여 WebRTC 클라이언트(130_j(1≤j≤N))와 TURN 서버(120_1 내지 120_M) 간의 거리를 산출하여 복수의 거리 정보를 생성할 수 있다. 또한, 프로세서(230)는 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하고, 결정된 거리 정보에 해당하는 TURN 서버 정보를 저장부(210)에 저장된 데이터베이스로부터 추출할 수 있다.
일 실시예에 있어서, 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보 및 복수의 거리 정보에 기초하여 저장부(210)에 저장된 데이터베이스를 업데이트할 수 있다. 예를 들면, 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보에 대해 복수의 거리 정보를 포함하도록 데이터베이스(즉, 관리 정보)를 업데이트할 수 있다.
일 실시예에 있어서, 프로세서(230)는 저장부(210)에 저장된 데이터베이스의 미디어 품질 정보 및 부하 상태 정보에 기초하여 최적의 TURN 서버(120_i(1≤1≤M))를 선택할 수 있다. 예를 들면, 프로세서(230)의 저장부(210)에 저장된 데이터베이스의 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정하고, 결정된 미디어 품질 정보가 복수개인지 판단할 수 있다. 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 프로세서(230)는 결정된 미디어 품질 정보에 해당하는 TURN 서버(120_i(1≤1≤M))의 TURN 서버 정보를 추출할 수 있다. 한편, 결정된 미디어 품질 정보가 복수개인 것으로 판단되면, 프로세서(230)는 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 가장 낮은 부하 상태에 해당하는 TURN 서버(120_i(1≤1≤M))의 TURN 서버 정보를 추출할 수 있다.
일 실시예에 있어서, 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 통신 모듈(220)을 통해 새로운 미디어 품질 정보 및 새로운 부하 상태 정보를 수신하고, 수신된 새로운 미디어 품질 정보 및 새로운 부하 상태 정보에 기초하여 저장부(210)에 저장된 데이터베이스(즉, 관리 정보)를 업데이트할 수 있다. 예를 들면, 프로세서(230)는 미디어 품질 정보를 요청하기 위한 ICE 서버 정보를 생성하고, 생성된 ICE 서버 정보를 통신 모듈(220)을 통해 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다. 또한, 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 통신 모듈(220)을 통해 주기적으로 URN 서버(120_i(1≤1≤M))의 부하 상태 정보를 수신할 수 있다.
본 개시에 도시된 흐름도에서 프로세스 단계들, 방법 단계들, 알고리즘들 등이 순차적인 순서로 설명되었지만, 그러한 프로세스들, 방법들 및 알고리즘들은 임의의 적합한 순서로 작동하도록 구성될 수 있다. 다시 말하면, 본 개시의 다양한 실시예들에서 설명되는 프로세스들, 방법들 및 알고리즘들의 단계들이 본 개시에서 기술된 순서로 수행될 필요는 없다. 또한, 일부 단계들이 비동시적으로 수행되는 것으로서 설명되더라도, 다른 실시예에서는 이러한 일부 단계들이 동시에 수행될 수 있다. 또한, 도면에서의 묘사에 의한 프로세서의 예시는 예시된 프로세스가 그에 대한 다른 변화들 및 수정들을 제외하는 것을 의미하지 않으며, 예시된 프로세스 또는 그의 단계들 중 임의의 것이 본 개시의 다양한 실시예들 중 하나 이상에 필수적임을 의미하지 않으며, 예시된 프로세스가 바람직하다는 것을 의미하지 않는다.
도 3은 본 개시의 일 실시예에 따라 TURN 서버를 동적으로 할당하는 방법을 나타낸 흐름도이다. 도 3에서의 각 단계들은 도 1의 WebRTC 서버(110) 및 WebRTC 클라이언트(130_j)에 의해 수행될 수 있다. 또한, 본 개시에 의하면, 도 3에 도시된 단계들 외의 단계가 부가되거나, 도 3에 도시된 단계들 중 일부가 생략되는 것도 가능하다.
단계 S302에서, WebRTC 클라이언트(130_j(1≤j≤N))는 시그널링(signaling)을 처리하는 WebRTC 서버(110)로 ICE 서버 요청 정보를 전송할 수 있다. 일 실시예에 있어서, ICE 서버 요청 정보는 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보를 포함할 수 있다.
단계 S304에서, WebRTC 서버(110)는 복수의 TURN 서버(120_1 내지 120_M) 중 ICE 서버 요청 정보에 해당하는 TURN 서버(120_i(1≤i≤M))를 선택할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 저장부(210)에 저장된 데이터베이스에 액세스하고, 데이터베이스에 기초하여 복수의 TURN 서버(120_1 내지 120_M) 중 ICE 서버 요청 정보에 해당하는 TURN 서버(120_i(1≤i≤M))를 선택할 수 있다.
단계 S306에서, WebRTC 서버(110)는 선택된 TURN 서버(120_i(1≤i≤M))에 기초하여 ICE 서버 정보를 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다. 일 실시예에 있어서, ICE 서버 정보는 선택된 TURN 서버, 즉 최적의 서버로서 할당된 TURN 서버(120_i(1≤i≤M))에 해당하는 TURN 서버 정보를 포함할 수 있다. 예를 들면, TURN 서버 정보는 TURN 서버(120_i(1≤i≤M))의 IP 정보를 포함할 수 있다.
단계 S308에서, WebRTC 클라이언트(130_j(1≤j≤N))는 WebRTC 서버(110)로부터 제공되는 ICE 서버 정보에 기초하여 일반적인 WebRTC 연결 방식에 따라 "RTCPeerConnection"을 사용하여 WebRTC 클라이언트 간의 연결을 수행할 수 있다. 일 실시예에 있어서, WebRTC 클라이언트(130_j(1≤j≤N))는 ICE 프로토콜에 따라 STUN을 실패하는 경우, 할당된 TURN 서버(120_i(1≤i≤M))를 통해 미디어를 전송할 수 있다. 즉, 할당된 TURN 서버(120_i(1≤i≤M))는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 전송되는 미디어를 중계(relay)할 수 있다. 일 실시예에 있어서, WebRTC 클라이언트(130_j(1≤j≤N))는 다른 WebRTC 클라이언트와 "ICE candidate" 및 "SDP(Session Description Protocol)를 교환할 수 있다.
단계 S310에서, WebRTC 클라이언트(130_j(1≤j≤N))는 미디어 품질 정보를 WebRTC 서버(110)로 전송할 수 있다. 이 때, WebRTC 클라이언트(130_j(1≤j≤N))는 미디어 품질 정보와 함께 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보 및 TURN 서버(120_i(1≤i≤M))의 IP 정보를 ebRTC 서버(110)로 전송할 수 있다. 일 실시예에 있어서, WebRTC 클라이언트(130_j(1≤j≤N))는 미디어의 전송이 종료되면 미디어 품질 정보를 생성하고, 생성된 미디어 품질 정보를 WebRTC 서버(110)로 전송할 수 있다. 일 실시예에 있어서, 미디어 품질 정보는 RTT(Round-Trip Time), 패킷 손실(Packet loss), 지터(Jitter) 등을 포함할 수 있다. 따라서, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 제공되는 미디어 품질 정보에 기초하여 데이터베이스를 업데이트할 수 있다.
도 4는 본 개시의 일 실시예에 따라 최적의 TURN 서버를 선택하는 방법을 나타낸 흐름도이다. 도 4에서의 각 단계들은 도 1의 WebRTC 서버(110)에 의해 수행될 수 있다. 또한, 본 개시에 의하면, 도 4에 도시된 단계들 외의 단계가 부가되거나, 도 4에 도시된 단계들 중 일부가 생략되는 것도 가능하다.
단계 S402에서, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 ICE 서버 요청 정보를 수신할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 통신 모듈(220)은 WebRTC 클라이언트(130_j(1≤j≤N))로부터 ICE 서버 요청 정보를 수신하고, 수신된 ICE 서버 요청 정보를 WebRTC 서버(110)의 프로세서(230)로 전송할 수 있다.
단계 S404에서, WebRTC 서버(110)는 ICE 서버 요청 정보에 기초하여 데이터베이스를 조회할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 저장부(210)에 저장된 데이터베이스를 조회할 수 있다.
단계 S406에서, WebRTC 서버(110)는 ICE 서버 요청 정보에 포함된 공인 IP 정보가 데이터베이스에 존재하는지 여부를 판단할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 ICE 서버 요청 정보에 포함된 공인 IP 정보가 저장부(210)에 저장된 데이터베이스에 존재하는지 여부를 판단할 수 있다.
단계 S406에서 ICE 서버 요청 정보에 포함된 공인 IP 정보가 데이터베이스에 존재하지 않는 것으로 판단되면, 단계 S408에서, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))와 복수의 TURN 서버(120_1 내지 120_M) 간의 거리를 산출하여 복수의 거리 정보를 생성할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 ICE 서버 요청 정보에 포함된 공인 IP 정보와, 복수의 TURN 서버(120_1 내지 120_M) 각각의 IP 정보에 기초하여, WebRTC 클라이언트(130_j(1≤j≤N))와 복수의 TURN 서버(120_1 내지 120_M) 간의 거리를 산출할 수 있다. 예를 들면, 프로세서(230)는 "IP to Location API" 등을 사용하여, WebRTC 클라이언트(130_j(1≤j≤N))의 IP에 대한 경도 및 위도와, 복수의 TURN 서버(120_1 내지 120_M) 각각의 IP에 대한 경도 및 위도의 차이를 산출하고, 산출된 차이에 기초하여 WebRTC 클라이언트(130_j(1≤j≤N))와 복수의 TURN 서버(120_1 내지 120_M) 간의 거리를 산출할 수 있다.
선택적으로, WebRTC 서버(110)는 공인 IP 정보 및 복수의 거리 정보에 기초하여 데이터베이스를 업데이트할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보, 복수의 TURN 서버 정보 및 복수의 거리 정보를 포함하도록 데이터베이스의 관리 정보를 업데이트할 수 있다. 예를 들면, 프로세서(230)는 공인 IP 정보를 복수의 TURN 서버 정보 및 복수의 거리 정보에 매핑시켜 저장부(210)의 데이터베이스에 저장할 수 있다.
단계 S410에서, WebRTC 서버(110)는 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 복수의 거리 정보를 비교하여 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정할 수 있다.
단계 S412에서, WebRTC 서버(110)는 결정된 거리 정보에 해당하는 TURN 서버 정보를 데이터베이스로부터 추출할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 복수의 TURN 서버 정보 중 결정된 거리 정보에 해당하는 TURN 서버 정보, 즉 WebRTC 클라이언트(130_j(1≤j≤N))와 최단 거리에 있는 TURN 서버(120_i(1≤i≤M))에 해당하는 TURN 서버 정보를 저장부(210)에 저장된 데이터베이스로부터 추출할 수 있다.
한편, 단계 S406에서 ICE 서버 요청 정보에 포함된 공인 IP 정보가 데이터베이스에 존재하는 것으로 판단되면, 단계 S414에서, WebRTC 서버(110)는 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 WebRTC 클라이언트(130_j(1≤j≤N))에 대해, 저장부(210)에 저장된 데이터베이스에 포함된 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정할 수 있다.
단계 S416에서, WebRTC 서버(110)는 결정된 미디어 품질 정보가 복수인지 여부를 판단할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 결정된 미디어 품질 정보가 하나인지 또는 복수인지를 판단할 수 있다.
단계 S416에서 결정된 미디어 품질 정보가 복수인 것으로 판단되면, 단계 S418에서, WebRTC 서버(110)는 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 어느 하나의 부하 상태 정보를 결정할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 가장 낮은 부하 상태에 해당하는 부하 상태 정보를 저장부(210)에 저장된 데이터베이스로부터 결정할 수 있다. 한편, 단계 S416에서 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 단계 S420이 수행될 수 있다.
단계 S420에서, WebRTC 서버(110)는 최적의 TURN 서버에 해당하는 TURN 서버 정보를 추출할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 결정된 미디어 품질 정보가 하나인 경우, 결정된 미디어 품질 정보에 대응하는 TURN 서버 정보를 저장부(210)에 저장된 데이터베이스로부터 추출할 수 있다. 다른 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 결정된 미디어 품질 정보가 복수인 경우, 결정된 부하 상태 정보에 대응하는 TURN 서버 정보를 저장부(210)에 저장된 데이터베이스로부터 추출할 수 있다.
단계 S422에서, WebRTC 서버(110)는 추출된 TURN 서버 정보에 기초하여 ICE 서버 정보를 생성할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 추출된 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성할 수 있다.
단계 S424에서, WebRTC 서버(110)는 생성된 ICE 서버 정보를 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 ICE 서버 요청 정보에 대한 응답으로서 ICE 서버 정보를 WebRTC 서버(110)의 통신 모듈(220)을 통해 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다.
도 5는 본 개시의 일 실시예에 따라 데이터베이스를 업데이트하는 방법을 나타낸 흐름도이다. 도 5에서의 각 단계들은 도 1의 WebRTC 서버(110)에 의해 수행될 수 있다. 또한, 본 개시에 의하면, 도 5에 도시된 단계들 외의 단계가 부가되거나, 도 5에 도시된 단계들 중 일부가 생략되는 것도 가능하다.
단계 S502에서, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 ICE 서버 요청 정보를 수신할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 통신 모듈(220)은 WebRTC 클라이언트(130_j(1≤j≤N))로부터 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보를 포함하는 ICE 서버 요청 정보를 수신하고, 수신된 ICE 서버 요청 정보를 WebRTC 서버(110)의 프로세서(230)로 전송할 수 있다.
단계 S504에서, WebRTC 서버(110)는 ICE 서버 요청 정보에 기초하여 미디어 품질 정보의 업데이트 필요 여부를 판단할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 WebRTC 서버(110)의 저장부(210)에 저장된 데이터베이스를 조회하여, 복수의 TURN 서버 정보 중 미디어 품질 정보의 업데이트가 필요한 TURN 서버 정보가 존재하는지 여부를 판단할 수 있다. 예를 들면, 프로세서(230)는 복수의 TURN 서버 정보 중 미디어 품질 정보가 존재하지 않는 적어도 하나의 TURN 서버 정보가 존재하는지 여부를 판단할 수 있다.
단계 S504에서 미디어 품질 정보의 업데이트가 필요한 것으로 판단되면, 단계 S506에서, WebRTC 서버(110)는 ICE 서버 정보를 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다. 일 실시예에 있어서, WebRTC 서버(110)의 프로세서(230)는 미디어 품질 정보의 업데이트가 필요한 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성하고, 생성된 ICE 서버 정보를 WebRTC 서버(110)의 통신 모듈(220)을 통해 WebRTC 클라이언트(130_j(1≤j≤N))로 전송할 수 있다.
단계 S508에서, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 미디어 품질 정보를 수신할 수 있다. 이 때, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 미디어 품질 정보와 함께 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보 및 TURN 서버(120_i(1≤i≤M))의 IP 정보를 수신할 수 있다. 일 실시예에 있어서, 미디어 품질 정보는 ICE 서버 정보에 대응하는 미디어 품질 정보일 수 있다. 즉, 미디어 품질 정보는 WebRTC 서버(110)의 요청(ICE 서버 정보)에 따른 미디어 품질 정보일 수 있다.
한편, 단계 S504에서 미디어 품질 정보의 업데이트가 필요하지 않는 것으로 판단되면, 단계 S508에서 WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 미디어 품질 정보를 수신할 수 있다. 이 때, WebRTC 서버(110)는 WebRTC 클라이언트(130_j(1≤j≤N))로부터 미디어 품질 정보와 함께 WebRTC 클라이언트(130_j(1≤j≤N))의 공인 IP 정보 및 TURN 서버(120_i(1≤i≤M))의 IP 정보를 수신할 수 있다. 일 실시예에 있어서, 미디어 품질 정보는 미디어의 전송 종료에 따른 미디어 품질 정보일 수 있다. 즉, 미디어 품질 정보는 도 3의 단계 S310을 통해 수신되는 미디어 품질 정보일 수 있다.
단계 S510에서, WebRTC 서버(110)는 수신된 미디어 품질 정보에 기초하여 데이터베이스를 업데이트할 수 있다. WebRTC 서버(110)의 프로세서(230)는 저장부(210)에 저장된 데이터베이스에서, 미디어 품질 정보와 함께 수신된 공인 IP 정보 및 IP 정보에 해당하는 TURN 서버 정보의 미디어 품질 정보를 수신된 미디어 품질 정보로 업데이트할 수 있다.
전술한 실시예에서는 미디어 품질 정보를 수집하여 미디어 품질 정보를 업데이트하는 것으로 설명하였지만, 미디어 품질 정보의 업데이트와 함께 부하 상태 정보를 주기적으로 수집하여 부하 상태 정보를 업데이트할 수 있다.
위 방법은 특정 실시예들을 통하여 설명되었지만, 위 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 위 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 개시가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이상 일부 실시예들과 첨부된 도면에 도시된 예에 의해 본 개시의 기술적 사항이 설명되었지만, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 본 개시의 기술적 사상 및 범위를 벗어나지 않는 범위에서 다양한 치환, 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 속하는 것으로 생각되어야 한다.
100: WebRTC 시스템 110: WebRTC 서버
120_1 내지 120_M: TURN 서버 130_1 내지 130_N: WebRTC 클라이언트
210: 저장부 220: 통신 모듈
230: 프로세서

Claims (19)

  1. 복수의 TURN(Traversal Using Relays around Network Address Translation) 서버를 포함하는 WebRTC(Web Real-Time Communication) 시스템에서 TURN 서버를 할당하는 방법으로서,
    WebRTC 클라이언트로부터 ICE(Interactive Connectivity Establishment) 서버 요청 정보를 수신하는 단계;
    상기 WebRTC 클라이언트 및 상기 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스에 액세스하는 단계;
    상기 데이터베이스에 기초하여 상기 복수의 TURN 서버 중 상기 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하는 단계; 및
    상기 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 상기 WebRTC 클라이언트로 전송하는 단계
    를 포함하고,
    상기 복수의 TURN 서버 중 제1 TURN 서버를 선택하는 단계는,
    상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리에 기초하여 상기 제1 TURN 서버를 선택하는 단계
    를 포함하고,
    상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리에 기초하여 상기 제1 TURN 서버를 선택하는 단계는
    공인 IP 정보 및 상기 복수의 TURN 서버 정보에 기초하여 상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리를 산출하여 복수의 거리 정보를 생성하는 단계;
    상기 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하는 단계; 및
    상기 데이터베이스로부터 상기 결정된 거리 정보에 해당하는 TURN 서버 정보를 추출하는 단계
    를 포함하고,
    상기 복수의 TURN 서버 중 제1 TURN 서버를 선택하는 단계는,
    상기 복수의 TURN 서버에 각각 대응하는 복수의 미디어 품질 정보 - 상기 복수의 미디어 품질 정보 각각은 미디어 품질값을 포함함 - 및 복수의 부하 상태 정보를 더 포함하는 상기 관리 정보에 기초하여 상기 제1 TURN 서버를 선택하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 ICE 서버 요청 정보는 상기 WebRTC 클라이언트의 상기 공인 IP 정보를 포함하고,
    상기 관리 정보는 상기 공인 IP 정보 및 상기 복수의 TURN 서버에 각각 대응하는 복수의 TURN 서버 정보 - 상기 복수의 TURN 서버 정보 각각은 해당 TURN 서버의 IP 정보를 포함함 - 를 포함하는 방법.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 공인 IP 정보 및 상기 복수의 거리 정보에 기초하여 상기 데이터베이스를 업데이트하는 단계
    를 더 포함하는 방법.
  6. 삭제
  7. 삭제
  8. 제1항에 있어서, 상기 미디어 품질 정보 및 상기 부하 상태 정보에 기초하여 상기 제1 TURN 서버를 선택하는 단계는
    상기 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정하는 단계;
    상기 결정된 미디어 품질 정보가 복수개인지 판단하는 단계;
    상기 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 상기 데이터베이스로부터 상기 결정된 미디어 품질 정보에 해당하는 TURN 서버 정보를 추출하는 단계; 및
    상기 결정된 미디어 품질 정보가 복수개인 것으로 판단되면, 상기 데이터베이스로부터 상기 결정된 미디어 품질 정보에 대응하는 부하 상태 정보중 가장 낮은 부하 상태에 해당하는 TURN 서버 정보를 추출하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 WebRTC 클라이언트로부터 새로운 미디어 품질 정보 및 새로운 부하 상태 정보를 수신하는 단계; 및
    상기 새로운 미디어 품질 정보 및 상기 새로운 부하 상태 정보에 기초하여 상기 데이터베이스를 업데이트하는 단계
    를 더 포함하는 방법.
  10. WebRTC 서버로서,
    WebRTC 클라이언트 및 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스를 저장하는 저장부;
    상기 WebRTC 클라이언트로부터 ICE 서버 요청 정보를 수신하도록 구성되는 통신 모듈; 및
    상기 데이터베이스에 기초하여 상기 복수의 TURN 서버 중 상기 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하고, 상기 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성하며, 상기 ICE 서버 정보를 상기 통신 모듈을 통해 상기 WebRTC 클라이언트로 전송하도록 구성되는 프로세서
    를 포함하고,
    상기 프로세서는 상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리에 기초하여 상기 제1 TURN 서버를 선택하고,
    공인 IP 정보 및 상기 복수의 TURN 서버 정보에 기초하여 상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리를 산출하여 복수의 거리 정보를 생성하고,
    상기 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하고,
    상기 데이터베이스로부터 상기 결정된 거리 정보에 해당하는 TURN 서버 정보를 추출하고,
    상기 복수의 TURN 서버에 각각 대응하는 복수의 미디어 품질 정보 - 상기 복수의 미디어 품질 정보 각각은 미디어 품질값을 포함함 - 및 복수의 부하 상태 정보를 더 포함하는 상기 관리 정보에 기초하여 상기 제1 TURN 서버를 선택하도록 구성되는 WebRTC 서버.
  11. 제10항에 있어서, 상기 ICE 서버 요청 정보는 상기 WebRTC 클라이언트의 상기 공인 IP 정보를 포함하고,
    상기 관리 정보는 상기 공인 IP 정보 및 상기 복수의 TURN 서버에 각각 대응하는 복수의 TURN 서버 정보 - 상기 복수의 TURN 서버 정보 각각은 해당 TURN 서버의 IP 정보를 포함함 - 를 포함하는 WebRTC 서버.
  12. 삭제
  13. 삭제
  14. 제10항에 있어서, 상기 프로세서는 상기 공인 IP 정보 및 상기 복수의 거리 정보에 기초하여 상기 데이터베이스를 업데이트하도록 더 구성되는, WebRTC 서버.
  15. 삭제
  16. 삭제
  17. 제10항에 있어서, 상기 프로세서는,
    상기 복수의 미디어 품질 정보 중 가장 높은 미디어 품질값을 갖는 미디어 품질 정보를 결정하고,
    상기 결정된 미디어 품질 정보가 복수개인지 판단하고,
    상기 결정된 미디어 품질 정보가 하나인 것으로 판단되면, 상기 데이터베이스로부터 상기 결정된 미디어 품질 정보에 해당하는 TURN 서버 정보를 추출하고,
    상기 결정된 미디어 품질 정보가 복수개인 것으로 판단되면, 상기 데이터베이스로부터 상기 결정된 미디어 품질 정보에 대응하는 부하 상태 정보 중 가장 낮은 부하 상태에 해당하는 TURN 서버 정보를 추출하도록 구성되는, WebRTC 서버.
  18. 제17항에 있어서,
    상기 통신 모듈은 상기 WebRTC 클라이언트로부터 새로운 미디어 품질 정보 및 새로운 부하 상태 정보를 수신하도록 더 구성되고,
    상기 프로세서는 상기 새로운 미디어 품질 정보 및 상기 새로운 부하 상태 정보에 기초하여 상기 데이터베이스를 업데이트하도록 더 구성되는, WebRTC 서버.
  19. WebRTC 시스템으로서,
    복수의 TURN 서버;
    ICE 서버 요청 정보를 전송하도록 구성되는 WebRTC 클라이언트; 및
    상기 복수의 TURN 서버 및 상기 WebRTC 클라이언트에 연결되고, 상기 WebRTC 클라이언트 및 상기 복수의 TURN 서버와 연관되는 관리 정보를 포함하도록 생성된 데이터베이스에 액세스하고, 상기 데이터베이스에 기초하여 상기 복수의 TURN 서버 중 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하며, 상기 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 상기 WebRTC 클라이언트로 전송하도록 구성되는 WebRTC 서버
    를 포함하고,
    상기 WebRTC 서버는,
    상기 데이터베이스를 저장하는 저장부;
    상기 WebRTC 클라이언트로부터 상기 ICE 서버 요청 정보를 수신하도록 구성되는 통신 모듈; 및
    상기 데이터베이스에 기초하여 상기 복수의 TURN 서버 중 상기 ICE 서버 요청 정보에 해당하는 제1 TURN 서버를 선택하고, 상기 선택된 TURN 서버에 해당하는 TURN 서버 정보를 포함하는 ICE 서버 정보를 생성하며, 상기 ICE 서버 정보를 상기 통신 모듈을 통해 상기 WebRTC 클라이언트로 전송하도록 구성되는 프로세서
    를 포함하고,
    상기 프로세서는 상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리에 기초하여 상기 제1 TURN 서버를 선택하고,
    공인 IP 정보 및 상기 복수의 TURN 서버 정보에 기초하여 상기 WebRTC 클라이언트와 상기 복수의 TURN 서버 간의 거리를 산출하여 복수의 거리 정보를 생성하고,
    상기 복수의 거리 정보 중 최단 거리에 해당하는 거리 정보를 결정하고,
    상기 데이터베이스로부터 상기 결정된 거리 정보에 해당하는 TURN 서버 정보를 추출하고,
    상기 복수의 TURN 서버에 각각 대응하는 복수의 미디어 품질 정보 - 상기 복수의 미디어 품질 정보 각각은 미디어 품질값을 포함함 - 및 복수의 부하 상태 정보를 더 포함하는 상기 관리 정보에 기초하여 상기 제1 TURN 서버를 선택하도록 구성되는 WebRTC 시스템.
KR1020190030526A 2019-03-18 2019-03-18 TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템 KR102482518B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190030526A KR102482518B1 (ko) 2019-03-18 2019-03-18 TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190030526A KR102482518B1 (ko) 2019-03-18 2019-03-18 TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템

Publications (2)

Publication Number Publication Date
KR20200110961A KR20200110961A (ko) 2020-09-28
KR102482518B1 true KR102482518B1 (ko) 2022-12-29

Family

ID=72800897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190030526A KR102482518B1 (ko) 2019-03-18 2019-03-18 TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템

Country Status (1)

Country Link
KR (1) KR102482518B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018085776A (ja) * 2014-12-24 2018-05-31 エヌ・ティ・ティ・コミュニケーションズ株式会社 負荷分散装置、中継装置、負荷分散方法及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101883445B1 (ko) * 2016-12-20 2018-08-30 에스케이텔레콤 주식회사 시그널링 서버장치 및 그 구동방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018085776A (ja) * 2014-12-24 2018-05-31 エヌ・ティ・ティ・コミュニケーションズ株式会社 負荷分散装置、中継装置、負荷分散方法及びプログラム

Also Published As

Publication number Publication date
KR20200110961A (ko) 2020-09-28

Similar Documents

Publication Publication Date Title
US10715485B2 (en) Managing dynamic IP address assignments
US11381493B2 (en) Determining a transit appliance for data traffic to a software service
US10305797B2 (en) Request routing based on class
US10264062B2 (en) Request routing using a popularity identifier to identify a cache component
JP6553760B2 (ja) 負荷分散装置、中継装置、負荷分散方法及びプログラム
EP2605486A1 (en) Method and system for handling a domain name service request
CA2738643A1 (en) Geolocation assisted data forwarding storage
US11038745B1 (en) Rapid point of presence failure handling for content delivery networks
CN104717314A (zh) 一种ip管理方法及系统、客户端、服务器
US20110170547A1 (en) Geolocation assisted data forwarding storage
US9350606B2 (en) System and method for assigning server to terminal and efficiently delivering messages to the terminal
US20140317271A1 (en) Method and node apparatus for collecting information in content network based on information-centric networking
US10243920B1 (en) Internet protocol address reassignment between virtual machine instances
JP5370269B2 (ja) 分散保存システム、分散保存システムの接続情報通知方法及びプログラム
KR102482518B1 (ko) TURN 서버를 할당하는 방법, WebRTC 서버 및 WebRTC 시스템
CN109788075B (zh) 专网网络系统、数据的获取方法及边缘服务器
US20220263759A1 (en) Addressing method, addressing system, and addressing apparatus
US10536429B2 (en) Conveying information in hostname in a content delivery network (CDN)
US11323355B1 (en) Partition abstraction in distributed computing systems
JP4757063B2 (ja) キャッシュサーバ装置、キャッシュ制御方法およびキャッシュサーバ装置用プログラム
US9860171B2 (en) Large scale message routing in a distributed network
US20210037090A1 (en) Systems and Methods for Server Failover and Load Balancing
CN116521668A (zh) 用于数据存储的方法、设备和计算机程序产品
WO2016074148A1 (en) Method and system for domain name load balancing
JP2013247592A (ja) 情報処理装置、通信システム及び通信方法

Legal Events

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