Wireshark TS | 网络路径不一致传输丢包问题

news2024/11/30 6:54:27

问题背景

网络路径不一致,或者说是网络路径来回不一致,再专业点可以说是网络路径不对称,以上种种说法,做网络方向的工程师肯定会更清楚些,用简单的描述就是:

A 与 B 通讯场景,C 和 D 代表中间路径可能存在的 N 个不同设备
A -> B 方向经过了这样的路径,A — C — B
B -> A 方向经过了这样的路径,B — D — A

以上网络场景实际挺常见的,正常通讯没有任何问题。

开篇明义,此案例就是一个上述场景下的丢包问题,原因已明,简单分享下分析过程。

案例取自 SharkFest 2011《Packet Trace Whispering》


问题信息

数据包跟踪文件基本信息如下:

λ capinfos Session-I1-Case2-pktloss.pcap
File name:           Session-I1-Case2-pktloss.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 65535 bytes
Packet size limit:   inferred: 67 bytes
Number of packets:   71
File size:           5883 bytes
Data size:           13 kB
Capture duration:    11.639492 seconds
First packet time:   2011-02-18 04:26:07.508816
Last packet time:    2011-02-18 04:26:19.148308
Data byte rate:      1141 bytes/s
Data bit rate:       9135 bits/s
Average packet size: 187.20 bytes
Average packet rate: 6 packets/s
SHA256:              9c9e5cd8c6c2ef892efcd5d0302b17407b3943bbc02f6cc676d7457ade452e42
RIPEMD160:           de6dde6f5460acb52f399cc491c8cad81c0f5ab3
SHA1:                7e9de2c390e85874cc234a40c33c1f1e2cbc94ae
Strict time order:   True
Number of interfaces in file: 1
Interface #0 info:
                     Encapsulation = Ethernet (1 - ether)
                     Capture length = 65535
                     Time precision = microseconds (6)
                     Time ticks per second = 1000000
                     Number of stat entries = 0
                     Number of packets = 71

跟踪文件在 linux 上通过 tcpdump 所捕获,数据包数量并不多,只有 71 个,长度截断为 67 字节,文件数据大小 13K 字节,捕获时长 11.64 秒,平均速率 9135 bps。

统计会话信息中,可见 TCP 流 1 条,客户端 192.168.1.1 -> 服务器端 10.10.10.10 。

image.png

专家信息如下,可以看到存在一定数量的(疑似)重传和(疑似)虚假重传现象,符合丢包现象。

image.png


问题分析

展开数据包跟踪文件数据包详情如下,

image.png

image.png

可以看出 TCP Stream 0 并没有捕获到 TCP 三次握手阶段的数据包,但通过 TTL 字段值 128 可判断出捕获点在服务器端上或者靠近服务器端的地方,而 RTT 约为 0.1ms ,并且数据传输的规律是一个数据分段一个 ACK 确认不断交互。

通过点选右下黑色位置,可直接快速跳转到问题所在,可见 TCP 重传和疑似重传等问题。

image.png

也可以通过以下显示过滤表达式,快速筛选 TCP 分析中的异常问题,这也是比较常用的技巧。

tcp.analysis.flags

可以看到总共有 10 个匹配数据包,包括来自于服务器端 10.10.10.10 的 TCP 重传,以及来自于客户端 192.168.1.1 的 TCP 虚假重传,为什么会有如此泾渭分明的重传现象呢?

image.png

展开 TCP 详细分析,主要如下:

image.png

  1. 服务器端 10.10.10.10 的 TCP 重传

可以看到包括 No.47-48 以及之前的数据包,均正常交互。但从 No.49 Seq 2904 开始,由于一直未收到 ACK ,在约 300ms 左右发生了超时重传 No.50,之后同样一直未收到 ACK,产生了不断超时重传现象,间隔 300ms、600ms、1.2s 、1.2s、1.2s 和 2.4s。

特殊的地方在于,每一次超时重传的时候有时还会带上新的数据分段,TCP Len 不断变大,但同样没有收到任何确认。

image.png

  1. 客户端 192.168.1.1 的 TCP 虚假重传

不同于最初一个数据分段一个 ACK 确认不断交互的传输规律,经过服务器 10.10.10.10 的连续单方向数据传输无响应后,客户端 192.168.1.1 在 No.58 发送了一个数据分段 Len 11 ,并且可以看到服务器端 10.10.10.10 正常回复了 ACK 确认收到,但是在 200ms 后,客户端 192.168.1.1 仍然产生了超时重传现象,之后的现象依旧,不断重传,间隔 200ms、400ms、800ms 和 1.6s。

为什么是 TCP 虚假重传? 这是因为在数据包跟踪文件中,有数据分段,也有 ACK 确认,所以 Wireshark 基于上下文综合判断,该重传属于 TCP 虚假重传现象。

image.png

image.png

实际上再想到开篇提到的网络路径不一致问题,就可以明白整个过程。

  1. 由于服务器端发送的数据分段无法正常收到 ACK 确认,因此产生了 TCP 超时重传,注意这里丢失的是服务器端发送方向的数据分段;
  2. 而客户端 -> 服务器端传输方向,数据分段可以正常发送且能收到,但服务器端返回的 ACK 数据包同样无法返回至客户端,所以客户端产生了 TCP 超时重传,注意这里丢失的是服务器端发送方向的 ACK;
  3. 因此根本原因出现在服务器端 -> 客户端传输的方向,在某一个时点开始,传输的任何数据包均无法正常到达客户端。

经过长时间的不断跟踪,最后查明问题是在单向路径上的一台交换机引擎软件 BUG 引起。


问题总结

我们可能无法确定根因,但数据包分析可以为我们指明正确的方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat配置ssl

Tomcat配置ssl 部署tomcat服务,项目做到用https访问,使用nginx去做,访问任意一个子网站,都是https 或者 医美项目需要 上传jdk 456 tomcat war包 [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/…

一文看懂微信小程序新版隐私协议(附带弹窗组件)

一、前言 微信小程序近期又迎来了一次改革–9月15日之后如果小程序涉及调用微信的隐私接口获取用户的信息的,需要用户手动同意协议后才可正常调用接口,否则会返回报错信息。 隐私接口目前常用的有:手机号快捷获取、读取照片、获取用户的头像…

ArcGIS Pro3.0.2保姆级安装教程(附安装包)

软件简介: ArcGIS Pro是ERSI推出的新一代原生态64位ArcGIS桌面产品。具备强大的二维、三维一体化功能,继承了传统桌面产品ArcMap等产品几乎所有的功能,并在多个方面作了进一步的优化和改进,是云端一体化、数据科学与空间数据科学…

基于FPGA的图像二值化处理,包括tb测试文件和MATLAB辅助验证

1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps ............................................................................. module test_image;reg i_clk; reg i_rst; r…

基于SpringBoot+VUE的考试题库刷题系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在现代教育领域&#…

spring---第四篇

系列文章目录 文章目录 系列文章目录一、解释下Spring支持的几种bean的作用域。二、Spring框架中的单例Bean是线程安全的么?一、解释下Spring支持的几种bean的作用域。 singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。该 对象的生命周期…

c++动态对象

目录 malloc和free动态申请 c中动态申请 用于数组的 new 和 delete delete void*问题 使用 new 和 delete 采用相同形式 malloc和free动态申请 在c中 释放对象时 系统会自动调用析构函数 但在以下代码编译运行后 析构和构造均未调用 所以在c中不能用malloc和free动态申请…

华为云云耀云服务器L实例评测|使用Docker部署Leanote笔记工具

华为云云耀云服务器L实例评测|使用Docker部署Leanote笔记工具 一、前言1.1 云耀云服务器L实例介绍1.2 Leanote简介 二、本次实践介绍2.1 本次实践简介2.2 本次环境规划 三、购买云耀云服务器L实例3.1 购买云耀云服务器L实例3.3 查看云耀云服务器L实例状态3.4 重置服…

CRM软件系统使用详细流程

很多人不太了解CRM系统,不知道CRM在哪里打开。其实,在线CRM系统使用非常简单,只要您打开浏览器,输入对应网址就可以访问使用,完全不用下载软件,随时随地都可以使用。 1、选择CRM供应商 选择合适的CRM供应…

离子风蛇有什么作用?

离子风蛇的工作原理是通过内置的高压发生器升至高压电晕空气生成正负离子,再随风流覆盖至物体表面,从而中和其所带的正负静电电荷,这是一种用在工厂里面的工业设备,主要的作用是用来消除静电,其次还可以达到除尘和杀菌…

elementui el-dialog 动态生成多个,点击按钮打开对应的 dialog

业务场景: 根据后端返回的数据,动态生成表单,返回的数据中会有表单字段的类型,如果单选、多选、富文本,其它的属性还好说,重点说在富文本,因为我想通过 dialog 弹窗的方式,进行富文…

frp 内网穿透安装配置使用

文档先发一下(好像要科学上网) Github 项目地址 查看系统架构 需要一个服务器当做服务端进行端口转接,连接服务器之后,输入以下命令查看系统 uname -a拉取程序包 输入以下命令下载 frp 程序包,按版本号改第一个命令…

工业网络通讯技术的发展历程

工业互联网可以通过人、机、物的全面互联,实现产业链、生产链、全价值链的全面连接,将行业、企业的各种数据和信息都通过平台进行处理分析,对整个工厂的生产、运营、采购、销售乃至研发设计进行管理,提高企业的生产效率&#xff0…

完整版:IPSec报文格式

IPSec协议族是IETF(Internet Engineering Task Force)制定的一系列协议,它为IP数据报提供了高质量的、可互操作的、基于密码学的安全性。 IPSec通过认证头AH(Authentication Header,协议号51)和封装安全载…

ipad触控笔有必要买原装吗?开学季ipad2023手写笔推荐

随着开学新学期的开始了,而平板电脑也开始在学校里流行了起来,这也给学生们带来了更多的便利。而苹果的原装电容笔,尽管功能很强,但是因为它的价格比较贵,要是你仅仅只是用来做学习和记录笔记的话,所以在国…

用C语言实现牛顿摆控制台动画

题目 用C语言实现牛顿摆动画,模拟小球的运动,如图所示 拆解 通过控制台API定位输出小球运动的只是2边小球,中间小球不运动,只需要固定位置输出左边小球上升下降时,X、Y轴增量一致。右边小球上升下降时,X、…

解决在远程连接的linux服务器上调用matplotlib画图的问题

前言: 我遇到这个问题的时候,在知乎上看到了一个回答,结果评论区看到了一个最简洁的解。 https://zhuanlan.zhihu.com/p/346384579 效果 左边是代码,右边是结果,弊处就是有点慢。 安装步骤 1. 安装插件 在代码处…

荣威 D7 正式亮相,新能源江湖再战

在 2023 成都车展上,荣威回归轿车领域的全新车型——D7 正式亮相。新车将推出纯电和插混的版本。 一、内饰实拍 内饰方面,这也是荣威 D7 的首次开门。可以看到,荣威 D7 将采用类似三联屏的设计,实际采用的是双 12.3 英寸液晶屏。…

linux 多重启动grub2详解

https://www.gnu.org/software/grub/manual/grub/grub.pdf

Revit SDK 介绍:ManipulateForm 体量族的修改

前言 这个例子介绍体量族的修改。包含了创建体量,用API 移动体量族的顶点、边、轮廓(面)。 内容 效果分步骤展示。 整理: 核心逻辑 创建拉伸体 m_revitDoc.FamilyCreate.NewLoftForm(true, profiles)增加一个截面 form.Add…