CN101599966B - 一种多虚拟机应用的数据过滤方法 - Google Patents

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

Info

Publication number
CN101599966B
CN101599966B CN2009100838910A CN200910083891A CN101599966B CN 101599966 B CN101599966 B CN 101599966B CN 2009100838910 A CN2009100838910 A CN 2009100838910A CN 200910083891 A CN200910083891 A CN 200910083891A CN 101599966 B CN101599966 B CN 101599966B
Authority
CN
China
Prior art keywords
packet
address
filtration
filtering module
data
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
CN2009100838910A
Other languages
English (en)
Other versions
CN101599966A (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.)
Nanjing City Cloud Computing Center 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 CN2009100838910A priority Critical patent/CN101599966B/zh
Publication of CN101599966A publication Critical patent/CN101599966A/zh
Application granted granted Critical
Publication of CN101599966B publication Critical patent/CN101599966B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种多虚拟机应用的高速网卡的数据包硬件过滤方法,在网卡采用FPGA和DDR2的硬件结构,在硬件中对接收到的数据包进行单播过滤、组播过滤、广播过滤、VLAN过滤、IP地址过滤、端口过滤、ARP过滤及硬件checksum,根据过滤结果将数据包送到不同的虚拟机硬件队列,并通过并行数据通道策略来保证数据线速传输,可以在多虚拟应用的情况下减少虚拟机平台软交换对系统CPU资源的消耗,降低CPU使用率,通过硬件过滤可以大大提高数据包的过滤速度,提高数据包传输速率。

Description

一种多虚拟机应用的数据过滤方法
技术领域
本发明涉及一种高速网卡的数据包过滤方法,具体涉及一种多虚拟机应用的高速网卡的数据包硬件过滤方法。
背景技术
在服务器网卡的虚拟化应用中,需要通过虚拟化层软件实现物理网卡的共享,使每个虚拟机都认为自己是独占这块物理网卡的。这就需要实现对数据包的过滤及路由来保证每个虚拟机都能正确接收到发给自己的数据包。目前,很多网卡数据包的过滤和路由都是通过驱动软件和虚拟化层的软交换来实现的,内存数据移动开销、操作系统切换开销、上层软件开销非常大,特别是通信负荷比较重的情况下系统的性能很差。由此引入的开销占用大量的CPU资源,明显降低系统的I/O通讯性能,也使得数据包的响应时间增长,如图1所示。正是由于这样才使得服务器网卡越来越成为虚拟化网络部署的瓶颈。
发明内容
为了解决上述问题,降低系统资源的占用和CPU的使用率,缩短数据包处理响应时间,本发明提供了一种多虚拟机应用网卡的数据过滤传输方法,其改进在于:所述网卡上设有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信号及过滤结果对各个虚拟机队列的状态进行修改,保证上层主机能正确接收到有用的数据包。
本发明进一步优选技术方案为:所述虚拟机应用的数据过滤传输方法的步骤B2中,所述过滤通道还设有紧急中断过滤模块,所述紧急中断模块预设有紧急中断信息条件值,当数据包的TCP端口号,数据包长度符合所述中断信息条件值时,所述紧急中断模块将所述数据包立即上传并触发中断。
本发明更进一步优选技术方案为:所述虚拟机应用的数据过滤方法中,所述紧急中断模块中预设的紧急中断条件值还包括:当所述数据包的TCP头中的控制位URG、ACK、PSH、RST、SYN和FIN任何一位为1时都会触发立即中断。
本发明另一优选技术方案为:所述虚拟机应用的数据过滤方法的步骤A中,所述MAC模块通过FIFO实现数据包的时钟域的转换,FIFO出来的数据包同时送到过滤通道和数据通道。
本发明进一步优选技术方案为:所述虚拟机应用数据过滤方法中,所述网卡内存模块采用DDR2存储器。
本发明有益效果:利用硬件快速、高效的特点,通过在硬件中对接收到的数据包进行单播过滤、组播过滤、广播过滤、VLAN过滤、IP地址过滤、端口过滤、ARP过滤及硬件checksum校验,并根据过滤结果将数据包送到不同的虚拟机硬件队列中,在多虚拟应用的情况下减少虚拟机平台软交换对系统CPU资源的消耗,降低CPU的使用率,减少CPU负担。同时由于硬件级别的处理速度远高于软件层次的处理速度,所以大大提高了数据处理速度,缩短数据处理时间。并行数据传输通道策略能保证数据线速传输,提高数据包传输速率。尤其在万兆网卡的虚拟机应用网络中,大大减少了系统资源的浪费,提高虚拟机网络中整体的数据处理速率。
附图及附图说明
图1:传统的VMM的软交换示意图;
图2:TCP/IP数据包格式;
图3:本发明网卡硬件过滤示意图;
图4:本法发明过滤通道结构图。
具体实施方式
根据图2~4所示,在网卡上设有FPGA和DDR2存储器的硬件结构,对接收到的数据包的过滤处理通过FPGA逻辑来实现的,数据队列放在FPGA外部的DDR2存储器中的,FPGA内包括过滤通道、数据通道和接收控制器,过滤通道又包括信息提取模块、目的MAC地址过滤模块、VLAN过滤模块、管理过滤模块和紧急中断过滤模块,DDR2存储器为每个虚拟机创建一个虚拟机队列,本发明方法采用如下步骤:
A、网卡的MAC模块收到数据包以后,通过FIFO实现MAC125M时钟域到逻辑内部200M时钟域的转换,FIFO出来的数据包同时送到过滤通道和数据通道
B1、数据通道主要实现将MAC接收到的8位宽的数据数据拼接成128位宽,并在接收控制器中给出相应虚拟机队列地址,以满足DDR2数据接口宽度和突发接收时序;
B2、过滤通道对收到的数据包进行过滤,首先通过信息提取模块提取数据包目的MAC地址,然后通过目的MAC地址过滤模块对数据包的目的MAC地址进行过滤,并根据数据包的目的MAC地址过滤结果对数据包进行滤过处理;
数据包目的MAC地址包括:单播地址、组播地址和广播地址,单播地址数据包的过滤处理步骤包括:先用该数据包的MAC地址与管理MAC地址寄存器进行比较,判断该数据包是否为管理包,如果是管理包则直接进入管理过滤模块,否则通过设计好的HASH算法计算出该MAC地址对应的HASH值,该HASH值和存放虚拟机MAC地址的buffer的地址一一对应,这些MAC地址是由系统在配置完虚拟机后由驱动写下来的,这样就可以由HASH值读出相应地址处的MAC地址,通过将提取出来的MAC地址和该MAC地址比较,如果一致则进入VLAN过滤模块,否则将该数据包丢弃;VLAN过滤模块中根据信息提取模块中提取出的播地址数据包的VLAN信息与主机的VLAN过滤寄存器内预设进行比较判断是否一致,VLAN信息一致的单播地址数据包进入管理过滤模块,否则将数据包丢弃;管理过滤模块对所有进入的数据包进行checksum校验和决定过滤,通过checksum校验和决定过滤的单播地址数据包发送到相应的虚拟主机,所述决定过滤是将单播地址数据包的管理VLAN值、TCP/UDP端口、ARP及IP地址信息与主机中相应的寄存器内的预设信息进行比较判断是否通过;
广播地址数据包的过滤处理步骤包括:将广播地址数据包直接送入管理过滤模块,管理过滤模块对所有进入的数据包进行checksum校验和决定过滤,通过checksum校验和决定过滤的广播数据包发送到相应的虚拟主机队列中;
组播地址数据包过滤处理步骤包括:祖播过滤寄存器来判断该数据包是接收还是丢弃。将组播地址数据包直接送入管理过滤模块,管理过滤模块根据根据上层驱动设定的组播寄存器内预设的组播过滤算法判断组播地址数据包是否通过,通过的数据包直接将数据包发送到相应的虚拟主机队列中;
过滤通道还设有紧急中断过滤模块,当系统需要对一些特殊的包进行紧急处理时,在紧急中断模块预设有紧急中断信息条件值,当接收到数据包的TCP端口号,数据包长度符合所述中断信息条件值,或数据包TCP头中的控制位如URG、ACK、PSH、RST、SYN和FIN任何一位为1时时,紧急中断模块将所述数据包立即上传并触发中断。同样首先通过信息提取模块提取上述信息,然后与立即中断控制寄存器比较,如果匹配则会将控制描述符中的对应位置1,则pcie会根据该位触发立即中断。
C、所述接收控制器将通过过滤通道和数据通道后的数据包根据过滤结果发送到DDR2存储器中相应的虚拟机队列中,并且在一个数据包完成发送操作后将所述数据包对应的描述符写入到相应虚拟机队列预留的位置,当一个数据包的数据和对应的描述符都写到DDR2中后,根据MAC模块的good/bad frame信号及过滤结果对各个虚拟机队列的状态进行修改,保证上层主机能正确接收到有用的数据包。
本申请所有过滤环节的寄存器的值都是在芯片初始化的时候由上层软件配置在寄存器模块里来实现,该模块实现系统中所有寄存器的配置和读写控制,过滤通道中用到的寄存器都是从寄存器模块读出来的。

Claims (5)

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.如权利要求1所述的一种多虚拟机应用网卡的数据过滤传输方法,其特征在于:所述步骤B2中,所述过滤通道还设有紧急中断过滤模块,所述紧急中断过滤模块预设有紧急中断信息条件值,当数据包的TCP端口号,数据包长度符合所述中断信息条件值时,所述紧急中断过滤模块将所述数据包立即上传并触发中断。
3.如权利要求2所述的一种多虚拟机应用网卡的数据过滤传输方法,其特征在于:所述紧急中断过滤模块中预设的紧急中断信息条件值还包括:当所述数据包的TCP头中的控制位URG、ACK、PSH、RST、SYN和FIN任何一位为1时都会触发立即中断。
4.如权利要求1所述的一种多虚拟机应用网卡的数据过滤传输方法,其特征在于:所述步骤A中,所述MAC模块通过FIFO实现数据包的时钟域的转换,FIFO出来的数据包同时送到过滤通道和数据通道。 
5.如权利要求1所述的一种多虚拟机应用网卡的数据过滤传输方法,其特征在于:所述网卡内存模块采用DDR2存储器。 
CN2009100838910A 2009-05-11 2009-05-11 一种多虚拟机应用的数据过滤方法 Active CN101599966B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100838910A CN101599966B (zh) 2009-05-11 2009-05-11 一种多虚拟机应用的数据过滤方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100838910A CN101599966B (zh) 2009-05-11 2009-05-11 一种多虚拟机应用的数据过滤方法

Publications (2)

Publication Number Publication Date
CN101599966A CN101599966A (zh) 2009-12-09
CN101599966B true CN101599966B (zh) 2012-01-18

Family

ID=41421213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100838910A Active CN101599966B (zh) 2009-05-11 2009-05-11 一种多虚拟机应用的数据过滤方法

Country Status (1)

Country Link
CN (1) CN101599966B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098289B (zh) * 2010-12-17 2014-08-27 曙光信息产业股份有限公司 一种基于fpga的网络安全连接封堵处理方法
CN102546582A (zh) * 2010-12-30 2012-07-04 中国科学院声学研究所 一种提高嵌入式数据传输系统传输速率的方法及系统
CN102609298B (zh) * 2012-01-11 2016-01-13 中国科学技术大学苏州研究院 基于硬件队列扩展的网卡虚拟化系统及其方法
CN103067270B (zh) * 2013-01-08 2016-12-28 杭州华三通信技术有限公司 一种虚拟机互访安全控制方法及装置
CN103795621B (zh) * 2013-12-12 2017-02-15 华为技术有限公司 一种虚拟机的数据交换方法、装置及物理主机
CN105141547B (zh) * 2015-07-28 2019-05-24 华为技术有限公司 数据处理的方法、网卡和主机
US20200301747A1 (en) * 2016-03-31 2020-09-24 Nec Corporation Control method, control apparatus and server in network system
GB2556636A (en) 2016-11-21 2018-06-06 The Sec Dep For Foreign And Commonwealth Affairs Method and device for filtering packets
CN110300081B (zh) * 2018-03-21 2021-04-16 大唐移动通信设备有限公司 一种数据传输的方法和设备
CN114615022A (zh) * 2022-02-17 2022-06-10 奇安信科技集团股份有限公司 云内流量牵引方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101035011A (zh) * 2006-03-10 2007-09-12 中国科学院软件研究所 以太网驱动级底层过滤方法和系统
CN101399835A (zh) * 2007-09-17 2009-04-01 英特尔公司 用于虚拟系统上动态切换和实时安全性控制的方法和设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101035011A (zh) * 2006-03-10 2007-09-12 中国科学院软件研究所 以太网驱动级底层过滤方法和系统
CN101399835A (zh) * 2007-09-17 2009-04-01 英特尔公司 用于虚拟系统上动态切换和实时安全性控制的方法和设备

Also Published As

Publication number Publication date
CN101599966A (zh) 2009-12-09

Similar Documents

Publication Publication Date Title
CN101599966B (zh) 一种多虚拟机应用的数据过滤方法
CN105005546B (zh) 一种内置交点队列的异步axi总线结构
US10848442B2 (en) Heterogeneous packet-based transport
EP2898651B1 (en) Scalable low latency multi-protocol networking device
CN104050143B (zh) 向混合可编程多核器件映射网络应用
EP1552669B1 (en) Integrated circuit and method for establishing transactions
CN101540727B (zh) 一种ip报文的硬件分流方法
CN101645832B (zh) 一种基于fpga的虚拟机网络数据包处理方法
CN101227296B (zh) 一种pcie数据传输的方法、系统及板卡
CN1628296A (zh) 有效处理网络数据的系统和方法
WO2004010311A3 (en) Method and apparatus for zero-copy receive buffer management
CN202535384U (zh) 基于PCIe总线的网络设备扩展连接和虚拟机互连优化系统
CN103731409B (zh) 用于具有tcp加速的嵌入式汽车采集设备的分布式测量装置
CN104780122B (zh) 基于缓存再分配的层次化片上网络路由器的控制方法
CN101834789A (zh) 面向包-电路交换片上路由器的回退转向路由算法及所用路由器
CN102098113A (zh) 基于aloha和tdma的水声传感器网络mac层协议的实现方法
CN103136163A (zh) 可配置实现fc-ae-asm和fc-av协议的协议处理器芯片
CN101540764A (zh) 一种基于fpga的面向虚拟机的数据传输和路由方法
CN109861931A (zh) 一种高速以太网交换芯片的存储冗余系统
CN100469055C (zh) 转发报文的处理方法及处理装置
CN103036805A (zh) 用于改善分组共享存储器体系结构组播性能的系统和方法
CN115118668A (zh) 流控制技术
WO2012119414A1 (zh) 交换网的流量控制方法和装置
CN101122894A (zh) 一种异步串行通讯控制器件
CN101950279B (zh) 均衡数据信息流量的方法、总线系统和译码器

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
ASS Succession or assignment of patent right

Owner name: NANJING CITY CLOUD COMPUTING CENTER CO., LTD.

Free format text: FORMER OWNER: SHUGUANG INFORMATION INDUSTRIAL (BEIJING) CO., LTD.

Effective date: 20130326

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 211153 NANJING, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130326

Address after: 211153, 1, 37, general road, Jiangning economic and Technological Development Zone, Nanjing, Jiangsu

Patentee after: Nanjing City Cloud Computing Center Co., Ltd.

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

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