KR102595338B1 - Method and edge server for low-latency streaming caching - Google Patents

Method and edge server for low-latency streaming caching Download PDF

Info

Publication number
KR102595338B1
KR102595338B1 KR1020200088448A KR20200088448A KR102595338B1 KR 102595338 B1 KR102595338 B1 KR 102595338B1 KR 1020200088448 A KR1020200088448 A KR 1020200088448A KR 20200088448 A KR20200088448 A KR 20200088448A KR 102595338 B1 KR102595338 B1 KR 102595338B1
Authority
KR
South Korea
Prior art keywords
file
segment
request
manifest
media device
Prior art date
Application number
KR1020200088448A
Other languages
Korean (ko)
Other versions
KR20220009801A (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 KR1020200088448A priority Critical patent/KR102595338B1/en
Publication of KR20220009801A publication Critical patent/KR20220009801A/en
Application granted granted Critical
Publication of KR102595338B1 publication Critical patent/KR102595338B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6131Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via a mobile phone network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6181Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via a mobile phone network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]

Abstract

저지연 스트리밍 캐싱 방법 및 이를 수행하는 엣지 서버가 개시된다. 이 방법은 적어도 하나의 프로세서에 의해 동작하는 엣지 서버가 저지연 스트리밍 캐싱을 제공하는 방법으로서, 미디어 디바이스의 요청에 따른 매니페스트(manifest) 파일을 오리진 서버로부터 수신하는 단계, 수신한 매니페스트 파일을 상기 미디어 디바이스에게 전송하는 단계, 상기 매니페스트 파일에 기초하여 상기 오리진 서버에게 세그먼트 파일을 요청하고 상기 오리진 서버로부터 수신한 세그먼트 파일을 캐싱하는 단계, 상기 미디어 디바이스로부터 세그먼트 파일 요청을 수신하는 단계, 그리고 상기 미디어 디바이스에게 캐싱된 세그먼트 파일을 전송하는 단계를 포함하고, 상기 캐싱하는 단계는, 상기 미디어 디바이스로부터 세그먼트 파일 요청을 수신하기 전에 상기 엣지 서버에 의해 자발적으로(autonomously) 이루어진다.A low-latency streaming caching method and an edge server that performs the same are disclosed. This method is a method in which an edge server operating by at least one processor provides low-latency streaming caching, comprising the steps of receiving a manifest file according to a request from a media device from an origin server, and sending the received manifest file to the media. transmitting to a device, requesting a segment file from the origin server based on the manifest file and caching the segment file received from the origin server, receiving a segment file request from the media device, and the media device transmitting a cached segment file to a server, wherein the caching step is performed autonomously by the edge server prior to receiving a segment file request from the media device.

Description

저지연 스트리밍 캐싱 방법 및 이를 수행하는 엣지 서버{METHOD AND EDGE SERVER FOR LOW-LATENCY STREAMING CACHING}Low-latency streaming caching method and edge server performing the same {METHOD AND EDGE SERVER FOR LOW-LATENCY STREAMING CACHING}

본 발명은 저지연 스트리밍 캐싱 기술에 관한 것이다.The present invention relates to low-latency streaming caching technology.

기존 무선망보다 빠르고 지연이 적은 5G 네트워크의 특성으로 모바일 네트워크를 이용한 스트리밍 기술도 차별화된 저지연 실시간 스트리밍 기술로 관심을 받고 있다.Due to the characteristics of the 5G network, which is faster than existing wireless networks and has lower delays, streaming technology using mobile networks is also attracting attention as a differentiated low-latency real-time streaming technology.

종래의 모바일 단말에서 사용되는 동영상 스트리밍 기술은 HTTP(Hypertext Transfer Protocol) 프로토콜 기반의 HLS(HTTP Live Streaming) 또는 DASH(Dynamic Adaptive Streaming over HTTP) 방식이 많이 사용되고 있다.The video streaming technology used in conventional mobile terminals is often HLS (HTTP Live Streaming) or DASH (Dynamic Adaptive Streaming over HTTP) based on the HTTP (Hypertext Transfer Protocol) protocol.

유선망에서 사용하는 스트리밍 프로토콜은 네트워크가 비교적 안정적이고 QoS(Quality of Service) 관리로 품질이 우수하기 때문에 미디어 서버에서 미디어 스트림 비트율과 네트워크 상태에 따라 전송 비트율과 세션 상태를 제어하는 방식이다. 따라서, 유선망을 사용하는 STB(Set-top box)는 RTP(Real-Time Transport Protocol)/RTSP(Real Time Streaming Protocol) 기반의 실시간 스트리밍 기술을 많이 사용하고 있다. RTSP에 따르면, 미디어 플레이어에서 시청중인 세션에 대해 사용자의 리모콘 입력에 따른 제어 메시지(control message)를 미디어 서버에 전송한다. 제어 메시지는 재생 제어를 위한 것으로서, 예를들어, PLAY, PAUSE, SEEK-구간이동, 배속 등의 제어 메시지를 포함할 수 있다. RTSP에 따르면, 미디어 서버에서 사용자의 세션을 인식하고, 요청 메시지에 따라 스트리밍하는 데이터를 다르게 전송한다. The streaming protocol used in wired networks is a method in which the media server controls the transmission bit rate and session status according to the media stream bit rate and network status because the network is relatively stable and has excellent quality through QoS (Quality of Service) management. Therefore, STB (Set-top box) using a wired network often uses real-time streaming technology based on RTP (Real-Time Transport Protocol)/RTSP (Real Time Streaming Protocol). According to RTSP, a control message according to the user's remote control input is transmitted to the media server for the session being watched on the media player. The control message is for playback control and may include, for example, control messages such as PLAY, PAUSE, SEEK-section movement, and double speed. According to RTSP, the media server recognizes the user's session and transmits streaming data differently depending on the request message.

반면, 무선망에서는 불안정하게 가변하는 네트워크 상태와 높은 지연 특성, 그리고 사용자 네트워크 접속 환경에 따라 큰 편차를 고려해야 하기 때문에 스트리밍의 실시간성보다는 안정성을 고려해서 모바일 스트리밍 프로토콜이 설계되고 서비스 중이다.On the other hand, in wireless networks, unstable network conditions, high delay characteristics, and large deviations depending on the user's network connection environment must be taken into account, so mobile streaming protocols are designed and serviced with stability rather than streaming real-time in mind.

무선망에서는 전용 스트리밍 서버에서 세션을 제어하는 방식이 아니라 무상태(stateless) 세션 기반의 HTTP 프로토콜을 사용한다. 즉, 비디오 재생에 필요한 스트림 데이터의 요청 구간 이동 제어를 플레이어(player)에서 실행하고 있다. 따라서, 미디어 서버는 사용자 세션의 스트리밍 상태를 관리할 필요없이 단순하게 HTTP GET으로 요청받은 청크 파일에 대한 응답만 처리하면 되는 단순한 구조를 가지고 있다. In wireless networks, the HTTP protocol based on stateless sessions is used rather than controlling sessions on a dedicated streaming server. In other words, the player is controlling the movement of the requested section of stream data required for video playback. Therefore, the media server has a simple structure that only needs to process responses to chunk files requested through HTTP GET without the need to manage the streaming state of the user session.

HLS 등 HTTP 기반의 프로토콜은 시청중에 발생하는 재생 제어(예, play, pause, seek 등)를 클라이언트에서 단독으로 처리하고, 재생 제어 이벤트에 따라 클라이언트에서 파일의 구간 이동을 위한 HTTP GET 요청을 실행한다. 예를들어, 사용자가 VoD(Video On Demand) 영상을 시청하는 경우, HTTP 기반 미디어 서버에서는 사용자가 파일의 어느 위치를 시청하고 있는지 관리할 필요가 없고, 위치 이동은 패시브(passive)하게 HTTP 청크(Chunk) 파일명(예, GET/RESPONSE)로 처리한다. 반면 RTSP는 미디어 서버가 가입자 세션에서 스트리밍하고 있는 파일 위치 정보를 알고 있고, 제어 메시지에 따라 전송 파일의 byte position을 이동한다.HTTP-based protocols such as HLS handle playback control (e.g., play, pause, seek, etc.) that occurs during viewing solely on the client, and depending on the playback control event, the client executes an HTTP GET request to move the section of the file. . For example, when a user watches a Video On Demand (VoD) video, an HTTP-based media server does not need to manage which location in the file the user is watching, and location movement is done passively using HTTP chunks ( Chunk) processed by file name (e.g. GET/RESPONSE). On the other hand, RTSP knows the location information of the file that the media server is streaming in the subscriber session, and moves the byte position of the transmitted file according to the control message.

또한, 무상태 세션 기반의 HTTP 프로토콜은 유선망에 비해 무선망의 가변 네트워크 특성을 고려해 플레이어(player) 버퍼를 10초 이상 확보하면서 재생하는 방식이다. 이와 같은 방식은 네트워크 변화에도 동영상 재생 품질을 확보할 수 있지만, 프로야구 등 스포츠 혹은 실시간 이벤트 중계에서는 유선망에 비하여 재생 지연이 발생하기 때문에 실시간성이 확보되지 않는 문제가 있다.In addition, the stateless session-based HTTP protocol is a method of playing while securing a player buffer of 10 seconds or more, considering the variable network characteristics of wireless networks compared to wired networks. This method can ensure video playback quality despite network changes, but in sports such as professional baseball or real-time event broadcasting, there is a problem in that real-time performance is not secured because playback delays occur compared to wired networks.

또한, HLS, DASH 같은 HTTP 기반 프로토콜은 미디어 파일을 독립적으로 재생이 가능한 일정 크기의 패킷인 세그먼트(segment) 단위로 분할하여 처리하고, 엣지노드에서는 세그먼트(Segment) 단위로 단순히 HTTP 파일을 요청(Request)/응답(Response)하는 구조이기 때문에 엣지 노드를 이용한 대규모 스트리밍 서비스를 제공할 때 엣지 노드 확장이 간단해지는 장점이 있다. In addition, HTTP-based protocols such as HLS and DASH process media files by dividing them into segments, which are packets of a certain size that can be played independently, and edge nodes simply request HTTP files in segments. )/Response structure, so it has the advantage of simplifying edge node expansion when providing large-scale streaming services using edge nodes.

그러나, 5G망은 LTE에 비해 전송 속도가 빠르고 레이턴시(latency)가 상대적으로 초저지연 실시간 방송이 가능한 장점이 있다. 이에 상응해서 5G 모바일 망에서는 실시간 방송 지연을 단축하여 저지연 방송 스트리밍 기술을 사용할 수 있는 환경이다. However, the 5G network has the advantage of faster transmission speed and relatively ultra-low latency than LTE, enabling real-time broadcasting. Correspondingly, the 5G mobile network is an environment in which low-latency broadcast streaming technology can be used by shortening real-time broadcast delay.

하지만, 저지연 방송 스트리밍을 분산된 엣지 노드를 통해 대규모 사용자에게 제공할때에 종래 엣지 노드에서 사용중인 HTTP 파일 캐시 방식을 적용하면 오리진 노드와 엣지 노드 사이에서 추가적인 지연이 발생하는 단점이 있다.However, when providing low-latency broadcast streaming to a large number of users through distributed edge nodes, applying the HTTP file cache method used in conventional edge nodes has the disadvantage of causing additional delays between the origin node and the edge node.

해결하고자 하는 과제는 엣지 서버에 의한 전송 지연을 회피할 수 있는 저지연 스트리밍 캐싱 방법 및 이를 수행하는 엣지 서버를 제공하는 것이다.The problem to be solved is to provide a low-latency streaming caching method that can avoid transmission delays caused by edge servers and an edge server that performs it.

본 발명의 하나의 특징에 따르면, 적어도 하나의 프로세서에 의해 동작하는 엣지 서버가 저지연 스트리밍 캐싱을 제공하는 방법으로서, 미디어 디바이스의 요청에 따른 매니페스트(manifest) 파일을 오리진 서버로부터 수신하는 단계, 수신한 매니페스트 파일을 상기 미디어 디바이스에게 전송하는 단계, 상기 매니페스트 파일에 기초하여 상기 오리진 서버에게 세그먼트 파일을 요청하고 상기 오리진 서버로부터 수신한 세그먼트 파일을 캐싱하는 단계, 상기 미디어 디바이스로부터 세그먼트 파일 요청을 수신하는 단계, 그리고 상기 미디어 디바이스에게 캐싱된 세그먼트 파일을 전송하는 단계를 포함하고, 상기 캐싱하는 단계는, 상기 미디어 디바이스로부터 세그먼트 파일 요청을 수신하기 전에 상기 엣지 서버에 의해 자발적으로(autonomously) 이루어진다.According to one feature of the present invention, there is a method in which an edge server operating by at least one processor provides low-latency streaming caching, comprising the steps of receiving a manifest file according to a request from a media device from an origin server, receiving Transmitting a manifest file to the media device, requesting a segment file from the origin server based on the manifest file and caching the segment file received from the origin server, receiving a segment file request from the media device and transmitting a cached segment file to the media device, wherein the caching step is performed autonomously by the edge server prior to receiving a segment file request from the media device.

상기 캐싱하는 단계는, 채널 단위로 생성된 파일 요청 쓰레드(thread)를 각각 실행하여 채널 별로 매니페스트 파일의 목록에 포함된 세그먼트 파일을 오리진 서버에게 요청하여 수신하고, 채널 별로 세그먼트 파일을 캐싱할 수 있다.In the caching step, each file request thread created for each channel is executed to request and receive a segment file included in the list of manifest files for each channel from the origin server, and the segment file for each channel can be cached. .

상기 매니페스트 파일은, 생성이 완료된 세그먼트 파일의 목록 및 생성중인 세그먼트 파일의 목록을 포함하고, 상기 캐싱하는 단계는, 상기 생성이 완료된 세그먼트 파일을 수신하여 캐싱하고, 상기 생성중인 세그먼트 파일을 청크 단위로 수신하여 캐싱하며, 상기 세그먼트 파일 요청을 수신하는 단계 이후, 요청된 세그먼트 파일이 생성중인 파일이면, 상기 미디어 디바이스에게 청크 모드 전송 알림을 전송하는 단계, 그리고 세그먼트 파일의 수신을 대기하지 않고 캐싱된 청크 파일을 상기 미디어 디바이스에게 전송하는 단계를 더 포함할 수 있다.The manifest file includes a list of segment files that have been created and a list of segment files that are being created, and the caching step includes receiving and caching the segment files that have been created, and dividing the segment files that are being created into chunks. Receiving and caching, and after receiving the segment file request, if the requested segment file is a file being created, transmitting a chunk mode transmission notification to the media device, and cached chunks without waiting for reception of the segment file. The method may further include transmitting a file to the media device.

상기 오리진 서버로부터 수신하는 단계 이전에, 상기 미디어 디바이스로부터 매니페스트 파일 요청을 수신하는 단계, 수신한 매니페스트 파일 요청이 세션 풀에 등록되어 있는지 판단하는 단계, 등록되어 있지 않으면, 미디어 디바이스와 맺은 세션 ID, 상기 매니페스트 파일의 ID 및 채널 ID를 매핑한 세션 풀을 생성하여 저장하는 단계, 그리고 상기 파일 요청 쓰레드를 생성하는 단계를 더 포함하고, 상기 파일 요청 쓰레드는, 상기 매니페스트 파일 요청이 상기 세션 풀에 등록되어 있지 않은 경우에 한해 생성될 수 있다.Before receiving from the origin server, receiving a manifest file request from the media device, determining whether the received manifest file request is registered in the session pool, if not registered, a session ID established with the media device, The method further includes creating and storing a session pool mapping the ID and channel ID of the manifest file, and creating the file request thread, wherein the file request thread registers the manifest file request in the session pool. It can be created only if it is not already in place.

상기 매니페스트 파일 요청을 수신하는 단계 이후, 상기 오리진 서버에게 상기 매니페스트 파일을 요청하여 수신 및 캐싱하는 단계, 그리고 상기 미디어 디바이스의 요청 없이도 자발적으로 상기 오리진 서버에게 요청하여 업데이트된 매니페스트 파일을 수신하여 캐싱하는 단계를 더 포함하고, 상기 미디어 디바이스에게 전송하는 단계는, 상기 세션 풀에 등록된 매니페스트 파일을 요청하는 미디어 디바이스에게 캐싱된 매니페스트 파일을 전송할 수 있다.After receiving the manifest file request, requesting the manifest file from the origin server, receiving and caching it, and voluntarily requesting the origin server to receive and cache the updated manifest file without a request from the media device. Further comprising the step of transmitting to the media device, the cached manifest file may be transmitted to the media device requesting the manifest file registered in the session pool.

본 발명의 다른 특징에 따르면, 적어도 하나의 프로세서에 의해 동작하는 엣지 서버가 저지연 스트리밍 캐싱을 제공하는 방법으로서, 미디어 디바이스로부터 매니페스트(manifest) 파일 요청을 수신하는 단계, 오리진 서버에게 매니페스트 파일을 요청하는 단계, 상기 오리진 서버로부터 상기 매니페스트 파일을 수신하는 단계, 상기 수신한 매니페스트 파일을 상기 미디어 디바이스에게 전송하는 단계, 상기 오리진 서버로부터 상기 매니페스트 파일의 목록에 포함된 세그먼트 파일을 수신하여 캐싱하는 단계, 상기 미디어 디바이스로부터 세그먼트 파일 요청을 수신하는 단계, 그리고 상기 미디어 디바이스에게 캐싱된 세그먼트 파일을 전송하는 단계를 포함하고, 상기 캐싱하는 단계는, 상기 오리진 서버에 의해 푸쉬 방식으로 상기 세그먼트 파일을 수신하여 캐싱한다.According to another feature of the present invention, a method of providing low-latency streaming caching by an edge server operating by at least one processor, comprising the steps of receiving a manifest file request from a media device, requesting a manifest file from an origin server. receiving the manifest file from the origin server, transmitting the received manifest file to the media device, receiving and caching a segment file included in the list of manifest files from the origin server, Receiving a segment file request from the media device, and transmitting the cached segment file to the media device, wherein the caching step includes receiving the segment file in a push manner by the origin server and caching it. do.

상기 매니페스트 파일을 수신하는 단계 이후, 상기 오리진 서버로부터 푸쉬 대상인 파일 목록을 포함하는 푸쉬 예약 메시지를 수신하는 단계를 더 포함하고, 상기 캐싱하는 단계는, 상기 푸쉬 예약 메시지의 목록에 포함된 세그먼트 파일들을 포함하는 푸쉬 메시지를 상기 오리진 서버로부터 수신할 수 있다.After receiving the manifest file, it further includes receiving a push reservation message including a list of files to be pushed from the origin server, and the caching step includes segment files included in the list of the push reservation message. A push message containing the message may be received from the origin server.

상기 푸쉬 예약 메시지 및 상기 푸쉬 메시지는, HTTP/2(Hypertext Transfer Protocol Version 2)의 스트림 내 데이터 단위로 수신될 수 있다.The push reservation message and the push message may be received as data units within a stream of HTTP/2 (Hypertext Transfer Protocol Version 2).

본 발명의 또 다른 특징에 따르면, 엣지 서버는 오리진 서버로부터 자신에게 할당된 채널의 매니페스트(manifest) 파일 및 세그먼트 파일을 수신하여 캐싱하는 적어도 하나의 스트림 캐시 장치, 그리고 상기 적어도 하나의 스트림 캐시 장치 중에서 미디어 디바이스들이 요청한 파일의 채널에 해당하는 스트림 캐시 장치에게 파일을 요청하고, 상기 스트림 캐시 장치로부터 매니페스트 파일 및 세그먼트 파일을 수신하여 상기 미디어 디바이스들에게 전송하는 세션 풀 관리 장치를 포함하고, 상기 적어도 하나의 스트림 캐시 장치는, 상기 세션 풀 관리 장치의 요청 없이도 자발적으로(autonomously) 상기 할당된 채널의 매니페스트 파일에 기초하여 상기 오리진 서버로부터 세그먼트 파일을 미리 수신하여 캐싱한다.According to another feature of the present invention, the edge server includes at least one stream cache device that receives and caches a manifest file and segment file of a channel assigned to the edge server from the origin server, and among the at least one stream cache device a session pool management device that requests a file from a stream cache device corresponding to a channel of a file requested by media devices, receives a manifest file and a segment file from the stream cache device, and transmits the file to the media devices, the at least one The stream cache device automatically receives and caches segment files from the origin server in advance based on the manifest file of the allocated channel without a request from the session pool management device.

상기 세션 풀 관리 장치는, 복수의 미디어 디바이스로부터 수신한 매니페스트 파일 요청을 세션 풀에 등록하고, 상기 적어도 하나의 스트림 캐시 장치는, 상기 세션 풀에 등록되지 않은 매니페스트 파일 요청이 상기 세션 풀 관리 장치로부터 전달되면, 파일 요청 쓰레드(thread)를 생성하고, 상기 파일 요청 쓰레드는, 상기 오리진 서버로 상기 매니페스트 파일의 요청 및 상기 세그먼트 파일의 요청을 실행하며, 상기 세션 풀은, 채널 정보, 파일 정보 및 미디어 디바이스와 맺은 세션 정보를 상호 매핑하여 저장한 것일 수 있다.The session pool management device registers a manifest file request received from a plurality of media devices in the session pool, and the at least one stream cache device detects a manifest file request that is not registered in the session pool from the session pool management device. When delivered, a file request thread is created, and the file request thread executes a request for the manifest file and a request for the segment file to the origin server, and the session pool includes channel information, file information, and media. Session information established with the device may be mutually mapped and stored.

상기 세션 풀 관리 장치는, 복수의 미디어 디바이스로부터 수신한 매니페스트 파일 요청을 세션 풀에 등록하고, 상기 적어도 하나의 스트림 캐시 장치는, 상기 세션 풀에 등록되지 않은 매니페스트 파일 요청이 상기 세션 풀 관리 장치로부터 전달되면, 상기 오리진 서버로 매니페스트 파일 요청을 전송하여 상기 오리진 서버로부터 매니페스트 파일을 수신하고, 상기 오리진 서버로부터 푸쉬 방식으로 상기 매니페스트 파일에 정의된 세그먼트 파일을 수신하여 캐싱할 수 있다.The session pool management device registers a manifest file request received from a plurality of media devices in the session pool, and the at least one stream cache device detects a manifest file request that is not registered in the session pool from the session pool management device. Once delivered, a manifest file request can be sent to the origin server to receive the manifest file from the origin server, and the segment file defined in the manifest file can be received and cached in a push manner from the origin server.

상기 적어도 하나의 스트림 캐시 장치는, 세그먼트 파일 또는 청크 파일이 각각 포함된 복수의 데이터가 멀티플렉싱된 스트림을 상기 오리진 서버로부터 수신하고, 상기 세션 풀 관리 장치는, 상기 적어도 하나의 스트림 캐시 장치에 캐싱된 세그먼트 파일 또는 청크 파일을 미디어 디바이스에게 전송할 수 있다.The at least one stream cache device receives a stream in which a plurality of data, each including a segment file or a chunk file, is multiplexed from the origin server, and the session pool management device caches the stream in the at least one stream cache device. Segment files or chunk files can be transmitted to a media device.

실시예에 따르면, 5G와 같은 고품질 모바일 네트워크에서 HTTP 기반 모바일 스트리밍 프로토콜, 특히, CMAF(Common Media Application Format)/DASH를 사용할때, 엣지 서버에 의한 전송 지연을 단축하는 엣지 스트리밍 캐시 방식을 사용하여 저지연 실시간 방송 서비스를 제공할 수 있다.According to an embodiment, when using an HTTP-based mobile streaming protocol, especially Common Media Application Format (CMAF)/DASH, in a high-quality mobile network such as 5G, an edge streaming cache method is used to reduce transmission delay by the edge server. Delayed real-time broadcasting service can be provided.

또한, 저지연을 위한 짧은 세그먼트/청크 사이즈 전송을 위한 트랜잭션 오버헤드와 지연 시간을 단축 할 수 있다.Additionally, transaction overhead and delay time can be reduced for short segment/chunk size transmission for low latency.

도 1은 실시예에 따른 CDN(Content delivery network) 시스템의 구성을 나타낸 블록도이다.
도 2A, 2B는 실시예에 따른 콘텐츠 파일을 설명하는 도면이다.
도 3은 한 실시예에 따른 라이브 방송 스트림의 전송 단위를 설명하는 도면이다.
도 4는 한 실시예에 따른 CDN 시스템의 라이브 방송 서비스 과정을 도시한 흐름도이다.
도 5는 한 실시예에 따른 엣지 서버의 세부적인 구성을 나타낸 블록도이다.
도 6은 다른 실시예에 따른 엣지 서버의 구성을 나타낸 블록도이다.
도 7은 한 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 매니페스트 파일 전송 과정을 설명하는 도면이다.
도 8은 한 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 세그먼트 파일 전송 과정을 나타낸 흐름도이다.
도 9는 다른 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 매니페스트 파일 전송 과정을 설명하는 도면이다.
도 10은 다른 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 세그먼트 파일 전송 과정을 나타낸 흐름도이다.
도 11은 다른 실시예에 따른 라이브 방송 스트림의 전송 단위를 설명하는 도면이다.
도 12는 실시예에 따른 전송 큐 관리 방법을 설명하는 도면이다.
Figure 1 is a block diagram showing the configuration of a content delivery network (CDN) system according to an embodiment.
2A and 2B are diagrams illustrating content files according to an embodiment.
FIG. 3 is a diagram illustrating a transmission unit of a live broadcast stream according to an embodiment.
Figure 4 is a flowchart showing a live broadcast service process of a CDN system according to an embodiment.
Figure 5 is a block diagram showing the detailed configuration of an edge server according to an embodiment.
Figure 6 is a block diagram showing the configuration of an edge server according to another embodiment.
Figure 7 is a diagram illustrating a manifest file transmission process for a live broadcast service to which low-latency streaming caching is applied according to an embodiment.
Figure 8 is a flowchart showing a segment file transmission process for a live broadcast service with low-latency streaming caching applied according to an embodiment.
Figure 9 is a diagram illustrating a manifest file transmission process for a live broadcast service to which low-latency streaming caching is applied according to another embodiment.
Figure 10 is a flowchart showing a segment file transmission process for a live broadcast service with low-latency streaming caching applied according to another embodiment.
Figure 11 is a diagram explaining a transmission unit of a live broadcast stream according to another embodiment.
Figure 12 is a diagram explaining a transmission queue management method according to an embodiment.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 자세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Below, embodiments of the present invention will be described in detail with reference to the attached drawings. However, the present invention may be implemented in many different forms and is not limited to the embodiments described herein. In order to clearly explain the present invention in the drawings, parts that are not related to the description are omitted, and similar parts are given similar reference numerals throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. Throughout the specification, when a part is said to “include” a certain element, this means that it may further include other elements rather than excluding other elements, unless specifically stated to the contrary.

또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.In addition, terms such as "... unit", "... unit", and "module" used in the specification refer to a unit that processes at least one function or operation, which may be implemented as hardware or software or a combination of hardware and software. there is.

본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.The devices described in the present invention are composed of hardware including at least one processor, a memory device, a communication device, etc., and a program that is executed in conjunction with the hardware is stored in a designated location. The hardware has a configuration and performance capable of executing the method of the present invention. The program includes instructions that implement the operating method of the present invention described with reference to the drawings, and executes the present invention by combining it with hardware such as a processor and memory device.

본 명세서에서 "전송 또는 제공"은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.In this specification, “transmission or provision” may include not only direct transmission or provision, but also indirect transmission or provision through another device or by using a circuitous route.

본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.In this specification, expressions described as singular may be interpreted as singular or plural, unless explicit expressions such as “one” or “single” are used.

본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.In this specification, the same reference numbers refer to the same elements regardless of the drawings, and “and/or” includes each and all combinations of one or more of the mentioned elements.

본 명세서에서, 제1, 제2 등과 같이 서수를 포함하는 용어들은 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.In this specification, terms including ordinal numbers, such as first, second, etc., may be used to describe various components, but the components are not limited by the terms. The above terms are used only for the purpose of distinguishing one component from another. For example, a first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component without departing from the scope of the present disclosure.

본 명세서에서 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.In the flowcharts described herein with reference to the drawings, the order of operations may be changed, several operations may be merged, certain operations may be divided, and certain operations may not be performed.

라이브(Live) 스트리밍(streaming)시에 미디어(비디오/오디오)는 2 ~ 6초 길이의 세그먼트(segment) 형태로 전송된다. 이 세그먼트는 인코딩되고 전송되고 다운로드되며 버퍼링된 후 미디어 플레이어(player)에서 렌더링되는 과정을 거치기 때문에 전송부터 재생까지 몇 초의 지연 시간이 걸린다. 이 모든 과정에서 세그먼트 크기로 인하여 지연 시간을 최소화하기에는 한계가 있다. During live streaming, media (video/audio) is transmitted in the form of segments of 2 to 6 seconds in length. Because these segments are encoded, transmitted, downloaded, buffered, and then rendered in a media player, there is a delay of several seconds from transmission to playback. In all of these processes, there is a limit to minimizing delay time due to the segment size.

CMAF(Common Media Application Framework)에서는 각 세그먼트를 청크(chunk)라고 하는 더 작은 단위로 세분화하여 지연 시간을 크게 줄일 수 있다. 각 청크는 인코더 구성에 따라 500밀리초(msec)(0.5초) 이하가 될 수 있다. 저지연 CMAF 또는 청크 CMAF를 사용하는 플레이어에서는 세그먼트를 요청한 후, 세그먼트 전체가 수신되지 않더라도 수신된 청크만으로 렌더링을 시작할 수 있기 때문에 지연 시간을 줄일 수 있다. In the Common Media Application Framework (CMAF), latency can be significantly reduced by subdividing each segment into smaller units called chunks. Each chunk can be less than 500 milliseconds (msec) (0.5 seconds) depending on the encoder configuration. Players using low-latency CMAF or chunk CMAF can reduce latency by requesting a segment and then starting rendering with only the received chunk, even if the entire segment is not received.

HLS(HTTP Live Streaming), DASH(Dynamic Adaptive Streaming over HTTP)는 저지연(Low latency) 방식으로 CMAF 포맷을 채택하고 있다.HLS (HTTP Live Streaming) and DASH (Dynamic Adaptive Streaming over HTTP) adopt the CMAF format as a low latency method.

본 발명의 실시예는 미디어 스트림에 대해 CMAF 청크 인코딩(Chunked Encoding) 포맷을 사용하고, 전송 기술로 DASH(Dynamic Adaptive Streaming over HTTP) 저지연(Low latency) 기법을 사용할 수 있다. 청크 인코딩은 CMAF 표준에서 제시하는 것으로서, 저지연을 위하여 인코딩 시간을 단축하는 자체 미디어 포맷 규격이다. Embodiments of the present invention may use the CMAF chunked encoding format for media streams and use the DASH (Dynamic Adaptive Streaming over HTTP) low latency technique as a transmission technology. Chunk encoding is provided by the CMAF standard and is a proprietary media format specification that shortens the encoding time for low latency.

CMAF 미디어 표준 규격은 라이브(Live) 방송에 저지연 스트리밍을 제공하기 위해 일반적으로 단위 시간 분량의 세그먼트 파일이 완성되면 매니페스트(manifest) 목록을 갱신하지 않는다. 이 규격은 수신하고 있는 방송 스트림을 수십 ~ 수백ms 분량의 프레임을 최소 전송 단위로 지정하는 미디어 포맷과 청크 인코딩 기술을 도입하고 있다. In order to provide low-latency streaming for live broadcasts, the CMAF media standard generally does not update the manifest list once a unit time segment file is completed. This standard introduces a media format and chunk encoding technology that specifies a frame of tens to hundreds of milliseconds as the minimum transmission unit for the broadcast stream being received.

DASH 혹은 저지연 HLS는 CMAF 저지연 청크를 전송할 때 생성중인 세그먼트 정보를 매니페스트 파일에 노출해서 미디어 플레이어가 요청할 수 있도록 정보를 제공하여 전달 지연을 줄일 수 있다. 특히, 아직 생성 중인 세그먼트 파일은 HTTP/1.1 spec에서 정의한 전송 청크(transfer chunked) 모드로 전송하여 방송 송출 장치와 미디어 플레이어 간의 전달 지연을 단축하고 있다. 미디어 플레이어는 저지연 모드로 설정되면, 세그먼트 전체가 다운로드될때까지 기다리지 않고 청크 기반으로 디코딩 및 렌더링을 수행한다.DASH or low-latency HLS can reduce delivery delay by exposing the segment information being created in the manifest file when transmitting a CMAF low-latency chunk and providing information for media players to request. In particular, segment files that are still being created are transmitted in transfer chunked mode defined in the HTTP/1.1 spec to shorten the delivery delay between the broadcast transmission device and the media player. When the media player is set to low-latency mode, it performs decoding and rendering on a chunk basis rather than waiting for the entire segment to be downloaded.

도 1은 실시예에 따른 CDN(Contents Delivery Network) 시스템의 구성을 나타낸 블록도이고, 도 2A, 2B는 실시예에 따른 콘텐츠 파일을 설명하는 도면이고, 도 3은 한 실시예에 따른 라이브 방송 스트림의 전송 단위를 설명하는 도면이다.FIG. 1 is a block diagram showing the configuration of a CDN (Contents Delivery Network) system according to an embodiment, FIGS. 2A and 2B are diagrams illustrating content files according to an embodiment, and FIG. 3 is a live broadcast stream according to an embodiment. This is a diagram explaining the transmission unit.

도 1을 참조하면, CDN 시스템은 오리진 서버(100), 적어도 하나의 엣지 서버(200), 복수의 미디어 디바이스(300) 및 콘텐츠 서버(400)를 포함한다.Referring to FIG. 1, the CDN system includes an origin server 100, at least one edge server 200, a plurality of media devices 300, and a content server 400.

오리진 서버(100)는 콘텐츠 서버(400)로부터 콘텐츠 스트림을 입수해서 스트리밍하는 장치로서, 콘텐츠 스트림은 방송 신호일 수 있다.The origin server 100 is a device that obtains and streams a content stream from the content server 400, and the content stream may be a broadcast signal.

오리진 서버(100)는 인제스트(Ingest) 모듈(110), 세그멘테이션(segmentation) 모듈(120) 및 HTTP(HyperText Transfer Protocol) 서버(130)를 포함한다.The origin server 100 includes an ingest module 110, a segmentation module 120, and an HTTP (HyperText Transfer Protocol) server 130.

인제스트 모듈(110)은 콘텐츠 서버(400)로부터 서비스할 콘텐츠 스트림 또는 라이브(live) 방송 신호를 수신한다.The ingest module 110 receives a content stream to be serviced or a live broadcast signal from the content server 400.

인제스트 모듈(110)이 콘텐츠 서버(400)로부터 수신하는 HLS나 DASH 방식의 콘텐츠 스트림 또는 HTTP 기반 스트리밍 콘텐츠 파일은 속성에 따라 VoD(video on demand) 파일과 라이브 방송 스트림으로 구분된다.The HLS or DASH type content stream or HTTP-based streaming content file that the ingest module 110 receives from the content server 400 is divided into VoD (video on demand) files and live broadcast streams depending on their properties.

VoD 파일은 미리 저장되어 있는 단일 파일로서 사전에 매니페스트(manifest) 파일과 전체 청크(chunk) 파일 목록을 정의할 수 있다. A VoD file is a single pre-stored file that can define a manifest file and a list of all chunk files in advance.

매니페스트 파일은 방송 프로그래을 렌더링하는데 요구되는 컨텐츠를 정의한다.  The manifest file defines the content required to render a broadcast program.

VoD 파일은 사전에 제작된 미디어 파일로서 미디어 속성 정보와 독립적으로 재생이 가능한 단위 시간 간격의 세그먼트 또는 청크 파일 목록이 사전에 결정되어 있다. 즉, VoD 파일은 파일 사이즈와 청크 목록이 정해진 파일 형태이다.A VoD file is a pre-produced media file that has a predetermined list of segments or chunk files at unit time intervals that can be played independently of media attribute information. In other words, a VoD file is a file format with a fixed file size and chunk list.

도 2A를 참조하면, a_vod.mpg 파일은 메니페스트 파일과 N개의 청크 목록으로 구성되고, 이러한 메니페스트 파일과 N개의 청크 목록은 시간이 지나도 변경되지 않는다.Referring to Figure 2A, the a_vod.mpg file consists of a manifest file and a list of N chunks, and the manifest file and the list of N chunks do not change over time.

반면, 라이브 방송 스트림은 방송 시각에 따라 매니페스트 파일과 청크 파일 목록이 단위 시간마다 또는 주기적으로 갱신된다. 즉, 라이브 방송 스트림은 파일 사이즈와 청크 목록이 정해지지 않고 계속 증가 및 갱신되는 파일 형태이다.On the other hand, in a live broadcast stream, the manifest file and chunk file list are updated per unit time or periodically depending on the broadcast time. In other words, a live broadcast stream is a file type in which the file size and chunk list are not set and are continuously increased and updated.

도 2B를 참조하면, Time=0인 시각의 a_channel.mpg 파일은 Manifest 파일, 10개의 청크 파일(1.ts ~ 10.ts)로 구성된다. Time=T인 시각의 a_channel.mpg 파일은 Manifest 파일, 10개의 청크 파일(T-10.ts ~ T.ts)로 구성된다. 이처럼, a_channel.mpg 파일은 파일 사이즈, 청크 목록이 정해져 있지 않고 계속 증가/갱신되는 파일 형태이다.Referring to Figure 2B, the a_channel.mpg file at Time=0 consists of a Manifest file and 10 chunk files (1.ts to 10.ts). The a_channel.mpg file at Time=T consists of a Manifest file and 10 chunk files (T-10.ts ~ T.ts). As such, the a_channel.mpg file is a file type that continuously increases/updates without a set file size or chunk list.

오리진 서버(100)는 서비스 정책에 따라 30초 이상 재생 분량의 청크 파일 목록을 임시 저장하고 있다. 서비스할 라이브 방송 채널에 대한 매니페스트 파일은 오리진 서버(100)에서 저장하는 청크 파일 목록에 따라 주기적으로 갱신된다. The origin server 100 temporarily stores a list of chunk files that are played for more than 30 seconds in accordance with the service policy. The manifest file for the live broadcast channel to be serviced is periodically updated according to the chunk file list stored by the origin server 100.

세그멘테이션 모듈(120)은 콘텐츠 서버(400)로부터 수신한 라이브 방송 스트림으로부터 미디어 정보를 파싱하고, 이를 이용하여 HTTP 스트리밍 프로토콜에 적합하게 미디어 최소 전송 단위인 청크 파일과 매니페스트 파일을 생성한다. The segmentation module 120 parses media information from the live broadcast stream received from the content server 400 and uses this to generate a chunk file and a manifest file, which are the minimum media transmission units, suitable for the HTTP streaming protocol.

도 3을 참조하면, 임의의 채널(CH1)에서 수신되는 라이브 방송 스트림을 위한 소스는 세그멘테이션 모듈(120)에 의해 세그먼트 파일(S0, S1, S2, S3, S4) 단위로 순차적으로 분할 생성된다. 이때, 하나의 세그먼트 파일은 복수개의 청크 파일로 구성되는데, 예를들어, 5개의 청크 파일로 구성될 수 있다. Referring to FIG. 3, the source for a live broadcast stream received on an arbitrary channel (CH1) is sequentially divided and generated into segment files (S0, S1, S2, S3, and S4) by the segmentation module 120. At this time, one segment file is composed of a plurality of chunk files. For example, it may be composed of 5 chunk files.

다시, 도 1을 참조하면, HTTP 서버(130)는 엣지 서버(200)로부터 파일 요청을 수신하고 파일 요청에 대해 응답한다. 즉, HTTP 서버(130)는 엣지 서버(200)의 요청에 따라 세그멘테이션 모듈(120)이 생성한 메니페스트 파일 및/또는 청크 파일을 엣지 서버(200)로 전송한다.Again, referring to FIG. 1, the HTTP server 130 receives a file request from the edge server 200 and responds to the file request. That is, the HTTP server 130 transmits the manifest file and/or chunk file generated by the segmentation module 120 to the edge server 200 according to the request of the edge server 200.

적어도 하나의 엣지 서버(200)는 오리진 서버(100)로부터 수신한 스트리밍 컨텐츠를 캐싱 및 스트리밍한다.At least one edge server 200 caches and streams streaming content received from the origin server 100.

적어도 하나의 엣지 서버(200)는 스트리밍 서비스 트래픽 부하 등의 이유로 콘텐츠 스트림의 부하 분산 처리를 한다. At least one edge server 200 performs load balancing of content streams for reasons such as streaming service traffic load.

적어도 하나의 엣지 서버(200)는 서비스 트래픽과 세션 용량 증가를 대비해서 하나 이상의 지역에 분산 구축된다. At least one edge server 200 is distributed and deployed in one or more regions to prepare for increases in service traffic and session capacity.

적어도 하나의 엣지 서버(200)는 서비스 트래픽과 세션 용량 증가를 대비해서 적어도 하나의 지역에 분산 구축된다. At least one edge server 200 is distributed and deployed in at least one region to prepare for increases in service traffic and session capacity.

적어도 하나의 엣지 서버(200)는 사용자 세션을 직접 수신해서 스트리밍 서비스를 제공한다. At least one edge server 200 directly receives a user session and provides a streaming service.

청크 파일은 VoD 파일과 유사하게 단위 세그먼트 파일 별로 엣지 서버(200)에 저장된다. 다만, VoD 파일은 인기도에 따라 비휘발성(non-volatile) 스토리지에 저장되지만 라이브(Live) 방송은 제한된 시간 동안만 유효하기 때문에 휘발성(volatile) 메모리에 임시 저장되는 방식이 일반적이다. Chunk files are stored in the edge server 200 for each unit segment file, similar to VoD files. However, VoD files are stored in non-volatile storage depending on popularity, but since live broadcasts are only valid for a limited time, they are generally temporarily stored in volatile memory.

미디어 디바이스(300)는 엔드 유저(End User) 디바이스로서, 플레이어(player)를 포함한다. 플레이어는 적어도 하나의 엣지 서버(200)로부터 수신한 콘텐츠 스트림을 재생한다. The media device 300 is an end user device and includes a player. The player plays a content stream received from at least one edge server 200.

미디어 디바이스(300)는 엣지 서버(200)로부터 수신한 매니페스트 파일에 기입된 청크 파일 목록 정보를 확인하고, 재생할 시각 정보에 따라 미리 정해진 플레이어 버퍼 만큼의 청크 파일을 엣지 서버(200)에게 요청한다. 여기서, 플레이어 버퍼는 최소 재생 버퍼 및/또는 최대 재생 버퍼에 해당한다. The media device 300 checks the chunk file list information written in the manifest file received from the edge server 200, and requests the edge server 200 for a chunk file as many as a predetermined player buffer according to the time information to be played. Here, the player buffer corresponds to the minimum playback buffer and/or the maximum playback buffer.

이때, 플레이어 실행후 재생 시작까지 지연 시간은 최소 재생 버퍼 시간에 지배적(dominant)으로 결정된다. At this time, the delay time from player execution to playback start is determined to be dominant to the minimum playback buffer time.

일반적으로, 미디어 플레이어의 최소 재생 버퍼는 6초 이상, 예를들어, Apple사의 HLS 가이드라인으로 설정될 수 있다. 6초 재생 시간 만큼의 청크 파일의 다운로드 완료될 때까지 재생 시작이 지연될 수 있다. Typically, the minimum playback buffer of a media player can be set to 6 seconds or more, for example, Apple's HLS guidelines. The start of playback may be delayed until the download of the chunk file for 6 seconds of playback time is completed.

도 4는 한 실시예에 따른 CDN 시스템의 라이브 방송 서비스 과정을 도시한 흐름도이다.Figure 4 is a flowchart showing a live broadcast service process of a CDN system according to an embodiment.

도 4를 참조하면, 오리진 서버(100)는 실시간으로 수신(S11)되는 라이브 채널 방송 소스를 일정한 시간 단위(duration)로 잘라서 하나의 세그먼트 파일로 생성한다.Referring to FIG. 4, the origin server 100 cuts the live channel broadcast source received in real time (S11) into a certain time unit (duration) and creates one segment file.

오리진 서버(100)는 생성한 세그먼트 파일의 목록을 포함하는 매니페스트 파일을 생성 및/또는 갱신한다(S13). 즉, 매니페스트 파일이 세그먼트 파일 단위로 생성된다. The origin server 100 creates and/or updates a manifest file containing a list of generated segment files (S13). In other words, the manifest file is created in segment file units.

오리진 서버(100)는 현재 시각의 라이브 방송 스트림을 지속적으로 수신하면서, 가장 최신의 세그먼트 파일을 생성하기 위해 콘텐츠 서버(400)로부터 수신되는 청크 파일을 임시로 저장하다가 세그먼트 듀레이션(duration), 예를들어, 3초 재생분량의 세그먼트 파일이 완성되면 이를 매니페스트(manifest) 파일 목록에 추가할 수 있다.The origin server 100 continuously receives the live broadcast stream of the current time and temporarily stores the chunk file received from the content server 400 to generate the most up-to-date segment file and then changes the segment duration, for example. For example, when a 3-second playback segment file is completed, it can be added to the manifest file list.

도 3을 참조하면, 만약, Chunk 5가 미생성되었다면, S4는 미완성되었으므로 매니페스트 파일에 포함되지 않는다.Referring to FIG. 3, if Chunk 5 has not been created, S4 is not included in the manifest file because it is incomplete.

미디어 디바이스(300)는 엣지 서버(210)로 매니페스트 파일 요청을 전송(S15)한다. The media device 300 transmits a manifest file request to the edge server 210 (S15).

엣지 서버(210)는 오리진 서버(100)의 부하를 피하기 위해서 미디어 디바이스(300)가 빈번하게 요청하는 인기 스트림 파일을 스토리지에 저장하고, 저지연 실시간 라이브 방송 스트리밍을 위한 엣지 캐시 동작을 수행한다. The edge server 210 stores popular stream files frequently requested by the media device 300 in storage to avoid the load on the origin server 100 and performs an edge cache operation for low-latency real-time live broadcast streaming.

엣지 서버(210)는 오리진 서버(100)로 매니페스트 파일 요청을 전달한다(S17).The edge server 210 transmits the manifest file request to the origin server 100 (S17).

오리진 서버(100)는 매니페스트 파일을 엣지 서버(210)로 전송(S19)하고, 엣지 서버(200)는 매니페스트 파일을 미디어 디바이스(300)미디어 디바이스(300)에게 전달한다(S21).The origin server 100 transmits the manifest file to the edge server 210 (S19), and the edge server 200 transmits the manifest file to the media device 300 (S21).

미디어 디바이스(300)미디어 디바이스(300)는 수신(S21)한 매니페스트 파일을 참조해서 버퍼(buffer) 정책에 따라 최신 N개의 세그먼트(segment) 파일을 엣지 서버(200)에 요청한다(S23). Media device 300 The media device 300 requests the edge server 200 for the latest N segment files according to a buffer policy with reference to the manifest file received (S21) (S23).

엣지 서버(200)는 오리진 서버(100)에게 세그먼트 파일(S4)을 요청(S25)한다. 엣지 서버(200)는 오리진 서버(100)로부터 세그먼 파일을 수신(S27, S29)하여 이를 미디어 디바이스(300)에게 전송한다(S31). The edge server 200 requests a segment file (S4) from the origin server 100 (S25). The edge server 200 receives the segment file from the origin server 100 (S27, S29) and transmits it to the media device 300 (S31).

이때, 오리진 서버(100)에서 세그먼트 파일(S4)이 아직 생성중이라면, 엣지 서버(200)는 세그먼트 파일(S4)의 EOF(End of frame)이 수신될때까지 대기한다. 따라서, 대기하는 만큼의 지연 시간이 불가피하게 발생한다.At this time, if the segment file S4 is still being created in the origin server 100, the edge server 200 waits until the EOF (End of frame) of the segment file S4 is received. Therefore, delay time corresponding to waiting inevitably occurs.

즉, 미디어 디바이스(300)는 가장 최신에 추가된 시간의 청크까지만 재생할 수 있고, 현재 수신해서 생성중인 청크 신호는 오리진 서버(100)에서 재생 목록으로 제공하지 않기 때문에 재생 요청을 할 수 없다. 이와 같은 매니페스트 파일 구조에서는 최장 1개 청크 듀레이션(chunk duration) 만큼의 재생 지연은 불가피하다. 이에 대한 대안으로 저지연 방송 스트리밍에서는 청크 듀레이션을 가능한 작게 유지하는 방식을 취하지만, 서브-세컨드(sub-seconds) 수준의 초저지연 방송은 구현하기 어렵다. That is, the media device 300 can only play up to the most recently added chunk of time, and cannot request playback of the chunk signal currently being received and generated because the origin server 100 does not provide it as a playlist. In such a manifest file structure, a playback delay of up to one chunk duration is inevitable. As an alternative to this, low-latency broadcast streaming takes the approach of keeping the chunk duration as small as possible, but it is difficult to implement ultra-low delay broadcasting at the sub-seconds level.

엣지 서버(210)는 라이브 방송 채널에 대해 매니페스트 파일을 캐쉬(cache) 보관하지 않고 미디어 디바이스(300)의 요청마다 오리진 서버(100)로 갱신 요청을 한다. 미디어 디바이스(300)의 플레이어에서 요청한 매니페스트파일은 오리진 서버(100)에서 시간에 따라 지속적으로 변경되기 때문에 엣지에서 캐싱되지 않으므로, 엣지 서버(200)는 미디어 디바이스(300)의 요청이 있을때마다 오리진 서버(100)로 계속해서 요청한다.The edge server 210 does not cache the manifest file for the live broadcast channel and requests an update to the origin server 100 for each request from the media device 300. Since the manifest file requested by the player of the media device 300 is continuously changed over time in the origin server 100, it is not cached at the edge, so the edge server 200 is the origin server whenever there is a request from the media device 300. Continue requesting at (100).

엣지 서버(210)는 오리진 서버(100)에서 이미 완성한 세그먼트 파일을 개별 사용자 세션의 요청에 따라 요청(request)/응답(response) 하면서, 정책적으로 최근 사용한 세그먼트 파일을 캐시 저장소에 저장하는 단순한 구조로 이루어진다. The edge server 210 has a simple structure that requests/responses segment files already completed by the origin server 100 according to the requests of individual user sessions, and stores recently used segment files in the cache storage as a policy. It comes true.

엣지 서버(210)는 로컬 캐시에 세그먼트 파일이 저장 중인 경우에는 로컬에서 파일을 제공하고, 저장하고 있지 않은 경우 오리진 서버(100)에 요청한다. If the segment file is stored in the local cache, the edge server 210 provides the file locally, and if the segment file is not stored in the local cache, it requests it from the origin server 100.

또한, 엣지 서버(210)는 사용자가 요청하는 개별 세그먼트 파일을 독립적으로 파일로 간주해서 캐싱 정책을 관리한다. 다만, 특정 채널을 시청중인 미디어 디바이스(300)가 요청할 수 있는 스트림 시간은 오리진 서버(100)에서 수신한 매니페스트 파일의 내용에 따라 달라진다.Additionally, the edge server 210 manages the caching policy by independently considering individual segment files requested by the user as files. However, the stream time that the media device 300 watching a specific channel can request varies depending on the contents of the manifest file received from the origin server 100.

이와 같이, 오리진 서버(100)와 엣지 서버(210)로 구성되는 대용량 CDN은 단순한 HTTP 파일 캐시 방식으로 구성되어 있으므로, 저지연 방송 중계를 위해 요구되는 종단(End-to-End) 구간의 청크 전달(chunked transfer)을 제공하지 못하는 단점이 있다. In this way, the large-capacity CDN consisting of the origin server 100 and the edge server 210 is configured with a simple HTTP file cache method, so it delivers chunks in the end-to-end section required for low-latency broadcast relay. It has the disadvantage of not being able to provide (chunked transfer).

부연 설명하면, 미디어 디바이스(300)에서 요청하는 현재 생성 중인 세그먼트 파일은 엣지 서버(200)에서는 파일이 완전히 생성되지 않았기 때문에, 엣지 서버(200)에서 세그먼트 파일에 대해 EoF가 전달될 때까지 최대 세그먼트 듀레이션 만큼 대기를 하고, 수신이 완료된 세그먼트 파일을 미디어 디바이스(300)에 전달한다. 따라서, 엣지 서버(200)와 미디어 디바이스(300) 간에 청크 전달(Chunked Transfer) 지연 시간을 단축한 방식이 E2E 구간까지 확대 적용될 수 없고, 엣지 서버(200) 개입에 따른 추가 레이턴시(latency)가 발생한다.To elaborate, since the segment file currently being created requested by the media device 300 has not been completely created on the edge server 200, the maximum segment file is set until the EoF for the segment file is delivered from the edge server 200. After waiting for the duration, the received segment file is delivered to the media device 300. Therefore, the method of reducing the chunked transfer delay time between the edge server 200 and the media device 300 cannot be extended to the E2E section, and additional latency occurs due to the intervention of the edge server 200. do.

사용자가 재생하려는 단위 세그먼트 파일은 요청으로 처음 트리거(trigger)되고 엣지 서버(210)는 수동적으로 세그먼트를 오리진 서버(100)에 요청하여 수신한 후 미디어 디바이스(300)에 전송한다. The unit segment file that the user wants to play is first triggered by a request, and the edge server 210 passively requests and receives the segment from the origin server 100 and then transmits it to the media device 300.

미디어 디바이스(300)가 수신한 매니페스트 파일은 현재 수신해서 생성중인 세그먼트를 제외하고 완성된 세그먼트 파일을 기록하고 있다. 따라서, 미디어 디바이스(300)의 플레이어 버퍼를 최소화하더라도 라이브(Live) 방송에 대한 재생 지연은 최소 1개 'segment duration + transport RTT(Round Trip Time)' 시간만큼이 발생한다. 즉, 미디어 디바이스(300) ~ 엣지 서버(200) ~ 오리진 서버(100) 간의 '4(세그먼트 듀레이션)×RTT(Round Trip Time)' 시간의 요청 전달 지연 요소가 존재하게 된다. The manifest file received by the media device 300 records completed segment files excluding segments currently being received and being created. Therefore, even if the player buffer of the media device 300 is minimized, the playback delay for live broadcasting occurs by at least one 'segment duration + transport RTT (Round Trip Time)' time. In other words, there is a request delivery delay element of '4 (segment duration) x RTT (Round Trip Time)' between the media device 300 ~ edge server 200 ~ origin server 100.

이러한 전달 지연 문제를 해결하고자 엣지 서버(200)의 구조를 다음과 같이 제안한다. 즉, HTTP 서버를 이용한 엣지 서버(200)를 활용하면서, 라이브 방송 채널에 대해 저지연 스트리밍을 제공하기 위해, 본 발명의 실시예에서는 다음과 같은 저지연 스트리밍 캐싱 구조를 제안한다.To solve this delivery delay problem, the structure of the edge server 200 is proposed as follows. That is, in order to provide low-latency streaming for a live broadcast channel while utilizing the edge server 200 using an HTTP server, an embodiment of the present invention proposes the following low-latency streaming caching structure.

이하, 도 5 ~ 도 12의 실시예에 따르면, CMAF 미디어 표준 규격을 채용하므로 라이브 방송에 저지연 스트리밍을 제공하기 위해, 일반적으로 단위 시간 분량의 세그먼트 파일이 완성되면 매니페스트 파일 목록을 갱신하지 않고, 수신하고 있는 방송 스트림을 수십~수백ms 분량의 수프레임을 최소 전송 단위로 지정하는 미디어 포맷과 청크 인코딩 기술을 사용한다.Hereinafter, according to the embodiments of FIGS. 5 to 12, in order to provide low-latency streaming for live broadcasting by adopting the CMAF media standard, the manifest file list is generally not updated when a segment file for a unit time is completed, It uses a media format and chunk encoding technology that specifies several frames of tens to hundreds of milliseconds as the minimum transmission unit for the broadcast stream being received.

도 5 ~ 도 12의 실시예에 따르면, DASH 혹은 Low latency HLS를 사용하여 CMAF Low latency 청크를 전송할 때 전달 지연을 최소화 할 수 있도록, 생성 중인 세그먼트 정보를 매니페스트에 노출해서 플레이어가 요청할 수 있도록 정보를 제공함으로써 전달 지연을 줄일 수 있다. 특히, 아직 생성 중인 세그먼트 파일은 HTTP/1.1 spec에서 정의한 청크 전송(transfer chunked) 모드로 전송함으로써 엣지 서버(220) ~ 미디어 디바이스(300) 간의 전달 지연을 단축할 수 있다.According to the embodiment of Figures 5 to 12, in order to minimize delivery delay when transmitting a CMAF Low latency chunk using DASH or Low latency HLS, the segment information being created is exposed in the manifest so that the player can request it. By providing this, delivery delay can be reduced. In particular, the delivery delay between the edge server 220 and the media device 300 can be shortened by transmitting segment files that are still being created in the transfer chunked mode defined in the HTTP/1.1 spec.

이하 실시예에 따른 엣지 서버(220)의 도면 부호를 도 4의 엣지 서버(210)와 구분하여 표시한다.Below, the reference numerals of the edge server 220 according to the embodiment are indicated separately from the edge server 210 of FIG. 4 .

본 발명의 실시예는 미디어 스트림에 대해 CMAF 청크 인코딩(Chunked Encoding) 포맷을 사용하고, 전송 기술로 DASH Low latency 기법을 사용할 수 있다.Embodiments of the present invention may use the CMAF chunked encoding format for media streams and use the DASH Low latency technique as a transmission technology.

저지연 실시간 라이브 방송 스트리밍을 위한 엣지 서버(220)는 미디어 디바이스(300)의 파일 요청을 HTTP GET 요청에서 지시하는 세그먼트 파일 단위로 구분하지 않고, 매니페스트 파일에 기초해서 단위 라이브 방송 채널 스트림 별로 활성화한다. 여기서, 종래 HTTP 파일 서버에서 사용하는 단위 세그먼트 파일 별로 오리진 서버(100)에 파일 요청을 하는 것이 아니라, 엣지 서버(220) 자체적으로 라이브 스트림 세션을 요청하는 프록시를 제공한다. 즉, 단위 세그먼트 파일 별로 파일 캐싱을 위해 오리진 서버(100)에게 파일 요청을 하는 것이 아니라, 라이브 방송 스트림 별로 세션을 요청한다.The edge server 220 for low-latency real-time live broadcast streaming does not divide the file request from the media device 300 into segment files as indicated in the HTTP GET request, but activates each unit live broadcast channel stream based on the manifest file. . Here, rather than making a file request to the origin server 100 for each unit segment file used in a conventional HTTP file server, the edge server 220 itself provides a proxy for requesting a live stream session. In other words, a file request is not made to the origin server 100 for file caching for each unit segment file, but a session is requested for each live broadcast stream.

도 5는 한 실시예에 따른 엣지 서버의 세부적인 구성을 나타낸 블록도이다.Figure 5 is a block diagram showing the detailed configuration of an edge server according to an embodiment.

도 5를 참조하면, 엣지 서버(220)는 HTTP 서버(221), 스트리밍 전송부(222), 세션 풀(Pool) 관리 장치(223), 세션 풀 스토리지(224), 스트림 캐시 장치(225) 및 스트림 캐시 스토리지(226)를 포함한다.Referring to FIG. 5, the edge server 220 includes an HTTP server 221, a streaming transmission unit 222, a session pool management device 223, a session pool storage 224, a stream cache device 225, and Includes stream cache storage 226.

HTTP 서버(221)는 미디어 디바이스(300)로부터 HTTP 메시지 기반의 매니페스트 파일 요청 및/또는 세그먼트 파일 요청을 수신하고, 이에 대한 응답을 전송한다.The HTTP server 221 receives an HTTP message-based manifest file request and/or segment file request from the media device 300 and transmits a response thereto.

스트림 전송부(222)는 스트림 캐시 장치(225)가 출력하는 실시간 미디어 스트림을 미디어 디바이스(300)로 전송한다. 실시간 미디어 스트림은 매니페스트 파일, 세그먼트 파일, 청크 파일을 포함할 수 있다.The stream transmission unit 222 transmits the real-time media stream output by the stream cache device 225 to the media device 300. Real-time media streams can include manifest files, segment files, and chunk files.

세션 풀 관리 장치(223)는 매니페스트 파일, 그리고 그 매니페스트 파일에 대한 독립적인 세그먼트 파일에 대하여 세션 목록과 요청 시간 정보를 세션 풀 스토리지(224)에 기록한다. 여기서, 세션 목록은 세션 별로 요청된 파일명을 포함한다. 세션은 미디어 디바이스(300) 단위로서, 엣지 서버(220)와 하나의 미디어 디바이스(300) 간에는 하나의 세션이 연결된다.The session pool management device 223 records the session list and request time information for the manifest file and an independent segment file for the manifest file in the session pool storage 224. Here, the session list includes file names requested for each session. A session is a unit of media device 300, and one session is connected between the edge server 220 and one media device 300.

HTTP 서버(221)는 미디어 디바이스(300)과 HTTP 세션이 설립되면, 세션 ID를 발급한다. 세션 풀 관리 장치(223)는 세션 ID, 채널 ID 및 파일 ID를 바인딩한 세션 풀을 생성하여 세션 풀 스토리지(224)에 저장한다. 이러한 세션 물은 독립적인 파일, 매니페스트 파일 및 세그먼트 파일에 대하여 미디어 디바이스(300)의 세션 ID, 채널 ID 및 요청 시간 정보를 포함한다. When an HTTP session is established with the media device 300, the HTTP server 221 issues a session ID. The session pool management device 223 creates a session pool with bound session ID, channel ID, and file ID and stores it in the session pool storage 224. This session information includes session ID, channel ID, and request time information of the media device 300 for independent files, manifest files, and segment files.

세션 풀 관리 장치(223)는 미디어 디바이스(300)로부터 수신한 파일 요청을 스트림 캐시 장치(225)로 전달한다. 여기서, 파일 요청은 매니캐스트 파일 요청, 세그먼트 파일 요청을 포함한다.The session pool management device 223 transfers the file request received from the media device 300 to the stream cache device 225. Here, the file request includes a manycast file request and a segment file request.

세션 풀 관리 장치(223)는 복수의 미디어 디바이스(300)로부터 동시에 동일한 파일 요청을 수신한 경우, 공유 캐싱(shard caching)을 사용한다. 즉, 처음 수신된 파일 요청에 대해서만 스트림 캐시 장치(225)로 파일 읽기(read)를 시도한다. When the session pool management device 223 receives the same file request from multiple media devices 300 at the same time, it uses shared caching (shard caching). That is, an attempt is made to read the file with the stream cache device 225 only for the first received file request.

스트림 캐시 장치(225)는 세션 풀 관리 장치(223)에서 수신한 파일 읽기(read) 요청에 대해 특정 방송 채널에 대한 매니페스트 정보를 우선 파싱한다. The stream cache device 225 first parses manifest information for a specific broadcast channel in response to a file read request received from the session pool management device 223.

스트림 캐시 장치(225)는 미디어 디바이스(300)의 HTTP GET 요청에서 지시하는 세그먼트 파일 단위가 아닌 미디어 디바이스(300)에서 요청한 매니페스트 파일에 기초해서 단위 라이브 방송 채널 스트림별로 엣지 캐싱 처리를 초기화한다. 이때, 스트림 캐시 장치(225)는 단위 세그먼트 파일 별로 파일 캐싱을 위해 오리진 서버(100)에게 요청을 처리하는 것이 아니라, 엣지 서버(220) 자체적으로 라이브 방송 스트림을 구분해서 라이브 방송 스트림 별로 세션을 요청하는 프록시(proxy) 역할을 한다. The stream cache device 225 initializes edge caching processing for each live broadcast channel stream based on the manifest file requested by the media device 300 rather than the segment file unit indicated in the HTTP GET request of the media device 300. At this time, the stream cache device 225 does not process a request to the origin server 100 for file caching for each unit segment file, but the edge server 220 itself separates the live broadcast streams and requests a session for each live broadcast stream. It acts as a proxy.

복수의 스트림 캐시 장치(225)는 채널 단위로 해당 채널의 매니캐스트 파일 및 방송 파일을 수신하고, 이를 미디어 디바이스(300)에게 스트리밍 전송한다. 이때, 방송 신호는 세그먼트 파일 및/또는 청크 파일을 포함한다. The plurality of stream cache devices 225 receive the manycast files and broadcast files of the corresponding channel on a channel basis and transmit them to the media device 300 in streaming. At this time, the broadcast signal includes segment files and/or chunk files.

이처럼, 미디어 디바이스(300)의 요청을 채널 단위로 클러스터(cluster)함으로써 엣지 서버(200)의 캐시 처리 효율을 높일 수 있다.In this way, the cache processing efficiency of the edge server 200 can be increased by clustering requests from the media device 300 on a channel basis.

스트림 캐시 장치(225)는 해당 방송 채널에 대한 스트림을 수신하고 있지 않는 경우에 한해 파일 요청 쓰레드(Thread)를 생성한다. 예를들어, 미디어 디바이스(300)에서 Ch100번 방송에 대해 매니페스트 파일 요청을 전송한 경우, 스트림 캐시 장치(225)는 ch100번에 대한 캐싱 동작 처리를 위한 파일 요청 쓰레드를 생성한다. 만일, 기존에 ch100번에 대한 요청이 있는 경우는 세션 풀 관리 장치(223)에 의해 동일한 파일에 대한 요청이 존재하기 때문에 추가로 파일 요청 쓰레드를 생성하지 않는다. The stream cache device 225 creates a file request thread only when it is not receiving a stream for the corresponding broadcast channel. For example, when the media device 300 transmits a manifest file request for broadcast Ch100, the stream cache device 225 creates a file request thread to process the caching operation for ch100. If there is an existing request for ch100, since there is a request for the same file by the session pool management device 223, an additional file request thread is not created.

여기서, 파일 요청 쓰레드는 방송 채널 단위로서, Ch100번 스트림 데이터를 오리진 서버(100)에 요청하고, 수신하고, 해당 채널에 대해 파일을 요청하는 사용자 세션을 집합적으로 관리하는 인스턴스(프로세스)로 볼 수 있다. Here, the file request thread is a broadcast channel unit, and can be viewed as an instance (process) that requests and receives stream data Ch100 from the origin server 100, and collectively manages user sessions requesting files for that channel. You can.

스트림 캐시 장치(225)는 파일 요청 쓰레드를 실행하여 오리진 서버(100)로부터 자신에게 할당된 채널의 매니페스트 파일, 세그먼트 파일, 청크 파일을 수신하여 각각의 스트림 캐시 스토리지(226)에 캐싱한다. 이때, 각 파일은 유효시간(timeshift duration) 동안 캐싱된다. The stream cache device 225 executes a file request thread to receive the manifest file, segment file, and chunk file of the channel assigned to it from the origin server 100 and caches them in each stream cache storage 226. At this time, each file is cached for the timeshift duration.

스트림 캐시 장치(225)는 세션 풀 관리 장치(223)의 요청이 없이도, 즉, 세션 풀 관리 장치(223)와 독립적으로, 파일 요청 쓰레드를 실행하여 주기적으로 오리진 서버(100)로부터 매니페스트 파일을 수신하여 갱신한다.The stream cache device 225 executes a file request thread without a request from the session pool management device 223, that is, independently of the session pool management device 223, and periodically receives a manifest file from the origin server 100. and update it.

스트림 캐시 장치(225)는 세션 풀 관리 장치(223)와 연계하여 동일한 채널의 파일 요청에 대하여 집합적으로 스트리밍 처리할 수 있다.The stream cache device 225 can collectively process file requests for the same channel in conjunction with the session pool management device 223.

스트림 캐시 장치(225)와 오리진 서버(100) 간에 방송 스트림 수신을 위한 통신은세션 풀 관리 장치(223) 및 HTTP 서버(221)와 무관하게 독립적으로 동작한다. 즉, 미디어 디바이스(300)로부터 파일 요청을 수신하는 것과 무관하게 스트림 캐시 장치(225)는 독립적으로 해당 채널에 대한 스트림 데이터를 오리진 서버(100)로 요청하여 수신한다.Communication for receiving broadcast streams between the stream cache device 225 and the origin server 100 operates independently of the session pool management device 223 and the HTTP server 221. That is, regardless of receiving a file request from the media device 300, the stream cache device 225 independently requests and receives stream data for the corresponding channel from the origin server 100.

스트림 캐시 장치(225)는 세션 풀 관리 장치(223)에서 수신한 파일 데이터 읽기(data read) 입력에 대해 읽기 요청된 데이터의 유형이 매니페스트인지 세그먼트 인지를 분류한다. 방송 채널은 매니페스트 리소스 URI(Uniform Resource Identifier) 정보로 고유하게 인식된다. DASH 방송 스트림은 매니페스트 파일 내에 스트림에서 제공하는 하나 이상의 미디어 스트림 목록을 기록하고 있다. The stream cache device 225 classifies whether the type of data requested to read for the file data read input received from the session pool management device 223 is a manifest or a segment. A broadcast channel is uniquely recognized by manifest resource URI (Uniform Resource Identifier) information. DASH broadcast streams record a list of one or more media streams provided by the stream in the manifest file.

스트림 캐시 장치(225)는 매니페스트 정보를 파싱해서 사용된 스트리밍 프로토콜을 인식하고, 제공할 독립적인 미디어 스트림 목록, 예를들어, 멀티 비트레이트 프로파일, 오디오 스트림, 비디오 스트림 등 그리고 개별 세그먼트 파일의 듀레이션 사이즈를 파싱한다.The stream cache device 225 parses the manifest information to recognize the streaming protocol used and a list of independent media streams to provide, such as multi-bitrate profiles, audio streams, video streams, etc., and the duration size of individual segment files. Parse .

스트림 캐시 장치(225)는 특정 방송 채널에 대해 요청을 수신하면, 오리진 서버(100)로 채널에 대한 요청 쓰레드(Thread)를 생성해서 매니페스트 요청 및 파싱을 하고, 사용자 요청과 독립적으로 세그먼트 요청 프로세스를 실행한다. 이에 따라, 미디어 디바이스(300)의 세그먼트 요청을 수신하지 않고 자발적으로(autonomously) 세그먼트를 요청함으로써 사용자 요청/응답에 따른 지연(RTT) 없이 처리하기 때문에 지연 시간을 단축할 수 있다. When the stream cache device 225 receives a request for a specific broadcast channel, it creates a request thread for the channel with the origin server 100, requests and parses the manifest, and performs a segment request process independently of the user request. Run. Accordingly, the delay time can be shortened because the segment is processed without delay (RTT) according to the user request/response by requesting the segment autonomously without receiving the segment request from the media device 300.

특히, 라이브 방송의 경우, 시간에 따라 미디어 디바이스(300)가 미래에 필요한 세그먼트 목록이 예측 가능하다. 즉, 미디어 디바이스(300)가 요청할 것으로 예상되는 세그먼트 파일을 예상할 수 있다. In particular, in the case of live broadcasting, a list of segments that the media device 300 will need in the future can be predicted over time. That is, the segment file expected to be requested by the media device 300 can be predicted.

특징적으로 DASH 기반의 저지연 스트리밍은 세그먼트 파일이 생성중인 시각에 클라이언트가 미완성 세그먼트 파일을 요청하는 경우가 있다. 이 경우는 스트림 캐시 장치(225)의 세그먼트 요청에 대해 오리진 서버(100)에서 응답한 HTTP 헤더 내용으로 구분할 수 있다. 세그먼트 파일이 생성중인 경우, 즉, 미완성인 경우는, HTTP 응답 메시지에 content-length 정보가 기재되지 않고, 'Transfer: chunked'로 셋팅되어 오리진 서버(100)로부터 HTTP 캐시 스트리머(222)로 전송된다. Characteristically, in DASH-based low-latency streaming, there are cases where the client requests an incomplete segment file at the time the segment file is being created. This case can be distinguished by the contents of the HTTP header responded by the origin server 100 to the segment request from the stream cache device 225. If a segment file is being created, that is, is incomplete, content-length information is not written in the HTTP response message and is set to 'Transfer: chunked' and transmitted from the origin server 100 to the HTTP cache streamer 222. do.

생성이 이미 완료된 파일인 경우, 스트림 캐시 장치(225)의 읽기(Read) 요청에 대한 응답으로 세션 풀 관리 장치(223)에 응답할 수 있다. In the case of a file whose creation has already been completed, a response may be sent to the session pool management device 223 in response to a read request from the stream cache device 225.

오리진 서버(100)로부터 수신한 세그먼트 파일에 대해 EoF(End Of File)이 완료되지 않은 파일인 경우, 스트림 캐시 장치(225)는 오리진 서버(100)에서 수신한 세그먼트 파일이 생성중인 상태값을 리턴하고, 세션 풀 관리 장치(223)는 즉시 미디어 디바이스(300)들에 청크 모드(chunked mode)로 전송될 것을 알릴 수 있다. 이와 같은 방법을 사용하면 오리진 서버(100)에서 생성중인 세그먼트에 대해 엣지 노드(200)에서 세그먼트 파일이 생성 완료될 때까지 대기하지 않고, E2E로 영상 프레임 단위로 전송함으로써 엣지 서버(200)에 의한 지연을 단축할 수 있다. If the EoF (End Of File) for the segment file received from the origin server 100 is not completed, the stream cache device 225 returns a status value indicating that the segment file received from the origin server 100 is being created. And, the session pool management device 223 can immediately notify the media devices 300 that data will be transmitted in chunked mode. Using this method, without waiting until the segment file is created at the edge node 200 for the segment being created on the origin server 100, the video frame is transmitted to E2E by the edge server 200. Delay can be shortened.

또한, 엣지 서버(200)에서 프리페칭(prefetching)이 가능하고, 하나의 읽기로 다중 전송기(Transmitter)를 구현함으로써, 서버 CPU(Central Processing Unit)/메모리 부하를 줄일 수 있다.In addition, prefetching is possible in the edge server 200, and by implementing multiple transmitters with one read, the server CPU (Central Processing Unit)/memory load can be reduced.

도 6은 다른 실시예에 따른 엣지 서버의 구성을 나타낸 블록도이다.Figure 6 is a block diagram showing the configuration of an edge server according to another embodiment.

도 6을 참조하면, 엣지 서버(220)는 스트리머 선택부(220-1) 및 복수의 HTTP 캐시 스트리머(220-2)를 포함한다.Referring to FIG. 6, the edge server 220 includes a streamer selection unit 220-1 and a plurality of HTTP cache streamers 220-2.

즉, 도 5에서 설명한 HTTP 서버(221), 스트리밍 전송부(222), 세션 풀(Pool) 관리 장치(223), 세션 풀 스토리지(224), 스트림 캐시 장치(225) 및 스트림 캐시 스토리지(226)를 HTTP 캐시 스트리머(220-2) 단위로 구현할 수 있다.That is, the HTTP server 221, streaming transmission unit 222, session pool management device 223, session pool storage 224, stream cache device 225, and stream cache storage 226 described in FIG. 5. Can be implemented in units of HTTP cache streamer (220-2).

이때, 스트리머 선택부(220-1)는 미디어 디바이스(300)로부터 HTTP 요청 메시지를 수신한다. At this time, the streamer selection unit 220-1 receives an HTTP request message from the media device 300.

스트리머 선택부(220-1)는 부하 분산 알고리즘에 기초하여 복수의 HTTP 캐시 스트리머(220-2) 중 하나를 선택할 수 있다.The streamer selection unit 220-1 may select one of the plurality of HTTP cache streamers 220-2 based on a load distribution algorithm.

스트리머 선택부(220-1)는 특정 HTTP 캐시 스트리머(220-2)가 사용자 접속이 많아 폭주하는 경우, 차선책으로 부하가 적은 HTTP 캐시 스트리머(220-2)를 선택한다. 스트리머 선택부(220-1)는 스트리밍 부하를 HTTP 캐시 스트리머(220-2) 간에 골고루 분산 할당하는 역할을 한다. 부하 분산 알고리즘에는 라운드 로빈(round robin), 최소 접속(least connection), 콘텐트 해시(content hash) 등의 방법이 이용될 수 있다.When a specific HTTP cache streamer 220-2 is congested due to a large number of user connections, the streamer selection unit 220-1 selects the HTTP cache streamer 220-2 with a small load as the next best option. The streamer selection unit 220-1 serves to evenly distribute and allocate the streaming load among the HTTP cache streamers 220-2. Methods such as round robin, least connection, and content hash may be used in the load balancing algorithm.

도 7은 한 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 매니페스트 파일 전송 과정을 설명하는 도면이다.Figure 7 is a diagram illustrating a manifest file transmission process for a live broadcast service to which low-latency streaming caching is applied according to an embodiment.

도 7을 참조하면, 오리진 서버(100)는 채널 별로 매니페스트 파일을 생성한다(S101). 오리진 서버(100)는 도 3에 도시한 바와 같이, 세그먼트 파일 목록을 포함하는 매니페스트 파일을 생성한다. 이때, 오리진 서버(100)는 완성된 세그먼트 파일 뿐만 아니라 미완성된 청크 파일이 포함된 세그먼트 파일도 매니페스트 파일에 포함시킨다.Referring to FIG. 7, the origin server 100 creates a manifest file for each channel (S101). As shown in FIG. 3, the origin server 100 creates a manifest file including a list of segment files. At this time, the origin server 100 includes not only the completed segment file but also the segment file including the unfinished chunk file in the manifest file.

미디어 디바이스(300)가 세션 풀 관리 장치(223)와 HTTP 세션을 설립(S103)하여 세션 ID를 발급받는다. 미디어 디바이스(300)는 특정 채널의 매니페스트 파일 요청을 엣지 서버(220)로 전송한다(S105). 이때, 매니페스트 파일 요청은 세션 ID, 채널 ID 및 파일 ID를 포함한다.The media device 300 establishes an HTTP session with the session pool management device 223 (S103) and receives a session ID. The media device 300 transmits a manifest file request for a specific channel to the edge server 220 (S105). At this time, the manifest file request includes session ID, channel ID, and file ID.

세션 풀 관리 장치(223)는 매니페스트 파일 요청이 최초 요청인지 판단한다(S107).The session pool management device 223 determines whether the manifest file request is the first request (S107).

최초 요청으로 판단되면, 세션 풀 관리 장치(223)는 세션 ID, 채널 ID 및 파일 ID를 바인딩하여 세션 풀에 등록한다(S109).If it is determined to be an initial request, the session pool management device 223 binds the session ID, channel ID, and file ID and registers them in the session pool (S109).

세션 풀 관리 장치(223)는 복수의 스트림 캐시 장치(225) 중에서 S105 단계에서 수신한 채널 ID를 서비스하는 스트림 캐시 장치(225)를 선택한다(S111).The session pool management device 223 selects the stream cache device 225 that services the channel ID received in step S105 from among the plurality of stream cache devices 225 (S111).

세션 풀 관리 장치(223)는 채널 ID 및 파일 ID를 포함하는 파일 읽기 요청을 스트림 캐시 장치(225)에게 전송한다(S113).The session pool management device 223 transmits a file read request including a channel ID and a file ID to the stream cache device 225 (S113).

스트림 캐시 장치(225)는 S113 단계에서 요청받은 파일이 캐싱된 파일인지를 판단한다(S115). 캐싱된 파일이 아니면, 스트림 캐시 장치(225)는 채널 ID의 파일 요청 쓰레드(Thread)를 생성한다(S117).The stream cache device 225 determines whether the file requested in step S113 is a cached file (S115). If it is not a cached file, the stream cache device 225 creates a file request thread for the channel ID (S117).

스트림 캐시 장치(225)는 오리진 서버(100)에게 S105 단계에서 요청받은 매니페스트 파일 요청을 전송한다(S119).The stream cache device 225 transmits the manifest file request requested in step S105 to the origin server 100 (S119).

오리진 서버(100)는 요청받은 매니페스트 파일을 스트림 캐시 장치(225)에게 전송한다(S121).The origin server 100 transmits the requested manifest file to the stream cache device 225 (S121).

스트림 캐시 장치(225)는 오리진 서버(100)로부터 수신한 매니페스트 파일을 스트림 캐시 스토리지(226)에 캐싱(S123)하고, 세션 풀 관리 장치(223)에게 전송한다(S125).The stream cache device 225 caches the manifest file received from the origin server 100 in the stream cache storage 226 (S123) and transmits it to the session pool management device 223 (S125).

스트림 캐시 장치(225)는 S115 단계에서 캐싱된 파일로 판단되면, 오리진 서버(100)에게 요청하지 않고, 스트림 캐시 스토리지(226)에 캐싱된 매니페스트 파일을 세션 풀 관리 장치(223)로 전송한다(S125).If the stream cache device 225 determines that it is a cached file in step S115, it transmits the manifest file cached in the stream cache storage 226 to the session pool management device 223 without requesting the origin server 100 ( S125).

도면에는 나타내지 않았으나, 파일 요청 쓰레드가 생성된 이후, S119 단계 ~ S123 단계는 주기적으로 반복된다. 이때, 세션 풀 관리 장치(223)와 독립적으로 스트림 캐시 장치(225)가 자발적으로 파일 요청 쓰레드를 실행하여 S119 단계 ~ S123 단계를 주기적으로 수행할 수 있다.Although not shown in the drawing, after the file request thread is created, steps S119 to S123 are periodically repeated. At this time, independently of the session pool management device 223, the stream cache device 225 may voluntarily execute a file request thread and periodically perform steps S119 to S123.

세션 풀 관리 장치(223)는 스트림 캐시 장치(225)로부터 수신한 매니페스트 파일을 미디어 디바이스(300)에게 전송한다(S127). The session pool management device 223 transmits the manifest file received from the stream cache device 225 to the media device 300 (S127).

이처럼, 복수의 미디어 디바이스(300) 중 최초로 매니페스트 파일 요청이 수신된 경우에 한해 S117 단계 ~ S123 단계가 수행된다. 이후에 매니페스트 파일을 요청하는 미디어 디바이스들(300)에 대해서는 캐싱된 매니페스트 파일을 제공하므로, 오리진 서버(100)와의 추가적인 세션을 필요로 하지 않는다.In this way, steps S117 to S123 are performed only when the manifest file request is received for the first time among the plurality of media devices 300. Since the cached manifest file is provided to media devices 300 that later request the manifest file, an additional session with the origin server 100 is not required.

도 8은 한 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 세그먼트 파일 전송 과정을 나타낸 흐름도로서, 도 7의 S127 단계 이후에 수행된다.Figure 8 is a flowchart showing a segment file transmission process for a live broadcast service to which low-latency streaming caching is applied according to an embodiment, which is performed after step S127 of Figure 7.

도 8을 참조하면, 스트림 캐시 장치(225)는 S117 단계에서 생성한 파일 요청 쓰레드를 실행(S129)하여 캐싱된 매니페스트 파일을 파싱하고, 이를 토대로 세그먼트 파일 요청을 오리진 서버(100)로 전송한다(S131). 이때, S129 단계 ~ S131 단계는 세션 풀 관리 장치(223)의 요청 없이, 즉, 미디어 디바이스(300)의 요청이 수신되기 전에 스트림 캐시 장치(225)에 의해 자발적으로 수행된다.Referring to FIG. 8, the stream cache device 225 executes the file request thread created in step S117 (S129) to parse the cached manifest file and transmits a segment file request to the origin server 100 based on this (S129). S131). At this time, steps S129 to S131 are voluntarily performed by the stream cache device 225 without a request from the session pool management device 223, that is, before a request from the media device 300 is received.

오리진 서버(100)는 세그먼트 파일의 생성 완료 여부를 판단(S133)한다. The origin server 100 determines whether creation of the segment file has been completed (S133).

오리진 서버(100)는 생성이 완료된 세그먼트 파일을 스트림 캐시 장치(225)로 전송한다(S135). The origin server 100 transmits the generated segment file to the stream cache device 225 (S135).

스트림 캐시 장치(225)는 수신(S135)한 세그먼트 파일을 캐싱한다(S137).The stream cache device 225 caches the segment file received (S135) (S137).

오리진 서버(100)는 생성이 완료되지 않은 미완성 세그먼트 파일, 즉, 생성중인 세그먼트 파일에 대해서는 CMAF 청크 단위 전송을 한다(S139). 즉, 오리진 서버(100)는 청크 파일을 에게 전송한다(S139). 스트림 캐시 장치(225)는 청크 파일을 캐싱한다(S141). The origin server 100 transmits an unfinished segment file whose creation has not been completed, that is, a segment file being created, in units of CMAF chunks (S139). That is, the origin server 100 transmits the chunk file to (S139). The stream cache device 225 caches the chunk file (S141).

미디어 디바이스(300)는 도 7의 S127 단계에서 수신한 매니페스트 파일을 파싱하고, 이를 기초로 세그먼트 파일 요청을 엣지 서버(220)로 전송한다(S143).The media device 300 parses the manifest file received in step S127 of FIG. 7 and transmits a segment file request to the edge server 220 based on it (S143).

세션 풀 관리 장치(223)는 스트림 캐시 장치(225)에게 파일 읽기 요청을 전송한다(S145).The session pool management device 223 transmits a file read request to the stream cache device 225 (S145).

스트림 캐시 장치(225)는 읽기 요청된 파일이 생성 완료된 세그먼트 파일인지 판단한다(S147). The stream cache device 225 determines whether the file requested to be read is a segment file that has already been created (S147).

생성 완료된 세그먼트 파일이면, 캐싱되어 있는 세그먼트 파일을 세션 풀 관리 장치(223)에게 전송한다(S149). If it is a segment file that has been created, the cached segment file is transmitted to the session pool management device 223 (S149).

세션 풀 관리 장치(223)는 세그먼트 파일을 미디어 디바이스(300)에게 전송한다(S151). The session pool management device 223 transmits the segment file to the media device 300 (S151).

S147 단계에서 미완성된 세그먼트 파일로 판단되면, 스트림 캐시 장치(225)는 세그먼트 파일 상태값(=생성중)을 리턴한다(S153). 그러면, 세션 풀 관리 장치(223)는 청크 모드 전송 알림을 미디어 디바이스(300)에게 전송한다(S155).If it is determined to be an incomplete segment file in step S147, the stream cache device 225 returns a segment file status value (=generating) (S153). Then, the session pool management device 223 transmits a chunk mode transmission notification to the media device 300 (S155).

이때, 청크 모드 전송 알림은 세그먼트 파일을 요청한 미디어 디바이스(300) 뿐만 아니라 도 7의 S127 단계에서 매니페스트 파일을 수신한 모든 미디어 디바이스(300)에게 전송할 수 있다.At this time, the chunk mode transmission notification can be transmitted not only to the media device 300 that requested the segment file, but also to all media devices 300 that received the manifest file in step S127 of FIG. 7.

스트림 캐시 장치(225)는 캐싱되어 있는 청크 파일을 세션 풀 관리 장치(223)에게 전송한다(S157). 세션 풀 관리 장치(223)는 미디어 디바이스(300)에게 S143 단계에서 수신한 청크 파일을 전송한다(S159).The stream cache device 225 transmits the cached chunk file to the session pool management device 223 (S157). The session pool management device 223 transmits the chunk file received in step S143 to the media device 300 (S159).

이와 같이, 오리진 서버(100)는 콘텐츠 스트림을 세그먼트 파일 단위로 엣지 서버(220)로 전송한다. 이때, 세그먼트 파일이 미완성된 경우, 종래에는 완성될때까지 대기한 후 전송하였다. 그러나, 본 발명의 실시예에서는 미완성된 세그먼트 파일의 경우, 청크 파일 단위로 전송한다. In this way, the origin server 100 transmits the content stream to the edge server 220 in segment file units. At this time, if the segment file is incomplete, conventionally, it waits until it is completed and then transmits it. However, in the embodiment of the present invention, incomplete segment files are transmitted in chunk file units.

세그먼트 파일 캐싱과 청크 파일 캐싱을 구분해서 설명하였지만, 실제로는 이들 캐싱이 분리되지는 않는다. 청크 파일들이 결합되어 세그먼트 파일을 생성한다. 스트림 캐시 장치(225)는 완성된 세그먼트 파일을 오리진 서버(100)로부터 수신한 경우, 세그먼트 파일을 미디어 디바이스(300)에게 전송한다(S151). 스트림 캐시 장치(225)는 미완성된 세그먼트 파일을 미디어 디바이스(300)가 요청한 경우, 오리진 서버(100)로부터 청크 파일이 수신되는 대로, 수신된 청크 파일 단위로 미디어 디바이스(300)에게 전송한다(S159).Although segment file caching and chunk file caching are explained separately, in reality, these cachings are not separated. Chunk files are combined to create segment files. When the stream cache device 225 receives the completed segment file from the origin server 100, it transmits the segment file to the media device 300 (S151). When the media device 300 requests an unfinished segment file, the stream cache device 225 transmits the received chunk file to the media device 300 as soon as the chunk file is received from the origin server 100 (S159) ).

도 9는 다른 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 매니페스트 파일 전송 과정을 설명하는 도면이다.Figure 9 is a diagram illustrating a manifest file transmission process for a live broadcast service to which low-latency streaming caching is applied according to another embodiment.

도 9를 참조하면, 오리진 서버(100)는 생성 완료된 세그먼트 파일 및 생성중인 세그먼트 파일의 목록을 포함하는 매니페스트 파일을 생성한다(S201).Referring to FIG. 9, the origin server 100 creates a manifest file including a list of segment files that have been created and segment files that are being created (S201).

세션 풀 관리 장치(223)는 미디어 디바이스(300)와 HTTP 세션을 설립(S203)하고, 세션 ID를 발급한다.The session pool management device 223 establishes an HTTP session with the media device 300 (S203) and issues a session ID.

미디어 디바이스(300)는 엣지 서버(220)에게 HTTP/1.1 프로토콜을 이용하여 매니페스트 파일 요청을 전송한다(S205). S205 단계에서 GET 메소드를 사용하여 매니페스트 파일을 요청할 수 있다.The media device 300 transmits a manifest file request to the edge server 220 using the HTTP/1.1 protocol (S205). In step S205, you can request a manifest file using the GET method.

세션 풀 관리 장치(223)는 S205 단계의 매니페스트 파일 요청이 최초 요청일 경우, S205 단계에서 수신한 채널 ID, 파일 ID 및 세션 ID를 바인딩하여 세션 풀에 등록한다(S209).If the manifest file request in step S205 is the first request, the session pool management device 223 binds the channel ID, file ID, and session ID received in step S205 and registers them in the session pool (S209).

세션 풀 관리 장치(223)는 S205 단계에서 수신한 채널 ID에 매핑되는 스트림 캐시 장치(225)를 선택한다(S211).The session pool management device 223 selects the stream cache device 225 mapped to the channel ID received in step S205 (S211).

세션 풀 관리 장치(223)는 S211 단계에서 선택한 스트림 캐시 장치(225)에게 파일 읽기를 요청한다(S213). The session pool management device 223 requests the stream cache device 225 selected in step S211 to read a file (S213).

스트림 캐시 장치(225)는 S213 단계에서 읽기 요청된 파일이 캐싱된 파일인지를 판단한다(S215). The stream cache device 225 determines whether the file requested to be read in step S213 is a cached file (S215).

캐싱된 파일이 아니라면, 스트림 캐시 장치(225)는 채널 ID의 파일 요청 쓰레드를 생성한다(S217).If it is not a cached file, the stream cache device 225 creates a file request thread with the channel ID (S217).

스트림 캐시 장치(225)는 파일 요청 쓰레드를 실행하여, 채널 ID에 대한 매니페스트 파일 요청을 오리진 서버(100)에게 전송한다(S219). The stream cache device 225 executes a file request thread and transmits a manifest file request for the channel ID to the origin server 100 (S219).

이때, 스트림 캐시 장치(225)는 오리진 서버(100)와 HTTP/2 프로토콜을 이용하여 통신한다. 반면, 세션 풀 관리 장치(223)는 미디어 디바이스(300)와 HTTP/1.1 프로토콜을 이용하여 통신한다.At this time, the stream cache device 225 communicates with the origin server 100 using the HTTP/2 protocol. On the other hand, the session pool management device 223 communicates with the media device 300 using the HTTP/1.1 protocol.

스트림 캐시 장치(225)는 HTTP/2 GET 메소드를 이용하여 매니페스트 파일 요청을 오리진 서버(100)로 전송한다(S219).The stream cache device 225 transmits a manifest file request to the origin server 100 using the HTTP/2 GET method (S219).

오리진 서버(100)는 매니페스트 파일이 요청된 해당 채널에 대해 이후 미디어 디바이스(300)가 요청할 이미 수신해서 오리진 서버(100)에서 저장하고 있는 재생 세그먼트 목록과, 짧은 미래 시간(보통 지정한 시간 구간) 내에 생성 예정인 CMAF 세그먼트 목록을 포함하는 HTTP/2 스트림 목록을 포함하는 푸쉬 예약 메시지를 스트림 캐시 장치(225)에게 전송한다(S221). 이때, 푸쉬 예약 메시지는 HTTP/2의 PUSH_PROMISE 메소드가 사용될 수 있다.The origin server 100 includes a list of playback segments that the media device 300 has already received and stored in the origin server 100 for the corresponding channel for which the manifest file has been requested, and a list of playback segments that have already been received and stored in the origin server 100, within a short future time (usually a designated time period). A push reservation message containing an HTTP/2 stream list including a list of CMAF segments to be created is transmitted to the stream cache device 225 (S221). At this time, the PUSH_PROMISE method of HTTP/2 can be used for the push reservation message.

오리진 서버(100)는 요청받은 매니페스트 파일을 포함하는 HTTP/2 푸쉬 메시지를 스트림 캐시 장치(225)에게 전송한다(S223).The origin server 100 transmits an HTTP/2 push message including the requested manifest file to the stream cache device 225 (S223).

스트림 캐시 장치(225)는 매니페스트 파일을 스트림 캐시 스토리지(226)에 저장한다(S225).The stream cache device 225 stores the manifest file in the stream cache storage 226 (S225).

스트림 캐시 장치(225)는 매니페스트 파일을 세션 풀 관리 장치(223)로 전달한다(S227). The stream cache device 225 transmits the manifest file to the session pool management device 223 (S227).

세션 풀 관리 장치(223)는 매니페스트 파일을 미디어 디바이스(300)에게 전송한다(S229). 이때, 매니페스트 파일은 HTTP/1.1 GET 응답 메시지를 통해 미디어 디바이스(300)로 전송된다.The session pool management device 223 transmits the manifest file to the media device 300 (S229). At this time, the manifest file is transmitted to the media device 300 through an HTTP/1.1 GET response message.

도 10은 다른 실시예에 따른 저지연 스트리밍 캐싱이 적용된 라이브 방송 서비스를 위한 세그먼트 파일 전송 과정을 나타낸 흐름도로서, 도 9의 S229 단계 이후에 수행된다.Figure 10 is a flowchart showing a segment file transmission process for a live broadcast service with low-latency streaming caching according to another embodiment, which is performed after step S229 of Figure 9.

도 10을 참조하면, 오리진 서버(100)는 세그먼트 파일 생성이 완료되면(S231), 완성된 세그먼트 파일을 포함하는 푸쉬 메시지(HTTP/2 PUSH)를 스트림 캐시 장치(225)에게 전송한다(S233). 스트림 캐시 장치(225)는 푸쉬 메시지를 통해 수신한 세그먼트 파일을 스트림 캐스 스토리지(226)에 캐싱한다(S235).Referring to FIG. 10, when segment file creation is completed (S231), the origin server 100 transmits a push message (HTTP/2 PUSH) including the completed segment file to the stream cache device 225 (S233). . The stream cache device 225 caches the segment file received through the push message in the stream cast storage 226 (S235).

오리진 서버(100)는 세그먼트 파일의 생성이 완료되지 않은 경우, 생성된 청크 파일을 포함하는 푸쉬 메시지(HTTP/2 PUSH)를 스트림 캐시 장치(225)에게 전송한다(S237). 스트림 캐시 장치(225)는 푸쉬 메시지를 통해 수신한 청크 파일을 스트림 캐스 스토리지(226)에 캐싱한다(S239).If the creation of the segment file is not completed, the origin server 100 transmits a push message (HTTP/2 PUSH) including the generated chunk file to the stream cache device 225 (S237). The stream cache device 225 caches the chunk file received through the push message in the stream cast storage 226 (S239).

이때, S231 단계, S233 단계, S237 단계는 오리진 서버(100)에 의해 자발적으로 이루어진다. S231 단계, S237 단계에서 전송되는 파일들은 도 9의 S221 단계에서 예약된 파일 목록에 포함된 것이다.At this time, steps S231, S233, and S237 are voluntarily performed by the origin server 100. Files transmitted in steps S231 and S237 are included in the list of files reserved in step S221 of FIG. 9.

세션 풀 관리 장치(223)는 미디어 디바이스(300)로부터 세그먼트 파일 요청(HTTP/1.1 GET 요청)을 수신한다(S241).The session pool management device 223 receives a segment file request (HTTP/1.1 GET request) from the media device 300 (S241).

세션 풀 관리 장치(223)는 스트림 캐시 장치(225)에게 파일 읽기 요청(S243)을 전송한다.The session pool management device 223 transmits a file read request (S243) to the stream cache device 225.

스트림 캐시 장치(225)는 요청받은 파일이 완성된 세그먼트 파일인지 판단(S245)하고, 완성된 세그먼트 파일이면 캐싱(S235)된 세그먼트 파일을 세션 풀 관리 장치(223)로 전송한다(S247). The stream cache device 225 determines whether the requested file is a complete segment file (S245), and if it is a complete segment file, transmits the cached (S235) segment file to the session pool management device 223 (S247).

세션 풀 관리 장치(223)는 세그먼트 파일을 포함하는 응답 메시지(HTTP/1.1 GET 응답)를 미디어 디바이스(300)에게 전송한다(S249).The session pool management device 223 transmits a response message (HTTP/1.1 GET response) including a segment file to the media device 300 (S249).

스트림 캐시 장치(225)는 S245 단계에서 생성중인 세그먼트 파일로 판단되면, 세그먼트 파일 상태값(=생성중)을 세션 풀 관리 장치(223)로 리턴한다(S251). If the stream cache device 225 determines that the segment file is being created in step S245, it returns the segment file status value (=being created) to the session pool management device 223 (S251).

이 과정에서 엣지 서버(220)와 미디어 디바이스(300)의 구간의 DASH 스트리밍은 HTTP/2 방식을 지원하지 않기 때문에, 세션 풀 관리 장치(223)는 스트림 캐시 장치(225)의 응답에 따라 PUSH 예약된 목록에 대해 청크 전송 모드 응답을 미디어 디바이스(300)에게 전송한다(S253).In this process, since DASH streaming between the edge server 220 and the media device 300 does not support HTTP/2, the session pool management device 223 makes a PUSH reservation according to the response of the stream cache device 225. A chunk transmission mode response for the list is transmitted to the media device 300 (S253).

스트림 캐시 장치(225)는 캐싱(S239)된 청크 파일을 세션 풀 관리 장치(223)로 전송한다(S255). 세션 풀 관리 장치(223)는 미디어 디바이스(300)에게 청크 파일을 포함하는 응답 메시지(HTTP/1.1 GET 응답)를 전송한다(S257).The stream cache device 225 transmits the cached (S239) chunk file to the session pool management device 223 (S255). The session pool management device 223 transmits a response message (HTTP/1.1 GET response) including a chunk file to the media device 300 (S257).

이와 같이, 오리진 서버(100)는 엣지 서버(220)의 라이브 채널 방송 스트림 요청에 대해 HTTP PSUH_PROMISE를 응답해서, 해당 채널에서 생성할 세그먼트를 푸쉬(push) 방식으로 제공할 수 있다. 즉, S233 단계, S237 단계는 HTTP/2 푸쉬 방식으로 세그먼트 파일 또는 청크 파일이 전송된다.In this way, the origin server 100 can respond with HTTP PSUH_PROMISE to a live channel broadcast stream request from the edge server 220 and provide segments to be created in the corresponding channel in a push method. That is, in steps S233 and S237, a segment file or chunk file is transmitted using the HTTP/2 push method.

도 9 및 도 10을 참조하면, 저지연 스트림 캐싱 효율을 개선하기 위해서, 오리진 서버(100)와 스트림 캐시 장치(225) 사이에 HTTP/2 프로토콜 적용한다. 그리고 세션 풀 관리 장치(223) 및 스트림 전송부(222)와 미디어 디바이스(300) 간에는 HTTP/1.1 프로토콜을 적용한다.Referring to Figures 9 and 10, in order to improve low-latency stream caching efficiency, the HTTP/2 protocol is applied between the origin server 100 and the stream cache device 225. And the HTTP/1.1 protocol is applied between the session pool management device 223, the stream transmission unit 222, and the media device 300.

이처럼, 스트림 캐시 장치(225)와 세션 풀 관리 장치(223) 및 스트림 전송부(222)를 분리함으로써, 오리진 서버(100) ~ 엣지 서버(220) 간에, 그리고 엣지 서버(220) ~ 미디어 디바이스(300) 간에 전송 방식을 다르게 사용할 수 있다.In this way, by separating the stream cache device 225, the session pool management device 223, and the stream transmission unit 222, between the origin server 100 and the edge server 220, and between the edge server 220 and the media device ( 300), different transmission methods can be used.

HTTP/2 프로토콜은 연결 지향적인 방식으로 하나의 세션에서 TCP 소켓을 유지한 상태로 HTTP 요청을 처리 및 HTTPS handshaking을 한번만 처리하기 때문에 오리진 서버(100) ~ 엣지 서버(220) 간 짧은 세그먼트 단위 지속 전송과, 주기적인 매니페스트 갱신 요청에 트랜잭션을 효율적으로 처리할 수 있다. The HTTP/2 protocol is a connection-oriented method that processes HTTP requests and HTTPS handshaking only once while maintaining a TCP socket in one session, so continuous transmission is performed in short segments between the origin server (100) and the edge server (220). And, transactions can be efficiently processed in response to periodic manifest update requests.

도 11은 다른 실시예에 따른 라이브 방송 스트림의 전송 단위를 설명하는 도면으로서, HTTP/2 전송 단위와 HTTP/1.1 전송 단위를 설명한다.FIG. 11 is a diagram illustrating a transmission unit of a live broadcast stream according to another embodiment, and explains an HTTP/2 transmission unit and an HTTP/1.1 transmission unit.

도 11을 참조하면, 오리진 서버(100)는 콘텐츠 서버(도 1의 400)에서 수신하는 방송 소스를 세그먼트 파일(P10) 단위로 생성한다. 하나의 세그먼트 파일은 복수의 청크 파일로 구성된다.Referring to FIG. 11, the origin server 100 generates broadcast sources received from the content server (400 in FIG. 1) in segment files (P10). One segment file consists of multiple chunk files.

이때, HTTP/2 프로토콜의 전송 단위(P20)는 스트림과 프레임 데이터 구조를 정의하여 하나의 HTTP 세션을 이용한 멀티플렉싱(multiplexing) 기능을 제공하고 있다. 즉, 오리진 서버(100)와 엣지 서버(220) 구간에는 세그먼트 파일 또는 청크 파일이 HTTP/2 멀티플렉싱 스트림 프레임의 데이터 구간에 포함되어 전송된다. 즉, 세그먼트 파일 또는 청크 파일은 HTTP Stream 내 DATA (프레임) 단위로 전송한다. 이와 같은 방법으로 HTTP 요청 트랜잭션 없이 수십 ms 단위의 sub-GOP 크기의 미디어 프레임을 최소한의 지연으로 전송할 수 있다. At this time, the transmission unit (P20) of the HTTP/2 protocol defines the stream and frame data structures to provide a multiplexing function using one HTTP session. That is, between the origin server 100 and the edge server 220, a segment file or chunk file is transmitted and included in the data section of the HTTP/2 multiplexed stream frame. In other words, segment files or chunk files are transmitted in DATA (frame) units within the HTTP Stream. In this way, media frames of sub-GOP sizes of tens of ms can be transmitted with minimal delay without an HTTP request transaction.

엣지 서버(220)와 미디어 디바이스(300) 간에는 HTTP/1.1 청크 전송 단위(P30)가 미완성된 청크 파일의 전송에 사용된다.일반적인 HTTP 파일 서버는 FIFO(First-In First-Out) 방식으로 요청을 처리한다. 하지만, 저지연 채널 스트리밍을 구현할 때는 세그먼트 속성에 따라 전송하는 우선 순위가 달라지기 때문에 단순히 FIFO 방식으로 전송하면 미디어 디바이스(300)의 요청에 대한 처리 성능이 저하되는 문제가 있다. Between the edge server 220 and the media device 300, an HTTP/1.1 chunk transmission unit (P30) is used to transmit incomplete chunk files. A typical HTTP file server makes requests in a First-In First-Out (FIFO) manner. Process it. However, when implementing low-latency channel streaming, since the transmission priority varies depending on segment properties, there is a problem that processing performance for requests from the media device 300 deteriorates if transmission is simply performed using the FIFO method.

특히, 저지연 캐싱을 위해서 빈번하게 응답 지연을 처리해야 하는 상황에서 FIFO 방식의 캐싱 및 응답 처리는 서버 용량에 따라 전체 요청에 대한 응답을 지연시키는 것과 서버 부하를 증가시키는 요인이 된다. 따라서, 본 발명의 실시예에서는 전송 대역폭이 제한된 상황에서 효율적인 전송 큐 관리 방법을 제안한다. 이에 대해 설명하면 도 12와 같다.In particular, in situations where response delays must be frequently processed for low-latency caching, FIFO-based caching and response processing delays responses to all requests depending on server capacity and increases server load. Therefore, an embodiment of the present invention proposes an efficient transmission queue management method in a situation where transmission bandwidth is limited. This is explained in Figure 12.

도 12는 실시예에 따른 전송 큐 관리 방법을 설명하는 도면이다.도 12를 참조하면, 세션 풀 관리 장치(도 5의 223)는 세그먼트 혹은 매니페스트 파일에 따라 요청 대기 큐(queue)를 구분한다.FIG. 12 is a diagram illustrating a transmission queue management method according to an embodiment. Referring to FIG. 12, the session pool management device (223 in FIG. 5) divides request waiting queues according to segments or manifest files.

요청 대기 큐는 가장 상위의 순위를 가지는 Top Queue, 가장 하위의 순위를 가지는 Low Queue, 중간 순위를 가지는 Middle Queue를 포함한다.The request waiting queue includes Top Queue with the highest rank, Low Queue with the lowest rank, and Middle Queue with the middle rank.

Top Queue는 매니페스트 파일 요청이 될 수 있다. 즉, 매니페스트 파일 요청에 가장 가중치를 두어 우선처리되도록 한다.Top Queue can be a manifest file request. In other words, the manifest file request is given the most weight and is given priority.

Middle Queue는 이미 생성이 완료된 세그먼트 파일 요청이 될 수 있다. Middle Queue can be a segment file request that has already been created.

Low Queue는 생성 중인 세그먼트 요청이 될 수 있다. 즉, 아직 생성중인 세그먼트 요청에 대해 가장 늦게 처리할 수 있다.Low Queue can be a segment request being created. In other words, segment requests that are still being created can be processed at the latest.

저지연 스트리밍에서 요청 유형은 재생 시작을 위한 매니페스트 요청, 초기 재생 버퍼를 채우기 위해 지나간 시간에 대한 세그먼트 요청, 현재 시각의 세그먼트 요청으로 나눌 수 있다. 이 중에서 3번째인 현재 시각의 세그먼트에 대한 전송 요청은 플레이어 버퍼를 어느정도 채운 상태이기 때문에 매니페스트 파일이나 완성된 세그먼트에 대한 요청보다는 가중치를 낮추어 처리하는 것이 엔드 유저 디바이스(300)의 요청에 지연을 최소화 하면서 엣지 서버 리소스 사용률을 높일 수 있다.In low-latency streaming, request types can be divided into manifest requests to start playback, segment requests for elapsed time to fill the initial playback buffer, and segment requests for the current time. Among these, the third request to transmit a segment at the current time has filled the player buffer to some extent, so processing it with a lower weight than a request for a manifest file or a completed segment minimizes the delay in the request from the end user device 300. This can increase edge server resource utilization.

이상 기재한 바와 같이, 도 4에서와 같은 방식은 미완성된 청크 파일이 수신될때까지 EoF 수신 대기 시간이 지연으로 발생하는 반면, 도 5 ~ 도 12에서와 같은 방식은 완성된 세그먼트 파일 뿐만 아니라 미완성된 세그먼트 파일(청크 파일)도 HTTP 푸쉬 방식으로 엣지 서버(220)가 미리 수신하여 캐싱하고, 미디어 디바이스(300)의 요청이 있으면 전송하므로, 지연을 최소화할 수 있다.As described above, the method shown in FIG. 4 causes a delay in EoF reception waiting time until an incomplete chunk file is received, while the method shown in FIGS. 5 to 12 uses not only the completed segment file but also the unfinished segment file. Segment files (chunk files) are also received and cached in advance by the edge server 220 using the HTTP push method, and are transmitted upon request from the media device 300, thereby minimizing delay.

이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.The embodiments of the present invention described above are not only implemented through devices and methods, but can also be implemented through programs that implement functions corresponding to the configurations of the embodiments of the present invention or recording media on which the programs are recorded.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements can be made by those skilled in the art using the basic concept of the present invention defined in the following claims. It falls within the scope of rights.

Claims (12)

적어도 하나의 프로세서에 의해 동작하는 엣지 서버가 저지연 스트리밍 캐싱을 제공하는 방법으로서,
제1 미디어 디바이스로부터 요청받은 매니페스트(manifest) 파일의 파일 ID 및 채널 ID를 세션 풀에 등록하고, 상기 파일 ID 및 채널 ID에 대응하는 파일 요청 쓰레드를 실행하여 오리진 서버로부터 상기 매니페스트 파일을 수신하여 저장하는 단계,
상기 파일 요청 쓰레드(thread)를 통해 상기 오리진 서버에게 세그먼트 파일을 요청하고 상기 오리진 서버로부터 수신한 세그먼트 파일을 캐싱하는 단계,
상기 제1 미디어 디바이스와 다른 제2 미디어 디바이스로부터 매니페스트 파일 요청을 수신하는 단계,
수신한 매니페스트 파일 요청의 파일 ID와 채널 ID가 상기 세션 풀에 등록되어 있으면, 상기 저장되어 있는 매니페스트 파일을 상기 제2 미디어 디바이스에게 전송하는 단계,
상기 제2 미디어 디바이스로부터 세그먼트 파일 요청을 수신하는 단계, 그리고
상기 제2 미디어 디바이스에게 상기 파일 요청 쓰레드를 통해 캐싱되어 있는 세그먼트 파일을 전송하는 단계를 포함하고,
상기 세그먼트 파일을 캐싱하는 단계는,
상기 제1 미디어 디바이스 또는 상기 제2 미디어 디바이스로부터 세그먼트 파일 요청을 수신하기 전에 상기 엣지 서버에 의해 자발적으로(autonomously) 이루어지는, 방법.
A method in which an edge server operating by at least one processor provides low-latency streaming caching,
Register the file ID and channel ID of the manifest file requested from the first media device in the session pool, execute a file request thread corresponding to the file ID and channel ID, and receive and store the manifest file from the origin server. steps to do,
Requesting a segment file from the origin server through the file request thread and caching the segment file received from the origin server,
Receiving a manifest file request from a second media device different from the first media device,
If the file ID and channel ID of the received manifest file request are registered in the session pool, transmitting the stored manifest file to the second media device,
Receiving a segment file request from the second media device, and
Transmitting a cached segment file to the second media device through the file request thread,
The step of caching the segment file is,
A method performed autonomously by the edge server prior to receiving a segment file request from the first media device or the second media device.
제1항에서,
상기 캐싱하는 단계는,
채널 단위로 생성된 파일 요청 쓰레드(thread)를 각각 실행하여 채널 별로 매니페스트 파일의 목록에 포함된 세그먼트 파일을 오리진 서버에게 요청하여 수신하고, 채널 별로 세그먼트 파일을 캐싱하는, 방법.
In paragraph 1:
The caching step is,
A method of executing each file request thread created for each channel to request and receive segment files included in the list of manifest files for each channel from the origin server, and caching the segment files for each channel.
제2항에서,
상기 매니페스트 파일은,
생성이 완료된 세그먼트 파일의 목록 및 생성중인 세그먼트 파일의 목록을 포함하고,
상기 캐싱하는 단계는,
상기 생성이 완료된 세그먼트 파일을 수신하여 캐싱하고, 상기 생성중인 세그먼트 파일을 청크 단위로 수신하여 캐싱하며,
상기 세그먼트 파일 요청을 수신하는 단계 이후,
요청된 세그먼트 파일이 생성중인 파일이면, 상기 제2 미디어 디바이스에게 청크 모드 전송 알림을 전송하는 단계, 그리고
세그먼트 파일의 수신을 대기하지 않고 캐싱된 청크 파일을 상기 제2 미디어 디바이스에게 전송하는 단계
를 더 포함하는, 방법.
In paragraph 2,
The manifest file is,
Contains a list of segment files that have been created and a list of segment files that are being created,
The caching step is,
Receiving and caching the segment file that has been created, receiving and caching the segment file being created in chunk units,
After receiving the segment file request,
If the requested segment file is a file being created, transmitting a chunk mode transmission notification to the second media device, and
Transmitting a cached chunk file to the second media device without waiting to receive a segment file
A method further comprising:
삭제delete 삭제delete 적어도 하나의 프로세서에 의해 동작하는 엣지 서버가 저지연 스트리밍 캐싱을 제공하는 방법으로서,
제1 미디어 디바이스로부터 요청받은 매니페스트(manifest) 파일의 파일 ID 및 채널 ID를 세션 풀에 등록하고, 상기 파일 ID 및 채널 ID에 대응하는 파일 요청 쓰레드를 실행하여 오리진 서버로부터 상기 매니페스트 파일을 수신하여 저장하는 단계,
상기 오리진 서버로부터 상기 오리진 서버에 의한 푸쉬 방식으로 상기 매니페스트 파일의 목록에 포함된 세그먼트 파일을 수신하여 캐싱하는 단계,
상기 제1 미디어 디바이스와 다른 제2 미디어 디바이스로부터 매니페스트 파일 요청을 수신하는 단계,
수신한 매니페스트 파일 요청의 파일 ID와 채널 ID가 상기 세션 풀에 등록되어 있으면, 상기 저장되어 있는 매니페스트 파일을 상기 제2 미디어 디바이스에게 전송하는 단계,
상기 제2 미디어 디바이스로부터 세그먼트 파일 요청을 수신하는 단계, 그리고
상기 제2 미디어 디바이스에게 캐싱된 세그먼트 파일을 전송하는 단계
를 포함하는, 방법.
A method in which an edge server operating by at least one processor provides low-latency streaming caching,
Register the file ID and channel ID of the manifest file requested from the first media device in the session pool, execute a file request thread corresponding to the file ID and channel ID, and receive and store the manifest file from the origin server. steps to do,
Receiving and caching a segment file included in the list of the manifest file from the origin server through a push method by the origin server,
Receiving a manifest file request from a second media device different from the first media device,
If the file ID and channel ID of the received manifest file request are registered in the session pool, transmitting the stored manifest file to the second media device,
Receiving a segment file request from the second media device, and
Transmitting the cached segment file to the second media device
Method, including.
제6항에서,
상기 매니페스트 파일을 수신하여 저장하는 단계와 상기 캐싱하는 단계 사이에,
상기 오리진 서버로부터 푸쉬 대상인 파일 목록을 포함하는 푸쉬 예약 메시지를 수신하는 단계를 더 포함하고,
상기 캐싱하는 단계는,
상기 푸쉬 예약 메시지의 목록에 포함된 세그먼트 파일들을 포함하는 푸쉬 메시지를 상기 오리진 서버로부터 수신하는, 방법.
In paragraph 6:
Between receiving and storing the manifest file and caching the manifest file,
Further comprising receiving a push reservation message including a list of files to be pushed from the origin server,
The caching step is,
A method of receiving a push message including segment files included in the list of the push reservation messages from the origin server.
제7항에서,
상기 푸쉬 예약 메시지 및 상기 푸쉬 메시지는,
HTTP/2(Hypertext Transfer Protocol Version 2)의 스트림 내 데이터 단위로 수신되는, 방법.
In paragraph 7:
The push reservation message and the push message are,
A method of receiving data as a unit within a stream of HTTP/2 (Hypertext Transfer Protocol Version 2).
오리진 서버로부터 자신에게 할당된 채널의 매니페스트(manifest) 파일 및 세그먼트 파일을 수신하여 캐싱하는 적어도 하나의 스트림 캐시 장치, 그리고
상기 적어도 하나의 스트림 캐시 장치 중에서 미디어 디바이스들이 요청한 파일의 채널에 해당하는 스트림 캐시 장치에게 파일을 요청하고, 상기 스트림 캐시 장치로부터 매니페스트 파일 및 세그먼트 파일을 수신하여 상기 미디어 디바이스들에게 전송하는 세션 풀 관리 장치를 포함하고,
상기 적어도 하나의 스트림 캐시 장치는,
상기 세션 풀 관리 장치의 요청 없이도 자발적으로(autonomously) 상기 할당된 채널의 매니페스트 파일에 기초하여 상기 오리진 서버로부터 세그먼트 파일을 미리 수신하여 캐싱하며,
상기 세션 풀 관리 장치는,
제1 미디어 디바이스로부터 요청받은 매니페스트 파일의 정보를 세션 풀에 등록하고, 상기 등록한 정보를 기초로 상기 스트림 캐시 장치로부터 수신한 매니페스트 파일을 상기 제1 미디어 디바이스에게 전송하고,
상기 제1 미디어 디바이스와 다른 제2 미디어 디바이스로부터 매니페스트 파일 요청이 수신되면, 수신한 매니페스트 파일 요청의 정보가 상기 세션 풀에 등록되어 있는지 확인하여 등록되어 있으면, 상기 등록된 정보를 기초로 상기 스트림 캐시 장치로부터 상기 스트림 캐시 장치에 저장되어 있는 매니페스트 파일을 수신하여 상기 제2 미디어 디바이스에게 전송하며,
상기 제2 미디어 디바이스로부터 전송한 매니페스트 파일의 목록에 포함된 세그먼트 파일 요청이 수신되면, 상기 스트림 캐시 장치로부터 캐싱되어 있는 세그먼트 파일을 수신하여 상기 제2 미디어 디바이스에게 전송하는, 엣지 서버.
At least one stream cache device that receives and caches the manifest file and segment file of the channel assigned to it from the origin server, and
Session pool management for requesting a file from a stream cache device corresponding to a channel of a file requested by media devices among the at least one stream cache device, receiving a manifest file and segment file from the stream cache device, and transmitting the file to the media devices. Includes a device,
The at least one stream cache device,
Receiving and caching a segment file in advance from the origin server based on the manifest file of the allocated channel autonomously without a request from the session pool management device,
The session pool management device,
Registering the information of the manifest file requested from the first media device in the session pool, and transmitting the manifest file received from the stream cache device to the first media device based on the registered information,
When a manifest file request is received from a second media device different from the first media device, check whether the information of the received manifest file request is registered in the session pool, and if registered, the stream cache based on the registered information Receiving a manifest file stored in the stream cache device from a device and transmitting it to the second media device,
An edge server that receives a segment file cached from the stream cache device and transmits it to the second media device when a request for a segment file included in the list of manifest files transmitted from the second media device is received.
제9항에서,
상기 세션 풀 관리 장치는,
복수의 미디어 디바이스로부터 수신한 매니페스트 파일 요청을 세션 풀에 등록하고,
상기 적어도 하나의 스트림 캐시 장치는,
상기 세션 풀에 등록되지 않은 매니페스트 파일 요청이 상기 세션 풀 관리 장치로부터 전달되면, 파일 요청 쓰레드(thread)를 생성하고,
상기 파일 요청 쓰레드는,
상기 오리진 서버로 상기 매니페스트 파일의 요청 및 상기 세그먼트 파일의 요청을 실행하며,
상기 세션 풀은,
채널 정보, 파일 정보 및 미디어 디바이스와 맺은 세션 정보를 상호 매핑하여 저장한 것인, 엣지 서버.
In paragraph 9:
The session pool management device,
Register manifest file requests received from multiple media devices in the session pool,
The at least one stream cache device,
When a manifest file request that is not registered in the session pool is delivered from the session pool management device, a file request thread is created,
The file request thread is,
Executing a request for the manifest file and a request for the segment file to the origin server,
The session pool is,
An edge server that maps and stores channel information, file information, and session information established with media devices.
제9항에서,
상기 세션 풀 관리 장치는,
복수의 미디어 디바이스로부터 수신한 매니페스트 파일 요청을 세션 풀에 등록하고,
상기 적어도 하나의 스트림 캐시 장치는,
상기 세션 풀에 등록되지 않은 매니페스트 파일 요청이 상기 세션 풀 관리 장치로부터 전달되면, 상기 오리진 서버로 매니페스트 파일 요청을 전송하여 상기 오리진 서버로부터 매니페스트 파일을 수신하고,
상기 오리진 서버로부터 푸쉬 방식으로 상기 매니페스트 파일에 정의된 세그먼트 파일을 수신하여 캐싱하는, 엣지 서버.
In paragraph 9:
The session pool management device,
Register manifest file requests received from multiple media devices in the session pool,
The at least one stream cache device:
When a manifest file request that is not registered in the session pool is delivered from the session pool management device, transmitting a manifest file request to the origin server to receive a manifest file from the origin server,
An edge server that receives the segment file defined in the manifest file from the origin server through a push method and caches it.
제11항에서,
상기 적어도 하나의 스트림 캐시 장치는,
세그먼트 파일 또는 청크 파일이 각각 포함된 복수의 데이터가 멀티플렉싱된 스트림을 상기 오리진 서버로부터 수신하고,
상기 세션 풀 관리 장치는,
상기 적어도 하나의 스트림 캐시 장치에 캐싱된 세그먼트 파일 또는 청크 파일을 미디어 디바이스에게 전송하는, 엣지 서버.
In paragraph 11:
The at least one stream cache device:
Receiving a stream in which a plurality of data, each containing a segment file or chunk file, is multiplexed, from the origin server,
The session pool management device,
An edge server that transmits a segment file or chunk file cached in the at least one stream cache device to a media device.
KR1020200088448A 2020-07-16 2020-07-16 Method and edge server for low-latency streaming caching KR102595338B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200088448A KR102595338B1 (en) 2020-07-16 2020-07-16 Method and edge server for low-latency streaming caching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200088448A KR102595338B1 (en) 2020-07-16 2020-07-16 Method and edge server for low-latency streaming caching

Publications (2)

Publication Number Publication Date
KR20220009801A KR20220009801A (en) 2022-01-25
KR102595338B1 true KR102595338B1 (en) 2023-10-26

Family

ID=80049095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200088448A KR102595338B1 (en) 2020-07-16 2020-07-16 Method and edge server for low-latency streaming caching

Country Status (1)

Country Link
KR (1) KR102595338B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160182600A1 (en) * 2014-12-23 2016-06-23 Adobe Systems Incorporated Reducing requests for media segments in streaming of multimedia content
US20200077161A1 (en) * 2017-05-16 2020-03-05 Telefonaktiebolaget Lm Ericsson (Publ) Low latency media ingestion system, devices and methods

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160182600A1 (en) * 2014-12-23 2016-06-23 Adobe Systems Incorporated Reducing requests for media segments in streaming of multimedia content
US20200077161A1 (en) * 2017-05-16 2020-03-05 Telefonaktiebolaget Lm Ericsson (Publ) Low latency media ingestion system, devices and methods

Also Published As

Publication number Publication date
KR20220009801A (en) 2022-01-25

Similar Documents

Publication Publication Date Title
JP6918910B2 (en) Media data provision method, media data reception method, and program
US10826960B2 (en) System and method for optimized delivery of live ABR media
US11477262B2 (en) Requesting multiple chunks from a network node on the basis of a single request message
RU2627303C2 (en) System and method for adaptive streaming in medium with several transmitting paths
KR102472155B1 (en) How to Broadcast Streaming Content in a Peer to Peer (P2P) Network
US6708213B1 (en) Method for streaming multimedia information over public networks
US20130117413A1 (en) Content distribution device, content playback device, content distribution system, method for controlling a content distribution device, control program, and recording medium
CN112055972A (en) Supplemental content insertion using differential media presentation description for video streaming
US20140095593A1 (en) Method and apparatus for transmitting data file to client
KR20150120951A (en) Low-latency streaming
US20160269801A1 (en) System and method for optimized delivery of live abr media
GB2528672A (en) Push-based transmission of resources and correlated network quality estimation
CN112511871B (en) Packer for flow of sectionalizer
JP2012520004A (en) Method and apparatus for prioritization in a peer-to-peer network
US10687106B2 (en) System and method for distributed control of segmented media
CN110086797B (en) Real-time receiving method of media stream, client, computer device and storage medium
US20230224548A1 (en) Streaming Assistance System and Computer-Implemented Method
CN110431848B (en) Content providing system, content providing method, and program
KR102595338B1 (en) Method and edge server for low-latency streaming caching
CN111193686B (en) Media stream delivery method and server
US9386056B1 (en) System, method and computer readable medium for providing media stream fragments
RU2658860C2 (en) Proxy-server device, information processing method, program, terminal device and content provision system
CN110545492B (en) Real-time delivery method and server of media stream
Li et al. Internet multimedia content distribution
KR101525390B1 (en) Apparatus and Control Method for Session and Transmission Distribution on the File Seek Request

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