rup*_*llo 6 network-programming tcp network-protocols congestion-control
我想要一个程序来确定捕获的TCP会话中使用的TCP拥塞控制算法.
引用的维基百科文章指出:
TCP New Reno是最常用的算法,SACK支持很常见,是Reno/New Reno的扩展.大多数其他竞争提案仍需要评估.从2.6.8开始,Linux内核将默认实现从reno切换到BIC.在2.6.19版本中,默认实现再次更改为CUBIC.
也:
复合TCP是TCP的Microsoft实现,它同时维护两个不同的拥塞窗口,目的是在不损害公平性的同时在LFN上实现良好性能.它已经与Microsoft Windows Vista和Windows Server 2008一起广泛部署,并已移植到较旧的Microsoft Windows版本以及Linux.
确定使用哪种CC算法(来自第三方捕获会话)的策略是什么?
更新
这个项目构建了一个工具来完成这个:
互联网最近已从均匀拥塞控制演变为异构拥塞控制.几年前,互联网流量主要由标准TCP AIMD算法控制,而互联网流量现在由许多不同的TCP拥塞控制算法控制,如AIMD,BIC,CUBIC,CTCP,HSTCP,HTCP,HYBLA,ILLINOIS,LP, STCP,VEGAS,VENO,WESTWOOD +和YEAH.然而,对于具有异构拥塞控制的因特网的性能和稳定性研究的工作很少.一个根本原因是缺乏不同TCP算法的部署信息.该项目的目标是:
Run Code Online (Sandbox Code Playgroud)1) develop tools for identifying the TCP algorithms in the Internet, 2) conduct large-scale TCP-algorithm measurements in the Internet.
还有更多的拥塞控制算法比你在这里提到的要多,在我的脑海中,列表包括:FAST、Scalable、HSTCP、HTCP、Bic、Cubic、Veno、Vegas。
由于实际实现中的错误修复,它们也存在细微的变化,我猜想不同操作系统中的实现的行为也略有不同。
但是,如果我需要尝试提出一个想法,那就是估计连接的 RTT,您可以尝试查看第三个和第四个数据包之间花费的时间,因为第一个和第二个数据包可能被污染通过沿途的 ARP 和其他发现算法。
在对 RTT 进行估算后,您可以尝试不断完善它,但我不太确定如何做到这一点。但您不需要该程序的完整规范,只需想法:-)
计算出 RTT 后,您可以尝试将数据包放入 RTT bin 中,并计算每个 bin 中正在传输的数据包的数量。这样,您将能够“绘制”estimated-cwnd(bin 中的数据包数量)到时间并在那里尝试一些模式匹配。
另一种方法是沿着跟踪并尝试在您的头脑中“运行”不同的拥塞控制算法,并查看任何点的决策是否与您将做出的决策相匹配。这将需要一些宽大和准确的间隔。
这听起来确实是一项有趣且具有挑战性的任务!
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |