CN100347992C - 实现线速对数据流按规则库近似匹配的可配置的硬件结构 - Google Patents
实现线速对数据流按规则库近似匹配的可配置的硬件结构 Download PDFInfo
- Publication number
- CN100347992C CN100347992C CNB2004100688499A CN200410068849A CN100347992C CN 100347992 C CN100347992 C CN 100347992C CN B2004100688499 A CNB2004100688499 A CN B2004100688499A CN 200410068849 A CN200410068849 A CN 200410068849A CN 100347992 C CN100347992 C CN 100347992C
- Authority
- CN
- China
- Prior art keywords
- signal
- individual character
- rule
- input
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000006978 adaptation Effects 0.000 claims description 35
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 230000008676 import Effects 0.000 claims description 2
- 238000004321 preservation Methods 0.000 claims description 2
- 238000001914 filtration Methods 0.000 abstract description 11
- 238000012544 monitoring process Methods 0.000 abstract description 10
- 238000001514 detection method Methods 0.000 abstract description 3
- 238000000034 method Methods 0.000 description 12
- 230000008878 coupling Effects 0.000 description 11
- 238000010168 coupling process Methods 0.000 description 11
- 238000005859 coupling reaction Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 238000004088 simulation Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009545 invasion Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
实现线速对数据流按规则库近似匹配的可配置的硬件结构,属于计算机网络数据检测领域,其特征在于:所述的规则库匹配结构含有:单字匹配器阵列,包括配置输入的单字寄存器和比较器串连构成的单字比较器以及由配置输入的窗口寄存器和窗口状态机构成的窗口控制器;规则组合器阵列,它由输入为单字信号的与门与触发器串连而成;规则汇总器,由或门组成;上述三者依次串连:单字匹配器的数目与规则库中所含的不相同的单字个数相等;规则组合器的数目与规则库中所含的规则的数目相等;各规则组合器的输入信号的数目与该规则组合器实现的规则含有的单字数目相等。它主要应用于汉语等大字符集语言环境下的网络监测、过滤等领域。
Description
技术领域
本发明是一种可线速对数据流内容按规则库近似匹配和过滤的可灵活配置的硬件结构,可以应用于网络技术领域或者相关的文本检索等领域,属于计算机技术领域。
背景技术
对数据流的监测和过滤一般是基于事先定义好的规则库,规则库由若干条(可达数千条)规则组成。若某数据流匹配某条规则,那么认为该数据流包含我们需要的数据而被过滤或其他特殊处理。
目前网络监测一直存在难题。假设规则库中存在一条规则“清华大学”,数据流的发起者可以插入干扰字符将该规则修改,出现若干变体,如:“清~华~大~学”“清##华##大##学”,这些变体能被人们识别,但可以轻易的绕过规则库的监测。对这一个名词而言,可以存在数十甚至上千个变体。若规则库的每条规则均存在这么多变体,那么规则库将变得非常庞大,耗尽系统资源而无法被接受。
上面提到的规则变体的情况,主要出现在汉语等大字符集(包含数千个常用汉字)语言环境下,解决这个问题需要提高近似匹配方法的能力。另外,在计算机网络领域,目前多以软件程序完成数据流内容的监测和过滤,耗资源、速度慢、效率低,难以在高速的核心网络中工作。
与本发明提出的网络内容近似匹配和分类相关系的另一个领域是网络入侵检测,主要是对网络分组的头部信息和内容进行检测来发现病毒、木马、攻击等网络入侵行为。Snort是一个免费、开放、跨平台的软件包[1],用来实现网络入侵检测,它也有一个内容匹配规则库,主要是基于字符串的精确匹配。文[2]提出的硬件设计方法,主要用于snort的入侵检测库,实现字符串的精确匹配,不能用于本文提出的近似匹配。
[1]M.Roesch.Snort-Lightweight Intrusion Detection for Networks.In Proceedings of theUSENIX LISA’99 Conference,November 1999.
[2]I.Sourdis & D.Pnevmatikatos;Pre-decoded CAMs for Efficient and High-Speed NIDSPattern Matching;Proceedings of the Twelfth Annual IEEE Symposium on Field ProgrammableCustom Computing Machines(FCCM 2004),Napa,USA,20-23 April 2004.
发明内容
本发明提出一种可线速对数据流内容按规则库近似匹配的可灵活配置的硬件结构,主要应用于汉语等大字符集语言环境下的网络监测过滤等相关领域。
本发明的基本思想可归纳为“单字组合过滤法”。以“清华大学”为例,虽然它存在无数变体,但“清”,“华”,“大”,“学”4个字必然存在。若我们检测在某段文字里存在这4个字,那么可初步怀疑这段文字中包含“清华大学”。这种思想可解决规则变体的难题,不会出现漏检。
本发明的以上述思想为基础,提出了一种硬件结构,完成基于大规则库的近似匹配,实现针对网络数据内容的线速流分类。由于采用了并行设计和流水线设计,规则匹配的速度不受限于规则库的大小和网络数据流速度的限制,另外规则匹配的近似度可通过配置参数任意调节。
本发明的特征在于,它含有:
1)单字匹配器阵列由多个单字匹配器构成,其中每个单字匹配器包括单字比较器和窗口控制器,
其中,每个单字比较器含有:
单字寄存器,存有32比特宽的由外部配置的一个单字;
比较器,它设有单字寄存器输出信号输入端,时钟信号输入端和外部输入数据输入端以及一个匹配信号输出端;
其中,每个窗口控制器含有:
窗口寄存器,它可配置的存有外部配置的窗口长度值;
窗口状态机,它是一个由基本门电路构成的逻辑单元,它设有:两个输入端,分别与窗口寄存器的输出端和上述比较器的输出端相连,以及一个匹配窗口信号输出端;该状态机包含等待态和计数态以及一个计数器:状态机启动后,处于等待态,并清零计数器的数值;当检测到上述匹配信号有效时,状态机由等待态变迁到计数态;在计数态,计数器每个时钟周期加“1”,同时保持上述匹配窗口信号有效;当计数器的数值等于上述窗口寄存器中的保存的数值时,状态机由计数态变迁到等待态,同时清零计数值并使上述匹配窗口信号无效;
上述单字匹配器的个数等于所要匹配的规则库中所含的不相同的单字的数目;
2)规则组合器阵列,
所述阵列中规则组合器的个数等于规则库中所含的规则数;每一个规则组合器输入信号的数量等于该规则包含的单字的数量;
每一个规则组合器含有:
与门,其输入端个数与该规则组合器实现的规则所包含的单字数量相等,每一个输入端对应于该规则组合器所实现规则中的一个单字;所述各输入端与配置了与该输入端对应单字的上述单字匹配器的输出端相连;
D触发器,它的时钟端与上述与门的输出端相连,它的输入信号端直接接信号“1”,它的rst端接外部输入数据流的分段信号;
3)规则汇总器,
它的各信号输入端与相应的各规则组合器的输出端相连,其输出信号为整个规则库匹配结构的匹配指示信号;所述规则汇总器是一个或门。
所述的规则组合器是一个带优先级的规则组合器,它含有:
第一个D触发器,它的输入信号端和时钟信号端分别连接到最低优先级和倒数第二低优先级的单字信号,这里设定:规则中最先出现的单字的优先级最低,最后出现的单字的优先级最高;
第二个D触发器,它的时钟信号为倒数第三低优先级的单字信号,它的输入信号为第一个D触发器的输出信号与所述第二个D触发器前面所有的单字信号相“与”而得到的信号;
其余的D触发器,它们的连接方式依此类推;
最后一个D触发器,它的时钟信号为最高优先级的单字信号,它的输入信号为倒数第二个D触发器的输出信号与所述最后一个D触发器前面所有的单字信号相“与”而得到的信号;
所有的D触发器的rst信号是外部输入数据流的分段信号。
所述的规则汇总器是一种带特权排除的规则汇总器,它含有:
一个非门,输入端接一个的特权输入信号;
一个或门,输入端接多个普通输入信号;
一个与门,两个输入端分别接上述非门和或门的输出端,而所述与门的输出信号即为规则汇总器的输出信号。
所述的规则组合器是一种实现删除错误和替代错误的规则组合器,所述的替代错误指输入单字的错别字或其他替换性的错误,删除错误是指输入单字的删除性错误,它含有:
加法器,它的输入为该规则组合器的所有输入单字信号,输出为当前有效单字数;
K寄存器,存有错误的容忍级别,即最低的有效单字数;
比较器,它的输入端分别与上述加法器和K寄存器的输出端相连,当加法器的输出不小于K寄存器的数值时,输出为匹配信号。
所述规则组合器中组合了与它所含的字相配且从相应的单字匹配器中分离出来的窗口控制器,该窗口控制器的输出端与所述的规则组合器相应的输入端直接相连。
实验建模与仿真
第一步:建立测试规则库。
调查发现,汉字的总数虽然多达五六万,但有很大的使用集中性。例如,最常用的十个字,共占全部汉字使用频率为12%以上;最常用的一百个字,占40%;前1000个汉字频率和大于95%。为了保证建模的一般性和代表性,首先选定了32个单字,代表在规则库中出现频率最高的32个字,然后对这32个字使用随机组合的方法,建立了一个100条规则的小型规则库。考虑到规则可能更多为短语,因此设定每条规则的长度从2至10不等,以长度4~6为多。各个长度的规则的条数的分布如下表所示:
规则长度 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
规则条数 | 2 | 14 | 19 | 22 | 17 | 12 | 8 | 4 | 2 |
由于应用于各种环境的监测过滤系统的规则库各不相同,因此上述测试规则库不能代表所有的情况。但用来对本发明的硬件结构进行功能和性能测试,则上述规则库可以胜任。
为一般起见,我们用十六进制数“00000001”表示第一个单字(32比特长);同理,用00000002,00000003...等分别表示第二、第三...个单字。
第二步:FPGA建模
使用XILINX公司的FPGA芯片(型号XCV2000E),以上述测试规则库为基础,实现了本发明所述“规则库匹配模块”的基本结构以及带优先级规则组合器两种情况,利用ISE软件以及XST综合工具,综合结果如下:
基本规则组合器:
消耗slice的数目: 1565(总共19200,占用8.15%)
消耗slice触发器的数目: 1836(总共38400,占用4.78%)
消耗4输入查找表的数目: 1480(总共38400,占用3.85%)
最小时钟周期:6.547ns (最大运行频率:152.742MHz)
带优先级规则组合器:
消耗slice的数目: 1717(总共19200,占用8.94%)
消耗slice触发器的数目: 2175(总共38400,占用5.66%)
消耗4输入查找表的数目: 1789(总共38400,占用4.66%)
最小时钟周期:6.547ns (最大运行频率:152.742MHz)
第三步:仿真
4个输入的基本规则组合器和带优先级的规则组合器的仿真波形分别如图10和图11。i1~i4分别为4个输入信号,优先级顺序为i1<i2<i3<i4;o为输出信号。reset为重启信号,当reset为低的时候,整个系统重新启动。从图10和图11中可以看到两种不同功能的规则组合器的特点。
为了测试目的,我们将第1~3条规则分别设定为:
第1条:00000001-00000002-00000003-00000004;
第2条:00000001-00000002-00000004-00000003;
第3条:00000001-00000003-00000005-00000007;
第1条规则表明共含有4个单字,优先级顺序为00000001<00000002<00000003<00000004,第2、3条规则与此类似。在后面的波形图中,00000001可省略表示为1,其余信号类推。
基本规则组合器的“规则库匹配模块”的工作仿真如图12所示,规则组合器带优先级的“规则库匹配模块”的工作仿真如图13所示。在图12和图13中,clk为全局时钟信号,reset为重启信号,当reset为低的时候,整个系统重新启动。cfg_char_en为配置单字寄存器使能信号,为高的时候允许配置;cfg_char_addr为配置单字寄存器地址信号,由于本模型共设计有32个单字,所以地址范围从0~31(十进制);cfg_char_data为32位宽的配置单字寄存器数据信号。cfg_window_en为配置窗口寄存器使能信号,为高的时候允许配置;cfg_window_addr为配置窗口寄存器地址信号,范围与cfg_char_addr相同;cfg_window_data为8位宽的配置窗口寄存器数据信号。Data_in为32位宽的“规则库匹配模块”的数据输入信号。char(1)~char(4),char(7)分别对应第1~第4个,以及第7个单字匹配器的输出信号;rule(1)~rule(3)分别为第1~第3个规则组合器的输出信号,rule_match为规则汇总器的输出信号,即为“规则库匹配模块”的输出信号。图12和图13中的规则汇总器为普通不带特权的规则汇总器。
附图说明
图1数据流监测过滤系统结构。
图2规则库匹配模块的硬件结构。
图3单字匹配器实现原理。
图4窗口状态机的基本结构。
图5规则组合器基本结构。
图6带优先级的规则组合器。
图7规则汇总器基本结构。
图8带特权排除的规则汇总器。
图9用于删除和替代错误的规则组合器结构。
图10基本规则组合器仿真波形图。
图11带优先级规则组合器仿真波形图。
图12整个规则库匹配模块的工作仿真示意图(基本规则组合器)。
图13整个规则库匹配模块的工作仿真示意图(规则组合器带优先级)。
具体实施方式
一、相关背景知识
1.汉字在电脑里的表达方式
本发明的方法主要适用于大字符集语言,比如汉语,日语,韩语等。这些语言的特点是字符集较大,以汉语为例,包含数千常用字,而非常用字则多达数万个以上。若无特别指出,下面以汉字为例说明本发明的结构和功能。目前在电脑里面,比较常见的是用16比特表示一个汉字,但用32比特表示一个汉字是将来的发展方向。为一般起见,在下面的叙述中我们以32比特作为一个汉字的长度。最后说明如何处理16比特长的汉字。
2.规则和规则库
本发明所指的规则,是指由某大字符集语言的某些单字所组成的特定组合。以汉字为例:“清华大学”可作为一条规则,“张三明天要去北京”也可是一条规则。大字符集语言的规则很容易被插入干扰字符而出现规则变体。本发明里,某条规则及其所有变体被视作一条规则。规则库是指一组规则组成的一个集合。一个规则库可包含数十至数千条规则。
3.基于规则库的数据内容监测过滤系统
基于规则库的数据内容监测过滤系统,可存在于网络核心节点或者网络终端上,完成对网络数据流内容的匹配、监测和过滤。它的主要系统结构如图1所示。在图1中,所有的数据总线都是32比特宽的;各个模块由外部送来的同一时钟信号驱动,在图中省略未画出。在图1中,除了正常的数据流通道外,还包含“预处理模块”、“规则库匹配模块”、“数据分流模块”三个模块:
1)“预处理模块”完成对数据流的预处理,使其数据格式适合“规则库匹配模块”的使用。在正常的网络环境中,数据流内容可能是汉字、英文和其他文字、标记、符号的混合体,“预处理模块”除去网络流中除汉字外的其他信息,对编码文字解码,经过预处理的数据流发送到下一级模块。“预处理模块”的设计方法不是本发明研究的内容,在此略去。基于上面的讨论,从“预处理模块”送出的32比特总线上只包含汉字,每个汉字32比特宽,刚好为一个总线时钟周期。
2)“规则库匹配模块”:网络数据流在这里将与整个规则库比较,看是否与某条规则或者某一些规则匹配。若数据流匹配规则库中某条规则或者多条规则,则“匹配指示”信号有效;否则“匹配指示”信号无效。匹配结果通过“匹配指示”信号送到“数据分流模块”模块。除了将是否匹配的指示信号传送到下一级以外,也可把每一条规则是否匹配的结果组成一个向量,发送到下一级,供下一级深入决策使用。
3)“数据分流模块”是后处理模块,通过“规则库匹配模块”送来的匹配指示信号,将数据流进行不同的处理。若“匹配指示”信号有效,则把数据送到“需处理的数据”通道,若系统要求同时送一份数据到“正常数据流出”通道的,则将数据流拷贝一份送出;否则,将只把数据送到“正常数据流出”通道。
对上述系统来说,“规则库匹配模块”由于实时和复杂的计算工作,是整个系统的核心模块,也是整个系统的瓶颈。本发明就是“规则库匹配模块”的一种硬件实现方法。
二、本发明提出的并行硬件模型(规则库匹配模块)的基本结构
“规则库匹配模块”的硬件结构如图2所示。“规则库匹配模块”主要由3个部分组成:单字匹配器阵列、规则组合器阵列、规则汇总器。各个部分由外部送来的同一时钟信号驱动,在图中省略未画出。
1.单字匹配器阵列:我们用C来表示单字匹配器,图2中C1,C2...C6表示序号为1~6的单字匹配器。单字匹配器阵列可包含多个单字匹配器。数据总线进入“规则库匹配模块”后,同时连接到每一个单字匹配器。单字匹配器的结构如图3所示。单字匹配器主要包括“单字比较器”和“窗口控制器”两部分:
1)“单字比较器”:“单字比较器”包含一个32比特宽的可配置的单字寄存器,用来保存外部配置的单字。前面已经假定所有的单字都是32比特宽的,所以每个单字寄存器只保存一个单字。“单字比较器”中还包含一个比较器,在时钟的驱动下,比较器每个周期都将外部输入数据与单字寄存器中的数据进行比较,若相等,则“匹配信号”信号有效,否则无效。
2)“窗口控制器”:“窗口控制器”包含一个可配置的窗口寄存器。可根据实际需要设计窗口寄存器的宽度,本发明建立的模型中窗口寄存器为8位宽度。窗口寄存器用来保存外部配置的窗口长度值,例如,当窗口寄存器中的数据为5时,表明窗口的长度为5。“窗口控制器”还包含一个“窗口状态机”。“窗口状态机”的基本结构如图4所示。“窗口状态机”包含两个状态:等待态和计数态。状态机启动后,处于“等待态”,并清零计数值。当“匹配信号”有效时,“窗口状态机”由“等待态”变迁到“计数态”,否则一直处于“等待态”。在“计数态”,计数值每个时钟周期加“1”,同时保持“匹配窗口”信号有效;当计数值等于窗口寄存器中的数值时,“窗口状态机”由“计数态”变迁到“等待态”,同时清零计数值并使匹配窗口无效。
2.规则组合器阵列:我们用R来表示规则组合器,图2中R1,R2...R4表示序号为1~4的规则组合器。每一个规则组合器对应于规则库中的一条规则,因此规则库中有多少条规则,那么规则组合器阵列中就需要多少个规则组合器。每一个规则组合器可包含多个输入信号和一个输出信号。输入信号为单字匹配器的输出信号;每一个输入信号对应于该规则组合器所实现规则的一个单字,因此每一个规则组合器输入信号的数量等于该规则包含的单字的数量。规则组合器的输出信号用来表明该规则是否被匹配。若匹配,则输出信号有效(为高),否则无效(为低)。
规则组合器的基本结构如图5所示(图中画出4个输入信号,实际中输入信号数目根据规则包含单字个数决定)。所有的输入信号先用“与门”与在一起,然后作为D触发器的时钟信号输入。D触发器的输入信号直接接“1”即可。这样设计的效果为:当所有输入信号在某时刻同时有效的时候,D触发器的时钟信号被触发,因此D触发器的输出信号有效。该输出信号将一直保持有效,直到“Rst”信号有效将它变得无效。“Rst”信号可连接到数据流的分段信号:每一段数据流(一个网络分组)开始的时候,先使“Rst”信号有效而将D触发器的输出信号无效,从而使该规则组合器重新开始工作。
3.规则汇总器:它含有多个输入信号和一个输出信号。它的输入信号是各个规则组合器的输出信号;输出信号为整个“规则库匹配模块”的匹配指示信号。规则汇总器的基本结构如图7所示(图中画出4个输入信号,实际中输入信号与规则组合器的数目一样多)。它直接把各个输入信号“或”在一起,得到输出信号。当任一输入信号有效的时候,输入信号则有效,表明被监测的数据流至少匹配规则库中一条规则。
由上描述,对图2的“规则库匹配模块”来说,总的工作流程可描述如下:
首先需对每个单字匹配器配置各自的单字寄存器和窗口寄存器;另在系统工作过程中,仍可根据需要重新配置上述寄存器。在时钟驱动下,数据流进入“规则库匹配模块”后,被同时分流到各个“单字匹配器”。若该周期总线数据与某“单字匹配器”的所配置的单字匹配,则该单字匹配器的输出信号将有效,该信号有效的时间长度由该单字匹配器的窗口控制器决定。单字匹配器阵列的输出信号是规则组合器的输入信号。规则组合器阵列可由现场可编程器件(如FPGA)根据规则库动态生成。若某规则组合器需要某单字匹配器的输出信号,则该单字匹配器的输出信号被连接到该规则组合器的输入信号端。例如,在图2中,C1,C2,C4的输出端被连接到R1的输入端。各规则组合器的输入端的数量等于该规则包含的单字的数量(图2中的规则组合器只示意性画出4个输入端)。当某规则组合器的所有输入端有效后,且在某时间所有输入信号同时有效,表明该规则的所有单字都被检测到且在有效期间内,则其输出端变成有效。规则汇总器将所有规则组合器的输出信号汇总成匹配指示信号,也就是“规则库匹配模块”的输出信号。
三、基本结构的变形
1.带优先级的规则组合器
带优先级的规则组合器的结构如图6所示。“优先级”通过一系列的D触发器串接起来实现。所有D触发器的“rst”信号与上面描述的基本规则组合器的“rst”信号的连接方法相同。在此,优先级的定义为规则中单字的先后顺序。以规则“清华大学”为例,“清”最先出现,“华”第二个出现,“大”第三个出现,“学”最后出现,我们定义最先出现的单字优先级最低,最后出现的单字具有最高优先级。在具体连接时,第一个D触发器的输入信号端和时钟信号端分别连接到最低优先级和倒数第二低优先级的单字信号;第二个D触发器的时钟信号为倒数第三低优先级的单字信号,输入信号为第一个D触发器的输出信号和前面两个单字信号的“与”得到的信号,...其余D触发器的连接方法与此类推:最后一个D触发器的时钟信号为最高优先级的单字信号,输入信号为倒数第二个D触发器的输出信号和前面所有输入信号的“与”得到的信号。这样设计的效果为:只有当各个单字信号严格按设计的顺序有效,并且在某时刻同时有效时,最后一个D触发器的输出信号才有效,否则,即使在数据流中检测到各个单字,但没有按规则所设定的顺序出现,规则仍不能被匹配。
图6只提出了带优先级的规则组合器的一种设计方法。为了达到优先级控制的目的,还可有其他的设计方法。
2.实现删除错误和替代错误的规则组合器
以“清华大学”为例,若出现“请华大学”,则是替代错误;若出现“清华大”,则是删除错误。对基本的规则组合器做一定修改,可实现删除和替代错误的近似规则匹配,硬件结构图9所示。我们用一个K寄存器来保存错误的容忍级别。以4个字的规则“清华大学”为例,如果k寄存器配置为3,表明容许一个删除或者替代错误。规则组合器所有的输入被通过一个加法器相加得到一个数值,表明当前有效的单字数目。这个数值与k寄存器中保存的数相比较,如果不小于k寄存器的数值,则输入匹配成功信号。
3.窗口控制器的位置
在我们的基本模型中,窗口控制器是放在单字匹配器中的,即每个单字只需设置一个窗口值。窗口控制器还可放到规则组合器中实现,即规则组合器的每个输入首先通过一个窗口控制器,然后再连接到后面的设备。这样对每条规则的每一个输入都可设置独立的窗口值,使得控制更加精确。但这样的设计需要更多的窗口控制器,也就是要消耗更多的硬件资源。窗口控制器的位置对规则组合器的其他功能模块没有影响。
4.带特权排除的规则汇总器
带特权的规则汇总器的结构如图8所示。输入信号被分成两类,一类是普通输入信号,另一类是特权输入信号。“特权”信号用“非门”取反,普通信号用“或门”或在一起,再把上述两种中间信号用“与门”与在一起得到输出信号。使用这样的设计后,其效果为:若普通输入信号和特权信号都无效,最后输出信号无效,表明被监测的数据流不与任一规则匹配;若普通输入信号至少有一个有效而特权信号都无效,最后输出信号有效;若特权信号至少有一个有效,无论普通信号是否有效,则最后输出信号无效,表明被监测的数据流若匹配某特权规则,则无论是否匹配其他规则,都不会被特殊处理。
四、“规则库匹配模块”的线速工作
由上述设计可见,在时钟的驱动下,“规则库匹配模块”是无阻塞的,每进来一个数据,都能立刻得到处理,无需缓冲器,因此是线速的。因此本设计方法不仅适用与网络终端,而且可适用于高速的网络核心节点。
前面已经提到,上面描述的设计是基于汉字在电脑里是32比特宽度的。若是16位宽度的,可这样修改设计方案:将“规则库匹配模块”设计成16位的,主要是把入口数据总线、单字匹配器等相应部分修改成16位宽度,其他部分如规则组合器、规则汇总器等不用修改。这样修改后,“规则库匹配模块”的吞吐量只有32位时的一半,用两套“规则库匹配模块”并行处理,就可达到原来的吞吐量,来实现线速工作。
Claims (5)
1.实现线速对数据流按规则库近似匹配的可配置的硬件结构,其特征在于,它含有:
1)单字匹配器阵列由多个单字匹配器构成,其中每个单字匹配器包括单字比较器和窗口控制器,
其中,每个单字比较器含有:
单字寄存器,存有32比特宽的由外部配置的一个单字;
比较器,它设有单字寄存器输出信号输入端,时钟信号输入端和外部输入数据输入端以及一个匹配信号输出端;
其中,每个窗口控制器含有:
窗口寄存器,它可配置的存有外部配置的窗口长度值;
窗口状态机,它是一个由基本门电路构成的逻辑单元,它设有:两个输入端,分别与窗口寄存器的输出端和上述比较器的输出端相连,以及一个匹配窗口信号输出端;该状态机包含等待态和计数态以及一个计数器:状态机启动后,处于等待态,并清零计数器的数值;当检测到上述匹配信号有效时,状态机由等待态变迁到计数态;在计数态,计数器每个时钟周期加“1”,同时保持上述匹配窗口信号有效;当计数器的数值等于上述窗口寄存器中的保存的数值时,状态机由计数态变迁到等待态,同时清零计数值并使上述匹配窗口信号无效;
上述单字匹配器的个数等于所要匹配的规则库中所含的不相同的单字的数目;
2)规则组合器阵列,
所述阵列中规则组合器的个数等于规则库中所含的规则数;每一个规则组合器输入信号的数量等于该规则包含的单字的数量;
每一个规则组合器含有:
与门,其输入端个数与该规则组合器实现的规则所包含的单字数量相等,每一个输入端对应于该规则组合器所实现规则中的一个单字;所述各输入端与配置了与该输入端对应单字的上述单字匹配器的输出端相连;
D触发器,它的时钟端与上述与门的输出端相连,它的输入信号端直接接信号“1”,它的rst端接外部输入数据流的分段信号;
3)规则汇总器,
它的各信号输入端与相应的各规则组合器的输出端相连,其输出信号为整个规则库匹配结构的匹配指示信号;所述规则汇总器是一个或门。
2.根据权利要求1所述的实现线速对数据流按规则库近似匹配的可配置的硬件结构,其特征在于:
所述的规则组合器是一个带优先级的规则组合器,它含有:
第一个D触发器,它的输入信号端和时钟信号端分别连接到最低优先级和倒数第二低优先级的单字信号,这里设定:规则中最先出现的单字的优先级最低,最后出现的单字的优先级最高;
第二个D触发器,它的时钟信号为倒数第三低优先级的单字信号,它的输入信号为第一个D触发器的输出信号与所述第二个D触发器前面所有的单字信号相“与”而得到的信号;
其余的D触发器,它们的连接方式依此类推;
最后一个D触发器,它的时钟信号为最高优先级的单字信号,它的输入信号为倒数第二个D触发器的输出信号与所述最后一个D触发器前面所有的单字信号相“与”而得到的信号;
所有的D触发器的rst信号是外部输入数据流的分段信号。
3.根据权利要求1所述的实现线速对数据流按规则库近似匹配的可配置的硬件结构,其特征在于:
所述的规则汇总器是一种带特权排除的规则汇总器,它含有:
一个非门,输入端接一个的特权输入信号;
一个或门,输入端接多个普通输入信号;
一个与门,两个输入端分别接上述非门和或门的输出端,而所述与门的输出信号即为规则汇总器的输出信号。
4.根据权利要求1所述的实现线速对数据流按规则库近似匹配的可配置的硬件结构,其特征在于:
所述的规则组合器是一种实现删除错误和替代错误的规则组合器,所述的替代错误指输入单字的错别字或其他替换性的错误,删除错误是指输入单字的删除性错误,它含有:
加法器,它的输入为该规则组合器的所有输入单字信号,输出为当前有效单字数;
K寄存器,存有错误的容忍级别,即最低的有效单字数;
比较器,它的输入端分别与上述加法器和K寄存器的输出端相连,当加法器的输出不小于K寄存器的数值时,输出为匹配信号。
5.根据权利要求1所述的实现线速对数据流按规则库近似匹配的可配置的硬件结构,其特征在于:
所述规则组合器中组合了与它所含的字相配且从相应的单字匹配器中分离出来的窗口控制器,该窗口控制器的输出端与所述的规则组合器相应的输入端直接相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100688499A CN100347992C (zh) | 2004-07-09 | 2004-07-09 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100688499A CN100347992C (zh) | 2004-07-09 | 2004-07-09 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1588894A CN1588894A (zh) | 2005-03-02 |
CN100347992C true CN100347992C (zh) | 2007-11-07 |
Family
ID=34604181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100688499A Expired - Fee Related CN100347992C (zh) | 2004-07-09 | 2004-07-09 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100347992C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526552B2 (en) * | 2005-08-25 | 2009-04-28 | International Business Machines Corporation | Stable, minimal skew resource flow control technique in large scale enterprise storage systems |
CN101389015B (zh) * | 2007-09-12 | 2011-05-04 | 奇景光电股份有限公司 | 弹性长度的解码器 |
US8782624B2 (en) * | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
KR102174643B1 (ko) | 2017-01-26 | 2020-11-05 | 엘지전자 주식회사 | 이동 단말기 |
CN111080309B (zh) * | 2019-12-25 | 2022-05-06 | 支付宝(杭州)信息技术有限公司 | 针对多个对象或多个模型的数据处理方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284180A (zh) * | 1997-12-16 | 2001-02-14 | Ip半导体有限公司 | 利用布尔逻辑和可编程结构进行地址分析的方法和装置 |
EP1128609A2 (en) * | 1999-12-13 | 2001-08-29 | Ascend Communications, Inc. | Packet classification engine |
WO2004019587A1 (en) * | 2002-08-23 | 2004-03-04 | Koninklijke Philips Electronics N.V. | Hardware-based packet filtering accelerator |
-
2004
- 2004-07-09 CN CNB2004100688499A patent/CN100347992C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284180A (zh) * | 1997-12-16 | 2001-02-14 | Ip半导体有限公司 | 利用布尔逻辑和可编程结构进行地址分析的方法和装置 |
EP1128609A2 (en) * | 1999-12-13 | 2001-08-29 | Ascend Communications, Inc. | Packet classification engine |
WO2004019587A1 (en) * | 2002-08-23 | 2004-03-04 | Koninklijke Philips Electronics N.V. | Hardware-based packet filtering accelerator |
Also Published As
Publication number | Publication date |
---|---|
CN1588894A (zh) | 2005-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tan et al. | Bit-split string-matching engines for intrusion detection and prevention | |
Gibb et al. | Design principles for packet parsers | |
Yang et al. | High-performance and compact architecture for regular expression matching on FPGA | |
CN108874776A (zh) | 一种垃圾文本的识别方法及装置 | |
CN1794236A (zh) | 高效的基于cam在分组有效载荷中进行串搜索的技术 | |
Kong et al. | Efficient signature matching with multiple alphabet compression tables | |
CN107122222B (zh) | 一种字符串的搜索系统及方法 | |
CN1679295A (zh) | 基于硬件的分组过滤加速器 | |
Chen et al. | An efficient multicharacter transition string-matching engine based on the aho-corasick algorithm | |
CN110865970B (zh) | 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法 | |
Faezipour et al. | Wire-speed TCAM-based architectures for multimatch packet classification | |
CN100347992C (zh) | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 | |
Wang et al. | A modular NFA architecture for regular expression matching | |
Scarpazza et al. | Exact multi-pattern string matching on the cell/be processor | |
CN111107068B (zh) | 一种fpga高效规则匹配方法及终端 | |
CN1783838A (zh) | 基于有状态过滤引擎的高速分组检测方法 | |
Nilsen et al. | A variable word-width content addressable memory for fast string matching | |
Vespa et al. | Deterministic finite automata characterization and optimization for scalable pattern matching | |
Tripp | A finite-state-machine based string matching system for intrusion detection on high-speed networks | |
Moscola et al. | Reconfigurable content-based router using hardware-accelerated language parser | |
Kaneta et al. | High-speed string and regular expression matching on FPGA | |
Dien et al. | Memory-based multi-pattern signature scanning for clamav antivirus | |
Košar et al. | Multi-stride NFA-split architecture for regular expression matching using FPGA | |
Carrasco et al. | Incremental construction of minimal tree automata | |
Nakahara et al. | The parallel sieve method for a virus scanning engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071107 Termination date: 20140709 |
|
EXPY | Termination of patent right or utility model |