决定远程控制服务体验是否优秀的核心点之一是网络。网络环境优秀时,远程控制的体验自然是高清流畅,但事实上,很多需要应用到远程控制的场景其网络环境远远称不上优秀,在这类弱网环境下如何保证远程控制服务依旧能够有十足的稳定性,是远程控制厂商们的一大课题。

“国民远控”向日葵为优化弱网环境下的连接稳定性问题并提升带宽的利用率,已于早前完成了一次技术升级,全球各地的主要服务器均支持BBR拥塞控制算法,该升级可以让服务器之间的连接更快,端与服务器的连接更稳定。

而作为本次技术升级核心的BBR拥塞控制算法,受到的关注却比较少,各路资料和宣传中均鲜被提及,这篇文章将介绍这一算法,并且实测引入BBR拥塞控制算法之后的向日葵在弱网环境中的提升。

拥堵控制算法的“来龙去脉”:从“Cubic”到“BBR”

● TCP拥塞控制(Congestion Control)算法

互联网经历了几代的发展,从上网需要电话线带宽只有几十Kbps,到现在随时随地上网,最新的5G更是让我们获得了Gbps的接入带宽,这在以前很难想象。不过,在互联网快速发展的背后,它的技术基础有相当一部分仍然构建于20年前甚至更早。TCP拥塞控制(Congestion Control)算法就是其中之一。作为专有名词它很少被提及,但我们的一些经历,比如明明网速很快但下载却很慢这样的事很可能跟它有关。

互联网上的两点通信时,会经过很多路由,每经过一个路由设备叫一跳(hop)。每一跳都有不同的带宽,有大有小,两点之间的可用带宽是每一跳中的最小值,被称为Bottleneck BW,因为是公共链路,它们几乎总是拥挤不堪,丢包和排队经常发生,可用带宽也时大时小,这很常见。

不过7层应用程序并不需要关心这些,即使排队和路由抖动产生了丢包或者数据错误,4层的TCP协议也会处理,它会重传并进行带宽控制。重传用于保证数据的完整性,带宽控制则确保有限的带宽资源被尽可能公平分配,减少排队和丢包,这就是拥塞控制算法的核心,是的,为了公平。除了带宽,通信的另外一个重要指标是延时,用RTT(Round-trip time)计量,是一个包从被发送到收到ACK的间隔,一般是以毫秒计。RTT也与拥塞控制密切相关。

● Cubic拥塞控制算法

1980年代的互联网崩溃,促成了TCP拥塞控制的落地。经过十多年的发展,Cubic出现并延续至令,目前它仍然是互联网主流的拥塞控制算法,它基于著名的“加性增,乘性减”(AIMD)控制律,将丢包作为网络链路拥塞的指示。它会检测丢包,发现时便会主动降低发送频率,减少拥塞。这被称为“基于丢包”的拥塞控制算法。同类算法有几个,像更早前的Reno, BIC等。

由于只有当路由器的队列满了以后才会有丢包,因此,这类算法倾向于快速填满瓶颈路由器的缓存,然后急剧降低发包(减少50%),当队列空闲后又慢慢填满,周而复始。

Cubic算法的正常运行对链路的丢包率有一定的要求,在丢包率较高的长肥管道环境下,其发送窗口会迅速收敛到很小。另一方面,当实际可用带宽增大时,它总是会花固定的时间去探测然后慢慢增大,显得缓慢而笨拙。

● BBR拥塞控制算法

Cubic在拥塞避免阶段会逐渐加大发送窗口直至填满瓶颈队列,这种机制加速了拥塞的形成,造成了网络延时的波动。在链路瓶颈处保持最大带宽和最小延时的状态是拥塞控制的目标,但明显Cubic在目前的互联网环境中已经不能很好的胜任。谷歌提出一种基于延时带宽积的算法BBR (Bottleneck Bandwidth and RTT),使用了交替测试链路的最大带宽与最小的RTT的方法,来寻找名为Kleinrock的最佳操作点,这个点,核心特征是报文开始排队。如下图所示,Cubic的拥塞控制点是排队并且缓存已经满了。

将最近10次往返中测得的最大带宽视为Bmax,将过去10s中测得的最小RTT视为Tprop,然后根据这两个值估算BDP。

BBDP = Bmax × Tprop

BBR分别通过窗口增益和起博增益来调整CWND和发送速率,进而控制其发送行为,将拥塞快速收敛到最佳控制点。

向日葵引入BBR之后在弱网环境的提升

前文已经详细介绍了BBR拥塞控制算法的发展历程和实现原理,接下来将具体介绍引入BBR拥塞控制算法之后,向日葵在弱网环境下有怎样程度的提升。

向日葵的实验室数据显示,在跨国的弱网环境中,未使用多路复用的单连接应用,BBR能提升约10倍的端与服务器间的可用带宽(如:由120Kbps提升到>1Mbps)。同时,国内的服务器间互联时,BBR能提升1倍以上的服务器间带宽利用率(由40%到85%)。

向日葵实际应用数据显示,在经过支持BBR的服务器中转后,向日葵的连接带宽提升了3倍以上,帧率提升了5倍以上。

因此,我们可以得到如下结论:BBR拥塞控制算法能显著改善向日葵在部分使用场景下的用户体验。

当然,除了BBR拥塞控制算法,向日葵优秀的远控体验还得益于大量其他的技术优势,例如:、丢包重传及抗丢包(ARQ/FEC)技术、Visual saliency算法、自研SADDC图像算法等等。事实上,正是向日葵经年累月在技术上的坚持不懈和极致追求,以及对技术细节的不断打磨,才能够不断突破技术瓶颈,造就如今行业的领先地位。

技术分享:国民远控向日葵如何通过BBR算法提升远控体验?相关推荐

  1. 【转】贾佳亚港中文团队冠军技术分享:最有效的COCO物体分割算法

    转自:http://www.sohu.com/a/201822261_473283 [新智元导读]物体分割(instance segmentation)是如今视觉领域最热最核心的一个问题.在这届国际图 ...

  2. 双11技术分享 | “喵糖”背后的商业化流量投放算法

    ▐ 前言 品牌合约保量广告被广泛应用于电商营销中,为广告主提供合同约定的目标人群触达次数.服务于品牌合约广告的投放分配算法,需要对每个请求分配.展示广告,以完成合约订单的展示量要求.在传统的 APP ...

  3. 技术分享|一种多智能体空地协同算法开发验证平台

    空地协作属于多智能体协作中的异构智能体协作,是当今多智能体研究领域的热点.系统分利用了异构多机器人的功能互补性,组成跨域协作系统,实现任务协同和信息共享,从本质上提升了面对复杂环境和任务规划的感知能力 ...

  4. 【华为云技术分享】云图说 | 容器交付流水线ContainerOps,提升持续交付效率

    容器交付流水线(ContainerOps)以DevOps理念为基础,面向从源代码到生产上线全流程,提供代码编译.镜像构建.灰度发布.容器化部署等一系列服务,助力企业落地容器DevOps最佳实践.Con ...

  5. 向日葵资深产品总监技术分享:“国民远控”如何在AD域环境下应用

    在大型企业进行IT建设时,AD域很早就已经成为了必选项,企业选择引入其他IT服务也往往需要该服务能够对接现有的AD域体系."国民远控"向日葵作为最具代表性的国产远程控制品牌,那么其 ...

  6. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  7. 精彩!安全圈的技术分享,竟成了他人割韭菜的工具?

    师傅们,大家好!在网络安全这个行业中,技术分享是一种重要的学习和交流方式.然而,在中国的网络安全圈里,许多人对技术分享持保守态度,喜欢藏着掖着.这一现象在一定程度上阻碍了网络安全行业的发展,限制了我们 ...

  8. 龙芯架构应用迁移技术分享——搜狗输入法应用迁移

    技术引领创新,用"芯"构建生态,第一期龙芯生态论坛将于2021年3月12日(周五)盛大开讲!龙芯生态论坛作为龙芯生态建设的重要技术交流窗口,将汇聚龙芯资深技术专家及行业生态伙伴精英 ...

  9. 对称加密算法_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...

    大家好~我是贾正经,又到了干货满满的技术分享趴啦~ 上期我们讲解了对称加密算法的小知识,并介绍了国密算法中SM4算法的原理.(上集回顾) 本期带大家了解一下分组密码的五个模式. 分组密码的模式 首先了 ...

最新文章

  1. ajax 同步和异步的区别|已迁移
  2. springmvc的工作原理_SpringMVC工作原理
  3. linux 禁用ipv6 方法
  4. idea从mapper接口跳到xml文件
  5. spring core源码解读之ASM4用户手册翻译之一asm简介
  6. Shell入门(九)之字符串比较
  7. 搞一个兼容浏览器的事件函数
  8. linux http用户,HTTP完整请求过程
  9. ajax和jquery教程pdf,jquery ajax教程pdf
  10. java keytool 生成p12证书
  11. Linux自学、大数据学习前奏笔记---Linux基础知识,shell命令介绍学习
  12. bat脚本_获取管理员权限
  13. three.js各种版本的编辑器
  14. 【支付】银行卡支付的行为主体介绍
  15. 【数据结构复习自用】树的性质
  16. 计算机在往硬盘上写数据时寻道,计算机在往硬盘上写数据时寻道是从( )磁道开始。...
  17. 为何非得选择旧金山测试?通用Cruise讲述无人车炼成记
  18. brpc源码解析(一)—— rpc服务添加以及服务器启动主要过程
  19. 《Effective Modern C++》学习笔记之条款二十五:针对右值引用实施std::move,针对万能引用实施std::forward
  20. ECCV 2022,两位华人学者摘得最佳论文奖,本科来自清华、浙大

热门文章

  1. 【项目笔记_RP552D】rtthread winusb 修改 vid 与 pid
  2. cass光标大小怎么调_CAD如何调整十字光标和靶框大小
  3. Excel使用公式截取字符串
  4. 解决Win7缺失MSVCR120.DLL问题
  5. 技术革命才是真正的革命
  6. MacBook合盖不休眠
  7. UE4 EQS C++自定义节点编写
  8. java输出到空心三角形_java经典算法_019打印三角形(空心,实心) | 学步园
  9. 【解决】Error loading the file ‘Assets/.../Scene.unity‘. File is either empty or corrupted, please......
  10. 为什么只看重结果_只注重结果不注重过程的话