程金勝*,孫領兵
(聯通系統集成有限公司---系統集成部,北京,10033)
Wireshark 是網絡包分析工具。網絡包分析工具的主要作用是嘗試捕獲網絡包, 并嘗試顯示包的盡可能詳細的情況。就像一個超級細的過濾網,把所有經過這個端口的數據進行分析和歸類,讓你有據可依,有據可查。
? 支持UNIX和Windows平臺
? 在接口實時捕捉包
? 能詳細顯示包的詳細協議信息
? 可以打開/保存捕捉的包
? 可以導入導出其他捕捉程序支持的包數據格式
? 可以通過多種方式過濾包
? 多種方式查找包
? 通過過濾以多種色彩顯示包
? 創建多種統計分析
2015年X月X日,某公司董事會議進行中,突然遠端的圖像出現了馬賽克,視頻終端(華為 9039S)上出現了丟包的提示圖標,視頻維護人員聯系網絡維護人員要求查找原因,但網絡方面馬上發了一張網絡正常的截圖作為證據,說明網絡無問題,會后雙方圍繞是否網絡有丟包問題進行了激烈的爭論,為了驗證雙方的說法的真實性,視頻維護人員用wireshark拿到了關鍵性的證據。
針對網絡方面提供的網絡正常的截圖(圖1),視頻維護人員沒有盲目的相信,而是在會議結束后保持網絡狀態不變,迅速的搭建環境,進行網絡抓包分析。

圖1 網絡正常皀截圖
● 搭建環境
利用華為視頻終端9039S有兩個LAN端口的特性,筆記本連接LAN2端口,通過telnet登陸終端 ,用戶名/密碼debug/debug。執行命令bsp ipmonitor on啟動端口鏡像(將端口2設置為端口1的鏡像)。
● 開始抓包
啟動wireshark,點擊菜單Capture->Interfaces(圖2)。

圖2 啟動wireshark
在彈出的窗口中:點擊Options,彈出新窗口“Wireshark:Capture Options”(圖3)

圖3 點擊Options
在這個新窗口中:
A. 選擇抓包網口
B. 設置抓包文件在抓包電腦的存儲路徑和文件名
C. 設置抓包文件大小(一般視頻抓包文件比較大,推薦按照 100M 進行分割,便于文件的傳送和分析)
其他參數保持默認,設置完成后,點擊“Start”按鈕啟動抓包。
注:RTP層端口時在視頻呼叫建立過程中協商的,如果不是在呼叫建立前就啟動抓包,Wireshark抓不到端口協商的信令流程,就無法對RTP層進行自動解析,需要在Wireshark中手動配置RTP層對應的UDP層端口號
● 抓包有效性驗證
抓包啟動后,wireshark窗口中會出現大量如下圖紅框中的UDP消息報文(Source port和Destination port為10000以上的,為視頻報文),說明抓包有效。
● 包分析視頻協議為H.264,協議棧為
視頻包序列號在RTP層,需要對RTP層進行解析。在UDP報文上點擊鼠標右鍵,選擇Decode As
在彈出的窗口中(圖4),選擇Transport頁面,UDP選擇Both(不同廠家設備的端口號可能跟圖中不一樣),右邊選擇RTP,點擊OK

圖4 彈出皀窗口
Wireshark會重新對抓包文件進行解析,之后Protocol字段中視頻包會從UDP改為RTP,info字段中會呈現RTP層的序列號,可以用于丟包、亂序的統計
點擊菜單 Telephony->RTP->Stream Analysis,啟動RTP層統計(圖5),耐心等待統計分析過程,

圖5 啟動RTP層統計
完成后,將顯示下述窗口(圖6),可以看到丟包率統計:

圖6 丟包率統計
以上就完成了網絡診斷的過程,可以肯定是網絡出現了丟包。
繼續分析H.264層,Info中的PT(Payload Type)定義了H.264對應的應用,需將PT值(本樣例中為105和106)進行配置,用于解析H.264。
點擊菜單 Edit->Preferences,在彈出的窗口中,展開Protocols,下拉,找到H264,在右邊輸入PT值,多個PT值間用逗號隔開,設置完成后點擊OK(圖7)

圖7 將PT值進行配置
Wireshark會重新對抓包文件進行解析,之后Protocol字段中視頻包會從RTP改為H264,info字段中會呈現H264層的包類型(可以通過這個找到I幀初始包)
● 常用過濾方法
Wireshark可以對抓包進行條件過濾(圖8),過濾條件可以直接輸入 :

圖8 對抓包進行條件過濾
可以點擊“Expression”按鈕進行設置(圖9)

圖9 點擊“Expression”按鈕進行設置
● 常用過濾條件(視頻會議)

源IP地址過濾 ip.src==132.33.40.158目的IP地址過濾 ip.dst==132.33.40.158 UDP目的端口號過濾 udp.dstport == 10004協議類型過濾 h264 H264 I幀過濾 h264.nal_unit_hdr == 7 H245請求I幀的MC(miscellaneousCommand)消息過濾 h245.command == 6包內容過濾 frame contains b5:f9:2d:3b:8c:dc:fc:d9包長度過濾 frame.len <80包序號過濾 frame.number>=18421組合過濾(終端信令發送與I幀接收)&&表示AND,||表示OR(h264.nal_unit_hdr ==7&&ip.src==132.33.40.148)||(tcp&&ip.src==132.33.40.234)
● 過濾后文件的保存
抓包文件一般都比較大,傳送和分析耗時長,可在完成抓包后,進行相關過濾,只保存過濾后的報文。
點擊菜單 File->Export Specified Packets,在彈出的窗口中,選擇Displayed,進行保存(圖10)。

圖10 進行保存
wireshark是一款非常強大的網絡抓包分析工具,可以幫助網絡管理員用來解決網絡問題,可以讓網絡安全工程師用來檢測安全隱患,可以給開發人員用來測試協議執行情況,可以用來學習網絡協議,在視頻會議中也是確定問題原因的利器!不要輕信每一個表面現象,要通過真實的數據來尋找答案!
[1] Tanenbaum A S.計算機網絡(修訂版)[M].4版.北京:清華大學出版社,2005.