上一篇《高效排障:快速重传与虚假重传的根因及处置》中,我们分享了TCP异常流量标记“快速重传及虚假重传”的几种常见场景及解决方案,今天让我们一起来看TCP异常流量标记“乱序”的几种常见场景及解决方案。
乱序标记原理
当前报文与前一个报文的时间差小于RTT(如无法计算RTT,则计为3毫秒),并且当前报文的TCP序列号范围[Seq,Seq + PayloadLength]未在之前的报文中出现过,并且前一个报文的下一序列号(Next Seq)不等于当前报文计算的下一序列号,或者最后的确认报文负载长度为0。
如图1所示,可以通俗的理解为由于某些原因在网络传输过程中发生了报文传输顺序颠倒的情况,比如本应出现在序号为23、24之间的序号为25的报文。
那么一旦出现了“乱序”情况,我们如何快速的根据TCP交易时序图了解到网络中具体发生了什么呢?我们一起来看如下情况。
发生报文传输乱序的根因及处置建议
如图1所示,序号为24的报文被标记为“可能丢包”,序号为25的报文被标记为“乱序“,从序号为22的报文Next Seq=2880442216和序号为25的报文Seq=2880442216分析,在正常情况下这两个报文应该是连续传输的,然而我们却看到了序号为24的确认报文在先,很明显这是在网络传输过程中将序号为24、25的两个报文传输顺序颠倒了。
根因及处置建议
TCP交易时序图中出现上述“乱序“情况,建议关注以下内容:
建议一:检查是否由于QoS整形策略导致部分报文被延迟转发,为关键应用流量调整QoS策略,尝试给予该队列更大带宽保障;
建议二:检查是否由于网络多路径负载导致了报文到达乱序,如果是二层链路聚合,应调整负载策略为基于源目IP+tcp port的负载方式实现同会话流量由相同端口转发。
如果是三层转发路径负载,应检查转发设备的数据包转发负载策略是否相同流相同路径转发。如果是负载均衡设备,应检查负载策略是否同源同宿。
截至目前,我们已经分析了TCP重传判定算法相关的四个异常标记,分别为:重传、快速重传、虚假重传、乱序。相信大家在分析TCP交易时序图的时候经常会看到这四种异常标记和“可能丢包“标记共同出现的情况,通常这五种异常标记会通过不同组合存在,我们希望通过分享科来网络分析系统对这几种异常标记算法的基本原理,结合着几种常见异常场景,起到抛砖引玉的效果,让大家能够在之后网络流量分析的TCP交易时序图分析过程中做到事半功倍,及时的定位故障层面,定位故障节点,定位故障根因。