【计算机网络自顶向下方法】往返时间评估(EstimatedRTT和DevRTT)和超时间隔(TimeoutInterval )

往返时间评估

        超时间隔必须大于该连接的往返时间(RTT),即从一个报文段发出到它被确认的时间,否则会造成不必要的重传。报文段的样本RTT(表示为SampleRTT)就是从某报文段被发出(即交给IP)到对该报文段的确认被收到之间的时间量。大多数TCP的实现仅在某个时刻做一次SampleRTT测量,而不是为每个发送的报文段测量一个SampleRTT。也即是说,在任意时刻,仅为一个已发送的但目前尚未被确认的报文段估计SampleRTT,从而产生一个接近每个RTT的新SampleRTT值。
另外,TCP决不会为已被重传的报文段计算SampleRTT;它仅为传输一次的报文段测量SampleRTT。

        由于路由器的拥塞和端系统负载的变化,这些报文段的SampleRTT值会随之波动,由于这种波动,任何给定的SampleRTT值也许都是非典型的。因此,为了估计一个典型的RTT,自然要采取某种对SampleRTT取平均的办法。TCP维持一个SampleRTT均值称为EstimatedRTT。一旦获得一个新的SampleRTT值,TCP会根据下面公式来更新EstimatedRTT

        EstimatedRTT = (1-α) * EstimatedRTT + α * SampleRTT ( α推荐值是α=0.125)
公式变为
        EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT
注意:EstimatedRTT是SampleRTT的一个加权平均值

RTT偏差值DevRTT

        除了估算RTT外,测量RTT的变化也是有价值的,RFC 6298定义了RTT偏差值DevRTT,用于估算SampleRTT一般会偏离EstimatedRTT的程度:
        DevRTT = (1-β) * DevRTT + β * |SampleRTT - EstimatedRTT| (β推荐值为0.25)
        

设置和管理重传超时间隔

        超时间隔应大于EstimatedRTT,否则,将造成不必要的重传。但是超时间隔也不应该比EstimatedRTT大太多,否则当报文段丢失时,TCP不能很快地重传该报文段,导致数据传输延时大。因此要求超时间隔设置为EstimatedRTT加上一定余量。当SampleRTT值波动较大时,这个余量应该大些,当波动较小时,这个余量应该小些。因此,DevRTT值应该在这里发挥作用。
        TimeoutInterval = EstimatedRTT + 4 * DevRTT
推荐初始TimeoutInterval为1秒,同时,当出现超时后,TimeoutInterval值将加倍,以免即将被确认的后续报文段过早出现超时。然而,只要收到报文段并更新EstimatedRTT,就是用以上公式再次计算TimeoutInterval       

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wellnw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值