Page 421 - 《软件学报》2024年第4期
P. 421
李彤 等: 传输控制中的确认机制研究 1999
发送方 接收方
数据报文
t 1
t 3
ACK 报文
t 4
t 2
图 5 RTT 评估方式示例
正向路径
数据报文 ACK 报文
RTT 采样: 每收到 1 个数据报文,
18,20,16,22,15,30 数据报文 ACK 报文 回复 1 个 ACK
反向路径
发送方 接收方
(a) 数据报文 : 确认报文=1 : 1
数据报文
每收到 2 个数据报文,
RTT 采样: ACK 报文 回复 1 个ACK
20,22,30
发送方 接收方
(b) 数据报文 : 确认报文=2 : 1
数据报文
每收到 6 个数据报文,
RTT 采样: ACK 报文 回复 1 个 ACK
30
发送方 接收方
(c) 数据报文 : 确认报文=6 : 1
图 6 不同 ACK 数目下的 RTT 评估
从上面的例子可以得到, 确认机制的修改, 应该避免显著影响传输状态监测的精准性. 对于按需确认机制而
言, ACK 触发条件的设计, 以及 ACK 携带的信息, 需要满足精准的传输状态监测的需求.
2.4.2 确认机制与丢包恢复
丢包恢复包括丢包检测和数据重传两个关键步骤. 丢包检测是丢包恢复的前提, 而 ACK 的触发时机和 ACK
携带的反馈信息, 则直接影响丢包检测的性能. 因此, 确认机制直接影响丢包恢复的效率.
对于需要保障可靠和有序的传输控制而言, 行头阻塞 (head-of-line blocking, HoLB)(详细分析见第 4.1.4 节) 导
致报文组装延迟, 从而影响传输性能. 后文图 7 和图 8 对比了两种不同的 ACK 触发方式对报文组装延迟的影响. 在图 7
中, 每收到 1 个数据报文回复 1 个 ACK 报文, 假设丢包检测采用经典 TCP 默认的 DupACK, 即“3 次重复 ACK”算
法 [25] , 则数据报文 3 从丢失到恢复所花费时间长短, 对于报文重组装具有直接影响. 具体地, 报文 3 的丢失阻塞了
后续队列, 使得后续的 8 个数据报文无法及时提交到上层应用. 在图 8 中, 每收到 100 个数据报文回复 1 个 ACK
报文, 假设理想情况下发送方可以通过该 ACK 报文推测丢包事件, 则报文 3 的丢失阻塞了后续队列, 使得后续的
98 个数据报文无法及时提交到上层应用. 因此, ACK 触发方式直接影响丢包恢复效率, 一般地, ACK 触发时间间
隔越长, 则丢包恢复的效率越低.
从上面的例子可以看出, 确认机制的设计, 应该考虑其是否会显著影响丢包恢复的效率. 具体而言, ACK 触发
条件的设计, 以及 ACK 携带的信息, 需要满足高效的丢包恢复的需求.
2.4.3 确认机制与速率控制
速率控制包括拥塞控制和流量控制. 拥塞控制和流量控制的区别, 在于拥塞控制的目标是优化整网性能, 而流