网卡TSO

问题描述:

在使用wireshark抓取报文时,发现从10.81.2.92发过来的报文绝大部分标记为异常报文(开启IPv4和TCP checksum)

分析如下报文,发现http报文(即tcp payload)的长度远远大于实际的mss大小,如下图为4126

  • 查看该报文的ip长度,为4148,远大于Ethernet的mtu

  • 且tcp的校验和有来自wireshark的如下提示,那什么是“TCP checksum offload”呢?

问题解决:

  • 在分析问题前,先给出上述问题答案,在10.81.2.92中关闭抓包的网卡的tso和tx功能.
ethtool -K eth0 tso off
ethtool -K eth0 tx off
  • 重新抓包,发现wireshark显示的报文长度和校验都已经正确

问题分析:

目前很多网卡已经支持IP片以及IP/TCP/UDP等协议的校验和计算,用来减少内核层面的运算(减少CPU负载),当协议层发现网卡支持相应的特性时,会将相应的处理交给网卡操作。如上面提到的校验和,正常情况下,校验和由对应的协议层处理,但在网卡使能情况下会将其推迟到网卡层面处理,网卡处理结束后直接发送,这就是为什么wireshark抓到的报文里面的校验和会提示不正确的原因,同样地,TCP会选择小于滑动窗口的报文大小,由网卡去分片处理。使用ethtook -k 命令可以查看网卡支持的特性。

  • rx-checksumming/tx-checksumming:支持接收/发送方向的IP校验和计算;
  • scatter-gather:用于将一个buffer分割为多个小的部分,是实现tcp-segmentation-offload(TSO)的基础;
  • tcp-segmentation-offload(TSO):也被称为large send offload (LSO),用于将TCP按照实际的mss进行分段发送。接收方向的参数为large-receive-offload(LRO),仅支持TCP;
  • udp-fragmentation-offload(UFO):工作方式与tcp-fragmentation-offload类似;
  • generic-segmentation-offload(GSO):工作方式与TSO,UFO类似,但支持所有的网络协议。接受方向的参数为generic-receive-offload(GRO);GSO/GRO和的TSO/LRO的使用参见这篇文档
  • rx-vlan-offload:移除接收到的vlan tag;
  • tx-vlan-offload:对出去的报文加上vlan tag;

TIPS:

  • 类似地,如果抓UDP报文显示校验和等异常时,可以提供ethtool临时关闭UDP offload功能
  • TSO,UFO,GSO等功能可以提高报文交互能力,关闭会影响报文收发效率

参考:

https://www.kernel.org/doc/Documentation/networking/checksum-offloads.txt

https://access.redhat.com/solutions/288433

原文地址:https://www.cnblogs.com/charlieroro/p/11363336.html

时间: 2024-10-18 11:29:25

网卡TSO的相关文章

以太网卡TSO技术

一.简介 TSO(TCP Segment Offload)技术是一种利用网卡的少量处理能力,降低CPU发送数据包负载的技术,需要网卡硬件及驱动的支持.   二.原理 在不支持TSO的网卡上,TCP层向IP层发送数据会考虑mss,使得TCP向下发送的数据可以包含在一个IP分组中而不会造成分片, mss是在TCP初始建立连接时由网卡MTU确定并和对端协商的,所以在一个MTU=1500的网卡上,TCP向下发送的数据不会大于min(mss_local, mss_remote)-ip头-tcp头. 网卡支

wireshark分析https

0x01 分析淘宝网站的https数据流 打开淘宝 wireshark抓取到如下 第一部分: 因为https是基于http协议上的,可以看到首先也是和http协议一样的常规的TCP三次握手的连接建立,请求的是服务器的443端口. 1.客户端向443端口发送SYN信号 2.服务端回应连接,ACK 3. tcp/ip三次握手完成 第二部分: 接下来从第4个数据包开始,其实就是SSL握手过程中所产生的数据包,也就是使用HTTPS协议加密的信息. 1.  初始化阶段.客户端创建随机数,发送ClientH

网络数据包分析 网卡Offload

http://blog.nsfocus.net/network-packets-analysis-nic-offload/ 对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研究员在日常工作中,经常会捕获到一些大小远大于MTU值的数据包,经过分析这些大包的特性,发现和网卡的offload特性有关,本文对网卡Offload技术做简要描述. 文章目录 网络分片技术 网卡offload机制 发送模式 接收模式 网卡offload模式的设置 Linux windows 网卡Offload

Linux下多网卡时,如何快速辨别网卡ID与物理网卡的对应关系(即ethtool命令)

一般购买的服务器都有4个网卡,这个时候在安装好服务器后,配置IP的时候就郁闷了 如是一个浪潮8560M2服务器安装Redhat后的网卡显示: [[email protected] ~]# ifconfig -a eth0      Link encap:Ethernet  HWaddr 00:E0:ED:2D:0F:58 inet addr:192.168.4.10  Bcast:192.168.4.255  Mask:255.255.255.0 UP BROADCAST RUNNING MUL

TCP Segment Offload(TSO)的实现原理浅析

早上太燥热,突然想起三周前有人跟我交流了TSO的问题,我也描述了其原理,这个原理说来也是特别简单,无非就是靠网卡硬件来分段,计算 checksum,从而解放CPU周期.其实只要说一个就够了,既然靠硬件来分段,那么只能由硬件来计算checksum了,因为你根本就不知道硬件的分 段细节,所以你也没法在分段前计算好每一个段的checksum....       TSO的原理几乎每个人都知道,事实上它是怎么实现的这个问题也不难,难的是细节.在做完了正事之后,我想把这个原理展现出来,当然可能和实际的实现有

从Linux 2.6.8内核的一个TSO/NAT bug引出的网络问题排查观点(附一个skb的优化点)

梦中没有错与对,梦中没有恨和悔...最好闭上你的嘴.这样才算可爱...我不会说:这不公道,我不能接受.我会用朴素的文字记录点点滴滴,早上4点多起来,一气呵成最近的收获与评价,愤慨与忏悔. 四年多前的一个往事 大约在2010年的时候,我排查了一个问题. 问题描写叙述例如以下: 服务端:Linux Kernel 2.6.8/192.168.188.100client:Windows XP/192.168.40.34业务流程(简化版):1.client向服务端发起SSL连接2.数据传输 现象:SSL握

tso

tso(TCP Segment Offload)是一种利用网卡的少量处理能力,降低CPU发送数据包负载的技术,需要网卡硬件及驱动的支持. 目录 1TSO(TCP Segment Offload) TSO:Technical Standards Orders 技术标准说明,航空产品要取得适航认证就必须由美国联邦航空局FAA进行审查,FAA对产品的公司进行质量保证体系的全面符合性审查,提出建设性的建议和意见,如果FAA对审查情况比较满意,将会颁发TSO认证证书.这对航空产品走向国际市场的必须门槛.

Vxlan与网卡offload性能

背景 由于数据链路层MTU的限制,发送端TCP/UDP数据在交付到IP层时需要与MTU相匹配,TCP数据不能超过mss,较长的UDP需要分片(Fragmentation)以满足MTU要求:接收端协议栈也是从网卡接收上述不超过MTU的小帧并重组,早期上述数据分片和组合的工作均由CPU完成,导致占用CPU资源且效率不高. offload 是将本来该操作系统进行的一些数据包处理(如分片.重组等)放到网卡硬件中去做,降低系统 CPU 消耗的同时提高处理的性能. 解释 发送模式 TSO (tcp-segm

PFring性能优化和网卡参数修改

PFring性能优化和网卡参数修改 1.关闭网卡多余功能,提高网卡性能 关闭网卡多余功能.增加网卡性能. vi /etc/rc.local [[email protected] ~]# ethtool -K eth1 tso off gro off lro off gso off rx off tx off sg off rxhash off //服务器有多少个接口用于数据采集,就对应添加多少行(关闭8项),修改此文件保证下次重启服务器,这些项被关闭. 手动执行(临时调整,下次重启后会失效) e