一种基于分流网卡和多核cpu实现的高速包过滤设备和方法

文档序号:7784775阅读:399来源:国知局
专利名称:一种基于分流网卡和多核cpu实现的高速包过滤设备和方法
技术领域
本发明属于网络数据处理领域,具体涉及一种基于分流网卡和多核CPU实现的高速包过滤设备和方法。
背景技术
包过滤设备是指防火墙等对网络报文进行分析过滤的设备,这类设备需要对网络流量中的每个报文进行实时处理,在高速网络的应用环境中,对设备性能要求很高,随着当前多核CPU平台的普及,很多包过滤设备是基于多核CPU实现的。多核包过滤设备要把网络流量分配到多个CPU核心上,并行收发包处理,流量分配的过程要满足一些要求,比如同一个TCP连接的数据要分配到一个CPU核心,CPU核心之间要负载均衡等。专利号为“CN200810084356. 2”、发明名称为“使用多核CPU处理QoS业务的方法、 装置和设备”公开了一种使用多核CPU处理QoS业务的方法、装置和设备。该方法包括以下步骤获取事件缓存队列中存在事件的CPU Core;根据所述CPU Core的事件缓存队列中存在的事件,获取所述CPU Core处理后的流转发出去所使用的接口 ;调度所述CPU Core对所述接口中的QoS队列进行出队列操作。通过使用本发明提供的方法、装置和设备,实现了设备任一接口上QoS队列的收发均衡,且提高了多核CPU对QoS业务的处理效率,提升了多核 CPU设备的性能。专利号为“CN200510025133.5”、发明名称为“在实时通信系统中实现大数据包快速转发的方法”公开了一种在实时通信系统中实现大数据包快速转发的方法,网卡收到由其他设备发送过来的数据包;CPU每隔一段时间向网卡查询是否有待处理的数据包;如在网卡缓存中有待处理的数据包,进入中断处理程序;该程序收到发送过来的“流”的第一个数据包,进行流程转发;“流”是指具有相同的源地址,目的地址,源端口,目的端口和协议的数据包;流程转发包括在接收缓存中对该数据包进行NAT,防火墙过滤等处理,同时在高速缓冲中建立一个索引,将该流的具体信息和需要转发的端口记录下来;当“流”的随后包达到时,中断处理程序去查找高速缓冲,根据高速缓冲中的信息将内存的数据包由相应的端口直接发送,不再将数据包从内存拷贝到发送缓冲。但上述方案中,分流过程是软件实现的,软件从网卡收到报文后,按照一定的算法把报文分发给多个CPU核心去并行处理,每个CPU核心发送报文时,需要软件把报文合并到一个发送队列中,由网卡硬件发出。这些技术的缺点是,报文在网卡和每个cpu核心之间的传输过程中,需要软件进行报文分发和合并,涉及多个缓冲区和进程的交换,往往成为系统的性能瓶颈。

发明内容
本发明克服现有技术不足,采用专用的分流网卡和多核cpu结合的方法实现包过滤设备,在保证了高速包过滤设备的性能。
本发明提供了一种基于分流网卡和多核cpu实现的高速包过滤设备,其包括多核 CPU系统模块和分流网卡模块,所述多核CPU系统模块中包括对应于每个CPU核心的报文缓冲区模块。本发明提供的基于分流网卡和多核cpu实现的高速包过滤设备,其分流网卡模块中还包括报文分发和数据读取模块,用于把网络流量分发到每个CPU核心对应的报文接收缓冲区模块内和读取每个报文缓冲区模块内的数据。本发明提供的基于分流网卡和多核cpu实现的高速包过滤设备,其报文分发和数据读取模块把网络流量同源同宿且负载均衡的分发到每个CPU核心对应的报文接收缓冲区模块内。本发明提供的基于分流网卡和多核cpu实现的高速包过滤设备,其报文分发和数据读取模块并行传输每个报文缓冲区模块内的数据。本发明还提供了一种基于分流网卡和多核cpu实现的高速包过滤方法,其在网卡驱动软件中,调用内核函数,为每个CPU核心申请本地内存的报文缓冲区。本发明提供的基于分流网卡和多核cpu实现的高速包过滤方法,其应用业务的每个进程,分别与一个所述CPU核心绑定,并且通过内存映射连接到所述CPU核心对应的所述报文缓冲区,利用所述缓冲区接收和发送报文。本发明提供的基于分流网卡和多核cpu实现的高速包过滤方法,其分流网卡接收到输入设备的报文后,进行同源同宿的分流,方法是取出所述报文的源目IP地址和系统预设的随机数矩阵进行对称的位运算,计算出所述报文要分流到的报文接收缓冲区编号,把报文写到所述缓冲区内。本发明提供的基于分流网卡和多核cpu实现的高速包过滤方法,其分流网卡依次轮询每个核心的所述报文发送缓冲区,从中读取应用业务的进程发送的报文,从网口发送出去。本发明采用分流网卡和多核cpu结合的方法实现高速的包过滤设备。多核Cpu的每个核心上启动一个进程(或线程),使用CPU核心的本地内存中的报文缓冲区接收和发送数据,提高内存访问的局部性。分流网卡是专门定制的硬件,可以打通网络数据从网卡到每个CPU核心的传输瓶颈,把网络流量同源同宿且负载均衡的分发到每个cpu核心对应的报文接收缓冲区内,把每个核心的报文发送缓冲区内的数据并行读取到网卡中发送出去。与现有技术相比,本发明的有益效果在于报文在网卡和每个cpu核心之间的传输过程中,不需要软件进行报文分发和合并,没有多个缓冲区和进程的交换开销,从而提升包过滤设备的性能。


图1是本发明的结构示意图。
具体实施例方式图1是本发明的结构示意图,其包括多核cpu系统模块和分流网卡模块,所述多核 cpu系统模块中包括对应于每个CPU核心的报文缓冲区模块。其分流网卡模块中还包括报文分发和数据读取模块,用于把网络流量同源同宿且负载均衡的分发到每个cpu核心对应的报文接收缓冲区模块内和并行读取每个报文缓冲区模块内的数据。本发明的实现方法和过程如下(1)在网卡驱动软件中,调用内核函数,为每个CPU核心申请本地内存的报文缓冲区。(2)应用业务的每个进程,分别与一个CPU核心绑定,并且通过内存映射连接到该 CPU核心对应的报文缓冲区,利用缓冲区接收和发送报文。(3)分流网卡接收到输入设备的报文后,进行同源同宿的分流,方法是取出报文的源目IP地址,和系统预设的随机数矩阵进行对称的位运算,计算出报文要分流到的报文接收缓冲区编号,把报文写到缓冲区内。(4)分流网卡依次轮询每个核心的报文发送缓冲区,从中读取应用业务的进程发送的报文,从网口发送出去。本发明报文在网卡和每个cpu核心之间的传输过程中,不需要软件进行报文分发,没有多个缓冲区和进程的交换开销,从而提升包过滤设备的性能。以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所述领域的普通技术人员应当理解依然可以对本发明的具体实施方式
进行修改或者同等替换,而未脱离本发明精神和范围的任何修改或者等同替换, 其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种基于分流网卡和多核CPU实现的高速包过滤设备,其包括多核CPU系统模块和分流网卡模块,其特征在于,多核CPU系统模块中包括对应于每个CPU核心的报文缓冲区模块。
2.根据权利要求1所述的过滤设备,其特征在于分流网卡模块中还包括报文分发和数据读取模块,用于把网络流量分发到每个cpu核心对应的报文接收缓冲区模块内和读取每个报文缓冲区模块内的数据。
3.根据权利要求1-2所述的过滤设备,其特征在于报文分发和数据读取模块把网络流量同源同宿且负载均衡的分发到每个cpu核心对应的报文接收缓冲区模块内。
4.根据权利要求1-2所述的过滤设备,其特征在于报文分发和数据读取模块并行读取每个报文缓冲区模块内的数据。
5.一种基于分流网卡和多核cpu实现的高速包过滤方法,其特征在于在网卡驱动软件中,调用内核函数,为每个CPU核心申请本地内存的报文缓冲区。
6.根据权利要求5所述的过滤方法,其特征在于,应用业务的每个进程,分别与一个所述CPU核心绑定,并且通过内存映射连接到所述CPU核心对应的所述报文缓冲区,利用所述缓冲区接收和发送报文。
7.根据权利要求5-6所述的过滤方法,其特征在于,分流网卡接收到输入设备的报文后,进行同源同宿的分流,方法是取出所述报文的源目IP地址和系统预设的随机数矩阵进行对称的位运算,计算出所述报文要分流到的报文接收缓冲区编号,把报文写到所述缓冲区内。
8.根据权利要求5-7所述的过滤方法,其特征在于,分流网卡依次轮询每个核心的所述报文发送缓冲区,从中读取应用业务的进程发送的报文,从网口发送出去。
全文摘要
本发明提供一种基于分流网卡和多核cpu实现的高速包过滤设备和方法,分流网卡是专门定制的硬件,可以打通网络数据从网卡到每个cpu核心的传输瓶颈,把网络流量同源同宿且负载均衡的分发到每个cpu核心对应的报文接收缓冲区内,把每个核心的报文发送缓冲区内的数据并行读取到网卡中发送出去,多核Cpu的每个核心上启动一个进程(或线程),使用CPU核心的本地内存中的报文缓冲区接收和发送数据,提高内存访问的局部性。与现有技术相比,本发明的有益效果在于提升包过滤设备的性能。
文档编号H04L29/12GK102497322SQ20111042709
公开日2012年6月13日 申请日期2011年12月19日 优先权日2011年12月19日
发明者刘朝辉, 张英文, 李静, 窦晓光, 邵宗有 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1