Vxlan与网卡offload性能

背景

由于数据链路层MTU的限制,发送端TCP/UDP数据在交付到IP层时需要与MTU相匹配,TCP数据不能超过mss,较长的UDP需要分片(Fragmentation)以满足MTU要求;接收端协议栈也是从网卡接收上述不超过MTU的小帧并重组,早期上述数据分片和组合的工作均由CPU完成,导致占用CPU资源且效率不高。

offload 是将本来该操作系统进行的一些数据包处理(如分片、重组等)放到网卡硬件中去做,降低系统 CPU 消耗的同时提高处理的性能。

解释

发送模式

TSO (tcp-segmentation-offload)

从 名字来看很直观,就是把tcp分段的过程转移到网卡中进行。当网卡支持TSO机制时,可以直接把不超过滑动窗口大小的payload下传给协议栈,即使数 据长度大于MSS,也不会在TCP层进行分段,同样也不会进行IP分片,而是直接传送给网卡驱动,由网卡驱动进行tcp分段操作,并执行checksum 计算和包头、帧头的生成工作。

UFO(udp-fragmentation-offload)

是一种专门针对udp协议的特性,主要机制就是将IP分片的过程转移到网卡中进行,用户层可以发送任意大小的udp数据包(udp数据包总长度最大不超过64k),而不需要协议栈进行任何分片操作。目前貌似没找到有支持UFO机制的网卡,主要是应用在虚拟化设备上。

GSO(generic-segmentation-offload)

相 对于TSO和UFO,GSO机制是针对所有协议设计的,更为通用。同时,与TSO、UFO不同的是,GSO主要依靠软件的方式实现,对于网卡硬件没有过多 的要求。其基本思想就是把数据分片的操作尽可能的向底层推迟直到数据发送给网卡驱动之前,并先检查网卡是否支持TSO或UFO机制,如果支持就直接把数据 发送给网卡,否则的话再进行分片后发送给网卡,以此来保证最少次数的协议栈处理,提高数据传输和处理的效率。

接收模式

LRO/GRO(large-receive-offload)

在网卡驱动层面上将接受到的多个TCP数据包聚合成一个大的数据包,然后上传给协议栈处理。这样可以减少协议栈处理的开销,提高系统接收TCP数据的能力和效率。

generic-receive-offload,基本思想和LRO类似,只是改善了LRO的一些缺点,比LRO更加通用。目前及后续的网卡都采用GRO机制,不再使用LRO机制。

操作

在Linux中输入如下命令可查看网卡的offload特性状态:


ethtool –k eth0


Features for eth0:

rx-checksumming: on

tx-checksumming: on

tx-checksum-ipv4: on

tx-checksum-ip-generic: off [fixed]

tx-checksum-ipv6: on

tx-checksum-fcoe-crc: on [fixed]

tx-checksum-sctp: on

scatter-gather: on

tx-scatter-gather: on

tx-scatter-gather-fraglist: off [fixed]

tcp-segmentation-offload: on

tx-tcp-segmentation: on

tx-tcp-ecn-segmentation: off [fixed]

tx-tcp6-segmentation: on

udp-fragmentation-offload: off [fixed]

generic-segmentation-offload: on

generic-receive-offload: on

large-receive-offload: off

rx-vlan-offload: on

tx-vlan-offload: on

ntuple-filters: off

receive-hashing: on

highdma: on [fixed]

rx-vlan-filter: on [fixed]

vlan-challenged: off [fixed]

tx-lockless: off [fixed]

netns-local: off [fixed]

tx-gso-robust: off [fixed]

tx-fcoe-segmentation: on [fixed]

tx-gre-segmentation: off [fixed]

tx-ipip-segmentation: off [fixed]

tx-sit-segmentation: off [fixed]

tx-udp_tnl-segmentation: on

tx-mpls-segmentation: off [fixed]

fcoe-mtu: off [fixed]

tx-nocache-copy: off

loopback: off [fixed]

rx-fcs: off [fixed]

rx-all: off [fixed]

tx-vlan-stag-hw-insert: off [fixed]

rx-vlan-stag-hw-parse: off [fixed]

rx-vlan-stag-filter: off [fixed]

busy-poll: on [fixed]

可以通过如下命令修改部分属性


ethtool -K eth1 gso on     //开启gso

ethtool -K eth1 tso off     //关闭tso

ethtool -K eth1 gro off    //关闭gro

测试

关闭/关闭GRO,测试接收端性能。MTU=1400,使用netperf发送TCP数据,开启GRO带宽比关闭要高3倍。

开启/关闭GSO,测试发送端性能。MTU=1400,使用netperf发送TCP数据,开启GSO比关闭GSO相比CPU降低很多。


对Vxlan的支持

虽然用户使用TCP进行通信,但是由于Vxlan的机制在数据帧之前增加了UPD的封装,导致到达网卡的数据包实际为UDP报文。

支持Vxlan的网卡可以对Vxlan报文进行offload的支持,若应用数据为TCP,依然可以在接收端实现GRO。

https://software.intel.com/en-us/blogs/2015/01/29/optimizing-the-virtual-networks-with-vxlan-overlay-offloading

时间: 2024-11-03 22:08:19

Vxlan与网卡offload性能的相关文章

网络数据包分析 网卡Offload

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

[daily][dpdk] 网卡offload识别包类型;如何模拟环境构造一个vlan包

第一部分 硬件识别包类型 网卡,是可以识别包类型的.在dpdk的API中.识别完之后,存在这个结构里: struct rte_mbuf { ...... union { uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */ struct { uint32_t l2_type:4; /**< (Outer) L2 type. */ uint32_t l3_type:4; /**< (Outer) L3 type. */

虚拟网卡性能压测

本文主要介绍多种场景下,虚拟机网卡的压测及性能对比,根据openstack实际的部署方式,虚拟机网卡压测场景包括 SRIOV(passthrough).SRIOV+Macvtap(passthrough).Vlan+Linux bridge.OVS+Linux Bridge,分别从协议类型(TCP/UDP).Message Size方向压测虚拟机网卡的时延.发包率.吞吐量. 压测环境 host1:  服务器型号:IBM x3550m2 CPU型号:Intel(R) Xeon(R) CPU*8,每

x86服务器中网络性能分析与调优 转

x86服务器中网络性能分析与调优 2017-04-05 巨枫 英特尔精英汇 [OpenStack 易经]是 EasyStack 官微在2017年新推出的技术品牌,将原创技术干货分享给您,本期我们讨论 [x86服务器中网络性能分析与调优] 那些事! >> 网络性能理论极限 网络数据包处理的性能指标,一般包括吞吐.延时.丢包率.抖动等. 数据包有大有小,数据包的大小对这些性能指标有很大的影响. 一般认为服务器处理能力很强,不是数据包处理的瓶颈,而通过物理线路能够传送数据包的最大速率,即线速(Wir

Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网

http://www.cnblogs.com/sammyliu/p/4985907.html 1. 基础知识 1.1 VXLAN 和 Linux 以及 Linux bridge 的关系 VXLAN 是一个新兴的SDN 标准,它定义了一种新的 overlay 网络,它主要的创造者是 VMware, Cisco 和 Arista.它被设计来消除虚拟化网络世界中的 VLAN 数目的限制.VXLAN 本身是一个多播标准,但是大多数的企业既不情愿启用多播,而且许多网络设备也不支持多播.因此,许多 VXLA

UCloud基于OpenvSwitch卸载的高性能25G智能网卡实践

伴随着电商等用户在双11.秒杀之类业务高峰期流量的迅猛增长,对虚拟机网络性能提升的需求日益迫切,25G网络逐渐成为一种标配.为了解决传统纯软件Virtual Switch方案带来的性能瓶颈,我们在调研了业界主流的智能网卡方案之后,最终决定采用基于OpenvSwitch的开源方案,并成功在公有云落地应用. 相较于传统方案,新的智能网卡方案在整个switch的转发上性能为小包24Mpps,单VF的接收性能达15Mpps,网卡整体性能提升10倍以上.应用于云主机后,可将其网络能力提升至少4倍,时延降低

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

iperf对10Gb, 40Gb, 56Gb的网卡的性能测试

cmm03 刀片 和 cmm02刀片的 cpu的型号是一样的: 2颗6核的物理CPU,开启了超线程 CPU型号: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz cmm03上有10Gb, 56Gb 两张网卡, cmm02上有40Gb的网卡. 用iperf测试三种网卡的性能,由于2KB包长是最后江门取数的典型包长,下面的三组测试都是在2KB包长下,不同线程数时的带宽. 10Gb的网卡.在4个线程时,网卡性能达到最大值9.4Gb/s. 56Gb的网卡,在8个线程时

成人网站性能提升 20 倍之经验谈 [Python]

色情业是个大行业.互联网上没有多少网站的流量能和最大的色情网站相匹敌. 要搞定这巨大的流量很难.更困难的是,在色情网站上提供的很多内容都是低延迟的实时流媒体而不是简单的静态视频.但是对于所有碰到过的挑战,我很少看到有搞定过它们的开发人员写的东西.所以我决定把自己在这方面的经验写出来.  问题是什么? 几年前,我正在为当时全世界访问量排名26的网站工作 - 这里不是说的色情网站排名,而是全世界排名. 当时,该网站通过RTMP(Real Time Messaging protocol)协议响应对色情