网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

动态超时计时器的计算算法

更新时间:2026年03月27日   作者:spoto   标签(Tag):
先决条件:计算机网络知识 | TCP定时器 计算过程超时计时器(TOT)在传输层,情况相当复杂,因为传播延迟并不是恒定的,路径可能会不断发生变化,而网络流量也是动态变化的。因此,在TCP中无法使用静态的TOT算法。此外,反复重传相同的数据包可能会导致拥塞现象。为了解决这个问题,我们需要一种能够适应往返时间变化的动态TOT算法。动态TOT计算的算法:
  1. 基本算法
  2. 雅各布森算法
  3. 卡恩的修改/调整
  4. 基本算法——

    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 
    
    例如——设 PRTT1 = 10毫秒,α = 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. Jacobson算法 –

    与基本算法相比,该算法能更直观地计算出TOT值。
    We assume initial round trip time i.e. PRTT.
    PRTTn+1 = α * PRTTn + (1 - α) * ARTn 
    PDn+1 = α × PDn + (1 – α) × ADn 
    where ADn = |PRTTn – ARTTn|
    AD = Actual deviation
    PD = predicted deviation
    On sending out each packet, TOT = (4 * PD) + PRTT。 
    
    示例 –
    第1轮迭代
    Given α = 0.5, PRTT1 = 10ms, PD1 = 5ms and ARTT1 = 20ms
    TOT = (4 * 5) + 10 = 30ms
    AD1 = |10 - 20| = 10ms
    
    第二次迭代
    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
    
    第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.
    
    Basic和Jacobson算法存在的问题在这两个例子中,都是如此。PRTTn+1 = α * PRTTn + (1 - α) * ARTTn也就是说,两者都依赖于之前的ARTT值。但是,如果初始的超时计时器超时了,那么接下来会选择哪个TOT呢?因为确认消息的发送会被延迟,也就是说,在超时之后才会收到确认消息。因此,此时ARTT已经不可用。

    3. Karn的修改方式 –

    每当计时器超时时,不要使用Basic算法或Jacobson算法,因为此时无法使用ARTT。相反,当计时器超时且需要重新发送数据时,应将该超时时间加倍。GATE | Gate IT 2007 | 问题13
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料