CN105516016B - 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 - Google Patents

一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 Download PDF

Info

Publication number
CN105516016B
CN105516016B CN201510834423.8A CN201510834423A CN105516016B CN 105516016 B CN105516016 B CN 105516016B CN 201510834423 A CN201510834423 A CN 201510834423A CN 105516016 B CN105516016 B CN 105516016B
Authority
CN
China
Prior art keywords
packet
rule
data packet
flow
flow table
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
CN201510834423.8A
Other languages
English (en)
Other versions
CN105516016A (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.)
Beihang University
Original Assignee
Beihang University
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 Beihang University filed Critical Beihang University
Priority to CN201510834423.8A priority Critical patent/CN105516016B/zh
Publication of CN105516016A publication Critical patent/CN105516016A/zh
Application granted granted Critical
Publication of CN105516016B publication Critical patent/CN105516016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing

Abstract

本发明公开了一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法,数据包过滤系统包括有数据包采集模块、提取五元组内容模块、规则匹配模块、流表查找与更新模块、PCIe数据传输模块、PCIe数据包接收模块和数据包存储模块。数据包过滤方法是基于Tilera多核处理器与通用主机组成的异构系统的数据包采集、基于流的数据包过滤的方法。利用Tilera多核加速卡的mPIPE中采集到数据包;在Tilera上利用流表实现基于流的数据包过滤;将过滤后的数据包通过PCIe驱动传输到通用计算机上,在通用计算机上实现数据包的存储。本发明适用于万兆网络环境中流量的在线流量分析与存储。

Description

一种使用Tilera多核加速卡基于流的数据包过滤系统及数据 包过滤方法
技术领域
本发明涉及的是万兆网络带宽的环境下,基于流的数据包过滤方法。更确切地说是,利用通用主机与嵌在通用主机PCIe接口的Tilera多核加速卡组成的异构体系结构下的流量采集、基于流的数据包过滤与数据包存储方法。
背景技术
随着互联网的发展,万兆网络技术逐渐成为主流的带宽技术,为网络流量管理、流量实时分析和流量存储带来了挑战。传统的网络流量采集与处理是采用普通网卡与数据采集软件相结合的方法,如Libpcap(library packet capture,数据包捕获函数库)、BPF(Berkeley Packet Filter,伯克莱封包过滤器)等。但是,随着链路带宽的增加,骨干网链路速度达到数10Gbps。普通网络加数据采集软件的流量采集处理方式会出现以下问题:
(1)I/O性能问题:传统的数据包采集与处理方法的I/O性能低,不足以满足高速链路对I/O的需求。
(2)主存性能问题(主存容量:高速链路下每秒产生数10Gb的流量,在数据包采集时,对主存空间需求大,若再考虑到流量应用层的处理,对主存容量的需求会成倍增加;访存带宽:网络流量处理的访存次数与数据报文数据成正比,在高速网络下,频繁的内存访问给主存带宽带来巨大压力;访存延迟:在通常情况下,一次访存需要上百个CPU时钟周期,高速网络环境下,数据报文之间的时间间隔小于访存的时间,因此无法满足高速网络下的线速率地数据包处理需求)。
(3)CPU性能问题:现有CPU的处理能力不能满足线速率的数据包处理要求。
网络带宽的急剧增长,要求数据包必须快速处理。可编程的多核处理器是网络流量处理新的发展趋势。一方面,多核处理器的多级缓存机制,加快了数据存取的操作;另一方面,在多核处理器上采用多线程技术优化算法,提高系统性能。Tilera-gx36是一款板载在PCIe(高速数据传输总线)接口的网络多核处理器(参见图1所示,参考TILERA UG505手册在第2页,2013年8月)。Tilera-gx36和通用CPU组成协处理器架构。它将部分网络功能从通用CPU中分离出来,将处理后的数据包通过PCIe线速率地传到x86服务器上,减轻通用CPU的处理负担。Tilera提供了高速数据包处理的编程接口,支持Linux编程环境,具有很好的可扩展性。此外,Tilera能耗低,是数据中心和网络处理设备的发展趋势。
万兆网络环境下的实时流量分析,需要处理海量数据,增大了数据处理的难度。利用Tilera多核加速卡的mPIPE(多核可编程智能数据包引擎)实现流量的采集;在Tilera多核处理器上通过流表实现基于流的数据包过滤;将过滤后的数据包通过PCIe驱动传输到通用主机上,实现数据包的存储。
发明内容
本发明提出了使用Tilera多核加速卡的基于流的数据包过滤方法。Tilera多核加速卡的mPIPE数据包处理引擎,完成高速网络环境下数据包的采集;在Tilera多核加速卡上通过流表机制实现基于流的数据包过滤;利用高速PCIe将过滤后的流量传输到计算机中,在计算机中存储数据包。本发明使用Tilera多核加速卡采集数据包,适合万兆网络环境中的数据包采集;基于流的数据包过滤,提高了过滤的效率,减少了数据分析时的数据量;Tilera多核加速卡使用PCIe传输数据包,实现数据的存储。
本发明数据包过滤系统的特点是:基于Tilera多核加速卡与通用主机构成的混合体系结构;其包括有数据包采集、基于流的数据包过虑和数据包存储;Tilera适合在万兆网络环境下数据包的处理与分析;本发明数据包过滤方法是基于流的数据包过滤,减少了规则匹配的次数,提高了过滤性能;Tilera多核加速卡通过PCIe接口将数据包无损地传输到通用主机上,在通用主机上存储数据包。
本发明设计的一种使用Tilera多核加速卡基于流的数据包过滤系统,所述Tilera多核加速卡与计算机之间为PCIe总线连接,其特征在于:基于流的数据包过滤系统包括有数据包采集模块(21)、提取五元组信息模块(22)、流表查找模块(23)、PCIe数据包传输模块(24)、规则库模块(31)、规则匹配模块(32)、新增流表项模块(33)、PCIe数据包接收模块(11)和数据包存储模块(12);其中,数据包采集模块(21)、提取五元组信息模块(22)、流表查找模块(23)、PCIe数据包传输模块(24)、规则库模块(31)、规则匹配模块(32)和新增流表项模块(33)内嵌在Tilera多核加速卡的Tile核内;其中,PCIe数据包接收模块(11)和数据包存储模块(12)内嵌在计算机中;
PCIe数据包接收模块(11)用于接收经Tilera多核加速卡传输的流集FL={flow1,flow2,…,flowN};
数据包存储模块(12)是从PCIe队列当中获得流集FL={flow1,flow2,…,flowN},以PCAP文件格式存储在计算机的存储器中;
数据包采集模块(21)一方面从mPIPE单元中采集数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},另一方面将采集的PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}放在缓冲区buffer中;
提取五元组信息模块(22)从缓冲区buffer中提取出的任意一数据包packetM的五元组信息op={srcPort,dstPort,tran,srcIP,dstIP},具有相同五元组的数据包组成流flowN,记为:
流表查找模块(23)第一方面先根据提取的五元组内容opZ计算出五元组的哈希值,然后根据五元组的哈希值查找流表FTABLE中的流表项;第二方面若流表FTABLE中存在处理该数据包的流表项,同时该流表项的有效位为1,则直接按照流表项对数据包进行过滤;若流表FTABLE中不存在处理该数据包的流表项,则再将该数据包输入到规则过滤匹配模块(32)中;
PCIe数据包传输模块(24)将Tilera多核加速卡的流集FL={flow1,flow2,…,flowN}采用先进先出方式,传输到计算机上;
规则库模块(31)用于保存规则;所述规则R={rule1,rule2,…,rulea};
规则匹配模块(32)中有由过滤规则组成的过滤器filter;将该数据包的五元组内容opZ,逐个查找过滤器filter中的规则filter={rule1,rule2,…,rulea},若过滤器filter中存在处理该数据包的规则rulea,则按照规则rulea进行过滤,同时生成新的流表项,添加到流表FTABLE中;若过滤器filter中不存在处理该数据包的规则rulea,则不进行过滤;
新增流表项模块(33)用于增加流表项和删除流表项;
在对任意一数据包过滤时,一方面,当流表中不存在处理该数据包的流表项时,仍需要查找规则集合R={rule1,rule2,…,rulea};如果规则集合R={rule1,rule2,…,rulea}中有处理该数据包的规则rulea,则更新流表模块需要将该规则rulea转化成流表项的格式插入到流表中;另一方面,更新流表模块要监视流表中流表项的生命周期;当该流表项的生命周期减为0时,将该流表项的有效位设为0,表示该流表项无效,被新的流表项所替代。
本发明使用Tilera多核加速卡基于流的数据包过滤的优点在于:
①本发明是基于Tilera多核加速卡与通用主机的混合架构的数据包采集、在线数据包过滤与存储方法。
②Tilera多核加速卡将数据包的采集与过滤功能从计算机中分离出来,满足了高速网络对数据的实时快速处理要求。
③Tilera多核加速卡具有硬件可编程的特点,可移植性高;同时在线过滤功能将与存储和数据分析无关的流量过滤掉,减少了海量数据存储的压力,通用主机只分析与之有关的流量,提高了数据分析的效率。
附图说明
图1是Tilera多核加速卡的内部结构框图。
图2是本发明使用Tilera多核加速卡基于流的数据包过滤系统的结构框图。
图3是本发明使用Tilera多核加速卡基于流的数据包过滤方法的流程图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的详细说明。
在本发明中,第一个数据包记为packet1,第二个数据包记为packet2,第三个数据包记为packet3,第四个数据包记为packet4,第五个数据包记为packet5,第六个数据包记为packet6,第M个数据包记为packetM,为了方便说明,packetM也称为任意一个数据包,M表示数据包的标识号。采用集合形式表达数据包集记为PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}。
在本发明中,数据包的五元组信息记为op={srcPort,dstPort,tran,srcIP,dstIP};
srcPort表示源端口号。
dstPort表示目的端口号。
tran表示协议号。
srcIP表示源IP地址。
dstIP表示目的IP地址。
在本发明中,网络流量network traffic中通常包含有一条流或者多条流。具有相同五元组信息的数据包组成一条流flowN,属于所述流flowN的五元组信息记为opN。举例说明,第三个数据包packet3和第四个数据包packet4具有的相同五元组信息记为op1,则属于第一条流flow1,采用集合形式表达为第五个数据包packet5和第六个数据包packet6,具有的相同五元组信息记为op2,则属于第二条流flow2,采用集合形式表达为第一个数据包packet1、第二个数据包packet2和第M个数据包packetM,具有的相同五元组信息记为opN,则属于第N条流flowN,采用集合形式表达为第一条流记为flow1,第二条流记为flow2,第N条流记为flowN。为了方便说明,flowN也称为任意一条流,N表示流的标识号。采用集合形式表达流记为流集FL={flow1,flow2,…,flowN}。
将第一条规则记为rule1,第二条规则记为rule2,最后一条规则记为rulea,a表示规则的标识号。为了表示方便,rulea表示任意一条规则。采用集合形式表达规则为filter={rule1,rule2,…,rulea}。一个过滤器filter是由一条或多条规则链接而成。
参见图2所示,本发明设计的一种使用Tilera多核加速卡基于流的数据包过滤系统,其包括有数据包采集模块21、提取五元组信息模块22、流表查找模块23、PCIe数据包传输模块24、规则库模块31、规则匹配模块32、新增流表项模块33、PCIe数据包接收模块11和数据包存储模块12。其中,数据包采集模块21、提取五元组信息模块22、流表查找模块23、PCIe数据包传输模块24、规则库模块31、规则匹配模块32和新增流表项模块33内嵌在Tilera多核加速卡的Tile核内(如图1所示)。其中,PCIe数据包接收模块11和数据包存储模块12内嵌在计算机中。计算机是一种能够按照事先存储的程序,自动、高速地进行大量数值计算和各种信息处理的现代化智能电子设备。最低配置为CPU 2GHz,内存2GB,硬盘180GB;操作系统为windows XP及以上版本。
在本发明中,设计的一种使用Tilera多核加速卡基于流的数据包过滤系统,是在Tilera多核加速卡与计算机的异构系统下的数据包采集、基于流的数据过滤与数据包存储。因此,本发明系统涉及Tilera多核加速卡与计算机之间为PCIe总线连接。
在本发明中,通过网络传输给Tilera多核加速卡的数据包记为原始数据包PAin,Tilera多核加速卡输出给计算机的过滤数据包记为FL={flow1,flow2,…,flowN}。
在Tilera多核加速卡中的mPIPE单元能够对原始数据包PAin进行存放位置叙述,然后输出数据PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}。
PCIe数据包接收模块11
在本发明中,PCIe数据包接收模块11内嵌在计算机中。PCIe数据包接收模块11用于接收经Tilera多核加速卡传输的流集FL={flow1,flow2,…,flowN}。即:
数据包存储模块12
在本发明中,数据包存储模块12内嵌在计算机中。数据包存储模块12是从PCIe队列当中获得流集FL={flow1,flow2,…,flowN},以PCAP文件格式存储在计算机的存储器中。所述存储器可以是计算机的内存条,也可以是硬盘。
在本发明中,所述的PCAP文件格式请参考2013年10月第1版《网络流量分类方法与实践》,汪立东,钱丽萍主编,第24、25页的内容。PCAP文件是二进制文件,包含文件头和数据记录两部分,文件头记录了该PCAP文件的一些属性信息,数据部分是按包捕获时间逐个记录的数据帧级记录。
数据包采集模块21
数据包采集模块21一方面从mPIPE单元中采集数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},另一方面将采集的PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}放在缓冲区buffer中。
提取五元组信息模块22
在本发明中,源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP构成了五元组信息op,采用集合形式记为op={srcPort,dstPort,tran,srcIP,dstIP}。
提取五元组信息模块22从缓冲区buffer中提取出的任意一数据包packetM的五元组信息op={srcPort,dstPort,tran,srcIP,dstIP},具有相同五元组的数据包组成流flowN,记为:
例如一,提取五元组信息模块22从缓冲区buffer中提取出所属流flow1的数据包然后从第三个数据包packet3和第四个数据包packet4中提取出源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP,从而构成五元组信息集合op1={srcPort,dstPort,tran,srcIP,dstIP}。
例如二,提取五元组信息模块22从缓冲区buffer中提取出所属流flow2的数据包然后从第五个数据包packet5和第六个数据包packet6中提取出源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP,从而构成五元组信息集合op2={srcPort,dstPort,tran,srcIP,dstIP}。
在本发明中,任意一个五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}是用来与流表FTABLE和过滤器filter中的规则filter={rule1,rule2,…,rulea}进行匹配的。
流表FTABLE
在本发明中,流表FTABLE的格式为四列多行表格形式,如表1:
表1流表格式
五元组的哈希值 生命周期 有效位 动作
五元组的哈希值:是指数据包的五元组信息经过哈希函数计算得到,可以是32位的值,或者64位值。
生命周期:是指流表FTABLE中的流表项的存活时间。为了防止流表急剧增加,为每个流表项设置一个生命周期。
有效位:是指流表FTABLE中的流表项是否为有效。
动作:是指对数据包的处理行为,包括有:丢弃Drop、转发Forward、传输Transfer。
在设计流表FTABLE时,需要考虑到流表项溢出和哈希冲突的解决。为了防止流表满,本发明为流表项设置了生命周期当生命周期递减为0时该流表项失效,即可被新的流表项替代。
流表查找模块23
流表查找模块23第一方面先根据提取的五元组内容opZ计算出五元组的哈希值,然后根据五元组的哈希值查找流表FTABLE中的流表项。第二方面若流表FTABLE中存在处理该数据包的流表项,同时该流表项的有效位为1,则直接按照流表项对数据包进行过滤;若流表FTABLE中不存在处理该数据包的流表项,则再将该数据包输入到规则过滤匹配模块32中。
PCIe数据包传输模块24
PCIe数据包传输模块24将Tilera多核加速卡的流集FL={flow1,flow2,…,flowN}采用先进先出方式,传输到计算机上。
在本发明中,流集FL={flow1,flow2,…,flowN}是以数据包的形式传输的,数据包记为M24,如图2所示。
规则库模块31
在本发明中,规则库模块31是依据《Demonstrating Software-Defined NICOperations on TILEncor-Gx Adapters,AN056》第25页中的内容来设置不同规则的。因此,规则库模块31用于保存规则R={rule1,rule2,…,rulea}。将第一条规则记为rule1,第二条规则记为rule2,最后一条规则记为rulea,a表示规则的标识号。一个过滤器filter是由一条或多条规则链接而成。
任意一条规则rulea的格式如表2所示:
Action src_addr/num dst_addr/num src_port dst_port proto
Action:Action是指该规则所指定的处理数据包的动作,包括:丢弃、转发、传输。
src_addr/num:是指源网络地址及源网络地址的子网掩码的位数。如:10.1.2.0/24:表示网络号为:10.1.2.0,子网掩码的位数为24位。
dst_addr/num:是指目的网络地址及目的网络地址的子网掩码位数。
src_port:正则表达式表示的源端口。
dst_port:正则表达式表示的目的端口。
proto:正则表达式表示的协议号。
本发明中,规则的格式,请参考《Demonstrating Software-Defined NICOperations on TILEncor-Gx Adapters,AN056》第25页。
The command syntax for ip rule is as follows:
{permit|drop|redirect}TCP/UDP src_ip dst_ip protocol[if_name]译文:规则的语法为:{允许,丢弃,转发}ip源地址目的地址协议[接口名称]。
所不同的是,在本发明的设计中,参考《网络流量分类方法与实践》第120页,“正则表达式方法面向复合型条件,可以用一个表达式表示一组规则,也支持对规则进行关联,从而可以更精确地匹配数据包中的特征。”因此,在设计规则时,采用正则表达式的形式表示规则中的域。
源地址是由源网络地址及其源网络地址的子网掩码的位数组成的,它不仅可以表示一个源网络地址,也可以表示一组源网络地址。
目的地址是由目的网络地址及其目的网络地址的子网掩码的位数组成的,它不仅可以表示一个目的网络地址,也可以表示一组目的网络地址。
源端口是由正则表达式表示的,不仅可以表示一个源端口,也可以指代一个范围区间的源端口
目的端口是由正则表达式表示的,不仅可以表示一个目的端口,也可以指代一个范围区间的目的。
过滤器请参考《Demonstrating Software-Defined NIC Operations onTILEncor-Gx Adapters,AN056》第25页。
You can define a filter as a set of rules and actions.The commandsyntax for a filter is as followings:
Ipv4 filter filter_name
{add|delete}rule_1
{add|delete}rule_2
译文:你可以定义一个过滤器,它是一组规则和动作的集合。定义过滤器的语法如下所示:
Ipv4 filter过滤器名
{add|delete}规则_1
{add|delete}规则_2
在本发明中,过滤器是有一个规则或多个规则的集合表示为filter={rule1,rule2,…,rulea}。
举例说明规则一:
rule1:drop 192.168.3.18/24 0.0.0.0/0 53034 80tcp
rule1:将所有来自192.168.3.18.0网段,tcp协议且目的端口为80的流量全部丢弃。此时,rule1一旦生效,所有来自192.168.3.18.0网段,tcp协议且源端口为53034、目的端口为80的流量都要被丢弃。由于http协议的端口是80,因此不能使用http协议访问。
举例说明规则二:
rule2:drop 0.0.0.0/0 123.125.70.106/32 56273 80udp
rule2:将所有去往123.125.70.106地址,源端口为56273、目的端口为80的流量全部丢弃。由于,123.125.70.106是百度视频的一个服务器的地址,所有通过请求此地址看百度视频的用户将无法收看百度视频。只能更换其他的IP地址。
举例说明规则三:
rule3:transfer 0.0.0.0/0 0.0.0.0/0 62408 80tcp
rule3:将所有的源端口是62408、目的端口是80协议为tcp协议的流量通过PCIe传输到计算机。通过rule3的作用,所有发往80端口的流量被以PCAP文件格式保存到计算机。计算机只分析目的端口为80的http协议即可了。
规则匹配模块32
规则匹配模块32中有由过滤规则组成的过滤器filter。将该数据包的五元组内容opZ,逐个查找过滤器filter中的规则filter={rule1,rule2,…,rulea},若过滤器filter中存在处理该数据包的规则rulea,则按照规则rulea进行过滤,同时生成新的流表项,添加到流表FTABLE中。若过滤器filter中不存在处理该数据包的规则rulea,则不进行过滤。
新增流表项模块33
新增流表项模块33用于增加流表项和删除流表项。在对任意一数据包过滤时,一方面,当流表中不存在处理该数据包的流表项时,仍需要查找规则集合R={rule1,rule2,…,rulea}。如果规则集合R={rule1,rule2,…,rulea}中有处理该数据包的规则rulea,则更新流表模块需要将该规则rulea转化成流表项的格式插入到流表中。另一方面,更新流表模块要监视流表中流表项的生命周期。当该流表项的生命周期减为0时,将该流表项的有效位设为0,表示该流表项无效,被新的流表项所替代。
本发明是使用Tilera多核加速卡基于流的数据包过滤方法。在对所有数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}进行过滤时,以流为单位进行过滤。即,对于到达的任意一个数据包首先查找流表,若流表中存在处理该的流表项,则直接对处理。若不存在,再搜索规则集合R={rule1,rule2,…,rulea}并根据R={rule1,rule2,…,rulea}中的rulea进行过滤。由此可知,对于任意一条流flowN中的数据包仅流的首个数据包需要利用流表查找和过滤器Filter共同作用完成过滤,任意一条流flowN中的其它数据包,仅通过一次流表查找即可完成过滤。
本发明的使用Tilera多核加速卡基于流的数据包过滤方法,其包括有下列步骤:
步骤一,数据包采集;
从Tilera多核加速卡的mPIPE单元中获取所有的数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},并将其存放在缓冲区buffer中。
步骤二,五元组内容提取;
对上述所有数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}进行五元组信息提取,得到属于不同流下的数据包的五元组信息。
举例说明,令第三个数据包packet3和第四个数据包packet4具有的相同五元组信息记为op1,则属于第一条流flow1,采用集合形式表达为令第五个数据包packet5和第六个数据包packet6,具有的相同五元组信息记为op2,则属于第二条流flow2,采用集合形式表达为令第一个数据包packet1、第二个数据包packet2和第M个数据包packetM,具有的相同五元组信息记为opN,则属于第N条流flowN,采用集合形式表达为第一条流记为flow1,第二条流记为flow2,第N条流记为flowN。为了方便说明,flowN也称为任意一条流,N表示流的标识号。采用集合形式表达流记为流集FL={flow1,flow2,…,flowN}。
步骤三,流表查找及过滤;
计算任意一个数据包五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}的哈希值,依据此哈希值查找流表,并与流表中流表项进行匹配。若流表中存在处理该数据包的流表项,则过滤该数据包结束,返回步骤一;若流表中不存在处理该数据包的流表项,则进入到步骤四。
步骤四,规则集合查找及过滤;
使用数据包的数据包头部五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}查找过滤器Filter中的规则R={rule1,rule2,…,rulea},并将数据包头部的五元组信息与规则项进行匹配,若过滤器Filter中存在处理该数据包的规则rulea,则对数据包执行过滤,同时生成新的流表项,添加到流表中,返回步骤一;若过滤器Filter中不存在处理该数据包的规则rulea,则进入到步骤五;
步骤五,数据包传输;
将数据包传输到PCIe队列中,等待通用主机中的PCIe接收程序接收数据包
步骤六,数据包存储;
接收来自PCIe队列中的数据包并且将数据包以PCAP文件格式存储到主机端。
本发明是一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法,所要解决的是如何在计算机上通过加载Tilera多核加速卡来提高计算机性能的技术问题,本发明采用了基于Tilera多核加速卡与通用主机的混合架构的数据包采集、在线数据包过滤与存储方法的技术手段,从而实现将数据包的采集与过滤功能从计算机中分离出来,满足了高速网络对数据的实时快速处理要求的技术效果。
实施例
以下给出本发明的一个实施例,说明本发明数据包过滤的过程。具体数据包过滤步骤如下:
步骤一,板载在通用主机的Tilera多核加速卡的mPIPE单元获得来自网络设备发送的数据包PAin,mPIPE给所有接收到的数据包PAin依据数据包PAin到达的顺序加上时间戳,此时的数据包为
PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}。
从mPIPE单元中读取所有的数据包
PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},并将所有的数据包
PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}存放入到缓冲区中。
步骤二,对上述所有的数据包
PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}中的任意一数据包packetM提取五元组信息
opN={srcPort,dstPort,tran,srcIP,dstIP}。具有相同五元组的数据包组成流
五元组不同的数据包属于不同的流。
步骤三,计算任意一个数据包五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}的哈希值,依据此哈希值查找流表,并与流表中流表项进行匹配。若流表中存在处理该数据包的流表项,则过滤该数据包结束,返回步骤一;若流表中不存在处理该数据包的流表项,则进入到步骤四。
步骤四,使用数据包的头部五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}查找过滤器Filter中的规则R={rule1,rule2,…,rulea},并将数据包头部的五元组信息与规则项进行匹配,若过滤器Filter中存在处理该数据包的规则rulea,则对数据包执行过滤,同时生成新的流表项,添加到流表中,返回步骤一;若过滤器Filter中不存在处理该数据包的规则rulea,则进入到步骤五;
步骤五,将过滤后的数据包传输到Tilera多核加速卡的PCIe队列中,等待通用主机中的PCIe数据包接收程序接收数据包
步骤六,数据包接收程序接收来自PCIe队列中的数据包并且将数据包以PCAP文件格式存储到通用主机上。

Claims (8)

1.一种使用Tilera多核加速卡基于流的数据包过滤系统,所述Tilera多核加速卡与计算机之间为PCIe总线连接,其特征在于:基于流的数据包过滤系统包括有数据包采集模块(21)、提取五元组信息模块(22)、流表查找模块(23)、PCIe数据包传输模块(24)、规则库模块(31)、规则匹配模块(32)、新增流表项模块(33)、PCIe数据包接收模块(11)和数据包存储模块(12);其中,数据包采集模块(21)、提取五元组信息模块(22)、流表查找模块(23)、PCIe数据包传输模块(24)、规则库模块(31)、规则匹配模块(32)和新增流表项模块(33)内嵌在Tilera多核加速卡的Tile核内;其中,PCIe数据包接收模块(11)和数据包存储模块(12)内嵌在计算机中;
PCIe数据包接收模块(11)用于接收经Tilera多核加速卡传输的流集FL={flow1,flow2,…,flowN};
数据包存储模块(12)是从PCIe队列当中获得流集FL={flow1,flow2,…,flowN},以PCAP文件格式存储在计算机的存储器中;
数据包采集模块(21)一方面从mPIPE单元中采集数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},另一方面将采集的PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}放在缓冲区buffer中;
提取五元组信息模块(22)从缓冲区buffer中提取出的任意一数据包packetM的五元组信息op={srcPort,dstPort,tran,srcIP,dstIP},具有相同五元组的数据包组成流flowN,记为:
流表查找模块(23)第一方面先根据提取的五元组内容opZ计算出五元组的哈希值,然后根据五元组的哈希值查找流表FTABLE中的流表项;第二方面若流表FTABLE中存在处理该数据包的流表项,同时该流表项的有效位为1,则直接按照流表项对数据包进行过滤;若流表FTABLE中不存在处理该数据包的流表项,则再将该数据包输入到规则过滤匹配模块(32)中;
PCIe数据包传输模块(24)将Tilera多核加速卡的流集FL={flow1,flow2,…,flowN}采用先进先出方式,传输到计算机上;
规则库模块(31)用于保存规则;所述规则R={rule1,rule2,…,rulea};
规则匹配模块(32)中有由过滤规则组成的过滤器filter;将该数据包的五元组内容opZ,逐个查找过滤器filter中的规则filter={rule1,rule2,…,rulea},若过滤器filter中存在处理该数据包的规则rulea,则按照规则rulea进行过滤,同时生成新的流表项,添加到流表FTABLE中;若过滤器filter中不存在处理该数据包的规则rulea,则不进行过滤;
新增流表项模块(33)用于增加流表项和删除流表项;
在对任意一数据包过滤时,一方面,当流表中不存在处理该数据包的流表项时,仍需要查找规则集合R={rule1,rule2,…,rulea};如果规则集合R={rule1,rule2,…,rulea}中有处理该数据包的规则rulea,则更新流表模块需要将该规则rulea转化成流表项的格式插入到流表中;另一方面,更新流表模块要监视流表中流表项的生命周期;当该流表项的生命周期减为0时,将该流表项的有效位设为0,表示该流表项无效,被新的流表项所替代。
2.根据权利要求1所述的使用Tilera多核加速卡基于流的数据包过滤系统,其特征在于:适用于Tilera多核加速卡与计算机的异构系统下的数据包采集、基于流的数据过滤与数据包存储。
3.根据权利要求1所述的使用Tilera多核加速卡基于流的数据包过滤系统,其特征在于:任意一个五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}是用来与流表FTABLE和过滤器filter中的规则filter={rule1,rule2,…,rulea}进行匹配的。
4.根据权利要求1所述的使用Tilera多核加速卡基于流的数据包过滤系统,其特征在于:流表FTABLE的格式为四列多行表格形式。
5.根据权利要求1所述的使用Tilera多核加速卡基于流的数据包过滤系统,其特征在于:使用Tilera多核加速卡基于流的数据包过滤,在对所有数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}进行过滤时,以流为单位进行过滤。
6.一种使用Tilera多核加速卡基于流的数据包过滤方法,其特征在于包括有下列步骤:
步骤一,数据包采集;
从Tilera多核加速卡的mPIPE单元中获取所有的数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM},并将其存放在缓冲区buffer中;
步骤二,五元组内容提取;
对上述所有数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}进行五元组信息提取,得到属于不同流下的数据包的五元组信息;
令第三个数据包packet3和第四个数据包packet4具有的相同五元组信息记为op1,则属于第一条流flow1,采用集合形式表达为
令第五个数据包packet5和第六个数据包packet6,具有的相同五元组信息记为op2,则属于第二条流flow2,采用集合形式表达为
令第一个数据包packet1、第二个数据包packet2和第M个数据包packetM,具有的相同五元组信息记为opN,则属于第N条流flowN,采用集合形式表达为所有流构成的流集记为FL={flow1,flow2,…,flowN};
步骤三,流表查找及过滤;
计算任意一个数据包五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}的哈希值,依据此哈希值查找流表,并与流表中流表项进行匹配;若流表中存在处理该数据包的流表项,则过滤该数据包结束,返回步骤一;若流表中不存在处理该数据包的流表项,则进入到步骤四;
步骤四,规则集合查找及过滤;
使用数据包的数据包头部五元组信息opN={srcPort,dstPort,tran,srcIP,dstIP}查找过滤器Filter中的规则R={rule1,rule2,…,rulea},并将数据包头部的五元组信息与规则项进行匹配,若过滤器Filter中存在处理该数据包的规则rulea,则对数据包执行过滤,同时生成新的流表项,添加到流表中,返回步骤一;若过滤器Filter中不存在处理该数据包的规则rulea,则进入到步骤五;
步骤五,数据包传输;
将数据包传输到PCIe队列中,等待通用主机中的PCIe接收程序接收数据包
步骤六,数据包存储;
接收来自PCIe队列中的数据包并且将数据包以PCAP文件格式存储到主机端。
7.根据权利要求6所述的使用Tilera多核加速卡基于流的数据包过滤方法,其特征在于:使用Tilera多核加速卡基于流的数据包过滤,在对所有数据包PA={packet1,packet2,packet3,packet4,packet5,packet6,…,packetM}进行过滤时,以流为单位进行过滤。
8.根据权利要求6所述的使用Tilera多核加速卡基于流的数据包过滤方法,其特征在于:对于到达的任意一个数据包首先查找流表,若流表中存在处理该的流表项,则直接对处理;若不存在,再搜索规则集合R={rule1,rule2,…,rulea}并根据R={rule1,rule2,…,rulea}中的rulea进行过滤;由此可知,对于任意一条流flowN中的数据包仅流的首个数据包需要利用流表查找和过滤器Filter共同作用完成过滤,任意一条流flowN中的其它数据包,仅通过一次流表查找即可完成过滤。
CN201510834423.8A 2015-11-25 2015-11-25 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 Active CN105516016B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510834423.8A CN105516016B (zh) 2015-11-25 2015-11-25 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510834423.8A CN105516016B (zh) 2015-11-25 2015-11-25 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法

Publications (2)

Publication Number Publication Date
CN105516016A CN105516016A (zh) 2016-04-20
CN105516016B true CN105516016B (zh) 2018-05-11

Family

ID=55723666

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510834423.8A Active CN105516016B (zh) 2015-11-25 2015-11-25 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法

Country Status (1)

Country Link
CN (1) CN105516016B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200086B (zh) * 2018-01-31 2020-03-17 四川九洲电器集团有限责任公司 一种高速网络数据包过滤装置
CN109889506A (zh) * 2019-01-24 2019-06-14 黄洪廉 电力用大数据网络监控系统
CN113595822B (zh) * 2021-07-26 2024-03-22 北京恒光信息技术股份有限公司 一种数据包管理方法、系统和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063330A (zh) * 2011-01-05 2011-05-18 北京航空航天大学 一种大规模并行程序性能数据采集方法
CN103916316A (zh) * 2014-04-11 2014-07-09 国家计算机网络与信息安全管理中心 网络数据包线速捕获方法
CN103957154A (zh) * 2014-04-11 2014-07-30 国家计算机网络与信息安全管理中心 网络数据包url过滤方法
EP2802112A1 (en) * 2013-05-08 2014-11-12 Sandvine Incorporated ULC System and method for managing bitrate on networks
CN104394090A (zh) * 2014-11-14 2015-03-04 北京航空航天大学 一种采用dpi对数据包进行网络流分类的sdn控制器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063330A (zh) * 2011-01-05 2011-05-18 北京航空航天大学 一种大规模并行程序性能数据采集方法
EP2802112A1 (en) * 2013-05-08 2014-11-12 Sandvine Incorporated ULC System and method for managing bitrate on networks
CN103916316A (zh) * 2014-04-11 2014-07-09 国家计算机网络与信息安全管理中心 网络数据包线速捕获方法
CN103957154A (zh) * 2014-04-11 2014-07-30 国家计算机网络与信息安全管理中心 网络数据包url过滤方法
CN104394090A (zh) * 2014-11-14 2015-03-04 北京航空航天大学 一种采用dpi对数据包进行网络流分类的sdn控制器

Also Published As

Publication number Publication date
CN105516016A (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
CN106209506B (zh) 一种虚拟化深度包检测流量分析方法及系统
US20220200876A1 (en) Hierarchical aggregation of select network traffic statistics
US9426071B1 (en) Storing network bidirectional flow data and metadata with efficient processing technique
JP4341413B2 (ja) 統計収集装置を備えたパケット転送装置および統計収集方法
CN105993150B (zh) 增加网络设备中的分组处理速率
US8176300B2 (en) Method and apparatus for content based searching
US20120182891A1 (en) Packet analysis system and method using hadoop based parallel computation
US10873534B1 (en) Data plane with flow learning circuit
CN109309626B (zh) 一种基于dpdk的高速网络数据包捕获分流及缓存方法
CN100576819C (zh) 基于Linux内核的流量分析方法
CN108270699B (zh) 报文处理方法、分流交换机及聚合网络
US8555374B2 (en) High performance packet processing using a general purpose processor
CN106101015A (zh) 一种移动互联网流量类别标记方法和系统
CN106972985A (zh) 加速dpi设备数据处理与转发的方法和dpi设备
JP2008042892A (ja) ネットワーク監視システムとその動作方法
CN106506266B (zh) 基于GPU、Hadoop/Spark混合计算框架的网络流量分析方法
CN105516016B (zh) 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法
CN104699757B (zh) 云环境下分布式网络信息采集方法
CN102387082B (zh) 基于流分类的分组流量控制系统及控制方法
CN104394149B (zh) 一种基于并行分布式架构的复杂事件处理的方法
WO2020228527A1 (zh) 数据流的分类方法和报文转发设备
CN107465690A (zh) 一种基于流量分析的被动式异常端口实时检测方法及系统
CN115917520A (zh) 用于通过分布式算法为可编程数据平面提供lpm实现的系统
CN105681125A (zh) 一种云平台的虚拟机外网流量统计方法
CN105359472A (zh) 一种用于OpenFlow网络的数据处理方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant