先决条件——计算机网络| TCP定时器
在传输层计算超时计时器 (TOT)很棘手,因为传播延迟不是恒定的,即路径可能不断变化并且流量是动态的。因此,静态 TOT 不能用于 TCP。并且不必要地多次重传同一个数据包可能会导致拥塞。
解决方案是我们需要动态 TOT,它可以根据往返时间 (RTT) 的变化进行调整。
动态 TOT 计算算法:
- 基本算法
- 雅各布森算法
- 卡恩的修改
1. 基本算法——
We assume initial round trip time i.e PRTT. On sending out each packet TOT = 2 * PRTT. The next round trip time is calculated using PRTTn+1 = α PRTTn + (1 - α)ARTTn where PRTT = predicted round trip time ARTT = actual round trip time α = smoothing factor such that 0<= α <=1
示例 –让 PRTT 1 = 10ms 和 α = 0.5
TOT = 2 * PRTT1 = 20ms Let ARTT1 = 15ms Then, PRTT2 = (0.5 * 10) + (0.5 * 15) = 12.5ms TOT = 2 * 12.5 = 25ms Let ARTT2 = 20ms PRTT3 = (0.5 * 12.5) + (0.5 * 20) = 16.25ms TOT = 2 * 16.25 = 32.5ms And so on TOT is calculated.
优点 –
- 优于静态 TOT。
- TOT 可灵活适应动态往返时间。
- 它考虑了所有数据包以导出新的 PRTT。
缺点——
- TOT = 2 * PRTT 用于允许返回确认的宽限时间。
- 这是浪费。
2. 雅各布森算法——
比基本算法更直观地计算TOT值。
We assume initial round trip time i.e. PRTT. PRTTn+1 = α PRTTn + (1 - α)ARTTn PDn+1 = α PDn + (1 - α)ADn where ADn = |PRTTn - ARTTn| AD = Actual deviation PD = predicted deviation On sending out each packet, TOT = (4 * PD) + PRTT.
例子 –
Iteration 1 Given α = 0.5, PRTT1 = 10ms, PD1 = 5ms and ARTT1 = 20ms TOT = (4 * 5) + 10 = 30ms AD1 = |10 - 20| = 10ms Iteration 2 PRTT2 = α PRTT1 + (1 - α)ARTT1 = (0.5 * 10) + (0.5 * 20) = 15ms PD2 = α PD1 + (1 - α)AD1 = (0.5 * 5) + (0.5 * 10) = 7.5ms TOT = (4 * 7.5) + 15 = 45ms Given ARTT2 = 30ms AD2 = |15 - 30| = 15ms Iteration 3 PRTT3 = α PRTT2 + (1 - α)ARTT2 = (0.5 * 15) + (0.5 * 30) = 22.5ms PD3 = α PD2 + (1 - α)AD2 = (0.5 * 7.5) + (0.5 * 15) = 11.25ms TOT = (4 * 11.25) + 22.5 = 67.5ms Given ARTT3 = 10ms AD2 = |22.5 - 10| = 12.5ms And so on TOT is calculated.
基本算法和雅各布森算法的问题
在两者中, PRTT n+1 = α PRTT n + (1 – α)ARTT n
即两者都取决于前一段ARTT。但是如果初始超时定时器超时,那么将选择下一个 TOT,因为确认被延迟,即它在超时之后到来,因此 ARTT 不可用。3. 卡恩的修改——
每当定时器超时时,不要应用基本算法或雅各布森算法,因为当定时器超时并进行重传时,ARTT 不可用,而是将超时定时器 (TOT) 加倍。
门|门 IT 2007 |问题 13