一种报文特征的匹配方法及装置
技术领域
本发明涉及网络技术,尤其涉及一种报文特征的匹配方法及装置。
背景技术
互联网的发展使得网络设备的应用越来越广泛。现今的网络设备不仅仅需要进行报文的二三层转发,而且还需要对报文进行诸如Qos以及安全等应用处理。这些新的特性的引入对报文的各种ACL匹配功能需求尤为明显,在现今使用的大部分网络设备中,ACL技术已经很成熟。一般的ACL查找匹配工作多数采用三态内容寻址存储器TCAM(Ternary Content-AddressableMemory)来完成,以减少对性能的影响。目前主流的TCAM的位宽一般可配置为72比特、144比特、288比特以及576比特四种中的任意一种。目前针对IPv4报文五元组(源/目的IP,源/目的端口以及协议类型)ACL匹配通常使用144比特已经足够了。但是随着网络的发展,IPv4已经无法满足海量IP地址的需求,于是IPv6适用需要就显得尤为迫切,针对IPv6报文的ACL匹配同样也成为各种网络设备需要支持的功能。
IPv4五元组由32位源IP、32位目的IP、16位源port、16位目的port以及8位协议号组成,总计104比特,这样TCAM选择144比特位宽就可以支持,一般的网络设备都能达到良好的匹配性能。而IPV6的五元组由128位源IP、128位目的IP、16位源port、16位目的port、8位协议号组成,总计296比特,这样TCAM就必须选择576比特位宽,相当于匹配每个IPv6报文的性能比IPv4降低了4倍,并且容量下降为之前的四分之一。
另外,由于每个表项会导致浪费576-296=280位TCAM的位宽,浪费更多的规则匹配表项,成本较高;同时由于位宽占用较多,导致每个报文的查找性能下降严重。
发明内容
有鉴于此,本发明提供一种对报文特征匹配的装置,其应用于网络设备中,该装置包括:
特征提取单元,用于从网络设备接收到的报文中提取预定的报文特征;
特征压缩单元,用于将报文特征进行压缩;
TCAM单元,用于根据压缩后的报文特征查找报文在预定访问控制表项中的匹配结果,并输出所述匹配结果。
优选地,还包括:
报文处理单元,用于根据所述匹配结果对报文进行相应处理。
优选地,所述报文为IPV6报文,所述报文特征为报文五元组,所述五元组包括源IP地址、目的IP地址、源端口、目的端口以及协议类型。
优选地,特征压缩单元执行的压缩过程为:将五元组中的协议类型字段写入源IP地址及目的IP地址的高位字段中,然后将修改后的源IP地址、修改后目的IP地址、源端口以及目的端口作为压缩后的五元组提交给TCAM单元。
优选地,所述高位字段为源IP地址的前3比特以及目的IP地址的前3比特,所述协议类型字段长度为8比特,所述特征压缩单元,进一步根据预先设定的映射表,将所述长度为8比特的协议类型映射为6比特的协议类型,然后再写入所述源/目的IP地址的前3比特。
优选地,还包括报文分类单元,用于判断报文是IPv6报文还是Ipv4报文,对于Ipv6报文将其提交给特征压缩单元处理,对于IPv4报文则将其提交给TCAM单元处理。
本发明还一种对报文特征匹配的方法,其应用于网络设备中,该方法包括:
A、从网络设备接收到的报文中提取预定的报文特征;
B、将报文特征进行压缩;
C、用于根据压缩后的报文特征查找报文在预定访问控制表项中的匹配结果,并输出所述匹配结果。
优选地,还包括:
D、根据所述匹配结果对报文进行相应处理。
优选地,所述报文为IPV6报文,所述报文特征为报文五元组,所述五元组包括源IP地址、目的IP地址、源端口、目的端口以及协议类型。
优选地,所述压缩过程为:将五元组中的协议类型字段写入源IP地址及目的IP地址的高位字段中,然后将修改后的源IP地址、修改后目的IP地址、源端口以及目的端口作为压缩后的五元组提交给TCAM单元。
优选地,所述高位字段为源IP地址的前3比特以及目的IP地址的前3比特,所述协议类型字段长度为8比特,所述特征压缩单元,进一步根据预先设定的映射表,将所述长度为8比特的协议类型映射为6比特的协议类型,然后再写入所述源/目的IP地址的前3比特。
优选地,还包括:
E、判断报文是IPv6报文还是Ipv4报文,对于Ipv6报文转步骤B,对于IPv4报文转步骤C。
本发明可以有效节省TCAM资源,充分利用了TCAM的容量,将其性能发挥到最大限度,同时减少了每个IPv6报文TCAM的查找性能损耗。
附图说明
图1是本发明一种实施方式的流程图。
图2是本发明一种实施方式的逻辑原理图。
图3是本发明ACL表象的组织结构图。
具体实施方式
针对现有技术的问题,常见的设计思路是调整TCAM规格,然而这样新的设计会引发成本的上升。本发明另辟蹊径,从五元组本身着手,使得其能够最大限度适配到已有的TCAM配置规格,最大限度地利用TCAM的性能。
在较佳的实施方式中,本发明可以通过逻辑器件技术(比如FPGA等)来实现,请参考图1以及图2,本发明报文压缩装置包括:特征提取单元、特征压缩单元、TCAM单元、报文分类单元以及报文处理单元,其基本的处理流程如下。
步骤101,从网络设备接收到的报文中提取预定的报文特征。本步骤由特征提取单元执行。
以IP报文为例,网络设备会对自己接收到的报文进行ACL(访问控制列表)匹配,而匹配的对象通常是报文特征,最为常见的有报文的三元组以及五元组。以下以五元组(源IP地址、目的IP地址、源端口、目的端口以及协议类型)为例进行讲解。报文特征的提取在现有技术中已经有广泛的教导,在此不再一一细述。
步骤102,将报文特征进行压缩。本步骤由报文压缩单元处理。
如背景技术提到的那样,一个IPv6报文的五元组共占据了296个比特,其比TCAM最接近的288个比特的位宽规格大8个比特。本发明通过压缩的方法将五元组的296个比特压缩为288个比特,使得TCAM能够处理经过压缩的五元组。
考虑到,协议类型这个字段共占据8个比特,本发明一种较佳的实施方式是将这个8个比特压缩掉。一种方式是,从五元组的源和目的IP地址的高位比特中选取出8个比特,然后将协议类型写入这8个比特。因为IP地址的高位特别(高64位)中有一些比特对于一些实际应用来说通常是固定的,因而可以加以利用。
进一步来说,由于修改IP地址,其可能导致出错,虽然其可能性比较低。但为了稳妥起见,可以对高位比特的选择加以限制。考虑到全局IPv6单播地址的最高3位为001,在现网绝大部分应用中IPv6地址的高3比特一般不会变化,因此可以仅仅利用IP地址的前3个比特,这样一来,修改IP地址出错的可能性微乎其微。
更进一步来说,源以及目的IP地址的前3个比特的总长度为6个比特,其小于协议类型字段长度8个比特。为了解决这个问题,有两种方法:第一种不做特别处理,使用6个比特来表达协议类型,因为IP协议字段现在只有100多种,常用的更少,一般都在64以内,因此6个比特完全可以胜任绝大部分的应用。第二种方式是设置一张映射表,如前所述的那样,虽然协议类型有8个比特,即256种可能,但实际上用到的一般不超过64种。映射表主要是将8个比特的协议类型映射为6个比特;比如说将协议类型为200(需要使用8个比特)映射到协议类型为63(仅需要6个比特)。
步骤103,根据报文特征查找报文在预定访问控制表项中的匹配结果,并输出所述匹配结果。本步骤由TCAM单元处理。
IPv6报文的五元组经过步骤102压缩以后其长度等于288比特,满足了TCAM单元的规格要求,可以送入TCAM单元进行表项的匹配。TCAM表项中一般存放有访问控制列表(ACL)的表项。请参考图3,其中示出了288位的ACL表项的组织形式。对ACL匹配后可以输出相应的匹配结果,其包括命中和未命中。针对匹配结果,网络设备可以用相应的处理,比如未命中的可以丢弃,命中的可以转发或者重定向或者上送软件处理。这些针对输出结果进行相应的处理在本发明是由报文处理单元执行。报文处理单元是一种泛指,即报文通过访问控制列表匹配后的各种可能的处理单元都可视为报文处理单元。由于报文的后续是很常见的现有技术,本发明不再一一细述。
步骤104,在对报文特征压缩之前,还可以进一步判断报文是IPv6报文还是Ipv4报文,如果是Ipv6报文则转步骤102将其提交给特征压缩单元处理,对于IPv4报文则转步骤103,将其报文特征提交给TCAM单元处理。本步骤又报文分类单元处理。考虑到现有的网络中会同时存在IPv4以及IPv6两种版本的IP报文,并且考虑到这种情况将在很长一段时间内持续存在,本发明可以针对两者做区分处理,步骤104作为一个可选步骤可进一步提升本发明的实用性。IP报文版本的识别属于常见的技术,不需要详述。
本发明通过对报文特征的巧妙压缩设计,在最大限度上利用了TCAM性能的极限,避免了TCAM处理资源的浪费,并且成本比较低。
以上所描述的仅仅是本发明较佳的实现方式,并不用以限定本发明的保护范围,任何等同的变化和修改皆应涵盖在本发明的保护范围之内。