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

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


                    (3) 抖动相关的信息
                    抖动相关的信息包括时延抖动、带宽抖动等其中的一种或多种.
                    (4) 控制信息
                    用于发送方进行决策的控制参数可以是一个阈值参数, 也可能是一个指示某种状态的标记.
                    (5) 丢包信息
                    携带丢包信息的       ACK  分为携带最新丢包信息的        ACK  和携带冗余历史丢包信息的          ACK. 丢包信息是指接收
                 方接收缓存中不连续的数据段序列之间的间隔. 例如, 接收端缓存中有序列号分别为                           (2, 5, 6, 8, 9) 的  5  个报文, 则
                 最新丢包信息为      7  这个报文的序列号, 历史丢包信息为         1, 3  和  4  这  3  个报文的序列号.
                    (6) 其他网络状态信息
                    其他网络状态信息包括接收端缓存中已接收但未提交到上层应用的数据量、接收端缓存剩余大小、乱序程
                 度、用于发送方进行决策的控制参数等其中的一种或多种.
                  2.3.3    ACK  的类型
                    ACK  的类型通常可以按触发条件进行分类, 或者按报文格式进行分类.
                    (1) 按触发条件分类
                    触发条件不同的       ACK  能否视为不同种类的       ACK, 取决于   ACK  的功能是否有差异. 例如, 周期性发送          ACK,
                 和根据即时事件回复        ACK, 由于前者保证反馈的鲁棒性, 后者保证反馈的实时性, 因此可以视为两种不同类型的
                 ACK. 又比如, 每收到    A  个报文触发的    ACK  和每收到   B (A≠B) 个报文触发的   ACK, 如果只是    ACK  频率上的区别,
                 ACK  功能上没有差异, 一般地, 可以视为同一种           ACK  类型.
                    (2) 按报文格式分类
                    一般地, 先后生成的      ACK  携带的内容是有差异的, 例如确认的序列号可能不同. 但如果差异只是体现在信息
                 的内容上, 则可以视为同一种         ACK  类型. 例如, TCP  协议中带   SACK  选项的  ACK  和不带  SACK  选项的   ACK, 可
                 以视为同一种     ACK  类型, 原因是   ACK  的报文格式没有发生变化, 不带         SACK  选项时, 对应字段的内容为空而已.
                 然而, 如果  ACK  报文格式发生了变化, 即       ACK  中的相应字段表示的含义不同, 则应该视为不同种类型的                  ACK. 例
                 如, 仅携带时延信息的      ACK  和仅携带丢包信息的       ACK, 是两种不同的     ACK  类型.
                  2.4   确认机制与其他模块的耦合关系
                    从图  1  所示传输控制的功能模块关系可以看出, 不论是状态监测、丢包恢复、还是速率控制, 这些功能模块
                 都需要与确认机制进行交互. 下面, 我们将讨论传输控制协议中确认机制与上述功能模块之间的耦合关系.
                  2.4.1    确认机制与状态监测
                    状态监测可以发生在发送方, 也可以发生在接收方. 在接收方, 状态监测为确认机制提供信息输入, 用于决策
                 ACK  的触发时机和    ACK  应该携带的反馈信息等; 在发送方, 确认机制决定以何种方式解析                    ACK  报文, 解析结果
                 将用于传输过程中的状态监测.
                    确认机制中的      ACK  触发条件和携带的信息, 会直接影响状态监测的精准性. 如图                    5  所示, 假设每个   ACK
                 报文默认只携带最近接收到的数据报文的发送时间戳                     t 1 、最近接收到的数据报文的接收时间戳             t 3 和该  ACK
                 报文的发送时间戳       t 4 , 则发送方可以根据每一个      ACK  报文的到达时间戳      t 2 , 计算一个  RTT  采样值: RTT = t 1  – t 2  –
                 (t 4  – t 3 ).
                    考虑不同    ACK  数目下的   RTT  评估. 假设发送方共发送      6  个数据报文, 每个数据报文对应的实际           RTT  分别为
                 18 ms, 20 ms, 16 ms, 22 ms, 15 ms 和  30 ms, 最小  RTT  实际值为  15 ms. 如图  6(a) 所示, 若每收到  1  个数据报文回
                 复  1  个  ACK  报文, 则发送方的  RTT  采样值集合为{18, 20, 16, 22, 15, 30}, 则最小  RTT  测量值为  15 ms, 与实际值
                 相等; 如图  6(b) 所示, 若每收到   2  个数据报文回复     1  个  ACK  报文, 则发送方的  RTT  采样值集合为{20, 22, 30}, 则
                 最小  RTT  测量值为  20 ms, 与实际值偏差    30%; 如图  6(c) 所示, 若每收到  6  个数据报文回复     1  个  ACK  报文, 则发
                 送方的   RTT  采样值集合为{30}, 则最小    RTT  测量值为  30 ms, 与实际值偏差    1  倍.
   415   416   417   418   419   420   421   422   423   424   425