互联网络蓬勃发展的今日,在网络侵略检测体系(NIDS)中,大部分的网络侵略检测设备简直都依赖于一些依据特征码检测的字符串匹配算法,而字符串匹配算法的完结简直都是由软件来完结的。现在运用比较成功的实例有,Snort软件运用字符串匹配算法对包含特征码的数据包进行检测。可是软件在内容字节省中进行查找匹配时,需求在不同的处理单元中/内搬移或读取数据,这关于高速完结线速(OC-48)的检测体系来说,带来了很大的处理负荷。因而,假如选用硬件在数据包进入内存之前完结字符串匹配这一功用,将大大削减后端软件操作的处理负载。
依据IXP2400和FPGA的体系结构
IXP2400是英特尔公司推出的第二代网络处理器芯片,很多运用于宽带接入、防火墙、NIDS和负载均衡等体系中,它能满意OC-48网络线速的处理要求。玉衡铱达公司规划开发的主干网络监控体系选用了IXP2400作为数据包主处理器,FPGA作为协处理器的硬件架构来完结,体系结构框图如图1所示。
如图1所示,体系外接了4个千兆光口,用以接纳和发送数据包,它是整个监控体系和主干网络的外交通道。光口数据包通过光模块进入PMC-Sierra公司的MAC3386芯片。接纳数据包时,以太网帧数据包从千兆光口进入MAC3386,MAC3386对数据包进行解码后通过POS PHY3接口进入FPGA的FIFO单元,一起对进入FPGA的数据包进行形式字符串(Pattern-String)的匹配操作,处理后的数据包通过POS PHY3接口传输到IXP2400的MSF单元进行下一步的处理。发送时,FPGA只需求将IXP2400发送来的数据包通过POS PHY3接口传输给MAC3386,MAC3386对数据包进行编码后发送给光模块,光模块通过光口将数据包发送出去。IXP2400供给了一组数据总线来访问外部设备寄存器,IXP2400中称之为慢端口(Slow Port)。在这里,和FPGA相连的慢端口总线的一部分功用是作为写入FPGA的形式字符串通道。
图1:依据IXP2400和FPGA的体系结构示意图。
POS PHY3是一种规范化的网络传输接口,接口数据传输速率为2.5Gbps,最大支撑OC-48的传输速率接口。POS PHY3包含接纳和发送两组32位总线,作业频率为104MHz,峰值吞吐率为3.2Gbps。支撑2.5Gbps数据包的全双工操作。POS PHY3接口接纳时序图如图2所示。
图2:POS PHY3接口接纳逻辑时序图。
该时序图描绘了POS PHY3接口接纳数据包时,数据流在POS PHY3总线上的传输办法和相关的操控信号联系。关于更进一步的详细描绘能够参阅POS PHY3接口规范文档。
体系选用时钟同步规划,在时钟上升沿进行数据采样,与FPGA相连的MAC3386、IXP2400的作业时钟由FPGA的DCM单元供给,能够确保数据收集的同步和稳定性。
CAM的规划
本规划中,由于要完结几路32B的形式字符串匹配,需求占用很多的RAM存储单元,一起还得为数据包缓存FIFO保存必定的存储单元,归纳几家FPGA芯片厂商RAM的存储容量,决议选用赛灵思的Virtex2或Virtex Pro系列的FPGA芯片,由于关于相同规划的逻辑资源和寄存器资源来说, Virtex2或Virtex Pro系列的FPGA芯片的RAM容量比其他厂商都要多几倍。
FPGA中,与RAM存储单元相关的资源有三类:Block RAM、LUT、寄存器。这三类资源能够通过装备和粘合逻辑(Glue Logic)完结为不同类型和位宽巨细的单端口/双端口RAM、ROM、CAM、FIFO等。FPGA中CAM的完结和装备十分灵敏,CAM是完结形式字符串形式匹配的中心资源。
CAM即内容可寻址存储器。CAM这种存储器在其每个存储单元都包含了一个内嵌的比较逻辑,CAM依据内容寻址,通过硬件电路并行查找,完结快速匹配。一般来说在一个时钟周期内,写入CAM的待比较数据和其内部存储的每一个数据进行比较,并回来与端口数据相同的内部数据存储的地址和是否匹配的标识符。CAM的这种并行处理特性使得它在数据分选范畴倍受青睐,被广泛运用在以太网网址搜索、路由器中的地址交流表、高速数据处理等方面。
CAM关于高速的数据包形式字符串匹配查找操作来说,咱们需求足够快的时刻来完结,假如依照POS PHY3接口规范来说,有必要确保寄存器树立(Setup)时刻和CAM一次查找匹配时刻之和小于1个周期10ns(一般状况下,FPGA规划中的坚持(Hold Up)时刻都能够满意,能够不予考虑)。依据FPGA芯片厂商数据手册供给的功用基准数据,咱们装备CAM存储器选用的资源是Block RAM,装备的地址匹配类型挑选的对错编码地址的多匹配办法(Multi Match Unencoded),选用该项装备的CAM32_32完结一次匹配查找的操作时刻为7ns左右,CAM32_32的装备巨细是32位位宽,32个存储单元的地址深度。
关于POS PHY3的接口规范来说,数据传输操作周期为10ns,依据功用基准数据,咱们因而除掉寄存器的树立时刻(<2ns),完结一次CAM匹配操作是完全能够和POS PHY3的接口规范相匹配的。依据数据包在POS PHY3接口的传输字节状况和实践规划需求,咱们规划了一个CAM-heap来完结数据包的一路32B形式字符串的匹配操作。一个CAM-heap是由4个相同结构和装备的CAM32_32组成。CAM32_32是依据规划需求由自己装备界说的,其装备端口示意图如图3所示。
图3:CAM32_32端口示意图。
形式字符串匹配完结进程
在NIDS检测体系中,先将协议解码后的域值与事前精心提取的进犯特征(规矩)提取相应的字段,即形式字符串,然后从数据包包头和净载荷中进行查找匹配形式字符串,从中发现潜在的进犯行为。依据形式字符串的形式匹配是一项传统而老练的侵略检测技能,供给了很高的准确性与广泛性。例如:现在网络运用中大部分运用了一种被称为智能地道(Smart Tunnel)的技能,其特点是:服务端(或接纳端)没有绑定任何固定的端口,客户端(或发起端)能够自行运用恣意随机端口衔接服务器,如P2P(点到点)运用(如各种P2P 下载工具、IP电话等)、IMS(实时音讯体系 如MSN、Yahoo Pager)、网络在线游戏等。他们避开了防火墙、NIDS 产品。可是咱们能够通过上层的协议辨认和动态剖析网络报文中包含的协议特征,发现其地点协议,提取相关的几段形式字符串,然后递交给形式字符串形式匹配引擎(FPGA)进行处理。
形式字符串匹配进程能够用纸带传输的进程来进行描绘。假定一条纸带上附有数据包的全部内容(abcd..xyz0123456789.。.),从包头sop字段ABCD开端一直到包结束eop字段,顺次单个字符的向前活动,有一个匹配字符串xyz0123456789模板和该数据包进行匹配。当字符串的流入模板长度等于形式匹配字符串长度后就进行比较,数据包字符串每向前流进一个字符,形式匹配字符串就和数据包流入的字符串匹配一次,直到数据包最终的字符串流入模板,查找结束。假如字符串流入直至流出进程中,数据包中存在与模板字符串相同的序列,则阐明匹配成功,不然没有模板匹配字符串。上例中,当流入模板的数据包字符串为xyz0123456789时,则指示该匹配成功。
MAC3386传输数据包给FPGA与纸带传输数据包相似,只不过在POS PHY3接口传输数据包时是每周期4字符/字节。FPGA进行形式字符串匹配时,在CAM-heap中每周期进行一次4个输入字符串的匹配操作。选用并行操作的原理,运用4个CAM模块一个周期进行4个字符/字节的匹配操作。
举例阐明4个CAM单元的操作联系:假定输入数据包的某段内容是ABCD EFGH IJKL,要匹配的形式字符串是CD EFGH IJ,先即将匹配的形式字符串依照必定规矩写入4个CAM单元中。数据包传输FPGA时第一个周期传入的是ABCD,第二个周期传入的是EFGH,第三个周期传入的是IJKL,在第二个周期到来后,开端进行字符串的匹配操作。
第二个周期进行匹配时,CAM1输入待匹配的字符串是ABCD(匹配失利);CAM2输入待匹配的字符串是BCDE (匹配失利);CAM3输入待匹配的字符串是CDEF(匹配成功);CAM4输入待匹配的字符串是DEFG(匹配成功),一切的匹配地址都保存于寄存器中。
第三个周期进行匹配时,CAM1输入待匹配的字符串是EFGH(匹配成功);CAM2输入待匹配的字符串是FGHI(匹配成功);CAM3输入待匹配的字符串是GHIJ(匹配成功);CAM4输入待匹配的字符串是HIJL(匹配失利)。一切的匹配地址都保存于寄存器中。
由于咱们匹配是8个字符的字符串,因而在第二个周期CAM3匹配成功后,到第三个周期CAM3的匹配成功,依据必定的逻辑联系和算匹配地址中匹配状况,就能够知道该字符串是否匹配成功。
咱们把完结一个规范形式字符串匹配的4个CAM称之为一个CAM-heap,一个CAM-heap完结一路字符串的匹配查找。假如一个完好的数据包都流经形式字符串模板后,归纳每周期保存匹配地址的寄存器的成果,就能够知道流入的字符串是否和形式字符串匹配。在进行形式字符串的匹配之前,需求先将形式字符串进行4字节的分段,不同段的4个字节写入不同的CAM单元和不同CAM单元的不同地址中。由于一个CAM-heap能够完结一路字符串的匹配查找,因而咱们能够规划几个CAM-heap并行操作来完结几路形式字符串的匹配。匹配的形式字符串路数需求依据所选FPGA芯片RAM资源巨细来决议。
FPGA的规划完结
形式字符串的FPGA输入是通过IXP2400的慢端口来写入的。在接纳数据包之前,FPGA译码慢端口操控信号,通过IXP2400的慢端口接纳形式字符串并写入FPGA的ROM中。要匹配的形式字符串接纳结束后,设置CAM写使能信号WE,将几路形式字符串依照必定格局别离写入不同的CAM单元中,然后进行下一步的字符串匹配操作。
接纳的数据包依照数据流的先后顺序写入FPGA的FIFO中,先入先出。形式字符串匹配完结后,在FIFO出口端增加一个形式字符串的匹配标识头,来描绘该数据包与形式字符串的匹配状况(包含与哪一个数据包匹配仍是几个一起匹配,仍是没有匹配),该匹配标识头增加在数据包头,作为数据包内容的一部分发送给IXP2400。IXP2400在接纳数据包时,对接纳的数据包头进行解码,便可知道该数据包的形式字符串形式的匹配状况,以便进行下一步的动作。
从形式字符串匹配完结进程来看,数据包的流入进程和匹配进程是一起进行的,也便是形式字符串匹配进程的时刻开支躲藏在数据包的接纳阶段,接纳结束,形式字符串匹配结束。数据包只要在接纳结束后,才干决议发送什么样的数据包字符串匹配标识头,因而数据包在FPGA芯片中的延时为数据包的输入延时,依照网络传输最大数据包为1,514B核算,则数据包的最大延时为1514/4=379个周期,依照10ns一个周期核算延时为3.79um。
FPGA芯片的装备形式灵敏,包含主串形式、从串形式、并行的SelectMap形式和鸿沟扫描JTAG形式。通过装备后的FPGA芯片就能够正常作业了。可是依据SRAM的FPGA芯片掉电后,装备文件会主动丢掉,因而需求为FPGA芯片装备一块闪存PROM来保存FPGA的下载文件,这样掉电后的FPGA今后也能正常作业。
本文小结
本文叙述了一种运用FPGA的CAM资源快速完结形式字符串的匹配查找办法,运用在线速(OC-48)的网络监控体系中,大大削减了后端软件操作的处理负载。体系设计时,选用的FPGA型号为Virtex2的XC2V2000-5,运用了FPGA中很多的Block RAM存储单元来结构CAM,选用了并行的规划思维,OC-48处理了3路形式字符串的形式匹配。通过工程实践测验,FPGA模块很好地完结了3路形式字符串的形式匹配功用,达到了体系的规划要求。
责任编辑:gt