当业务系统遇到卡顿、缓慢、交易失败、偶发性故障等情况时,如何利用网络流量分析技术找到问题?
前序知识
1、通过“科来网络分析系统”捕获网络流量并进行分析
如图1,启动CSNAS,选择①“实时分析”选项卡,根据电脑上网实际情况,在②“网络适配器”中勾选当前使用的网卡,点击③“开始”启动分析,即可捕获本机实时产生的网络流量。
图1
配合使用交换机端口镜像技术,将核心交换机trunk端口的流量镜像到本机连接的交换机端口,即可捕获网络核心全部流量。
如果是通过其它流量捕获工具所捕获的网络流量,可以使用CSNAS的回放分析功能对网络流量进行回放分析。
2、如何找到发生故障业务的网络流量
图2
如图2,发生故障的业务是使用基于TCP的HTTP应用。选中①“TCP会话”选项卡,根据节点IP地址和端口来选择发生故障业务的②“单个TCP会话”,如果是回放分析还可以根据发生故障的时间对流量进行查找,通过③“数据流解码”区域可以分析客户端与服务器的HTTP基本交互情况,通过④可以观察到客户端与服务器之间的“数据流概要”。
3、TCP流分析视图
双击可打开图2中②“单个TCP会话”的“TCP流分析”视图(如图3)。
图3
图3中所示各区域释义:
① “TCP交易列表”可分析一个TCP会话中客户端与服务器之间每一笔数据传输的质量,包括处理时间、传输时间、空闲时间、请求/响应报文数量、传输字节数、比特率、TCP分段重传和丢失次数等内容;
② “TCP交易时序图”能够展示TCP会话过程中每一个报文的相对传输时间、报文间传输时间差、报文的传输顺序、报文负载长度、报文的序列号确认序列号等内容,是分析TCP疑难故障的实用区域;
③ “数据包解码”区域显示左侧选中报文的详细解码用于分析;
④“原始数据及解码”区域显示原始数据流用于分析。
在图3中可见②“TCP交易时序图”区域有一些红色的标记,我们称为“TCP异常流量标记”(以下简称“异常标记”)。
这些异常标记包括:“TCP之前可能有数据包丢失”、“乱序”、“重复ack”、“重传”、“虚假重传”等等,这些异常标记的含义是什么?如何通过不同的异常标记分析判断网络出了什么状况?这些状况如何处置?
本期为大家分享:
如何分析异常标记“TCP之前可能有数据包丢失”****
认识TCP交易时序图
图4
将图3中②的TCP交易时序图放大,如图4。
如图4,以①中的两个报文为例解释,“序号”表示在这个TCP会话中报文的捕获顺序分别为444、445,“相对时间”表示第444个报文相对于捕获这个TCP会话第一个报文的时间经过了1.611948000秒;时间差表示网络流量捕获点捕获序号444和序号445的报文之间经过了0.000014000秒,载荷长度表示序号444的报文TCP负载为252字节;
图4中②序号为447的报文箭头向左,表示该报文是由服务器向客户端发送,该报文的TCP 序列号Seq=2424586653,TCP确认序列号Ack=391300826,TCP载荷长度1460字节,经计算可得下一个报文的序列号即Next seq=2424588113,该报文标记为红色,起到“TCP异常流量标记”提示作用。括号中文字说明该异常标记为:“TCP之前可能有数据包丢失”(下面简称“可能丢包”),注意这个“可能”,并不意味着报文一定丢失了。
序号447的报文Seq=2424586653,Seq大于上一个服务器向客户端发送的报文(序号444)的Next seq=2424585193,被CSNAS统计为可能丢包。
在实践场景中,TCP分段丢失往往与报文传输乱序、分段重传等情况同时存在,因此异常标记“可能丢包”之后通常会跟有“乱序”、“重复ack”、“重传”等异常标记。
当看到“可能丢包”标记时,我们总结了以下几种常见情况及处置建议:
情况1:TCP报文传输乱序
图5
如图5所示,序号444的报文①Next seq=2424585193,序号447的报文②Seq=2424586653 > 2424585193,因此CSNAS统计“可能丢包”,序号451的报文③Seq=2424585193=①,因此被标记为“乱序”,说明该报文并未丢失,只是网络传输的顺序乱了。
情况1的根因及处置建议:
TCP交易时序图中出现上述情况,建议关注以下内容:
检查是否由于QoS整形策略导致部分报文被延迟转发,为关键应用流量调整QoS策略,尝试给予该队列更大带宽保障;
检查是否由于网络多路径负载导致了报文到达乱序,如果是二层链路聚合,应调整负载策略为基于源目IP+tcp port的负载方式实现同会话流量由相同端口转发。如果是三层转发路径负载,应检查转发设备的数据包转发负载策略是否相同流相同路径转发。如果是负载均衡设备,应检查负载策略是否同源同宿。
**情况2:**TCP分段丢失且被重传
图6
如图6,①序号456的报文Seq=2424591549大于同方向序号455的报文②Next Seq=2424589933因此被标记为“可能丢包”。③序号458、459的报文被标记为“重传”,传输的字节序列号对应了上述“可能丢包”的字节序列号,序号460的报文对上述字节进行了确认④Ack=2424591549。有关“重传”的异常标记原理我们另贴展开讨论。
情况2的根因及处置建议:
采集点只采集到了被重传的TCP分段,未采集到重传前的TCP分段,因此可以判定TCP分段丢失且被重传,TCP分段在报文到达采集点之前丢失。
TCP交易时序图中出现上述情况,建议关注流量采集点之前的网络设备及链路,通过部署多个采集点,采用二分法快速定位丢包点位。
情况3:镜像点丢包或转发乱序
在某些情况下,我们会看到CSNAS的异常标记“TCP ACK之前可能有数据包丢失”。这一异常通常标记意味着反方向的报文采集乱序或未被采集到,当预期的反方向下一个序列号小于当前确认序列号时设置。
图7
如图7,①序号13的报文确认号Ack=45977197”,②序号14的报文确认号Ack=459774768。预期的反方向下一个序列号459771977 < 当前确认序列号459774768,因此序号14的报文被标记为“TCP ACK之前可能有数据包丢失”。
情况3的根因及处置建议:
造成上述情况的本质是有部分报文未被采集到。一般情况下是由于交换机端口镜像策略失配或者TAP交换机分流策略失配而造成的丢包导致流量未完全被网络流量分析设备捕获。
应检查交换机端口镜像策略和TAP交换机分流策略是否符合流量采集环境实际情况。最常见失配情况是输入的镜像流量超过输出端口转发能力而造成的镜像交换机或TAP交换机性能不足。
实用技巧1
多做几次上面几种场景的分析实践,以后做TCP时序图分析时再见到上述两种“丢包”标记,就可以快速了解网络中发生的基本情况了。
图8
除此之外,如图8,在TCP流分析视图中,我们还可以看到每一笔交易的 “可能的分段丢失数”和“实际的分段丢失数”。
“可能的分段丢失数”表示在本文前面所述的两种“可能丢包”标记的数量,而“实际的分段丢失数”则表示会话统计完毕确实未被采集到的分段数量,即真的丢了。
实用技巧2
如果希望从数据包显示视图中快速过滤出TCP分段丢失信息,可以使用语法过滤器快速筛选(如图9)。
图9
语句“tcpanalysis.lostpacket = 1”过滤“TCP之前可能有数据包丢失”标记;
语句“tcpanalysis.acklostpacket = 1” 过滤“TCP ACK之前可能有数据包丢失”标记。
图10
如图10,通过检索到的报文可以直接关联到TCP会话,选中报文按组合键“alt+w”或单击鼠标右键在菜单中选择“在新窗口中显示数据流信息”,就可以自动打开对应TCP会话的TCP流分析窗口了。
免费易用的流量分析工具下载
点击“阅读原文”
更多网络分析技术、技巧、干货分享
点击“预约”科来公开课
- End -
延伸阅读
点击阅读原文,了解试用科来产品
您“在看”我吗?