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  机
   419   420   421   422   423   424   425   426   427   428   429