CN104901947A - 一种基于tcam连续数值匹配方法和装置 - Google Patents
一种基于tcam连续数值匹配方法和装置 Download PDFInfo
- Publication number
- CN104901947A CN104901947A CN201510172733.8A CN201510172733A CN104901947A CN 104901947 A CN104901947 A CN 104901947A CN 201510172733 A CN201510172733 A CN 201510172733A CN 104901947 A CN104901947 A CN 104901947A
- Authority
- CN
- China
- Prior art keywords
- coding
- state
- tri
- bit section
- numerical value
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0015—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
- H04L1/0016—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy involving special memory structures, e.g. look-up tables
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供一种基于TCAM连续数值匹配方法和装置,该方法包括:根据分界点数值将连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段;对于符合预设三态编码规则的两个端点数值,将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,对每个比特段进行三态编码,生成该数值段的三态内容寻址内存器记录;对待匹配数值进行与数据段相同形式的三态编码,生成待匹配数值的三态内容寻址内存器记录,将待匹配数值的三态内容寻址内存器记录和数值段的三态内容寻址内存器记录进行匹配。
Description
技术领域
本发明涉及数据包处理技术领域,特别涉及一种基于TCAM连续数值匹配方法和装置。
背景技术
高速数据包分类算法,在很多的网络应用领域中,变得越来越重要,例如,网络安全应用、QoS服务过滤和网络负载均衡应用等。为了进行高速包分类,网络设备通常采用分类数据库,其中包含多条ACL(Access Control List,访问控制列表),每一条ACL可能由多条用于输入或者输出数据流的规则组成。
ACL规则的数目在逐渐增多,可能要求上百万的规则;对ACL规则的搜索速度也要求越来越高,要求达到每秒上百万次的搜索能力。为满足这些要求,有很多的基于RAM的高速数据包分类算法,例如,RFC算法、HyperCuts算法等。然而,对于各种高速数据包分类算法来说,毫无疑问地以基于TCAM的高速数据包分类算法的搜索速度最快。
CAM的英文全称为Content Addressable Memory,即内容寻址内存。与普通的SRAM、DDR等内存不同:普通内存通过输入地址得到数据;而CAM相反,通过输入数据得到数据所在的地址。TCAM(即Ternary CAM)为三态CAM,不仅可以匹配二进制数“0”和“1”,还可以通过掩码匹配任意值,也称为可匹配“X”。CAM的数据宽度通常可配置,如9字节、18字节、36字节或72字节等。
高速数据包的分类过程中需要对连续数值规则进行匹配,连续数值规则是指对于某个匹配的域指定一个连续数值区域,例如以太网数据包的TCP端口连续数值为80~8000,然而使用TCAM直接进行匹配连续数值规则时,一条连续数值规则往往需要多条TCAM表项才能存储,特别是当一条连续数值规则中有多个连续数值区域时,需要更多的TCAM表项才能存储,使得TCAM存储的连续数值规则条数有限,使得降低了TCAM的利用率。
发明内容
本发明实施例提供了一种基于TCAM连续数值匹配方法,以提高内容寻址内存器的利用率。该方法包括:在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器中;将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述三态内容寻址内存器中和数值段的三态内容寻址内存器记录进行匹配。
在一个实施例中,所述预设三态编码规则是将两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,对每个比特段的二进制编码对应的十进制数值进行三态编码,所述两个端点数值中一个端点数值的第i个比特段的三态编码与另一个端点数值的第i个比特段的三态编码不相同,且第i个比特段之前的比特段的三态编码对应相同,i是指一个比特段在多个比特段中的序数,第i个比特段之前是指由i至序数减小的方向。
在一个实施例中,在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,包括:将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成内容寻址内存器记录。
在一个实施例中,每个比特段的比特位数小于等于4。
本发明实施例还提供了一种基于TCAM连续数值匹配装置,以提高内容寻址内存器的利用率。该装置包括:数值划分模块,用于在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;三态编码模块,用于对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器中;匹配模块,用于将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述三态内容寻址内存器中和数值段的三态内容寻址内存器记录进行匹配。
在一个实施例中,所述预设三态编码规则是将两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,对每个比特段的二进制编码对应的十进制数值进行三态编码,所述两个端点数值中一个端点数值的第i个比特段的三态编码与另一个端点数值的第i个比特段的三态编码不相同,且第i个比特段之前的比特段的三态编码对应相同,i是指一个比特段在多个比特段中的序数,第i个比特段之前是指由i至序数减小的方向。
在一个实施例中,所述数值划分模块,包括:比特段划分单元,用于将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;比较单元,用于按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;第一分界点数值确定单元,用于对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;第二分界点数值确定单元,用于对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;数值划分单元,用于根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成内容寻址内存器记录。
在一个实施例中,每个比特段的比特位数小于等于4。
在本发明实施例中,通过将连续数值区域划分为多个数值段,并分别对多个数值段进行三态编码,来实现对连续数值区域进行三态编码,实现了以更多的TCAM记录来换取更小的编码位宽,使得有利于充分利用三态内容寻址内存器中表项的空闲比特,可以存储更多的连续数值区域编码,再通过将编码后的待匹配数值输入到所述三态内容寻址内存器中与三态内容寻址内存器记录进行匹配,在确保容寻址内存器快速搜索速度的同时,还可以提高内容寻址内存器的利用率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例提供的一种基于TCAM连续数值匹配方法的流程图;
图2是本发明实施例提供的一种基于TCAM连续数值匹配装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本发明实施例中,提供了一种基于TCAM连续数值匹配方法,如图1所示,该方法包括:
步骤101:在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;
步骤102:对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器TCAM中;
步骤103:将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述TCAM中和数值段的三态内容寻址内存器记录进行匹配。
由图1所示的流程可知,在本发明实施例中,通过将连续数值区域划分为多个数值段,并分别对多个数值段进行三态编码,来实现对连续数值区域进行三态编码,实现了以更多的TCAM记录来换取更小的编码位宽,使得有利于充分利用三态内容寻址内存器中表项的空闲比特,可以存储更多的连续数值区域编码,再通过将编码后的待匹配数值输入到所述三态内容寻址内存器中与三态内容寻址内存器记录进行匹配,在确保容寻址内存器快速搜索速度的同时,还可以提高内容寻址内存器的利用率。
具体实施时,为了使得直接对所述连续数值区域进行三态编码的结果与对多个数值段分别进行三态编码的结果等效,在本实施例中,所述预设三态编码规则是将两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,对每个比特段的二进制编码对应的十进制数值进行三态编码,所述两个端点数值中一个端点数值的第i个比特段的三态编码与另一个端点数值的第i个比特段的三态编码不相同,且第i个比特段之前的比特段的三态编码对应相同,i是指一个比特段在多个比特段中的序数,第i个比特段之前是指由i至序数减小的方向。
具体的,为了尽量减少编码位宽,上述比特段的比特位数小于等于4,例如,对于连续数值区域的位宽为16时,可以将16划分为7个比特段,各比特段的比特数分别是:3、3、2、2、2、2、2;还可以将16划分为5个比特段,各比特段的比特数分别是:3、3、4、2、4。具体的,基于通过TCAM的三态编码,可以将一个位宽为k的连续数值区域,编码为一条位宽为2k-1的TCAM记录。具体的编码方法如下表1所示:
表1
连续数值区域 | 编码 |
=i | 0{2k-i-1}1{i} |
>=i | x{2k-i-1}1{i} |
<i | 0{2k-i}x{i-1} |
[i,j] | 0{2k-i-j}x{j-i}1{i} |
其中,0{2k-i-1}表示有连续2k-i-1个0,1{i}表示有连续i个1,x{2k-i-1}表示有连续2k-i-1个x,其它表示方法类似;k为连续数值区域的比特宽度,i和j是连续数值区域中的任意数值。例如以端口号为例,宽度为16比特,则k的值为16。具体的,一个位宽为4的连续数值区域三态编码后变为15位,具体的编码结果如下表2所示:
表2
4位连续数值区域 | 15位编码 |
=7 | 000_0000_0111_1111 |
>=7 | xxx_xxxx_x111_1111 |
<7 | 000_0000_00xx_xxxx |
[7,10] | 000_0xxx_x1111_1111 |
在具体实施时,为了将连续数值区域划分为多个数值段,分别对数值段进行三态编码以减少编码位宽,在本实施例中,在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,包括:将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成三态内容寻址内存器记录。
具体的,以连续数值区域R=[12,241],宽度为8位为例,具体的划分数值段和数值匹配过程如下:
首先,位宽8的分段方式为2、3、3,分成3个比特段,则3个比特段的三态编码宽度分别为:3、7、7;
即将两个端点数值12和241的二进制编码位宽划分为比特段表示为:
s=12={00,001,100},其中,3个比特段分别为00、001和100;
e=241={11,110,001},其中,3个比特段分别为11、110和001;
对s和e的比特段分别进行三态编码,变为:
s’={000,0000001,0001111}
e’={111,0111111,0011111}
其次,按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,即对s’和e’的对应比特段编码进行比较,s’和e’对应的第1个比特段编码不相等,则将s’的第1个比特段对应的十进制数值加1后进行三态编码,第1个比特段之后的比特段的三态编码用掩码表示,即{001,xxxxxxx,xxxxxxx},该{001,xxxxxxx,xxxxxxx}还原为二进制编码后为{01,000,000},该{01,000,000}对应的十进制数为64,因此,64是两个分界点数值中较小的分界点数值,则将e’的第1个比特段对应的十进制数值减1后进行三态编码,第1个比特段之后的比特段的三态编码用掩码表示,即{011,xxxxxxx,xxxxxxx},该{011,xxxxxxx,xxxxxxx}还原为二进制编码后为{10,000,000},该{10,000,000}对应的十进制数为128,因此,128是两个分界点数值中较大的分界点数值,因此,上述连续数值区域R被分界点数值64和128划分为三个数值段,该三个数值段的三态编码形式如下:
R1=[{001,xxxxxxx,xxxxxxx},{011,xxxxxxx,xxxxxxx}]
R11=[{000,0000001,0001111},{000,1111111,1111111}]
R12=[{111,0000000,0000000},{000,0111111,0011111}]
R1即是两个分界点数值之间形成的数值段,可以编码为一条TCAM记录:
R1’={0x1,xxxxxxx,xxxxxxx}
进行第2次划分,R11可以分为如下两段:
R2s=[{000,0000011,xxxxxxx},{000,1111111,xxxxxxx}]
R21=[{000,0000001,0001111},{000,0000001,1111111}]
R2s可以编码为一条TCAM记录:
R2s’={000,xxxxx11,xxxxxxx}
R12可以分为如下两段:
R2e=[{111,0000000,xxxxxxx},{000,0011111,xxxxxxx}]
R22=[{111,0111111,0000000},{000,0111111,0011111}]
R2e可以编码为一条TCAM记录:
R2e’={111,00xxxxx,xxxxxxx}
进行第3次划分,由于已经是最后一次划分,直接对最后的R21和R22编码即可。
R21可以编码为一条TCAM记录:
R21’={000,0000001,xxx1111}
R22可以编码为一条TCAM记录:
R22’={000,0111111,00xxxxx}
分段编码完成,上述连续数值区域R的TCAM记录如下表3所示为:
表3
划分 | TCAM记录 |
R1 | {0x1,xxxxxxx,xxxxxxx} |
R2s | {000,xxxxx11,xxxxxxx} |
R2e | {111,00xxxxx,xxxxxxx} |
R21 | {000,0000001,xxx1111} |
R22 | {000,0111111,00xxxxx} |
最后,假设待匹配数值key=30,按照分段方式2、3、3对key的位宽比特进行分段:
Key=30={00,011,110}
对key的各个比特段进三态编码:
Key’={000,0000111,0111111}
将编码后的key送入TCAM表中进行匹配,匹配结果会命中连续数值区域R的TCAM记录中R2s的TCAM记录,因而匹配成功。即编码后的key与连续数值区域R的TCAM记录中任意一条记录匹配成功,即数值匹配成功。
基于同一发明构思,本发明实施例中还提供了一种基于TCAM连续数值匹配装置,如下面的实施例所述。由于基于TCAM连续数值匹配装置解决问题的原理与基于TCAM连续数值匹配方法相似,因此基于TCAM连续数值匹配装置的实施可以参见基于TCAM连续数值匹配方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是本发明实施例的基于TCAM连续数值匹配装置的一种结构框图,如图2所示,包括:数值划分模块201、三态编码模块202和匹配模块203,下面对该结构进行说明。
数值划分模块201,用于在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;
三态编码模块202,与数值划分模块201连接,用于对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器中;
匹配模块203,与三态编码模块202连接,用于将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述三态内容寻址内存器中和数值段的三态内容寻址内存器记录进行匹配。
在一个实施例中,所述数值划分模块201,包括:比特段划分单元,用于将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;比较单元,与比特段划分单元连接,用于按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;第一分界点数值确定单元,与比较单元连接,用于对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;第二分界点数值确定单元,与第一分界点数值确定单元连接,用于对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;数值划分单元,与第二分界点数值确定单元连接,用于根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成三态内容寻址内存器记录。
在一个实施例中,每个比特段的比特位数小于等于4。
在本发明实施例中,通过将连续数值区域划分为多个数值段,并分别对多个数值段进行三态编码,来实现对连续数值区域进行三态编码,实现了以更多的TCAM记录来换取更小的编码位宽,使得有利于充分利用三态内容寻址内存器中表项的空闲比特,可以存储更多的连续数值区域编码,再通过将编码后的待匹配数值输入到所述三态内容寻址内存器中与三态内容寻址内存器记录进行匹配,在确保容寻址内存器快速搜索速度的同时,还可以提高内容寻址内存器的利用率。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于TCAM连续数值匹配方法,其特征在于,包括:
在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;
对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器TCAM中;
将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述TCAM中和数值段的三态内容寻址内存器记录进行匹配。
2.如权利要求1所述的方法,其特征在于,所述预设三态编码规则是将两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,对每个比特段的二进制编码对应的十进制数值进行三态编码,所述两个端点数值中一个端点数值的第i个比特段的三态编码与另一个端点数值的第i个比特段的三态编码不相同,且第i个比特段之前的比特段的三态编码对应相同,i是指一个比特段在多个比特段中的序数,第i个比特段之前是指由i至序数减小的方向。
3.如权利要求2所述的方法,其特征在于,在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,包括:
将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;
按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;
对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;
对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;
根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成三态内容寻址内存器记录。
4.如权利要求1至3中任一项所述的方法,其特征在于,每个比特段的比特位数小于等于4。
5.一种基于TCAM连续数值匹配装置,其特征在于,包括:
数值划分模块,用于在连续数值区域内确定两个分界点数值,根据分界点数值将所述连续数值区域划分为三个数值段,在该三个数值段中至少有一个数值段的两个端点数值符合预设三态编码规则,在端点数值不符合预设三态编码规则的数值段内继续确定分界点数值进行数据分段,直到每个数值段的端点数值都符合预设三态编码规则,形成多个数值段,其中,所述预设三态编码规则使得对所述连续数值区域进行三态编码的结果与对所述连续数值区域划分的多个数值段分别进行三态编码后相加的结果等效;
三态编码模块,用于对于符合所述预设三态编码规则的两个端点数值,则将该两个端点数值之间的数值段中数值的二进制编码的宽度比特分别分成多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码,生成该两个端点数值之间的数值段的三态内容寻址内存器记录,并将形成的三态内容寻址内存器记录存入三态内容寻址内存器TCAM中;
匹配模块,用于将待匹配数值的二进制编码的宽度比特划分为所述多个比特段,对每个比特段的二进制编码对应的十进制数据进行三态编码,生成所述待匹配数值的三态内容寻址内存器记录,将所述待匹配数值的三态内容寻址内存器记录输入到所述TCAM中和数值段的三态内容寻址内存器记录进行匹配。
6.如权利要求5所述的装置,其特征在于,所述预设三态编码规则是将两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,对每个比特段的二进制编码对应的十进制数值进行三态编码,所述两个端点数值中一个端点数值的第i个比特段的三态编码与另一个端点数值的第i个比特段的三态编码不相同,且第i个比特段之前的比特段的三态编码对应相同,i是指一个比特段在多个比特段中的序数,第i个比特段之前是指由i至序数减小的方向。
7.如权利要求6所述的装置,其特征在于,所述数值划分模块,包括:
比特段划分单元,用于将所述连续数值区域的两个端点数值的二进制编码的宽度比特分别分成所述多个比特段,分别对每个比特段的二进制编码对应的十进制数据进行三态编码;
比较单元,用于按照比特位由高至低的顺序,对两个端点数值的多个比特段中序数对应的比特段的三态编码进行比较,找到三态编码不相同的第i个比特段,且第i个比特段之前的比特段的三态编码对应相同;
第一分界点数值确定单元,用于对于两个端点数值中较小的端点数值,将第i个比特段对应的十进制数值加1,对加1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较小的分界点数值;
第二分界点数值确定单元,用于对于两个端点数值中较大的端点数值,将第i个比特段对应的十进制数值减1,对减1后的十进制数值进行三态编码,将第i个比特段之后的比特段的三态编码均用掩码表示,将第i个比特段的三态编码和第i个比特段之前比特段的三态编码还原为二进制编码,将第i个比特段之后比特段的三态编码还原的二进制编码的0比特,将多个比特段的二进制编码相加得到一个二进制编码,确定该二进制编码对应的十进制数值为两个分界点数值中较大的分界点数值;
数值划分单元,用于根据确定的两个分界点数值将所述连续数值区域划分为三个数值段,其中,所述两个分界点数值符合预设三态编码规则,在所述三个数值段中允许对两个分界点数值之间形成的数据段进行三态编码,形成三态内容寻址内存器记录。
8.如权利要求5至7中任一项所述的装置,其特征在于,每个比特段的比特位数小于等于4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510172733.8A CN104901947B (zh) | 2015-04-13 | 2015-04-13 | 一种基于tcam连续数值匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510172733.8A CN104901947B (zh) | 2015-04-13 | 2015-04-13 | 一种基于tcam连续数值匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104901947A true CN104901947A (zh) | 2015-09-09 |
CN104901947B CN104901947B (zh) | 2017-11-24 |
Family
ID=54034344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510172733.8A Active CN104901947B (zh) | 2015-04-13 | 2015-04-13 | 一种基于tcam连续数值匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104901947B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287946A (zh) * | 2017-12-30 | 2018-07-17 | 盛科网络(苏州)有限公司 | 一种tcam查找方法及装置 |
CN112528094A (zh) * | 2020-12-04 | 2021-03-19 | 国网山东省电力公司信息通信公司 | 一种基于分层映射的多字段范围tcam编码方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070171911A1 (en) * | 2006-01-25 | 2007-07-26 | Yoon-Jin Ku | Routing system and method for managing rule entry thereof |
CN101035061A (zh) * | 2006-03-09 | 2007-09-12 | 中兴通讯股份有限公司 | 实现三重内容可寻址存储器范围匹配的分段编码扩展方法 |
CN102377654A (zh) * | 2010-08-17 | 2012-03-14 | 国基电子(上海)有限公司 | 路由器及在IPv4路由器上实现IPv6报文穿越的方法 |
CN102591958A (zh) * | 2011-12-29 | 2012-07-18 | 中国科学技术大学 | 基于tcam的确定性有穷状态自动机的匹配方法和装置 |
-
2015
- 2015-04-13 CN CN201510172733.8A patent/CN104901947B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070171911A1 (en) * | 2006-01-25 | 2007-07-26 | Yoon-Jin Ku | Routing system and method for managing rule entry thereof |
CN101035061A (zh) * | 2006-03-09 | 2007-09-12 | 中兴通讯股份有限公司 | 实现三重内容可寻址存储器范围匹配的分段编码扩展方法 |
CN102377654A (zh) * | 2010-08-17 | 2012-03-14 | 国基电子(上海)有限公司 | 路由器及在IPv4路由器上实现IPv6报文穿越的方法 |
CN102591958A (zh) * | 2011-12-29 | 2012-07-18 | 中国科学技术大学 | 基于tcam的确定性有穷状态自动机的匹配方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287946A (zh) * | 2017-12-30 | 2018-07-17 | 盛科网络(苏州)有限公司 | 一种tcam查找方法及装置 |
CN112528094A (zh) * | 2020-12-04 | 2021-03-19 | 国网山东省电力公司信息通信公司 | 一种基于分层映射的多字段范围tcam编码方法及系统 |
CN112528094B (zh) * | 2020-12-04 | 2022-08-16 | 国网山东省电力公司信息通信公司 | 一种基于分层映射的多字段范围tcam编码方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104901947B (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108370352B (zh) | 使用网络处理器的高速灵活分组分类 | |
US6947931B1 (en) | Longest prefix match (LPM) algorithm implementation for a network processor | |
US6775737B1 (en) | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories | |
CN101655861B (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
EP3258657B1 (en) | Ip route caching with two search stages on prefix length | |
US20140244779A1 (en) | Efficient Longest Prefix Matching Techniques for Network Devices | |
CN109635084B (zh) | 一种多源数据文档实时快速去重方法及系统 | |
CN104618361B (zh) | 一种网络流数据重排序方法 | |
Xiao et al. | Using parallel bloom filters for multiattribute representation on network services | |
CN112074818A (zh) | 用于能够在区块链网络中访问过去的交易的方法及节点 | |
CN113315705B (zh) | 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置 | |
CN108460030B (zh) | 一种基于改进的布隆过滤器的集合元素判断方法 | |
KR101311031B1 (ko) | 검증 블룸 필터를 포함하는 멀티 블룸 필터 | |
CN101500012B (zh) | 一种报文分类方法和系统 | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
CN104901947A (zh) | 一种基于tcam连续数值匹配方法和装置 | |
Jang et al. | Dynamically allocated bloom filter-based PIT architectures | |
CN106657128B (zh) | 基于通配符掩码规则的数据包过滤方法及装置 | |
CN106789668B (zh) | 一种处理报文的方法和装置 | |
CN100440859C (zh) | 一种位图聚合的递推流分类方法及其系统 | |
Xie et al. | Towards Capacity-Adjustable and Scalable Quotient Filter Design for Packet Classification in Software-Defined Networks | |
Li et al. | Deterministic and efficient hash table lookup using discriminated vectors | |
CN101848091B (zh) | 数据查找处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant after: State Computer Network and Information Safety Management Center Applicant after: BEIJING HENGGUANG INFORMATION TECHNOLOGY CO., LTD. Address before: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant before: State Computer Network and Information Safety Management Center Applicant before: Beijing Ever Bright Technology Development Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |