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

文档序号:9921840阅读:317来源:国知局
一种基于网络处理器实现硬件表遍历的方法及装置的制造方法【
技术领域
】[0001]本发明涉及通信
技术领域
,特别涉及一种基于网络处理器实现硬件表遍历的方法及装置。【
背景技术
】[0002]无源光纤网络(PON)指不含有任何电子器件及电子电源的特定光通信网,包括光线路终端(OLT)、光网络单元(ONU)和光配线网(ODN)三个部分。其中OLT设备位于中心控制站,多个ONU安装于用户场所。在OLT与ONU之间的ODN包含光纤以及无源分光器或者耦合器,但不包含任何有源电子设备。因此,PON网络具有无供电压力、环境适应性强、不受电磁雷电干扰等优势。将PON技术用于接入网建设还可以节约机房建设成本,降低运营维护费用。随着以太无源光网络(EPON)技术的出现,使得EPON无源光接入网成为新一代光接入网建设的主要选择之一。[0003]网络处理器是一种可编程器件,特定应用于通信网络的各种任务,比如报文处理、协议分析、路由查找等。网络处理器独特的硬件设计,使其凭借灵活的编程方式和高效的报文处理在OLT设备中得到广泛应用。OLT设备中有很多应用需要大容量硬件表支持,比如硬件MAC地址表。当中央处理器CPU需要获取大容量硬件表中符合某类特征的所有表项时,如何快速遍历大容量硬件表,并将匹配表项批量上报,成为OLT设备驱动程序开发的技术难题之一。[0004]依靠CPU逐项读取芯片中的大容量硬件表进行遍历,CPU和芯片需要交互大量的读表消息,这种方法的效率很低。为了快速遍历大容量硬件表,可以设计专门的硬件搜索引擎,使其在CPU控制下直接遍历硬件表,但这种方法对芯片硬件有较高要求,增加了开发成本。【
发明内容】[0005]本发明的目的在于提供一种基于网络处理器实现硬件表遍历的方法及装置,能有效减少网络处理器中大容量硬件表遍历及匹配硬件表项批量上报的平均响应时间。[0006]为了达到上述目的,本发明的实施例提供了一种基于网络处理器实现硬件表遍历的方法,上述方法包括:[0007]接收CPU报文,CPU报文携带硬件表项的匹配信息;[0008]根据硬件表项的总数,配置复制寄存器,复制寄存器的数值为需要复制CPU报文的份数,复制寄存器的数值等于硬件表项总数;[0009]根据复制寄存器的数值,复制CPU报文,并给复制的每个CPU报文分配一个复制序号,复制序号为CPU报文复制时的顺序号;[0010]逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配;[0011]若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。[0012]其中,若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值的步骤之后,方法还包括:[0013]根据计数器的值,从缓存表中获取保存的硬件表项。[0014]其中,根据硬件表项的总数,配置复制寄存器的步骤包括:[0015]检测CPU报文的类型信息;[0016]根据类型信息,配置复制寄存器。[0017]其中,逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配的步骤包括:[0018]根据复制后的CPU报文的复制序号,获取硬件表项索引号等于该复制序号的硬件表项;[0019]判断CPU报文的匹配信息与获取的硬件表项的信息是否匹配。[0020]其中,若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值的步骤之后,方法还包括:[0021]丢弃复制序号对应的CPU报文。[0022]本发明实施例还提供了一种基于网络处理器实现硬件表遍历的装置,上述装置包括:[0023]接收模块,用于接收CPU报文,CPU报文携带硬件表项的匹配信息;[0024]配置模块,用于根据硬件表项的总数,配置复制寄存器,复制寄存器的数值为需要复制CPU报文的份数,复制寄存器的数值等于硬件表项总数;[0025]复制模块,用于根据复制寄存器的数值,复制CPU报文,并给复制的每个CPU报文分配一个复制序号,复制序号为CPU报文复制时的顺序号;[0026]判断模块,用于逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配;[0027]更新模块,用于当硬件表项的信息与CPU报文的匹配信息匹配时,将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。[0028]其中,装置还包括:[0029]获取模块,用于根据计数器的值,从缓存表中获取保存的硬件表项。[0030]其中,配置模块包括:[0031]检测单元,用于检测CPU报文的类型信息;[0032]启动单元,用于根据类型信息,配置复制寄存器。[0033]其中,判断模块包括:[0034]第一单元,用于根据复制后的CPU报文的复制序号,获取硬件表项索引号等于该复制序号的硬件表项;[0035]第二单元,用于判断CPU报文的匹配信息与获取的硬件表项的信息是否匹配。[0036]其中,装置还包括:[0037]丢弃模块,用于丢弃复制序号对应的CPU报文。[0038]本发明的上述方案的有益效果如下:[0039]在本发明实施例的基于网络处理器实现硬件表遍历的方法中,通过网络处理器的微码模块和逻辑多播模块遍历硬件表的方式,使得遍历硬件表的时间大大缩短,从而有效减少网络处理器中大容量硬件表遍历及匹配硬件表项批量上报的平均响应时间。【附图说明】[0040]图1为本发明实施例中基于网络处理器实现硬件表遍历的方法的步骤流程图;[0041]图2为本发明实施例中图1中步骤12的具体步骤流程图;[0042]图3为本发明实施例中图1中步骤14的具体步骤流程图;[0043]图4为本发明实施例中线卡和网络处理器的结构示意图;[0044]图5为本发明实施例中sys_mac_table和mac_cache_table的表项格式;[0045]图6为本发明实施例中CPU报文的报文头部的格式;[0046]图7为本发明实施例中CPU报文MAC_GET_PKT类型的报文头部的格式;[0047]图8为本发明实施例中微码程序mac_iter_process的流程图;[0048]图9为本发明实施例中基于网络处理器实现硬件表遍历的装置的结构示意图。【具体实施方式】[0049]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。[0050]本发明针对现有技术中中央处理器CPU直接遍历大容量硬件表导致响应时间过长的问题,提供了一种基于网络处理器实现硬件表遍历的方法及装置,能有效减少网络处理器中大容量硬件表遍历及匹配硬件表项批量上报的平均响应时间。[0051]如图1所示,本发明的实施例提供了一种基于网络处理器实现硬件表遍历的方法,上述方法包括:[0052]步骤11,接收CPU报文,CPU报文携带硬件表项的匹配信息;[0053]步骤12,根据硬件表项的总数,配置复制寄存器,复制寄存器的数值为需要复制CPU报文的份数,复制寄存器的数值等于硬件表项总数;[0054]步骤13,根据复制寄存器的数值,复制CPU报文,并给复制的每个CPU报文分配一个复制序号,复制序号为CPU报文复制时的顺序号;[0055]步骤14,逐一将硬件表中的硬件表项与复制后的CPU报文进行比对,判断硬件表项的信息与CPU报文的匹配信息是否匹配;[0056]步骤15,若匹配,则将匹配的硬件表项存储至预先配置的缓存表中,并更新预先配置的计数器的值。[0057]可选地,在本发明的上述实施例中,在执行完步骤15之后,上述方法还包括:根据计数器的值,从缓存表中获取保存的硬件表项。[0058]可选地,在本发明的上述实施例中,在执行完步骤15之后,上述方法还包括:丢弃复制序号对应的CPU报文。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1