1

I'm currently implementing error-correction for a UDP-based network protocol. We chose to implement error-correction in order to reduce the number of packet re-transmissions.

The architecture is very simple: inside our UDP packet (in the payload section), we include an error-correction code (in this specific case is based on Reed-Solomon); therefore, if a UDP packet is damaged during transmission, our application is able to "repair" the UDP payload, without the need to request a packet retransmission. Retransmission is only necessary when the packet is fully lost or in case it's too much damaged.

The main problem is: for this architecture to work, the UDP packet must be delivered to destination even if it is damaged. However, network devices and the OS itself may drop the packet if it is damaged.

I resolved the problem with the UDP transport layer: UDP's checksum is fortunately optional, so it can be disabled. Disabling UDP's checksum feature enables us to receive damaged UDP packets (so we can try to repair them ourselves).

I also resolved the problem with the IPv4 layer: IPv4's checksum only checks the integrity of the IPv4 header, and not the payload. And that's totally fine, since our application is able to repair payload damages, but not of course IPv4 header damages.

There's a last problem to resolve: the data-link layer. For instance, ethernet frames have a checksum that ensures integrity of the entire frame; that means that if the UDP payload is damaged, the ethernet frame checksum will not be valid, and therefore the network devices or the OS will drop the packet.

On the other hand, our network protocol needs error-correction feature because it will be used in satellite communications (where packets aren't transmitted to the satellite using ethernet frames, I suppose). But I have not been able to find information about "satellite frames" and how they handle integrity checks.

What kind of frames are usually used in satellite communications? And, most importantly, do these frames check only header integrity (like IPv4) or the entire packet integrity (like ethernet frames)?

Thanks very much.

3
  • 1
    I am the lead developer on a project with some similar goals and tech. We use RS on groups of packets, similar to how it's applied to compact discs, to recover lost packets. Damaged packets are extremely rare with modern IP networks; but loss is obviously common for a variety of reasons. You might also want to read about QUIC: en.wikipedia.org/wiki/QUIC Hope this helps! Apr 3 at 13:24
  • Thanks @JeffWheeler, I was aware of QUIC, but I will investigate more about how QUIC handles forward error correction. The main question however still is: if a UDP packet is damaged during satellite transmission, will the packet be delivered to destination? Because if it's dropped, it cannot be repaired. Apr 3 at 14:30
  • Depends on the exact L1 and the IP hops between stations. Every node is supposed to check the IP checksum, at minimum, so corruption should be detected as soon as it leaves the satellite network. Most unreliable RF comm systems have some mechanism of error detection, if not correction. But you'd have to talk to the actual network operators to know what their gear does.
    – Ricky
    Apr 3 at 19:30
2

While Ethernet is ubiquitous for wired links, there's no such single standard for satellite communication. An ISP might use something similar to Ethernet or something completely different. There's no single answer and you'd have to ask the ISP.

Incidentally, the ETSI standards already use dual-stage FEC, see https://www.etsi.org/deliver/etsi_ts/102100_102199/10218801/01.01.01_60/ts_10218801v010101p.pdf. Likely, most other protocols use FEC as well.

That said, it's probably best to make your FEC optional. That way you can reduce errors and packet loss on unreliable links while omitting the overhead on links where it doesn't provide any benefit.

6
  • 1
    FEC is already optional in our protocol (mostly because it's used also for low-latency LAN communications). I will contact the relevant ISPs that provide satellite communications to us, in order to verify how they handle packet transmission. If they already provide FEC at the data-link, I think that it can be safely disabled in our application protocol. Apr 3 at 15:46
  • Ethernet frames are not really "ubiquitous" in wired communication: PPP is still used a lot (for example over ADSL lines). Apr 4 at 7:13
  • @MartinRosenau Well, at least in Germany, ADSL/VDSL lines mostly use PPP over Ethernet (over ATM) framing... ;-)
    – Zac67
    Apr 4 at 7:29
  • That is very interesting: We had an internet access at 1&1 which used PPPoA according to the router settings. That protocol uses PPP frames directly on ATM frames. Apr 4 at 7:39
  • @MartinRosenau Did the router use an Ethernet port for WAN or an integrated modem?
    – Zac67
    Apr 4 at 9:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.