程金勝*,孫領(lǐng)兵
(聯(lián)通系統(tǒng)集成有限公司---系統(tǒng)集成部,北京,10033)
Wireshark 是網(wǎng)絡(luò)包分析工具。網(wǎng)絡(luò)包分析工具的主要作用是嘗試捕獲網(wǎng)絡(luò)包, 并嘗試顯示包的盡可能詳細(xì)的情況。就像一個超級細(xì)的過濾網(wǎng),把所有經(jīng)過這個端口的數(shù)據(jù)進(jìn)行分析和歸類,讓你有據(jù)可依,有據(jù)可查。
? 支持UNIX和Windows平臺
? 在接口實時捕捉包
? 能詳細(xì)顯示包的詳細(xì)協(xié)議信息
? 可以打開/保存捕捉的包
? 可以導(dǎo)入導(dǎo)出其他捕捉程序支持的包數(shù)據(jù)格式
? 可以通過多種方式過濾包
? 多種方式查找包
? 通過過濾以多種色彩顯示包
? 創(chuàng)建多種統(tǒng)計分析
2015年X月X日,某公司董事會議進(jìn)行中,突然遠(yuǎn)端的圖像出現(xiàn)了馬賽克,視頻終端(華為 9039S)上出現(xiàn)了丟包的提示圖標(biāo),視頻維護(hù)人員聯(lián)系網(wǎng)絡(luò)維護(hù)人員要求查找原因,但網(wǎng)絡(luò)方面馬上發(fā)了一張網(wǎng)絡(luò)正常的截圖作為證據(jù),說明網(wǎng)絡(luò)無問題,會后雙方圍繞是否網(wǎng)絡(luò)有丟包問題進(jìn)行了激烈的爭論,為了驗證雙方的說法的真實性,視頻維護(hù)人員用wireshark拿到了關(guān)鍵性的證據(jù)。
針對網(wǎng)絡(luò)方面提供的網(wǎng)絡(luò)正常的截圖(圖1),視頻維護(hù)人員沒有盲目的相信,而是在會議結(jié)束后保持網(wǎng)絡(luò)狀態(tài)不變,迅速的搭建環(huán)境,進(jìn)行網(wǎng)絡(luò)抓包分析。
圖1 網(wǎng)絡(luò)正常皀截圖
● 搭建環(huán)境
利用華為視頻終端9039S有兩個LAN端口的特性,筆記本連接LAN2端口,通過telnet登陸終端 ,用戶名/密碼debug/debug。執(zhí)行命令bsp ipmonitor on啟動端口鏡像(將端口2設(shè)置為端口1的鏡像)。
● 開始抓包
啟動wireshark,點(diǎn)擊菜單Capture->Interfaces(圖2)。
圖2 啟動wireshark
在彈出的窗口中:點(diǎn)擊Options,彈出新窗口“Wireshark:Capture Options”(圖3)
圖3 點(diǎn)擊Options
在這個新窗口中:
A. 選擇抓包網(wǎng)口
B. 設(shè)置抓包文件在抓包電腦的存儲路徑和文件名
C. 設(shè)置抓包文件大小(一般視頻抓包文件比較大,推薦按照 100M 進(jìn)行分割,便于文件的傳送和分析)
其他參數(shù)保持默認(rèn),設(shè)置完成后,點(diǎn)擊“Start”按鈕啟動抓包。
注:RTP層端口時在視頻呼叫建立過程中協(xié)商的,如果不是在呼叫建立前就啟動抓包,Wireshark抓不到端口協(xié)商的信令流程,就無法對RTP層進(jìn)行自動解析,需要在Wireshark中手動配置RTP層對應(yīng)的UDP層端口號
● 抓包有效性驗證
抓包啟動后,wireshark窗口中會出現(xiàn)大量如下圖紅框中的UDP消息報文(Source port和Destination port為10000以上的,為視頻報文),說明抓包有效。
● 包分析視頻協(xié)議為H.264,協(xié)議棧為
視頻包序列號在RTP層,需要對RTP層進(jìn)行解析。在UDP報文上點(diǎn)擊鼠標(biāo)右鍵,選擇Decode As
在彈出的窗口中(圖4),選擇Transport頁面,UDP選擇Both(不同廠家設(shè)備的端口號可能跟圖中不一樣),右邊選擇RTP,點(diǎn)擊OK
圖4 彈出皀窗口
Wireshark會重新對抓包文件進(jìn)行解析,之后Protocol字段中視頻包會從UDP改為RTP,info字段中會呈現(xiàn)RTP層的序列號,可以用于丟包、亂序的統(tǒng)計
點(diǎn)擊菜單 Telephony->RTP->Stream Analysis,啟動RTP層統(tǒng)計(圖5),耐心等待統(tǒng)計分析過程,
圖5 啟動RTP層統(tǒng)計
完成后,將顯示下述窗口(圖6),可以看到丟包率統(tǒng)計:
圖6 丟包率統(tǒng)計
以上就完成了網(wǎng)絡(luò)診斷的過程,可以肯定是網(wǎng)絡(luò)出現(xiàn)了丟包。
繼續(xù)分析H.264層,Info中的PT(Payload Type)定義了H.264對應(yīng)的應(yīng)用,需將PT值(本樣例中為105和106)進(jìn)行配置,用于解析H.264。
點(diǎn)擊菜單 Edit->Preferences,在彈出的窗口中,展開Protocols,下拉,找到H264,在右邊輸入PT值,多個PT值間用逗號隔開,設(shè)置完成后點(diǎn)擊OK(圖7)
圖7 將PT值進(jìn)行配置
Wireshark會重新對抓包文件進(jìn)行解析,之后Protocol字段中視頻包會從RTP改為H264,info字段中會呈現(xiàn)H264層的包類型(可以通過這個找到I幀初始包)
● 常用過濾方法
Wireshark可以對抓包進(jìn)行條件過濾(圖8),過濾條件可以直接輸入 :
圖8 對抓包進(jìn)行條件過濾
可以點(diǎn)擊“Expression”按鈕進(jìn)行設(shè)置(圖9)
圖9 點(diǎn)擊“Expression”按鈕進(jìn)行設(shè)置
● 常用過濾條件(視頻會議)
源IP地址過濾 ip.src==132.33.40.158目的IP地址過濾 ip.dst==132.33.40.158 UDP目的端口號過濾 udp.dstport == 10004協(xié)議類型過濾 h264 H264 I幀過濾 h264.nal_unit_hdr == 7 H245請求I幀的MC(miscellaneousCommand)消息過濾 h245.command == 6包內(nèi)容過濾 frame contains b5:f9:2d:3b:8c:dc:fc:d9包長度過濾 frame.len <80包序號過濾 frame.number>=18421組合過濾(終端信令發(fā)送與I幀接收)&&表示AND,||表示OR(h264.nal_unit_hdr ==7&&ip.src==132.33.40.148)||(tcp&&ip.src==132.33.40.234)
● 過濾后文件的保存
抓包文件一般都比較大,傳送和分析耗時長,可在完成抓包后,進(jìn)行相關(guān)過濾,只保存過濾后的報文。
點(diǎn)擊菜單 File->Export Specified Packets,在彈出的窗口中,選擇Displayed,進(jìn)行保存(圖10)。
圖10 進(jìn)行保存
wireshark是一款非常強(qiáng)大的網(wǎng)絡(luò)抓包分析工具,可以幫助網(wǎng)絡(luò)管理員用來解決網(wǎng)絡(luò)問題,可以讓網(wǎng)絡(luò)安全工程師用來檢測安全隱患,可以給開發(fā)人員用來測試協(xié)議執(zhí)行情況,可以用來學(xué)習(xí)網(wǎng)絡(luò)協(xié)議,在視頻會議中也是確定問題原因的利器!不要輕信每一個表面現(xiàn)象,要通過真實的數(shù)據(jù)來尋找答案!
[1] Tanenbaum A S.計算機(jī)網(wǎng)絡(luò)(修訂版)[M].4版.北京:清華大學(xué)出版社,2005.