拥塞控制算法之Verus (2015 Sigcomm)_yongsaizusesuanfa_Bordery的博客-程序员秘密

技术标签: TCP  Sigcomm  无线  拥塞控制  Verus  

这两天重读了一下2015 Sigcomm的一篇拥塞控制文章: Verus。整理如下:


MOTIVATION:

Veurs想要解决的问题:在复杂多变的无线网络环境下的拥塞控制。蜂窝无线网络具有难以预测的特性[3][4][5],并且传统的TCP在其中表现并不好[1][2],会造成bufferbloat现象[6][7]。文中指出,对于无线信道的不可预测性,主要由三大特点决定:

第一个,是由于用户与基站之间的状态可能会在短时间内经历复杂变换,影响蜂窝信道的可用性[1];第二,在蜂窝网络中使用的调度算法会造成突发,并且文章亲自测试了蜂窝网络的突发性,发现在收端观测到的具有代表性的流量特点,包括带宽、突发尺寸和到达间隔,这些都是突发性的,如图1和图2;第三,之前的工作认为在蜂窝网络中引起时延主要的因素是自己造成的排队时延[2],但是本文发现竞争流同样会影响端到端时延特性,尤其是在网络近乎饱和的情况下,如图3,显示了在一个10Mbps的数据流2分别开关的情况下数据流1的平均时延。最后呢,设备移动的问题会使这些问题更加严重。


蜂窝网络信道内在的不可预测性再加上蜂窝网络组件间复杂的交互,使简单的信道预测模型无法追踪信道的变化,这也是Veurs的motivation。


ALGORITHM:

与通常的拥塞控制不同,Verus没有为网络设定拥塞信号,而是使用时延变化量去学习出一个网络时延与最大可发送数据量的映射(delay profile)。

它借鉴了传统TCP协议中慢启动(slow start)和加速递减(multiplicative decrease)的部分,只是改变了保持发送窗口的方法。与传统TCP在拥塞避免阶段每个窗口加1的做法不同的是,Verus每ε毫秒改变一次发送窗口,且加减的速度更快。其核心公式如下:

                                                                  

W(t + 1)是下一次的发送窗口大小,f正是我们所说的delay profile,d(t)是网络时延,δ(t)是时延的增减量。Verus的delay profile通过以下四个方面建立:

  • 时延评估:使用ACK返回的时延测量估测RTT。
  • Delay profile:追踪时延与最大可用发送窗口的关系。
  • 窗口评估:根据时延评估和配置文件,评估发送窗口。
  • 丢包处理:在遇到丢包时乘性减小发送窗口。

算法过程可以总结如下:先在每个阶段收集并记录每个包的往返时延Dp,i(表示在第i个epoch中第p个包的RTT,所有的Dp,i都会记录在delayprofile中)。再使用指数权重移动平均(EWMA)表示该epoch中时延的最大值:

                                                      

并计算相邻epoch中Dmax,i的差值ΔDi。根据ΔDi的符号,我们使用下式调整期待的网络时延Dest, i+1

                                                 

Verus直接依据Dest; i+1在delay profile中选取对应的发送窗口来作为接下来的窗口大小,以此达到适应网络变化的目的。


IMPLEMENTATION:

Delay profile的初始化及维护:

Delay profile的初始化完成与Verus的慢启动阶段,与TCP的慢启动相同。同时会存储下每个包的发送时间戳和发送窗口大小,以此计算RTT和时延-窗口对应关系。等到慢启动过程结束后(检测到丢包或者RTT超过阈值),便会有很多这样的元组,再用内插法构建Delay profile。

在后期的更新中,每当Verus收到一个ACK,这个ACK的发送窗口对应的时延值会被新的RTT替代。再以固定的时间间隔进行内插曲线,达到更新Delay profile的目的。

超时和重传:

超时计时器主要用于鉴别丢包:当一个序列号缺失时,Verus会开始计时,如果超过三倍时延还没有等到缺失的包,则认为丢包,降低发送窗口并重传该包。


SUMMARIZATION:

在无线网络中,网络环境的实时变化是所有拥塞控制研究人员都想克服的问题。Verus里解决这个问题的思路就比较值得借鉴:将算法的适应分成短期和长期两个部分,短期中每ε毫秒作为一个调整窗口的epoch,长期调整中使用拟合曲线去适应长期变化。这样既可以解决突发改变,也可以适应长期的网络环境变化。

Verus里比较明显的缺点就是检测到丢包时倍数较少发送窗口,这在网络环境恶劣、链路丢包率较高的时候带宽利用率会大幅下降。但Verus的TCP友好性也是因为这个机制做到的,算是它的一个内在缺陷。



Reference:

[1]J. Huang, F. Qian, Y. Guo, Y.Zhou, Q. Xu, Z. M. Mao, S. Sen, and O. Spatscheck. An in-depth study of LTE:e_ect of network protocol and application behavior on performance. In ACMSIGCOMM 2013 Conference, Hong Kong, China, August 12-16 2013.

[2] K. Winstein, A.Sivaraman, and H. Balakrishnan. Stochastic forecasts achieve high throughputand low delay over cellular networks. In Proceedings of the 10th USENIXconference on Networked Systems Design and Implementation, 2013.

[3] T. Ekman. Prediction of MobileRadio Channels Modeling and Design. PhD thesis, Signals and Systems, UppsalaUniversity, Sweden, 2002.

[4] W. Lum Tan, F. Lam, and W.Cheong Lau. An Empirical Study on 3G Network Capacity and Performance. In Proceedingsof the 26th IEEE International Conference on Computer Communications. INFOCOM2007., May 2007.

[5] R. Schoenen, A. Otyakmaz, andZ. Xu. Resource Allocation and Scheduling in FDD Multihop Cellular Systems. In ICCWorkshops 2009. IEEE International Conference on, pages 1{6, June 2009.

[6] J. Gettys. Bufferbloat: DarkBuffers in the Internet. Internet Computing, IEEE, 15(3), May 2011.

[7] H. Jiang, Y. Wang, K. Lee,and I. Rhee. Tackling Bufferbloat in 3G/4G Networks. In Proceedings of the ACMConference on Internet Measurement Conference (IMC), 2012.








版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BertDai/article/details/77841628

智能推荐

django echarts饼图数据动态加载_LisaYang94的博客-程序员秘密

后台关键代码: data = {}#keys与values分别为该数据的键数组,值的数组。这里循环为字典添加对应键值for k, v in zip(keys, values): data.update({k: v, },)#最后将数据打包成json格式以字典的方式传送到前端return render(request, 'index.html', {'data': json....

CartoonGAN github_cartoon gan_Co丿Hx的博客-程序员秘密

Deecamp夏令营需要用到CartoonGAN,所以对于CartoonGAN进行代码以及文章分析。首先分析了preTrain的VGG19如下input VGG19 提取featureinput generator VGG199提取feature 使两者相似来提取结构信息。如果在实现时效果不明显或者出现模型崩塌,加大pre_train的epoch,这样可以使得后面训练更容易,当然加...

LabVIEW关于数值显示控件增加单位的显示设置_Dinga-LV的博客-程序员秘密

这样一个数值显示将会显得很贴心,同时也会增加数据显示的直观性。具有如何设置呢?见下图所示。同样,我们也可以通过编程的方法来动态设置数值控件的显示格式,方法如下:至此,关于数值控件显示单位的方法介绍完毕。在使用属性对话框设置显示格式时,还发现还有时间显示的一些设置,可以引起注意。另外,LabVIEW还提供了格式化字符串合法性的检查功能,在使用编程方法设置显示格式时,可

记录一个Lombok,在jdk10下面无法启动的问题,lombok.javac.apt.LombokProcessor could not be initialized._程序员冰零的博客-程序员秘密

0x00 - 还是废话不多说了,标题佛性一点 lombok版本: 1.16.20 maven配置如下<build> <plugins> <plugin> <groupId>org.apache.maven.plu

【Unity笔记】使用IK来控制手持武器以及武器瞄准(三)_unity怎么让人拿枪_Call me 兽医的博客-程序员秘密

最终实现的效果如下:教程时间:2021年12月29日教程版本:Unity 2020.3这一篇,我们学会如何让持枪的角色跟随鼠标移动,也就是瞄准第一步,制作一个目标,让瞄准的方向跟随这个目标1. 选中 Rig_WeaponPose ,复制一份(Ctrl+D),起名为:Rig_WeaponAim2.给 PlayerPerfab 的 Rig Builder 组件增加这个Rig_WeaponAim,并放在第二位(必须)3. 给 Rig_WeaponAim 下的 WeaponPose 添加.

telnet 原始指令 ascii_ncgege的博客-程序员秘密

Telnet最佳的用户上下文中理解与简单终端用户的通信需要由 Telnet 服务器程序的处理在远程计算机上运行登录会话中使用本地 Telnet程序 (称为客户端程序)。应强调的是,Telnet 服务器可以通过对从客户端收到许多其他类型的进程包括远程登录服务器的数据。这所述 RFC854 并1983年中第一次发布。网络虚拟终端在 NVT 使用 7 位代码的字符。显示由 7 位代码表

随便推点

easyui的弹出浮层(加载中...)的效果_easyui 加载中_IT小白3的博客-程序员秘密

//采用jquery easyui loading css效果<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title111</title> <!--引入jquery-

Ubuntu上安装中文输入法(亲测可行)_chestnutllin的博客-程序员秘密

ubuntu上默认的是只有英文输入法,但有时为了方便需要中文输入,测试了网上的几种方式之后,总结出可行的方法如下:1、安装语言包System Settings–>Language Support–>Install/Remove Languages。选中chinese,点击Apply应用即可,等待下载安装完成。2、安装ibus框架在终端输入:sudo apt-get install ibus ibu

计算机毕业设计ssm社区疫情防控系统3j56g系统+程序+源码+lw+远程部署_普通网友的博客-程序员秘密

计算机毕业设计ssm社区疫情防控系统3j56g系统+程序+源码+lw+远程部署。springboot基于Springboot的滑雪场学具租赁管理系统。springboot基于springboot和vue的酒店管理系统。springboot基于B_S模式的后勤管理系统-在线报修系统。springboot基于springboot的仓库管理系统。springboot基于vue的百乐儿童玩具公司管理系统。springboot生物遗传病的治疗和防范系统。ssm基于web的考试资料交易系统的设计与实现。...

HDU5979 Convex_没有灵魂的程序员的博客-程序员秘密

ConvexTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 189    Accepted Submission(s): 159Problem DescriptionWe have a special convex

【GBT28181开发:SIP协议实践】之设备目录查询_weixin_30808575的博客-程序员秘密

下面学习的是设备目录查询的流程,和设备信息的流程差不多,主要是描述的协议字段不同,模拟SPVMN系统向源设备查询其设备目录,记录下交互的消息,详细研究了下:转载请注明出处:http://blog.csdn.net/longlong530一.环境搭建:环境准备:http://blog.csdn.net/longlong530/article/details/9176989UAC...

发票管理小工具(三):PDFMiner vs pdfminer3k vs Pdfminer.six_小小鱼儿游啊游的博客-程序员秘密

发票的格式为PDF,初步想法是提取PDF的内容并转换为文本,查找资料,找到三个符合的Python package: PDFMiner , pdfminer3k和Pdfminer.six。PDFMiner官方描述:PDFMiner is a text extraction tool for PDF documents.Warning: As of 2020, PDFMiner is not actively maintained. The code still works, but this proj

推荐文章

热门文章

相关标签