引言
搞计算机网络研究的人都知道,传输层协议最经典的问题就是怎么做拥塞控制(Congestion Control)。这玩意做了三十多年还是经久不衰,新人老人前赴后继,近年来又如雨后春笋般出现了BBR,Copa,PCC, Indigo等算法,在不同的场景和目标中各显神通。
在数据传输的过程中,人们通常关注正向的数据报文传输性能,却很少关心反向路径上确认报文ACK的传输。然而,高吞吐和低时延往往与ACK的机制设计息息相关。例如,发生拥塞时,我们依赖ACK及时、准确地反馈连接状态,从而调整发送速率;发生丢包时,我们依赖ACK通知包到达信息,从而进行丢包重传。
拥塞控制已经“杀”成了一片红海,而作为协议的另一个重要模块协议确认机制,却还是一片处女地。
今年我们在SIGCOMM2020上提出了一种新型的传输协议确认机制(ACK Scheme):TACK,今天我想通过这篇博文给大家简单地对TACK机制进行通俗化的解析,算作导读。
进入正题。
TACK技术背景:无线网络干扰难题
作为万物互联 “最后100米”的通信网络技术,无线局域网(WLAN)技术催生了各式各样新型的移动应用。无论是通过无线路由器把手机、平板、电脑和电视等智能化设备接入到互联网,还是通过WiFi直连技术架起设备与设备之间的捷径,WLAN为生活数字化和新型应用(如4K无线投屏、AR/VR交互式游戏等)的涌现,提供了无限可能。
WLAN最常用的技术就是WiFi。WiFi通常工作在非授权公共频段(2.4GHz或5GHz),非常容易受到“外部干扰”。这种干扰将造成网络质量突发性劣化和间歇式丢包,导致用户体验下降,例如视频应用可能出现花屏、卡顿,甚至业务中断。
业界针对无线传输协议的优化,通常更关注“外部干扰”,即采取某种算法应对网络抖动或丢包。然而,无线传输过程中还存在所谓的“内部干扰”——同一连接中ACK报文对数据报文的干扰。
传统传输协议TCP因为要保证可靠,在发送数据报文的同时,难以避免地频繁发送ACK报文。另一方面,WiFi的半双工特性和冲突避免机制,造成ACK报文与和数据报文形成了直接的资源竞争,在传统TCP的ACK机制下,控制报文(ACK)几乎要占用将近一半的可用频谱资源。而且,带宽越大,“内部干扰”越严重。
在这种情况下,减少ACK报文的数目从而降低“内部干扰”,不仅可以提高无线传输的有效带宽利用率,而且还可以在弱网下将有限的宝贵传输资源留给数据报文。
然而,传统TCP依赖于高频度的ACK进行传输控制,简单粗暴地减少ACK的数目,却又可能造成滑窗效率低下、缓冲区压力倍增、以及应用响应时延增加。具体表现为数据突发、窗口更新缓慢、时延评估不准确、丢包恢复鲁棒性下降等。
另外,注意到,无线网络同时面临“外部干扰”和“内部干扰”,传输协议如果只强化抗“内部干扰”的手段,就不可避免会降低其抗“外部干扰”的能力。
以上这些矛盾点都使得问题极具挑战。
TACK技术方案:“鱼与熊掌兼得”
这篇文章提出“TACK”(Tame ACK,驯服的确认机制)机制,不仅可以最小化ACK的数目,而且还保证传输控制过程的井然有序,正所谓“鱼与熊掌兼得”。
传输协议领域有很多看起来很类似的概念,例如 TACK、RACK、SACK、FACK、HACK,傻傻分不清楚?请移步番外篇:华为的TACK和谷歌的RACK有什么区别?
TACK机制颠覆了传统协议确认机制的“简单粗暴”和固有设定,赋予了ACK报文更多的智能和灵活性。其设计原理,可以简单地理解成三点:1)更多ACK种类适应不同场景需求;2)ACK按需携带更多必要的信息;从而实现:3)更少但足够的ACK数目。
为了更形象地理解TACK的设计原理,我们来举一个例子。假如我们要推动一个障碍物,可以找20个小孩一起推(传统TCP方案);也可以找2个大人,一个大人推,一个大人拉(TACK方案)。两种方案都可能达到相同效果。在这里,分工“推”和“拉”两种功能的人,可以类比于“更多ACK种类适应不同场景需求”;用大人替换小孩,可以类比于“ACK按需要携带更多必要的信息”;而所需人数减少,可以类比于“更少但足够的ACK数目”。
具体来说,引入一种“即时ACK”报文加快传输控制对即时事件(例如丢包)的反馈和响应,同时,引入一种高度自适应的“周期ACK”报文保证反馈的鲁棒性和可靠性。这种“周期ACK”报文是以时钟周期触发的,而并非以包接收或者超时等事件触发,这种ACK的数量不会跟吞吐成比例,也就不会造成“内部干扰”随着吞吐增大而增大。
“即时ACK”报文和“周期ACK”相辅相成、互相补充和高效协同,加上基于TACK机制的丢包恢复、时延探测和速率控制算法,可以保证丢包恢复的鲁棒性、时延探测的准确性以及速率控制高效性。
TACK机制作为一种创新的传输协议确认机制,可以在不同的协议载体(例如TCP/UDP/QUIC)上进行实现。我所在的华为计算机网络与协议LAB创新团队,依托其创新的用户态极简协议,为华为全场景生态提供了高效的连接通道。例如,自华为手机系统EMUI 9.1以来,华为、荣耀旗舰手机和智慧屏等多款产品均采用了基于TACK的极简协议,使得其高清视频和游戏投屏体验得到显著改善。
后记·杂谈
在SIGCOMM的众多研究方向中,传输协议TCP优化是一个经典的课题,与TCP优化相关的工作必须达到一个极高的“阈值”才可能被录用。TACK机制的详细介绍见论文“TACK: Improving Wireless Transport Performance by Taming Acknowledgments”,这篇论文作为传输协议方向的文章,能够成功入围SIGCOMM,我个人认为最主要的原因是它把一个人们往往会忽略的问题研究得非常透彻,从理论到实践,一步一个脚印。很多学者经常习惯把拥塞控制等同于传输控制,然而传输协议并不是只有拥塞控制,这是一种“不好的习惯”。希望这篇文章能够给大家一些启示:在拥塞控制之外,传输控制还需要关注确认机制。作为作者,本着科学、实事求是的态度,我们必须承认,在所有的确认机制中,TACK也不一定是全局最优的,判断一个机制是不是最优,与具体的网络环境和应用需求密切相关。希望其它感兴趣的学者能够在这个领域继续耕耘,我相信即使这个“阈值”很高,也并不是不可能到达。
这篇文章除了得到谭焜博士和郑凯博士的指导外,还受到了清华大学徐恪教授也就是我博士导师的财力和学术上的大力支持,感激无法言表。同时,我的联名作者熊博,对这个工作有着不可磨灭的贡献,可以说我是站在了巨人的肩膀上。联名作者Rahul,来自印度研究所,他在协议方面的理论和工程的功力极其深厚,我们两人花了一整年的时间来讨论这篇文章的所有细节(学者们都应该有深刻的体会,有一个牛人能够与你事无巨细的讨论,是多么难得的事情!)。
这篇文章也受到了斯坦福大学Keith Winstein的指导和支持,与Keith的交集源于2018年的一次学术交流。当时Keith带着他的博士Francis Yan做了一个拥塞控制算法比拼平台(Pantheon: https://pantheon.stanford.edu/),任意的第三方都可以实现自己的协议,然后集成到这个平台进行统一的、周期性地测试比拼,然后根据吞吐和时延等指标进行综合排名,TACK作为一个协议确认机制,它也需要适配的拥塞控制算法支持,因此,为了探索拥塞控制算法与确认机制之间的耦合关系,我们把TACK的其中一种协议实现(FillP/FillP-Sheep)集成到了Pantheon平台,并进行了两年多的持续验证。这个平台对TACK相关的协议设计和实现有着巨大的指导作用,在此也表示感谢。Keith在自己的个人主页是这么介绍我们的合作过程的:
Tong Li and I met and had dinner together when I visited Huawei in 2018, and we talked about Tong’s efforts with his Huawei and Tsinghua colleagues to design a new acknowledgment scheme for TCP. Tong ended up developing TACK in part by iterating its design on our Pantheon of Congestion Control, a testbed that included nodes with cellular connectivity around the world and, until 2020, ran automated bake-offs every week and published the resulting packet traces. Tong deployed 16 different versions of the TACK scheme on the Pantheon as the system collected many gigabytes of packet traces throughout 2018 and 2019. The TACK scheme is now deployed for real on Huawei’s smart TVs and Mate 20 smartphones.
更多的细节可以阅读论文: Tong Li, Kai Zheng, Ke Xu, Rahul Arvind Jadhav, Tao Xiong, Keith Winstein, Kun Tan. “TACK: Improving Wireless Transport Performance by Taming Acknowledgments.” Proceedings of the 2020 Conference of the ACM Special Interest Group on Data Communication (ACM SIGCOMM), pp. 15-30, 2020.
Youtube视频讲解:https://www.youtube.com/watch?v=NQG3Pmxn9xE
也可以访问我的主页,下载PPT和视频资料:https://leetong.weebly.com/