RACK与TACK的区别
RACK和TACK目前都在IETF工作组中进行讨论,那两者有什么区别和联系呢?
先说说概念上的区别。TACK是为了减少ACK数目,但是又不影响协议性能的一种确认机制。确认机制需要支撑的协议功能不仅仅是丢包检测,还要其他功能比如拥塞控制和传输状态监控等。RACK是一个由谷歌提出的丢包检测算法,它依赖的确认机制还是原生的delayed ACK (SACK enabled)。虽然两者命名类似,但是我更倾向于把两者看作不同范畴的概念。
下面探讨一下两者的联系。如果一个协议使用TACK机制,ACK数量就会急剧下降,那么这个协议不太容易实现仅发送端修改的RACK。原因是ACK太慢,最新收到的包时间戳更新缓慢,无法及时检测丢包。我在论文里提到的,在接收端检测丢包,其实本质上就是接收端版本的RACK算法。区别是RACK使用时间戳,而我使用的是一个严格递增的packet number (可参考QUIC的设计)。而时间也是严格递增的,所以说本质上时间戳和packet number的作用是一样的。
更多的区别和联系可以阅读论文: 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.
也可以访问我的主页,获取PPT和视频资料:https://leetong.weebly.com/
本文地址:https://blog.csdn.net/sbmye/article/details/110172550
上一篇: python全面解析接口返回数据
下一篇: 视频超分:DDAN(Learning a Deep Dual Attention Network for Video Super-Resolution)
推荐阅读
-
ref与out之间的区别深入解析
-
IOS 开发之 NSMutableArray与NSArray 的区别
-
Logger.getLogger()与LogFactory.getLog()的区别详解
-
Mysql中的count()与sum()区别详细介绍
-
简单概括PHP的字符串中单引号与双引号的区别
-
IE和FIREFOX下CSS的区别与解决方法第1/2页
-
mysql int(3)与int(11)的区别详解
-
C#中按引用传递与按值传递的区别,以及ref与out关键字的用法详解
-
Java中Date,Calendar,Timestamp的区别以及相互转换与使用
-
浅析Java中Map与HashMap,Hashtable,HashSet的区别