一种队列调度方法及装置

文档序号:29690198发布日期:2022-04-16 11:14阅读:163来源:国知局
一种队列调度方法及装置

1.本技术涉及通信领域,尤其涉及一种队列调度方法及装置。


背景技术:

2.服务质量(quality of service,qos)是反映网络状态的指标,网络状态包括网络延迟、网络阻塞等状态。队列调度是保障目前对高qos网络的需求的关键技术,具体是指按照一定的策略将多个队列中缓存的报文出队的技术。
3.亏空轮询(deficit round robin,drr)调度方法是一种被广泛应用的队列调度方法。该队列调度方法是将设备的网络带宽资源最大化的用到对多个队列的每个队列出队缓存的报文中。该队列调度方法强调于队列间的调度顺序,并没有考虑到网络时延的问题。当某个队列出现流量突发的状况,该队列中报文的时延可能会大幅度上升,降低了报文的传输效率。所以,传统的drr调度方法并不适用对报文转发时延要求较高的应用场景,例如第五代移动通信技术(5th generation mobile networks,5g)中高可靠和低延迟通信(ultra-reliable and low latency communications,urllc)的应用场景等。


技术实现要素:

4.本技术实施例提供了一种队列调度方法及装置,降低了报文传输过程中的网络时延。
5.第一方面,提供了一种用于队列调度的方法,该方法可以应用于第一设备,第一设备可以是路由器、交换机等网络设备,也可以是其他用于进行队列调度的设备。所述方法包括如下步骤:在对n个队列中第i个队列(2≤n;1≤i≤n)进行调度前,第一设备先计算第i个队列的带宽和n的队列的带宽总和的比值,得到第一比值,并将第一比值与第一预设出队速率相乘,得到第i个队列对应的积累速率si。第一设备可以积累速率si积累第i个队列的信用量。其中,信用量表示队列的报文出队的时间资源。在调度第i个队列的过程中,第一设备以第一预设出队速率调度第i个队列的待出队的报文出队,并以第i个队列对应的消耗速率vi消耗所述信用量,以n队列中其他队列的积累速率积累这些队列的信用量。其中,第i个队列对应的消耗速率vi为第一预设出队速率与积累速率si的差值。随着第i个队列的待出队的报文的出队和信用量的消耗,第i个队列的信用量可能在报文全部出队前消耗值低于预设下限值,或第i个队列的报文全部出队。响应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备结束对第i个队列的调度,转而调度n个队列中的第j个队列(1≤j≤n,j≠i)。第一设备调度第i个队列的时间资源与第i个队列处于等待状态的时长相关。即使第i个队列出现了流量突发,如果队列没有预先积累足够的信用量,第一设备也无法持续调度报文出队。如此,在实现n个队列按比例分配带宽的基础上,限制了报文连续出队的能力,从而防止流量突发导致的网络拥塞和时延。另外,在调度第i个队列时,第i个队列的信用量的消耗速率与n个队列中其他队列积累信用量的速率相同,可以防止n个队列
的信用总量过大或过小。
6.在一种可能的设计中,第一设备可以控制第i个队列的信用量不超过预设上限值,即在第i个队列的信用量积累至预设上限值后停止积累第i个队列的信用量。这样,第i个队列的信用量不超过预设上限值,即第i个队列的报文出队的时间资源不超过预设上限值。如此,可以避免第i个队列分配到过多的报文出队的时间资源,从而防止该第i个队列队列的下游设备短时间内接收到大量的报文,起到控制报文的时延的作用。
7.在一种可能的设计中,第一设备可以在第i个队列中存在待出队的报文时积累第i个队列的量。第一设备可以检测第i个队列是否存在待出队的报文。响应于第i个队列存在待出队的报文,第一设备以与所述第i个队列对应的积累速率积累所述第i个队列对应的信用量。响应于第i个队列不存在待出队的报文,第一设备可以不积累第i个队列的信用量。这样,避免第一设备为该第i个队列分配过多的报文出队的时间资源,从而防止第i个队列实际占用的带宽超过该第i个队列分配到的带宽。
8.在一种可能的设计中,所述第一预设出队速率为第一设备的端口速率,即第一设备根据端口速率确定第i个队列的积累速率si和消耗速率vi,并以端口速率调度第i个队列的报文出队。也就是说,第一设备调度该n个队列的网络端口不用于调度其他队列。
9.在一种可能的设计中,所述第一预设出队速率为第一设备的端口速率与第二预设出队速率的差值。其中,第二预设出队速率为m个队列对应的出队速率之和(1≤m)。也就是说,第一设备将端口速率分为了第一预设出队速率和第二预设出队速率,并以第一预设出队序列调度所述n个队列,以第二预设出队速率调度所述m个队列。即,第一设备通过网络端口调度所述m个队列和所述n个队列。
10.第二方面,提供了一种队列调度装置,该装置可以应用于第一设备,第一设备可以是路由器、交换机等网络设备,也可以是其他用于进行队列调度的设备。所述装置包括:积累单元,用于在调度n个队列中的第i个队列之前,以与所述第i个队列对应的积累速率si积累所述第i个队列对应的信用量,所述信用量表示队列的报文出队的时间资源,所述n为大于等于2的整数,所述i大于等于1且小于等于n;调度单元,用于第一设备在调度所述第i个队列时,以第一预设出队速率调度所述第i个队列的待出队的报文出队,且以与所述第i个队列对应的消耗速率vi消耗所述信用量,其中,积累速率si与所述消耗速率vi的和为所述第一预设出队速率,所述积累速率si为所述第一预设出队速率与第一比值的乘积,所述第一比值为所述第i个队列对应的带宽与所述n个队列对应的带宽总和的比值;调度结束单元,用于响应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备调度所述n个队列中的第j个队列,所述j大于等于1且小于等于n,且所述j不等于i。
11.在一种可能的设计中,所述第i个队列积累的信用量不超过所述第i个队列对应的预设上限值。
12.在一种可能的设计中,所述积累单元,用于响应于所述第i个队列存在所述待出队的报文,所述第一设备以与所述第i个队列对应的积累速率积累所述第i个队列对应的信用量。
13.在一种可能的设计中,所述第一预设出队速率为端口速率。
14.在一种可能的设计中,所述第一预设出队速率为端口速率与m个队列对应的第二
预设出队速率的差值,所述m为大于或等于1的整数。
15.第三方面,提供了一种队列调度装置,所述装置包括处理器和存储器,所述存储器用于存储支持所述装置执行上述第一方面所提供的队列调度的方法的程序,以及存储用于实现上述第一方面所提供的队列调度方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
16.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的队列调度方法。
17.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的队列调度方法。
18.第六方面,提供了一种芯片,包括存储器和处理器,存储器用于存储指令或程序代码,处理器用于从存储器中调用并运行该指令或程序代码,以执行上述第一方面所述的队列调度方法。
附图说明
19.图1为本技术实施例提供的系统10的架构示意图;
20.图2为本技术实施例提供的一种队列调度方法的流程图;
21.图3为本技术实施例提供的另一种队列调度方法的流程图;
22.图4为本技术实施例提供的一种队列调度装置400的结构示意图;
23.图5为本技术实施例提供的一种设备500的结构示意图;
24.图6为本技术实施例提供的一种设备600的结构示意图。
具体实施方式
25.在传统的drr调度方法中,设备可以对drr队列集合进行一次或多次轮询调度。在每次轮询调度中,设备可以按照一定的顺序对drr队列集合中多个drr队列进行调度。在对任意一个drr队列进行调度的过程中,设第一设备在调度n个队列中的第i个队列之前,以与所述第i个队列对应的积累速率si积累所述第i个队列对应的信用量,所述信用量表示队列的报文出队的时间资源,所述n为大于等于2的整数,所述i大于等于1且小于等于n;
26.所述第一设备在调度所述第i个队列时,以第一预设出队速率调度所述第i个队列的待出队的报文出队,且以与所述第i个队列对应的消耗速率vi消耗所述信用量,其中,积累速率si与所述消耗速率vi的和为所述第一预设出队速率,所述积累速率si为所述第一预设出队速率与第一比值的乘积,所述第一比值为所述第i个队列对应的带宽与所述n个队列对应的带宽总和的比值;
27.响应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备调度所述n个队列中的第j个队列,所述j大于等于1且小于等于n,且所述j不等于i备可以根据为该队列分配的网络带宽资源对判断对该drr队列的调度是否结束。
28.以drr队列集合包括第一drr队列和第二drr队列,且设备a在每次轮询调度中先调度第一drr队列再调度第二drr队列为例进行说明。设备a可以先确定第一drr队列中是否存
在待出队的报文,即第一drr队列是否处于队列为空的状态。如果第一drr队列中存在待出队的报文,设备a获取第一drr队列的报文配额,并利用第一drr队列的报文配额调度该第一drr队列中缓存的报文出队。其中,第一drr队列的报文配额为预先设置的每次队列调度时第一drr队列能够出队的总报文量。若设备a确定第一drr队列中不存在待出队的报文,则设备a对第二drr队列进行调度。在确定第二drr队列中存在待出队的报文后,设备a获取第二drr队列的报文配额,并利用第二drr队列的报文配额调度该第二drr队列中缓存的报文出队。第二drr队列的报文配额为预先设置的每次队列调度时第二drr队列能够出队的总报文量。如果第二drr队列不存在待出队的报文,设备a可以进入下一次轮询处理,重新检测第一drr队列是否存在待出队的报文。
29.第一drr队列的报文配额和第二drr队列的报文配额之间的比例可以是固定的,例如可以是1:2、1:3等。通过调整报文配额之间的比例,可以调整第一drr队列占用的端口带宽(即分配给第一drr队列的网络带宽资源)和第二drr队列占用的端口带宽之间的比例。例如,假设drr队列集合对应的端口速率为300兆比特每秒(million bits per second,mbps),第一drr队列的报文配额为2000bytes,第二drr队列的报文配额为1000字节(bytes),那么第一drr队列中缓存的报文能够以(2000/(2000+1000))*300=200mbps的最大速率出队,第二drr队列中缓存的报文能够以(1000/(2000+1000))*300=100mbps的最大速率出队。
30.在drr队列中不存在待出队的报文,设备会直接对下一个drr队列进行调度。那么当drr队列集合中任意一个或多个drr队列持续处于队列为空的状态,第一设备持续调度drr队列集合中的其他drr队列,这些drr队列能够得超过其端口带宽的比例的调度机会,即drr队列实际占用的带宽可能超过分配到的带宽。例如,当第一drr队列始终为空(未缓存报文)时,设备a持续调度第二drr队列中的报文出队,第二drr队列中缓存的报文可以以300mbps的速率出队,相当于第二drr队列占用了全部的带宽。
31.当占用过多带宽的drr队列出现流量突发时,可能会出现网络拥塞,从而导致报文传输的时延较长。例如,设备a将第一drr队列缓存的报文发往设备b,将第二drr队列缓存的报文发往设备c。当设备b和设备c接收报文的最大速率均为200mbps时,设备a以300mbps的速率向设备c发送第二drr队列缓存的报文时,就会在设备c处出现报文拥塞,从而导致时延较长。
32.基于信用量的整形(credit based shaping,cbs)技术着眼于单个队列,通过设置队列的信用量积累速率和信用量消耗速率,一定程度上可以解决报文时延的问题。在队列中缓存的报文被调度出队时,队列的信用量以信用量消耗速率消耗。在队列的信用量低于预设阈值时,设备停止调度队列中缓存的报文出队,并以信用量积累速率增加队列的信用量。随着时间的积累,当队列的信用量高于预设阈值时,设备继续调度队列中缓存的报文出队。受到信用量的限制,设备无法持续调度队列中缓存的报文出队,限制了报文连续出队的能力。只有在信用量高于预设阈值时,设备才能调度队列中缓存的报文出队。这样,即使队列出现了流量突发,只要队列的信用量低于预设阈值,设备就需要等待队列的信用量积累至预设阈值才能进行下一个报文的调度,从而确保调度两个报文出队的时间之间存在时间间隔,不会连续调度报文出队。如此,一定程度上起到了限制流量突发、降低时延值的作用。但是,cbs技术只适用于单个队列,不能对由多个队列组成的队列集合进行整形,不适用于
对多个队列进行调度的应用场景。
33.为了解决上述提及的时延问题,本技术实施例提供了一种队列调度方法及装置,能够减小报文传输过程中的时延,从而满足时延要求较高的场景中报文的传输需求。
34.本技术实施例提供的队列调度方法可以应用于图1所示的系统。
35.图1为本技术实施例提供的系统10的架构示意图。如图1所示,系统10包括设备11、设备12和设备13。其中,设备11能够与设备12和设备13通信。设备11、设备12和设备13可以是具有转发功能的设备,比如:路由器(router)、交换机(switch)等转发设备,还可以是服务器或者终端设备等具有转发功能的设备。
36.其中,终端设备一种向用户提供语音和/或数据连通性的设备,或,设置于该设备内的芯片。目前,一些终端设备的举例为:工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、支持5g接入的家庭网关设备(5g-residential gateway,5g-rg)等。
37.图2为本技术实施例提供的一种队列调度方法的方法流程图。该实施例是以队列为单位进行调度,即每次调度的对象是队列。下面结合图2,对本技术实施例提供的调度队列方法进行说明。
38.s201:第一设备对第i个队列进行调度前,以与所述第i个队列对应的积累速率si积累所述第i个队列对应的信用量。
39.第一设备可以是具有转发功能的设备,例如第一设备可以是图1所示实施例中的设备11,能够将队列中缓存的报文转发至其他设备。在本技术实施例中,第一设备可以对由n个队列组成的队列集合进行调度,其中n为大于等于2的正整数。以图2为例进行说明,假设第一设备为图2所示的设备11,且队列集合由队列a和队列b两个队列组成。那么,在调度队列a时,设备11可以将队列a中缓存的报文转发至设备12;在调度队列b时,第一设备可以将队列b中缓存的报文转发至设备13。
40.以第i个队列为例进行说明,该第i个队列可以是队列集合中的任意一个队列,i为大于等于1且小于等于n的正整数。在对第i个队列进行调度前,第一设备可以以与第i个队列对应的积累速率si积累第i个队列的信用量。其中,对第i个队列进行调度前,表示第一设备不调度第i个队列的阶段,例如可以是第一设备调度第i-1个队列的阶段,也可以是队列集合中其他任意一个队列的阶段,还可以是第一设备不调度任何队列的阶段。第i个队列的信用量表示该第i个队列的报文出队的时间资源,即第一设备在调度该第i个队列时能够利用的时间资源。该第i个队列的信用量以下文中第i个队列的信用量的消耗速率vi消耗至预设下限值所需的时长,即为第一设备在调度第i个队列能够消耗的最长时间。第i个队列对应的积累速率si表示第i个队列能够利用的带宽,可以根据第i个队列的带宽占比和队列集合的带宽之和确定。
41.下面对确定第i个队列对应的积累速率si的方法进行详细介绍。
42.在进行队列调度前,可以先为队列集合中的各个队列分配网络带宽资源,确定n个队列中每个队列对应的带宽。在确定第i个队列对应的带宽后,可以计算第一比值。第一比值为第i个队列对应的带宽和n个队列对应的带宽总和的比值,表示第i个队列在n个队列中
占用的网络带宽资源的比例。在确定第一比值后,可以将第一比值与第一预设出队速率相乘,将二者的乘积作为第i个队列对应的积累速率si。其中,第一预设出队速率表示n个队列能够利用的带宽,例如可以是第一设备的端口速率。由于si为第一比值与第一预设出队速率的乘积,si与第一预设出队速率的比值为第一比值,等于第i个队列对应的带宽与n个队列对应的带宽总和的比值。可见,第i个队列对应的积累速率si取决于该第i个队列的带宽。n个队列中任意两个队列积累速率的比值为这两个队列的带宽的比值。
43.在本技术实施例中,n个队列中的任意一个队列可以被称为基于信用量的轮询调度(credit-based round-robin,crr)队列,n个队列组成的队列集合可以被称为crr队列集合。在本技术实施例中,crr队列集合可以独占第一设备的一个出端口,也可以与其他队列合用一个出端口。crr队列和出端口的对应情况不同,第一预设出队速率不同。如果第一设备通过出端口a调度crr队列集合的报文,且不通过该出端口a调度其他队列的报文,该crr队列集合的第一预设出队速率为该出端口的端口速率。如果第一设备通过出端口a调度crr队列集合的报文,且还通过该出端口a调度其他队列的报文,该crr队列集合的第一预设出队速率为该出端口的端口速率与第二预设出队速率之差。其中,第二预设出队速率为该出端口对应的其他队列的出队速率的总和。
44.以第一设备通过端口a调度n个crr队列和m个第一队列为例进行说明。其中,m为大于或等于1的正整数,m个第一队列中任意一个第一队列可以是非crr队列,也可以是与n个crr队列属于不同队列集合的crr队列。第一设备可以预先设置m个第二队列中每个第二队列的带宽,即每个第二队列中缓存的报文的出队速率。m个第二队列的出队速率之和为第二预设出队速率,即第一设备为除n个crr队列外其他队列分配的带宽总和。将端口速率与第二预设出队速率做差,得到的结果即为第一设备为n个crr队列分配的带宽总和,即第一预设出队速率。
45.若第i个队列中不存在待出队的报文,说明该第i个队列暂时不需要报文出队的时间资源,第一设备可以暂时不为该第i个队列分配时间资源。因此,在一种可能的实现方式中,第一设备可以先判断第i个队列中是否存在待出队的报文,再根据积累速率si积累第i个队列对应的信用量。具体地,在调度第i个队列前,第一设备可以判断第i个队列中是否缓存有报文。如果第i个队列中没有缓存报文,第一设备无需对第i个队列进行调度,那么第一设备可以不积累第i个队列对应的信用量。如果第i个队列中缓存有报文,第一设备可以根据积累速率si积累第i个队列对应的信用量。这样,当第i个队列中不存在缓存的报文时,该第i个队列的信用量保持不变。只有在第i个队列存在待出队的报文时,第一设备才增加第i个队列的信用量。如此,可以防止第i个队列的信用量在第i个队列不存在待出队的报文时持续增加,从而避免第一设备为该第i个队列分配过多的报文出队的时间资源,从而防止第i个队列实际占用的带宽超过该第i个队列分配到的带宽。
46.在一种可能的实现方式中,第一设备可以周期性检测第i个队列是否存在待出队的报文。如果第i个队列中不存在待出队的报文,第i个队列对应的信用量不增加。当新的报文加入第i个队列时,第一设备确定该第i个队列存在待出队的报文,并开始以积累速率si积累第i个队列对应的信用量。
47.若第一设备长时间不对第i个队列进行调度,第i个队列对应的信用量持续增加,导致第i个队列得到的报文出队的时间资源过多。为了避免这一问题,在一种可能的实现方
式中,第一设备可以为第i个队列设置预设上限值,即第i个队列对应的信用量的上限。当第i个队列对应的信用量增加至预设上限值时,第一设备可以停止积累第i个队列对应的信用量。如此,可以确保第i个队列对应的信用量不超过预设上限值,从而避免第一设备为该第i个队列分配过多的报文出队的时间资源,从而防止第i个队列实际占用的带宽超过该第i个队列分配到的带宽。在本技术实施例中,不同队列的预设上限值可以相同,也可以根据队列的带宽进行设置,本技术对此不作额外限定。
48.s202:所述第一设备在调度所述第i个队列时,以第一预设出队速率调度所述第i个队列的待出队的报文出队,且以与所述第i个队列对应的消耗速率vi消耗所述信用量。
49.第一设备可以以第一预设出队速率调度第i个队列的待出队的报文,实现对第i个队列的调度。在调度报文出队的过程中,第一设备可以以第i个队列对应的消耗速率vi消耗第i个队列的信用量,并以n个队列中除第i个队列外其他任意一个队列对应的积累速率积累该队列的信用量。
50.第i个队列对应的消耗速率vi可以是第一预设出队速率与第i个队列的积累速率si之差。第i个队列对应的积累速率si为第一预设出队速率与第一比值的乘积,表示第i个队列对应的带宽。而第i个队列对应的消耗速率vi为第一预设出队速率与si之差。那么,第i个队列对应的消耗速率vi表示n个队列对应的带宽总和与第i个队列对应的带宽之差与第一预设出队速率的乘积。其中,n个队列对应的带宽总和与第i个队列对应的带宽之差为n个队列中除第i个队列外其余队列的带宽总和。
51.根据前文描述可知,在对第i个队列进行调度之前,即调度其他队列的过程时,第一设备可以以积累速率si积累第i个队列对应的信用量。相应地,在调度第i个队列的过程中,第一设备不调度队列集合中的其他队列。这些队列中的每个队列可以以各自对应的积累速率积累该队列的信用量,队列的积累速率为该队列的带宽与第一预设出队速率的乘积。这样,在第一设备调度第i个队列的过程中,n个队列中除第i个队列外的其他队列分别以每个队列对应的积累速率积累信用值。这些队列积累速率的总和即为第一预设出队速率与n个队列中除第i个队列外其余队列的带宽总和的乘积。显然,n个队列中除第i个队列外其余队列积累速率的总和与vi相同。这样,在第i个队列对应的信用量以消耗速率vi消耗的同时,第一设备以消耗速率vi积累其他队列对应的信用量。如此,在第一设备调度n个队列中任意一个队列时,被调度队列的消耗速率与剩余的队列积累速率之和相同。即,在第一设备调度由n个队列组成的队列集合的任意时刻,该队列集合的信用量的消耗速率等于信用量的积累速率。
52.如果队列集合信用量的积累速率大于信用量的消耗速率,那么队列集合的信用量会随着时间逐渐增加,队列集合中某个队列的信用量可能也会不断增加。如此,当该队列出现流量突发时,由于该队列的信用量较高,第一设备可以持续调度该队列的报文出队,导致该队列的下游设备在短时间内接收到大量报文。由于该下游设备的处理能力有限,导致这些报文的时延显著增加。如果队列集合信用量的积累速率小于信用量的消耗速率,那么队列集合的信用量会随着时间逐渐减少,队列集合中某个队列的信用量可能也会不断较减少。如此,当需要调度该队列的报文出队时,第一设备需要等待该队列的信用量逐渐积累,导致报文在等待一段时间后才能够调度出队,也增加了报文的时延。可见,确保队列集合的信用量的消耗速率等于信用量的积累速率,可以防止队列集合的信用总量(即队列集合中
全部队列信用量的总和)过大或过小,从而避免出现上述两种情况,降低报文的时延。
53.以设备a对队列1、队列2和队列3进行调度为例进行说明。假设队列1、队列2和队列3的带宽之比为3:1:1,第一预设出队速率为100mbp,那么队列1对应的积累速率为60mbps,消耗速率为40mbps;队列2对应的积累速率为20mbps,消耗速率为80mbps;队列3对应的积累速率为20mbps,消耗速率为80mbps。那么,在设备a调度队列1的过程中,队列1对应的信用量以40mbps的消耗速率消耗,队列2对应的信用量以20mbps的积累速率积累,队列3对应的信用量以20mbps的积累速率积累。可见,队列1消耗信用量的速率与队列2和队列3积累信用量的速率之和相同。
54.s203:响应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备调度所述n个队列中的第j个队列。
55.随着第一设备调度第i个队列的报文出队,第i个队列中缓存的报文数量逐渐减少,第i个队列对应的信用量也逐渐减少。第一设备可以判断第i个队列是否属于以下两种情况之一。情况一:第i个队列中不存在待出队的报文;情况二:第i个队列对应的信用量低于预设下限值,但是第i个队列中仍然存在待出队的报文。
56.当第i个队列属于情况一时,说明第i个队列中没有需要出队的报文,那么第一设备可以结束对第i个队列的调度,将该第i个队列对应的信用量留待下一次调度使用。
57.当第i个队列属于情况二时,说明第i个队列用于调度报文出队的时间资源已消耗完毕,但是该第i个队列中仍然存在需要出队的队列,那么第一设备可以结束对第i个队列的调度,等待第i个队列对应的信用量以si的速率逐渐积累,以便在下一次调度第i个队列的待出队的报文出队。
58.其中,该预设下限值表示报文能够出队的最低信用量。如果第i个队列对应的信用量低于预设下限值,表示该第i个队列剩余的信用量无法满足报文继续出队的需求,第一设备可以结束对第i个队列的调度。在一种可能的实现方式中,预设下限值可以为0。如此当第i个队列的信用量小于0时,第一设备可以结束对该第i个队列的调度。
59.在一些其他的实现方式中,预设下限值还可以是调度第i个队列中可能存在的最长报文所需的时间资源,例如可以是第i个队列中最长报文的长度与第一预设速率的比值。假设第一预设速率为100mbps,第i个队列中可能存在的最长报文的长度为1mb,消耗速率vi为50mbps,那么预设下限值可以为0.5mb,对应的时间资源可以是0.01s,即以100mbps的速率传输1mb的报文所需的时间。在本技术实施例中,不同队列的预设下限值可以相同,也可以不同,本技术对此不作额外限定。
60.对于情况二所示的场景,在调度最后一个报文前,第i个队列的信用量不低于预设下限值。在调度最后一个报文出队后,第i个队列对应的信用量低于预设下限值。如果预设下限值为调度第i个队列中最长报文所需的时间资源,由于被调度的最后一个报文的长度不大于调度第i个队列中最长报文的长度,调度最后一个报文所需的时间资源也不大于预设下限值。又因为第i个队列对应的信用量在调度最后一个报文前不小于预设下限值,在调度最后一个报文出队后,第i个队列对应的信用量最小值为0。即,在第一设备结束对第i个队列的调度后,该第i个队列对应的信用量最小值为0。这样,可以确保第i个队列对应的信用量始终不小于0,结合前文所述的预设上限值,可以保障第一设备调度该第i个队列时能
够利用的信用量不超过预设上限值,从而限制该第i个队列积累的信用量的最大值,即限制第一设备调度单次该第i个队列能够利用的时间资源的最大值。如此,起到了限制第i个队列被调度的最大时长的作用,可以确保第i个队列占用的带宽不超过为该第i个队列分配的带宽。
61.在确定该第i个报文属于情况一或情况二后,第一设备结束对第i个队列的调度,转而调度n个队列中的第j个队列。其中,j为大于等于1且小于等于n的正整数,且j不等于i。即该第j个队列是n个队列中任意一个不同于第i个队列的其他队列,例如第j个队列可以是第i+1个队列或者第1个队列。第一设备调度第j个队列的方法与调度第i个队列的方法类似,此处不再赘述。
62.在本技术实施例中,第一设备根据队列的积累速率si积累该队列的信用量。那么队列的报文出队的时间资源取决于该队列的积累速率和积累信用量的时间。其中,积累速率又取决于该队列分配到的带宽,任意两个队列之间积累速率的比值与带宽的比值一致。可见,第一设备调度队列报文出队时能够利用的时间资源与该队列的带宽相关,实现了带宽在n个队列之间的按比例分配。
63.另外,在第i个队列的信用量未达到预设上限值的前提下,该第i个队列的信用量取决于第一设备不调度第i个队列的时长,即第i个队列处于等待状态的时长。而第一设备调度第i个队列时能够利用的最大时长又取决于该第i个队列的信用量。也就是说,第一设备调度第i个队列的最大时长一定程度上取决于第i个队列处于等待状态的时长。这样,即使该第i个队列出现了流量突发,如果队列没有预先积累足够的信用量,第一设备也无法持续调度报文出队。在信用量耗尽后,即使仍然存在待出队的报文,第一设备无法调度报文出队,需要等待队列的信用量积累至预设下限值后才能进行队列调度。如此,在实现n个队列按比例分配带宽的基础上,限制了报文连续出队的能力,从而防止流量突发导致的网络拥塞和时延。
64.为便于理解,下面以n的值为3,即第一设备对三个组成的队列集合为例进行说明。其中,队列集合包括队列a、队列b和队列c,第一设备按照队列a、队列b、队列c的顺序对队列集合进行调度。
65.参见图3,图3为本技术实施例提供的一种队列调度方法的方法流程图。
66.s301:第一设备获取队列集合以及队列集合包括的每个队列对应的带宽。
67.举例说明,该队列集合可以是图2对应的实施例中n个队列的统称,例如可以是crr队列集合。在本实施例中,队列集合可以包括队列a、队列b和队列c三个队列,每个队列均能够用于传输报文。为了调度三个队列中缓存的报文出队,第一设备可以获取队列集合以及每个队列对应的带宽,即队列a对应的带宽、队列b对应的带宽和队列c对应的带宽。其中,每个队列对应的带宽可以是预先分配的带宽。队列对应的带宽的单位可以为mbps、kbps等描述数据传输速度的单位,也可以其他能够表示带宽分配的权重。
68.在一些可能的实现方式中,第一设备还可以获取每个队列带宽分配的权重,用于代替每个队列对应的带宽。例如,假设队列a对应的带宽为5mbps,队列b对应的带宽为3mbps,队列c对应的带宽为2mbps,那么第一设备获取的队列a的权重可以为0.5,队列b的权重可以为0.3,队列c的权重可以为0.2。
69.在一些可能的实现方式中,第一设备还可以获取每个队列的初始信用量。队列的
初始信用量为队列在第一次调度前具有的信用量,即第一次调度前队列具有的报文出队的时间资源。不同队列的初始信用量可以相同,例如队列的初始信用量可以为0,也可以根据队列的带宽进行分配。
70.在一些可能的实现方式中,第一设备还可以获取队列a、队列b和队列c的预设上限值。预设上限值表示队列信用量的上限。当队列信用量积累至预设上限值时,第一设备可以停止积累该队列的信用量。如此,可以确保队列对应的信用量不超过预设上限值,从而避免第一设备为队列分配过多的报文出队的时间资源,从而防止队列的下游设备短时间内接收到大量的报文,起到控制报文的时延的作用。
71.s302:第一设备根据每个队列对应的带宽计算每个队列的积累速率和消耗速率。
72.举例说明,为了对队列集合进行调度,第一设备可以先计算每个队列的积累速率。第一设备可以先计算队列的带宽与多个队列的带宽总和的比值,并将该比值与第一预设出队速率相乘,得到该队列的积累速率,再将该队列的积累速率与第一预设出队速率做差,得到该队列的消耗速率。为便于后续说明,将队列a的积累速率用s1表示,队列a的消耗速率用v1表示;队列b的积累速率用s2表示,队列b的消耗速率用v2表示;队列c的积累速率用s3表示,队列c的消耗速率用v3表示。
73.在本技术实施例中,第一预设出队速率可以是端口速率,也可以是端口速率与第二预设出队速率之差。为便于说明,后续以第一预设出队速率为端口速率进行说明。
74.以端口速率为10mbps,队列a对应的带宽为5mbps,队列b对应的带宽为3mbps,队列c对应的带宽为2mbps。那么,队列a的带宽与带宽总和的比值为0.5,队列a的积累速率s1为(5/(5+3+2))*10=5mbps,消耗速率v1为(5+3+2)-5=5mbps;队列b的带宽与带宽总和的比值为0.3,队列b的积累速率s2为(3/(5+3+2))*10=3mbps,消耗速率v2为(5+3+2)-3=7mbps;队列c的带宽与带宽总和的比值为0.2,队列c的积累速率s3为(2/(5+3+2))*10=2mbps,消耗速率v3为(5+3+2)-2=8mbps。由此可见,队列积累信用量的速度与队列分配到的带宽相关,第一设备根据队列分配到的带宽为队列积累报文出队的时间资源。
75.在确定各个队列的消耗速率即积累速率后,第一设备可以对队列集合进行多次轮询调度。在每次轮询调度中,第一设备可以依次对队列a、队列b和队列c进行调度。下面以单次轮询调度为例进行说明。
76.s303:第一设备判断队列a中是否存在待出队的报文。
77.举例说明,第一设备可以在队列a中设置初始值为0的计数器,每当有一个报文进入队列a时,就将该队列a对应的计数器的值加1。每当有一个报文从队列a出队时,将该队列a对应的计数器的值减1。如此,通过判断队列a对应的计数器的值是否为零,第一设备可以判断该队列a中是否存在待出队的报文。当然,第一设备还可以通过判断队列a对应的存储空间中是否缓存有报文,来判断该队列a中是否存在待出队的报文。
78.若队列a中不存在待出队的报文,第一设备无法调度队列a的报文出队,第一设备可以执行步骤s306。若队列a中存在待出队的报文,第一设备可以继续执行步骤s304。
79.s304:第一设备判断队列a对应的信用量是否不小于预设下限值。
80.举例说明,如果队列a中存在待出队的报文,第一设备可以比较队列a对应的信用量与预设下限值的大小。如果队列a的信用量小于预设下限值,说明队列a积累的时间资源不满足调度报文出队的最低条件,第一设备可以执行步骤s306,以便队列a在第一设备调度
其他队列的过程中积累更多的报文出队的时间资源。如果队列a的信用量大于或等于预设下限值,第一设备可以执行步骤s305,开始调度队列a中缓存的报文出队。
81.s305:第一设备调度队列a的头报文出队,消耗队列a的信用量,并积累队列b和队列c的信用量。
82.举例说明,队列a中缓存的报文按顺序出队。当队列a中存在至少一个待出队的报文时,可以将待出队的报文中处于首个待出队位置的报文称为头报文。队列a中的头报文是队列a中最先出队的报文。第一设备可以将队列a的头报文移出队列a并向其他设备发送。例如,当第一设备为图1所示的设备11时,第一设备可以将该队列a的头报文发送给设备12。
83.举例说明,在调度队列a的头报文出队的过程中,第一设备可以以队列a的消耗速率v1消耗队列a的信用量,并以队列b的积累速率s2积累队列b的信用量,以队列c的积累速率s3积累队列c的信用量。
84.举例说明,第一设备以第一预设出队速率调度队列a的头报文出队,那么第一设备调度头报文的时间取决于第一预设出队速率和头报文的长度。队列a消耗的信用量、队列b和队列c积累的信用量同样取决于第一预设出队速率和头报文的长度。例如,假设队列a的头报文长度为1mb,第一预设出队速率为10mbps,队列a的消耗速率v1为5mbps,队列b的积累速率s2为3mbps,队列c的积累速率s3为2mbps。那么,第一设备调度队列a的头报文出队所需的时间为1/10=0.1s。在这段时间中,队列a消耗的信用量为0.1*5=0.5,队列b积累的信用量为0.1*3=0.3,队列c积累的信用量为0.1*2=0.2。可见,在队列a消耗0.5单位的时间资源的过程中,队列b积累了0.3单位的时间资源,队列c积累了0.2单位的时间资源。队列集合消耗的信用量和积累的信用量一致,可以避免随着时间的积累导致队列的信用量过低或过高。
85.另外,在调度队列a的过程中,第一设备消耗队列a的信用量的速率为5mbps,积累队列b和队列c的信用量的速率为3+2=5mbps,队列集合的信用总量的消耗速率等于积累速率,可以防止队列集合的信用总量过大或过小。
86.在队列a的头报文出队后,第一设备可以返回执行步骤s303,重新判断队列a中是否存在待出队的报文,以及队列a的信用量是否低于预设下限值,从而确定是否需要继续调度队列a的报文出队。
87.s306:第一设备判断队列b中是否存在待出队的报文。
88.举例说明,第一设备可以在队列b中设置初始值为0的计数器,每当有一个报文进入队列b时,就将该队列b对应的计数器的值加1。每当有一个报文从队列b出队时,将该队列b对应的计数器的值减1。如此,通过判断队列b对应的计数器的值是否为零,第一设备可以判断该队列b中是否存在待出队的报文。当然,第一设备还可以通过判断队列b对应的存储空间中是否缓存有报文,来判断该队列b中是否存在待出队的报文。
89.若队列b中不存在待出队的报文,第一设备无法调度队列b的报文出队,第一设备可以执行步骤s309。若队列b中存在待出队的报文,第一设备可以继续执行步骤s307。
90.s307:第一设备判断队列b对应的信用量是否不小于预设下限值。
91.举例说明,如果队列b中存在待出队的报文,第一设备可以比较队列b对应的信用量与预设下限值的大小。如果队列b的信用量小于预设下限值,说明队列b积累的时间资源不满足调度报文出队的最低条件,第一设备可以执行步骤s308,以便队列b在第一设备调度
其他队列的过程中积累更多的报文出队的时间资源。如果队列b的信用量大于或等于预设下限值,第一设备可以执行步骤s308,开始调度队列b中缓存的报文出队。
92.s308:第一设备调度队列b的头报文出队,消耗队列b的信用量,并积累队列a和队列c的信用量。
93.第一设备调度队列b的头报文出队的详细过程可以参见步骤s305的描述,此处不再赘述。在调度队列b的头报文出队后,第一设备可以返回执行步骤s306。
94.例如,假设队列b的头报文长度为0.6mb,第一预设出队速率为10mbps,队列a的积累速率s1为5mbps,队列b的消耗速率v2为7mbps,队列c的积累速率s3为2mbps。那么,第一设备调度队列b的头报文出队所需的时间为0.6/10=0.06s。在这段时间中,队列b消耗的信用量为0.06*7=0.42,队列a积累的信用量为0.06*5=0.3,队列c积累的信用量为0.06*2=0.12。可见,在队列b消耗0.42单位的时间资源的过程中,队列a积累了0.3单位的时间资源,队列c积累了0.12单位的时间资源。队列集合消耗的信用量和积累的信用量一致。
95.另外,在调度队列b的过程中,第一设备消耗队列b的信用量的速率为7mbps,积累队列a和队列c的信用量的速率为5+2=7mbps,队列集合的信用总量的消耗速率等于积累速率,可以防止队列集合的信用总量过大或过小。
96.s309:第一设备判断队列c中是否存在待出队的报文。
97.举例说明,第一设备可以在队列c中设置初始值为0的计数器,每当有一个报文进入队列c时,就将该队列c对应的计数器的值加1。每当有一个报文从队列c出队时,将该队列c对应的计数器的值减1。如此,通过判断队列c对应的计数器的值是否为零,第一设备可以判断该队列c中是否存在待出队的报文。当然,第一设备还可以通过判断队列c对应的存储空间中是否缓存有报文,来判断该队列c中是否存在待出队的报文。
98.若队列c中不存在待出队的报文,第一设备无法调度队列c的报文出队,第一设备可以执行步骤s303。若队列c中存在待出队的报文,第一设备可以继续执行步骤s310。
99.s310:第一设备判断队列c对应的信用量是否不小于预设下限值。
100.举例说明,如果队列c中存在待出队的报文,第一设备可以比较队列c对应的信用量与预设下限值的大小。如果队列c的信用量小于预设下限值,说明队列c积累的时间资源不满足调度报文出队的最低条件,第一设备可以执行步骤s303,以便队列c在第一设备调度其他队列的过程中积累更多的报文出队的时间资源。如果队列c的信用量大于或等于预设下限值,第一设备可以执行步骤s311,开始调度队列c中缓存的报文出队。
101.s311:第一设备调度队列c的头报文出队,消耗队列c的信用量,并积累队列a和队列b的信用量。
102.第一设备调度队列c的头报文出队的详细过程可以参见步骤s305的描述,此处不再赘述。在调度队列c的头报文出队后,第一设备可以返回执行步骤s309。
103.例如,假设队列c的头报文长度为0.4mb,第一预设出队速率为10mbps,队列a的积累速率s1为5mbps,队列b的积累速率s2为3mbps,队列c的消耗速率v3为8mbps。那么,第一设备调度队列c的头报文出队所需的时间为0.4/10=0.04s。在这段时间中,队列c消耗的信用量为0.04*8=0.32,队列a积累的信用量为0.04*5=0.2,队列b积累的信用量为0.04*3=0.12。可见,在队列c消耗0.32单位的时间资源的过程中,队列a积累了0.3单位的时间资源,队列b积累了0.12单位的时间资源。队列集合消耗的信用量和积累的信用量一致。
104.另外,在调度队列c的过程中,第一设备消耗队列c的信用量的速率为8mbps,积累队列a和队列b的信用量的速率为5+3=8mbps,队列集合的信用总量的消耗速率等于积累速率,可以防止队列集合的信用总量过大或过小。
105.综合步骤s305、步骤s308和步骤s311进行分析。在第一设备调度队列a、队列b和队列c的过程中,队列a有长度为1mb的报文出队,队列b有长度为0.6mb的报文出队,队列c有长度为0.4mb的报文出队。第一设备调度三个队列消耗的总时间为(0.1+0.06+0.04)=0.2s,那么,在这段时间内,队列a实际占用的带宽为1/0.2=5mbps,队列b实际占用的带宽为0.6/0.2=3mbps,队列c实际占用的带宽为0.4/0.2=2mbps。可见,队列实际占用的带宽不大于为队列分配的带宽,实现了带宽在三个队列间的按比例分配。
106.当队列a、队列b和队列a中任意一个或多个队列出现流量突发时,由于第一设备调度报文出队的时间取决于报文的信用量,当突发的流量将队列的信用量消耗殆尽后,第一设备会停止调度该队列,转而调度其他队列或进行等待。
107.例如,假设队列a中存在100个长度为1mb的报文,队列a的积累速率s1为5mbps,消耗速率v1为5mbps,队列a信用量的初始值为25.01,预设下限值为0.5,队列b和队列c中不存在待出队的报文,第一预设出队速率为10mbps。那么,第一设备可以先调度队列a的前50个报文出队。调度这些报文所用的时间为(50*1)/10=5s,消耗的信用量为5*5=25。在调度完第50个报文出队后,队列a的信用量为25.01-25=0.01,小于预设下限值0.5,第一设备停止调度队列a。在队列a处于空闲状态时,队列a的信用量以5mbps的速率积累。经过0.1s的积累后,队列a的信用量为0.01+5*0.1=0.51,大于预设下限值,第一设备可以调度第51个报文出队。调度该第51个报文出队的用时为1/10=0.1s。在第51个报文出队后,队列a的信用量再次变为0.01,小于预设下限值,第一设备再次进入等待状态。在调度第51个报文出队的过程中,第一设备需要等待0.1s,再用0.1s调度报文出队。那么,调度第51个报文所花费的总时间为0.1+0.1=0.2s。在这个过程中,队列a实际占用的带宽为1/0.2=5mbps,与为队列a分配的带宽相同。可见,即使队列集合中某一队列出现了流量突发,且其他队列均不存在待出队的报文,该队列也无法占用过多的带宽,限制了报文连续出队的能力,从而防止流量突发导致的网络拥塞和时延。
108.参见图4,本技术实施例还提供了一种队列调度装置400,该队列调度装置400可以实现图2所示实施例中第一设备的功能。该队列调度装置400包括积累单元401、调度单元402和调度结束单元403。其中,积累单元401用于实现图2所示实施例中的s201,调度单元402用于实现图2所示实施例中的s202,调度结束单元403用于实现图2所示实施例中的s203。
109.具体的,积累单元401,用于在调度n个队列中的第i个队列之前,以与所述第i个队列对应的积累速率si积累所述第i个队列对应的信用量,所述信用量表示队列的报文出队的时间资源,所述n为大于等于2的整数,所述i大于等于1且小于等于n;
110.调度单元402,用于第一设备在调度所述第i个队列时,以第一预设出队速率调度所述第i个队列的待出队的报文出队,且以与所述第i个队列对应的消耗速率vi消耗所述信用量,其中,积累速率si与所述消耗速率vi的和为所述第一预设出队速率,所述积累速率si为所述第一预设出队速率与第一比值的乘积,所述第一比值为所述第i个队列对应的带宽与所述n个队列对应的带宽总和的比值;
111.调度结束单元403,用于响应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备调度所述n个队列中的第j个队列,所述j大于等于1且小于等于n,且所述j不等于i。
112.具体执行过程请参考上述图2所示实施例中相应步骤的详细描述,这里不再一一赘述。
113.需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本技术实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。例如,上述实施例中,获取单元和处理单元可以是同一个单元,也不同的单元。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
114.图5是本技术实施例提供的一种设备500的结构示意图。上文中的队列调度400可以通过图5所示的设备来实现。参见图5,该设备500包括至少一个处理器501,通信总线502以及至少一个网络接口504,可选地,该设备500还可以包括存储器503。
115.处理器501可以是一个通用中央处理器(central processing unit,cpu)、特定应用集成电路(application-specific integrated circuit,asic)或一个或多个用于控制本技术方案程序执行的集成电路(integrated circuit,ic)。处理器可以用于对配置文件进行处理,以实现本技术实施例中提供的队列调度方法。
116.比如,当图2中的第一设备通过图5所示的设备来实现时,该处理器可以用于,以与所述第i个队列对应的积累速率si积累所述第i个队列对应的信用量,以第一预设出队速率调度所述第i个队列的待出队的报文出队,且以与所述第i个队列对应的消耗速率vi消耗所述信用量,应于所述第i个队列的报文未全部出队,且所述第i个队列的信用量消耗至低于所述第i个队列对应的预设下限值,或,响应于所述第i个队列的报文全部出队,所述第一设备调度所述n个队列中的第j个队列。
117.通信总线502用于在处理器501、网络接口504和存储器503之间传送信息。
118.存储器503可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,存储器503还可以是随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器503可以是独立存在,通过通信总线502与处理器501相连接。存储器503也可以和处理器501集成在一起。
119.可选地,存储器503用于存储执行本技术方案的程序代码或指令,并由处理器501来控制执行。处理器501用于执行存储器503中存储的程序代码或指令。程序代码中可以包括一个或多个软件模块。可选地,处理器501也可以存储执行本技术方案的程序代码或指令,在这种情况下处理器501不需要到存储器503中读取程序代码或指令。
120.网络接口504可以为收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(ran)或无线局域网(wireless local area networks,wlan)
等。在本技术实施例中,网络接口504可以用于接收分段路由网络中的其他节点发送的报文,也可以向分段路由网络中的其他节点发送报文。网络接口504可以为以太接口(ethernet)接口、快速以太(fast ethernet,fe)接口或千兆以太(gigabit ethernet,ge)接口等。
121.在具体实现中,作为一种实施例,设备500可以包括多个处理器,例如图5中所示的处理器501和处理器405。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
122.图6是本技术实施例提供的一种设备600的结构示意图。图2中的第一设备可以通过图6所示的设备来实现。参见图6所示的设备结构示意图,设备600包括主控板和一个或多个接口板。主控板与接口板通信连接。主控板也称为主处理单元(main processing unit,mpu)或路由处理卡(route processor card),主控板包括cpu和存储器,主控板负责对设备600中各个组件的控制和管理,包括路由计算、设备管理和维护功能。接口板也称为线处理单元(line processing unit,lpu)或线卡(line card),用于接收和发送报文。在一些实施例中,主控板与接口板之间或接口板与接口板之间通过总线通信。在一些实施例中,接口板之间通过交换网板通信,在这种情况下设备600也包括交换网板,交换网板与主控板、接口板通信连接,交换网板用于转发接口板之间的数据,交换网板也可以称为交换网板单元(switch fabric unit,sfu)。接口板包括cpu、存储器、转发引擎和接口卡(interface card,ic),其中接口卡可以包括一个或多个网络接口。网络接口可以为ethernet接口、fe接口或ge接口等。cpu与存储器、转发引擎和接口卡分别通信连接。存储器用于存储转发表。转发引擎用于基于存储器中保存的转发表转发接收到的报文,如果接收到的报文的目的地址为设备600的ip地址,则将该报文发送给主控板或接口板的cpu进行处理;如果接收到的报文的目的地址不是设备600的ip地址,则根据该目的地查转发表,如果从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。转发引擎可以是网络处理器(network processor,np)。接口卡也称为子卡,可安装在接口板上,负责将光电信号转换为数据帧,并对数据帧进行合法性检查后转发给转发引擎处理或接口板cpu。在一些实施例中,cpu也可执行转发引擎的功能,比如基于通用cpu实现软转发,从而接口板中不需要转发引擎。在一些实施例中,转发引擎可以通过asic或现场可编程门阵列(field programmable gate array,fpga)实现。在一些实施例中,存储转发表的存储器也可以集成到转发引擎中,作为转发引擎的一部分。
123.本技术实施例还提供一种芯片系统,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述图2所示实施例中第一设备的方法。
124.可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本技术并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器rom,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片
上,本技术对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
125.示例性的,该芯片系统可以是fpga,可以是asic,还可以是系统芯片(system on chip,soc),还可以是cpu,还可以是np,还可以是数字信号处理电路(digital signal processor,dsp),还可以是微控制器(micro controller unit,mcu),还可以是可编程控制器(programmable logic device,pld)或其他集成芯片。
126.应理解,上述方法实施例中的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
127.本技术实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上方法实施例提供的、由第一设备执行的队列调度方法。
128.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行以上方法实施例提供的、由第一设备执行的队列调度方法。
129.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
130.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
131.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑模块划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
132.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要获取其中的部分或者全部单元来实现本实施例方案的目的。
133.另外,在本技术各个实施例中的各模块单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件模块单元的形式实现。
134.所述集成的单元如果以软件模块单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全
部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
135.本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
136.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已。
137.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1