在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RTT是什么?對TCP中RTT時延的理解

冬至子 ? 來源:牧羊人的方向 ? 作者:大唐小少 ? 2023-10-09 16:24 ? 次閱讀

最近服務器環境部署了tcprtt網絡時延監控,發現不同服務器不同節點之間的RTT時延表象非常奇怪,無法準確的判斷服務器的網絡情況。因此需要弄清楚什么是RTT,以及能否作為服務器網絡性能的檢測指標。

1、RTT是什么?

TCP中的 RTT指的是“往返時延”(Round-Trip Time) ,即從發送方發送數據開始,到發送方接收到來自接收方的確認消息所經過的時間。RTT時延通常由三部分決定: 鏈路的傳播時間、末端系統的處理時間、路由器等網絡中間節點的緩存和排隊時間 。正常情況下報文的傳輸時間和在應用處理時間相對固定,在網絡擁堵情況下會出現RTT時延的波動。

圖片

RTT是衡量網絡傳輸性能的重要指標之一,能夠反映出數據在網絡中傳輸的速度和穩定性。通常情況下,RTT越短,網絡傳輸的速度就越快,反之則越慢。因此, 通過監測TCP中的RTT時延,可以初步判斷網絡的性能如何。 但需要注意的是,RTT時延只是一個指標,要全面評估網絡性能還需要結合其他指標進行綜合分析。

1.1 RTT和RTO關系

說起RTT就要提到RTO(Retransmission Timeout),TCP協議在握手過程中會啟動一個定時器,如果在定時器時間內沒有收到,則會進行重傳,這個 重傳的超時時間稱為RTO 。RTT和RTO的關系是:由于網絡的不確定性,每個RTT都是動態變化的,RTO也會動態變化。

當 RTO < RTT 時, 將會觸發大量的重傳, 當 RTO > RTT 時候, 如果頻繁出現丟包, 重傳不及時, 又會造成網絡的反應慢, 最好的結果是 RTO 略大于 RTT.

圖片

1.2 RTT和Ping區別

Ping是使用 ICMP傳輸協議 ,可以用來評估RTT時延和網絡性能的好壞。相比之下, RTT則是在應用層 (OSI/ISO的第7層)進行的網絡時延測量,包括更高級別的協議和應用程序引起的額外處理時延。

1.3 RTT和時延的區別

網絡時延與RTT密切相關,但又不同。延遲是數據包從發送端點傳輸到接收端點所需的時間(僅一次行程)。許多因素可能會影響此路徑,包括網絡鏈路性能情況、網絡擁堵情況還有交換機層的緩存和隊列等。 ** RTT除了網絡傳輸的時延,還有末端處理的時延** ,因此網絡時延并不一定完全等于RTT的一半。因此我們 可以解釋在部分主備節點的數據庫中,主節點到備節點的RTT時延表現正常,低于1ms,但是備節點到主節點之間的RTT時延超過10ms ,這中間很大一部分原因是因為備節點到主節點發送數據庫的時候,主節點處理耗費了大部分時間。

2、RTT的算法和測量方法

2.1 RTT經典算法 [RFC793]

該算法稱為加權移動平均算法Exponential weighted moving average,過程如下:

1) 首先,先采樣RTT,記下最近幾次的RTT值。

2)然后做平滑計算SRTT(Smoothed RTT),公式為:

SRTT=(α?SRTT)+((1?α)?RTT)
其中的α取值在0.8到0.9之間

3)開始計算RTO。公式如下:

RTO=min[UBOUND,max[LBOUND,(β?SRTT)]]
UBOUND 是最大的 timeout 時間,上限值;
LBOUND 是最小的 timeout 時間,下限值;
β值一般在1.32.0之間。

該算法的問題在于重傳時,是用重傳的時間還是第一次發數據的時間和ACK回來的時間計算RTT樣本值,另外,delay ack的存在也讓rtt不能精確測量。

2.2 RTT標準算法(Jacobson / Karels算法)

該算法[ RFC6298 ]特點是引入了最新的RTT的采樣rtts和平滑過的srtt的差值做參數來計算。 公式如下:

圖片

1)計算平滑RTT

srtt=srtt+α(rttssrtt)

2)計算平滑RTT和真實的差距(加權移動平均)

rttvar=(1?β)?rttvar+β?(|rtts?srtt|)

3)計算RTO

rto=u?srtt+??rttvar

4)考慮到時鐘粒度,給RTO設置一個下界。

rto=max(u?srtt+max(G,??rttvar),1000)

這里G為計時器粒度,1000ms為整個RTO的下屆值。因此RTO至少為 1s。在Linux下,α=0.125,β=0.25,μ=1,?=4。

5)在首個SYN交換前,TCP無法設置RTO初始值。根據[RFC6298],RTO初始值為1s,而初始SYN報文段采用的超時間隔為3s。當計算出首個RTT測量結果rtts,則按如下方法進行初始化:

srtt=rttsrttvar=rtts/2
2.3 RTT測量方法

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

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

linux內核中,更新rtt的函數為tcp_ack_update_rtt:

圖片

3、RTT網絡性能檢測和優化

3.1 RTT時延檢測方法

1)使用ping命令測量RTT是最常用的方法

Ping命令將ICMP協議回顯請求數據包發送到目的地,然后報告接收響應信號所需的時間(以毫秒為單位)。

[root@tango-rac01 ~]# ping -c 20 -i 1 www.csdn.net
PING r3lzca9monbh9slnohm4wwh32vxfadus.yundunwaf4.com (60.205.172.2) 56(84) bytes of data.
--- r3lzca9monbh9slnohm4wwh32vxfadus.yundunwaf4.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 20099ms
rtt min/avg/max/mdev = 45.053/62.665/163.425/29.858 ms

2)時延 bcc-tools工具tcprtt (內核版本為4.1以上)

tcprtt -i 1 -d 10 -A 192.168.1.100 -P 80
	Tracing TCP RTT... Hit Ctrl-C to end.
	     msecs               : count     distribution
	         0 - > 1          : 4        |                                        |
	         2 - > 3          : 0        |                                        |
	         4 - > 7          : 1055     |****************************************|
	         8 - > 15         : 26       |                                        |
	        16 - > 31         : 0        |                                        |
	        32 - > 63         : 0        |                                        |
	        64 - > 127        : 18       |                                        |
	       128 - > 255        : 14       |                                        |
	       256 - > 511        : 14       |                                        |
	       512 - > 1023       : 12       |                                        |

3)使用ss -ti命令

[root@tango-rac01 tools]# ss -ti
State       Recv-Q Send-Q                                      Local Address:Port                                                       Peer Address:Port                
ESTAB       0      0                                         192.168.112.135:ssh                                                       192.168.112.1:56505                
         cubic wscale:8,9 rto:241 rtt:40.225/0.997 ato:74 mss:1448 cwnd:10 bytes_acked:152109 bytes_received:12047 segs_out:733 segs_in:816 send 2.9Mbps lastsnd:41 lastrcv:137 pacing_rate 5.8Mbps rcv_rtt:28 rcv_space:28960

其中有rtt:40.225/0.997數據,表示RTT均值和中位數

3.2 RTT時延優化

1)RTT時延波動的原因

前文提到RTT時延包括網絡傳輸時延和末端處理時延,末端處理時延相對比較固定,因此RTT波動很大可能和以下因素有關:

  • 網絡擁塞 :當網絡擁塞時,數據包需要在網絡中等待更長時間,從而導致 RTT 增加。
  • 網絡質量 :網絡質量差、丟包率高等問題也會導致 RTT 波動較大。
  • 網絡設備問題 :網絡設備的故障、配置錯誤等也可能導致 RTT 波動較大。

2) 網絡擁塞的檢測方法

網絡擁塞是指網絡中的數據傳輸量超過了網絡鏈路或節點的處理能力,導致網絡性能下降或出現數據丟失等問題。除了常見的傳輸延遲、丟包率等指標外,還有以下幾種網絡擁塞的檢測手段:

  • 流量分析:通過對網絡流量的監測和分析,找出網絡中的高流量區域,從而判斷哪些地方可能存在擁塞。
  • 響應時間監測:通過測量網絡設備響應時間,判斷網絡是否處于擁塞狀態。
  • 帶寬占用監測:通過對網絡帶寬的監測和分析,找出網絡中的高帶寬占用區域,從而判斷哪些地方可能存在擁塞。
  • 包延遲監測:通過測量數據包在網絡中傳輸所需的時間,判斷網絡是否處于擁塞狀態。
  • 拓撲分析:通過分析網絡拓撲結構,找出網絡中的瓶頸節點和鏈路,從而判斷哪些地方可能存在擁塞。

3)網絡抖動檢測方法

網絡抖動是指網絡通信中出現的延遲或者丟包現象,導致通信不穩定。要檢測網絡抖動,可以使用以下方法:

  • ping命令 :ping命令可以測試網絡是否能夠正常通信,如果出現延遲或者丟包現象,就說明存在網絡抖動。
  • tracert命令 :tracert命令可以追蹤網絡通信的路徑,如果在通信過程中出現延遲或者丟包現象,就說明存在網絡抖動。
  • 網絡診斷工具 :網絡診斷工具可以幫助檢測網絡抖動,并提供詳細的網絡狀態信息,幫助用戶更好地理解網絡通信過程中出現的問題。
  • 網絡質量監測系統:網絡質量監測系統可以監測網絡質量,包括延遲、丟包等指標,并提供實時報警和分析報告,幫助用戶及時發現和解決網絡抖動問題。

4、總結

RTT作為網絡時延的檢測工具,是 在應用層進行的網絡性能檢測 ,包括了網絡傳輸的時延和末端響應的時延。在實際分析過程中,主機上單個服務的RTT時延較長并不能說明服務器之間的物理網絡異常,需要更多的指標數據進行分析,比如相同主機上的其它服務的RTT時延、ping包時延等。

圖片

如上圖所示的主機1中的服務1和主機2中的服務2和服務3配置了RTT時延監控,發現服務器1到服務2的RTT時延明顯差于服務1到服務3的RTT時延。這個時候就可以辨別出,如果是網絡層的性能變差,兩個RTT檢測的值表現上會相似,但實際上卻是相反的,只能 說明服務2在響應服務1的請求處理時間比服務3長

因此在實際的監控配置過程中,RTT時延只能作為網絡性能監控的一個參考指標,不排除會出現誤判的情景,需要和其它主機和服務橫向對比去分析判斷。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 交換機
    +關注

    關注

    21

    文章

    2640

    瀏覽量

    99640
  • ICMP
    +關注

    關注

    0

    文章

    52

    瀏覽量

    14931
  • RTO
    RTO
    +關注

    關注

    0

    文章

    16

    瀏覽量

    11176
  • RTT
    RTT
    +關注

    關注

    0

    文章

    65

    瀏覽量

    17130
  • TCP通信
    +關注

    關注

    0

    文章

    146

    瀏覽量

    4223
收藏 人收藏

    評論

    相關推薦

    【英飛凌PSoC 6】新建RTT工程

    介紹英飛凌PSoC 6 RTT開發板環境創建
    的頭像 發表于 04-24 15:29 ?1945次閱讀
    【英飛凌PSoC 6】新建<b class='flag-5'>RTT</b>工程

    Jlink_RTT方式查看log#

    RTTJlink
    橙群微電子
    發布于 :2023年03月07日 09:44:38

    為什么要使用RTTRTT怎么用?

    RTT是什么?為什么要使用RTTRTT怎么用?
    發表于 02-16 06:17

    如何在Embedded Studio中使用RTT

    。要使用RTT函數,需要將完整的RTT支持包添加到Embedded Studio Project。我們以一個Embedded Studio例程來介紹如何將RTT支持包添加到項目中。
    發表于 02-17 14:25

    一種基于RTT公平性的TCP慢啟動算法

    分析標準慢啟動算法應用于包含GEO 衛星鏈路的網絡時存在的問題,提出一種基于RTT 公平性的TCP 慢啟動改進算法。改進算法采用大初始窗口機制,慢啟動初期窗口保持指數增長,慢
    發表于 03-23 08:54 ?17次下載

    TD-SCDMA RTT的空間接口技術綜述

    TD-SCDMA RTT的空間接口技術綜述:
    發表于 05-21 13:22 ?20次下載
    TD-SCDMA <b class='flag-5'>RTT</b>的空間接口技術綜述

    MM32F013x——RTT使用技巧

    SEGGER的實時傳輸(Real Time Transfer, RTT)是嵌入式應用中用戶I/O交互的一種新技術。J-Link RTT Viewer是在調試主機上使用RTT功能的Win...
    發表于 01-25 18:34 ?4次下載
    MM32F013x——<b class='flag-5'>RTT</b>使用技巧

    例程如何使用RTT Viewer

    例程編譯后,會生成一個xx.map文件,位于工程目錄下的Debug目錄下,在這個xx.map文件搜索關鍵字”_SEGGER_RTT”會找到一個位于RAM區域的地址,比如下圖0x20000934這個地址就是我們定位到的地址,把它復制一下。
    的頭像 發表于 06-08 11:12 ?2616次閱讀

    例程如何使用RTT Viewe

    對于RA系列的MCU,瑞薩都提供有相對應的例程包,在每個例程包里面都會有一些可以輸出到J-Link RTT Viewer的調試信息,這些信息可以很方便的告訴開發者當前的運行狀態、變量值,有些例程甚至可以實現信息交互,如同一條虛擬串口一般方便。那么客戶如何使用這個調試好幫
    的頭像 發表于 07-28 09:59 ?1929次閱讀

    例程如何使用RTT Viewer

    對于RA系列的MCU,瑞薩都提供有相對應的例程包,在每個例程包里面都會有一些可以輸出到J-Link RTT Viewer的調試信息,這些信息可以很方便的告訴開發者當前的運行狀態、變量值,有些例程甚至可以實現信息交互,如同一條虛擬串口一般方便。那么客戶如何使用這個調試好幫
    的頭像 發表于 07-28 10:02 ?2028次閱讀

    Jlink調試打印工具RTT

    RTT支持兩個方向的多個通道,上到主機,下到目標,它可以用于不同的目的,為用戶提供盡可能多的自由。默認實現每個方向使用一個通道,用戶可在在調試終端輸入和輸出。
    發表于 04-06 09:22 ?0次下載

    投稿 | 基于IAR搭建RA MCU的RTT打印輸出

    基于IAR搭建RA MCU的RTT打印輸出
    的頭像 發表于 11-04 10:40 ?1231次閱讀
    投稿 | 基于IAR搭建RA MCU的<b class='flag-5'>RTT</b>打印輸出

    基于IAR搭建RA MCU串口與RTT Viewer打印(上)

    基于IAR搭建RA MCU串口與RTT Viewer打印
    的頭像 發表于 08-14 09:49 ?827次閱讀
    基于IAR搭建RA MCU串口與<b class='flag-5'>RTT</b> Viewer打印(上)

    基于IAR搭建RA MCU串口與RTT Viewer打印(下)

    基于IAR搭建RA MCU串口與RTT Viewer打印
    的頭像 發表于 08-14 09:50 ?858次閱讀
    基于IAR搭建RA MCU串口與<b class='flag-5'>RTT</b> Viewer打印(下)

    RTT_Draco的外置uart接口(TXD,RXD)怎么配置和使用呢?

    RTT_Draco的外置uart接口(TXD,RXD)怎么配置和使用呢? RT-Thread的RTT_Draco是一款高性能的MCU芯片,它提供了外置UART接口(TXD,RXD)用于與外部設備進行
    的頭像 發表于 01-16 17:11 ?1058次閱讀
    主站蜘蛛池模板: 午夜国产大片免费观看| 在线色片| 国产欧美在线一区二区三区| 高清国产下药迷倒美女| 午夜视频在线观看国产www| 免费看片免费播放| 国产真实乱xxxav| aaaaa特级毛片| 日本三级三级三级免费看| 狠狠色婷婷丁香综合久久韩国| 96一级毛片| 黄色网日本| 男男小说高h| 色视频2| 亚洲成人高清在线| 日韩欧美国产电影| 国模私拍在线观看| 奇米影视999| 亚洲视频一区在线观看| 亚洲成人黄色网址| 免费观看的黄色网址| 又黄又爽的成人免费网站 | 免费看啪啪网站| 资源新版在线天堂| 日本免费色网站| 手机精品视频在线观看免费| h在线观看视频| 特级黄毛片| 高清配种视频xxxxx| 酒色成人网| 美女网站在线观看视频18| 午夜精品国产| 99久久精品费精品国产| 国产床戏无遮掩视频播放| 免费观看视频高清www| 日本四虎影院| 黄网在线观看免费| 色丁香影院| 天天做天天爱天天操| 91视频观看免费| 九色婷婷|