我正在测试一个GNU Radio程序,它可以通过无线链路隧道传输TCP流量。我们在测试中遇到了一些奇怪的结果,在寻找罪魁祸首时,我对不一致的延迟感到好奇。
不一致的延迟如何影响TCP应用程序?通过不一致,我的意思是连接上的ACK的广泛不同的RTT。有一段时间ACks似乎以正常速度出现,然后它们消失了,我们进行了重传,然后是'延迟'确认。
例如,假设收到的前几个ACK具有类似的RTT。当前一个ACK的RTT的两倍没有收到下一个ACK时会发生什么?无论出现什么问题,我都会在等待很长时间后看到很多重传。
现在,更具体地说,快速和慢速之间反弹的ACK的RTT如何影响TCP连接?
话虽如此,有没有办法调整IP堆栈以更好地处理这种环境?
答案 0 :(得分:2)
TCP维护一个平滑的RTT(SRTT)来告诉它干预网络有多快,即它可以传输多快。如果SRTT上升,TCP将减慢速度。如果SRTT发生故障,TCP将加速。如果实际 RTT剧烈上下,由于平滑,TCP可能无法快速反应,并且传输速度太快,这会导致数据包丢失,进而导致重传,从而浪费带宽丢失的数据包使用。 RTT平滑是通过指数衰减完成的,增益为I认为0.2,因此在计算新的SRTT值时,旧的SRTT值是当前RTT权重的四倍。