决定远程控制服务体验是否优秀的核心点之一是网络。网络环境优秀时,远程控制的体验自然是高清流畅,但事实上,很多需要应用到远程控制的场景其网络环境远远称不上优秀,在这类弱网环境下如何保证远程控制服务依旧能够有十足的稳定性,是远程控制厂商们的一大课题。
“国民远控”向日葵为优化弱网环境下的连接稳定性问题并提升带宽的利用率,已于早前完成了一次技术升级,全球各地的主要服务器均支持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图像算法等等。事实上,正是向日葵经年累月在技术上的坚持不懈和极致追求,以及对技术细节的不断打磨,才能够不断突破技术瓶颈,造就如今行业的领先地位。