Search code examples
webrtccongestion-control

WebRTC - How does Google Congestion Control Algorithm for WebRTC (RRTCC) control congestion?


I'm a newbie with RRTCC and I really dont understand how RRTCC adjusts incoming media bitrate. I tried to read Internet Draft of RRTCC but cannot figure it out: https://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-congestion-03

It calculates the estimated bandwidth based on delay and loss, so what's next? How it can directly control the sending rate to control congestion?


Solution

  • The RTP receiver doesn't directly control the sending rate. It just sends status information to the RTP sender, which is the only one capable of controlling its own sending rate.

    draft-alvestrand-rmcat-congestion has been replaced by draft-ietf-rmcat-gcc so I recommend that you use the later one.

    In section 2. System model it explains that the RTP receiver should also act as a RTCP sender, in order to send REMB messages to the RTP sender. These messages should be sent by the RTP receiver as soon as it detects any congestion, and then keep sending it at a rate of once per second even if no congestion is happening. Then the RTP sender uses the information in the received message to decide if the transmission bitrate can be raised or should be immediately lowered.