失控小歪 发表于 2022-5-12 09:57:43

如何定位解决网络中的重传

我们在接触网络时都学过,TCP是一种可靠的协议,而数据在传输过程中时常会出现一些意外情况,诸如数据损坏、丢包、重复等问题,为保障传输的可靠性,TCP加入了例如确认应答、滑动窗口、拥塞控制等机制,而重传就是其中一种重要的方式。
当数据包丢失或对数据包的确认应答丢失时,TCP就会通过重传(Retransmission),不断重复发送TCP片段,直到数据被正确接收。
重传本身是TCP的正常机制,在网络传输中,数据包丢失是极为常见的事情,因此少量的重传是正常的;但如果发现了大量的TCP重传,则往往表示网络中存在异常。造成大量重传的原因可能是网络链路不稳定,也有可能是服务器压力过大等主机故障导致。
大量重传造成的影响排查起来较为困难,很多情况下明明ping或telnet都OK,但仍然会出现访问卡顿的问题,只有抓包看到大量连接才能发现。
另一方面,大量重传的情况存在偶发性,重传并不是时刻都有的,所以需要进行数据的持续采集才能够及时发现与回溯。
那么,如何快速发现异常重传的问题呢?基于上面的两点,通过部署持续的抓包溯源系统是一个不错的选择。
下面我们将使用NTM,通过一个分析示例来进行说明。
在NTM的【协议质量】-【协议重传】中,以卡片的形式实时展示了各应用协议的重传率情况,我们以【火山小视频】为例。Tips:可以点击卡片右上角的星星关注该应用,这个应用就会被置顶显示。
点击【火山小视频】的卡片,可以进入针对该应用协议的分析页面。查看【重传趋势】,我们可以发现该应用协议的重传率存在一个峰值,在10:45时重传率达到了70%。
长按鼠标左键直接拖动选中重传率折线图的时间范围,即可跳转至详细的分析页面。我们发现,v5-a.huoshanvod.com这个域名的重传数最高。Tips:NTM中的大多数折线图都是可以用鼠标拖动选中后跳转分析的,小伙伴们可以试试哦。
点击该域名,在新的页面中可以查看访问这个域名的详细会话信息,精准定位到重传的源目的地址。我们选取其中的某个会话,对其数据包做详细分析。
在【报文解析】页面中,还可以通过输入tcp.analysis.retransmission进行过滤,精确发现重传数据包,最终锁定原因。

一般而言,导致重传的原因如下:

[*]数据报文丢失:发送端的数据在传输过程中被中间链路或设备丢弃;
[*]接收端未响应ACK:发送端的数据已经到达接收端,但接收端由于自身原因没有回复ACK确认报文;
[*]接收端的ACK确认报文丢失:发送端的数据已经到达接收端,接收端也回复了ACK确认报文,但这个ACK报文被中间链路或设备丢弃。

其中,1和3需要排查中间链路或中间设备是否稳定、负载过高或是否存在访问控制;2则需要排查接收端本身是否存在问题。

总结1. 重传本身是TCP的正常机制,但大量的重传意味着网络中存在问题;2. 异常重传的排查过程较为困难,需要使用持续的抓包溯源系统,NTM就是其中的一种;3. NTM提供了专门的重传分析模块,实时发现异常的重传现象;4. NTM拥有极强的下钻能力,可以通过层层分析,精准定位造成重传的源目的IP,并精确呈现重传数据包,锁定原因。



疯狂的兔子 发表于 2022-5-18 14:50:52

学习了,不过重传分析针对内网环境会更有用吧:lol

失控小歪 发表于 2022-5-19 16:55:52

疯狂的兔子 发表于 2022-5-18 14:50
学习了,不过重传分析针对内网环境会更有用吧

内外网环境都适合,看你更关注哪方面的业务了
页: [1]
查看完整版本: 如何定位解决网络中的重传