1.1故障现象 某PC工作站R通过交换机接收某设备S发送的数据,但不定时,PC工作站接收数据出现报错信息。工作站R向设备S发送1000个ICMP请求数据包,均有响应并且延迟正常。 1.2故障分析思路 常规的故障分析思路有:分层思路、对比分析思路和排除法思路。 首先,分析发送和接收数据所需的带宽要求及承载的传输协议(UDP或者TCP); 其次,根据分层的思路,从工作站R的网卡、网线链路、交换机网口、交换机本身转发芯片、交换机网口、网线链路和设备S的网卡的角度进行查看分析,可从中间层交换机向两边进行分析查看并结合排除法排除无故障的节点。 1.3故障定位解决 实际场景,发送和接收数据承载的传输协议是UDP,不可靠的传输协议,对传输链路要求较高,链路存在丢帧即影响数据的传输。 登录交换机查看连接工作站R的接口和连接设备S的接口得知:连接工作站R的接口状态正常,接口工作协商速率1Gbps,但连接设备S的接口存在大量的CRC,如下图所示; ?
经质询,工作站R至交换机的网线是成品网线,设备S至交换机的网线是手工作的。替换连接设备S的网线两端的水晶口,清除接口的CRC统计,工作站R可正常接收到设备S发送的数据,无报错,交换机接口CRC为0。 备注1:清除接口CRC的统计方式; <SW>reset counters interface GigabitEthernet 1/0/1 备注2:ping为发现丢包,为何UDP数据传输报错? Windows系统默认的ping包小大是32字节并ping包之间有间隔。Ping功能主要定位网络链路的通断和延迟。依赖不可靠的UDP传输协议传输大量的数据包,对网络链路的丢帧敏感。 1.4脑补之CRC技术 1.4.1CRC技术简介 数据在传输过程中因传输介质故障或外界的干扰而产生比特差错,从而导致接收方接收到错误的数据。为尽量提高接收方收到数据的正确率,在接收数据之前需要对数据进行差错检测,仅当检测的结果为正确时才接收数据。 常见差错检测的方式有奇偶校验、求和校验、CRC校验等,工作原理类似,即,首先,发送端对传输数据按照算法计算出校验码,其次,校验码和传输数据一起发送到接收端,最后,接收端对收到的数据和校验码按照相同的算法验证,以此判断接收到的数据是否正确、完整。 循环冗余校验CRC(Cyclic Redundancy Check)由W. Wesley Peterson在1961年发表的论文中提出,鉴于CRC校验在速度、成本、正确率等方面比其他校验方式更具有优势,因此,CRC成为计算机信息、通信领域最为普遍的校验方式。例如在Ethernet II格式的以太帧中,最后4个字节的冗余位用于存储CRC校验的值,此冗余位又称为帧检验序列FCS(Frame Check Sequence)。 ? 备注:Ethernet II格式的以太帧释义 目的MAC地址:该字段有6个字节,用来表示该帧的接收者(目的地)。目的MAC地址可以是一个单播MAC或一个组播MAC地址或一个广播MAC地址。 源MAC地址:该字段有6个字节,用来表示该帧的发送者(出发地)。源MAC地址只能是一个单播MAC地址。 类型:该字段有2个字节,用来表示载荷数据的类型。例如: 0x0800,则表示载荷数据是一个IPv4 Packet 0x86dd,则表示载荷数据是一个IPv6 Packet; 0x0806,则表示载荷数据是一个ARP Packet; 0x8848,则表示载荷数据是一个MPLS报文,如此等等。 载荷数据:该字段的长度是可变的,最短为46字节,最长为1500字节,它是该帧的有效载荷,载荷的类型由前面的类型字段表示。 1.4.2计算CRC校验码采用的算法 计算CRC校验码采用的算法是以GF(2)多项式算术为数学基础,使用R位校验码,生成多项式的次幂应为R,并且校验码位数越高,检测错误能力越强。以下为常见的一些标准多项式。 ? 计算CRC校验码的详细过程如下所示; 发送端、接收端在通信前,约定好除数P,也就是前面说的多项式的值; 发送端在原来的K位数据后面加R个0,相当于原来的数据左移了R位; 发送端进行模2除法运算(即异或XOR运算)即,加0之后的K+R位的数除以P,循环计算,直到余数的阶数小于R,此余数就是附加的CRC校验码,若长度不足R位需要在前面加0补齐; 发送端将R位校验码附加在原数据后面发送给接收方; 接收端接收到数据后,将数据以模2除法方式除以除数P。如果没有余数,说明在传输过程中没有出现错误,否则说明有错误。
1.4.3计算CRC校验码案例 以g(x)为CRC-4=X4+X+1为例,此时除数P=10011。假设源数据M为10110011。 在发送端将M左移4位,然后除以P。 ? ?计算得到的余数就是0100,也就是CRC校验码。将0100附加到原始数据帧10110011后,组成新帧101100110100发送给接收端。 接收端接收到该数据帧后,用该数据帧除以选定的除数P,验证余数是否为0,如果为0,则表示数据在传输过程中没有出现差错。 ? ? 1.5总结 1、关键重要设备间的网络线路,建议采用品牌且合格成品网络跳线;若因距离原因需采用手动做的网络跳线,建议水晶头采用免打水晶头。 2、一般情况下,网络设备的物理接口出现CRC的累计数值,有可能是网线问题、光纤跳线问题、光模块问题和设备自身问题,可采用替换法进行对比测试分析。
|