Wireshark抓包工具在TCP性能分析时的应用

2019-07-24 10:33刘志鹏
智富时代 2019年6期

刘志鹏

【摘 要】随着Internet和TCP/IP网络的快速发展,IP业务对网络质量的要求也越来越高。Wireshark作为一款抓包软件,内置了很多功能强大的统计分析工具,可以很好的协助网络工程师进行网络分析及排查故障。本文通过列举FTP应用案例,介绍该软件进行TCP性能分析时的常用工具。

【关键词】TCP;滑动窗口;往返时间;Wireshark

【中图分类号】V351 【文献标识码】A

随着Internet和TCP/IP网络的快速发展,IP分组网络大规模部署,IP业务大规模的应用,都给网络运维带来了新的挑战。使用Wireshark抓取并分析传输链路中的数据报文,可以帮助运维人员更好的理解各协议的工作机制,同时其强大的统计分析功能也可以协助运维人员进行网络分析及故障排查。

本文将结合一个FTP应用案例(传输层协议使用的是TCP),来介绍Wireshark抓包工具在TCP性能分析时常用的工具。

一、TCP协议概述

传输控制协议是一种面向连接的,可靠的传输层协议。首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,保证建立的传输信道是可靠的。其次,TCP采用了连续ARQ协议(回退N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接收方能够及时处理所接收到的数据,进行流量控制。最后,TCP使用慢启动、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。

二、FTP应用案例场景:

如图1所示,本端是一台Win10的笔记本电脑,装有Wireshark,作为FTP客户端,使用的FTP软件为FlashFXP。远端是一台Linux的服务器,作为FTP服务器端。中间网络系统可提供的带宽为300Mbps,网络中未进行QOS限速,使用仪表打流量测试正常。服务器端防火墙为100Mbps端口,其它端口均为1000Mbps端口。从FTP客户端上传1个约2GB文件到FTP服务器端,FTP软件显示上传速率约为5MBps,即40Mbps。

三、使用Wireshark分析TCP性能

(一)抓取TCP数据报文

打开Wireshark抓包工具,选择网卡来抓取收发的数据。在笔记本电脑上使用FlashFXP软件,将文件上传到对端FTP服务器。通过FlashFXP软件可以查看传输速率,待传输速率稳定后,停止抓包,保存抓包文件。

(二)使用TCP过滤参数分析数据报文

Wireshark提供tcp.flags、tcp.analysis等顯示过滤参数,例如:tcp.flags.reset==1、tcp.analysis.retransmission、tcp.analysis.duplicate_ack、tcp.analysis.window_full等。可以使用这些参数来分析与TCP会话重置、TCP重传、重复确认、窗口大小有关的TCP运作及性能问题,分别过滤后发现抓包文件中存在大量的window_full的数据包,说明TCP会话的数据发送端的发送缓存中装满了待确认报文,无法继续发送数据包。

(三)使用统计工具进行分析

Wireshark提供了丰富的统计工具,比如分析TCP连接常用的IO图表和TCP流图形。使用这些统计工具,可以更加方便和直观的了解TCP流的时间序列、吞吐量、往返时间RTT、窗口大小等。

使用时间序列(tcptrace)功能,如图3所示,横坐标表示时间,纵坐标表示序列号;上方的绿线与下方的棕线之间的差值就是接收窗口大小,接收到ACK确认报文,窗口向上移动,只有在窗口范围之内才可以发送数据包;缩在一起的蓝色小点代表一个个数据包。

该TCP流的接收窗口大小基本保持262800字节,可以判断出远端服务器接收不存在性能或应用异常的问题。A时刻发送的数据包,经过往返时间RTT后,在B时刻收到TCP确认报文,确认了n个报文,于是发送窗口向上滑动,可以继续发送n个报文,Wireshark抓包工具捕获第n个报文后,判断出发送端待确认报文等于接收窗口大小,提示window_full,等待接收端ACK确认报文。

Wireshark根据每个TCP报文段从发出到收到接收端TCP确认报文的时间进行统计,生成往返时间图表。该TCP数据流的往返时间基本稳定在53ms。

在TCP数据通道建立协商阶段,接收端支持的窗口大小为65535字节,缩放因子WS为8,即最大接收窗口为524280字节。根据TCP吞吐量的计算公式:吞吐量=最大接收窗口/往返时间,该场景中,TCP最大吞吐量约为524280B/0.053s=9.89MB/s。经过协商后,接收端以32850B*8=262800字节为接收窗口大小,实际传输速率约为4.96MB/s。

(四)总结

通过Wireshark抓包软件过滤和统计工具分析发现,造成笔记本电脑上传文件速率未达到期望值的原因是接收窗口较小以及延时较大引起的。在网络没有拥塞的前提下,延时主要是运营商线路累计的,无法调整。提高文件传输速率的解决办法是提高接收窗口大小。

早期的WinXP系统可以修改注册表调整TCP窗口大小和缩放因子;目前的Windows系统TCP窗口为自动调节,可以通过Windows PowerShell 的Set-NetTCPSetting进行调整;Linux操作系统可以通过修改/proc/sys/net/core中的相关文件进行调整。

四、结束语

TCP协议机制复杂,不同的操作系统及应用在实现上也存在着差异。在网络规模较大,带宽资源紧张,延时不稳定时,很难定位故障。借助Wireshark工具,可以及时发现问题所在,缩短故障排查时间。在网络运维中,可以作为辅助工具使用。

【参考文献】

[1]Yoram Orzach著.Network Analysis Using Wireshark Cookbook古宏霞,孙余强译.Wireshark网络分析实战 .人民邮电出版社,2015.02.