网络技术----wireshark抓包出现1500以上的大包原因分析

网络技术----wireshark抓包出现1500以上的大包原因分析

  • 背景描述
  • 原因分析
    • TSO(TCP segment offload,TSO)
    • linux中关闭/开启TSO功能:
    • 其他类似TSO的机制
  • wireshark抓包来源

背景描述

我们在使用抓包工具的过程中,经常发现一些报文长度大于1500长度的报文,但是根据MTU的限制,这是不合理的,这是为什么呢?下面将详细探讨并分析这个问题。
在这里插入图片描述

原因分析

TSO(TCP segment offload,TSO)

抓包工具之所以能抓到大于MTU长度限制的报文,在于当前网卡开启了TSO机制。
在支持 TSO 的网卡上,为了降低报文切片给CPU带来的影响,CPU内核只负责将大包转发给网卡,而网卡负责把这些超大报文拆分成符合物理链路层限制的小包。简单来说就是,原本由内核处理的拆包,交给了网卡来处理,而我们通过 tcpdump 抓包工具抓取的是从内核到网卡路径上的数据包,所以会存在上述问题,如果在交换机处抓包,那么对应的大小为MSS值或小于 MSS 值。

在这里插入图片描述

  • 提到 TSO(TCP Segmentation Offload),就不得不谈到分段卸载技术。随着网络带宽的飞速提升,以太网的速度从最初的 10M 发展到如今的 100G,提升幅度达到了 10000 倍。尽管 CPU 在这些年里也有显著进步,但单核 CPU 的频率增长并不明显。虽然 CPU 核心数目大幅增加,但将网络数据流分配给多个 CPU 核心进行处理仍然面临一定的挑战。此外,随着虚拟化技术的引入,计算机需要处理的任务变得更加复杂,不仅要运行应用程序,还需支持容器和虚拟机,这使得 CPU 的负担更加沉重。

  • 在 TCP 双向通信的情况下,发送或接收 1 bit/s 的数据大约需要 1 Hz 的 CPU 处理能力。当发送和接收各为 10 Gbit/s 时,整体吞吐量达到 20 Gbit/s,相当于 20 GHz 的处理能力,这大约需要 8 个 2.5 GHz 的 CPU 核心。如果完全依赖 CPU 来进行校验、计算、验证、分包和组包,CPU 的消耗将非常可观。为了解决这个问题,越来越多的技术应运而生,以适应不断变化的技术环境,其中网卡能够支持将某些 Linux 内核协议栈的计算任务卸载到物理网卡上,从而减轻 CPU 的负担。

  • TSO 就是将 TCP Segmentation 的工作,卸载(offload)到网卡来完成。有了TSO,操作系统只需要传给硬件网卡一个大的 TCP 数据(当然是包在 Ethernet Header和IP Header内,且不超过64K )。网卡会代替 TCP/IP 协议栈完成 TCP Segmentation。这样,就消除了 TCP Segmentation 带来的 CPU 负担。支持TSO的网卡,仍然会按照TCP/IP协议将网络数据包生成好并发送出去,对于外界系统来说,感受不到TSO的存在。

linux中关闭/开启TSO功能:

可以通过如下命令查看对应网卡此时TSO的状态:

[root@vm-os-centos7 ~]# ethtool -k eth0|grep tcp-segmentation-offload:
tcp-segmentation-offload: off
[root@vm-os-centos7 ~]#[root@vm-os-centos7 ~]# ethtool -K eth0 tso off
[root@vm-os-centos7 ~]#

其他类似TSO的机制

名称全称作用原理适用协议应用场景
TSOTCP Segmentation Offload减少CPU处理小分段的负担将大数据包交由网卡进行分段,再进行传输,减少CPU负荷TCP高流量传输,适用于服务器、虚拟化环境
UFOUDP Fragmentation Offload提高UDP大包处理效率网卡负责分片和重组,减轻CPU分片/重组负担UDP大量数据传输的多媒体或VoIP应用
GSOGeneric Segmentation Offload适用于多种协议的分片卸载机制将大数据包在发送时交由网卡分段处理TCP、UDP等支持多协议的高负载服务器和虚拟化环境
LROLarge Receive Offload接收端大包处理,减少CPU负担将小包合并为大包后再交由操作系统处理TCP网络流量较高的服务器、虚拟化应用接收端
LSOLarge Send Offload发送端大包处理,减少CPU负担操作系统将大数据流交由网卡分段发送,减轻CPU负荷TCP大流量发送场景,如视频流、虚拟化传输
LROv2Large Receive Offload v2更高效的接收端大包处理基于LRO,优化了分片处理的高效性TCP网络流量密集的高性能计算和虚拟化接收端

https://www.modb.pro/db/50701

wireshark抓包来源

Wireshark捕获的数据包通常是系统发送给网卡之前或网卡接收并传给系统之后的数据包。具体取决于操作系统的网络堆栈和驱动程序的工作原理。简而言之,Wireshark通常是在操作系统的网络协议栈中捕获到数据包,而不是直接从网卡硬件发出或接收到的数据包。

因此:

  • 发送过程:Wireshark通常捕获的是系统发送给网卡的数据,而不是网卡实际发送出去的物理数据包。这意味着在应用了一些硬件卸载(如TSO或GSO)后,Wireshark看到的可能是分段前的“虚拟”大包,而网卡会将它们进一步分片发送。

  • 接收过程:Wireshark通常捕获的是网卡传给操作系统的数据包,因此如果硬件支持并启用了LRO(Large Receive Offload)等技术,Wireshark可能捕获到的是网卡已经重组好的较大数据包,而非网络上实际传输的小分片。

参考:https://www.modb.pro/db/50701

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

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

相关文章

3.3 软件需求:面对对象分析模型

面对对象分析模型 1、对象2、面对对象的软件开发模型3、用例图建模基础3.1 用例图基本符号参与者用例系统执行关联 3.2 用例建模过程3.3 用例图初步3.4 用例图进阶关联Association泛化Inheritance包含Include扩展Extend示例 1、对象 在现实世界中有意义的,与所要解…

跑批为什么这么难

业务系统产生的明细数据通常要经过加工处理,按照一定逻辑计算成需要的结果,用以支持企业的经营活动。这类数据加工任务一般会有很多个,需要批量完成计算,在银行和保险行业常常被称为跑批,其它像石油、电力等行业也经常…

深⼊理解指针(3)【数组与指针】

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. ⼆级指针 6. 指针数组 7. 指针数组模拟⼆维数组 一 数组名的理解 由上图可知我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址…

ubuntu【桌面】 配置NAT模式固定IP

DHCP分配导致虚拟机IP老变,SSH老要重新配置,设成静态方便些 一、设NAT模式 1、设为NAT模式 2、看模式对应的虚拟网卡 - VMnet8 3、共享主机网卡网络到虚拟网卡 - VMnet8 二、为虚拟网卡设置静态IP 记住这个IP IP不要与网关重复 这里网关注意要与虚拟…

最强攻略密码 | 腾讯云双十一活动爆款直击底价

前言 每年双十一,腾讯云都会推出一系列的优惠活动,吸引着大量的消费者和开发者参与。作为国内领先的云计算服务商之一,腾讯云不仅提供强大的云计算基础设施服务,还涉及云存储、大数据分析、人工智能等多个领域,而双十…

c# 动态lambda实现二级过滤(多种参数类型)

效果 调用方法 实体类(可以根据需求更换) public class ToolStr50 {public bool isSelected { get; set; }public string toolStr1 { get; set; }public string toolStr2 { get; set; }public string toolStr3 { get; set; }public string toolStr4 { …

5万加购上线即断货,双11洗衣机品类打破增长难关

距离2024年双11结束仅剩最后几天。据网经社报告,目前各电商平台累计销售额已超8000亿元。 其中,家电品类已超1000亿元的销额位居前列,市场占有率达15.7%。天猫平台数据显示,预售日开售后1小时,大家电整体成交同比增长7…

[全网最细数据结构完整版]第六篇:3分钟带你吃透栈并模拟实现

目录 1->栈的概念和结构 1.1栈的概念 1.2栈的结构 2->栈的实现 2.1定义关于栈的结构体和各种函数 2.2栈的初始化 STInit 函数 2.3栈的销毁 STDestroy 函数 2.4栈的插入操作 STPush 函数 2.5栈的判断是否为空操作 STEmpty 函数 2.6栈的删除操作 STPop 函数 2.7…

Xfce桌面设置右键菜单:用右键打开VSCode

前言 AlmaLinux安装VSCode之后始终没有找到如何用右键菜单打开VSCode,比Windows麻烦多了。每次都需要先找到文件夹,然后用系统自带的Open In Terminal打开终端,再输入code .,才能够在当前文件夹中快速打开VSCode。那么&#xff0…

使用docker形式部署jumpserver

文章目录 前言一、背景二、使用步骤1.基础环境准备2.拉取镜像3.进行部署4.备份记录启动命令 前言 记录一下使用docker形式部署jumpserver服务的 一、背景 搭建一个jumpserver的堡垒机,但是发现之前是二进制文件部署的,会在物理机上部署污染环境&#x…

我谈正态分布——正态偏态

目录 pdf和cdf参数 标准正态分布期望和方差分布形态 3 σ 3\sigma 3σ原则 正态和偏态正态偏态瑞利分布偏度 (Skewness)峰度 (Kurtosis) 比较 正态分布的英文是Normal Distribution,normal是“正常”或“标准”的意思,中文翻译是正态,多完美的…

【嵌入式】STM32中的SPI通信

SPI是由摩托罗拉公司开发的一种通用数据总线,其中由四根通信线,支持总线挂载多设备(一主多从),是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文…

大A终究是逃不过高开低走的魔咒

大A终究是逃不过高开低走的魔咒,早盘高开太多,周末休市,今天会议结束,各种不确定因素增加等原因导致午盘普跌。其实还是那句话,股市嘛,涨多了会跌,跌多了会涨,别急也别慌。 周末&…

知识付费小程序搭建,线上网课平台开发

我是【码云数智】平台的黄导,今天分享:知识付费小程序搭建,线上网课平台开发 在线网校小程序开发,在线教育小程序还不断优化界面设计,确保操作简便直观,无论是老人还是小孩都能轻松上手。​​ 01、小程序…

Python | Leetcode Python题解之第543题二叉树的直径

题目: 题解: class Solution:def diameterOfBinaryTree(self, root: TreeNode) -> int:self.ans 1def depth(node):# 访问到空节点了,返回0if not node:return 0# 左儿子为根的子树的深度L depth(node.left)# 右儿子为根的子树的深度R …

无代码开发平台smardaten R5C50 新版本更新!都做了哪些改变?

数睿数据为此次新版本做了7项体验优化、8项功能增补、1项性能优化,总计16个功能点。快来看看,哪个功能戳中你的心~ 一、体验优化 围绕smardaten搭建第一个原型并完成发布主链路,进行了体验优化,解决新手门槛高、模板使用路径长、…

175页PPTBCG某企业健康智能制造与供应链战略规划建议书

智能制造与供应链战略规划方法论是一个系统性、科学性的框架,旨在指导企业实现智能制造转型和供应链优化。以下是对这一方法论的核心内容的归纳和阐述: 一、智能制造的目标与原则 明确智能制造目标: 提高生产效率:通过引入自动…

DICOM标准:深入详解DICOM医学影像中的传输语法

引言 DICOM(数字成像和通信医学)标准在医学影像数据交换中扮演着至关重要的角色。其中,*传输语法(Transfer Syntax)是DICOM标准中定义数据编码和传输方式的核心部分。理解传输语法对于确保不同设备和系统之间的互操作性…

爱普生SG-8201CG可编程晶振智能门锁的核心驱动

在智能家居蓬勃发展的时代浪潮中,智能门锁作为智能家居的第一道防线,其安全性与便捷性至关重要。爱普生 SG - 8201CG 可编程晶振犹如一颗隐藏在幕后却发挥着关键作用的智慧芯片,为智能家居系统的高效、稳定运行提供了不可或缺的精准时钟信号。…

LLM大模型微调(lora原理)

一、微调方法介绍 1.1 Lora原理 通过低秩矩阵来降低模型训练的参数量,有点‘给我一个支点,就可以撬动地球’的感觉,其中矩阵的秩(rank)就有点像这个‘支点’的意思,大致原理如下: LoRA 的核心…