一种多核板卡acl规则匹配方法

文档序号:7809112阅读:369来源:国知局
专利名称:一种多核板卡acl规则匹配方法
技术领域
本发明涉及一种多核板卡ACL规则匹配方法,属于网络安全行业的数据分流和过滤领域。
背景技术
ACL (访问控制列表)技术,是一种数据过滤和控制方法,主要应用于路由器,交换机,防火墙等产品中,用以进行数据的过滤和控制。在网络安全领域,ACL技术用于通过配置规则,让分流设备对互联网的原始数据包进行过滤,规则可以是端口或IP以及协议,或者是几者的组合。在一般的实现中分流板卡设备是采用遍历的方式对规则进行匹配。这种方式的问题是当规则数量超过一定的值的时候将会大幅影响性能,从而降低板卡对数据包的分流效率。完全采用硬件实现的板卡很难通过算法进行性能的优化。而多核卡即是解决这个问题而产生的,它具备了硬件板卡的性能优势,同时可以采用编程的方式通过优化算法提高处理能力。多核板卡一般都延续硬件分流板卡的实现思路,使用对规则进行遍历的方式进行匹配处理,在规则数量小的时候很快,一般支持10万以内的规则,但是当规则数量增大到一定程度的时候,效率显著降低。这时候使用一种较好的匹配算法成为必然。本文描述的方法可以处理百万级的规则数量,并且速度不会明显降低

发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种多核板卡ACL规则匹配方法,本发明能够优化多核分流板卡对于ACL规则的处理能力,大幅提高其分流过滤的处理性能。本发明通过一种方法对多核板卡的规则匹配流程进行改进,提高其处理能力。具体实现如下:5元组(源IP,目的IP,源端口,目的端口,协议类别)总计有31种组合,但是实际使用时,用户输入的ACL规则只是这31种组合的一部分,每种组合视为一类。如图1所示:将用户的规则分为了 N类。每一个类别都使用一个hash表,总计N个哈希表,使用一个指针数组保存指向N个哈希表的指针。指针数组记为Array [N]每个哈希表下挂的链表是此类别的规则节点,图2所示的是插入了几个节点后的哈希表的状态。此方法包含新规则插入、规则删除、数据包规则匹配3部分。I)新规则插入假设用户配置的规则为规则x(源IP:χ.X.X.X目的IP:y.y.y.y,记为RuleX),图2中虚线框中的就是规则X,显示的是插入后的状态。
下面的步骤是规则插入的流程:第一步:确定新规则的类别,来决定向Array数组的哪个哈希表进行插入。这里RuleX包含源IP和目的IP,根据图1的类别得知,RuleX对应的类别索引为
O,即需要操作的哈希表的指针为Array
。第二步:构造虚拟5元组。此操作将用户配置的规则扩展,从而得到完整的5元组的信息。用户规则中包含的部分直接拷贝到5元组的对应部分,5元组中其他几个部分,在用户规则中没有包含,则被设置为O。RuleX 的信息被扩展为 5 元组(sip = x.x.x.x sport = 0 dip = y.y.y.y dport=0 proto = 0,记为 FiveTupleX),其中,sip 是源 IP, sport 是源端 口,dip 是目的 IP,dport是目的端口,proto是协议类型。第三步:对5元组的信息进行哈希,决定向哈希表的哪个桶中的链表插入。本方法使用完整的5元组信息进行哈希,可以保持通用性,所有的类别的5元组都可以使用同一个哈希函数。具体的哈希函数可以自写或其他的,具体实现不限。如果需要更好的散列,那么可以对不同的规则类别使用不同的哈希算法。但不管使用什么算法,需要保持插入、删除、查找使用同一个算法。如图2根据5元组FiveTupleX进行哈希得到对应的桶索引3第四步:建立一个节点用来保存规则信息,将这个节点挂到对应索引的桶下面的链表上。如图2所示的虚框的那个节点,节点中保存5元组的信息。如果新插入规则的5元组信息与已有的某节点的5元组信息完全一致时,不允许进行插入,这样保证规则的唯一性。2)规则删除删除规则时用户同样需要指定规则的几个部分,假设用户待删除的规则为图2的规则4(目的端口:2000协议:tcp,记为Rule4)第一步:确定待删除规则的类别,来决定从Array数组的哪个哈希表进行查找。这里根据图1得知Rule4对应的类别索引为4,即需要操作的哈希表的指针为Array[4]第二部:构造虚拟5元组。此操作根据用户配置的规则扩展得到完整的5元组的信息。规则中包含的部分直接拷贝到5元组的对应部分,其他几个用户规则中没有包含的部分,被设置为O。Rule4 的信息被扩展为 5 兀组(sip = O sport = O dip = O dport = 2000 proto=tcp,记为 FiveTuple4)第三部:对5元组的信息进行哈希,判断待删除规则所在哈希表的桶索引。具体使用的哈希算法同插入一致。通过计算,5元组FiveTuple4被哈希为bucket索引2。如图2所示第四步:在索引为2的桶下的链表中进行查找,找到5元组与FiveTuplM完全相同的那个节点,将其进行删除。3)数据包规则匹配数据包指的是网上传输的tcp或udp类型的包,它们包含5元组的所有信息。假设待查找包的 5 兀组为(sip = a.b.c.d sport = x dip = e.f.g.h dport = y proto =tcp)具体处理方式为:按照规则类别,构造对应的虚拟5元组。如图1所示规则总计有N类,故需要分别构造N个对应的虚拟5元组在N个哈希表中依次进行查找。如果在某一个哈希表中找到了匹配的规则,那么不需要继续搜索了。当所有N个哈希表都找一遍也没有找到,那么就表示没有匹配到规则。以类别O为例进行说明,其他类别的流程与此相同。类别O包含的元是源IP和目的IP。第一步:按照类别包含的元构造虚拟5元组。以类别O为例,类别O只需要源IP和目的IP的元,其他元则忽略,所以将待查数据包的5元组中其他的元(源端口、目的端口、协议)置零,构造新的虚拟5元组,其值为(sip = a.b.c.d sport = O dip = e.f.g.hdport = 0 proto = 0)。第二步:对虚拟5元组进行哈希,得到所在的桶的索引bucket_N。第三步:搜索匹配规则。在索引为bucket_N的桶下的链表中进行查找。遍历整个链表,当某个节点的5元组信息与虚拟5元组完全相同时,即为匹配了这个节点对应的规则。第四步:如果前三步没有找到匹配的节点,那么就进行下一个规则类别的搜索。重复iu 二步的流程。与现有技术相比,本发明的优点和积极效果本发明通过对多核板卡对数据包的处理流程进行优化,提高其对规则的匹配效率,大幅提高其支持的规则的数量。通过在公司生产的多核板卡上应用,支持的规则数量达到百万级,但性能方面没有下降。


图1为控制规则分类结果图;图2为分类结果哈希表状态维护图;图3为本发明方法流程图。
具体实施例方式图3显示的是本发明的数据输入和输出流程图。本方法即是在ACL处理模块中的改进。实现步骤分几步:I模块中增加一个指针数组,分别用于保存N个哈希表的指针2创建Hash表,具体HASH表的组织方式可以随意,单向链表还是双向本专利没有具体要求。3建立一个节点,里面保存规则胡内容,然后按照规则胡类别将该节点插入到哈希表的某个桶下的链表中。4数据包的匹配也是按照类别分别处理的。5具体分类和插入,删除,查找方法在技术方案中有描述。6当匹配了某节点中的规则后,根据这条规则的动作指示,来决定数据包的丢弃或放行,以及输出到多核板卡的哪个输出端口。7与多核板卡输出端口相连接的数据处理服务器即可对数据进行处理。8板卡通过配置无用数据的丢弃规则,降低了后端数据处理的压力。
权利要求
1.一种多核板卡ACL规则匹配方法,其步骤为: 1)根据五元组(源IP,目的IP,源端口,目的端口,协议类别)将多核板卡中的ACL规则分为N类;每一类规则包括五元组中的一个或几个元素;其中,N为自然数; 2)提取待查找数据包所包含的五元组信息,利用所提取的信息构造某一类别规则的虚拟五元组;其中,所述虚拟五元组中,该类别规则未包含元素的元素值设为O ; 3)利用构造的虚拟五元组在该类别对应的哈希表中查找包含的ACL规则与虚拟五元组匹配的节点;如果没有找到匹配的节点,则利用所提取的信息构造另一类别规则的虚拟五元组,然后在该类别对应的哈希表中查找匹配的节点;如果每一类别规则均没有该数据包的匹配规则节点,则结束匹配。
2.如权利要求1所述的方法,其特征在于将划分后每一类别的ACL规则使用一hash表记录,哈希表下挂的链表节点存储此类别的ACL规则;然后使用一指针数组Array [N]保存指向N个哈希表的指针。
3.如权利要求2所述的方法,其特征在于所述hash表为单向链表或双向链表。
4.如权利要求2或3所述的方法,其特征在于对所述虚拟五元组进行哈希,得到所述虚拟五元组对应类别规则所在桶的索引号,然后遍历该索引号对应桶的链表,当某个节点的5元组信息与虚拟5元组相同时,即为匹配的规则节点。
5.如权利要求1或2或3所述的方法,其特征在于所述数据包为tcp数据包或udp数据包。
6.如权利要求1或2或3所述的方法,其特征在于所述多核板卡中设置一丢弃规则,用于将没有匹配规则的数据包丢弃。
7.如权利要求2或3所述的方法,其特征在于所述多核板卡对新输入的ACL规则按照划分的类别进行存储,其方法为: 1)根据新输入规则所包含的五元组信息,确定该规则插入的hash表; 2)添加新输入规则中未包含的五元组元素,并将其值设为O,将该新输入的规则构造为虚拟五元组; 3)对构造的虚拟五元组信息进行哈希,将其插入到对应桶的链表中。
8.如权利要求7所述的方法,其特征在在于,如果新输入的ACL规则与所述多核板卡中已存储的节点包含相同的规则,则拒绝存储该新输入的ACL规则。
9.如权利要求2或3所述的方法,其特征在于所述多核板卡进行规则删除的方法为: 1)根据输入的部分五元组信息,确定待删除规则的类别,查找该类别的hash表; 2)补充未输入的五元组元素,并将其值设为O,构造虚拟五元组; 3)对虚拟五元组信息进行哈希,确定待删除规则所在hash表的所在桶; 4)在所确定的桶中查找匹配的节点,将其删除。
全文摘要
本发明公开了一种多核板卡ACL规则匹配方法,属于网络安全行业的数据分流和过滤领域。本方法为1)根据五元组将多核板卡中的ACL规则分为N类;每一类规则包括五元组中的一个或几个元素;2)提取待查找数据包所包含的五元组信息,利用所提取的信息构造某一类别规则的虚拟五元组;3)利用构造的虚拟五元组在该类别对应的ACL规则节点中查找匹配的规则节点;如果没有找到匹配的规则节点,则利用所提取的信息构造另一类别规则的虚拟五元组,然后在该类别对应的ACL规则节点中查找匹配的规则节点;如果每一类别规则均没有该数据包的匹配规则节点,则结束匹配。本方法可大幅提高多核板卡支持的规则的数量。
文档编号H04L29/06GK103188231SQ20111045383
公开日2013年7月3日 申请日期2011年12月30日 优先权日2011年12月30日
发明者樊景亮 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1