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

FEC (Forward Error Correction) consist on include 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. 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 (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 and be able to recover lost packets in 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 case of WebRTC, ULPFEC information is transmitted in the RTP Packets using the RED format.

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.