Page 418 - 《软件学报》2024年第4期
P. 418

1996                                                       软件学报  2024  年第  35  卷第  4  期


                 层协议, 如  TCP, 确认机制工作在传输层; 针对基于          UDP  的应用层传输协议, 如      QUIC, 确认机制工作在应用层, 其
                 主要作用是在     UDP  的数据传输能力基础上, 增强应用系统数据传输的可靠性, 或者帮助应用系统数据传输进行拥
                 塞控制.

                                              数据         发送方         数据          接收方
                                      5 6 7 8 发送缓存                    1 2 3 4 接收缓存

                                            丢包恢复                   状态监测       接收
                                            状态监测      反馈处理         确认机制
                                                            ACK 报文
                                     发送     速率控制
                                                            数据报文

                                                图 1 传输控制的功能模块关系

                    自  1974  年  Cerf 等人  [17] 提出  TCP  以来, TCP  经历了  30  年的持续优化, 并在  2000  年左右确定了基本框架. 基
                 本框架确定过程中, 有一些关键算法模块也有其各自的演进路线. 其中, 最典型的就是拥塞控制算法和确认机制.
                 拥塞控制是网络领域经久不衰的、最经典的研究课题之一. 如图                      2  所示, 2000  年以后, 随着网络条件和应用需求
                 的不断演进, 新型的拥塞控制算法如雨后春笋般持续涌现, 在不同的场景和目标中各显神通. 例如, Tan                             等人提出
                 Compound TCP  [18]  是  Windows 系统使用的拥塞控制优化算法; Winstein     等人提出适应蜂窝网络带宽抖动的
                 Sprout  [19]  以及基于机器学习的拥塞控制算法       Remy [20]  和  Indigo [21]  等. Cardwell 等人提出  BBR  [22]  , 被认为是继
                 CUBIC [23]  以后拥塞控制研究的一个新的里程碑.

                                                                    LIA OLIA BALIA wVegas

                                                Westwood  FAST         Remy    BBR
                         DECbit     Vegas    Eifel  Veno  Compound TCP  LEDBAT  PCC  Copa

                          Tahoe  Reno  NewReno    BIC  H-TCP  CUBIC  Sprout  Verus  Indigo  PBR-CC
                         1980s       1990s               2000s             2010s          2020s
                                                   图 2 拥塞控制算法演进

                    相比拥塞控制, 确认机制相关的工作较少. 如图              3  所示, 确认机制作为传输控制的反馈模块, 20           世纪  90  年代
                 后很少有大的改动. 这是因为, 人们通常关注正向路径的数据报文传输性能, 却很少关心反向路径上                               ACK  报文的
                 传输. 而且, 确认机制与传输控制中的拥塞控制、丢包恢复和状态监测等模块紧密耦合, 贸然修改确认机制容易导
                 致副作用. 然而, 在动态变化的网络条件下, 设计更为灵活的、自适应的确认机制, 支撑现代新型业务的多样性, 已
                 经成为业界迫切的需求        [24]  .

                         Delayed ACK

                          Periodic ACK
                         Byte-counting ACK  D-SACK
                         Per-packet ACK  SACK            NACK            HACK         TACK
                           1980s        1990s             2000s            2010s         2020s
                                                     图 3 确认机制演进

                    针对协议的修改, 其鲁棒性严重依赖于充分的单元测试和端到端测试. 在过去, 人们默认使用内核态协议栈
                 (例如内核   TCP). 由于内存受限、内核接口受限等因素影响, 加上确认机制涉及协议的多个模块的修改, 针对确认
   413   414   415   416   417   418   419   420   421   422   423