您的位置:首页 > 代理IP资讯
发布时间:2019-12-12 17:26:00
基于 FPGA 的动态可重配置的 IP 报文过滤系统

    网际协议(Internet Protocol) 是互联网进行网际互连的基础。随着互联网服务的快速发展,对网络的安全性提出了更高的要求,如何快速有效的过滤网络中的 IP 数据报文是一个始终需要解决的问题。


    过滤 IP 数据报文是为了防止未授权用户访问内部网资源,同时限制网内用户非法使用外部服务。进行过滤之后,局域网内用户只能使用特定的服务(例如 e- mail),网外的用户也只能访问经过授权的网内资源。由于网络带宽的飞速增长,传统的基于软件的查找算法已经不能适应网络速度的飞速发展,迫切需要采用新的硬件过滤方法,方案之一就是采用内容可寻


    址存储器 TCAM (Ternary Content Addressable Memo- ry)。


    TCAM 利用三个数值存储数据‘0’、‘1’、‘X' (不关心),每一个表项都包含数值比特串和掩码比特串。TCAM 能够在一个硬件时钟周期内完成关键字的精确匹配查找,只需要输入关键字的内容,TCAM 就会将此关键字与 CAM 中所有的表项同时进行匹配比较,最后返回匹配表项在 TCAM 中所对应的地址,如果存在多个匹配表项则返回地址最低的表项。目前主流的 IDS(Intrusion Detection Systems),例如 Snort,可以编写相应规则来完成实时协议分析、内容查找/匹配、对网络上的 IP 包登录进行测试等功能。我们可以把类似于 Snort 的规则应用到 TCAM 中,通过制定符合特定规则的表项,来实现 IP 数据报的匹配。当数据报在 TCAM 中能够找到相应的匹配项时,我们即认为它是合法的,否则予以拦截并送入后台作为异常报文处理。


    为了实现快速查找,设计者必须在 PCB 板上添加一个独立的 TCAM 器件,这会增加片间延时,同时减少 PCB 板上的可用空间,从而降低电路板的系统性能。因此我们采用 FPGA 来实现 TCAM,FPGA 芯片采用 ALTERA 公司的 APEX20K1500E。


    2 用FPGA实现TCAM


    APEX20KE 系列芯片采用嵌入式系统模块(Em- bedded System Blocks)实现了片内 CAM,能够提供比传统 CAM 器件更高的系统性能,同时支持 Ternary CAM。其中,每个 ESB 能够实现 32×32 的 CAM 模块,级联多个 ESB 可以实现更宽更深的 CAM。 ALTERA 公司的 Megafunction 库提供了 altcam Megafunction,运用 Quartus 软件设计工具可以十分方便对 TCAM 进行读写操作。图 1 为 altcam 的结构图。


    Param eterV alue


    W IDTH


    W IDTH AD


    NUM W ORDS


    2W' IDTH AD


    LPM _FILE"UNUSED" altcamLPM _FILEX"UNUSED" wrx[]patter[]M ATCH _M ODE"M UL TIPLE"


    wrxusedOUTPUT_REG"UNREGISTERED"


    wrdeletemaddress[]


    wraddress[]rnbits[]OUTPUT_ACLR"ON"


    wrenrnfoundPATTERN_REG"INCLOCK"


    inclockrncount[]


    inclockenPATTERN_ACLR"ON"


    inaclrrdbusyW RADDRESS_ACLR"ON"


    rnstartwrbusy


    rnnextW RX_REG"INCLOCK" outclock


    outclockenW RX_ACLRON outaclrW RCONTROL_ACLR


    ON USE_EAB


    图 1 altcam Megafunction 结构


    CAM 可以在初始化配置时预加载默认表项,也可以在系统运行时对表项进行实时更新。在大多数情况下,写入一个数据表项需要两个时钟周期,当写入“X"


    (不关心)比特位时,需要三个时钟周期。

微信截图_20191212173241.png

    Altera CAM 有三种不同的读模式:单匹配模式、多匹配模式和快速多匹配模式,其中单匹配模式适用于 CAM 里没有多个匹配项的情况。无论工作在哪种模式下,ESB 都会输出匹配数据项的编码地址或未编码地址。当用未编码地址输出时,每条信号线对应 CAM 模块里的一个表项,当输出信号线为高时,表明对应的表项和输入数据匹配(例如,假如地址为 15 的表项数据匹配,则 mbit[14]输出高电平)。通常情况下,技 在一个时钟周期内每个 ESB 最多完成 16 个表项的比术 对,因此在多匹配模式下,需要两个时钟周期才能完成 CAM 模块里所有表项的比对。而快速多匹配模式创 仅使用每个 ESB 的一半空间(即 16 个表项),因此一个时钟周期就可以输出匹配表项的地址,大大提高了新 查找速度,但同时也耗费了大量的存储空间,限制了 CAM 的总容量。图 4 展示了多匹配模式下的功能仿真波形图。

微信截图_20191212173104.png

微信截图_20191212173201.png

    域比特数


    源 IP 地址16


    目的站 IP 地址16


    协议类型8


    TCP/ UDP 源端口16


    TCP/ UDP 目的端口16


    TCP/ UDP Syn/ Ac1


    总比特长度73


    图 3 匹配关键字内容


    3 制定CAM 表项规则


    考虑到报头里包含了报文的地址和控制信息,我们可以从报头中提取某些域的值作为 TCAM 的匹配关键字。图 5 给出了 CAM 表项的一种配置方案。由于规则的不同,大多数的表项都存储了大量的“X”(不关心)比特位,这是因为:


微信截图_20191212173113.png


    ◆ 并不是 IP 数据报中所有对应域都需要同表项进行匹配。比如要拦截特定主机的 IP 包时,仅仅匹配源 IP 地址就足够了。


    ◆ 有时 IP 地址并不是指定一个特定的主机,而是代表一个网络或者一个包含多台主机的子网,这意味着表项的某些比特位必须是“X”(不关心)。


    在 CAM 中能够找到相应的匹配项时,输入数据报可以顺利通过,否则予以拦截并作为非法报文处理。由于只需判断 CAM 里是否有匹配表项,而不关心具体表项的地址,因此存在多个匹配表项并不会影响比对的结果。在图 5 中,由于在 CAM 里找不到匹配表项,源地址为 192.168.1.10 的主机不能进行 Telnet(23)服务。


    虽然 Snort 给出了超过 1400 条配置规则,但通常并不需要同时应用所有的规则。Y. H. Cho 提出了一种包含 105 条规则的 IDS [3],因此大小为 128×128 的 CAM 足以满足绝大多数的需要。另外为了有效地进行比对,路由器输入端送来的报文要暂存在 SRAM 当中,管理这些报文需要对报文进行有效的地址分配,以便对报文进行相应处理。


    4 动态管理FPGA


    为便于管理和动态更新,FPGA 不仅要肩负对输入报文进行分类、过滤、提取关键字、进行高速查找等工作,还必须制定专门的通信模块负责与主控单元(实际采用 MPC860)进行通信。通信模块起到对下进行数据接收,对上进行状态报告的桥梁作用,是主控单元同 FPGA 进行通信的接口,主要实现以下功能:

微信截图_20191212172853.png

    1监控系统的硬软复位信号,从而对整个系统进行复位。


    2向主控单元发送状态报告。主要由主控单元请求获得,从而能够实时监控系统各模块的工作状态。


    3将 FPGA 系统划分为正常工作模式和测试模式。FPGA 存在两种工作模式,一种是正常工作模式,另一种是测试模式;在正常工作模式情况下,系统正


    《PLC 技术应用 200 例》


    PLD/CPLD/FPGA设计应用


    常接收网络中的数据报文;测试模式条件下,系统处于测试状态,可以将内部测试信号送出以达到快速调试的目的。


    4向主控单元提供错误报告。系统内部对一些关键部分设定监控程序,一旦有问题出现将迅速将错误信息传送给主控单元,从而方便对故障的检测。


    5将主控单元的命令信息转发给相应模块,实现FPGA 的动态更新。这样可以根据实际需要动态更新 TCAM 的表项,改变 IP 报文过滤规则。


    5 总结


    采用基于 FPGA 的 CAM 进行 IP 数据报文过滤是一种理想的选择。由于关键性的功能(搜索 CAM)和一些非关键性的功能(改变 CAM 内容)分别在硬件和软件中实现,因此该设计具有高度灵活性,同时比纯软件过滤有更快的处理速度,在实际中可达到 800Mbit/s.


    表项宽度可变的 CAM 能够很好的应用 Snort 规


    则进行字符串匹配,同时可通过软件进行动态更新。此外,CAM 模块大约只耗费了 FPGA 一半的存储资源,可以根据需要在 FPGA 内整合相关功能逻辑电路扩充电路功能。


    参考文献


    [1]C. Jason Coit et al. “Towards Faster String Matching for Intrusion Detection or Exceeding the Speed of Snort”. In Proc. of DARPA


    Information Surviability Conference and Exposition, DISCEXII, 2001. [2]Implementing High- Speed Search Applications with Altera CAM. Altera Application Note 119 July 2001, ver. 2.1.


    [3]Y. H. Cho et al. "Specialized Hardware for Deep Network Packet Filtering". FPL 2002.


    [4]A.J.McAuley,P.Francis."Fast Routing Table Lookup Using CAMs"..In Proceedings of IEEE Infocom 93, p. 1382, 1993.


    [5]D. E. Tylor et al. "Scalable IP Lookup for Internet Routers". In IEEE journal on selected areas in communications, Vol. 21, No. 4, May 2003.


    灰度平均值,根据眼睛图像的特点,瞳孔区域的颜色最深,次之的就是虹膜区域,所以六个区域中灰度平均值最小的是瞳孔,平均灰度值第二小的就是虹膜区域。根据眼睛图像的这个特点,可以提取出虹膜区域。 4 结语


    本文基于人眼图像的具体特征,利用分水岭算法,结合高斯平滑、小波变换、区域合并,对人眼图像进行区域分割,提取出虹膜部分的图像,从而为虹膜的特征分析和特征匹配奠定了良好的基础。本文的实验是在 Pentium 4 2.66GHz,内存 256M ,Matlab 6.5 的条件下进行的,实验结果表明,此方法能够得到封闭的虹膜内外边缘,并将虹膜区域从眼睛图像中分割出来。但是由于计算量比较大,所以搜索时间稍长,若能基于一定的先验知识,则能更好的提高这一算法的性能,本文作者正在进行此方面的工作。


上一篇 下一篇