一、前语
网际协议(Internet Protocol) 是互联网进行网际互连的根底。跟着互联网服务的快速开展,对网络的安全性提出了更高的要求,怎么快速有用的过滤网络中的IP数据报文是一个一直需求处理的问题。
过滤IP数据报文是为了避免未授权用户拜访内部网资源,一起约束网内用户不合法运用外部服务。进行过滤之后,局域网内用户只能运用特定的服务(例如e-mail),网外的用户也只能拜访经过授权的网内资源。因为网络带宽的飞速添加,传统的依据软件的查找算法现已不能适应网络速度的飞速开展,迫切需求选用新的硬件过滤办法,计划之一便是选用内容可寻址存储器TCAM(Ternary Content Addressable Memory)。
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。
二、用FPGA完结TCAM
APEX20KE系列芯片选用嵌入式体系模块(Embedded System Blocks)完结了片内CAM,能够供给比传统CAM器材更高的体系功用,一起支撑Ternary CAM。其间,每个ESB能够完结32×32的CAM模块,级联多个ESB能够完结更宽更深的CAM。
ALTERA公司的MegafuncTIon库供给了altcam MegafuncTIon,运用Quartus软件规划东西能够非常便利对TCAM进行读写操作。图1为altcam的结构图。
CAM能够在初始化装备时预加载默许表项,也能够在体系运行时对表项进行实时更新。在大多数状况下,写入一个数据表项需求两个时钟周期,当写入“X”(不关心)比特位时,需求三个时钟周期。
Altera CAM有三种不同的读形式:单匹配形式、多匹配形式和快速多匹配形式,其间单匹配形式适用于CAM里没有多个匹配项的状况。不管作业在哪种形式下,ESB都会输出匹配数据项的编码地址或未编码地址。当用未编码地址输出时,每条信号线对应CAM模块里的一个表项,当输出信号线为高时,标明对应的表项和输入数据匹配(例如,假设地址为15的表项数据匹配,则mbit[14]输出高电平)。一般状况下,在一个时钟周期内每个ESB最多完结16个表项的比对,因而在多匹配形式下,需求两个时钟周期才干完结CAM模块里一切表项的比
对。而快速多匹配形式仅运用每个ESB的一半空间(即16个表项),因而一个时钟周期就能够输出匹配表项的地址,大大提高了查找速度,但一起也耗费了很多的存储空间,约束了CAM
的总容量。图4展现了多匹配形式下的功用仿真波形图。
三、拟定CAM表项规矩
考虑到报头里包括了报文的地址和操控信息,咱们能够从报头中提取某些域的值作为TCAM的匹配要害字。图5给出了CAM表项的一种装备计划。因为规矩的不同,大多数的表项都
存储了很多的“X”(不关心)比特位,这是因为:
◆ 并不是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傍边,办理这些报文需求对报文进行有用的地址分配,以便对报文进行相应处理。
四、动态办理FPGA
为便于办理和动态更新,FPGA不只要担负对输入报文进行分类、过滤、提取要害字、进行高速查找等作业,还有必要拟定专门的通讯模块担任与主控单元(实践选用MPC860)进行通讯。通讯模块起到对下进行数据接纳,对上进行状况陈述的桥梁效果,是主控单元同FPGA进行通讯的接口,首要完结以下功用:
1、 监控体系的硬软复位信号,然后对整个体系进行复位。
2、 向主控单元发送状况陈述。首要由主控单元恳求取得,然后能够实时监控体系各模块的作业状况。
3、 将FPGA体系划分为正常作业形式和测验形式。FPGA存在两种作业形式,一种是正常作业形式,另一种是测验形式;在正常作业形式状况下,体系正常接纳网络中的数据报文;测验形式条件下,体系处于测验状况,能够将内部测验信号送出以到达快速调试的意图。
4、 向主控单元供给错误陈述。体系内部对一些要害部分设定监控程序,一旦有问题出现将迅速将错误信息传送给主控单元,然后便利对毛病的检测。
5、 将主控单元的指令信息转发给相应模块,完结FPGA的动态更新。这样能够依据实践需求动态更新TCAM的表项,改动IP报文过滤规矩。
五、总结
选用依据FPGA的CAM进行IP数据报文过滤是一种抱负的挑选。因为要害性的功用(查找CAM)和一些非要害性的功用(改动CAM内容)分别在硬件和软件中完结,因而该规划具有高度灵活性,一起比纯软件过滤有更快的处理速度,在实践中可到达800Mbit/s.
表项宽度可变的CAM能够很好的使用Snort规矩进行字符串匹配,一起可经过软件进行动态更新。此外,CAM模块大约只耗费了FPGA一半的存储资源,能够依据需求在FPGA内整合相关功用逻辑电路扩大电路功用。
责任编辑:gt