Karn算法

来源:互联网 发布:远程桌面默认端口号 编辑:程序博客网 时间:2024/04/30 19:20

        Karn算法的提出是为了更好的计算RTO,设想一下情况:发送端发出一个报文段,并且设定的超时时间到了,还没有收到确认,于是重传报文段。经过了一段时间后,收到了报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?由于重传的报文段与原先的报文段完全一样,因此源主机在收到确认后就无法做出正确的判断,而正确的判断对确定平滑的往返时间(SRTT)的关系很大。

        根据以上所述,Karn提出了一个算法:SRTT时,只要报文段重传了,就不采用其往返时间样本。

       但是这有引起新的问题。设想这样的情况:报文段的时延突然增大了很多。因此在原来的重传时间内不会收到确认报文段。于是就重传报文段。但是根据Karn算法,不考虑重传的报文段的RTT样本。因此,超市重传时间就无法更新。

       因此考虑对Karn算法进行修正。方法是:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取新的重传时间为2倍的就得重传时间。当不再发生报文段的重传时,才根据正常的计算方法计算RTO。

原创粉丝点击