在捕获的会话中,是否存在指纹识别TCP拥塞控制算法的算法?

7
我需要一个程序来确定在捕获的TCP会话中使用了哪种TCP拥塞控制算法
引用维基百科文章如下:
TCP New Reno是最常用的算法,SACK支持非常普遍,并且是Reno/New Reno的扩展。大多数其他算法都是竞争性提案,仍需要评估。从2.6.8开始,Linux内核将默认实现从reno更改为BIC。默认实现在2.6.19版中再次更改为CUBIC。
另外:
复合TCP是TCP的微软实现,同时维护两个不同的拥塞窗口,旨在在不影响公平性的情况下在LFN上实现良好的性能。它已广泛部署在Microsoft Windows Vista和Windows Server 2008上,并已移植到旧版Microsoft Windows版本以及Linux。
有哪些确定使用的CC算法的策略(由第三方捕获会话)?
更新

这个项目已经构建了一个工具来完成这个任务:

The Internet has recently been evolving from homogeneous congestion control to heterogeneous congestion control. Several years ago, Internet traffic was mainly controlled by the standard TCP AIMD algorithm, whereas Internet traffic is now controlled by many different TCP congestion control algorithms, such as AIMD, BIC, CUBIC, CTCP, HSTCP, HTCP, HYBLA, ILLINOIS, LP, STCP, VEGAS, VENO, WESTWOOD+, and YEAH. However, there is very little work on the performance and stability study of the Internet with heterogeneous congestion control. One fundamental reason is the lack of the deployment information of different TCP algorithms. The goals of this project are to:

1) develop tools for identifying the TCP algorithms in the Internet,
2) conduct large-scale TCP-algorithm measurements in the Internet.
1个回答

4
这里提到的拥塞控制算法不止你所列举的几种,还包括:FAST、可扩展、HSTCP、HTCP、Bic、Cubic、Veno、Vegas等。由于实际实现中的bug修复,它们也有一些微小的变化,我猜测在不同操作系统上的实现也会稍有不同。
但是如果我需要想出一个想法,那就是估算连接的RTT,可以尝试查看第三个和第四个数据包之间所花费的时间,因为第一个和第二个数据包可能受到路由器ARP和其他发现算法的影响。
在估算出RTT后,您可以尝试在途中进行精细调整,但我不确定如何做到这一点。但是您不需要程序的完整规范,只需要想法 :-)
有了估算出的RTT,您可以尝试将数据包放入RTT箱中,并计算每个箱中正在传输的数据包数量。这样,您就能够“绘制”预估的cwnd(每个箱中的数据包数)和时间,并尝试进行某些模式匹配。
另一种方法是沿着跟踪路径走,尝试在脑海中“运行”不同的拥塞控制算法,并查看任何时候的决策是否与您所做的决策相匹配。这将需要一些宽限和准确度间隔。
这绝对听起来是一个有趣而具有挑战性的任务!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接