一种报文查找键值的生成方法及装置与流程

文档序号:16588644发布日期:2019-01-14 18:54阅读:190来源:国知局
一种报文查找键值的生成方法及装置与流程

本发明涉及计算机网络技术领域,尤其是涉及一种报文查找键值的方法及装置。



背景技术:

网络规模的扩大和流量的增加,对网络安全的控制和对带宽的分配成为网络管理的重要内容。通过对报文进行过滤可以有效防止非法用户对网络的访问,同时也可以控制流量,节约网络资源。acl(accesscontrollist,访问控制列表)常用于对报文进行过滤,其是一个有序的规则集,通过这些规则实现对报文的过滤。当设备的端口接收到报文后,当前端口根据应用的acl规则对报文进行分析,根据预设的规则允许或禁止报文通过,acl可通过报文的源地址、目的地址、端口号等对报文进行过滤。

tcam(ternarycontentaddressablememory,三态内容寻址存储器)常用于快速查找acl、路由等表项。在实际部署使用中,由于无法获知最终用户的配置组合,通常只能将acl的查找键值(key)分为160bit、320bit和640bit三类,而在实际部署使用中,真正需要匹配的字段信息,对于唯一的查找键值来说其实很少,如大多数应用只需要ipv4源地址,由于ipv4源地址只有32bit,所以宽度为80bit的tcam已经足够了,而使用160bit的key,则造成tcam资源的浪费。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种使tcam应用于acl时可高效利用tcam资源的报文查找键值的生成方法及装置。

为实现上述目的,本发明提出如下技术方案:一种报文查找键值的生成方法,包括如下步骤:

s100,对接收的报文进行解析获得若干个字段,并将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组和第五字段组;

s200,根据所述报文携带的转发信息查找tcam,获得用于在第一字段组中选择若干个字段的第一选择器、用于在第二字段组中选择若干个字段的第二选择器、用于在第三字段组中选择若干个字段的第三选择器、用于在第四字段组中选择若干个字段的第四选择器和用于在第五字段组中选择若干个字段的第五选择器;

s300,使用步骤s200获得的选择器在相应的字段组中选择字段,并将第一选择器选择的字段拼接形成第一键值,将第二选择器选择的字段拼接形成第二键值,将第三选择器选择的字段拼接形成第三键值,将第四选择器选择的字段拼接形成第四键值,将第五选择器选择的字段拼接形成第五键值;

s400,将第二键值、第一键值按顺序拼接形成第六键值,将第五键值、第四键值和第三键值按顺序拼接形成第七键值;

s500,将所述第六键值拆分成m个16比特,并使用预设的第六选择器在所述m个16比特中选择n个拼接形成第八键值,n小于或等于m,n、m为整数;

s600,将所述第八键值拆分成第九键值和第十键值;

s700,将所述第七键值和第九键值拼接形成第十一键值,并使用预设的第七选择器、第八选择器和第九选择器在所述第十一键值中分别选择若干个1比特、2比特和4比特按顺序拼接形成第十二键值;

s800,将所述第十二键值和第十键值按顺序拼接形成报文查找键值。

优选地,在步骤s100中,根据每个字段所占据的比特位对所述若干个字段进行分组。

优选地,所述第一字段组中每个字段占32个比特位,所述第二字段组中每个字段占16个比特位,所述第三字段组中每个字段占8个比特位,所述第四字段组中每个字段占4个比特位,所述第五字段组中每个字段占2个比特位。

优选地,在步骤s200中,所述报文携带的信息选自报文入口端口号、报文出口端口号、逻辑源端口号、逻辑目的端口号、报文类型等转发信息中的一种或几种。

优选地,在步骤s600中,所述第八键值的高p位比特为第九键值,所述第八键值的低q位比特为第十键值,p、q为整数。

本发明还揭示了一种报文查找键值的生成装置,包括

报文解析分组模块,用于对接收的报文进行解析获得若干个字段,并将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组和第五字段组;

选择器获取模块,用于根据所述报文携带的转发信息查找tcam,获得用于在第一字段组中选择若干个字段的第一选择器、用于在第二字段组中选择若干个字段的第二选择器、用于在第三字段组中选择若干个字段的第三选择器、用于在第四字段组中选择若干个字段的第四选择器和用于在第五字段组中选择若干个字段的第五选择器;

第一拼接模块,用于使用获得的选择器在相应的字段组中选择字段,并将第一选择器选择的字段拼接形成第一键值,将第二选择器选择的字段拼接形成第二键值,将第三选择器选择的字段拼接形成第三键值,将第四选择器选择的字段拼接形成第四键值,将第五选择器选择的字段拼接形成第五键值;

第二拼接模块,用于将第二键值、第一键值按顺序拼接形成第六键值,将第五键值、第四键值和第三键值按顺序拼接形成第七键值

第一拆分模块,用于将所述第六键值拆分成m个16比特,并使用预设的第六选择器在所述m个16比特中选择n个拼接形成第八键值,n小于或等于m,n、m为整数;

第二拆分模块,用于将所述第八键值拆分成第九键值和第十键值;

第三拼接模块,用于将所述第七键值和第九键值拼接形成第十一键值,并使用预设的第七选择器、第八选择器和第九选择器在所述第十一键值中分别选择若干个1比特、2比特和4比特按顺序拼接形成第十二键值;

第四拼接模块,用于将所述第十二键值和第十键值按顺序拼接形成报文查找键值。

优选地,所述报文解析分组模块包括解析模块和分组模块,所述解析模块用于对接收的报文进行解析获得若干个字段,所述分组模块用于将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组和第五字段组。

优选地,所述分组模块根据每个字段所占据的比特位数量进行分组。

优选地,所述第一字段组中的每个字段均占据32个比特位,所述第二字段组中的每个字段均占据16个比特位,所述第三字段组中每个字段均占据8个比特位,所述第四字段组中的每个字段均占据4个比特位,所述第五字段组中的每个字段均占据2个比特位。

优选地,所述第二拆分模块将所述第八键值拆分成高p位比特和低q位比特,所述高p位比特为第九键值,p、q为整数。

本发明的有益效果是:

本发明所述的一种报文查找键值的生成方法及装置,使tcam应用于acl时,可高效的利用tcam资源,同时还可避免asic设计中出现后端设计无法收敛的情况。

附图说明

图1是本发明的方法流程图示意图;

图2是本发明的实施例原理图示意图;

图3是本发明的结构框图示意图。

具体实施方式

下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。

本发明所揭示的一种报文查找键值的生成方法,使tcam(ternarycontentaddressablememory,三态内容寻址存储器)应用于acl(accesscontrollist,访问控制列表)时,可高效的利用tcam资源,同时还可避免asic设计中出现后端设计无法收敛的情况。

如图1所示,一种报文查找键值的生成方法,包括如下步骤:

s100,对接收到的报文进行解析获得若干个字段,将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组、第五字段组;

具体地,报文是网络中交换与传输的数据单元,报文在传输过程中不断地封装成分组、包、帧来传输,最终使得报文中包含二层、三层等信息,二层信息包括mac源地址、mac目的地址、以太网类型、vlan等,三层信息包括ip源地址、ip目的地址等等。以ip报文为例,ip报文由首部和数据部分组成,其中,ip报文的首部包括源地址字段、目的地址字段、首部校验和字段、协议字段等等,每个字段均占据一定的比特位,如源地址字段和目的地址字段均占据32个比特位,首部校验和字段占据16个比特位、协议字段占据8个比特位。

实施时,通过对接收到的报文进行解析可获得二层、三层等信息中包含的若干个字段,进一步可根据每个字段所占据的比特位将报文分为若干个组。本实施例中,根据每个字段所占据的比特位将报文分成五个分组,即第一字段组、第二字段组、第三字段组、第四字段组和第五字段组,其中,第一字段组中的每个字段均占据32个比特位,第二字段组中的每个字段均占据16个比特位,第三字段组中每个字段均占据8个比特位,第四字段组中的每个字段均占据4个比特位,第五字段组中的每个字段均占据2个比特位。当然,实施时,也可以将占据1个比特位的字段分为一组。

步骤200,根据所述报文携带的转发信息查找tcam,获得用于在第一字段组中选择若干个字段的第一选择器、用于在第二字段组中选择若干个字段的第二选择器、用于在第三字段组中选择若干个字段的第三选择器、用于在第四字段组中选择若干个字段的第四选择器和用于在第五字段组中选择若干个字段的第五选择器;

具体地,tcam中存储了用于在各个字段组中选择字段数量的选择器条目,实施时,根据报文转发信息在tcam中查找即可获得相应字段组对应的选择器,选择器可根据用户需求配置。进一步根据报文携带的转发信息在tcam中查找后可获得在第一字段组中选择若干个字段的第一选择器、在第二字段组中选择若干个字段的第二选择器、在第三字段组中选择若干个字段的第三选择器、在第四字段组中选择若干个字段的第四选择器和在第五字段组中选择若干个字段的第五选择器。具体实施时,以第一选择器在第一字段组中选择4个字段、第二选择器在第二字段组中选择10个字段、第三选择器在第三字段组中选择8个字段、第四选择器在第四字段组选择10个字段、第五选择器在第五字段组中选择8个字段为最佳。

本实施例中,报文转发信息包括但不限于报文入口端口号(srcport)、报文出口端口号(dstport)、逻辑源端口号(logicsrcport)、逻辑目的端口号(logicdstprot)、报文类型(packettype)。

步骤s300,使用步骤s200获得的选择器在相应的字段组中选择字段,并将第一选择器选择的字段拼接形成第一键值,将第二选择器选择的字段拼接形成第二键值,将第三选择器选择的字段拼接形成第三键值,将第四选择器选择的字段拼接形成第四键值,将第五选择器选择的字段拼接形成第五键值;

具体地,步骤s200通过查找tcam获得每个字段组所对应的选择器,每个选择器标示了在相应字段组中选择字段的数量,如上所述的第一字段组中选择4个字段、在第二字段组中选择10个字段、在第三字段组中选择8个字段、在第四字段组选择10个字段、在第五字段组中选择8个字段。

使用选择器从相应的字段组中选择所需数量的字段后,将选择的字段拼接形成相应的键值,如将第一字段组中选择的4个字段拼接形成128bit的第一键值,将第二字段组中选择的10个字段拼接形成160bit的第二键值,将第三字段组中选择的8个字段拼接形成64bit的第三键值,将第四字段组中选择的10个字段拼接形成40bit的第四键值,将第五字段组中选择的8个字段拼接形成16bit的第五键值。

步骤s400,将第二键值、第一键值按顺序拼接形成第六键值,将第五键值、第四键值和第三键值按顺序拼接形成第七键值;

步骤s500,将所述第六键值拆分成m个16比特,并使用预设的第六选择器在所述m个16比特中选择n个拼接形成第八键值,n小于等于m,n、m均为整数;

步骤s600,将所述第八键值拆分成第九键值和第十键值,其中,所述第九键值为第八键值的高p位比特,所述第十键值为第八键值的低q位比特,p、q为整数;

步骤s700,将所述第七键值和第九键值拼接形成第十一键值,并使用预设的第七选择器、第八选择器和第九选择器在所述第十一键值中分别选择若干个1比特、2比特和4比特按顺序拼接形成第十二键值;

步骤s800,将所述第十二键值和第十键值按顺序拼接形成报文查找键值。

具体地,实施时,首先将第二键值、第一键值按顺序拼接形成第六键值,将第五键值、第四键值和第三键值按顺序拼接形成第七键值,如160bit的第二键值和128bit的第一键值按顺序拼接形成288bit的第六键值,将16bit的第五键值、40bit的第四键值和64bit的第三键值按顺序拼接形成120bit的第七键值;

其次,将第六键值拆分成m个16bit,并使用预设的第六选择器在m个16比特中选择n个拼接形成第八键值,如将288bit的第六键值拆分成18个16bit,并通过第六选择器选择10个16bit拼接形成160bit的第八键值;

再其次,将第八键值拆分成第九键值和第十键值,并将第七键值和第九键值按顺序拼接形成第十一键值,并使用预设的第七选择器、第八选择器和第九选择器在第十一键值中选择若干个1bit、若干个2bit和若干个4bit,并按顺序拼接形成第十二键值。本实施例中,第九键值为第八键值的高p位比特,第十键值为第八键值的低q位比特,p、q为整数。如将160bit的第八键值拆分成高96bit的第九键值和低64bit的第十键值,并将120bit的第七键值和96bit的第九键值拼接形成216bit的第十一键值,通过预设的第七选择器在第十一键值中选择2个1bit,第八选择器选择5个2bit,第九选择器选择21个4bit,将2个1bit、5个2bit、21个4bit拼接形成96bit的第十二键值;最后,将第十二键值和第十键值按顺序拼接形成最终的报文查找键值,如将上述96bit的第十二键值和64bit的第十键值拼接形成160bit的报文查找键值(key)。

如图2所示,本实施例中,以用于acl的160bit的key为例,对本发明所述的报文查找键值生成方法进行详细的说明。

首先,对报文解析得到的字段按照每个字段所占据的比特位进行分组,共分为5组,即第一字段组(32bit)、第二字段组(16bit)、第三字段组(8bit)、第四字段组(4bit)、第五字段组(2bit)。

其次,根据报文的转发信息查找tcam,获得第一选择器、第二选择器、第三选择器、第四选择器和第五选择器,其中,第一选择器在第一字段组中选择4个字段,第二选择器在第二字段组中选择10个字段,第三选择器在第三字段组中选择8个字段,第四选择器在第四字段组中选择10个字段,第五选择器在第五字段组中选择8个字段。

其次,将第一字段组中选择的4个字段拼接形成128bit的第一键值,将第二字段组中选择的10个字段拼接形成160bit的第二键值,将第三字段组中选择的8个字段拼接形成64bit的第三键值,将第四字段组中选择的10个字段拼接形成40bit的第四键值,将第五字段组中选择的8个字段拼接形成16bit的第五键值。

其次,将160bit的第二键值和128bit的第一键值按顺序拼接形成288bit的第六键值,将16bit的第五键值、40bit的第四键值和64bit的第三键值拼接形成120bit的第七键值;

其次,将第六键值拆分成18个16bit,并使用预设的第六选择器选择10个16bit,最终拼接形成160bit的第八键值;

其次,将第八键值拆分成两部分,高96bit为第九键值,低64bit为第十键值,将第七键值和第九键值按顺序拼接形成216bit的第十一键值;

其次,使用预设的第七选择器在第十一键值中选择2个1bit,第八选择器在第十一键值中选择5个2bit,第九选择器在第十一键值中选择选择21个4bit,将2个1bit、5个2bit、21个4bit拼接形成96bit的第十二键值;

最后,将96bit的第十二键值和64bit的第十键值拼接形成160bit的报文查找键值。

如图3所示,本发明还揭示了一种报文查找键值生成装置,包括

报文解析分组模块,用于对接收的报文进行解析获得若干个字段,并将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组和第五字段组;

选择器获取模块,用于根据所述报文携带的转发信息查找tcam,获得用于在第一字段组中选择若干个字段的第一选择器、用于在第二字段组中选择若干个字段的第二选择器、用于在第三字段组中选择若干个字段的第三选择器、用于在第四字段组中选择若干个字段的第四选择器和用于在第五字段组中选择若干个字段的第五选择器;

第一拼接模块,用于使用获得的选择器在相应的字段组中选择字段并将第一选择器选择的字段拼接形成第一键值,将第二选择器选择的字段拼接形成第二键值,将第三选择器选择的字段拼接形成第三键值,将第四选择器选择的字段拼接形成第四键值,将第五选择器选择的字段拼接形成第五键值;

第二拼接模块,用于将第二键值、第一键值按顺序拼接形成第六键值,将第五键值、第四键值和第三键值按顺序拼接形成第七键值;

第一拆分模块,用于将所述第六键值拆分成m个16比特,并使用预设的第六选择器在所述m个16比特中选择n个拼接形成第八键值;

第二拆分模块,用于将所述第八键值拆分成第九键值和第十键值;

第三拼接模块,用于将所述第七键值和第九键值拼接形成第十一键值,并使用预设的第七选择器、第八选择器和第九选择器在所述第十一键值中分别选择若干个1比特、2比特和4比特按顺序拼接形成第十二键值;

第四拼接模块,用于将所述第十二键值和第十键值按顺序拼接形成报文查找键值。

具体地,报文接收模块包括解析模块和分组模块,解析模块用于对接收的报文进行解析获得若干个字段;分组模块用于将所述若干个字段至少分成第一字段组、第二字段组、第三字段组、第四字段组和第五字段组。实施时,分组模块根据每个字段所占据的比特位数量进行分组,如将均是32bit的字段分为一组等等。

本实施例中,第一字段组中的每个字段均占据32个比特位,第二字段组中的每个字段均占据16个比特位,第三字段组中每个字段均占据8个比特位,第四字段组中的每个字段均占据4个比特位,第五字段组中的每个字段均占据2个比特位。

进一步地,选择器获取模块根据报文的转发信息查找tcam时,报文的转发信息包括但不限于报文入口端口号(srcport)、报文出口端口号(dstport)、逻辑源端口号(logicsrcport)、逻辑目的端口号(logicdstprot)、报文类型(packettype)。

进一步地,第二拆分模块将所述第八键值拆分成高p位比特和低q位比特,所述高p位比特为第九键值,所述低q位比特为第十键值,p、q为整数。

本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1