WEBRTC浅析(十)拥塞控制算法的演化历史

10 篇文章 4 订阅

WEBRTC浅析(十)拥塞控制算法的演化历史

评价拥塞控制算法的三个标准:

  • 充分利用网络带宽

  • 将数据丢失和延迟降至最低

  • 在所有连接中保持公平

    这三个目标之间存在明确的权衡。尽管您想充分利用网络带宽,但您不想过冲,因为这会导致数据丢失。您可以不惜一切代价优先考虑公平性,但这可能会导致您未充分利用网络带宽。

一:TCP(1974)中的拥塞控制策略

基于丢包的带宽估计

拥塞窗口

TCP 的工作原理:慢启动和拥塞避免
  1. 慢启动:始时将拥塞窗口设置得非常小,并在每个 RTT 期间加倍

    • 以丢包的形式出现
    • 或者当拥塞窗口超过某个阈值。
    • 到达一定的时间,比如20s(Reno 1990)。
  2. 拥塞避免

    • 控制拥塞窗口的大小:
      • 上探:在成功接收到 ACK 时增加
      • 下调:在检测到数据包丢失时减小
TCP中的演化版本:
  1. Reno 1990

    • 慢启动:在前 20 秒的缓慢启动
    • 拥塞控制:
      • 上探:每此接收到数据的 ACK 后,适度的增加拥塞窗口。
      • 下调:发现丢包,拥塞窗口大小减半
  2. Cubic 1998

    • 拥塞控制:差别在于拥塞上探过程中的差异
      • 上探过程:
        • 最初:急剧增加其拥塞窗口
        • 然后:随着接近 W 逐渐减慢拥塞窗口的增长
        • 如果拥塞窗口超过 W 而没有看到丢包:Cubic 会逐渐增加拥塞窗口的增长
      • 下调:发现丢包,拥塞窗口大小减半
  3. Vegas

    • 把 RTT 加入到评判是否拥塞的标准中。
      • 好处:可以更早的发现拥塞,开始下调 拥塞窗口。
      • 坏处:在与其他tcp 策略(cubic)竞争中,经常处于弱势,难以获取带宽。

二:基于UDP的拥塞控制策略

  1. GCC,REMB (基于延迟和丢包的带宽估计策略)::后续补充

  2. BBR(2019):基于模型的带宽估计
    BBR 通过为瓶颈宽度的单个链接来对整个网络进行建模。它探测网络以推断瓶颈带宽,然后调整其发送速率以匹配该带宽。

    • 慢启动:

      • 慢启动不断地增加带宽到带宽不再增长
      • 或者发生丢包现象
      • 或者达到最带宽最大值
    • 拥塞控制:

      • 计算 pace rate和cwnd

        • bandwith:使用时间窗口内(默认10轮采样)最大BW
        • gain : 带宽发送的增益
          • 上探: gain = 1.25
          • 排空:gain = 0.75
          • 保持稳定:gain = 1
        • pace rate = bandwith * gain
        • rtt_min: 一段时间内的最小RTT
        • 管道的最大容量(BDP): bdp= bandwith * rtt_min;
        • 拥塞窗口(cwnd): cwnd其实描述了一条网络管道,因此cwnd其实就是这个管道的容量,也就是BDP。
          cwnd = bdp * gain
      • 按照pace rate发送数据,当发现 data in fly > cwnd时,认为管道已经被填满,就停止发送数据。

    • 遇到的问题:

      • Padding 占用带宽问题
      • BBR 模型偏离现实太远时,BBR 会做出错误的判断(比如网络带宽足够时,判断当前带宽不足,会导致强行把信源码率压住)

3. PCC( PERFORMANCE-ORIENTED CONGESTION CONTROL)

	http://pccproject.net/
基于性能导向拥塞控制(无模型方法)
  1. 在线速率选择算法:U = X – pD X – pL X

    • U 是性能分数
    • X 是发送速率
    • pD 表示为包延迟的惩罚
    • pL 表示为丢包的惩罚
  2. PCC的模式:

    • 慢启动模式:
      • 每个 RTT 中加倍速率。这一直持续到效用分数停止上升
    • 拥塞控制:
      • 首先:PCC 可以以略高于 r 的2% 的速率发送并检查派生的效用值,
      • 然后:以略低于 r 的 2% 的速率发送,并再次检查派生的效用。
      • 最终:在评估以更高和更低的速率发送如何影响性能(即效用值)之后,PCC 可以切换到更低或更高的速率,这取决于哪个产生了最高的性能分数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值