基于可编程逻辑门阵列芯片实现防火墙报文检测系统的设计

可编程逻辑

1339人已加入

描述

一。引言

1.防火墙

防火墙技术作为必备的安全手段越来越多地应用于各种互联网络。但是传统防火墙的处理速度已成为限制网络带宽的瓶颈,极大地制约了在网络中的实际应用。基于FPGA的硬件防火墙系统能具有良好的性能并能够更好的满足高速带宽的需要。防火墙具有包过滤、NAT、VPN以及应用代理等功能。最基本的功能是包过滤,主要是根据定义好的过滤规则审查每个数据包,根据匹配过滤规则来确定对数据包如何动作。与一般包过滤不同的还有动态包过滤,它是根据数据包前面的报文描述的会话状态来检查包,从而确定如何对包进行过滤。此外防火墙还具有健全的日志和审计功能。

2.CAM

网络

内容寻址存储器(Content Addressable Memory-CAM)能够在一个硬件时钟周期内完成关键字的精确匹配查找。常用的随机存储器通过输入地址来返回该地址处所对应的数据信息,但是CAM的访问方式不同,它只需要输入关键字的内容,CAM就会将此关键字与CAM中所有的表项同时进行匹配比较,最后返回匹配表项在CAM中所对应的地址。

二。网络报文硬件处理平台及报文处理流程

●硬件报文处理平台

我们开发了一个基于FPGA(可编程逻辑门阵列)的硬件网络处理平台。系统平台由高速网络接口单元,SRAM内存单元,FIFO缓存单元,FPGA和MPC860通信控制单元组成。我们利用该平台接收网络报文并进行过滤分析,根据过滤规则判断报文特征并采取相应的措施,从而有效的检测可疑报文并防范网络入侵。如下图所示,硬件系统由以下几个部分组成:

网络

1.网络数据采集部分

网络数据采集部分主要是由PHY芯片和MAC芯片来完成对网络数据包的接收和发送工作。并通过MAC芯片的IX BUS接口将网络数据包实时地送给系统核心模块——FPGA,由FPGA来完成对数据包的进一步处理工作。

2.FPGA开发板部分

选用的FPGA芯片是ALTERA公司的APEX20KE1000E。此型号的规模大,逻辑门达到150万门,具有51840个逻辑单元(LEs),特别是其内部可定义的存储单元大,达到了442368位,而且使用嵌入式系统块(ESB)实现内容可寻址存储器(CAM)功能。FPGA开发板是一功能相对独立的数据包处理板,完成来自MAC芯片的数据包的过滤、缓存、关键字信息提取、比对查找、正常报文的调度输出等功能,是整个系统的核心处理部分。

3.SRAM缓存部分

在系统运行过程中,我们将把关键字规则模型存放在一个存储器中,如将其缓存在FPGA片内,将占用FPGA大量资源,所以必须使用独立的存储器。

4.MPC860开发板部分

高集成的通讯控制器MPC860是一种通用的单片微处理器,它适用各种控制器功能。显著的性能使它在通信和网络系统方面应用广泛。嵌入式处理器MPC860在系统中起到FPGA与用户主机之间的桥梁与纽带作用。此开发板可以作为我们网络处理系统的主控板。MPC860除了接收FIFO中的报文,还需实现与后台主机的数据传输。另外也要对FPGA进行一些命令控制操作。

●报文处理流程

报文过滤可以通过访问CAM来实现。CAM由一组过滤规则按照过滤的先后顺序组织在一起的,过滤规则基于可以提供结IP转发过程的包头信息,如IP源地址、IP目的地址、协议类型、TCP/UDP端口等。通常将访问控制列表应用到一个网络接口上,对于每一个通过该接口进入或流出网络的包,过滤器自顶向下依次与列表中的过滤规则进行比较,直到有一个匹配发生或到达列表的底部。如果有一个匹配,将执行一个允许或拒绝的动作;如果没有一个匹配发生,将执行一个默认的抛弃报文操作。报文处理的流程下图所示。

网络

三。在FPGA中实现CAM关键字匹配

1.下图描述了ALTERA系列FPGA芯片中嵌入式CAM模块

网络

APEX CAM 提供可变的CAM容量。一个APEX ESB嵌入式系统模块可以被构造成一个32-word×32-bit的CAM块, 并且多个ESB 可以被层叠构造成更大更深的CAM块。例如,如果在EP20K -1000E中所有的ESB用来作CAM,可以创建一160-K比特的CAM块。

2.关键字匹配模块设计

网络

关键字匹配模块设计利用FPGA来实现。利用FPGA内部的CAM来处理可变长度的关键字。它由控制单元,CAM比对单元,关键字匹配处理单元和地址输出逻辑组成。CAM比对单元负责加载所有的需要匹配的关键字信号并进行关键字的匹配。控制单元接收来自网络的报文并且输出每个匹配上关键字信号地址。后台处理机可以根据对收集到的信息进行分析,并采取相应策略。

该设计的核心模块是CAM比对单元和关键字匹配处理单元。CAM在9*n的存储阵列存储8bit字符。其中第九比特位是关键字结束标识位,n代表关键字字符数即关键字的总长度。一个输入字符同时与阵列中的n栏进行比对。当这个字符中的8bit全部匹配,该栏的字符匹配标志被激活并标识为1。

关键字匹配处理阵列由n×1个处理单元(PE)组成,PE由关键字匹配算法电路逻辑和一个寄存器组成。在程序中,我们在关键字开始处设置了一个标识位,并且只要接下来的输入字符连续匹配,该标识将顺序移至关键字的结束处。举例说明:我们利用Snort源代码的NIDS数据库[5]中的两个关键字L44和L44ADSL,并把它们放入到CAM中。如图所示:

网络

L44中的第二个4和L44ADSL中的第二个L被标记为星号表示第九比特为1,因为它们是关键字的最后一个字符。我们输入字符串“fl44d”进行关键字匹配过程,CAM 每时钟周期匹配一个字符。第一个时钟周期,字符f输入到CAM并且没有匹配输出。在第二个时钟,第二个字符l有三个匹配位置。PE阵列判断并设置PE(0)和PE(3)为1,表示可能的关键字匹配已经找到。PE(9)没有标志为1,因为它不是关键字的开始。在接下来的时钟周期,字符4,4和d 被放入CAM进行比对,同时PE匹配位跟着移动。当第二个4匹配时,PE(2)标识置1,并且关键字匹配信号同时置1,因为4是第一个关键字的最后一个字符。它也可能是第二个关键字的匹配,但是当下一个字符d到达时不再有匹配,此时PE标识置0。相对于输入流,因为一个新的输入字符每隔一个时钟周期进行处理,关键字匹配阵列可以线速处理输入字符串。处理时间与关键字的数量相关。

我们已经用verilog语言在quartus II开发环境下设计实现了这个NIDS结构,采用的是ALTERA公司的EP20K-1000E芯片。

四。总结及下一步研究

基于软件的报文匹配不能够胜任高速网络的需要,而基于硬件的方法是理想的选择,大量的研究在这个领域已经展开。我们已经实现了基于FPGA的CAM关键字有效匹配。但是由于CAM的容量有限,我们下一步的研究方向是将较长的关键字进行有效的压缩、分割,同时利用多个并行CAM方式加速报文处理速度方面进行进一步研究。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分