Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'fountain codes' mode #183

Open
barorion opened this issue Dec 8, 2015 · 2 comments
Open

'fountain codes' mode #183

barorion opened this issue Dec 8, 2015 · 2 comments
Labels
enhancement Requires Sponsorship We would like commercial support implement

Comments

@barorion
Copy link

barorion commented Dec 8, 2015

Any thoughts about using fountain codes (i.e. RaptorQ), e.g. some enhanced 'best effort' mode that for large messages and low enough loss rate can effectively replace acks/retransmits?

@cbsmith
Copy link

cbsmith commented Dec 8, 2015

Fountain codes require more buffering of data on both the sender and receiver side, which means increased latency. There is certainly a case for it, but it seems in conflict with the rest of the protocol design.

@tmontgomery
Copy link
Contributor

Various packet erasure codes can definitely be supported. Fountain codes are one family. But better options might be normal packet erasure codes that combine normal/clear data and parity data.

Whether increased latency results is a function of how it is integrated and the code in use. A configuration with a "clear" channel and a "parity" channel should only incur a latency hit when loss is seen. And that latency hit will be less than a selective retransmit which requires an RTT at minimum. Due to the design of the logbuffer data structure, there is also no hit on the parity generation on the publisher.

Let me explain.

One of the consequences of the design of the logbuffer is that it is easy to have multiple non-contending readers. So, a separate thread could be generating parity and sending it on the publisher side without contending on the logbuffer publisher. This means no latency hit to the normal/clear data.

On the receiver side, parity is only required if there is loss. And that can easily be determined by position checks which are done already. If no loss, then no hit on latency.

Aeron is uniquely designed so that it can use some forms of FEC without a latency hit. Which opens up some interesting use cases.

@mjpt777 mjpt777 added the Requires Sponsorship We would like commercial support implement label Aug 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Requires Sponsorship We would like commercial support implement
Projects
None yet
Development

No branches or pull requests

4 participants