流量管理装置、报文缓存方法、芯片及网络设备与流程
未命名
07-14
阅读:109
评论:0
1.本技术涉及网络技术领域,特别涉及一种流量管理装置、报文缓存方法、芯片及网络设备。
背景技术:
2.网络设备中的转发芯片通常包括流量管理内存和队列管理内存。为了转发芯片能够满足不同网络场景的需求,通常按照最严格网络场景设置流量管理内存和队列管理内存(即,将流量管理内存和队列管理内存均设置的较大,使得流量管理内存和队列管理内存能够满足各种网络场景的需求)。但是,这可能导致流量管理内存和队列管理内存中的至少一个没有被充分利用。例如,在边缘网络场景下,转发芯片对队列管理内存的需求通常较大,对流量管理内存的需求通常较小,流量管理内存可能没有被充分利用;在骨干网络场景下,转发芯片对流量管理内存的需求通常较大,对队列管理内存的需求通常较小,队列管理内存可能没有被充分利用。因此需要一种方案来提高转发芯片的内存资源的利用率。
技术实现要素:
3.本技术提供了一种流量管理装置、报文缓存方法、芯片及网络设备。技术方案如下:
4.第一方面,提供了一种流量管理装置,该流量管理装置包括共享内存。
5.该共享内存的容量小于预设容量。该共享内存用于缓存输入该共享内存的报文,以及,存储该共享内存中的报文所在队列的队列信息。其中,所述预设容量可以等于相关技术中的内部流量管理内存的容量与队列管理内存的容量之和。
6.本技术提供的技术方案,由于流量管理装置包括共享内存,该共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小芯片的面积,降低芯片的成本和功耗。由于该共享内存可以缓存报文并且可以存储该共享内存中的报文所在队列的队列信息,因此该共享内存的利用率较高,有助于避免芯片的内存资源的浪费。
7.可选的,该共享内存包括m个存储模块,该m个存储模块中包括n个共享存储模块,m ≥n,且m和n均为正整数。该共享存储模块用于缓存输入该共享存储模块的报文,和/或,存储该共享内存中的至少一个报文所在队列的队列信息。
8.可选的,m=n。当m=n时,该共享内存可以称为全共享式内存。
9.可选的,n》1,该n个共享存储模块为同构存储模块。例如,该n个共享存储模块的存储位宽相等。
10.可选的,m》n,该m个存储模块中还包括流量独享存储模块和队列独享存储模块中的至少一种。流量独享存储模块用于缓存输入该流量独享存储模块的报文。队列独享存储模块用于存储该共享内存中的至少一个报文所在队列的队列信息。其中,共享存储模块和队列独享存储模块中的任一存储模块中存储的队列信息包括:该共享存储模块中的报文所在队列的队列信息和该流量独享存储模块中的报文所在队列的队列信息中的至少一种。
circuit,asic)芯片、现场可编程门阵列(field-programmable gate array,fpga)芯片、网络处理器(networkprocessor,np)芯片或通用阵列逻辑(generic array logic,gal)芯片等。
22.第三方面,提供了一种网络设备,包括如第二方面所提供的芯片。
23.第四方面,提供了一种报文缓存方法,应用于流量管理装置,该流量管理装置包括共享内存,该共享内存的容量小于预设容量。该方法包括:流量管理装置在共享内存中缓存报文,以及,在该共享内存中存储该共享内存中的报文所在队列的队列信息。
24.可选的,该共享内存包括m个存储模块,该m个存储模块中包括n个共享存储模块,m ≥n,且m和n均为正整数。流量管理装置在共享内存中缓存报文,以及,在该共享内存中存储该共享内存中的报文所在队列的队列信息,包括:流量管理装置在共享存储模块中缓存报文;和/或,流量管理装置在共享存储模块中存储共享内存中的至少一个报文所在队列的队列信息。
25.可选的,m=n。
26.可选的,n》1,该n个共享存储模块为同构存储模块。
27.可选的,m》n,该m个存储模块中还包括流量独享存储模块和队列独享存储模块中的至少一种。流量管理装置在共享内存中缓存报文,以及,在该共享内存中存储该共享内存中的报文所在队列的队列信息,还包括:流量管理装置在流量独享存储模块中缓存报文;流量管理装置在队列独享存储模块存储共享内存中的至少一个报文所在队列的队列信息。其中,共享存储模块和队列独享存储模块中的任一存储模块中存储的队列信息包括:该共享存储模块中的报文所在队列的队列信息和该流量独享存储模块中的报文所在队列的队列信息中的至少一种。
28.可选的,该m个存储模块中包括p个流量独享存储模块和q个队列独享存储模块,m≥ n+p+q,p》1,q》1,n》1,且p和q均为整数。该n个共享存储模块为同构存储模块。该p个流量独享存储模块为同构存储模块。该q个队列独享存储模块为同构存储模块。
29.可选的,流量独享存储模块与队列独享存储模块为异构存储模块。共享存储模块与流量独享存储模块为同构存储模块,或者,共享存储模块与队列独享存储模块为同构存储模块。
30.可选的,流量独享存储模块的存储位宽与队列独享存储模块的存储位宽不相等;
31.共享存储模块的存储位宽与流量独享存储模块的存储位宽相等,或者,共享存储模块的存储位宽与队列独享存储模块的存储位宽相等。
32.可选的,流量管理装置还包括处理模块,该处理模块与共享内存连接。流量管理装置在共享内存中缓存报文,以及,在共享内存中存储该共享内存中的报文所在队列的队列信息,包括:处理模块向共享内存输入报文和该报文所在队列的队列信息中的至少一种。
33.可选的,流量管理装置还包括报文写入模块和队列管理模块,该报文写入模块与该队列管理模块连接,该报文写入模块和该队列管理模块分别与处理模块连接。流量管理装置在共享内存中缓存报文,以及,在共享内存中存储该共享内存中的报文所在队列的队列信息,还包括:报文写入模块对于待缓存的任一报文,向队列管理模块为该报文申请队列资源,根据为该报文申请的队列资源向处理模块输入该报文;队列管理模块根据报文写入模块为该报文申请的队列资源,向处理模块输入该报文所在队列的队列信息。
34.可选的,报文写入模块通过流量数据线与处理模块连接,队列管理模块通过队列数据线与处理模块连接,处理模块通过数据总线与共享内存连接。报文写入模块向处理模块输入报文,包括:报文写入模块通过流量数据线向处理模块输入报文。队列管理模块向处理模块输入报文所在队列的队列信息,包括:队列管理模块通过队列数据线向处理模块输入报文所在队列的队列信息。处理模块向共享内存输入报文和报文所在队列的队列信息中的至少一种,包括:处理模块通过数据总线向共享内存输入报文和该报文所在队列的队列信息。
35.可选的,流量管理装置还包括报文读出模块,该报文读出模块分别与共享内存和队列管理模块连接。该方法还包括:队列管理模块根据共享内存中的报文所在队列的队列信息,向报文读出模块输出该报文在该共享内存中的地址;报文读出模块用于根据该报文在该共享内存中的地址,从该共享内存中读取该报文。
36.可选的,该方法还包括:处理模块根据获取到的配置信息配置共享内存的功能,该共享内存的功能包括缓存报文并存储该报文所在队列的队列信息。
37.第四方面以及第四方面的各种可选实现方式的技术效果可以参考第一方面以及第一方面的各种可选实现方式的技术效果,这里不再赘述。
38.可选地,以上实施例中提到的芯片可以是转发芯片。
39.可选地,以上实施例中的“流量管理装置”和/或“报文缓存方法”可用于芯片;在一些实施例中,以上实施例中的“流量管理装置”和/或“报文缓存方法”可用于转发芯片。
40.第五方面,一种计算机可读存储介质,包括计算机程序或指令,当该计算机程序或指令被计算机执行时,使得所述计算机执行上述第四方面及第四方面的各种可选实现方式的方法。
41.第六方面,一种计算机程序(产品),包括计算机程序或指令,当该计算机程序或指令被计算机执行时,使得所述计算机执行上述第四方面及第四方面的各种可选实现方式的方法。
42.本技术提供的技术方案带来的有益效果是:
43.本技术提供的流量管理装置、报文缓存方法、芯片及网络设备,该流量管理装置应用于芯片,由于该流量管理装置中的共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小芯片的面积,降低芯片的成本和功耗。由于该共享内存可以缓存报文以及存储报文所在队列的队列信息,因此在边缘网络场景、骨干网络场景、城域网络场景、数据中心互联(data center interconnection,dci)网络场景、移动承载网络场景等各种网络场景下,该共享内存都可以被充分利用,该共享内存的利用率较高,有助于避免芯片的内存资源的浪费。
附图说明
44.图1是相关技术提供的转发芯片中的管理内存的一种使用状态的示意图;
45.图2是相关技术提供的转发芯片中的管理内存的另一种使用状态的示意图;
46.图3是本技术实施例提供的一种流量管理装置的结构示意图;
47.图4是本技术实施例提供的一种共享内存的结构示意图;
48.图5是本技术实施例提供的另一种共享内存的结构示意图;
49.图6是本技术实施例提供的再一种共享内存的结构示意图;
50.图7是本技术实施例提供的又一种共享内存的结构示意图;
51.图8是本技术实施例提供的又一种共享内存的结构示意图;
52.图9是本技术实施例提供的又一种共享内存的结构示意图;
53.图10是相关技术提供的管理内存的使用状态与本技术实施例提供的共享内存的使用状态的一种对比图;
54.图11是相关技术提供的管理内存的使用状态与本技术实施例提供的共享内存的使用状态的另一种对比图;
55.图12是本技术实施例提供的一种报文缓存方法的流程图;
56.图13是本技术实施例提供的一种网络设备的结构示意图。
具体实施方式
57.下面将结合附图对本技术实施方式作进一步地详细描述。
58.网络设备中的转发芯片通常包括流量管理装置以及为该流量管理装置设置的流量管理内存和队列管理内存。流量管理装置负责对进入转发芯片的报文进行缓存、调度或者丢弃等。例如,流量管理装置负责将进入转发芯片的报文缓存至流量管理内存,并从流量管理内存中调度报文以进行转发。或者,如果流量管理内存不满足报文的缓存条件(例如流量管理内存的可用存储空间过小,流量管理内存的读写带宽无法满足报文的写入),流量管理装置可以丢弃报文。报文在流量管理内存中以队列形式管理(或者说流量管理内存中的报文缓存在队列中),队列管理内存用于存储流量管理内存中的报文所在队列的队列信息,以用于报文调度。其中,流量管理装置又可以称为流量管理器(traffic manager,tm)或流量管理模块。
59.在目前的网络设备中,流量管理内存包括内部流量管理内存和外部流量管理内存。内部流量管理内存和队列管理内存均位于流量管理装置的内部(也即内部流量管理内存和队列管理内存均位于转发芯片的内部),内部流量管理内存和队列管理内存可以称为转发芯片的片内管理内存。外部流量管理内存位于流量管理装置的外部,外部流量管理内存通常挂接在转发芯片上,外部流量管理内存可以称为转发芯片的片外管理内存。其中,内部流量管理内存的读写带宽通常大于外部流量管理内存的读写带宽,内部流量管理内存的容量通常小于外部流量管理内存的容量。例如,外部流量管理内存的容量的量级一般为千兆字节(giga byte, gb)量级,考虑到芯片面积和成本,内部流量管理内存的容量的量级一般为兆字节(mega byte, mb)量级。对于进入转发芯片的任一报文,流量管理装置按照缓存策略将该报文缓存至内部流量管理内存或外部流量管理内存,并将该报文所在队列的队列信息存储至队列管理内存。
60.随着互联网的发展,网络流量持续增长,这要求网络设备需要具有更大的转发带宽,支持更多的用户接入数量。更大的转发带宽意味着会有更多的流量进入流量管理装置,这就需要为流量管理装置设置更大的流量管理内存(例如更大的内部流量管理内存)。更多的用户接入数量意味着要增加流量管理装置中的队列数量,这就需要为流量管理装置设置更大的队列管理内存。增大内部流量管理内存和队列管理内存意味着需要增大转发芯片的面积,这就容易导致转发芯片的成本和功耗增大。在实际应用中,转发芯片可能会应用到各
种网络场景,例如,边缘网络场景、骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等。在不同网络场景下,转发芯片对内部流量管理内存和队列管理内存的需求通常不同。为了转发芯片能够满足不同网络场景的需求,目前通常按照最严格网络场景设置内部流量管理内存和队列管理内存。即,将内部流量管理内存和队列管理内存均设置的较大,使得内部流量管理内存和队列管理内存能够满足各种网络场景的需求。例如,假设pmem表示内部流量管理内存的容量(或称为内部流量管理内存的大小),qmem表示队列管理内存的容量(或称为队列管理内存的大小),在不同网络场景下,内部流量管理内存的容量的取值范围为 [pmem_min,pmem_max],队列管理内存的容量的取值范围为[qmem_min,qmem_max],目前通常按照pmem_max设置内部流量管理内存,按照qmem_max设置队列管理内存,即,设置内部流量管理内存的容量为pmem_max,设置队列管理内存的容量为qmem_max,这样可以使得转发芯片满足各种网络场景的需求。
[0061]
但是,按照最严格网络场景设置内部流量管理内存和队列管理内存,容易导致流量管理内存和队列管理内存中的至少一个没有被充分利用,造成流量管理内存或队列管理内存的浪费,并且转发芯片的面积、成本以及功耗均较大。例如,在边缘网络场景下,转发芯片对队列管理内存的需求通常较大,对流量管理内存的需求通常较小,按照最严格网络场景设置内部流量管理内存和队列管理内存,容易导致内部流量管理内存没有被充分利用。再例如,在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,转发芯片对流量管理内存的需求通常较大,对队列管理内存的需求通常较小,按照最严格网络场景设置内部流量管理内存和队列管理内存,容易导致队列管理内存没有被充分利用。
[0062]
示例的,请参考图1和图2,图1是相关技术提供的转发芯片应用于边缘网络场景下,该转发芯片中的内部流量管理内存和队列管理内存的使用状态的示意图。图2是相关技术提供的转发芯片应用于骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,该转发芯片中的内部流量管理内存和队列管理内存的使用状态的示意图。在图1 和图2中,正方形小块(包括斜杠充填的正方形小块、网格充填的正方形小块以及未充填的正方形小块)均表示存储模块(或者说基本存储单元),斜杠充填的正方形小块表示缓存有报文的存储模块,网格充填的正方形表示存储有队列信息的存储模块,未充填的正方形小块表示未被占用的存储模块(或者说处于空闲状态的存储模块)。如图1所示,队列管理内存中的全部存储模块被占用,内部流量管理内存中存在较多的存储模块处于空闲状态,因此在边缘网络场景下内部流量管理内存没有被充分利用。如图2所示,内部流量管理内存中的全部存储模块被占用,队列管理内存中存在较多的存储模块处于空闲状态,因此在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下队列管理内存没有被充分利用。下面介绍图1和图2的内部流量管理内存和队列管理内存的使用状态的原理。
[0063]
在边缘网络场景下,网络设备的用户接入数量较多,并且流量管理装置通常以用户粒度进行报文缓存。例如,流量管理装置将对应于同一用户的报文缓存在同一队列中,将对应于不同用户的报文缓存在不同队列中,并将这些队列的队列信息存储在队列管理内存中。因此,队列管理内存需要存储的队列信息较多,队列管理内存中的大部分甚至全部存储模块被占用 (图1示出的是队列管理内存中的全部存储模块被占用的情况)。此外,在边缘
网络场景下,网络流量通常较小,转发芯片的实际使用带宽往往小于该转发芯片的转发带宽(指的是转发芯片实际所拥有的带宽,转发芯片的转发带宽表征该转发芯片的转发能力),转发芯片对流量管理内存的读写带宽的需求通常较小,外部流量管理内存的读写带宽基本可以满足转发芯片的对流量管理内存的读写带宽的需求。例如,某一转发芯片的转发带宽为3.2tbps(tera bytesper second),该转发芯片的实际使用带宽为2tbps,该转发芯片对流量管理内存的读写带宽的实际需求为2
×
2tbps=4tbps,外部流量管理内存的读写带宽可以大于4tbps。因此,流量管理装置可以将大部分报文缓存至外部流量管理内存,而内部流量管理内存中缓存的报文较少,使得内部流量管理内存中的大部分存储模块处于空闲状态。如图1所示,内部流量管理内存中存在较多的存储模块处于空闲状态,内部流量管理内存没有被充分利用。
[0064]
在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,流量管理装置通常以较粗粒度进行报文缓存。例如流量管理装置将对应于多个用户的报文缓存在同一队列中。因此,队列管理内存需要存储的队列信息较少,队列管理内存中的大部分存储模块处于空闲状态,队列管理内存没有被充分利用。例如,队列管理内存的容量为b,该队列管理内存可以存储m个队列的队列信息,而实际需要的队列数量可能为0.02m,队列管理内存中可能只有0.02b的存储模块被占用,0.98b的存储模块处于空闲状态(也即队列管理内存中仅2%的存储模块被使用,98%的存储模块处于空闲状态),如图2所示,队列管理内存中存在较多的存储模块处于空闲状态,队列管理内存没有被充分利用。此外,在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,网络流量通常较大,转发芯片的实际使用带宽往往接近甚至等于该转发芯片的转发带宽,该转发芯片对流量管理内存的读写带宽的需求通常较大,外部流量管理内存的读写带宽通常无法满足转发芯片的对流量管理内存的读写带宽的需求,而内部流量管理内存的读写带宽一般远远满足转发芯片的对流量管理内存的读写带宽的需求。例如,某一转发芯片的转发带宽为3.2tbps,该转发芯片的实际使用带宽为3.2tbps,该转发芯片对流量管理内存的读写带宽的实际需求为2
×ꢀ
3.2tbps=6.4tbps,外部流量管理内存的读写带宽通常小于6.4tbps,内部流量管理内存的读写带宽通常远大于6.4tbps。因此,在这些网络场景下,流量管理装置可以将大部分报文缓存至内部流量管理内存,使得内部流量管理内存中的大部分甚至全部存储模块被占用(图2示出的是内部流量管理内存中的全部存储模块被占用的情况)。由于在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,流量管理装置会将大部分报文缓存至内部流量管理内存,因此,为了尽可能的降低转发芯片的丢包率,针对这些网络场景一般需要设置比较大的内部流量管理内存,但是这容易导致芯片面积、成本以及功耗的增大。
[0065]
有鉴于目前的转发芯片的面积、成本以及功耗均较大,且转发芯片中的内部流量管理内存以及队列管理内存的利用率较低的问题。本技术实施例提供了一种流量管理装置、报文缓存方法、转发芯片及网络设备。该流量管理装置应用于转发芯片,该流量管理装置包括共享内存,该共享内存的容量小于预设容量,该共享内存用于缓存报文以及存储该共享内存中的报文所在队列的队列信息。由于该共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小转发芯片的面积,降低转发芯片的成本和功耗。由于该共享内存可以缓存报文以及存储该共享内存中的报文所在队列的队列信息,因此在边缘网络场
景、骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等各种网络场景下,该共享内存都可以被充分利用,该共享内存的利用率较高,有助于避免转发芯片的内存资源的浪费。其中,所述预设容量可以等于相关技术中的内部流量管理内存的容量与队列管理内存的容量之和。
[0066]
下面对本技术的技术方案进行介绍,首先介绍本技术的流量管理装置的实施例。
[0067]
请参考图3,其示出了本技术实施例提供的一种流量管理装置的结构示意图。该流量管理装置应用于转发芯片。该流量管理装置包括共享内存01。共享内存01的容量小于预设容量。共享内存01用于缓存输入共享内存01的报文,以及,存储共享内存01中的报文所在队列的队列信息。其中,报文在共享内存01中以队列形式管理,所述队列可以是虚拟队列,一个队列的存储资源可以分散在共享内存01中的不同存储空间中,也可以集中在共享内存01中的同一存储空间中。例如,共享内存01中包括多个存储模块,一个队列的存储资源可以分散在不同的存储模块中,也可以集中在同一个存储模块中。每个报文所在队列的队列信息可以包括队列长度,队列的头部指针等。每个报文所在队列的队列信息可以称为该报文对应的队列信息,任意两个报文对应的队列信息(包括队列长度,队列的头部指针)可以不同。共享内存01中的队列也可以是物理队列,物理队列的存储资源可以集中在共享内存01中的同一存储空间中,本技术实施例对此不作限定。所述存储模块可以是共享内存01中的基本存储单元。
[0068]
其中,共享内存01的容量也即是共享内存01的大小,共享内存01的容量以及所述预设容量均可以根据转发芯片所要应用的各种网络场景确定。可选的,预设容量根据相关技术中的转发芯片中的内部流量管理内存的容量(例如pmem_max)与队列管理内存的容量(例如 qmem_max)确定。例如,预设容量等于相关技术中的中的内部流量管理内存的容量与队列管理内存的容量之和(即,pmem_max+qmem_max)。共享内存01的容量根据相关技术中转发芯片应用于各种网络场景时,转发芯片中的内部流量管理内存的使用量和队列管理内存的使用量确定。例如,相关技术中的转发芯片应用于网络场景i时,该转发芯片中的内部流量管理内存的使用量为pmem_i,队列管理内存的使用量为qmem_i,则对应在网络场景i下,本技术的共享内存01的容量可以为smen_i=pmem_i+qmem_i,考虑到本技术实施例的转发芯片实际可能会应用到各种网络场景,因此可以设置共享内存01的容量为各种网络场景下,内部流量管理内存的使用量和队列管理内存的使用量之和的最大值。即,共享内存01的容量可以为 smen=max(pmem_i+qmem_i)。因此在本技术实施例中,共享内存01的容量smen满足关系: smen=max(pmem_i+qmem_i)《pmem_max+qmem_max。
[0069]
综上所述,本技术实施例提供的流量管理装置,由于该流量管理装置包括共享内存,该共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小转发芯片的面积,降低转发芯片的成本和功耗。由于该共享内存可以缓存报文以及存储该共享内存中的报文所在队列的队列信息,因此该共享内存的利用率较高,有助于避免转发芯片的内存资源的浪费。
[0070]
可选的实施例中,共享内存01包括m个存储模块,m为正整数。该m个存储模块中的每个存储模块可以是该共享内存01中的一个基本存储单元。当m》1时,该m个存储模块可以是同构存储模块,或者,该m个存储模块中的至少两个存储模块是异构存储模块。其中,每个存储模块具有存储深度和存储位宽,该存储深度指的是物理深度,该存储位宽指的是物理
位宽。在本技术实施例中,两个存储模块为同构存储模块指的是该两个存储模块的存储位宽相等,两个存储模块为异构存储模块指的是该两个存储模块的存储位宽不相等。也即是,存储位宽相等的存储模块为同构存储模块,存储位宽不相等的存储模块为异构存储模块。
[0071]
在本技术实施例中,该m个存储模块中包括n个共享存储模块,m≥n,且n为正整数。当n》1时,该n个共享存储模块可以是同构存储模块,或者该n个共享存储模块中的至少两个共享存储模块可以是异构存储模块,例如,该n个共享存储模块是异构存储模块。该n个共享存储模块中的每个共享存储模块可以用于缓存输入该共享存储模块的报文,和/或,存储共享内存01中的至少一个报文所在队列的队列信息。例如,该n个共享存储模块均用于缓存报文,或者,该n个共享存储模块均用于存储队列信息,或者,该n个共享存储模块中的一部分共享存储模块用于报文,另一部分共享存储模块用于存储队列信息。其中,每个共享存储模块中存储的队列信息可以包括该共享存储模块中的报文所在队列的队列信息,还可以包括该共享存储模块之外的存储模块中的报文所在队列的队列信息。或者,每个共享存储模块中存储的队列信息仅包括该共享存储模块中的报文所在队列的队列信息。或者,每个共享存储模块中存储的队列信息不包括该共享存储模块中的报文所在队列的队列信息。本技术关于共享存储模块中存储的报文以及队列信息的描述仅是示例性的,报文与该报文所在队列的队列信息是否存储在同一共享存储模块根据实际存储需求设置,本技术实施例不对报文与该报文所在队列的队列信息是否存储在同一共享存储模块进行限定。
[0072]
在本技术实施例的一种可选实现方式中,m=n。即该m个存储模块均为共享存储模块。以m=n》1,且以该n个共享存储模块为同构存储模块为例说明,请参考图4,其示出了本技术实施例提供的一种共享内存01的结构示意图。该共享内存01包括n个共享存储模块,该 n个共享存储模块的存储位宽均相等,该n个共享存储模块为同构存储模块。该n个共享存储模块的存储深度可以相等,也可以不相等,例如图4示出的是该n个共享存储模块的存储深度相等的情况。示例的,在图4所示的共享内存01中,该n个共享存储模块中的每个共享存储模块可以缓存输入该共享存储模块的报文,还可以存储该共享内存01中的至少一个报文所在队列的队列信息。或者,该n个共享存储模块中的一部分共享存储模块用于缓存报文,另一部分共享存储模块用于存储该共享内存01中的报文所在队列的队列信息,本技术实施例对此不作限定。由于图4所示的共享内存01中的存储模块均为共享存储模块,因此该共享内存01可以称为全共享式内存,实际应用中,可以按照网络场景的需求任意分配报文和队列信息对共享内存01的占用比例,例如,分配该n个共享存储模块中的哪些共享存储模块用于缓存报文,哪些共享存储模块用于存储该共享内存01中的报文所在队列的队列信息,因此图4 所示的共享内存01的共享方式较为灵活。此外,在图4所示的共享内存01中,报文和队列信息可以共享地址总线和数据总线(也即是可以通过同一根数据总线向共享内存01写入报文和队列信息,并且通过同一根地址总线来传输报文在共享内存01中的地址和队列信息在共享内存01中的地址),因此无需增加额外的地址总线和数据总线,有助于节省走线。
[0073]
在本技术实施例的另一种可选实现方式中,m》n,该m个存储模块中还包括流量独享存储模块和队列独享存储模块中的至少一种。其中,流量独享存储模块用于缓存输入该流量独享存储模块的报文。队列独享存储模块用于存储共享内存01中的至少一个报文所在队列的队列信息。队列独享存储模块和共享存储模块中的任一存储模块中存储的队列信息包括:流量独享存储模块中的报文所在队列的队列信息和共享存储模块中的报文所在队列
的队列信息中的至少一种。示例的,队列独享存储模块中存储的队列信息可以包括共享存储模块中的报文所在队列的队列信息,还可以包括流量独享存储模块中的报文所在队列的队列信息。或者,队列独享存储模块中存储的队列信息仅包括流量独享存储模块中的报文所在队列的队列信息。或者,队列独享存储模块中存储的队列信息仅包括共享存储模块中的报文所在队列的队列信息。此外,共享存储模块中存储的队列信息也可以包括流量独享存储模块中的报文所在队列的队列信息,本技术实施例对此不作限定。
[0074]
可选的实施例中,该m个存储模块中包括p个流量独享存储模块和q个队列独享存储模块(也即,该m个存储模块中包括n个共享存储模块、p个流量独享存储模块和q个队列独享存储模块),m≥n+p+q,p》1,q》1,n》1,且p和q均为整数。该n个共享存储模块可以是同构存储模块,或者,该n个共享存储模块中的至少两个共享存储模块是异构存储模块,例如,该n个共享存储模块是异构存储模块。该p个流量独享存储模块可以是同构存储模块,或者,该p个流量独享存储模块中的至少两个流量独享存储模块是异构存储模块,例如,该 p个流量独享存储模块是异构存储模块。该q个队列独享存储模块可以是同构存储模块,或者,该q个队列独享存储模块中的至少两个队列独享存储模块是异构存储模块,例如,该q 个队列独享存储模块是异构存储模块。可选的,该n个共享存储模块是同构存储模块,该p 个流量独享存储模块是同构存储模块,该q个队列独享存储模块是同构存储模块,流量独享存储模块与队列独享存储模块是异构存储模块,共享存储模块与流量独享存储模块是同构存储模块,或者,共享存储模块与队列独享存储模块是同构存储模块。或者,该n个共享存储模块、该p个流量独享存储模块以及该q个队列独享存储模块是同构存储模块,本技术实施例对此不作限定。
[0075]
作为本技术实施例的一个示例,以该n个共享存储模块、该p个流量独享存储模块以及该q个队列独享存储模块是同构存储模块为例说明。请参考图5,其示出了本技术实施例提供的另一种共享内存01的结构示意图。该共享内存01包括n个共享存储模块、p个流量独享存储模块和q个队列独享存储模块。该n个共享存储模块的存储位宽、该p个流量独享存储模块的存储位宽以及该q个队列独享存储模块的存储位宽均相等,该n个共享存储模块、该p个流量独享存储模块以及该q个队列独享存储模块是同构存储模块。该n个共享存储模块的存储深度、该p个流量独享存储模块的存储深度以及该q个队列独享存储模块的存储深度可以相等,也可以不相等。例如图5示出的是该n个共享存储模块的存储深度以及该p个流量独享存储模块的存储深度均相等,该q个队列独享存储模块的存储深度均相等,并且该队列独享存储模块的存储深度小于共享存储模块的存储深度的情况。
[0076]
作为本技术实施例的另一个示例,以该n个共享存储模块是同构存储模块,该p个流量独享存储模块是同构存储模块,该q个队列独享存储模块是同构存储模块,并且流量独享存储模块与队列独享存储模块是异构存储模块,共享存储模块与流量独享存储模块是同构存储模块为例说明。示例的,请参考图6和图7,图6和图7示出了本技术实施例提供的两种共享内存01的结构示意图。该共享内存01包括n个共享存储模块、p个流量独享存储模块和q 个队列独享存储模块。该p个流量独享存储模块的存储位宽以及该n个共享存储模块的存储位宽均相等,因此该p个流量独享存储模块以及该n个共享存储模块为同构存储模块。该q 个队列独享存储模块的存储位宽均相等,因此该q个队列独享存储模块为同构存储模块。队列独享存储模块的存储位宽小于流量独享存储模块的存储位宽,因此队列独享存储模块与
流量独享存储模块为异构存储模块。该n个共享存储模块的存储深度、该p个流量独享存储模块的存储深度以及该q个队列独享存储模块的存储深度可以相等,也可以不相等。例如图6 示出的是该n个共享存储模块的存储深度、该p个流量独享存储模块的存储深度以及该q个队列独享存储模块的存储深度均相等的情况,图7示出的是该n个共享存储模块的存储深度以及该p个流量独享存储模块的存储深度均相等,该q个队列独享存储模块的存储深度均相等,并且队列独享存储模块的存储深度小于共享存储模块的存储深度的情况。
[0077]
作为本技术实施例的再一个示例,以该n个共享存储模块是同构存储模块,该p个流量独享存储模块是同构存储模块,该q个队列独享存储模块是同构存储模块,并且流量独享存储模块与队列独享存储模块是异构存储模块,共享存储模块与队列独享存储模块是同构存储模块为例说明。示例的,请参考图8和图9,图8和图9示出了本技术实施例提供的两种共享内存01的结构示意图。该共享内存01包括n个共享存储模块、p个流量独享存储模块和q 个队列独享存储模块。该n个共享存储模块的存储位宽以及该q个队列独享存储模块的存储位宽均相等,因此该n个共享存储模块以及该q个队列独享存储模块为同构存储模块。该p 个流量独享存储模块的存储位宽均相等,因此该p个流量独享存储模块为同构存储模块。流量独享存储模块的存储位宽小于队列独享存储模块的存储位宽,因此流量独享存储模块与队列独享存储模块为异构存储模块。该n个共享存储模块的存储深度、该p个流量独享存储模块的存储深度以及该q个队列独享存储模块的存储深度可以相等,也可以不相等。例如图8 示出的是该n个共享存储模块的存储深度、该p个流量独享存储模块的存储深度以及该q个队列独享存储模块的存储深度均相等的情况,图9示出的是该n个共享存储模块的存储深度以及该q个队列独享存储模块的存储深度均相等,该p个流量独享存储模块的存储深度均相等,并且流量独享存储模块的存储深度小于共享存储模块的存储深度的情况。
[0078]
由于图5至图9所示的共享内存01包括共享存储模块、流量独享存储模块和队列独享存储模块,因此图5至图9所示的共享内存01可以称为部分共享式内存。在图5至图9所示的共享内存01中,流量独享存储模块仅用于缓存报文而不能用于存储队列信息,队列独享存储模块仅用于存储队列信息而不能用于缓存报文,共享存储模块可以用于缓存报文,和/或,共享存储模块可以用于存储队列信息,例如,n个共享存储模块均用于缓存报文,或者,n个共享存储模块均用于存储队列信息,或者,n个共享存储模块中的一部分共享存储模块用于缓存报文,另一部分共享存储模块用于存储队列信息,可以按照网络场景的需求分配哪些共享存储模块用于缓存报文,哪些共享存储模块用于存储队列信息。当图5至图9中的n个共享存储模块均用于缓存报文,或者均用于存储队列信息时,该共享内存01可以允许同时在该共享内存01中写入报文和队列信息(例如将报文写入流量独享存储模块,将队列信息写入共享存储模块,两个过程可以同时进行),不会存在写入冲突,以及,该共享内存01可以允许同时从该共享内存01中读取报文和队列信息(例如从流量独享存储模块中读取报文,从共享存储模块中读取队列信息,两个过程可以同时进行),不会存在读取冲突。此外,相比于图5 所示的共享内存01,图6和图7所示的共享内存01中的队列独享存储模块的存储位宽较小,因此图6和图7所示的共享内存01可以节省一定数量的走线。相比于图5所示的共享内存 01,图8和图9所示的共享内存01中的流量独享存储模块的存储位宽较小,因此图8和图9 所示的共享内存01可以节省一定数量的走线。例如,在图5所示的共享内存01中,共享存储模块的存储位宽、流量独享存储模块的存储位宽和队列独享存储模块的存储位宽均为w1,
图5所示的共享内存01需要消耗的走线的数量至少为w1
×
(n+p+q)。在图6和图7所示的共享内存01中,共享存储模块的存储位宽和流量独享存储模块的存储位宽均为w1,队列独享存储模块的存储位宽为w2,并且w2《w1,因此图6或图7所示的共享内存01需要消耗的走线的数量至少为w1
×
(n+p)+w2
×
q。由于w2《w1,因此w1
×
(n+p)+w2
×
q《w1
ꢀ×
(n+p+q),即,图6和图7所示的共享内存01可以节省一定数量的走线。在图8和图9 所示的共享内存01中,共享存储模块的存储位宽和队列独享存储模块的存储位宽均为w1,流量独享存储模块的存储位宽为w3,并且w3《w1,因此图8或图9所示的共享内存01需要消耗的走线的数量至少为w1
×
(n+q)+w3
×
p。由于w3《w1,因此w1
×
(n+q)+w3
ꢀ×
p《w1
×
(n+p+q),即,图8和图9所示的共享内存01可以节省一定数量的走线。
[0079]
图5至图9仅仅是示例性的,在一些实施例中,共享内存01中可以仅包括共享存储模块和流量独享存储模块,而不包括队列独享存储模块。在另一些实施例中,共享内存01中可以仅包括共享存储模块和队列独享存储模块,而不包括流量独享存储模块。在又一些实施例中,共享内存01中可以包括其他功能的存储模块,共享内存01是否需要流量独享存储模块和队列独享存储模块可以根据实际需求设置,本技术实施例对此不作限定。
[0080]
请继续参考图3,该流量管理装置还包括处理模块02。处理模块02与共享内存01连接。处理模块02用于向共享内存01输入报文和该报文所在队列的队列信息中的至少一种。如图3所示,处理模块02通过数据总线08与共享内存01连接。处理模块02用于通过该数据总线08向共享内存01输入报文和该报文所在队列的队列信息。
[0081]
图3中的数据总线08仅仅是是示例性的,处理模块02可以通过数据总线与共享内存01 中的每个存储模块连接,并且处理模块02与每个存储模块之间连接有多条数据总线。处理模块02与每个存储模块之间的数据总线的数量与该存储模块的存储位宽相关。例如,某一存储模块的存储位宽为w,表示该存储模块包括沿该存储模块的宽度方向排布的w个1比特(bit) 的存储单元,则处理模块02与该存储模块之间的数据总线的数量为w,该w条数据总线与该w个1bit的存储单元一一对应连接,本技术实施例对此不作限定。
[0082]
请继续参考图3,该流量管理装置还包括报文写入模块03和队列管理模块04。报文写入模块03与队列管理模块04连接。报文写入模块03和队列管理模块04分别与处理模块02连接。报文写入模块03用于对于待缓存的任一报文,向队列管理模块04为该报文申请队列资源,根据为该报文申请的队列资源向处理模块02输入该报文。队列管理模块04用于根据报文写入模块03为该报文申请的队列资源,向处理模块02输入该报文所在队列的队列信息。如图3所示,报文写入模块03通过流量数据线06与处理模块02连接,队列管理模块04通过队列数据线07与处理模块02连接,报文写入模块03用于通过流量数据线06向处理模块 02输入报文;队列管理模块04用于通过队列数据线07向处理模块02输入该报文所在队列的队列信息。
[0083]
可选的实施例中,对于待缓存的任一报文(例如报文1),报文写入模块03向队列管理模块04发送携带报文1的报文信息的入队请求。队列管理模块04根据该入队请求中携带的报文1的报文信息确定报文1对应的队列(也即报文1所应缓存的队列,例如队列1),并判断队列1的队列长度是否小于预设长度,如果队列1的队列长度小于预设长度,队列管理模块04确定队列1能够满足报文1的存储,队列管理模块04在共享内存01中为报文1分配存储资源(也即是,为报文1分配队列资源),并向报文写入模块03发送入队响应,该入队响应中
携带队列管理模块04为报文1分配的队列资源的资源信息(例如报文1分配的队列资源的地址)。报文写入模块03根据该入队响应中携带的队列管理模块04为报文1分配的队列资源的资源信息,通过流量数据线06向处理模块02输入报文1,并且报文写入模块03可以向处理模块02输入队列管理模块04为报文1分配的队列资源的资源信息。处理模块02可以根据队列管理模块04为报文1分配的队列资源的资源信息,通过数据总线08将报文1缓存至共享内存01。队列管理模块04在共享内存01中为报文1分配存储资源之后,还可以根据为报文1分配的存储资源更新队列1的队列信息(例如,更新队列1的头部指针,更新队列1的队列长度等),并将更新后的该队列1的队列信息作为报文1所在队列的队列信息。队列管理模块04可以通过队列数据线07向处理模块02输入报文1所在队列的队列信息。处理模块02可以将报文1所在队列的队列信息,通过数据总线08写入共享内存01(在处理模块02将报文1所在队列的队列信息写入共享内存01之前,共享内存01中可以存储有队列1 的队列信息,处理模块02可以采用报文1所在队列的队列信息覆盖共享内存01中当前存储的队列1的队列信息)。可选的,如果队列1的队列长度大于或等于预设长度,队列管理模块04确定队列1不能满足报文1的存储,队列管理模块04可以向报文写入模块03发送通知消息,报文写入模块03可以根据该通知消息丢弃报文1,本技术实施例对此不作限定。
[0084]
在本技术实施例中,某一队列的队列资源指的是共享内存01中属于该队列的存储资源(或称为存储空间),根据前述描述可知,每个队列的队列资源由队列管理模块04根据报文写入模块03发送的入队请求在共享内存01中为该队列实时分配。此外,对于任一队列,如果队列管理模块04调度该队列中的某一报文出队,在该报文出队后,该队列管理模块04可以释放该队列中被该报文占用的存储资源(也即是释放队列资源),后续这部分存储资源可能会被分配给其他的队列,本技术实施例对此不作限定。
[0085]
请继续参考图3,该流量管理装置还包括报文读出模块05。报文读出模块05分别与共享内存01和队列管理模块04连接。队列管理模块04还用于根据共享内存01中的报文所在队列的队列信息,向报文读出模块05输出该报文在共享内存01中的地址。报文读出模块05用于根据报文在共享内存01中的地址,从共享内存01中读取报文。如图3所示,报文读出模块05通过数据总线09与共享内存01连接,报文读出模块05用于根据报文在共享内存01中的地址,通过数据总线09从共享内存01中读取报文。可选的,对于共享内存01中的每个队列,队列管理模块04按照报文在该队列中的顺序对该队列中的报文进行调度,当队列管理模块04调度到该队列中的某一报文(例如报文2)时,队列管理模块04确定报文2在共享内存01中的地址,并向报文读出模块05输出报文2在共享内存01中的地址,报文读出模块 05根据报文2在共享内存01中的地址,通过数据总线09从共享内存01中读取报文2。
[0086]
图3中的数据总线09仅仅是示例性的,报文读出模块05可以通过数据总线与共享内存 01中的每个存储模块连接,并且报文读出模块05与每个存储模块之间连接有多条数据总线。报文读出模块05与每个存储模块之间的数据总线的数量与该存储模块的存储位宽相关。例如,某一存储模块的存储位宽为w,表示该存储模块包括沿该存储模块的宽度方向排布的w 个1bit的存储单元,则报文读出模块05与该存储模块之间的数据总线的数量为w,该w条数据总线与该w个1bit的存储单元一一对应连接,本技术实施例对此不作限定。
[0087]
可选的实施例中,处理模块02还用于根据获取到的配置信息配置共享内存01的功能,共享内存01的功能包括缓存报文并存储该报文所在队列的队列信息。例如,处理模块02
根据获取到的配置信息,配置共享内存01中用于缓存报文的存储资源与用于存储队列信息的存储资源的比例。可选的,处理模块02根据获取到的配置信息配置共享内存01中的共享存储模块用于缓存报文;或者,处理模块02根据获取到的配置信息配置共享内存01中的共享存储模块用于存储队列信息;或者,处理模块02根据获取到的配置信息配置共享内存01中的一部分共享存储模块用于缓存报文,另一部分共享存储模块用于存储队列信息。所述配置信息可以是用户输入的配置信息,例如是用户通过人机交互界面向处理模块02输入的,所述配置信息也可以是控制器下发的配置信息。本技术实施例以处理模块02中集成配置功能为例说明,也可以在单独部署配置模块来配置共享内存01的功能,本技术实施例对此不作限定。
[0088]
在本技术实施例提供的流量管理装置中,共享内存01可以缓存报文,并且可以存储报文所在队列的队列信息,因此在各种网络场景下,共享内存01都可以被充分利用。示例的,请参考图10和图11,图10示出的是在边缘网络场景下,相关技术提供的转发芯片中的管理内存(包括内部流量管理内存和队列管理内存)的使用状态与本技术实施例提供的流量管理装置中的共享内存的使用状态的对比图。图11示出的是在骨干网络场景、城域网络场景、dci 网络场景、移动承载网络场景等网络场景下,相关技术提供的转发芯片中的管理内存(包括内部流量管理内存和队列管理内存)的使用状态与本技术实施例提供的流量管理装置中的共享内存的使用状态的对比图。在图10和图11中,正方形小块(包括斜杠充填的正方形小块、网格充填的正方形小块以及未充填的正方形小块)均表示存储模块(或者说基本存储单元),斜杠充填的正方形小块表示缓存有报文的存储模块,网格充填的正方形表示存储有队列信息的存储模块,未充填的正方形小块表示未被占用的存储模块。本技术实施例提供的共享内存的容量小于相关技术提供的转发芯片中的内部流量管理内存的容量和队列管理内存的容量之和(例如在图10和图11中,所有存储模块的容量相等,共享内存中的存储模块的数量小于内部流量管理内存中的存储模块的数量与队列管理内存中的存储模块的数量之和)。如图10 所示,在边缘网络场景下,队列管理内存中的全部存储模块被占用,内部流量管理内存中存在较多的存储模块处于空闲状态(也即内部流量管理内存没有被充分利用),而共享内存中的全部存储模块被占用,因此在边缘网络场景下共享内存可以被充分利用。如图11所示,在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,内部流量管理内存中的全部存储模块被占用,队列管理内存中存在较多的存储模块处于空闲状态(也即队列管理内存没有被充分利用),而共享内存中的全部存储模块被占用,因此在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下共享内存可以被充分利用。可见,无论是在边缘网络场景下,还是在骨干网络场景、城域网络场景、dci网络场景、移动承载网络场景等网络场景下,本技术的共享内存都可以被充分利用,不会造成转发芯片的内存资源的浪费。
[0089]
综上所述,本技术实施例提供的流量管理装置,由于该流量管理装置包括共享内存,该共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小转发芯片的面积,降低转发芯片的成本和功耗。由于该共享内存可以缓存报文以及存储该共享内存中的报文所在队列的队列信息,因此该共享内存的利用率较高,有助于避免转发芯片的内存资源的浪费。
[0090]
以上是对本技术的流量管理装置的实施例的介绍,下面介绍报文缓存方法的实施
例。
[0091]
请参考图12,其示出了本技术实施例提供的一种报文缓存方法的流程图。该报文缓存方法可以应用于上述流量管理装置,该流量管理装置包括共享内存,该共享内存的容量小于预设容量。如图12所示,该报文缓存方法可以包括下述s101至s102。
[0092]
s101.流量管理装置在共享内存中缓存报文。
[0093]
s102.流量管理装置在共享内存中存储该共享内存中的报文所在队列的队列信息。
[0094]
可选的,共享内存包括m个存储模块,该m个存储模块中包括n个共享存储模块,m≥ n,且m和n均为正整数。在s101中,流量管理装置可以在该n个共享存储模块中的任一共享存储模块中缓存报文。和/或,在s102中,流量管理装置可以在该n个共享存储模块中的任一共享存储模块中存储该共享内存中的至少一个报文所在队列的队列信息。
[0095]
当m》n时,该m个存储模块中还可以包括流量独享存储模块和队列独享存储模块中的至少一种。在s101中,流量管理装置还可以在流量独享存储模块中缓存报文。在s102中,流量管理装置还可以在队列独享存储模块存储该共享内存中的至少一个报文所在队列的队列信息。例如,该m个存储模块中包括p个流量独享存储模块和q个队列独享存储模块,在s101 中,流量管理装置可以在该p个流量独享存储模块中的任一流量独享存储模块中缓存报文。在s102中,流量管理装置可以在该q个队列独享存储模块中的任一队列独享存储模块中存储该共享内存中的至少一个报文所在队列的队列信息。其中,共享存储模块和队列独享存储模块中的任一存储模块中存储的队列信息包括:该共享存储模块中的报文所在队列的队列信息和该流量独享存储模块中的报文所在队列的队列信息中的至少一种。
[0096]
可选的,流量管理装置还包括处理模块,处理模块与共享内存连接。例如,该处理模块通过数据总线与该共享内存连接。该处理模块可以向该共享内存输入报文和该报文所在队列的队列信息中的至少一种。例如在s101中,该处理模块向该共享内存输入报文,以在该共享内存中缓存报文,在s102中,该处理模块向该共享内存输入该报文所在队列的队列信息,以在该共享内存中存储该报文所在队列的队列信息。
[0097]
可选的,流量管理装置还包括报文写入模块和队列管理模块,该报文写入模块与该队列管理模块连接,该报文写入模块和该队列管理模块分别与处理模块连接。例如,该报文写入模块通过流量数据线与处理模块连接,该队列管理模块通过队列数据线与处理模块连接。s101 可以包括:报文写入模块对于待缓存的任一报文,向队列管理模块为该报文申请队列资源,根据为该报文申请的队列资源,通过流量数据线向处理模块输入该报文,该处理模块通过数据总线向该共享内存输入该报文,以在该共享内存中缓存该报文。s102可以包括:对于任一报文,队列管理模块根据报文写入模块为该报文申请的队列资源,通过队列数据线向处理模块输入该报文所在队列的队列信息,该处理模块通过数据总线向该共享内存输入该报文所在队列的队列信息,以在该共享内存中存储该报文所在队列的队列信息。
[0098]
可选的,流量管理装置还包括报文读出模块,该报文读出模块分别与共享内存和队列管理模块连接,例如,该报文读出模块通过数据总线与该共享内存连接。该报文缓存方法还可以包括如下s103至s104。
[0099]
s103.队列管理模块根据共享内存中的报文所在队列的队列信息,向报文读出模块输出该报文在该共享内存中的地址。
[0100]
s104.报文读出模块根据报文在共享内存中的地址,从该共享内存中读取报文。
[0101]
可选的,在s103中,对于共享内存中的每个队列,队列管理模块按照报文在该队列中的顺序对该队列中的报文进行调度,当队列管理模块调度到该队列中的某一报文时,队列管理模块确定该报文在共享内存中的地址,并向报文读出模块输出该报文在共享内存中的地址。在s104中,报文读出模块根据报文在共享内存中的地址,通过数据总线从共享内存中读取报文。
[0102]
可选的,该报文缓存方法还可以包括s105。
[0103]
s105.处理模块根据获取到的配置信息配置共享内存的功能,该共享内存的功能包括缓存报文并存储该报文所在队列的队列信息。
[0104]
例如,处理模块根据获取到的配置信息,配置共享内存中用于缓存报文的存储资源与用于存储队列信息的存储资源的比例。可选的,处理模块根据获取到的配置信息配置共享内存中的共享存储模块用于缓存报文;或者,处理模块根据获取到的配置信息配置共享内存中的共享存储模块用于存储队列信息;或者,处理模块根据获取到的配置信息配置共享内存中的一部分共享存储模块用于缓存报文,另一部分共享存储模块用于存储队列信息。
[0105]
其中,所述配置信息可以是用户输入的配置信息,也可以是控制器下发的配置信息,本技术实施例对此不作限定。
[0106]
综上所述,本技术实施例提供的报文缓存方法,该报文缓存方法应用于转发芯片中的流量管理装置,由于该流量管理装置包括共享内存,该共享内存的容量小于预设容量,因此该共享内存的容量较小,有助于减小转发芯片的面积,降低转发芯片的成本和功耗。由于该共享内存可以缓存报文并且可以存储该共享内存中的报文所在队列的队列信息,因此该共享内存的利用率较高,有助于避免转发芯片的内存资源的浪费。
[0107]
本技术实施例还提供了一种转发芯片,该转发芯片包括如图3所示的流量管理装置,该流量管理装置包括如图4至图9任一所示的共享内存01。由于共享内存01的容量较小,因此该转发芯片的面积、成本和功耗均较小。由于该共享内存的利用率较高,因此该转发芯片的内存资源的利用率较高,可以避免该转发芯片的内存资源的浪费。
[0108]
可选的实施例中,该转发芯片是asic芯片、fpga芯片、np芯片、gal芯片等各种可能的转发芯片。
[0109]
本技术实施例还提供了一种网络设备,该网络设备包括上述转发芯片。该网络设备可以是通信网络中用于业务转发的任意网络设备。例如,按照设备类型来分,该网络设备可以是交换机、路由器等。按照设备部署位置来分,该网络设备可以是边缘网络设备、核心网络设备或数据中心中的网络设备,例如,边缘网络设备可以是运营商边缘(provideredge,pe)设备,核心网络设备可以是运营商(provider,p)设备。
[0110]
作为一个示例,请参考图13,其示出了本技术实施例提供的一种网络设备1100的结构示意图。网络设备1100包括处理器1102、通信接口1106、转发芯片1108和总线1110。处理器1102、通信接口1106和转发芯片1108通过总线1110彼此通信连接。其中,图13所示的处理器1102、通信接口1106和转发芯片1108之间的连接方式仅仅是示例性的,在实现过程中,处理器1102、通信接口1106和转发芯片1108也可以采用除了总线1110之外的其他连接方式彼此通信连接。
[0111]
处理器1102可以是通用处理器,通用处理器可以是通过读取并执行存储器(例如存储器 1104)中存储的计算机程序(例如计算机程序11042)来执行特定步骤和/或操作的处理器,通用处理器在执行所述步骤和/或操作的过程中可能用到存储在存储器(例如存储器1104)中的数据。通用处理器可以是,例如但不限于中央处理器(central processing unit,cpu)。此外,处理器1102也可以是专用处理器,专用处理器可以是专门设计的用于执行特定步骤和/ 或操作的处理器,专用处理器可以是,例如但不限于,asic和fpga等。此外,处理器1102 还可以是多个处理器的组合,例如多核处理器。
[0112]
通信接口1106可以包括输入/输出(input/output,i/o)接口、物理接口和逻辑接口等用于实现网络设备1100内部的器件互连的接口,以及用于实现网络设备1100与其他设备(例如网络设备)互连的接口。物理接口可以是千兆的以太接口(gigabit ethernet,ge),其可以用于实现网络设备1100与其他设备互连,逻辑接口是网络设备1100内部的接口,其可以用于实现网络设备1100内部的器件互连。通信接口1106可以用于网络设备1100与其他设备通信,例如通信接口1106用于网络设备1100与其他设备之间报文的发送和接收。
[0113]
总线1110可以是任何类型的,用于实现处理器1102、通信接口1106和转发芯片1108 互连的通信总线,例如系统总线。
[0114]
转发芯片1108可以是asic芯片、fpga芯片、np芯片、gal芯片等各种可能的转发芯片。处理器1102、存储器1104和通信接口1106中的任一器件和转发芯片1108互连具体可以是指该任一器件与转发芯片1108中的器件互连。在一些实施例中,上述处理器1102、存储器1104和通信接口1106均可以集成在转发芯片1108上,或者,上述处理器1102和通信接口1106可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本技术对上述器件的具体实现形式不做限定。
[0115]
在一些实施例中,网络设备1100还可以包括存储器1104。存储器1104可以用于存储计算机程序11042,计算机程序11042可以包括指令和数据。在本技术实施例中,存储器1104 可以是各种类型的存储介质,例如随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、非易失性ram(non-volatile ram,nvram)、可编程rom(programmable rom,prom)、可擦除prom(erasable prom,eprom)、电可擦除prom(electrically erasable prom,eeprom)、闪存、光存储器和寄存器等。并且,存储器1104可以包括硬盘和/或内存。
[0116]
图13所示的网络设备1100仅仅是示例性的,在实现过程中,网络设备1100还可以包括其他组件,本文不再一一列举。
[0117]
可选地,以上实施例的方案中,“转发芯片”也可以替换为其他芯片,比如有些包含tm 功能的通用处理器。
[0118]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以
从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储装置。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
[0119]
应当理解的是,本技术中的“至少一个”指一个或多个,“多个”指两个或两个以上。“至少两个”指两个或两个以上,在本技术中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b。本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述,在本技术中,采用了“第一”、“第二”、“第三”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”、“第三”等字样并不对数量和执行次序进行限定。
[0120]
本技术实施例提供的方法实施例和装置实施例等不同类型的实施例均可以相互参考,本技术实施例对此不做限定。本技术实施例提供的方法实施例操作的先后顺序能够进行适当调整,操作也能够根据情况进行响应增减,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本技术的保护范围之内,因此不再赘述。
[0121]
在本技术提供的相应实施例中,应该理解到,所揭露的装置等可以通过其它的构成方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0122]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元描述的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络设备(例如终端设备)上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0123]
以上所述,仅为本技术的示例性实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种流量管理装置,其特征在于,应用于转发芯片,所述流量管理装置包括:共享内存;所述共享内存的容量小于预设容量,所述共享内存用于缓存输入所述共享内存的报文,以及,存储所述共享内存中的报文所在队列的队列信息。2.根据权利要求1所述的流量管理装置,其特征在于,所述共享内存包括m个存储模块,所述m个存储模块中包括n个共享存储模块,m≥n,且m和n均为正整数;所述共享存储模块用于缓存输入所述共享存储模块的报文,和/或,所述共享存储模块用于存储所述共享内存中的至少一个报文所在队列的队列信息。3.根据权利要求2所述的流量管理装置,其特征在于,m=n。4.根据权利要求2或3所述的流量管理装置,其特征在于,n>1,所述n个共享存储模块为同构存储模块。5.根据权利要求2所述的流量管理装置,其特征在于,m>n,所述m个存储模块中还包括流量独享存储模块和队列独享存储模块中的至少一种;所述流量独享存储模块用于缓存输入所述流量独享存储模块的报文;所述队列独享存储模块用于存储所述共享内存中的至少一个报文所在队列的队列信息;其中,所述共享存储模块和所述队列独享存储模块中的任一存储模块中存储的队列信息包括:所述共享存储模块中的报文所在队列的队列信息和所述流量独享存储模块中的报文所在队列的队列信息中的至少一种。6.根据权利要求5所述的流量管理装置,其特征在于,所述m个存储模块中包括p个流量独享存储模块和q个队列独享存储模块,m≥n+p+q,p>1,q>1,n>1,且p和q均为整数;所述n个共享存储模块为同构存储模块;所述p个流量独享存储模块为同构存储模块;所述q个队列独享存储模块为同构存储模块。7.根据权利要求5或6所述的流量管理装置,其特征在于,所述流量独享存储模块与所述队列独享存储模块为异构存储模块;所述共享存储模块与所述流量独享存储模块为同构存储模块,或者,所述共享存储模块与所述队列独享存储模块为同构存储模块。8.根据权利要求7所述的流量管理装置,其特征在于,所述流量独享存储模块的存储位宽与所述队列独享存储模块的存储位宽不相等;所述共享存储模块的存储位宽与所述流量独享存储模块的存储位宽相等,或者,所述共享存储模块的存储位宽与所述队列独享存储模块的存储位宽相等。9.根据权利要求1至8任一项所述的流量管理装置,其特征在于,所述流量管理装置还包括:处理模块,所述处理模块与所述共享内存连接;所述处理模块用于向所述共享内存输入报文和所述报文所在队列的队列信息中的至少一种。
10.根据权利要求9所述的流量管理装置,其特征在于,所述流量管理装置还包括:报文写入模块和队列管理模块,所述报文写入模块与所述队列管理模块连接,所述报文写入模块和所述队列管理模块分别与所述处理模块连接;所述报文写入模块用于对于待缓存的任一报文,向所述队列管理模块为所述报文申请队列资源,根据为所述报文申请的队列资源向所述处理模块输入所述报文;所述队列管理模块用于根据所述报文写入模块为所述报文申请的队列资源,向所述处理模块输入所述报文所在队列的队列信息。11.根据权利要求10所述的流量管理装置,其特征在于,所述报文写入模块通过流量数据线与所述处理模块连接,所述队列管理模块通过队列数据线与所述处理模块连接,所述处理模块通过数据总线与所述共享内存连接;所述报文写入模块用于通过所述流量数据线向所述处理模块输入所述报文;所述队列管理模块用于通过所述队列数据线向所述处理模块输入所述报文所在队列的队列信息;所述处理模块用于通过所述数据总线向所述共享内存输入所述报文和所述报文所在队列的队列信息。12.根据权利要求11所述的流量管理装置,其特征在于,所述流量管理装置还包括:报文读出模块,所述报文读出模块分别与所述共享内存和所述队列管理模块连接;所述队列管理模块还用于根据所述共享内存中的报文所在队列的队列信息,向所述报文读出模块输出所述报文在所述共享内存中的地址;所述报文读出模块用于根据所述报文在所述共享内存中的地址,从所述共享内存中读取所述报文。13.根据权利要求9至12任一项所述的流量管理装置,其特征在于,所述处理模块还用于根据获取到的配置信息配置所述共享内存的功能,所述共享内存的功能包括缓存报文并存储所述报文所在队列的队列信息。14.一种芯片,其特征在于,包括如权利要求1至13任一项所述的流量管理装置。15.一种网络设备,其特征在于,包括如权利要求14所述的芯片。16.一种报文缓存方法,其特征在于,应用于流量管理装置,所述流量管理装置包括共享内存,所述共享内存的容量小于预设容量,所述方法包括:所述流量管理装置在所述共享内存中缓存报文,以及,在所述共享内存中存储所述共享内存中的报文所在队列的队列信息。17.根据权利要求16所述的方法,其特征在于,所述共享内存包括m个存储模块,所述m个存储模块中包括n个共享存储模块,m≥n,且m和n均为正整数;所述流量管理装置在所述共享内存中缓存报文,以及,在所述共享内存中存储所述共享内存中的报文所在队列的队列信息,包括:所述流量管理装置在所述共享存储模块中缓存报文;和/或,所述流量管理装置在所述共享存储模块中存储所述共享内存中的至少一个报文所在队列的队列信息。18.根据权利要求17所述的方法,其特征在于,m>n,所述m个存储模块中还包括流量独
享存储模块和队列独享存储模块中的至少一种;所述流量管理装置在所述共享内存中缓存报文,以及,在所述共享内存中存储所述共享内存中的报文所在队列的队列信息,还包括:所述流量管理装置在所述流量独享存储模块中缓存报文;所述流量管理装置在所述队列独享存储模块存储所述共享内存中的至少一个报文所在队列的队列信息;其中,所述共享存储模块和所述队列独享存储模块中的任一存储模块中存储的队列信息包括:所述共享存储模块中的报文所在队列的队列信息和所述流量独享存储模块中的报文所在队列的队列信息中的至少一种。19.根据权利要求16至18任一项所述的方法,其特征在于,所述流量管理装置还包括处理模块,所述处理模块与所述共享内存连接,所述流量管理装置在所述共享内存中缓存报文,以及,在所述共享内存中存储所述共享内存中的报文所在队列的队列信息,包括:所述处理模块向所述共享内存输入报文和所述报文所在队列的队列信息中的至少一种。20.根据权利要求19所述的方法,其特征在于,所述流量管理装置还包括报文写入模块和队列管理模块,所述报文写入模块与所述队列管理模块连接,所述报文写入模块和所述队列管理模块分别与所述处理模块连接,所述流量管理装置在所述共享内存中缓存报文,以及,在所述共享内存中存储所述共享内存中的报文所在队列的队列信息,还包括:所述报文写入模块对于待缓存的任一报文,向所述队列管理模块为所述报文申请队列资源,根据为所述报文申请的队列资源向所述处理模块输入所述报文;所述队列管理模块根据所述报文写入模块为所述报文申请的队列资源,向所述处理模块输入所述报文所在队列的队列信息。21.根据权利要求20所述的方法,其特征在于,所述报文写入模块通过流量数据线与所述处理模块连接,所述队列管理模块通过队列数据线与所述处理模块连接,所述处理模块通过数据总线与所述共享内存连接;所述报文写入模块向所述处理模块输入所述报文,包括:所述报文写入模块通过所述流量数据线向所述处理模块输入所述报文;所述队列管理模块向所述处理模块输入所述报文所在队列的队列信息,包括:所述队列管理模块通过所述队列数据线向所述处理模块输入所述报文所在队列的队列信息;所述处理模块向所述共享内存输入报文和所述报文所在队列的队列信息中的至少一种,包括:所述处理模块通过所述数据总线向所述共享内存输入所述报文和所述报文所在队列的队列信息。22.根据权利要求21所述的方法,其特征在于,所述流量管理装置还包括报文读出模块,所述报文读出模块分别与所述共享内存和所述队列管理模块连接,所述方法还包括:所述队列管理模块根据所述共享内存中的报文所在队列的队列信息,向所述报文读出模块输出所述报文在所述共享内存中的地址;所述报文读出模块根据所述报文在所述共享内存中的地址,从所述共享内存中读取所述报文。23.根据权利要求19至22任一项所述的方法,其特征在于,所述方法还包括:
所述处理模块根据获取到的配置信息配置所述共享内存的功能,所述共享内存的功能包括缓存报文并存储所述报文所在队列的队列信息。
技术总结
一种流量管理装置、报文缓存方法、转发芯片及网络设备。属于网络技术领域。该流量管理装置应用于转发芯片。该流量管理装置包括共享内存。该共享内存的容量小于预设容量。该共享内存用于缓存输入该共享内存的报文,以及,存储该共享内存中的报文所在队列的队列信息。本申请有助于避免转发芯片的内存资源的浪费,降低转发芯片的成本和功耗。低转发芯片的成本和功耗。低转发芯片的成本和功耗。
技术研发人员:白宇 杨文斌 李广 王小忠
受保护的技术使用者:华为技术有限公司
技术研发日:2021.12.29
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
