CN101645832B - 一种基于fpga的虚拟机网络数据包处理方法 - Google Patents

一种基于fpga的虚拟机网络数据包处理方法 Download PDF

Info

Publication number
CN101645832B
CN101645832B CN200910083646XA CN200910083646A CN101645832B CN 101645832 B CN101645832 B CN 101645832B CN 200910083646X A CN200910083646X A CN 200910083646XA CN 200910083646 A CN200910083646 A CN 200910083646A CN 101645832 B CN101645832 B CN 101645832B
Authority
CN
China
Prior art keywords
virtual machine
data packets
packet
fpga
network
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.)
Active
Application number
CN200910083646XA
Other languages
English (en)
Other versions
CN101645832A (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.)
Dawning Information Industry Beijing Co Ltd
Dawning Information Industry Co Ltd
Original Assignee
Dawning Information Industry Beijing 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 Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN200910083646XA priority Critical patent/CN101645832B/zh
Publication of CN101645832A publication Critical patent/CN101645832A/zh
Application granted granted Critical
Publication of CN101645832B publication Critical patent/CN101645832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于FPGA硬件的虚拟机网络数据包处理方法,使用FPGA硬件对数据包进行卸载过滤,将数据包从网卡的PHY传送给MAC和网络滤波引擎,MAC和网络滤波引擎对数据包进行过滤和分派,将同虚拟机编号的数据包存放到相应内存队列中,协议处理器对内存队列中的数据包进行卸载过滤,将同队列中数据包按端口号、IP地址、线程序号重新排列、整合成大数据包,并将大数据包存放到内存的大包队列中,当内存大包队列中的大数据包达到预定长度后,DMA控制器将大数据包通过PCIe传给虚拟机;本方法将数据包卸载过滤工作放到硬件中完成,完全解放了CPU,减少CPU资源占用,同时由于硬件处理速度远高于软件处理速度,大大提高了网络吞吐速度,缩短了数据处理的响应时间,减少丢包情况的出现。

Description

一种基于FPGA的虚拟机网络数据包处理方法
技术领域
本实用新型提供了一种网络数据包的处理方法,具体涉及一种基于FPGA硬件的虚拟机网络数据包处理方法。
技术背景
在虚拟机网络应用领域,传输给不同虚拟机的数据包绝大部分都是1.5KB左右的小数据包,这些数据包最终的目的地是操作***中不同端口的应用程序,应用程序收到每个数据包都要进行响应来处理这个数据包。为了减少应用程序的响应次数,软件中将序号连续的同一个端口的数据包组合成一个大的数据包,然后再交给应用程序进行响应处理。但在每一个操作***中会同时存在几个甚至几十上百个应用程序在同时工作,而在虚拟机网络环境下,又存在几十甚至上百个操作***。这样,为了组合这些大包需要消耗大量的CPU资源,由于CPU资源大量被消耗,也使得数据包的响应时间增长,通讯性能降低。尤其是在10G以太网逐渐普及的今天,CPU对虚拟机网络中的数据包组合大包已经成为网络通讯的瓶颈。
发明内容
为了解决上述缺点,降低CPU的使用率和数据包响应时间,本发明提供了一种基于FPGA的虚拟机网络数据包处理方法,在网卡上设有FPGA,所述FPGA包括:MAC模块、网络滤波引擎、协议处理器、内存模块、描述器引擎、DMA控制器、PCIe模块、flash模块;特征在于,所述内存模块内创建一组原数据包队列和一组新数据包队列,所述原数据包队列给个虚拟机划分一个接收区,所述新数据打包队列给每个虚拟机划分一个接收区,所述方法采用如下步骤:
A、网卡将接收的数据包由网卡的物理层端口传给所述MAC模块和网络滤波引擎。
B、所述MAC模块和网络滤波引擎对接收到的数据包进行过滤和派分,所述MAC模块过滤出数据包的虚拟机编号,所述网络滤波引擎按照虚拟机编号对接收到的数据包进行分派,将同虚拟机编号的数据包存放到内存模块的原数据包队列的相应虚拟机接收区中。
C、所述协议处理器对内存模块的原数据包收队列中数据包进行卸载过滤,卸载过滤出所述数据包的端口号、IP地址、线程序号,将所述原数据包队列中同一虚拟机接收区内的数据包根据端口号、IP地址、线程序号信息重新排列整合,并将整合后的新数据包存放所述内存模块的新数据包队列的相应虚拟机接收区中。
D、当所述内存模块的新数据包队列中的新数据包数到达预定长度数目后,所述DMA控制器将所述新数据包通过PCIe模块上传给相应的虚拟机。
本发明的进一步优选技术方案为:所述基于FPGA的虚拟机网络数据包处理方法中的网络滤波引擎还连接有SMBus,由SMBus对FPGA实现远程控制。
本发明的进一步优选技术方案为:所述基于FPGA的虚拟机网络数据包处理方法中的Flash模块与PCIe模块连接,所述FPGA的初始配置信息存放在Flash模块中。
本发明的进一步优选技术方案为:所述基于FPGA的虚拟机网络数据包处理方法中的FPGA的内存模块采用DDR2存储器。
本发明的进一步优选技术方案为:所述基于FPGA的虚拟机网络数据包处理方法中的Flash模块采用EEPROM存储器。
本发明的有益效果:利用FPGA硬件快速、高效的特点,将数据包卸载过滤的工作放到FPGA内部完成,完全解放了CPU的操作,降低了CPU的资源占用,同时由于硬件级别的处理速度远高于软件层次的处理速度,所以大大提高了网络吞吐的速度,同时缩短了数据的响应时间,提高数据包传输速度,避免了由于数据包处理响应时间过长出现的丢包情况,提高了通讯性能,尤其在虚拟机应用网络中大大节省了***资源的浪费,提高虚拟机网络中整体的数据处理速率。
附图及附图说明
图1本发明中FPGA内部功能模块结构示意图;
图2本发明方法与现有技术的效果对比图。
图3本发明中FPGA的内存模块分区示意图
具体实施方式
本发明在现有技术的基础上利用FPGA硬件快速、高效的特点,将数据包卸载过滤的工作直接放到FPGA内部完成的思路,使用FPGA内部逻辑,对接收到的数据包按照不同的端口、IP地址等信息进行重新排序,将满足条件的数据包放到同一个数据队列中,到达一定数目的数据长度后,上传给相应的虚拟机。
如图1所示,本发明提供一种基于FPGA的虚拟机网络数据包处理方法,在网卡上设置FPGA,FPGA包括:MAC模块、网络滤波引擎、协议处理器、内存模块、描述器引擎、DMA控制器、PCIe模块、Flash模块;如图3所示,在内存模块内创建一组原数据包队列和一组新数据包队列,原数据包队列给每个虚拟机划分一个接收区,新数据打包队列给每个虚拟机划分一个接收区。
其中A、首先网卡将接收的数据包由网卡的物理层端口传给MAC模块和网络滤波引擎。
B、MAC模块和网络滤波引擎对接收到的数据包进行过滤和派分,MAC模块过滤出数据包的虚拟机编号,网络滤波引擎按照虚拟机编号对接收到的数据包进行分派,将同虚拟机编号的数据包存放到内存模块的原数据包队列的相应虚拟机接收区中。
C、协议处理器对内存模块的原数据包收队列中数据包进行卸载过滤,卸载过滤出所述数据包的端口号、IP地址、线程序号,将所述原数据包队列中同一虚拟机接收区内的数据包根据端口号、IP地址、线程序号信息重新排列整合,并将整合后的新数据包存放到内存模块的新数据包队列的相应虚拟机接收区中。
D、当所述内存模块的新数据包队列中的新数据包数到达预定长度数目后,所述DMA控制器将所述新数据包通过PCIe模块上传给相应的虚拟机。
FPGA的网络滤波引擎还连接有SMBus(System Management Bus),由SMBus对FPGA实现远程控制,Flash模块与PCIe模块连接,FPGA的初始配置信息存放在Flash模块中,本发明的FPGA的内存模块可采用DDR2存储器,Flash模块可采用EEPROM存储器。
如图2所示,是本发明与现有技术的效果对比图,实心柱表示有硬件大包卸载的吞吐率,空心柱表示没有硬件大包卸载的吞吐率;实线表示有硬件大包卸载的CPU利用率,虚线表示没有硬件大包卸载的CPU利用率。从图2中可以看出,在有FPGA硬件的情况下,网络的吞吐率提高了近100%,而CPU的利用率却下降为原来的1/3。

Claims (5)

1.一种基于FPGA的虚拟机网络数据包处理方法,在网卡上设有FPGA,所述FPGA包括:MAC模块、网络滤波引擎、协议处理器、内存模块、描述器引擎、DMA控制器、PCIe模块、flash模块;特征在于,所述内存模块内创建一组原数据包队列和一组新数据包队列,所述原数据包队列给每个虚拟机划分一个接收区,所述新数据打包队列给每个虚拟机划分一个接收区,所述方法采用如下步骤:
A、网卡将接收的数据包由网卡的物理层端口传给所述MAC模块和网络滤波引擎;
B、所述MAC模块和网络滤波引擎对接收到的数据包进行过滤和分派,所述MAC模块过滤出数据包的虚拟机编号,所述网络滤波引擎按照虚拟机编号对接收到的数据包进行分派,将同虚拟机编号的数据包存放到内存模块的原数据包队列的相应虚拟机接收区中;
C、所述协议处理器对内存模块的原数据包队列中的数据包进行卸载过滤,卸载过滤出所述数据包的端口号、IP地址、线程序号,将所述原数据包队列中同一虚拟机接收区内的数据包根据端口号、IP地址、线程序号信息重新排列整合,并将整合后的新数据包存放到所述内存模块的新数据包队列的相应虚拟机接收区中;
D、当所述内存模块的新数据包队列中的新数据包数到达预定长度数目后,所述DMA控制器将所述新数据包通过PCIe模块上传给相应的虚拟机。
2.如权利要求1所述的一种基于FPGA的虚拟机网络数据包处理方法,其特征在于,所述网络滤波引擎还连接有SMBus,由SMBus对FPGA实现远程控制。
3.如权利要求1所述的一种基于FPGA的虚拟机网络数据包处理方法,其 特征在于,所述Flash模块与PCIe模块连接,所述FPGA的初始配置信息存放在Flash模块中。
4.如权利要求1所述的一种基于FPGA的虚拟机网络数据包处理方法,其特征在于:所述FPGA的内存模块采用DDR2存储器。
5.如权利要求3所述的一种基于FPGA的虚拟机网络数据包处理方法,其特征在于:所述Flash模块采用EEPROM存储器。 
CN200910083646XA 2009-05-07 2009-05-07 一种基于fpga的虚拟机网络数据包处理方法 Active CN101645832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910083646XA CN101645832B (zh) 2009-05-07 2009-05-07 一种基于fpga的虚拟机网络数据包处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910083646XA CN101645832B (zh) 2009-05-07 2009-05-07 一种基于fpga的虚拟机网络数据包处理方法

Publications (2)

Publication Number Publication Date
CN101645832A CN101645832A (zh) 2010-02-10
CN101645832B true CN101645832B (zh) 2011-09-28

Family

ID=41657556

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910083646XA Active CN101645832B (zh) 2009-05-07 2009-05-07 一种基于fpga的虚拟机网络数据包处理方法

Country Status (1)

Country Link
CN (1) CN101645832B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185672A (zh) * 2011-03-02 2011-09-14 浪潮(北京)电子信息产业有限公司 进程间通信方法和高速网络设备
CN103338230B (zh) * 2013-06-03 2016-03-30 广州天宁信息技术有限公司 一种业务数据的处理方法及***
CN104753813B (zh) * 2013-12-27 2018-03-16 国家计算机网络与信息安全管理中心 Dma传送报文的方法
CN103890728B (zh) 2013-12-31 2015-12-30 华为技术有限公司 虚拟机热迁移的方法和服务器
CN105306241B (zh) * 2014-07-11 2018-11-06 华为技术有限公司 一种业务部署方法及网络功能加速平台
CN105260332B (zh) * 2015-09-09 2018-04-20 北京三未信安科技发展有限公司 一种对cpld数据包进行有序存储的方法及***
WO2017170311A1 (ja) * 2016-03-31 2017-10-05 日本電気株式会社 ネットワークシステムの制御方法および制御装置ならびにサーバ
CN108540982B (zh) * 2017-03-06 2021-10-22 上海诺基亚贝尔股份有限公司 用于虚拟基站的通信方法和设备
CN110825485A (zh) * 2018-08-07 2020-02-21 华为技术有限公司 数据处理的方法、设备和服务器
CN113810791B (zh) * 2021-09-22 2022-04-29 浙江锐文科技有限公司 一种提高智能网卡/dpu网络遥测技术性能的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398769A (zh) * 2008-10-28 2009-04-01 北京航空航天大学 一种对操作***透明的处理器资源整合利用方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398769A (zh) * 2008-10-28 2009-04-01 北京航空航天大学 一种对操作***透明的处理器资源整合利用方法

Also Published As

Publication number Publication date
CN101645832A (zh) 2010-02-10

Similar Documents

Publication Publication Date Title
CN101645832B (zh) 一种基于fpga的虚拟机网络数据包处理方法
CN207683370U (zh) 一种基于菊花链式级联通讯的电动汽车电池管理***
CN108809854B (zh) 一种用于大流量网络处理的可重构芯片架构
CN105577567A (zh) 基于Intel DPDK的网络数据包并行处理方法
CN101227402B (zh) 聚合链路流量分担方法及装置
EP2353017A1 (en) Packet aggregation and fragmentation at layer-2 over a managed network
CN103078895B (zh) 一种基于mcf52233芯片的工业以太网多功能双串口服务器
CN101873269B (zh) 数据转发设备和端口缓存的分配方法
CN108400993A (zh) 智能工业装备组件式组建的物联网***和存储介质
CN101599966A (zh) 一种多虚拟机应用的数据过滤方法
CN103259743A (zh) 基于令牌桶的输出流量控制的方法及装置
CN101707544A (zh) E1信道多向网桥透传装置及方法
EP2618544B1 (en) Ethernet communication system and method based on mmc/sd interface
CN106657029A (zh) 一种基于白名单实现多网口共享ip地址的冗余通信方法
CN104767697A (zh) 一种航空全双工交换式以太网控制器及其控制方法
CN102811152B (zh) 一种多主总线网络通讯实时交易数据交换实现方法
CN104348783B (zh) 一种多联机***内外机多种协议快速通信的方法及装置
CN114070758A (zh) 一种基于sdn网络的流表优化方法及装置
CN203590251U (zh) 基于串行RapidIO总线的FlexRay控制***
CN115061973A (zh) 一种基于非对称多处理模式的网卡映射方法及设备
CN110995507B (zh) 一种网络加速控制器及方法
CN103870206A (zh) 一种缓存数据接收和读取方法及装置、及路由器缓存装置
CN103874241A (zh) 支持各种射频通讯融合工作的网关
CN102843380A (zh) 一种解决基于modbus的串口通信瓶颈的方法
CN1897561A (zh) 一种保护voip数字信号处理通道的方法

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: 20220727

Address after: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd.

Address before: 100084 Beijing Haidian District City Mill Street No. 64

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.

TR01 Transfer of patent right