Quic Protocal Part 4:出错校验、拥塞控制

2019-11-19 79 Words Quic Web

Quic 协议——第四部分

QUIC 协议的出错校验

由于 QUIC 协议基于不可靠的 UDP 协议,因此需要实现校验、纠错和拥塞控制机制。(流量控制机制已经大致在前面说过了)。

如前所述,其 Package Number 被划分成了三个子空间,每个空间指示了报文的安全级别。

一、ACK 特性

QUIC 报文可以延迟 ACK 但必须在最大确认延时(max_ack_delay, mostly 25ms) 给出ACK 确认。

无序分组、有拥塞控制分组以及密码报文应当尽快确认。RTT 估值可参加 RFC6298。

二、丢失检验

2.1 基于ACK的丢失检验

使用了类似TCP Early Retransit,Quick Retransit,SACK,FACK,RACK 等机制。

  • 当收到后续包ACK但没有收到当前包ACK时重传。
  • 达到数据包阈值(Packet Threshold)或者时间阈值(Time Threshold)

2.2 加密超时重传

对于加密数据需要使用更灵活的机制来进行丢失检验

2.3 探测超时(Probe Timeout)

探测超时(PTO)在ack引出数据处于传输状态但在预期的时间段内未收到确认时触发探测数据包。

当发送数据包超过 PTO 时间后,发送探测数据包。

当PTO计时器到期时,新的或先前发送的数据 可能无法发送,并且数据包可能仍在发送中。 如果数据包在发送中,可以阻止发送方未来发 送新数据。在这些条件下,发件方应该 将仍在发送中的任何数据包标记为丢失。 如果发送方希望保证仍在运行中的数据包送达, 它可以发送一个ack-eliciting数据包并 重新设置PTO定时器。

当接收到新确认一个或多个分组的ACK帧时, 就可以确认传输中的分组的已经送达或丢失。

三、拥塞控制

QUIC的拥塞控制基于TCP NewReno(RFC6582)。 NewReno是基于拥塞窗口的拥塞控制。 NewReno中的 拥塞避免使用加法增加乘法减少(AIMD) 的方法将每个确认的拥塞窗口增加一个 最大数据包大小.当检测到丢失时, NewReno减半拥塞窗口并将慢启动阈值 设置为新的拥堵窗口。

此外 QUIC 支持显示拥塞控制 ECN (参加 transport 草案中的 ACK 帧)。

! 此文需要更多证实。