一种基于网络处理器实现硬件表遍历的方法及装置的制造方法_3

文档序号:9921840阅读:来源:国知局
[0076]计数器mac_cache_counter用来计数匹配表项的数目,每次获取MAC地址前CPU软件应将mac_cache_counter清零。由于硬件计数器的加I与返回计数值的操作是不可分割的原子操作,当微码程序mac_iter_process多次执行,对mac_cache_counter进行密集的加I返回操作时,每次操作返回的计数值C都能正确反映当前的计数结果,因此缓存表mac_cache_table的写入不会出现混乱,所有匹配的M条表项可以正确写入缓存表mac_cache_table 的前 M 项。
[0077]CPU等待所有复制报文都处理完,就可以直接读计数器mac_cache_counter获取MAC地址的匹配总数M,并读取mac_cache_table的前M项上报。具体实施中可通过实验确定CPU的等待时长。这一等待时长应保证,当前MAC地址总数达到线卡支持的最大MAC地址数,也就是MAC地址表sys_mac_table的表大小N时,所有复制报文都能通过微码程序mac_iter_process 处理完成。
[0078]从CPU软件将计数器mac_cache_counter清零,发送获取MAC地址的CPU报文开始,到最后CPU读取完成所有匹配的MAC地址信息,这一过程应该保证不被打断,相应的CPU软件的代码区间应该使用信号量等方式来保证互斥。这样做可以防止CPU连续执行获取MAC地址的操作时,对计数器mac_cache_counter与缓存表mac_cache_table操作混乱的竞争问题。在此只讨论了获取线卡指定端口上所有MAC地址的情形。获取线卡指定vlan上所有MAC地址,与获取线卡指定端口 +指定vlan上所有MAC地址的情形,也适用于上述处理流程,这里不再赘述。
[0079]为了更好地实现上述目的,如图9所示,本发明实施例还提供了一种基于网络处理器实现硬件表遍历的装置90,上述装置80包括:
[0080]接收模块91,用于接收CPU报文,CPU报文携带硬件表项的匹配信息;
[0081]配置模块92,用于根据硬件表项的总数,配置复制寄存器,复制寄存器的数值为需要复制CPU报文的份数,复制寄存器的数值等于硬件表项总数;
[0082]复制模块93,用于根据复制寄存器的数值,复制CPU报文,并给复制的每个CPU报文分配一个复制序号,复制序号为CPU报文复制时的顺序号;
[0083]判断模块94,用于逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配;
[0084]更新模块95,用于当硬件表项的信息与CPU报文的匹配信息匹配时,将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。
[0085]其中,装置90还包括:
[0086]获取模块,用于根据计数器的值,从缓存表中获取保存的硬件表项。
[0087]其中,装置90还包括:
[0088]丢弃模块,用于丢弃复制序号对应的CPU报文。
[0089]其中,配置模块92包括:
[0090]检测单元,用于检测CPU报文的类型信息;
[0091 ]启动单元,用于根据类型信息,配置复制寄存器。
[0092]其中,判断模块94包括:
[0093]第一单元,用于根据复制后的CPU报文的复制序号,获取硬件表项索引号等于该复制序号的硬件表项;
[0094]第二单元,用于判断CPU报文的匹配信息与获取的硬件表项的信息是否匹配。
[0095]在本发明的具体实施例中,上述接收模块91、配置模块92、复制模块93、判断模块94以及更新模块95的功能都可以通过网络处理器的接收模块、微码模块以及逻辑多播模块实现。
[0096]以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种基于网络处理器实现硬件表遍历的方法,其特征在于,包括: 接收CPU报文,所述CPU报文携带硬件表项的匹配信息; 根据所述硬件表项的总数,配置复制寄存器,所述复制寄存器的数值为需要复制所述CPU报文的份数,所述复制寄存器的数值等于硬件表项总数; 根据所述复制寄存器的数值,复制所述CPU报文,并给复制的每个CPU报文分配一个复制序号,所述复制序号为所述CPU报文复制时的顺序号; 逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与所述CPU报文的匹配信息是否匹配; 若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。2.如权利要求1所述的方法,其特征在于,所述若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值的步骤之后,所述方法还包括: 根据计数器的值,从所述缓存表中获取保存的硬件表项。3.如权利要求1所述的方法,其特征在于,所述根据所述硬件表项的总数,配置复制寄存器的步骤包括: 检测所述CPU报文的类型信息; 根据所述类型信息,配置复制寄存器。4.如权利要求1所述的方法,其特征在于,所述逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与所述CPU报文的匹配信息是否匹配的步骤包括: 根据复制后的CPU报文的复制序号,获取硬件表项索引号等于该复制序号的硬件表项; 判断所述CPU报文的匹配信息与获取的硬件表项的信息是否匹配。5.如权利要求4所述的方法,其特征在于,所述若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值的步骤之后,所述方法还包括: 丢弃复制序号对应的CPU报文。6.一种基于网络处理器实现硬件表遍历的装置,其特征在于,包括: 接收模块,用于接收CPU报文,所述CPU报文携带硬件表项的匹配信息; 配置模块,用于根据所述硬件表项的总数,配置复制寄存器,所述复制寄存器的数值为需要复制所述CPU报文的份数,所述复制寄存器的数值等于硬件表项总数; 复制模块,用于根据所述复制寄存器的数值,复制所述CPU报文,并给复制的每个CPU报文分配一个复制序号,所述复制序号为所述CPU报文复制时的顺序号; 判断模块,用于逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与所述CPU报文的匹配信息是否匹配; 更新模块,用于当硬件表项的信息与所述CPU报文的匹配信息匹配时,将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。7.如权利要求6所述的装置,其特征在于,所述装置还包括: 获取模块,用于根据计数器的值,从所述缓存表中获取保存的硬件表项。8.如权利要求6所述的装置,其特征在于,所述配置模块包括: 检测单元,用于检测所述CPU报文的类型信息; 启动单元,用于根据所述类型信息,配置复制寄存器。9.如权利要求6所述的装置,其特征在于,所述判断模块包括: 第一单元,用于根据复制后的CPU报文的复制序号,获取硬件表项索引号等于该复制序号的硬件表项; 第二单元,用于判断所述CPU报文的匹配信息与获取的硬件表项的信息是否匹配。10.如权利要求9所述的装置,其特征在于,所述装置还包括: 丢弃模块,用于丢弃复制序号对应的CPU报文。
【专利摘要】本发明提供了一种基于网络处理器实现硬件表遍历的方法及装置,上述方法包括:接收CPU报文,CPU报文携带硬件表项的匹配信息;根据硬件表项的总数,配置复制寄存器,复制寄存器的数值为需要复制CPU报文的份数,复制寄存器的数值等于硬件表项总数;根据复制寄存器的数值,复制CPU报文,并给复制的每个CPU报文分配一个复制序号,复制序号为CPU报文复制时的顺序号;逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配;若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值,本发明的方法能有效减少网络处理器中大容量硬件表遍历及匹配硬件表项批量上报的平均响应时间。
【IPC分类】G06F9/44
【公开号】CN105700859
【申请号】
【发明人】黄治文, 张文军
【申请人】中兴通讯股份有限公司
【公开日】2016年6月22日
【申请日】2014年11月25日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1