KR101038645B1 - apparatus and method for prevention of underflow and overflow in streaming system - Google Patents

apparatus and method for prevention of underflow and overflow in streaming system Download PDF

Info

Publication number
KR101038645B1
KR101038645B1 KR1020090025653A KR20090025653A KR101038645B1 KR 101038645 B1 KR101038645 B1 KR 101038645B1 KR 1020090025653 A KR1020090025653 A KR 1020090025653A KR 20090025653 A KR20090025653 A KR 20090025653A KR 101038645 B1 KR101038645 B1 KR 101038645B1
Authority
KR
South Korea
Prior art keywords
buffer
client
mcb
size
avg
Prior art date
Application number
KR1020090025653A
Other languages
Korean (ko)
Other versions
KR20100107546A (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 KR1020090025653A priority Critical patent/KR101038645B1/en
Publication of KR20100107546A publication Critical patent/KR20100107546A/en
Application granted granted Critical
Publication of KR101038645B1 publication Critical patent/KR101038645B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]

Landscapes

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

Abstract

본 발명은 네트워크를 통해 수신되는 RTP 패킷을 버퍼에 임시 저장하고, 다수개의 RTP 패킷으로 프레임이 구성되면, 상기 프레임을 디코딩하는 적어도 하나 이상의 클라이언트와, 상기 클라이언트의 상기 버퍼의 최대 크기와, 현재 버퍼 레벨과, 상기 네트워크의 대역폭과, 상기 버퍼의 초기 버퍼링 시간을 기반으로 목적 전송률을 산출하여 상기 RTP 패킷을 전송하는 스트리밍 서버를 포함하는 스트리밍 시스템을 개시하여, 스트리밍 서버가 클라이언트의 버퍼 크기를 파악하고, 현재 RTP 패킷(프레임)이 저장된 현재 버퍼 레벨을 측정하여 목적 전송율을 추정하고, 목적 전송율로 클라이언트로 RTP 패킷을 전송하여 현재 버퍼 레벨이 일정하게 유지도록 함에 의해 언더플로우/오버플로우를 방지할 수 있도록 하는 것이다.The present invention temporarily stores an RTP packet received through a network in a buffer, and when the frame is composed of a plurality of RTP packets, at least one client decoding the frame, a maximum size of the buffer of the client, and a current buffer. Initiating a streaming system comprising a streaming server for transmitting the RTP packet by calculating a target transmission rate based on the level, the bandwidth of the network, and the initial buffering time of the buffer, the streaming server to determine the buffer size of the client By measuring the current buffer level in which the current RTP packet (frame) is stored, the target transfer rate is estimated, and the RTP packet is sent to the client at the target transfer rate to keep the current buffer level constant to prevent underflow / overflow. To ensure that

Description

스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템{apparatus and method for prevention of underflow and overflow in streaming system}Apparatus and method for prevention of underflow and overflow in streaming system}

본 발명은 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템에 관한 것으로, 더욱 상세하게는, 스트리밍 서버가 클라이언트의 버퍼 크기를 파악하고, 현재 RTP(Real time Protocol) 패킷(프레임)이 저장된 현재 버퍼 레벨을 측정하여 목적 전송율을 추정하고, 목적 전송율로 클라이언트로 RTP 패킷을 전송하여 현재 버퍼 레벨이 일정하게 유지도록 함에 의해 언더플로우/오버플로우를 방지할 수 있는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템에 관한 것이다.The present invention relates to an underflow / overflow prevention method of a streaming system, and more particularly, to a streaming server that understands a buffer size of a client and currently stores a real time protocol (RTP) packet (frame). Measure the buffer level to estimate the destination rate, and send the RTP packet to the client at the destination rate to keep the current buffer level constant to prevent underflow / overflow in streaming systems that can prevent underflow / overflow It relates to a method and a system thereof.

네트워크 기술 및 전자 기술의 발전으로, 유선 네트워크뿐만 아니라 무선 네트워크가 널리 보급되어 있으며, 이동 통신 기술이 발전함에 의해 무선 네트워크가 제공하는 전송 속도 역시 빠르게 증가하고 있다.With the development of network technology and electronic technology, wireless networks as well as wired networks are widely used, and the transmission speed provided by wireless networks is rapidly increasing due to the development of mobile communication technology.

그리고, 네트워크를 통해 가입자들에게 제공하는 서비스 역시 다양해지고 있으며, 네트워크의 전송 속도가 증가함에 따라 실시간으로 끊김없이 멀티미디어 컨텐츠를 제공하는 스트리밍 서비스가 개발되어 많은 가입자들이 유선 및 무선 네트워크를 통해 스트리밍 서비스를 이용하고 있다.In addition, the services provided to subscribers through the network are also diversified, and as the transmission speed of the network increases, a streaming service has been developed that provides multimedia content in real time without interruption, so that many subscribers can use streaming services through wired and wireless networks. I use it.

기본적으로, 스트리밍 서버의 전송률은 전송하고자 하는 데이터(컨텐츠)의 요구 사항에 따르며, MPEG(Motion Picture Experts Groups)으로 대표되는 오디오/비디오 데이터(RTP 패킷)는 스트리밍 서버의 전송률을 제어하기 위한 시간 정보가 기록되게 된다.Basically, the streaming rate of the streaming server depends on the requirements of the data (content) to be transmitted, and the audio / video data (RTP packet) represented by Motion Picture Experts Groups (MPEG) is time information for controlling the transmission rate of the streaming server. Will be recorded.

그러나, 데이터에 기록되는 전송률에 따라 스트리밍 서버가 전송률을 제어하는 경우에도 장시간 스트리밍 서비스를 하게 되면 문제가 발생한다. 즉, 시간 정보의 정밀도가 높은 경우에도 정확한 전송 속도를 계산하는 것은 불가능하며, 아주 약간의 전송 속도 차이가 장시간 후에는 버퍼 오버플로우(Buffer Overflow)나 언더플로우(Underflow)을 발생시켜 서비스 품질(Quality of Service)를 저하시킨다.However, even when the streaming server controls the transmission rate according to the transmission rate recorded in the data, a problem occurs when the streaming service is performed for a long time. In other words, even when the time information is high, it is impossible to calculate the exact transmission rate, and after a very long time difference, a buffer overflow or underflow occurs after a long time. of Service).

또한, 스트리밍 서버와 스트리밍 클라이언트는 네트워크에서 각각 독립적인 개체로서, 별도의 참조 시각장치(Reference Clock)를 가지게 되고, 저가의 수정진동자(Oscillator)를 사용하는 경우 안정적인 동작을 제공할 수 없다. In addition, the streaming server and the streaming client are independent entities in the network, and have a separate reference clock and cannot provide stable operation when using an inexpensive crystal oscillator.

그러므로, 스트리밍 클라이언트는 스트리밍 서버로부터 수신되는 데이터(프레임)보다 더 많은 용량을 요구하거나, 스트리밍 서버로부터 수신되는 데이터만큼 사용하지 않는 경우가 발생하게 된다.Therefore, the streaming client may require more capacity than the data (frame) received from the streaming server, or may not use as much data as received from the streaming server.

도 1은 종래 기술에 의한 클라이언트의 버퍼 레벨 변화를 나타내는 그래프로 서, 도 1에 도시된 바와 같이, 실제 클라이언트에서 오디오/비디오 데이터(이하 'RTP 패킷'이라 칭함)가 소모되는 속도보다 스트리밍 서버의 전송 속도가 빠른 경우 버퍼 레벨(buffer level)은 지속적으로 높아지게 되어 클라이언트에서 정의한 최대 버퍼 레벨을 초과하는 경우가 발생한다.1 is a graph illustrating a change in a buffer level of a client according to the prior art, and as shown in FIG. If the transfer rate is high, the buffer level will continue to increase, exceeding the maximum buffer level defined by the client.

또한, 스트리밍 서버가 RTP 패킷을 전송하는 전송률을 시간 정보만으로 결정하는 방식은 스트리밍 시작 시점부터 실제 재생이 시작되기까지의 시간 지연이 발생하는 문제가 있다.In addition, the method of determining the transmission rate for transmitting the RTP packet by only the time information has a problem that a time delay occurs from the start of the streaming until the actual playback starts.

도 2는 스트리밍이 시작된 시점부터 버퍼 레벨이 변화하는 양상을 나타내는 그래프로, 도 2에 도시된 바와 같이, 초기 시간 지연이 발생하는 이유는, 클라이언트의 디코더가 여러개의 RTP 패킷으로 구성되는 하나의 프레임을 소모하기 위해서는 최소한으로 필요한 RTP 패킷의 양이 있고, 전송 지연의 변화(delay variance)를 어느 정도 수용해 줄 수 있도록 재생을 시작하기 전에 채워져야 하는 초기 버퍼 레벨이 정해져 있기 때문에 발생한다.FIG. 2 is a graph illustrating a change in the buffer level from the start of streaming. As shown in FIG. 2, an initial time delay occurs because a decoder of a client includes one frame composed of several RTP packets. This occurs because there is a minimum amount of RTP packets required to consume, and an initial buffer level that must be filled before starting playback to accommodate some of the delay variance.

따라서, 스트리밍 서버는 클라이언트의 버퍼에 저장되는 현재 버퍼 레벨이 요구되는 요구 버퍼 레벨을 유지할 수 있도록 지속적으로 전송률을 제어해야 하며, 스트리밍이 시작되는 시점에서 최대한 빠른 속도로 버퍼에 요구 버퍼 레벨로 채워줘야 할 필요가 있다.Therefore, the streaming server must continuously control the transfer rate so that the current buffer level stored in the client's buffer can maintain the required buffer level, and fill the buffer with the requested buffer level as quickly as possible at the beginning of streaming. Needs to be.

따라서, 스트리밍 서버는 클라이언트의 버퍼가 최대 버퍼 크기를 넘어서지 않으면서 비워지지 않도록 지속적으로 전송률을 제어해야 하며, 스트리밍이 시작되는 시점에서 최대한 빠른 속도로 버퍼에 요구 버퍼 레벨로 채워줘야 할 필요가 있 다.Therefore, the streaming server must continuously control the transmission rate so that the client's buffer does not become empty without exceeding the maximum buffer size. The streaming server needs to fill the buffer to the required buffer level as quickly as possible at the beginning of streaming. .

본 발명은 상술한 필요성을 충족시키기 위해 제안되는 것으로, 스트리밍 시스템의 스트리밍 서버가 클라이언트의 버퍼 크기와, 현재 저장된 RTP 패킷, 즉 현재 버퍼 레벨을 측정하여 클라이언트의 버퍼에 항상 일정하게 RTP 패킷(프레임)이 저장되도록 함에 의해 클라이언트의 언더플로우/오버플로우를 방지할 수 있는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템를 제공하는데 그 목적이 있다.The present invention is proposed to meet the above-mentioned need, and the streaming server of the streaming system measures the buffer size of the client and the currently stored RTP packet, that is, the current buffer level, so that the RTP packet (frame) is always constant in the client's buffer. It is an object of the present invention to provide an underflow / overflow prevention method and a system of a streaming system capable of preventing underflow / overflow of a client by allowing the stored data to be stored.

그리고, 본 발명은 스트리밍 서버가 클라이언트의 최대 버퍼 크기와, 현재 버퍼 레벨을 기반으로 클라이언트의 버퍼에 오버플로우를 방지할 정도의 RTP 패킷(프레임)이 항상 일정하게 저장되도록 전송률을 제어할 수 있는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템를 제공하는데 그 목적이 있다.In addition, the present invention provides a streaming server that can control the transmission rate so that the RTP packet (frame) is always stored constantly enough to prevent the overflow of the client buffer based on the maximum buffer size of the client and the current buffer level An object of the present invention is to provide a method of preventing underflow / overflow of a system and a system thereof.

본 발명의 일측면에 따른 스트리밍 시스템은, 네트워크를 통해 수신되는 RTP 패킷을 버퍼에 임시 저장하고, 다수개의 RTP 패킷으로 프레임이 구성되면, 상기 프레임을 디코딩하는 적어도 하나 이상의 클라이언트와, 상기 클라이언트의 상기 버퍼의 최대 크기와, 현재 버퍼 레벨과, 상기 네트워크의 대역폭과, 상기 버퍼의 초 기 버퍼링 시간을 기반으로 목적 전송률을 산출하여 상기 RTP 패킷을 전송하는 스트리밍 서버를 포함한다.Streaming system according to an aspect of the present invention, the temporary storage of the RTP packet received over the network in the buffer, and if the frame is composed of a plurality of RTP packets, at least one or more clients for decoding the frame, the client of the And a streaming server for transmitting the RTP packet based on a maximum size of a buffer, a current buffer level, a bandwidth of the network, and an initial buffering time of the buffer.

상기 클라이언트는, RTCP APP 패킷의 응용 데이터 필드에 알림 메시지임을 알리는 메시지 타입(MSG Type)과, 버퍼 크기(레벨)(buffer level)를 포함시켜 알림 메시지를 생성하여 상기 스트리밍 서버로 전송한다.The client generates a notification message by including a message type (MSG Type) indicating a notification message and a buffer level in the application data field of the RTCP APP packet and transmits the notification message to the streaming server.

상기 스트리밍 서버는, 상기 클라이언트로 전송한 상기 RTP 패킷의 크기와, 상기 디코딩되는 RTP 패킷의 크기를 기반으로 상기 버퍼 크기를 예측한다.The streaming server predicts the buffer size based on the size of the RTP packet transmitted to the client and the size of the decoded RTP packet.

상기 스트리밍 서버는, 상기 클라이언트의 최대 버퍼 크기와, 상기 버퍼에 저장된 프레임 중 가장 먼저 저장된 프레임의 크기와, 상기 버퍼에 마지막에 저장된 프레임의 크기와, 현재 시간과, 초기 버퍼링 시간을 기반으로 상기 현재 버퍼 레벨을 산출한다.The streaming server may be configured based on the maximum buffer size of the client, the size of the first stored frame among the frames stored in the buffer, the size of the last stored frame in the buffer, the current time, and the initial buffering time. Calculate the buffer level.

상기 스트리밍 서버는, 하기 수학식과 같이 상기 목적 전송률을 산출하는 것을 특징으로 하며, 여기서 'SCB'는 현재 버퍼 레벨이고,'RAVG'는 평균 전송률이고, 'RMAX'는 상기 네트워크의 최대 대역폭이고, 'RMIN'는 상기 네트워크의 최소 대역폭이고, 'TIBT'는 초기 버퍼링 시간이고, 'W'는 가중치이고, 'K'는 비례 상수이다.The streaming server may calculate the target data rate as shown in the following equation, wherein 'S CB ' is the current buffer level, 'R AVG ' is the average data rate, and 'R MAX ' is the maximum bandwidth of the network. R MIN is the minimum bandwidth of the network, T IBT is the initial buffering time, W is the weight, and K is the proportional constant.

[수학식][Equation]

RCUR = (1.0 - W) x RPREV + W x K1 x RAVG x (SMCB - SCB) / (K2 x SMCB - SCB) + RMIN R CUR = (1.0-W) x R PREV + W x K 1 x R AVG x (S MCB -S CB ) / (K 2 x S MCB -S CB ) + R MIN

상기 스트리밍 서버는, 하기 수학식과 같이 상기 평균 전송률(RAVG)과, 상기 네트워크의 최대 대역폭(RMAX)을 산출한다.The streaming server calculates the average rate R AVG and the maximum bandwidth R MAX of the network as shown in the following equation.

[수학식][Equation]

RAVG = K1 x RAVG x (1/4 x SMCB) / (K2 x SMCB - 3/4 x SMCB), when SCB = 3/4 SMCB R AVG = K 1 x R AVG x (1/4 x S MCB ) / (K 2 x S MCB -3/4 x S MCB ), when S CB = 3/4 S MCB

RMAX = K1 x RAVG x SMCB / (K2 x SMCB), when SCB = 0R MAX = K 1 x R AVG x S MCB / (K 2 x S MCB ), when S CB = 0

상기 스트리밍 서버는, 상기 클라이언트의 버퍼에 상기 RTP 패킷이 저장된 현재 버퍼 레벨이 오버플로우가 방지될 정도로 상기 버퍼의 최대 크기보다 일정 비례 값만큼 작아지도록 설정하는 것이 바람직하다.The streaming server preferably sets the current buffer level in which the RTP packet is stored in the client buffer to be smaller than the maximum size of the buffer by a certain proportional value to prevent overflow.

본 발명의 다른 측면에 따른 스트리밍 시스템의 언더플로우/오버플로우 방지 방법은, 스트리밍 서버가 적어도 하나 이상의 클라이언트의 버퍼 크기를 파악하는 단계와, 상기 클라이언트의 현재 버퍼 레벨을 측정하는 단계와, 상기 클라이언트의 상기 버퍼의 최대 크기와, 현재 버퍼 레벨과, 상기 네트워크의 대역폭과, 상기 버퍼의 초기 버퍼링 시간을 기반으로 상기 버퍼에 RTP 패킷이 저장된 현재 버퍼 레벨이 오버플로우가 방지될 정도로 상기 버퍼의 최대 크기보다 일정 비례 값만큼 작아지도록 설정된 목적 전송률을 산출하는 단계와, 상기 목적 전송률에 따라 상기 RTP 패킷을 전송하는 단계를 포함한다.According to another aspect of the present invention, a method for preventing underflow / overflow of a streaming system includes: determining, by a streaming server, a buffer size of at least one or more clients; measuring a current buffer level of the client; Based on the maximum size of the buffer, the current buffer level, the bandwidth of the network, and the initial buffering time of the buffer, the current buffer level where RTP packets are stored in the buffer is larger than the maximum size of the buffer to prevent overflow. Calculating a target transmission rate set to be smaller by a predetermined proportional value, and transmitting the RTP packet according to the target transmission rate.

상기 클라이언트의 버퍼 크기를 파악하는 단계는, 상기 클라이언트가 RTCP APP 패킷의 응용 데이터 필드에 알림 메시지임을 알리는 메시지 타입(MSG Type)과, 버퍼 크기(레벨)(buffer level)를 포함시켜 알림 메시지를 생성하여 상기 스트리밍 서버로 전송한다.The determining of the buffer size of the client may include generating a notification message by including a message type (MSG Type) indicating a notification message in an application data field of an RTCP APP packet and a buffer level. To the streaming server.

상기 클라이언트의 버퍼 크기를 파악하는 단계는, 상기 스트리밍 서버가 상기 클라이언트로 전송한 상기 RTP 패킷의 크기와, 디코딩되는 RTP 패킷의 크기를 기반으로 상기 버퍼 크기를 예측한다.In determining the buffer size of the client, the buffer size predicts the buffer size based on the size of the RTP packet transmitted to the client and the size of the decoded RTP packet.

상기 현재 버퍼 레벨을 측정하는 단계는, 상기 클라이언트의 최대 버퍼 크기와, 상기 버퍼에 저장된 프레임 중 가장 먼저 저장된 프레임의 크기와, 상기 버퍼에 마지막에 저장된 프레임의 크기와, 현재 시간과, 초기 버퍼링 시간을 기반으로 상기 현재 버퍼 레벨을 산출한다.The measuring of the current buffer level may include a maximum buffer size of the client, a size of a frame stored first among the frames stored in the buffer, a size of a frame last stored in the buffer, a current time, and an initial buffering time. Compute the current buffer level based on.

상기 목적 전송률을 산출하는 단계는, 상기 스트리밍 서버가 하기 수학식과 같이 상기 목적 전송률을 산출하며, 여기서 'SCB'는 현재 버퍼 레벨이고,'RAVG'는 평균 전송률이고, 'RMAX'는 상기 네트워크의 최대 대역폭이고, 'RMIN'는 상기 네트워크의 최소 대역폭이고, 'TIBT'는 초기 버퍼링 시간이고, 'W'는 가중치이고, 'K'는 비례 상수이다.In the calculating of the target rate, the streaming server calculates the target rate as shown in the following equation, wherein 'S CB ' is the current buffer level, 'R AVG ' is the average rate, and 'R MAX ' is The maximum bandwidth of the network, 'R MIN ' is the minimum bandwidth of the network, 'T IBT ' is the initial buffering time, 'W' is a weight, 'K' is a proportional constant.

[수학식][Equation]

RCUR = (1.0 - W) x RPREV + W x K1 x RAVG x (SMCB - SCB) / (K2 x SMCB - SCB) + RMIN R CUR = (1.0-W) x R PREV + W x K 1 x R AVG x (S MCB -S CB ) / (K 2 x S MCB -S CB ) + R MIN

상기 목적 전송률을 산출하는 단계는, 하기 수학식과 같이 상기 평균 전송률(RAVG)과, 상기 네트워크의 최대 대역폭(RMAX)을 산출한다.The calculating of the target data rate may include calculating the average data rate R AVG and the maximum bandwidth R MAX of the network as shown in the following equation.

[수학식][Equation]

RAVG = K1 x RAVG x (1/4 x SMCB) / (K2 x SMCB - 3/4 x SMCB), when SCB = 3/4 SMCB R AVG = K 1 x R AVG x (1/4 x S MCB ) / (K 2 x S MCB -3/4 x S MCB ), when S CB = 3/4 S MCB

RMAX = K1 x RAVG x SMCB / (K2 x SMCB), when SCB = 0R MAX = K 1 x R AVG x S MCB / (K 2 x S MCB ), when S CB = 0

상술한 본 발명에 따르면, 스트리밍 서버가 클라이언트의 버퍼 크기를 파악하고, 현재 RTP 패킷(프레임)이 저장된 현재 버퍼 레벨을 측정하여 목적 전송율을 추정하고, 목적 전송율로 RTP 패킷을 전송함에 의해 네트워크의 상태 등의 이유로 현재 버퍼 레벨이 변화하지 않도록 일정하게 유지할 수 있으므로, 언더플로우/오버플로우를 방지하여 높은 서비스 품질을 제공할 수 있다.According to the present invention described above, the streaming server determines the buffer size of the client, estimates the target transmission rate by measuring the current buffer level in which the current RTP packet (frame) is stored, and transmits the RTP packet at the target transmission rate. For example, the current buffer level can be kept constant so as not to change, thereby providing high quality of service by preventing underflow / overflow.

이하 본 발명에 따른 스트리밍 시스템의 언더플로우/오버플로우 방지 방법 및 그 시스템를 첨부한 도면을 참조하여 상세 설명하고, 본 발명의 주된 기술 내용을 흐리거나, 주지된 기술 내용에 대한 상세 설명은 생략한다.Hereinafter, a method for preventing an underflow / overflow of a streaming system and a system thereof according to the present invention will be described in detail with reference to the accompanying drawings, and detailed descriptions of the main technical contents of the present invention or the well-known technical contents will be omitted.

도 3a는 본 발명에 따른 스트리밍 시스템의 간략한 네트워크 도면이고, 도 3b는 클라이언트의 버퍼 모델링을 나타내는 도면이다.3A is a simplified network diagram of a streaming system according to the present invention, and FIG. 3B is a diagram illustrating buffer modeling of a client.

도 3a를 참조하면, 스트리밍 시스템은 네트워크를 통해 클라이언트(200)로 RTP 패킷을 전송하는 스트리밍 서버(100)(server)와, 스트리밍 서버(100)로부터 수 신되는 RTP 패킷을 버퍼(220)에 임시 저장하고, 여러개의 RTP 패킷이 하나의 프레임으로 구성되면, 디코더(210)(decoder)로 읽어들여 디코딩한 이후에 재생하는 클라이언트(200)로 구성된다.Referring to FIG. 3A, the streaming system temporarily stores a streaming server 100 transmitting a RTP packet to a client 200 through a network and an RTP packet received from the streaming server 100 in a buffer 220. When the data is stored, and the plurality of RTP packets are composed of one frame, the client 200 is configured to read and decode the decoder 210 and then play them back.

이하 스트리밍 서비스의 RTP 패킷의 전송 및 클라이언트(200)의 멀티미디어 컨텐츠 재생은 주지된 기술이므로 상세 설명을 생략한다.Hereinafter, the transmission of the RTP packet of the streaming service and the reproduction of the multimedia content of the client 200 are well known technologies, and thus detailed description thereof will be omitted.

그리고, 도 3b를 참조하면, 클라인언트의 버퍼 모델링을 나타내는 도면을 참조하면, 클라이언트(200)는 스트리밍 서버(100)로부터 수신되는 RTP 패킷이 하나의 프레임으로 이루어질 때까지 버퍼(220)에 임시 저장한 이후에 디코더(210)가 프레임을 디코딩하게 된다.Referring to FIG. 3B, referring to a diagram illustrating buffer modeling of a client, the client 200 temporarily stores an RTP packet received from the streaming server 100 in the buffer 220 until an RTP packet is composed of one frame. After that, the decoder 210 decodes the frame.

클라이언트(200)의 언더플로우를 방지하는 방법은 클라이언트(200)의 버퍼(220)를 최대 버퍼 레벨로 항상 채우는 방법이 가장 좋은 방법으로, 버퍼(220)에 RTP 패킷을 최대 버퍼 레벨로 항상 채우는 경우에는 디코더(210)가 끊임없이 프레임을 읽어들여 디코딩함에 의해 끊김없이 재생할 수 있으므로 언더플로우를 방지할 수 있다. 즉, 스트리밍 서버(100)가 클라이언트(200)의 버퍼 크기에 따라 RTP 패킷의 전송률을 제어함에 의해 버퍼(220)에 RTP 패킷이 최대 버퍼 레벨로 항상 채워지도록 한다.The method of preventing underflow of the client 200 is a method of always filling the buffer 220 of the client 200 with the maximum buffer level. In the case where the R220 packet is always filled with the maximum buffer level in the buffer 220, Since the decoder 210 can continuously play back by reading and decoding frames, it is possible to prevent underflow. That is, the streaming server 100 controls the transmission rate of the RTP packet according to the buffer size of the client 200 so that the R220 packet is always filled in the buffer 220 at the maximum buffer level.

클라이언트(200)의 버퍼(220)에 최대 버퍼 레벨로 RTP를 채우기 위해서는 스트리밍 서버(100)가 클라이언트(200)의 버퍼 크기를 확인해야 하며, 클라이언트(200)의 버퍼 크기는 스트리밍 서버(100)가 클라이언트(200)로부터 버퍼(220)의 크기 정보가 포함되는 알림 메시지를 수신하여 파악하는 제1 방식과, 스트리밍 서 버(100)가 클라이언트(200)의 버퍼 크기를 예측하는 제2 방식으로 구분될 수 있다.In order to fill the RTP with the maximum buffer level in the buffer 220 of the client 200, the streaming server 100 should check the buffer size of the client 200, and the buffer size of the client 200 may be determined by the streaming server 100. The first method of receiving and identifying a notification message including the size information of the buffer 220 from the client 200 may be divided into a second method of predicting the buffer size of the client 200 and the streaming server 100. Can be.

도 4는 본 발명의 제1 실시예에 따른 클라이언트의 버퍼 크기를 확인하는 흐름을 설명하기 위한 도면으로, 도 4를 참조하면, 스트리밍 서버(100)와 클라이언트(200)는 RTSP에 따라 TCP 상에서 패킷을 전송하기 위한 세션, 즉 데이터 채널(data channel)을 설정하고, 세션이 설정되면, 스트리밍 서버(100)는 UDP 상 또는 RTSP 요청과 응답을 전달하는 채널 상에서 RTP 형식에 따라 패킷을 전송한다. 즉, 스트리밍 서버(100)와 클라이언트(200)간 제어 세션은 TCP 상에서 설정되고, 데이터 전송 세션은 UDP 상 또는 RTSP 채널 상에서 설정된다.4 is a diagram illustrating a flow of checking a buffer size of a client according to a first embodiment of the present invention. Referring to FIG. 4, the streaming server 100 and the client 200 transmit packets over TCP according to RTSP. A session for transmitting the data, that is, a data channel is established, and when the session is established, the streaming server 100 transmits a packet according to the RTP format on UDP or on a channel for transmitting an RTSP request and response. That is, the control session between the streaming server 100 and the client 200 is established on TCP, and the data transmission session is established on UDP or on an RTSP channel.

클라이언트(200)는 데이터 채널을 통해 RTP 패킷을 수신하면서 제어 세션으로 버퍼 크기 정보, 즉 버퍼 레벨 정보가 포함되는 알림 메시지(NOTI)를 스트리밍 서버(100)로 전송하고, 스트리밍 서버(100)는 알림 메시지로부터 클라이언트(200)의 버퍼 크기 정보를 파악한다.The client 200 receives the RTP packet through the data channel and transmits a notification message (NOTI) including the buffer size information, that is, the buffer level information, to the streaming server 100 in the control session, and the streaming server 100 notifies the streaming server 100. The buffer size information of the client 200 is obtained from the message.

RTSP(Real Time Streaming Protocol)에 대한 내용은 'RFC 2326'에 정의되어 있고, RTP에 대한 내용은 'RFC 1889'에 정의되어 있으므로, 상세 설명은 생략한다.Since RTSP (Real Time Streaming Protocol) is defined in 'RFC 2326' and RTP is defined in 'RFC 1889', detailed description is omitted.

도 5a는 RTCP APP 메시지의 구조를 예시한 도면이고, 도 5b는 클라이언트가 스트리밍 서버로 전송하는 알림 메시지를 예시한 도면이다.5A is a diagram illustrating a structure of an RTCP APP message, and FIG. 5B is a diagram illustrating a notification message transmitted from a client to a streaming server.

도 5a에 예시된 메시지 구조의 각 필드에 대한 내용은 'RFC 2326'에 상세 설명은 생략하며, RTCP APP(APPlication Defined) 패킷의 응용 데이터 필드(Application-dependent data)를 이용하여 프로브 메시지 및 응답 메시지를 생성할 수 있다.Detailed description of each field of the message structure illustrated in FIG. 5A is omitted in 'RFC 2326', and a probe message and a response message using an application-dependent data field of an RTCP APP (ation definition defined) packet. Can be generated.

그리고, 클라이언트(200)는 RTCP APP 패킷의 응용 데이터 필드에 알림 메시지임을 알리는 메시지 타입(MSG Type)과, 버퍼 크기(레벨)(buffer level)를 포함시켜 알림 메시지를 생성하여 스트리밍 서버(100)로 전송한다.The client 200 generates a notification message by including a message type (MSG Type) indicating a notification message and an buffer size (level) in the application data field of the RTCP APP packet to the streaming server 100. send.

한편, 스트리밍 서버(100)가 클라이언트(200)의 버퍼 크기를 예측하는 방식은, 스트리밍 서버(100)에서 클라이언트(200)의 버퍼(220)로 전송한 RTP 패킷의 크기와, 디코더(210)가 버퍼(220)로부터 읽어들인 RTP 패킷의 크기를 기반으로 버퍼 크기를 예측할 수 있다. 이때, 스트리밍 서버(100)로부터 클라이언트(200)로 전송하는 RTP 패킷은 네트워크의 전송 속도가 매우 빠르므로, 빠른 시간내에 클라이언트(200)의 버퍼(220)로 저장된다고 가정할 수 있으므로, RTP 패킷이 네트워크 상에 잔존하는 양은 무시한다.On the other hand, the streaming server 100 predicts the buffer size of the client 200, the size of the RTP packet transmitted from the streaming server 100 to the buffer 220 of the client 200, and the decoder 210 The buffer size may be estimated based on the size of the RTP packet read from the buffer 220. At this time, since the RTP packet transmitted from the streaming server 100 to the client 200 is very fast, it can be assumed that the RTP packet is stored in the buffer 220 of the client 200 within a short time. Ignore the amount remaining on the network.

스트리밍 서버(100)가 클라이언트(200)로 전송한 RTP 패킷의 크기는 스트리밍 서버(100)가 전송한 프레임의 크기 합산으로 산출할 수 있고, 디코더(210)가 버퍼(220)로부터 읽어들인 RTP 패킷의 크기는 (현재 시간-초기 버퍼링 시간)부터 현재 시간까지의 프레임 크기를 합산하여 산출할 수 있다.The size of the RTP packet transmitted from the streaming server 100 to the client 200 may be calculated by summing the size of the frames transmitted by the streaming server 100, and the RTP packet read from the buffer 220 by the decoder 210. The size of may be calculated by summing the frame sizes from (current time-initial buffering time) to the current time.

그리고, 스트리밍 서버(100)는 클라이언트(200)의 최대 버퍼 크기와, 네트워크의 최대 대역폭을 기반으로 전송률을 제어할 수 있다.The streaming server 100 may control the transmission rate based on the maximum buffer size of the client 200 and the maximum bandwidth of the network.

한편, 스트리밍 서버(100)는 RTP 패킷의 전송률을 제어하기 위해서는 클라이언트(200)의 버퍼(220)에 임시 저장되어 있는 RTP 패킷의 크기, 즉 현재 버퍼 레벨을 측정한다.Meanwhile, in order to control the transmission rate of the RTP packet, the streaming server 100 measures the size of the RTP packet temporarily stored in the buffer 220 of the client 200, that is, the current buffer level.

도 6은 현재 버퍼 레벨을 측정하는 방식을 설명하기 위한 도면이다.6 is a diagram for describing a method of measuring a current buffer level.

도 6을 참조하면, 클라이언트(200)의 최대 버퍼 크기(SMCB)와, 버퍼(220)에 저장된 프레임 중 가장 먼저 저장된 프레임의 크기(SNXT)와, 버퍼(220)에 마지막에 저장된 프레임의 크기(SLST)와, 현재 시간(TCUR)과, 초기 버퍼링 시간(TIBT)을 기반으로 현재 버퍼 레벨(SCB)을 다음 수학식 1과 같이 산출할 수 있다.Referring to FIG. 6, the maximum buffer size S MCB of the client 200, the size S NXT of the first stored frame among the frames stored in the buffer 220, and the last frame stored in the buffer 220. Based on the size S LST , the current time T CUR , and the initial buffering time T IBT , the current buffer level S CB may be calculated as in Equation 1 below.

SCB = SUM(SLST:SNXT)S CB = SUM (S LST : S NXT )

상기 수학식1에서 초기 버퍼링 시간(TIBT)은 스트리밍 서비스에 따라 설정되는 통상의 버퍼링 시간을 대입할 수 있으며, 현재 버퍼 레벨(SCB)은 스트리밍 서버(100)가 클라이언트(200)로 전송한 프레임 크기에서 디코더(210)가 디코딩하기 위해 읽어들인 프레임 크기를 감산한 크기 값에 해당할 수 있다.In Equation 1, the initial buffering time T IBT may be substituted with a normal buffering time set according to a streaming service, and the current buffer level S CB is transmitted by the streaming server 100 to the client 200. The frame size may correspond to a size value obtained by subtracting the frame size read by the decoder 210 for decoding.

그리고, 스트리밍 서버(100)는 클라이언트(200)의 현재 버퍼 레벨(SCB)과, 최대 버퍼 크기(SMCB)와, 평균 전송률(RAVG)과, 네트워크의 최대 대역폭(RMAX)과, 최소 대역폭(RMIN)과, 초기 버퍼링 시간(TIBT)과, 네트워크 환경 변화에 대응하기 위한 가중치(W)를 기반으로 다음 수학식 2와 같이 목적 버퍼 레벨, 즉 목적 전송률(RCUR)을 추정할 수 있다.In addition, the streaming server 100 may determine the current buffer level (S CB ), the maximum buffer size (S MCB ), the average transfer rate (R AVG ), the maximum bandwidth (R MAX ), and the minimum of the client 200. Based on the bandwidth (R MIN ), the initial buffering time (T IBT ), and the weight (W) to correspond to changes in the network environment, the target buffer level, that is, the target transfer rate (R CUR ), can be estimated as shown in Equation 2 below. Can be.

RCUR = (1.0 - W) x RPREV + W x K1 x RAVG x (SMCB - SCB) / (K2 x SMCB - SCB) + RMIN R CUR = (1.0-W) x R PREV + W x K 1 x R AVG x (S MCB -S CB ) / (K 2 x S MCB -S CB ) + R MIN

상기 수학식 2에서 K는 비례 상수이고, 최대 대역폭(RMAX)과, 최소 대역폭(RMIN)은 평균 전송률(RAVG)에 비례 상수를 승산한 값이고, 초기 버퍼링 시간(TIBT)은 일정 시간(가령 3 sec)이고, 가중치(W)는 일정 값(가령 0.9)로 대입할 수 있다.In Equation 2, K is a proportional constant, the maximum bandwidth (R MAX ), the minimum bandwidth (R MIN ) is a value multiplied by the average transmission rate (R AVG ), the initial buffering time (T IBT ) is constant Time (eg 3 sec) and the weight (W) can be substituted with a constant value (eg 0.9).

그리고, 목적 버퍼 레벨은 최대 버퍼 크기보다 작고 요구 버퍼 레벨보다 큰 값으로 설정되는 것이 바람직하며, 목적 버퍼 레벨, 즉 목적 전송률은 현재 버퍼 레벨이 최대 버퍼 크기의 3/4 이상을 유지하는 상태가 안정적인 상태로 간주할 수 있으므로, 목적 전송률은 현재 버퍼 레벨이 최대 버퍼 크기의 3/4 정도로 유지하도록 설정한다.In addition, the target buffer level is preferably set to a value smaller than the maximum buffer size and larger than the required buffer level, and the target buffer level, that is, the target transfer rate, is stable in a state where the current buffer level maintains 3/4 or more of the maximum buffer size. Since it can be considered as a state, the target transfer rate is set so that the current buffer level is maintained at about 3/4 of the maximum buffer size.

그리고, 평균 전송률(RAVG)과, 네트워크의 최대 대역폭(RMAX)은 다음 수학식 3과 같이 산출할 수 있다.The average data rate R AVG and the maximum bandwidth R MAX of the network may be calculated by Equation 3 below.

RAVG = K1 x RAVG x (1/4 x SMCB) / (K2 x SMCB - 3/4 x SMCB), when SCB = 3/4 SMCB R AVG = K 1 x R AVG x (1/4 x S MCB ) / (K 2 x S MCB -3/4 x S MCB ), when S CB = 3/4 S MCB

RMAX = K1 x RAVG x SMCB / (K2 x SMCB), when SCB = 0R MAX = K 1 x R AVG x S MCB / (K 2 x S MCB ), when S CB = 0

상기 수학식 3에서 목적 전송률이 현재 버퍼 레벨이 최대 버퍼 크기(SMCB)의 3/4인 상태에서 '1'로 가정하고, 목적 전송률이 평균 전송률의 2배, 3배 등의 값을 가지는 경우를 대입하면, 평균 전송률(RAVG)과, 네트워크의 최대 대역폭(RMAX)을 산출할 수 있다.In Equation 3, it is assumed that the target transmission rate is '1' when the current buffer level is 3/4 of the maximum buffer size (S MCB ), and the target transmission rate has a value such as twice or three times the average transmission rate. By substituting, the average data rate R AVG and the maximum bandwidth R MAX of the network can be calculated.

한편, 수학식 3에서 목적 전송률을 현재 버퍼 레벨이 최대 버퍼 크기(SMCB)의 3/5 또는 4/5인 상태에서 '1'로 가정할 수 있으며, 이는 실험적으로 도출 가능한 값이다.Meanwhile, in Equation 3, the target transmission rate may be assumed to be '1' in a state where the current buffer level is 3/5 or 4/5 of the maximum buffer size S MCB , which is an experimentally derivable value.

도 7은 본 발명에 따라 클라이언트 버퍼 상태에 따른 전송률 제어 방식을 설명하기 위한 그래프이다.7 is a graph illustrating a rate control method according to a client buffer state according to the present invention.

도 7은 현재 버퍼 레벨이 최대 버퍼 크기의 3/4(0.75)인 상태가 안정적인 상태로 가정한 것으로, 현재 버퍼 레벨이 최대 버퍼 크기의 3/4인 상태의 전송률을 '1'이므로, 네트워크의 최대 전송률(Rmax)에 관계없이 현재 버퍼 레벨이 최대 버퍼(220)의 3/4인 상태로 안정되도록 목적 전송률을 제어할 수 있다.FIG. 7 assumes a stable state where the current buffer level is 3/4 (0.75) of the maximum buffer size. Since the transmission rate of the current buffer level is 3/4 of the maximum buffer size is '1', Regardless of the maximum transfer rate Rmax, the target transfer rate may be controlled such that the current buffer level is stabilized to 3/4 of the maximum buffer 220.

도 8은 본 발명에 따른 전송률 제어 방식을 설명하기 위한 그래프로, 도 8을 참조하면, 기존의 전송률은 일정하게 유지되므로, RTP 패킷의 전송 상태에 따라 오버플로우가 발생하는 경우가 발생하나, 본 발명에 따른 전송률 제어 방식은 스트리밍 서버(100)가 클라이언트(200)로 RTP 패킷을 전송하는 전송률을 클라이언트(200)의 버퍼(220)에 저장되어 있는 RTP 패킷(프레임), 즉 현재 버퍼 레벨에 따라 목적 전송률이 결정되므로, 항상 클라이언트(200)의 버퍼를 최대 크기보다 낮게 유지할 수 있으므로, 오버플로우를 방지할 수 있다.FIG. 8 is a graph illustrating a rate control method according to the present invention. Referring to FIG. 8, since the existing rate is kept constant, an overflow occurs according to a transmission state of an RTP packet. In the rate control method according to the present invention, the streaming rate at which the streaming server 100 transmits the RTP packet to the client 200 is determined according to the RTP packet (frame) stored in the buffer 220 of the client 200, that is, the current buffer level. Since the target transfer rate is determined, the buffer of the client 200 can be kept lower than the maximum size at all times, thereby preventing overflow.

도 9는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법을 설명하기 위 한 플로챠트이다.9 is a flowchart illustrating a method for preventing underflow / overflow in a streaming system.

도 9를 참조하면, 스트리밍 서버(100)는 클라이언트(200)의 버퍼 크기를 파악한다(S 100).Referring to FIG. 9, the streaming server 100 determines the buffer size of the client 200 (S 100).

이때, 스트리밍 서버(100)가 클라이언트(200)의 버퍼 크기를 파악하는 방식은, 스트리밍 서버(100)가 클라이언트(200)로부터 버퍼(220)의 크기 정보가 포함되는 알림 메시지를 수신하여 파악하는 제1 방식과, 스트리밍 서버(100)가 클라이언트(200)의 버퍼 크기를 예측하는 제2 방식으로 구분될 수 있다.At this time, the streaming server 100 determines the buffer size of the client 200, the streaming server 100 receives the notification message containing the size information of the buffer 220 from the client 200 to determine One method may be divided into a second method in which the streaming server 100 predicts a buffer size of the client 200.

그리고, 스트리밍 서버(100)는 클라이언트(200)의 버퍼(220)에 저장되어 있는 RTP 패킷(프레임)의 크기, 즉 현재 버퍼 레벨을 측정한다(S 110).In addition, the streaming server 100 measures the size of the RTP packet (frame) stored in the buffer 220 of the client 200, that is, the current buffer level (S 110).

스트리밍 서버(100)는 클라이언트(200)의 최대 버퍼 크기(SMCB)와, 버퍼(220)에 저장된 프레임 중 가장 먼저 저장된 프레임의 크기(SNXT)와, 버퍼(220)에 마지막에 저장된 프레임의 크기(SLST)와, 현재 시간(TCUR)과, 초기 버퍼링 시간(TIBT)을 기반으로 현재 버퍼 레벨(SCB)을 기반으로 상기 수학식 1과 같이 산출할 수 있다.The streaming server 100 may determine the maximum buffer size S MCB of the client 200, the size S NXT of the first stored frame among the frames stored in the buffer 220, and the last frame stored in the buffer 220. size can be calculated as shown in equation (1) based on the current buffer level (S CB) to (S LST) and, based on the current time (T CUR) and initial buffering time (T IBT).

그리고, 스트리밍 서버(100)는 클라이언트(200)의 현재 버퍼 레벨(SCB)과, 최대 버퍼 크기(SMCB)와, 평균 전송률(RAVG)과, 네트워크의 최대 대역폭(RMAX)과, 최소 대역폭(RMIN)과, 초기 버퍼링 시간(TIBT)과, 네트워크 환경 변화에 대응하기 위한 가중치(W)를 기반으로 상기 수학식 2와 같이 목적 버퍼 레벨, 즉 목적 전송률(RCUR)을 추정한다(S 120).In addition, the streaming server 100 may determine the current buffer level (S CB ), the maximum buffer size (S MCB ), the average transfer rate (R AVG ), the maximum bandwidth (R MAX ), and the minimum of the client 200. Based on the bandwidth (R MIN ), the initial buffering time (T IBT ), and the weight (W) corresponding to the change in the network environment, the target buffer level, that is, the target transfer rate (R CUR ), is estimated as shown in Equation 2 above. (S 120).

그리고, 스트리밍 서버(100)는 목적 전송률에 따라 RTP 패킷을 네트워크를 통해 클라이언트(200)로 전송한다(S 130).In addition, the streaming server 100 transmits the RTP packet to the client 200 through the network according to the target transmission rate (S 130).

도 10은 본 발명에 따른 전송률 제어 방식을 적용한 결과를 나타내는 그래프이다.10 is a graph showing a result of applying the rate control method according to the present invention.

도 10에서 평균 전송률(RAVG )은 '76 kbps'이고, 최대 대역폭(RMAX)은'380 (=76 * 5) kbps'이고, 최소 대역폭은 (RMIN)은 '7.6 kbps'이고, 최대 버퍼 크기(SMCB)는 '85.5 KByte'이고, 초기 버퍼링 시간(TIBT)은 '3 sec'이고, 가중치(W)는 '0.9'인 경우에 측정되는 클라이언트(200)의 현재 버퍼 레벨과 전송률간의 관계를 나타낸 것이다.In Figure 10, the average data rate (R AVG ) is '76 kbps', the maximum bandwidth (R MAX ) is' 380 (= 76 * 5) kbps', the minimum bandwidth is (R MIN ) is' 7.6 kbps', and the maximum The current buffer level and transfer rate of the client 200 measured when the buffer size S MCB is '85 .5 KByte ', the initial buffering time T IBT is' 3 sec', and the weight W is' 0.9 '. It shows the relationship between.

도 10에서 나타나는 바와 같이, 본 발명에 따른 전송률 제어 방식은 클라이언트(200)의 버퍼(220)에 저장되어 있는 RTP 패킷의 크기, 즉 현재 버퍼 레벨이 낮아지면, 전송률이 높아지고, 현재 버퍼 레벨이 높아지면, 전송률이 낮아지는 전송률 제어에 의해 현재 버퍼 레벨이 일정하게 유지됨을 알 수 있으며, 이는 클라이언트(200)의 버퍼(220)에 항상 일정하게 RTP 패킷(프레임)을 저장시켜 언더플로우/오버플로우를 방지할 수 있음을 의미한다.As shown in FIG. 10, in the rate control method according to the present invention, when the size of the RTP packet stored in the buffer 220 of the client 200, that is, the current buffer level is low, the rate is high and the current buffer level is high. In this case, it can be seen that the current buffer level is kept constant by the rate control, in which the rate is lowered. This means that RTP packets (frames) are always stored in the buffer 220 of the client 200 at a constant rate, thereby underflow / overflow It can be prevented.

따라서, 클라이언트(200)의 버퍼(220)에 언더플로우/오버플로우가 발생하지 않고 안정적인 스트리밍 서비스를 제공할 수 있는 크기의 RTP 패킷(프레임)을 항상 유지할 수 있으므로, 높은 서비스 품질을 제공할 수 있다.Therefore, since an RTP packet (frame) having a size capable of providing a stable streaming service without underflow / overflowing in the buffer 220 of the client 200 is always maintained, a high quality of service can be provided. .

이상에서 본 발명은 기재된 구체 예에 대해서만 상세히 설명하였지만 본 발 명의 기술 사상 범위 내에서 다양한 변형 및 수정이 가능함은 당업자에게 있어서 명백한 것이며, 이러한 변형 및 수정이 첨부된 특허청구범위에 속함은 당연한 것이다.Although the present invention has been described in detail only with respect to the described embodiments, it will be apparent to those skilled in the art that various changes and modifications can be made within the scope of the present invention, and such modifications and modifications belong to the appended claims.

도 1은 종래 기술에 의한 클라이언트의 버퍼 레벨 변화를 나타내는 그래프.1 is a graph showing a buffer level change of a client according to the prior art.

도 2는 스트리밍이 시작된 시점부터 버퍼 레벨이 변화하는 양상을 나타내는 그래프.2 is a graph illustrating a change in the buffer level from the time when streaming starts.

도 3a는 본 발명에 따른 스트리밍 시스템의 간략한 네트워크 도면. 3A is a simplified network diagram of a streaming system according to the present invention.

도 3b는 클라이언트의 버퍼 모델링을 나타내는 도면.3B illustrates buffer modeling of a client.

도 4는 본 발명의 제1 실시예에 따른 클라이언트의 버퍼 크기를 확인하는 흐름을 설명하기 위한 도면.4 is a view for explaining the flow of checking the buffer size of the client according to the first embodiment of the present invention.

도 5a는 RTCP APP 메시지의 구조를 예시한 도면. 5A illustrates the structure of an RTCP APP message.

도 5b는 클라이언트가 스트리밍 서버로 전송하는 알림 메시지를 예시한 도면.5b illustrates a notification message sent by a client to a streaming server.

도 6은 현재 버퍼 레벨을 측정하는 방식을 설명하기 위한 도면.6 is a diagram for explaining a method of measuring a current buffer level.

도 7은 본 발명에 따라 클라이언트 버퍼 상태에 따른 전송률 제어 방식을 설명하기 위한 그래프.7 is a graph illustrating a rate control method according to a client buffer state according to the present invention.

도 8은 본 발명에 따른 전송률 제어 방식을 설명하기 위한 그래프.8 is a graph for explaining a rate control scheme according to the present invention;

도 9는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법을 설명하기 위한 플로챠트.9 is a flowchart for explaining a method for preventing underflow / overflow in a streaming system.

도 10은 본 발명에 따른 전송률 제어 방식을 적용한 결과를 나타내는 그래프.10 is a graph showing a result of applying the rate control method according to the present invention.

Claims (13)

스트리밍 시스템에 있어서,In a streaming system, 네트워크를 통해 수신되는 RTP(Real time Protocol) 패킷을 버퍼에 임시 저장하고, 다수개의 RTP 패킷으로 프레임이 구성되면, 상기 프레임을 디코딩하는 적어도 하나 이상의 클라이언트와,At least one client configured to temporarily store a real time protocol (RTP) packet received through a network, and to decode the frame when the frame is composed of a plurality of RTP packets; 상기 클라이언트의 상기 버퍼의 최대 크기와, 현재 버퍼 레벨과, 상기 네트워크의 대역폭과, 상기 버퍼의 초기 버퍼링 시간을 기반으로 목적 전송률을 산출하여 상기 RTP 패킷을 전송하며, 상기 클라이언트의 버퍼에 상기 RTP 패킷이 저장된 현재 버퍼 레벨이 오버플로우가 방지될 정도로 상기 버퍼의 최대 크기보다 일정 비례 값만큼 작아지도록 설정된 스트리밍 서버를 포함하는 스트리밍 시스템.Calculates a target transmission rate based on a maximum size of the buffer of the client, a current buffer level, a bandwidth of the network, and an initial buffering time of the buffer, and transmits the RTP packet to the buffer of the client; And a streaming server, wherein the stored current buffer level is set to be smaller by a proportional value than the maximum size of the buffer to prevent overflow. 제1 항에 있어서, 상기 클라이언트는,The method of claim 1, wherein the client, RTCP APP(APPlication Defined) 패킷의 응용 데이터 필드에 알림 메시지임을 알리는 메시지 타입(MSG Type)과, 버퍼 크기(레벨)(buffer level)를 포함시켜 알림 메시지를 생성하여 상기 스트리밍 서버로 전송하는 것을 특징으로 하는 스트리밍 시스템.And generating a notification message by including a message type (MSG type) indicating a notification message and an buffer size (level) in an application data field of an RTCP APP (APPlication Defined) packet, and transmitting the message to the streaming server. Streaming system. 제1 항에 있어서, 상기 스트리밍 서버는,The method of claim 1, wherein the streaming server, 상기 클라이언트로 전송한 상기 RTP 패킷의 크기와, 상기 디코딩되는 RTP 패킷의 크기를 기반으로 상기 버퍼 크기를 예측하는 것을 특징으로 하는 스트리밍 시스템.And a size of the buffer based on the size of the RTP packet transmitted to the client and the size of the decoded RTP packet. 제1 항에 있어서, 상기 스트리밍 서버는,The method of claim 1, wherein the streaming server, 상기 클라이언트의 최대 버퍼 크기와, 상기 버퍼에 저장된 프레임 중 가장 먼저 저장된 프레임의 크기와, 상기 버퍼에 마지막에 저장된 프레임의 크기와, 현재 시간과, 초기 버퍼링 시간을 기반으로 상기 현재 버퍼 레벨을 산출하는 것을 특징으로 하는 스트리밍 시스템.Calculating the current buffer level based on a maximum buffer size of the client, a size of a frame stored first among the frames stored in the buffer, a size of a frame last stored in the buffer, a current time, and an initial buffering time. Streaming system, characterized in that. 제1 항에 있어서, 상기 스트리밍 서버는,The method of claim 1, wherein the streaming server, 하기 수학식과 같이 상기 목적 전송률을 산출하는 것을 특징으로 하는 스트리밍 시스템.Streaming system, characterized in that for calculating the target rate as shown in the following equation. [수학식][Equation] RCUR = (1.0 - W) x RPREV + W x K1 x RAVG x (SMCB - SCB) / (K2 x SMCB - SCB) + RMIN R CUR = (1.0-W) x R PREV + W x K 1 x R AVG x (S MCB -S CB ) / (K 2 x S MCB -S CB ) + R MIN 여기서 'SCB'는 현재 버퍼 레벨이고,'RAVG'는 평균 전송률이고, 'RMAX'는 상기 네트워크의 최대 대역폭이고, 'RMIN'는 상기 네트워크의 최소 대역폭이고, 'TIBT'는 초기 버퍼링 시간이고, 'W'는 가중치이고, 'K'는 비례 상수이다.Where 'S CB ' is the current buffer level, 'R AVG ' is the average transmission rate, 'R MAX ' is the maximum bandwidth of the network, 'R MIN ' is the minimum bandwidth of the network, and 'T IBT ' is the initial It is the buffering time, 'W' is a weight, and 'K' is a proportional constant. 제5 항에 있어서, 상기 스트리밍 서버는,The method of claim 5, wherein the streaming server, 하기 수학식과 같이 상기 평균 전송률(RAVG)과, 상기 네트워크의 최대 대역폭(RMAX)을 산출하는 것을 특징으로 하는 스트리밍 시스템.The streaming system, characterized in that for calculating the average rate (R AVG ) and the maximum bandwidth (R MAX ) of the network as shown in the following equation. [수학식][Equation] RAVG = K1 x RAVG x (1/4 x SMCB) / (K2 x SMCB - 3/4 x SMCB), when SCB = 3/4 SMCB R AVG = K 1 x R AVG x (1/4 x S MCB ) / (K 2 x S MCB -3/4 x S MCB ), when S CB = 3/4 S MCB RMAX = K1 x RAVG x SMCB / (K2 x SMCB), when SCB = 0R MAX = K 1 x R AVG x S MCB / (K 2 x S MCB ), when S CB = 0 삭제delete 스트리밍 시스템의 언더플로우/오버플로우 방지 방법에 있어서, In the method of preventing underflow / overflow in a streaming system, 스트리밍 서버가 적어도 하나 이상의 클라이언트의 버퍼 크기를 파악하는 단계와,The streaming server determining the buffer size of at least one client, 상기 클라이언트의 현재 버퍼 레벨을 측정하는 단계와,Measuring a current buffer level of the client; 상기 클라이언트의 상기 버퍼의 최대 크기와, 현재 버퍼 레벨과, 네트워크의 대역폭과, 상기 버퍼의 초기 버퍼링 시간을 기반으로 상기 버퍼에 RTP 패킷이 저장된 현재 버퍼 레벨이 오버플로우가 방지될 정도로 상기 버퍼의 최대 크기보다 일정 비례 값만큼 작아지도록 설정된 목적 전송률을 산출하는 단계와,Based on the maximum size of the buffer of the client, the current buffer level, the bandwidth of the network, and the initial buffering time of the buffer; Calculating a target transmission rate set to be smaller than the magnitude by a predetermined proportional value; 상기 목적 전송률에 따라 상기 RTP 패킷을 전송하는 단계를 포함하며;Sending the RTP packet according to the destination rate; 상기 목적 전송률을 산출하는 단계는, The step of calculating the target transmission rate, 상기 스트리밍 서버가 하기 수학식과 같이 상기 목적 전송률을 산출하는 것을 특징으로 하는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법.And the streaming server calculates the target rate as shown in the following equation. [수학식][Equation] RCUR = (1.0 - W) x RPREV + W x K1 x RAVG x (SMCB - SCB) / (K2 x SMCB - SCB) + RMIN R CUR = (1.0-W) x R PREV + W x K 1 x R AVG x (S MCB -S CB ) / (K 2 x S MCB -S CB ) + R MIN 여기서 'SCB'는 현재 버퍼 레벨이고,'RAVG'는 평균 전송률이고, 'RMAX'는 상기 네트워크의 최대 대역폭이고, 'RMIN'는 상기 네트워크의 최소 대역폭이고, 'TIBT'는 초기 버퍼링 시간이고, 'W'는 가중치이고, 'K'는 비례 상수이다.Where 'S CB ' is the current buffer level, 'R AVG ' is the average transmission rate, 'R MAX ' is the maximum bandwidth of the network, 'R MIN ' is the minimum bandwidth of the network, and 'T IBT ' is the initial It is the buffering time, 'W' is a weight, and 'K' is a proportional constant. 삭제delete 삭제delete 삭제delete 삭제delete 제8 항에 있어서, 상기 목적 전송률을 산출하는 단계는, The method of claim 8, wherein the calculating of the target transmission rate comprises: 하기 수학식과 같이 상기 평균 전송률(RAVG)과, 상기 네트워크의 최대 대역폭(RMAX)을 산출하는 것을 특징으로 하는 스트리밍 시스템의 언더플로우/오버플로우 방지 방법.The average transmission rate (R AVG ) and the maximum bandwidth (R MAX ) of the network as shown in the following equation, the underflow / overflow prevention method of the streaming system. [수학식][Equation] RAVG = K1 x RAVG x (1/4 x SMCB) / (K2 x SMCB - 3/4 x SMCB), when SCB = 3/4 SMCB R AVG = K 1 x R AVG x (1/4 x S MCB ) / (K 2 x S MCB -3/4 x S MCB ), when S CB = 3/4 S MCB RMAX = K1 x RAVG x SMCB / (K2 x SMCB), when SCB = 0R MAX = K 1 x R AVG x S MCB / (K 2 x S MCB ), when S CB = 0
KR1020090025653A 2009-03-26 2009-03-26 apparatus and method for prevention of underflow and overflow in streaming system KR101038645B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090025653A KR101038645B1 (en) 2009-03-26 2009-03-26 apparatus and method for prevention of underflow and overflow in streaming system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090025653A KR101038645B1 (en) 2009-03-26 2009-03-26 apparatus and method for prevention of underflow and overflow in streaming system

Publications (2)

Publication Number Publication Date
KR20100107546A KR20100107546A (en) 2010-10-06
KR101038645B1 true KR101038645B1 (en) 2011-06-02

Family

ID=43129227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090025653A KR101038645B1 (en) 2009-03-26 2009-03-26 apparatus and method for prevention of underflow and overflow in streaming system

Country Status (1)

Country Link
KR (1) KR101038645B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230094598A (en) 2021-12-21 2023-06-28 서울대학교산학협력단 Apparatus for processing media streaming and method therefor

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130089844A (en) * 2012-01-06 2013-08-13 삼성전자주식회사 Apparatus for providing advertisement and method the same
KR102399082B1 (en) 2016-03-04 2022-05-17 삼성전자주식회사 Method and apparatus for data buffering in adaptive streaming service

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040011257A (en) * 2002-07-30 2004-02-05 송하윤 Method and Apparatus for Multimedia Data Delivery Having an Efficient Bandwidth Smoothing Algorithm and a Recording Medium Used therefor
KR20040041170A (en) * 2001-09-21 2004-05-14 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 Data communications method and system using receiving buffer size to calculate transmission rate for congestion control
KR20060012418A (en) * 2004-08-03 2006-02-08 주식회사 케이티프리텔 Rate control method and device for streaming video
KR20060080607A (en) * 2005-01-05 2006-07-10 엘지전자 주식회사 Streaming system and adaptive bandwidth allocation method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040041170A (en) * 2001-09-21 2004-05-14 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 Data communications method and system using receiving buffer size to calculate transmission rate for congestion control
KR20040011257A (en) * 2002-07-30 2004-02-05 송하윤 Method and Apparatus for Multimedia Data Delivery Having an Efficient Bandwidth Smoothing Algorithm and a Recording Medium Used therefor
KR20060012418A (en) * 2004-08-03 2006-02-08 주식회사 케이티프리텔 Rate control method and device for streaming video
KR20060080607A (en) * 2005-01-05 2006-07-10 엘지전자 주식회사 Streaming system and adaptive bandwidth allocation method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230094598A (en) 2021-12-21 2023-06-28 서울대학교산학협력단 Apparatus for processing media streaming and method therefor

Also Published As

Publication number Publication date
KR20100107546A (en) 2010-10-06

Similar Documents

Publication Publication Date Title
US11089347B2 (en) Adaptation logic for varying a bitrate
US7016970B2 (en) System for transmitting stream data from server to client based on buffer and transmission capacities and delay time of the client
US7657672B2 (en) Packet scheduling for data stream transmission
US9544602B2 (en) Wireless video transmission system
US7733830B2 (en) Enhancing streaming media reception for a mobile device during cell reselection
US8230105B2 (en) Adaptive bitrate management for streaming media over packet networks
US7581019B1 (en) Active client buffer management method, system, and apparatus
US7543073B2 (en) System and process for performing an exponentially weighted moving average on streaming data to establish a moving average bit rate
US7536469B2 (en) System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates
US8955024B2 (en) Video streaming
US20110270913A1 (en) Controlling an adaptive streaming of digital content
KR101182518B1 (en) Video streaming system and method
CN108292970B (en) Adaptive bit rate adjustment method and device distributed through Internet live broadcast
US20060143678A1 (en) System and process for controlling the coding bit rate of streaming media data employing a linear quadratic control technique and leaky bucket model
US20090125636A1 (en) Payload allocation methods for scalable multimedia servers
US20050021830A1 (en) Data communications method and system using buffer size to calculate transmission rate for congestion control
JP2006174419A (en) System of controlling encoding bit rate of streaming media data
KR20060051568A (en) Methods and systems for presentation on media obtained from a media stream
JP2009049529A (en) Communication control device, communication control method and computer program
KR100631514B1 (en) Method for controlling transport rate of real-time streaming service
KR101038645B1 (en) apparatus and method for prevention of underflow and overflow in streaming system
KR101055169B1 (en) Traffic control method and device therefor in streaming system
JP2004186793A (en) Streaming distributor, streaming terminal equipment, streaming distribution system, and streaming distribution method
KR100782343B1 (en) Method of streaming image
KR101094694B1 (en) Apparatus and method of initial beffering time minimize in streaming system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140514

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 6