掌桥专利:专业的专利平台
掌桥专利
首页

一种支持多模态处理逻辑的调度方法及系统

文献发布时间:2024-04-18 19:58:53


一种支持多模态处理逻辑的调度方法及系统

技术领域

本发明涉及数据包调度技术领域,尤其涉及一种支持多模态处理逻辑的调度方法及系统。

背景技术

伴随直播、网络会议等应用规模扩大,应用特征不再局限于传统的端到端的网络传输模式。比如,某些场景下用户更关注内容,而并非提供服务的通信实体,这就暴露出IP寻址的僵硬。当前的网络是尽力而为的传输方式,是完全与业务场景无关的。因此,尽管开发者可以通过丰富的应用层技术去实现不同的应用功能,但是在一定程度上并非最优的网络传输方式。

为解决IP瘦腰问题,打破网络发展困境,国内外学术界针对未来网络领域开展了众多基础理论和关键技术研究。其中,“颠覆式”技术路线直接抛弃现有的IP瘦腰模型,部署全新的网络体系架构来适应未来网络的需求。内容标识、身份标识、地理位置标识等多种标识体系得到了广泛的研究,同时,为力求整合多种网络优势,提升网络对多元业务的承载能力,提出了多种标识融合的网络方案,例如多模态网络环境,以支持用户自定义接入标识结构和数据报文结构,并按照自定义逻辑进行报文处理。

多模态网络融合方案中包含多种标识体系,每种标识具有不同的设计理念、运行方式、通信模型及适配业务。当多种处理逻辑在同一物理环境上运行时,多种处理逻辑需要共享网络资源,如果没有良好的机制保证各个处理逻辑间的隔离,极易造成各个处理逻辑之间互相抢占资源,影响网络实际运行性能。

“网络处理逻辑隔离”是用户层面的综合体验描述,涉及到带宽分配、资源分配、转发行为等多方面的因素。其描述的科学问题是:多种处理逻辑在同一网络环境中共存,且共享节点和网络资源时,多种处理逻辑间互不影响。当多种处理逻辑共享节点和网络资源时,性能影响应当是有限的。如何保障每种网络处理逻辑都能公平地按照分配的物理资源处理和发送报文,这需要在数据包级别提供基于数据包调度的资源保障方法。

当前存在很多数据包调度算法,以适应不同的应用场景。但是这些算法都与硬件和固定场景绑定。调度算法本身不具备可编程性,现在交换机所支持的调度算法较少。虽然可以调整调度参数,但在交换机设计好之后,无法修改算法逻辑,或添加一个全新的算法。因此,我们要达到根据应用需求定制、验证和修改调度算法的目标,就需要寻求一种队列抽象结构以支持多种数据包调度的表达。

发明内容

本发明针对上述问题,为实现同一网络环境中多种处理逻辑的隔离共存,保证一种处理逻辑的流量变化不会影响另一种处理逻辑的流量调度,并且可以根据服务需求高度定制数据包调度算法,提升队列调度的可扩展性,我们提出了一种支持多模态处理逻辑的调度方法及系统,支持多种数据包调度的队列抽象结构表达。利用可编程交换机的能力,将可编程队列调度运用到HQoS机制上,仅使用一个队列在硬件上实现分层可编程调度,为多模态处理逻辑提供可定制的QoS服务,我们称之为Polymorphic PIFO框架。

为了实现上述目的,本发明采用以下技术方案:

本发明一方面提出一种支持多模态处理逻辑的调度方法,包括:

步骤1:根据报文处理逻辑以及用户预定义的QoS服务需求对用户报文进行标记,通过标识将报文分类映射到不同的流队列;

步骤2:利用可编程交换机的能力,通过层次化的等级计算及准入控制,仅使用单个队列实现硬件分层QoS的效果,实现不同处理逻辑间的公平调度以及各个处理逻辑内的多业务可编程调度。

进一步地,所述步骤1包括:

在边缘侧对用户以及业务进行分类标记,以区分不同用户和不同业务,为不同用户的不同业务提供差分服务,设备根据分类条件区分出每个用户的业务报文,再用不同的serv.type标识出每个用户的不同业务报文,并将报文加入到不同的流队列中进行调度。

进一步地,所述步骤2包括:

当数据包到达交换机时,交换机提取数据包分类标记,获得该数据包所属流的调度算法;然后交换机更新数据包所属流聚合的到达字节估计,并获得该流的等级值;然后使用准入控制来决定是否接收数据包,等级阈值由接收字节估计和到达字节估计确定;在此之后,交换机根据各层确定的调度策略递归地更新层次结构中每个流集合的等级值;将数据包排队到队列的末尾;在出口,当队列不为空时,从队列的头部将数据包出列,并将数据包发送出去。

进一步地,所述等级阈值按照以下方式计算:

其中a(i)表示节点i的到达字节估计,b(i)表示节点i的接收字节估计,k表示突发容忍参数。

进一步地,所述准入控制包括:

分配一个空间来容忍具有参数k的小突发,当a(i)≤k·b(i)时,所有的数据包都被允许入队,通过维护最近接收数据包的滑动窗口,使用到达数据包的各层的等级值R(i)作为标准,只接收R(i)值不大于

进一步地,等级值的计算由叶子节点发起,采用递归的方式计算每个节点的等级值。

进一步地,当用户流队列关联的调度算法为最大最小公平调度时,数据包的等级是流的公平配额信息。

进一步地,根据用户需求的调度规则,流队列组合为类队列,不同类队列中的业务报文作为一个流量组合,映射到下一级组队列中;当类队列调度规则为加权公平调度时,根据加权值以及数据包大小计算等级;当组队列之间关联的调度算法为严格优先级算法,组队列的等级为各组队列的优先级。

进一步地,所述可编程交换机包括Barefoot Tofino交换机。

本发明另一方面提出一种支持多模态处理逻辑的调度系统,包括报文分类标记器及可编程分层调度器;

所述报文分类标记器用于根据报文处理逻辑以及用户预定义的QoS服务需求对用户报文进行标记,通过标识将报文分类映射到不同的流队列;

所述可编程分层调度器用于利用可编程交换机的能力,通过层次化的等级计算及准入控制,仅使用单个队列实现硬件分层QoS的效果,实现不同处理逻辑间的公平调度以及各个处理逻辑内的多业务可编程调度。

进一步地,所述报文分类标记器具体用于:

在边缘侧对用户以及业务进行分类标记,以区分不同用户和不同业务,为不同用户的不同业务提供差分服务,设备根据分类条件区分出每个用户的业务报文,再用不同的serv.type标识出每个用户的不同业务报文,并将报文加入到不同的流队列中进行调度。

进一步地,所述可编程分层调度器具体用于:

当数据包到达交换机时,交换机提取数据包分类标记,获得该数据包所属流的调度算法;然后交换机更新数据包所属流聚合的到达字节估计,并获得该流的等级值;然后使用准入控制来决定是否接收数据包,等级阈值由接收字节估计和到达字节估计确定;在此之后,交换机根据各层确定的调度策略递归地更新层次结构中每个流集合的等级值;将数据包排队到队列的末尾;在出口,当队列不为空时,从队列的头部将数据包出列,并将数据包发送出去。

进一步地,所述等级阈值按照以下方式计算:

其中a(i)表示节点i的到达字节估计,b(i)表示节点i的接收字节估计,k表示突发容忍参数。

进一步地,所述准入控制包括:

分配一个空间来容忍具有参数k的小突发,当a(i)≤k·b(i)时,所有的数据包都被允许入队,通过维护最近接收数据包的滑动窗口,使用到达数据包的各层的等级值R(i)作为标准,只接收R(i)值不大于

进一步地,等级值的计算由叶子节点发起,采用递归的方式计算每个节点的等级值。

进一步地,当用户流队列关联的调度算法是最大最小公平算法时,数据包的等级是流的公平配额信息。

进一步地,根据用户需求的调度规则,流队列组合为类队列,不同类队列中的业务报文作为一个流量组合,映射到下一级组队列中;当类队列调度规则为加权公平调度时,根据加权值以及数据包大小计算等级;当组队列之间关联的调度算法为严格优先级算法,组队列的等级为各组队列的优先级。

与现有技术相比,本发明具有的有益效果:

1)提出支持多模态处理逻辑的可编程调度原型Polymorphic PIFO,可以在硬件上以线速实现分层可定制队列调度算法。

2)利用可编程交换机的能力,通过层次化的等级计算及准入控制,仅使用单个队列实现硬件分层QoS的效果,没有逐流状态,也没有复杂的分层队列管理。

3)在硬件Barefoot Tofino交换机上实现Polymorphic PIFO原型框架,结果表明,Polymorphic PIFO可以保证多模态处理逻辑的隔离共存,并实现自定义可编程队列调度算法。

附图说明

图1为本发明实施例一种支持多模态处理逻辑的调度方法的原理框图;

图2为本发明实施例一种支持多模态处理逻辑的调度方法的原型框架;

图3为本发明实施例报文分类过程示意图;

图4为本发明实施例层次化rank值和准入控制示意图;

图5为本发明实施例rank值更新计算树状结构示意图。

具体实施方式

下面结合附图和具体的实施例对本发明做进一步的解释说明:

鉴于IP网络全球化部署的事实,颠覆性的新型网络尝试很难获得成功,实现新型网络与现有网络的融合是未来互联网发展的新思路。新型融合网络包括多种不同处理逻辑的标识体系,由于各种标识体系的报文格式、路由协议、交换方式、转发逻辑等存在差别,当多种处理逻辑在同一物理环境上运行时,多种处理逻辑需要共享物理资源如计算资源、内存资源和链路资源等。所以,需要如何将多种处理逻辑间的调度问题和单个处理逻辑内的调度问题统一到有限的队列资源表达上,以全新的调度算法支撑多种网络处理逻辑的性能隔离,做到互不影响,为多种处理逻辑/多业务提供可定制的确定性QoS服务。

传统QoS技术通常根据业务类型将报文分配到对应的队列中排队,再按照各种调度算法将排队的报文从接口转发出去。由于传统QoS技术的排队过程中只有一级队列调度,在接入网络中,用户规模大,用户的业务种类越来越丰富的情况下,这种分类机制难以满足多用户多业务场景中精细化流量管理的需求,而HQoS技术层次化更适用于此类场景。

如图1所示,数据包到达交换机后,根据报文逻辑标识等分类规则对数据报文进行分类,为报文分配本地标识,通过该标识将同一处理逻辑的数据包放入对应的流队列。不同流队列中具有相同业务特征的业务报文作为一个流量组合,用户可自定义流队列组合中报文所需执行的调度策略,将不同流队列中的报文调度至下一级类队列中进行调度。将具有相同特征的不同类队列中的业务报文进行流量组合,用户可自定义类队列组合中报文所执行的调度策略,将不同类队列中的报文调度至下一级组队列中进行调度。组队列中的流量根据自定义调度策略调度到出接口的队列中,按顺序转发出接口的队列中的报文。(调度层级数根据业务调度的需求而定)。

假设处理逻辑1承载用户1的所有业务,处理逻辑2承载用户2的所有业务。用户1为VIP用户,包含数据和视频业务,用户2位普通用户,包含语音和文件业务。分层QoS可以提供的两级调度分别为基于用户的调度和基于业务的调度,用户间的调度可以确保VIP用户的报文获得优先发送,业务间的调度基于每个用户的不同业务需求进行调度,从而保证其带宽、时延等要求。

为了直观地说明本发明的方法,提供一个简单的示例。假设用户1数据业务报文i被标记为F1,用户1视频业务报文j被标记为F2。报文i和j到达交换机后,根据标识将用户报文i和j分别放入流队列F1和F2中。两个流队列中的业务报文所属用户相同,且该用户的所有流量需要统一进行流量整形,使用可编程为两个流队列配置相应的调度算法,映射到类队列中进行调度。在可编程分层调度部分,用户可根据需求定义调度规则,可编程性在于如何计算每个数据包的排序。假设用户流队列关联的调度算法为最短剩余处理时间SRPT,数据包的等级(rank)就是流的剩余处理时间(或流的剩余字节)。流队列F1的剩余处理时间为1,流队列F2的剩余处理时间为2,即,rank.F1=1,rank.F2=2。则按照调度规则SRPT,流队列调度为类队列C1={i,j}。同理,用户2的业务报文m和n分别放入流队列F3和F4,根据用户需求的某调度规则,流队列组合为类队列C2={n,m}。

不同类队列中的业务报文作为一个流量组合,映射到下一级组队列中,即类队列C1和C2按照调度规则组合为组队列G1。假设类队列调度规则为加权公平调度WFQ,根据加权值以及数据包大小计算等级(rank),rank=Previous_rank+weight*new_packet_length,rank.C1=10,rank.C2=20,根据rank值类队列被调度为组队列G1={C1,C2},其中weight表示权重,Previous_rank表示前一个数据包的等级,new_packet_length表示该数据包的长度。同理,根据用户需求的调度规则,用户3和用户4的业务报文最终可调度为组队列G2。假设组队列之间关联的调度算法为严格优先级算法,则rank等级为各组队列的优先级,设rank.G1=priority.G1=2,rank.G2=priority.G2=1,按照严格优先级调度规则,组队列中的流量调度到出接口的队列中,按照顺序转发出接口中的报文output={G2,G1}={{{a,b},{d,c}},{{i,j},{n,m}}}。

原型设计

如图2所示,一种支持多模态处理逻辑的分层可编程队列调度方法-PolymorphicPIFO原型的关键思想是通过标识各个处理逻辑的业务流,采用可编程分层调度方式为层次化QoS方案提供可定制的队列调度。不同处理逻辑用于承载不同用户的多种业务,为多用户、多业务提供精细化的流量管理,执行分层调度机制,以保证性能隔离,同时为用户提供可定制的QoS服务。Polymorphic PIFO原型仅使用单个队列实现分层调度,即单个队列就可支持多个流调度。但由于可编程设备无法实现多级队列,Polymorphic PIFO原型使用层次化的rank计算和准入控制,仅使用一级队列实现分层调度。

Polymorphic PIFO原型框架主要由两部分组成:报文分类和可编程分层调度。

报文分类:如图3所示,接入交换机为报文分配标识,通过该标识将报文映射到流队列中。区分不同处理逻辑的语音业务、数据业务以及视频业务,将报文放入对应的流队列中等待调度。

可编程分层调度:如图4所示,“层次”为逻辑概念,在物理实现时,它们实际上是单独的队列,被安排到独立的组中,这意味着在硬件中只需要单一级别的队列,可以在不支持层次结构的设备上实现。通过层次化的rank值计算和准入控制,到达近似HQoS的效果。如图中F,C队列并非实际的队列,不会对报文进行缓存,其实际的工作为rank值的计算。根据不同的队列调度策略,基于rank值准入控制来处理数据包,优先调度rank值低的数据包,丢弃rank值高于阈值的数据包。

进一步地,进行如下展开阐述:

数据包标记

在边缘侧对用户以及业务进行分类标记,以区分不同用户和不同业务,为不同用户的不同业务提供差分服务。ID是设备为报文分配的一种本地标识,系统通过该标识将报文映射到流队列中。通常情况下,每个ID的user.type表示数据包在流层次结构中所属的流聚合,即表示某个用户的不同业务聚合。每个ID的serv.type可以用来标识某个用户的一类业务,设备根据分类条件区分出每个用户的业务报文,再用不同的serv.type标识出每个用户的不同业务报文,并将报文加入到不同的流队列中进行调度。

根据不同的应用场景,可以采用不同的规则对用户进行分类。如,运营商在某小区推出家庭带宽套餐,包含IP电话(VoIP)、IP电视(IPTV)和高速上网三种业务。则每个家庭为一个用户,每个用户有三种不同的业务,通过该规则对每个家庭的每种业务进行分类。所有用户的VoIP业务映射到T,所有用户的IPTV业务映射到V,所有用户的高速上网业务映射到H,各个家庭通过分类标记为A,B,C......每个家庭的各个业务报文最终标记为ID=AT、AV和AH。通过分层多级调度,在各个家庭的业务之间进行带宽分配,实现服务质量保证。

等级(rank)计算

在可编程分层调度中,每层可采用任意调度算法。任意调度算法最终映射为rank值,根据rank值执行准入控制决定转发或丢弃数据包。阈值由到达速率和离开速率之间的差异动态变化决定。当到达速率显著超过离开速率时,阈值变得更加严格,它确保了接受数据包的速率与离开速率大致匹配。分层调度采用递归的计算每个节点的rank值来实现,根据不同的队列调度策略,基于rank值准入控制来处理数据包,优先调度rank值低的数据包,丢弃rank值高于阈值的数据包。

在可编程分层调度中,rank值的计算由叶子节点发起,如图5所示。在图5中,节点i代表一个叶子流。叶子流聚合为业务流C

到达字节长度估计用于估计层次结构中节点的流聚合的到达字节,使用a(i)表示节点i的到达字节长度。接受字节长度估计用于估计目标队列的队列大小,使用b(i)表示节点i的接受字节长度。它使用到达字节长度a(i)和接受字节长度b(i)之间的差值来获取到达速率和离开速率之间的差异。当到达字节长度接近目标接受字节长度时,准入控制的阈值更具严格性。分配一个空间来容忍具有参数k的小突发,当到达字节长度在阈值内(即a(i)≤k·b(i))时,所有的数据包都被允许入队。通过维护最近接收数据包的滑动窗口,使用到达数据包的各层的rank值R(i)作为标准。只接收R(i)值不大于

算法2给出了可编程分层调度的伪代码。当数据包到达交换机时,交换机提取数据包分类标记,获得该数据包所属流的调度算法(line1-4)。然后交换机更新数据包所属流聚合的到达字节估计,并获得该流的rank值(line5-7)。然后使用准入控制来决定是否接收数据包,阈值由接收字节估计b(i)和到达字节估计a(i)确定(line8-14)。在此之后,交换机根据各层确定的调度策略递归地更新层次结构中每个流集合的rank值(line15-17)。队列是一个FIFO队列,它将数据包排队到队列的末尾。在出口,当队列不为空时,从队列的头部将数据包出列,并将数据包发送出去(line23-26)。

数据平面设计与实现

作为一种可实施方式,在本节中,描述了在可编程交换机Barefoot Tofino上实现Polymorphic PIFO原型框架的数据平面设计,以各层调度算法采用公平调度算法为例。公平排队是一种规范的机制,通过确保每个流获得公平的份额,而不考虑其他流,从而为网络流量提供公平的带宽分配。不同处理逻辑间的链路共享通过层次化的rank值计算的公平排队实现,从而实现最大最小公平算法。通过这种方式,公平排队强制竞争流之间的隔离,从而确保正常流免受行为不端流的影响。基于可编程交换机的结构,展示了如何在可编程交换机上设计和实现数据报文分类标记、速率估计以及rank值分层计算逻辑。

定义:

active节点:拥塞或者积压的节点;

w

R(i):节点i的等级,使用公平配额表示;

b(i):节点i的余额,允许传输的字节数。

每个节点代表一个流,层次顶部的节点(称为root)表示调度算法处于活动状态的网络接口,所有达到的流量映射到叶节点。内部节点既不是根节点也不是叶节点。内部和根的请求和分配分别由它们的子节点的总请求和分配组成。内部节点的可用容量取决于层次结构中所有分支中叶节点的请求。每个节点关联一个整数权值w

报文分类标记:首先,在MAC层,利用以太网帧类型etherType字段标识不同处理逻辑,包括基于IPv4、基于内容名称、基于地理位置以及基于身份信息的处理逻辑等。当匹配到etherType=0x0800时,执行IPv4包转发逻辑,按照IPv4报文格式进行解析;当匹配到etherType=0x8624时,执行基于内容名称的包转发逻辑,按照NDN报文格式进行解析;当匹配到etherType=0x8947时,执行基于地理位置的包转发逻辑,按照GeoNetworking报文格式进行解析;当匹配到etherType=0x27C0时,执行基于身份信息的包转发逻辑,按照MobilityFirst报文格式进行解析。其次,对不同处理逻辑承载的用户以及业务进行分类标记,根据预定义的QoS服务需求区分不同处理逻辑的用户和不同业务,为不同用户的不同业务提供差分服务。数据包到达边缘交换机后,使用Setvalid()对报文进行标记。根据用户对报文的分类标记,边缘交换机新增头部字段Pkt.ID,Pkt.ID字段包括用户信息User.type以及业务信息Serv.type。数据包到达交换机后,Setvalid()函数将Pkt.ID标记为合法,在封装数据报文时将该字段合并进数据报文的对应位置中。数据报文到达核心交换机后,交换机读取Pkt.ID字段值确定数据包所属的流队列,将其加入到流队列中等待调度。

公平估计:估计到达字节长度,根据每个数据包的到达字节长度执行公平调度,使用队列中已占有的队列长度和队列的总长度进行估计。向目标队列请求带宽,根据标记获得该类业务报文已占用长度,通过与队列长度的比值计算更新公平配额f,然后返回可被传输的报文字节长度。当所有到达字节长度小于目标队列长度时,公平配额f为最大数据包到达字节长度,所有数据包均被接收;当所有到达字节长度超过目标队列长度时,根据数据包之间到达字节长度比值和接收字节长度计算公平配额f。到达字节长度在公平配额之内接收数据包,在公平配额之外丢弃数据包。具体来说,交换机需要读取公平配额来计算丢弃概率,然后根据是否接收或丢弃数据包,交换机更新可接受字节长度,然后用于更新公平配额f。

队列长度信息位于入口管道和出口管道之间的流量管理器模块,困难在于,只有当数据包经过流量管理器时才能获得队列长度信息,因此只能够在出口管道读取。但是需要在入口管道获取队列长度计算更新公平配额。所以使用一种基于循环的队列长度估计方法,将队列长度信息从出口管道传递到入口管道。具体来说,使用一个寄存器数组来存储出口管道中每个出口端口的队列长度,用q_len_engress表示。报文经过流量管理器后,可以将队列长度的值写入q_len_engress。同时在入口管道处有一个寄存器数组的副本,用q_len_ingress表示。使用一组工作包从出口管道的q_len_engress读取队列长度。当工作包离开出口管道时,它们被重新循环以再次进入入口管道,并使用它们读取的值更新q_len_ingress中的队列长度。

当工作包在入口管道准备好队列长度时,正常到达的包就可以在入口管道访问队列长度信息。然后根据队列长度和该类型数据包已占有的队列长度比值计算更新公平配额,公平配额与数据包长度进行比较,决定是否接收长度以及丢弃数据包概率。如果数据包被接收,它还将当前队列长度写入出口管道。Barefoot Tofino 2可以直接在入口管道读取队列长度,不需要再循环。

rank值(公平配额)分层计算:数据包调度算法可编程是指如何可编程计算每个数据包的秩。在本例中,最大最小公平调度算法的秩是公平配额。将公平配额与可传输的字节数进行比较,确定是否传输数据包。一个节点的公平配额在主轮访问期间重新计算和分配。如果在主轮结束时,某些节点有未使用的配额,则开始剩余轮,其中未使用的配额将分配给活动节点。如果在剩余轮结束后仍有未使用的配额,则开始额外的剩余轮。

每个节点维持当前轮中该节点或其叶子后代允许传输的字节数(b

在每一轮中,所有活动的内部节点重新计算权重设置为1的子节点在该轮中可以传输的字节数,这被称为公平配额。对于节点i的公平配额定义为:

其中Child(i)表示节点i的子节点。

在计算公平配额之前,每个节点i更新其余额和剩余。对于根节点:

b(root)=b(root)+r(root),r(root)=0

也就是说,将剩余部分添加到余额中,然后重置。对于活动的内部节点,更新为:

b(i)=b(i)+r(i)+w

在这里,节点i的余额增加了w

b(i)=b(i)+w

余额的更新和公平配额的计算由叶节点发起。节点i为active叶节点,当前轮访问该节点时,它向父节点请求公平配额R(C

在发送数据包之前,在轮询中访问叶节点i时,根据父节点的配额更新余额。如果队列头的数据包长度为L,且i的余额大于L,则发送数据包,然后更新叶子和根节点的余额。

b(i)=b(i)-L,b(root)=b(root)+L

通过为每个传输的数据包增加根节点的余额,根会积累一个余额在下一主轮分配。只要有足够的余额,节点i就可以继续传送数据包。如果队列头部的数据包大小为L且b

r(C

根节点和活动的内部节点还保留一个剩余r,表示允许传输前一轮从后代收集的字节,初始设置r(i)=0。剩余的作用。内部节点i或根的剩余收集当前轮中空闲的子节点返回的余额。不将空闲子节点的返回余额立即添加到父节点的理由是防止返回的余额在当前轮中被使用。这样做有利于稍后在轮询中访问的叶节点。通过仅在新一轮开始时向余额中添加剩余,确保所有后代都可以获得未使用余额的一部分。

只有当分配给节点的所有配额的总和已用于传输时,才开始新的主轮。一个节点只有在当前轮中空闲时才会用完它的全部配额。这导致未使用的余额被添加到剩余部分。如果发生这种情况,在一轮中积累的剩余将在随后的剩余轮中分配给后代节点。开始剩余轮的条件时至少有一个内部节点i满足余额加剩余不小于权重之和,即该节点利用其余额和剩余计算出的非零配额。

剩余轮的工作原理和主轮一样。首先所有积压的节点都被标记为活动,然后是一个完整的活动节点循环,更新余额并计算配额。与主轮唯一的区别是根的配额被设置为0,这意味着不会从根轮分发新的配额。如果在剩余轮结束时,仍然存在一个内部节点j,满足余额加剩余不小于权重之和,则开始另一轮剩余轮。这个过程一直持续下去,直到没有一个内部节点满足这个条件,在这种情况下,开始一个新的主轮。

由于余额是传输许可,而剩余是未使用的传输许可,因此保持不变性可以确保在一轮中传输的最大流量不会偏移。

在上述实施例的基础上,本发明还提出一种支持多模态处理逻辑的调度系统,包括报文分类标记器及可编程分层调度器;

所述报文分类标记器用于根据报文处理逻辑以及用户预定义的QoS服务需求对用户报文进行标记,通过标识将报文分类映射到不同的流队列;

所述可编程分层调度器用于利用可编程交换机的能力,通过层次化的等级计算及准入控制,仅使用单个队列实现硬件分层QoS的效果,实现不同处理逻辑间的公平调度以及各个处理逻辑内的多业务可编程调度。

进一步地,所述报文分类标记器具体用于:

在边缘侧对用户以及业务进行分类标记,以区分不同用户和不同业务,为不同用户的不同业务提供差分服务,设备根据分类条件区分出每个用户的业务报文,再用不同的serv.type标识出每个用户的不同业务报文,并将报文加入到不同的流队列中进行调度。

进一步地,所述可编程分层调度器具体用于:

当数据包到达交换机时,交换机提取数据包分类标记,获得该数据包所属流的调度算法;然后交换机更新数据包所属流聚合的到达字节估计,并获得该流的等级值;然后使用准入控制来决定是否接收数据包,等级阈值由接收字节估计和到达字节估计确定;在此之后,交换机根据各层确定的调度策略递归地更新层次结构中每个流集合的等级值;将数据包排队到队列的末尾;在出口,当队列不为空时,从队列的头部将数据包出列,并将数据包发送出去。

进一步地,所述等级阈值按照以下方式计算:

/>

其中a(i)表示节点i的到达字节估计,b(i)表示节点i的接收字节估计,k表示突发容忍参数。

进一步地,所述准入控制包括:

分配一个空间来容忍具有参数k的小突发,当a(i)≤k·b(i)时,所有的数据包都被允许入队,通过维护最近接收数据包的滑动窗口,使用到达数据包的各层的等级值R(i)作为标准,只接收R(i)值不大于

进一步地,等级值的计算由叶子节点发起,采用递归的方式计算每个节点的等级值。

进一步地,当用户流队列关联的调度算法为最大最小公平调度时,数据包的等级是流的公平配额信息。

进一步地,根据用户需求的调度规则,流队列组合为类队列,不同类队列中的业务报文作为一个流量组合,映射到下一级组队列中;当类队列调度规则为加权公平调度时,根据加权值以及数据包大小计算等级;当组队列之间关联的调度算法为严格优先级算法,组队列的等级为各组队列的优先级。

综上,本发明提出支持多模态处理逻辑的可编程调度原型Polymorphic PIFO,可以在硬件上以线速实现分层可定制队列调度算法。且利用可编程交换机的能力,通过层次化的等级计算及准入控制,仅使用单个队列实现硬件分层QoS的效果,没有逐流状态,也没有复杂的分层队列管理。在硬件Barefoot Tofino交换机上实现Polymorphic PIFO原型框架,结果表明,Polymorphic PIFO可以保证多模态处理逻辑的隔离共存,并实现自定义可编程队列调度算法。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种支持多分区处理的批量作业协同调度方法及系统
  • 一种支持多分区处理的批量作业协同调度方法及系统
技术分类

06120116507489