[go: up one dir, main page]

CN103200085B - 一种实现vxlan报文线速收发的方法及系统 - Google Patents

一种实现vxlan报文线速收发的方法及系统 Download PDF

Info

Publication number
CN103200085B
CN103200085B CN201310130270.XA CN201310130270A CN103200085B CN 103200085 B CN103200085 B CN 103200085B CN 201310130270 A CN201310130270 A CN 201310130270A CN 103200085 B CN103200085 B CN 103200085B
Authority
CN
China
Prior art keywords
vxlan
message
buffering area
virtual machine
receiving
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310130270.XA
Other languages
English (en)
Other versions
CN103200085A (zh
Inventor
陈乔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Chengxiang Technology Co ltd
Original Assignee
BEIJING AVIC INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING AVIC INFORMATION TECHNOLOGY Co Ltd filed Critical BEIJING AVIC INFORMATION TECHNOLOGY Co Ltd
Priority to CN201310130270.XA priority Critical patent/CN103200085B/zh
Publication of CN103200085A publication Critical patent/CN103200085A/zh
Application granted granted Critical
Publication of CN103200085B publication Critical patent/CN103200085B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明适用于网络数据处理领域,提供了一种实现VXLAN报文线速收发的方法及系统,所述方法包括:虚拟机应用程序调用VXLAN接口库打开网卡设备端口;VXLAN接口库在用户空间分配DMA缓冲区队列,并向网卡驱动传递缓冲区地址;网卡扩展驱动程序将收到的VXLAN报文写入DMA缓冲区,接口库函数将收到的报文进行VXLAN协议解封装后提交给虚拟机应用程序;虚拟机应用程序调用接口库函数发送报文,接口库函数将报文进行VXLAN封装后写入DMA缓冲区,网卡扩展驱动程序根据目的地址转发。本发明在不更换硬件设备的情况下,在云计算环境中实现对VXLAN报文的实时处理,有效降低了VXLAN报文处理的成本。

Description

一种实现VXLAN报文线速收发的方法及系统
技术领域
本发明属于网络数据处理领域,尤其涉及一种实现VXLAN报文线速收发的方法及系统。
背景技术
VLAN技术受到12位标签的限制,最多只能在一个网络中提供4096个虚拟子网。在多租户的云计算网络中,对虚拟网络的需求数量远远超过VLAN的能力,因此以VMWARE、CISCO为代表的厂家提出了VXLAN的实现架构,可以最多提供1600万个虚拟网络,从而彻底解决了这个问题。
现有技术中,实现VXLAN架构,一般需要服务器升级并安装相关厂家的软硬件套件,且网络性能受到软硬件性能的限制,既增加成本,又无法保证QoS。
发明内容
本发明实施例提供一种实现VXLAN报文线速收发的方法,旨在解决上述问题。
本发明实施例是这样实现的,一种实现VXLAN报文线速收发的方法,所述方法包括下述步骤:
虚拟机应用程序调用虚拟可扩展局域网VXLAN接口库打开网卡设备端口;
VXLAN接口库在用户空间分配直接内存存取DMA缓冲区队列,并向网卡扩展驱动程序传递缓冲区地址;
在接收VXLAN报文时,网卡扩展驱动程序将收到的VXLAN报文写入DMA缓冲区,供VXLAN接口库直接读取,VXLAN接口库函数将收到的报文进行VXLAN协议解封装后提交给虚拟机应用程序;
在发送VXLAN报文时,虚拟机应用程序调用VXLAN接口库函数发送报文,VXLAN接口库函数将报文进行VXLAN封装后写入DMA缓冲区,网卡扩展驱动程序根据目的地址转发,
其中,所述接口库方式为虚拟机应用程序提供VXLAN报文收发支持,实现云计算环境对1600万个虚拟局域网VLAN的支持,同时对虚拟机应用程序是透明的,通过DMA缓冲区队列方式处理VXLAN报文。
本发明实施例还提供一种实现VXLAN报文线速收发的系统,所述系统包括:
虚拟可扩展局域网VXLAN接口库,用于分配直接内存存取DMA缓冲区队列;读取DMA缓冲区数据,并进行VXLAN解封装,解析出VXLAN标识VNI号,转发给目的虚拟机VM,调用操作系统通用库函数发送带VXLAN封装的地址解析协议ARP报文检查目的地址;对报文进行VXLAN封装,并写入DMA缓冲区,调用网卡扩展驱动程序接口进行发送,其中,所述VXLAN接口库包括:
用户空间缓冲区分配和管理模块,用于初始化时,在用户空间建立多个所述DMA缓冲区,并向网卡扩展驱动程序提供缓冲区控制地址;
应用程序调用接口模块,用于为虚拟机应用程序提供调用接口函数,当虚拟机应用程序收发VXLAN报文时,只需调用对应的接口函数;
VXLAN协议处理模块,用于VXLAN报文的封装、解封装、读写缓冲区、L2范数学习;
网卡扩展驱动程序,用于读取DMA缓冲区数据,并输出至网卡的物理端口;接收以本机硬件地址MAC地址为目的地址的VXLANARP报文,写入DMA缓冲区,
其中,所述接口库方式为虚拟机应用程序提供VXLAN报文收发支持;实现云计算环境对1600万个虚拟局域网VLAN的支持,同时对虚拟机应用程序是透明的,通过DMA缓冲区队列方式处理VXLAN报文。
本发明实施例在不更换硬件设备的情况下,在云计算环境中实现对VXLAN报文的实时处理,有效降低了VXLAN报文处理的成本。
附图说明
图1是本发明实施例提供的实现VXLAN报文线速收发的方法流程图;
图2是本发明实施例提供的实现VXLAN报文线速收发的系统结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例使用DMA缓冲区队列处理VXLAN报文,解决了报文收发效率问题,不需要使用专用VXLAN协议处理芯片,实现了在通用设备上调用VXLAN功能,并且不新增网卡设备,即可实现对VXLAN报文和普通报文的兼容处理,极大降低了成本。
图1为本发明实施例提供的VXLAN报文线速收发的方法流程图,详述如下:
在步骤S101中,虚拟机应用程序调用VXLAN接口库打开网卡设备端口;
在步骤S102中,VXLAN接口库在用户空间分配DMA缓冲区队列,并向网卡扩展驱动程序传递缓冲区地址;
在步骤S103中,在接收VXLAN报文时,网卡扩展驱动程序将收到的VXLAN报文写入DMA缓冲区,供接口库直接读取,接口库函数将收到的报文进行VXLAN协议解封装后提交给虚拟机应用程序;
在步骤S104中,在发送VXLAN报文时,虚拟机应用程序调用接口库函数发送报文,接口库函数将报文进行VXLAN封装后写入DMA缓冲区,网卡扩展驱动程序根据目的地址转发。
在本发明实施例中,在非虚拟机应用程序收发报文时,仍调用系统默认的库函数,网卡扩展驱动程序不对其进行VXLAN的封装和解封装处理。网卡扩展驱动程序同时支持对VXLAN报文和普通报文的收发。
在本发明实施例中,通过接口库方式为虚拟机应用程序提供VXLAN报文收发支持;实现云计算环境对1600万个VLAN的支持,同时对虚拟机应用程序基本上是透明的。
本发明实施例中,虚拟机应用程序发送VXLAN报文的实现方法,详述如下:
1.虚拟机应用程序调用VXLAN接口库发送报文;
2.VXLAN接口库分配DMA缓冲区队列;
3.VXLAN接口库调用intel网卡扩展驱动接口,将分配好的DMA缓冲区地址传递给intel网卡扩展驱动;
4.VXLAN接口库调用操作系统通用库函数发送带VXLAN封装的ARP报文检查目的地址,如果是IP多播,那么应该发送到VXLAN组播地址,否则,如果MAC地址是已知的,直接单播到对应的IP;如果未知,则广播到VXLAN网关地址;
5.intel网卡扩展驱动读取DMA缓冲区数据,并输出到网卡的物理端口;
6.接收方主机收到组播报文后,发现该报文的目的MAC地址是自己,即开始VXLAN报文解析并找到目的VNI号,确定目的虚拟机VM,转发给目的VM。目的VM使用自己的MAC地址响应发送方,接收方主机使用VXLAN协议封装这个响应,并使用IP路由返回发送方;
7.VXLAN接口库保存VNI与IP地址对照表;
8.VXLAN接口库使用单播方式对报文进行VXLAN封装,将VXLAN报文写入缓冲区,调用intel网卡扩展驱动接口进行发送;
9.intel网卡扩展驱动读取DMA缓冲区数据,并输出到网卡的物理端口;
10.接收方收到报文后,解析VXLAN报文解析并找到目的VNI号,确定目的虚拟机VM,转发给目的VM。
在本发明实施例中,虚拟机应用程序接收VXLAN报文的实现方法,详述如下:
1.虚拟机应用程序调用VXLAN接口库监听指定的UDP端口,同时注册本虚拟机的VNI;
2.VXLAN接口库分配DMA缓冲区队列;
3.VXLAN接口库调用intel网卡扩展驱动接口,将分配好的DMA缓冲区地址传递给intel网卡扩展驱动;
4.intel网卡扩展驱动收到以本机MAC为目的地址的VXLANARP报文,写入DMA缓冲区;
5.VXLAN接口库读取DMA缓冲区数据,并进行VXLAN解封装,解析出VNI号,转发给目的虚拟机VM;
6.目的虚拟机VM回复响应报文,VXLAN接口库对响应报文进行VXLAN封装,并写入DMA缓冲区,调用intel网卡扩展驱动接口进行发送;
7.intel网卡扩展驱动读取DMA缓冲区数据,并输出到网卡的物理端口。
图2为本发明实施例提供的实现VXLAN报文线速收发的系统结构图,详述如下:
VXLAN接口库21分配DMA缓冲区队列;读取DMA缓冲区数据,并进行VXLAN解封装,解析出VNI号,转发给目的虚拟机VM,调用操作系统通用库函数发送带VXLAN封装的ARP报文检查目的地址;对报文进行VXLAN封装,并写入缓冲区,调用intel网卡扩展驱动接口进行发送。
网卡扩展驱动程序22读取DMA缓冲区数据,并输出至网卡的物理端口;接收以本机MAC为目的地址的VXLANARP报文,写入DMA缓冲区。
在本发明实施例中,VXLAN接口库21包括用户空间缓冲区分配和管理模块211、应用程序调用接口模块212,以及VXLAN协议处理模块213。其中:
用户空间缓冲区分配和管理模块211在用户应用调用接口库初始化时,在用户空间建立多个DMA缓冲区,并向intel网卡扩展驱动提供缓冲区控制地址,由于intel网卡支持多缓冲区队列技术,可以将报文均匀分配到各缓冲区,从而实现接口库的多线程负载均衡。
应用程序调用接口模块212为虚拟机应用程序提供调用接口函数,当虚拟机应用程序收发VXLAN报文时,只需调用对应的接口函数。接口通过虚拟机管理控制程序与应用程序所在的VM绑定,并分配给每个VM虚拟机一个VNI(VXLAN标识)。
VXLAN协议处理模块213负责VXLAN报文的封装、解封装、读写缓冲区、L2学习。当接收到虚拟机应用程序的VXLAN报文时,首先发送ARP报文检查目的地址,如果是IP多播,那么应该发送到VXLAN组播地址,否则,如果MAC地址是已知的,直接单播到对应的IP;如果未知,则广播到VXLAN网关地址。VXLAN封装操作为顺序添加VXLAN包头、UDP包头、IP包头。VXLAN解封装操作为对收到的UDP报文去除IP包头、UDP包头、VXLAN包头,返回给VM应用程序。当收到VXLAN广播包时,记录VXLAN报文携带的VNI和IP地址对照表。
在本发明实施例中,Intel网卡扩展驱动程序22是在原有驱动的基础上进行了功能扩展,使其支持DMA缓冲区零拷贝模式和普通网卡模式的混合使用。Intel网卡扩展驱动程序22包括DMA缓冲区控制模块221、混合报文收发模块222。其中:
DMA缓冲区控制模块221负责从VXLAN接口库接收DMA缓冲区队列的控制地址;根据获取的DMA缓冲区数分配线程,确保每个缓冲区写入的数据同源同宿。
混合报文收发模块222根据调用接口的区别,采用DMA缓冲区零拷贝模式和普通网卡模式两种方式处理报文,对于前者,从DMA缓冲区读写报文,对于后者,从内核空间读写报文;这种方式保证网卡可以同时支持普通应用和VXLAN应用。
本发明实施例使用DMA缓冲区零拷贝模式收发VXLAN报文的目的是解决由于虚拟机应用调用VXLAN接口库新增的传输时延,保证VXLAN业务的QoS。
本发明实施例使用DMA缓冲区队列处理VXLAN报文,解决了报文收发效率问题,不需要使用专用VXLAN协议处理芯片,实现了在通用设备上调用VXLAN功能,并且不新增网卡设备,即可实现对VXLAN报文和普通报文的兼容处理,极大降低了成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种实现VXLAN报文线速收发的系统,其特征在于,所述系统包括:
虚拟可扩展局域网VXLAN接口库,用于分配直接内存存取DMA缓冲区队列;读取DMA缓冲区数据,并进行VXLAN解封装,解析出VXLAN标识VNI号,转发给目的虚拟机VM,调用操作系统通用库函数发送带VXLAN封装的地址解析协议ARP报文检查目的地址;对报文进行VXLAN封装,并写入DMA缓冲区,调用网卡扩展驱动程序接口进行发送,其中,所述VXLAN接口库包括:
用户空间缓冲区分配和管理模块,用于初始化时,在用户空间建立多个所述DMA缓冲区,并向网卡扩展驱动程序提供缓冲区控制地址;
应用程序调用接口模块,用于为虚拟机应用程序提供调用接口函数,当虚拟机应用程序收发VXLAN报文时,只需调用对应的接口函数;
VXLAN协议处理模块,用于VXLAN报文的封装、解封装、读写缓冲区、L2范数学习;
网卡扩展驱动程序,用于读取DMA缓冲区数据,并输出至网卡的物理端口;接收以本机硬件地址MAC地址为目的地址的VXLANARP报文,写入DMA缓冲区,
其中,所述接口库方式为虚拟机应用程序提供VXLAN报文收发支持;实现云计算环境对1600万个虚拟局域网VLAN的支持,同时对虚拟机应用程序是透明的,通过DMA缓冲区队列方式处理VXLAN报文。
2.如权利要求1所述的系统,其特征在于,所述网卡扩展驱动程序包括:
DMA缓冲区控制模块,用于从所述VXLAN接口库接收DMA缓冲区队列的控制地址;根据获取的DMA缓冲区数分配线程,确保每个缓冲区写入的数据同源同宿;
混合报文收发模块,用于根据调用接口的区别,采用DMA缓冲区零拷贝模式和普通网卡模式两种方式处理报文。
3.一种实现VXLAN报文线速收发的方法,其特征在于,所述方法包括下述步骤:
虚拟机应用程序调用虚拟可扩展局域网VXLAN接口库打开网卡设备端口;
VXLAN接口库在用户空间分配直接内存存取DMA缓冲区队列,并向网卡扩展驱动程序传递缓冲区地址;
在接收VXLAN报文时,网卡扩展驱动程序将收到的VXLAN报文写入DMA缓冲区,供VXLAN接口库直接读取,VXLAN接口库函数将收到的报文进行VXLAN协议解封装后提交给虚拟机应用程序;
在发送VXLAN报文时,虚拟机应用程序调用VXLAN接口库函数发送报文,VXLAN接口库函数将报文进行VXLAN封装后写入DMA缓冲区,网卡扩展驱动程序根据目的地址转发,
其中,所述接口库方式为虚拟机应用程序提供VXLAN报文收发支持,实现云计算环境对1600万个虚拟局域网VLAN的支持,同时对虚拟机应用程序是透明的,通过DMA缓冲区队列方式处理VXLAN报文。
CN201310130270.XA 2013-04-16 2013-04-16 一种实现vxlan报文线速收发的方法及系统 Expired - Fee Related CN103200085B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310130270.XA CN103200085B (zh) 2013-04-16 2013-04-16 一种实现vxlan报文线速收发的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310130270.XA CN103200085B (zh) 2013-04-16 2013-04-16 一种实现vxlan报文线速收发的方法及系统

Publications (2)

Publication Number Publication Date
CN103200085A CN103200085A (zh) 2013-07-10
CN103200085B true CN103200085B (zh) 2016-05-25

Family

ID=48722449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310130270.XA Expired - Fee Related CN103200085B (zh) 2013-04-16 2013-04-16 一种实现vxlan报文线速收发的方法及系统

Country Status (1)

Country Link
CN (1) CN103200085B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012261B2 (en) 2014-09-19 2021-05-18 Hewlett Packard Enterprise Development Lp Associating VXLANs with tunnels

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601427B (zh) 2013-10-31 2018-03-06 新华三技术有限公司 数据中心网络中的报文转发方法及装置
CN103647853B (zh) * 2013-12-04 2018-07-03 华为技术有限公司 一种在VxLAN中发送ARP报文发送方法、VTEP及VxLAN控制器
US9124536B2 (en) * 2013-12-12 2015-09-01 International Business Machines Corporation Managing data flows in overlay networks
US9413612B2 (en) * 2013-12-24 2016-08-09 Cisco Technology, Inc. Automatic resolution of virtual network instance to VLAN mapping conflicts in dual-homed deployments in a dynamic fabric automation network architecture
CN104243630B (zh) * 2014-09-29 2017-10-03 新华三技术有限公司 Vxlan网络中的mac地址学习方法及装置
CN106209689B (zh) 2015-05-04 2019-06-14 新华三技术有限公司 从vxlan至vlan的组播数据报文转发方法和设备
CN106209636B (zh) 2015-05-04 2019-08-02 新华三技术有限公司 从vlan至vxlan的组播数据报文转发方法和设备
CN106209648B (zh) 2015-05-04 2019-06-14 新华三技术有限公司 跨虚拟可扩展局域网的组播数据报文转发方法和设备
CN106161115A (zh) * 2016-09-23 2016-11-23 杭州迪普科技有限公司 一种应用于vxlan的设备管理方法及装置
CN108228309B (zh) 2016-12-21 2021-11-23 腾讯科技(深圳)有限公司 基于虚拟机的数据包发送和接收方法及装置
CN108259291B (zh) * 2016-12-29 2021-01-29 华为技术有限公司 Vxlan报文处理方法、设备及系统
CN107360096B (zh) * 2017-08-14 2020-08-25 北京青云科技股份有限公司 一种vxlan报文的转发方法及系统
CN108183919B (zh) * 2018-01-18 2020-09-08 华为技术有限公司 报文转发方法及vxlan网关
CN109361723B (zh) * 2018-04-18 2021-08-31 上海锐智集数电子有限公司 一种udp有效报文发送时序控制方法
CN110943941B (zh) * 2019-12-06 2022-03-11 北京天融信网络安全技术有限公司 一种报文接收方法、网卡及电子设备
CN113630341B (zh) * 2021-08-03 2023-06-06 武汉绿色网络信息服务有限责任公司 数据信息处理的方法和服务器
CN115225525A (zh) * 2022-07-07 2022-10-21 金锐软件技术(杭州)有限公司 一种基于互联网的网络流量管理系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009118106A (ja) * 2007-11-06 2009-05-28 Mitsubishi Electric Corp ネットワーク装置
JP5353278B2 (ja) * 2009-02-06 2013-11-27 富士通株式会社 通信装置
US9118576B2 (en) * 2011-01-06 2015-08-25 Marvell Israel (M.I.S.L) Ltd. Network device with a programmable core
CN102769557B (zh) * 2012-08-09 2015-08-12 深圳市共进电子股份有限公司 一种业务数据报文的传输方法及装置
CN102970227B (zh) * 2012-11-12 2016-03-02 盛科网络(苏州)有限公司 在asic中实现vxlan报文转发的方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012261B2 (en) 2014-09-19 2021-05-18 Hewlett Packard Enterprise Development Lp Associating VXLANs with tunnels

Also Published As

Publication number Publication date
CN103200085A (zh) 2013-07-10

Similar Documents

Publication Publication Date Title
CN103200085B (zh) 一种实现vxlan报文线速收发的方法及系统
CN107278359B (zh) 云计算系统中报文处理的方法、主机和系统
CN107278362B (zh) 云计算系统中报文处理的方法、主机和系统
US11184274B2 (en) Multi-cast support for a virtual network
CN104521198B (zh) 用于虚拟以太网接口绑定的系统和方法
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
CN105577567B (zh) 基于Intel DPDK的网络数据包并行处理方法
US9112801B2 (en) Quantized congestion notification in a virtual networking system
CN104243269B (zh) 一种虚拟扩展局域网报文的处理方法及装置
US9008097B2 (en) Network interface controller supporting network virtualization
US8954992B2 (en) Distributed and scaled-out network switch and packet processing
CN102594660B (zh) 一种虚拟接口交换方法、装置及系统
WO2015058698A1 (en) Data forwarding
WO2016101288A1 (zh) 一种远程直接数据存取方法、设备和系统
WO2015058699A1 (en) Data forwarding
US11048535B2 (en) Method and apparatus for transmitting data packet based on virtual machine
CN102790777A (zh) 网络接口适配器注册方法及驱动设备、服务器
US9590855B2 (en) Configuration of transparent interconnection of lots of links (TRILL) protocol enabled device ports in edge virtual bridging (EVB) networks
US10708198B1 (en) Methods and apparatus to reduce packet flooding and duplicate packets in a multi-fabric virtual network
Ara et al. On the use of kernel bypass mechanisms for high-performance inter-container communications
CN114816651A (zh) 一种通信方法、装置以及系统
US9503278B2 (en) Reflective relay processing on logical ports for channelized links in edge virtual bridging systems
CN105939242B (zh) 实现虚拟系统的方法及装置
WO2020108292A1 (zh) 虚拟私有云通信系统、系统配置方法及控制器
CN115567464A (zh) 一种vxlan网络中的bum报文发送方法、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20190801

Address after: 710000 B Block 1601, 1603 and 1604, 99 Port Avenue, Xi'an International Port Area, Shaanxi Province

Patentee after: Xi'an Chengxiang Technology Co.,Ltd.

Address before: 100098 Yingdu Building A Block 6A, No. 48 Zhichun Road, Haidian District, Beijing

Patentee before: BEIJING AVIC INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160525

CF01 Termination of patent right due to non-payment of annual fee