UCP 与 BBR-S 的完整数学公式
一、UCP 的完整数学公式
UCP 使用一维标量卡尔曼滤波器,所有运算在内核中以定点整数完成。缩放因子记为 S(默认 ucp_kalman_scale = 1024),单位为 μs × S。
符号说明
x̂_{k|k-1}:第k步的状态预测值(传播延迟估计,单位μs × S)p_{k|k-1}:第k步的预测误差协方差(单位S²)z_k:第k步的 RTT 测量值(rtt_us × S)Q_k:过程噪声协方差(自适应调整)R_k:测量噪声协方差(自适应调整)K_k:卡尔曼增益
步骤 1 — 状态与协方差预测
x̂_{k|k-1} = x̂_{k-1|k-1}
p_{k|k-1} = p_{k-1|k-1} + Q_k
做什么:将上一时刻的传播延迟估计作为当前预测。过程噪声 Q_k 被加到协方差上,表示对状态可能发生变化的不确定性有所增加。UCP 认为传播延迟在短时间窗口内是恒定的(随机游走模型)。
步骤 2 — 计算创新(Innovation)
ε_k = z_k - x̂_{k|k-1}
做什么:测量值减去预测值,得到“新信息”。若 ε_k > 0,说明当前 RTT 高于预测的传播延迟,可能包含排队延迟;若接近零或负(理论上不可能低于真实传播延迟),则说明滤波器跟踪良好。
步骤 3 — 离群值门控(Outlier Gating)
threshold_gate = max(5ms × S, jitter_ewma × gate_factor × S)
如果 |ε_k| > threshold_gate,则丢弃该样本,不更新滤波器状态。
做什么:用硬阈值拒绝偏离过大的样本。jitter_ewma 是历史创新绝对值的指数加权滑动平均(见步骤 7)。门控的物理含义:正常传播延迟波动不应超过 5 ms(或更高抖动下的动态阈值)。超过此限,认为是排队延迟、网络突发或其他非传播延迟信号,禁止进入传播延迟估计通道。
步骤 4 — 测量噪声自适应(R 自适应)
jitter_diff = jitter_ewma - jr_thresh × S
如果 jitter_diff > 0:
R_k = ucp_kalman_r + jitter_diff × ucp_kalman_r / (jr_scale × S)
否则:
R_k = ucp_kalman_r
做什么:当网络抖动(jitter_ewma)高于阈值 jr_thresh 时,增大测量噪声协方差 R_k。这意味着滤波器会更不信任当前的测量值,减弱其对传播延迟估计的修正力度,防止估计被噪声带偏。
步骤 5 — 过程噪声提升(Q 提升,Q-Boost)
如果 |ε_k| > threshold_boost × S:
Q_boosted = Q_base × boost_factor
否则:
Q_boosted = Q_base × q_min_factor
Q_k = max(Q_boosted, Q_min_bound)
做什么:当创新异常大时(超出另一个门限 threshold_boost),临时提升过程噪声 Q_k。这会使协方差 p 迅速增大,卡尔曼增益也随之增大,滤波器转而更相信测量值,从而能快速收敛到新的传播延迟水平,应对路径突变。
步骤 6 — 卡尔曼增益计算与状态更新
K_k = p_{k|k-1} / (p_{k|k-1} + R_k) (定点整数除法,分子分母同除以 S)
x̂_{k|k} = x̂_{k|k-1} + (K_k × ε_k) / S
p_{k|k} = (S - K_k) × p_{k|k-1} / S
做什么:标准线性卡尔曼更新。增益 K_k 决定新信息 ε_k 的权重。测量噪声 R_k 大则增益小,滤波器更相信预测值;协方差 p_{k|k-1} 大则增益大,滤波器更相信测量值。更新后的 x̂_{k|k} 就是新一步的传播延迟估计(将用于后续 BDP 计算)。
步骤 7 — 信号分解:排队延迟与抖动估计
qdelay_instant = max(0, (z_k - x̂_{k|k}) / S) (单位:μs)
qdelay_avg = (qdelay_avg × 7 + qdelay_instant) / 8 (EWMA 平滑)
jitter_ewma = EWMA( |ε_k| / S ) (另一个 EWMA)
做什么:将滤波后的 RTT 测量分解为传播延迟(x̂_{k|k}/S)和瞬时排队延迟(qdelay_instant)。qdelay_avg 是指数加权平滑后的排队延迟,用于增益衰减和主动减窗决策。jitter_ewma 是指数加权平滑后的绝对创新,用于动态门控和测量噪声自适应。
步骤 8 — 滤波收敛条件
如果 p_{k|k} < p_converged_threshold 且 sample_cnt >= min_samples:
卡尔曼滤波器收敛。
用 x̂_{k|k} / S 更新全局 min_rtt_us,并替代原滑动窗口最小值。
做什么:当协方差足够小且已有足够样本时,认为滤波器的传播延迟估计已经稳定可靠。此后 BBR 状态机的 min_rtt_us 将由卡尔曼滤波器提供,不再使用原始滑动窗口。
二、BBR-S 的完整数学公式
BBR-S 使用自适应托比特卡尔曼滤波器(ATKF),将 RTT 测量建模为下界截断的观测过程。以下按论文《BBR-S: Improving BBR’s Minimum RTT Estimation and Bandwidth Probing》中的描述,列出核心数学公式。
符号说明
x̂_{k|k-1}:第k步状态预测值(真实最小 RTT)P_{k|k-1}:预测误差协方差z_k:测量 RTTQ_k:过程噪声协方差(自适应估计)R_k:测量噪声协方差(自适应估计)K_k:卡尔曼增益ε_k:创新α, β:噪声估计的学习率
步骤 1 — 预测
x̂_{k|k-1} = x̂_{k-1|k-1}
P_{k|k-1} = P_{k-1|k-1} + Q_k
做什么:与 UCP 相同,假设真实最小 RTT 是缓慢变化的随机游走。过程噪声 Q_k 控制状态的不确定性。
步骤 2 — 托比特测量模型与创新计算
BBR-S 的测量模型为截断正态分布:
z_k = max(x_k + v_k, x_k)
其中 v_k ∼ N(0, R_k) 是测量噪声。对于高于下限的观测值,似然为标准正态;对于等于下限的观测值,概率为累积分布。
创新计算(使用条件期望):
ε_k = z_k - E[z_k | x̂_{k|k-1}, R_k]
其中 E[z | x̂] = x̂ + √R_k × λ(α),α = x̂ / √R_k,λ(α) = φ(α)/(1−Φ(α)) 是逆米尔斯比。φ 和 Φ 分别是标准正态的 PDF 和 CDF。
做什么:当测量值接近或处于下限时,标准线性创新会低估真实的误差。通过条件期望校正,托比特滤波器将截断效应纳入创新,避免高估最小 RTT。这相当于内嵌了一个概率性的下界约束。
步骤 3 — 自适应噪声协方差估计
Q̂_k = (1−α) Q̂_{k−1} + α (K_k × ε_k)²
R̂_k = (1−β) R̂_{k−1} + β (ε_k² − P_{k|k−1})
做什么:基于创新的实际统计量,动态估计 Q 和 R。ε_k² 是创新总能量,减去预测协方差 P_{k|k-1} 后可得到测量噪声方差 R 的无偏估计。(K_k ε_k)² 则反映过程噪声的贡献。这是噪声协方差匹配方法,理论上在平稳环境下可收敛到真实的噪声方差。
步骤 4 — 托比特卡尔曼增益与更新
K_k = P_{k|k-1} / (P_{k|k-1} + R̂_k) (标准形式,但须做截断修正)
更新时,需要使用包含截断修正的似然梯度来更新状态:
x̂_{k|k} = x̂_{k|k-1} + K_k × ε_k_corrected
P_{k|k} = (1 − K_k) P_{k|k-1}
做什么:尽管增益计算形式与标准 KF 相同,但这里的 ε_k_corrected 是经过截断修正后的创新(步骤 2)。这确保了在样本数量有限且截断效应明显时,状态估计不会偏向更高值。
步骤 5 — 收敛与带宽探测
BBR-S 用 x̂_{k|k} 作为最小 RTT 估计输入 BBR 带宽探测。噪声估计的收敛性会影响状态精度,论文通过仿真验证了在移动网络下的RTT降低和吞吐量保持。
三、两者的根本差异(表格总结)
| 步骤 | UCP | BBR-S |
|---|---|---|
| 状态预测 | 随机游走,固定 Q 自适应增强 | 随机游走,自适应估计 Q |
| 创新处理 | 标准线性创新 | 使用逆米尔斯比进行截断校正 |
| 异常处理 | 硬阈值门控,直接拒绝超出 5 ms 的样本 | 概率截断模型,将截断效应内嵌于创新计算 |
| 噪声估计 | 基于抖动的启发式 R 自适应,Q 临时提升 | 基于协方差匹配的自适应 Q、R 在线估计 |
| 信号分解 | 有:从滤波结果中分解出 qdelay_instant 和 jitter_ewma,用于拥塞控制 |
无:仅输出最小 RTT 估计 |
| 核心数学工具 | 标准标量线性卡尔曼 + 工程规则 | 截断正态分布模型 + 逆米尔斯比 + 自适应噪声估计 |
| 假设 | 无分布假设,仅物理门控 | 假设测量噪声(高于下限部分)服从正态分布 |
UCP 的公式是实用主义的:用最少的数学结构保证鲁棒性,将不可建模的网络噪声直接拒之门外,并分解出多路信号驱动控制。BBR-S 的公式是学术理论导向的:用截断分布和自适应估计寻求在特定噪声假设下的最优解。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)