KCC在 BBR 思路上的一次探索0. 算法与状态机拥塞控制算法的身份由状态机界定。Tahoe/Reno、CUBIC、BBR 各有其独特的状态机。KCC 与 BBR 的关系类似 CUBIC 与 BIC——保留外层框架替换/增加核心部件形成独立算法。KCC 保留 BBR 的四状态命名STARTUP/DRAIN/PROBE_BW/PROBE_RTT但做了两处关键改动用卡尔曼滤波器替代滑动窗口 min_rtt 估计新增ACK 聚合置信度状态机四状态IDLE→SUSPECTED→CONFIRMED→TRUSTED。同时DRAIN 和 PROBE_RTT 从必须执行变为按需执行由内层状态机驱动。作者对 BBR 的开创性贡献保持敬意KCC 仅是在其基础上的可行性探索。1. BBR 状态机回顾full_bw_reachedinflight ≤ BDP10s无min_rtt更新200ms后STARTUPDRAINPROBE_BWPROBE_RTTDRAIN 和 PROBE_RTT必须执行因为滑动窗口 min_rtt 需要排空才能得到真实值2. KCC 的两处改动2.1 卡尔曼滤波器替代滑动窗口 min_rtt建模x k x k − 1 w k , w k ∼ N ( 0 , Q ) x_k x_{k-1} w_k,\; w_k\sim N(0,Q)xk​xk−1​wk​,wk​∼N(0,Q)z k x k v k , v k ∼ N ( 0 , R ) z_k x_k v_k,\; v_k\sim N(0,R)zk​xk​vk​,vk​∼N(0,R)x xx真实传播延迟z zz观测 RTT。关键内部变量x_est,p_est(协方差),sample_cnt,jitter_ewma,qdelay_avg,qboost_cdwn,consec_reject_cnt。预测-更新// 预测-更新迭代p_estp_estQ;Kp_est/(p_estR_dynamic);x_estx_estK*(rtt_sample-x_est);p_est(1-K)*p_est;增益K KK的物理含义R d y n a m i c R_{dynamic}Rdynamic​放大 →K → 0 K\to0K→0→ 忽略被污染的 RTT 样本。卡尔曼自身状态机首RTTp_est 500|rtt_sample - x_est| 4ms cdwn0重置p_est, cdwn15p_est 250000触发PROBE_RTT安全网ColdStartCatchUpConvergedQBoostDivergedConverged 时通知外层可跳过 DRAIN、抑制 PROBE_RTT。连续异常拒绝超过 25 次强制接受防止滤波器锁定。2.2 ACK 聚合置信度状态机BBR 无条件加extra_acked。KCC 用四状态评估信号可靠性enumkcc_agg_state{KCC_AGG_STATE_IDLE,// 总分 256KCC_AGG_STATE_SUSPECTED,// 256KCC_AGG_STATE_CONFIRMED,// 512KCC_AGG_STATE_TRUSTED,// 768};评分四因子每因子 256 分总分 1024卡尔曼收敛p_est500 sample_cnt≥5不在丢包恢复中排队延迟低RTT ≤ min_rtt 2msextra_acked稳定≤ 窗口最大值的 1.5 倍行为IDLE/SUSPECTED不补偿 cwndCONFIRMED/TRUSTED补偿 cwnd且动态放大卡尔曼R RR最大 8 倍补偿持续超过 8 RTT → 降级到 SUSPECTEDR RR缩放系数按比例平滑衰减每轮 RTT 保留上一轮的 75%即衰减掉 25% 的增量约 4 轮回到基线2.3 DRAIN 和 PROBE_RTT 变为按需DRAIN卡尔曼收敛且qdelay_avg 1ms→ 跳过 DRAIN转为额外 cruisePROBE_RTT卡尔曼健康p_est ≤ 250000→ 完全抑制仅发散时触发一次作为安全网3. BBR vs KCC 对比特性BBRKCCRTT 估计器滑动窗口最小值无状态卡尔曼滤波有状态输出置信度额外状态机无ACK 聚合置信度四状态DRAIN 必须是否条件跳过PROBE_RTT 必须是固定10s健康时抑制发散时按需路径变化检测依赖 PROBE_RTT~10sQ-Boost几个RTTACK 聚合补偿无条件加 cwnd置信度门控 动态缩放 R异常值处理无动态阈值 连续拒绝保护R 平滑衰减无每轮保留75%约4轮恢复4. 定位KCC 与 BBR 的关系类似 CUBIC 与 BIC继承外层框架替换核心估计器形成独立算法。因此可称为K‑BBR或BBR‑K。在模型驱动这一纯粹路线上KCC 延续了 BBR 的思想——用带宽和延迟直接驱动而非堆砌规则。它与 Google BBRv2 的路线不同后者引入大量硬性阈值ECN、丢包率等走向规则堆砌KCC 则坚持用现代控制论卡尔曼滤波、置信度评估升级估计工具保持模型的简洁与可解释性。这是一种理想方向的探索并不声称拥有 “BBR‑2” 的命名权。GitHub: TCP KCC