一次网络丢包的问题排查经过

admin 2024年4月3日18:52:21评论7 views字数 2510阅读8分22秒阅读模式

01

故障起因

Cause of Malfunction

在一次业务部署上线的过程中,应用管理员反馈页面访问总是存在访问慢的情况,而且是随机性的产生,在终端PC 使用网页的检查工具发现总是不确定的几个资源加载很慢,如下图所示。

一次网络丢包的问题排查经过
一次网络丢包的问题排查经过

由于每次影响页面访问慢的url页面每次都是不一样,从而排除了应用本身的问题,进而分析是否是网络传输导致的页面访问慢。

一次网络丢包的问题排查经过
一次网络丢包的问题排查经过

故障排查思路

Troubleshooting Ideas

02

1、通过抓包分析数据交互情况

首先在流量分析平台上面进行流量抓包分析,通过抓取网络中的流量数据,分析之后发现存在了很多的重传数据包,如图所示:

一次网络丢包的问题排查经过

在TCP这种数据传输机制中,数据包重传是为了确保数据的可靠传输,当检测到数据包丢失、乱序、超时等情况时候,发送方会采取相应的重传策略,从而确保接收端能够收到发送端所有的数据包,从而确保稳定可靠的传输。

至于为什么TCP重传会导致应用相应变慢,是因为TCP重传影响了数据发送方的拥塞窗口(CWND)降低,CWND的大小取决于TCP的拥塞控制算法,网络中大量的重传,会严重的影响CWND的增长,当网络状况好转时,CWND会逐渐增大,以提高发送方的发送速度,从而更快地发送数据。

2、为什么会重传?

当定位到了网络重传问题之后,开始进行重传的原因分析,判断网络为何存在了大量的重传数据包呢?

TCP一般重传主要是几个原因:

  • 丢包:数据包在网络传输过程中可能会因为网络拥塞、路由器故障等原因丢失,导致接收方未能收到所有预期的数据包。

  • 乱序:数据包可能会因为网络延迟等因素到达接收方时出现乱序,接收方需要提醒发送方重传丢失的数据包。

  • 拥塞:即使网络状况良好,由于TCP的拥塞控制机制,可能会减缓发送速率,导致数据包需要重传。

  • 超时:发送方在一定时间内没有收到确认(ACK)的响应时,会认为数据包丢失或没有成功传输,从而触发重传机制。

  • 接收端异常:接收端可能因为某些原因未响应ACK或丢弃了ACK,导致发送方重传数据包。

  • 快速重传:当接收端连续收到多个重复的ACK时,表明某些数据包丢失,发送方会在定时器过期之前重传丢失的数据包。

到底是哪个原因导致了数据包重传呢?我们首先考虑是否网络中存在了丢包现象,然而怎么判断数据包呢?那我们就需要用到了交换机流统功能。

3、交换机流统逐层分析

流统就是流量统计的简称,通过QOS对符合匹配规则的流进行数量统计,既可以基于Byte也可以基于Packet统计,既可以针对In方向也可以针对Out方向统计,同时可以下发在接口、VLAN、全局、控制平面等多个层面。

我们分别在如下几个位置进行了流统配置:

  • 服务器上联接入接口

  • LEAF交换机的UP-Link接口

  • SPINE交换机的DOWN-Link接口

  • SPINE交换机的UP-Link接口

  • Border交换机的Down-Link接口

  • Border交换机的UP-Link接口

在涉及到的每层的交换机流统配置方法:

一次网络丢包的问题排查经过

图片来源于网络

第一步:定义ACL匹配源IP、目的IP报文。

第二步:创建名为classifier_1的流分类,匹配数据包的规则ACL 3000。再创建名为behavior_1的流行为,定义流统计动作accounting packet。

第三步:创建一个名为policy_1的策略,将流分类和流行为关联。

第四步:将QOS策略应用到端口1的入方向和端口2的出方向。

第五步:通过display qos policy interface inbound/outbound命令查看流统结果,图中端口1的inbound方向收到了5个ICMP Request报文,端口2的outbound方向发出了5个ICMP Request报文,由此说明SW 2并没有丢弃ICMP Request报文!

此外,可以通过reset counters interface命令来清除接口计数,清除后可以再次进行Ping测试和流统!配置命令如下:

一次网络丢包的问题排查经过

通过流统分析判断,数据包在LEAF交换机的UP-Link接口确实发生了接口丢包情况,在SPINE交换机的出口位置和LEAF交换机的入口位置,ICMP的数据包数量统计不一致,明显出现了接口丢包。

一次网络丢包的问题排查经过

4、分析交换机接口状态

通过分析交换机的接口发现,接口下存在入向CRC报错统计数据,从而验证了确实是网络线缆质量问题导致的网络数据传输丢包。

一次网络丢包的问题排查经过

5、什么是CRC报错

CRC也就是循环冗余校验码,是计算机网络通信领域常用的校验码。循环冗余校验码包括一系列移位、相除等数据编码规则,其算法原理、算法程序的设计与分析,都可以通过相应的软件编码进行解决。循环冗余校验码是利用软件进行校验的算法,因此其检验速度很快,校验的误码率也较低,整个计算机网络通信的信息传输速度很高。CRC差错纠正控制法能够有效减少通信线路的误码率,得到的通信数据传输信息更准确。

在数据的传输过程中由于空间电磁环境复杂等原因,可能会产生误码,即某几位数据0变为1,或1变为0,导致接收端得到错误的数据。为了降低误码率,通常对数据进行特定编码,在收发端进行额外的验证,使接收端能发现某些错误,进而实现纠错功能,常用的编码方法有CRC-32校验码、CRC-16校验码、汉明码、奇偶校验法等。其中32位循环冗余校验简称CRC-32校验在性能和资源消耗两方面都有较大的优势,因而,在无线电通信、SATA硬盘数据传输等系统中,CRC-32校验是最常用的检错手段之一。

一次网络丢包的问题排查经过

图片来源于网络

如上图,在接收方的接口上会和发送方接口进行CRC冗余码的协商计算,从而确定发送的二进制数据是否存在发生了传输错误,如果发现CRC计算错误,接收方会把发过来的二进制数据进行丢弃,从而导致了丢包情况的发生,本质原因是中间的线缆问题导致的二进制信号传输错误。

03

结束语

Conclusion

在基础网络层中,在不同的网络链路上都有可能存在数据丢包情况,虽然TCP协议具备数据重传的机制,但是如果网络中的丢包情况持续存在,得不到有效的解决,势必会影响应用的访问质量。在日常网络运维中,要做好网络中每一层链路上的丢包监控,精细化网络接口下的统计指标监控,才能防患于未然。

一次网络丢包的问题排查经过

文章作者:李坤

封面设计:Lina

一次网络丢包的问题排查经过

原文始发于微信公众号(EBCloud):一次网络丢包的问题排查经过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月3日18:52:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次网络丢包的问题排查经过http://cn-sec.com/archives/2627764.html

发表评论

匿名网友 填写信息