法律状态公告日
法律状态信息
法律状态
2019-03-01
授权
授权
2017-01-11
实质审查的生效 IPC(主分类):H04L12/26 申请日:20160722
实质审查的生效
2016-12-14
公开
公开
技术领域
本发明涉及网络设备技术领域,尤其涉及一种VxLAN数据包封装方法,以及一种使用物理网卡发送VxLAN数据包的卸载方法。
背景技术
Overlay网络是基于现有技术中的物理网络基础之上建立的一张应用层网络,将网络资源通过软件量化的方式表现出来,这样数据中心不用关心实际网络设备是如何互联的,网络配置如何,只要关心能提供的端口和带宽就可以完成业务的部署。Overlay网络可以很好地解决数据中心网络目前面临的主要问题,是未来数据中心网络的主流技术,代表了数据中心网络技术的发展方向。VxLAN是overlay网络的主要实现技术。
VxLAN(Virtual Extensible Local Area Network)是一种将二层报文用三层协议进行封装的技术,可以对二层网络在三层范围进行扩展。每个覆盖域被称为VxLANsegment,它的ID是由位于VxLAN数据包头中的VxLAN Network Identifier(VNI)标识的。VNI字段包含24bits,故segments最大数量为2的24次方,约合16M个。并且只有在相同VxLANsegment内的虚拟机之间才可以相互通信。现有技术中的VxLAN数据包的封装形式如图1所示。
在Overlay网络中,如果不能用硬件对VxLAN数据包的关键操作例如封包、解包、校验和的计算/验证和数据包分片等进行处理,只是单纯用OS和CPU来计算,这将占用大部分计算处理资源,影响整个网络的性能。
检验和(checksum),在数据处理和数据通信领域中,用于校验目的地一组数据项的和。通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。现在的网卡一般都是支持普通以太网数据包的校验和计算和分片的硬件卸载,但是不支持VxLAN数据包内层的校验和的计算和分片卸载。
有鉴于此,有必要对现有技术中的VxLAN数据包的封装技术予以改进,以解决上述问题。
发明内容
本发明的目的在于公开一种VxLAN数据包封装方法,用以提高VxLAN网络的吞吐率并减少延迟;本发明的另一个目的在于公开一种使用物理网卡发送VxLAN数据包的卸载方法,用以降低普通网卡的发送数据包的卸载能力,并降低对CPU及操作系统计算资源的消耗。
为实现上述目的之一,本发明提供了一种VxLAN数据包封装方法,其特征在于,包括:利用物理网卡的驱动程序计算Outer MAC Header、Outer IP Header、UPD Header、VxLAN Header以及Inner MAC Header的长度,并将重新封装为一个伪以太网包头;然后将伪以太网包头与Inner IP Header、Inner L4Header及Inner Payload4Header进行整体封装。
为实现第二个发明目的,本发明还提供了一种使用物理网卡发送VxLAN数据包的卸载方法,包包括:利用物理网卡的驱动程序中计算Outer MAC Header、Outer IP Header、UPD Header、VxLAN Header以及Inner MAC Header的长度,并将重新封装为一个伪以太网包头;分别计算Inner IP Header、Inner L4Header及Inner Payload4Header的长度,并将伪以太网包头与Inner IP Header、Inner L4Header及Inner Payload4Header进行整体封装;将所述Outer MAC Header、Inner IP Header、Inner L4Header及InnerPayload4Header的长度作为配置参数,下发至物理网卡的驱动程序,以对物理网卡中的寄存器进行配置。
作为本发明的进一步改进,还包括使用物理网卡的驱动程序对VxLAN Header执行校验和的计算步骤,所述校验和为0。
与现有技术相比,本发明的有益效果是:在上述发明中,通过对VxLAN数据包的结构进行重新构造,实现了使用普通物理网卡来卸载VxLAN内层校验和计算和处理数据包分片,从而减少了CPU及操作系统的计算开销,提高了VxLAN网络的吞吐率并能够有效的减少延迟的发生。
附图说明
图1为现有技术中VxLAN数据包封装结构的示意图;
图2为在本发明中的VxLAN数据包封装结构的示意图;
图3为本发明一种使用物理网卡发送VxLAN数据包的卸载方法的流程图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
在封装一个VxLAN数据包时,外层IP数据包的校验和可以通过软件计算,这个只是和IP首部长度有关,计算过程简单;根据VxLAN RFC定义的规格,外层数据包的UDP头部的校验和可以填充为0,因此只是需要计算内层IP首部的校验和和内层传输层的校验和即可,但影响网络性能的是内层传输层(UDP/TCP)的校验和的计算。一个UDP/TCP的检验和所需要用到的所有信息,包括三个部分:1)UDP/TCP伪首部;2)UDP/TCP首部;3)UDP/TCP的数据部分。所以,如果用软件去计算校验和,数据部分长度越长时候,那么将占用较多的CPU计算资源。
如图2所示,在本实施方式中,二层首部长度l2_len=outer_l2_len+outer_l3_len+outer_udp_len+vxlan_hdr_len+inner_l2_len。并且IP层是内层IP层,所以l3_len也就是inner_l3_len,数据包的传输层是内层的传输层,所以l4_len也就是inner_l4_len;数据包数据部分的长度是内层的数据部分长度data_len=inner_data_len。把计算出来的l2_len、l3_len、l4_len和data_len作为参数传递给网卡驱动程序去配置硬件相应的寄存器,这样网卡在发送VxLAN数据包就会按照重新定义的伪数据包的格式去做校验和(checksum)的计算和数据包的分片,从而使用了普通网卡的发送数据包的卸载能力,这样可以释放CPU的资源去做真正要做的应用程序的计算工作。
如图3所示,本实施方式还公开了一种使用普通物理网卡发送VxLAN数据包的卸载方法,并包括以下步骤:
在本实施方式中,普通网卡选用Intel 82576 1G或者Intel 82599 10G。
P101:在带有物理网卡的服务器中的启动应用程序发送VxLNA协议数据报文;
P102:在驱动程序中分析接收到的应用程序发送的VxLAN数据包,用软件计算外层IP首部校验和,和设置外层的UDP首部校验和为0;
P103:在标准的VxLAN数据报文的基础上,组装伪以太网数据报文,l2_len=outer_l2_len+outer_l3_len+outer_udp_len+vxlan_hdr_len+inner_l2_len,l3_len=inner_l3_len,l4_len=inner_l4_len,data_len=inner_data_len;
P104:然后把重新计算得到l2_len、l3_len、l4_len、data_len的这些伪以太网数据报文的各首部长度作为配置参数在网卡驱动中配置给网卡硬件寄存器。
P105:待伪以太网数据报文发送API返回。
流程结束。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
机译: 在VXLAN,VTEP和VXLAN控制器中发送ARP数据包的发送方法
机译: VXLAN数据包封装和策略执行方法,以及VXLAN设备和系统
机译: VXLAN数据包处理方法,设备和系统