劉志鵬
【摘 要】隨著Internet和TCP/IP網絡的快速發(fā)展,IP業(yè)務對網絡質量的要求也越來越高。Wireshark作為一款抓包軟件,內置了很多功能強大的統(tǒng)計分析工具,可以很好的協(xié)助網絡工程師進行網絡分析及排查故障。本文通過列舉FTP應用案例,介紹該軟件進行TCP性能分析時的常用工具。
【關鍵詞】TCP;滑動窗口;往返時間;Wireshark
【中圖分類號】V351 【文獻標識碼】A
隨著Internet和TCP/IP網絡的快速發(fā)展,IP分組網絡大規(guī)模部署,IP業(yè)務大規(guī)模的應用,都給網絡運維帶來了新的挑戰(zhàn)。使用Wireshark抓取并分析傳輸鏈路中的數(shù)據(jù)報文,可以幫助運維人員更好的理解各協(xié)議的工作機制,同時其強大的統(tǒng)計分析功能也可以協(xié)助運維人員進行網絡分析及故障排查。
本文將結合一個FTP應用案例(傳輸層協(xié)議使用的是TCP),來介紹Wireshark抓包工具在TCP性能分析時常用的工具。
一、TCP協(xié)議概述
傳輸控制協(xié)議是一種面向連接的,可靠的傳輸層協(xié)議。首先,采用三次握手來建立TCP連接,四次握手來釋放TCP連接,保證建立的傳輸信道是可靠的。其次,TCP采用了連續(xù)ARQ協(xié)議(回退N;超時自動重傳)來保證數(shù)據(jù)傳輸?shù)恼_性,使用滑動窗口協(xié)議來保證接收方能夠及時處理所接收到的數(shù)據(jù),進行流量控制。最后,TCP使用慢啟動、擁塞避免、快重傳和快恢復來進行擁塞控制,避免網絡擁塞。
二、FTP應用案例場景:
如圖1所示,本端是一臺Win10的筆記本電腦,裝有Wireshark,作為FTP客戶端,使用的FTP軟件為FlashFXP。遠端是一臺Linux的服務器,作為FTP服務器端。中間網絡系統(tǒng)可提供的帶寬為300Mbps,網絡中未進行QOS限速,使用儀表打流量測試正常。服務器端防火墻為100Mbps端口,其它端口均為1000Mbps端口。從FTP客戶端上傳1個約2GB文件到FTP服務器端,F(xiàn)TP軟件顯示上傳速率約為5MBps,即40Mbps。
三、使用Wireshark分析TCP性能
(一)抓取TCP數(shù)據(jù)報文
打開Wireshark抓包工具,選擇網卡來抓取收發(fā)的數(shù)據(jù)。在筆記本電腦上使用FlashFXP軟件,將文件上傳到對端FTP服務器。通過FlashFXP軟件可以查看傳輸速率,待傳輸速率穩(wěn)定后,停止抓包,保存抓包文件。
(二)使用TCP過濾參數(shù)分析數(shù)據(jù)報文
Wireshark提供tcp.flags、tcp.analysis等顯示過濾參數(shù),例如:tcp.flags.reset==1、tcp.analysis.retransmission、tcp.analysis.duplicate_ack、tcp.analysis.window_full等??梢允褂眠@些參數(shù)來分析與TCP會話重置、TCP重傳、重復確認、窗口大小有關的TCP運作及性能問題,分別過濾后發(fā)現(xiàn)抓包文件中存在大量的window_full的數(shù)據(jù)包,說明TCP會話的數(shù)據(jù)發(fā)送端的發(fā)送緩存中裝滿了待確認報文,無法繼續(xù)發(fā)送數(shù)據(jù)包。
(三)使用統(tǒng)計工具進行分析
Wireshark提供了豐富的統(tǒng)計工具,比如分析TCP連接常用的IO圖表和TCP流圖形。使用這些統(tǒng)計工具,可以更加方便和直觀的了解TCP流的時間序列、吞吐量、往返時間RTT、窗口大小等。
使用時間序列(tcptrace)功能,如圖3所示,橫坐標表示時間,縱坐標表示序列號;上方的綠線與下方的棕線之間的差值就是接收窗口大小,接收到ACK確認報文,窗口向上移動,只有在窗口范圍之內才可以發(fā)送數(shù)據(jù)包;縮在一起的藍色小點代表一個個數(shù)據(jù)包。
該TCP流的接收窗口大小基本保持262800字節(jié),可以判斷出遠端服務器接收不存在性能或應用異常的問題。A時刻發(fā)送的數(shù)據(jù)包,經過往返時間RTT后,在B時刻收到TCP確認報文,確認了n個報文,于是發(fā)送窗口向上滑動,可以繼續(xù)發(fā)送n個報文,Wireshark抓包工具捕獲第n個報文后,判斷出發(fā)送端待確認報文等于接收窗口大小,提示window_full,等待接收端ACK確認報文。
Wireshark根據(jù)每個TCP報文段從發(fā)出到收到接收端TCP確認報文的時間進行統(tǒng)計,生成往返時間圖表。該TCP數(shù)據(jù)流的往返時間基本穩(wěn)定在53ms。
在TCP數(shù)據(jù)通道建立協(xié)商階段,接收端支持的窗口大小為65535字節(jié),縮放因子WS為8,即最大接收窗口為524280字節(jié)。根據(jù)TCP吞吐量的計算公式:吞吐量=最大接收窗口/往返時間,該場景中,TCP最大吞吐量約為524280B/0.053s=9.89MB/s。經過協(xié)商后,接收端以32850B*8=262800字節(jié)為接收窗口大小,實際傳輸速率約為4.96MB/s。
(四)總結
通過Wireshark抓包軟件過濾和統(tǒng)計工具分析發(fā)現(xiàn),造成筆記本電腦上傳文件速率未達到期望值的原因是接收窗口較小以及延時較大引起的。在網絡沒有擁塞的前提下,延時主要是運營商線路累計的,無法調整。提高文件傳輸速率的解決辦法是提高接收窗口大小。
早期的WinXP系統(tǒng)可以修改注冊表調整TCP窗口大小和縮放因子;目前的Windows系統(tǒng)TCP窗口為自動調節(jié),可以通過Windows PowerShell 的Set-NetTCPSetting進行調整;Linux操作系統(tǒng)可以通過修改/proc/sys/net/core中的相關文件進行調整。
四、結束語
TCP協(xié)議機制復雜,不同的操作系統(tǒng)及應用在實現(xiàn)上也存在著差異。在網絡規(guī)模較大,帶寬資源緊張,延時不穩(wěn)定時,很難定位故障。借助Wireshark工具,可以及時發(fā)現(xiàn)問題所在,縮短故障排查時間。在網絡運維中,可以作為輔助工具使用。
【參考文獻】
[1]Yoram Orzach著.Network Analysis Using Wireshark Cookbook古宏霞,孫余強譯.Wireshark網絡分析實戰(zhàn) .人民郵電出版社,2015.02.