引言
搞计算机网络研究的人都知道,传输层协议最经典的问题就是怎么做拥塞控制(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数目。
具体来说,引入一种“即时ACK”报文加快传输控制对即时事件(例如丢包)的反馈和响应,同时,引入一种高度自适应的“周期ACK”报文保证反馈的鲁棒性和可靠性。这种“周期ACK”报文是以时钟周期触发的,而并非以包接收或者超时等事件触发,这种ACK的数量不会跟吞吐成比例,也就不会造成“内部干扰”随着吞吐增大而增大。
“即时ACK”报文和“周期ACK”相辅相成、互相补充和高效协同,加上基于TACK机制的丢包恢复、时延探测和速率控制算法,可以保证丢包恢复的鲁棒性、时延探测的准确性以及速率控制高效性。
TACK机制作为一种创新的传输协议确认机制,可以在不同的协议载体(例如TCP/UDP/QUIC)上进行实现。我所在的华为计算机网络与协议LAB创新团队,依托其创新的用户态极简协议,为华为全场景生态提供了高效的连接通道。例如,自华为手机系统EMUI 9.1以来,华为、荣耀旗舰手机和智慧屏等多余款产品均采用了基于TACK的极简协议,使得其高清视频和游戏投屏体验得到显著改善。
背景故事
在SIGCOMM的众多研究方向中,传输协议TCP优化是一个经典的课题,与TCP优化相关的工作必须达到一个极高的“阈值”才可能被录用。
笔者论文“TACK: Improving Wireless Transport Performance by Taming Acknowledgments”作为传输协议方向的文章成功入围,多年苦心钻研没有白费,努力有被看到,不禁备感幸运。
这篇文章除了得到谭焜博士和郑凯博士的指导外,还受到了清华大学徐恪教授也就是我博士导师的财力和学术上的大力支持,感激无法言表。这篇文章也受到了斯坦福大学Keith Winstein的指导和支持,Keith在自己的[个人主页](https://cs.stanford.edu/~keithw/)是这么介绍我们的合作过程的:
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.
也可以访问我的主页,获取PPT和视频资料:https://leetong.weebly.com/