FEC for WebRTC

 Highlights

 Impact on my application

 Standardization status

 

 Highlights

WebRTC often uses Forward Error Correction (FEC) in its encoding of media. FEC is used for protecting media packets from packet corruption by adding redundant information that is later used on the receiving side to compensate for data that was lost and improve voice and video quality.

FEC also introduces an overhead, because the redundant information FEC adds increases the bandwidth used. The tradeoff is:

More FEC=more bandwidth consumed and more redundancy.

The tricky part is to balance usage of FEC. When there is network congestion, adding FEC packets will result in increased packet loss. That’s why FEC is great for packet corruption, but not so great when congestion is the issue.

On networks without congestion control mechanisms such as RMCAT or Circuit Breakers, using FEC can overload the network. Since WebRTC makes use of FEC there may be issues on old networks that didn’t implement congestion control.

RTP allows setting parameters such as how much packet redundancy there should be. The IETF is working on the specification that will require WebRTC implementations that support FEC to provide proper limits on the FEC parameters when running on networks without congestion control in order to avoid “bad” behavior of applications.

 Impact on my application

Mainly relevant for those implementing WebRTC or those that modify WebRTC source for specific application use cases. If more control on FEC is eventually provided through WebRTC JS APIs this will also impact applications using WebRTC.

 Standardization status

In initial discussions