KR20240031771A - 콘텐츠 스트리밍을 위한 방법 및 장치 - Google Patents

콘텐츠 스트리밍을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20240031771A
KR20240031771A KR1020220110976A KR20220110976A KR20240031771A KR 20240031771 A KR20240031771 A KR 20240031771A KR 1020220110976 A KR1020220110976 A KR 1020220110976A KR 20220110976 A KR20220110976 A KR 20220110976A KR 20240031771 A KR20240031771 A KR 20240031771A
Authority
KR
South Korea
Prior art keywords
segments
server
player
protocol
initial
Prior art date
Application number
KR1020220110976A
Other languages
English (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 KR1020220110976A priority Critical patent/KR20240031771A/ko
Publication of KR20240031771A publication Critical patent/KR20240031771A/ko

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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26233Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving content or additional data duration or size, e.g. length of a movie, size of an executable file
    • 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/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • 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/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • 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
    • 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/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/6473Monitoring network processes errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

콘텐츠 스트리밍을 위한 방법 및 장치를 개시한다.
본 발명의 일 측면에 의하면, 스트리밍 콘텐츠 전달을 위한 컴퓨터 구현 방법 및 장치에 있어서, 플레이어로부터 전송된 스트리밍 콘텐츠에 관한 요청을 제1 서버에 전송하는 단계 - 상기 요청은 초기 재생 구간에 대응하는 세그먼트들의 개수를 포함함 -; 상기 제1 서버로부터 제1 프로토콜을 이용하여 상기 초기 재생 구간에 대응되는 세그먼트들을 수신하는 단계 - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -; 상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하는 단계; 상기 요청에 대한 응답으로서, 정렬된 세그먼트들을 상기 플레이어에게 전송하는 단계를 포함하는 방법 및 장치를 제공한다.

Description

콘텐츠 스트리밍을 위한 방법 및 장치{Method and Device for Content Streaming}
본 발명의 실시예들은 콘텐츠 스트리밍을 위한 방법 및 장치, 특히 초기 재생 지연을 최소화할 수 있는 적응형(adaptive) 데이터 스트리밍 방법 및 장치에 관한 것이다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
유선 및 무선 네트워크 기술이 발전하면서 스마트폰 또는 태블릿 PC 등의 고성능의 모바일 디바이스들이 보급되고 있다. 사용자들은 모바일 디바이스들을 통해 오디오, 비디오, 및 텍스트의 스트리밍 같은 콘텐츠 스트리밍 서비스를 이용한다. 스트리밍 서비스의 이용이 증가함에 따라, 스트리밍 방식으로 콘텐츠를 제공하는 OTT(Over-The Top) 서비스 제공자들 및 스트리밍 플랫폼들이 증가하고 있다.
여기서, 스트리밍 방식은 미디어 데이터의 재생 전에 전체 미디어 데이터를 미리 전송하는 것이 아니라, 전체 미디어 데이터의 일부들을 네트워크를 통해 클라이언트 장치에 제공함으로써, 미디어 데이터의 재생과 전송이 동시에 수행되는 데이터 전송 방식을 나타낸다. 클라이언트 장치는 파일 전체의 전송이 완료될 때까지 기다리지 않고, 서버로부터 스트리밍 콘텐츠 중 재생하기 위해 필요한 일부만 수신되면 일부에 대해 렌더링을 수행한다.
종래의 서버와 클라이언트 장치는 스트리밍 콘텐츠에 해당하는 세그먼트들을 TCP(Transmission Control Protocol) 연결을 통해 전송하므로, TCP 방식에 따른 시간 지연 문제점을 가진다. 예를 들면, TCP에 따른 시간 지연은 TCP 연결 수립을 위한 3-Way Handshake 지연, 느린 시작(Slow-Start)에 따른 지연, 또는 합증가곱감소(Additive Increase Multiplicative Decrease; AIMD)에 따른 지연 등을 포함한다.
나아가, TCP를 통해 연결된 서버와 클라이언트 장치는 송신할 수 있는 패킷양을 점진적으로 증가시키기 때문에, 초기 연결 구간에서 사용 가능한 최대 대역폭이 모두 활용되지 못한다는 문제점이 있다.
따라서, 스트리밍 서비스에서 서버와 클라이언트 간 TCP 연결에 따른 초기 재생 지연을 줄이고 대역폭 이용률을 높일 수 있는 방안에 관한 연구가 필요하다.
이러한 재생 지연을 줄이기 위해, TCP 대신 UDP를 이용하는 콘텐츠 스트리밍이 논의되고 있다.
UDP 방식은 서버-클라이언트 간 세션 연결 수립 없이, 전송하려는 데이터를 데이터 패킷들로 분할하여 최선 노력(Best-Effort) 방식으로 전송한다. 하지만, UDP 방식은 데이터 패킷들을 데이터 패킷들의 순서에 상관없이 전송하기 때문에, 클라이언트는 수신한 데이터 패킷들을 정렬할 수 없다는 문제점이 있다.
또한, TCP 방식과 달리 UDP 방식에 의하면, 데이터의 전송 과정에서 데이터에 오류가 발생하더라도 클라이언트는 오류를 검출하거나 정정할 수 없다는 문제점이 있다.
본 발명의 실시예들은, HTTP에 따른 TCP 방식의 세션 수립으로 인한 초기 재생 지연 문제를 해결하기 위해 UDP를 채용하는 콘텐츠 스트리밍을 위한 방법 및 장치를 제공하는 데 주된 목적이 있다.
본 발명의 다른 실시예들은, 초기 재생 구간 동안 UDP를 통해 스트리밍 콘텐츠의 세그먼트들이 제공될 때, UDP 방식의 세그먼트 정렬 문제, 오류 정정 불가 문제, 대역폭 활용 문제를 해결 가능한 콘텐츠 스트리밍을 위한 방법 및 장치를 제공하는 데 일 목적이 있다.
본 발명의 일 측면에 의하면, 스트리밍 콘텐츠 전달을 위한 장치에 있어서, 명령어들을 저장하는 메모리; 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써, 플레이어로부터 전송된 스트리밍 콘텐츠에 관한 요청을 제1 서버에 전송하고, - 상기 요청은 초기 재생 구간에 대응하는 세그먼트들의 개수를 포함함 -; 상기 제1 서버로부터 제1 프로토콜을 이용하여 상기 초기 재생 구간에 대응되는 세그먼트들을 수신하고, - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -; 상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하고, 상기 요청에 대한 응답으로서, 정렬된 세그먼트들을 상기 플레이어에게 전송하는, 장치를 제공한다.
본 실시예의 다른 측면에 의하면, 스트리밍 콘텐츠 제공을 위한 클라이언트 장치에 있어서, 명령어들을 저장하는 메모리; 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써, 사용자의 입력에 대응하여, 초기 재생 구간 동안 수신할 세그먼트들의 개수를 포함하는 스트리밍 콘텐츠에 관한 요청을 서버에 전송하고, 상기 서버로부터 제1 프로토콜을 이용하여 상기 세그먼트들을 수신하고, - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -; 상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하고, 정렬된 세그먼트들에 포함된 콘텐츠를 재생하는, 클라이언트 장치를 제공한다.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 의하면, TCP의 연결 프로세스를 수행하지 않는 UDP를 이용함으로써, TCP의 연결 프로세스에 따른 초기 재생 지연을 줄일 수 있고, 빠른 초기 재생으로 인해 사용자 경험을 개선시킬 수 있다.
본 발명의 다른 실시예에 의하면, 서버와 플레이어 사이에서 프록시 서버가 스트리밍 콘텐츠에 관한 세그먼트들에 포함된 시퀀스 번호들에 기초하여 UDP를 통해 수신된 세그먼트들을 순서에 따라 정렬할 수 있다.
본 발명의 다른 실시예에 의하면, UDP를 통해 수신된 세그먼트들에 오류가 발생하더라도, 세그먼트들에 포함된 부가적 정보를 이용하여 오류를 검출하고 정정할 수 있다.
본 발명의 다른 실시예에 의하면, TCP와 달리, Slow-Start 및 AIMD에 관한 알고리즘을 수행하지 않는 UDP를 이용함으로써, 대역폭 이용률을 개선할 수 있다.
도 1은 서버와 클라이언트 간 네트워크 연결 구조를 나타내는 도면이다.
도 2는 TCP의 3-Way Handshake에 따른 시간 지연을 설명하기 위한 도면이다.
도 3은 TCP의 Slow-Start 및 AIMD에 따른 시간 지연을 설명하기 위한 그래프이다.
도 4는 TCP를 통해 연결된 서버와 클라이언트의 블록도이다.
도 5는 본 발명의 일 실시예에 따른 서버와 클라이언트의 구성도이다.
도 6은 본 발명의 일 실시예에 따른 서버 및 클라이언트를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 프록시 서버의 동작 방법을 나타낸 순서도다.
도 8은 본 발명의 일 실시예에 따른 클라이언트 장치의 동작 방법을 나타낸 순서도다.
이하, 본 개시의 일부 실시예들을 예시적인 도면을 이용해 상세하게 설명한다. 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 개시에 따른 실시예의 구성요소를 설명하는 데 있어서, 제1, 제2, i), ii), a), b) 등의 부호를 사용할 수 있다. 이러한 부호는 그 구성요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 부호에 의해 해당 구성요소의 본질 또는 차례나 순서 등이 한정되지 않는다. 명세서에서 어떤 부분이 어떤 구성요소를 '포함' 또는 '구비'한다고 할 때, 이는 명시적으로 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 발명에 따른 장치 또는 방법의 각 구성요소는 하드웨어 또는 소프트웨어로 구현되거나, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 각 구성요소의 기능이 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.
도 1은 서버와 클라이언트 간 네트워크 연결 구조를 나타내는 도면이다.
도 1을 참조하면, OSI 참조 모델 7계층(Open Systems Interconnection Reference Model 7 Layers) 중 일부 계층들에서 클라이언트 장치(110)와 서버(120)가 연결된 방식이 도시되어 있다. 특히, 클라이언트 장치(110)와 서버(120)는 애플리케이션 계층에서 HTTP(Hyper Text Transfer Protocol)를 통해 연결되고, 전송 계층에서 TCP를 통해 연결된다.
사용자마다 가용 대역폭이 다른 클라이언트 장치(110) 환경 상에서 안정적인 스트리밍을 위해, 서버(120)에 해당하는 스트리밍 플랫폼들은 HTTP 연결 상에서 미디어 콘텐츠 전송을 수행하는 HAS (HTTP Adaptive Streaming) 기술을 이용한다. HAS 기술의 예로서, HLS(HTTP Live Streaming)와 DASH(Dynamic Adaptive Streaming over HTTP)가 있다.
HAS 방식에 따르면, 클라이언트 장치(110)는 미디어 콘텐츠에 대한 플레이리스트 파일을 서버(120)에 요청한다. 스트리밍 콘텐츠는 사용자가 재생하려고 하는 오디오 콘텐츠, 비디오 콘텐츠, 텍스트 콘텐츠 등을 나타낸다. 플레이리스트 파일은 미디어 콘텐츠의 다양한 재생 품질들 각각에 대응되는 URL 목록들과 세그먼트의 비트 수에 관한 정보를 포함한다. 서버(120)는 미디어 콘텐츠를 네트워크 상으로 쪼개어 전송하기 위해 패킷화된 세그먼트들에 대한 품질별 URL 목록이 포함된 플레이리스트 파일을 전송한다. 다른 예에서, 서버(120)는 품질별 플레이리스트 파일들을 참조하는 매니페스트 파일을 클라이언트 장치(110)에게 전송할 수 있다. 여기서, 미디어 콘텐츠에 대해 플레이리스트 파일들이 품질 별로 계층적으로 참조되는 구조로 구성될 수 있다. 한편, 클라이언트 장치(110)는 URL 목록들을 참조함으로써, 목표 품질을 갖는 세그먼트들 또는 미디어 콘텐츠를 스트리밍할 수 있다.
HAS 방식은 서버(120)와 클라이언트 장치(110) 간 단일 HTTP 연결 및 단일 TCP 연결에 기반한다. 서버(120)와 클라이언트 장치(110)는 TCP를 이용하여 세그먼트들을 주고 받는다.
서버(120)와 클라이언트 장치(110)가 TCP 연결을 통해 세그먼트들을 전송하므로, HAS 방식은 TCP에 따른 시간 지연 문제점을 가진다. 예를 들면, TCP에 따른 시간 지연은 TCP 연결 수립을 위한 3-Way Handshake 지연, 느린 시작(Slow-Start)에 따른 지연, 또는 합증가곱감소(Additive Increase Multiplicative Decrease; AIMD)에 따른 지연 등을 포함한다.
도 2는 TCP의 3-Way Handshake에 따른 시간 지연을 설명하기 위한 도면이다.
도 2를 참조하면, 클라이언트 장치(210)와 서버(220)는 데이터를 주고 받기 전에 세션 연결 프로세스인 3-Way Handshake 프로세스를 수행한다. 다른 예에서, 클라이언트 장치(210)와 서버(220)는 역할이 바뀔 수 있다.
클라이언트 장치(210)는 연결 요청을 위해 서버(220)에게 SYN 세그먼트를 전송한다. 이때, 클라이언트 장치(210)는 임의의 값을 SYN 세그먼트에 순서를 나타내는 번호로써 삽입한다.
서버(220)는 연결 허락을 위해 SYN 세그먼트에 대한 응답으로서, SYN ACK 세그먼트를 클라이언트 장치(210)에게 전송한다. SYN ACK 세그먼트는 SYN 세그먼트에 삽입된 값보다 1 큰 값을 포함한다. 추가적으로, 서버(220)는 임의의 값을 SYN ACK 세그먼트의 순서 번호로써 삽입한다.
클라이언트 장치(210)는 SYN ACK 세그먼트를 수신하고, 서버(220)에 의해 SYN ACK 세그먼트에 삽입된 값을 1만큼 증가시킨다.
클라이언트 장치(210)는 연결 설정을 위해 ACK 세그먼트를 서버(220)에게 전송한다. 서버(220)는 ACK 세그먼트에 기초하여 연결 설정이 완료되었음을 알 수 있다.
3-Way Handshake 지연은 TCP 연결 수립을 위한 3-Way Handshake 프로세스가 수행되는 데 걸리는 시간으로 인해 세그먼트들이 수신되는 시점의 시간 지연을 나타낸다.
즉, 클라이언트 장치(210)와 서버(220)가 TCP에 따른 세션 연결을 위해 3-Way Handshake를 수행하는 경우, 세션 연결에 소요되는 시간만큼 데이터 전송이 지연될 수 밖에 없다.
한편, 시간에 따라 변화하는 네트워크 환경에서 적응적으로 전송 패킷양을 조절하기 위해, TCP는 Slow-Start 방식과 AIMD 방식을 이용한다. Slow-start 방식과 AIMD 방식은 패킷 전송 초기에 전송 가능한 패킷 양을 작은 크기부터 점차 늘려가는 방식을 나타낸다. Slow-start 방식과 AIMD 방식에 의하면, 초기 재생 구간(initial playback interval)에서 세그먼트 전송량이 포화(saturation)되거나 주어진 대역폭 내 최적값에 도달하는 데 소정의 시간이 소요된다. Slow-Start 및 AIMD에 따른 지연은 이러한 시간 지연을 나타낸다.
도 3은 TCP의 Slow-Start 및 AIMD에 따른 시간 지연을 설명하기 위한 그래프이다.
서버는 클라이언트에게 스트리밍 콘텐츠에 관한 세그먼트들을 전송할 때, 한번에 전체 세그먼트들을 전송하는 것이 아니라 일부 세그먼트들을 전송한다. 또한 HTTP 계층에서 패킷화된 세그먼트는 TCP 계층에서 다시 네트워크에 전송하기에 적합하도록 분할(Fragment)된 세그먼트 단위로 전송한다. 이때, 서버는 네트워크 상에서 전송되는 세그먼트들의 수를 점진적으로 증가시킨다. 서버는 클라이언트의 세그먼트 수신 능력 및 처리 능력을 알 수 없기 때문이다.
도 3을 참조하면, TCP 계층에서 세그먼트들의 전송양을 나타내는 전송 윈도우 크기의 시간에 따른 변화에 관한 그래프가 도시되어 있다. 전송 윈도우의 크기가 클수록 전송되는 세그먼트들의 수가 증가한다.
클라이언트의 세그먼트 요청이 수신된 초기에, 서버는 전송 윈도우(cwnd)의 크기를 1로 설정한다. 이후, 서버는 전송 윈도우의 크기가 기 설정되는 제1 임계치에 도달할 때까지 전송 윈도우의 크기를 지수적으로 증가시킨다. 이를 Slow-Start 구간이라 한다.
Additive Increase 구간에서는, 서버는 전송 윈도우의 크기가 제2 임계치에 도달할 때까지 전송 윈도우의 크기를 증가시킨다.
Multiplicative Decrease 구간에서는, 서버는 전송 윈도우의 크기를 급격하게 감소시킨다.
이러한 과정은, 서버가 클라이언트에게 전송할 수 있는 세그먼트 양, 즉 가용 대역폭을 모르기 때문에, 세그먼트 손실이 발생하는 것을 방지하기 위해 수행된다. Slow-Start 및 AIMD 프로세스에 의해 서버와 클라이언트 간 데이터 전송이 지연된다.
나아가, Slow-Start 및 AIMD는 시간 지연뿐만 아니라 대역폭 활용도를 감소시키는 요인이다. 구체적으로, 서버는 주어진 대역폭 전부를 활용하는 것이 아니라, 대역폭 대비 실제 사용 대역폭의 비율을 서서히 증가시키므로, 대역폭 활용도가 떨어진다는 문제점이 있다. 낮은 대역폭 활용도는 콘텐츠의 품질이 낮은 것을 의미한다.
이처럼 HTTP에 따른 TCP 연결 방식의 시간 지연 및 낮은 대역폭 활용도 문제점으로 인해, 스트리밍 콘텐츠의 재생이 요청된 시점과 스트리밍 콘텐츠의 재생이 시작된 시점 사이에 초기 재생 지연이 존재한다. 초기 재생 지연은 사용자 경험 (Customer of Experience; CoE)에 큰 영향을 미치며, 이를 줄이는 것은 매우 중요하다.
도 4는 TCP를 통해 연결된 서버와 클라이언트의 블록도이다.
도 4를 참조하면, 네트워크 시스템은 서버(410) 및 클라이언트(420)를 포함한다. 클라이언트(420)는 플레이어(424)를 포함한다. 프록시 서버(422)는 서버(410) 또는 클라이언트(420) 중 어느 하나에 포함될 수 있다. 도 4에서, 프록시 서버(422)는 클라이언트(420)에 포함된다.
클라이언트(420)는 서버(410)에게 스트리밍 콘텐츠에 관한 요청을 전송하고, 서버(410)는 클라이언트(420)의 요청에 따른 응답으로서 콘텐츠를 클라이언트(420)에게 제공한다. 여기서, 클라이언트(420)는 사용자의 단말일 수 있다. 클라이언트(420)는 데스크탑 PC, 워크스테이션, 메인프레임 컴퓨터, 인터넷 장비, 게임 콘솔, 휴대형 PC, 휴대형 전화기, 개인 휴대 정보 단말기(PDA) 등을 포함하여, 다양한 종래의 컴퓨팅 장치들 중 하나일 수 있다.
구체적으로, 플레이어(424)는 사용자의 입력에 기초하여 프록시 서버(422)에게 사용자가 원하는 스트리밍 콘텐츠에 관한 요청을 전송한다. 스트리밍 콘텐츠에 관한 요청은 스트리밍 콘텐츠에 관한 주소정보, 발신지 포트 주소정보, 목적지 포트 주소정보를 포함한다. 스트리밍 콘텐츠에 관한 주소정보는 URL(Uniform Resource Locator)를 포함할 수 있다. 플레이어(424)는 HTTP를 기반으로 전송을 수행할 수 있다.
프록시 서버(422)는 플레이어(424)의 요청을 서버(410)에 전달한다. 프록시 서버(422)는 HTTP 및 TCP를 이용하여 서버(410)와 요청과 응답을 주거나 받을 수 있다. 프록시 서버(422)는 플레이어(424)의 요청을 수신하자마자 서버(410)와 TCP 연결을 수립(establish)하거나, 미리 수립할 수 있다. 프록시 서버(422)는 서버(410) 및 플레이어(424)와 HTTP를 통해 연결될 수 있으므로, HTTP 프록시 서버로 지칭될 수 있다. 프록시 서버(422)는 플레이어(424)에 의해 요청된 데이터를 캐시를 이용하여 미리 저장해두고, 플레이어(424)가 요청할 때 저장된 캐시 데이터를 전송함으로써, 전송 시간 및 트래픽 병목 현상을 줄일 수 있다. 또한, 프록시 서버(422)는 방화벽으로서 보안 역할을 수행할 수도 있다.
서버(410)는 요청에 대한 응답으로서, 콘텐츠에 관한 스트림들을 클라이언트(420)에게 전송한다. 신속한 스트리밍을 위해, 서버(410)는 콘텐츠에 관한 데이터를 복수의 데이터 패킷들로 분할하고, 데이터 패킷들을 클라이언트(420)에게 전송하는 패킷 교환 방식을 이용할 수 있다. 특히, 서버(410)는 콘텐츠에 관한 데이터를 기반으로 전송 계층(Transport Layer)의 포맷인 세그먼트들을 생성하고, 세그먼트들을 프록시 서버(422)에게 전송할 수 있다.
서버(410)는 HAS 방식을 이용하는 HAS 서버로 지칭될 수 있다.
프록시 서버(422)는 서버(410)로부터 수신된 세그먼트들을 임시로 버퍼에 저장하고, 기 설정된 양의 세그먼트들이 수신되면 플레이어(424)에게 세그먼트들을 전송한다.
플레이어(424)는 수신된 세그먼트들을 이용하여 콘텐츠를 재생(playback)함으로써, 디스플레이 장치 또는 오디오 장치를 통해 사용자에게 비디오 또는 오디오를 제공한다.
하지만, 서버(410)와 클라이언트(420)가 서로 HTTP 및 TCP를 기반으로 전송을 수행하는 경우, 3-Way Handshake, Slow-Start 또는 AIMD 등에 따른 시간 지연이 발생할 수 있다.
시간 지연을 최소화하기 위해, 본 발명의 일 실시예에 따른 네트워크 시스템은 TCP 기반 전송과 UDP 기반 전송을 함께 이용한다. 스트림 전송의 초기 단계에서는 UDP를 기반으로 스트림들이 전송되고, 초기 단계 이후에 TCP 기반으로 전송된다.
도 5는 본 발명의 일 실시예에 따른 서버와 클라이언트의 구성도이다.
도 5를 참조하면, 네트워크 시스템은 서버(510) 및 클라이언트(520)를 포함한다. 본 발명의 일 실시예에 따른 서버(510)는 HTTP에 따른 TCP 기반 전송을 수행하는 스트리밍 서버(512)와, UDP 기반 전송을 수행하는 UDP 서버(514)를 포함한다.
스트리밍 서버(512)는 HTTP에 따른 TCP 방식을 이용하여 스트리밍 콘텐츠를 클라이언트(520)에게 제공하는 서버이다. 스트리밍 서버(512)는 HAS 서버를 가리킬 수 있다.
UDP 서버(514)는 스트리밍 서버(512)가 제공하는 스트리밍 콘텐츠의 일부를 클라이언트(520)에게 제공하는 서버이다. UDP 서버(514)는 스트리밍 콘텐츠의 일부를 UDP 방식을 이용하여 제공할 수 있다. 특히, UDP 서버(514)는 스트리밍 콘텐츠의 초기 재생 구간에 대응하는 콘텐츠를 제공할 수 있다.
이하에서는, 본 발명의 일 실시예에 따른 스트리밍 동작을 설명한다.
플레이어(524)는 프록시 서버(522)에게 스트리밍 콘텐츠에 관한 요청을 전송한다. 구체적으로, 플레이어(524)는 스트리밍 콘텐츠의 품질별 세그먼트 정보 또는 URL 정보가 포함된 플레이리스트를 프록시 서버(522)를 통해 서버(510)로부터 미리 수신하여 저장한다. 이후, 프록시 서버(522)에 의해 모니터링된 네트워크 상태에 기초하여, 플레이어(524)는 초기 재생 구간 동안 수신될 초기 세그먼트들에 관한 정보를 스트리밍 콘텐츠에 관한 요청에 포함시켜 프록시 서버(522)에게 전송한다. 여기서, 초기 세그먼트들에 관한 정보는 목표 품질의 세그먼트들을 수신하기 위한 URL 정보를 포함할 수 있다.
한편, 초기 재생 구간은 사용자에 의해 설정되거나, 네트워크 파라미터들에 의해 설정될 수 있다. 플레이어(524)는 HTTP 방식을 이용하여 스트리밍 콘텐츠에 관한 요청을 전송할 수 있다. 초기 재생 구간은 설정된 시간구간 또는 세그먼트들의 수로 표현될 수 있다.
프록시 서버(522)는 UDP 서버(514) 및 스트리밍 서버(512)에게 스트리밍 콘텐츠에 관한 요청을 전송하고, UDP 서버(514) 및 스트리밍 서버로부터 스트리밍 콘텐츠에 관한 세그먼트들을 수신하고, 세그먼트들을 플레이어(524)에게 전송한다. 신속한 콘텐츠 재생을 위해, 초기 세그먼트들에 관한 요청은 스트리밍 서버(512)가 아닌 UDP 서버(514)에게 전달된다. 프록시 서버(522)는 UDP 서버(514)로부터 초기 재생 구간에 대응되는 초기 세그먼트들을 수신하여 플레이어(524)에게 전송할 수 있다. 초기 재생 구간 이후에는, TCP에 따른 안정성 및 신뢰성을 기반으로, 세그먼트들은 스트리밍 서버(512)로부터 제공된다.
UDP 서버(514)는 프록시 서버(522)를 통해 플레이어(524)의 요청을 수신하고, 플레이어(524)의 요청에 따른 스트리밍 콘텐츠를 프록시 서버(522)를 통해 플레이어(524)에게 제공한다. 구체적으로, UDP 서버(514)는 스트리밍 콘텐츠 중 초기 재생 구간에 대응되는 콘텐츠 데이터를 페이로드로 구성하고, 페이로드에 UDP 헤더를 추가함으로써 초기 세그먼트들을 생성한다. UDP 헤더에는 발신지 포트 정보, 목적지 포트 정보 등이 포함된다. UDP 서버(514)는 초기 세그먼트들을 프록시 서버(522)에게 전송한다.
UDP 서버(514)는 UDP 방식을 기반으로 초기 세그먼트들을 전송함으로써, TCP의 3-Way Handshake에 따른 초기 재생 시간의 지연을 줄일 수 있다.
하지만, 기존 UDP 방식에 의하면, UDP 서버(514)는 세그먼트들을 순서 없이 전송한다. 종래 UDP 방식은 세그먼트들의 순서에 관한 정보를 제공하지 않기 때문에, 프록시 서버(522)는 수신되는 세그먼트들의 재생 순서를 판단할 수 없다. 또한, UDP 방식은 오류 정정을 위한 재전송 메커니즘을 채용하지 않기 때문에, UDP 방식을 통해 전송되는 세그먼트들에 오류가 발생하더라도, 프록시 서버(522)는 세그먼트들의 오류를 정정할 수 없다.
본 발명의 일 실시예에 의하면, 프록시 서버(522)가 초기 세그먼트들을 정렬할 수 있도록, UDP 서버(514)는 초기 세그먼트들에 시퀀스 번호를 부여할 수 있다. UDP 서버(514)는 세그먼트들의 재생 순서를 고려하여 각 초기 세그먼트에 시퀀스 번호를 포함하는 헤더 또는 필드를 추가하고, 시퀀스 번호들을 포함하는 초기 세그먼트들을 프록시 서버(522)에게 전송한다. 초기 세그먼트들의 전송은 시퀀스 번호들의 순서에 상관없이 수행될 수 있다. 프록시 서버(522)는 초기 세그먼트들에 포함된 시퀀스 번호들에 기초하여 초기 세그먼트들의 재생 순서를 정렬한다. 프록시 서버(522)는 정렬된 초기 세그먼트들을 플레이어(524)에게 전송한다.
본 발명의 일 실시예에 의하면, UDP 서버(514)는 순방향 오류 정정(Forward Error Correction; FEC) 방법에 따른 오류 정정 위한 부가적 정보(redundancy)를 초기 세그먼트들에 추가할 수 있다. 오류 정정을 위한 부가적 정보는 초기 세그먼트들의 전송 과정에서 발생하는 오류를 수신단에서 검출하고 정정하기 위해 데이터 비트들에 부가된 체크 비트들을 나타낸다. 초기 세그먼트들에 추가되는 부가적 정보의 양은, 프록시 서버(522)에 의해 감지된 네트워크 상태에 기초하여 판단된 부호화율(code rate) 및 초기 세그먼트 정보에 기반한다. 프록시 서버(522)는 UDP 서버(514)로부터 수신된 초기 세그먼트들의 부가적 정보에 기초하여 오류를 검출하고 오류를 정정할 수 있다.
본 발명의 일 실시예에 의하면, UDP 서버(514)에서 초기 세그먼트들에 시퀀스 번호들 및 부가적 정보가 추가됨으로써, 프록시 서버(522)는 TCP 연결에 따른 시간 지연, 세그먼트들의 순서 정렬, 및 오류 정정을 모두 수행할 수 있다.
이하에서는, FEC 알고리즘에 관해 자세히 설명한다.
FEC 알고리즘에 의하면, 네트워크를 통해 전송된 데이터에 발생한 오류를 복구하기 위해, 송신단(transmitter)은 오류 발생에 따른 원본 데이터를 재전송하는 것이 아니라 오류의 검출 및 정정을 위한 부가적 정보를 원본 데이터와 함께 전송하고, 수신단(receiver)은 부가적 정보를 이용하여 오류를 검출하고 정정할 수 있다.
오류 복구를 위한 부가적 정보가 많아질수록, 오류 검출 확률 및 오류 정정 확률이 증가한다. 하지만, 부가적 정보가 많아질수록 오버헤드도 함께 증가한다. 즉, FEC 알고리즘은 별도의 피드백 채널이 필요 없다는 장점이 있지만, 부가적 정보의 추가에 의한 오버헤드가 증가한다는 단점이 있다.
따라서, 송신단은 원본 데이터의 양에 대한 부가적 정보의 양의 비율을 나타내는 부호화율을 적절하게 결정해야 한다. 부호화율에 따라 부가적 정보의 비트들이 수가 결정된다.
부호화율은 수학식 1과 같이 표현될 수 있다.
수학식 1에서, r은 부호화율, k는 원본 데이터의 비트 수, n은 전송되는 전체 데이터의 비트 수를 나타낸다. 부가적 정보의 비트 수는 n-k이다.
부호화율은 1/2, 2/3, 3/4, 5/6, 또는 7/8 중 어느 하나일 수 있다.
FEC는 부가적 정보가 추가되는 방식에 따라 블록 코드(Block Code)와 컨볼루셔널 코드(Convolutional Code)로 분류될 수 있다.
FEC 방법의 다양한 종류로서, 패러티 검사(parity check) 방법, 해밍 코드(Hamming code) 방법, 또는 순환 중복 검사(cyclic redundancy check; CRC) 방법이 있다.
이 중 해밍 코드 방법은 송신단은 k 개 비트의 원본 데이터에 2의 지수승에 해당하는 비트 위치에 m 개 비트의 패리티 비트를 더하여 k+m 개 비트의 코드워드를 생성하여 전송하고, 수신단은 해밍 거리를 이용하여 오류를 검출 및 정정하는 방법이다.
해밍 거리 d는 두 바이너리 데이터 비트열 간에 서로 다른 비트들의 개수를 나타낸다. 최소 해밍 거리는 비트열들로부터 가능한 모든 조합들의 해밍 거리들 중 최소값을 말한다. 예를 들면, 제1 비트열 000과 제2 비트열 101 간 해밍 거리는 2이다. 다른 예로서, 비트열들 000, 001, 010, 011, 100, 101, 110, 111의 최소 해밍 거리는 1이다. 코드워드가 원본 데이터 및 부가적 정보를 모두 포함한 비트들을 나타내고, 최소 해밍 거리를 dmin이라 할 때, 코드워드 당 최대 복구 가능한 오류 비트의 수는 (dmin-1)/2이다. 주어진 부가적 정보로부터 복구 가능한 최대 오류 비트의 수는 (n-k)/2이다. 다시 말하면, 복구 가능한 비트 개수의 최대값이 주어지면, 최소 해밍 거리를 알 수 있다. 예를 들면, 블록 코드 유형들 중 리드솔로몬 코드의 표기와 관련하여, 일 예로서, RS(544, 514, t=15, m=10)와 같은 표기가 있을 수 있다. 이는, 코드워드를 나타내는 544개의 심볼들, 부가적 정보를 나타내는 30개의 심볼들을 나타내고, 하나의 심볼은 10개의 비트들을 포함한다는 것을 나타낸다. 여기서, 복구 가능한 비트들의 최대값은 150 개의 비트들이다.
한편, 패리티 검사 방법은 송신단이 원본 데이터에 관한 비트들 중 1의 개수가 홀수 개인지 짝수 개인지 나타내는 패리티 비트를 추가하고, 수신단은 패리티 비트를 이용하여 오류를 검출하는 방법을 의미한다. 순환 중복 검사 방법은 송신단에서 체크섬(check sum) 비트를 계산하여 전송하고, 수신단은 체크섬 비트를 이용하여 오류를 검출하고 정정하는 방법을 의미한다. 패리티 검사 및 순환 중복 검사 방법에 관한 설명은 생략한다.
도 6은 본 발명의 일 실시예에 따른 서버 및 클라이언트를 설명하기 위한 도면이다.
도 6을 참조하면, 네트워크 시스템은 서버(610) 및 클라이언트(620)를 포함한다. 클라이언트(620)는 프록시 서버(630) 및 플레이어(640)를 포함한다. 서버(610)는 스트리밍 서버(612) 및 UDP 서버(614)를 포함한다. 프록시 서버(630)는 모니터링부(632), 프로세싱부(634) 및 버퍼부(636)를 포함한다.
도 6에서 프록시 서버(630)는 플레이어(640)와 함께 클라이언트(620)를 구성한다. 다른 실시예에서, 프록시 서버(630)는 서버(610)에 포함되거나, 별도의 엔티티로 구현될 수 있다. 일 예에서, 프록시 서버(630)는 플레이어(640)와 함께 클라이언트 장치 상에서 적어도 하나의 메모리에 저장된 명령어를 실행하는 적어도 하나의 프로세서에 의해 구현될 수 있다.
플레이어(640)는 클라이언트로서, 사용자 디바이스 상에서 구현될 수 있다.
UDP 서버(614)는 제1 서버로 지칭될 수 있고, 스트리밍 서버(612)는 제2 서버로 지칭될 수 있다. 또한, UDP는 제1 프로토콜로 지칭될 수 있고, TCP는 제2 프로토콜로 지칭될 수 있다.
모니터링부(632)는 클라이언트(620)의 네트워크 상태를 모니터링한다.
구체적으로, 모니터링부(632)는 서버(610)와 플레이어(640) 간 전송들에 관한 패킷 에러율(Packet Error Rate; PER)을 모니터링한다. PER은 서버(610) 또는 플레이어(640)로부터 전송된 패킷들 중 수신되지 않거나 손상된 패킷들의 비율을 나타낸다. PER은 0 이상 및 1 이하의 범위에서 실수(real number)로 표현될 수 있다. PER의 디폴트 값은 미리 설정된 값일 수 있다.
모니터링부(632)는 서버(610)와 프록시 서버(630) 간 채널의 대역폭(bandwidth) 또는 프록시 서버(630)와 플레이어(640) 간 채널의 대역폭을 모니터링한다. 대역폭은 단위 시간당 전송 가능한 비트들의 수를 나타낸다. 대역폭이 클수록 주어진 시간 내에 전송할 수 있는 비트들의 수가 증가한다. 대역폭의 디폴트 값은 미리 설정된 값일 수 있다.
PER과 대역폭은 모니터링부(632)의 감지에 따라 업데이트된다.
프로세싱부(634)는 모니터링된 네트워크 상태에 기초하여 콘텐츠 데이터에 대한 대역폭을 판단하고, 플레이어(640)에게 콘텐츠 데이터에 대한 대역폭에 관한 정보를 제공한다.
구체적으로, 프로세싱부(634)는 PER에 기초하여 부호화율을 판단한다. 부호화율은 수학식 2를 기반으로 결정될 수 있다.
수학식 2에서 r은 부호화율을 나타낸다.
부호화율은 초기에 디폴트 값으로 설정되며, 이후 프로세싱부(634)에 의해 계산되는 값에 기초하여 갱신될 수 있다. 부호화율의 디폴트 값은 0.5일 수 있다.
프로세싱부(634)는 대역폭과 부호화율에 기초하여 콘텐츠 데이터에 대한 대역폭을 판단한다. 콘텐츠 데이터에 대한 대역폭은 전체 대역폭 중 스트리밍 콘텐츠에 관한 비트들이 전송될 수 있는 대역폭을 의미하며, 가용 대역폭(available bandwidth)으로 지칭될 수 있다. 즉, 콘텐츠 데이터에 대한 대역폭은 최대 대역폭에서 부가적 정보를 전송하는데 이용되는 대역폭을 제외한 대역폭을 가리킨다.
콘텐츠 데이터에 대한 대역폭은 수학식 3과 같이 표현될 수 있다.
수학식 3에서 bw는 대역폭, r은 부호화율, bw'은 콘텐츠 데이터에 대한 대역폭을 나타낸다.
프로세싱부(634)는 콘텐츠 데이터에 대한 대역폭을 플레이어(640)에게 제공할 수 있다. 콘텐츠 데이터에 대한 대역폭은 플레이어(640)가 목표 품질을 결정하는 데 이용된다.
다른 실시예에서는, 프로세싱부(634)가 PER과 대역폭 정보를 플레이어(640)에게 제공하고, 플레이어(640)가 PER과 대역폭에 기초하여 부호화율을 판단하고, 콘텐츠 데이터에 대한 대역폭을 판단할 수 있다.
한편, 플레이어(640)는 재생하려는 콘텐츠의 품질별 세그먼트 정보 또는 URL 정보가 기술된 플레이리스트를 프록시 서버(630)를 통해 서버(610)로부터 미리 수신하고, 저장한다. 플레이리스트는 콘텐츠의 품질별 저장위치 정보를 포함한다.
이후, 플레이어(640)는 사용자로부터 스트리밍 콘텐츠에 관한 재생 요청을 수신한다.
플레이어(640)는 콘텐츠 데이터에 대한 대역폭을 기반으로, 재생하려는 콘텐츠 데이터의 품질을 결정한다. 콘텐츠 데이터의 품질은 콘텐츠 데이터에 대한 대역폭, 즉 서버(610)와 클라이언트(620)사이에서 콘텐츠에 관한 비트들이 전송될 수 있는 최대 대역폭에 따라 결정된다.
구체적으로, 플레이어(640)는 수학식 4 및 수학식 5를 기반으로 품질 정보를 판단할 수 있다.
수학식 4 및 수학식 5에서, q는 세그먼트 품질 파라미터, i는 세그먼트 인덱스, cini은 초기 재생 구간 내 세그먼트들의 수, 는 q 품질의 i 번째 세그먼트, bit(s)는 세그먼트 s의 비트 수, bw'는 콘텐츠 데이터에 대한 대역폭, M은 품질 파라미터의 최대값을 나타낸다.
M은 품질 파라미터의 최대값으로서, 미리 설정된 값일 수 있다.
플레이어(640)는 콘텐츠 데이터에 대한 대역폭에 기초하여, 초기 세그먼트들의 총 비트 수의 최대값을 판단하고, 그에 따른 품질 파라미터 q를 결정한다. 품질 파라미터 q의 값이 높을수록 초기 세그먼트들의 총 비트 수의 합이 커진다. 즉, 고품질을 나타낸다.
다른 실시예에서, 콘텐츠 데이터의 품질은 콘텐츠 데이터에 대한 대역폭 내에서 사용자의 입력에 의해 결정될 수 있다.
플레이어(640)는 콘텐츠 데이터를 프록시 서버(630)에게 요청한다. 이때, 플레이어(640)는 초기 재생 구간 동안 재생하려는 초기 세그먼트들의 저장위치를 나타내는 저장위치 정보를 스트리밍 콘텐츠에 관한 요청과 함께 전송한다. 즉, 플레이어(640)는 초기 재생 구간 내에서 수신될 최대 품질의 초기 세그먼트들을 수신하기 위한 저장위치 정보를 프록시 서버(630)에게 전송할 수 있다. 여기서, 저장위치 정보는 상기 결정된 품질에 대응하는 초기 세그먼트들이 저장된 위치를 포함한다. 플레이어(640)는 저장된 플레이리스트를 참조하여, 목표 품질에 따른 초기 세그먼트들의 저장위치 정보를 구할 수 있다. 일 예로서, 초기 세그먼트들의 저장위치 정보는 상기 결정된 품질을 갖는 초기 세그먼트들이 저장된 URL 정보를 포함할 수 있다.
프록시 서버(630)는 초기 재생 구간에 대응되는 콘텐츠 데이터를 UDP 서버(614)에게 요청하고, 초기 재생 구간 이후 콘텐츠 데이터를 스트리밍 서버(612)에게 요청한다.
프록시 서버(630)는 UDP 서버(614)에게 초기 세그먼트들을 요청할 때, 부호화율 정보 및 초기 세그먼트들의 저장위치 정보를 함께 전송한다.
UDP 서버(614)는 저장위치 정보에 저장된 세그먼트들을 초기 세그먼트들로써 준비한다.
본 발명의 일 실시예에 따라, UDP 서버(614)는 초기 세그먼트들에 시퀀스 번호 또는 부가적 정보 중 적어도 하나를 포함시킨다. 시퀀스 번호들은 초기 세그먼트들의 재생 순서에 따라 순차적으로 부여된다. 부가적 정보는 프록시 서버(630)에서 오류 검출 및 오류 정정을 위해 추가된다. 이때, UDP 서버(614)는 수신된 부호화율을 초과하지 않는 범위에서 부가적 정보를 추가한다. 시퀀스 번호 또는 부가적 정보는 초기 세그먼트들의 헤더들에 포함될 수 있다.
UDP 서버(614)는 초기 세그먼트들을 프로세싱부(634)에게 전송한다.
프로세싱부(634)는 초기 세그먼트들에 포함된 시퀀스 번호들에 기초하여 초기 세그먼트들을 순서대로 정렬하고, 버퍼부(636)에 초기 세그먼트들을 저장한다.
프로세싱부(634)는 초기 세그먼트들을 저장할 때, 부가적 정보를 기반으로 초기 세그먼트들에 포함된 오류를 감지하고, 감지된 오류를 정정한다. 오류를 포함하는 초기 세그먼트가 있을 때, 프로세싱부(634)는 초기 세그먼트의 오류를 정정한 후에 버퍼부(636)에 저장한다.
버퍼부(636)에 초기 세그먼트들이 일정량 이상 저장되면, 버퍼부(636)는 플레이어(640)에게 일정량의 초기 세그먼트들을 전송한다. 여기서, 일정량의 초기 세그먼트들은 UDP 서버(614)가 전송하는 모든 세그먼트들을 의미할 수도 있고, 그보다 작은 수의 세그먼트들을 의미할 수도 있다.
플레이어(640)는 초기 재생 가능한 수의 세그먼트들이 수신되면, 세그먼트들을 디코딩하고, 렌더링 하며, 사용자 인터페이스를 통해 콘텐츠를 출력한다.
위 과정을 통해, 플레이어(640)는 초기 재생 구간 동안 UDP 서버(614)로부터 초기 세그먼트들을 수신하여 콘텐츠를 재생할 수 있다.
이후, 플레이어(640)는 초기 세그먼트들의 다음 세그먼트들을 프록시 서버(630)에 요청한다. 세그먼트들의 초기 재생 구간 이후 플레이어(640)는 스트리밍 서버(612)로부터 스트리밍 콘텐츠에 대한 세그먼트들을 TCP를 통해 수신한다. 구체적으로, 프로세싱부(634)는 UDP 서버(614)로부터 초기 세그먼트들을 수신하는 도중 또는 수신이 완료된 후에 스트리밍 서버(612)에게 TCP 연결을 요청한다. 프로세싱부(634)는 스트리밍 서버(612)로부터 TCP를 통해 다음 세그먼트들을 수신하고, 플레이어(640)에게 전달한다.
도 7은 본 발명의 일 실시예에 따른 프록시 서버의 동작 방법을 나타낸 순서도다.
도 7을 참조하면, 프록시 서버는 네트워크 상태를 모니터링한다(S702).
프록시 서버는 패킷 에러율(Packet Error Rate; PER) 및 현재 네트워크 대역폭을 포함하는 네트워크 상태를 모니터링한다.
프록시 서버는 네트워크 상태를 기반으로 최적 부호화율 및 콘텐츠 데이터에 대한 대역폭을 판단한다(S704).
여기서, 부호화율은 단일 세그먼트의 전체 비트 수 대비 콘텐츠 데이터에 대한 비트 수의 비율을 나타낸다. 프록시 서버는 PER에 기초하여 최적 부호화율을 계산할 수 있다.
콘텐츠 데이터에 대한 대역폭은, 네트워크 대역폭 중에서 콘텐츠 데이터의 전송에 이용되는 대역폭을 나타낸다. 다시 말하면, 콘텐츠 데이터에 대한 대역폭은 네트워크 대역폭에서 부호화 비트에 따른 대역폭을 제외한 대역폭을 나타낸다. 부호화 비트는 부호화를 위해 세그먼트들의 비트에 더해지는 비트이다. 프록시 서버는 부호화율 및 네트워크 대역폭을 기반으로 콘텐츠 데이터에 대한 대역폭을 계산할 수 있다.
프록시 서버는 최적 부호화율 및 콘텐츠 데이터에 대한 대역폭 각각을 서버 및 플레이어에게 제공한다(S706).
최적 부호화율은 서버가 세그먼트들에 부가적 정보를 추가함으로써 세그먼트들을 부호화하는 데 이용된다. 플레이어에게 전송되는 콘텐츠 데이터에 대한 대역폭은 초기 재생 구간에 수신될 세그먼트들의 품질 정보를 결정하는 데 이용된다.
이후, 프록시 서버는 초기 재생 구간 정보를 포함하는 스트리밍 콘텐츠에 관한 요청을 수신한다(S708).
여기서, 초기 재생 구간 정보는 초기 재생 구간 동안 플레이어가 수신하고자 하는 세그먼트들의 개수 또는 저장위치 정보 중 적어도 하나를 포함한다. 저장위치 정보는 플레이어에 의해 결정된 품질의 세그먼트들이 저장된 위치를 포함한다. 요청은 플레이어로부터 전송되며, 플레이어는 네트워크 대역폭에서 부호화 비트에 따른 대역폭을 제외한 대역폭, 및 세그먼트들의 개수에 기초하여 세그먼트들의 품질을 결정하고, 플레이리스트를 참조하여 저장위치 정보를 획득할 수 있다.
세그먼트들의 품질 정보는 네트워크 대역폭 중 콘텐츠 데이터에 대한 대역폭, 및 세그먼트들의 개수에 기초하여 플레이어에 의해 결정될 수 있다.
프록시 서버는 초기 재생 구간 정보와 함께 스트리밍 콘텐츠에 관한 요청을 서버에 전달한다.
프록시 서버는 요청을 서버에 전달하는 것에 대응하여 제1 프로토콜을 이용하여 세그먼트들을 수신한다(S710).
여기서, 제1 프로토콜은 사용자 데이터그램 프로토콜(User Datagram Protocol; UDP)이다. 프록시 서버는 초기 재생 구간 정보에 포함된 세그먼트들의 개수만큼 서버로부터 세그먼트들을 수신할 수 있다.
이때, 세그먼트들이 UDP를 통해 전송되는 경우, 세그먼트들의 순서가 바뀔 수 있다. 이를 위해, 수신되는 세그먼트들은 재생 순서를 나타내는 시퀀스 번호를 포함할 수 있다.
프록시 서버는 세그먼트들을 재생 순서에 따라 정렬한다(S712).
프록시 서버는 세그먼트들에 포함된 시퀀스 번호들을 오름차순 또는 내림차순으로 정렬함으로써, 세그먼트들을 정렬할 수 있다.
한편, 세그먼트들에 오류가 발생하더라도 프록시 서버가 오류를 검출하거나 정정할 수 있도록, 세그먼트들은 오류 복구를 위한 부가적 정보를 포함할 수 있다. 부가적 정보는 다양한 부호화 방법들에 따른 부호화 비트들을 포함할 수 있다.
프록시 서버는 세그먼트들에 포함된 부가적 정보를 이용하여 세그먼트들의 오류를 검출하거나 정정한다(S714).
오류가 정정되고 순서가 정렬된 세그먼트들은 프록시 서버의 버퍼에 저장된다.
프록시 서버는 세그먼트들을 플레이어에게 전송한다(S716).
일정량의 세그먼트들이 버퍼에 저장되면, 프록시 서버는 세그먼트들을 플레이어의 요청에 대한 응답으로서 플레이어에게 전송한다.
프록시 서버는 초기 재생 구간 이후의 스트리밍은 제2 프로토콜을 이용하여 수신한다(S718).
여기서, 제2 프로토콜은 전송 제어 프로토콜(Transmission Control Protocol; TCP)이다. 프록시 서버는 초기 재생 구간에서는 UDP를 이용하여 콘텐츠를 스트리밍하고, 초기 재생 구간 이후에는 TCP를 이용하여 다음 콘텐츠를 스트리밍할 수 있다.
도 8은 본 발명의 일 실시예에 따른 클라이언트 장치의 동작 방법을 나타낸 순서도다.
도 8을 참조하면, 클라이언트 장치는 네트워크 상태를 모니터링하고, 최적 부호화율 및 콘텐츠 데이터에 대한 대역폭을 판단한다(S802, S804).
단계 S802 및 단계 S804 각각은 단계 S702 및 단계 S704에 대응된다.
클라이언트 장치는 초기 재생 구간에 대응하는 세그먼트들의 개수 및 콘텐츠 데이터에 대한 대역폭에 기초하여, 세그먼트들의 품질을 결정한다(S806).
이후, 클라이언트 장치는 사용자로부터 사용자의 스트리밍 요청을 수신한다(S808).
클라이언트 장치는 최적 부호화율, 세그먼트 저장위치 정보 및 스트리밍 요청을 서버에 전송한다(S810).
클라이언트 장치는 제1 프로토콜을 이용하여 세그먼트들을 수신한다(S812).
구체적으로, 클라이언트 장치는 서버로부터 저장위치 정보에 저장된 세그먼트들을 수신한다. 세그먼트들은 품질 정보에 따른 비트 수를 갖는다.
한편, 각 세그먼트는 순서 정렬을 위한 시퀀스 번호 및 오류 정정을 위한 부가적 정보를 포함한다.
클라이언트 장치는 세그먼트들을 재생 순서에 따라 정렬하고, 세그먼트들에 포함된 부가적 정보를 이용하여 세그먼트들의 오류를 정정한다(S814, S816).
클라이언트 장치는 세그먼트들에 포함된 콘텐츠를 재생한다(S818).
클라이언트 장치는 세그먼트들을 디코딩 및 렌더링함으로써, 콘텐츠를 재생할 수 있다.
클라이언트 장치는 초기 재생 구간 이후의 스트리밍은 제2 프로토콜을 이용하여 수신한다(S820).
이를 위해, 초기 재생 구간 동안 또는 초기 재생 구간 직후에 서버와 TCP 세션 연결을 수행할 수 있다.
이처럼, 클라이언트 장치는 단계 S802 내지 단계 S820을 통해 초기 재생 구간에서는 UDP를 이용하여 스트리밍을 수행하고, 초기 재생 구간 이후에는 TCP를 이용하여 스트리밍을 수행함으로써, 초기 재생 지연을 줄일 수 있다.
또한, 클라이언트 장치는 시퀀스 번호를 이용하여 UDP에 따른 세그먼트들 순서를 정렬함으로써, UDP 방식의 스트리밍을 가능하게 한다.
또한, 클라이언트 장치는 TCP와 달리, Slow-Start 및 AIMD에 관한 알고리즘을 수행하지 않는 UDP를 이용함으로써, 대역폭 이용률을 개선할 수 있다.
본 명세서에 설명되는 시스템들 및 기법들의 다양한 구현예들은, 디지털 전자 회로, 집적회로, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현예들은 프로그래밍가능 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램들로 구현되는 것을 포함할 수 있다. 프로그래밍가능 시스템은, 저장 시스템, 적어도 하나의 입력 디바이스, 그리고 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에게 데이터 및 명령들을 전송하도록 결합되는 적어도 하나의 프로그래밍가능 프로세서(이것은 특수 목적 프로세서일 수 있거나 혹은 범용 프로세서일 수 있음)를 포함한다. 컴퓨터 프로그램들(이것은 또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 혹은 코드로서 알려져 있음)은 프로그래밍가능 프로세서에 대한 명령어들을 포함하며 "컴퓨터가 읽을 수 있는 기록매체"에 저장된다.
컴퓨터가 읽을 수 있는 기록매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체는 ROM, CD-ROM, 자기 테이프, 플로피디스크, 메모리 카드, 하드 디스크, 광자기 디스크, 스토리지 디바이스 등의 비휘발성(non-volatile) 또는 비일시적인(non-transitory) 매체일 수 있으며, 또한 데이터 전송 매체(data transmission medium)와 같은 일시적인(transitory) 매체를 더 포함할 수도 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다.
본 명세서의 흐름도/타이밍도에서는 각 과정들을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 개시의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것이다. 다시 말해, 본 개시의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 개시의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 흐름도/타이밍도에 기재된 순서를 변경하여 실행하거나 각 과정들 중 하나 이상의 과정을 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 흐름도/타이밍도는 시계열적인 순서로 한정되는 것은 아니다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
610: 서버
620: 프록시 서버
630: 플레이어

Claims (13)

  1. 스트리밍 콘텐츠 전달을 위한 장치에 있어서,
    명령어들을 저장하는 메모리; 및
    적어도 하나의 프로세서를 포함하되,
    상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써,
    플레이어로부터 전송된 스트리밍 콘텐츠에 관한 요청을 제1 서버에 전송하고, - 상기 요청은 초기 재생 구간에 대응하는 세그먼트들의 개수를 포함함 -;
    상기 제1 서버로부터 제1 프로토콜을 이용하여 상기 초기 재생 구간에 대응되는 세그먼트들을 수신하고, - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -;
    상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하고,
    상기 요청에 대한 응답으로서, 정렬된 세그먼트들을 상기 플레이어에게 전송하는, 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    패킷 에러율(Packet Error Rate; PER)을 포함하는 네트워크 상태를 모니터링하고,
    상기 PER에 기초하여, 단일 세그먼트의 전체 비트 수 대비 콘텐츠 데이터에 대한 비트 수의 비율을 나타내는 부호화율을 판단하고,
    상기 부호화율을 상기 제1 서버에게 제공하고, - 상기 제1 서버는 상기 부호화율을 기반으로 상기 세그먼트들에 부가적 정보(redundancy)를 추가함 -; 및
    상기 세그먼트들을 수신하는 것에 대응하여, 상기 부가적 정보를 이용하여 상기 세그먼트들의 오류 정정을 수행하는, 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 플레이어에 의해 결정된 품질의 세그먼트들이 저장된 위치를 포함하는 저장위치 정보를 상기 플레이어로부터 수신하고, 상기 저장위치 정보를 상기 제1 서버에 전송하는, 장치.
  4. 제3항에 있어서,
    상기 세그먼트들의 품질은,
    상기 제1 서버와의 네트워크 대역폭에서 부호화 비트에 따른 대역폭을 제외한 대역폭, 및 상기 세그먼트들의 개수에 기초하여 결정되는 것인, 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    초기 재생 구간 이후에는 제2 서버로부터 제2 프로토콜을 이용하여 다음 세그먼트들을 스트리밍하는, 장치.
  6. 제5항에 있어서,
    상기 제1 프로토콜은 사용자 데이터그램 프로토콜(User Datagram Protocol; UDP)이고, 상기 제2 프로토콜은 전송 제어 프로토콜(Transmission Control Protocol; TCP)인 것인 장치.
  7. 스트리밍 콘텐츠 전달을 위한 컴퓨터 구현 방법에 있어서,
    플레이어로부터 전송된 스트리밍 콘텐츠에 관한 요청을 제1 서버에 전송하는 단계 - 상기 요청은 초기 재생 구간에 대응하는 세그먼트들의 개수를 포함함 -;
    상기 제1 서버로부터 제1 프로토콜을 이용하여 상기 초기 재생 구간에 대응되는 세그먼트들을 수신하는 단계 - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -;
    상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하는 단계;
    상기 요청에 대한 응답으로서, 정렬된 세그먼트들을 상기 플레이어에게 전송하는 단계
    를 포함하는 방법.
  8. 스트리밍 콘텐츠 제공을 위한 클라이언트 장치에 있어서,
    명령어들을 저장하는 메모리; 및
    적어도 하나의 프로세서를 포함하되,
    상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써,
    사용자의 입력에 대응하여, 초기 재생 구간 동안 수신할 세그먼트들의 개수를 포함하는 스트리밍 콘텐츠에 관한 요청을 서버에 전송하고,
    상기 서버로부터 제1 프로토콜을 이용하여 상기 세그먼트들을 수신하고, - 각 세그먼트는 재생 순서를 나타내는 시퀀스 번호를 포함함 -;
    상기 세그먼트들의 시퀀스 번호들에 기초하여 상기 세그먼트들의 순서를 정렬하고,
    정렬된 세그먼트들에 포함된 콘텐츠를 재생하는, 클라이언트 장치.
  9. 제8항에 있어서,
    상기 프로세서는,
    PER을 포함하는 네트워크 상태를 모니터링하고,
    상기 PER에 기초하여, 단일 세그먼트의 전체 비트 수 대비 콘텐츠 데이터에 대한 비트 수의 비율을 나타내는 부호화율을 판단하고,
    상기 부호화율을 상기 서버에게 제공하고, - 상기 서버는 상기 부호화율을 기반으로 상기 세그먼트들에 부가적 정보(redundancy)를 추가함 -;
    상기 세그먼트들을 수신하는 것에 대응하여, 상기 부가적 정보를 이용하여 상기 세그먼트들의 오류 정정을 수행하는, 클라이언트 장치.
  10. 제9항에 있어서,
    상기 프로세서는,
    상기 서버와의 네트워크 대역폭 및 패킷 에러율(Packet Error Rate; PER) 을 모니터링하고,
    상기 PER에 기초하여, 상기 세그먼트들의 전체 비트 수 대비 콘텐츠 데이터에 대한 비트 수의 비율을 나타내는 부호화율(code rate)을 판단하고,
    상기 네트워크 대역폭 및 상기 부호화율에 기초하여 콘텐츠 데이터에 대한 대역폭을 판단하고,
    상기 콘텐츠 데이터에 대한 대역폭, 및 상기 세그먼트들의 개수에 기초하여 상기 세그먼트들의 품질을 결정하는, 클라이언트 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    상기 결정된 품질의 세그먼트들이 저장된 위치를 포함하는 저장위치 정보를 상기 서버에게 전송하는, 클라이언트 장치.
  12. 제8항에 있어서,
    상기 프로세서는,
    상기 초기 재생 구간 이후에는 상기 서버로부터 제2 프로토콜을 이용하여 다음 세그먼트들을 수신하는, 클라이언트 장치.
  13. 제12항에 있어서,
    상기 제1 프로토콜은 사용자 데이터그램 프로토콜(User Datagram Protocol; UDP)이고, 상기 제2 프로토콜은 전송 제어 프로토콜(Transmission Control Protocol; TCP)인 것인, 클라이언트 장치.
KR1020220110976A 2022-09-01 2022-09-01 콘텐츠 스트리밍을 위한 방법 및 장치 KR20240031771A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220110976A KR20240031771A (ko) 2022-09-01 2022-09-01 콘텐츠 스트리밍을 위한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220110976A KR20240031771A (ko) 2022-09-01 2022-09-01 콘텐츠 스트리밍을 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20240031771A true KR20240031771A (ko) 2024-03-08

Family

ID=90236081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220110976A KR20240031771A (ko) 2022-09-01 2022-09-01 콘텐츠 스트리밍을 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20240031771A (ko)

Similar Documents

Publication Publication Date Title
US8091011B2 (en) Method and system for dynamically adjusting forward error correction (FEC) rate to adapt for time varying network impairments in video streaming applications over IP networks
EP1346578B1 (en) Method for multimedia communication over packet channels
CN110943800B (zh) 数据包的发送方法、装置及系统、存储介质、电子装置
US7502860B1 (en) Method and apparatus for client-side flow control in a transport protocol
US20130254611A1 (en) Recovering data in multimedia file segments
US20140348049A1 (en) Rate Adaptive Transmission of Wireless Broadcast Packets
US8195821B2 (en) Autonomous information processing apparatus and method in a network of information processing apparatuses
US9900239B2 (en) Apparatus and method for transmitting and receiving multimedia data in mobile communication system
KR20160135200A (ko) 확장된 송신 제어 기능을 구현하는 송신 가속기
KR20150049052A (ko) 데이터 전송 장치 및 방법
JP2002158739A (ja) ヘッダ復元装置およびヘッダ復元方法
JP2007028623A (ja) ネットワークストリームベースの伝送速度を加速するためにber/perを調整するためのシステムおよび方法
Lundqvist et al. TCP with end-to-end FEC
JP2012147197A (ja) 通信装置、通信方法、及び通信プログラム
US10389384B2 (en) Data communication method and apparatus using forward error correction
US9350484B2 (en) Transport accelerator implementing selective utilization of redundant encoded content data functionality
EP3241115B1 (en) Method and system for on-demand file repair
US9294227B2 (en) LT staircase FEC code
KR20240031771A (ko) 콘텐츠 스트리밍을 위한 방법 및 장치
JP2008092213A (ja) 受信機、パケット再送方法及びプログラム
CN111193575A (zh) 一种在物联网环境下减少自动重传次数的差错控制方法
KR20140116769A (ko) 순방향 오류 정정 방식을 이용한 데이터 통신 방법 및 장치
Barukang et al. Packet header FEC
US10205562B1 (en) Method and apparatus for error correction
JP3638939B2 (ja) ヘッダ復元装置およびヘッダ復元方法