使用mtr排查伺服器網路連通性

AR414發表於2020-07-31

問題

這兩天ffmpeg推流的同事反應伺服器推送視訊流到A直播雲的直播播放某個時間段經常卡頓

排查

mtr的使用在末尾

  1. 同一臺伺服器將視訊流分別推送到B雲直播A直播雲對比播放流暢度,B直播雲播放流暢,判斷:問題不在推流伺服器

  2. 將問題反饋給A直播雲,A直播雲答覆:推送不穩定

  3. 排查對比推流伺服器A直播雲B直播雲的網路聯通性

    • A直播雲 mtr a.ar414.com
      ar414-mtr-b
    • B直播雲mtr b.ar414.com
      ar414-mtr-a
  4. 排查結論

    • 推流伺服器A直播雲的鏈路異常,鏈路繞到國外才回國,丟包率與延遲率較高
    • 推流伺服器B直播雲的鏈路正常,丟包率與延遲率總體較低

解決

將mtr排查報告反饋至A直播雲讓其調整路由鏈路

mtr

網路聯通性判斷工具,它可以結合 ping nslookup tracert 來判斷網路的相關特性,這個命令就是 mtr。mtr 全稱 my traceroute,是一個把 ping 和 traceroute 合併到一個程式的網路診斷工具

安裝

  1. Linux
    # Ubuntu
    $ apt install mtr
    # CentOS
    $ yum install mtr
  2. Windows
    免安裝包:github.com/oott123/WinMTR/releases

使用

根據實際業務進行測試 比如我這邊測的是推流則需要指定包大小及tcp協議

$ mtr ar414.com

ar414-mtr-ar414.com
引數說明:

  • Host:鏈路IP地址
  • Loss:丟包率
  • Snt:已傳送資料包數
  • Last:最後一個包的延時
  • Avg:平均延時
  • Best:最低延時
  • Wrst:最差延時
  • StDev:穩定性

命令選項

  • -r
    • 使用-r:預設向目標地址傳送10個ICMP包 然後直接列印報告
      • 不使用-r:動態執行不斷向目標地址傳送ICMP包
      • -s 指定傳送每個資料包大小(bytes)
  • -c 指定傳送包數量
  • -i 指定傳送資料包的間隔(秒)
  • --tcp 指定傳送tcp包
  • --udp 指定傳送udp包

結果分析

  1. 鏈路分析:

    • 自建機房
    1. 一般情況下前幾跳都是區域網內路由,如果異常則自行排查或上報機房運維
    2. 中間跳數則是中間節點,如果異常則聯絡運營商
    3. 後幾跳則是服務提供商,如果異常聯絡服務提供商
    • 雲伺服器
    1. 前中的鏈路異常則聯絡雲伺服器商,一般提交工單
    2. 後幾跳異常則聯絡服務提供商
  2. 丟包率

  • 還有很多時候問題是在資料包返回途中發生的,資料包可以成功的到達目的主機,但是返回過程中遇到 “困難” 了。所以,當問題發生後,我們通常需要收集反方向的 MTR 報告 結合正反向MRT排查報告進行判斷
  1. 網路延遲
  • 因為是不同的位置,延遲通常會隨著條數的增加而增加。所以,延遲通常取決於節點之間的物理距離和線路質量。
  • 高延遲並不一定意味著當前路由器有問題。延遲很大的原因也有可能是在返回過程中引發的。從這份報告的截圖看不到返回的路徑,返回的路徑可能是完全不同的線路,所以一般需要進行雙向 MTR 測試
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章