GCC 拥塞控制的算法细节

张开发
2026/6/6 20:17:16 15 分钟阅读
GCC 拥塞控制的算法细节
GCC(Google Congestion Control)是 WebRTC 中核心的拥塞控制算法,它采用混合架构,融合了基于丢包和基于延迟两种拥塞检测方式,旨在低延迟、高吞吐量和公平性之间取得平衡。一、GCC 的核心架构1.1 整体工作流程GCC 是一个持续的反馈循环,主要包含四个环节:核心流程:接收端统计包到达时间和丢包率,通过 RTCP 反馈给发送端发送端 Estimator综合延迟梯度和丢包率评估可用带宽Pacer根据评估码率计算发送预算,平滑发包发送端按 Pacer 调度发送 RTP 包1.2 拥塞控制循环WebRTC 的 GCC 通过以下循环持续调节码率:步骤组件功能1Estimator根据 RTCP 反馈评估网络拥塞状态和可用码率2编码器根据评估码率调整编码器目标码率3Pacer根据新码率计算发送节奏和 Padding 比例4Sender按 Pacer 调度发送 RTP 报文5Receiver统计包到达时间和丢包,通过 RTCP 反馈二、基于延迟的拥塞控制2.1 包组(Packet Group)概念GCC 不针对单个包计算延迟,而是将包分组后再计算组间延迟差,这符合视频传输的特点(一帧视频切分为多个 RTP 包),也减少了计算误差。包组划分规则:如果当前包的发送时间与当前包组第一个包的发送时间差≤ 5ms,归入同一包组超过 5ms,则开启一个新的包组为什么是 5ms?在 WebRTC 中,Pacer 每 5ms 发送一批包(burst_time interval),这是包组划分阈值的来源。2.2 延迟梯度计算定义相邻包组 i-1 和 i 的:参数公式含义发送时间差delta_timestamp = T(i) - T(i-1)包组最后一个包的发送时间差到达时间差delta_arrival = t(i) - t(i-1)

更多文章