CN101345710B - 一种区间值存储方法及装置 - Google Patents
一种区间值存储方法及装置 Download PDFInfo
- Publication number
- CN101345710B CN101345710B CN2008101349688A CN200810134968A CN101345710B CN 101345710 B CN101345710 B CN 101345710B CN 2008101349688 A CN2008101349688 A CN 2008101349688A CN 200810134968 A CN200810134968 A CN 200810134968A CN 101345710 B CN101345710 B CN 101345710B
- Authority
- CN
- China
- Prior art keywords
- interval
- interval value
- binary system
- subinterval
- lower limit
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明涉及通信技术领域,公开了一种区间值存储方法及装置、路由器,其中区间值存储方法包括:获取区间值区间;获得所述区间值区间的二进制下限值和二进制上限值;使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将所述区间值区间划分为区间值子区间,所述区间值子区间满足最长匹配存储要求;使用最长匹配存储方式存储所述区间值子区间。使用本发明提供的上述技术方案,在区间比较复杂时也能采用最长匹配存储方式。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种区间值存储方法及装置。
背景技术
随着通信技术的发展,路由器所承载的业务也越来越多,业务规格也越来越大。在高速转发处理中,三态内容寻址存储器(TCAM:ternary content addressable memory)是实现快速查找的关键器件。但制造工艺和功率限制了TCAM芯片的发展,不能无限增加其容量。如何更有效的利用TCAM空间成为了转发设计的一个瓶颈。
为了尽可能高效地使用TCAM空间,目前采用的一种区间值存储方法是精确匹配存储方法:用n条精确匹配表项存储一个[k,k+n]的区间,即对于区间值[k,k+n],需要使用k,k+1,k+2,...,k+n的n条表项存储同一个值来实现区间值的存储。
目前采用的另一种区间值存储方法是最长匹配存储方法:该方法使用了TCAM最长匹配的特性,对于一个区间值区间可以存储二进制的边界值[bn0...0,bn1...1],由于一个区间值区间中的区间值长度都是相同的,所以对于一个连续的区间值区间,在区间值为二进制时,由于区间值区间中的区间值的高位是相同的,不同的仅仅是低位,因此可以采用掩码的方式替代不同的低位,即在一条表项中存储相同的高位以及高位的长度,就可以通过一条表项可以存储一个区间。
在实现本发明的过程中,发明人发现上述最长匹配存储方法至少存在如下缺陷:由于利用了TCAM最长匹配的特性,所以直接采用上述存储方式只能存储类似[bn0...0,bn1...1]的区间,在区间比较复杂时并不能采用最长匹配存储方式,只能采用上述精确匹配的方法,而采用精确匹配的方法时存储的区间数量取决于区间的大小,当区间范围增大时,业务量会急剧减少,从而导致TCAM的效率低。
发明内容
本发明实施例提供了一种区间值存储方法及装置,使用本发明实施例提供的技术方案,在区间比较复杂时也能采用最长匹配存储方式。
本发明实施例的目的是通过以下技术方案实现的:
本发明实施例提供了一种区间值存储方法,包括:获取区间值区间;获得所述区间值区间的二进制下限值和二进制上限值;使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将所述区间值区间划分为区间值子区间,所述区间值子区间满足最长匹配存储要求;所述将所述区间值区间划分为区间值子区间包括:从低位到高位查找所述区间值区间的二进制下限值第一个不为0的位;将所述区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值,使用所述区间值区间的二进制下限值和所述第一区间值子区间的二进制上限值获得所述第一区间值子区间;将所述第一区间值子区间的二进制上限值加1获得新的区间值区间的下限值;使用所述新的区间值区间的下限值重复上述步骤直至所述第一区间值子区间的二进制上限值与所述区间值区间的二进制上限值相同;如果所述第一区间值子区间的二进制上限值大于所述区间值区间的二进制上限值,获得所述第一区间值子区间的二进制上限值后进一步包括:从低位到高位查找区间值区间的二进制上限值第一个为0的位;将所述区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用所述区间值区间的二进制上限值与所述第二区间值子区间的二进制下限值获得所述第二区间值子区间;使用所述区间值子区间的二进制下限值减1获得新的区间值区间的上限值;使用所述新的区间值区间的上限值重复上述步骤直至所述第二区间值子区间的二进制下限值与所述区间值区间的二进制下限值相同;使用最长匹配存储方式存储所述区间值子区间。
本发明实施例还提供了一种区间值存储装置,包括:用于获取区间值区间的单元;用于获得所述区间值区间的二进制下限值和二进制上限值的单元;用于使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将所述区间值区间划分为区间值子区间的单元,所述区间值子区间满足最长匹配存储要求;所述将所述区间值区间划分为区间值子区间包括:从低位到高位查找所述区间值区间的二进制下限值第一个不为0的位;将所述区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值,使用所述区间值区间的二进制下限值和所述第一区间值子区间的二进制上限值获得所述第一区间值子区间;将所述第一 区间值子区间的二进制上限值加1获得新的区间值区间的下限值;使用所述新的区间值区间的下限值重复上述步骤直至所述第一区间值子区间的二进制上限值与所述区间值区间的二进制上限值相同;如果所述第一区间值子区间的二进制上限值大于所述区间值区间的二进制上限值,获得所述第一区间值子区间的二进制上限值后进一步包括:从低位到高位查找区间值区间的二进制上限值第一个为0的位;将所述区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用所述区间值区间的二进制上限值与所述第二区间值子区间的二进制下限值获得所述第二区间值子区间;使用所述区间值子区间的二进制下限值减1获得新的区间值区间的上限值;使用所述新的区间值区间的上限值重复上述步骤直至所述第二区间值子区间的二进制下限值与所述区间值区间的二进制下限值相同;用于使用最长匹配存储方式存储所述区间值子区间的单元。
从本发明实施例提供的以上技术方案可以看出,由于本发明实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
附图说明
图1为本发明实施例中区间值存储方法实施例一的流程图;
图2为本发明实施例中区间值存储方法实施例二的流程图;
图3为本发明实施例中区间值存储方法实施例三的流程图;
图4为本发明实施例中区间值存储方法实施例四的流程图;
图5为本发明实施例中区间值存储方法实施例五的流程图;
图6为本发明实施例中区间值存储装置实施例一的结构图;
图7为本发明实施例中区间值存储装置实施例二的结构图;
图8为本发明实施例中区间值存储装置实施例三的结构图。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1描述了本发明实施例提供的区间值存储方法实施例一的流程,包括:
101、获取区间值区间;
在需要将区间值存储在TCAM时,可以获取相应的区间值区间;
102、获得区间值区间的二进制下限值和二进制上限值;
103、使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将区间值区间划分为区间值子区间,区间值子区间满足最长匹配存储要求;
由于一般情况下获取的区间值区间不满足最长匹配存储要求,因而不能直接采用最长匹配存储方式进行存储,而需要将区间值区间划分为若干个满足最长匹配存储要求的区间值子区间;本发明实施例并不限定将区间值区间划分为区间值子区间的具体方式;
104、使用最长匹配存储方式存储区间值子区间。
在将区间值区间划分为区间值子区间后,由于区间值子区间满足最长匹配存储要求,因此可以直接使用最长匹配存储方式存储区间值子区间。
从上可知,本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
图2描述了本发明实施例提供的区间值存储方法实施例二的流程,包括:
200、开始流程;
201、获取区间值区间;
202、获得所述区间值区间的二进制下限值和二进制上限值;
本实施例假设二进制下限值为01111101000,二进制上限值为10100010100,即区间值区间为[01111101000,10100010100];
203、从低位到高位查找区间值区间的二进制下限值第一个不为0的位;其中,如果从低位到高位的第1位就不为0,则直接进入步骤205;
由于从低位到高位查找时,第1、2、3位为0,因此本实施例中查找到的第一个不为0的位是从低位开始的第4位;
204、将二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值,使用区间值区间的二进制下限值与所述第一区间值子区间的二进制上限值构成第一区间值子区间;其中本发明实施例中的第一区间值子区间是指以所述第一区间值子区间的二进制上限值作为区 间的二进制上限值的区间值子区间;
本实施例中即将第4位的前面3位的0置为1,获得的第一个区间值子区间的二进制上限值为01111101111;此时就可以得到第一个区间值子区间[01111101000,01111101111],其中01111101000是原有区间值区间的二进制下限值,也是本区间值子区间的二进制下限值;01111101111是本区间值子区间的二进制上限值。该区间值子区间具有最长匹配的特性,因而可以采用最长匹配存储方式进行存储;
205、使用最长匹配存储方式存储第一区间值子区间;具体地,使用一个表项记录第一区间值子区间的二进制上限值、第一区间值子区间的二进制上限值的长度与第一区间值子区间的二进制上限值从低位到高位连续1的长度的差值,即在一个表项中存储一个区间值子区间的二进制上限值,以及该区间值子区间中二进制上限值与二进制下限值的相同的高位值的长度;当然,在表项中记录区间值子区间的二进制上限值仅是本发明实施例的一种实现方式,本发明实施例也可以在表项中记录该区间值子区间中的任意一个值,因为本区间值子区间的任意一个值都和本区间值子区间的其他值具有相同的高位值;同时,本发明实施例也可以在表项中记录一个区间值子区间的相同的高位值,然后记录该区间值子区间中任意一个值的长度;
本实施例中存储的第一区间值子区间的表项为(01111101111,8),其中8为掩码,由所述第一区间值子区间的二进制上限值的长度11与区间值区间的二进制下限值第一个不为0的位的前面为0的低位的长度3的差值得到,表示01111101111只有从高位到低位的前8位(01111101)是固定的,剩余位的数值可以为0或1;或者存储的该区间值子区间的表项也可以为(01111101,11),表示该区间值子区间的相同的高位为01111101,该区间值子区间中值的长度为11。
其中,如果区间值区间的二进制下限值从低位到高位的第1位就不为0,也可以确定相应的第一区间值子区间,该区间值子区间的二进制上限值和二进制下限值相同,都为区间值区间的二进制下限值;
206、判断第一区间值子区间的二进制上限值与区间值区间的二进制上限值的大小关系;如果所述第一区间值子区间的二进制上限值小于区间值区间的二进制上限值,将区间值子区间的二进制上限值加1获得新的区间值区间的二进制下限值,使用新的区间值区间的二进制下限值作为所述区间值区间的二进制下限值返回执行203,此时新的区间值区间的二进制上限值仍然为所述区间值区间的二进制上限值,即10100010100;此时,新的区间值区间为[01111110000,10100010100];如果所述新的区间值区间的二进制下限值等于所述区间值区间的二进制上限值,即新的区间值区间的二进制下限值为10100010100则说明区间值区间已经完全划分成区间值子区间,结束流程。其中新的区间值区间[01111110000,10100010100]与划分出去的第一区间值子区间[01111101000,01111101111]的合集即为201中获得的区间值区间,并且新的区间值区间与划分出去的第一区间值子区间没有交集;
从上可知,本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
进一步,将区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1后获得的区间值子区间的二进制上限值可能会大于区间值区间的二进制上限值,本发明实施例提供的区间值存储方法实施例三描述了这种情况,如图3所示,包括:
300、开始流程;
301、获取区间值区间;
302、获得区间值区间的二进制下限值和二进制上限值;
303、从低位到高位查找区间值区间的二进制下限值第一个不为0的位;
304、将二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值;
305、判断第一区间值子区间的二进制上限值与区间值区间的二进制上限值的大小关系;如果所述第一区间值子区间的二进制上限值小于区间值区间的二进制上限值,进入306;如果所述第一区间值子区间的二进制上限值大于区间值区间的二进制上限值,进入309;如果所述第一区间值子区间的二进制上限值等于区间值区间的二进制上限值,则说明区间值区间已经完全划分成具有最长匹配特性的区间值子区间,进入308。
306、使用区间值区间的二进制下限值与第一区间值子区间的二进制上限值构成第一区间值子区间;此时,第一区间值子区间的二进制上限值与原来的区间值区间的二进制下限值就构成了本实施例划分的第一区间值子区间,该第一区间值子区间具有最长匹配的特性,可以使用最长匹配特性采用一个表项进行存储;
307、使用最长匹配存储方式存储所述第一区间值子区间;将所述第一区间值子区间的二进制上限值加1获得新的区间值区间的二进制下限值,使用新的区间值区间的二进制下限值作为所述区间值区间的二进制下限值返回执行303;
该步骤中如何使用最长匹配存储方式存储所述第一区间值子区间可以参照205执行。
308、使用区间值区间的二进制下限值与第一区间值子区间的二进制上限值构成第一区间值子区间,使用最长匹配存储方式存储所述第一区间值子区间,结束流程;
309、从低位到高位查找区间值区间的二进制上限值第一个为0的位;
310、将309中查找到的所述区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用第二区间值子区间的二进制下限值和区间值区间的二进制上限值构成第二区间值子区间;其中本发明实施例中的第二区间值子区间是指以第二区间值子区间的二进制下限值作为区间的下限值的区间值子区间;
其中,如果区间值区间的二进制上限值从低位到高位的第一位即为0,则 确定的第二区间值子区间的二进制上限值和二进制下限值相同,都为区间值区间的二进制上限值;
310、使用最长匹配存储方式存储区间值子区间;具体地,使用一个表项记录第二区间值子区间的二进制下限值、第二区间值子区间的二进制下限值的长度与区间值区间的二进制上限值第一个不为0的位的前面为1的低位的长度的差值;311、判断第二区间值子区间的二进制下限值与区间值区间的二进制下限值的大小关系;如果大于区间值区间的二进制下限值,将区间值子区间的二进制下限值减1获得新的区间值区间的二进制上限值,使用新的区间值区间的二进制上限值进入309;如果等于区间值区间的二进制下限值,结束流程。该步骤中的新的区间值区间的二进制下限值为301中区间值区间的二进制下限值;该步骤中的新的区间值区间与划分出去的第二区间值子区间的合集即为301中获得的区间值区间,并且该新的区间值区间与划分出去的区间值子区间没有交集。
从上可知,本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
如下举具体的实例对区间值存储方法实施例三进行描述:
A1、获得区间值区间的二进制上限值1max和二进制下限值1min;即区间值区间为[lmin,1max];
A2、从低位到高位找出二进制下限值lmin第一个不为0的位,假设为第i位;从而找出区间值子区间的二进制上限值;
A3、将1min的前(i-1)位0置1,得到区间值子区间的二进制上限值k,该区间值子区间的二进制下限值即为A1中的二进制下限值1min;
A4、判断k和1max的大小,如果k大于1max则转到A7;如果k小于或等于1max则进入A5;
A5、以k为存储值key1,以1min的长度减去(i-1)得到的长度值为key1的长度,将key1的长度作为掩码存储到TCAM中,完成一个区间值子区间的存储;
A6、如果k=1max则结束流程;如果k<1max,将k+1作为新的区间值区间的二进制下限值,返回执行A2;新的区间值区间即为[1max,k+1]。
A7、从低位到高位找出二进制上限值1max第一个为0的位,假设为第j位;
A8、将1max的前(j-1)位1置0,得到区间值子区间的二进制下限值m,该区间值子区间的二进制上限值为1max;
A9、以m为存储值key2,以1max的长度减去(j-1)得到的长度值为key2的长度,以key2的长度作为掩码存储到TCAM中,完成一个区间值子区间的存储;
A10、如果m=1min,则结束流程;如果m>1min,以m-1作为新的区间值区间的二进制上限值,该新的区间值区间的二进制下限值为1min,转到A7。
图4描述了本发明实施例提供的区间值存储方法实施例四的流程,包括:
400、开始流程;
401、获取区间值区间;
402、获得区间值区间的二进制下限值和二进制上限值;
403、从低位到高位查找区间值区间的二进制上限值第一个为0的位;
404、将二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用第二区间值子区间的二进制下限值和区间值区间的二进制上限值获得第二区间值子区间;该区间值子区间的二进制上限值为区间值区间的二进制上限值;
其中,如果区间值区间的二进制上限值从低位到高位的第一位即为0,则确定的第二区间值子区间的二进制上限值和二进制下限值相同,都为区间值区间的二进制上限值;
405、使用最长匹配存储方式存储第二区间值子区间;具体地,使用一个表项记录第二区间值子区间的二进制下限值、第二区间值子区间的二进制下限值的长度与区间值区间的二进制上限值第一个不为0的位的前面为1的低位的长度的差值;
406、判断第二区间值子区间的二进制上限值与区间值区间的二进制下限值的大小关系;如果第二区间值子区间的二进制上限值大于区间值区间的二进制下限值,将区间值子区间的二进制下限值减1获得新的区间值区间的二进制上限值,使用新的区间值区间的二进制上限值作为所述区间值区间的二进制上限值返回执行403;如果第二区间值子区间的二进制上限值等于区间值区间的二进制下限值,则说明区间值区间已经完全划分成区间值子区间,结束流程。
从上可知,本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
图5描述了本发明实施例提供的区间值存储方法实施例五的流程,包括:
500、开始流程;
501、获取区间值区间;
502、获得区间值区间的二进制下限值和二进制上限值;
503、从低位到高位查找区间值区间的二进制上限值第一个为0的位;
504、将区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的下限值;
505、判断第二区间值子区间的下限值与区间值区间的二进制下限值的大小关系;如果大于区间值区间的二进制下限值,进入506;如果等于区间值区间的二进制下限值,则说明区间值区间已经完全划分成区间值子区间,进入 508;如果小于区间值区间的二进制下限值,进入509;
506、使用第二区间值子区间的二进制下限值和区间值区间的二进制上限值获得第二区间值子区间;
507、使用最长匹配存储方式存储第二区间值子区间;具体地,使用一个表项记录第二区间值子区间的二进制下限值、第二区间值子区间的二进制下限值的长度与区间值区间的二进制上限值第一个不为0的位的前面为1的低位的长度的差值;将区间值子区间的二进制下限值减1获得新的区间值区间的二进制上限值,使用新的区间值区间的二进制上限值进入503;
508、使用第二区间值子区间的二进制下限值和区间值区间的二进制上限值获得第二区间值子区间,使用最长匹配存储方式存储第二区间值子区间,结束流程;
509、从低位到高位查找区间值区间的二进制下限值第一个不为0的位;
510、将区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的上限值,使用区间值区间的二进制下限值与第一区间值子区间的二进制上限值构成第一区间值子区间;
511、使用最长匹配存储方式存储第一区间值子区间;具体地,使用一个表项记录第一区间值子区间的二进制上限值、区间值区间的二进制下限值第一个不为0的位的前面为0的低位的长度的差值,即在一个表项中存储一个区间值子区间的二进制上限值,以及该区间值子区间中二进制上限值与二进制下限值的相同的高位值的长度;
512、判断第一区间值子区间的二进制下限值与区间值区间的二进制上限值的大小关系;如果第一区间值子区间的二进制下限值小于区间值区间的二进制上限值,将第一区间值子区间的二进制上限值加1获得新的区间值区间的二进制下限值,使用新的区间值区间的二进制下限值进入507;如果第一区间值子区间的二进制下限值等于区间值区间的二进制上限值,结束流程。
从上可知,本实施例在获取了区间值区间后,可以将区间值区间划分为 满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
本发明实施例还提供了区间值存储装置,图6描述了区间值存储装置实施例一的结构,包括:
区间获取单元601,用于获取区间值区间;
获取单元602,用于获得区间获取单元601获取的区间值区间的二进制下限值和二进制上限值;
划分单元603,用于使用获取单元602获取的区间值区间的二进制下限值和区间值区间的二进制上限值,将区间获取单元601获取的区间值区间划分为区间值子区间,区间值子区间满足最长匹配存储要求;
存储单元604,用于使用最长匹配存储方法存储划分单元602划分得到的区间值子区间。
从上可知,区间值存储装置的本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
图7描述了区间值存储装置实施例二的结构,包括:
区间获取单元701,用于获取区间值区间;
获取单元702,用于获得区间获取单元701获取的区间值区间的二进制下限值和二进制上限值;
划分单元703,用于使用获取单元702获取的区间值区间的二进制下限值和区间值区间的二进制上限值,将区间获取单元701获取的区间值区间划分为区间值子区间,区间值子区间满足最长匹配存储要求;
其中划分单元703具体可以包括:第一查找单元7031,用于从低位到高位查找获取单元702获取的区间值区间的二进制下限值第一个不为0的位;第一重置单元7032,用于将第一查找单元7031查找的区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值;第一区间值子区间获取单元7033,用于使用第一区间值子区间的二进制上限值和区间值区间的二进制下限值获取第一区间值子区间。
进一步,第一查找单元7031还可以用于在第一区间值子区间的二进制上限值大于区间值区间的二进制上限值时,从低位到高位查找区间值区间的二进制上限值第一个为0的位;此时,第一重置单元7032,还用于将第一查找单元7033查找的区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值;第一区间值子区间获取单元7024,还用于使用第二区间值子区间的二进制下限值和区间值区间的二进制上限值获取第二区间值子区间。
存储单元704,用于使用最长匹配存储方法存储划分单元703划分得到的区间值子区间;具体是采用最长匹配存储方法存储第一区间值子区间获取单元7033获取的第一区间值子区间。
从上可知,区间值存储装置的本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
图8描述了区间值存储装置实施例三的结构,包括:
区间获取单元801,用于获取区间值区间;
获取单元802,用于获得区间获取单元801获取的区间值区间的二进制下限值和二进制上限值;
划分单元803,用于使用获取单元802获取的区间值区间的二进制下限值和区间值区间的二进制上限值,将区间获取单元801获取的区间值区间划分 为区间值子区间,区间值子区间满足最长匹配存储要求;
其中,划分单元803具体可以包括:第二查找单元8031,用于从低位到高位查找获取单元802获取的二进制上限值第一个为0的位;第二重置单元8032,用于将第二查找单元8031查找的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值;第二区间值子区间获取单元8033,用于使用区间值区间的二进制上限制与第二区间值子区间的二进制下限值获得第二区间值子区间。
进一步,第二查找单元8031还可以用于在第二区间值子区间的二进制下限值小于区间值区间的二进制下限值时,从低位到高位查找第二获取单元8021获取的二进制下限值第一个不为0的位;此时,第二重置单元8032,还用于将第二查找单元8031查找的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值;第二区间值子区间获取单元8033,还用于使用区间值区间的二进制下限值和第一区间值子区间的二进制上限值获得第一区间值子区间。
存储单元804,用于使用最长匹配存储方法存储划分单元802划分得到的区间值子区间;具体是采用最长匹配存储方法存储第二区间值子区间获取单元8033获取的第二区间值子区间。
从上可知,区间值存储装置的本实施例在获取了区间值区间后,可以将区间值区间划分为满足最长匹配存储要求的区间值子区间,从而可以使用最长匹配存储方式对区间值子区间进行存储,进而实现对区间值区间采用最长匹配存储方式进行存储,从而不需要采用精确匹配存储方式对区间值区间进行存储,节省了存储空间,提高了TCAM的利用效率。
本发明实施例还提供了路由器,该路由器包括本发明实施例提供的上述区间值存储装置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,执行本发明实施例提供的上述方法实施 例的部分或全部步骤。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种区间值存储方法及装置、路由器进行了详细介绍,以上实施例的说明只是用于帮助理解本发明的方法及其思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种区间值存储方法,其特征在于,包括:
获取区间值区间;
获得所述区间值区间的二进制下限值和二进制上限值;
使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将所述区间值区间划分为区间值子区间,所述区间值子区间满足最长匹配存储要求;所述将所述区间值区间划分为区间值子区间包括:从低位到高位查找所述区间值区间的二进制下限值第一个不为0的位;将所述区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值,使用所述区间值区间的二进制下限值和所述第一区间值子区间的二进制上限值获得所述第一区间值子区间;将所述第一区间值子区间的二进制上限值加1获得新的区间值区间的下限值;使用所述新的区间值区间的下限值重复上述步骤直至所述第一区间值子区间的二进制上限值与所述区间值区间的二进制上限值相同;
如果所述第一区间值子区间的二进制上限值大于所述区间值区间的二进制上限值,获得所述第一区间值子区间的二进制上限值后进一步包括:从低位到高位查找区间值区间的二进制上限值第一个为0的位;将所述区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用所述区间值区间的二进制上限值与所述第二区间值子区间的二进制下限值获得所述第二区间值子区间;使用所述区间值子区间的二进制下限值减1获得新的区间值区间的上限值;使用所述新的区间值区间的上限值重复上述步骤直至所述第二区间值子区间的二进制下限值与所述区间值区间的二进制下限值相同;
使用最长匹配存储方式存储所述区间值子区间。
2.如权利要求1所述的区间值存储方法,其特征在于,所述使用最长匹配存储方式存储所述区间值子区间的步骤包括:
使用一个表项记录所述第一区间值子区间的二进制上限值、所述第一区间值子区间的二进制上限值的长度与所述第一区间值子区间的二进制上限值从低位到高位连续1的长度的差值。
3.如权利要求1或2所述的区间值存储方法,其特征在于,所述使用最长匹配存储方法存储所述区间值子区间的步骤包括:
使用一个表项记录所述第二区间值子区间的二进制下限值、所述第二区间值子区间的二进制下限值的长度与所述第二区间值子区间的二进制下限值从低位到高位连续0的长度的差值。
4.一种区间值存储装置,其特征在于,包括:
用于获取区间值区间的单元;
用于获得所述区间值区间的二进制下限值和二进制上限值的单元;
用于使用所述区间值区间的二进制下限值和所述区间值区间的二进制上限值,将所述区间值区间划分为区间值子区间的单元,所述区间值子区间满足最长匹配存储要求;所述将所述区间值区间划分为区间值子区间包括:从低位到高位查找所述区间值区间的二进制下限值第一个不为0的位;将所述区间值区间的二进制下限值第一个不为0的位的前面低位的0置为1,获得第一区间值子区间的二进制上限值,使用所述区间值区间的二进制下限值和所述第一区间值子区间的二进制上限值获得所述第一区间值子区间;将所述第一区间值子区间的二进制上限值加1获得新的区间值区间的下限值;使用所述新的区间值区间的下限值重复上述步骤直至所述第一区间值子区间的二进制上限值与所述区间值区间的二进制上限值相同;如果所述第一区间值子区间的二进制上限值大于所述区间值区间的二进制上限值,获得所述第一区间值子区间的二进制上限值后进一步包括:从低位到高位查找区间值区间的二进制上限值第一个为0的位;将所述区间值区间的二进制上限值第一个为0的位的前面低位的1置为0,获得第二区间值子区间的二进制下限值,使用所述区间值区间的二进制上限值与所述第二区间值子区间的二进制下限值获得所述第二区间值子区间;使用所述区间值子区间的二进制下限值减1获得新的区间值区间的上限值;使用所述新的区间值区间的上限值重复上述步骤直至所述第二区间值子区间的二进制下限值与所述区间值区间的二进制下限值相同;
用于使用最长匹配存储方式存储所述区间值子区间的单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101349688A CN101345710B (zh) | 2008-08-07 | 2008-08-07 | 一种区间值存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101349688A CN101345710B (zh) | 2008-08-07 | 2008-08-07 | 一种区间值存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101345710A CN101345710A (zh) | 2009-01-14 |
CN101345710B true CN101345710B (zh) | 2011-04-20 |
Family
ID=40247603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101349688A Expired - Fee Related CN101345710B (zh) | 2008-08-07 | 2008-08-07 | 一种区间值存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101345710B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014100974A1 (de) * | 2014-01-28 | 2015-07-30 | Huf Hülsbeck & Fürst Gmbh & Co. Kg | Auswerteverfahren für Sensorsignale |
CN103905304A (zh) * | 2014-03-18 | 2014-07-02 | 汉柏科技有限公司 | 一种acl匹配方法和设备 |
-
2008
- 2008-08-07 CN CN2008101349688A patent/CN101345710B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101345710A (zh) | 2009-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100445999C (zh) | 一种数据存储及搜索方法 | |
EP1551141B1 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
CN101667958B (zh) | 选择哈希函数的方法、存储及查找路由表的方法及装置 | |
CN101515298B (zh) | 基于树形数据结构节点的插入的方法和存储装置 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
US7873041B2 (en) | Method and apparatus for searching forwarding table | |
CN101621502A (zh) | 存储、查找路由表的方法及装置 | |
CN104809179A (zh) | 访问哈希表的装置和方法 | |
CN106528787A (zh) | 一种基于海量数据多维分析的查询方法及装置 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
US8180958B2 (en) | Key selection device and process for content-addressable memory | |
CN110647542B (zh) | 一种数据获取方法和装置 | |
CN101572647B (zh) | 一种数据查找的方法及装置 | |
CN109815238A (zh) | 用严格平衡二叉树实现数据库的动态添加方法及装置 | |
CN102542041A (zh) | 栅格数据处理方法及系统 | |
CN104239337B (zh) | 基于tcam的查表处理方法及装置 | |
CN102982147B (zh) | 一种提高数据信息整合效率的方法和装置 | |
CN103559307A (zh) | 一种查询的缓存方法及装置 | |
CN101345710B (zh) | 一种区间值存储方法及装置 | |
CN101741737A (zh) | 路由表的维护方法与装置 | |
US20070260579A1 (en) | Method of designing query classification component for multilevel dbms | |
CN100451974C (zh) | 会话表管理方法及装置 | |
CN103581024A (zh) | Mac地址硬件与软件相结合的学习方法及装置 | |
CN100487697C (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110420 Termination date: 20150807 |
|
EXPY | Termination of patent right or utility model |