本申请实施例涉及通信技术领域,特别涉及拥塞管理方法及装置。
背景技术
网络设备可以接收多个报文流。网络设备经由发送端口发送报文前,网络设备需要将多个报文流保存在存储器中,从而形成先入先出队列。存储器的存储空间是有限的,因此存储器中的先入先出队列的长度也是有限的。先入先出队列发送报文的速率有可能小于先入先出队列接收报文的速率。这导致先入先出队列可能发生拥塞。
加权随机早期检测(weightedrandomearlydetection,wred)是一种拥塞管理机制。wred算法定义了最大队列门限(maximumqueuethreshold)和最小队列门限(minimumqueuethreshold)。现有技术中可能出现如下情况:先入先出队列的所有存储空间或者大部分存储空间被某个报文流占据,其他报文流的发送速率为0或者非常低。例如,所述多个报文流包括报文流1和报文流2。存储器的所有存储空间或者大部分存储空间被报文流1占据,报文流2的发送速率为0或者非常低。
技术实现要素:
本申请提供了一种拥塞管理的方法以及装置,有助于提高报文流的发送速率。
第一方面,本申请提供了一种拥塞管理的方法,包括:在第一持续时间,使用第一wred算法对待入队到先入先出队列的第一报文流中的报文进行丢弃管理,所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述先入先出队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述先入先出队列保存在存储器中。确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度,所述第二拥塞程度高于所述第一拥塞程度。在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理,所述第二wred算法的最小队列门限等于min2,所述第二wred算法的最大队列门限等于max2,min2小于min1,或者,max2小于max1。
在上述方案中,先入先出队列中保存了属于所述第一报文流的报文。
在第一持续时间,对所述第一报文流进行丢弃管理的wred算法为第一wred算法。所述第一wred算法的最小队列门限等于min1。所述第一wred算法的最大队列门限等于max1。
在第二持续时间,对所述第一报文流进行丢弃管理的wred算法为第二wred算法。所述第二wred算法的最小队列门限等于min2。所述第二wred算法的最大队列门限等于max2。其中,min2小于min1。或者,max2小于max1。
所述先入先出队列在所述第一持续时间的拥塞程度为第一拥塞程度。在所述第二持续时间的开始时间(第二时间),所述先入先出队列的拥塞程度为第二拥塞程度。第二拥塞程度高于第一拥塞程度。所述先入先出队列在所述第二时间的拥塞程度较高可能是由于第一报文流的发送速率比较低导致。第一报文流的发送速率比较低可能导致第一报文流占据所述存储器的所有存储空间或者大部分存储空间。以上导致其他报文流无法进入存储器。或者,以上导致进入存储器的其他报文流的报文的数量比较少。为使得其他报文流能够进入存储器,或者,为增加进入存储器的来自其他报文流的报文的数量,在上述技术方案中,在所述第二持续时间,使用第二wred算法对所述第一报文流进行丢弃管理。第二wred算法的队列门限低于第一wred算法的队列门限。使用第二wred算法时所述第一报文流中的报文的丢弃可能性大于使用第一wred算法时所述第一报文流中的报文的丢弃可能性。也就是说,相对于第一wred算法,第二wred算法提高了所述第一报文流中的报文被丢弃的程度。
更多数量的来自第一报文流的报文被丢弃后,单位时间内进入所述存储器的来自第一报文流的报文的数量减少了。另外,先入先出队列中保存的属于所述第一报文流的报文可以被调度出所述先入先出队列。以上使得存储器有可能具有空闲的存储空间,或者以上使得存储器有可能具有更多空闲的存储空间。因此,其他报文流可以进入所述存储器。其他报文流进入所述存储器后,其他报文流才有可能被发送。因此,上述技术方案有助于提高其他报文流的发送速率。
在一种可能的设计中,所述确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度包括:
获取第一报文在所述第二时间的状态信息,所述第一报文是在所述第二时间位于所述先入先出队列的队头的报文,所述第一报文在所述第二时间的状态信息用于指示所述先入先出队列在所述第二时间的拥塞程度,所述第一报文在所述第二时间的状态信息是根据从所述第一报文入队到所述先入先出队列的时间到所述第二时间的持续时间确定的。
如果所述第一报文在所述第二时间的状态信息的值大于或者等于第一门限,则确定所述先入先出队列在所述第二时间的拥塞程度为所述第二拥塞程度。
上述技术方案中,根据第一报文的状态信息的值确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度。所述第一报文是在所述第二时间位于所述先入先出队列的队头的报文。在所述第二时间,所述第一报文是停留在所述先入先出队列的持续时间最长的报文。所述第一报文的状态信息是根据所述第一报文停留在所述先入先出队列的持续时间确定的。因此,第一报文的状态信息的值能够更为准确的反映出所述先入先出队列的拥塞程度。上述技术方案提高了确定所述先入先出队列是否处于拥塞状态的准确性,有助于提高在所述存储器被所述第一报文流占据时,其他报文流的发送速率。
在一种可能的设计中,所述方法还包括:维护保存在所述先入先出队列中的每个报文的状态信息,状态信息的值较大的报文在所述先入先出队列中停留的时间长于状态信息的值较小的报文在所述先入先出队列中停留的时间。
上述技术方案中,状态信息的值较大的报文在所述先入先出队列中停留的时间长于状态信息的值较小的报文在所述先入先出队列中停留的时间。因此,报文的状态信息可以准确的反映出报文在所述先入先出队列中停留的时间。报文在所述先入先出队列中停留的时间能够准确的反映出所述先入先出队列的拥塞程度。因此,上述技术方案提高了确定所述先入先出队列是否处于拥塞状态的准确性,有助于提高在所述存储器被所述第一报文流占据时,其他报文流的发送速率。
在一种可能的设计中,当min2小于min1时,在所述第二时间,所述先入先出队列的长度小于min1,并且所述先入先出队列的长度大于min2。
上述技术方案中,在所述第二时间,所述先入先出队列的长度小于min1。因此,在所述第二时间,如果使用所述第一wred算法对所述第一报文流中的报文进行丢弃管理,则实际上不会丢弃所述第一报文流中的报文。也就是说,被接收到的所述第一报文流中的报文需要入队到所述先入先出队列。以上导致所述先入先出队列更为拥塞。进而,降低了其他报文流入队到所述先入先出队列的可能性。在所述第二时间,所述先入先出队列的长度大于min2。因此,在所述第二时间,如果使用所述第二wred算法对所述第一报文流中的报文进行丢弃管理,则接收到的所述第一报文流中的至少一个报文需要被丢弃。也就是说,上述技术方案减少了需要入队到所述先入先出队列的所述第一报文流中的报文的数量。以上方案缓解了所述存储器的拥塞程度。进而,提高了其他报文流入队到所述存储器的可能性。
在一种可能的设计中,所述在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理,包括:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的子集入队到所述先入先出队列,所述第一报文集合的子集不等于所述第一报文集合。
上述技术方案中,能够避免将在所述第二持续时间接收到的所述第一报文流中的部分报文入队到所述先入先出队列。也就是说,上述技术方案减少了需要入队到所述先入先出队列的所述第一报文流中的报文的数量。以上缓解了所述先入先出队列的拥塞程度。进而,提高了其他报文流入队到所述先入先出队列的可能性。
在一种可能的设计中,当max2小于max1时,在所述第二时间,所述先入先出队列的长度小于max1,在所述第二时间,所述先入先出队列的长度大于max2。
上述技术方案中,在所述第二时间,所述先入先出队列的长度小于max1。因此,在所述第二时间,如果使用所述第一wred算法对所述第一报文流中的报文进行丢弃管理,则实际上不会丢弃接收到的所述第一报文流中的所有报文。也就是说,被接收到的所述第一报文流中的报文需要入队到所述先入先出队列。以上导致所述先入先出队列更为拥塞。进而,降低了其他报文流入队到所述先入先出队列的可能性。在所述第二时间,所述先入先出队列的长度大于max2。因此,在所述第二时间,如果使用所述第二wred算法对所述第一报文流中的报文进行丢弃管理,则接收到的所述第一报文流中的所有报文都需要被丢弃。也就是说,上述技术方案,接收到的所述第一报文流中的任意一个报文都不会入队到所述先入先出队列的所述第一报文流中的报文的数量。以上方案缓解了所述先入先出队列的拥塞程度。进而,提高了其他报文流入队到所述先入先出队列的可能性。
在一种可能的设计中,所述在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理,包括:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流。
避免将所述第一报文集合的任意一个报文入队到所述先入先出队列。
上述技术方案中,能够避免将在所述第二持续时间接收到的所述第一报文流中的所有报文入队到所述先入先出队列。也就是说,上述技术方案中,接收到的所述第一报文流中的任意一个报文都不会入队到所述先入先出队列的所述第一报文流中的报文的数量。以上方案缓解了所述先入先出队列的拥塞程度。进而,提高了其他报文流入队到所述先入先出队列的可能性。
第二方面,提供了一种拥塞管理的装置,包括:第一丢弃单元、确定单元以及第二丢弃单元。
所述第一丢弃单元,用于在第一持续时间,使用第一加权随机早期检测wred算法对待入队到先入先出队列的第一报文流中的报文进行丢弃管理,所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述先入先出队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述先入先出队列保存在存储器中;
所述确定单元,用于确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度,所述第二拥塞程度高于所述第一拥塞程度;
所述第二丢弃单元,用于在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理,所述第二wred算法的最小队列门限等于min2,所述第二wred算法的最大队列门限等于max2,min2小于min1,或者,max2小于max1。
在一种可能的设计中,所述确定单元用于:
获取第一报文在所述第二时间的状态信息,所述第一报文是在所述第二时间位于所述先入先出队列的队头的报文,所述第一报文在所述第二时间的状态信息用于指示所述先入先出队列在所述第二时间的拥塞程度,所述第一报文在所述第二时间的状态信息是根据从所述第一报文入队到所述先入先出队列的时间到所述第二时间的持续时间确定的;
如果所述第一报文在所述第二时间的状态信息的值大于或者等于第一门限,则确定所述先入先出队列在所述第二时间的拥塞程度为所述第二拥塞程度。
在一种可能的设计中,所述拥塞管理的装置还包括维护单元。
所述维护单元,用于维护保存在所述先入先出队列中的每个报文的状态信息,状态信息的值较大的报文在所述先入先出队列中停留的时间长于状态信息的值较小的报文在所述先入先出队列中停留的时间。
在一种可能的设计中,当min2小于min1时,在所述第二时间,所述先入先出队列的长度小于min1,并且所述先入先出队列的长度大于min2。
在一种可能的设计中,所述第二丢弃单元用于:在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流。以及,避免将所述第一报文集合的子集入队到所述先入先出队列,所述第一报文集合的子集不等于所述第一报文集合。
在一种可能的设计中,在所述第二时间,所述先入先出队列的长度小于max1,并且所述先入先出队列的长度大于max2。
在一种可能的设计中,所述第二丢弃单元,用于:在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流。以及,避免将所述第一报文集合的任意一个报文入队到所述先入先出队列。
第三方面,提供了一种拥塞管理装置。拥塞管理装置可以用于执行第一方面或者第一方面的任意一种可能的设计所提供的方法。所述拥塞管理装置包括输入接口、输出接口、处理器、存储器以及总线。输入接口、输出接口、处理器以及存储器能够通过总线进行通信。输入接口用于接收报文。输出接口用于发送报文。存储器用于存储计算机程序。具体地,当处理器执行计算机程序时,使得所述装置执行第一方面或者第一方面的任意一种可能的设计所提供的方法。
第四方面,提供了一种计算机可读存储介质。所述计算机可读存储介质用于保存计算机程序。当所述计算机程序被执行时,可以使得计算机执行第一方面或者第一方面的任意一种可能的设计所提供的方法。
在一种可能的设计中,所述计算机可读存储介质可以是非易失计算机可读存储介质。
在一种可能的设计中,所述计算机可以是网络装置。
在一种可能的设计中,所述网络装置可以是转发装置。所述转发装置可以是路由器、网络交换机、防火墙或者负载均衡器。
第五方面,提供了一种流量管理器。流量管理器包括wred电路以及与所述wred电路耦合的队列门限确定电路。
所述wred电路,用于在第一持续时间,使用第一wred算法对待入队到先入先出fifo队列的第一报文流中的报文进行丢弃管理,所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述fifo队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述fifo队列保存在存储器中。
所述队列门限确定电路,用于确定所述fifo队列在所述第二时间的拥塞程度为第二拥塞程度,所述第二拥塞程度高于所述第一拥塞程度。
所述wred电路,用于在所述第二持续时间,使用第二wred算法对待入队到所述fifo队列的所述第一报文流中的报文进行丢弃管理,所述第二wred算法的最小队列门限等于min2,所述第二wred算法的最大队列门限等于max2,min2小于min1,或者,max2小于max1。
在一种可能的设计中,所述队列门限确定电路用于:
获取第一报文在所述第二时间的状态信息,所述第一报文是在所述第二时间位于所述fifo队列的队头的报文,所述第一报文在所述第二时间的状态信息用于指示所述fifo队列在所述第二时间的拥塞程度,所述第一报文在所述第二时间的状态信息是根据从所述第一报文入队到所述fifo队列的时间到所述第二时间的持续时间确定的;
如果所述第一报文在所述第二时间的状态信息的值大于或者等于第一门限,则确定所述fifo队列在所述第二时间的拥塞程度为所述第二拥塞程度。
在一种可能的设计中,所述队列门限确定电路还用于:
维护保存在所述fifo队列中的每个报文的状态信息,状态信息的值较大的报文在所述fifo队列中停留的时间长于状态信息的值较小的报文在所述fifo队列中停留的时间。
在一种可能的设计中,当min2小于min1时,在所述第二时间,所述fifo队列的长度小于min1,并且所述fifo队列的长度大于min2;
所述wred电路用于:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的子集入队到所述fifo队列,所述第一报文集合的子集不等于所述第一报文集合。
在一种可能的设计中,在所述第二时间,所述fifo队列的长度小于max1,并且所述fifo队列的长度大于max2;
所述wred电路用于:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的任意一个报文入队到所述fifo队列。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的一个组网结构图;
图2为本申请提供的路由器的结构示意图;
图3为本申请提供的一个接口板的结构示意图;
图4为本申请提供的一个接口板的结构示意图;
图5为本申请提供的一种拥塞管理的方法的流程示意图;
图6为本申请提供的一种流量管理器的结构示意图;
图7为本申请提供的一种拥塞管理装置的结构示意图;
图8为本申请提供的一种拥塞管理装置的结构示意图。
具体实施方式
在数据通信领域,报文有可能需要经过多台转发装置转发后才能到达目的地。转发装置可以是路由器。路由器可以对因特网协议(internetprotocol,ip)报文进行转发。转发装置可以是网络交换机。网络交换机可以对以太网帧进行转发。
图1为本申请提供的一个组网结构图。参见图1,组网结构图中包含7台路由器,分别是路由器1至路由器7。每个路由器可以包含多个物理接口卡。每个物理接口卡可以包含多个端口。图1中示出了路由器1中的2个出端口(第一出端口、第二出端口),以及路由器2中的2个出端口(第三出端口、第四出端口)。路由器1通过所述第一出端口与路由器2相连。路由器1通过所述第二出端口与路由器3相连。路由器2通过所述第三出端口与路由器4相连。路由器2通过所述第四出端口与路由器5相连。
路由器1接收到一个报文后,路由器1确定用于转发该报文的出端口,例如第一出端口,并将该报文从第一出端口转发出去。路由器2接收到路由器1转发的报文后,路由器2确定用于转发该报文的出端口,例如第三出端口,并将该报文从第三出端口转发出去。
图2为图1中的路由器2的一种可能的结构示意图。图1中的其他路由器(例如路由器1)也可以采用图2所示的结构示意图。
参见图2,路由器2包括控制板1210、交换网板1220、接口板1230以及接口板1240。控制板1210包括中央处理器1211。控制板1210可以用于执行路由协议。路由协议可以是边界网关协议(bordergatewayprotocol,bgp)或者内部网关协议(interiorgatewayprotocol,igp)。控制板1210可以通过执行路由协议生成路由表,并向接口板1230和1240发送路由表。需要说明的是,图1中的路由器2也可以采用与图2所示的结构不同的结构。例如,图1中的路由器2可以只包括一个控制板和一个接口板,不包括交换网板。当然,图1中的路由器2可以包括两个以上的接口板。当路由器2只包括一个接口板,不包括交换网板时,经由该接口板的入端口接收的ip报文经该接口板处理后,可以从该接口板的出端口出去。当路由器2包括多个接口板,并包括交换网板时,经由路由器2的一个接口板的入端口接收的ip报文经交换网板处理后,可以从路由器2的另一个接口板的出端口出去。本申请对路由器2以及图1中的其他路由器的具体结构不做限定。
接口板1230可以通过查找路由表,对ip报文进行转发。具体来说,接口板1230包括中央处理器1231、网络处理器1232、物理接口卡1233以及存储器1234。需要说明的是,图2并没有示出接口板1230能够包含的所有部件。具体实现时,接口板1230还可以包含其他部件。例如,为使得接口板1230具备队列调度和管理的功能,接口板1230还可以包含流量管理器。另外,为使得来自接口板1230的报文能够经由交换网板1220被交换到接口板1240,接口板1230还可以包含入口交换网接口芯片(ingressfabricinterfacechip,ific)。关于包含流量管理器以及ific的接口板1230的具体实现方式,可以参见图3以及对应的描述。中央处理器1231可以接收中央处理器1211发送的路由表,并将路由表保存至存储器1234。物理接口卡1233可以用于接收路由器1发送的ip报文。网络处理器1232可以在存储器1234的路由表中查找与物理接口卡1233接收的ip报文匹配的路由表项,并根据匹配的路由表项,向交换网板1220发送ip报文。交换网板1220可以用于将来自一个接口板的ip报文交换到另一接口板。例如,交换网板1220可以将来自接口板1230的ip报文交换到接口板1240。具体地,交换网板1220可以以信元交换的方式将来自接口板1230的ip报文交换到接口板1240。举例来说,网络处理器1232可以获取ip报文中的目的ip地址。网络处理器1232可以根据最长前缀匹配算法在路由表中查找与ip报文匹配的路由表项,并根据与ip报文匹配的路由表项确定出端口。与ip报文匹配的路由表项中包含了出端口的标识。网络处理器1232向交换网板1220发送的ip报文到达交换网板1220前,接口板1230可以对ip报文进行队列调度和管理。具体地,接口板1230可以利用图3中的流量管理器301对ip报文进行队列调度和管理。
接口板1240可以通过查找路由表,对ip报文进行转发。接口板1240包括中央处理器1241、网络处理器1242、物理接口卡1243以及存储器1244。图2并没有示出接口板1240能够包含的所有部件。具体实现时,接口板1240还可以包含其他部件。例如,为使得接口板1240具备队列调度和管理的功能,接口板1240还可以包含流量管理器。另外,为使得接口板1240能够正确经由交换网板1220接收来自接口板1230的报文,接口板1240还可以包含出口交换网接口芯片(egressfabricinterfacechip,efic)。关于包含流量管理器以及efic的接口板1240的具体实现方式,可以参见图4以及对应的描述。中央处理器1241可以接收中央处理器1211发送的路由表,并将路由表保存至存储器1244。网络处理器1242可以用于接收来自交换网板1220的ip报文。来自交换网板1220的ip报文可以是物理接口卡1233接收的路由器1发送的ip报文。网络处理器1242可以在存储器1244的路由表中查找与来自交换网板1220的ip报文匹配的路由表项,并根据匹配的路由表项,向物理接口卡1243发送ip报文。物理接口卡1243可以用于向路由器4发送的ip报文。网络处理器1242向物理接口卡1243发送的ip报文到达物理接口卡1243前,接口板1240可以对ip报文进行队列调度和管理。具体地,接口板1240可以利用图4中的流量管理器402对ip报文进行队列调度和管理。
网络中需要传输多个报文,每个报文的发送时间可能是不同的。为减少网络中传输的报文发生乱序,路由器中包含了存储器。所述存储器可以是先入先出存储器(firstinfirstoutmemory)。路由器可以利用存储器对待转发的报文流进行队列调度和管理。另外,路由器可能在短时间内接收到大量的报文,大量的报文可能导致路由器的存储器中的先入先出队列的拥塞程度比较高。为了降低先入先出队列的拥塞程度,路由器可以对待入队到所述先入先出队列的报文进行丢弃管理。
图3为图2所示的接口板1230在一种可能的实现方式中的结构示意图。参见图3,接口板1230包括网络处理器(networkprocessor,np)1232、流量管理器(trafficmanager,tm)301、存储器302以及ific303。需要说明的是,图3仅示出接口板1230包含的部分部件。具体实现时,图3所示的接口板1230还可以包含图2所示的接口板1230中的部件。图3所示的接口板能够对上行流量进行队列调度和管理。上行流量可以是指接口板1230经由物理接口卡1233接收的,待发送至交换网板1220的流量。具体地,经由物理接口卡1233接收的报文经网络处理器1232和流量管理器301处理后,被发送至入口交换网接口芯片303。入口交换网接口芯片303接收流量管理器301发送的报文后,入口交换网接口芯片303可以根据所述报文生成多个信元,并向交换网板1220发送所述多个信元。所述报文队列可以是先入先出队列。存储器302可以是先入先出存储器。需要说明的是,存储器1234与存储器302的功能不同。存储器1234用于存储路由表。网络处理器通过访问存储器1234实现对路由表的查找。存储器302用于存储先入先出队列。流量管理器301通过访问存储器302实现对先入先出队列的管理。因此,存储器1234与存储器302可以是相对独立的存储器。具体来说,存储器302用于保存和维护报文队列。报文队列中包含多个报文。流量管理器301能够对待进入报文队列的报文进行入队管理,对待离开报文队列的报文进行出队管理。具体来说,流量管理器301能够保存和维护报文描述符队列。报文描述符队列中包含多个报文描述符。报文队列中包含的多个报文与报文描述符队列中包含的多个报文描述符一一对应。每个报文描述符用于指示对应的报文的信息。例如,报文描述符可以包括该报文描述符对应的报文的在存储器302的存储位置。另外,报文描述符还可以包括该报文描述符对应的报文进入路由器2的时间。具体地,该报文描述符对应的报文进入路由器2的时间可以是该报文描述符对应的报文被物理接口卡1233接收的时间。流量管理器301能够对来自网络处理器1232的报文进行入队管理。例如,流量管理器301可以根据wred算法确定是否丢弃来自网络处理器1232的报文。当然,流量管理器301也可以根据其他算法确定是否丢弃来自网络处理器1232的报文。如果流量管理器301确定不丢弃来自网络处理器1232的报文时,流量管理器301可以将报文保存在存储器302的报文队列中。具体地,流量管理器301可以将报文保存在存储器302的报文队列的队尾。并且,流量管理器301根据所述报文在存储器302中的存储位置生成所述报文对应的报文描述符,并将所述报文描述符保存在报文描述符队列中。具体地,流量管理器301可以将报文描述符保存在报文描述符队列的队尾。报文描述符队列可以被保存在流量管理器301中。具体地,报文描述符队列可以被保存在流量管理器中的队列管理器中。具体可参见图6以及实施例对图6的相关描述。流量管理器301能够对保存在存储器302中的报文队列进行出队管理。例如,当流量管理器301根据加权公平队列(weightedfairqueueing,wfq)确定需要发送保存在存储器302中的报文队列的报文时,流量管理器301可以根据报文描述符队列的队头,向存储器302发送调度信号。当然,流量管理器301也可以根据其他队列调度算法确定需要发送保存在存储器302中的报文队列的报文。所述调度信号包含位于报文队列的队头的报文的存储位置。所述调度信号用于指示存储器302向流量管理器301提供位于报文队列的队头的报文。存储器302向流量管理器301提供位于报文队列的队头的报文并删除报文队列中所述已发送的报文。流量管理器301从存储器302获得位于报文队列的队头的报文,向入口交换网接口芯片303发送所述报文。。流量管理器301向入口交换网接口芯片303发送报文后,流量管理器301删除报文描述符队列中所述已发送的报文对应的报文描述符。
图4为图2所示的接口板1240在一种可能的实现方式中的结构示意图。参见图4,接口板1240包括网络处理器1242、流量管理器402、存储器403、物理接口卡1243以及efic401。需要说明的是,图4仅示出接口板1240包含的部分部件。具体实现时,图4所示的接口板1240还可以包含图2所示的接口板1240中的部件。图4所示的接口板能够对下行流量进行队列调度和管理。下行流量可以是指接口板1240经由交换网板1220接收的,待发送至物理接口卡1243的流量。物理接口卡1243接收到下行流量后,可以经由第三出端口将下行流量发送至路由器4。出口交换网接口芯片401接收到来自交换网板1220的多个信元后,出口交换网接口芯片401能够根据所述多个信元生成报文,并将报文发送至网络处理器1242。流量管理器402可以对网络处理器1242收到的报文进行丢弃管理。流量管理器402可以对网络处理器1242收到的报文进行入队管理,网络处理器1242根据tm的调度将收到的报文根据调度算法放到存储器403中的报文队列中,比如放到报文队列的队尾。流量管理器402可以对保存在存储器403中的报文队列进行出队管理。所述报文队列可以是先入先出队列。存储器403可以是先入先出存储器。流量管理器402获得保存在存储器403中的报文队列中报文后,流量管理器402可以将获得的报文发送至物理接口卡1243。物理接口卡1243可以经由第三出端口向路由器4发送报文。关于图4所示的接口板进行队列调度和管理的具体实现方式,可以参见图3对应的实施例的描述,此处不再赘述。
图5为本申请提供的一种拥塞管理的方法的流程示意图。参见图5,所述方法包括:s501、s502以及s503。举例来说,图5所示的方法可以被图3所示的接口板1230执行,具体地,可以被流量管理器301执行,从而实现拥塞管理。举例来说,图5所示的方法可以被图4所示的接口板1240执行,具体地,可以被流量管理器402执行,从而实现拥塞管理。当然,图5所示的方法也可以由其他软硬件系统执行。
s501:在第一持续时间,使用第一加权随机早期检测wred算法对待入队到先入先出队列的第一报文流中的报文进行丢弃管理。
所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述先入先出队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述先入先出队列保存在存储器中。
s502:确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度。
所述第二拥塞程度高于所述第一拥塞程度。
s503:在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理。
所述第二wred算法的最小队列门限等于min2。所述第二wred算法的最大队列门限等于max2。min2小于min1,或者,max2小于max1。
举例来说,图5所示的方法的执行主体也可以是网络装置。所述网络装置可以是转发装置。所述转发装置可以是路由器、网络交换机、防火墙或者负载均衡器。具体地,图5所示的方法的执行主体可以是转发装置中的流量管理器或其他具有流量管理功能的组件。流量管理器根据wred算法对待入队到先入先出队列的报文进行丢弃管理时,如果先入先出队列的长度小于最小队列门限,则流量管理器将所述报文入队到所述先入先出队列。如果先入先出队列的长度大于最小队列门限,并且先入先出队列的长度小于最大队列门限,则流量管理器有可能将所述报文入队到所述先入先出队列,也有可能丢弃所述报文;也就是说,在这种情况下,所述报文被丢弃的概率大于0%并且小于100%。如果先入先出队列的长度大于最大队列门限,则流量管理器丢弃所述报文。也就是说,在这种情况下,所述报文被丢弃的概率为100%。
下文结合图3和图6,对图5所示的方法进行举例说明。图6为本申请提供的一种流量管理器的结构示意图。举例来说,图6所示的流量管理器600可以用于实现图3中的流量管理器301。
参见图6,流量管理器600包括调度器601、队列管理器602、wred电路603以及队列门限确定电路604。wred电路603用于执行wred算法。具体地,wred电路603可以保存所述第一wred算法的最大队列门限以及最小队列门限。wred电路603能够从队列管理器602获取报文队列的长度。wred电路603能够接收报文,例如wred电路603能够接收来自网络处理器1232的报文。队列管理器602用于对报文描述符队列进行保存和维护。具体来说,当wred电路603确定对接收到的报文进行入队时,队列管理器602在报文描述符队列的队尾增加入队到报文队列的报文对应的报文描述符。队列管理器602可以向调度器601通知报文描述符队列的队尾增加了新的报文描述符。调度器601可以根据队列管理器602通知的信息,确定对报文队列中的报文进行调度的策略。队列管理器602接收到调度器601发送的调度命令后,队列管理器602可以根据位于报文描述符队列的队头的报文描述符,向存储器302发送读请求,从而获取到与位于报文描述符队列的队头的报文描述符对应的报文,即位于报文队列的队头的报文。队列管理器602可以向ific303发送所述报文。由于队列管理器602已将位于报文队列的队头的报文调度出报文队列,队列管理器602删除位于报文描述符队列的队头的报文描述符。另外,队列管理器602根据维护的报文描述符队列确定报文描述符队列中包含的报文描述符的数量,根据报文描述符的数量确定先入先出队列的长度,并向wred电路603通知先入先出队列的长度。
下文对s501的一种可能的实现方式进行说明。当wred电路603接收到报文时,wred电路603可以根据从队列管理器602获取的报文队列的长度、wred电路603保存的所述第一wred算法的最大队列门限以及最小队列门限,对接收到的报文进行丢弃管理。例如,当wred电路603确定报文队列的长度小于所述第一wred算法的最小队列门限,则wred电路603将所述报文入队到存储器302,并将所述报文对应的报文描述符入队到队列管理器维护的报文描述符队列。也就是说,当wred电路603确定报文队列的长度小于所述第一wred算法的最小队列门限时,wred电路603不对接收到的报文进行丢弃。当wred电路603确定报文队列的长度大于所述第一wred算法的最小队列门限,同时报文队列的长度小于所述第一wred算法的最大队列门限,则wred电路603将所述报文入队到存储器302,或者wred电路603将所述报文丢弃。也就是说,当wred电路603确定报文队列的长度大于所述第一wred算法的最小队列门限,并且小于所述第一wred算法的最大队列门限时,wred电路603对接收到的报文进行丢弃的概率大于0%并且小于100%。当wred电路603确定报文队列的长度大于所述第一wred算法的最大队列门限,则wred电路603将所述报文丢弃,wred电路603避免将所述报文入队到报文队列中。也就是说,当wred电路603确定报文队列的长度大于所述第一wred算法的最大队列门限时,wred电路603对接收到的报文进行丢弃的概率为100%。
关于s503的一种可能的实现方式,可以参考上文对s501的一种可能的实现方式的描述。需要说明的是,s501是在第一持续时间执行的。s503是在第二持续时间执行的。第一持续时间和第二持续时间是相邻的持续时间。所述第一持续时间是所述第二持续时间之前的持续时间。例如,所述第一持续时间可以是8点至8点0分1秒。所述第二持续时间可以是8点0分1秒至8点0分2秒。也就是说,所述第一持续时间的开始时间可以是8点。所述第一持续时间的结束时间可以是8点0分1秒。所述第二持续时间的开始时间可以是8点0分1秒。所述第二持续时间的结束时间可以是8点0分2秒。上述举例中,所述第一持续时间的长度为1秒,所述第二持续时间的长度也为1秒。在一些可能的实现方式中,所述第一持续时间的长度也可以是其他值,例如2秒、1毫秒或者1微秒。所述第二持续时间的长度也可以是其他值,例如3秒、2毫秒或者3微秒。另外,所述第一持续时间的长度可以等于所述第二持续时间的长度。所述第一持续时间的长度也可以不等于所述第二持续时间的长度。
另外,s501具体实现时,是根据所述第一wred算法进行丢弃管理。s503具体实现时,是根据所述第二wred算法进行丢弃管理。所述第一wred算法是wred算法。所述第二wred算法是wred算法。所述第一wred算法不同于所述第二wred算法。具体来说,min2小于min1。或者,max2小于max1。或者min2小于min1并且max2小于max1。需要说明的是,在所述第一持续时间,所述wred电路603可能会将接收到的报文入队到存储器302中的所述先入先出队列。另,在所述第一持续时间,流量管理器600将存储器302中的报文调度出所述先入先出队列后,存储器302会在所述先入先出队列中将被调度出的报文删除。也就是说,所述先入先出队列包含的报文可能是动态变化的。因此,所述先入先出队列在所述第一持续时间包含的报文可能与所述先入先出队列在所述第二持续时间包含的报文是不同的。另外,在所述第一持续时间待入队到所述先入先出队列的报文,与在所述第二持续时间待入队到所述先入先出队列的报文可能是不同的。例如,截至第二持续时间的开始时间,在所述第一持续时间待入队到所述先入先出队列的报文可能已入队到所述先入先出队列。或者,截至第二持续时间的开始时间,在所述第一持续时间待入队到所述先入先出队列的报文可能已被wred电路603丢弃。或者,截至第二持续时间的开始时间,在所述第一持续时间待入队到所述先入先出队列的多个报文中,有的报文可能已入队到所述先入先出队列,有的报文则可能已被wred电路603丢弃。
本申请中的第一报文流是指具有相同特征的多个报文。报文头中的至少一个字段可以用于指示报文的特征。例如,具有相同的目的ip地址的多个ip报文可以构成所述第一报文流。根据上述例子,如果两个ip报文的目的ip地址不同,则两个ip分别属于不同的报文流,例如,分别属于第一报文流以及第二报文流。再例如,具有相同的目的ip地址以及相同的源ip地址的多个ip报文可以构成所述第一报文流。再例如,具有相同的五元组的多个ip报文可以构成所述第一报文流。五元组包括源ip地址、目的ip地址、源端口、目的端口以及协议。其中,源ip地址、目的ip地址以及协议是三层头(ip头)中的字段。源端口和目的端口是四层头(tcp头或者udp头)中的字段。另外,用于接收报文的入端口也可以用于指示报文的特征。例如,如果多个报文是经由物理接口卡1233上的同一个入端口接收的,则所述多个报文属于所述第一报文流。如果多个报文是经由不同的入端口接收的,则所述多个报文不属于同一个报文流。本申请中的报文可以是ip报文,也可以是其他报文。例如,本申请中的报文可以是以太网帧。
可以理解,存储器302可以仅保存和维护一个报文队列,例如所述第一报文流构成的报文队列。存储器302也可以同时保存和维护多个报文队列,例如所述第一报文流构成的报文队列,以及所述第二报文流构成的报文队列。另外,多个报文队列的优先级可以是相同的,也可以是不同的。当所述第一报文流构成的报文队列的优先级高于所述第二报文流构成的报文队列时,所述第一报文流构成的报文队列中的报文先于所述第二报文流构成的报文队列中的报文被调度出存储器302。相应的,队列管理器602可以仅保存和维护一个报文描述符队列,例如所述第一报文流构成的报文队列对应的报文描述符队列。队列管理器602也可以同时保存和维护多个报文描述符队列,例如所述第一报文流构成的报文队列对应的报文描述符队列,以及所述第二报文流构成的报文队列对应的报文描述符队列。相应的,wred电路603可以仅对一个报文流的报文进行丢弃管理,例如,仅对所述第一报文流的报文进行丢弃管理。wred电路603也可以同时对多个报文流的报文进行丢弃管理,例如,同时对所述第一报文流的报文,以及所述第二报文流中的报文进行丢弃管理。
下文将对s502的一种可能的实现方式进行说明。
参见图6,队列门限确定电路604可以周期性地确定所述先入先出队列的拥塞程度,根据新的拥塞程度,确定新的wred算法,并指示wred电路603保存新的wred算法对应的最大队列门限以及最小队列门限。进而,wred电路603可以根据新的wred算法对应的最大队列门限以及最小队列门限,对接收到报文进行丢弃管理。例如,wred电路603可以根据新的wred算法对应的最大队列门限以及最小队列门限,执行s503。
具体来说,队列管理器602可以保存和维护报文描述符队列。队列门限确定电路604可以保存和维护所述报文描述符队列中的每个报文描述符对应的报文的状态信息。例如,当报文入队到报文队列时,队列门限确定电路604可以记录所述报文的报文描述符,以及所述报文的状态信息。当报文入队到报文队列时,所述报文的状态信息可以是1。队列管理器602可以包含定时器,所述定时器可以周期性的生成刷新信号。所述定时器的周期可以是1秒、1毫秒、1微秒或者其他值。当定时器生成刷新信号时,队列管理器602可以对保存的每个报文的状态信息进行更新。举例来说,队列管理器602可以对状态信息进行加1操作。例如,生成刷新信号前,一个报文的状态信息是1,则生成刷新信号时,该报文的状态信息被更新为2。再例如,生成刷新信号前,一个报文的状态信息是2,则生成刷新信号时,该报文的状态信息被更新为3。当然,队列管理器602可以预先设置状态信息的最大值。当某个报文的状态信息达到最大值后,即使定时器生成新的刷新信号,队列管理器602也不对该报文的状态信息进行更新。例如,预先设置状态信息的最大值为3。生成刷新信号前,某个报文的状态信息是3,则生成刷新信号时,该报文的状态信息仍然为3。也就是说,队列门限确定电路604根据定时器的刷新信号维护报文的状态信息时,队列门限确定电路604可能会修改报文的状态信息,也可能不会修改报文的状态信息。当报文队列中的一个报文被调度出该报文队列时,队列门限确定电路604可以将被调度出该报文队列的报文的状态信息更新为0。当然,当报文队列中的一个报文被调度出该报文队列时,队列门限确定电路604可以删除被调度出该报文队列的报文的状态信息,并删除被调度出该报文队列的报文的报文描述符。另外,队列管理器602可以记录队列管理器602保存的每个报文的状态信息对应的报文是否是位于报文队列的队头。
根据上述技术方案,队列管理器602可以位于保存和维护报文队列中的每个报文的状态信息。另外,队列管理器602可以记录队列管理器602保存的每个报文的状态信息对应的报文是否是位于报文队列的队头。进而,队列管理器602可以确定位于报文队列的队头的报文的状态信息。上述实施例中,状态信息的值越大,状态信息对应的报文在报文队列中停留的持续时间越长。报文在报文队列中停留的持续时间越长,该报文队列的拥塞程度越高。对于先入先出队列,位于队头的报文在先入先出队列中停留的持续时间长于其他报文在先入先出队列中停留的持续时间。因此,队列管理器602可以根据位于报文队列的队头的报文的状态信息确定报文队列的拥塞程度。举例来说,当队列管理器602确定位于报文队列的队头的报文的状态信息等于1时,队列管理器602可以确定确定报文队列的拥塞程度为第一拥塞程度。队列管理器602可以预先设置第一门限为2。当队列管理器602确定位于报文队列的队头的报文的状态信息大于或者等于第一门限(例如2)时,队列管理器602可以确定报文队列的拥塞程度为第二拥塞程度。所述第二拥塞程度高于所述第一拥塞程度。可以理解,拥塞程度是一个相对的概念。可以根据报文队列的长度确定报文队列的拥塞程度。报文队列的长度越长,报文队列的拥塞程度越高。也可以根据报文队列中位于队头的报文在报文队列中停留的持续时间的长度确定报文队列的拥塞程度。例如,位于队头的报文在报文队列中停留的持续时间越长,报文队列的拥塞程度越高。当然,队列管理器602可以预先设置第一门限为其他值,例如3。当队列管理器602确定位于报文队列的队头的报文的状态信息大于或者等于3时,队列管理器602可以确定报文队列的拥塞程度为第二拥塞程度。另外,队列管理器602可以预先设置多个门限,例如门限1和门限2。当队列管理器602确定位于报文队列的队头的报文的状态信息大于或者等于门限1(例如2)时,队列管理器602可以确定报文队列的拥塞程度为第二拥塞程度。当队列管理器602确定位于报文队列的队头的报文的状态信息大于或者等于门限2(例如3)时,队列管理器602可以确定报文队列的拥塞程度为第三拥塞程度。所述第三拥塞程度高于所述第二拥塞程度。
队列管理器602可以预先保存多个拥塞程度与多个wred算法的一一对应关系。另外,队列管理器602可以预先保存所述多个wred算法中每个wred算法的最大队列门限以及最小队列门限。例如,队列管理器602可以预先保存三个拥塞程度(拥塞程度1、拥塞程度2以及拥塞程度3)与三个wred算法(wred算法1、wred算法2以及wred算法3)的对应关系。其中,拥塞程度1对应wred算法1。拥塞程度2对应wred算法2。拥塞程度3对应wred算法3。拥塞程度3高于拥塞程度2。拥塞程度2高于拥塞程度1。wred算法3对报文的丢弃程度大于wred算法2对报文的丢弃程度。wred算法2对报文的丢弃程度大于wred算法1对报文的丢弃程度。例如,wred算法3的最大队列门限小于wred算法2的最大队列门限。wred算法2的最大队列门限小于wred算法1的最大队列门限。wred算法3的最小队列门限小于wred算法2的最小队列门限。wred算法2的最小队列门限小于wred算法1的最小队列门限。当队列管理器602根据位于报文队列的队头的报文的状态信息确定报文队列的拥塞程度为拥塞程度2时,队列管理器602可以根据预先保存的多个拥塞程度与多个wred算法的一一对应关系确定与拥塞程度2对应的wred算法(例如wred算法2)。进一步地,队列管理器602可以根据wred算法2确定wred算法2的最大队列门限以及最小队列门限。然后,队列管理器602可以向wred电路603发送wred算法2的最大队列门限以及最小队列门限。进而,wred电路603可以根据wred算法2对接收到的报文进行丢弃处理。
可选地,s502可以包括:
获取第一报文在所述第二时间的状态信息,所述第一报文是在所述第二时间位于所述先入先出队列的队头的报文,所述第一报文在所述第二时间的状态信息用于指示所述先入先出队列在所述第二时间的拥塞程度,所述第一报文在所述第二时间的状态信息是根据从所述第一报文入队到所述先入先出队列的时间到所述第二时间的持续时间确定的。
如果所述第一报文在所述第二时间的状态信息的值大于或者等于第一门限,则确定所述先入先出队列在所述第二时间的拥塞程度为所述第二拥塞程度。
可选地,上述技术方案中,还包括:
维护保存在所述先入先出队列中的每个报文的状态信息,状态信息的值较大的报文在所述先入先出队列中停留的时间长于状态信息的值较小的报文在所述先入先出队列中停留的时间。
根据上文的描述,流量管理器可以基于定时器发出的刷新信号,确定是否需要更新报文的状态信息。当流量管理器确定需要更新报文的状态信息时,流量管理器可以更新报文的状态信息。当流量管理器确定不需要更新报文的状态信息时,流量管理器不更新报文的状态信息。
可选地,上述技术方案中,当min2小于min1时,在所述第二时间,所述先入先出队列的长度小于min1,并且所述先入先出队列的长度大于min2。
可选地,上述技术方案中,s503可以包括:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流。
避免将所述第一报文集合的子集入队到所述先入先出队列,所述第一报文集合的子集不等于所述第一报文集合。
第一报文集合中的报文为在所述第二持续时间,待入队到所述先入先出队列的所述第一报文流中的报文。上述方案中,将所述第一报文集合中的部分报文进行丢弃,不是对所述第一报文集合中的全部报文进行丢弃。
可选地,上述技术方案中,在所述第二时间,所述先入先出队列的长度小于max1,并且所述先入先出队列的长度大于max2。
可选地,上述技术方案中,s503可以包括:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的任意一个报文入队到所述先入先出队列。
第一报文集合中的报文为在所述第二持续时间,待入队到所述先入先出队列的所述第一报文流中的报文。上述技术方案中,将所述第一报文集合中的所有报文都丢弃。
图7为本申请提供的一种拥塞管理装置的结构示意图。拥塞管理装置700可以用于执行s501、s502以及s503。参见图7,拥塞管理装置700包括第一丢弃单元701、确定单元702以及第二丢弃单元703。
第一丢弃单元701,用于在第一持续时间,使用第一加权随机早期检测wred算法对待入队到先入先出队列的第一报文流中的报文进行丢弃管理,所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述先入先出队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述先入先出队列保存在存储器中。
确定单元702,用于确定所述先入先出队列在所述第二时间的拥塞程度为第二拥塞程度,所述第二拥塞程度高于所述第一拥塞程度。
第二丢弃单元703,用于在所述第二持续时间,使用第二wred算法对待入队到所述先入先出队列的所述第一报文流中的报文进行丢弃管理,所述第二wred算法的最小队列门限等于min2,所述第二wred算法的最大队列门限等于max2,min2小于min1,或者,max2小于max1。
具体地,第一丢弃单元701可以用于执行s501。确定单元702可以用于执行s502。第二丢弃单元703可以用于执行s503。关于第一丢弃单元701、确定单元702以及第二丢弃单元703的具体实现方式,可以参见图5所示的实施例的描述,此处不再赘述。
另外,拥塞管理装置700具体可以是图6所示的流量管理器600。也就是说,流量管理器600可以实现拥塞管理装置700的功能。具体地,第一丢弃单元701以及第二丢弃单元703可以通过wred电路603实现。确定单元702可以通过队列门限确定电路604实现。关于第一丢弃单元701、确定单元702以及第二丢弃单元703的具体实现方式,可以参考图6所示的实施例的描述,此处不再赘述。
图8为本申请提供的一种拥塞管理装置的结构示意图。拥塞管理装置800可以用于执行图5所示的方法。参见图8,拥塞管理装置800包括输入接口801、输出接口802、处理器803、存储器804以及总线805。输入接口801、输出接口802、处理器803以及存储器804能够通过总线805进行通信。输入接口801用于接收报文。输出接口802用于发送报文。存储器804用于存储计算机程序。处理器803可以通过访问存储器804中的计算机程序,执行图5所示的方法。关于处理器803通过访问存储器804中的计算机程序,执行图5所示的方法的具体实现方式,可以参见图5所示的实施例的描述,此处不再赘述。
另外,拥塞管理装置800具体可以是图6所示的流量管理器600。也就是说,流量管理器600可以实现拥塞管理装置800的功能。具体地,输入接口801可以通过物理接口卡1233实现。输出接口802可以通过ific303实现。处理器803可以通过wred电路603以及队列门限确定电路604实现。关于输入接口801、输出接口802、处理器803以及存储器804的具体实现方式,可以参考图6所示的实施例的描述,此处不再赘述。
本申请还提供一种计算机可读存储介质。所述计算机可读存储介质用于保存计算机程序。当所述计算机程序被执行时,可以使得计算机执行图5所示的方法。具体请参见图5所示的实施例的描述,此处不再赘述。在一种可能的设计中,所述计算机可读存储介质可以是非易失计算机可读存储介质。
本申请还提供一种流量管理器。流量管理器包括wred电路以及与所述wred电路耦合的队列门限确定电路。关于流量管理器、wred电路以及队列门限确定电路的具体实现方式,可以参考图6对应的实施例的描述,此处不再赘述。
所述wred电路,用于在第一持续时间,使用第一wred算法对待入队到先入先出fifo队列的第一报文流中的报文进行丢弃管理,所述第一wred算法的最小队列门限等于min1,所述第一wred算法的最大队列门限等于max1,第一时间为所述第一持续时间的开始时间,第二时间为所述第一持续时间的结束时间以及第二持续时间的开始时间,所述fifo队列在所述第一持续时间的拥塞程度为第一拥塞程度,所述fifo队列保存在存储器中。
所述队列门限确定电路,用于确定所述fifo队列在所述第二时间的拥塞程度为第二拥塞程度,所述第二拥塞程度高于所述第一拥塞程度。
所述wred电路,用于在所述第二持续时间,使用第二wred算法对待入队到所述fifo队列的所述第一报文流中的报文进行丢弃管理,所述第二wred算法的最小队列门限等于min2,所述第二wred算法的最大队列门限等于max2,min2小于min1,或者,max2小于max1。
在一种可能的设计中,所述队列门限确定电路用于:
获取第一报文在所述第二时间的状态信息,所述第一报文是在所述第二时间位于所述fifo队列的队头的报文,所述第一报文在所述第二时间的状态信息用于指示所述fifo队列在所述第二时间的拥塞程度,所述第一报文在所述第二时间的状态信息是根据从所述第一报文入队到所述fifo队列的时间到所述第二时间的持续时间确定的;
如果所述第一报文在所述第二时间的状态信息的值大于或者等于第一门限,则确定所述fifo队列在所述第二时间的拥塞程度为所述第二拥塞程度。
在一种可能的设计中,所述队列门限确定电路还用于:
维护保存在所述fifo队列中的每个报文的状态信息,状态信息的值较大的报文在所述fifo队列中停留的时间长于状态信息的值较小的报文在所述fifo队列中停留的时间。
在一种可能的设计中,当min2小于min1时,在所述第二时间,所述fifo队列的长度小于min1,并且所述fifo队列的长度大于min2;
所述wred电路用于:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的子集入队到所述fifo队列,所述第一报文集合的子集不等于所述第一报文集合。
在一种可能的设计中,在所述第二时间,所述fifo队列的长度小于max1,并且所述fifo队列的长度大于max2;
所述wred电路用于:
在所述第二持续时间,接收第一报文集合,所述第一报文集合包括多个报文,所述第一报文集合中的每个报文都属于所述第一报文流;以及
避免将所述第一报文集合的任意一个报文入队到所述fifo队列。
应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线方式或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述有线方式可以是同轴电缆、光纤或者数字用户线(digitalsubscriberline,dsl)。所述无线方式可以是红外、无线或者微波。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质、光介质或者半导体介质等。本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。磁性介质可以是软盘、硬盘或者磁带。光介质可以是数字多功能光盘(digitalversatiledisc,dvd)。半导体介质可以是固态硬盘(solidstatedisk,ssd)。