WO2015119817A1 - Congestion control bitrate algorithm - Google Patents
Congestion control bitrate algorithm Download PDFInfo
- Publication number
- WO2015119817A1 WO2015119817A1 PCT/US2015/013351 US2015013351W WO2015119817A1 WO 2015119817 A1 WO2015119817 A1 WO 2015119817A1 US 2015013351 W US2015013351 W US 2015013351W WO 2015119817 A1 WO2015119817 A1 WO 2015119817A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- fec
- packets
- rate
- data
- sent
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0009—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2416—Real-time traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
Definitions
- the present disclosure relates to data transport over a network.
- aspects of the present disclosure related to systems and methods for congestion control using unreliable transport protocols in a packet switched network.
- Sending digital data to a destination system through shared resources of a network typically involves the arrangement of data into formatted blocks, known as packets, which may have fixed or variable length.
- Each data packet typically includes a payload, or body, which has the fundamental user data being delivered to the destination, as well as certain supplemental information used for routing and control purposes, which commonly contained at least partially within a header of the data packet.
- the network, sending systems, and receiving systems may use this supplemental information to ensure proper routing and delivery of the payload to the intended destination.
- Packet loss An often unavoidable consequence of transporting data over a packet switched network in this manner is packet loss, which occurs when one or more data packets fail to properly reach their destination. Packet loss can arise due to a variety of factors, including channel congestion, signal degradation, and other reasons. In order to prevent certain network conditions which cause packet loss to occur, while also efficiently using the available bandwidth in a network channel, a variety of congestion control techniques have been developed. Moreover, there are a range of transport protocols which may incorporate tools to handle packet loss, and the particular method used to handle packet loss when it does occur depends on the particular transport protocol used during data transfer.
- these transport protocols can be classified under two types, reliable protocols and unreliable protocols, which each present certain tradeoffs, and the particular choice of protocol used in any instance may depend on the nature of the data transfer.
- Reliable protocols incorporate guarantees that each data packet is delivered to its destination in sequence, retransmitting dropped packets in the event of packet loss.
- Reliable protocols are often, but not always, connection-oriented protocols and delivery guarantees are typically accomplished by establishing a backchannel from the recipient back to the sender for a particular communication session, which the recipient may use to send some type of acknowledgement receipts to verify that packets were delivered properly. The sender may use these
- TCP Transmission Control Protocol
- Reliable protocols such as TCP
- TCP are well suited to tasks where accurate transfer of data is a chief concern and some amount of delay can be tolerated in the interests of verifying data packets are delivered properly, such as sending text based emails, digital content downloads, and media streaming services in which audio/video can be buffered at the destination system.
- the data verification properties and retransmission of data introduces a comparatively large overhead, rendering many reliable protocols undesirable for time-critical applications, including real-time data transfer, such as live audio and/or video streaming, online video gaming, and internet telephony.
- Unreliable protocols generally forgo the type of data delivery verifications for particular packets as described above, and are generally characterized by the fact that they do not guarantee that each packet reaches its destination, nor do they ensure that the packets are delivered in the proper sequence. Unreliable protocols are often, but not always, connectionless, and typically do not establish a fixed channel during any particular communication session. Each data packet may instead be routed independently based on the supplemental information contained in each data packet.
- UDP User Datagram Protocol
- unreliable protocols like UDP have comparatively reduced overhead by forgoing the reliability properties mentioned above, they are better suited for time sensitive applications where minimizing latency is a chief concern, such as the real-time applications mentioned above.
- FEC forward error correction
- network conditions often vary over time, causing the maximum bitrate available to a sender over a network channel to vary based on present load on the channel.
- a sender system attempts to send data packets at a bitrate that exceeds the current available bandwidth of the channel, it can cause congested conditions which trigger severe packet loss in response.
- This might be tolerable in less time-sensitive applications involving reliable data transport such as TCP, since retransmission of the lost data is guaranteed; however, this may be unacceptable in many real-time applications and other applications involving unreliable transport, as the packet loss may be to such an extent that the recipient is unable to reconstruct the loss data, causing undesirable consequences such as dropout of the signal.
- a method performed by a sender computing system may include sending, via an unreliable protocol, a stream of data packets to at least one recipient device over a network.
- the stream of data packets may include source packets and forward error correction (FEC) packets.
- the method may include, during said sending, receiving one or more feedback reports from the at least one recipient device, each said periodic feedback report characterizing packet loss during a corresponding period of time.
- the method may also include, during said sending, adjusting a rate at which said data packets are sent in the stream in response to at least one of said feedback reports. Adjusting the rate may include increasing a FEC rate at which the FEC packets are sent while maintaining a source rate at which the source packets are sent in response to a one of the feedback reports which characterizes the packet loss as within an acceptable level.
- a sender computing system may include at least one processor unit, and at least one memory unit coupled to the at least one processor unit.
- the at least one processor unit and the at least one memory unit may be configured to perform a method.
- the method may include sending, via an unreliable protocol, a stream of data packets to at least one recipient device over a network.
- the stream of data packets may include source packets and forward error correction (FEC) packets.
- the method may include, during said sending, receiving one or more feedback reports from the at least one recipient device, each said periodic feedback report characterizing packet loss during a corresponding period of time.
- FEC forward error correction
- the method may also include, during said sending, adjusting a rate at which said data packets are sent in the stream in response to at least one of said feedback reports. Adjusting the rate may include increasing a FEC rate at which the FEC packets are sent while maintaining a source rate at which the source packets are sent in response to a one of the feedback reports which characterizes the packet loss as within an acceptable level.
- a non-transitory computer readable medium may computer readable instructions embodied therein. The computer readable instructions may be configured to implement a method when executed. The method may include sending, via an unreliable protocol, a stream of data packets to at least one recipient device over a network.
- the stream of data packets may include source packets and forward error correction (FEC) packets.
- the method may include, during said sending, receiving one or more feedback reports from the at least one recipient device, each said periodic feedback report characterizing packet loss during a corresponding period of time.
- the method may also include, during said sending, adjusting a rate at which said data packets are sent in the stream in response to at least one of said feedback reports. Adjusting the rate may include increasing a FEC rate at which the FEC packets are sent while maintaining a source rate at which the source packets are sent in response to a one of the feedback reports which characterizes the packet loss as within an acceptable level.
- FIG. 1 is a schematic diagram of an example data transport and forward error correction technique in accordance with certain aspects of the present disclosure.
- FIG. 2 is flow diagram of an example congestion control technique in accordance with certain aspects of the present disclosure.
- FIG. 3 is a flow diagram of a detailed example of adjusting a bitrate rate with a sender device in response to feedback from at least one recipient device according to certain aspects of the present disclosure.
- FIG. 4 is a block diagram of an example system in accordance with certain aspects of the present disclosure.
- aspects of the present disclosure relate to congestion control and/or congestion avoidance techniques which may be used with an unreliable transport protocol, such as UDP.
- one or more sender devices may send data packets to one or more recipient devices using an unreliable transport protocol, such as UDP.
- the data packets may include both source packets, containing the desired source data, as well as FEC packets, containing redundancies of the source data for error correction in the event that one or more of the source packets fail to reach the one or more recipient devices.
- Periodic feedback reports may be sent from the one or more recipient devices to the one or more sender devices.
- the feedback reports may identify packet loss during the corresponding period of time, and the sender may use the feedback reports to identify whether packet loss occurred during the period of time and/or to identify an extent of packet loss during the corresponding period of time.
- the packet loss may occur, for example, as a result of the sender offering too high of a bitrate into the data stream.
- the one or more sender devices may use periodic feedback reports to adjust aspects of a bitrate of data packets in a stream sent to the one or more recipient devices. Aspects of the bitrate may be adjusted in a manner that optimizes the ability of the recipient device to obtain the source data.
- a bitrate of FEC packets in response to a feedback report which indicates that packet loss is within an acceptable level, may be increased, while maintaining a concurrent bitrate of source packets in the stream in response to the initial feedback report.
- the one or more recipient devices may be able to reconstruct the source data even if the increase in bitrate results in congestion and increased packet loss. For example, because the ratio of FEC packets to source packets may be increased, FEC packets are likely to be successfully delivered in sufficient numbers to reconstruct data lost due to loss of source packets during delivery.
- one or more sender devices 102 may send data to one or more recipient devices 104 over a network 106, and the data may be transmitted in the form of a plurality of data packets 108.
- the data packets 108 may be datagrams sent using an unreliable protocol, such as UDP, in which neither delivery of each packet 108 nor delivery of the packets 108 in order is guaranteed by the protocol. Accordingly, in the event of packet loss, the sender device 102 does not retransmit the lost pockets; rather, the recipient device 104 may attempt to reconstruct the lost source data using redundancies encoded into the data stream by the particular FEC technique used.
- the data packets 108 may include both source packets (shaded boxes in FIG. 1) which contain the original source data 110 being delivered to the recipient device 104 and FEC packets (white/blank boxes in FIG. 1), which are parity packets containing information that allows it to take the place of any lost source packet as long as there are enough other source or parity packets available.
- the FEC packets may contain redundancies of the original source data 110 and may be used by the recipient device 104 to reconstruct the source data 110 in the event that one or more of the source packets fail to properly reach the recipient 104, e.g., because they are dropped by the network 106.
- the data packets 108 may further include both audio packets and video packets of both of the aforementioned types, e.g., the data packets 108 may include audio source packets, audio FEC packets, video source packets, and video FEC packets, and the audio packets may generally be smaller (i.e., contain lesser amounts of data) than the video packets.
- the source data 110 may be a data stream that is transmitted to the recipient device 104 in real-time, and the source data 110 may be generated by an application running on the sender device 102.
- the real-time source data 110 may be made up a plurality of frames of data output in sequence, and the frames may be defined by an application which generates the source data.
- the source data 110 may be a real-time audio/video (A/V) stream output from an application running on the sender device 102, such as a video game, video telephony program, or other A/V source program, and the application may define each frame.
- A/V audio/video
- the illustrated block of source data 110 may correspond to a single frame, e.g., a single A/V frame, for which a plurality of source packets and FEC packets are generated and transmitted over the network 106 to the recipient device 104.
- the stream of data may be made up of a plurality of frames 110, which may be generated in a sequence at the sender device 102, and the plurality of data packets 108 may be formed for each frame for transmission to the recipient device 104.
- each of the data packets 108 may be stamped by the sender device with certain identifying information.
- each data packet 108 may be stamped with a frame identifier, e.g., a frame number, indicating to which frame in the sequence that the data packet belongs, as well as a sequence identifier, e.g., a sequence number, indicating wherein in the sequence within each frame (and/or across frames) the data packet belongs.
- the sender device 102 may increment the sequence number for each new data packet formed and may increment the frame number of the data packets for each new frame formed.
- the data packets 108 may also be stamped with further identifying info, such as a type identifier that identifies, e.g., whether a packet is an audio or video packet in implementations where the data stream is a real-time data stream having both an audio and a video component.
- the recipient device 104 may assemble the data in accordance with this supplemental information stamped to each packet, and may decode the data accordingly, e.g., for presentation to an end-user at the recipient side.
- the recipient device 104 may utilize the redundantly coded FEC parity packets to reconstruct the source data 110 without retransmission by the sender device 102, as shown in FIG. 1. It is noted that any number of FEC parity packets can be generated from one or more source packets using different algorithms.
- the FEC data may be generated using an erasure code.
- the erasure code may be a Reed-Solomon code.
- Jerasure One non-limiting example, among others, of an open source library which supports erasure coding and which may be used in implementations of the present disclosure is known as Jerasure.
- the error correction scheme may be such that, for each source packet that fails to reach the recipient, one FEC packet may be needed to reconstruct the particular set of data.
- the FEC technique may be one in which, in order to fully reconstruct the frame in the event of packet loss, the number of FEC packets which properly reach the recipient device needs to be at least equal to the number of lost source packets. Otherwise, the frame may be corrupted.
- N source packets exist and M parity packets were generated then source data can be recovered when at least N total packets (source and parity) are received.
- the number of source packets sent by the sender is equal to the number of FEC packets sent, i.e., the ratio of source packets to FEC packets transmitted by the sender 102 is simply 1 : 1, for simplicity of illustration. However, it is noted that many other ratios may be used, and that the ratio of source packets to FEC packets may be dynamic and change over time during a stream in accordance with certain aspects of the present disclosure, as described below.
- the sender device 102 and/or the recipient device 104 may be configured to implement a congestion control algorithm in accordance with aspects of the present disclosure.
- the congestion control technique may have similarities to at least some aspects of the data transport and error correction technique depicted in FIG. 1.
- the sender device 202 may be configured to send original source data 212 to at least one recipient device 204 over a network 206.
- the network 206 may be the internet, a WAN, a LAN, or another network which uses packet switching to route data packets to their destination.
- the sender device 202 may receive the source data 212 from an application, which may be running on the sender device, and the sender device may be configured to transmit the source data 212 in real-time to the recipient device 204 using an unreliable transport protocol, such as UDP.
- an unreliable transport protocol such as UDP.
- the source data 212 may be of a type that needs to be compressed before transmission over the network, and the sender device may be configured to compress the source data, as indicated at 214.
- the source data may include a real-time audio stream, a real-time video stream, or both (i.e., a real-time audio/video stream), and the sender device may compress the data into any of a variety of compressed formats using an audio and/or video encoder.
- the source data may be encoded using a low latency codec.
- the source data may include a real- time video stream encoded according to the h.264 format, an example of a low latency video codec.
- the source data may include a real-time audio stream encoded according to the CELT format, and example of a low latency audio codec.
- the sender device 202 may then prepare the source data, e.g. as received from an application in compressed or uncompressed form, for transmission by forming a plurality of data packets, as indicated at 216 and 218. Forming the data packets may involve dividing set of source data into a plurality of discrete payloads and adding supplemental data to each payload to form the data packet.
- the data packets formed by the sender device 202 may include source packets, as indicated at 216, which contain the source data 212 (in compressed format for the illustrated example of FIG. 2), and FEC packets, as indicated at 218, which contain redundancies of the source data 212 and may be formed according to some error correcting code.
- the source data 212 may be made up of a plurality of frames, which may be defined by an application running on the sender device 202, and the sender device may form a plurality of data packets, including source packets and FEC packets, for each frame.
- the sender device 202 may stamp each of the data packets with certain identifying information for use in the transmission process.
- the stamp information added to each data packet may include a frame identifier, e.g., a frame number, which indicates to which frame each data packet belongs, and a sequence identifier, e.g., a sequence number that indicates where each data packet belongs within a sequence that extends within and across frames.
- the sender device may be configured to increment the sequence number with each distinct data packet, and increment the frame number with each distinct frame of data.
- the stamp information may also optionally include a media type identifier, which may identify whether the particular data packet contains audio data or video data. The sender device may then send the data packets after they are formed and stamped, as indicated at 220, for deliver to one or more recipient devices 204 over a network 206.
- the sequence number may be incremented by a predetermined amount (e.g., by 1) for each new packet.
- a recipient device 204 may use the sequence numbers of received packets to determine how many packets are missing.
- the stamp information may also include extra information to determine e.g., how many packets are in a frame and which packet index within the frame a given packet is.
- the recipient device 204 may receive those data packets which are properly delivered, e.g., those are not dropped by the network 206, and the recipient device 204 may accumulate the data packets as they arrive, as indicated at 222.
- the recipient device 204 may use the supplemental information contained with each packet, including, e.g., the frame and sequence identifier information, to assemble the received data accordingly.
- the recipient device 204 may also reconstruct any lost source packets using the FEC packets, according the particular error correction technique used.
- the recipient device 204 may be configured to periodically determine packet loss for a given period of time from the stamp information contained with each packet, as indicated at 224.
- the recipient device 204 may compare the total number of data packets received during a period of time to the sequence information stamped to the received packets during that period of time in order to determine a rate of packet loss for that particular period. For example, since the sequence identifiers may increment with each new packet, they may be indicative of the total number of data packets which should have been received during a particular period of time if all of the data packets were properly delivered. The recipient device 204 may compare this number of expected packets determined from the sequence identifiers to the number of packets actually received during the period of time in order to figure the packet loss for that period. The recipient device 204 may then send the packet loss to the sender device 202 as feedback information for the particular period of time, as indicated at 226.
- the transport protocol used to send the feedback information from the recipient device back to the sender device may be the same protocol as the unreliable protocol used for transferring the data packets from the sender to the recipient, or it may be a different protocol.
- the unreliable protocol used to transfer the data packets from sender to recipient may be a connectionless protocol, such as UDP.
- a reliable channel from the recipient device to the sender device may be created over UDP.
- An example of an open source solution for creating a reliable channel over UDP, and which may be used in certain implementations of the present disclosure is usrsctp.
- a reliable backchannel for sending feedback reports from the recipient device back to the sender device may be established using a completely separate connection, such as a separate reliable protocol, e.g., TCP or a reliable channel established using some other reliable protocol.
- a separate reliable protocol e.g., TCP or a reliable channel established using some other reliable protocol.
- the sender device 202 may normalize the packet loss in the feedback information received from the recipient device, as indicated at 228. This may be accomplished by normalizing the packet loss to a pre-determined amount of packets, which may correspond to the expected amount of packets sent during a regular streaming period. For example, if the recipient device determines the packet loss as a ratio of received packets to expected packets, as determined from the sequence information, this ratio may tend to overestimate the packet loss if the amount of data packets actually sent was far less than what could have been sent by the sender device. As a more detailed example, if the sender device sends four packets, but the recipient device only receives three packets for a particular period, the recipient device may determine the packet loss to be 25%.
- the sender device could have sent 100 packets in this period, but only sent four because that was all the data that needed to be sent, the true packet loss may be more accurately expressed as one lost packet out of 100, instead of 1 lost packet out of 4, i.e., 1% instead of 25%.
- N packets should be received during a time period X. If during X, the recipient device reports packet loss based on N/2 packets, e.g., based on the sequence numbers of the data packets, then any loss should be normalized by the sender to a number of lost packets out of N, not out of N/2.
- the sender device may be configured to normalize the packet loss received from the one or more recipient devices 204 to a
- the sender device 202 may adjust the rate at which it sends data packets, as indicated at 230, in accordance with certain principles of congestion control described herein.
- the sender device in response to a set of feedback information which indicates that packet loss was within an acceptable level during that corresponding period of time, the sender device may be configured to increase the bitrate of the stream, but it may do so by initially only increasing the bitrate at which FEC packets are sent while maintaining or otherwise not increasing the bitrate at which source packets are sent.
- the example method depicted in FIG. 2 may be a continuous or repeated process, and may continue for so long as the source data 212 is being transmitted.
- the feedback information may be sent by the recipient 204 device to the sender device 202 periodically during the data transmission so that the sender device 202 may periodically adjust the bitrate at which the data packets are sent in direct response to the feedback information. It is noted that sending the feedback information more frequently may increase the responsiveness of the stream, but at the tradeoff of reducing the upstream bandwidth (i.e. from recipient to sender) to account for the feedback information.
- the feedback reports may be sent 5 times a second, i.e., every 200 milliseconds (ms). In further implementations, the feedback reports may be sent in the range of every 100 ms and every 1 second. If the feedback is sent too frequently, e.g., more than once every 100 ms, then the recipient may not have had enough time to accumulate a useful number of packets to determine packet loss, and it may be too small of a sample size. By contrast, if it is not sent often enough, e.g., less than once every second, then it may not be often enough to be useful.
- the sender device may send the data packets to a plurality of recipient devices, and may adjust the bitrate in response to feedback reports from a plurality of difference destination systems. In certain implementations, this may be accomplished by way of a respective encoder on the sender device for each respective recipient device, in which case the sender device may be configured to independently adjust the bitrate for respective recipient devices based on their respective feedback information. In other implementations, the sender device may include one encoder that serves a plurality of the recipient devices, in which case the bitrate may be adjusted for all of the recipient devices based on the lowest quality transport.
- FIG. 3 depicts an example process flow for adjusting a bitrate at which data is transferred over an unreliable protocol in response to feedback information, in accordance with certain implementations of the present disclosure.
- the example method 330 of adjusting the bitrate depicted in FIG. 3 may have one or more aspects in common with the adjustment of the bitrate indicated at 230 in FIG. 2.
- the example of FIG. 3 is only a simplified example for purposes illustrating only certain aspects of how a rate may be adjusted in accordance with the present disclosure.
- the total bitrate of the stream defined by the rate at which all data packets are sent by the sender, includes both a source bitrate, defined by the rate at which source packets are sent, and a FEC bitrate, defined by the rate at which FEC packets are sent.
- how the bitrate is adjusted in response to feedback information 332 that is received by the sender from one or more recipient devices may generally depend on whether or not the feedback information 332 indicates that packet loss was within an acceptable level during the respective period of time, as indicated at 334. It is noted that the acceptable level indicated at 334 may defined relative to prior conditions.
- the indicated packet loss may be within an acceptable level if it is steady with respect to prior conditions, e.g., the level of packet loss is relatively constant and has not fluctuated with respect to the packet loss indicated in a prior feedback report.
- How the bitrate is adjusted may also depend on whether feedback information indicates packet loss above some predetermined total packet loss threshold, as indicated at 344. In accordance with certain aspects, where a particular feedback report 332 from the recipient device indicates that the packet loss was within an acceptable level during that respective period, this may indicate that the total bitrate transmitted by the sender may be increased, e.g., because the maximum available bandwidth of the network channel is not being filled up by the transmitted stream.
- the indicated packet loss may be within an acceptable level when it is the same or within an acceptable amount of change relative to an immediately prior feedback report.
- the packet loss may be increased.
- blindly increasing the bitrate, even incrementally, may trigger packet loss, which may ordinarily cause unacceptable consequences such as corruption of frames or dropout of the signal at the recipient device.
- certain implementations of the present disclosure may address these challenges by increasing the bitrate by initially only increasing the FEC bitrate while maintaining the source bitrate, as indicated at 338, in response to a feedback report indicating that packet loss did not increase or was otherwise within some acceptable level such as when it is indicated as steady.
- the result would be a greater number of FEC packets, even if the increase in bitrate causes packet loss, e.g., due to channel congestion, the recipient device will be able to, or at least very likely be able to, reconstruct any lost source packets due to the resulting greater amount of FEC packets in the stream.
- the next adjustment to the bitrate may be an increase in the source bitrate in step to the prior increase in FEC bitrate, e.g., by the same amount as the prior FEC increase, as indicated at 342. In certain implementations, this may be in response to the immediately subsequent feedback report, or it may be after some other time interval having more than one feedback report, so long as the packet loss stayed acceptable throughout the interval, as indicated by the feedback 332.
- this next adjustment if packet loss continues to be acceptable, may be an increase in the source bitrate by the same amount as the prior FEC increase. This total bitrate may then continue to be increased incrementally as long as the feedback 332 indicates that packet loss is steady.
- the most recent adjustment, as indicated at 340 was not an increase in the total bitrate, then the available bandwidth of the stream may be tested by increasing the FEC bitrate by lOOkb/s, as indicated at 338.
- the next adjustment may be an increase in the source bitrate by lOOkb/s, as indicated at 342, and the FEC bitrate may be maintained when the source bitrate is increased in this manner, resulting in another increase in the total bitrate.
- the total bitrate may continue to be increased in this manner until packet loss fluctuates in response to the increase bitrate.
- Leading with the FEC packets to ensure that the recipient device will be able reconstruct lost source data in the event of packet loss triggered by the initial increase in total bitrate.
- the leading increase in FEC packets may generate the desired feedback to determine whether the source bitrate can be increased.
- the total bitrate of the stream is 2000kb/s, and lOOkb/s of that is FEC packets making 1900kb/s of source packets.
- the FEC rate may be increased to 200kb/s. Now total bandwidth is 2100kb/s.
- the source rate may be increase by the amount of the prior FEC rate increase.
- the next iteration may be 2100kb/s source + 200kb/s FEC on the next iteration, followed by 2200kb/s source + 200kb/s FEC and so on until packet loss is increased in response to the offered data.
- the manner in which the bitrate is increased may depend on various considerations. For example, the amount by which it is increased may vary as desired. Moreover, in implementations have distinct types of source data, resulting in distinct types of source and FEC packets, the manner in which the increase in bitrate is distributed may vary according to the nature of these packets, e.g., based on the relative size of each distinct type of packet.
- the total bitrate may also be defined by an audio bitrate, defined by the rate at which audio packets are sent, and video bitrate, defined by a rate at which video packets are sent.
- the total bitrate may be include at least four distinct types of bitrates, an audio source bitrate, a video source bitrate, an audio FEC bitrate, and an audio source bitrate. Because each video packet may generally be much larger than each audio packet, increasing the bitrate by only increasing the rate for video FEC packets might cause too large an increase for even a relatively low number of packets, resulting in too much congestion triggered by the increase.
- each increase in bitrate may include an increase in both the number of video FEC packets per frame and the number of audio FEC packets per frame.
- the ratio at which the bitrate for these two distinct types of packets are increased may be tuned according to their relative sizes as desired, e.g., in order to account for the fact that audio packets are smaller and thus facilitate finer adjustments to the total bandwidth.
- the ratio of increased audio FEC bitrate to increased video FEC bitrate with each iteration may be in the range of 2: 1 to 10: 1.
- increasing the FEC bitrate at 338 or increasing the source bitrate at 342 may include sending from two to ten additional audio packets for every one additional video packet per frame.
- the bitrate of the stream may be adjusted in a different fashion than when the packet loss was acceptable.
- an initial adjustment, in response to a feedback report indicating packet loss was present may involve increasing the ratio of FEC packets to source packets, while maintaining the total bitrate, as indicated at 346. Because this illustrative initial step does not involve a reduction in the total bitrate sent by the sender device, only a change in the ratio of FEC packets to source packets, this may not reduce packet loss if such loss is due to congestion in the channel.
- the recipient device may be better equipped to handle the packet loss. Moreover, this allows the sender to continue to get additional feedback before reducing the total bitrate, in case the conditions causing the packet loss were transient.
- the bitrate may be adjusted by dropping the total bitrate, as indicated at 348.
- the total bitrate may be dropped by some pre-defined amount, or it may be dropped to whatever bitrate most recently worked, e.g., the bitrate which resulted in feedback 332 that indicated packet loss was acceptable.
- the amount of source data available for the sender to transmit over the network may be insufficient to fill the amount of bandwidth currently available.
- the bitrate of the source data may be low because the application is simply not producing enough data to fill the available bitrate.
- the congestion control algorithm may continue to acquire feedback regarding the maximum available bitrate in the stream so that an efficient amount of the available bandwidth is available when needed.
- the system may be configured to not only add to the total bitrate to test the next step in the bandwidth, as described above, but also fill in remaining available bandwidth not used for source data with FEC packets.
- the process is currently transmitting data packets at 6MB/s, and the feedback from the recipient device still indicates that packet loss is within an acceptable range so that the transmitted bandwidth can be increased.
- the next step may be to increase the FEC bitrate by another lOOkb/s so that the total bandwidth is at 6.1MB/s.
- the source data may only be being produced at IMB/s, e.g., because an application is currently producing a video that is a black screen.
- the process may be configured to fill in the remainder of the bandwidth being tested with FEC packets by transmitting FEC packets at a bitrate of 5. IMB/s.
- the system may still efficiently utilize maximum available bitrate because the algorithm continued to acquire feedback and incrementally increase the transmitted bandwidth, even though the source bitrate momentarily dropped off.
- FIG. 3 the example technique depicted in FIG. 3 is provided for purposes of illustration only, in order to highlight certain aspects of the present disclosure. In practice, implementations of the present disclosure may factor in additional or alternative considerations not depicted by the example of FIG. 3, and may be more complex than the simplified scheme depicted in FIG. 3.
- certain aspects of the present disclosure include increasing the ratio of FEC packets to source packets in response to a feedback report from at least one recipient device. This may be by way of increasing the amount of FEC packets while maintaining the amount of source packets in order to increase the total bitrate, e.g., as indicated at 338, in response to feedback indicating that packets loss was acceptable during the respective period of time. This may also be by way of increasing the FEC to source ratio by increasing FEC bitrate and decreasing the source bitrate in order to maintain the total current bitrate, as indicated at 346, in response to a feedback report indicating packet loss fluctuated or was otherwise unacceptable. In either case, the increase in the relative amount FEC packets in the stream may better equip the recipient device to handle packet loss, while also providing feedback to the sender device that may allow it determine whether the use of the available bandwidth in the network can be more efficiently utilized.
- FIG. 4 depicts a distributed computing system that includes at least one sender computing system 402 and at least one recipient computing system 404, and the computing systems 402 and 404 are configured to transfer data over a network in accordance with certain aspects of the present disclosure.
- the sender computing system 402 may have one or more aspects in common with one or more of the senders of FIGS. 1-3.
- the recipient computing system 404 may have one or more aspects in common with one or more of the recipients of FIGS. 1-3.
- Either or both of the sender system 402 and recipient system 404 may be configured with suitable software and/or hardware to implement various aspects of the methods described herein.
- Either or both of the sender system 402 and recipient system 404 may be a server, an embedded system, mobile phone, personal computer, laptop computer, tablet computer, portable game device, workstation, game console, wearable device such as a smart watch, and the like.
- the sender system 402 may be a cloud computing server
- the recipient device 404 may be a cloud computing client of the server 402
- the sender 402 may be configured to provide a data stream to the client device over a network 499 using an unreliable protocol.
- the sender 402 may be a server that is configured to provide a real-time data stream, such as a real-time audio stream, a real-time video stream, or a real-time audio/video stream to the at least one client device 404 over a network 499, such as the internet.
- the sender system 402 may be configured to send data to the recipient system in the form of source packets 452, containing the
- the sender system 402 may send these FEC packets concurrently with the source packets to the recipient device 404 in accordance with various aspects of the present disclosure.
- the recipient system 404 may be configured to accumulate these data packets and periodically send feedback reports 456 back to the sender system 402 over the network 499.
- the sender system 402 may be configured to adjust the rate at which the data packets 452, 454 are sent in response to these feedback reports 456 in accordance with various aspects described herein.
- Either of the systems 402 and 404 may include one or more processor units 470, which may be configured according to well-known architectures, such as, e.g., single-core, dual-core, quad-core, multi-core, processor-coprocessor, cell processor, and the like.
- Either of the systems 402 and 404 may also include one or more memory units 472 (e.g., RAM, DRAM, ROM, and the like).
- the processor unit 470 may execute one or more programs 474, which may be stored in the memory 472, and the processor 470 may be operatively coupled to the memory 472, e.g., by accessing the memory via a data bus 476.
- the memory unit 472 may include data 477, and the processor unit 470 may utilize the data 477 in implementing the program 474.
- the data 477 for either of the systems 402 and 404 may include, e.g., source data transmitted from the sender system 402 to the recipient system 404, and feedback information transmitted from the recipient 404 to the sender 402 according to various aspects of the present disclosure.
- the program 474 may include instructions that, when executed by a processor, perform one or more operations associated with a celebrity video game session, such as, e.g., a method having one or more features in common with the methods of FIGs. 2 and/or 3.
- the program 474 of the sender system 402 may include instructions that, when executed by the processor 470, cause the sender system to send data to the at least one recipient device 404 and/or control congestion in response to feedback received from the recipient device 404, in accordance with aspects of the sender side of the method depicted in FIG. 2 and/or the rate adjustment technique depicted in FIG. 3.
- the program 474 of the recipient system 404 may include instructions that, when executed by the processor 470, cause the recipient system to accumulate data packets, determine packet loss, and/or send feedback information to the sender 402 in accordance with aspects of the recipient side of the method depicted in FIG. 2.
- Either of the systems 402 and 404 may also include well-known support circuits 478, such as input/output (I/O) circuits 479, power supplies (P/S) 480, a clock (CLK) 481, and cache 482, which may communicate with other components of the system, e.g., via the bus 476.
- Either of the systems 402 and 404 may optionally include a mass storage device 484 such as a disk drive, CD-ROM drive, tape drive, flash memory, or the like, and the mass storage device 484 may store programs and/or data.
- Either of the systems 402 and 404 may also optionally include a display unit 486.
- the display unit 486 may be in the form of a cathode ray tube (CRT), flat panel screen, touch screen, or other device that displays text, numerals, graphical symbols, or other visual objects.
- Either of the systems 402 and 404 may also include a user interface 488 to facilitate interaction between the system 402/404 and a user.
- the user interface 488 may include a keyboard, mouse, light pen, game control pad, touch interface, or other device.
- the user interface may also include an audio I/O device, such as a speaker and/or microphone.
- a user may interact either of the computer systems through the user interface 488.
- the sender may 402 may be a cloud gaming server
- the recipient system 404 may be a cloud gaming client
- a video game user may interact with a video game executed by the server 402 and streamed to the client 404 through the user interface 488.
- the rate at which data is transmitted from the server to the client may be optimized in accordance with aspects of the present disclosure to enhance the experience for the user and maintain the quality of a signal received at the client side.
- Portions of the user interface 488 may include a graphical user interface (GUI) that can be displayed on the display unit 486 in order to facilitate user interaction with the system 402/404.
- GUI graphical user interface
- the system 402/404 may include a network interface 490, configured to enable the use of Wi-Fi, an Ethernet port, or other communication methods.
- the network interface 490 may incorporate suitable hardware, software, firmware or some combination thereof to facilitate communication via a telecommunications network, and may support data transport using an unreliable protocol in accordance with certain aspects of the present disclosure.
- the network interface 490 may be configured to implement wired or wireless communication over local area networks and wide area networks such as the Internet. Either of the systems 402 and 404 may send and receive data and/or requests for files via one or more data packets 499 over a network.
- the above components may be implemented in hardware, software, firmware, or some combination thereof.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Communication Control (AREA)
- Environmental & Geological Engineering (AREA)
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15746450.4A EP3103210B1 (en) | 2014-02-06 | 2015-01-28 | Congestion control bitrate algorithm |
JP2016550269A JP6476197B2 (en) | 2014-02-06 | 2015-01-28 | Congestion control bit rate algorithm |
KR1020167021510A KR101862175B1 (en) | 2014-02-06 | 2015-01-28 | Congestion control bitrate algorithm |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/174,747 | 2014-02-06 | ||
US14/174,747 US9998388B2 (en) | 2014-02-06 | 2014-02-06 | Congestion control bitrate algorithm |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015119817A1 true WO2015119817A1 (en) | 2015-08-13 |
Family
ID=53755784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2015/013351 WO2015119817A1 (en) | 2014-02-06 | 2015-01-28 | Congestion control bitrate algorithm |
Country Status (6)
Country | Link |
---|---|
US (1) | US9998388B2 (en) |
EP (1) | EP3103210B1 (en) |
JP (1) | JP6476197B2 (en) |
KR (1) | KR101862175B1 (en) |
CN (1) | CN104836748B (en) |
WO (1) | WO2015119817A1 (en) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9998388B2 (en) | 2014-02-06 | 2018-06-12 | Sony Interactive Entertainment LLC | Congestion control bitrate algorithm |
EP2919510A1 (en) * | 2014-03-10 | 2015-09-16 | Telefonaktiebolaget L M Ericsson (publ) | Technique for controlling bandwidth usage of an application using a radio access bearer on a transport network |
WO2016011520A1 (en) * | 2014-07-22 | 2016-01-28 | Redknee Inc. | Method, system and apparatus for monitoring error correction data in media sessions |
FR3037750A1 (en) * | 2015-06-18 | 2016-12-23 | Orange | METHOD AND DEVICE FOR MANAGING PACKETS IN A MULTI-FLOW AND MULTI-PROTOCOL CONNECTION |
CN107710662A (en) * | 2015-06-29 | 2018-02-16 | 华为技术有限公司 | The method and receiving device of data processing |
US10756997B2 (en) | 2015-09-28 | 2020-08-25 | Cybrook Inc. | Bandwidth adjustment for real-time video transmission |
US10506257B2 (en) * | 2015-09-28 | 2019-12-10 | Cybrook Inc. | Method and system of video processing with back channel message management |
US10516892B2 (en) | 2015-09-28 | 2019-12-24 | Cybrook Inc. | Initial bandwidth estimation for real-time video transmission |
US12041107B2 (en) * | 2015-10-13 | 2024-07-16 | Comcast Cable Communications, Llc | Methods and systems for content stream coding |
EP3420699A1 (en) * | 2016-02-26 | 2019-01-02 | Net Insight Intellectual Property AB | Edge node control |
US10003434B2 (en) * | 2016-04-08 | 2018-06-19 | Cisco Technology, Inc. | Efficient error correction that aggregates different media into encoded container packets |
US10743210B2 (en) * | 2016-06-01 | 2020-08-11 | Intel Corporation | Using uplink buffer status to improve video stream adaptation control |
EP3488547A1 (en) * | 2016-07-25 | 2019-05-29 | Koninklijke Philips N.V. | Robust data transmittal |
US10447430B2 (en) | 2016-08-01 | 2019-10-15 | Sony Interactive Entertainment LLC | Forward error correction for streaming data |
EP3494680B1 (en) | 2016-08-02 | 2021-03-10 | Telecom Italia S.p.A. | Dynamic bandwidth control over a variable link |
CN109729438B (en) * | 2017-10-31 | 2022-02-08 | 杭州海康威视数字技术股份有限公司 | Method and device for sending video packet and method and device for receiving video packet |
JP7097138B2 (en) * | 2018-02-26 | 2022-07-07 | 株式会社モバイルテクノ | Communication control device, communication control program and communication control method |
CN108512774A (en) * | 2018-04-18 | 2018-09-07 | 清华大学 | Without the jamming control method lost in network |
BR112021022133A2 (en) | 2019-06-05 | 2021-12-28 | Philip Morris Products Sa | Nicotine composition, method of manufacture and aerosol generating articles comprising the same |
CN112468759A (en) * | 2019-09-09 | 2021-03-09 | 苹果公司 | Dynamic redundancy |
CN110798349B (en) * | 2019-10-28 | 2023-02-28 | 国家计算机网络与信息安全管理中心 | Configuration distribution and receiving method, equipment and computer readable storage medium |
WO2021253268A1 (en) * | 2020-06-17 | 2021-12-23 | 深圳市大疆创新科技有限公司 | Information transmission method for communication system, communication system, and communication device |
CN113328954B (en) * | 2021-05-25 | 2023-09-19 | 深圳证券通信有限公司 | Method for blocking and limiting transmission of service data packet by source terminal |
US11863317B2 (en) * | 2021-08-25 | 2024-01-02 | BitRipple, Inc. | Methods for reliable low latency data delivery using erasure codes and feedback |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060029065A1 (en) | 2004-07-07 | 2006-02-09 | Fellman Ronald D | System and method for low-latency content-sensitive forward error correction |
US20090092152A1 (en) | 2007-10-09 | 2009-04-09 | Yasantha Nirmal Rajakarunanayake | Method and System for Dynamically Adjusting Forward Error Correction (FEC) Rate to Adapt for Time Varying Network Impairments in Video Streaming Applications Over IP Networks |
US20100020713A1 (en) * | 2007-01-18 | 2010-01-28 | Tomas Frankkila | Dividing rtcp bandwidth between compound and non-compound rtcp packets |
EP2312787A1 (en) | 2008-08-29 | 2011-04-20 | Huawei Device Co., Ltd. | Method and device of data transmission |
US20110243052A1 (en) | 2010-04-02 | 2011-10-06 | Alay Ozgu | Dynamic rate and fec adaptation for video multicast in multi-rate wireless networks |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US813608A (en) | 1900-06-20 | 1906-02-27 | Diamond Match Co | Box-machine. |
JP4173755B2 (en) * | 2003-03-24 | 2008-10-29 | 富士通株式会社 | Data transmission server |
US20040240390A1 (en) * | 2003-05-30 | 2004-12-02 | Vidiator Enterprises Inc. | Method and apparatus for dynamic bandwidth adaptation |
US7613979B1 (en) | 2005-12-07 | 2009-11-03 | Sony Computer Entertainment Inc. | Network communication protocol for large scale distribution of streaming content |
US7821937B1 (en) * | 2007-06-29 | 2010-10-26 | Symantec Corporation | Network protocol with damage loss resilient congestion control algorithm |
JP2009159368A (en) * | 2007-12-27 | 2009-07-16 | Mitsubishi Electric Corp | Data transmission apparatus and transmission band estimation method |
JP5191826B2 (en) * | 2008-07-04 | 2013-05-08 | パナソニック株式会社 | Stream communication apparatus, stream communication method, and stream communication system |
JP5229054B2 (en) * | 2009-03-30 | 2013-07-03 | 日本電気株式会社 | Packet transmission / reception system |
US8514225B2 (en) | 2011-01-07 | 2013-08-20 | Sony Computer Entertainment America Llc | Scaling pixel depth values of user-controlled virtual object in three-dimensional scene |
US8880651B2 (en) | 2011-07-25 | 2014-11-04 | Sony Computer Entertainment America, LLC | Method and system for efficient download of data package |
US9998388B2 (en) | 2014-02-06 | 2018-06-12 | Sony Interactive Entertainment LLC | Congestion control bitrate algorithm |
-
2014
- 2014-02-06 US US14/174,747 patent/US9998388B2/en active Active
-
2015
- 2015-01-28 JP JP2016550269A patent/JP6476197B2/en active Active
- 2015-01-28 EP EP15746450.4A patent/EP3103210B1/en active Active
- 2015-01-28 WO PCT/US2015/013351 patent/WO2015119817A1/en active Application Filing
- 2015-01-28 KR KR1020167021510A patent/KR101862175B1/en active IP Right Grant
- 2015-02-04 CN CN201510058914.8A patent/CN104836748B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060029065A1 (en) | 2004-07-07 | 2006-02-09 | Fellman Ronald D | System and method for low-latency content-sensitive forward error correction |
US20100020713A1 (en) * | 2007-01-18 | 2010-01-28 | Tomas Frankkila | Dividing rtcp bandwidth between compound and non-compound rtcp packets |
US20090092152A1 (en) | 2007-10-09 | 2009-04-09 | Yasantha Nirmal Rajakarunanayake | Method and System for Dynamically Adjusting Forward Error Correction (FEC) Rate to Adapt for Time Varying Network Impairments in Video Streaming Applications Over IP Networks |
EP2312787A1 (en) | 2008-08-29 | 2011-04-20 | Huawei Device Co., Ltd. | Method and device of data transmission |
US20110243052A1 (en) | 2010-04-02 | 2011-10-06 | Alay Ozgu | Dynamic rate and fec adaptation for video multicast in multi-rate wireless networks |
Non-Patent Citations (1)
Title |
---|
See also references of EP3103210A4 |
Also Published As
Publication number | Publication date |
---|---|
CN104836748B (en) | 2019-01-15 |
EP3103210B1 (en) | 2019-10-23 |
JP2017508372A (en) | 2017-03-23 |
KR20160106144A (en) | 2016-09-09 |
KR101862175B1 (en) | 2018-05-29 |
CN104836748A (en) | 2015-08-12 |
EP3103210A4 (en) | 2017-09-27 |
JP6476197B2 (en) | 2019-02-27 |
US20150222555A1 (en) | 2015-08-06 |
US9998388B2 (en) | 2018-06-12 |
EP3103210A1 (en) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9998388B2 (en) | Congestion control bitrate algorithm | |
US11489621B2 (en) | Forward error correction for streaming data | |
US10182022B2 (en) | Dynamic jitter buffer size adjustment | |
US9596281B2 (en) | Transport accelerator implementing request manager and connection manager functionality | |
AU2013330649B2 (en) | Method and apparatus for media data delivery control | |
WO2022247550A1 (en) | Data retransmission processing method and apparatus, computer device, and storage medium | |
US10686861B2 (en) | Live stream connector | |
US9350484B2 (en) | Transport accelerator implementing selective utilization of redundant encoded content data functionality | |
CN116318545A (en) | Video data transmission method, device, equipment and storage medium | |
USRE49277E1 (en) | Latency-dependent cloud input channel management | |
US11863317B2 (en) | Methods for reliable low latency data delivery using erasure codes and feedback | |
KR20190118714A (en) | Method for managing qos and receiving apparatus for executing the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15746450 Country of ref document: EP Kind code of ref document: A1 |
|
REEP | Request for entry into the european phase |
Ref document number: 2015746450 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2015746450 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2016550269 Country of ref document: JP Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 20167021510 Country of ref document: KR Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |