状态机与链路动画
SLOW START每个 ACK 增 1 MSS
CUBIC CA三次函数增长
RECOVERY丢包降窗
实时变量
Mode
SLOW
指数增长
cwnd
10 pkt
发送窗口
ssthresh
∞
慢启动边界
Wmax
0 pkt
上次丢包前窗口
K
0.00s
三次曲线拐点
CUBIC target
0 pkt
Wcubic(t)
Throughput
0 Mbps
ACK 滑窗估计
RTT / Inflight
0ms / 0
队列会推高 RTT
窗口曲线
cwnd / target / tcp-friendly
cwndtargetfriendly
吞吐量
Throughput (Mbps)
throughput
RTT 曲线
RTT (ms)
sampleRTT
CUBIC 更新路径
1. 慢启动
cwnd += 1 packet per ACK,窗口在每个 RTT 近似翻倍,直到超过 ssthresh 或遇到丢包。
2. 丢包事件
记录
Wmax,计算 ssthresh=β*cwnd,窗口乘性下降到 β*cwnd。
3. 拥塞避免
用
Wcubic(t) 作为目标窗口,ACK 到来时让 cwnd 逐步追向目标。
4. TCP-friendly
同时计算
West(t)=Wmax*β+3β/(2-β)*(t/rtt),目标取三次曲线和友好线中较大值。
事件日志
说明
当前 Hysteria 仓库只接受
bbr 和 reno,测试里明确把 cubic 当作不支持配置。这个页面是独立的 CUBIC 教学模型,不代表仓库中已有 CUBIC 实现。app/cmd/client_test.go/app/cmd/server_test.go:congestion.type: cubic会报 unsupported。core/internal/congestion/utils.go: 当前自定义拥塞控制入口只安装 BBR 或 Brutal;reno走 quic-go 默认路径。- 本页使用标准 CUBIC 模型公式做可视化,重点展示窗口如何随 ACK 和 loss 演化。