TCP 拥塞控制:从 Jacobson 的 AIMD 到 CUBIC 与 BBR
按 RFC 5681、RFC 9438、BBR 草案与 Linux 源码核对 Reno、CUBIC、BBR 的窗口规则,用包级离散事件模拟复现锯齿、缓冲区排队和 BBR 与 CUBIC 抢带宽的条件,并梳理 BBRv3 的标准化状态与公平性争论。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 3 篇文章 · 返回首页
按 RFC 5681、RFC 9438、BBR 草案与 Linux 源码核对 Reno、CUBIC、BBR 的窗口规则,用包级离散事件模拟复现锯齿、缓冲区排队和 BBR 与 CUBIC 抢带宽的条件,并梳理 BBRv3 的标准化状态与公平性争论。
tcp_sendmsg 把用户数据拷到 sk_buff 就完事了?远没有。后面还有 Nagle 合并、TSQ 限流、cwnd/rwnd 双窗口门控、RACK-TLP 丢包检测、拥塞状态机五态跳转、sk_pacing_rate 软件限速。本文从 Linux 6.6 内核源码拆解 TCP 数据传输的完整路径——从 send() 到 ACK 处理——以及拥塞控制框架 tcp_congestion_ops 的可插拔架构。
BBR 抛弃了 30 年来基于丢包的拥塞控制范式,改为直接估算瓶颈带宽和最小 RTT。本文剖析 BBR v1/v2/v3 的状态机与工程行为,分析 BBR 与 CUBIC 共存的公平性问题,并给出生产环境的部署与调优指南。