日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP中的RTT和RTO

發布時間:2024/4/18 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP中的RTT和RTO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、RTT和RTO的概念

TCP作為一個面向連接的、可靠的傳輸協議,內部實現了一個重傳計時器來保證數據能傳輸到對方。每發送一個數據包,就給這個數據設置一個重傳計時器。如果在計時器超時之前收到了針對這個數據包的ack,就取消這個計時器。如果沒有收到,則開始發起重傳。計時器超時的時間被稱為RTO,這個時間的確定取決于RTT。

關于兩者詳細的解釋:

  • RTT(Round Trip Time):一個連接的往返時間,即數據發送時刻到接收到確認的時刻的差值;
  • RTO(Retransmission Time Out):重傳超時時間,即從數據發送時刻算起,超過這個時間便執行重傳。

關于RTT和RTO值的確定一直以來都是值得討論的地方,如何讓RTO能適應網絡變化。

二、RTT的測量

每發送一個分組,TCP都會進行RTT采樣,這個采樣并不會每一個數據包都采樣,同一時刻發送的數據包中,只會針對一個數據包采樣,這個采樣數據被記為sampleRTT,用它來代表所有的RTT。

采樣的方法一般有兩種:

  • TCP Timestamp選項:在TCP選項中添加時間戳選項,發送數據包的時候記錄下時間,收到數據包的時候計算當前時間和時間戳的差值就能得到RTT。這個方法簡單并且準確,但是需要發送段和接收端都支持這個選項。
  • 重傳隊列中數據包的TCP控制塊:每個數據包第一次發送出去后都會放到重傳隊列中,數據包中的TCP控制塊包含著一個變量,tcp_skb_cb->when,記錄了該數據包的第一次發送時間。如果沒有時間戳選項,那么RTT就等于當前時間和when的差值。
  • linux內核中,更新rtt的函數為tcp_ack_update_rtt:

    三、RTO的計算

    3.1 經典方法

    為了避免單次RTT波動,計算RTO時新引入了變量SRTT,表示更加平滑的RTT數值,它的計算方法:

    ?

    1

    SRTT = x(SRTT) + (1 - x)RTT;

    x被稱為平滑因子,一般建議設置在[0.8, 0.9],意思是SRTT值百分之八十來自于之前的值,百分之二十來自于當前值。然后計算RTO的方法為:

    ?

    1

    RTO = min(ubound, max(lbound, y(SRTT)));

    y是時延離散因子,推薦值為[1.3, 2.0],ubound是RTO的上邊界,lbound是RTO的下邊界。

    算法的缺點

    在RTT波動較大時,RTO不能明顯適應網絡變化。

    3.2 標準方法

    標準方法引入了平均偏差的概念,它類似于統計學里面的方差,但是因為方差的計算過程代價較大,對于快速TCP來說不太適合。假設rtt的值為M,RTO的計算方式為:

    ?

    1

    2

    3

    srtt = (1 - g)srtt + g(M);

    rttval = (1 - h)rttval + h(|M - rttval|);

    RTO = srtt + 4(rttval);

    其中g設置為1/8,h設置為1/4,對srtt而言,它有1/8取決于當前值,7/8取決于現有值。當RTT變化時,偏差增量越大,RTO的增量也越大。

    關于計算RTT和RTO的算法,還有很多種,歷史上針對這個的探討從未停止過。

    比較出名的擁塞算法還有谷歌的bbr算法,高版本的linux內核已經合入了bbr算法作為擁塞控制算法。

    四、其他

    4.1 TCP Timestamps選項

    時間戳選項的作用是為了方便計算RTT,每發出一個數據包,就記錄下發送時間,收到數據包時就能準確的獲知到數據包往返時間了。

    通過TCPDUMP抓包很容易就能看到Timestamps選項:

    總結

    以上是生活随笔為你收集整理的TCP中的RTT和RTO的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。