Is your satellite link oscillating? Improving goodput using network coding
blog.apnic.net
blog.apnic.net
Now, the solution presented, could be superior to RED, but based on what they've shown, I'm not entirely convinced. It is an intriguing solution though.
Also, an important takeaway they presented, that translates to other software tasks, is that increasing the buffer often makes the situation worse. One thing you can look into, is the research currently underway into buffer bloat, and the suspected impacts it is believed to be having on consumer internet service. My understanding is it appears to be caused by this exact phenomenon, where engineers from equipment manufactures and telecom operators reacted to the problem by drastically increasing buffer sizes.
*Please be aware, I work for a large telecom operator in Canada, but the views are my own and do not reflect any position of my employer.
- This sounds similar to the incast problem which occurs in datacenters, but this happens on consumer Internet - cool.
- After reading both this post and the TCP/NC paper, it seems to me like TCP/NC is unfair to vanilla TCP. If all TCP/NC does is send the same number of packets, but the packets are "more sophisticated" encodings of the original data, link utilization would be the same. So apparently, TCP/NC is more aggressive than vanilla TCP, and that's fine, but I think it should be acknowledged (haha). When they say stuff like "TCP doesn’t see the packet loss, and as a result there’s no need for the TCP senders to reduce their sending rates", it's a bit unclear what they mean - you can just as well modify the TCP stack to ignore the packet loss and not reduce the sending rate, without network coding.
- Why not use TCP termination? You could install a performance-enhancing proxy at the Sat gate, and make sure the link is always 100% utilized.
- "Let’s increase the queue memory" - I thought this should theoretically work. See for example http://yuba.stanford.edu/~nickm/papers/sigcomm2004.pdf. If folks familiar with the apnic effort are reading, I would love to know if they tried such measures and what happened.
- Could CoDel improve the situation here?
> So how does this help with queue oscillation? Simple: We generate a few extra "spare" combination packets, so that we now have more equations than variables. This means we can afford to lose a few combination packets in overflowing queues or elsewhere – and still get all of our original packets back.
If I understand correctly, this would also work with a more traditional coding scheme (block coding or convolutional coding). I'm curious if there are plans to take advantage of the properties of network codes in the future.
[1] http://en.wikipedia.org/wiki/Packet_erasure_channel
[2] http://en.wikipedia.org/wiki/Erasure_code
[3] http://en.wikipedia.org/wiki/Linear_network_coding#The_butte...
I got the feeling installing traffic shaping routers with explicit packets/second limit would also do wonders for links mentioned in the article.
Unfortunately, RLNC implementations are patent-encumbered in the US, so good luck using this "simple" linear algebra.
best of luck using any of it without a large team of expensive lawyers.
Disclaimer: I am one of developers of the RLNC kernel module at Steinwurf ApS.