Appendix A: Control Channel Slow Start and Congestion Avoidance
A.1 概述 (Overview)
L2TP 控制通道采用可靠的消息传输机制。为了防止网络拥塞,建议实现类似 TCP 的慢启动和拥塞避免算法。
A.2 慢启动算法 (Slow Start Algorithm)
初始参数:
- 初始拥塞窗口 (cwnd): 1 个消息
- 慢启动阈值 (ssthresh): 接收窗口大小
算法步骤:
- 每收到一个 ACK,cwnd 增加 1
- 当 cwnd >= ssthresh 时,进入拥塞避免阶段
- 发送的未确认消息数不超过 min(cwnd, 接收窗口)
A.3 拥塞避免 (Congestion Avoidance)
退避策略:
- 检测到超时时:ssthresh = max(cwnd/2, 2)
- 重置 cwnd = 1,重新开始慢启动
往返时间估计 (RTT Estimation):
- 采用 Jacobson/Karels 算法计算重传超时 (RTO)
- 平滑 RTT = (1-α) × 平滑RTT + α × 测量RTT
- RTO = 平滑RTT + 4 × RTT偏差