一种多虚拟机应用的数据过滤方法

文档序号:7700174阅读:90来源:国知局
专利名称:一种多虚拟机应用的数据过滤方法
技术领域
本发明涉及一种高速网卡的数据包过滤方法,具体涉及一种多虚拟机应用 的高速网卡的数据包硬件过滤方法。
背景技术
在服务器网卡的虚拟化应用中,需要通过虚拟化层软件实现物理网卡的共 享,使每个虚拟机都认为自己是独占这块物理网卡的。这就需要实现对数据包 的过滤及路由来保证每个虚拟机都能正确接收到发给自己的数据包。目前,很 多网卡数据包的过滤和路由都是通过驱动软件和虚拟化层的软交换来实现的, 内存数据移动开销、操作系统切换开销、上层软件开销非常大,特别是通信负
荷比较重的情况下系统的性能很差。由此引入的开销占用大量的CPU资源,明 显降低系统的1/0通讯性能,也使得数据包的响应时间增长,如图1所示。正
是由于这样才使得服务器网卡越来越成为虚拟化网络部署的瓶颈。

发明内容
为了解决上述问题,降低系统资源的占用和CPU的使用率,縮短数据包处
理响应时间,本发明提供了一种多虚拟机应用网卡的数据过滤传输方法,其改
进在于所述网卡上设有FPGA和网卡内存模块,所述FPGA包括过滤通道、数 据通道、接收控制器和寄存器模块,所述过滤通道包括信息提取模块、目的MAC 地址过滤模块、VLAN过滤模块、管理过滤模块和紧急中断过滤模块,所述网卡 内存模块中为每个虚拟机创建一个虚拟机队列,所述方法采用如下步骤
A、网卡的MAC模块收到数据包以后,将数据包同时发送到过滤通道和数据 通道。
Bl、所述数据通道对数据包数据进行拼接,将MAC模块接收到的8位宽的 数据包数据拼接成128位宽,并在接收控制器中给出相应虚拟机队列地址。B2、所述过滤通道对收到的数据包进行过滤,首先通过信息提取模块提取
数据包目的MAC地址,然后通过目的MAC地址过滤模块对数据包的目的MAC地 址进行过滤判断,并根据数据包的目的MAC地址过滤判断结果对数据包进行滤 过处理;
所述数据包目的MAC地址包括单播地址、组播地址和广播地址,所述单 播地址数据包的过滤处理步骤包括先将用单播地址数据包的MAC地址与管理 MAC地址寄存器内预设的MAC地址信息进行比较,判断该数据包是否为管理包, 是管理包的单播地址数据包直接进入管理过滤模块,否则通过HASH算法计算出 所述单播地址数据包MAC地址的HASH值,根据所述HASH值判断是通过还是丢 弃,通过的单播地址数据包进入VLAN过滤模块,所述VLAN过滤模块根据单播 地址数据包的VLAN信息判断是通过还是丢弃,通过的单播地址数据包进入管理 过滤模块,所述管理过滤模块对单播地址数据包进行checksum校验和决定过滤, 通过checksum校验和决定过滤的单播地址数据包发送到相应的虚拟主机,所述 决定过滤是将单播地址数据包的管理VLAN值、TCP/UDP端口、 ARP及IP地址信 息与主机中相应的寄存器内的预设信息进行比较判断是否通过;
所述广播地址数据包的过滤处理步骤包括将所述广播地址数据包直接送 入管理过滤模块,所述管理过滤模块对所述广播地址数据包进行checksum校验 和决定过滤,通过checksum校验和决定过滤的广播数据包发送到相应的虚拟主 机队列中;
所述组播地址数据包过滤处理步骤包括将所述组播地址数据包直接送入 管理过滤模块,所述管理过滤模块根据上层驱动设定的组播寄存器内预设的组 播过滤算法判断组播地址数据包是否通过,通过的组播地址数据包直接发送到 相应的虚拟主机队列中;
C、所述接收控制器将拼接后的数据包根据过滤结果发送到相应的虚拟机队列中,并且在一个数据包完成发送操作后将所述数据包对应的描述符写入到 相应虚拟机队列预留的位置,当所述数据包的数据和对应的描述符都写到网卡
内存模块中后根据MAC模块的good/bad frame信号及过滤结果对各个虚拟机队 列的状态进行修改,保证上层主机能正确接收到有用的数据包。
本发明进一步优选技术方案为所述虚拟机应用的数据过滤传输方法的步 骤B2中,所述过滤通道还设有紧急中断过滤模块,所述紧急中断模块预设有紧 急中断信息条件值,当数据包的TCP端口号,数据包长度符合所述中断信息条 件值时,所述紧急中断模块将所述数据包立即上传并触发中断。
本发明更进一步优选技术方案为所述虚拟机应用的数据过滤方法中,所 述紧急中断模块中预设的紧急中断条件值还包括当所述数据包的TCP头中的 控制位URG、 ACK、 PSH、 RST、 SYN和FIN任何一位为1时都会触发立即中断。
本发明另一优选技术方案为所述虚拟机应用的数据过滤方法的步骤A中, 所述MAC模块通过FIFO实现数据包的时钟域的转换,FIFO出来的数据包同时送 到过滤通道和数据通道。
本发明进一步优选技术方案为所述虚拟机应用数据过滤方法中,所述网 卡内存模块采用DDR2存储器。
本发明有益效果利用硬件快速、高效的特点,通过在硬件中对接收到的 数据包进行单播过滤、组播过滤、广播过滤、VLAN过滤、IP地址过滤、端口过 滤、ARP过滤及硬件checksum校验,并根据过滤结果将数据包送到不同的虚拟 机硬件队列中,在多虚拟应用的情况下减少虚拟机平台软交换对系统CPU资源 的消耗,降低CPU的使用率,减少CPU负担。同时由于硬件级别的处理速度远 高于软件层次的处理速度,所以大大提高了数据处理速度,縮短数据处理时间。 并行数据传输通道策略能保证数据线速传输,提高数据包传输速率。尤其在万 兆网卡的虚拟机应用网络中,大大减少了系统资源的浪费,提高虚拟机网络中整体的数据处理速率。 附图及


图l:传统的VMM的软交换示意图; 图2: TCP/IP数据包格式; 图3:本发明网卡硬件过滤示意图; 图4:本法发明过滤通道结构图。
具体实施例方式
根据图2 4所示,在网卡上设有FPGA和DDR2存储器的硬件结构,对接收 到的数据包的过滤处理通过FPGA逻辑来实现的,数据队列放在FPGA外部的DDR2 存储器中的,FPGA内包括过滤通道、数据通道和接收控制器,过滤通道又包括 信息提取模块、目的MAC地址过滤模块、VMN过滤模块、管理过滤模块和紧急 中断过滤模块,DDR2存储器为每个虚拟机创建一个虚拟机队列,本发明方法采 用如下步骤
A、网卡的MAC模块收到数据包以后,通过FIFO实现MAC125M时钟域到逻 辑内部200M时钟域的转换,FIFO出来的数据包同时送到过滤通道和数据通道
Bl、数据通道主要实现将MAC接收到的8位宽的数据数据拼接成128位宽, 并在接收控制器中给出相应虚拟机队列地址,以满足DDR2数据接口宽度和突发 接收时序;
B2、过滤通道对收到的数据包进行过滤,首先通过信息提取模块提取数据 包目的MAC地址,然后通过目的MAC地址过滤模块对数据包的目的MAC地址进 行过滤,并根据数据包的目的MAC地址过滤结果对数据包进行滤过处理;
数据包目的MAC地址包括单播地址、组播地址和广播地址,单播地址数 据包的过滤处理步骤包括先用该数据包的脆C地址与管理MAC地址寄存器进 行比较,判断该数据包是否为管理包,如果是管理包则直接进入管理过滤模块,否则通过设计好的HASH算法计算出该MAC地址对应的HASH值,该HASH值和存 放虚拟机MAC地址的buffer的地址一一对应,这些MAC地址是由系统在配置完 虚拟机后由驱动写下来的,这样就可以由HASH值读出相应地址处的MAC地址, 通过将提取出来的MAC地址和该MAC地址比较,如果一致则进入VLAN过滤模块, 否则将该数据包丢弃;VLAN过滤模块中根据信息提取模块中提取出的播地址数 据包的VLAN信息与主机的VL認过滤寄存器内预设进行比较判断是否一致, VLAN信息一致的单播地址数据包进入管理过滤模块,否则将数据包丢弃;管理 过滤模块对所有进入的数据包进行checksum校验和决定过滤,通过checksum 校验和决定过滤的单播地址数据包发送到相应的虚拟主机,所述决定过滤是将 单播地址数据包的管理VLAN值、TCP/UDP端口、 ARP及IP地址信息与主机中相 应的寄存器内的预设信息进行比较判断是否通过;
广播地址数据包的过滤处理步骤包括将广播地址数据包直接送入管理过 滤模块,管理过滤模块对所有进入的数据包进行checksum校验和决定过滤,通 过checksum校验和决定过滤的广播数据包发送到相应的虚拟主机队列中;
组播地址数据包过滤处理步骤包括祖播过滤寄存器来判断该数据包是接 收还是丢弃。将组播地址数据包直接送入管理过滤模块,管理过滤模块根据根 据上层驱动设定的组播寄存器内预设的组播过滤算法判断组播地址数据包是否 通过,通过的数据包直接将数据包发送到相应的虚拟主机队列中;
过滤通道还设有紧急中断过滤模块,当系统需要对一些特殊的包进行紧急
处理时,在紧急中断模块预设有紧急中断信息条件值,当接收到数据包的TCP 端口号,数据包长度符合所述中断信息条件值,或数据包TCP头中的控制位如 URG、 ACK、 PSH、 RST、 S预和FIN任何一位为1时时,紧急中断模块将所述数据 包立即上传并触发中断。同样首先通过信息提取模块提取上述信息,然后与立 即中断控制寄存器比较,如果匹配则会将控制描述符中的对应位置1,则pcie会根据该位触发立即中断。
C、所述接收控制器将通过过滤通道和数据通道后的数据包根据过滤结果发
送到DDR2存储器中相应的虚拟机队列中,并且在一个数据包完成发送操作后将
所述数据包对应的描述符写入到相应虚拟机队列预留的位置,当一个数据包的
数据和对应的描述符都写到DDR2中后,根据MAC模块的good/bad frame信号 及过滤结果对各个虚拟机队列的状态进行修改,保证上层主机能正确接收到有 用的数据包。
本申请所有过滤环节的寄存器的值都是在芯片初始化的时候由上层软件配 置在寄存器模块里来实现,该模块实现系统中所有寄存器的配置和读写控制, 过滤通道中用到的寄存器都是从寄存器模块读出来的。
权利要求
1、一种多虚拟机应用网卡的数据过滤传输方法,其特征在于所述网卡上设有FPGA和网卡内存模块,所述FPGA包括过滤通道、数据通道、接收控制器和寄存器模块,所述过滤通道包括信息提取模块、目的MAC地址过滤模块、VLAN过滤模块、管理过滤模块和紧急中断过滤模块,所述网卡内存模块中为每个虚拟机创建一个虚拟机队列,所述方法采用如下步骤A、网卡的MAC模块收到数据包以后,将数据包同时发送到过滤通道和数据通道。B1、所述数据通道对数据包数据进行拼接,将MAC模块接收到的8位宽的数据包数据拼接成128位宽,并在接收控制器中给出相应虚拟机队列地址。B2、所述过滤通道对收到的数据包进行过滤,首先通过信息提取模块提取数据包目的MAC地址,然后通过目的MAC地址过滤模块对数据包的目的MAC地址进行过滤判断,并根据数据包的目的MAC地址过滤判断结果对数据包进行滤过处理;所述数据包目的MAC地址包括单播地址、组播地址和广播地址,所述单播地址数据包的过滤处理步骤包括先将用单播地址数据包的MAC地址与管理MAC地址寄存器内预设的MAC地址信息进行比较,判断该数据包是否为管理包,是管理包的单播地址数据包直接进入管理过滤模块,否则通过HASH算法计算出所述单播地址数据包MAC地址的HASH值,根据所述HASH值判断是通过还是丢弃,通过的单播地址数据包进入VLAN过滤模块,所述VLAN过滤模块根据单播地址数据包的VLAN信息判断是通过还是丢弃,通过的单播地址数据包进入管理过滤模块,所述管理过滤模块对单播地址数据包进行checksum校验和决定过滤,通过checksum校验和决定过滤的单播地址数据包发送到相应的虚拟主机,所述决定过滤是将单播地址数据包的管理VLAN值、TCP/UDP端口、ARP及IP地址信息与主机中相应的寄存器内的预设信息进行比较判断是否通过;所述广播地址数据包的过滤处理步骤包括将所述广播地址数据包直接送入管理过滤模块,所述管理过滤模块对所述广播地址数据包进行checksum校验和决定过滤,通过checksum校验和决定过滤的广播数据包发送到相应的虚拟主机队列中;所述组播地址数据包过滤处理步骤包括将所述组播地址数据包直接送入管理过滤模块,所述管理过滤模块根据上层驱动设定的组播寄存器内预设的组播过滤算法判断组播地址数据包是否通过,通过的组播地址数据包直接发送到相应的虚拟主机队列中;C、所述接收控制器将拼接后的数据包根据过滤结果发送到相应的虚拟机队列中,并且在一个数据包完成发送操作后将所述数据包对应的描述符写入到相应虚拟机队列预留的位置,当所述数据包的数据和对应的描述符都写到网卡内存模块中后根据MAC模块的good/bad frame信号及过滤结果对各个虚拟机队列的状态进行修改,保证上层主机能正确接收到有用的数据包。
2、 如权利要求l所述的一种虚拟机应用的数据过滤传输方法,其特征在于 所述步骤B2中,所述过滤通道还设有紧急中断过滤模块,所述紧急中断模块预 设有紧急中断信息条件值,当数据包的TCP端口号,数据包长度符合所述中断信 息条件值时,所述紧急中断模块将所述数据包立即上传并触发中断。
3、 如权利要求2所述的一种虚拟机应用的数据过滤方法,其特征在于所 述紧急中断模块中预设的紧急中断条件值还包括当所述数据包的TCP头中的控 制位URG、 ACK、 PSH、 RST、 SYN和FIN任何一位为1时都会触发立即中断。
4、 如权利要求1所述的一种虚拟机应用的数据过滤方法,其特征在于所 述步骤A中,所述MAC模块通过FIFO实现数据包的时钟域的转换,FIF0出来的 数据包同时送到过滤通道和数据通道。
5、 如权利要求1所述的一种虚拟机应用数据过滤方法,其特征在于所述 网卡内存模块采用DDR2存储器。
全文摘要
本发明涉及一种多虚拟机应用的高速网卡的数据包硬件过滤方法,在网卡采用FPGA和DDR2的硬件结构,在硬件中对接收到的数据包进行单播过滤、组播过滤、广播过滤、VLAN过滤、IP地址过滤、端口过滤、ARP过滤及硬件checksum,根据过滤结果将数据包送到不同的虚拟机硬件队列,并通过并行数据通道策略来保证数据线速传输,可以在多虚拟应用的情况下减少虚拟机平台软交换对系统CPU资源的消耗,降低CPU使用率,通过硬件过滤可以大大提高数据包的过滤速度,提高数据包传输速率。
文档编号H04L12/02GK101599966SQ20091008389
公开日2009年12月9日 申请日期2009年5月11日 优先权日2009年5月11日
发明者平 吴, 方信我, 宇 曾, 杜哲峰, 郑臣明 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1