拥塞控制方法及装置、网络设备及存储介质与流程
未命名
07-15
阅读:130
评论:0
拥塞控制方法及装置、网络设备及存储介质
1.分案说明
2.本技术是申请号为201811519766.5、发明名称为“拥塞控制方法及装置、网络设备及存储介质”的中国发明专利的分案申请。
技术领域
3.本发明涉及通信技术领域但不限于通信技术领域,尤其涉及一种拥塞控制方法及装置、网络设备及存储介质。
背景技术:
4.拥塞是通信过程中应该尽可能避免的现象。在现有技术中例如,会使用交换接入(switching access,sa)芯片收到来自交换网的大量报文。按照一定的方式把这些报文缓存在不同的队列中,并以一定的调度规则将不同队列内的报文调度输出。当下级接收模块产生流控反压信号或者数据流整形时,即导致队列的输入速率大于队列的调度输出速率时,会造成队列深度的累积,形成缓存拥塞。这时就需要一种拥塞处理策略,对进入该队列的报文进行反压或者丢弃处理,以免造成系统的资源的过分占用,最终影响相关的数据流处理功能。相关技术中存在多种通过报文丢弃的方式进行拥塞缓解的方案,有时候对于整个设备而言缓存空间还很足无需丢弃报文的情况下也丢弃了报文。
技术实现要素:
5.有鉴于此,本发明实施例期望提供一种拥塞控制方法及装置、网络设备及存储介质。
6.本发明的技术方案是这样实现的:
7.一种拥塞处理方法,包括:
8.获取多条队列的总缓存深度;
9.若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文。
10.基于上述方案,所述方法包括:
11.若目标队列丢弃报文之后的队列深度达到撤销门限,则停止所述目标队列的报文丢弃。
12.基于上述方案,所述队列为先进先出队列;
13.所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:
14.若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃队列出口处的报文。
15.基于上述方案,所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:
16.若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度最大的队列为所述目标队列丢弃报文。
17.基于上述方案,所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:
18.确定各所述队列的撤销门限;
19.若第i条队列的队列深度大于所述撤销门限,则选择第i条队列丢弃报文,其中,i为小于i的正整数,i为队列的总条数。
20.基于上述方案,所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:
21.确定用于选择所述目标队列的深度范围;
22.从所述多条队列中选择出深度位于所述深度范围内的备选队列;
23.若存在一条所述备选队列,选择所述备选队列为目标队列丢弃报文;和/或,若存在多条所述备选队列,根据所述备选队列的队列优先级,选择队列优先级最低的队列为所述目标队列丢弃报文。
24.基于上述方案,所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,还包括:
25.若多条所述备选队列的队列优先级相同,则选择所述队列深度最大的所述备选队列为所述目标队列丢弃报文。
26.基于上述方案,所述确定用于选择所述目标队列的深度范围,包括:
27.确定所述深度范围的选择参数值;
28.根据所述多条队列中的最大队列深度,确定所述深度范围的上限;
29.根据所述最大队列深度与所述选择参数值,确定深度范围的下限。
30.基于上述方案,所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:
31.若所述总缓存深度达到第一丢弃门限,获取多条队列缓存的报文的类型;
32.根据所述报文的类型,确定出第j类报文所在队列的第j类报文总队列深度;j为小于j的正整数;j为报文的类型总数;
33.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列为一条,选择缓存所述第j类报文的队列为所述目标队列丢弃报文;和/或,若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文。
34.基于上述方案,所述若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文,包括以下至少之一:
35.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度最大的队列为目标队列丢弃报文;
36.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度大于撤销门限且队列优先级最低的一个或多条队列作为所
述目标队列丢弃报文。
37.一种拥塞处理装置,包括:
38.获取模块,用于获取多条队列的总缓存深度;
39.丢弃模块,用于若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文。
40.一种网络设备,包括:
41.网络接口,用于收发报文;
42.存储器,用于存储报文和计算机存储可执行指令;
43.处理器,分别与所述网络接口及所述存储器连接,用于通过执行所述计算机存储可执行指令,控制所述网络接口的收发报文并执行前述任意技术方案提供的拥塞控制方法。
44.一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现前述任意技术方案提供的拥塞控制方法。
45.本发明实施例提供的技术方案,在进行报文的拥塞控制时,会整体参看多条队列的总缓存深度,在总缓存深度达到第一丢弃门限的情况下,才根据队列的队列深度选择满足丢弃条件的队列来丢弃报文,如此,相对于基于每一个队列的队列深度和单一队列的丢弃门限进行报文丢弃,减少了在网络设备整体而言还有比较大的缓存空间,仅是某个队列的队列深度比较大的情况下不必要的报文丢弃现象;与此同时,在选择报文丢弃的目标队列时,再根据各队列当前的队列深度是否满足丢弃条件来选择丢弃报文的目标队列,如此可以实现针对性对有需要丢弃的报文的队列进行报文丢弃,从而进一步地减少丢弃了不该丢弃的报文的现象。
附图说明
46.图1为本发明实施例提供的第一种拥塞控制方法的流程示意图;
47.图2为本发明实施例提供的第二种拥塞控制方法的流程示意图;
48.图3为本发明实施例提供的第三种拥塞控制方法的流程示意图;
49.图4为本发明实施例提供的一种拥塞控制装置的结构示意图;
50.图5为本发明实施例提供的一种报文丢弃的示意图;
51.图6为本发明实施例提供的第四种拥塞控制方法的流程示意图;
52.图7为本发明实施例提供的第五种拥塞控制方法的流程示意图;
53.图8为本实施例提供的一种报文的队列深度示意图;
54.图9为本实施例提供的队列和队列丢弃撤销门限表的对应示意图;
55.图10为本实施例提供的一种深度范围筛选的示意图;
56.图11为本发明实施例提供的一种网络设备。
具体实施方式
57.以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
58.如图1所示,本实施例提供一种拥塞处理方法,包括:
59.步骤s110:获取多条队列的总缓存深度;
60.步骤s120:若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文。
61.在本实施例中,所述拥塞处理方法可以应用于各种具有报文收发功能的网络设备中,例如,交换机的交换芯片或者路由器的路由芯片中。
62.在本实施例中,判断是否出现拥塞是根据多条队列的总缓存深度来的确定的。例如,在网络设备中配置有m条队列,所述总缓存深度为m条队列的队列深度之和。所述队列深度取决于队列所缓存的报文数目;报文数目越大则队列深度越大。
63.如此,若一个网络设备中多条队列的总缓存深度过大,例如,总缓存深度大于第一丢弃门限,才会使得整个网络设备的报文收发出现拥堵状况,故在本实施例中,只有在总缓存深度大于第一丢弃门限,再根据各条队列的队列深度来选择满足丢弃条件的队列作为目标队列,并丢弃目标队列的报文。如此,本实施例提供的方法,相对于各条队列分别设置丢弃门限,若某一条队列的队列深度很大,而剩余队列的队列深度很小时,网络设备是有足够的缓存空间继续保存队列深度很大的队列的报文的,且网络设备继续保存该深度很大的队列的报文,并不会影响其他队列的报文收发,故若基于单队列的丢弃门限进行报文丢弃,则该深度很大的队列自然会丢弃报文,但是这种丢弃实质上可以避免的,故导致了不必要的报文丢弃。而在本实施例中,考虑的网络设备内多条队列的整体缓存深度(即所述总缓存深度),若该总缓存深度大于第一丢弃报文,才确认该网络设备整体上出现了拥塞,需要丢弃报文,才会进一步根据各条队列的队列深度选择合适的队列,即选择满足丢弃条件的队列)有针对性的丢弃报文,如此,一方面减少了不必要报文的丢弃,另一方面实现了有针对性的丢弃报文。
64.在一些实施例中,如图2所示,所述方法包括:
65.步骤s130:若目标队列丢弃报文之后的队列深度达到撤销门限,则停止所述目标队列的报文丢弃。
66.在本实施例中,不仅设置了第一丢弃门限,还设置了撤销门限,该撤销门限是用于撤销报文丢弃的。若选择一条或多条队列作为目标队列进行报文丢弃,在丢弃报文时不是一次性将该条队列的所有报文丢弃,而是会根据撤销门限来确定,若目标队列丢弃一个或多个报文之后,队列深度低于或小于撤销门限,则说明拥塞得到缓解,目标队列可停止丢弃报文,以减少不必要的报文丢弃。
67.在本发明实施例中,被选择作为丢弃报文的目标队列的队列均是当前时刻报文队列大于撤销门限的队列。
68.在本实施例中,所述队列为先进先出队列;所述步骤s120可包括:
69.若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃队列出口处的报文。
70.在本实施例中,队列为先进先出队列,如此,当前位于队列出口处的报文为最先进入到队列中的报文,也就是最旧的报文。在本实施例中,为了优先老旧报文的丢弃,目标队列会优先选择队列出口处的报文进行丢弃;如此,减少了长时间堆积在队列中大数据量报文或者难以成功发送的报文长期占据缓存空间加剧拥塞的现象。
71.在还有一些实施例中,一个队列中的报文可能有不同的报文优先级,目标队列在丢弃报文时,可以选择当前时刻报文优先级最低的报文优先丢弃;依次类推,直到目标队列
的队列深度达到撤销门限。
72.在一些实施例中,所述步骤s120可包括:若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度最大的队列为所述目标队列丢弃报文。
73.在本实施例中,满足丢弃条件的目标队列为:多条队列中队列深度最大的队列,即当前包括报文最多的队列。
74.在一些实施例中,所述步骤s120可包括:
75.确定各所述队列的撤销门限;
76.若第i条队列的队列深度大于所述撤销门限,则选择第i条队列丢弃报文,其中,i为小于i的正整数,i为队列的总条数。
77.在一些实施例中,在网络设备中为每一条队列配置了一个第一寄存器,该第一寄存器用于分别记录每一条队列的撤销门限,如此,不同的队列的撤销门限可相同或不同,但是不同队列的撤销门限是不共享的。
78.在还有一些实施例中,多条队列共享一个撤销门限,例如,多条队列分别是队列a、队列b及队列c;队列a和队列b及队列c的撤销门限是共享的,且仅有一个撤销门限。例如,所述网络设备为多个队列设置了第二寄存器,该第二寄存器存储有被多条队列共享的撤销门限。
79.若第i条队列的队列深度大于撤销门限,则第i条队列将作为需要丢弃报文的目标队列。如此,若多条多列中有多个队列均大于了各自的撤销门限,则这些队列都为目标队列,均会丢弃报文;如此,可以快速的缓解网络设备内的拥塞。
80.在一些实施例中,如图3所示,所述步骤s120可包括:
81.步骤s121:确定用于选择所述目标队列的深度范围;
82.步骤s122:从所述多条队列中选择出深度位于所述深度范围内的备选队列;
83.步骤s123:若存在一条所述备选队列,选择所述备选队列为目标队列丢弃报文;
84.和/或,
85.步骤s124:若存在多条所述备选队列,根据所述备选队列的队列优先级,选择队列优先级最低的队列为所述目标队列丢弃报文。
86.在本实施例中,在选择满足丢弃条件的目标队列时,首先会确定一个选择目标队列的深度范围,若某一个队列的队列深度位于该深度范围内,则将该队列作为备选队列;然后根据备选队列的数目选择目标队列进行报文丢弃。
87.所述根据备选队列的数目选择目标队列进行报文丢,包括:
88.若仅存在一条备选队列,则说明目前改备选队列的队列深度实在过大,直接利用该备选队列作为目标队列进行报文丢弃。
89.若存在多条备选队列,则可以根据队列优先级从备选队列选择目标队列进行报文丢弃。
90.具体地如,在本实施例中,若存在多条备选队列,并非所有的备选队列都作为目标队列,而是会根据备选队列的队列优先级来选择目标队列。若一个队列的队列优先级越低,则说明该队列中报文收发的紧急程度越低,或者,报文的重要性越低,故在本实施例中,若存在多个备选队列,则选择队列优先级最低的队列作为目标队列丢弃报文。
91.进一步地,所述步骤s120还可包括:
92.步骤s125:若多条所述备选队列的队列优先级相同,则选择所述队列深度最大的所述备选队列为所述目标队列丢弃报文。
93.若多个备选队列的队列优先级相同,则说明备选队列中的报文重要性或收发紧急程度相同,此时,优先选择队列深度最大的备选队列作为目标队列,如此,相当于选择了对拥塞影响程度最大的队列进行报文丢弃。
94.在一些实施例中,所述步骤s121可包括:
95.确定所述深度范围的选择参数值;
96.根据所述多条队列中的最大队列深度,确定所述深度范围的上限;
97.根据所述最大队列深度与所述选择参数值,确定深度范围的下限。
98.在本实施例中,所述网络设备中可以设置一个或多个第三寄存器,该第三寄存器可以用于存储所述选择参数值。该选择参数可为加权参数和/或加权因子。
99.多条队列都有队列深度,这些队列深度可能相同也可能不同,但是通过比较等逻辑运算,可以得到最大队列深度。该队列最大深度可以直接作为深度范围的上限,也可以是作为计算深度上限的已知量。例如,以a倍所述最大队列深度作为所述深度上限,a可为大于或等于1的正整数。
100.在确定深度范围的下限时,可以直接求解所述最大队列深度与加权参数的差值,得到所述下限。例如,最大队列深度为h,所述鉴权参数为h,则所述下限可为h-h,如此,深度范围可为:h至h-h。
101.若所述选择参数值为比例值,则所述下限可为h*h,则深度范围可为:h至h*h,则此时h的取值范围为0到1之间的正数。
102.在一些实施例中,所述步骤s120可包括:
103.若所述总缓存深度达到第一丢弃门限,获取多条队列缓存的报文的类型;
104.根据所述报文的类型,确定出第j类报文所在队列的第j类报文总队列深度;j为小于j的正整数;j为报文的类型总数;
105.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列为一条,选择缓存所述第j类报文的队列为所述目标队列丢弃报文;和/或,若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文。
106.在本实施例中会区分报文类型进行目标队列的选择和报文丢弃。
107.所述报文按照类型区分可包括:单播报文、组播报文和/或广播报文。
108.在本实施例中,所述第j类报文可为单播报文、组播报文和广播报文中的任意一种。
109.若所有队列的总缓存深度大于第一丢弃门限,则会看各类型报文的总队列深度,若总队列深度大于第二丢弃门限,则会自动从该类型报文的队列中选择一个或多个作为丢弃报文的目标队列。其中,所述第二丢弃门限小于所述第一丢弃门限。
110.例如,当前网络设备中缓存单播报文和组播报文,若总缓存深度大于所述第一丢弃门限,分别查看单播报文和组播报文所在队列的总队列深度,若单播报文所在队列的总队列深度达到第二丢弃门限,但组播报文所在队列的总队列深度未达到第二丢弃报文,则
从缓存单播报文的队列中选择一个或多个目标队列进行报文丢弃。
111.在一些实施例中,不同类型的报文的第二丢弃门限可共享,在还有一些实施例中不同类型报文的第二丢弃门限可分别设置。
112.进一步地,所述若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文,包括以下至少之一:
113.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度最大的队列为目标队列丢弃报文;
114.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度大于撤销门限且队列优先级最低的一个或多条队列作为所述目标队列丢弃报文。
115.如此,若第j类报文所在队列不止一条时,会根据队列优先级及队列深度来选择一个或多个第j类报文所在队列进行报文丢弃。
116.如图4所示,本实施例提供一种拥塞处理装置,包括:
117.获取模块110,用于获取多条队列的总缓存深度;
118.丢弃模块120,用于若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文。
119.在一些实施例中,所述获取模块110及丢弃模块120可为程序模块,所述程序模块被处理器执行后,能够实现所述总缓存深度的确定及选择出目标队列并丢弃报文。
120.在还有一些实施例中,所述获取模块110及丢弃模块120可为软硬结合模块,所述软硬结合模块可为各种可编程阵列;所述可编程阵列可包括:复杂可编程阵列和/或现场可编程阵列。
121.在另外一些实施例中,所述获取模块110及丢弃模块120可为纯硬件模块,所述纯硬件模块可为专用集成电路。
122.在一些实施例中,所述装置包括:
123.停止模块,用于若目标队列丢弃报文之后的队列深度达到撤销门限,则停止所述目标队列的报文丢弃。
124.在一些实施例中,所述队列为先进先出队列;
125.所述丢弃模块120,具体用于若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃队列出口处的报文。
126.在一些实施例中,所述丢弃模块120,具体用于若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度最大的队列为所述目标队列丢弃报文。
127.在一些实施例中,所述丢弃模块120,具体用于确定各所述队列的撤销门限;若第i条队列的队列深度大于所述撤销门限,则选择第i条队列丢弃报文,其中,i为小于i的正整数,i为队列的总条数。
128.在还有一些实施例中,所述丢弃模块120,具体用于确定用于选择所述目标队列的深度范围;从所述多条队列中选择出深度位于所述深度范围内的备选队列;若存在一条所述备选队列,选择所述备选队列为目标队列丢弃报文;和/或,若存在多条所述备选队列,根据所述备选队列的队列优先级,选择队列优先级最低的队列为所述目标队列丢弃报文。
129.进一步地,所述丢弃模块120,具体用于若多条所述备选队列的队列优先级相同,则选择所述队列深度最大的所述备选队列为所述目标队列丢弃报文。
130.在一些实施例中,所述丢弃模块120,具体用于确定所述深度范围的选择参数值;根据所述多条队列中的最大队列深度,确定所述深度范围的上限;根据所述最大队列深度与所述选择参数值,确定深度范围的下限。
131.在一些实施例中,所述丢弃模块120,具体用于若所述总缓存深度达到第一丢弃门限,获取多条队列缓存的报文的类型;根据所述报文的类型,确定出第j类报文所在队列的第j类报文总队列深度;j为小于j的正整数;j为报文的类型总数;若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列为一条,选择缓存所述第j类报文的队列为所述目标队列丢弃报文;和/或,若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文。
132.在另一些实施例中,所述丢弃模块120,具体用于执行以下至少之一:
133.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度最大的队列为目标队列丢弃报文;
134.若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度大于撤销门限且队列优先级最低的一个或多条队列作为所述目标队列丢弃报文。
135.以下结合上述任意实施例提供几个具体示例:
136.示例1:
137.本示例提供了一种改进的动态拥塞控制方法和装置,旨在提高缓存利用率,减少队列间的相互影响,尽可能达成最佳的拥塞控制效果。
138.本实施例提供的拥塞控制方法可包括:
139.以总缓存深度作为报文丢弃的判断标准,在达到丢弃条件的情况下,挑选队列深度最大或队列深度最够大且优先级交底的队列进行报文丢弃,即拥塞状况最严峻的队列,进行队列头部丢弃。
140.头部丢弃是指在队列的出口处,对队列中的报文进行丢弃和地址回收。
141.设定队列的丢弃撤销门限,即该处于头部丢弃的队列深度低于撤销门限的时候,停止对该队列的丢弃操作。重新进入之前的总缓存深度判断,如此循环直至不再达到报文丢弃的标准。
142.如图5所示为一种反压方式的报文丢弃,包括:
143.队列0至队列n分别将自身的队列深度上报给比较器,
144.比较器将接收到的队列深度与丢弃门限表中查到的丢弃门限或反压门限表中查到的反压门限进行比较,然后大于丢弃门限的就打上丢弃标记,若达到反压门限的就打上反压标记;
145.丢弃打上丢弃标记队列中的报文;
146.对打上了反压标记的队列进行该队列的报文反压,此处的报文反压可为:停止或减小报文缓存到反压标记的队列中。
147.在本实例中,会利用图5所示的结构,将接收到的队列0至队列n这n+1个队列的报
文深度汇总之后,求取出总缓存深度,基于总缓存深度与第一丢弃门限的比较,确定是否需要丢弃报文,若需要丢弃报文则选择合适的目标队列进行丢弃。
148.在还有一些实施例中,若缓存深度大于总的反压门限,则选择出一个或多个队列深度加大的目标队列进行报文反压。
149.如图6所示,本示例提供的拥塞控制方法,可包括:
150.开始检测总缓存深度;
151.判断是否大大总缓存深度的丢弃门限(即前述的第一丢弃门限),若否返回前一步骤;若是进入下一步骤;
152.找出深度最大队列;
153.判断是队列深度丢弃撤销门限,若否进行头部丢弃(即将队列出口处的报文丢弃),若是停止丢弃。
154.如图7所示,本示例提出一种动态拥塞避免的装置,该装置结构包括:队列管理模块,输出调度模块,拥塞监控模块。报文通过队列管理模块进入存储系统,经由输出调度模块送出。拥塞监控模块,接收来自队列管理模块的各队列深度和总缓存深度信息,做出是否进行头部丢弃的判断,反馈给输出调度模块进行相应操作。图7中的队列深度信息用于指示队列深度;头部丢弃指示,用于指示对应的队列丢弃出口处的报文;队列信息用于指示对应的队列。
155.示例2:
156.以图5队列拥塞管理工作示意图为例,假设该系统中队列的数量为n+1,则需要一块深度为n+1的ram统计每条队列的入队个数,同时需要一块深度为n+1的ram统计每条队列的出队个数,入队个数与出队个数相减即为该队列的深度。
157.方式一:
158.用两个寄存器用于设定头部丢弃的丢弃门限以及撤销门限,分别定义为:头部第一丢弃门限(以总缓存深度为判断依据),队列头部丢弃撤销门限(以单队列深度为判断依据)。
159.在系统初始化完成后,各个队列深度都为0,总缓存深度为0。
160.系统开始工作后,各个队列开始有报文进入,假设此时第n个队列突发大流量,队列深度增大。
161.当总缓存较空闲,即使该队列达到队列第一丢弃门限,也不会影响其他队列数据流的处理。如果总缓存使用率较高,即多条队列产生拥塞深度较大或者第n个队列的队列第一丢弃门限设置过大,使得总缓存深度达到设定的头部第一丢弃门限,则触发头部丢弃操作:选择所有队列中深度最大的一条,比如第n个队列,进行头部丢弃,直至队列n的深度小于设定的队列头部丢弃撤销门限,停止头部丢弃操作。再次监控缓存深度是否达到头部第一丢弃门限,判断是否进行新一轮的头部丢弃操作。
162.如总缓存地址深度为0x3000,可设置头部丢弃触发的当前缓存深度门限n_th=0x2800,丢弃撤销门限0x10。如图8,当前存在三条数据队列q0、q1、q2,由于下行通路拥塞,三条队列深度不断增加直至q0=0x800,q1=0xc00,q2=0x1400,q0+q1+q2=n_th,达到总缓存第一丢弃门限,开始头部丢弃操作,选择队列深度最高队列q2进行丢弃,直至q2深度低至0x10,停止丢弃,重新进入缓存深度的监控状况。
163.方式二:
164.用查找表项的方式实现头部丢弃的丢弃门限以及单队列撤销门限值设定。当达到丢弃门限,并选出需要丢弃的队列后,根据队列号查表找出该队列对应的丢弃撤销门限并使用。该方式针对实际使用队列对应流量不同的特点,设置了各队列独立的撤销门限。
165.用一块深度为n+1(系统中的可用队列总数)的ram,根据实际应用状况设定丢弃撤销门限,每个地址对应一个队列号,保存了每个队列实际使用的丢弃撤销门限。当触发头部丢弃后,选出待丢弃队列号为i,则在撤销门限表ram的i地址,找到该队列对应的独立丢弃撤销门限。判断队列深度是否低于该撤销门限,直至深度低于该门限时,停止丢弃报文的操作,再次进入丢弃监控流程。
166.如总缓存地址深度0x3000,可设置头部第一丢弃门限0x2800。如图9,配置队列丢弃撤销门限表中地址a0~a2(对应队列q0~q2)的表项,a0=0x30,a1=0x20,a3=0x10。假设有三条数据流分别进入q0~q2三条队列,当下行通路拥塞,q0~q2的深度不断增加,直至q0=0x1800,q1=0x800,q2=0x800,q0+q1+q2=0x2800,达到头部第一丢弃门限,启动丢弃操作,则选择深度最高的队列q0进行丢弃,直至q0的深度低至0x30即撤销门限表地址a0对应的表项,停止丢弃。图9中的队列丢弃撤销门限表存储了前队列的撤销门限。
167.方式三:
168.结合方式一或二,针对丢弃队列的挑选准则可设定,即:不再是单一选择深度最高的队列进行丢弃,而是可在一定的深度范围[a,b]内,挑选优先级最低的队列进行丢弃。
[0169]
如:增加一个深度选择范围寄存器x,用于设定挑选丢弃队列的范围。当找到深度最高队列后,取其队列深度为y,则在[y-x,y]这个范围内,即在队列深度满足大于等(y-x),小于等于y的队列中,挑选优先级最低的队列开始丢弃。若存在多个同优先级的队列,则挑选其中队列深度最高的进行丢弃。
[0170]
在直至该队列撤销丢弃操作后,系统再次进入丢弃判断的监控流程中。
[0171]
假设结合方式一中的场景缓存地址深度0x3000,第一丢弃门限n_th=0x2800。如图10,数据流q0~q3四条队列,单队列丢弃的撤销门限0x10。进一步设置四条队列的优先级q0》q1=q2=q3,深度范围选择器x=0x800。当下行通路拥塞,四条队列缓存深度不断增加,直至q0=0x1000,q1=0xc00,q2=0x800,q3=0x400,q0+q1+q2+q3=0x2800,达到头部第一丢弃门限n_th,进入丢弃队列选择。深度最高队列q0=0x1000,选择队列深度范围[0x1000,0x1000-0x800],入选队列q0~q2,其中低优先级队列为q1、q2,又q1》q2,则选择丢弃q1中的报文,直至q1的深度低至0x10,撤销丢弃。
[0172]
更进一步的,可以剔除掉高优先级队列,仅在低优先级队列范围挑选和丢弃。图10中所示的优先级为队列优先级。
[0173]
方式四:
[0174]
结合上述的方式,还可以根据需要进行头部丢弃监测的数据类型进行划分。可以把单播,组播分开处理,即除了总缓存第一丢弃门限外,设定独立的单播第一丢弃门限和组播第一丢弃门限。
[0175]
如结合方式一的撤销方式:如总缓存n=0x3000的地址深度,可设定总缓存第一丢弃门限n_th=0x2800,单播第一丢弃门限u_th=0x1800,组播第一丢弃门限m_th=0x1800,丢弃撤销门限设为0x10。
[0176]
假设当前有单播u0和组播m0两条数据流混发,根据不同的出向拥塞情形,不同的门限发挥作用:
[0177]
单播通路下行拥塞。当近单播通路拥塞的时候,单播占用的缓存地址深度不断提高直至达到第一丢弃门限,组播占用的地址深度正常,如u0深度0x1800,m0深度0x100,则总缓存深度u0+m0=0x1900。此情形下组播数据流正常,仅触发单播头部丢弃,开始丢弃单播队列中的报文,直至单播队列地址占用深度降低到u0=0x10,撤销丢弃操作,重新进入头部丢弃的监控状态。
[0178]
组播通路下行拥塞。情形与单播类似,如组播m0深度达到0x1800,单播u0队列深度0x100,则总缓存深度u0+m0=0x1900。此时对组播进行头部丢弃,直至深度低至m0=0x10,撤销丢弃操作。
[0179]
整体通路下行拥塞。如单播和组播的流量接近时,由于整体下行通路拥塞,单组播都在堆积,直至单播u0=0x1300,m0=0x1500,u0+m0=0x2800,则触发总缓存头部丢弃,选择当前缓存中深度最高的队列,即组播队列m0开始丢弃,直至m0深度降至0x10,撤销组播报文丢弃。
[0180]
其他方式:
[0181]
以上仅列出几则使用范例,针对门限设置,队列挑选等节点的边界设定和判断,存在很多可行方法,可根据实际设计需要进行调整,在此无法一一列举完全。
[0182]
队列管理模块对输入的报文进行分队列存储,统计出各队列深度传递给丢弃监控模块,同时将调度相关的队列信息传递给调度输出模块并接受其调度指令输出或者头部丢弃相应队列的报文。
[0183]
输出调度模块接收来自队列管理模块的队列信息,结合系统配置的调度方案进行队列选择,同时接受丢弃监控模块的头部丢弃指示,决定该队列的调度指令——输出或头部丢弃。
[0184]
监控模块根据队列管理模块送来的全部队列深度信息,进行总缓存深度计算和最深队列筛选,触发头部丢弃监控,根据流程向调度模块发出某队列是否进行头部丢弃的指示。
[0185]
更进一步的,可以利用该装置在上述方法的基础上细化及调整,结合多种条件挑选出所需丢弃的队列。比如,结合数据类型或者结合队列优先级进行队列选择和丢弃,甚至可以选择某个具体设定的队列进行丢弃等等。以此方案和装置为基础,可根据具体需要,扩大丢弃队列的选择方式的范围,用于更多需要具体调整的场景。
[0186]
应当理解的是,上述具体实施例的描述较为详细,不能因此而理解为对本发明专利保护范围的限制,本发明专利保护范围应以所附权利要求为准。
[0187]
如图11所示,本实施例提供一种网络设备,包括:
[0188]
网络接口,用于收发报文;
[0189]
存储器,用于存储报文和计算机存储可执行指令;
[0190]
处理器,分别与所述网络接口及所述存储器连接,用于通过执行所述计算机存储可执行指令,控制所述网络接口的收发报文并能够实现前述任意一个技术方案提供的拥塞控制方法,例如,可执行如图1至图3及图5至图7所示的一个或多个技术方案提供的拥塞控制方法。
[0191]
本实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现前述任意一个技术方案提供的拥塞控制方法,例如,可执行如图1至图3及图5至图7所示的一个或多个技术方案提供的拥塞控制方法。
[0192]
本实施例提供的计算机存储介质可为非瞬间存储介质。
[0193]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0194]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0195]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0196]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0197]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种拥塞处理方法,其特征在于,包括:获取多条队列的总缓存深度;若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文;所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括以下步骤中的任意一者:若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度最大的队列为所述目标队列丢弃报文;确定各所述队列的撤销门限;若第i条队列的队列深度大于所述撤销门限,则选择第i条队列丢弃报文,其中,i为小于i的正整数,i为队列的总条数;若所述总缓存深度达到第一丢弃门限,获取多条队列缓存的报文的类型;根据所述报文的类型,确定出第j类报文所在队列的第j类报文总队列深度;j为小于j的正整数;j为报文的类型总数;若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列为一条,选择缓存所述第j类报文的队列为所述目标队列丢弃报文;和/或,若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文。2.根据权利要求1所述的方法,其特征在于,所述方法包括:若目标队列丢弃报文之后的队列深度达到撤销门限,则停止所述目标队列的报文丢弃。3.根据权利要求1所述的方法,其特征在于,所述队列为先进先出队列;所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文,包括:若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃队列出口处的报文。4.根据权利要求1至3任一项所述的方法,其特征在于,所述若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文,包括以下至少之一:若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度最大的队列为目标队列丢弃报文;若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,从所述第j类报文所在队列中选择队列深度大于撤销门限且队列优先级最低的一个或多条队列作为所述目标队列丢弃报文。5.一种拥塞处理装置,其特征在于,包括:获取模块,用于获取多条队列的总缓存深度;丢弃模块,用于若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文;所述若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃
条件的目标队列丢弃报文,包括以下步骤中的任意一者:若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度最大的队列为所述目标队列丢弃报文;确定各所述队列的撤销门限;若第i条队列的队列深度大于所述撤销门限,则选择第i条队列丢弃报文,其中,i为小于i的正整数,i为队列的总条数;若所述总缓存深度达到第一丢弃门限,获取多条队列缓存的报文的类型;根据所述报文的类型,确定出第j类报文所在队列的第j类报文总队列深度;j为小于j的正整数;j为报文的类型总数;若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列为一条,选择缓存所述第j类报文的队列为所述目标队列丢弃报文;和/或,若所述第j类报文总队列深度达到所述第j类报文的第二丢弃门限,且所述第j类报文所在队列不止一条,根据所述第j类报文所在队列的队列深度选择一个或多条队列作为所述目标队列丢弃报文。6.一种网络设备,其特征在于,包括:网络接口,用于收发报文;存储器,用于存储报文和计算机存储可执行指令;处理器,分别与所述网络接口及所述存储器连接,用于通过执行所述计算机存储可执行指令,控制所述网络接口的收发报文并执行权利要求1至4任一项提供的方法。7.一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现权利要求1至4任一项提供的方法。
技术总结
本发明实施例公开了一种拥塞控制方法及装置、网络设备及存储介质。所述拥塞控制方法,包括:获取多条队列的总缓存深度;若所述总缓存深度达到第一丢弃门限,从所述多条队列中选择队列深度满足丢弃条件的目标队列丢弃报文。择队列深度满足丢弃条件的目标队列丢弃报文。择队列深度满足丢弃条件的目标队列丢弃报文。
技术研发人员:李陈
受保护的技术使用者:深圳市中兴微电子技术有限公司
技术研发日:2018.12.12
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
