This disclosure relates generally to systems and methods for handling network packet losses with adaptive bandwidth overhead minimization. More particularly, this disclosure relates to systems and methods for Forward Error Correction (FEC) at the IP-layer with adaptive bandwidth overhead minimization.
Mobile broadband based Internet access is prone to lossy packet transfer due to environmental factors as well as the continually varying distance between the user and cell tower. Packet loss negatively affects the user experience of applications running on their mobile device. Quality of Experience (QoE) is typically an important factor in user satisfaction. In cases of TCP based applications, packet loss can result in TCP congestion control being invoked and further reducing the bandwidth used. This manifests to the user as a perception of “slow application” performance.
Further, for real-time communication such as voice/video conferencing, packet loss results in poor media quality and user dissatisfaction. Forward error correction (FEC) is a known technique whereby additional packets, called repair packets, are added to the traffic stream, which helps in recovering any packet loss. Due to this the use of FEC does result in increased network bandwidth overhead. Typically, there are two scenarios with FEC. In one case packet loss is low and the addition of too many repair packets can result in excessive network bandwidth overhead, which increases the transmission costs while reducing the available bandwidth. In the second case, there may be too few repair packets which, when facing a larger packet loss percentage, can result in an inability to recover packets, defeating the purpose of using FEC.
Other drawbacks, inefficiencies, and issues exist with current systems and methods.
Accordingly, disclosed embodiments address the above-noted, and other, drawbacks, inefficiencies, and issues of existing systems and methods.
Disclosed embodiments incorporate ways to dynamically change the number of repair packets generated by an FEC algorithm and/or the number of original packets which constitute a block, based on actively measuring packet loss over a timeframe. Further disclosed embodiments include ways to reduce synchronization between the FEC sending side and FEC receiving side, making the FEC receiving side being able to automatically adjust to variations in number of repair packets generated.
Further disclosed embodiments include computer-implemented systems for FEC at the IP-Layer with adaptive bandwidth overhead minimization in a packet transmission network, the system including an FEC encoder to process IP packets and generate FEC encoded packets and repair packets, an FEC decoder to receive and process the FEC encoded packets and repair packets, and an FEC controller that includes a set of computer-implemented instructions to cause a processor to carry out functions including configuring an FEC algorithm to control FEC encoding and decoding, packet recovery, and retrieve packet transmission statistics, determining if network bandwidth overhead needs adjustment, controlling tuning parameters, and implementing predictive analysis based at least in part on historic data.
In some embodiments the FEC encoder adds meta-information to the FEC encoded packets. In some embodiments the FEC encoder uses an encoding context provided by the FEC controller. In some embodiments the FEC decoder uses a decoding context provided by the FEC controller. In some embodiments the FEC encoder maintains an encoding state for processing the IP-packets. In some embodiments the FEC decoder maintains a decoding state for processing the IP-packets.
In some embodiments the FEC controller controls tuning parameters that include: (i) the number of original IP packets, (ii) the number of generated repair packets, and (iii) the on/off state of the FEC algorithm.
In some embodiments the FEC encoder generates the FEC encoded packets to include an FEC block of predetermined length. In some embodiments the FEC encoder generates a predetermined number of repair packets per FEC block.
In some embodiments the FEC encoder sends an FEC block length and the number of repair packets per FEC block via an FEC trailer. In some embodiments the FEC encoder sends an FEC block length and the number of repair packets per FEC block via a port in a UDP header.
Also disclosed are computer-implemented systems for FEC at the IP-Layer, the system including an FEC encoder to process IP packets and generate FEC repair packets and FEC encoded packets that further include an FEC trailer, an FEC decoder to receive and process the FEC encoded packets and FEC repair packets, and an FEC controller that controls an FEC algorithm for the FEC encoder and FEC decoder.
In some embodiments the FEC trailer further includes a MAGIC #that indicates whether a particular packet is an FEC encoded packet or an FEC repair packet, a block ID that indicates a block of packets the particular packet belongs to, and a sequence #that indicates a position within the block of packet that the particular packet belongs to.
In some embodiments the FEC repair packet further includes a UDP header including a source-port field. In some embodiments the FEC trailer further includes a block ID that indicates a block of packets the particular packet belongs to, and a sequence #that indicates a position within the block of packet that the particular packet belongs to. In some embodiments the FEC repair packet further includes one or more tuning parameters in the FEC trailer.
Also disclosed are computer-implemented methods for FEC at the IP-Layer with adaptive bandwidth overhead minimization in a packet transmission network, the method including processing IP packets with an FEC encoder to generate FEC encoded packets and FEC repair packets, receiving at an FEC decoder the FEC encoded packets and FEC repair packets, and controlling with an FEC controller that comprises a set of computer-implemented instructions to cause a processor to carry out functions including configuring an FEC algorithm to control FEC encoding and decoding, packet recovery, and retrieve packet transmission statistics, determining if network bandwidth overhead needs adjustment, controlling tuning parameters, and implementing predictive analysis based at least in part on historic data.
In some embodiments the method includes adding meta-information to the FEC encoded packets with the FEC encoder. In some embodiments the method includes providing an encoding context from the FEC controller to the FEC encoder. In some embodiments the method includes providing a decoding context from the FEC controller to the FEC decoder. In some embodiments the method includes maintaining an encoding state for processing the IP-packets by the FEC encoder. In some embodiments the method includes maintaining a decoding state for processing the IP-packets by the FEC decoder.
In some embodiments the method includes controlling tuning parameters that include: (i) the number of original IP packets, (ii) the number of generated repair packets, and (iii) the on/off state of the FEC algorithm.
In some embodiments the method includes generating, with the FEC encoder, the FEC encoded packets to include an FEC block of predetermined length. In some embodiments the method includes generating, with the FEC encoder, a predetermined number of repair packets per FEC block. In some embodiments the method includes sending, with the FEC encoder, an FEC block length and the number of repair packets per FEC block via an FEC trailer. In some embodiments the method includes sending, with the FEC encoder, an FEC block length and the number of repair packets per FEC block via a port in a UDP header. Other embodiments also exist.
While the disclosure is susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, it should be understood that the disclosure is not intended to be limited to the particular forms disclosed. Rather, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the invention as defined by the appended claims.
The general principles of FEC are known and many types of FEC algorithms exist. Also, FEC has been used over lossy mediums in a variety of applications. The usual deployment of FEC is at the application layer and is typically end-to-end.
For example, the Internet Engineering Task Force (IETF) has published requests for comments (RFCs) relating to FEC at the IP-layer such as RFC-5052, RFC-5445, RFC-6363, and RFC-8680. Of these, RFC-8680 aims to minimize bandwidth overhead due to FEC by using a sliding-window based FEC codes. Further, RFC-5052 and RFC-5445 are for applications used for sending files (i.e., content) end-to-end. None of the aforementioned proposals are adaptive given their use-case and they aren't relevant for packet forwarding systems and methods.
Likewise, RFC-6363 defines FEC for use above the transport layer and is, thus, end-to-end, however, it does not provide for adaptiveness. RFC-8680 is an update to RFC-6363 to enable use of sliding-window FEC codes. However, it, too, does not describe any method for adaptiveness in the face of varying packet loss. Other drawbacks and issues also exist with present systems and methods. In contrast, the presently disclosed embodiments provide bandwidth overhead reduction for both block FEC codes and sliding-window FEC codes.
As illustrated schematically, an FEC encoder 102 uses encoding context 110 to perform an FEC operation on the sending side. The encoding context 110 contains the FEC algorithm 114 to use as well as any parameters needed for the FEC.
Embodiments of FEC encoder 102 may require the packet data in order to generate the repair codes. As also indicated, FEC encoder 102 also maintains the encoding state for processing (e.g., block-id to use, next sequence number to use, timestamps, etc.) and also maintains statistics related to encoding operation as indicated at 112.
As illustrated schematically, an FEC decoder 108 on the receiver side processes the received FEC processed packet 104′, which could be original packet 104 with FEC meta-information (e.g., FEC encoded packet 104′) or a FEC repair packet 106. If any packet loss is detected, the FEC decoder 108 invokes the FEC algorithm 114 to recover the packet. As will be understood by those of ordinary skill in the art, the recovery may or may not succeed. Again, the inputs to the FEC decoder 108 are IP-packets.
Embodiments of FEC Decoder 108 use decoding context 116 to perform FEC recovery operations at the receiving side. Embodiments of decoding context 116 contain the FEC algorithm 114 to use as well as any other parameters needed for the FEC.
Embodiments of the FEC decoder 108 may require packet data in order to perform recovery of lost packets. As also indicated, FEC decoder 108 also maintains state to perform the decode processing (e.g., current block-id, re-sequence queues, timestamps etc.) and also maintains statistics such as recovered packets, missing packets, un-recoverable packets, etc., as indicated at 118.
An FEC controller 120 is a central management component that, among other things, creates/removes the FEC encoding context 110 and decoding context 116, modifies the algorithm 114 properties and the like. Embodiments of FEC controller 120 are responsible for retrieving the statistics from both the encoding (e.g., statistics 112) and decoding (e.g., statistics 118) side and determine if the bandwidth overheads should be adjusted. For example, if there are un-recoverable packets, then system 100 increases the number of repair packets 106. Likewise, if the missing packets are less than the repair packets 106 being generated, the system 100 reduces the repair packets 106. Other embodiments and logic are possible as disclosed herein.
As also indicated on
In some embodiments, the FEC trailer 206 comprises the following components, a MAGIC #214 (e.g., MAGIC1, MAGIC2, etc.) that indicates if the packet is an original packet 104 or a repair packet 106, a Block-ID 216 that indicates which block of packets the given packet belongs to, and a Sequence #218 that indicates the position within the block of packets the given packet belongs to.
Embodiments maintain a notion of block (e.g., FEC block 212), irrespective of whether the particular FEC algorithm 114 is a block FEC algorithm, a sliding window FEC algorithm, or some other variant. An FEC block 212 defines the number of original packets 104 and the number of repair packets 106. Once a FEC block 212 is in processing, no changes are made to the FEC algorithm 114 parameters. Any changes to adjust the repair packets 106 to generate is performed in the next block (e.g., a subsequent FEC Block 212).
As will be apparent to those of skill in the art having the benefit of this disclosure, the notion of the FEC block 212 does not limit implementation using a sliding-window FEC code. What matters is how a “sliding-window FEC algorithm implementation” views the arrival of the original packets 104 and the repair packets 106. The FEC block 212 notion need not be known to a sliding-window FEC algorithm 114.
Since the sender (e.g., FEC encoder 102 where FEC encoding is done) generates the repair packets 106, the receiver (e.g., FEC decoder 108) needs to be aware whenever the algorithm 114 properties change. This signaling is done via the source-port field of the UDP header 220 added to the repair packets 106 of the FEC block 212. IP header 202 of repair packet 106 (indicated with bracket 222 on
Embodiments of FEC algorithms 114 may require some “mathematical state” to be maintained at the FEC encoder 102 and FEC decoder 108. In some block FEC algorithms, such as Reed-Solomon, the state is based on the number of original packets 104 and repair packets 106 in an FEC block 212. This means a huge set of state combinations are possible. In such situations, and to allow variability of the parameters for adaptiveness, the solution can ensure that only a few selected combinations of the two parameters can be supported. This ensures that the receiver (FEC decoder 108) tunes itself automatically while still not requiring a large memory for maintaining all possible combinations of the “mathematical state.”
As will be apparent, FEC controller 120 essentially controls three tuning parameters 224 (shown schematically in
Embodiments of FEC controller 120 may correlate loss/recovery rates across multiple FEC encode 110/decode 116 contexts. For example, when different contexts 110, 116 are used for different types of traffic between the same sender (e.g., FEC encoder 102) and the same receiver (e.g., FEC decoder 108), the contexts 110, 116 may be amended such that more important traffic types are given priority FEC handling over other traffic types. Thus, while the bandwidth overhead per FEC context 110, 116 may be more, overall, on the lossy link between the sender and receiver, the FEC overhead may be reduced and, thereby, still meet any user set threshold.
Using these various sources of information, FEC controller 120 maintains a history of data and uses it for predictive analysis. In some embodiments, predictive analysis by FEC controller 120 may adjust the traffic parameters pro-actively to compensate for any trend towards more packet loss, less packet loss, or other conditions. For example, if the data collected over a period indicates increasing packet loss, the FEC controller 120 may add more repair packets 106. Likewise, a trend indicating reducing losses may be used to reduce the repair packets 106 per FEC block 212. Such adjustments lead to faster system 100 response to many predictable loss situations.
Embodiments of FEC controller 120 may also ensure that certain minimum number of repair packets 106 are always maintained in order to respond to unpredictable and bursty loss situations or the like. In some embodiments, if the FEC controller 120 determines that there has been no loss for a predetermined period of time, it may disable the FEC. Other embodiments are also possible.
Although various embodiments have been shown and described, the present disclosure is not so limited and will be understood to include all such modifications and variations would be apparent to one skilled in the art.