一种并行的大容量访问控制列表的查找方法技术

技术编号:11057726 阅读:99 留言:0更新日期:2015-02-18 20:48
一种并行的大容量访问控制列表的查找方法,涉及通信技术领域,其包括将访问控制列表的链表存储结构设成双向链表的方式,建立访问控制列表中各表项之间的结构关系;多核处理器对初次进入的数据流进行流的划分,建立流表,同时查找合适的访问控制列表表项,建立流表与访问控制列表表项的关联;后续进入的数据流直接从流表表项中获取访问控制列表的执行动作。本发明专利技术提高了访问控制列表匹配的效率,消除了多核处理器在访问控制列表功能项上的技术瓶颈;提高了资源的利用率和任务执行的效率。

【技术实现步骤摘要】
一种并行的大容量访问控制列表的查找方法
本专利技术涉及通信
,具体来讲是一种并行的大容量访问控制列表的查找方法。
技术介绍
传统的单核处理器的处理能力受到主频和功耗等因素的制约,在性能上难以满足日益增长的网络数据处理任务要求。高性能的多核处理器在数据处理过程中能够实现并行处理,网络延时小,数据吞吐量大,在当前的路由器、防火墙等网络设备中有着广泛的应用。ACL(AccessControlList,访问控制列表)是解决和提高网络安全性的方法之一,多应用在路由器和防火墙等网络设备上。访问控制列表应用在网络设备的接口上,当条目达到一定数量后,如果单纯依靠软件算法将接口上通过的数据包逐个匹配ACL条目,导致处理器芯片工作量急剧增加,致使设备的吞吐量处理能力急剧降低。为了解决上述问题,多数网络设备厂商的ACL功能普遍采用TCAM(TernaryContentAddressableMemory,三态内容寻址存储器)硬件存储和TCAM硬件查找方式来实现,但是TCAM存储容量有限,在ACL条目达到百万条之多的情况下单片或少许几片TCAM的存储是难以胜任的,并且TCAM成本高昂,在一定程度上限制了其应用的广泛性。同时由于TCAM在并行查找方面支持的能力有限,对于网上设备上多达16核32核的多核处理器平台,提出的16路32路或更多路数的并行查找需求显得捉襟见肘。当前针对多核处理器平台,在现有访问控制列表查找算法基础上,为大容量路由器和防火墙等网络设备设计一种并行的大容量访问控制列表查找方法显得尤为必要。大型的路由器和防火墙等网络设备的存储都是SDRAM(synchronousdynamicrandomaccessmemory,步动态随机存储器)为主,其优点是大容量和低价格。当前国内外基于SDRAM的最新访问控制列表(ACL)查找算法主要有线性查找算法、树形查找算法、几何查找算法和递归查找算法等算法。线性查找算法基于线性链表的数据组织方式,访问控制列表ACL表项以链表的方式存储在SDRAM中,数据包进行ACL表项项查找时需要对链表上的表项逐个匹配,直到匹配一条合适的表项为止。该算法数据结构简单,容易实现,但是在表项存储量较大的情况下,链表的深度较大,每个数据包需要匹配的平均次数随之增加,最坏情况下需要匹配的次数就是表项的个数,在访问控制列表表项数目较多的情况下单纯依靠上述算法是不可取的,只适用于ACL表项较少的应用场合。树形查找算法、几何查找算法和递归查找算法都是在查找次数上进行优化和改进,通过数据结构的优化,将表项的存储分散成树形结构或图的数据结构,避免单纯的线性存储方式。算法从一定程度上降低了表项的存储深度和减少了平均查找的次数,优化了查找的性能。但是该算法相对于线性查找算法数据结构组织复杂、在掩码查找上支持的能力较弱,同时在并行查找和频繁表项更新等环境中算法的运行效率同样不高,这些算法一般只适用于单核处理器和表项结构较为稳定的设备环境中。上述查找算法分别适合不同的环境,每种算法适用不同的场合,需要结合具体的环境才能发挥其较好的性能优势,但是在当前网络设备所处网络环境复杂,要求对并行查找、大容量表项存储、频繁表项更新、高查找速度和支持掩码匹配等苛刻应用需求下,单纯的应用上述传统算法是难以满足实际应用的需求。同时网络设备的数据平面对算法查找过程中平均匹配次数极为敏感,匹配次数增加一倍可能导致设备性能直接降低50%,因此网络数据设备一般希望能够将匹配次数控制在1至3次以内,这是上述任何一种软件算法在大容量表项情况下都不可能能够完成和实现的。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种并行的大容量访问控制列表的查找方法,提高了访问控制列表匹配的效率,消除了多核处理器在访问控制列表功能项上的技术瓶颈;提高了资源的利用率和任务执行的效率。为达到以上目的,本专利技术采取的技术方案是:一种并行的大容量访问控制列表的查找方法,基于多核处理器实现,包括:将访问控制列表的链表存储结构设成双向链表的方式,建立访问控制列表中各表项之间的结构关系;多核处理器对初次进入的数据流进行流的划分,建立流表,同时查找合适的访问控制列表表项,建立流表与访问控制列表表项的关联;后续进入的数据流直接从流表表项中获取访问控制列表的执行动作。在上述技术方案的基础上,多核处理器将接收到的数据流中的数据包分发到各个空闲的核上,核抽取数据包中对应的条件字段进行哈希运算,根据哈希值的不同将数据包划分到不同的流表中。在上述技术方案的基础上,每一张流表中包含3条流表表项,每个流表表项均包括:第一有效位,用于表示该流表表项的有效性;第一条件字段,表示流表表项的条件字段,是该流表表项的特征值;第二有效位,用于表示访问列表动的执行动作的有效性;第一指针,用于指向动作结构体的指针。在上述技术方案的基础上,所述访问控制列表表项包括:第二条件字段,用于表示访问控制列表的表项中的条件字段,是该表项的特征值;条件掩码,表示访问控制列表的表项中的掩码,用于与数据流信息的条件字段进行与运算;链表指针,用于指向前一个或后一个访问控制列表的表项结构体的指针;第二指针,用于指向动作结构体的指针。在上述技术方案的基础上,所述动作结构体包括:引用计数,用于记录当前正在使用动作结构体的成员个数;结构体资源锁,用于多个核间并行执行时,对动作结构体资源的同步和互斥操作;第三有效位,用于表示该动作结构体的有效性;执行动作,执行访问控制列表定义的动作。在上述技术方案的基础上,所述访问控制列表定义的动作包括修改数据包头部信息、指定出端口、指定路由下一跳、丢弃或者通过。在上述技术方案的基础上,所述建立流表与访问控制列表表项的关联,具体包括以下步骤:步骤S101.多核处理器从数据包中提取该数据包中对应的条件字段进行哈希运算,获得第一哈希值;将该第一哈希值同流表表项总数进行取余运算,得到第二哈希值;步骤S102.找到与第二哈希值对应的流表表项,根据该流表表项的第一条件字段匹配对应的数据流;步骤S103.判断是否匹配成功,若否,则跳转至步骤S104;若是,则跳转至步骤S107;步骤S104.将数据包的条件字段填入到流表表项的第一条件字段中;步骤S105.将数据包的条件字段与对应的访问控制列表进行逐一匹配,匹配成功后,跳转至步骤S106;步骤S106.从访问控制列表的表项中获取第二指针指向的动作结构体;将流表表项中的第一指针指向该动作结构体,同时将动作结构体的引用计数增加1,将流表表项的第一有效位设置成有效;步骤S107.数据包根据流表表项中的第一指针,找到动作结构体;步骤S108.判断动作结构体中的第三有效位是否有效,若是,则直接执行访问控制列表定义的动作;若否,则将动作结构体中的引用计数减1,并且将流表表项中对应的信息全部清除。在上述技术方案的基础上,步骤S105中,匹配时,首先将数据包的条件字段同条件掩码进行与运算,再将运算的结果同第二条件字段进行与运算;如果结果为真则表明匹配上访问控制列表,进入步骤S106;否则继续下一条访问控制列表的匹配,直到匹配最后一条条件掩码为全0的默认访问控制列表表项为止。在上述技术方案的基础上,还包括访问控制列表的表项删除,具体包括以下步骤:步骤201.将待删除的本文档来自技高网
...
一种并行的大容量访问控制列表的查找方法

【技术保护点】
一种并行的大容量访问控制列表的查找方法,基于多核处理器实现,其特征在于,包括:将访问控制列表的链表存储结构设成双向链表的方式,建立访问控制列表中各表项之间的结构关系;多核处理器对初次进入的数据流进行流的划分,建立流表,同时查找合适的访问控制列表表项,建立流表与访问控制列表表项的关联;后续进入的数据流直接从流表表项中获取访问控制列表的执行动作。

【技术特征摘要】
1.一种并行的大容量访问控制列表的查找方法,基于多核处理器实现,其特征在于,包括:将访问控制列表的链表存储结构设成双向链表的方式,建立访问控制列表中各表项之间的结构关系;多核处理器对初次进入的数据流进行流的划分,建立流表,同时查找合适的访问控制列表表项,建立流表与访问控制列表表项的关联;后续进入的数据流直接从流表表项中获取访问控制列表的执行动作;每一张流表中包含3条流表表项,每个流表表项均包括:第一有效位,用于表示该流表表项的有效性;第一条件字段,表示流表表项的条件字段,是该流表表项的特征值;第二有效位,用于表示访问控制列表的执行动作的有效性;第一指针,用于指向动作结构体的指针;所述访问控制列表表项包括:第二条件字段,用于表示访问控制列表的表项中的条件字段,是该访问控制列表表项的特征值;条件掩码,表示访问控制列表的表项中的掩码,用于与数据流信息的条件字段进行与运算;链表指针,用于指向前一个或后一个访问控制列表的表项结构体的指针;第二指针,用于指向动作结构体的指针;所述动作结构体包括:引用计数,用于记录当前正在使用动作结构体的成员个数;结构体资源锁,用于多个核间并行执行时,对动作结构体资源的同步和互斥操作;第三有效位,用于表示该动作结构体的有效性;执行动作,执行访问控制列表定义的动作。2.如权利要求1所述的并行的大容量访问控制列表的查找方法,其特征在于:多核处理器将接收到的数据流中的数据包分发到各个空闲的核上,核抽取数据包中对应的条件字段进行哈希运算,根据哈希值的不同将数据包划分到不同的流表中。3.如权利要求1所述的并行的大容量访问控制列表的查找方法,其特征在于:所述访问控制列表定义的动作包括修改数据包头部信息、指定出端口、指定路由下一跳、丢弃或者通过。4.如权利要求1所述的并行的大容量访问控制列表的查找方法,其特征在于,所述建立流表与访问控制列表表项的关联,具体包括以下步骤:步骤S101.多核处理器从数据包中提取该数据包中对应的条件字段进行哈希运算,获得第一哈希值;将该第一哈希值同流表表项...

【专利技术属性】
技术研发人员:范富明李念军黄杨琴侯冬兰
申请(专利权)人:武汉烽火网络有限责任公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1