文章目录

  • 引言
  • TACK技术背景:无线网络干扰难题
  • TACK技术方案:“鱼与熊掌兼得”
  • 后记·杂谈

引言

搞计算机网络研究的人都知道,传输层协议最经典的问题就是怎么做拥塞控制(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/

协议确认机制TACK的通俗解析相关推荐

  1. http和https的区别 与 SSL/TLS协议运行机制的概述

    http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...

  2. springboot + rabbitmq 用了消息确认机制,感觉掉坑里了

    最近部门号召大伙多组织一些技术分享会,说是要活跃公司的技术氛围,但早就看穿一切的我知道,这 T M 就是为了刷KPI.不过,话说回来这的确是件好事,与其开那些没味的扯皮会,多做技术交流还是很有助于个人 ...

  3. RabbitMQ之消息确认机制(事务+Confirm)

    概述 在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达brok ...

  4. TCP的ACK原理和延迟确认机制

    原文地址:https://blog.csdn.net/gamekit/article/details/53898802 一.ACK定义 TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表 ...

  5. SSL / TLS 协议运行机制详解

    转载自  SSL / TLS 协议运行机制详解 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想 ...

  6. TCP延迟确认机制和SACK

    一 TCP的ACK原理和延迟确认机制 (1)ACK的定义: TCP协议中,接收方成功接收到数据后会回复一个ACK数据包,表示已经确认接收到ACK确认号前面的所有数据.字段长度是32位. (2)ACK的 ...

  7. TCP的状态:SYN, FIN, ACK, PSH, RST, URG 简介及 ACK确认机制

    1.TCP的状态FLAGS字段状态 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 对于我们日常的分析有用的就是前面的五个字段:它们 ...

  8. [白话解析] 通俗解析集成学习之bagging,boosting 随机森林

    [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林 0x00 摘要 本文将尽量使用通俗易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来 ...

  9. activemq 消息阻塞优化和消息确认机制优化

    一.消息阻塞优化 1.activemq消费者在从待消费队列中获取消息是会先进行预读取,默认是1000条(prefetch=1000).这样很容易造成消息积压. 2.可以通过设置prefetch的默认值 ...

最新文章

  1. Python入门100题 | 第076题
  2. 简单C语言程序的执行过程
  3. 一次服务器CPU占用率高的定位分析
  4. SAP Spartacus的pagination$ -默认的分页设置10
  5. 具有Tron效果的JavaFX 2 Form
  6. OpenDDS用idl生成自定义数据类型时遇到的一个问题
  7. 阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...
  8. php追加数据,php追加数据到mysql
  9. HTML+CSS+JS实现 ❤️从亮到暗图片滤镜特效❤️
  10. 《AIOps在360的落地实践》分享实录
  11. vs2008 成功编译 easyMule VeryCd V1.1.13
  12. 关于半导体器件材料的这些基础知识你都知道?
  13. wps中有公式如何调整间距
  14. 解决Chrome 的右键谷歌网页翻译失效 20221107更新
  15. Echarts快速入门
  16. 双稳态电路的两个稳定状态是什么_单稳态电路与双稳态电路
  17. 卸载企业版360 含密码
  18. C语言项目-后宫选妃系统-第三天-终结
  19. yaffs2源码学习2:chunk和block
  20. graphpad画生存曲线怎么样去掉删失点_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...

热门文章

  1. 300M宽带网速只有16M?下载速度达到多少才算正常?
  2. 使用隐马尔科夫模型实现分词
  3. Opencv测量图片中的物体大小
  4. win7如何隐藏所有微软服务器,如何隐藏Win7登录界面的administrator用户名
  5. JSP自定义带属性的标签
  6. python用什么方式可以打印换行字符串_字符串是一个连续的字符序列,用________方式打印出可以换行的字符串。...
  7. Application做的单叶聊天室
  8. c++编程 设置桌面壁纸以及设置壁纸失效的解决办法
  9. Dart factory 快速理解
  10. Benchmark Factory 使用 简介