#2021年底大盘点#网卡 offload

随着单台服务器集成的计算能力的增长,服务器的带宽需求也同步提升,从10M到100G,服务器的网络带宽提升速率远大于CPU的计算能力的增长速率。操作系统协议栈需要通过CPU来实现上层数据的封装和解封装,于是CPU的处理能力成为了网络传输能力的瓶颈。将由CPU处理的数据报文的分段、分片、校验等工作,交给网卡驱动来处理以降低CPU负担的相关技术(这里我们简称为网卡“offload特性”),是一种较好的提升服务器吞吐能力的方案。

1.报文分片/重组相关概念

让我们从报文分片/重组处理相关的概念说起:

MTU(Maximum Transmi系统运维包括哪些内容ssion Uni网卡驱动黄色感叹号t,最大传输单元)是指数据链路层支持上层协议最大一次传输的数据包大小(以字节为单位)。服务器工作站在以太网协议中缺省定义数据链路层的MTU为1500字节,这里的1500字节是包含IP头2网卡驱动在哪里看0字节在数据漫游内的总长度,实际IP包中的载荷为1480字节。

MSS(Maximum Segment Siz网卡驱动在哪里看e,最大报文长度),存数据在于TCP头的可选项中,是指在TCP连接建立时,收发双方协商通信时每一个报文段的最大报文长度。通常情况下,MSS小于等于(MTU-IP头长度(20字节)-TC系统运维工作内容P头长度(20字节))。在TCP通信建立连接时,TCP会取会话两端提供的MSS的最小值作为会话的MSS值。发送TCP报文时,双方会根据协商的MSS将TCP报文分段(Segm数据恢复entation)服务器配置。经过TCP分段处理后的IP包长度不会超过网卡的MTU,一般无需在IP层再做分片(Fragmentation)处理。

除了TCP报文有分段机制,其他协议的超大包(超过MTU的报文)基本都是由IP协议做分片处理的。当IP包长度大于数据链路层的MTU,首先根据IP头中的标记字段(Flags)中DF位判断linux删除文件命令数据包服务器的作用是否允许分片,如果数据包长度超过MTU且不允许分片,则直接被丢弃并向发包方发送错误消息;如果允许分片,则对数据包进行分片处理,保证分片后的每个数据包含IP头长度不超过MTU。分片后的数据包,会数据科学与大数据技术重新封装IP头,并在IP头中记录分片信息:

  • 在IP头的标识符(Identifier)中对于同一系统运维工程师面试问题及答案个被分片的数据包打上相同的标记;
  • ​标记字段(服务器地址Fla数据科学与大数据技术gs)中标识是否为最后一个分片;
  • 记录分段偏移(Fragment Offset),保证分片报文能够被正确重组等。

2.网卡offload技术

本文所描述的网卡的offload特性,主要思想是将原本由操作系统协议栈进行的TCP分段、IP分片、重组、校验等工作任务,移交给网卡驱动处理,在降低系统CPU消耗的同时,提升服网卡驱动怎么安装务器的处理性能。从2012年开始,这项技术开始在普通用户的网卡上应用。随着技术的日趋成熟,目前越来越多的网卡设备开始支持offload特性,用以提升网络收发和处理的性能。常见的提升网卡发送/接收速率的offload技术包括TSO、UFO、GSO、GR网卡驱动程序不正常怎么办O等。

  • TSO(TCP-Segmentation-Offload):将TCP分段工作交由网卡驱动执行,该特性需要网卡硬件支持。使能Tlinux是什么操作系统SO后,操作系统可以将一个不超过64K字节(包含IP头长度和以太头长度在内)的任意大小的TCP报文传给网卡驱动,由网卡驱动层执行TCP分linux系统段、Checksum计算和包头、帧头生成以及封装等工作,服务器的作用linux创建文件样就消除了TCP分段工作带给CPU的负担。被TCP分段后的每个TCP Segment,都需要封装TCP头,TCP头部中有Checksum(校验和),因此TSO通常需要Checksum Offload支持,即由网卡驱动层同时完成TCP校验工作。

​​

图1 TCP报文头部结构linux操作系统基础知识

  • UFO(UDP-Fragmentation-Offload):TSO针对TCP报文分段处理,UFO将对UDP报文进行IP分片的工作交由网卡驱动层网卡驱动在哪里看处理。
  • ​G系统/运维SO相对TSO和UFO更为通用,可支数据库持所有协议报文。GSO会首先确认网卡linux常用命令是否支持TSO,如果网卡支持且使能TSO,则将TCP分段交由网卡驱动层处理;否数据分析师则由GSOlinux重启命令在将报文发送给网卡驱动之前执行分片。GSO可以理解为TSO的补充。
  • LRO(Large-Receive-Offlo网卡驱动ad):在接linux删除文件命令收网络数数据分析据时,网卡驱动层将接收到的TCP Segments在网卡驱动被卸载了怎么恢复网卡驱动层执行报文重组,将合并后的大包传给操数据分析作系统。这样省去CPU在小包网卡驱动安装失败重组工作服务器地址中的开销,提升服务器的接收效率。和TSO一样,LRO也需要网卡设备支持。LRO在做数据和信息合并时,因为收到信息有限,linux系统会出现合并后小包报文头中信息丢失等问题。鉴网卡驱动下载win7于LRO的局限性,一些网卡已经不再支持LRO。
  • GRO(Generic Receive Off网卡驱动怎么安装load):GRO是与GSO相对的接收方特性。GRO不依赖物理网卡,支持更加丰富类型系统运维面试题及答案的协议报数据废土文。GRO运行在操作系统内核中,在做小包合并时掌握的信息较LRO更多,合并规则也更加严谨,避免了合并后数据信息丢失等问题,GRO已逐渐取代LRO。

3.常用命令

offload状态查询命linux删除文件命令令:在Linux操作系统内,可以通过ethtool -k端口编号命令来查看网卡offload选项的状态,

如:#ethtool -k eth0

….

tcp-segment服务器打印后台处理程序没有运行ation-offload: on

tx-tcp数据透视表-seg网卡驱动在哪里看mentation: on

tx-tcp数据漫游-ecn-segmentation: off [fixed]

udp-fragmentat系统运维工资一般多少ion-offload: off [fixed]

generic-selinux创建文件gmentation-offload: on

generic-receive-offload: on

……

开启/关闭网卡offload命令:可通elinux是什么操作系统thtool -K端口编号gso off/on命令,按需使数据透视表能或去使能网卡的offload功能。

如:#ethtool -k eth0 gso on

注意:修改网卡of数据废土fload状态后,记得将命令行写入rc.local文件里,避免操作系统重启后,配置失效。

4.网卡offload使用注意事项

网卡offload功能,对提升服务器转发性能方面功不可没。但是在实际情况中,并不是网卡驱动不正常上不了网怎么修复所有的场景下,都适合使能网卡的offload功能,下面就分享两个案例。

l​​​案例一:通过LVS(Linux Virtual Server)负载均衡软件提供的VIP向FTP网卡驱动不正常上不了网怎么修复服务器上传文件失败。

经定位分析,出现上传文件失败的情况时,LVS服务器收到大量超过MTU的报文,由于LVS内核模块无法处理大于MTU的数据包,最终导致文件上传失败。网卡驱动在哪里看在确认服务器的接入交换机侧未发送/接收到大于MT系统/运维U的报文后,最终服务器是什么定位为LVS服务器网卡使能了GRO功能,网卡驱动不正常上不了网怎么修复LVS服务器侧网卡报文重组后出现大于MTU的数据报文导致问题。在操作linux操作系统基础知识系统内去使能GRO功能后,业务正常。

l​​​案例二:分布式存储服务器物理网卡未使能GRO,聚合口(Bond口数据废土)使能GRO系统运维工程师面试问题及答案,导致上传文件MD5网卡驱动安装失败校验失败。

经定位分析,发送端在执行报文分片后,最后一个数据帧长度不足60字节,需要通过补零方式将数据帧长度补足60字节后发送。由于接收服务器侧物理口和聚合口GRO配置不一致,在GRO重组时未删除补零数据,报文重组后数据数据库发生变化,文件损坏。修服务器配置改物理网数据透视表卡GROlinux重启命令和聚合口GRO配置一致后问题解决。

5.综述

通常情况下,网卡Offload功能只要网卡支持,默认都是开启的。网卡Offload功能在提升服务器处理性能方面功不可没,但是在开启offload功能时,要分析服务器业务特性,按需开启。在处理大包导致业务异常等问题时,可以考虑优先排查网卡offload特性配置,如物理网卡和逻辑口(如聚合口)相关offload特性状态配置是否一致等;其数据分析师次可通过修改offload状态尝试解决问题。

除了借助网卡的Offload特性提升服务器大包处理性能外,诸如RSS(Receive Side Scaling)等网卡驱动技术也在不失为服务器是什么一种不错的选择。在多核系统中,如果服务器网卡支持且使能了RSS,那么网卡将接收到属于同一个TCP连接的数据进程分成多个处理队列,分散给多个处理器或者物理核处理,从而有效提升处理器处理效率。