虛擬網絡運維----基於wireshark報文分析快速過濾(tcp,icmp,http)報文時延

虛擬網絡運維----基於wireshark報文分析快速過濾(tcp,icmp,http)報文時延

前言

在網絡運維中,在報文分析時,時延類問題是比較常見的問題場景,如何快速定位到高時延的報文就會比較有用;這裏簡單介紹一下基於wireshark快速過濾tcp、http、icmp協議報文的高時延報文;

文章原創輸出,請認準作者[[海淵_haiyuan]],感謝;

tcp協議高時延報文定位

在過濾tcp協議報文的高時延報文時,就不得不提到兩個字段:

Time since first frame in this TCP stream     # 自此TCP流中第一幀以來的時間,tcp.time_relative
Time since previous frame in this TCP stream  # 距此TCP流中的上一幀的時間,tcp.time_delta

如下圖所示:

可能部分wireshark 展開tcp協議後無法看到這兩個字段;是需要在首選項配置時,進行一下配置,需要勾選“Calculate conversation timestamps”;如果是windows平臺下,支持中文的話,就是首選項;

勾選該字段後,即可在tcp協議層看到該字段;

如前面所講,這兩個字段分配代表一條tcp流中,該幀報文和上一幀報文的時間間隔;該幀報文和所在tcp流的第一幀報文的時間間隔;也就是說這兩個字段是代表是一個相對的時間差;

取值來自wireshark中Time那一列,由該列中的時間戳的值相減得到,有關該列的詳細說明可見我的其他文檔有說明;這裏需要提醒的一點是time這列的值,這個時間戳是取值與OS 系統的當前時間,所以在多個節點抓包分析時延時,由於每個機器的OS時間會存在偏差,或大或小,分析時需要將這個因素考量進去,不然會對時延的分析產生極大的干擾,這一點本人曾經喫過虧;

當時是一個高時延的場景,兩臺物理機之間的復現問題時延是在十幾秒;而兩臺機器的OS時間又相差10s左右;導致抓包分析時,從報文計算的時延只有幾秒,而客戶端的請求統計卻有十幾秒;導致沒有通過報文精準計算出高時延的鏈路段,走了很多彎路;

應用爲列,快速過濾較大時延:

選中字段“Time since previous frame in this TCP stream”,右鍵選擇“Apply as Column”應用爲列;


然後點擊wireshark 列名,wireshark工具就會自動進行從小到大的排序,再點擊一下就是從大到小的排序:

這樣就可以快速看到高時延的報文,然後右鍵追蹤流即可詳細查看該數據流的情況;

過濾器表達式篩選高時延報文:

可以在wireshark官網查看相關字段對應的wireshark過濾器名稱,

https://www.wireshark.org/docs/dfref/t/tcp.html

或者直接選擇對應字段右鍵選擇“Apply as Filter” 或 “Prepare as Filter” 以及後面的各種條件;


實際運維中,常用的場景時,過濾ip爲192.168.1.121,tcp協議,時延大於1s 的報文,過濾表達式即爲:

ip.addr == 192.168.1.121 and tcp and tcp.time_delta >= 1

http協議高時延報文定位

http協議是基於tcp協議的7層應用層協議,所以前面所有的tcp報文時延分析同樣適用;

不過對於http請求來說,實際場景中也是需要只分析http層的時延,即http request 報文 和 http response 報文的時延計算;

這是由於,很多http的 request 和 response 報文中,會有tcp ack 確認報文、tcp psh數據傳輸報文;

以下圖爲例:

如果只需要計算http request 和 http response 的時延,即 frame 532 time - frame 526 纔是這次http response的時延;

實際 http 協議中也存在記錄時延的字段,字段爲:

Time since request		# 該字段只在http response報文中有;記錄這次response的時延;


同理可以將該字段應用爲列或直接在過濾器中使用:

例如:

ip.addr == 192.168.1.121 and  http.response.code == 200 and http.time > 0.5

icmp協議高時延報文

icmp 作爲在運維中使用最高頻的協議之一,在測試網絡連通性等場景下,使用及其豐富;關於快速定位icmp協議高時延報文和前面的tcp、http協議同樣很重要;

在icmp reply 報文中,一樣存在字段記錄icmp協議 response time;

Response time 		# icmp 協議響應報文,注意取值對應單位,注意單位

同前面描述的類似,應用爲列,或 過濾器中過濾使用:

icmp.resptime > 3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章