目录

  • PCC Vivace 阅读笔记
    • PCC和BBR都是垃圾!
    • PCC Vivace vs. PCC Allegro
      • Allegro 为什么垃圾?
      • Vivace 为什么比较牛逼?
      • 小结
    • Vivace 的目标函数框架
      • 小结
    • Vivace如何与传统TCP进行交互?
    • 总结

PCC Vivace 阅读笔记

本文是关于NSDI '18论文《PCC Vivace: Online-Learning Congestion Control》的阅读笔记。

受机器学习中的在线(凸)优化启发,本文作者设计了Vivace,一个新型的速率控制协议。该协议是对之前作者提出的PCC框架的改进版本(NSDI '15论文《PCC: Re-architecting Congestion Control for Consistent High Performance》(见笔者上一篇阅读笔记))。

注:下文以Allegro代指之前提出的PCC算法(NSDI '15)。

PCC和BBR都是垃圾!

  1. 他们既无法很好地优化时延,也无法很好地在收敛速度及稳定性上进行平衡。特别地,BBR在收敛的过程中速率波动很大,而且丢包率很高;而PCC收敛的速度太慢了。
  2. BBR对网络进行了建模,当实际网络不同于模型时,BBR的性能非常差。
  3. 他们都对TCP不是很友好(尽管BBR在设计的时候是想要对TCP友好的(= =!))

PCC Vivace vs. PCC Allegro

Vivace和Allegro一样都使用了目标函数和一个速率学习控制算法,不过在Vivace中,这两者的实现都与Allegro不同。

Allegro 为什么垃圾?

  1. Allegro对目标函数的选择是胡乱拼凑的,没有深厚的理论依据。而且多个使用不同目标函数的Allegro流会发生什么样的碰撞只有天知道。
  2. Allegro的步长也是瞎选的。凸优化中的步长选择是十分重要的。步长太小会导致收敛太慢,步长太大会导致震荡甚至发散。

Vivace 为什么比较牛逼?

  1. Vivace使用了一个新的学习框架来保证多个Vivace流可以收敛到有一个公平和有效率的状态。
  2. Vivace使用了一个基于梯度的no-regret在线优化算法来调整发送速率,它会计算步长。
  • :什么是一个“no-regret”的速率控制协议?
    “no-regret”的速率控制协议(如Vivace)保证了其对发送速率的选择不会降低目标函数。
  1. No-regret在所有网络状态中为各个发送者提供了一个性能保证(即使在非常动态的网络环境中,或者敌对的环境中)
  2. No-regret为多个Vivace流如何交互提供了一个理论支持。

小结

  1. Vivace结合了时延,解决了Allegro无法解决的bufferbloat问题;
  2. Vivace可以让多个异构发送者(不同目标函数)进行有效交互;
  3. Vivace对TCP更加友好;
  4. Vivace收敛更快;
  5. Vivace对动态网络反应更加迅速

Vivace 的目标函数框架

Vivace使用了与Allegro不同的目标函数框架,如下列公式所示:
u(xi,d(RTTi)dT,Li)=xit−bxid(RTTi)dT−cxi∗Liu(x_i, \frac {d(RTT_i)} {dT}, L_i) = x^t_i - bx_i \frac {d(RTT_i)} {dT} - cx_i * L_i u(xi​,dTd(RTTi​)​,Li​)=xit​−bxi​dTd(RTTi​)​−cxi​∗Li​
其中,t,b,c都是常数。该目标函数的第一项为发送速率的幂次方,第二项为RTT梯度的比例项,第三项为丢包率的比例项。
相比Allegro而言,可以看到,Vivace在目标函数中考虑了时延(第二项)。

  • :为什么在这里要使用RTT的梯度,而不是RTT的值呢?
    考虑以下例子:一个拥有较大缓存的发送者在第一个MI中以2倍于链路带宽的速率发送报文,并且在第二个MI中以一个稍低一点的速率发送。如果使用RTT的值作为目标函数的项,那么发送者在这两个MI中的目标函数值应该都没什么区别,尽管降低发送速率是一个较优的选择。

小结

使用该目标函数保证了多个Vivace流可以平均共享同一个链路,并且,可以使得他们的RTT是最小的。
该目标函数可以在随机丢包和收敛速度之间进行有效均衡。

Vivace如何与传统TCP进行交互?

对于一个新的拥塞控制框架来说,一个重要的要求是能够与TCP(如CUBIC)和平共处。然而,对TCP友好这一要求通常与取得更好的性能是相悖的。任何基于丢包的协议都无法在取得高性能的同时能与TCP和平共处。我们最多只能希望它没有过度挤压TCP。另一方面,更糟糕的是,基于时延的协议几乎无法在与TCP的竞争中胜出,它完全被TCP搞炸了!

那么问题来了,是否存在一种优化时延的能与TCP和平共处的速率控制协议?本文作者认为,Vivace朝着这个目标迈出了重要一步。例如,当链路中的流都是Vivace时,Vivace能够实现最低延时;当链路中充满了TCP流时,Vivace目标函数中的时延梯度项几乎为0,因此Vivace也忽略了时延,从而可以与TCP进行竞争。

总结

Vivace将机器学习的凸优化和控制论结合到网络中的拥塞控制中。甭管当前的网络状态是啥,反正我只要实现我的目标函数最大就好。毕竟我的目标函数的选择是有理论支撑的,我能保证我取的这个目标函数能同时保证我的效率最高,同时不会影响到其他人。
Vivace牛逼!

论文阅读笔记——拥塞控制算法PCC Vivace相关推荐

  1. 全卷积(FCN)论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation

    论文阅读笔记:Fully Convolutional Networks forSemantic Segmentation 这是CVPR 2015拿到best paper候选的论文. 论文下载地址:Fu ...

  2. DnCNN论文阅读笔记【MATLAB】

    DnCNN论文阅读笔记 论文信息: 论文代码:https://github.com/cszn/DnCNN Abstract 提出网络:DnCNNs 关键技术: Residual learning an ...

  3. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  4. FCGF论文阅读笔记

    FCGF论文阅读笔记 0. Abstract 从三维点云或者扫描帧中提取出几何特征是许多任务例如配准,场景重建等的第一步.现有的领先的方法都是将low-level的特征作为输入,或者在有限的感受野上提 ...

  5. PointConv论文阅读笔记

    PointConv论文阅读笔记 Abstract 本文发表于CVPR. 其主要内容正如标题,是提出了一个对点云进行卷积的Module,称为PointConv.由于点云的无序性和不规则性,因此应用卷积比 ...

  6. DCP(Deep Closest Point)论文阅读笔记以及详析

    DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...

  7. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  8. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记

    背景 <SSA-CNN Semantic Self-Attention CNN for Pedestrian Detection>是2019 的工作,其作者来自于南洋理工.这篇文章主要是做 ...

  9. ResNet 论文阅读笔记

    ResNet 论文阅读笔记 #机器学习/深度学习 文章介绍 论文地址:https://arxiv.org/pdf/1512.03385.pdf 原文题目:Deep Residual Learning ...

  10. LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记)

    LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记) 环形扫描骨干网络.动态漂移.一致性驱动的融合 一.重点内容 ...

最新文章

  1. 京东 | AI人才联合培养计划!
  2. 绑定域名_[云丰网]如何绑定第三方购买的域名?
  3. git 在拉取代码的时候connect 谷歌报错_工具 | 手把手教你在VSCode中使用Git
  4. 语音识别1: 音频信号采集、并存入 wav文件
  5. python做作业没头绪_使用Python做作业
  6. 网络爬虫--抓取图片_vortex_新浪博客
  7. C99的新关键字_Bool
  8. FFmpeg总结(八)windows下用ffmpeg获取视频缩略图
  9. SpaceEmacs Rock Day2 学习笔记
  10. 计算机网络应用平面设计广告设计,互联网时代平面广告设计
  11. MEM专业学位论文选题与研究设计
  12. 计算机专业设计(论文)内容及要求,计算机专业毕业设计要求.doc
  13. typecho添加html5视频播放器,Typecho音乐播放器插件AudioPlayer1.2.6更新
  14. 网络存储服务器接显示器,Unraid下,单核显IGPU实现win10外接显示屏,显卡成功驱动...
  15. 开启加盟模式,喜茶能否借此越过山丘?
  16. Logging 之root 打印器来捣乱
  17. 谷歌EfficientNet高效卷积网络的学习和使用
  18. 3 步完全掌握 LoRaWAN Server,让你拥有自己的物联网
  19. Oracle查询语句及实例
  20. ASPICE系列:顺利通过ASPICE流程软件单元验证(SWE.4)

热门文章

  1. 多面集的表示定理的必要性的证明
  2. 文件服务器 测试,python-文件服务器测试
  3. Raki的读paper小记:How to Fine-Tune BERT for Text Classification?
  4. Mybatis常见的面试题
  5. linux shell捕获异常,shell脚本中如何获取错误输出
  6. mysql 更新删除数据,MYSQL数据的插入、删除、更新
  7. hadoop ha环境下的datanode启动报错java.lang.NumberFormatException: For input string: 10m
  8. 深度解析MySQL启动时报“The server quit without updating PID file”错误的原因
  9. 使用Java实现面向对象编程(6)
  10. 列表左右移动 2017-03-23