队列分配方法及装置与流程

文档序号:14879556发布日期:2018-07-07 09:22阅读:140来源:国知局
本申请涉及通信
技术领域
,尤其涉及一种队列分配方法及装置。
背景技术
:服务质量(qualityofservice,qos)是用于保障网络通信服务能力的一种机制。当转发设备支持qos时,该转发设备会按照qos指示的预设策略,将不同报文分配到不同队列。之后,不同队列中的报文即可按照该队列对应的调度方式进行转发。目前,通常使用令牌桶(tokenbucket,tb)算法以对队列进行流量监管。具体地,每个队列均设置对应的令牌桶,令牌桶可以容纳一定数目的令牌,每个令牌都代表一个字节。令牌桶会以恒定的速率不断地产生令牌,直到把令牌桶填满,之后再产生的令牌会从令牌桶中溢出,以保证令牌桶容纳的最大令牌个数保持不变。在报文进入队列时,队列对应的令牌桶会消耗与所述报文字节数相同的令牌。若队列对应的令牌桶中剩余的令牌个数小于报文的字节数,则该报文不能进入到队列中。在这种情况下,该报文会因为入队失败而被转发设备缓存或丢弃。技术实现要素:本申请实施例提供一种队列分配方法及装置,用于减少报文因队列对应的令牌桶中剩余的令牌个数不足而入队失败的情况发生。为达到上述目的,本申请采用如下技术方案:第一方面,本申请提供一种队列分配方法,所述方法包括:根据报文携带的优先级标志,确定所述报文对应的第一队列;若所述第一队列对应的令牌桶中剩余的令牌个数小于所述报文的字节数,则从至少一个第二队列中确定第三队列;其中,所述第二队列为与所述第一队列采用相同调度方式的队列,所述第三队列对应的令牌桶中剩余的令牌个数大于等于所述报文的字节数;将所述报文分配给所述第三队列。由于第三队列对应的令牌桶中剩余的令牌个数大于等于报文的字节数,因此该报文在被分配给第三队列后,可以进入第三队列中。可见,本申请实施例提供的队列分配方法,能够减少报文因队列对应的令牌桶中剩余的令牌个数不足而入队失败的情况发生。第二方面,本申请提供一种队列分配装置,所述装置包括:确定模块,用于根据报文携带的优先级标志,确定所述报文对应的第一队列。所述确定模块,还用于在所述第一队列对应的令牌桶中剩余的令牌个数小于所述报文的字节数的情况下,从至少一个第二队列中确定第三队列;其中,所述第二队列为与所述第一队列采用相同调度方式的队列,所述第三队列对应的令牌桶中剩余的令牌个数大于等于所述报文的字节数。分配模块,用于将所述报文分配给所述第三队列。第三方面,本申请提供一种转发设备,所述转发设备包括:处理器、收发器和存储器。其中,存储器存储有一个或多个程序,一个或多个程序包括计算机可执行指令,当该转发设备运行时,处理器执行该存储器存储的该计算机可执行指令,以使该转发设备执行第一方面及其各种可选的实现方式中任意之一所述的队列分配方法。第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当转发设备执行该指令时,该转发设备执行上述第一方面及其各种可选的实现方式中任意之一所述的队列分配方法。其中,上述第二方面至第四方面对应的有益效果,可参见第一方面的相关描述,在此不再赘述。附图说明图1为尽力而为(besteffort,be)调度方式的示意图;图2为优先排队(priorityqueuing,pq)调度方式的示意图;图3为加权公平排队(weightedfairqueuing,wfq)调度方式的示意图;图4为本申请实施例提供的一种队列分配方法的流程图;图5为本申请实施例提供的一种队列分配装置的结构示意图;图6为本申请实施例提供的一种转发设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。当转发设备支持qos时,该转发设备会按照qos指示的预设策略,将不同报文分配到不同队列。之后,不同队列中的报文即可按照该队列对应的调度方式进行转发。下面对队列的各种调度方式进行简单介绍。一、be调度方式如图1所示,当队列采用be调度方式时,转发设备是按照报文进入队列的时间顺序,将先进入队列的报文优先转发出去。二、pq调度方式在采用pq调度方式时,转发设备通常设置有4个pq队列,分别分为高优先级队列、中优先级队列、正常优先队列和低优先队列。可见,pq队列之间有优先级高低的划分。如图2所示,在转发报文时,转发设备会根据五元组(协议id、源ip地址、目的ip地址、源端口号、目的端口号)、报文长短等条件,将所有报文分为4类,分别属于4个pq队列中的一个。然后,按报文所属类别将报文分别送入相应的pq队列。在报文出队时(即报文从转发设备的端口转发出去时),转发设备优先发送高优先级队列中的报文;直到高优先队列中的报文发送完,然后发送中优先队列中的报文;直到中优先级队列中的报文发送完,才发送正常优先级队列中的报文;直到正常优先级队列中的报文,才发送低优先级队列中的报文。三、wfq调度方式如图3所示,在采用wfq调度方式时,转发设备按照流特征对报文进行分类,所述流特征包括:源ip地址、目的ip地址、源端口号、目的端口号等。然后,将同一类的报文分配到同一wfq队列中,即不同类的报文会被分配到不同的wfq队列中。转发设备会给每个wfq队列配置一个带宽。在出队时,wfq队列中的报文只能占用对应的带宽。值得说明的是,转发设备的端口中可存在多个队列,而这多个队列之间可采用不同的调度方式。例如,转发设备的端口中存在l1队列、l2队列以及l3队列,l1队列采用be调度方式,而l2队列和l3队列采用wfq调度方式。如图4所示,本申请实施例提供一种队列分配方法,所述方法的执行主体是转发设备(例如路由器、交换机等),所述方法包括:101、根据报文携带的优先级标志,确定所述报文对应的第一队列。可选的,转发设备以报文的ip地址、mac地址、端口号等参数作为所述报文的优先级标志,本申请实施例对此不作任何限制。示例性的,ipv4报文的优先级标志为区分服务编码点(differentiatedservicescodepoint,dhcp)字段,mpls报文的优先级标志为exp字段,ipv6报文的优先级标志为tc字段。一种可选的实现方式中,转发设备存储有优先级标志与队列编号的对应关系。在接收到报文后,转发设备根据优先级标志与队列编号的对应关系,确定报文对应的第一队列。示例性的,以dhcp字段作为优先级标志,表一示出dhcp字段与队列编号的对应关系。表一dscp队列编号000000l1001000l2010000l3011000l4100000l5101000l6110000l7111000l8结合表一进行举例说明,所述报文携带的dhcp字段为010000,则该报文对应的第一队列为l3队列。可选的,在转发设备接收到报文后,根据预设规则判断所述报文是否是可信任报文。若所述报文为可信任报文,则转发设备根据所述报文携带的优先级标志,确定所述报文对应的第一队列。若所述报文为不可信任报文,则转发设备重新标记所述报文的优先级标志,然后转发设备根据重新标记的优先级标志,确定所述报文对应的第一队列。这样,转发设备可以避免不可信任的报文影响到可信任报文的转发过程。其中,上述预设规则包括以下任意一种:一、若所述报文的ip地址属于白名单中的ip地址,则所述报文为可信任报文;否则,若报文为不可信任报文。二、若所述报文的字节数小于预设字节数,则所述报文为可信任报文;否则,所述报文为不可信任报文。102、检测第一队列对应的令牌桶中剩余的令牌个数是否小于所述报文的字节数。可选的,转发设备根据第一队列对应的令牌桶中令牌总数以及已使用的令牌个数,来确定令牌桶中剩余的令牌个数。若第一队列对应的令牌桶中剩余的令牌个数大于等于所述报文的字节数,说明所述报文可以通过第一队列转发出去,因此转发设备执行下述步骤103。若第一队列对应的令牌桶中剩余的令牌个数小于所述报文的字节数,说明所述报文不能通过第一队列转发出去,因此,为了保证所述报文能够被转发设备转发出去,转发设备执行下述步骤104-105。103、将所述报文分配给第一队列。104、从至少一个第二队列中确定第三队列。其中,第二队列为与所述第一队列采用相同调度方式的队列。可选的,所述调度方式包括:wfq、pq以及be。所述第三队列对应的令牌桶中剩余的令牌个数大于等于所述报文的字节数。一种可选的实现方式中,转发设备检测各个第二队列对应的令牌桶中剩余的令牌个数。然后,将剩余的令牌个数大于所述报文的字节数的令牌桶对应的第二队列,确定为第三队列。但是,如果任意一个第二队列对应的令牌桶中剩余的令牌个数均小于所述报文字节数,即第二队列中不存在第三队列,在这种情况下,转发设备将所述报文分配给第一队列。105、将所述报文分配给所述第三队列。若至少一个第二队列中存在至少一个第三队列,则可以按照以下规则确定所述报文被分配到的队列。一、检测各个第三队列对应的令牌桶中剩余的令牌个数;将所述报文分配给剩余的令牌个数最多的令牌桶对应的第三队列。二、当所述第三队列的调度方式为pq时,将所述报文分配给优先级最高的第三队列。三、当所述第三队列的调度方式为wfq时,将所述报文分配给带宽最大的第三队列。本申请实施例可以根据上述方法示例对转发设备进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。如图5所示,本申请实施例提供一种队列分配装置,所述装置包括:确定模块11,用于根据报文携带的优先级标志,确定所述报文对应的第一队列。所述确定模块11,还用于在所述第一队列对应的令牌桶中剩余的令牌个数小于所述报文的字节数的情况下,从至少一个第二队列中确定第三队列;其中,所述第二队列为与所述第一队列采用相同调度方式的队列,所述第三队列对应的令牌桶中剩余的令牌个数大于等于所述报文的字节数。分配模块12,用于将所述报文分配给所述第三队列。一种可选的实现方式中,所述分配模块12,用于在所述第一队列对应的令牌桶中剩余的令牌个数大于所述报文的字节数的情况下,将所述报文分配给所述第一队列。一种可选的实现方式中,所述分配模块12,用于在至少一个第二队列中存在至少一个第三队列的情况下,检测各个第三队列对应的令牌桶中剩余的令牌个数;将所述报文分配给剩余的令牌个数最多的令牌桶对应的第三队列。一种可选的实现方式中,所述分配模块12,用于在至少一个第二队列中存在至少一个第三队列的情况下,当所述第三队列的调度方式为优先级排队pq时,将所述报文分配给优先级最高的第三队列。一种可选的实现方式中,所述分配模块12,用于在至少一个第二队列中存在至少一个第三队列的情况下,当所述第三队列的调度方式为加权公平排队wfq时,将所述报文分配给带宽最大的第三队列。在采用集成的单元的情况下,图6示出了上述实施例中所涉及的转发设备的一种可能的结构示意图。所述转发设备包括:处理单元21。所述处理单元21用于执行上述确定模块11,分配模块12执行的步骤,和/或用于执行本文所描述的技术的其它过程。所述转发设备还可以包括通信单元22、存储单元23和总线24。其中,所述通信单元22还用于支持转发设备与其他设备的通信。存储单元23用于存储转发设备的程序代码和数据。其中,上述处理单元21可以是转发设备中的处理器或控制器,该处理器或控制器可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器或控制器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合等。通信单元22可以是转发设备中的收发器、收发电路或系统接口等。存储单元23可以是转发设备中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。总线24可以是扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线24可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。本说明书中的各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序加载到计算机上被计算机执行时,使计算机执行上述队列分配方法。其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、光纤、便携式紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1