CN103226615B - 一种spd访问方法 - Google Patents
一种spd访问方法 Download PDFInfo
- Publication number
- CN103226615B CN103226615B CN201310177338.XA CN201310177338A CN103226615B CN 103226615 B CN103226615 B CN 103226615B CN 201310177338 A CN201310177338 A CN 201310177338A CN 103226615 B CN103226615 B CN 103226615B
- Authority
- CN
- China
- Prior art keywords
- comparer
- bit section
- selector
- traffic
- spd
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种SPD访问方法,包括:通过预先确定的规则匹配FSA布置当前的规则匹配FSA查找引擎;获取IP数据流的选择符信息,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配;若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;通过状态编码器将所述端口输出编码成地址信号指向SPD存储器;通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,若匹配,则将SPD中指向SA的地址信号输出,完成SPD访问。本发明实施例提升了SPD的查找访问速度。
Description
技术领域
本发明属于因特网安全技术领域,尤其涉及一种SPD(SecurityPolicyDatabase,安全策略数据库)访问方法。
背景技术
IPSec(Internet协议安全性)是由IETF(Internet工程任务组)提出的基于密码学的安全的开放网络安全协议。它工作在IP层,提供访问控制、无连接的完整性、数据源认证、机密性保护、有限的数据流机密性保护以及抗重放攻击等安全服务,其在网络安全领域得到了广泛的应用。
IPSec为了给需要受保护的数据流提供安全服务需要协商SA(SecurityAssociation,安全关联),而SA通过维护安全策略数据库(SPD)和安全关联数据库(SAD)来实现对数据流的保护。其中SPD指定了应用在到达或者来自某特定主机或者网络的数据流的策略。SAD包含每一个SA的参数消息。对于外出包,SPD决定对一个特定的数据包使用什么SA;对于进入包,SAD决定怎样对特定的数据包做处理。
SPD负责维护IPSec策略,区分通信流,确定哪些需要应用IPSec保护,哪些允许绕过IPSec,哪些是需要丢弃的。“保护”(protect)表示对外出或进入的包应用安全服务,同时要求进入的包已应用了安全服务;“绕过(bypass)”表示不对这个包应用安全服务;“丢弃”代表不让这个包进入或离开。SPD中包含了一个策略条目的有序列表,对那些定义了“protect”行为的SPD条目,均会指向一个SA或SA集束。IPSec协议要求进入或离开IPSec协议栈的每个包都必须查询SPD。因此,在IPSec处理过程中需要进行大量的SPD查找工作,那么查找速度的快慢将成为IPSec处理数据流效率的瓶颈。
目前IPSec安全策略库的查找技术主要采用软件的方法实现,例如,在Linux2.6内核中,IPSec的SPD采用了动态Hash(哈希)表的结构来实现,该算法将选择符作为Hash函数的关键字进行地址映射,采用链式方法解决冲突,该方法性能的优劣很大程度上取决与Hash函数的选取。实际上,这种Hash表的数据结构已经是软件方法所能实现的较高效率的SPD访问了,但是,其对SPD的处理速度也只能达到微秒级的水平,采用软件方法改进数据结构来提高SPD查找速度已经很难了。
因此提供一种全新的SPD访问方式,以提高查找SPD的速度成为本领域人员亟需解决的问题。
发明内容
有鉴于此,本发明实施例提供一种SPD访问方法,以提高查找SPD的速度。
为实现上述目的,本发明实施例提供如下技术方案:
一种SPD访问方法,包括:
通过预先确定的规则匹配有限状态机FSA布置当前的规则匹配FSA查找引擎;所述规则匹配FSA为存储有若干段比特段的树形结构数据,一个树形结构数据的节点存储一段比特段;所述规则匹配FSA查找引擎包括比较器组合,状态编码器,缓存设备,SPD存储器和多字节比较器,所述比较器组合的比较器组合结构与所述树形结构数据的树形结构对应,各比较器存储有一段比特段,比较器存储的比特段与对应树形结构数据的节点存储的比特段对应;
获取IP数据流的选择符信息,所述IP数据流的选择符信息包括若干段的n位比特段,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配,所比较的IP数据流的比特段和比较器存储的比特段的序数相同;
若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;
通过状态编码器将所述端口输出编码成地址信号指向安全策略数据库SPD存储器;
通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,该IP数据流由缓存设备缓存后输入多字节比较器,若匹配,则将SPD中指向安全关联SA的地址信号输出,完成SPD访问。
其中,所述预先确定规则匹配FSA的过程包括:
选取SPD的选择符的前m位,组成多组选择符字段,每组选择符字段包含有至少一段由n位比特组成的比特段;
计算各选择符字段的唯一前缀,根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA,所述唯一前缀为各选择符字段中由第一个比特段开始,至在相同的比特段序数上区别于其他选择符字段的比特段止的区间内所包含的比特段。
其中,所述SPD的选择符包括源地址和目的地址。
其中,所述根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA的过程包括:
规则匹配FSA包括根节点和子节点,节点层数与SPD的选择符字段的组数对应,在根节点承载各选择符字段的唯一前缀的第一个比特段,各选择符字段的唯一前缀的相同的第一个比特段承载在同一根节点上,各选择符字段的唯一前缀的不同的第一个比特段承载在不同的根节点上;
依据各选择符字段的唯一前缀的比特段的递进关系,在各选择符字段的唯一前缀对应的根节点下的子节点上递进的承载各选择符字段的唯一前缀中的其他比特段,一个子节点承载一个序数的比特段,同属于一个根节点的各选择符字段的唯一前缀中的序数相同且内容相同的其他比特段承载在同一子节点上;
其中,其他比特段为选择符字段的唯一前缀中除第一个比特段外的比特段,各层节点的最后一个节点称为叶节点,叶节点承载各选择符字段的唯一前缀中区别于其他选择符字段的唯一前缀的比特段。
其中,所述比较器组合的比较器组合结构与所述树形结构数据的树形结构对应包括:
比较器组合包括根比较器和子比较器,根比较器与子比较器的关系与规则匹配FSA中根节点与子节点的关系一致,子比较器中存在叶比较器,叶比较器与叶节点对应,且各比较器存储有对应规则匹配FSA节点上存入的比特段。
其中,所述比较器包括:控制比较器是否可用的使能端ENABLE;时钟CLK;复位键RESET;输入口INPUT;输出口OUT。
其中,所述比较器为星号比较器,所述星号比较器包括:控制比较器是否可用的使能端ENABLE;时钟CLK;复位键RESET;输入口INPUT;输出口OUT;所述使能端ENABLE与输出口OUT端作或运算。
其中,所述将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配的过程包括:
输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,比较器所存储的比特段与输入的IP数据流的比特段进行匹配;
若上级比较器匹配成功,则激活下级匹配路径,在下级比较器中进行比较器所存储的比特段与输入的IP数据流的比特段进行匹配,直至比较器组合中任一末端的比较器的匹配结果为,输入的IP数据流的比特段与比较器所存储的比特段匹配,或直至无法激活下一匹配路径时止。
其中,所述输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,比较器所存储的比特段与输入的IP数据流的比特段进行匹配的过程包括:
将IP数据流的选择符的第一个比特段,输入存储有唯一前缀的第一个比特段的根比较器中,将IP数据流的选择符的第一个比特段与比较器中存储的唯一前缀的第一个比特段进行匹配;
若匹配成功,激活根比较器下的子比较器,将IP数据流的选择符的第二个比特段,输入存储有唯一前缀的第二个比特段的各子比较器,将IP数据流的选择符的第二个比特段与比较器中存储的唯一前缀的第二个比特段进行匹配;
若匹配成功,激活子比较器的下一子比较器,执行第三个比特段的匹配过程,以此类推,直至树形结构的任一层比较器的最后一个比较器匹配成功,或直至没有下一子比较器能够被激活。
其中,所述m为64,n为8。
基于上述技术方案,本发明实施例提供的SPD访问方法,通过预先确定的规则匹配FSA布置当前的规则匹配FSA查找引擎,布置具有与规则匹配FSA的树形结构数据的树形结构对应的比较器组合,在比较器中存储对应的规则匹配FSA的节点所存储的比特段;在获取IP数据流后,获取IP数据流的选择符信息,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配,所比较的IP数据流的比特段和比较器存储的比特段的序数相同;若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;通过状态编码器将所述端口输出编码成地址信号指向SPD存储器;通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,若匹配,则将SPD中指向SA的地址信号输出,完成SPD访问。本发明实施例通过布置规则匹配FSA查找引擎,通过比较器与IP数据流的匹配,实现一种硬件电路形式的SPD查找过程;相比现有技术提供的采用软件方法改进数据结构来提高SPD查找速度的方式,本发明实施例提供的SPD访问方法采用硬件电路形式进行SPD查找访问,进一步提升了SPD的查找访问速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的SPD访问方法的流程图;
图2为本发明实施例提供的确定规则匹配FSA的方法流程图;
图3为本发明实施例提供的规则匹配FSA的构建示意图;
图4为本发明实施例提供的有效比较器的布置示意图;
图5为本发明实施例提供的规则匹配FSA查找引擎的结构示意图;
图6为本发明实施例提供的比较器的结构示意图;
图7为本发明实施例提供的星号比较器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的SPD访问方法的流程图,参照图1,该方法可以包括:
步骤S100、通过预先确定的规则匹配FSA(finitestateautomata,有限状态机)布置当前的规则匹配FSA查找引擎;
其中,规则匹配FSA是通过SPD确定的,因此只要确定SPD的数据内容,即可预先确定规则匹配FSA。
可选的,本发明实施例确定规则匹配FSA的方法可参照图2,图2为本发明实施例提供的确定规则匹配FSA的方法流程图,该流程可以包括:
步骤S110、选取SPD的选择符的前m位,组成多组选择符字段;
一般地,SPD中包含一个策略条目的有序列表,通过使用一个或多个选择符来确定每一个条目。选择符通常包括:源IP地址,目的IP地址,源端口,目的端口和协议五元组等。表1示出了一个典型的IPSec安全策略数据库SPD的实例可一同参照。
IPSec安全策略数据库实例
表1
源IP地址或目的IP地址可以是一个单独的IP地址,组播地址,地址范围或通配符地址。可选的,为了简化选择符的选取,本发明实施例也可直接选取源地址+目的地址作为选择符。
可选的,m的取值范围可以是1≤m≤选择符的比特数,m是根据SPD的特点取值的。
可选的,本发明实施例中,选择符由多组字段组成,每组选择符字段包含有至少一段由n位比特组成的比特段,即每组选择符字段中至少有一段比特段,一段比特段由n位比特组成,n小于m,可选n为8。
为便于理解现取m为64,n为8为例,以源IP地址+目的IP地址作为选择符,所选取的SPD选择符的前64位如表2:
表2
如表2,选取SPD的选择符的前64位组成了4组选择符字段,各组选择符字符段具有若干段8位比特的比特段,由这4组选择符字段构建成了规则匹配FSA引擎的规则集合。值得注意的是,上述举例仅为便于说明本发明实施例选取SPD的选择符、构建规则匹配FSA引擎的规则集合的过程,其不应成为本发明实施例保护范围的限制。
步骤S120、计算各选择符字段的唯一前缀,根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA。
其中,唯一前缀是指各选择符字段中由第一个比特段开始,至在相同的比特段序数上区别于其他选择符字段的比特段止的区间内所包含的比特段。以表2所示内容为例,各选择符字段的唯一前缀如表3所示:
选择符前64位的唯一前缀
表3
其中,第一组选择符字段的唯一前缀为0000101000000000,00001010为第一组选择符字段的第一个比特段,第二个比特段00000000是第一组选择符字段在第二个比特段序数上区别于第二、三、四组选择符字段的比特段;在第二个比特段序数上,第一组选择符字段的第二个比特段具有唯一性,因此第二个比特段00000000是第一组选择符字段的中止部位,由第一个比特段00001010和第二个比特段00000000组成第一组选择符字段的唯一前缀,此处的第一个比特段,第二个比特段的第一、第二称为比特段的序数,选择符字段中的比特段序数总和与选择符字段中的比特段段数相同。
在获得各选择符字段的唯一前缀后,可根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA;其中,规则匹配FSA为树形结构的数据,规则匹配FSA的数据结构包括根节点和子节点,节点层数(根节点+叶节点的层数)与SPD的选择符字段的组数对应,其中,根节点承载各选择符字段的唯一前缀的第一个比特段,各选择符字段的唯一前缀的相同的第一个比特段承载在同一根节点上,各选择符字段的唯一前缀的不同的第一个比特段承载在不同的根节点上;依据各选择符字段的唯一前缀的比特段的递进关系,在各选择符字段的唯一前缀对应的根节点下的子节点上递进的承载各选择符字段的唯一前缀的其他比特段,一个子节点承载一个序数的比特段,同属于一个根节点的各选择符字段的唯一前缀的序数相同且内容相同的其他比特段可承载在同一子节点上,此处的其他比特段为选择符字段的唯一前缀中除第一个比特段外的比特段,比特段的序数相同指比特段在选择符字段中的位置相同,如第一组选择符字段的第二个比特段与第二组选择符字段的第二个比特段为序数相同的比特段;各层节点的最后一个节点称为叶节点,叶节点承载各选择符字段的唯一前缀中区别于其他选择符字段的唯一前缀的比特段。
为使上述描述的根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA的说明更易理解,下面以表3所示唯一前缀为例,结合图3所示规则匹配FSA的构建示意图进行说明。图3中按照选择符字段的组数分有四层,第一层为1、2节点,第二层为1、3节点,第三层为1、4、5节点,第四层为1、4、6节点,节点1为根节点,其余节点为子节点,各层的最后一个节点2、3、5、6均为叶节点,图中由圆圈代表节点,其中双层圆圈代表叶节点;其中,第一组选择符字段的唯一前缀为0000101000000000,从0节点(作为第一节点的一个输入口)开始输入第一个比特段(即第一个8比特00001010)进入节点1,在节点1下输入第二个比特段(即第二个8比特00000000)进入节点2,节点2是第一组选择符字段的终止态,为叶节点;对于第二组选择符字段,其唯一前缀为0000101000000001,由于第一个比特段与节点1已存的比特相同,因此在节点1承载一个00000000即可,由于第二个比特段00000001与第一组选择符字段的唯一前缀的第二个比特段00000000不同,因此在节点1下输入第二个比特段00000001进入节点3,通过节点3承载第二个比特段00000001;对于序数相同且内容相同的唯一前缀的比特段则可承载在同一子节点上,如第三组选择符字段和第四组选择符字段的唯一前缀的第二个比特段相同,因此可在同一节点4上承载第二个比特段;以上述描述的方式类推,将对应的比特段输入第三层节点和第四层节点,即可构建成具有树形结构的数据,构建成规则匹配FSA。
值得注意的是,若各选择符字段的唯一前缀中具有第一个比特段就不同的情况,则规则匹配FSA的根节点的数量将有多个,根节点的数量与具有不同第一个比特段的唯一前缀的个数对应。
需要说明的是,由于规则匹配FSA是通过SPD确定的,因此当SPD进行了添加、删除和修改等操作时,需要重新计算SPD各选择符字段的唯一前缀,重新构建规则匹配FSA。
在图1所示步骤S100中,所布置的当前的规则匹配FSA查找引擎包括比较器,状态编码器,缓存设备,SPD存储器和多字节比较器;通过预先确定的规则匹配FSA布置当前的规则匹配FSA查找引擎主要是布置规则匹配FSA查找引擎中的有效比较器。可选的,在构建完具有树形结构的数据的规则匹配FSA后,可通过该规则匹配FSA构建树形的比较器组合,比较器组合的树形结构与规则匹配FSA的树形结构数据的结构对应,比较器组合包括根比较器和子比较器,根比较器与子比较器的关系与规则匹配FSA中根节点与子节点的关系一致,子比较器中存在叶比较器,叶比较器与叶节点对应,且各比较器存储有对应节点上存入的比特段。以图3所示规则匹配FSA为例,对应布置的比较器组合如图4所示,图4为本发明实施例提供的有效比较器的布置示意图,其中实线框表示的比较器为有效比较器;本发明实施例可预先布置具有多层结构的比较器组合,在确定了规则匹配FSA后,在该多层结构的比较器组合中进行有效比较器的选择,完成有效比较器组合的布置。
在完成有效比较器组合的布置后,规则匹配FSA查找引擎的布置也将完成,图5示出了规则匹配FSA查找引擎的结构示意图,可一同参照,其中缓存设备将对IP数据流进行缓存,并将缓存后的IP数据流输入多字节比较器。
可知,本发明实施例中,规则匹配FSA为存储有若干段比特段的树形结构数据,一个树形结构数据的节点存储一段比特段;规则匹配FSA查找引擎包括比较器组合,状态编码器,SPD存储器和多字节比较器,所述比较器组合的比较器组合结构与所述树形结构数据的树形结构对应,各比较器存储有一段比特段,比较器存储的比特段与对应树形结构数据的节点存储的比特段对应。
步骤S200、获取IP数据流的选择符信息,所述IP数据流的选择符信息包括若干段的n位比特段,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配;
图6示出了本发明实施例比较器的结构示意图,其中,ENABLE是比较器的使能端、控制比较器是否可用,CLK是时钟,RESET为复位键,INPUT为输入,out为输出。比较器中存储了对应的规则匹配FSA节点所存入的比特段,比较器的输入为IP数据流,则输入IP数据流在时钟的控制下取得与当前比较器相对应的比特段进入比较器中进行比较,若匹配,则out输出为1,Out信号作为下一级比较器的使能端输入,在输出Out信号为1时,下一级比较器将被激活。此处输入IP数据流在时钟的控制下取得与当前比较器相对应的比特段进入比较器中进行比较是指,输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,即进行比较的IP数据流中的比特段的序数,与进行比较的比较器中所存储的唯一前缀的比特段的序数对应,如IP数据流的第一个比特段输入存储有第一个比特段的比较器,则IP数据流的第一个比特段与该比较器所存储的第一个比特段进行比较,IP数据流的第二个比特段输入存储有第二个比特段的比较器,则IP数据流的第二个比特段与该比较器所存储的第二个比特段比较等,值得注意的是,存储相同序数比特段的比较器可能有多个,如第一组选择符字段的唯一前缀的第二个比特段与第二组选择符字段的唯一前缀的第二个比特段不同,则存储第一组选择符字段的唯一前缀的第二个比特段的比较器,与存储第二组选择符字段的唯一前缀的第二个比特段的比较器不同。
本发明实施例提供的比较器还可以是星号比较器,图7示出了星号比较器的结构可一同参照,值得注意的是,图7所示星号比较器与图6所示比较器相比,图7所示星号比较器的使能端ENABLE与out端作或运算。
本发明实施例中,输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,比较器所存储的比特段与输入的IP数据流的比特段进行匹配;若上级比较器匹配成功,则激活下级匹配路径,在下级比较器中进行比较器所存储的比特段与输入的IP数据流的比特段进行匹配,直至比较器组合中任一末端的比较器的匹配结果为,输入的IP数据流的比特段与比较器所存储的比特段匹配,或直至无法激活下一匹配路径时止。
为便于理解,还是以n位比特段为8位比特为例,对步骤S200中提及的匹配方式进行说明。当有一个IP数据流到达IPSec需要查询SPD时,首先获取IP数据流中的选择符信息,一般取源IP地址和目的IP地址,假设IP数据流中选择符为000010100000001100000001*0000101000000000**,那么为判断该选择符是否与规则匹配FSA匹配,需要将选择符的第一个比特段(即第一个8比特数据)00001010与比较器组合中存储唯一前缀的第一个比特段的根比较器所存储的比特段进行匹配,如图5所示规则匹配FSA查找引擎,IP数据流输入比较器1,IP数据流的选择符的第一个比特段00001010将与比较器1存储的唯一前缀的第一个比特段进行匹配,若无法匹配上,则中断下一匹配路径,若匹配成功,则比较器1输出1,激活下一匹配路径(通过输出为1的方式激活比较器组合中下一级比较器的使能端),执行下一段比特段的匹配;如在比较器1的匹配成功后,激活比较器1的下一级比较器2、3、4,将选择符的第二个比特段与比较器2、3、4存储的唯一前缀的第二个比特段进行匹配,若无法匹配上,则中断下一匹配路径,若匹配成功,则输出1,激活下一匹配路径,执行下一段比特段的匹配,以此类推,直至比较器组合的任一层的最后的一个比较器(叶比较器)输出match(匹配)信号为1,或无法激活下一匹配路径时止。
若比较器组合的任一层的最后的一个比较器(叶比较器)存在输出match信号为1的现象,则说明IP数据流的输入选择符在规则匹配FSA中,匹配成功,若比较器组合的叶比较器没有输出match信号为1,则说明IP数据流的输入选择符不在规则匹配FSA中,匹配失败。
结合图3所示规则匹配FSA构建示意图,及图5所示规则匹配FSA查找引擎,可首先从Input端口输入IP数据流,假设进入的IP数据流的选择符为:00001010000000010000000100000001000010100000001000000001*,取IP数据流的选择符中第一个8比特00001010送入比较器1的in端口,而比较器1中存储的是00001010,显然匹配,因此out端输出为1,将比较器2、比较器3、比较器4的ENABLE端口置1,此时将IP数据流中第二个8比特数据00000001同时送入比较器2、比较器3、比较器4中进行比较,显然只有比较器3匹配,因此比较器3的out端口输出1,而比较器2和CMP4输出端口为0,由于比较器3是叶子比较器,因此match2为1,说明IP数据流的输入选择符在规则匹配FSA中匹配成功。
可见,本发明实施例在获得IP数据流后,将IP数据流的选择符的第一个比特段,输入存储有唯一前缀的第一个比特段的根比较器中,将IP数据流的选择符的第一个比特段与比较器中存储的唯一前缀的第一个比特段进行匹配;若匹配成功,激活根比较器下的子比较器,将IP数据流的选择符的第二个比特段,输入存储有唯一前缀的第二个比特段的各子比较器,将IP数据流的选择符的第二个比特段与比较器中存储的唯一前缀的第二个比特段进行匹配;若匹配成功,激活子比较器的下一子比较器,执行第三个比特段的匹配过程,以此类推,直至树形结构的任一层比较器的最后一个比较器匹配成功,或直至没有下一子比较器能够被激活。
步骤S300、若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;
比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配即表明:比较器组合中该层的各比较器的匹配结果均是,IP数据流的选择符的比特段与比较器存储的比特段相匹配。该末端比较器为叶比较器,叶比较器的匹配结果为IP数据流的选择符的比特段与比较器存储的比特段相匹配,则叶比较器输出match信号为1,IP数据流的输入选择符在规则匹配FSA中,匹配成功;将该叶比较器的端口输出作为状态编码器的输入。
步骤S400、通过状态编码器将所述端口输出编码成地址信号指向SPD存储器;
结合图5,还是以上段说明为例,由于比较器3是叶子比较器,因此match2为1,状态编码器的输入为0100,状态编码器将0100编码成指向SPD存储器条目的地址信息。
步骤S500、通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,该IP数据流由缓存设备输入多字节比较器,若匹配,则将SPD中指向SA的地址信号输出,完成SPD访问。
可选的,多字节比较器由与门组成。它的输入为IP数据流和SPD存储器内容,输出为Match,若输入的IP数据流与SPD存贮器内容一致,则match信号为1,SPD中指向SA的地址信号将输出,SPD的访问完成。
本发明实施例提供的SPD访问方法,通过预先确定的规则匹配FSA布置当前的规则匹配FSA查找引擎,布置具有与规则匹配FSA的树形结构数据的树形结构对应的比较器组合,在比较器中存储对应的规则匹配FSA的节点所存储的比特段;在获取IP数据流后,获取IP数据流,的选择符信息,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配,所比较的IP数据流的比特段和比较器存储的比特段的序数相同;若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;通过状态编码器将所述端口输出编码成地址信号指向SPD存储器;通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,若匹配,则将SPD中指向SA的地址信号输出,完成SPD访问。本发明实施例通过布置规则匹配FSA查找引擎,通过比较器与IP数据流的匹配,实现一种硬件电路形式的SPD查找过程;相比现有技术提供的采用软件方法改进数据结构来提高SPD查找速度的方式,本发明实施例提供的SPD访问方法采用硬件电路形式进行SPD查找访问,进一步提升了SPD的查找访问速度。
发明人通过实验证明,本发明实施例提供的SPD访问方法通过布置规则匹配FSA查找引擎,以硬件电路形式实现了IPSec中SPD的查找访问,只需要几十个时钟周期就可以完成,查找时间可达到纳秒级,在性能上较软件方式有绝对的优势。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种SPD访问方法,其特征在于,包括:
通过预先确定的规则匹配有限状态机FSA布置当前的规则匹配FSA查找引擎;所述规则匹配FSA为存储有若干段比特段的树形结构数据,一个树形结构数据的节点存储一段比特段;所述规则匹配FSA查找引擎包括比较器组合,状态编码器,缓存设备,SPD存储器和多字节比较器,所述比较器组合的比较器组合结构与所述树形结构数据的树形结构对应,各比较器存储有一段比特段,比较器存储的比特段与对应树形结构数据的节点存储的比特段对应;
获取IP数据流的选择符信息,所述IP数据流的选择符信息包括若干段的n位比特段,将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配,所比较的IP数据流的比特段和比较器存储的比特段的序数相同;
若匹配结束后,比较器组合中存在任一末端比较器的匹配结果为,IP数据流的选择符的比特段与比较器存储的比特段相匹配,则将该末端比较器的端口输出作为状态编码器的输入;
通过状态编码器将所述端口输出编码成地址信号指向安全策略数据库SPD存储器;
通过多字节比较器将指向的SPD存储器中存储的SPD条目与IP数据流进行比较,该IP数据流由缓存设备缓存后输入多字节比较器,若匹配,则将SPD中指向安全关联SA的地址信号输出,完成SPD访问。
2.根据权利要求1所述的方法,其特征在于,所述预先确定的规则匹配FSA的过程包括:
选取SPD的选择符的前m位,组成多组选择符字段,每组选择符字段包含有至少一段由n位比特组成的比特段;
计算各选择符字段的唯一前缀,根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA,所述唯一前缀为各选择符字段中由第一个比特段开始,至在相同的比特段序数上区别于其他选择符字段的比特段止的区间内所包含的比特段。
3.根据权利要求2所述的方法,其特征在于,所述SPD的选择符包括源地址和目的地址。
4.根据权利要求2所述的方法,其特征在于,所述根据Aho_Corasick算法利用各选择符字段的唯一前缀构建规则匹配FSA的过程包括:
规则匹配FSA包括根节点和子节点,节点层数与SPD的选择符字段的组数对应,在根节点承载各选择符字段的唯一前缀的第一个比特段,各选择符字段的唯一前缀的相同的第一个比特段承载在同一根节点上,各选择符字段的唯一前缀的不同的第一个比特段承载在不同的根节点上;
依据各选择符字段的唯一前缀的比特段的递进关系,在各选择符字段的唯一前缀对应的根节点下的子节点上递进的承载各选择符字段的唯一前缀中的其他比特段,一个子节点承载一个序数的比特段,同属于一个根节点的各选择符字段的唯一前缀中的序数相同且内容相同的其他比特段承载在同一子节点上;
其中,其他比特段为选择符字段的唯一前缀中除第一个比特段外的比特段,各层节点的最后一个节点称为叶节点,叶节点承载各选择符字段的唯一前缀中区别于其他选择符字段的唯一前缀的比特段。
5.根据权利要求4所述的方法,其特征在于,所述比较器组合的比较器组合结构与所述树形结构数据的树形结构对应包括:
比较器组合包括根比较器和子比较器,根比较器与子比较器的关系与规则匹配FSA中根节点与子节点的关系一致,子比较器中存在叶比较器,叶比较器与叶节点对应,且各比较器存储有对应规则匹配FSA节点上存入的比特段。
6.根据权利要求1所述的方法,其特征在于,所述比较器包括:控制比较器是否可用的使能端ENABLE;时钟CLK;复位键RESET;输入口INPUT;输出口OUT。
7.根据权利要求1所述的方法,其特征在于,所述比较器为星号比较器,所述星号比较器包括:控制比较器是否可用的使能端ENABLE;时钟CLK;复位键RESET;输入口INPUT;输出口OUT;所述使能端ENABLE与输出口OUT端作或运算。
8.根据权利要求2-5任一项所述的方法,其特征在于,所述将IP数据流的选择符的各段比特段,依序与各比较器存储的比特段进行匹配的过程包括:
输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,比较器所存储的比特段与输入的IP数据流的比特段进行匹配;
若上级比较器匹配成功,则激活下级匹配路径,在下级比较器中进行比较器所存储的比特段与输入的IP数据流的比特段进行匹配,直至比较器组合中任一末端的比较器的匹配结果为,输入的IP数据流的比特段与比较器所存储的比特段匹配,或直至无法激活下一匹配路径时止。
9.根据权利要求8所述的方法,其特征在于,所述输入比较器的IP数据流的比特段的序数与比较器所存储的唯一前缀的比特段的序数对应,比较器所存储的比特段与输入的IP数据流的比特段进行匹配的过程包括:
将IP数据流的选择符的第一个比特段,输入存储有唯一前缀的第一个比特段的根比较器中,将IP数据流的选择符的第一个比特段与比较器中存储的唯一前缀的第一个比特段进行匹配;
若匹配成功,激活根比较器下的子比较器,将IP数据流的选择符的第二个比特段,输入存储有唯一前缀的第二个比特段的各子比较器,将IP数据流的选择符的第二个比特段与比较器中存储的唯一前缀的第二个比特段进行匹配;
若匹配成功,激活子比较器的下一子比较器,执行第三个比特段的匹配过程,以此类推,直至树形结构的任一层比较器的最后一个比较器匹配成功,或直至没有下一子比较器能够被激活。
10.根据权利要求2-5任一所述的方法,其特征在于,所述m为64,n为8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310177338.XA CN103226615B (zh) | 2013-05-14 | 2013-05-14 | 一种spd访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310177338.XA CN103226615B (zh) | 2013-05-14 | 2013-05-14 | 一种spd访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226615A CN103226615A (zh) | 2013-07-31 |
CN103226615B true CN103226615B (zh) | 2016-04-13 |
Family
ID=48837060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310177338.XA Active CN103226615B (zh) | 2013-05-14 | 2013-05-14 | 一种spd访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226615B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282624B (zh) * | 2021-05-25 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 规则匹配方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605136A (zh) * | 2009-07-28 | 2009-12-16 | 杭州华三通信技术有限公司 | 一种对报文进行互联网协议安全性IPSec处理的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4634349B2 (ja) * | 2006-08-22 | 2011-02-16 | 株式会社日立製作所 | IPSec処理装置、ネットワークシステム、及びIPSec処理プログラム |
US8539547B2 (en) * | 2010-08-18 | 2013-09-17 | Certes Networks, Inc. | Policy selector representation for fast retrieval |
-
2013
- 2013-05-14 CN CN201310177338.XA patent/CN103226615B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605136A (zh) * | 2009-07-28 | 2009-12-16 | 杭州华三通信技术有限公司 | 一种对报文进行互联网协议安全性IPSec处理的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"IPSec 安全策略数据库研究及其硬件实现方案";孙宁,等;《电信科学》;20081231(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103226615A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7089240B2 (en) | Longest prefix match lookup using hash function | |
US9098601B2 (en) | Ternary content-addressable memory assisted packet classification | |
US7394809B2 (en) | Method and apparatus for packet classification using a forest of hash tables data structure | |
US7676444B1 (en) | Iterative compare operations using next success size bitmap | |
US11687594B2 (en) | Algorithmic TCAM based ternary lookup | |
CN103428093B (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
US7392241B2 (en) | Searching method for a security policy database | |
CN102811227A (zh) | IPsec协议下标准方式ACL规则的一种管理机制 | |
EP3661153B1 (en) | Building decision tree for packet classification | |
CN103404092A (zh) | 路由前缀存储方法、装置及路由地址查找方法、装置 | |
CN101026576A (zh) | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 | |
US10897422B2 (en) | Hybrid routing table for routing network traffic | |
CN107276916A (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN103226615B (zh) | 一种spd访问方法 | |
Seo et al. | Bitmap-based priority-NPT for packet forwarding at named data network | |
CN103297296B (zh) | 一种基于fpga的逻辑运算查找方法和系统 | |
US11968286B2 (en) | Packet filtering using binary search trees | |
CN100417150C (zh) | 访问控制列表和安全策略数据库的方法 | |
US9330760B2 (en) | Method and apparatus for setting TCAM entry | |
CN100358288C (zh) | 在网络设备中处理五元流组的方法 | |
CN105721627B (zh) | 一种ip网络流数据在线匿名化方法 | |
Behdadfar et al. | Scalar prefix search: A new route lookup algorithm for next generation internet | |
Byun et al. | IP address lookup algorithm using a vectored bloom filter | |
CN103516614A (zh) | 用于在存储器中存储整数范围的系统和方法 | |
Puš | Packet Classification Algorithms. |
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 |