Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

IIUC this would work well to tunnel the TCP/UDP WiFi traffic and cellular traffic over so that you get the advantages without needing to migrate software. But then again FEC is already employed by these (maybe not raptor codes but that’s a relatively simple update). Or does tunneling not work?

Is 10% loss common for backbone networks? Maybe if you’re dealing with horribly underprovisioned routers that don’t have enough RAM for how much traffic they’re processing? Not sure otherwise the use case…



I wish many of these protocols would expose non-FEC versions so that the FEC and retry logic could happen at a higher layer. In particular G.hn powerline is terrible in the implementations I've seen, since it will retransmit infinitely, a sudden loss of bandwidth during a large bulk transfer can increase ping times to over a minute.


I’ve thought about this before since there’s lossy data you can just discard instead of delivering (ie use FEC to recover video and otherwise throw away bad frames).

The challenge of course is that this doesn’t work so well:

1. Packets come in discrete chunks but FEC works best on a stream of data at the bit level (at least in a transmission context)

2. Lossy links will have their own understanding of the PHY that can’t be explained to applications / needs to happen much more quickly.

3. There’s information that can’t be corrupted in the packet full stop (ie the IP and maybe TCP framing).

2 is really the killer - applications can’t respond to noise issues like the MAC can to issues with the WiFi link for example. And higher layers can’t know about all the intermediary hops that might exist and how to characterize that to tune the FEC parameters.

3 is also a killer because it means you still need to apply FEC to the PHY to guarantee the framing packet and TCP requires checksums to pass on the packet. It’s really really difficult to use FEC at the application layer in an end to end way. It’s really something that works best at the PHY level for transmissions, at least from the brief time I’ve spent thinking on it. Possible I messed something up in my analysis of course.


I realized afterwards that what I want isn't all FEC left to higher levels, but the retransmission logic. It is absolutely necessary to detect packet corruption at the link-layer, for the MAC address, if nothing else. But it is not necessary to infinitely re-transmit all data. There are very few protocols that gracefully handle an RTT of over 60s, so buffering data for more than a few seconds is bonkers.

I do also think that exposing some knobs for the quantity of FEC to apply to a higher level might make sense; some packets are 100% fine to drop, others are very much not. Standards trying to do this exist, but don't seem to be widely supported.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: