Page 424 - 《软件学报》2024年第4期
P. 424
2002 软件学报 2024 年第 35 卷第 4 期
bw
f b = (2)
L·MSS
即, 每累计收到 L 个 MSS 大小的数据报文后回复 1 个 ACK 报文. L 表示接收方在回复 ACK 之前收到的数据报文
数目. L 越大, ACK 频率越小. 然而, 指定 L 的取值后, f b 与 bw 正相关. 这意味着当 bw 极大时, ACK 频率可能仍然
处于较高水平. 换句话说, ACK 发送频率在带宽变化时无法保证收敛到较低的值.
与 Per-packet ACK 机制一样, Byte-counting ACK 机制也是一种以数据报文到达事件驱动的反馈机制. 它解决
了小数据报文开销问题, 但是同样面临着发送方不发数据时无 ACK 反馈的问题.
3.1.3 Periodic ACK 机制
Per-packet ACK 和 Byte-counting ACK 机制将 ACK 报文的发送和数据报文的到达紧密耦合, 导致大带宽传输
下仍然存在较大的 ACK 报文开销. 一种解决思路是, 不管有没有数据包到达, 接收方周期性地回复 ACK 报文, 在
接收方和发送方之间同步信息, 这种机制被称为 Periodic ACK 机制. 该机制的 ACK 发送频率可以表示为:
1
f pack = (3)
α
其中, α 为 ACK 发送周期, 表示两个 ACK 报文之间的时间间隔.
Periodic ACK 机制可以保证在大带宽传输下, 保持一个相对恒定的 ACK 频率. 然而, 当带宽极小时, ACK 频
率仍然与大带宽情况保持一致, 显然会浪费资源. 因此, Periodic ACK 机制也无法适应带宽的变化.
3.1.4 Delayed ACK 机制
Delayed ACK 机制是现代传输控制协议如 TCP 和 QUIC 所采用的默认确认机制 [26–28] . 具体地, Delayed ACK
机制规定接收方超时或者每收到 L 个数据报文 (报文大小等于 MSS) 时, 回复 ACK 报文. 该机制的 ACK 发送频率
可以表示为:
( )
bw 1
f delayed = max ,
L·MSS α (4)
根据 RFC 1122 和 RFC 5681 规定, L ⩽ 2 , 且 α 的取值为几十到几百毫秒, 与具体的系统版本相关. 例如, 最新
版本的 Ubuntu 中 α = 200 ms.
Delayed ACK 机制综合了 Byte-counting ACK 和 Periodic ACK 机制, 但是限定了 L 和 α 的取值, 使得 ACK 频
率无法达到最小化.
bw 1
当然, 即使允许 L>2, Delayed ACK 也不是一种最优的最小化 ACK 频率的机制. 当 bw 满足 > 时, 则
L·MSS α
bw bw 1 bw 1
f delayed = . 在这种情况下, bw 越大, ACK 频率越高. 另一方面, 当 bw 满足 < 时, = . 在
L·MSS L·MSS α L·MSS α
这种情况下, ACK 频率不能随 bw 的减小而降低. 这意味着 Delayed ACK 机制也无法适应带宽的变化, 即 ACK 发
送频率在带宽变化时无法保证收敛到较低的值.
3.1.5 Bounded ACK 机制
Bounded ACK 机制, 它的目标是在网络条件动态变化下, 使得 ACK 的发送频率是有界的 (bounded). 其基本
原理就是汲取 Byte-counting ACK 和 Periodic ACK 两种机制的优点, 在不同的场景下自适应地选择不同的方式.
具体地, 由公式 (4) 可知, Delayed ACK 机制采用了 Byte-counting ACK 和 Periodic ACK 两者中的 ACK 频率的较
大值. Bounded ACK 机制与 Delayed ACK 机制正好相反——ACK 发送频率采用 Byte-counting ACK 和 Periodic
ACK 两者中的 ACK 频率的较小值, 即:
( )
bw 1
f bounded = min ,
L·MSS α (5)
bw 较大时, Bounded ACK 机制的 ACK 频率保持在一个相对恒定的水平 (即 bw 较
因此, 当 Periodic ACK); 当
小时, Bounded ACK 机制回退到 Byte-counting ACK, 此时, ACK 频率随着 bw 等比例减小. 因此, Bounded ACK 机