当前位置: 首页 > news >正文

KCC:在 BBR 思路上的一次探索

KCC:在 BBR 思路上的一次探索

0. 算法与状态机

拥塞控制算法的身份由状态机界定。Tahoe/Reno、CUBIC、BBR 各有其独特的状态机。KCC 与 BBR 的关系类似 CUBIC 与 BIC——保留外层框架,替换/增加核心部件,形成独立算法。

KCC 保留 BBR 的四状态命名(STARTUP/DRAIN/PROBE_BW/PROBE_RTT),但做了两处关键改动:

  1. 卡尔曼滤波器替代滑动窗口 min_rtt 估计;
  2. 新增ACK 聚合置信度状态机(四状态:IDLE→SUSPECTED→CONFIRMED→TRUSTED)。

同时,DRAIN 和 PROBE_RTT 从必须执行变为按需执行,由内层状态机驱动。

作者对 BBR 的开创性贡献保持敬意,KCC 仅是在其基础上的可行性探索。


1. BBR 状态机回顾

full_bw_reached

inflight ≤ BDP

10s无min_rtt更新

200ms后

STARTUP

DRAIN

PROBE_BW

PROBE_RTT

  • DRAIN 和 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=xk1+wk,wkN(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,vkN(0,R)
x xx:真实传播延迟,z zz:观测 RTT。

关键内部变量x_est,p_est(协方差),sample_cnt,jitter_ewma,qdelay_avg,qboost_cdwn,consec_reject_cnt

预测-更新

// 预测-更新迭代p_est=p_est+Q;K=p_est/(p_est+R_dynamic);x_est=x_est+K*(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\to0K0→ 忽略被污染的 RTT 样本。

卡尔曼自身状态机

首RTT

p_est < 500

|rtt_sample - x_est| > 4ms && cdwn==0

重置p_est, cdwn=15

p_est > 250000

触发PROBE_RTT安全网

ColdStart

CatchUp

Converged

QBoost

Diverged

  • Converged 时通知外层:可跳过 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):

  1. 卡尔曼收敛(p_est<500 && sample_cnt≥5
  2. 不在丢包恢复中
  3. 排队延迟低(RTT ≤ min_rtt + 2ms)
  4. extra_acked稳定(≤ 窗口最大值的 1.5 倍)

行为

  • IDLE/SUSPECTED:不补偿 cwnd
  • CONFIRMED/TRUSTED:补偿 cwnd,且动态放大卡尔曼R RR(最大 8 倍)
  • 补偿持续超过 8 RTT → 降级到 SUSPECTED
  • R RR缩放系数按比例平滑衰减:每轮 RTT 保留上一轮的 75%(即衰减掉 25% 的增量),约 4 轮回到基线

2.3 DRAIN 和 PROBE_RTT 变为按需

  • DRAIN:卡尔曼收敛且qdelay_avg < 1ms→ 跳过 DRAIN(转为额外 cruise)
  • PROBE_RTT:卡尔曼健康(p_est ≤ 250000)→ 完全抑制;仅发散时触发一次作为安全网

3. BBR vs KCC 对比

特性BBRKCC
RTT 估计器滑动窗口最小值(无状态)卡尔曼滤波(有状态,输出置信度)
额外状态机ACK 聚合置信度四状态
DRAIN 必须否(条件跳过)
PROBE_RTT 必须是(固定10s)健康时抑制,发散时按需
路径变化检测依赖 PROBE_RTT(~10s)Q-Boost(几个RTT)
ACK 聚合补偿无条件加 cwnd置信度门控 + 动态缩放 R
异常值处理动态阈值 + 连续拒绝保护
R 平滑衰减每轮保留75%,约4轮恢复

4. 定位

KCC 与 BBR 的关系,类似 CUBIC 与 BIC:继承外层框架,替换核心估计器,形成独立算法。因此可称为K‑BBRBBR‑K

在模型驱动这一纯粹路线上,KCC 延续了 BBR 的思想——用带宽和延迟直接驱动,而非堆砌规则。它与 Google BBRv2 的路线不同:后者引入大量硬性阈值(ECN、丢包率等),走向规则堆砌;KCC 则坚持用现代控制论(卡尔曼滤波、置信度评估)升级估计工具,保持模型的简洁与可解释性。

这是一种理想方向的探索,并不声称拥有 “BBR‑2” 的命名权。


GitHub: TCP KCC

http://www.jsqmd.com/news/1013611/

相关文章:

  • 论文写作用哪个AI模型?精选3款学术专用大模型 - 掌桥科研-AI论文写作
  • 免费开源!在线将 SQL 模式转换为交互式 ER 图,数据本地处理超安全
  • YOLOv5到v8怎么选?实测对比快递包裹检测,教你根据场景挑模型(附性能数据)
  • 郴奢汇万宝店:郴州黄金回收抵押的首选品牌 - 小仙贝贝
  • 阅读APP书源配置完全指南:5步解锁海量小说资源
  • YOLOv8训练实战:我的小目标数据集上,YOLOv8s和YOLOv8n表现竟差不多?
  • 3步彻底解决TranslucentTB任务栏透明工具依赖问题:从安装到完美运行
  • D3KeyHelper终极指南:解放双手,轻松玩转暗黑破坏神3技能连点器
  • 郑州去哪里配眼镜,三步走完决策全流程 - 配眼镜新资讯
  • WCP5:完整企业级知识管理方案,AI 深度融合让团队协作更智能高效!
  • MPC8245缓存一致性设计:从MESI协议到DMA实战解析
  • 深度解析Android逆向工程:dex2jar实战技巧与架构揭秘
  • Beagle:用 HTTP 和 URI 解决 Git 高级应用难题,简化复杂操作!
  • 111、I2C和CCI 协议深度调试:总线仲裁、时钟拉伸、ACK和NACK 排查与逻辑分析仪
  • 为什么LibreDWG是CAD文件转换的终极免费方案?
  • 2026 年 6 月南京六合假发店选购指南:5 家门店对比与参考 - 小艾信息发布
  • 技术深度解析:WPinternals实现Windows Phone设备底层访问机制
  • Qwerty Learner:如何通过打字训练软件提升英语输入效率的完整指南
  • X1nput终极指南:一键解锁Xbox手柄完整冲动触发器震动体验
  • 爬取《某眼票房》实时票房数据:从入门到精通的全方位Python爬虫实战指南
  • 如何用douyin-downloader实现抖音内容高效管理:从个人收藏到批量归档的完整方案
  • 从信息论到损失函数:KL散度和交叉熵的‘前世今生’与TensorFlow 2.x应用指南
  • 实测PyTorch 2.2的FlashAttention-2:RTX 4070上真的能快2倍吗?附避坑指南
  • PrivaZer 源码级避坑指南:逆向分析行为逻辑与隐患识别
  • 120、ISP 驱动架构解析:从 V4L2 请求到 ISP 硬件的配置下发流程
  • MPC8280 MCC核心寄存器配置:RSTATE、TSTATE与CHAMR详解
  • Win10BloatRemover:如何让Windows 10系统变得更轻快、更私密?
  • e300超标量核心与IPIC中断控制器在MPC8323E中的嵌入式实战解析
  • 如何用Akagi麻将AI助手在10分钟内提升雀魂技术水平:完整新手指南
  • 3分钟快速上手猫抓Cat-Catch:浏览器资源嗅探的终极解决方案