一种用户态流水线架构防火墙系统技术方案

技术编号:25486262 阅读:48 留言:0更新日期:2020-09-01 23:05
本发明专利技术公开了一种用户态流水线架构防火墙系统,控制平面负责系统的管理和控制功能,将从管理口发送过来的报文重新定向到内核协议栈;数据平面负责主要业务功能,数据平面工作在用户态,可以绕过复杂的Linux内核协议栈直接从网卡获取报文。数据平面将防火墙功能软件分解为多个功能模块,每个功能模块分别绑定至一个独立的CPU核上,使用其中一个CPU核作为主核,负责接收报文,采用轮询方式实现数据包收发,形成流水线架构。本发明专利技术防火墙系统属于绕过系统内核的适合防火墙功能的软件架构,网卡驱动通常在内核中实现,本发明专利技术中改为在用户态重新实现,系统直接从网卡获取报文,有效解决了传统防火墙Linux内核导致处理效率低下的问题。

【技术实现步骤摘要】
一种用户态流水线架构防火墙系统
本专利技术属于数字信息传输
,具体涉及一种用户态流水线架构防火墙系统。
技术介绍
随着互联网通信技术的发展和互联网应用的日益普及,网络已成为主要的数据传输和信息交换平台。作为基本的网络安全产品,防火墙技术则是实现网络信息安全的一种重要手段,因此防火墙的应用场景非常广。目前,稍具规模的网络安全厂商几乎都已推出自己的防火墙产品,除了必须具备的功能,防火墙的性能也是各安全厂商竞相宣传的重点,比如很多防火墙产品采用了FPGA、ASIC、NP等硬件加速处理技术。但由于硬件加速技术的开发具有周期长、成本高、功能相对弱等缺点,许多厂商仍然会试图寻求纯软件的解决方案。绝大多数防火墙厂商软件解决方案是通过基于Linux内核架构进行设计实现。随着网络通信基础设施的进步和信息技术的快速发展,网络带宽已经达到10G、100G的阶段,与之相应对网络防火墙的处理能力的要求也随之水涨船高。然而目前遇到的主要问题是基于内核协议栈进行高带宽的数据交换处理时,防火墙的性能很难令人满意。在Linux内核中,以报文处理为例,目前存在几个方面的瓶颈问题。首先是系统调用昂贵,每次进行系统调用时,内核都需要为其准备各种内存、堆栈、中断等,导致消耗很长的时钟周期。其次是阻塞式IO引发的上下文切换,函数调用只有在操作完成后才会返回,如在读取报文时,应用程序调用recvfrom函数转入内核,内核有waitfordata和copydatafromkerneltouser两个过程,直到最后拷贝过程完成后,recvfrom函数才返回,在此之前此过程一直是阻塞的。除此之外,还有报文在内核与用户空间之间的复制,以及报文收发引发的内核中断等问题都会消耗CPU资源,导致防火墙处理能力难以满足现实的需求。由此可以看出,整个Linux内核是导致报文处理效率低下的根本原因。Linux系统是针对通用系统设计的,功能很强很全面,但专用性不够。防火墙是网络访问控制专用设备,其需要有高速的报文处理能力,基于Linux内核协议栈来设计防火墙难以满足实际需求。作为一个开源项目,基于DPDK架构的数据平面应用开发非常流行。DPDK使用了轮询(polling)方式而不是中断来处理数据包。经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。但在针对防火墙领域的DPDK开发目前还没有成熟的产品。同时,在网络安全的国产化替代的过程中,目前国产CPU与x86等国外CPU的处理能力相比还存在比较大的差距。通过软件层面的改进以弥补整机硬件性能的差距,达到满足实际用户的基本需求,是一个比较切实可行的研发方向。另一方面,随着CPU芯片技术的发展,CPU核心数不断增加,32核、64核等多核架构CPU的应用开始逐渐普及,网络安全产品中如何充分利用CPU资源来提升设备处理能力已经成为一个热门的研究课题。
技术实现思路
针对以上现有纯软件方式防火墙解决方案中存在的Linux内核调用导致防火墙的报文处理效率低下的问题,客观上需要有针对性地设计一套符合实际需求的防火墙软件架构系统,以充分利用多核心的CPU资源来提升设备处理能力。为实现上述目的,本专利技术采用的技术方案为一种用户态流水线架构防火墙系统,系统包含控制平面和数据平面。控制平面负责系统的管理和控制功能,将从管理口发送过来的报文重新定向到内核协议栈;数据平面负责系统的主要业务功能,数据平面工作在用户态,可以绕过复杂的Linux内核协议栈直接从网卡获取报文。数据平面将防火墙功能软件分解为多个功能模块,每个功能模块分别绑定至一个独立的CPU核上,使用其中一个CPU核作为主核(master),负责接收报文,采用轮询方式实现数据包收发,形成流水线或管道(pipeline)架构,驱动在收到数据包后,将数据包存入内存,应用层程序直接从内存读取数据包。控制平面将从管理口发送过来的报文,利用和内核打交道的KNI(KernelNICInterface)接口,重新定向到Linux内核协议栈,使得控制信息在用户态和内核态保持一致。通用的管理程序仍然通过socket接口与内核通信以及与远程管理客户端通信。控制平面将防火墙软件生效命令修改为支持用户态防火墙软件的应用命令,消息总线模块根据不同的CLI(CommandLineInterface,命令行界面)命令类型,将消息发送给所述多个功能模块。数据平面针对报文转发过滤功能进行多核并行处理优化,主核基于分流算法进行报文分发,分发给不同的核进行处理,其他不常用或对性能要求不高的功能放在主核上处理。作为优选,上述分流算法可以采用五元组方式。作为优选,上述不常用或对性能要求不高的功能包括VLAN、透明桥、IPSecVPN、双机热备、负载均衡等模块。本专利技术还提出一种利用上述用户态流水线架构防火墙系统实现报文过滤的方法,该报文过滤是在主核之外的CPU核上完成,具体包含以下步骤:S1:IP报文重组模块从输入队列中读取报文,进行报文重组;S2:IPMAC模块实现ip-mac的绑定功能,提供一个hash表,ip地址是key,查找到之后匹配表象的mac地址,如果匹配则通过,继续下一步处理,否则丢弃;S3:连接跟踪模块conntrack实现连接状态跟踪功能,报文进入后,首先查找连接表,如果能够查到,则直接发送到路由模块处理;如果查不到,对于TCP报文但不是TCPSYN,则丢弃;如果是其他情况进入下一阶段处理;S4:目的地址转换DNAT模块收到报文后,查找DNAT表,如果查到,则发送控制消息,更新连接状态表,同时更新报文的目的IP,并将报文发送到下一模块处理;S5:包过滤模块收到报文后,查找filter表,根据filter表的action域,判断是accept/接受还是drop/放弃,如果是drop则丢弃,同时发送控制消息给连接跟踪模块,放弃新建连接表;如果是accept,则进入下一阶段处理,默认规则为丢弃;S6:SNAT模块收到报文后,查找NAT表,如果成功,则发送控制消息给连接跟踪模块conntrack,新建连接表项,其他情况进入下一阶段处理;S7:路由跟踪模块,进入该阶段表示报文将被发送出去,这时首先发一个控制消息给连接跟踪模块conntrack,表明前面新建连接表项这一事务得到确认,然后查找路由表,如果查到则得到下一跳地址,如果没查到,则根据默认情况进行路由,根据下一跳的地址查找ARP(AddressResolutionProtocol,地址转换协议)表,更新报文的目的MAC地址,然后发往下一模块处理;S8:IP分片模块按照MTU与实际报文的大小进行IP分片处理。与现有技术相比,本专利技术具有以下的有益技术效果:1,本专利技术提出的防火墙系统属于绕过系统内核的适合防火墙功能的软件架构,网卡驱动通常是在内核中实现,本专利技术中改为在用户态重新实现,系统直接从网卡获取报文,通过本文档来自技高网
...

【技术保护点】
1.一种用户态流水线架构防火墙系统,系统包含控制平面和数据平面,控制平面负责系统的管理和控制功能,将从管理口发送过来的报文重新定向到内核协议栈,数据平面负责系统的主要业务功能,其特征在于,数据平面工作在用户态,可以绕过复杂的 Linux 内核协议栈直接从网卡获取报文,数据平面将防火墙功能软件分解为多个功能模块,每个功能模块分别绑定至一个独立的 CPU 核上,使用其中一个 CPU 核作为主核,负责接收报文,采用轮询方式实现数据包收发,形成流水线或管道架构,驱动在收到数据包后,将数据包存入内存,应用层程序直接从内存读取数据包。/n

【技术特征摘要】
1.一种用户态流水线架构防火墙系统,系统包含控制平面和数据平面,控制平面负责系统的管理和控制功能,将从管理口发送过来的报文重新定向到内核协议栈,数据平面负责系统的主要业务功能,其特征在于,数据平面工作在用户态,可以绕过复杂的Linux内核协议栈直接从网卡获取报文,数据平面将防火墙功能软件分解为多个功能模块,每个功能模块分别绑定至一个独立的CPU核上,使用其中一个CPU核作为主核,负责接收报文,采用轮询方式实现数据包收发,形成流水线或管道架构,驱动在收到数据包后,将数据包存入内存,应用层程序直接从内存读取数据包。


2.根据权利要求1所述的用户态流水线架构防火墙系统,其特征在于,控制平面将从业务口发送过来的控制报文,利用和内核打交道的KNI接口重新定向到Linux内核协议栈,使得控制信息在用户态和内核态保持一致。


3.根据权利要求1所述的用户态流水线架构防火墙系统,其特征在于,控制平面的通用管理程序仍然通过socket接口与内核通信以及与远程管理客户端通信。


4.根据权利要求1所述的用户态流水线架构防火墙系统,其特征在于,控制平面管理程序将防火墙软件生效命令修改为支持用户态防火墙软件的应用命令,消息总线模块根据不同的CLI命令类型将消息发送给所述多个功能模块。


5.根据权利要求1所述的用户态流水线架构防火墙系统,其特征在于,数据平面针对报文转发过滤功能进行多核并行处理优化,主核根据一定的分流算法进行报文分发,分发给不同的核进行处理,其他不常用或对性能要求不高的功能放在主核上处理。


6.根据权利要求5所述的用户态流水线架构防火墙系统,其特征在于所述分流算法为基于五元组方式。


7.根据权利要求5所述的用户态流水线架构防火墙系统,其特征在于所述不常用或对性能要求不高的功...

【专利技术属性】
技术研发人员:王传林
申请(专利权)人:江苏深网科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1