拥塞控制机制有哪些?_拥塞控制的一般原理「建议收藏」

拥塞控制机制有哪些?_拥塞控制的一般原理「建议收藏」本人博客处女作啦!应该是全网最全的TCPCopa分析文章了

拥塞控制机制有哪些?_拥塞控制的一般原理「建议收藏」

篇首语

  • 本篇文章是我发布的首篇博客,有点小激动,如有不当之处欢迎大佬们指正。都说发博客只有一次和无数次,我希望把握好这个契机,从今以后努力学习研究,写出更多有用的资料与大家共享。
  • Copa 篇分为四个部分,前三部分为论文分析,分别是机制概述、机制合理性证明、实验实战检验,第四部分则为本人的一些归纳与推演,应该可以说是全网最全的长文了,干货满满,希望大家喜欢!

目标速率

λ t = 1 δ ⋅ d q \lambda_t = \frac{1}{\delta \cdot d_q} λt=δdq1
由 $ U = log \lambda – \delta log d $ 推出(最大化U)

  • λ \lambda λ 表示流的平均吞吐量
  • d d d 表示各包时延( d = d t o t a l − d p r o p d = d_{total} – d_{prop} d=dtotaldprop
    • d q d_q dq 表示各包排队时延( d q = d − d t r a n s d_q=d-d_{trans} dq=ddtrans
  • δ \delta δ 实际表示愿意牺牲低时延到什么程度以保障高带宽,越高表示越不愿意牺牲时延

注意:

  • δ − 1 \delta ^ {-1} δ1 单位是MTU大小的数据包数量
  • λ t \lambda_t λt 是根据一个RTT前发出的包带回的参数计算的 d q d_q dq 来估算得出的,因此具有一个 RTT 的延迟

参数测算机制

每个时间窗口 τ = s r t t / 2 \tau=srtt/2 τ=srtt/2 测算以下参数:

RTT

R T T s t a n d i n g RTTstanding RTTstanding

  • 取最小的RTT,作为时间窗口内估计的包对应内含排队时延的RTT值,这样选是为了保障面对 ACK compresion 和 network jitter 时的鲁棒性。
    • 因为这些问题会增加 RTT 而让发送端误以为数据传输路径上存在排队导致更长的 RTT;
    • 当然,ACK compresion 可由反向路径上的排队和无线链路引起。
  • s r t t srtt srtt 是标准平滑RTT估计值,使用标准TCP指数加权移动平均估计量的当前值

每个 ACK 到达时测算以下参数:

发送速率(平均意义上)

λ = c w n d R T T s t a n d i n g \lambda = \frac{cwnd}{RTTstanding} λ=RTTstandingcwnd

  • c w n d cwnd cwnd是时间窗口,用以限制 in-flight packets 的数量上限

Copa 使用了 pacing 技术以防止 packet bursts,并且保证瓶颈处包到达呈现泊松分布(流越多越精确)

  • r a t e p a c i n g = 2 ⋅ c w n d R T T s t a n d i n g rate_{pacing} = 2 \cdot \frac{cwnd}{RTTstanding} ratepacing=2RTTstandingcwnd (单位是 pkt per sec)
  • 设置为 λ \lambda λ 的两倍是为了为 pacing 中的不完美提供容纳空间,如果正好等于 λ \lambda λ 则实际上发送速率会比预期更低。

排队时延

d q = R T T s t a n d i n g − R T T m i n d_q = RTTstanding – RTTmin dq=RTTstandingRTTmin

  • R T T m i n RTTmin RTTmin 是在较长的一段时间周期内的最小的RTT观测量,文中选取的时间周期为10秒
    • 因为这是流启动的时间,并且也是处理路径改变可能导致的路径最小RTT改变的问题的时间。

速度控制机制

默认模式:动态调整拥塞窗口以调节速度

流启动时的慢启动机制,每个 RTT 执行:

  • 每个 RTT 倍增 cwnd 直到 λ ≥ λ t \lambda \geq \lambda_t λλt

虽然 v v v 也允许倍增,但这个常数太小了,因此 Copa 采用显示慢启动以保证 Copa 有一个更大的初始 cwnd

每个 ACK 到达时执行:

  • 更新 s r t t srtt srtt ,如果是一个时间窗口的结束,则更新 d q d_q dq R T T s t a n d i n g RTTstanding RTTstanding
  • 更新 λ t \lambda_t λt ,计算当前 λ \lambda λ
  • c w n d cwnd cwnd 调整方案
    • 如果 λ ≤ λ t \lambda \leq \lambda_t λλt ,则 c w n d + = v δ ⋅ c w n d cwnd += \frac{v}{\delta \cdot cwnd} cwnd+=δcwndv
    • 如果 λ > λ t \lambda \gt \lambda_t λ>λt ,则 c w n d − = v δ ⋅ c w n d cwnd -= \frac{v}{\delta \cdot cwnd} cwnd=δcwndv

    注:经过一个RTT(发送完一个 c w n d cwnd cwnd 的量的数据包) c w n d cwnd cwnd 变化 v δ ⋅ c w n d \frac{v}{\delta \cdot cwnd} δcwndv

  • v & d i r e c t i o n v \& direction v&direction 调整方案( v v v 是速率参数,用以加速收敛,初始为1; d i r e c t i o n direction direction 表征判断窗口变化方向,用以调整 v v v
    • 如果是一个拥塞窗口的结束(即每一个RTT),则判断当前 c w n d cwnd cwnd 大小和上一 c w n d cwnd cwnd 大小,如果增大,则 d i r e c t i o n direction direction 设置为 u p up up ,否则设置为 d o w n down down
    • 如果 d i r e c t i o n direction direction 保持三个 RTT 不变,则将 v v v 翻一倍,否则重新设置为 1

    在稳定状态下保证 v = 1 v = 1 v=1 ,而在非稳定状态下加速发送速率收敛

竞争模式:动态调整 δ \delta δ 以与缓冲挤占型算法竞争

在默认模式下 δ = 0.5 \delta = 0.5 δ=0.5,而竞争模式下 δ ≤ 0.5 \delta \leq 0.5 δ0.5 ,并且动态调整以匹配典型缓冲挤占型算法的烈度

根据 δ \delta δ 的含义,这实际上是 Copa 在面对缓冲挤占型竞争对手时愿意牺牲低时延以保障高吞吐量。

  • Copa 不断侦测缓冲挤占型竞争对手的存在,以控制默认模式和竞争模式的切换

侦测方案(模式转换器)

  • 这里利用了 Copa 的一个关键特性——当多条有相近 RTT 的 Copa 流共享一个瓶颈时,队列每5个RTT会清空一次,而与缓冲挤占型队列共存时则队列不会依次规律清空。
  • 因此侦测方案的核心在于检测 5RTT 内的队列是否清空
    • 判断标准:(第五个RTT)是否存在排队时延低于(前四个RTT)速率振荡值的10%
      d q < 0.1 ⋅ ( R T T m a x − R T T m i n ) d_q \lt 0.1 \cdot (RTTmax – RTTmin) dq<0.1(RTTmaxRTTmin)
      • RTTmax 指的是前四个RTT测量值中的最大值。这使得 Copa 可以依据当前网络短时的 RTT 振荡差额准确估量“几乎清空”这个概念
    • 采取行动:侦测到对应流,则使 Copa 处于竞争模式,否则使 Copa 处于默认模式。

    作者承认可能因为种种原因出现误判(误判存在或不存在)

竞争方案

  • 调整 δ − 1 \delta^{-1} δ1 以模拟相应的缓冲挤占型流
    • 论文作者实现的方案是依据丢包情况使用 AIMD 方式调整 δ − 1 \delta^{-1} δ1

今天的文章拥塞控制机制有哪些?_拥塞控制的一般原理「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85071.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注