📜  动态超时定时器计算算法

📅  最后修改于: 2021-09-28 06:32:44             🧑  作者: Mango

先决条件——计算机网络| TCP定时器
在传输层计算超时计时器 (TOT)很棘手,因为传播延迟不是恒定的,即路径可能不断变化并且流量是动态的。因此,静态 TOT 不能用于 TCP。并且不必要地多次重传同一个数据包可能会导致拥塞。
解决方案是我们需要动态 TOT,它可以根据往返时间 (RTT) 的变化进行调整。

动态 TOT 计算算法:

  1. 基本算法
  2. 雅各布森算法
  3. 卡恩的修改

    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