一种基于fpga的面向虚拟机的数据传输和路由方法

文档序号:7699805阅读:222来源:国知局
专利名称:一种基于fpga的面向虚拟机的数据传输和路由方法
技术领域
本发明涉及虚拟化应用中的网络数据传输,具体涉及一种FPGA硬件与虚拟机路由的方法。
背景技术
虚拟化是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管 理,优化资源的解决方案,这种把有限的固定的资源根据不同需求进行重新规划以达到 最大利用率的思路,在IT领域就叫做虚拟化技术。虚拟化技术可以扩大硬件的容量, 简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一 个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影 响,从而显著提高计算机的工作效率。但随着虚拟机数目的增多,软交换的处理速度就会 成为网络通讯的瓶颈,在10G以太网中,软交换的实际吞吐率只能达到全速的40%左右。
在虚拟机网络应用领域, 一直以来以VMware的软交换作为主要手段,各个虚拟机与网 卡NIC之间的数据交换和路由均由VMware中的VMM Switch (软件层)完成,Switch将接 收到的数据包按照不同的虚拟机编号(MAC地址)进行分派,这样接收到的数据包就会按照 正确的路径送达各个虚拟机。VMSware作为路由和分派的软件,所有的数据都要经过软件来 进行交换,当数据量大时软件的交换模块就会出现堵塞,必然要消耗大量的CPU资源和内存 资源同时,进而妨碍网卡对数据的呑吐率。
如图1所示,现有技术使用的Xen软件工作原理图中,在网卡和驱动模块之间有一个Xen 管理模块完成中断响应工作,然后,将数据交给驱动模块中的设备驱动模块进行处理接收这一数据包,然后接收到的数据包传给网桥模块,网格模块完成网桥的工程,就是所谓的交换 的功能将不同虚拟机的数据包发送给不同的寄存模块,由于所有的数据都要经过网桥模块, 所以一旦数据量增大,其中网,乔处理数据就会出现堵塞现象,耗费大量资源,网^^出现不能 胜任的情况,网卡对内外数据的交换就会受到阻碍。

发明内容
为了克服软件数据交换存在的问题,本发明提供一种利用FPGA硬件对虚拟机进行数据交 换和路由的办法,采用方案如下
一种利用FPGA对虚拟机进行数据包交换和路由的方法所述FPGA包括MAC模块、 内存模块、PCIe、网络滤波器、DMA控制器、协议处理器、描述器;特征在于,所述方法 采用如下步骤
A、 首先协议处理器为主机上每一个虚拟机创建一组数据队列并存放在内存模块中,其 中每组数据队列存放相应的虚拟机编号,所述协议处理器对每组数据队列进行维护;
B、 网卡接收到的网络数据由网卡PHY传给MAC模块,由MAC模块完成数据包的重 组后传给网络滤波器;
C、 网络滤波器对接收的数据包进行过滤并按照不同的虚拟机进行分派并将处理后的数 据传给协议处理器;
D、 协议处理器将网络滤波器送来的数据以及每个虚拟机要发送的数据都分别放到内存 模块每个虚拟机对应的数据队列中;
E、 描述器负责从各虚拟机读取描述符以及向虚拟机写回描述器并将结果传给协议处理 器,协议处理器按照描述器的结果来决定触发与各虚拟机的交互动作,将内存模块队列中的 数据通过DMA控制器和PCIe 2.0模块写回对应的虚拟机或者从对应的虚拟机读取数据或者向网卡传送数据;
本方案的另一优选方式所述FPGA的初始配置信息存放在EEPROM模块中,所述 EEPROM模块与PCIe模块连接。
本方案的再一优选方式所述C步骤中,网络滤波器还连接有SMBUS,由SMBUS对 FPGA实现远程控制。
采用本方案这种方法,将原来在VMware软件中所做的软件交换和路由的工作放到了硬件 内部来完成,完全解放了CPU的操作,同时由于硬件级别的处理速度远高于软件层次的处理 速度,所以大大提高了数据交换和路由速度,同时降低了数据的响应时间。


图1本方法中所采用的FPGA示意图
图2本方法与现有技术的效果对比示意图
具体实施例方式
本发明在现有技术的基础中利用寄存模块直接通过Xen管理模块访问硬件,也就是不经过 驱动模块这样的一个思路,在FPGA上进行上述模式的硬件与各虚拟机之间进行数据交换和路 由,不同的虚拟机对应不同的数据队列,接收到的数据包按照不同的虚拟机进行放置,以实 现交换和路由的目的。
如图2所示,本发明提供一种使用FPGA进行数据包交换和路由的方法,是应用在虚拟 化系统上的。本发明技术方案中FPGA包括MAC模块、内存模块、PCIe、网络滤波器、DMA 控制器、协议处理器、描述器其中A、首先协议处理器为主机上每一个虚拟机创建一组数 据队列并存放在内存模块中,其中每组数据队列存放相应的虚拟机编号,所述协议处理器对每组数据队列进行维护;协议处理器对各虚拟机采取的执行方法是由PCi".o模块从
EEPROM模块接收并传来的,所述EEPROM用于存放对FPGA进行初始配置的信息。
B、 网卡接收到的网络数据由网卡PHY传给MAC模块,由MAC模块完成数据包的重 组后传给网络滤波器;
C、 网络滤波器对接收的数据包进行过滤并按照不同的虚拟机进行分派并将处理后的数 据传给协议处理器;网络滹滤波器还连接有SMBUS,由SMBUS对FPGA实现远程控制
D、 协议处理器将网络滤波器送来的数据以及每个虚拟机要发送的数据都分别放到内存 模块每个虚拟机对应的数据队列中;其中虚拟机的区分是按照每个虚拟机的MAC地址来分 别的;
E、 描述器负责从各虚拟机读取描述符以及向虚拟机写回描述符并将结果传给协议处理
器,协议处理器按照描述器的结果来决定触发与各虚拟机的交互动作,将内存模块队列中的
数据通过DMA模块和PCIe 2.0模块写回对应的虚拟机或者从对应的虚拟机读取数据或者向 网卡传送数据。
在QDRSRAM中存放一些临时信息。
通过在虚拟化系统中部署FPGA硬件交换路由,可以明显地提高网络通讯的速度。如图 3所示,在虚拟化应用中使用IOG以太网进行通讯的数据A是使用VMware软交换所得到 的数据,只有4Gbps的通讯速率,B是使用FPGA硬件交换路由的效果可以达到9.2Gbps的 通讯速率,使用FPGA硬件交换路由可以达到软件交换路由2倍以上的通讯速率。
权利要求
1、一种基于FPGA的面向虚拟机的数据传输和路由方法,所述FPGA包括MAC模块、内存模块、PCIe、网络滤波器、DMA控制器、协议处理器、描述器;特征在于,所述方法采用如下步骤A、首先协议处理器为主机上每一个虚拟机创建一组数据队列并存放在内存模块中,其中每组数据队列存放相应的虚拟机编号,所述协议处理器对每组数据队列进行维护;B、网卡接收到的网络数据由网卡PHY传给MAC模块,由MAC模块完成数据包的重组后传给网络滤波器;C、网络滤波器对接收的数据包进行过滤并按照不同的虚拟机进行分派并将处理后的数据传给协议处理器;D、协议处理器将网络滤波器送来的数据以及每个虚拟机要发送的数据都分别放到内存模块每个虚拟机对应的数据队列中;E、描述器负责从各虚拟机读取描述符以及向虚拟机写回描述器并将结果传给协议处理器,协议处理器按照描述器的结果来决定触发与各虚拟机的交互动作,将内存模块队列中的数据通过DMA控制器和PCIe 2.0模块写回对应的虚拟机或者从对应的虚拟机读取数据或者向网卡传送数据。
2、 如权利要求1所述的一种基于FPGA的面向虚拟机的数据传输和路由方法,其特征 在于,所述FPGA的初始配置信息存放在EEPROM模块中,所述EEPROM模块与PCIe模块连接。
3、 如权利要求1所述的一种基于FPGA的面向虚拟机的数据传输和路由方法,其特征 在于,所述C步骤中,网络滤波器还连接有SMBUS ,由SMBUS对FPGA实现远程控制。
全文摘要
本发明涉及一种基于FPGA的面向虚拟机的数据传输和路由方法,使用FPGA硬件对数据进行交换和路由,数据从PHY模块传送给MAC,MAC中完成数据包的重组后交给网络滤波器完成数据包的过滤以及交换功能,然后处理后的数据将交给协议处理器,协议处理器维护每个虚拟机队列的状态和读写操作,将网络滤波器送来的数据存放到DDR2中的队列中,描述器完成描述符的维护,负责从主机读取描述符,以及向主机写回描述符。采用本方案这种方法,将原来在VMware软件中所做的软件交换和路由的工作放到了硬件内部来完成,完全解放了CPU的操作,同时由于硬件级别的处理速度远高于软件层次的处理速度,所以大大提高了数据交换和路由速度,同时降低了数据的响应时间。
文档编号H04L12/56GK101540764SQ20091008257
公开日2009年9月23日 申请日期2009年4月27日 优先权日2009年4月27日
发明者平 吴, 方信我, 宇 曾, 旭 石, 郑臣明 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1