Sliding Window Coding, the Technology for Low-Latency Reliability
We’re happy to share our first article of the year on sliding window coding with RLNC, as demonstrated by our partners at Steinwurf in their cloud gaming demo. Click for the article linked below and we look forward to your comments and questions
Article reproduced from: https://lnkd.in/gRRCFrf
*****************************************************
Our Partners at Steinwurf recently showcased a cloud gaming solution using an RLNC tunnel and sliding window coding:
But what is a sliding window?
In telecommunications, sliding windows occur where a stream of data units (e.g., packets) are being transmitted in order of arrival. Usually, each packet needs to be received in order and acknowledged by the receiver. The sender 'slides' along a window of data units (e.g., packets) by including the next packet or range of packets in the stream and by removing packets that were acknowledged as received by the receiver, or that were otherwise deemed obsolete by the transmitter, as they are no longer needed in the window. The sliding of the window provides a way to manage the buffer of packets that are in play for transmission.
An everyday example is streaming a live video, as the frames comprising the video need to be received in order to make sense. After all, you wouldn’t want to see the score change before watching the goal.
What happens if packets are lost when streaming or interacting with media like this?
Traditionally, when using a typical sliding-window protocol such as TCP, here’s what happens when a packet is dropped:
1. The loss of the packet needs to detected at the receiver;
2. A retransmission;
3. The sender must receive acknowledgement that the packet was received;
4. The packet is then removed at the sender as it will never be requested again.
The figure below shows a sliding-window protocol with feedback and selective repeat in action, where the systematic packet acknowledgement enables the sliding window to advance. The figure notes the potential effects of packet losses on the media streaming application. Such selective repeat is included in advanced versions of TCP, while earlier, though still common, versions of TCP have a more rudimentary reaction to feedback. TCP is the dominant protocol of transport.
[Figure 1 above]
What can we do to improve the transmission and allow the customer to have a more immersive, uninterrupted experience?
● Increasing the bandwidth simply allows more information to be sent down a path, it doesn’t help much with the delays from going back and forth to detect and re request lost packets.
Forward error correction (FEC) is the best method for avoiding delays that are due to lost packets. FEC consists of sending additional (coded) representations of transmitted packets that can be used to replace eventual losses. Conventional FEC methods, are impractical for operating in a sliding window.
How can RLNC help?
RLNC has the flexibility required to operate within a sliding window:
● Using sliding window coding, RLNC can be used to code and decode a stream in real time across multiple packets, leading to low-latency schemes.
● RLNC is the only code able to code, and recode, a dynamic set of packets, thus accommodating sliding-window protocols.
● New packets at the source can be added to the sliding window, which can dynamically change in size, and be included in coding operations immediately. Each new packet, whether coded or not, can be used at the destination to contribute to decoding operations, as in the figure below.
● RLNC’s sliding window coding avoids the coding delays that are typically introduced by block codes and rateless codes while waiting for complete blocks to assemble at the encoder or the decoder.
[Figure 2 above]
● Like sliding window protocols, RLNC inherits the ability to vary opportunistically the size of its sliding window to match network conditions.
● Thus, an RLNC-enabled stream has the required flexibility to deliver lower latencies, and while being able to operate without feedback, it can opportunistically use any available feedback, accommodating unreliable feedback where feedback Is lost.
● Ultimately, RLNC helps deliver precise and dynamic delay guarantees, thus enhancing QoS and QoE.
Why not use other coding schemes?
Feedback of the kind illustrated in figure 1 has no place in conventional codes, be they block codes, convolutional codes or their derivatives (say concatenated or Turbo), or rateless codes. Even if we are willing to forego the benefits of feedback shown on our figure, and present in TCP, conventional codes are not well suited to sliding windows. Methods based on block codes or rateless codes, because they are designed to work on non-overlapping blocks of packets, are not optimal for sliding windows. Convolutional and related codes are not designed to be able to deal with varying windowing.
Where does sliding window RLNC provide benefit?
Latency-sensitive applications where a service becomes unsafe, or unenjoyable, once latency limits are breached, are prime candidates to benefit from RLNC sliding window coding. Examples include:
● Live Streaming;
● Video Conferencing;
● Remote Desktop;
● Immersive entertainment – AR/VR;
● Online Gaming;
● Remote surgery with haptic feedback;
● Driver assistance;
● Self-driving cars;
● Traffic management;
● Motion control
Examples in Industry:
Our partners at Steinwurf have recently used RLNC to develop a sliding-window coding protocol which was applied to a demo for remote gaming. The scenario involves a gamer providing input controls from their location to a remote machine where the game is being rendered, which sends back a live video feed of the gameplay for the gamer to interact with. A two-way RLNC tunnel is established between the gamer and the remote gaming machine for reliability., RLNC-encoded packets are interleaved into the video stream and gamer inputs are sent back to the gaming machine. RLNC enables a fast-paced gaming experience without any noticeable input lag or disruption to the quality and synchronicity of the video feed to the gamer, even if losses occur in the network, or the user is mobile.
For more information about sliding-window coding and other game changing features of RLNC, our white papers provide a great overview and are available to request here.
To view the remote gaming demo and some explanation from our partners, check out their blog post here.