ULPFEC stands for Uneven Level Protection Forward Error Correction. It is one of the solutions included in WebRTC to recover from video packet loss.

FEC (Forward Error Correction) means including redundant information about a RTP packet in the following packets. That way if one of the packets is lost the data can still be recovered from the information received in the next packets without requiring retransmissions which take at least one round trip to get processed and acted upon. That makes it specially suitable for networks with high latency or real time requirements where retransmissions are less of an option.

Nowadays there are different implementations of Forward Error Correction inside WebRTC clients including Opus FEC, ULPFEC and FlexFEC (the sending part is disabled behind a flag). These schemas are negotiated in the SDP Offer/Answer exchange.

ULPFEC is defined in RFC 5109 and uses XOR across multiple packets to generate this redundant information as new FEC packets and be able to recover lost packets on the receiver side if needed. ULPFEC has the ability to provide different levels of protection for different packets by selecting the amount of bytes being protected and the number of previous packets the XOR is applied to.

In WebRTC, ULPFEC information is transmitted in the RTP Packets using the RED format. It is also only used for VP8 packets. Other video codecs may or may not work with ULPFEC. Support for them is dependent on the implementation of the WebRTC library found in web browsers.

Additional reading

Looking to learn more about WebRTC? 

Check my WebRTC training courses

About WebRTC Glossary

The WebRTC Glossary is an ongoing project where users can learn more about WebRTC related terms. It is maintained by Tsahi Levent-Levi of BlogGeek.me.