+

CN1726677A - System and method for detecting packet loss in a streaming application using a ring buffer - Google Patents

System and method for detecting packet loss in a streaming application using a ring buffer Download PDF

Info

Publication number
CN1726677A
CN1726677A CN200380105839.1A CN200380105839A CN1726677A CN 1726677 A CN1726677 A CN 1726677A CN 200380105839 A CN200380105839 A CN 200380105839A CN 1726677 A CN1726677 A CN 1726677A
Authority
CN
China
Prior art keywords
received
entry
packet
sequence number
packets
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN200380105839.1A
Other languages
Chinese (zh)
Inventor
Q·李
M·范德沙尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1726677A publication Critical patent/CN1726677A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection

Landscapes

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

Abstract

提供了一种环形缓冲器,即形成环形的缓冲器链,用于管理在因特网流送中分组丢失检测。用所述缓冲器链的大小来确定检测时延,可以使其动态地适应网络条件和应用需求。本发明可以实现合理的检测准确性。

Figure 200380105839

A ring buffer, ie a chain of buffers forming a ring, is provided for managing packet loss detection in Internet streaming. Using the size of the buffer chain to determine the detection delay can dynamically adapt to network conditions and application requirements. The present invention can achieve reasonable detection accuracy.

Figure 200380105839

Description

使用环形缓冲器来检测流送应用中分组丢失的系统和方法System and method for detecting packet loss in a streaming application using a ring buffer

本发明涉及因特网流送中分组丢失的检测。更具体来讲,本发明涉及一种用于使用环形缓冲器检测因特网流送中分组丢失的系统和方法,其中所述环形缓冲器是由形成环形的缓冲器链来实现的。更特别的是,本发明涉及一种用于使分组丢失检测时延(latency)动态地适应网络条件和应用需求的系统和方法,其中所述分组丢失检测时延是通过所述链的大小来确定的,本发明的系统和方法可以实现合理的检测准确性并且容易被实现。The present invention relates to packet loss detection in Internet streaming. More specifically, the present invention relates to a system and method for detecting packet loss in Internet streaming using a ring buffer implemented by a chain of buffers forming a ring. More particularly, the present invention relates to a system and method for dynamically adapting packet loss detection latency (latency) to network conditions and application requirements, wherein said packet loss detection latency is determined by the size of said chain Certainly, the systems and methods of the present invention can achieve reasonable detection accuracy and are easy to implement.

在因特网流送应用中,当重要的分组(诸如是属于视频中的I帧或者可扩展编码中的基层)丢失时,所述接收器可以要求发送器重新传送该丢失的分组。为了迅速地发送重新传送请求,所述接收器必须具有用于及时检测分组丢失的装置。目前,分组丢失检测是使用定时器或者时间窗来执行的。In Internet streaming applications, when an important packet (such as belonging to an I frame in video or a base layer in scalable coding) is lost, the receiver may ask the sender to retransmit the lost packet. In order to send retransmission requests quickly, the receiver must have means for detecting packet loss in time. Currently, packet loss detection is performed using timers or time windows.

在传输控制(TCP)协议中,对于丢失检测,使用定时器。当发送分组时,由该分组的发送器来设定具有超时值的定时器。如果在确认所述分组被接收以前所述定时器期满,那么把所述分组声明为丢失的,并且由所述发送器重新发送。In the Transmission Control (TCP) protocol, for loss detection, timers are used. When a packet is sent, a timer with a timeout value is set by the sender of the packet. If the timer expires before the packet is acknowledged as received, the packet is declared lost and retransmitted by the sender.

在大部分流送应用中,通过使用时间窗来实现丢失检测。时间窗(或者更确切的说是表)具有固定数目的二进制条目。每个条目表明分组的状态(0:丢失,1:已接收)。在某一个时间点,把此窗口中的第一条目与由序列号(诸如实时传输协议(RTP)分组的序列号)标识的分组相关联。把后续窗口条目与具有更高序列号的分组依照相继次序相关联。因此,可以把分组序列号的空间视作是被划分为块的,把每块与某一个时间点的窗口相关联。In most streaming applications, loss detection is achieved through the use of time windows. A time window (or rather a table) has a fixed number of binary entries. Each entry indicates the status of the packet (0: lost, 1: received). At some point in time, the first entry in this window is associated with a packet identified by a sequence number, such as that of a real-time transport protocol (RTP) packet. Subsequent window entries are associated in sequential order with packets with higher sequence numbers. Therefore, the space of the packet sequence number can be regarded as being divided into blocks, and each block is associated with a window at a certain time point.

当前,把与两个连续的分组块相关联的两个这种时间窗用于分组丢失检测。开始时,把所有条目标记为“0”。当接收到分组时,把相应的窗口条目标记为“1”。当接收到具有超过第一窗口的序列号的分组时,标记对应的第二窗口条目。一旦传送具有甚至超过第二窗口的序列号的分组,那么关闭第一窗口,并且检查其条目。把与保持标记为“0”的条目相关联的分组声明为丢失。在第二窗口之后,立刻打开一个相继的新窗口,并且检测过程继续进行。Currently, two such time windows associated with two consecutive packet blocks are used for packet loss detection. To start, mark all entries as "0". When a packet is received, the corresponding window entry is marked as "1". When a packet with a sequence number exceeding the first window is received, the corresponding second window entry is marked. As soon as a packet with a sequence number that exceeds even the second window is transmitted, the first window is closed and its entries are checked. Packets associated with entries that remain marked "0" are declared lost. Immediately after the second window, a successive new window is opened and the detection process continues.

定时器方法仅可以被应用于像TCP这样的协议,这类协议可以测量分组往返时间以便正确设定定时器的超时值。在流送应用中,大多数时间只生成单向的媒体流。所述定时器方法不适用于这些情况。相反,可以使用时间窗方法。然而,采用所述时间窗方法存在如下的局限性:The timer method can only be applied to protocols like TCP that can measure packet round trip time in order to set the timer timeout value correctly. In streaming applications, only one-way media streams are generated most of the time. The timer method is not suitable for these cases. Instead, a time window approach can be used. However, the time window method has the following limitations:

· 窗口大小是固定的—对于窗口大小适应没有内置的机制,当网络条件和应用需求(例如,延迟)改变时,这是希望有的。The window size is fixed - there is no built-in mechanism for window size adaptation, which is desirable as network conditions and application requirements (eg, latency) change.

·对 不同的丢失现不均匀的丢失检测时延—丢失检测时延位于T-2T的范围内,其中T是时间窗的平均周期,因此当把丢失与所述窗口的第一条目相关联时,所述检测时延是2T,如果把丢失与所述窗口的最后条目相关联,那么它是T。 Non-uniform loss detection delay for different losses - the loss detection delay lies in the range T-2T, where T is the average period of the time window, so when associating a loss with the first entry of the window , the detection latency is 2T, which is T if the loss is associated with the last entry of the window.

由此,需要一种丢失检测方法来允许自适应的丢失检测时延以及均匀的丢失检测时延。本发明的系统和方法包括:Thus, there is a need for a loss detection method that allows adaptive loss detection delay as well as uniform loss detection delay. The systems and methods of the present invention include:

·具有可根据网络条件和应用需求调节的链大小的环形缓冲器链,由此提供自适应的丢失检测时延;以及· Ring buffer chains with adjustable chain sizes based on network conditions and application requirements, thereby providing adaptive loss detection latency; and

·具有固定链大小的环形缓冲器链,由此当链大小是固定时、提供均匀的检测。• A ring buffer chain with a fixed chain size, thus providing uniform detection when the chain size is fixed.

缩短所述时延可以增加恢复丢失分组的概率(chance)。具有均匀的时延可以暗指对于所有丢失都具有相等恢复概率。因此,使所有丢失检测具体相等时延对于许多流送应用来说都是希望有的。Shortening the delay increases the chance of recovering lost packets. Having a uniform delay may imply an equal probability of recovery for all losses. Therefore, having all loss detections with a specific equal delay is desirable for many streaming applications.

本发明的环形缓冲器的执行系统开销很少,并且少于时间窗方法。The implementation overhead of the ring buffer of the present invention is small and less than that of the time window method.

图1a举例说明了本发明的环形缓冲器结构的优选实施例。Figure 1a illustrates a preferred embodiment of the ring buffer structure of the present invention.

图1b举例说明了图1a中示出的环形缓冲器中的每个缓冲器的结构。Fig. 1b illustrates the structure of each buffer in the ring buffer shown in Fig. 1a.

图2a举例说明了实现图1a-1b中示出的环形缓冲器结构的优选算法。Figure 2a illustrates a preferred algorithm for implementing the ring buffer structure shown in Figures 1a-1b.

图2b举例说明了图2a中示出的算法的流程图。Figure 2b illustrates a flowchart of the algorithm shown in Figure 2a.

图3举例说明了用于基于网络特性适应环形缓冲器链结构的算法的优选实施例。Figure 3 illustrates a preferred embodiment of an algorithm for adapting a ring buffer chain structure based on network characteristics.

现在参照图1a,缓冲器1至m形成了m个缓冲器Bi 10的环形链表,其中i=,...,m,图1b中示出了每个缓冲器的结构12。如图1a所示,m是用于确定丢失检测时延的循环链的长度,并且它可适应网络条件以及应用需求。P11是通过所述链环流的指针,依次指向每个缓冲器。所述链中的每个缓冲器Bi 10包括两个字段,F113和F214。F113存储指向下一缓冲器的指针。F214存储可能已丢失的分组的序列号s。Referring now to FIG. 1a, buffers 1 to m form a circular linked list of m buffers B i 10, where i=, . . . , m, the structure 12 of each buffer is shown in FIG. 1b. As shown in Figure 1a, m is the length of the cyclic chain used to determine the loss detection delay, and it can be adapted to network conditions as well as application requirements. P11 is a pointer that flows through the chain ring, pointing to each buffer in turn. Each buffer B i 10 in the chain comprises two fields, F 1 13 and F 2 14 . F 1 13 stores a pointer to the next buffer. F 2 14 stores sequence numbers s of packets that may have been lost.

在流送应用中,假定把分组按照分组序列号的顺序发送。在没有丢失并且理想的世界中,到达的分组始终具有一个高于前一序列号的序列号。如果分组没有按顺序到达,或者丢失,那么在所接收的分组的序列号中可以观察到空缺或者间隙。每当观察到空缺(可能是间隔一个以上连续号的空缺)时,那么此空缺很可能表明一个或多个丢失的分组。然而,无序分组递送对因特网来说是普遍存在的,这是因为每个分组可以采取不同的路径通过网络,并且更早编号的分组可能会花费比后来编号的分组更长的时间能到达。在到达的分组序列中观察到空缺之后,应用无法立即作出丢失声明。所述应用必须观望此空缺是否只是无序递送的事件。所述环形缓冲器方法提供了确定是否可以执行丢失声明的方式。In streaming applications, it is assumed that packets are sent in sequence number order. In an ideal world with no loss, arriving packets would always have a sequence number higher than the previous sequence number. If packets arrive out of order, or are lost, gaps or gaps may be observed in the sequence numbers of received packets. Whenever a gap is observed (possibly a gap separated by more than one consecutive number), then the gap likely indicates one or more lost packets. However, out-of-order packet delivery is common to the Internet because each packet may take a different path through the network, and earlier numbered packets may take longer to arrive than later numbered packets. An application cannot make a loss claim immediately after a gap is observed in the sequence of arriving packets. The application has to wait and see if this gap is just an event of out-of-order delivery. The ring buffer method provides a way to determine whether a loss assertion can be performed.

图2a举例说明了用于实现本发明方法的算法的优选实施例的C程序设计语言代码。图2b是图2a中示出的算法的流程图。所述指针P12循环通过缓冲器Bi 11链,所述循环是通过在步骤20接收分组来驱动的。在步骤21,对照早已接收的当前最大序列号s来检查所接收的分组的序列号,并且如果小于所接收的当前最大序列号,那么它是无序分组。Figure 2a illustrates the C programming language code of a preferred embodiment of the algorithm for implementing the method of the present invention. Figure 2b is a flowchart of the algorithm shown in Figure 2a. Said pointer P12 cycles through the chain of buffers B i 11 , said cycle being driven by the packet received at step 20 . In step 21, the sequence number of the received packet is checked against the current maximum sequence number s received already, and if it is less than the current maximum sequence number received, then it is an out-of-order packet.

如果不是无序分组,那么在步骤22,检查所述序列中的空缺,并且当所述序列中的空缺被观察到时,执行如下步骤:If it is not an unordered grouping, then at step 22, a gap in the sequence is checked, and when a gap in the sequence is observed, the following steps are performed:

a.如果P正指向的缓冲器包含未接收到的分组(P->F2不是零,在步骤24),那么在步骤25,具有序列号P->F2的分组被声明丢失。a. If the buffer that P is pointing to contains unreceived packets (P->F2 is not zero, at step 24), then at step 25, the packet with sequence number P->F2 is declared lost.

b.然后,无论P是否曾指向未接收的分组,在步骤26,都把当前最大序列号加一,并存储在当前缓冲器中,并且更新P,以便顺次指向下一缓冲器,即,P=P->F1。b. Then, regardless of whether P once pointed to an unreceived packet, in step 26, the current maximum sequence number is increased by one, and stored in the current buffer, and P is updated to point to the next buffer in turn, that is, P=P->F1.

c.在步骤27,把落入空缺的缓冲器数目减少1,并且重复步骤a-c,直到剩余缓冲区数目是零为止。由此,把落入空缺的所有序列号都存储在环形缓冲器链中,每个号占据一个缓冲器。c. At step 27, decrement the number of buffers falling into gaps by 1, and repeat steps a-c until the number of remaining buffers is zero. Thus, all sequence numbers falling into gaps are stored in a chain of circular buffers, each number occupying one buffer.

当没有观察到空缺时,执行如下步骤:When no vacancies are observed, the following steps are performed:

d.在步骤28,如果P正指向的缓冲器包含未接收到的分组(P->F2不是零),那么在步骤29,具有序列号P->F2的分组被声明丢失,并且把存储在缓冲器中的序列号设定为零。d. At step 28, if the buffer pointed to by P contains an unreceived packet (P->F2 is not zero), then at step 29, the packet with sequence number P->F2 is declared lost and stored in The sequence number in the buffer is set to zero.

e.不管P->F2是否指向未接收的分组,在步骤30,更新P以便顺次指向下一缓冲器。e. Regardless of whether P->F2 points to an unreceived packet, at step 30, update P to point to the next buffer in sequence.

当完成所有与有序分组相关联的处理时:When all processing associated with ordered grouping is complete:

f.在步骤31,把当前最大序列号设定为所接收的分组的序列号。f. In step 31, set the current maximum sequence number as the sequence number of the received packet.

如果分组是无序到达的(具有比当前接收的最大序列号s更早的序列号):If the packet arrived out of order (with an earlier sequence number than the currently received largest sequence number s):

g.那么把所接收的分组编号与存储在所述环形缓冲器中的编号相比较,并且清空缓冲器中的相应记录,即设定为零,步骤32。g. The received packet number is then compared with the number stored in said ring buffer and the corresponding record in the buffer is cleared, ie set to zero, step 32 .

由此,因为只有当指针重新访问非空缓冲器时、即当F2是非零之时,才作出丢失声明,故而可以通过缓冲器链的大小m来确定检测时延。Thus, the detection delay can be determined by the size m of the buffer chain, since a loss declaration is only made when the pointer revisits a non-empty buffer, ie when F2 is non-zero.

如图3中所示那样,可以采用链大小m来确定检测时延。例如,在优选的实施例中,最初m=4。如果观察到的假声明率高于给定阈值,即,As shown in Figure 3, the chain size m can be used to determine the detection delay. For example, in a preferred embodiment initially m=4. If the observed false claim rate is above a given threshold, i.e.,

false_rate>TOLERABLE_RATEfalse_rate > TOLERABLE_RATE

那么,所述长度也许太短了,并且需要通过插入新的缓冲器并且相应地调节m来延长所述长度36。网络通路的长度、即穿越的链路的数目越大,则需要的m就越大,这是因为当分组穿越的网络通路越长,发生无序递送的可能性就越大。随着当P循环通过缓冲器链Bi11,值越大的m就越能减小指针P在缓冲器中遇到被递送但却无序的分组的可能性。Then the length may be too short and the length 36 needs to be extended by inserting new buffers and adjusting m accordingly. The larger the length of the network path, that is, the greater the number of traversing links, the larger the required m is, because the longer the network path traversed by the packet, the greater the possibility of out-of-order delivery. As P cycles through the chain of buffers B i 11, a larger value of m reduces the probability that pointer P will encounter a delivered but out-of-order packet in the buffer.

所述success_rate最初被声明为预先确定的EXPECT_RATE并且此后被调节为:The success_rate is initially declared as a predetermined EXPECT_RATE and thereafter adjusted to:

SuccessSuccess __ raterate == declareddeclared __ lossessloss -- falseltfalse __ declareddeclared __ losseslosses declareddeclared __ losseslosses

false_rate=1-success_ratefalse_rate=1-success_rate

并且如果所述success_rate太高,即,如果and if the success_rate is too high, i.e., if

success_rate>EXPECT_RATEsuccess_rate > EXPECT_RATE

那么,缓冲器链的长度会过长,因而可能需要通过删除缓冲器来加以缩短,如图3所示那样。Then, the length of the buffer chain would be too long and may need to be shortened by deleting buffers, as shown in Figure 3.

本发明可用于播放来自于联网的存储器的媒体的多媒体播放器的实现。或者,本发明可由任何类型的多媒体接收器来使用,其中所述多媒体接收器希望使用重新传送作为错误恢复手段,因此需要执行分组丢失检测。最后,本发明可由传输控制协议执行过程来使用,其中所述传输控制协议执行过程是在接收器侧执行分组丢失检测的。The invention can be used in the implementation of a multimedia player that plays media from networked storage. Alternatively, the present invention may be used by any type of multimedia receiver that wishes to use retransmissions as a means of error recovery and therefore needs to perform packet loss detection. Finally, the invention can be used by a TCP implementation that performs packet loss detection on the receiver side.

如上所述并且在附图中示出的本发明的方法和系统提供了一种环形缓冲器,用于允许自适应地时延检测时间或者固定的时延检测时间。对于本领域技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以依照本发明的方法和系统作出各种修改和变化。由此,本发明包括落入所附权利要求书及其等价物范围内的修改和变化。The method and system of the present invention as described above and shown in the accompanying drawings provides a circular buffer for allowing adaptive delay detection time or fixed delay detection time. It will be apparent to those skilled in the art that various modifications and variations can be made in accordance with the methods and system of the present invention without departing from the spirit and scope of the invention. Thus, the present invention includes modifications and variations that come within the scope of the appended claims and their equivalents.

Claims (14)

1. A system for adaptively detecting, by a receiver, a streaming packet loss in a plurality of streaming packets transmitted from a given sender to the receiver over a network, the system comprising:
a circular buffer (10) having a size m > 1 entries (13), each entry (13) having at most one sequence number (15) of streaming packets that have not yet been received and may be lost;
-a packet loss detection module (33) for detecting and storing therein sequence numbers (15) of non-received and possibly lost packets using said circular buffer (10), in order to detect therein sequence numbers (15) of lost packets and to remove therefrom sequence numbers (15) of said lost packets and declare said packets lost, and to remove therefrom sequence numbers (15) of possibly lost packets received from a given sender;
an adaptation module (37) for adapting the system to network conditions, wherein the loss detection latency is determined by the size m of the circular buffer (10) and the loss declaration may be false.
2. The system of claim 1, wherein m is initially set to 4.
3. The system of claim 1, further comprising:
a variable s having an initial value of 1 and used to store the highest sequence number of streaming packets transmitted from a given transmitter via the network and received by the receiver;
a pointer P (12) having an initial position pointing to a predetermined location in a circular chain and for sequentially cycling through m entries of the circular buffer (10) starting from an entry (13) in the next circular buffer (10) sequentially to an entry (13) corresponding to a variable s;
wherein,
for a streaming packet received from a given sender, the packet loss detection module (33) checks the sequence number of the received packet against a variable s and performs one of the following steps:
a. if an absence in the received sequence of packets is observed starting from the point pointed to by the pointer P (12), each entry (13) of the circular buffer (10) in said absence is checked to find the sequence number (15) of a packet that may be lost and declares that the corresponding packet is lost, the total declared loss is incremented, each sequence number in the absence is stored in ascending order in the consecutive entries (13) starting from the point pointed to by the pointer P (12), P (12) is updated to point to the entries (13) in the circular buffer (10) following the absence, and s is set to a sequence number equal to the received pkt,
b. if no holes in the received sequence of packets are observed, the entry (13) pointed to by the pointer P (12) is checked to find the sequence number (15) of a packet that may be lost and declares that the corresponding packet is lost, the total declared loss cleared _ losses is incremented, the entry (13) is cleared, P (12) is updated to point to the next entry (14) in the ring buffer (10), and s is set equal to the sequence number of the received pkt,
c. if out-of-order packets are observed, entries of the circular buffer (10) are searched to find an entry containing a sequence number (15) equal to the sequence number of the received packet, if found, the entry is cleared (13), if not found, the false declaration rate false _ cleared _ losses is as one.
4. The system of claim 3, wherein:
the network condition is at least one of a success RATE (success RATE) and a false declaration RATE (false RATE) of transmission, wherein the success RATE is initially set to a predetermined desired RATE (EXPECT _ RATE); and is
The adaptation module (37) adjusts the size m of the circular buffer (10) according to network conditions as follows:
a. if false _ RATE > TABLE _ RATE, which is a predetermined threshold, then m is incremented and an entry (13) is added to the circular buffer (10), otherwise
b. If it is not
success - rate = declared - losses - falsely - declared - losses EXPECT - RATE > EXPECT - RATE
Then m is decreased and the entry (13) is removed from the circular buffer (10).
5. The system of claim 4, wherein the ring buffer (10) is a chain of ring buffers (10) of m > 1 buffers Bi, i 1.. said, m, such that each of the plurality of buffers is an entry (13) comprising a pointer to a next buffer (14) in the chain and a value for storing a sequence number (15) of an unreceived buffer, and the pointer P (12) points to a buffer in the chain.
6. A system for adaptively detecting, by a receiver, a streaming packet loss in a plurality of streaming packets transmitted from a given sender to the receiver over a network, the system comprising:
a circular buffer (10) having a size m > 1 entries (13), each entry (13) having at most one sequence number (15) of streaming packets that have not yet been received and that may be lost;
-a packet loss detection module (33) for detecting and storing therein sequence numbers (15) of non-received and possibly lost packets using said circular buffer (10), for detecting and removing therefrom sequence numbers (15) of lost packets and declaring said packet loss, and for removing therefrom sequence numbers (15) of possibly lost packets received from a given transmitter;
means for adapting the system to network conditions (37), wherein the loss detection latency is determined by the size m of the circular buffer (10) and the loss declaration may be false.
7. The system of claim 6, further comprising:
a variable s having an initial value of 1 and used to store the highest sequence number of streaming packets transmitted from a given transmitter via the network and received by the receiver;
a pointer P (12) having an initial position pointing to a predetermined location in a circular chain and for sequentially cycling through m entries of the circular buffer (10) starting from an entry (13) in the next circular buffer (10) sequentially to an entry (13) corresponding to a variable s; wherein,
for a streaming packet received from a given sender, the packet loss detection module (33) checks the sequence number of the received packet against a variable s and performs one of the following steps:
a. if an absence in the received sequence of packets is observed starting from the point pointed to by the pointer P (12), each entry (13) of the circular buffer (10) in said absence is checked in order to find the sequence number (15) of a packet that may be lost and declare that the corresponding packet is lost, the declared lost clear-losses is incremented, each sequence number in the absence is stored in ascending order in the consecutive entries (13) starting from the point pointed to by the pointer P (12), P (12) is updated in order to point to the entries (13) in the circular buffer (10) following the absence, and s is set to a sequence number equal to the received pk t,
b. if no holes in the received sequence of packets are observed, the entry (13) pointed to by the pointer P (12) is checked to find the sequence number (15) of a packet that may be lost and declares that the corresponding packet is lost, the total declared loss cleared _ losses is incremented, the entry (13) is cleared, P (12) is updated to point to the next entry (14) in the ring buffer (10), and s is set equal to the sequence number of the received pkt,
c. if out-of-order packets are observed, the entries (13) of the circular buffer (10) are searched to find entries containing sequence numbers (15) equal to the sequence numbers of the received packets, and if found, the entries (13) are cleared, and if not found, the false declaration rate false _ cleared _ losses is incremented by one.
8. A method for adaptively detecting, by a receiver, a streaming packet loss in a plurality of streaming packets transmitted from a given sender to the receiver over a network, the method comprising the steps of:
providing a circular buffer (10) of size m > 1 entries, each entry (13) having at most one sequence number (15) of streaming packets that have not yet been received and may be lost;
receiving a streaming packet having a sequence number from a given transmitter;
using the circular buffer (10) and the received packed sequence numbers to perform one of the following steps:
a. detecting and storing in the ring buffer (10) the sequence numbers (15) of packets not received and possibly lost,
b. detecting and removing sequence numbers (15) of lost packets from the circular buffer (10) and declaring said packet loss such that the loss declaration may be false, and
c. removing from the circular buffer (10) sequence numbers (15) of potentially missing packets corresponding to sequence numbers of received packets;
the method is adapted to network conditions such that the size m of the circular buffer (10) is used to determine the loss detection delay.
9. The method of claim 8, further comprising the steps of:
providing a variable s with an initial value of 1;
setting the provided variable to s ═ max (s, sequence number of received streaming packet);
providing a pointer P (12), said pointer P (12) having an initial position pointing to a predetermined location in the ring buffer (10) for sequentially cycling through m entries of the provided ring buffer (10) starting with an entry (13) in the next ring buffer (10) in sequence to an entry (13) corresponding to the variable s;
for a streaming packet received from a given sender, the sequence number of the received packet is checked against a variable s and one of the following steps is performed:
a. if a gap in the received sequence of packets is observed starting from the location pointed to by the pointer P (12), then
a.1 checking each entry (13) of the ring buffer (10) in said vacancy for finding the sequence number (15) of a packet that may be lost and declaring that the corresponding packet is lost,
a.2 if packet loss is declared, adding one to the total declared loss classified _ losses,
a.3 storing each sequence number in the absence in ascending order in successive entries (13) starting from the location pointed to by the pointer P (12),
a.4 updating the pointer P (12) to point to an entry (13) in the ring buffer (10) after the vacancy, and
a.5 setting s equal to the sequence number of the received pkt;
b. if no gaps in the received sequence of packets are observed, then
b.1 checking the entry (13) pointed to by the pointer P (12) to find the sequence number (15) of a packet that may be lost and declaring that the corresponding packet is lost,
b.2 if packet loss is declared, then the total declared loss cleared losses is increased by one,
b.3 clearing the entry (13) pointed to by P (12),
b.4 updating P (12) to point to the next entry (14) in the ring buffer (10), and
b.5 setting s equal to the sequence number of the received pkt;
c. if out-of-order packets are observed, then
c.1 searching the entries (13) of the circular buffer (10) for an entry containing a sequence number (15) equal to the sequence number of the received packet,
c.2 if found, clearing the entry (13),
c.3 if not found, add one to the false declaration rate false _ classified _ losses.
10. The method of claim 9, wherein:
the network condition is at least one of a success RATE (success RATE) and a false declaration RATE (false RATE) of transmission, wherein the success RATE is initially set to a predetermined desired RATE (EXPECT _ RATE); and is
The adapting step adjusts the size m of the circular buffer (10) in dependence on network conditions by performing one of the following steps:
d. if false _ RATE > TOLERABLE _ RATE, where TOLERABLE _ RATE is a predetermined threshold, the following steps are performed:
d.1 adding m to 1, and
d.2 adding an entry (13) to the circular buffer (10), otherwise
e. If success _ RATE > EXPECT _ RATE
e.1 reducing m by 1,
e.2 removing the entry (13) from the ring buffer (10).
11. The method of claim 9, wherein m is initially set to 4.
12. A computer program product for use with a processor, adapted for use by a receiver in detecting streaming packet loss in a plurality of streaming packets transmitted from a given sender to the receiver over a network, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:
a circular buffer (10) of size m > 1 entries (13), each entry (13) having at most one sequence number (15) of streaming packets that have not yet been received and may be lost;
a packet loss detection routine (33) comprising instructions for using the circular buffer (10) to detect and store therein sequence numbers (15) of non-received and potentially lost packets, detecting and removing therefrom sequence numbers (15) of lost packets and declaring said packet loss, and removing therefrom sequence numbers (15) of potentially lost packets received from a given transmitter;
an adaptation routine (37) comprising instructions for adapting the system to network conditions,
wherein the loss detection delay is determined by the size m of the circular buffer (10) and the loss assertion may be false.
13. The computer program product of claim 12, further comprising:
a variable s having an initial value of 1 and used to store the highest sequence number of streaming packets transmitted from a given transmitter via the network and received by the receiver;
a pointer P (12) having an initial position pointing to a predetermined location in the circular chain and for sequentially cycling m entries of the circular buffer (10) starting from an entry (13) in the next circular buffer (10) sequentially to an entry (13) corresponding to a variable s;
wherein,
for streaming packets received from a given sender, instructions of the packet loss detection routine (33) check the sequence number of the received packet against a variable s and perform one of the following steps:
a. if an absence in the received sequence of packets is observed starting from the point pointed to by the pointer P (12), each entry (13) of the circular buffer (10) in said absence is checked in order to find the sequence number (15) of a packet that may be lost and declare that the corresponding packet is lost, the total declared loss is incremented, each sequence number in the absence is stored in ascending order in the consecutive entries (13) starting from the point pointed to by the pointer P (12), P (12) is updated in order to point to the entries (13) in the circular buffer (10) following the absence, and s is set to a sequence number equal to the received pkt,
b. if no holes in the received sequence of packets are observed, the entry (13) pointed to by the pointer P (12) is checked to find the sequence number (15) of a packet that may be lost and declares that the corresponding packet is lost, the total declared loss cleared _ losses is incremented, the entry (13) is cleared, P (12) is updated to point to the next entry (14) in the ring buffer (10), and s is set equal to the sequence number of the received pkt,
c. if out-of-order packets are observed, the entries (13) of the circular buffer (10) are searched to find an entry containing a sequence number (15) equal to the sequence number of the received packet, and if found, the entries (13) are cleared, if not found, the false declaration rate false _ declared _ losses is added together and the total declared loss classes is decremented by one.
14. The computer program product of claim 13, wherein:
the network condition is at least one of a success RATE (success RATE) and a false declaration RATE (false RATE) of transmission, wherein the success RATE is initially set to a predetermined desired RATE (EXPECT _ RATE); and is
The adaptation routine (37) adjusts the size m of the circular buffer (10) according to network conditions as follows:
a. if false _ RATE > TABLE _ RATE, then m is incremented, where
A TABLE _ RATE is a predetermined threshold and an entry (13) is added to the circular buffer (10), otherwise
b. If it is not
success - rate = declared - losses - falsely - declared - losses EXPECT - RATE > EXPECT - RATE
Then m is decreased and the entry (13) is removed from the circular buffer (10).
CN200380105839.1A 2002-12-12 2003-12-10 System and method for detecting packet loss in a streaming application using a ring buffer Pending CN1726677A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43289302P 2002-12-12 2002-12-12
US60/432,893 2002-12-12

Publications (1)

Publication Number Publication Date
CN1726677A true CN1726677A (en) 2006-01-25

Family

ID=32508008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200380105839.1A Pending CN1726677A (en) 2002-12-12 2003-12-10 System and method for detecting packet loss in a streaming application using a ring buffer

Country Status (5)

Country Link
EP (1) EP1573985A1 (en)
JP (1) JP2006510255A (en)
CN (1) CN1726677A (en)
AU (1) AU2003302800A1 (en)
WO (1) WO2004054183A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100502327C (en) * 2006-09-29 2009-06-17 Ut斯达康通讯有限公司 A method, device and system used to detect frame loss of lub FP frame based on IP transmission
CN108293006A (en) * 2015-12-22 2018-07-17 英特尔公司 Technology for tracking disordered networks grouping

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101471849B (en) 2007-12-29 2011-04-06 华为技术有限公司 Protection method for packet transmission network
JP7197026B2 (en) * 2019-12-11 2022-12-27 日本電信電話株式会社 DATA ORDER CORRECTION METHOD, PACKET MONITORING DEVICE, DATA ORDER CORRECTION DEVICE, AND DATA ORDER CORRECTION PROGRAM

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151899A (en) * 1991-02-11 1992-09-29 Digital Equipment Corporation Tracking sequence numbers in packet data communication system
US6141324A (en) * 1998-09-01 2000-10-31 Utah State University System and method for low latency communication
GB0103381D0 (en) * 2001-02-12 2001-03-28 Eyretel Ltd Packet data recording method and system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100502327C (en) * 2006-09-29 2009-06-17 Ut斯达康通讯有限公司 A method, device and system used to detect frame loss of lub FP frame based on IP transmission
CN108293006A (en) * 2015-12-22 2018-07-17 英特尔公司 Technology for tracking disordered networks grouping
CN108293006B (en) * 2015-12-22 2021-09-07 英特尔公司 Techniques for tracking out-of-order network packets

Also Published As

Publication number Publication date
JP2006510255A (en) 2006-03-23
EP1573985A1 (en) 2005-09-14
AU2003302800A1 (en) 2004-06-30
WO2004054183A1 (en) 2004-06-24

Similar Documents

Publication Publication Date Title
US20060069793A1 (en) System and method using a circular buffer for detecting packet loss in streaming applications
CN109787722B (en) Data transmission method and device and server
CN1968074B (en) Network packet stream simulation method
US7203167B2 (en) Data flow control method
CN1254039C (en) System for managing multiple acknowledgments within data network
Blanton et al. A conservative loss recovery algorithm based on selective acknowledgment (SACK) for TCP
Blanton et al. A conservative selective acknowledgment (SACK)-based loss recovery algorithm for TCP
CN100338899C (en) Detection method and device
CA2397778C (en) Data discard mechanism for selective repeat protocol
US7058723B2 (en) Congestion control for internet protocol storage
US20100020689A1 (en) Immediate ready implementation of virtually congestion free guaranteed service capable network : nextgentcp/ftp/udp intermediate buffer cyclical sack re-use
CN1198403C (en) First recovery device and first recovery method
EP1950904A1 (en) Communication terminal, congestion control method and congestion control program
WO2003045080A1 (en) A method and implementation for a flow specific modified selective-repeat arq communication system
KR20080031175A (en) How to Detect Lost Packets and Determine Retransmission Mechanism for Packets
CN107634823B (en) Data transmission method of transmission control protocol based on network coding
CN1452830A (en) Data transmission protocol
US20050147110A1 (en) Method, system, and program for overrun identification
CN1726677A (en) System and method for detecting packet loss in a streaming application using a ring buffer
WO2005072118B1 (en) Preventing network data injection attacks using duplicate-ack and reassembly gap approaches
CN1610339A (en) Method and apparatus for transmitting and recovering data packets
US11283719B2 (en) Content addressable memory (CAM) based hardware architecture for datacenter networking
US20080002575A1 (en) Transmission control protocol congestion window
CN1917472A (en) Transmission system and method for radio link protocol
CN1308837C (en) System for transmission subgroup sequence between service and mobile terminal

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载