Appearance
第6章:拥塞控制与队列管理
网络负载的反馈
拥塞控制管理共享网络中的注入速率。若所有发送者只在丢包后原速重传,额外副本会继续占用链路,使有效吞吐量下降。重传需要与降低负载配合。
反馈有不同形式:丢包、时延增长、显式拥塞通知 ECN。信号发生在路径某处,但发送方通常只观察到端到端结果,因而需要一个控制过程,而不是读取一个全网精确状态。
TCP Reno 的窗口变化
经典慢启动每个 RTT 大致使拥塞窗口翻倍,直至阈值或拥塞事件;拥塞避免阶段每 RTT 大致增加一个 MSS。遇到特定丢包信号时,窗口按比例减少。实际行为还取决于 ACK、重传恢复和具体实现。
用离散模型 、丢包时 表示加性增、乘性减。若窗口在 到 之间往复,一轮约经过 个 RTT,发送量约为
若理想化为每轮恰丢一个包,则 ,平均吞吐量与 同阶。这只是固定 RTT、长连接、Reno 式窗口锯齿下的近似,不适用于所有拥塞控制算法。
公平性与不同 RTT
多个流共享链路时,“公平”需要定义。按流公平与按用户公平不同:同一用户开十条连接,可能得到比一条连接更多的份额。经典基于 ACK 的算法还可能偏向 RTT 较短的流。
公平并不自动等于低延迟。所有流都公平地排在很长的队列中,交互请求仍可能很慢。因此路由器的调度与队列管理也是服务质量的一部分。
AQM、ECN 与缓冲
尾丢弃只在缓冲满时丢包,可能让队列长期占满。主动队列管理在缓冲完全耗尽之前丢弃或标记,给发送方更早的反馈。ECN 需要端点和路径相应支持,且发送方必须响应标记。
按流排队可隔离不同流的队列,再结合调度减少大流对短请求的影响。它不能创造额外带宽,链路长期超载时仍要限速、排队或拒绝部分负载。
现代算法还可能估计瓶颈带宽和最小 RTT。比较算法时需要同时测吞吐量、排队时延、丢包、竞争公平性和不同路径条件,不能只测一次下载速度。
练习
- RTT 翻倍但丢包率不变,以上 Reno 模型预测的吞吐量如何变化?
- 流量控制与拥塞控制分别保护谁?
- 为什么扩大缓冲不能长期解决 200 Mbit/s 输入共享 100 Mbit/s 输出的问题?