KR102216125B1 - 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템 - Google Patents

미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102216125B1
KR102216125B1 KR1020140060486A KR20140060486A KR102216125B1 KR 102216125 B1 KR102216125 B1 KR 102216125B1 KR 1020140060486 A KR1020140060486 A KR 1020140060486A KR 20140060486 A KR20140060486 A KR 20140060486A KR 102216125 B1 KR102216125 B1 KR 102216125B1
Authority
KR
South Korea
Prior art keywords
media content
network connections
segments
server
client
Prior art date
Application number
KR1020140060486A
Other languages
English (en)
Other versions
KR20150133551A (ko
Inventor
홍순기
정도영
최정석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140060486A priority Critical patent/KR102216125B1/ko
Priority to EP15796789.4A priority patent/EP3148201B1/en
Priority to CN201580026989.6A priority patent/CN106416273B/zh
Priority to PCT/KR2015/005016 priority patent/WO2015178669A1/ko
Priority to US15/312,059 priority patent/US10630744B2/en
Publication of KR20150133551A publication Critical patent/KR20150133551A/ko
Application granted granted Critical
Publication of KR102216125B1 publication Critical patent/KR102216125B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/2401Monitoring of the client buffer
    • 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/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/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하고, 클라이언트의 버퍼의 크기 단위로 수신되는 미디어 컨텐츠의 세그먼트들이 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하여, 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 미디어 컨텐츠의 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하고, 서버에 생성된 스케쥴링 정보를 전송하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법이 개시된다.

Description

미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템 {Method, apparatus and system for scheduling transmission and reception of media contents}
본 발명은 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템에 관한 것으로서, 보다 상세하게는, 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법 및 그 클라이언트, 서버가 미디어 컨텐츠의 송신을 스케쥴링 하는 방법 및 그 서버, 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법 및 그 제 2 서버 및 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템에 관한 것이다.
무선 통신 네트워크의 발달로, 사용자들은 다양한 유형의 미디어 컨텐츠를 서버로부터 제공받아 이용할 수 있다. 미디어 컨텐츠의 경우, 스트리밍을 통해, 서버로부터 사용자의 디바이스들로 전송될 수 있다. 미디어 컨텐츠를 스트리밍 하는 경우에 있어서, 미디어 컨텐츠를 버퍼링 하는데 소요되는 시간은 미디어 컨텐츠의 제공에 관한 품질을 결정하는데 중요한 요소 중 하나이다.
최근에는 미디어 컨텐츠를 스트리밍하는 데 있어, 버퍼링에 소요되는 시간을 줄이기 위한 다양한 연구가 진행되고 있다. 특히, 서버와 사용자의 단말기 간에 적어도 하나의 네트워크 연결을 통해 송수신되는 미디어 컨텐츠를 효율적으로 스케쥴링 하는 방법에 대한 연구가 활발하게 이루어지고 있다.
본 발명은 클라이언트와 서버간에 미디어 컨텐츠를 송수신하는데 있어서, 네트워크 연결을 통해 서버로부터 클라이언트로 전송되는 미디어 컨텐츠를 스케쥴링 하여, 클라이언트가 미디어 컨텐츠를 수신하는데 소요되는 시간을 줄이기 위한 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템에 관한 것이다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법은 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계; 상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계; 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하는 단계; 및 상기 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 스케쥴링 정보는, 상기 일부 네트워크 연결에 상기 미디어 컨텐츠의 세그먼트들이 할당되는 경우, 상기 미디어 컨텐츠의 세그먼트들의 크기를 변경하는 요청을 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 스케쥴링 정보는, 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당 가능한 세그먼트의 크기 정보를 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 스케쥴링 정보를 생성하는 단계는, 상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하는 단계를 포함하고, 상기 생성된 스케쥴링 정보를 전송하는 단계는, 상기 제 1 수신 시간 및 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 스케쥴링 요청을 전송하는 단계는, 상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 서버에 상기 스케쥴링 요청을 전송하는 단계를 더 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 스케쥴링 정보를 생성하는 단계는, 상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 세그먼트의 크기에 관한 정보를 추출하는 단계를 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법은 상기 전송된 스케쥴링 정보에 기초하여 상기 미디어 컨텐츠를 수신하는 단계를 더 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 미디어 컨텐츠를 수신하는 단계는, 상기 미디어 컨텐츠의 세그먼트들이 상기 서버에서 상기 생성된 스케쥴링 정보에 기초하여 분할된 결과 생성된 서브 세그먼트들을 수신하는 단계를 포함한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 서브 세그먼트들을 수신하는 단계는, 상기 복수의 네트워크 연결들 각각으로부터 동일한 개수의 적어도 하나의 서브 세그먼트를 수신한다.
일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법에 있어서, 상기 적어도 하나의 서브 세그먼트를 수신하는 단계는, 상기 복수의 네트워크 연결들 각각의 데이터 전송 속도가 상이한 경우, 상기 복수의 네트워크 연결들 간의 데이터 전송 속도의 비율에 기초하여, 상기 복수의 네트워크 연결들 각각에 할당되는 서브 세그먼트의 개수를 결정하는 단계를 포함한다.
일 실시예에 따른 서버가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법은, 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계; 상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계; 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 단계를 포함한다.
일 실시예에 따른 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링을 하는 방법은, 클라이언트와 제 1 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계; 상기 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계; 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하는 단계; 및 상기 제 1 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함한다.
일 실시예에 따른 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트는 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부; 상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 확인된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하고, 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하는 스케쥴러; 및 상기 생성된 스케쥴링 정보를 상기 서버에 전송하는 통신부를 포함한다.
일 실시예에 따른 미디어 컨텐츠의 송신을 스케쥴링 하는 서버는, 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부; 상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는고, 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 스케쥴러를 포함한다.
일 실시예에 따른 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버는 클라이언트와 제 1 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부; 상기 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하고, 상기 예측된 버퍼링 타이밍에서 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하는 스케쥴러; 및 상기 제 1 서버에 상기 생성된 스케쥴링 정보를 전송하는 통신부를 포함한다.
일 실시예에 따른 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템은 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계; 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성하는 단계; 상기 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계; 및 상기 서버가 상기 전송된 스케쥴링 정보에 기초하여, 분할된 미디어 컨텐츠의 세그먼트들를 포함한다.
도 1은 일 실시예에 따른, 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템을 설명하기 위한 개념도이다.
도 2는 일 실시예에 따른 클라이언트가 미디어 컨텐츠를 수신하기 위한 스케쥴링을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 클라이언트가 미디어 컨텐츠의 수신에 대한 스케쥴링 효과를 예측하여, 스케쥴링 여부를 결정하는 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 클라이언트가 버퍼의 크기 및 복수의 네트워크 연결들의 개수를 기초로 미디어 컨텐츠를 수신하는데 걸리는 시간을 예측하는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 클라이언트가 룩업테이블을 이용하여, 스케쥴링 정보를 생성하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 클라이언트가 생성된 스케쥴링 정보에 기초하여 서버로부터 미디어 컨텐츠를 수신하는 방법을 설명하기 위한 흐름도이다.
도 7은 일 실시예에 따른 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트의 블록도이다.
도 8은 다른 실시예에 따른 서버에서 미디어 컨텐츠의 송신을 스케쥴링 하는 방법을 설명하기 위한 흐름도이다.
도 9는 일 실시예에 따른 서버가 룩업테이블을 이용하여, 미디어 컨텐츠의 전송을 스케쥴링하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 서버가 스케쥴링 효과가 존재하는지 여부를 판단하고, 판단 결과에 기초하여 스케쥴링을 수행하는 방법을 설명하기 위한 흐름도이다.
도 11은 일 실시예에 따라 미디어 컨텐츠의 전송을 스케쥴링하는 서버의 블록도이다.
도 12는 다른 실시예에 따른, 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템을 설명하기 위한 개념도이다.
도 13은 일 실시예에 따른 제 2 서버가 미디어 컨텐츠를 수신하기 위한 스케쥴링 정보를 생성하는 방법을 설명하기 위한 흐름도이다.
도 14는 일 실시예에 따른 제 2 서버가 룩업테이블을 이용하여, 미디어 컨텐츠의 송수신을 스케쥴링하는 방법을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 디바이스에 포함되어 있는 벤딩 센서의 위치를 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 경우, 스케쥴링 효과가 존재하는지 여부를 판단하는 방법을 설명하기 위한 흐름도이다.
도 16은 일 실시예에 따른 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버의 블록도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 일 실시예에 따른, 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템(10)을 설명하기 위한 개념도이다. 도 1을 참고하면, 미디어 컨텐츠의 송수신을 스케쥴링하는 시스템(10, 이하 스케쥴링 시스템)은 클라이언트 디바이스(100) 및 서버(200)를 포함할 수 있다.
도 1에 도시된 스케쥴링 시스템(10)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
일 실시예에 따르면, 클라이언트(100)는 서버(200)와 데이터를 송수신한다. 예를 들어, 클라이언트(100)는 서버(200)와 미디어 컨텐츠를 송수신할 수 있다. 다만, 이는 일 실시예일 뿐, 클라이언트(100)는 서버(200) 이외에도 프록시 서버와 같은 다른 디바이스와 통신할 수 있다. 또한, 클라이언트(100)가 서버(200)와 송수신 가능한 데이터는 미디어 컨텐츠에 한정되지 않으나, 본 명세서에서는 설명의 편의상 데이터를 미디어 컨텐츠로 설명하도록 한다.
한편, 클라이언트(100)는 서버(200)로부터 복수의 네트워크 연결들(50)을 통해 스트리밍 방식으로 미디어 컨텐츠를 수신할 수 있다. 클라이언트(100)는 서버(200)로부터 스트리밍 방식으로 미디어 컨텐츠를 수신하기 위해, 미디어 컨텐츠를 저장 가능한 버퍼를 포함한다. 다만, 이는 일 실시예일 뿐, 미디어 컨텐츠를 저장 가능한 버퍼는 클라이언트(100)의 외부에 존재할 수도 있다.
또한, 클라이언트(100)는 서버(200)측의 미디어 컨텐츠 전송을 스케쥴링(scheduling) 하기 위한 스케쥴링 정보를 생성한다. 일 실시예에 따른 클라이언트(100)는 서버(200)와의 복수의 네트워크 연결들(50)의 개수 또는 클라이언트(100)의 버퍼의 크기에 기초하여, 스케쥴링 정보를 생성할 수 있다. 클라이언트(100)가 스케쥴링 정보를 생성하는 방법에 대해서는 도 2를 참고하여, 구체적으로 후술하도록 한다.
클라이언트(100)는 다양한 형태로 구현될 수 있다. 예를 들어, 본 명세서에서 기술되는 클라이언트(100)는 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 태블릿 PC 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
일 실시예에 따른 서버(200)는 클라이언트(100)에 미디어 컨텐츠를 전송한다. 서버(200)는 서버(200)의 내부 또는 외부에 저장되어 있는 미디어 컨텐츠를 서버(200)와 클라이언트(100)간의 복수개의 네트워크 연결들(50)을 통해, 클라이언트(100)에 전송할 수 있다.
또한, 서버(200)는 복수의 네트워크 연결들(50)의 개수 또는 클라이언트(100)의 버퍼의 크기에 기초하여, 생성된 스케쥴링 정보에 따라 클라이언트(100)에 미디어 컨텐츠를 전송할 수 있다. 예를 들어, 서버(200)는 생성된 스케쥴링 정보에 따라 클라이언트(100)에 미디어 컨텐츠를 전송하는 경우, 미디어 컨텐츠가 전송되는 단위인 세그먼트의 크기를 결정할 수 있다. 서버(200)가 생성된 스케쥴링 정보에 따라 클라이언트(100)에 미디어 컨텐츠를 전송하는 방법에 대해서는 도 2 내지 도 4를 참고하여 구체적으로 후술하도록 한다.
일 실시예에 따르면, 스케쥴링 정보는 클라이언트(100)에서 생성되어 서버(200)에 전송될 수 있다. 다만, 이는 일 실시예일 뿐, 본 발명이 이에 한정되는 것은 아니다. 다른 실시예에 따르면, 서버(200)는 복수의 네트워크 연결들(50)의 개수 또는 획득된 클라이언트(100)의 버퍼 크기 정보에 기초하여 스케쥴링 정보를 생성할 수 있다. 또한, 또 다른 실시예에 따르면 서버(200)는 프록시 서버와 같은 다른 디바이스에서 복수의 네트워크 연결들(50)의 개수 또는 클라이언트(100)의 버퍼 크기 정보에 기초하여 생성된 스케쥴링 정보를 획득할 수도 있다.
도 2는 일 실시예에 따른 클라이언트(100)가 미디어 컨텐츠를 수신하기 위한 스케쥴링 정보를 서버(200)에 전송하는 방법을 설명하기 위한 흐름도이다.
단계 210에서, 클라이언트(100)는 서버(200)와 클라이언트(100)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 클라이언트(100)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)을 결정할 수 있다. 클라이언트(100)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
단계 220에서, 클라이언트(100)는 클라이언트(100)의 버퍼의 크기 단위로 수신되는 미디어 컨텐츠의 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측한다.
클라이언트(100)가 스트리밍을 통해 서버(200)로부터 미디어 컨텐츠를 수신하는 경우, 클라이언트(100)가 버퍼링 모드에 들어가면, 클라이언트(100)는 버퍼의 크기만큼 미디어 컨텐츠를 수신한 후, 다시 재생 모드로 전환된다. 클라이언트(100)는 버퍼의 크기 및 복수의 네트워크 연결들(50)의 개수를 기초로 버퍼링 모드에서 미디어 컨텐츠를 수신하는데 걸리는 시간을 예측할 수 있다.
또한, 클라이언트(100)는 서버(200)와의 복수의 네트워크 연결들(50) 각각에 세그먼트(이하, 세그먼트)들이 할당되는지 여부를 확인할 수도 있다. 여기에서, 세그먼트는 서버(200)로부터 클라이언트(100)에 미디어 컨텐츠가 전송되는 단위일 수 있다. 다만, 이는 본 발명의 일 실시예일 뿐, 전송되는 미디어 컨텐츠의 단위가 세그먼트에 한정되는 것은 아니다.
클라이언트(100)와 서버(200)간에 복수의 네트워크 연결들(50) 각각에 세그먼트들이 할당되는 경우가 일부 네트워크 연결들에 세그먼트들이 할당되는 경우에 비해, 미디어 컨텐츠를 수신하는데 걸리는 시간이 상대적으로 적을 수 있다.
이하에서는 도 4를 참고하여, 클라이언트(100)가 버퍼의 크기 및 복수의 네트워크 연결들(50)의 개수를 기초로 미디어 컨텐츠를 수신하는데 걸리는 시간을 예측하는 방법에 대해 구체적으로 설명하도록 한다.
도 4의 (a)에는, 클라이언트(100)와 서버(200)간에 복수의 네트워크 연결들의 개수가 4개이고, 6개의 기설정된 크기의 세그먼트들이 전송되는 경우, 클라이언트(100)가 세그먼트들을 수신하는데 걸리는 시간에 관한 그래프가 도시되어 있다. 여기에서, 6개의 기설정된 크기의 세그먼트들은 클라이언트(100)가 버퍼링 모드에서 재생 모드로 전환되기 전 수신하는 것으로, 클라이언트(100)의 버퍼의 크기와 대응되는 크기를 갖을 수 있다.
도 4의 (a)의 그래프를 참고하면, U 단위 시간 동안에는 복수의 네트워크 연결들(제 1 연결, 제 2 연결, 제 3 연결 및 제 4 연결) 각각에 모두 버퍼링 모드에서 재생 모드로 전환하기 위해 필요한 세그먼트가 할당된다. 한편, 이후의 U 단위 시간(U~2U) 동안에는 서버(200)로부터 전송되는 버퍼링 모드에서 재생 모드로 전환하기 위해 필요한 6개의 세그먼트 중에서 남은 2개의 세그먼트가 제 1 연결 및 제 2 연결에만 각각 할당된다. 여기에서, 남은 2개의 세그먼트는 복수의 네트워크 연결들(50) 각각에 할당되지 않고, 일부 네트워크 연결들에 할당되는 세그먼트로서, 본 명세서에서는 이러한 세그먼트를 잔여 세그먼트로 지칭하여 설명하도록 한다.
복수의 네트워크 연결들(제 1 연결, 제 2 연결, 제 3 연결 및 제 4 연결) 중에서 일부 네트워크 연결들에만(제 1 연결 및 제 2 연결) 세그먼트가 할당되는 경우, 나머지 네트워크 연결들은 버퍼링 모드에서 재생 모드로 전환하기 위한 세그먼트의 전송에 관여하지 않게 된다. 따라서, 클라이언트(100)에 전송되는 세그먼트들의 분배가 효율적으로 이루어 지지 않아 버퍼링 모드 에서 재생 모드로 전환되는데 더 오랜 시간이 소요되게 된다.
한편, 도 4의 (b)의 그래프를 참고하면, U 단위 시간 동안에는 도 4의 (a)와 같이 복수의 네트워크 연결들(제 1 연결, 제 2 연결, 제 3 연결 및 제 4 연결) 각각에 모두 버퍼링 모드에서 재생 모드로 전환하기 위해 필요한 세그먼트가 할당된다. 하지만, U 단위 시간 이후에는 기설정된 세그먼트의 크기를 변경하여, 복수의 네트워크 연결들 각각에 할당함으로써, 나머지 2개의 세그먼트들을 전송하는데 걸리는 시간이 0.5U로 단축되는 것을 확인할 수 있다.
다시 도 2를 참고하여 설명하면, 일 실시예에 따른 클라이언트(100)는 버퍼링 모드에서 재생 모드로 전환되는 시간을 최소화하기 위해 다음 수학식 1에 기초하여, 세그먼트들이 일부 네트워크 연결에 각각 할당되는 타이밍을 예측할 수 있다.
[수학식 1]
Figure 112014047379087-pat00001
상기의 수학식 1에서, S는 클라이언트(100)의 버퍼의 크기, N은 복수의 네트워크 연결들(50)의 개수이다. 수학식 1에서, A는 복수의 네트워크 연결들(50)을 이용하여, 클라이언트(100)의 버퍼에 세그먼트를 모두 전송하는데 필요한 단위 시간에서 1 단위 시간을 감소시킨 값이다. 여기에서, 1 단위 시간은 기설정된 크기의 세그먼트를 네트워크 연결을 통해 서버(200)에서 클라이언트(100)에 전송하는데 걸리는 시간이다. 또한, R은 A단위 시간이 경과한 후에, 버퍼링 모드에서 재생 모드로 전환하기 위해, 클라이언트(100)가 수신해야 하는 잔여 세그먼트의 개수이다.
일 실시예에 따른 클라이언트(100)는 클라이언트(100)의 버퍼의 크기 S와 복수의 네트워크 연결들(50)의 개수 N에 기초하여, 산출된 R값이 0이 아닌 경우, 버퍼링 모드에서 재생 모드로 전환하기 위해 소요되는 시간 중 마지막 단위 시간에 일부 네트워크 연결들에 세그먼트가 할당된다는 것을 확인할 수 있다.
예를 들어, 클라이언트(100)의 버퍼의 크기가 6이고, 복수의 네트워크 연결들(50)의 개수가 4개인 경우, 수학식 1에 기초하여 A와 R을 산출하면, 클라이언트(100)는 제 1 단위 시간(A 단위 시간)이 지나고 제 2 단위 시간에서, 2(R)개의 잔여 세그먼트를 수신할 수 있다. 클라이언트(100)는 제 2 단위 시간에서 일부 네트워크 연결들에만 할당되는 잔여 세그먼트들이 존재한다는 사실을 예측할 수 있다.
단계 230에서, 클라이언트(100)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 여기에서, 스케쥴링 정보에는 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하기 위한 세그먼트의 크기 정보가 포함될 수 있다. 예를 들어, 크기 정보는 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하기 위한 서브 세그먼트의 크기 정보를 포함할 수 있다.
일 실시예에 따른 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하기 위한 서브 세그먼트의 크기 정보는 다음의 수학식 2에 기초하여 결정될 수 있다.
[수학식 2]
Figure 112014047379087-pat00002
상기의 수학식 2에서, N은 복수의 네트워크 연결들(50)의 개수이고, R은 A단위 시간이 경과한 후에, 버퍼링 모드에서 재생 모드로 전환하기 위해, 클라이언트(100)가 수신해야 하는 세그먼트의 개수이다. 여기에서, A는 전술한 바와 같이 복수의 네트워크 연결들(50)을 이용하여, 클라이언트(100)의 버퍼에 세그먼트를 모두 전송하는데 필요한 단위 시간에서 1 단위 시간을 감소시킨 값이다. 수학식 2를 연산한 결과 산출되는 D는 복수의 네트워크 연결들 각각에서 R개의 잔여 세그먼트들을 수신하기 위해 잔여 세그먼트 별로 할당되는 네트워크 연결의 수를 의미한다.
예를 들어, 클라이언트(100)의 버퍼의 크기가 6이고, 복수의 네트워크 연결들(50)의 개수가 4개인 경우, N은 4, A는 1 및 R은 2의 값을 갖는다. 또한, D는 상기 수학식 2에 기초하여 2의 값을 갖는다. 이는 2개의 잔여 세그먼트들을 4개의 복수의 네트워크 연결들 각각을 이용하여 전송하기 위해, 한 개의 잔여 세그먼트에 할당되는 네트워크 연결의 개수가 2개임을 의미한다.
단계 240에서, 클라이언트(100)는 서버(200)에 생성된 스케쥴링 정보를 전송한다. 일 실시예에 따른 서버(200)는 클라이언트(100)로부터 수신한 스케쥴링 정보에 기초하여, 기설정된 세그먼트들의 크기를 변경한다. 서버(200)에서 스케쥴링 정보에 기초하여, 생성되는 변경된 크기의 서브 세그먼트들은 복수의 네트워크 연결들 각각에 할당될 수 있다.
예를 들어, 스케쥴링 정보에는 복수의 네트워크 연결들 각각에서 일부 네트워크 연결에 할당되는 잔여 세그먼트를 수신하기 위해 잔여 세그먼트 별로 할당되는 네트워크 연결의 수에 대한 정보를 포함할 수 있다. 잔여 세그먼트 별로 할당되는 네트워크 연결의 수에 대한 정보가 2인 경우, 서버(200)는 하나의 잔여 세그먼트가 2개의 네트워크 연결들을 통해 클라이언트(100)에 전송되도록 잔여 세그먼트의 크기를 변경할 수 있다.
도 3은 일 실시예에 따른 클라이언트(100)가 미디어 컨텐츠의 수신에 대한 스케쥴링 효과를 예측하여, 스케쥴링 여부를 결정하는 방법을 설명하기 위한 흐름도이다.
단계 310에서, 클라이언트(100)는 서버(200)와 클라이언트(100)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 일 실시예에 따른 클라이언트(100)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다. 단계 310은 전술한 도 2의 단계 210에 대응될 수 있다.
단계 320에서, 클라이언트(100)는 클라이언트(100)의 버퍼의 크기 단위로 수신되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측한다. 단계 320은 전술한 도 2의 단계 220에 대응될 수 있다.
단계 330에서, 클라이언트(100)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 여기에서, 스케쥴링 정보에는 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하기 위한 세그먼트의 크기 정보가 포함될 수 있다. 단계 330은 전술한 도 2의 단계 230에 대응될 수 있다.
단계 340에서, 클라이언트(100)는 잔여 세그먼트들이 일부 네트워크 연결을 통해 수신되는 제 1 수신 시간과 생성된 스케쥴링 정보에 기초하여 복수의 네트워크 연결들(50)을 통해 수신되는 제 2 수신 시간의 차이가 임계값을 초과하는지 여부를 판단한다.
클라이언트(100)는 제 1 수신 시간과 제 2 수신 시간의 차이가 임계값을 초과하는 경우, 스케쥴링 정보를 생성함으로써 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단할 수 있다. 제 1 수신 시간과 제 2 수신 시간의 차이가 임계값을 초과하는지 여부는 다음의 수학식 3에 의해 결정될 수 있다.
[수학식 3]
Figure 112014047379087-pat00003
상기의 수학식 3에서, N은 복수의 네트워크 연결들(50)의 개수 및 S는 버퍼의 크기를 의미한다. 수학식 3에 의해 산출되는 E는 스케쥴링을 통해 잔여 세그먼트들을 수신하는 시간이 단축되는 효과를 나타내는 파라미터이다.
E 가 임계값 1보다 큰 경우, 클라이언트(100)는 스케쥴링 정보를 생성함으로써, 잔여 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단할 수 있다. 한편, 임계값 1은 본 발명의 일 실시예일 뿐, 임계값은 다양한 값으로 설정될 수 있다.
단계 350에서, 클라이언트(100)는 생성된 스케쥴링 정보를 서버(200)에 전송한다. 일 실시예에 따른 클라이언트(100)는 스케쥴링 정보를 생성함으로써 잔여 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단되는 경우, 생성된 스케쥴링 정보를 서버(200)에 전송할 수 있다.
한편, 클라이언트(100)는 단계 340에서, 판단한 결과 제 1 수신 시간과 제 2 수신 시간의 차이가 임계값을 초과하지 않는 경우 스케쥴링 정보를 서버(200)에 전송하지 않을 수 있다. 클라이언트(100)는 스케쥴링 효과를 예측하여, 스케쥴링을 수행할 지 여부를 결정함으로써, 미디어 컨텐츠의 수신을 스케쥴링하여 소요되는 시간을 줄일 수 있다.
도 5는 일 실시예에 따른 클라이언트(100)가 룩업테이블을 이용하여, 스케쥴링 정보를 생성하는 방법을 설명하기 위한 도면이다.
클라이언트(100)는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기와 복수의 네트워크 연결들 각각에 할당되는 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 스케쥴링 정보를 생성할 수 있다.
예를 들어, 클라이언트(100)는 네트워크 상태를 모니터링하여, 서버(200)와의 복수의 네트워크 연결들(50)의 개수 N을 확인하고, 클라이언트(100)의 버퍼의 크기 S에 대한 정보를 획득할 수 있다. 클라이언트(100)는 룩업테이블로부터 복수의 네트워크 연결들(50)이 N이고, 버퍼의 크기가 S일 때, 복수의 네트워크 연결들(50) 각각에 세그먼트를 할당하기 위한 세그먼트의 크기 정보를 추출할 수 있다. 클라이언트(100)는 룩업테이블로부터 세그먼트의 크기 정보를 추출함으로써, 스케쥴링 정보를 생성하는데 소요되는 시간을 단축할 수 있다.
다른 실시예에 따르면, 룩업테이블에는 스케쥴링 효과에 대한 정보도 포함될 수 있다. 클라이언트(100)는 미리 저장되어 있는 룩업테이블로부터 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 대응되는 스케쥴링 효과에 관한 정보를 추출함으로써, 스케쥴링 여부를 결정할지 판단하는데 소요되는 시간을 단축할 수도 있다.
한편, 룩업테이블은 클라이언트(100)의 내부에 저장될 수도 있고, 클라이언트(100)와 통신 가능한 외부 디바이스에 저장될 수도 있다.
도 6은 일 실시예에 따른 클라이언트(100)가 생성된 스케쥴링 정보에 기초하여 서버(200)로부터 미디어 컨텐츠를 수신하는 방법을 설명하기 위한 흐름도이다.
단계 610에서, 클라이언트(100)는 서버(200)와 클라이언트(100)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 일 실시예에 따른 클라이언트(100)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다. 단계 610은 전술한 도 3의 단계 310에 대응될 수 있다.
단계 620에서, 클라이언트(100)는 클라이언트(100)의 버퍼의 크기 단위로 수신되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측한다. 단계 620은 전술한 도 3의 단계 320에 대응될 수 있다.
단계 630에서, 클라이언트(100)는 예측된 버퍼링 타이밍에서, 복수의 네트워크 연결들의 데이터 전송 속도에 기초하여 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하는 스케쥴링 정보를 생성한다. 여기에서, 스케쥴링 정보에는 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하기 위한 잔여 세그먼트들의 크기 정보가 포함될 수 있다.
일 실시예에 따른 클라이언트(100)는 복수의 네트워크 연결들(50) 각각의 데이터 전송 속도간의 차이가 기설정된 값 미만인 경우에는 전술한 수학식 1 및 수학식 2에 기초하여, 세그먼트 별로 할당되는 네트워크 연결의 수를 결정할 수 있다. 세그먼트의 크기가 결정된 네트워크 연결의 수에 기초하여 변경된 결과 생성된 서브 세그먼트들은 복수의 네트워크 연결들(50)각각에 할당될 수 있다.
한편, 클라이언트(100)는 복수의 네트워크 연결들(50) 각각의 데이터 전송 속도 간의 차이가 기설정된 값 이상인 경우에는, 복수의 네트워크 연결들 간의 데이터 전송 속도의 비율에 기초하여 스케쥴링 정보를 생성할 수 있다. 복수의 네트워크 연결들(50)간에 전송 속도 간의 차이가 기설정된 값 이상인 경우, 복수의 네트워크 연결들(50) 각각에 세그먼트들을 할당하기 위한 스케쥴링 정보는 다음의 수학식 4 내지 수학식 6에 기초하여 생성될 수 있다.
[수학식 4]
Figure 112014047379087-pat00004
[수학식 5]
Figure 112014047379087-pat00005
[수학식 6]
Figure 112014047379087-pat00006
전술한 수학식 4에서
Figure 112014047379087-pat00007
는 i번째 네트워크 연결의 데이터 전송 속도 및
Figure 112014047379087-pat00008
은 복수의 네트워크 연결들(50) 중에서 최소 데이터 전송 속도를 나타낸다. 한편, H는 복수의 네트워크 연결들(50)에 대해 최소 데이터 전송 속도를 기준으로, 결정된 가상 네트워크 연결들의 개수이다.
또한, 수학식 5를 참고하면, S는 클라이언트(100)의 버퍼의 크기, A는 가상 네트워크 연결들을 이용하여, 클라이언트(100)의 버퍼에 세그먼트를 모두 전송하는데 필요한 단위 시간에서 1 단위 시간을 감소시킨 값이다. 여기에서, 1 단위 시간은 기설정된 크기의 세그먼트를 네트워크 연결을 통해 서버(200)에서 클라이언트(100)에 전송하는데 걸리는 시간이다. 또한, R은 A단위 시간이 경과한 후에, 버퍼링 모드에서 재생 모드로 전환하기 위해, 클라이언트(100)가 수신해야 하는 잔여 세그먼트의 개수이다.
한편, 수학식 6을 참고하면, D는 동일한 단위 시간 안에 R개의 잔여 세그먼트들을 모두 수신하기 위해, 각각의 잔여 세그먼트에 할당되는 가상 네트워크 연결의 개수이다. 또한, 는 동일한 단위 시간 안에 R 개의 잔여 세그먼트들을 모두 다운받기 위해, i번째 네트워크 연결에 할당되는 서브 세그먼트의 크기를 나타낸다.
단계 640에서, 클라이언트(100)는 생성된 스케쥴링 정보를 서버(200)에 전송한다. 일 실시예에 따른 클라이언트(100)는 스케쥴링 정보를 생성함으로써 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단되는 경우, 생성된 스케쥴링 정보를 서버(200)에 전송할 수 있다. 단계 640은 전술한 도 3의 단계 350에 대응될 수 있다.
단계 650에서, 클라이언트(100)는 전송된 스케쥴링 정보에 기초하여 미디어 컨텐츠를 수신한다.
서버(200)는 클라이언트(100)로부터 수신한 스케쥴링 정보에 기초하여, 잔여 세그먼트들의 크기를 변경함으로써 서브 세그먼트들을 생성할 수 있다. 여기에서, 스케쥴링 정보에는 복수의 네트워크 연결들 각각에서 R개의 세그먼트를 수신하기 위해 세그먼트 별로 할당되는 네트워크 연결의 수에 대한 정보가 포함될 수 있다. 서버(200)는 기설정된 크기를 갖는 세그먼트를 할당되는 네트워크 연결의 수로 나누어 서브 세그먼트들을 생성할 수 있다.
한편, 클라이언트(100)는 스케쥴링 정보에 기초하여, 서버(200)에서 기설정된 크기의 세그먼트들의 크기를 변경한 결과 생성되는 서브 세그먼트들을 수신할 수 있다.
도 7은 일 실시예에 따른 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트(100)의 블록도이다. 도 7을 참고하면, 미디어 컨텐츠의 수신을 스케쥴링하는 클라이언트(100)는 제어부(110), 스케쥴러(120) 및 통신부(130)를 포함할 수 있다.
도 7에 도시된 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
제어부(110)는, 통상적으로 미디어 컨텐츠의 수신을 스케쥴링하는 클라이언트(100)의 전반적인 동작을 제어한다. 예를 들어, 제어부(110)는, 메모리(미도시)에 저장된 프로그램들을 실행함으로써, 스케쥴러(120) 및 통신부(130) 등을 전반적으로 제어할 수 있다.
제어부(110)는 서버(200)와 클라이언트(100)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 제어부(110)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)을 결정할 수 있다. 제어부(110)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
제어부(110)는 스케쥴러(120)에서 생성된 스케쥴링 정보에 따른 효과를 예측할 수도 있다. 제어부(110)는 세그먼트들이 일부 네트워크 연결을 통해 수신되는 제 1 수신 시간과 세그먼트들이 생성된 스케쥴링 정보에 기초하여 복수의 네트워크 연결들(50)을 통해 수신되는 제 2 수신 시간의 차이가 임계값을 초과하는지 여부를 판단하여, 스케쥴링 정보에 따른 효과를 예측할 수 있다. 예를 들어, 제어부(110)는 제 1 수신 시간과 제 2 수신 시간의 차이가 기설정된 임계값을 초과하는 경우, 스케쥴링 정보를 생성함으로써 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단할 수 있다.
스케쥴러(120)는 클라이언트(100)의 버퍼의 크기 단위로 수신되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측한다.
또한, 스케쥴러(120)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 스케쥴러(120)는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 기초하여, 일부 네트워크 연결에 할당되는 세그먼트들을 복수의 네트워크 연결들 각각에 할당하기 위해 하나의 잔여 세그먼트에 할당되는 네트워크 연결의 개수를 결정할 수 있다.
한편, 스케쥴러(120)는 기저장된 룩업테이블에 기초하여, 별도의 연산 과정 없이 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 대응되는 스케쥴링 정보를 추출할 수도 있다.
다른 실시예에 따르면, 기저장된 룩업테이블에는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 대응되는 스케쥴링 효과에 대한 정보가 포함될 수 있다. 일 실시예에 따른 제어부(110)는 스케쥴링 효과가 존재하는지 여부를 확인하기 위한 연산을 수행할 필요 없이 룩업테이블에서, 버퍼의 크기 및 복수의 네트워크 연결들(50)의 개수에 대응되는 스케쥴링 효과 정보를 추출하여, 스케쥴링의 효과가 존재하는지 여부를 판단할 수 있다.
통신부(130)는 서버(200)에 생성된 스케쥴링 정보를 전송한다. 일 실시예에 따른 서버(200)는 클라이언트(100)로부터 수신한 스케쥴링 정보에 기초하여, 기설정된 잔여 세그먼트들의 크기를 변경한다. 서버(200)에서 스케쥴링 정보에 기초하여, 세그먼트들의 크기를 변경한 결과 생성되는 미디어 컨텐츠의 서브 세그먼트들은 복수의 네트워크 연결들 각각에 할당될 수 있다. 통신부(130)는 복수의 네트워크 연결들 각각에 할당된 서브 세그먼트들을 수신할 수 있다.
도 8은 다른 실시예에 따른 서버(200)에서 미디어 컨텐츠의 송신을 스케쥴링 하는 방법을 설명하기 위한 흐름도이다.
단계 810에서, 서버(200)는 클라이언트(100)와 서버(200)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 서버(200)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)을 결정할 수 있다. 또한, 서버(200)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
단계 820에서, 서버(200)는 클라이언트(100)의 버퍼의 크기 단위로 전송되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 전송되는 버퍼링 타이밍을 예측한다. 일 실시예에 따른 서버(200)는 클라이언트(100)의 버퍼의 크기 정보를 획득할 수 있다. 서버(200)에서 스트리밍을 통해 클라이언트(100)에 세그먼트들을 전송하는 경우, 서버(200)는 클라이언트(100)의 버퍼 크기 만큼의 세그먼트들을 전송할 수 있다. 서버(200)는 획득한 클라이언트(100)의 버퍼의 크기 정보를 통해, 클라이언트(100)에 전송하는 세그먼트들의 개수를 결정할 수 있다.
서버(200)는 결정된 복수의 네트워크 연결들(50)의 개수 정보 및 전송되는 세그먼트들의 크기 정보에 기초하여, 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 세그먼트들이 전송되는지 여부를 판단할 수 있다. 서버(200)가 복수의 네트워크 연결들(50) 중 일부 네트워크 연결만을 통해 세그먼트들이 전송되는지 판단하는 구체적인 방법은 도 4를 참고하여, 전술한 수학식 1 및 수학식 2와 동일하다.
단계 830에서, 서버(200)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 세그먼트들이 복수의 네트워크 연결들(50) 각각에 할당되도록 스케쥴링 한다. 서버(200)는 전술한 수학식 1에 기초하여, 버퍼의 크기 정보와 복수의 네트워크 연결들(50)의 개수 정보를 기초로, 잔여 세그먼트들의 개수(R)를 획득할 수 있다. 서버(200)는 전술한 수학식 2에 기초하여, 잔여 세그먼트들 각각에 할당되는 네트워크 연결들의 개수를 산출할 수 있다.
서버(200)는 산출된 개수의 네트워크 연결들 각각에 하나의 잔여 세그먼트가 할당될 수 있도록 잔여 세그먼트의 크기를 변경할 수 있다. 예를 들어, 하나의 잔여 세그먼트에 산출된 개수의 네트워크 연결들이 2개인 경우, 서버(200)는 잔여 세그먼트의 절반의 크기를 갖는 서브 세그먼트를 생성할 수 있다.
일 실시예에 따른 서버(200)는 잔여 세그먼트를 분할한 결과 생성되는 복수의 서브 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당할 수 있다. 서버(200)는 잔여 세그먼트들을 분할하여, 복수의 네트워크 연결들(50) 각각에 할당함으로써, 미디어 컨텐츠를 클라이언트(100)에 전송하는데 소요되는 시간을 단축할 수 있다.
도 9는 일 실시예에 따른 서버(200)가 룩업테이블을 이용하여, 미디어 컨텐츠의 전송을 스케쥴링하는 방법을 설명하기 위한 도면이다.
서버(200)는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기와 복수의 네트워크 연결들(50) 각각에 할당되는 세그먼트들의 크기와의 관계가 정의되어 있는 룩업테이블로부터 스케쥴링 정보를 생성할 수 있다.
예를 들어, 서버(200)는 네트워크 상태를 모니터링하여, 클라이언트(100)와의 복수의 네트워크 연결들(50)의 개수 N을 확인하고, 클라이언트(100)의 버퍼의 크기 S에 대한 정보를 획득할 수 있다. 서버(200)는 룩업테이블로부터 복수의 네트워크 연결들(50)이 N이고, 버퍼의 크기가 S일 때, 복수의 네트워크 연결들(50) 각각에 세그먼트들을 할당하기 위한 세그먼트의 크기 정보를 추출할 수 있다. 서버(200)는 룩업테이블로부터 세그먼트의 크기 정보를 추출함으로써, 스케쥴링 정보를 생성하는데 소요되는 시간을 단축할 수 있다.
다른 실시예에 따르면, 룩업테이블에는 스케쥴링 효과에 대한 정보도 포함될 수 있다. 서버(200)는 클라이언트(100)에 세그먼트들을 스케쥴링하여 전송하는 경우, 전송 시간이 단축되는지 여부를 판단할 수 있다. 일 실시예에 따른 서버(200)는 스케쥴링으로 인한 효과가 존재하지 않는다고 판단하는 경우에는 세그먼트들을 스케쥴링 하지 않고, 클라이언트(100)에 전송할 수 있다. 룩업테이블에 복수의 네트워크 연결들(50)이 N이고, 버퍼의 크기가 S일 때, 스케쥴링 효과가 존재하는지 여부에 대한 정보가 포함될 수 있다. 이러한 경우, 서버(200)는 별도의 연산과정 없이 룩업테이블로부터 추출된 스케쥴링 효과가 존재하는지 여부에 대한 정보에 기초하여, 세그먼트들을 스케쥴링하여, 클라이언트(100)에 전송할 것인지 여부를 결정할 수 있다.
한편, 서버(200)가 룩업테이블을 이용하지 않고 스케쥴링 효과가 존재하는지 여부를 판단하는 방법에 대해서는 도 10을 참고하여, 다음에서 구체적으로 설명하도록 한다.
도 10은 일 실시예에 따른 서버(200)가 스케쥴링 효과가 존재하는지 여부를 판단하고, 판단 결과에 기초하여 스케쥴링을 수행하는 방법을 설명하기 위한 흐름도이다.
단계 1010에서, 서버(200)는 클라이언트(100)와 서버(200)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 서버(200)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다. 단계 1010은 단계 810과 대응될 수 있다.
단계 1020에서, 서버(200)는 클라이언트(100)의 버퍼의 크기 단위로 전송되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 전송되는 버퍼링 타이밍을 예측한다. 단계 1020은 단계 820과 대응될 수 있다.
단계 1030에서, 서버(200)는 예측된 버퍼링 타이밍에서 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 스케쥴링 정보에는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하기 위해, 하나의 잔여 세그먼트에 할당되는 네트워크 연결들의 개수에 대한 정보가 포함될 수 있다. 하나의 잔여 세그먼트에 할당되는 네트워크 연결들의 개수에 대한 정보는 도 4에서 설명한 수학식 1 및 수학식 2와 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기 정보에 기초하여 산출될 수 있다.
단계 1040에서, 서버(200)는 세그먼트들이 일부 네트워크 연결을 통해 전송되는 제 1 전송 시간과 생성된 스케쥴링 정보에 기초하여 복수의 네트워크 연결들(50)을 통해 전송되는 제 2 전송 시간의 차이가 임계값을 초과하는지 여부를 판단한다.
서버(200)는 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는 경우, 스케쥴링으로 인한 버퍼링 시간의 단축 효과가 있는 것으로 판단할 수 있다. 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는지 여부는 전술한 수학식 3에 기초하여 결정될 수 있다.
단계 1050에서, 서버(200)는 분할된 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당한다. 서버(200)는 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는 경우, 스케쥴링 정보에 포함된 하나의 잔여 세그먼트에 할당되는 네트워크 연결들의 개수 정보에 기초하여, 잔여 세그먼트들을 분할할 수 있다. 서버(200)는 분할된 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하여 클라이언트(100)에 전송할 수 있다.
도 11은 일 실시예에 따라 미디어 컨텐츠의 전송을 스케쥴링하는 서버(200)의 블록도이다.
제어부(1010)는 클라이언트(100)와 서버(200)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 제어부(1010)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)을 결정할 수 있다. 또한, 제어부(1010)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
스케쥴러(1020)는 클라이언트(100)의 버퍼의 크기 단위로 전송되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 전송되는 버퍼링 타이밍을 예측한다. 일 실시예에 따른 스케쥴러(1020)는 클라이언트(100)의 버퍼의 크기 정보를 획득할 수 있다. 서버(200)에서 스트리밍을 통해 클라이언트(100)에 세그먼트들을 전송하는 경우, 서버(200)는 클라이언트(100)의 버퍼 크기만큼의 세그먼트들을 전송할 수 있다. 스케쥴러(1020)는 획득한 클라이언트(100)의 버퍼의 크기 정보를 통해, 클라이언트(100)에 전송하는 세그먼트들의 개수를 결정할 수 있다.
스케쥴러(1020)는 결정된 복수의 네트워크 연결들(50)의 개수 정보 및 전송되는 세그먼트들의 크기 정보에 기초하여, 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 세그먼트들이 전송되는지 여부를 판단할 수 있다.
스케쥴러(1020)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 잔여 세그먼트들이 복수의 네트워크 연결들(50) 각각에 할당되도록 스케쥴링 한다. 스케쥴러(1020)는 전술한 수학식 1에 기초하여, 버퍼의 크기 정보와 복수의 네트워크 연결들(50)의 개수 정보를 기초로, 잔여 세그먼트들의 개수(R)를 획득할 수 있다.
스케쥴러(1020)는 산출된 개수의 네트워크 연결들 각각에 하나의 잔여 세그먼트가 할당될 수 있도록 잔여 세그먼트의 크기를 변경할 수 있다. 예를 들어, 하나의 잔여 세그먼트에 산출된 개수의 네트워크 연결들이 2개인 경우, 스케쥴러(1020)는 잔여 세그먼트가 절반의 크기를 갖도록 서브 세그먼트로 분할할 수 있다.
또한 스케쥴러(1020)는 잔여 세그먼트를 분할한 결과 생성되는 복수의 서브 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당할 수 있다.
도 12는 다른 실시예에 따른, 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템(20)을 설명하기 위한 개념도이다. 도 12를 참고하면, 미디어 컨텐츠의 송수신을 스케쥴링하는 시스템(20, 이하 스케쥴링 시스템)은 클라이언트 디바이스(100), 제 1 서버(도 1의 서버와 대응, 200) 및 제 2 서버(1200)를 포함할 수 있다.
도 12에 도시된 스케쥴링 시스템(20)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 12에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
일 실시예에 따르면, 클라이언트(100)는 제 1 서버(200) 및 제 2 서버(1200)와 데이터를 송수신한다. 예를 들어, 클라이언트(100)는 서버(200)와 미디어 컨텐츠를 송수신할 수 있다. 또한 클라이언트(100)는 제 2 서버(1200)에 미디어 컨텐츠의 송수신을 스케쥴링 하기 위해 필요한 정보를 전송할 수 있다. 예를 들어, 클라이언트(100)는 제 2 서버(1200)에 클라이언트(100)의 버퍼의 크기에 대한 정보를 전송할 수 있다.
한편, 클라이언트(100)는 서버(200)로부터 복수의 네트워크 연결들(50)을 통해 스트리밍 방식으로 미디어 컨텐츠를 수신할 수 있다. 클라이언트(100)는 제 1 서버(200)로부터 스트리밍 방식으로 미디어 컨텐츠를 수신하기 위해, 미디어 컨텐츠를 저장 가능한 버퍼를 포함한다.
클라이언트(100)는 다양한 형태로 구현될 수 있다. 예를 들어, 본 명세서에서 기술되는 클라이언트(100)는 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 태블릿 PC 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
일 실시예에 따른 제 1 서버(200)는 클라이언트(100)에 미디어 컨텐츠를 전송한다. 제 1 서버(200)는 제 1 서버(200)의 내부 또는 외부에 저장되어 있는 미디어 컨텐츠를 제 1 서버(200)와 클라이언트(100)간의 복수개의 네트워크 연결들(50)을 통해, 클라이언트(100)에 전송할 수 있다.
또한, 제 1 서버(200)는 제 2 서버(1200)와 통신할 수 있다. 제 1 서버(200)는 제 2 서버(1200)로부터 수신한 스케쥴링 정보에 기초하여, 미디어 컨텐츠의 전송 단위인 세그먼트의 크기를 결정할 수 있다. 이에 대해서는 도 13을 참고하여, 구체적으로 후술하도록 한다.
일 실시예에 따른 제 2 서버(1200)는 클라이언트(100) 및 제 1 서버(200)와 각각 통신할 수 있다. 예를 들어, 제 2 서버(1200)는 클라이언트(100)로부터 클라이언트(100)의 버퍼의 크기 정보를 획득할 수 있다. 또한, 제 2 서버(1200)는 클라이언트(100) 또는 제 1 서버(200)로부터 클라이언트(100)와 제 1 서버(200)간에 미디어 컨텐츠를 송수신 가능한 복수의 네트워크 연결들(50)의 개수에 대한 정보를 획득할 수 있다.
제 2 서버(1200)는 획득한 클라이언트(100)의 버퍼의 크기 정보 및 복수의 네트워크 연결들(50)의 개수 정보에 기초하여, 제 1 서버(200)로부터 클라이언트(100)에 전송되는 세그먼트들이 복수의 네트워크 연결들(50) 각각에 할당되도록 스케쥴링 정보를 생성할 수 있다. 제 2 서버(1200)가 스케쥴링 정보를 생성하는 방법에 대해서는 도 13을 참고하여 구체적으로 설명하도록 한다.
한편, 제 2 서버(1200)는 생성된 스케쥴링 정보를 제 1 서버(200)에 전송할 수 있다. 제 1 서버(200)는 제 2 서버(1200)로부터 수신한 스케쥴링 정보에 기초하여 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당할 수 있다.
도 13은 일 실시예에 따른 제 2 서버(1200)가 미디어 컨텐츠를 수신하기 위한 스케쥴링 정보를 생성하는 방법을 설명하기 위한 흐름도이다.
단계 1310에서, 제 2 서버(1200)는 클라이언트(100)와 제 1 서버(200)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 제 2 서버(1200)는 클라이언트(100)와 제 1 서버(200)간에 설정된 네트워크의 상황을 모니터링 할 수 있다. 제 2 서버(1200)는 모니터링 결과, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
단계 1320에서, 제 2 서버(1200)는 클라이언트(100)의 버퍼의 크기 단위로 전송되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 전송되는 버퍼링 타이밍을 예측한다. 일 실시예에 따른 제 2 서버(1200)는 획득한 클라이언트(100)의 버퍼의 크기 정보에 기초하여 제 1 서버(200)로부터 클라이언트(100)에 전송되는 세그먼트들의 크기에 대한 정보를 획득할 수 있다. 예를 들어, 스트리밍을 통해, 제 1 서버(200)에서 클라이언트(100)로 데이터를 전송하는 경우, 제 1 서버(200)는 버퍼 크기만큼의 세그먼트들을 전송할 수 있다. 따라서, 클라이언트(100)의 버퍼의 크기만큼의 세그먼트들이 제 1 서버(200)로부터 클라이언트(100)로 전송될 수 있다.
제 2 서버(1200)는 결정된 복수의 네트워크 연결들(50)의 개수 정보 및 전송되는 세그먼트들의 크기 정보에 기초하여, 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 세그먼트들이 전송되는지 여부를 판단할 수 있다. 제 1 서버(200)가 복수의 네트워크 연결들(50) 중 일부 네트워크 연결만을 통해 세그먼트들이 전송되는지 판단하는 구체적인 방법은 도 4를 참고하여, 전술한 수학식 1 및 수학식 2와 동일하다.
단계 1330에서, 제 2 서버(1200)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하는 스케쥴링 정보를 생성한다. 제 2 서버(1200)는 전술한 수학식 1에 기초하여, 버퍼의 크기 정보와 복수의 네트워크 연결들(50)의 개수 정보를 기초로, 잔여 세그먼트들의 개수(R)를 획득할 수 있다.
제 2 서버(1200)는 산출된 개수의 네트워크 연결들 각각에 하나의 잔여 세그먼트가 할당될 수 있도록 잔여 세그먼트의 크기를 변경하기 위한 스케쥴링 정보를 생성할 수 있다. 단계 1330에서, 제 2 서버(1200)가 스케쥴링 정보를 생성하는 방법은 도 2의 단계 330에서, 클라이언트(100)가 스케쥴링 정보를 생성하는 방법과 대응될 수 있다.
단계 1340에서, 제 2 서버(1200)는 서버(200)에 생성된 스케쥴링 정보를 전송한다. 서버(200)는 제 2 서버(1200)로부터 수신한 스케쥴링 정보에 기초하여, 세그먼트들이 복수의 네트워크 연결들(50) 각각에 할당되도록 세그먼트들의 크기를 변경하여 서브 세그먼트들을 생성할 수 있다. 예를 들어, 세그먼트에 산출된 개수의 네트워크 연결들이 2개인 경우, 제 2 서버(1200)는 잔여 세그먼트를 절반의 크기를 갖는 서브 세그먼트로 분할할 수 있다.
일 실시예에 따른 제 1 서버(200)는 잔여 세그먼트를 분할한 결과 생성되는 복수의 서브 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당할 수 있다. 제 1 서버(200)는 잔여 세그먼트들을 분할하여, 복수의 네트워크 연결들(50) 각각에 할당함으로써, 미디어 컨텐츠를 클라이언트(100)에 전송하는데 소요되는 시간을 단축할 수 있다.
도 14는 일 실시예에 따른 제 2 서버(1200)가 룩업테이블을 이용하여, 미디어 컨텐츠의 송수신을 스케쥴링하는 방법을 설명하기 위한 도면이다.
제 2 서버(1200)는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기와 복수의 네트워크 연결들(50) 각각에 할당되는 세그먼트들의 크기와의 관계가 정의되어 있는 룩업테이블로부터 스케쥴링 정보를 생성할 수 있다.
예를 들어, 제 2 서버(1200)는 네트워크 상태를 모니터링하여, 클라이언트(100)와 제 1 서버(200)간의 미디어 컨텐츠를 송수신 가능한 복수의 네트워크 연결들(50)의 개수 N을 확인하고, 클라이언트(100)의 버퍼의 크기 S에 대한 정보를 획득할 수 있다. 제 2 서버(1200)는 룩업테이블로부터 복수의 네트워크 연결들(50)이 N이고, 버퍼의 크기가 S일 때, 복수의 네트워크 연결들(50) 각각에 세그먼트들을 할당하기 위한 세그먼트의 크기 정보를 추출할 수 있다. 제 2 서버(1200)는 룩업테이블로부터 세그먼트의 크기 정보를 추출함으로써, 스케쥴링 정보를 생성하는데 소요되는 시간을 단축할 수 있다.
다른 실시예에 따르면, 룩업테이블에는 스케쥴링 효과에 대한 정보도 포함될 수 있다. 제 2 서버(1200)는 클라이언트(100)에 세그먼트들을 스케쥴링하여 전송하는 경우, 전송 시간이 단축되는지 여부를 판단할 수 있다. 일 실시예에 따른 제 2 서버(1200)는 스케쥴링으로 인한 효과가 존재하지 않는다고 판단하는 경우에는 세그먼트들을 스케쥴링 하지 않고, 클라이언트(100)에 전송할 수 있다. 룩업테이블에 복수의 네트워크 연결들(50)이 N이고, 버퍼의 크기가 S일 때, 스케쥴링 효과가 존재하는지 여부에 대한 정보가 포함될 수 있다. 이러한 경우, 제 2 서버(1200)는 별도의 연산과정 없이 룩업테이블로부터 추출된 스케쥴링 효과가 존재하는지 여부에 대한 정보에 기초하여, 스케쥴링 정보를 생성할 수 있다.
한편, 제 2 서버(1200)가 룩업테이블을 이용하지 않고 스케쥴링 효과가 존재하는지 여부를 판단하는 방법에 대해서는 도 15을 참고하여, 다음에서 구체적으로 설명하도록 한다.
도 15는 일 실시예에 따른 제 2 서버(1200)가 미디어 컨텐츠의 송수신을 스케쥴링 하는 경우, 스케쥴링 효과가 존재하는지 여부를 판단하는 방법을 설명하기 위한 흐름도이다.
단계 1510에서, 제 2 서버(1200)는 클라이언트(100)와 서버(200)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 제 2 서버(1200)는 클라이언트(100)와 제 1 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다. 단계 1510은 단계 1310과 대응될 수 있다.
단계 1520에서, 제 2 서버(1200)는 클라이언트(100)의 버퍼의 크기 단위로 전송되는 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 전송되는 버퍼링 타이밍을 예측한다. 단계 1020은 단계 820과 대응될 수 있다.
단계 1530에서, 제 2 서버(1200)는 예측된 버퍼링 타이밍에서 일부 네트워크 연결에 할당되는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 스케쥴링 정보에는 잔여 세그먼트들을 복수의 네트워크 연결들 각각에 할당하기 위해, 하나의 잔여 세그먼트에 할당되는 네트워크 연결들의 개수에 대한 정보가 포함될 수 있다. 하나의 잔여 세그먼트에 할당되는 네트워크 연결들의 개수에 대한 정보는 도 4에서 설명한 수학식 1 및 수학식 2와 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기 정보에 기초하여 산출될 수 있다.
단계 1540에서, 제 2 서버(1200)는 세그먼트들이 일부 네트워크 연결을 통해 전송되는 제 1 전송 시간과 생성된 스케쥴링 정보에 기초하여 복수의 네트워크 연결들(50)을 통해 전송되는 제 2 전송 시간의 차이가 임계값을 초과하는지 여부를 판단한다.
제 2 서버(1200)는 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는 경우, 스케쥴링으로 인한 버퍼링 시간의 단축 효과가 있는 것으로 판단할 수 있다. 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는지 여부는 전술한 수학식 3에 기초하여 결정될 수 있다.
단계 1550에서, 제 2 서버(1200)는 제 1 서버(200)에 생성된 스케쥴링 정보를 전송한다. 제 1 서버(1200)는 제 1 전송 시간과 제 2 전송 시간의 차이가 임계값을 초과하는 경우, 스케쥴링 정보를 제 1 서버(200)에 전송할 수 있다. 제 1 서버(200)는 분할된 세그먼트들을 복수의 네트워크 연결들(50) 각각에 할당하여 클라이언트(100)에 전송할 수 있다.
도 16은 일 실시예에 따른 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버(1200)의 블록도이다. 도 16을 참고하면, 미디어 컨텐츠의 수신을 스케쥴링하는 제 2 서버(1200)는 제어부(1210), 스케쥴러(1230) 및 통신부(1230)를 포함할 수 있다.
도 16에 도시된 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버(1200)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 16에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
제어부(1210)는, 통상적으로 미디어 컨텐츠의 수신을 스케쥴링하는 클라이언트(100)의 전반적인 동작을 제어한다. 예를 들어, 제어부(1210)는, 메모리(미도시)에 저장된 프로그램들을 실행함으로써, 스케쥴러(1220) 및 통신부(1230) 등을 전반적으로 제어할 수 있다.
제어부(1210)는 제 1 서버(200)와 클라이언트(100)간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들(50)을 결정한다. 제어부(1210)는 클라이언트(100)와 서버(200)간에 설정된 네트워크의 상황을 모니터링 하여, 클라이언트(100)와 서버(200)를 연결하는 복수의 네트워크 연결들(50)을 결정할 수 있다. 제어부(1210)는 결정된 복수의 네트워크 연결들(50)의 개수 정보를 획득할 수 있다.
제어부(1210)는 스케쥴러(1220)에서 생성된 스케쥴링 정보에 따른 효과를 예측할 수도 있다. 제어부(1210)는 미디어 컨텐츠의 세그먼트들이 일부 네트워크 연결을 통해 수신되는 제 1 수신 시간과 미디어 컨텐츠의 세그먼트들이 생성된 스케쥴링 정보에 기초하여 복수의 네트워크 연결들(50)을 통해 수신되는 제 2 수신 시간의 차이가 임계값을 초과하는지 여부를 판단하여, 스케쥴링 정보에 따른 효과를 예측할 수 있다. 예를 들어, 제어부(1210)는 제 1 수신 시간과 제 2 수신 시간의 차이가 기설정된 임계값을 초과하는 경우, 스케쥴링 정보를 생성함으로써 미디어 컨텐츠의 세그먼트들을 수신하는 시간을 단축하는 효과가 있다고 판단할 수 있다.
스케쥴러(1220)는 클라이언트(100)의 버퍼의 크기 단위로 수신되는 미디어 컨텐츠의 세그먼트들이 결정된 복수의 네트워크 연결들(50) 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측한다.
또한, 스케쥴러(2120)는 예측된 버퍼링 타이밍에서, 일부 네트워크 연결에 할당되는 미디어 컨텐츠의 세그먼트들을 복수의 네트워크 연결들 각각에 할당하는 스케쥴링 정보를 생성한다. 스케쥴러(1220)는 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 기초하여, 일부 네트워크 연결에 할당되는 미디어 컨텐츠의 세그먼트들을 복수의 네트워크 연결들 각각에 할당하기 위해 하나의 미디어 컨텐츠의 세그먼트에 할당되는 네트워크 연결의 개수를 결정할 수 있다.
한편, 스케쥴러(1220)는 기저장된 룩업테이블에 기초하여, 별도의 연산 과정 없이 복수의 네트워크 연결들(50)의 개수 및 클라이언트(100)의 버퍼의 크기에 대응되는 스케쥴링 정보를 추출할 수도 있다.
통신부(1230)는 제 1 서버(200)에 생성된 스케쥴링 정보를 전송한다. 일 실시예에 따른 제 1 서버(200)는 통신부(1230)로부터 수신한 스케쥴링 정보에 기초하여, 기설정된 미디어 컨텐츠의 세그먼트들의 크기를 변경한다. 제 1 서버(200)는 세그먼트들의 크기를 변경한 결과 생성되는 서브 세그먼트들을 복수의 네트워크 연결들(50) 각각을 통해 클라이언트(100)에 전송할 수 있다.
본 발명에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 발명에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 본 발명에서 전체적으로 병합하여 나타낸 것과 동일하게 본 발명에 병합될 수 있다.
본 발명의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 본 발명의 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 본 발명은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
본 발명은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 발명은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 발명은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 발명은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, "필수적인", "중요하게" 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
10: 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템
50: 복수의 네트워크 연결들
100: 클라이언트
200: 서버

Claims (44)

  1. 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계;
    상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계;
    상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하기 위한 스케쥴링 정보를 생성하는 단계; 및
    상기 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  2. 삭제
  3. 제 1항에 있어서, 상기 스케쥴링 정보는,
    상기 복수의 네트워크 연결들 각각에 할당 가능한 서브 세그먼트의 크기 정보를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  4. 제 1 항에 있어서, 상기 스케쥴링 정보를 생성하는 단계는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하는 단계를 포함하고,
    상기 생성된 스케쥴링 정보를 전송하는 단계는,
    상기 제 1 수신 시간 및 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  5. 제 4 항에 있어서, 상기 스케쥴링 정보를 전송하는 단계는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 서버에 스케쥴링 요청을 전송하는 단계를 더 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  6. 제 1항에 있어서, 상기 스케쥴링 정보를 생성하는 단계는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 단계를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  7. 제 1항에 있어서,
    상기 전송된 스케쥴링 정보에 기초하여 상기 미디어 컨텐츠를 수신하는 단계를 더 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  8. 제 7 항에 있어서, 상기 미디어 컨텐츠를 수신하는 단계는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 서버에서 상기 생성된 스케쥴링 정보에 기초하여 분할된 결과 생성된 서브 세그먼트들을 수신하는 단계를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  9. 제 8 항에 있어서, 상기 서브 세그먼트들을 수신하는 단계는,
    상기 복수의 네트워크 연결들 각각으로부터 동일한 개수의 적어도 하나의 서브 세그먼트를 수신하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  10. 제9항에 있어서, 상기 적어도 하나의 서브 세그먼트를 수신하는 단계는,
    상기 복수의 네트워크 연결들 각각의 데이터 전송 속도가 상이한 경우, 상기 복수의 네트워크 연결들 간의 데이터 전송 속도의 비율에 기초하여, 상기 복수의 네트워크 연결들 각각에 할당되는 서브 세그먼트의 개수를 결정하는 단계를 포함하는 클라이언트가 미디어 컨텐츠의 수신을 스케쥴링 하는 방법.
  11. 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계;
    상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계;
    상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하는 단계;
    상기 생성된 서브 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 단계를 포함하는 서버가 미디어 컨텐츠의 송신을 스케쥴링 하는 방법.
  12. 삭제
  13. 제 11 항에 있어서, 상기 스케쥴링 하는 단계는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하는 단계; 및
    상기 제 1 수신 시간과 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 단계를 포함하는 서버가 미디어 컨텐츠의 송신을 스케쥴링 하는 방법.
  14. 제 13 항에 있어서, 상기 스케쥴링 하는 단계는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 미디어 컨텐츠의 세그먼트들을 분할하는 단계를 포함하는 서버가 미디어 컨텐츠의 송신을 스케쥴링 하는 방법.
  15. 제 11항에 있어서, 상기 스케쥴링 하는 단계는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 단계를 포함하는 서버가 미디어 컨텐츠의 송신을 스케쥴링 하는 방법.
  16. 클라이언트와 제 1 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 단계;
    상기 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하는 단계;
    상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하기 위한 스케쥴링 정보를 생성하는 단계; 및
    상기 제 1 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함하는 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법.
  17. 삭제
  18. 삭제
  19. 제 16 항에 있어서, 상기 스케쥴링 정보를 생성하는 단계는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하는 단계를 포함하고,
    상기 생성된 스케쥴링 정보를 전송하는 단계는,
    상기 제 1 수신 시간 및 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 생성된 스케쥴링 정보를 전송하는 단계를 포함하는 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법.
  20. 제 19 항에 있어서, 상기 스케쥴링 정보를 전송하는 단계는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 제 1 서버에 스케쥴링 요청을 전송하는 단계를 더 포함하는 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법.
  21. 제 16항에 있어서, 상기 스케쥴링 정보를 생성하는 단계는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 단계를 포함하는 제 2 서버가 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법.
  22. 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부;
    상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하고, 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하기 위한 스케쥴링 정보를 생성하는 스케쥴러; 및
    상기 생성된 스케쥴링 정보를 상기 서버에 전송하는 통신부를 포함하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  23. 삭제
  24. 제 22항에 있어서, 상기 스케쥴링 정보는,
    상기 복수의 네트워크 연결들 각각에 할당 가능한 서브 세그먼트의 크기 정보를 포함하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  25. 제 22 항에 있어서, 상기 제어부는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하고,
    상기 통신부는,
    상기 제 1 수신 시간 및 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 생성된 스케쥴링 정보를 전송하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  26. 제 25 항에 있어서, 상기 제어부는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 통신부가 상기 서버에 스케쥴링 요청을 전송하도록 제어하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  27. 제 22항에 있어서, 상기 스케쥴러는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  28. 제 22항에 있어서, 상기 통신부는,
    상기 전송된 스케쥴링 정보에 기초하여 상기 미디어 컨텐츠를 수신하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  29. 제 28 항에 있어서, 상기 통신부는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 서버에서 상기 생성된 스케쥴링 정보에 기초하여 분할된 결과 생성된 서브 세그먼트들을 수신하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  30. 제 29 항에 있어서, 상기 통신부는,
    상기 복수의 네트워크 연결들 각각으로부터 동일한 개수의 적어도 하나의 서브 세그먼트를 수신하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  31. 제 29항에 있어서, 상기 스케쥴러는,
    상기 복수의 네트워크 연결들 각각의 데이터 전송 속도가 상이한 경우, 상기 복수의 네트워크 연결들 간의 데이터 전송 속도의 비율에 기초하여, 상기 복수의 네트워크 연결들 각각에 할당되는 서브 세그먼트의 개수를 결정하는 미디어 컨텐츠의 수신을 스케쥴링 하는 클라이언트.
  32. 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부;
    상기 클라이언트의 버퍼의 크기 단위로 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하고, 상기 예측된 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 스케쥴러를 포함하는 미디어 컨텐츠의 송신을 스케쥴링 하는 서버.
  33. 삭제
  34. 제 32항에 있어서, 상기 스케쥴러는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하고, 상기 제 1 수신 시간과 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들 각각에 할당되도록 스케쥴링 하는 미디어 컨텐츠의 송신을 스케쥴링 하는 서버.
  35. 제 34 항에 있어서, 상기 스케쥴러는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 미디어 컨텐츠의 세그먼트들을 분할하는 미디어 컨텐츠의 송신을 스케쥴링 하는 서버.
  36. 제 32항에 있어서, 상기 스케쥴러는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 미디어 컨텐츠의 송신을 스케쥴링 하는 서버.
  37. 클라이언트와 제 1 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들을 결정하는 제어부;
    상기 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 상기 미디어 컨텐츠의 세그먼트들이 상기 결정된 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍을 예측하고, 상기 예측된 버퍼링 타이밍에서 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하기 위한 스케쥴링 정보를 생성하는 스케쥴러; 및
    상기 제 1 서버에 상기 생성된 스케쥴링 정보를 전송하는 통신부를 포함하는 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버.
  38. 삭제
  39. 삭제
  40. 제 37 항에 있어서, 상기 스케쥴러는,
    상기 미디어 컨텐츠의 세그먼트들이 상기 일부 네트워크 연결들을 통해 수신되는 제 1 수신 시간과 상기 미디어 컨텐츠의 세그먼트들이 상기 복수의 네트워크 연결들을 통해 수신되는 제 2 수신 시간을 비교하고,
    상기 통신부는,
    상기 제 1 수신 시간 및 상기 제 2 수신 시간을 비교한 결과에 기초하여, 상기 생성된 스케쥴링 정보를 전송하는 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버.
  41. 제 40 항에 있어서, 상기 제어부는,
    상기 제 1 수신 시간이 상기 제 2 수신 시간 보다 임계값 이상인 경우, 상기 제 1 서버에 스케쥴링 요청을 전송하도록 상기 통신부를 제어하는 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버.
  42. 제 37항에 있어서, 상기 스케쥴러는,
    상기 복수의 네트워크 연결들의 개수 및 상기 버퍼의 크기와 상기 복수의 네트워크 연결들 각각에 할당되는 미디어 컨텐츠의 서브 세그먼트의 크기와의 관계가 정의되어 있는 룩업테이블로부터 상기 미디어 컨텐츠의 서브 세그먼트의 크기에 관한 정보를 추출하는 미디어 컨텐츠의 송수신을 스케쥴링 하는 제 2 서버.
  43. 클라이언트의 버퍼의 크기 단위로 상기 클라이언트에 수신되는 미디어 컨텐츠의 세그먼트들이 상기 클라이언트와 서버간의 미디어 컨텐츠를 수신 가능한 복수의 네트워크 연결들 중 일부 네트워크 연결을 통해 수신되는 버퍼링 타이밍에서, 상기 일부 네트워크 연결에 할당되는 상기 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결의 수에 기초하여 분할하여 서브 세그먼트들을 생성하고, 상기 생성된 서브 세그먼트들을 상기 복수의 네트워크 연결들 각각에 할당하기 위한 스케쥴링 정보를 생성하는 단계;
    상기 서버에 상기 생성된 스케쥴링 정보를 전송하는 단계;
    상기 서버가 상기 클라이언트로부터 수신한 스케쥴링 정보에 기초하여, 상기 미디어 컨텐츠의 세그먼트들을 분할하는 단계;
    상기 서버가 상기 분할된 미디어 컨텐츠의 세그먼트들을 상기 복수의 네트워크 연결들 각각을 통해 상기 클라이언트에 전송하는 단계; 및
    상기 클라이언트가 상기 서버로부터 상기 분할된 미디어 컨텐츠의 세그먼트들을 수신하는 단계를 포함하는 클라이언트와 서버 간의 미디어 컨텐츠의 송수신을 스케쥴링 하는 시스템.
  44. 제 1항 및 제3항 내지 제11항 및 제13항 내지 제16항 및 제19항 내지 제 21항 중 어느 한 항의 방법을 수행하는 프로그램이 기록된 컴퓨터 판독이 가능한 기록매체.
KR1020140060486A 2014-05-20 2014-05-20 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템 KR102216125B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140060486A KR102216125B1 (ko) 2014-05-20 2014-05-20 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템
EP15796789.4A EP3148201B1 (en) 2014-05-20 2015-05-19 Method, device, and system for scheduling transmission and reception of media contents
CN201580026989.6A CN106416273B (zh) 2014-05-20 2015-05-19 对媒体内容的发送和接收进行调度的方法、设备和系统
PCT/KR2015/005016 WO2015178669A1 (ko) 2014-05-20 2015-05-19 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템
US15/312,059 US10630744B2 (en) 2014-05-20 2015-05-19 Method, device, and system for scheduling transmission and reception of media contents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140060486A KR102216125B1 (ko) 2014-05-20 2014-05-20 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20150133551A KR20150133551A (ko) 2015-11-30
KR102216125B1 true KR102216125B1 (ko) 2021-02-16

Family

ID=54554270

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140060486A KR102216125B1 (ko) 2014-05-20 2014-05-20 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템

Country Status (5)

Country Link
US (1) US10630744B2 (ko)
EP (1) EP3148201B1 (ko)
KR (1) KR102216125B1 (ko)
CN (1) CN106416273B (ko)
WO (1) WO2015178669A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197017A1 (ko) * 2021-03-18 2022-09-22 삼성전자 주식회사 복수의 미디어 스트림을 전송하는 전자 장치 및 그 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594250B2 (en) * 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US7716312B2 (en) * 2002-11-13 2010-05-11 Avid Technology, Inc. Method and system for transferring large data files over parallel connections
US20060007882A1 (en) * 2004-07-07 2006-01-12 Meshnetworks, Inc. System and method for selecting stable routes in wireless networks
US7719967B2 (en) * 2005-09-28 2010-05-18 Netapp, Inc. Cumulative TCP congestion control
US7783773B2 (en) * 2006-07-24 2010-08-24 Microsoft Corporation Glitch-free media streaming
US8224981B2 (en) 2006-11-30 2012-07-17 Speedbit Ltd. Accelerated multimedia file download and playback
WO2008105695A1 (en) 2007-03-01 2008-09-04 Telefonaktiebolaget Lm Ericsson (Publ) Bit streams combination of downloaded multimedia files
US8060653B2 (en) * 2007-04-23 2011-11-15 Ianywhere Solutions, Inc. Background synchronization
KR100971351B1 (ko) * 2008-10-22 2010-07-20 성균관대학교산학협력단 씨에이알과 서브 채널을 이용한 근접 주문형 비디오 전송방법
KR101301004B1 (ko) 2008-11-25 2013-08-29 에스케이플래닛 주식회사 컨텐츠 분산 저장형 멀티미디어 스트리밍 시스템 및 방법
KR20100059117A (ko) 2008-11-26 2010-06-04 에스케이텔레콤 주식회사 컨텐츠 분산형 스트리밍 시스템, 캐시서버 및 컨텐츠 스트리밍 방법
KR100924309B1 (ko) * 2009-06-04 2009-11-02 전자부품연구원 시간확장성과 버퍼상태판단을 통한 품질 적응적 멀티미디어 데이터 스트리밍 방법 및 시스템
US8386621B2 (en) * 2010-03-12 2013-02-26 Netflix, Inc. Parallel streaming
KR20120011774A (ko) 2010-07-29 2012-02-08 한국전자통신연구원 전송 스케쥴링 방법
WO2011150644A1 (zh) 2010-12-17 2011-12-08 华为技术有限公司 一种启动阶段的流媒体数据获取、发送方法及装置
EP2477397A1 (en) * 2011-01-12 2012-07-18 Nxp B.V. Handling the initialization for HTTP streaming of multimedia files via parallel TCP connections
US8897753B2 (en) * 2011-10-12 2014-11-25 Motorola Mobility Llc Method for retrieving content by a wireless communication device having first and second radio access interfaces, wireless communication device and communication system
KR101889717B1 (ko) 2011-11-15 2018-08-21 삼성전자주식회사 무선 통신 시스템에서 자원 할당 스케줄링 방법 및 장치
US20130311614A1 (en) * 2012-05-21 2013-11-21 Motorola Mobility, Inc. Method for retrieving content and wireless communication device for performing same
US9369513B2 (en) * 2013-04-12 2016-06-14 Futurewei Technologies, Inc. Utility-maximization framework for dynamic adaptive video streaming over hypertext transfer protocol in multiuser-multiple input multiple output long-term evolution networks
US20140317060A1 (en) * 2013-04-18 2014-10-23 Intronis, Inc. Remote backup of large files

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197017A1 (ko) * 2021-03-18 2022-09-22 삼성전자 주식회사 복수의 미디어 스트림을 전송하는 전자 장치 및 그 방법

Also Published As

Publication number Publication date
EP3148201A4 (en) 2017-11-29
EP3148201B1 (en) 2020-04-15
US10630744B2 (en) 2020-04-21
CN106416273B (zh) 2019-11-26
KR20150133551A (ko) 2015-11-30
US20170111420A1 (en) 2017-04-20
CN106416273A (zh) 2017-02-15
EP3148201A1 (en) 2017-03-29
WO2015178669A1 (ko) 2015-11-26

Similar Documents

Publication Publication Date Title
US11489735B2 (en) Dynamic network allocation apparatus, dynamic network allocation method and non-transitory computer-readable medium
EP3161827B1 (en) Efficient frame rendering
EP3255553A1 (en) Transmission control method and device for direct memory access
CN107967164B (zh) 一种虚拟机热迁移的方法及系统
GB2523568A (en) Method for processing requests and server device processing requests
US20170264500A1 (en) Number-of-scales estimation apparatus, number-of-scales management system, number-of-scales estimation method, number-of-scales management method, and storage medium
KR102287566B1 (ko) 분산 시스템 아키텍처에서 애플리케이션을 실행하기 위한 방법
US10432718B2 (en) Predictive file synchronization
KR102216125B1 (ko) 미디어 컨텐츠의 송수신을 스케쥴링 하는 방법, 장치 및 시스템
US9983911B2 (en) Analysis controller, analysis control method and computer-readable medium
US20220141115A1 (en) Gateway, communication system, and communication method
KR101589983B1 (ko) 패킷 전송 간격 제어 방법
KR102160252B1 (ko) 가상 스위칭 방법 및 장치
US10104571B1 (en) System for distributing data using a designated device
JP2015046869A5 (ko)
WO2014045417A1 (ja) 情報処理装置、および負荷試験方法
KR102227644B1 (ko) 마이크로 데이터센터 환경에서의 학습형 워크로드 측정 방법
KR20080050237A (ko) 직접 메모리 접근 제어 방법 및 장치
JP2014110538A (ja) ネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラム
US11362890B2 (en) System management device, system management method, program, and information processing system
JP5230665B2 (ja) データ受信装置、データ受信方法
KR101637022B1 (ko) 컨텐트를 송신하는 방법 및 장치, 컨텐트를 수신하는 방법 및 장치
US9866494B2 (en) Wireless communication using delayed frame transmission
JP6501691B2 (ja) コンテンツ配信システムのクライアント装置、コンテンツの再生開始タイミングを判定する方法及びプログラム
KR102592152B1 (ko) 확장성 있는 원격 코드 실행 방법 및 코드 실행 시스템

Legal Events

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