一站式学习Wireshark(三): IO图形工具分析数据流[转载]
  

修业时代朱 6829

{{ttag.title}}
本帖最后由 修业时代朱 于 2016-5-19 10:28 编辑

原文来源:EMC中文支持论坛

基本IO Graphs:
      IO graphs是一个非常好用的工具。基本的Wireshark IOgraph会显示抓包文件中的整体流量情况,通常是以每秒为单位(报文数或字节数)。默认X轴时间间隔是1秒,Y轴是每一时间间隔的报文数。如果想要查看每秒bit数或byte数,点击“Unit”,在“Y Axis”下拉列表中选择想要查看的内容。这是一种基本的应用,对于查看流量中的波峰/波谷很有帮助。要进一步查看,点击图形中的任意点就会看到报文的细节。
      为了讲解方便,点击示例报文包,或用自己的wireshark点击Statistics – IO Graphs。这个抓包是HTTP下载遇到报文丢失的情况。
1.png
注意:过滤条件为空,此图形显示所有流量。
    这个默认条件下的显示在大多数troubleshooting中并不是非常有用。将Y轴改为bits/tick这样就可以看到每秒的流量。从这张图可以看到峰值速率是300kbps左右。如果你看到有些地方流量下降为零,那可能是一个出问题的点。这个问题在图上很好发现,但在看报文列表时可能不那么明显。
2.png
过滤:
      每一个图形都可以应用一个过滤条件。这里创建两个不同的graph,一个HTTP一个ICMP。可以看到过滤条件中Graph 1使用“http”Graph 2使用“icmp”。图中可以看到红色ICMP流量中有些间隙,进一步分析。
3.png
      创建两个图形,一个显示ICMP Echo(Type=8)一个显示ICMP Reply(Type=0)。正常情况下对于每一个echo请求会有一个连续的reply。这里的情况是:
4.png
       可以看到红色脉冲线(icmp type==0 –ICMP Reply)中间有间隙,而整张图中ICMP请求保持连续。这意味着有些reply没有接收到。这是由于报文丢失导致的reply drop。CLI中看到的ping信息如下:
5.png
常用排错过滤条件:

对于排查网络延时/应用问题有一些过滤条件是非常有用的:

      tcp.analysis.lost_segment表明已经在抓包中看到不连续的序列号。报文丢失会造成重复的ACK,这会导致重传。

      tcp.analysis.duplicate_ack显示被确认过不止一次的报文。大凉的重复ACK是TCP端点之间高延时的迹象。

      tcp.analysis.retransmission显示抓包中的所有重传。如果重传次数不多的话还是正常的,过多重传可能有问题。这通常意味着应用性能缓慢和/或用户报文丢失。

      tcp.analysis.window_update将传输过程中的TCP window大小图形化。如果看到窗口大小下降为零,这意味着发送方已经退出了,并等待接收方确认所有已传送数据。这可能表明接收端已经不堪重负了。

      tcp.analysis.bytes_in_flight某一时间点网络上未确认字节数。未确认字节数不能超过你的TCP窗口大小(定义于最初3此TCP握手),为了最大化吞吐量你想要获得尽可能接近TCP窗口大小。如果看到连续低于TCP窗口大小,可能意味着报文丢失或路径上其他影响吞吐量的问题。

      tcp.analysis.ack_rtt衡量抓取的TCP报文与相应的ACK。如果这一时间间隔比较长那可能表示某种类型的网络延时(报文丢失,拥塞,等等)。

      在抓包中应用以上一些过滤条件:
6.png
      注意:Graph 1是HTTP总体流量,显示形式为packets/tick,时间间隔1秒。Graph 2是TCP丢失报文片段。Graph 3是TCP 重复ACK。Graph 4是TCP重传。

      从这张图可以看到:相比于整体HTTP流量,有很多数量的重传以及重复ACK。从这张图中,可以看到这些事件发生的时间点,以及在整体流量中所占的比例。

函数:

      IO Graphs有六个可用函数:SUM, MIN, AVG, MAX, COUNT, LOAD。

MIN( ), AVG( ), MAX( )

      首先看一下帧之间的最小,平均和最大时间,这对于查看帧/报文之间的延时非常有用。我们可以将这些函数结合“frame.time_delta”过滤条件看清楚帧延时,并使得往返延时更为明显。如果抓包文件中包含不同主机之间的多个会话,而只想知道其中一个pair,可将“frame.time_delta”结合源和目标主机条件如“ip.addr==x.x.x.x&&ip.addr==y.y.y.y”。如下图所示:
7.png
我们做了以下步骤:

将Y轴设置为“Advanced”,让Caculation域可见。不做这一步就看不到计算选项。

X轴时间间隔1秒,所以每个柱状图代表1秒间隔的计算结果。

过滤出两个特定IP地址的HTTP会话,使用条件:“(ip.addr==192.168.1.4&& ip.addr==128.173.87.169)&& http”。

使用3个不同的graph,分别计算Min(), Avg(), Max()。

对每一个计算结果应用条件“frame.time_delta”,将style设置成“FBar”,显示效果最佳。

      从上图可见,在第106秒时数据流的MAXframe.delta_time达到0.7秒,这是一个严重延时并且导致了报文丢失。如果想要深入研究,只需要点击图中这一点,就会跳转至相应帧。对应于本例抓包文件中第1003个报文。如果你看见帧之间平均延时相对较低但突然某一点延时很长,可点击这一帧,看看这一时间点究竟发生了什么。

Count( )

      此函数计算时间间隔内事件发生的次数,在查看TCP分析标识符时很有用,例如重传。例图如下:
8.png

Sum( )

      该函数统计事件的累加值。有两种常见的用例是看在捕获TCP数据量,以及检查TCP序列号。让我们看看第一个TCP长度的例子。创建两个图,一个使用客户端IP 192.168.1.4为源,另一个使用客户端IP作为一个目的地址。每个图我们将sum()功能结合tcp.len过滤条件。拆分成两个不同的图我们就可以看到在一个单一的方向移动的数据量。
9.png
      从图表中我们可以看到,发送到客户端的数据量(IP.DST = =192.168.1.4过滤条件)比来自客户端的数据量要高。在图中红色表示。黑条显示从客户端到服务器的数据,相对数据量很小。这是有道理的,因为客户只是请求文件和收到之后发送确认数据,而服务器发送大文件。很重要的一点是,如果你交换了图的顺序,把客户端的IP作为图1的目标地址,并且客户端IP作为图2的源地址,采用了FBAR的时候可能看不到正确的数据显示。因为图编号越低表示在前台显示,可能会覆盖较高图号。

      现在让我们看一下同一个数据包丢失和延迟的TCP序列号。
10.png
      可以在图中看到若干峰值和下降,表示TCP传输有问题。与正常TCP报文比较:
11.png
      这张图可以看到TCP序列号相当稳定地增加,表示传输平稳,没有过多重传或丢包。


打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

Sangfor_闪电回_小云 发表于 2016-5-19 19:18
  
好帖顶起~~
北回归线 发表于 2016-5-19 20:04
  
哇,牛逼
新手425884 发表于 2019-5-9 10:14
  
大家好,初来乍到,嘿嘿!
一个无趣的人 发表于 2019-11-29 20:53
  
IO图形工具分析数据流学习了。很有用的技术贴。
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
每周精选
干货满满
技术咨询
信服课堂视频
标准化排查
产品连连看
新版本体验
自助服务平台操作指引
秒懂零信任
安装部署配置
功能体验
GIF动图学习
玩转零信任
2023技术争霸赛专题
通用技术
技术晨报
社区帮助指南
安全攻防
每日一记
深信服技术支持平台
天逸直播
华北区交付直播
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人