CN108075979B - 实现最长掩码匹配的方法及系统 - Google Patents
实现最长掩码匹配的方法及系统 Download PDFInfo
- Publication number
- CN108075979B CN108075979B CN201711382380.XA CN201711382380A CN108075979B CN 108075979 B CN108075979 B CN 108075979B CN 201711382380 A CN201711382380 A CN 201711382380A CN 108075979 B CN108075979 B CN 108075979B
- Authority
- CN
- China
- Prior art keywords
- route
- searching
- attribute table
- address
- current
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/695—Types of network addresses using masks or ranges of addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种实现最长掩码匹配的方法及系统,所述方法包括:将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;将第一写入部分写入TCAM存储器;依据第二写入部分查找Bitmap属性表,将其对应的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器。本发明的实现最长掩码匹配的方法及系统,可使SRAM存储器的利用率达到100%。
Description
技术领域
本发明涉及网络通信领域,尤其涉及一种实现最长掩码匹配的方法及系统。
背景技术
LPM(Longest Prefix Match最长掩码匹配)表示了在IP路由查找中普遍应用的原则,即精确匹配。LPM本身并没有规定使用何种算法实现,所有实现了相同输出结果的思想都可以认为是LPM。在路由查找过程中路由的条目常是以192.168.10.0/24或者192.168.10.0/32这样的形式出现,/后表示的是该路由的掩码,掩码包含的是需要关心的内容,未包含的是无需关心的内容,掩码越大路由越精确,在IP相同但是掩码长度不同的情况下选取路由掩码更长的条目。上例中如果报文的目的IP地址是192.168.10.0时应该选取/32掩码的路由条目,如果报文的目的IP地址是192.168.10.10时则只能选取/24掩码的路由条目了(因为/24的条目最后8位不关心)。
目前的交换机通用方式是使用TCAM存储器(Ternary Content AddressableMemory三态内容寻址存储器)+SRAM存储器来实现LPM,TCAM存储器的表项始终是按照一个顺序,从低位往高位查询并逐条匹配。SRAM存储器采用哈希算法进行匹配,哈希算法一种高效的查找算法,是将一组关键词(或者叫键值),通过哈希函数映射到一个连续的空间上。
现有技术中,其中一种LPM算法的实现过程为,TCAM存储器匹配后,根据IP地址的第三个字节查找第一哈希表,如果有第二哈希表,还需要根据IP地址的第四个字节来查找第二哈希表;第一哈希和第二哈希表,使用1个字节来索引,因此每个TCAM存储器后续的第一哈希表最大是256;但实际应用中,第一哈希表中可能只有两条路由,例如:10.10.1.0/24和10.10.254.0/24;虽然仅有两条路由是有效的,但由于这两条路由的第三个字节分别是1和254,如此,需要占用254个哈希表位置,哈希表的SRAM存储器利用非常低。
发明内容
本发明的目的在于提供一种实现最长掩码匹配的方法及系统。
为实现上述目的之一,本发明一实施方式的实现最长掩码匹配的方法,所述方法包括:写安装路由过程中,
将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由包括:对应写入TCAM存储器的第一写入部分、对应写入SRAM存储器的第二写入部分,以及掩码;
将当前目的IP路由对应的第一写入部分写入TCAM存储器;
依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;
获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器。
作为本发明一实施方式的进一步改进,写安装路由过程中,
若多个目的IP路由具有相同的第一部分和第二部分,同时,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
作为本发明一实施方式的进一步改进,报文查找路由过程中,
获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分;
依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;
获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
作为本发明一实施方式的进一步改进,以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号具体包括:
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找;
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
作为本发明一实施方式的进一步改进,若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,在向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号后,所述方法具体包括:
根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;
将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,
若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;
若匹配失败,则按照预指定方式进行处理。
为实现上述目的另一,本发明一实施方式的实现最长掩码匹配的系统,所述系统包括:写入模块,所述写入模块包括:写入拆分单元以及写入单元;
所述写入拆分单元用于:在写安装路由过程中,将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由包括:对应写入TCAM存储器的第一写入部分、对应写入SRAM存储器的第二写入部分,以及掩码;
所述写入单元用于:将当前目的IP路由对应的第一写入部分写入TCAM存储器;依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器。
作为本发明一实施方式的进一步改进,所述写入单元在写安装路由过程中,还用于:
若多个目的IP路由具有相同的第一部分以及IP地址,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
作为本发明一实施方式的进一步改进,所述系统还包括:查找模块,所述查找模块包括:查找拆分单元以及查找单元;
所述查找拆分单元用于:在报文查找路由过程中,获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分;
所述查找单元用于:依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
作为本发明一实施方式的进一步改进,所述查找单元在以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号过程中,具体用于:
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找;
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
作为本发明一实施方式的进一步改进,所述查找单元还用于:
根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;
将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,
若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;
若匹配失败,则按照预指定方式进行处理。
与现有技术相比,本发明的有益效果是:本发明的实现最长掩码匹配的方法及系统,可使SRAM存储器的利用率达到100%,同时,降低软件的复杂度,提高路由效率。
附图说明
图1是本发明一实施方式中实现最长掩码匹配的方法在写安装路由过程中的流程图;
图2是本发明应用实现最长掩码匹配的方法的具体示例的结构示意图;
图3是本发明一实施方式中实现最长掩码匹配的方法在报文查找路由过程中的流程图;
图4是本发明一实施方式中实现最长掩码匹配的系统在写安装路由过程中对应的模块示意图;
图5是本发明一实施方式中实现最长掩码匹配的系统在在报文查找路由过程中对应的模块示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图1所示,本发明一实施方式中,实现最长掩码匹配的方法,写安装路由过程中,所述方法包括:
S1、将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由包括:对应写入TCAM存储器的第一写入部分、对应写入SRAM存储器的第二写入部分,以及掩码。
存储空间的存储容量可根据需要具体配置;本实施方式中,由于存储空间对应写入的为目的IP路由,如此,存储空间的存储容量可根据目的IP路由的大小进行设定;通常情况下,目的IP路由通常由4个字节以及掩码组成,如此,TCAM存储器的每个存储地址可设置为2个字节+掩码专用位或3个字节+掩码专用位,用于存储目的IP路由的前2个字节和掩码或前3个字节和掩码;相应的,当TCAM存储器的单个存储地址设置为2个字节+掩码专用位时,SRAM存储器的每个存储地址可以设置为2个字节+掩码占用位,用于存储目的IP路由的后2个字节和掩码;或设置两个SRAM存储器,其中一个SRAM存储器每个存储地址设置为1个字节+掩码专用位,用于存储目的IP路由的第3个字节掩码,另一个SRAM存储器存储的每个存储地址设置为1个字节+掩码占用位,用于存储目的IP路由的第4个字节和掩码。
本发明具体实施方式中,结合图2所示,将TCAM存储器的存储空间设置为2个字节+掩码占用位,SRAM存储器设置为2个,分别设置1个字节+掩码占用位;该具体示例中,为了方便描述,所举例的目的IP地址中的第4位为0,如此,在写安装路由过程中,只有一个SRAM存储器被占用,相应的,图中仅示意性的标识了其中一个SRAM存储器,用于存储目的IP地址的第3位+掩码占用位,以下将会详细描述。
S2、将当前目的IP路由对应的第一写入部分写入TCAM存储器;
本发明具体实施方式中,所述目的IP路由的第一写入部分包括其前两个字节以及掩码;为了方便描述,以下内容中将描述一第一具体示例进行详细说明。
该具体示例中,假设需写安装路由的目的IP路由为3个,分别为:10.10.2.0/23,10.10.6.0/24,10.10.15.0/24,TCAM存储器和SRAM存储器均以二进制存储数据;三个目的IP路由的前2位以IP地址表示,均可以表示为10.10.0.0/16,如此,将3个目的IP路由写入同一个TCAM存储器中,且将其前2位“10、10”以及其对应的掩码“16”分别以二进制写入TCAM存储器中。
在步骤S2后,所述方法还包括:S3、依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值。
为了便于描述,接续上述第一示例进行说明;
上述3个路由,第三个字节分别为“2”、“6”、“15”如此,将Bitmap属性表的bitmap[15],bitmap[6],bitmap[2]分别置1;该实施方式中,Bitmap属性表中、其标志位对应为“0”时,表示没有有效的存储,当其为“1”时,表示其对应有效的存储;当然,在其他实施方式中,还可以用“1”表示无效,以“0”表示有效,在此不做详细赘述。进一步的,将置为1的标志位重新依次顺序排位,即表示SRAM存储器对应的序号;该实施方式中,bitmap[2]是第一个置为“1”的标志位,则bitmap[2]对应SRAM存储器中的offset0;bitmap[6]是第二个置为“1”的标志位,则bitmap[6]对应SRAM存储器中的offset1;bitmap[15]是第三个置为“1”的标志位,则bitmap[15]对应SRAM存储器中的offset2。
进一步的,所述步骤S3后,所述方法还包括:S4、获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器。
接续上述第一示例,结合TCAM存储器的Base_ptr基地址以及bitmap[x]为1的标志位对应offset位的排序序号查找SRAM存储器,并将目的IP路由所对应的第三个字节以及掩码依次写入SRAM存储器;写入后,第三字节为“2”的目的IP路由写入SRAM存储器的位置0,第三字节为“6”的目的IP路由写入SRAM存储器的位置1,第三字节为“15”的目的IP路由写入SRAM存储器的位置2;该具体实施方式中,写入SRAM存储器时,同样以二进制进行写入;需要说明的是,本发明图2所示中,为了便于观察,以IP路由的形式将目的IP地址写入TCAM存储器和SRAM存储器,实际应用,需要将其对应的部分转换为二进制分别写入TCAM存储器和SRAM存储器,在此不做详细赘述。
如此,可以为写安装路由按需分配SRAM存储器,使SRAM存储器的利用率达到100%。
优选的,本发明具体实施方式中,所述方法还包括:写安装路由过程中,若多个目的IP路由具有相同的第一部分和第二部分,同时,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
为了便于理解,本发明描述一第二示例进行说明,该示例中,同样以3个目的IP路由为例做具体介绍;该第二示例中,3个目的IP路由分别为“10.10.128.0/17”“10.10.128.0/18”“10.10.128.0/19”三个目的IP路由的第一写入部分和第二写入部分均相同,其区别在于,其对应的掩码长度不同,即每个目的IP路由的有效位数不同,其有效位分别为17、18、19。相应的,由于目的IP路由的第一写入部分和第二写入部分均相同,如此,其写入TCAM存储器和SRAM存储器的同一位置中,仅以其掩码占用位进行区分,三个目的IP路由对应bitmap属性表的位置均为第128;存储第“3”个字节的SRAM存储器中,其掩码可以放置多了,其范围为17至24,一共8个;如此,其在查找过程中,同样可以达到精确查找的目的。
如图3所示,本发明一实施方式中,实现最长掩码匹配的方法,报文查找路由过程中,所述方法包括:
P1、获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分;
P2、依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;
P3、获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
结合图2所示,图2已在写安装路由过程中,写入3个目的IP路由;接续上述第一示例,报文查找路由过程中,以报文携带的路由查找地址为10.10.6.200为例做具体介绍,将报文携带的裸游查找地址同样分为两部分,第一查找部分为前2个字节,第二查找部分为后2个字节;报文查找路由过程中,首先以“10.10.0.0”查找TCAM存储器,然后根据其第三个字节的值“6”查找Bitmap属性表后,获取bitmap[6]的值是1,并判断出其为第2个bit位为1的存储地址,因此确定其offset是1,再结合其base_ptr,就找到10.10.6.0/24这条路由了;当然,在其查找到相应的路由后,即可以按照相应的路由对应的处理方式进行处理,例如:进行转发或舍弃等,在此不做详细赘述。
本发明优选实施方式中,所述方法还包括:若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找。
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
具体的,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;若匹配失败,则按照预指定方式进行处理。所述预指定方式可为:对其进行丢弃处理或者按照预定的路径转发、上传等操作,在此不做详细赘述。
接续上述第一示例,本示例中,以两个路由查找地址为例做具体介绍;两个路由查找地址分别为10.10.5.100,10.10.3.100;
报文查找路由过程中,以“10.10.3.100”进行查找,其前两个字节可以匹配到具体的TCAM存储器,以其第3个字节“3”的二进制为“0000 0011”查找Bitmap属性表时,其匹配到bitmap[3]的值是0,相应的,其从Bitmap属性表的当前位置向其低位扫描,查找到标志位为1的bitmap[2],对应bitmap[2]指向SRAM存储器的地址“10.10.2.0/23”,其对应第3位的有效二进制数值为7位,即0000 001x,x表示不关心,如此,“10.10.3.100”转换为二进制时,其前23位与“10.10.2.0/23”的前23位相同,“10.10.3.100”可以匹配到“10.10.2.0/23”。
报文查找路由过程中,以“10.10.5.100”进行查找,其前两个字节可以匹配到具体的TCAM存储器,以其第3个字节“5”的二进制为“0000 0101”查找Bitmap属性表时,其匹配到bitmap[5]的值是0,相应的,其从Bitmap属性表的当前位置向其低位扫描,查找到标志位为1的bitmap[2],对应bitmap[2]指向SRAM存储器的地址“10.10.2.0/23”,其对应第3位的有效二进制数值为7位,即0000 001x,x表示不关心,如此,“10.10.5.100”转换为二进制时,其前23位中有2位与“10.10.2.0/23”不同,“10.10.5.100”未能匹配对应SRAM存储器的具体位置;此时,可以根据系统配置对携带“10.10.5.100”的报文按照预指定方式处理,在此不做详细赘述。
接续上述第二示例,该查找方法同样适用,例如:3个报文其携带的路由查找地址分别为:报文1:ip=10.10.128.100,报文2:ip=10.10.192.100,报文3:ip=10.10.176.100;报文1查找过程中,查询到的bitmap[128]=1,然后根据base_ptr+offset读取SRAM存储器,根据相应的掩码可以匹配到“10.10.128.0/19”这条路由;报文2查找过程中,查询到的bitmap[192]=0,向其低位扫描,查找到bitmap[128]=1,经过进一步匹配后,根据相应的掩码可以匹配到“10.10.128.0/17”这条路由;报文3查找过程中,查询到的bitmap[176]=0,向其低位扫描,查找到bitmap[128]=1,经过进一步匹配后,根据相应的掩码可以匹配到“10.10.128.0/18”这条路由。
结合图4所示,在本发明的一实施方式中,实现最长掩码匹配的系统包括:写入模块,和查找模块,其中,所述写入模块包括:写入拆分单元100以及写入单元200,所述查找模块包括:查找拆分单元300以及查找单元400。
具体的,写入拆分单元100用于将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由包括:对应写入TCAM存储器的第一写入部分、对应写入SRAM存储器的第二写入部分,以及掩码。
写入单元200用于将当前目的IP路由对应的第一写入部分写入TCAM存储器;依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器。
本发明一优选实施方式中,所述写入单元100还用于在写安装路由过程中,若多个目的IP路由具有相同的第一部分以及IP地址,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
结合图5所示,查找拆分单元300用于在报文查找路由过程中,获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分。
所述查找单元400用于依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
本发明一优选实施方式中,查找单元400在以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号过程中具体用于:
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找;
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
对应该优选实施方式中,所述查找单元400还用于:
根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;若匹配失败,则按照预指定方式进行处理。所述预指定方式可为:对其进行丢弃处理或者按照预定的路径转发、上传等操作,在此不做详细赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统中的模块的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。
综上所述,本发明的实现最长掩码匹配的方法及系统,可使SRAM存储器的利用率达到100%,同时,降低软件的复杂度,提高路由效率。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (6)
1.一种实现最长掩码匹配的方法,其特征在于,所述方法包括:
写安装路由过程中,
将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由的两部分包括:对应写入TCAM存储器的第一写入部分和对应写入SRAM存储器的第二写入部分;所述目的IP路由还包括:掩码;
将当前目的IP路由对应的第一写入部分写入TCAM存储器;
依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;
获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器;
报文查找路由过程中,
获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分;
依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;
获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出;
其中,写安装路由过程中,
若多个目的IP路由具有相同的第一部分和第二部分,同时,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
2.根据权利要求1所述的实现最长掩码匹配的方法,其特征在于,以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号具体包括:
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找;
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
3.根据权利要求2所述的实现最长掩码匹配的方法,其特征在于,若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,在向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号后,所述方法具体包括:
根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;
将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,
若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;
若匹配失败,则按照预指定方式进行处理。
4.一种实现最长掩码匹配的系统,其特征在于,所述系统包括:
写入模块,所述写入模块包括:写入拆分单元以及写入单元;
所述写入拆分单元用于:在写安装路由过程中,将需写安装路由的目的IP路由按照芯片存储空间的存储容量分为两部分;所述芯片的存储空间包括:TCAM存储器、Bitmap属性表和SRAM存储器;目的IP路由的两部分包括:对应写入TCAM存储器的第一写入部分和对应写入SRAM存储器的第二写入部分;所述目的IP路由还包括:掩码;
所述写入单元用于:将当前目的IP路由对应的第一写入部分写入TCAM存储器;依据目的IP路由的第二写入部分查找Bitmap属性表,将对应当前目的IP路由第二写入部分的标志位从0置1;从低位到高位的顺序轮询Bitmap属性表,将置为1的标志位重新依次顺序排位,以offset0、offset1、……offsetx表示,x为正整数,其数值小于等于Bitmap属性表最高位对应的数值;获取当前目的IP路由对应TCAM存储器的Base_ptr基地址以及对应Bitmap属性表中offset位的排序序号;按照Bitmap属性表中offset位的排序顺序将当前IP路由的第二写入部分一一对应写入Base_ptr指向的SRAM存储器;
查找模块,所述查找模块包括:查找拆分单元以及查找单元;
所述查找拆分单元用于:在报文查找路由过程中,获取报文携带的路由查找地址,将其按照当前芯片的存储空间分为两部分;路由查找地址包括:对应查找TCAM存储器的第一查找部分和对应查找Bitmap属性表和SRAM存储器的第二查找部分;
所述查找单元用于:依据当前报文携带的路由查找地址的第一查找部分匹配TCAM存储器,若匹配到对应的TCAM存储器,则以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号;获取当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出;
其中,所述写入单元在写安装路由过程中,还用于:
若多个目的IP路由具有相同的第一部分以及IP地址,具有不同的掩码,则将多个目的IP路由的第二部分写入SRAM存储器的同一位置上,并以不同的掩码进行区分。
5.根据权利要求4所述的实现最长掩码匹配的系统,其特征在于,
所述查找单元在以当前路由查找地址对应的第二查找部分查找Bitmap属性表,获取其匹配Bitmap属性表的标志位所对应的offset序列号过程中,具体用于:
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为1,则直接获取其对应的offset序列号,以进行下一步查找;
若当前路由查找地址对应的第二查找部分查找Bitmap属性表后,其匹配的标志位为0,则以当前匹配到的标志位开始,向其所述的Bitmap属性表的低位扫描,获取与其最近、且为1的标志位所对应的offset序列号,根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,并匹配输出。
6.根据权利要求5所述的实现最长掩码匹配的系统,其特征在于,所述查找单元还用于:
根据当前路由查找地址匹配TCAM存储器时的Base_ptr基地址,以及根据对应的offset序列号对应查找SRAM存储器,获取当前SRAM存储器中与值为1的offset序列号对应的标志位中的所有IP路由以及与IP路由对应的掩码;
将当前路由查找地址对应的第二查找部分与获得的当前SRAM存储器中所有IP路由逐一进行匹配,
若匹配成功,则选取匹配成功的IP路由中具有最长掩码长度的IP路由,并按照其指定的端口进行转发;
若匹配失败,则按照预指定方式进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711382380.XA CN108075979B (zh) | 2017-12-20 | 2017-12-20 | 实现最长掩码匹配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711382380.XA CN108075979B (zh) | 2017-12-20 | 2017-12-20 | 实现最长掩码匹配的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108075979A CN108075979A (zh) | 2018-05-25 |
CN108075979B true CN108075979B (zh) | 2020-10-13 |
Family
ID=62158758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711382380.XA Active CN108075979B (zh) | 2017-12-20 | 2017-12-20 | 实现最长掩码匹配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108075979B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883455A (zh) * | 2022-12-09 | 2023-03-31 | 苏州盛科通信股份有限公司 | 一种压缩路由信息的方法、装置、电子设备及存储介质 |
CN116156026B (zh) * | 2023-04-20 | 2023-07-04 | 中国人民解放军国防科技大学 | 一种支持rmt的解析器、逆解析器、解析方法及交换机 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1905523A (zh) * | 2006-08-02 | 2007-01-31 | 华为技术有限公司 | 一种多域流分类的实现方法 |
CN101491015A (zh) * | 2006-07-27 | 2009-07-22 | 佛罗里达大学研究基金公司 | 用于ip查找和更新的动态树位图 |
CN103546378A (zh) * | 2013-05-20 | 2014-01-29 | 李险峰 | 基于tcam的范围多匹配2级分层查找方法 |
CN103581023A (zh) * | 2013-11-06 | 2014-02-12 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7212531B1 (en) * | 2001-11-27 | 2007-05-01 | Marvell Semiconductor Israel Ltd. | Apparatus and method for efficient longest prefix match lookup |
US7653670B2 (en) * | 2005-11-28 | 2010-01-26 | Nec Laboratories America, Inc. | Storage-efficient and collision-free hash-based packet processing architecture and method |
US8880494B2 (en) * | 2011-07-28 | 2014-11-04 | Brocade Communications Systems, Inc. | Longest prefix match scheme |
US9264357B2 (en) * | 2013-04-30 | 2016-02-16 | Xpliant, Inc. | Apparatus and method for table search with centralized memory pool in a network switch |
-
2017
- 2017-12-20 CN CN201711382380.XA patent/CN108075979B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101491015A (zh) * | 2006-07-27 | 2009-07-22 | 佛罗里达大学研究基金公司 | 用于ip查找和更新的动态树位图 |
CN1905523A (zh) * | 2006-08-02 | 2007-01-31 | 华为技术有限公司 | 一种多域流分类的实现方法 |
CN103546378A (zh) * | 2013-05-20 | 2014-01-29 | 李险峰 | 基于tcam的范围多匹配2级分层查找方法 |
CN103581023A (zh) * | 2013-11-06 | 2014-02-12 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及装置 |
Non-Patent Citations (2)
Title |
---|
基于FPGA的快速路由查找算法研究及实现;王波;《中国优秀硕士学位论文全文数据库信息科技辑》;20090715;第1-57页 * |
王波.基于FPGA的快速路由查找算法研究及实现.《中国优秀硕士学位论文全文数据库信息科技辑》.2009,第1-57页. * |
Also Published As
Publication number | Publication date |
---|---|
CN108075979A (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10389633B2 (en) | Hash-based address matching | |
JP4742167B2 (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
US9537771B2 (en) | Exact match hash lookup databases in network switch devices | |
US7349397B2 (en) | Lookups by collisionless direct tables and CAMS | |
US7913060B2 (en) | Method and apparatus for physical width expansion of a longest prefix match lookup table | |
US9269439B1 (en) | Method and apparatus for TCAM based look-up | |
US10771386B2 (en) | IP routing search | |
CN115297056B (zh) | 一种基于fpga实现的掩码匹配方法及系统 | |
CN108075979B (zh) | 实现最长掩码匹配的方法及系统 | |
US7483426B2 (en) | Look-up table expansion method | |
US10795580B2 (en) | Content addressable memory system | |
US9703484B2 (en) | Memory with compressed key | |
US20160105363A1 (en) | Memory system for multiple clients | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
CN113992579B (zh) | 一种路由表项存储方法、查找方法及装置 | |
US20180054386A1 (en) | Table lookup method for determing set membership and table lookup apparatus using the same | |
CN107948075A (zh) | 有效解决公网和私网路由转发的方法及系统 | |
EP3319279B1 (en) | Ip routing lookup | |
CN107204926B (zh) | 预处理cache的路由快速查找方法 | |
US10218498B2 (en) | Efficient hash table key storage | |
CN116415036A (zh) | 一种数据存储方法、装置、存储介质及服务器 | |
CN117914784A (zh) | 并行查表装置、方法、设备及计算机可读存储介质 | |
CN116095001A (zh) | 组播路由的查找方法和装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |