Kalman 内部流程
是
否
是
否
是
否
是 且 未满
否 或 强制接受
RTT 样本 rtt_us
取整 max 1us
冷启动?
sample_cnt==0
初始化
x_est=z, p_est=p_init
RTT > 动态上限?
丢弃
自适应 Q/R
Q=f min_rtt
R=f jitter
创新值
innov = z - x_est
innov > Q-boost 阈值?
p_est = p_init
绕过异常值门控
预测
p_pred = p_est + Q
异常值门控?
innov > dyn_thresh
且 p_pred <= converged
拒绝样本
更新 jitter_ewma
++consec_reject
卡尔曼更新
K = p_pred/p_pred+R
x_est += K*innov
p_est = 1-K * p_pred
更新 qdelay_ewma
更新 jitter_ewma
协方差匹配
q_est, r_est
++sample_cnt
ACK 处理时序
ucp_main 入口
ACK 聚合置信度评估
测量 → 评分 → 状态映射 → 看门狗
ucp_update_model
- ucp_update_bw
滑动窗口最大带宽
2. ucp_update_ecn_ewma
ECN-CE 标记率 EWMA
3. ucp_update_ack_aggregation
双窗口 extra_acked
4. ucp_update_cycle_phase
PROBE_BW 相位推进
5. ucp_check_full_bw_reached
满管检测
6. ucp_check_drain
排水转换
7. ucp_update_min_rtt
卡尔曼 + 传统窗口 + PROBE_RTT
8. 按模式分配增益
STARTUP/DRAIN/PROBE_BW/PROBE_RTT
ucp_apply_cwnd_constraints
ECN 退避
ucp_set_pacing_rate
ucp_set_cwnd