一种表项读取方法、装置及网络设备制造方法及图纸

技术编号:34468216 阅读:40 留言:0更新日期:2022-08-10 08:41
本发明专利技术提供一种表项读取方法、装置及网络设备,该方法包括,接收到读命令后,选择目标控制器,在相应的控制器标识缓存队列添加目标控制器标识,将读命令添加到对应的子命令缓存队列,将读命令发送给控制器,并将相应的模块标识添加至模块标识缓存队列;接收到表项后,获取模块标识缓存队列中最先存储的模块标识,将表项添加至对应的对应的子表项缓存队列,根据对应的控制器标识缓存队列中控制器标识添加的先后顺序,将子表项缓存队列中的表项发送至对应的接口模块。接口模块和控制器可以交叉传输读命令和表项,如果某一控制器故障,可以使用其他控制器,从而提高表项读取的可靠性;接口模块和控制器之间的接口的带宽可以共享,提高带宽的利用率。高带宽的利用率。高带宽的利用率。

【技术实现步骤摘要】
一种表项读取方法、装置及网络设备


[0001]本专利技术涉及通信
,特别涉及一种表项读取方法、装置及网络设备。

技术介绍

[0002]随着网络技术的发展,路由器的路由表查询面临着高可靠性的挑战。双倍速率(Double Data Rate,DDR)同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)具有大容量和低成本的特点,通常用来存储路由表。
[0003]如图1所示,为相关技术中多个100G接口查表访问DDR的方案的架构图,包括表项配置模块101、查表引擎102、6个接口模块103、6个DDR控制器104和6个DDR SDRAM105,其中,各个接口模块103和各个DDR控制器104之间通过DDR接口连接。具体工作过程为:中央处理器(Central Processing Unit,CPU)调用表项配置模块101将路由表配置到各个DDR SDRAM105中;查表引擎102接收到报文后,对报文进行解析得到表项的存储地址,再触发与该存储地址对应的接口模块103,并向与该接口模块103对应的DDR控制器104发送读命令;该DDR控制器104接收到该读命令后,从与其对应的DDR SDRAM105中获取表项,并将该表项返回至与该DDR控制器104对应的接口模块103。
[0004]上述方案,接口模块、DDR控制器和DDR SDRAM是一一对应的,若某一DDR控制器故障,则无法处理对应的接口模块发送的读命令,从而会影响查表访问;并且,DDR接口之间的带宽不能共享。综上,现有技术中多接口DDR查表访问时可靠性低且不能最大利用其带宽。

技术实现思路

[0005]本专利技术实施例提供一种表项读取方法、装置及网络设备,用以解决现有技术中存在的多接口DDR查表访问时可靠性低且不能最大利用其带宽的问题。
[0006]第一方面,本专利技术实施例提供一种表项读取方法,应用于网络设备的表项读取器件包括的交叉模块中,所述表项读取器件还包括至少两个接口模块、至少两个控制器以及与每个控制器对应的存储器,所述方法包括:
[0007]接收所述至少两个接口模块中的任意接口模块发送的读命令后,根据各个控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息和预设轮询规则确定目标控制器,在所述任意接口模块对应的控制器标识缓存队列中添加所述目标控制器的控制器标识,并将所述读命令添加到所述目标控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列中;以及,
[0008]按照负载均衡原则将各个控制器的各个命令缓存队列包括的各个子命令缓存队列中的读命令发送给对应的控制器,并将发送的读命令所在的子命令缓存队列对应的接口模块的模块标识添加到所述发送的读命令对应的控制器的模块标识缓存队列中,以使各个控制器从对应的存储器获取接收到的读命令对应的表项;以及,
[0009]接收所述至少两个控制器中的任意控制器返回的表项后,从所述任意控制器对应的模块标识缓存队列中获取最先存储的目标模块标识,将接收到的表项添加到与所述目标
模块标识对应的接口模块的表项缓存队列中与所述任意控制器对应的子表项缓存队列中;以及,
[0010]根据各个接口模块对应的控制器标识缓存队列中各个控制器标识添加的先后顺序,将各个接口模块的各个表项缓存队列中与各个控制器对应的子表项缓存队列中的表项发送给对应的接口模块。
[0011]基于上述方案,由于接口模块、控制器和存储器可以交叉传输读命令和表项,如果某一控制器故障,可以使用其他控制器,从而可以提高表项读取的可靠性,此外,由于接口模块、控制器和存储器不是一一对应的,因此,接口模块和控制器之间的接口的带宽可以共享,从而可以提高带宽的利用率。
[0012]在一种可能的实现方式中,所述根据各个控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息和预设轮询规则确定目标控制器,包括:
[0013]根据预设轮询规则确定上一次确定的目标控制器之后的候选控制器;
[0014]确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息;
[0015]若确定与所述任意接口模块对应的子命令缓存队列的状态信息为繁忙状态,则将所述候选控制器更新为所述候选控制器之后的控制器,执行所述确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息的步骤;
[0016]若确定与所述任意接口模块对应的子命令缓存队列的状态信息为非繁忙状态,则将所述候选控制器确定为本次的目标控制器。
[0017]基于上述方案,通过预设轮询规则确定候选控制器,然后确定该候选控制器的命令缓存队列中与任意接口模块对应的子命令缓存队列的状态信息,最后根据状态信息是繁忙还是非繁忙确定目标控制器,从而从候选控制器中选择非繁忙的控制器作为目标控制器,可以提高表项读取的效率。
[0018]在一种可能的实现方式中,确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息,具体包括:
[0019]获取所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列中存储的读命令的第一数量;
[0020]确定所述第一数量是否小于第一设定阈值;
[0021]若确定所述第一数量小于所述第一设定阈值,则确定与所述任意接口模块对应的子命令缓存队列的状态信息为非繁忙状态;
[0022]若确定所述第一数量不小于所述第一设定阈值,则确定与所述任意接口模块对应的子命令缓存队列的状态信息为繁忙状态。
[0023]基于上述方案,通过候选控制器的命令缓存队列中与任意接口模块对应的子命令缓存队列中存储的读命令的数量,与第一设定阈值进行比较,根据比较结果确定子命令缓存队列的状态信息为非繁忙状态或繁忙状态,由于第一设定阈值为预设的,从而可以灵活的设置子命令缓存队列的状态信息。
[0024]在一种可能的实现方式中,所述将所述候选控制器确定为本次的目标控制器之前,还包括:
[0025]确定所述候选控制器的状态信息;
[0026]若确定所述候选控制器的状态信息为异常,则将所述候选控制器更新为所述候选控制器之后的控制器,执行所述确定所述候选控制器的状态信息的步骤;
[0027]若确定所述候选控制器的状态信息为正常,则执行所述将所述候选控制器确定为本次的目标控制器的步骤。
[0028]基于上述方案,在将候选控制器确定为本次的目标控制器之前,根据候选控制器的状态信息为异常或正常,确定目标控制器,避免将异常的备选控制器作为目标控制器,从而使确定的目标控制器更准确,提高表项读取的可靠性。
[0029]在一种可能的实现方式中,所述确定所述候选控制器的状态信息,具体包括:
[0030]获取所述候选控制器发送的对获取的表项进行验证得到的错误信息;
[0031]确定获取的错误信息的第二数量是否大于第二设定阈值;
...

【技术保护点】

【技术特征摘要】
1.一种表项读取方法,其特征在于,应用于网络设备的表项读取器件包括的交叉模块中,所述表项读取器件还包括至少两个接口模块、至少两个控制器以及与每个控制器对应的存储器,所述方法包括:接收所述至少两个接口模块中的任意接口模块发送的读命令后,根据各个控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息和预设轮询规则确定目标控制器,在所述任意接口模块对应的控制器标识缓存队列中添加所述目标控制器的控制器标识,并将所述读命令添加到所述目标控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列中;以及,按照负载均衡原则将各个控制器的各个命令缓存队列包括的各个子命令缓存队列中的读命令发送给对应的控制器,并将发送的读命令所在的子命令缓存队列对应的接口模块的模块标识添加到所述发送的读命令对应的控制器的模块标识缓存队列中,以使各个控制器从对应的存储器获取接收到的读命令对应的表项;以及,接收所述至少两个控制器中的任意控制器返回的表项后,从所述任意控制器对应的模块标识缓存队列中获取最先存储的目标模块标识,将接收到的表项添加到与所述目标模块标识对应的接口模块的表项缓存队列中与所述任意控制器对应的子表项缓存队列中;以及,根据各个接口模块对应的控制器标识缓存队列中各个控制器标识添加的先后顺序,将各个接口模块的各个表项缓存队列中与各个控制器对应的子表项缓存队列中的表项发送给对应的接口模块。2.如权利要求1所述的方法,其特征在于,所述根据各个控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息和预设轮询规则确定目标控制器,包括:根据预设轮询规则确定上一次确定的目标控制器之后的候选控制器;确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息;若确定与所述任意接口模块对应的子命令缓存队列的状态信息为繁忙状态,则将所述候选控制器更新为所述候选控制器之后的控制器,执行所述确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息的步骤;若确定与所述任意接口模块对应的子命令缓存队列的状态信息为非繁忙状态,则将所述候选控制器确定为本次的目标控制器。3.如权利要求2所述的方法,其特征在于,确定所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列的状态信息,具体包括:获取所述候选控制器的命令缓存队列中与所述任意接口模块对应的子命令缓存队列中存储的读命令的第一数量;确定所述第一数量是否小于第一设定阈值;若确定所述第一数量小于所述第一设定阈值,则确定与所述任意接口模块对应的子命令缓存队列的状态信息为非繁忙状态;若确定所述第一数量不小于所述第一设定阈值,则确定与所述任意接口模块对应的子命令缓存队列的状态信息为繁忙状态。
4.如权利要求2所述的方法,其特征在于,所述将所述候选控制器确定为本次的目标控制器之前,还包括:确定所述候选控制器的状态信息;若确定所述候选控制器的状态信息为异常,则将所述候选控制器更新为所述候选控制器之后的控制器,执行所述确定所述候选控制器的状态信息的步骤;若确定所述候选控制器的状态信息为正常,则执行所述将所述候选控制器确定为本次的目标控制器的步骤。5.如权利要求4所述的方法,其特征在于,所述确定所述候选控制器的状态信息,具体包括:获取所述候选控制器发送的对获取的表项进行验证得到的错误信息;确定获取的错误信息的第二数量是否大于第二设定阈值;若确定所述第二数量大于所述第二设定阈值,则确定所述候选控制器的状态信息为异常;若确定所述第二数量不大于所述第二设定阈值,则确定所述候选控制器的状态信息为正常。6.如权利要求1所述的方法,其特征在于,所述根据各个接口模块对应的控制器标识缓存队列中各个控制器标识添加的先后顺序,将各个接口模块的各个表项缓存队列中与各个控制器对应的子表项缓存队列中的表项发送给对应的接口模块,包括:从各个接口模块对应的控制器标识缓存队列中获取最先存储的控制器标识;将各个接口模块的各个表项缓存队列中与最先存储的控制器标识对应的子表项缓存队列中存储的表项发送给对应的接口模块。7.如权利要求1

6任一所述的方法,其特征在于,所述将接收到的表项添加到与所述目标模块标识对应的接口模块的表项缓存队列中与所述任意控制器对应的子表项缓存队列中之后,还包括:从所述任意控制器对应的模块标识缓存队列中删除所述目标模块标识;所述将各个接口模块的各个表项缓存队列中与各个控制器对应的子表项缓存队列中的表项发送给对应的接口模块之后,还包括:从各个接口模块对应的控制器标识缓存队列中删除最先存储的控制器标识。8.一种表项读取装置,其特征在于,应用于网络设备的表项读取器件包括的交叉模块中,所述表项...

【专利技术属性】
技术研发人员:李阳
申请(专利权)人:锐捷网络股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1