[发明专利]用于在存储器中存储整数范围的系统和方法无效
申请号: | 201210589675.5 | 申请日: | 2012-12-28 |
公开(公告)号: | CN103516614A | 公开(公告)日: | 2014-01-15 |
发明(设计)人: | 孙岩 | 申请(专利权)人: | 美国博通公司 |
主分类号: | H04L12/743 | 分类号: | H04L12/743;H04L12/747 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 田喜庆 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 存储器 存储 整数 范围 系统 方法 | ||
技术领域
本发明的实施方式涉及在存储器中存储值。
背景技术
诸如路由器、交换机、网桥等的包(packet)处理装置需要适应逐渐增大的带宽和处理需求。例如,带宽的增大要求以接近网速在包处理装置中处理每个包,同时,进入包处理装置的包数量变大。此外,复杂的包处理可能要求包处理装置将包报头中的较大字段组与预配置的值相比较。
在许多包处理装置中,将包标题字段与三态内容访问存储器(TCAM)中的条目(entry)相比较。TCAM是其中可使用二进制(例如1和0)比特和通配符比特来存储值的条目表。“通配符”表示对应的比特可以是1或0。在现有技术中已知一些存储1、0、和通配符的具体技术,并且可能依赖于实施方案。TCAM中的每个条目都可以对应于一个或多个字段。可以将入站包并行地与TCAM中的所有条目相比较。在基于入站包字段执行查找时,也可以使用其他存储器数据结构。
检查的包标题字段可以包括互联网协议(IP)地址、端口值、协议值、虚拟局域网标识符(VLANID)和其他头字段。将部分头字段与具体值相比较。可以将其他头字段与值的范围相比较。常常使用共同前缀来表示IP地址的范围。“前缀”是在值的二进制表示的开头开始的一个或多个比特的序列。如这里所使用的,如果两个或更多值中的每个的二进制表示具有从彼此共同的从第一比特开始的一个或多个比特的序列,则该两个或多个值被认为是具有共同前缀。然而,使用前缀可能不能有效地表示整数值的范围(例如用于在包报头中表示端口值、协议标识符等的那些)。例如,对值的范围进行存储可能需要相对大量的前缀,并且每个前缀可能需要TCAM中的多个条目。例如,范围的每个前缀可能需要TCAM中的多个条目,以在其他字段的组合中进行比较。
因此,在TCAM和存储器中的其他查找结构中所需的存储值的范围的条目数可能过大。由于其速度和灵活性,TCAM经常用于查找操作。然而,由于TCAM的相对高功耗和成本,需要减小TCAM的大小。其他存储器也可以用于查找,并且可以因为在查找表中具有较少的条目而带来好处。
发明内容
本发明实施方式涉及在TCAM或其他存储器中有效地存储值范围的方法、系统和计算机可读存储介质。在存储器中存储整数值的范围包括确定该范围中的子范围,使得在来自分别是子范围的开始值和结束值的二进制表示的第一和第二多个比特子序列(bit subsequence)中,第一多个比特子序列中的除了至多一个比特子序列以外的所有比特子序列的值要么等于第二多个中的对应比特子序列要么值为0且第二多个比特子序列中的对应比特子序列具有最大值。在存储器中存储整数值的范围进一步包括基于第一和第二多个比特子序列的值形成第一比特串(bit string),并且在存储器中存储第一比特串。
本发明的一个方面涉及一种用于在存储器中存储整数值的范围的方法,包括:确定所述范围中的子范围,使得在来自分别是所述子范围的开始值和结束值的二进制表示的第一和第二多个比特子序列中,在第一多个比特子序列中除了至多一个比特子序列外的所有比特子序列的值等于第二多个比特子序列中的相应比特子序列的值或者值为0且第二多个比特子序列的相应比特子序列具有最大值;基于所述第一和第二多个比特子序列的值形成第一比特串;以及在所述存储器中存储所述第一比特串。
在上述方法中,优选所述存储包括在三态内容寻址存储器(TCAM)中存储所述第一比特串。
在上述方法中,优选所述形成包括:生成与来自所述第一多个比特子序列的比特子序列与来自所述第二多个比特子序列的相应比特子序列的各个配对相应的各自的比特子串;以及连接(concatenate)所生成的比特子串以产生所述比特串。
在上述方法中,优选各个所述各自的比特子串的长度至少等于来自所述第一多个比特子序列的比特子序列的最大值。
在上述方法中,优选生成各自的比特子串包括:确定与所述各个配对相应的有效值的范围;以及基于所确定的有效值的范围来设置所述比特子串中的比特值,其中,所述比特子串中的各自的比特位置与所确定的有效值的范围中的值相关联。
在上述方法中,优选在所述比特子串中设置比特值包括:将所述比特子串的前m个比特设置为1,其中,m是来自所述第一多个比特子序列的比特子序列的有效值;以及将所述前m个比特后的n个比特设置为通配符,其中,n是来自所述第一多个比特子序列的比特子序列和来自所述第二多个比特子序列的比特子序列之间的差。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于美国博通公司,未经美国博通公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210589675.5/2.html,转载请声明来源钻瓜专利网。