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

李彤 等: 传输控制中的确认机制研究                                                              2015


                 能会将无法识别的选项字段丢弃或者二次处理. 因此, 基于                 TCP  实现  TACK  机制, 其应用场景受到极大限制. TCP-
                 TACK  通常只能用于相对封闭的场景中, 例如无线局域网. 如果要实现广泛的部署, 则需要设计一些逃生机制, 以
                 适应  TCP  扩展字段被修改或者移除的场景          [30]  .
                  4.3.3    基于  QUIC  的实现
                    QUIC  是一个灵活的传输协议框架, 使用          UDP  作为底层抽象, 避免修改内核操作系统; QUIC           报文头以加密形
                 式进行传输, 避免受到中间盒的修改和移除              [2]  . 因此, TACK  机制在  QUIC  中的实现, 本质上是一种特殊的基于
                 UDP  的实现, 区别在于    QUIC-TACK  的实现可以最大程度地复用现有           QUIC  框架的原始设计, 既可减少开发工作
                 量, 又可提升兼容性.
                    一个  QUIC  报文包含一个或者多个帧         (frame). QUIC  收发双方通常通过传输参数      (transport parameter) 协商各
                 自支持的版本和特性. 由于        TACK  机制是一种    QUIC  框架的扩展, 因此, 可以在      QUIC  传输参数中增加一个标记,
                 例如  tack-support. 当某个通信节点设置    tack-support 参数时, 表明其支持   TACK  机制, 如果对端不支持      TACK  机
                 制, QUIC-TACK  需要回退到   QUIC  默认的确认机制.
                    当收发双方都支持       TACK  机制时, QUIC-TACK   将生成   TACK  帧和  IACK  帧, 用于收发双方之间的信息同步
                 和反馈; 同时, 根据网络条件和传输状态, 发送方按需生成                  ACK-FREQUENCY    帧, 用于指示接收方动态调整
                 TACK  发送频率. 具体的    TACK  帧、IACK  帧和  ACK-FREQUENCY   帧的设计, 可以参考      Li 等人在文献   [24] 中的
                 示例. 此处不再赘述.
                  4.3.4    不同实现方案对比
                    由于协议底座的差异, 不同的          TACK  机制的实现方案之间在开发难度、适用范围和运行开销等方面差别较
                 大. 如表  3  所示, 由于用户态协议栈相比内核态协议栈具有更大的灵活性, 方便调试和修改, 因此基于内核                           TCP  的
                 实现方案开发难度最大; 在        QUIC  协议框架中, TACK    机制的实现可以最大程度地复用如             packet number (对应本
                 文中的   PKT.SEQ)、ACK Gap (对应本文中的      RBB) 等机制, 加上   QUIC  框架本身是用户态实现方式, 因此, 基于
                 QUIC  的实现方案开发难度最低. 适用范围方面, 根据部署和修改难度, 以及中间盒的适应性, 可以推断基于                            QUIC
                 的实现方案适应各种应用场景的能力最强, 基于                UDP  的实现次之, 基于内核      TCP  的实现最小. 运行开销方面, 尤
                 其内核   TCP  实现了  TSO/GRO/LRO  等优化, 在带宽相同的情况下, 基于内核          TCP  的实现方案运行开销最小; 由于
                 QUIC  除了实现基本的传输控制以外, 还引入了多路复用和                stream  等机制, 框架的复杂性不可避免地引入了一些
                 额外开销, 因此基于      QUIC  的实现方案运行开销最大.

                                                表 3    TACK  机制实现方案对比

                                实现方案               开发难度            适用范围             运行开销
                                基于UDP                小                中               大
                               基于内核TCP               大               较小               较小
                              基于用户态TCP               中                小               小
                                基于QUIC              较小                大               较大

                  4.4   TACK  机制的实验评估结果
                  4.4.1    TACK  机制的定量分析
                    为了简单起见, 便于理解, 我们假设          L=1, 同时假设每个数据报文的大小都等于最大段长                (MSS). 根据  ACK  频
                 率公式   (4) 和公式  (6), TCP  的  Delayed ACK  机制和  TACK  机制的对比如图  22  所示. 图中的拐点指示了   TACK  机
                 制相比传统    TCP  产生收益的边界条件. 从图中容易得到以下             3  个基本结论.
                    首先, 给定   L  的值, TACK  机制的  ACK  频率总是不超过      TCP  的  Delayed ACK  机制的  ACK  频率, 即  f tack ⩽


                 f tcp .  例如, 当  bw = 48 Mb/s, RTT = 10 ms 时, TACK  机制的  ACK  频率是  TCP  的  1/10.
                    其次, 吞吐量越大, 应用      TACK  机制减少的    ACK  数目越多, 收益越大. 例如, 如图      22(a) 所示, 当  RTT = 10 ms
   432   433   434   435   436   437   438   439   440   441   442