以动制动

  采用TCP拥塞控制算法所能实现的理想效果是,通过算法猜测网络瓶颈在哪里,在达到瓶颈值之前尽可能多地发送数据,同时尽可能接近瓶颈上限而又不超过,而非发生拥塞后再做出反应。

  中国互联网络信息中心(CNNIC)于2019年8月发布的《中国互联网状况发展报告》显示,截至2019年6月,中国网民规模已达到8.54亿人,2019年1月到6月仅移动互联网接入流量就高达553.9亿GB,同比增长107.3%。除了巨大的流量压力和激增的网民数量,智能手机、平板电脑和笔记本等设备种类逐渐丰富;传统的浏览器和新兴的移动应用程序等各式浏览工具不断涌现;音频、视频、游戏、图片等不同内容形式层出不穷;移动蜂窝数据网络、固网、WiFi等“最后一公里”的网络技术发展并普及,整体网络环境变得极其复杂。但无论网络环境如何,普通终端用户只想快速地获取高清且流畅的内容。要想在这样共享的环境中使每个终端用户都能够拥有一个高效率、高质量的体验,网络协议层面的优化必不可少。

  拥塞控制,“治堵”关键

  网络环境好比市政交通。只有少量行人时,道路永远畅通无阻。当越来越多的机动车、非机动车涌上街头,堵车现象随之而来,于是就需要能有效应对不同状况的交通规则来缓解交通压力。网络亦是如此,流量太大、“路况”太复杂势必会“堵”得水泄不通,而這个“堵”字用行话来讲就是“拥塞”,用来“治堵”的网络“交通规则”即是TCP(传输控制协议)拥塞控制算法。

  目前,主流的TCP拥塞控制算法主要被划分为两大类:一是以Cubic、Reno为代表的基于丢包的算法,二是包括FastTCP和BBR在内的基于RTT(往返时间)/时延的算法。尽管不同TCP拥塞控制算法的具体运行机制有所差异,但都是通过对需要发送的数据量、拥塞窗口(cwnd)数值及接受窗口(rwnd)可接受的数据量三项参数进行衡量,以达到避免网络拥塞的目的。更进一步讲,采用TCP拥塞控制算法所能实现的理想效果是(如图),通过算法猜测网络瓶颈在哪里,在达到瓶颈值之前尽可能多地发送数据,同时尽可能接近瓶颈上限而又不超过,而非发生拥塞后再做出反应。

  以一敌百 难以实现

  面对市面上的诸多选择,是否有一种TCP拥塞控制算法能够适用于所有的场景呢?问题的答案自然是否定的,而且Akamai对网络环境状况的监测结果也印证了这一点。Akamai在全球部署了分布最广泛且高度分散的内容交付网络(CDN),具备较高的对整体网络的可见性,Akamai在自身平台上部署了多种TCP拥塞控制算法,包括FastTCP、BBR、QDK、Cubic、Reno等。以Akamai在亚太地区某区域不同网络环境下的有效发包效率为例:亚太地区某区域移动蜂窝网络的数据显示,当交付内容的大小在1M至3M之间时,平均有效发包效率最高的TCP拥塞控制算法为QDK(18240.6kbps),比最低的FastTCP快约4.4Mbps,差异比例高达惊人的33%。使用FastTCP时,超过半数情况下有效发包效率在11940.0kbps以上;而使用Reno时,半数以上的情况有效发包率可达到16048.0kbps,远高于垫底的FastTCP。而亚太地区相同区域固网的数据则呈现出另一番景象。BBR的平均有效发包效率仅为20229.1kbps,是效率最低的TCP拥塞控制算法,而在移动蜂窝网络环境中不太“灵光”的FastTCP反而以22694.9kbps的平均有效发包效率,一跃成为了固网环境里的“优等生”。同时,对超过一半情况有效发包效率可以达到的数值进行比较,FastTCP依然以18618.4kbps保持领先。

  不难发现,每一种TCP拥塞控制算法都有最适合它的特定网络环境,没有一劳永逸的方法可以解决繁杂且庞大的网络中的所有问题。

  以动制动 应势而变

  既然网络环境中的拥塞状况时刻处于动态的变化之中,试想如果能够根据实际的网络条件,自动选择出最适合的TCP拥塞控制算法,及时对症下药,难题也就可以迎刃而解。那么,这样动态的优化过程又该如何实现呢?

  首先,依托一张能够交付大规模流量的内容交付网络,从中收集涵盖数据类型、网络类型、用户地理位置、网络时延、使用时间段等20个维度的海量数据,作为分析网络环境状况的原始素材。而要利用这些数据完成对网络流量和拥塞情况的分析,并识别出其中的细微差别和特点,依靠人工手段显然不现实,因此需要机器学习来助一臂之力。

  当前,Akamai正在稳步推进以分析框架、机器学习、TCP拥塞控制算法工具库为主要构成的动态协议优化解决方案。凭借这套解决方案,Akamai期待不仅能够实现对网络使用体验的优化,更能够营造一个相对公平的网络使用环境。未来,Akamai仍将是互联网内容提供商在网络“治堵”道路上并肩同行、值得信赖的伙伴。

关注读览天下微信, 100万篇深度好文, 等你来看……