TCP超時重傳時間的選擇


一---導讀

  TCP超時重傳時間的選擇是計算機網絡中較復雜的問題之一,但幸好前輩們都把路鋪好了,我們只需要學習並且遵循這些規則,有能力的話去進一步改正。

 

二---必知的一些專業術語

A--RTT( round-trip time)往返時延。代表TCP發送方從發送報文段開始,到接收到接收方發送的確認報文段的這段時間.

 

B--RTO(Retransmissinon Time -out)超時重傳時間。

 

三---重傳時間的公式和選擇

思考這樣兩個問題,如果超時重傳時間RTO設置的比往返時間RTT還要小,那么在發送方還沒收到確認之前,該數據報文段發生了不必要的重傳。多此一舉。

如果超時重傳時間RTO設置的比往返時延RTT大很多,那么網絡空閑的時間就會較大(因為在重傳時間內,不能進行其它報文段的發送),減低了網絡傳輸的效率。

 

通過以上兩個問題總結我們是否可以得出這樣的結論:超時重傳時間RTO的值是不是設置的比第一次往返時間RTT0的值略大就行了呢?答案是否定的,網絡速率千變萬化,受很多因素(如路由器,帶寬)的影響,可能第一次RTT0是一個值,第二次RTT1的值又是另外一個值,那么如果把RTO的值固定寫死那就行不通。

上圖表面如果RTO固定的話會造成“TCP數據報文段1”發生不必要的重傳

第二次的RTT1要大於第一次的RTT0,於是第一次的RT0的選擇值在這里就不適合了。針對這一個復雜的問題,我們不能用某次測量的值來計算超時重傳時間RTO。這時就需要借鑒中華名族的優秀傳統-折中。利用每次測量的RTT樣本,然后取一個加權平均值RTTs。
新的加權平均往返時間RTTs = (1 - a)x 舊的RTTs + a x 新的RTT樣本(其中0 < a < 1)
如果 a很小,趨近於0,說明新的RTT樣本作用不大。
如果 a 很大,趨近於1,則說明舊的RTTs對新的RTTs的影響很小。

現在通用的a的取值為1/8,即0.125。
顯然,新的RT0的值應該要略大於RTTs的值。
RTO = RTTs + 4 x RTTd(RTTd為RTT偏差的加權平均)

RTTd1 = RTT1 / 2
新的RTTd = (1-B) x 舊的RTTd+B x |RTTs-新的RTT樣本| 。  (其中0< B<1)
B的建議取值為1/4,即0.25

 從上面可以看出,新的RTT樣本的計算正確與否特別重要。

RTT的測量容易出現下面圖示的問題

 

 解決上面問題的辦法是:報文段每重傳一次,就增大RTO的值,典型的做法是把新的RTO的值取值為舊RTO的兩倍。

 

四---習題與總結

 

超時重傳時間的問題比較復雜,但重要的是理解並記憶兩個公式,最后,以一個練習來結束總結本文,如下圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM