基于三态地址关联存储器实现组播查表的方法及系统的制作方法

文档序号:7960337阅读:208来源:国知局
专利名称:基于三态地址关联存储器实现组播查表的方法及系统的制作方法
技术领域
本发明涉及计算机通信领域,尤其涉及一种基于三态地址关联存储器(TCAM)实现组播查表的方法及系统。
背景技术
随着Internet的迅速普及与发展,在网络上产生了许多新的高带宽需求的多媒体应用,譬如网络音频/视频广播、多媒体远程教育等,这就带来了带宽的急剧消耗和网络拥挤问题。为了缓解网络瓶颈,人们提出了各种方案,其中,IP组播技术以其独特的优越性(在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加)使它成为当前网络技术中的关键技术和研究热点之一。
PIM-SM(Protocol Independent Multicast-Sparse Mode,协议无关组播-松散模式)协议是各路由器厂商普遍支持的组播路由协议。PIM-SM通过建立组播分发树进行组播包的转发,组播分发树分为两种共享树(RPT,RendezvousPoint Tree)和最短路径树(SPT,Shortest Path Tree),由此,支持PIM-SM协议的组播转发表的表项需包括(*,G)和(S,G)两种,以便于PIM-SM支持从RPT到SPT的切换,其中S代表组播包的源地址,G代表组播包的组地址。
近年来,随着各路由器厂商和众多因特网服务提供商(ISP,Internet ServiceProvider)对组播的推动,路由器中实现对组播的支持已经成为业界的统一认识。与此同时,路由器端口速率不断提高,10Gb/s(OC-192)速率的端口已经广泛使用,对组播而言,这一速率要求路由器能够每秒钟转发高达数千万个组播分组。传统的基于软件的路由查找机制已经不能满足转发的速率要求。
现有的硬件解决方案是采用三态地址关联存储器(TCAM,Ternary ContentAddressable Memory)实现高速组播转发表查找,具体的说,利用TCAM来存储组播转发表的表项前缀,这些前缀通常是以(S,G)或者(*,G)的形式出现,利用静态随机存取存储器(SRAM,Static Random Access Memory)存储组播转发表的表项结果部分,即输出端口列表部分。其中,组播查表的次序为先查(S,G)表,(S,G)查表如果匹配命中,则直接按照(S,G)输出查表结果,查表结束,否则,需要再查(*,G),如果(*,G)命中,则输出其查表结果,如果(*,G)亦未命中,则该组播包不被转发。
但是,随着IPv4网络到IPv6网络的逐步过渡,即使采用基于TCAM实现的硬件查表方案,支持PIM-SM协议的路由器也将难以实现组播转发表的线速查找,因为组播查表的速度瓶颈将主要存在于组播查表关键字的输入时间。与IPv4的32位地址长度相比,IPv6采用128位的地址长度,这样,组播转发表前缀的长度将达到256位,对数据总线为72位的TCAM而言,需要4个查表时钟周期(Cycle)才能将相应的查表关键字输入至TCAM内部。当路由器端口速率为10Gb/s时,对40字节IP包而言,包线速转发所允许的最大处理时间单元仅为32ns,由此,要支持IPv6组播包线速查表,查表时钟周期将必须少于8ns,即TCAM查表的时钟频率需至少为125Mhz。
现有的硬件解决方案中最差情形下组播转发需要串行查找两次才能得到最终结果,即首先查找(S,G)表随后查找(*,G)才能得到查表结果,这样将至少需要8个查表时钟周期才能将两个查表关键字输入至TCAM内部进行查表。这种情况下,若要支持IPv6组播包线速查表,查表时钟周期将必须少于4ns,即查表的时钟频率需至少高达250Mhz。如此高的时钟频率一方面需要更高性能的TCAM支持,不可避免的增大路由器硬件成本,更为重要的是它将给工程实现带来很大困难。

发明内容
本发明要解决的技术问题是提供一种基于三态地址关联存储器实现组播查表的方法及系统,利用三态地址关联存储器所具有的匹配表项的输出特性一当出现多个表项都匹配的情况时,三态地址关联存储器规定在所有匹配的表项中选取地址最低的表项作为最后的查表结果输出,实现了仅需一次查找即可得出正确的组播查表结果,从而实现组播包线速转发。
为解决上述技术问题,本发明提供基于一种三态地址关联存储器实现组播查表的方法及系统,该方法包括a判断转发表中IP报头组播是否通过逆向路径转发RPF检查,如果是,则进入步骤b;否则,结束;b在三态地址关联存储器TCAM放置协议要求的(S,G)表和(*,G)表,(S,G)表的各条表项从该区域的最低地址起依次放置;(*,G)表的各条表项从该区域的最高地址起依次放置;将(S,G)表项所对应的所有比特的掩码应设置为全‘1’,(*,G)表项中的‘*’部分所对应的所有比特的掩码的应设置为全‘0’,而‘G’部分所对应的所有比特的掩码的应设置为全‘1’;生成TCAM的查表关键字按照“S&G”形式生成并输入至TCAM内部,而且关键字的输入需一次即可;c判断(S,G)表和(*,G)表中是否存在匹配表项,如果是,则输出查表结果;否则,结束。
其中,所述步骤a之前进一步包括步骤a1判断转发表中IP报头是否为组播,如果是,则取组播源地址;否则结束。
其中,所述步骤a1之前进一步包括步骤a11判断转发表中IP报头是否为有效IP包,如果是,则进入步骤a12;否则,结束;a12对IP包进行检测,如果检测通过,则进入步骤a1;否则,结束。
其中,所述步骤a1之后进一步包括判断组播是否为直连,如果是,则按协议做处理后取组播包入接口;否则,直接取组播包入接口。
其中,所述步骤a1之后进一步包括取组播源地址,进行单播查表,判断是否成功,如果是,则进入RPF检查;否则,结束。
其中,步骤b所述协议为协议无关组播-松散模式PIM-SM。
所述系统包括路由协议处理器、交换网络、转发引擎、查表电路、线卡、三态地址关联存储器、静态随机存储器;路由协议处理器用于实现集中式的路由计算,生成转发表并下发至各分布式转发引擎的从处理器中;交换网络用于完成组播包的复制;线卡用于实现组播包的分类及复制;转发引擎独立的用快速的硬件实现数据包的报头处理、转发表查找和转发;三态地址关联存储器在满足本发明方法的TCAM结构上用于存储组播转发表的表项前缀;静态随机存取存储器用于存储组播转发表的表项结果部分,即输出端口列表部分;从而实现在面向具有分布式转发、集中式路由处理结构的高性能路由器结构上采用TCAM硬件查表方案实现数据包的报头处理、转发表查找和转发。
其中,所述查表电路模块的实现是基于现场可编程门阵列FPGA来实现的,或则基于网络处理器NP、特定应用集成电路ASIC来实现。
以上技术方案看出,本发明具有如下有益效果首先,在功能上,该方法等同于(S,G)表、(*,G)表两次串行查找,实现了PIM-SM协议的查表功能需求;其次,在性能上,该方法仅需一次查找即可得出正确的组播查表结果,使得组播查表所需时间变为最短,可更加方便的实现组播转发表的线速查找;同时,对组播转发表需两次串行查找的问题而言,常见的解决方法是利用两个独立的器件实现(S,G)表、(*,G)表分离存储,利用两套独立的组播查表电路实现并行查找,利用结果判断电路实现对两个并行查表结果的读取和最终输出结果判断。与上述常见方法相比,本发明仅需一片TCAM、一套组播查表电路实现相同功能,还免除了常见方法中所需的结果判断电路。从而使得本发明实现简单,成本低。


图1是TCAM的查找结构示意图。
图2是一实施例支持PIM-SM协议的组播包转发流程图。
图3是基于TCAM匹配特性实现的线速组播查表方法的表项放置示意图。
图4是本发明系统图。
具体实施例方式
本发明为一种基于三态地址关联存储器实现组播查表的方法及系统,利用三态地址关联存储器所具有的匹配表项的输出特性—当出现多个表项都匹配的情况时,三态地址关联存储器规定在所有匹配的表项中选取地址最低的表项作为最后的查表结果输出,实现了仅需一次查找即可得出正确的组播查表结果,从而实现组播包线速转发。
为便于对本发明进一步理解,现结合附图对本发明方法进行详细描述。
请参阅图1所示TCAM的查找结构示意图,本发明所述方法采用基于TCAM匹配表项的输出特性实现组播查表方案,其中TCAM采用了并行查找技术,无论条目数量有多大,都可以一次匹配命中,TCAM的优点还在于它所保存的表项在长度要求上非常灵活,可以在同一个TCAM芯片中保存任意长度的关键字表项。TCAM中每一个表项都是以<地址、掩码>序偶的形式保存,假设地址关键字的长度范围从1到W,那么地址和掩码分别占用W比特。对于关键字长度为Y(1≤Y≤W)的表项来说,它的掩码前Y个比特为1,而剩下的W-Y比特为0,它的地址后W-Y个比特可以是0或者1。例如,假设W为5,那么地址前缀10*就可以用序偶<10000,11000>表示。在表项的匹配查找中,TCAM将查找关键字与其内部存储的各表项相匹配,判断是否相等,如果相等表示关键字与该表项匹配;否则不匹配。
请参阅图3所示本发明方法的表项放置示意图,TCAM内部组播转发表表项前缀的放置是根据组播转发表表项的容量需求划定TCAM的一个区域,用来放置组播转发表表项的前缀部分,该区域能够存放M+N条组播表项,其中地址1至地址M所对应存储区域存放的是(S,G)形式的组播表项,共能容纳M条该形式的表项,放置时要求从地址1起依次放置,其中地址M+1至地址M+N所对应的存储区域存放的是(*,G)形式的组播表项,共能容纳N条该形式的表项,放置时要求从地址M+N起依次放置。M和N可根据具体的需求设定。
其中,所述组播转发表如下表所示表1

同时,在(S,G)表和(*,G)表放置在TCAM内部后,还需针对每一条表项放置相应的掩码,对应图3中,要求地址1至地址M所对应存储区域内每条(S,G)表项的掩码都设置为‘1’,即(S,G)表项所有比特位都参与TCAM内部的并行比较;地址M+1至地址M+N所对应存储区域内每条(*,G)表项中的‘*’部分所对应的掩码的都设置为全‘0’,而‘G’部分所对应的掩码的都设置为全‘1’,即(*,G)表项中只有‘G’部分所对应的比特位都参与TCAM内部的并行查找。
并且,组播查表电路在生成TCAM的查表关键字时,无论查找的是(S,G)表或者(*,G)表情况,该方法要求关键字都应按照“S&G”格式生成并输入至TCAM内部,而且关键字的输入仅需一次,即仅需一次查表即可。其中,‘&’代表连接符,‘S’代表该组播包的源地址,‘G’代表该组播包的组地址。
在符合上述结构的TCAM下,如图2所示一实施例支持PIM-SM协议的组播包转发流程图,包括步骤201判断IP报头是否为有效IP包,如果是,则转入步骤203;否则,转入步骤202;步骤202将无效IP包根据差错做相应处理;步骤203对IP包进行安全检测是否通过,如果是,则转入步骤205;否则,转入步骤204;步骤204如果IP包未通过安全检测,则丢弃该IP包;步骤205对通过安全检测的IP包,判断是否为组播,如果是,则转入步骤207,并取组播源地址;否则,转入步骤206;其中,IP数据包包括单播(unicast)、广播(broadcast)和组播(multicast)。
步骤206将不是组播的IP包按照报文类型做相应处理;步骤207判断组播是否为直连,如果是,则转入步骤211;否则,转入步骤210;步骤208~步骤209取组播源地址后,判断单播查表是否成功,如果是,则转入步骤212;否则,转入步骤214;步骤210如果组播不是直连,取组播包入接口,转入步骤212;步骤211如果组播是直连,按协议做相应处理后转入步骤212;步骤212~步骤213用RPF检查组播,判断是否通过,如果是,则转入步骤216;否则,转入步骤215;步骤214单播查表不成功的报文丢弃;步骤215将没有通过逆向路径转发RPF检查的组播丢弃,并按协议做相应处理;
步骤216判断(S,G)、(*,G)表中是否存在匹配表项,如果是,则转入步骤218;否则,转入步骤217;其中,在判断(S,G)、(*,G)表中是否存在匹配表项时,可能会出现如下三种情况情况1、(S,G)表中存在匹配表项的情况,这种情况下,因为本发明TCAM内每条(S,G)表项的掩码都设置为‘1’,每条(*,G)表项中的‘*’部分所对应的掩码的都设置为全‘0’,而‘G’部分所对应的掩码的都设置为全‘1’,即(S,G)表项所有比特位都参与TCAM内部的并行比较,而(*,G)表项中只有‘G’部分所对应的比特位都参与TCAM内部的并行查找,并且组播查表电路在生成TCAM的查表关键字时,无论查找的是(S,G)表或者(*,G)表情况,都要求关键字的输入仅需一次,因此使得TCAM中必然出现(S,G)表和(*,G)表都存在匹配表项的情况。当出现多个表项都匹配的情况时,TCAM规定在所有匹配的表项中选取地址最低的表项作为最后的查表结果输出,这是TCAM重要的匹配特性。同时由于本发明根据组播转发表表项的容量需求划定TCAM的一个区域,用来放置组播转发表表项的前缀部分,还要求在该区域内能够同时放置PIM-SM协议要求的(S,G)表和(*,G)表两种组播表项,并且(S,G)表的各条表项从该区域的最低地址起依次放置;(*,G)表的各条表项从该区域的最高地址起依次放置,这样TCAM输出的将是基于(S,G)表匹配表项的查表结果,而(*,G)表匹配表项的查表结果将被忽略。所以,该情况下本发明可仅需一次组播查表即能得出正确的(S,G)表的查表结果。
情况2、(S,G)表中无匹配表项,(*,G)表中存在匹配表项的情况,这种情况下,因为本发明TCAM结构内每条(S,G)表项的掩码都设置为‘1’,每条(*,G)表项中的‘*’部分所对应的掩码的都设置为全‘0’,而‘G’部分所对应的掩码的都设置为全‘1’,即(S,G)表项所有比特位都参与TCAM内部的并行比较,而(*,G)表项中只有‘G’部分所对应的比特位都参与TCAM内部的并行查找,并且组播查表电路在生成TCAM的查表关键字时,无论查找的是(S,G)表或者(*,G)表情况,都要求关键字的输入仅需一次,因此使得TCAM中仅出现(*,G)表存在匹配的表项,TCAM输出的将是基于(*,G)表匹配表项的查表结果。因此,该情况下本发明也可仅需一次查表即能得出正确的(*,G)表的查表结果。
情况3、(S,G)表和(*,G)表中都不存在匹配表项的情况,这种情况下,TCAM中必然也不存在匹配的表项,查表结束,组播包不被转发。
步骤217对不匹配的表项,丢弃该报文,并按协议做相应处理;步骤218对查表得出的匹配的表项实现转发。
利用上述所述方法,本发明还提供一种基于三态地址关联存储器实现组播查表的系统,参阅图4所示本发明系统图。
该系统400包括路由协议处理器401、交换网络402、转发引擎403、查表电路404、线卡405、三态地址关联存储器406、静态随机存储器407、转发引擎408、查表电路409、线卡410、三态地址关联存储器411、静态随机存储器412;其中403~407单元为一个查表单元;408~412单元为另一个查表单元,这两个查表单元是独立的。
路由协议处理器401用于实现集中式的路由计算,生成转发表并下发至各分布式转发引擎的从处理器中;交换网络402用于完成组播包的复制;转发引擎403独立的用快速的硬件实现数据包的报头处理、转发表查找和转发;线卡405用于实现组播包的分类及复制;三态地址关联存储器411在满足本发明方法的TCAM结构上用于存储组播转发表的表项前缀,这些前缀通常是以(S,G)或者(*,G)的形式出现;静态随机存取存储器407用于存储组播转发表的表项结果部分,即输出端口列表部分。其中,408~412各单元与403~407各对应单元的功能一致;从而实现在面向具有分布式转发、集中式路由处理结构的高性能路由器结构上采用TCAM硬件查表方案实现数据包的报头处理、转发表查找和转发。
其中,查表电路模块409的实现可以是基于FPGA(Field Programable GateArray,现场可编程门阵列)来实现的,还可以采用基于NP(Network Processor,网络处理器)、ASIC(Application Specific Integrated Circuit,特定应用集成电路)等来实现。
此外,本实施例不仅适合于PIM-SM协议,而且还适合于协议无关组播源特定组播(PIM-SSM Protocol Independent Muiticast-Source Specific Multicast)协议。
以上对本发明所提供的一种基于三态地址关联存储器实现组播查表的方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员来说,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种基于三态地址关联存储器实现组播查表的方法,其特征在于,包括步骤a判断转发表中IP报头组播是否通过逆向路径转发RPF检查,如果是,则进入步骤b;否则,结束;b在三态地址关联存储器TCAM放置协议要求的(S,G)表和(*,G)表,(S,G)表的各条表项从该区域的最低地址起依次放置;(*,G)表的各条表项从该区域的最高地址起依次放置;将(S,G)表项所对应的所有比特的掩码应设置为全‘1’,(*,G)表项中的‘*’部分所对应的所有比特的掩码的应设置为全‘0’,而‘G’部分所对应的所有比特的掩码的应设置为全‘1’;生成TCAM的查表关键字统一按照“S&G”形式生成并输入至TCAM内部,而且关键字的输入需一次即可;c判断(S,G)表和(*,G)表中是否存在匹配表项,如果是,则输出查表结果;否则,结束。
2.如权利要求1所述基于三态地址关联存储器实现组播查表的方法,其特征在于,步骤a之前进一步包括步骤a1判断转发表中IP报头是否为组播,如果是,则取组播源地址;否则结束。
3.如权利要求2所述基于三态地址关联存储器实现组播查表的方法,其特征在于,步骤a1之前进一步包括步骤a11判断转发表中IP报头是否为有效IP包,如果是,则进入步骤a12;否则,结束;a12对IP包进行安全检测,如果检测通过,则进入步骤a1;否则,结束。
4.如权利要求2所述基于三态地址关联存储器实现组播查表的方法,其特征在于,步骤a1之后进一步包括判断组播是否为直连,如果是,则按协议做处理后取组播包入接口;否则,直接取组播包入接口。
5.如权利要求2所述基于三态地址关联存储器实现组播查表的方法,其特征在于,步骤a1之后进一步包括取组播源地址,进行单播查表,判断是否成功,如果是,则进入RPF检查;否则,结束。
6.如权利要求1所述基于三态地址关联存储器实现组播查表的方法,其特征在于,步骤b所述协议为协议无关组播-松散模式PIM-SM。
7.一种基于三态地址关联存储器实现组播查表的系统,其特征在于,包括路由协议处理器、交换网络、转发引擎、查表电路、线卡、三态地址关联存储器、静态随机存储器;路由协议处理器用于实现集中式的路由计算,生成转发表并下发至各分布式转发引擎的从处理器中;交换网络用于完成组播包的复制;线卡用于实现组播包的分类及复制;转发引擎独立的用快速的硬件实现数据包的报头处理、转发表查找和转发;三态地址关联存储器在满足本发明方法的TCAM结构上用于存储组播转发表的表项前缀;静态随机存取存储器用于存储组播转发表的表项结果部分,即输出端口列表部分;从而实现在面向具有分布式转发、集中式路由处理结构的高性能路由器结构上采用TCAM硬件查表方案实现数据包的报头处理、转发表查找和转发。
8.如权利要求7所述基于三态地址关联存储器实现组播查表的系统,其特征在于,查表电路模块的实现是基于现场可编程门阵列FPGA来实现的,或则基于网络处理器NP、特定应用集成电路ASIC来实现。
全文摘要
本发明公开了一种基于三态地址关联存储器(TCAM)实现组播查表的方法及系统,该方法包括判断转发表中IP报头组播是否通过RPF检查,如果是,则在TCAM指定区域内放置协议要求的(S,G)表和(*,G)表,(S,G)表的各条表项从该区域的最低地址起依次放置;(*,G)表的各条表项从该区域的最高地址起依次放置;将(S,G)表项对应的所有比特的掩码设置为全“1",(*,G)表项中的“*”部分对应的所有比特的掩码的设置为全“0”,而“G”部分对应的所有比特的掩码的设置为全“1”;生成TCAM的查表关键字则统一按照“S&G”形式生成并输入至TCAM内部,而且关键字的输入需一次即可;判断(S,G)表和(*,G)表中是否存在匹配表项,如果是,则输出查表结果;否则,结束。
文档编号H04L12/54GK1870564SQ20061007650
公开日2006年11月29日 申请日期2006年5月8日 优先权日2006年5月8日
发明者汪斌强, 李玉峰, 伊鹏, 王雨, 韩国栋 申请人:国家数字交换系统工程技术研究中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1