CN103931148B - 流量调度设备 - Google Patents

流量调度设备 Download PDF

Info

Publication number
CN103931148B
CN103931148B CN201280051497.9A CN201280051497A CN103931148B CN 103931148 B CN103931148 B CN 103931148B CN 201280051497 A CN201280051497 A CN 201280051497A CN 103931148 B CN103931148 B CN 103931148B
Authority
CN
China
Prior art keywords
flow
memory
queue
layering
dispatching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201280051497.9A
Other languages
English (en)
Other versions
CN103931148A (zh
Inventor
亚历克斯·塔勒
约阿夫·皮莱格
亚历克斯·乌曼斯基
张克亮
张健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103931148A publication Critical patent/CN103931148A/zh
Application granted granted Critical
Publication of CN103931148B publication Critical patent/CN103931148B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/60Queue scheduling implementing hierarchical scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/20Arrangements for detecting or preventing errors in the information received using signal quality detector
    • H04L1/203Details of error rate determination, e.g. BER, FER or WER
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/10Flow control between communication endpoints
    • H04W28/14Flow control between communication endpoints using intermediate storage

Abstract

本发明涉及一种流量调度设备,用于调度存储在多个流量流队列中的数据包的传输顺序,每个用于调度的流量流队列的资格状态在描述所述多个流量流队列之间关系的分层调度数据库中维护,所述流量调度设备包括:多个互连的存储器集群单元,每个所述存储器集群单元与所述分层调度数据库的一个或多个层关联且耦合至至少一个协处理器,所述至少一个协处理器可被软件编程以实施调度算法;以及一个到所述多个流量流队列的接口,该接口用于识别与根据所述调度算法选取的用于传输的特定流量流队列相关联的一个或多个包,且该接口用于发送所述多个流量流队列中的每个流量流队列的资格状态。

Description

流量调度设备
背景技术
本发明涉及流量调度以及电信路由器和交换系统中的流量管理领域,尤其当需要高性能、灵活流量调度的时候。
分层流量管理单元是分组交换网络的网络设备现代路由器或交换系统中的一个关键构建块。流量管理单元在包处理数据路径中使用,以实施服务水平协议(SLA)以及相关服务质量(QoS)和带宽配置要求。服务水平协议是例如客户和服务供应商双方之间的协商协议。SLA可指定如计费等服务的可用性、可服务性、性能、操作或其他属性的水平。服务质量指的是向不同的应用、用户或数据流提供不同的优先级或者保证数据流具有一定性能水平的能力。例如,可保证所需的比特率、时延、抖动、丢包概率和/或误码率。带宽配置是指测量和控制网络链路上的通信(即流量和包),以避免链路满负荷或超负荷而导致网络拥堵或网络性能差的过程。
流量管理通常实施为独立的IC设备,或者为网络处理器IC或通信处理器IC中的硬件块。流量管理设备是从存储多个流队列的流队列管理器(FQM)和控制包传出FQM的顺序的流量调度器中构建。现有技术的高性能流量调度器采用硬件可配置引擎。这种硬件流量调度器的功能通过配置进行定义,其受限于由所有可能的配置组合构成的有限集合,因此硬件流量调度器在灵活性方面存在很大的不足。当不断出现的网络操作员的需求超出所有可能的配置的集合时,硬件流量调度器经常不能满足这些需求。为了克服硬件流量调度器的缺点,需要一种更加灵活的调度器。灵活性通过软件可编程性实现。基于软件的流量调度器可针对各种调度算法和独特特性进行编程,并可进一步安全地升级以支持新的调度算法。但是,现有技术中,基于软件的流量调度器虽然满足一般灵活性需求,但目前为止还不能实现硬件流量调度器的高性能。
发明内容
本发明的目的在于提供一种具有基于硬件的流量调度器的性能以及基于软件的流量调度器的灵活性的流量调度器的概念。
此目的可以通过独立权利要求的特征来实现。进一步的实施形式在从属权利要求、具体说明和附图中显而易见。
为了详细描述本发明,将使用以下术语、缩写和符号:
ALU:算法逻辑协处理器单元(Arithmetic Logic co-processor Unit);
XALU,
X-ALU:扩展算法逻辑协处理器单元(Extended Arithmetic Logic co-processorUnit);
MCU:存储器集群单元(Memory Cluster Unit);
SPE:调度处理器元件(Scheduling Processor Element);
FQM:流队列管理器(Flow Queue Manager);
Mem:存储器(Memory);
Node-Cop,
NCOP:节点协处理器(Node Co-Processor);
Acc-Cop,
ACOP:计费协处理器(Accounting Co-Processor);
VLIW:超长指令字(Very LongInstruction Word);
RISC:精简指令集(Reduced Instruction Set);
CSIC:复杂指令集(Complex Instruction Set);
ISA:指令集架构(Instruction Set Architecture);
S/W:软件(Software);
H/W:硬件(Hardware);
TMU:流量管理单元(Traffic Management Unit);
NPU:网络处理器单元(Network Processor Unit);
SLA:服务水平协议(Service Level Agreement);
QoS:服务质量(Quality of Service);
IC:集成电路(Integrated Circuit);
WFQ:加权公平队列调度(weighted fair queuing);
WRR:加权轮询队列调度(weighted round robin);
MDRR:修改赤字轮询队列调度(modified deficit round robin);
SRAM:静态随机存取存储器(static random access memory);
DRAM:动态随机存取存储器(dynamic random access memory);
GQ:组级别(group level);
SQ:用户水平(subscriber level);
FQ:流队列水平(flow queues level);
DMA:直接存储器存取(direct memory access);
RX:接收(Receive);
TX:发送(Transmit);
VLAN:虚拟局域网(Virtual Local Area Network)。
根据第一方面,本发明涉及一种流量调度设备,用于调度存储在多个流量流队列中的数据包的传输顺序,每个调度的流量流队列的资格状态(eligibility state)在描述所述多个流量流队列之间关系的分层调度数据库中维护;所述流量调度设备包括:多个互连的存储器集群单元,每个存储器集群单元与所述分层调度数据库的单个或多个层关联且耦合至至少一个协处理器,所述至少一个协处理器可被软件编程以实施调度算法;以及一个到所述多个流量流队列的接口,该接口用于识别与根据调度算法选取的用于传输的特定流量流队列相关联的一个或多个包,且该接口用于发送所述多个流量流队列中的每个流量流队列的资格状态。
该流量调度设备的灵活性通过软件的可编程性取得。基于软件的流量调度设备可针对各种调度算法和独特特性进行编程,因此其将来可被安全地更新以支持新的特性或调度算法。该流量调度设备是流量管理单元内的可编程分层流量调度器,其功能通过软件定义,因此当实现等同于硬件调度器的性能速率时其是比较灵活的。
在根据第一方面的流量调度设备的第一种可能实施形式中,该流量调度设备进一步包括管理处理器,用于基于上层实体的配置命令来构建和维护该分层调度数据库。
上层实体涉及分层结构网络中分层地位于流量管理单元之上的网络实体,例如,网络路由器、网络管理单元、网络配置单元以及其他。
该管理处理器是可选的。其也可由外部处理器实现。当管理处理器是外部实现时,可降低用于实施所述流量调度设备的芯片尺寸并因此降低生产成本和热耗散(thermaldissipation),另一方面,与芯片上管理处理器相比可降低数据库维护性能。
在根据第一方面或者根据第一方面的第一实施形式的流量调度设备的第二可能实施形式中,该协处理器用于实施事件驱动软件架构(event-driven softwarearchitecture)。
事件驱动软件架构是一种提升事件生产、探测、消耗以及反应的软件架构模式。事件可定义为“状态的重大变更”。例如,当网络中的流量路由拥堵时,该流量路由的状态从“可用”变更为“忙碌”。通信系统结构可能将这种状态变更视为由结构内的各种应用待生成、发布、检测以及消耗的事件。在宽松耦合的软件部件和服务间发送事件的应用和系统的设计与实施可以使用该架构模式。事件驱动软件架构可由事件发射器(或代理)和事件消耗器(或接收器)。接收器负责在事件出现后尽快做出反应。该反应可完全或不完全由接收器本身提供。例如,接收器可能只负责过滤、变换和转发事件到另一部件,或者其可提供针对此事件的独立反应。第一类接收器可基于面向消息的中间件等传统部件,而第二类接收器(独立在线反应)可能需要更合适的事务性执行框架。围绕事件驱动架构构建应用和系统可使这些应用和系统以一种促进更多响应的方式构建,这是因为事件驱动系统在设计上对不可预测的和异步环境更正规化。
并行执行以两种维度实现:通过独立处理事件以及通过并行处理每个数据库层。结果是在独立处理器/协处理器上处理的很多独立任务的深度并发(平行)。
在根据第一方面或第一方面的任何上述实施形式所述的流量调度设备的第三可能实施形式中,该分层调度数据库是从代表最高层级的每个物理接口的物理端口的根接口到代表最低层级的多个流量流队列的树状结构,该分层调度数据库包括至少一个如下中间层级:每个物理端口的子端口层、每个子端口的用户组层、每个用户组的用户层以及每个用户的流量流队列层。
存储器集群单元的数量可对应于层级的数量,每个存储器集群单元实现一个不同的层级。这样,该流量调度设备可通过包含或移除存储器集群单元来灵活改变层级的数量。
在根据第一方面或第一方面的任何上述实施形式所述的流量调度设备的第四可能实施形式中,该调度算法包括选择过程,该选择过程从根接口(root interface)向多个流队列遍历该分层调度数据库并在分层调度数据库的每个层基于成员的调度状态资格选择分层调度数据库的成员。
通过选择有资格调度的分层数据库成员,该调度算法不处理没有资格的数据。因此,提高了调度算法的效率。该调度过程比不使用待处理成员的资格的调度过程要快。
在根据第一方面的第四实施形式所述的流量调度设备的第五可能实施形式中,调度算法包括但不限于如下项之一:加权公平队列(WFQ)算法、加权轮询队列调度(WRR)算法、修改赤字轮询队列调度(MDRR)算法、严格优先级算法(strict priority algorithm)以及先到先得算法(first come first serve algorithm)。
这些算法是易于实施的标准调度算法。流量调度设备的灵活架构支持实施尚未开发的新调度算法。
在根据第一方面的第四或第五实施形式所述的流量调度设备的第六可能实施形式中,该调度算法包括构建过程,该构建过程遍历分层调度数据库,特别但不限于从多个流量流队列向根接口进行遍历,并在分层调度数据库的每层更新分层调度数据库成员的资格状态。
通过更新分层调度数据库成员的资格状态可提高调度算法的效率,这是因为只需处理有资格的成员而无需执行不需要的处理步骤。
在根据第一方面或第一方面的任何上述实施形式所述的流量调度设备的第七可能实施形式中,多个存储器集群单元或一组存储器集群单元中的每个单元均耦合至关联的节点协处理器,该节点协处理器用于处理分层调度数据库的拓扑映射信息以及处理分层调度数据库节点的数据字段映射信息。
该关联节点协处理器可有效地处理拓扑信息。可节省用于将拓扑信息关联至存储器集群的消息花销(overhead)。
在根据第一方面或第一方面的任何上述实施形式所述的流量调度设备的第八可能实施形式中,多个存储器集群单元或一组存储器集群单元中的每个单元均耦合至关联的计费协处理器,该计费协处理器用于处理与调度算法相关的整形器(shaper)、策略器(policer)和计数器(counter)。
该关联的节点协处理器能有效地处理与特定存储器集群相关的整形器、策略器和计数器。可节省用于将整形器、策略器和计数器关联至存储器集群的消息花销。
在根据第一方面或第一方面的任何上述实施形式所述的流量调度设备的第九可能实施形式中,多个存储器集群单元或一组存储器集群单元中的每个单元均耦合至关联的增强算法逻辑协处理器单元,该增强算法逻辑协处理器单元在该分层调度数据库上执行计算操作。
这种耦合提供了高度的灵活性。由于存储器集群不接入单个算法逻辑单元来执行其计算操作,从而减少了存储器冲突。
在根据第一方面的第九实施形式所述的流量调度设备的第十可能实施形式中,每个增强算法逻辑协处理器单元包括一个VLIM处理器线性收缩阵列(linear systolicarray of VLIM processor)。
线性收缩阵列为高性能引擎。其指令集架构针对分层调度进行了优化。
在根据第一方面的第九或第十实施形式所述的流量调度设备的第十一可能实施形式中,该增强算法逻辑协处理器单元可动态或静态地直接与彼此互连,从而以一种相对于分层调度数据库的层级的流水线方式来处理存储器集群单元。
因此,存储器行为与可配置且不可编程硬件单元流水线的存储器行为相同,这是因为增强算法逻辑协处理器单元能够以流水线方式处理存储器集群单元。这种流水线处理在提供完整的可编程性的同时产生对应于可配硬件流水线的性能的高性能速率。
在根据第一方面的第九或第十实施形式所述的流量调度设备的第十二可能实施形式中,该增强算法逻辑协处理器单元可通过由调度处理器元件组成的共享全局集合来动态或静态地直接与彼此互连,从而以一种相对于该分层调度数据库的层级的流水线方式来处理存储器集群单元,该调度处理器元件包括RISC/CISC处理器。
因此,该存储器行为与可配置且不可编程硬件单元流水线的存储器行为相同,这是因为增强算法逻辑协处理器单元能够以流水线方式处理存储器集群单元。使用用于互连存储器集群单元的调度处理器元件的共享集合提供了附加的可编程性。根据层级数量和性能要求,可使用不同数量的SPE来形成所述共享集合。因此,SPE处理功率可根据分层调度数据库的不同层级的工作量来开发。RISC处理器可用于实施只需要精简指令集的简单的处理步骤,而CISC处理器可用于需要复杂指令集的复杂处理步骤。
在根据第一方面的第九或第十实施形式所述的流量调度设备的第十三可能实施形式中,该增强算法逻辑协处理器单元可通过由分配给所述多个存储器集群单元的一个或多个单元的调度处理器元件组成的分布式集合来动态或静态地直接与彼此互连,从而以一种相对于分层调度数据库的层级的流水线方式来处理存储器集群单元,该调度处理器元件包括RISC/CISC处理器。
由分配给存储器集群单元的调度处理器元件组成的分布式集合或共享式集合增加了灵活度。该调度处理器元件软件可在该分层流量调度设备中执行优先级重映射。一些层级可仅通过XALU处理而其他层级则可通过XALU和SPE来处理,从而产生更高的灵活度。
在根据第一方面的第十二或第十三实施形式所述的流量调度设备的第十四可能实施形式中,每个由调度处理器元件组成的分布式或共享式集合均由监督单元(supervising unit)进行监督。
该监督单元可用于实施将SPE与存储器集群单元关联以提高灵活性的不同配置策略。由于该流量调度设备的架构不受限于特定的硬件配置,因此可很容易地实施新调度算法。
该流量调度设备是流量管理单元内的可编程分层流量调度器,其功能通过软件定义,因此当实现等同于硬件调度器的性能速率时其是比较灵活的。可对该流量调度设备进行编程以实现仅通过硬件可配实体无法实现的各种调度算法和独特特性。
因此,本发明的实施形式可提供在算法领域具有可进一步灵活开发的灵活流量调度器的流量调度概念,尤其是可同时提供基于硬件的流量调度器的高超性能的更快的算法。
附图说明
本发明的进一步实施例将参照以下附图进行描述,附图中:
图1所示为根据一种实施形式的流量调度设备的框图;
图2所示为根据一种实施形式的具有流量调度设备的流量管理单元的框图;
图3所示为根据一种实施形式的分层调度数据库的示意图;
图4所示为图3中的分层调度数据库的基本元件的示意图;
图5所示为根据一种实施形式的流量调度设备的框图;
图6所示为根据一种实施形式的XALU的框图;
图7所示为由多个处理器并行更新的数据库存储器的示意图;
图8所示为根据一种实施形式的由处理器收缩阵列更新的数据库存储器的示意图;
图9所示为通过使用硬件单元的流水线来选择分层调度数据库存储器的选择过程的示意图;
图10所示为根据一种实施形式的通过使用直接互连的存储器集群单元的可编程流水线来选择分层调度数据库存储器的选择过程的示意图;
图11所示为通过使用硬件单元的流水线来构建分层调度数据库存储器的构建过程的示意图;
图12所示为根据一种实施形式的通过使用由SPE共享集合互连的存储器集群单元的可编程流水线来构建分层调度数据库存储器的构建过程的示意图;
图13所示为根据一种实施形式的存储器集群单元的框图;
图14所示为根据一种实施形式的存储器集群单元的框图;
图15所示为根据一种实施形式的流量调度设备的框图;以及
图16所示为根据一种实施形式的流量调度设备的框图。
具体实施方式
图1所示为根据一种实施形式的流量调度设备100的框图。流量调度设备100用于调度存储在图1中箭头所指示的流量流队列102中的数据包的传输序列。在分层调度数据库104中维护用于调度的每个流量流队列102的资格状态,该分层调度数据库由例如四个存储器104a、104b、104c和104d形成。存储器的数量并不限于4个,可以是任意其它数量。资格状态描述基于QoS服务供应商的配置的流量流队列102之间的关系。
流量调度设备100示例性地包括四个互连的存储器集群单元106a、106b、106c和106d。存储器集群单元的数量不限于4个,可以是任意其它数量。每个存储器集群单元106a、106b、106c和106d与分层调度数据库104的单个或多个层级关联(这将在下文图3进行解释)并耦合到例如三个协处理器108、110和112。耦合的协处理器的数量不限于3个,可以是任意其它数量。协处理器108、110和112可软件编程,以实现调度算法。与图1中的协处理器108、110和112关联的计费、选择和构建任务是调度算法的示例,软件可实施另一方案,例如选择和构建任务在单个协处理器上实施。
在一种替代性的实施形式中,混合使用软件可编程协处理器和硬件可配置协处理器,其中至少有一个协处理器是软件可编程的。
流量调度设备100进一步包括到流量流队列102的接口114,用于识别一个或多个与根据调度算法选择传输的特定流量流队列102关联的包。接口114将每个流量流队列102的资格状态发送到流量调度设备100。
下文图2描述的流量管理单元200可用于管理有限的资源,例如网络路由器传输线路的带宽等。如果出流量由于带宽不足而排队,则可暂停或压制所有其它队列,以在流量到达时从最高优先级队列发送流量。这就确保了实时流量等优先流量,例如VoIP连接的RTP流,以最小时延转发并最小化由于队列达到最大能力而拒绝流量的可能性。当最高优先级队列为空时可处理所有其它流量。另一种可由流量管理单元200使用的方法是不成比例地从高优先级队列发送比中优先级队列或低优先级队列更多的流量。
流量调度设备100可通过接口114接入流量流队列102。特定流量流队列102的包可基于其头字段进行识别,例如通过其端口号、源地址或目的地址或者通过存储在头字段中的包标识。资格状态与每个流量流队列102关联。资格状态可视为描述待转发的各流量流队列的权利。因此,资格状态与各流队列102的优先级相关且依赖于服务供应商的服务质量(QoS)配置。资格状态指示流量流队列102是否可由流量调度设备100进行调度。当流量流队列102的资格状态为“不可用”时,流量调度设备100在其调度决定中不考虑该队列。当流量流队列102的资格状态为“可用”时,流量调度设备100在决定待转发的下一流量流队列102时会考虑该队列。服务供应商通过服务供应商的QoS概念来为流量流保证一定的性能水平。服务质量指的是向不同的应用、用户或数据流提供不同的优先级或者保证数据流具有一定性能水平的能力。例如,可在流量合同中保证所需的比特率、时延、抖动、丢包概率和/或误码率。如果网络能力不足,则服务质量保证十分重要,对于IP承载语音、在线游戏和IP-TV等实时流多媒体应用尤为如此,这是因为这些应用通常需要固定的比特率且对时延敏感,并且在例如蜂窝数据通信等能力是有限资源的网络中也是如此。
存储器集群单元106a、106b、106c和106d中的每个存储器集群单元包括选择引擎110、构建引擎108以及计费引擎112。选择引擎110是可编程的高灵活性高性能机器,用于实施调度算法的选择过程,以选择待发送的下一流队列包。该选择过程用于遍历分层调度数据库104以及基于成员的资格状态在数据库104的每个层级选择成员。构建引擎108是可编程的高灵活性高性能机器,用于实施调度算法的构建过程。该构建过程用于遍历分层调度数据库104以及在数据库104的每个层级更新其成员的资格状态。计费引擎112是可编程的高灵活性高性能机器,用于实施调度算法的计费过程。该计费过程用于处理与调度算法相关的分层调度数据库104的整形器、策略器和计数器。
整形器或流量整形器用于通过延迟满足一定条件的其他种类包来为一些种类的包优化或保证性能、改善延时和/或增加可用带宽。如果链路饱和至存在重大水平的竞争点时,延时可大大增高。因此,使用流量整形来防止此种情况发生并约束时延。流量整形提供一种控制在指定时期内发送到网络的流量数量的方法。由计费过程进行对流量整形器的处理,例如待用于整形过程的性能配置、时延配置和带宽的配置。
策略器或流量策略器用于执行流量策略,流量策略是独特但相关的丢包和标记包的实践。流量策略包括选择或将流量归类为不同类型或种类的技术,流量归类(trafficcateorization)也表示为流量分类(traffic classification)。由计费过程进行流量策略器的处理,例如标记过程的配置和包归类的配置。
计数器用于检查流量管理单元或流量调度单元的内部状态、参数或者变量。它们提供了对流量调度过程的实际或过去的性能的一种见解。由计费过程进行计数器的处理,例如计数器的配置或读取。
因此,流量调度设备100的子单元为:
1.保存分层数据的分层存储数据库(hierarchical memory database)104或分层调度数据库(hierarchical scheduling database)104。分层存储数据库104通常划分为与层级数量匹配的多个存储器块(memory bank)104a、104b、104c和104d。图1示例性的描述了四个层级。
2.可编程选择引擎110,用于在分层数据库104或分层调度数据库104上执行调度过程,以选择待发送的下一流队列包。通常,选择引擎110划分为附着到与层级数量匹配的存储器块104a、104b、104c和104d的多个流水线单元。WFQ和MDRR为选择算法的示例。
3.可编程构建引擎108,用于在分层数据库上执行构建过程。构建过程维护数据库成员的资格状态。通常,构建引擎108划分为附着到与层级数量匹配的存储器块104a、104b、104c和104d的多个流水线单元。
4.可编程计费引擎112,用于更新调度计数器的值,例如MDDR的赤字计数器和分层整形器。通常,计费引擎112划分为附着到与层级数量匹配的存储器块104a、104b、104c和104d的多个流水线单元。
5.流队列管理器接口(FQM i/f)或简称为接口114。流量调度设备100接受来自FQM接口114的流队列状态消息,例如指示流队列(i)变成非空的Enq(i)消息。流量调度设备100发送选择(i)消息到FQM接口114,指示接口114从流队列(i)发送包。
流量调度设备100的灵活性通过软件的可编程性取得。基于软件的流量调度设备100可针对各种调度算法和独特特性进行编程,因此其将来可被安全地更新以支持新特性或调度算法。流量调度设备100是流量管理单元内的可编程分层流量调度器,其功能通过软件定义,因此当实现等同于硬件调度器的性能速率时其是比较灵活的。
图2所示为根据一种实施形式的具有流量调度设备100的流量管理单元(TMU)200的框图。流量管理单元200包括图1所描述的具有分层调度数据库104的流量调度设备100、用于提供流队列系统的流队列管理器202、用于接收(RX)包206的RX接口204a、用于发送(TX)包208的TX接口204b以及具有到外部包存储器212的DMA接口214的DMA(直接内存访问)单元210。图1所描述的FQM接口114对应于到图2的流队列管理器202的接口。
因此,流量管理子单元如下:
1.流队列管理器202,其通常通过包描述符来实施流队列的分层排队系统。在层级5至7中构建的队列数量通常是1K到1百万个,但其可以是在任意层级中构建的任意其它数量的队列。
2.包DMA210,用于从/向外部包存储器212或替代性的内部(即,芯片上的)包存储器接收/传输包。
3.流量调度设备100或流量调度器,用于控制包传出流队列的传输序列。调度方法包括各种算法,例如WFQ、WRR、MDRR、严格优先级以及其他算法。分层调度数据库104存储在数据库存储器内,该数据库存储器可为内部(IC的芯片上的)或外部存储器(SRAM和DRAM)。流量调度设备100的性能,即吞吐量,以百万包每秒(MPPS)测量。
流量管理单元200之前的设备(prior stage)将流量进行分类为流并打上标签。例如,该之前的设备(prior stage)可以是网络处理器单元(NPU)。流可由如VLAN、DiffServ或者TCP/IP五元组等一些内部包字段定义。
流量管理单元200实施一种每流排队系统,也称为流队列。对于流队列数量较高(例如介于1千到1百万之间)这种情况,采用分层调度模型。该模型将流队列组织成用户,将用户组成用户组,一直汇聚到物理接口,这将在下文参考图3进行详细解释。
TMU200接收到的包206标有流队列标识(id标签)。TMU200操作包括如下步骤:
1.接收—包206按id标签存储在正确的流队列中。
2.调度—基于所有流队列间的服务供应商的QoS配置方案来调度流队列包传输。
3.发送—将包208发送出去。
图3所示为根据一种实施形式的分层调度数据库104的示意图。
数据库104从多个层级上构建,其中图3示例性地描述了六个层级:L1、L2、L3、L4、L5和L6。然而,数据库可具有任意其它数量的层级。
L1 根接口层—物理接口312中的所有可用物理端口310。示例数量为64,但可以是任意其它数量。
L2 端口层—每个物理端口310的所有可用子端口308。示例数量为128,但可以是任意其它数量。
L3 子端口层—每个子端口308的所有可用用户组306。示例数量为4K(=4000),但可以是任意其它数量。
L4 组层(GQ)—每个用户组306的所有可用用户304。示例数量为64K(=64000),但可为任意其它数量。
L5 用户层(SQ)—每个用户304的所有可用流队列302。示例数量为16,但可为任意其它数量。
L6 流队列层(FQ)—可用流队列302的总和。示例数量为1M(=1,000,000),但可为任意其它数量。
图3示出了以树形结构表示的分层调度数据库104。基本元件(basic element)是具有关联成员的节点,该节点也称为子级(Children)。图4所示为分层调度数据库104的示例性基本元件的示意图。示例性的父节点表示用户组(GQ)306。子级为父GQ组306的用户(SQ)成员304a和304b。
典型节点的数据包括:
●每个子级的状态信息
●节点状态信息
●赤字计数器指针
●整形器指针
●软件定义的信息
两种主要过程利用调度分层数据库104:运行在图1所描述的选择引擎110上的选择过程和运行在图1所描述的构建引擎108上的构建过程。选择过程是数据库104的消费者。构建过程是数据库104的生产者。WFQ和MDRR等调度算法节约工作,意味着带宽仅分配给活动队列。术语“队列”广义上指分层数据库104内的成员,例如用户304。术语“活动”广义上指有资格调度(选择)。换言之,选择过程仅选择所有层级内有资格的成员。在接口312层L1中为所有有资格的端口310,在端口310层L2中为所有有资格的子端口308,在子端口308层L3中为所有有资格的组306,在组306层L4中为所有有资格的用户304,且在用户304层L5中为所有有资格的流队列302。
选择过程沿根312到流队列302的方向遍历数据库104,在每一层应用MDRR、WFQ和严格优先级等调度算法。
与每个流量流队列102关联的资格状态表示处理特定流队列的资格。分层调度数据库104的成员的资格状态,也称为该成员的处理状态资格,表示待由调度算法处理的数据库成员的资格。数据库104的成员是接口、端口、子端口、用户组、用户和流队列。分层调度数据库104的成员的资格状态可由服务供应商根据其QoS合同进行配置。例如,一些端口(或子端口)可具有比其它端口高的优先级,这是由于这些端口用于实时流量,而其他端口(或子端口)具有低优先级是由于他们用于非实时流量,例如文件传送应用。
选择过程包括如下步骤:
1.从接口312层L1中选择一个有资格的端口310,
2.从步骤1中选择的端口310中选择一个有资格的子端口308,
3.从步骤2中选择的子端口308中选择一个有资格的用户组306,
4.从步骤3中选择的用户组306中选择一个有资格的用户304,
5.从步骤4中选择的用户304中选择一个有资格的流队列302。
构建过程沿流队列302到根312的方向遍历数据库104。构建过程持续更新分层数据库104中的成员的资格状态。
构建过程的调用是由于如下事件等:
●流队列状态消息—空,非空,
●流控制消息—端口打开/关闭,
●选择后构建—基于选择尺寸更新赤字计数器和整形器的值,
●整形器变更状态—整形器颜色变更,例如由红色变为绿色,
●赤字计数器状态变更,
●以及其他。
整形器是一种使用颜色方案来限制成员的可获取带宽的元件。例如,这种行为定义如下:
●绿色—所有其他绿色成员间的一个成员是有资格被选择的,
●黄色—当没有绿色成员存在时,所有黄色成员间的一个成员是有资格被选择的,
●红色—成员没有资格被选择。
赤字计数器关联至MDRR调度器内的每个成员,该MDRR调度器在选择周期内测量成员分配的带宽的比例。
使用如下示例来说明构建过程:
1.从FQM202接收的Enq(i)消息—流队列(i)变为非空。
2.在FQ层L6内构建更新资格。现在可将资格沿根312方向传递(如果需要)至所有其他层级L5、L4、L3、L2和L1。
3.如果尚没有资格,则在SQ304层L5内构建更新资格。
4.如果尚没有资格,则在GQ306层L4内构建更新资格。
5.如果尚没有资格,则在子端口308层L3内构建更新资格。
6.如果尚没有资格,则在端口310层L2内构建更新资格。
7.如果尚没有资格,则在根312层L1内构建更新资格。
图5所示为根据一种实施形式的流量调度设备500的框图。流量调度设备500包括例如三个(可以是任意其它数量的)存储器集群单元506a、506b和506c。每个存储器集群单元包括节点协处理器510a、510b和510c;X-ALU 508a、508b和508c;计费协处理器512a、512b和512c;以及存储器504a、504b和504c。流量调度设备500进一步包括:
互连结构(interconnect fabric)516,用于互连存储器集群单元506a、506b和506c,
一组调度处理器元件(scheduling processor element)518,待由存储器集群单元506a、506b和506c使用,
共享消息收发系统(shared messaging system)524,用于在调度处理器元件518间提供可选快速消息收发,
管理程序(hypervisor),即监督单元(supervising unit)520,用于监督将调度处理器元件518分配给存储器集群单元506a、506b和506c,
队列管理器接口514,其形成到图2所描述的流队列管理器202的接口,以及
可选管理处理器522,用于配置和维护由存储器504a、504b和504c形成的分层调度数据库。
因此,流量调度设备500的子单元为:
1.可选管理处理器(optional Management Processor)522,其可按照标准RISC实现,并用于配置和维护分层数据库。该管理处理器522从上层管理实体接收成员创建、添加、删除和修改命令。
2.SPE—调度处理器元件518,其为并行微RISC单元集群,用于执行构建和选择软件任务。
3.存储器—存储器集群单元506a、506b和506c的集合。每个MCU506a、506b和506c关联于一个分层数据库层级,即参见图3所描述的层级L1、L2、L3、L4、L5和L6中的一个。每个MCU 506a、506b和506c包含存储器库(memory repository)504a、504b和504c,存储器库可由多个物理存储器和关联紧耦合的协处理器单元508a、508b、508c、510a、510b、510c、512a、512b和512c构成。
4.互连结构516—将SPE集群518连接至MCU 506a、506b和506c。
5.管理程序520—将运算任务构建和选择程序分配给SPE集群518。
6.共享消息收发系统524—SPE518之间的可选快速消息收发(Optional FastMessaging)。
7.队列管理器接口514。
每个MCU 506a、506b和506c中引入三类协处理器。该协处理器紧耦合至MCU 506a、506b和506c内的存储器504a、504b和504c。这种关联方法确保了数据库的一致性(coherency)和原子性(atomicity)。
节点协处理器(NCOP)510a、510b和510c包含:
●数据库拓扑映射信息(Database topology mapping information),
●数据字段映射信息(database fields mapping information)—节点的内部数据字段的结构。
由SPE518执行的软件使用逻辑(虚拟)引用(logical(virtual)references)。
逻辑引用(logical(virtual)references)可以是:
●数据库拓扑类型—指向数据结构的指针,例如指向节点、赤字计数器或者整形器的指针,
●数据类型引用—指向数据结构内的字段的数据ID,例如节点状态位。
节点协处理器510a、510b和510c使用拓扑映射或者数据字段映射将逻辑参考翻译成实际存储器物理参考(以及反过来将物理参考翻译成逻辑参考)。实施方式可以是可编程或者硬件可配置引擎。
计费协处理器(ACOP)512a、512b和512c计算一般计数器以及MDRR赤字和整形器等调度器计数器的值。实施方式可以是可编程或者硬件可配置引擎。
扩展ALU(XALU)508a、508b和508c是可编程VLIW收缩阵列。XALU508a、508b和508c在数据库存储器504a、504b和504c上执行紧耦合的操作。XALU508a、508b和508c接收任务和/或发送结果从或者至SPE518;其他XALU508a、508b和508c(或通过回路调用发送至其自己);NCOP 510a、510b和510c;以及ACOP 512a、512b和512c。
根据另一种实施形式,提供了流量调度设备500的架构,其中不包括管理处理器522,换言之,使用外部处理器执行内部管理处理器522任务。具有或不具有管理处理器522的流量调度设备500可在单个芯片上实施。
图6所示为根据一种实施形式的XALU600的框图。XALU600实施为由例如四个VLIM处理器P0 602a、P1 602b、P2 602c、P3 602d组成的线性收缩阵列。然而,可使用任意其它非四的数量。收缩阵列是一种公知的计算机架构结构。其由N个处理器P0 602a、P1 602b、P2602c、P3 602d和P4 602d的线性流水线组成。每个处理器在一个周期内(VLIW)执行m条指令,结果,每个周期内,大小为N*m的新程序完成执行。
收缩阵列被视为高性能引擎,但由于通过架构结构的单向流,其灵活性与标准的RISC相比有所下降。
XALU600的ISA(指令集架构)针对分层调度进行了优化。
图7所示为由多个处理器702并行更新的数据库存储器704的示意图。
使用可编程引擎实现高性能的一个典型方法是通过并行化。例如,软件任务划分为在N个并行可编程引擎702上独立执行的N个并行任务。在并行化的情况下,Amdahl定律规定如果P是一个程序可被并行化的比例(即,并行化的受益)且(1-P)是不可并行化的比例(剩余的串行),则使用N个处理器可实现的最大加速比为:
1/((1-P)+P/N)。
当完全并行独立可能实现时,P等于1。则使用N个处理器的软件任务的最大加速比为N。
在如图7所示的一致性性能影响导致的调度数据库操纵情况下,并行化加速方法失败。一致性问题发生是由于处理器P(i)更新单个数据库704内的数据记录时另一处理器P(j)更新相同的数据记录导致的多个主干更新。使用信标706来避免这种一致性竞争机制,但是,这导致了串行行为。
如下示例阐述了这种并行行为:
●处理器P(i)抓取信标(semaphore)706
●处理器P(j)等待信标706
●处理器P(i)更新数据库704
●处理器P(i)释放信标706
●处理器P(j)抓取信标706
●处理器P(j)更新数据库704
●处理器P(i)释放信标706
结果,处理器P(j)仅在处理器P(i)完成更新后才更新数据库704,因此,并行化丢失。
图8所示为根据一种实施形式的用于通过收缩阵列处理器P0、P1、P2和P3来更新数据库存储器804的收缩阵列实施方式800的示意图。命令810在P0 802a阶段(stage)输入到收缩阵列,结果814在P3 802d阶段从收缩阵列输出并从P3 802d阶段转发至P1 802b阶段。
数据库存储器804的更新由单个收缩阵列结构处理。由于该收缩阵列结构的缘故,性能速率(performance rate)很高,程序以最大可能速率完成每一周期。由于单个主干更新的缘故,多个主干更新的一致性(coherency)问题得以消除。
在图5所示的收缩阵列中,使用一种公知的数据转发的设计方法解决了数据依赖问题。如果程序(i)修改数据库记录,则会产生数据依赖,而随后的程序(i+1)需要该最多更新的数据库记录。
在图8所示的实施形式中,处理了例如如下四个阶段802a、802b、802c和802d(但阶段数量可为任意其他数值):
●P0 802a阶段从数据库存储器读取三个变量x、y和z,
●P1 802b阶段基于x、y和z计算新变量w,
●P2 802c阶段基于w计算x,
●P3 802d阶段将x写入数据库存储器804。
P0 802a阶段从数据库804读取X值,但P3 802d阶段包含X的更多更新的值。解决这种类型的数据依赖的方案是使用公知的数据转发设计方法。X的最多更新的数据库值被从P3 802d阶段转发至P1 802b阶段,从而无效化P0读取的值。收缩阵列的高性能得以维持。
图9所示为使用不可编程硬件单元906a、906b、906c和906d的传递通道(pipeline)来选择分层调度数据库存储器904a、904b、904c和904d的选择过程900的示意图。
选择过程900使用:
●目标调度速率75MPPS;以及
●四层分层调度器。
75MPPS为一数值示例,可采用高于或低于该值的速率。四层也是一个数值示例,可采用高于或低于该值的层数。
数据库存储在根据层级数量划分的存储器904a、904b、904c和904d中,换言之,4个层级意味着四个存储器组904a、904b、904c和904d。每个存储器组支持75MPPS的访问速度(access rate),该速率对应于执行选择过程900所需的所有访问的累计总数。每个存储器组904a、904b、904c和904d附着有匹配的硬件流水线引擎(pipeline engine)906a、906b、906c和906d。
选择流程如下:
1.选择流程通过调用流水线引擎1(906a)的75MPPS的自时钟发生器(self-clockgennerator)发起。
2.流水线引擎1(906a)通过访问存储器1(904a)来执行选择。流水线引擎1(906a)使用该选择结果来调用流水线引擎2(906b)。
3.流水线引擎2(906b)通过访问存储器2(904b)来执行选择。流水线引擎2(906b)使用该选择结果来调用流水线引擎3(906c)。
4.流水线引擎3(906c)通过访问存储器3(904c)来执行选择。流水线引擎3(906c)使用该选择结果来调用流水线引擎4(906d)。
5.流水线引擎4(906d)通过访问存储器4(904d)来执行选择。该选择的最终结果902发送至队列管理器。
通过在存储器上创建流水线行为(pipeline behavior)来实现高性能速率。以75MPPS的速率处理每个存储器组904a、904b、904c和904d。因此,总体调度速率为75MPPS。
图10所示为根据一种实施形式的通过使用直接互连的存储器集群单元506a、506b、506c和506d的可编程流水线来选择分层调度数据库存储器504a、504b、504c和504d的选择过程1000的示意图。存储器集群单元506a、506b、506c和506d对应于图5描述的存储器集群单元。
选择过程1000使用可编程引擎的存储器负载,该可编程引擎在性能上等同于图9所描述的不可编程硬件单元906a、906b、906c和906d。选择过程1000和图9描述的选择过程900使用相同的数值,即:
●目标调度速率75MPPS;以及
●四层分层调度器。
75MPPS为一数值示例,可采用高于或低于该数值的速率。四层也是一个数值示例,可采用高于或低于该数值的层数。
存储器结构等同于上文图9描述的存储器结构。数据库104存储在根据层级数量划分的存储器504a、504b、504c和504d中,换言之,4个层级意味着4个存储器组(memory bank)504a、504b、504c和504d。然而,存储器结构并不限于四个存储器组,可使用与层级数量对应的任意其它数量的存储器组。
每个存储器组504a、504b、504c和504d支持75MPPS的访问速度,该速率对应于执行选择过程1000所需的所有访问的累计总数。每个存储器组504a、504b、504c和504d附着有匹配的可编程引擎508a、508b、508c和508d。匹配的可编程引擎508a、508b、508c和508d实现为XALU协处理器,它们中的每一个实现一个1维收缩阵列,该1维收缩阵列以75MPPS的访问速度加载各存储器组504a、504b、504c和504d,由于是单个存储器用户的缘故,同时保持一致性和原子性。
选择过程1000如下:
1.选择流程通过调用XALU1(508a)的75MPPS自时钟发生器发起。
2.XALU1(508a)通过访问存储器1(504a)来执行选择。XALU1(508a)使用该选择结果来调用XALU2(508b)。
3.XALU2(508b)通过访问存储器2(504b)来执行选择。XALU2(508b)使用该选择结果来调用XALU3(508c)。
4.XALU3(508c)通过访问存储器3(504c)来执行选择。XALU3(508c)使用该选择结果来调用XALU4(508d)。
5.XALU4(508d)通过访问存储器4(504d)来执行选择。该选择的最终结果1002发送至队列管理器,该队列管理器为图2所示的流队列管理器202。
该存储器行为(memory behaviour)与选择过程900的存储器行为相同,选择过程900应用在图9描述的不可编程硬件单元906a、906b、906c和906d的流水线上。通过在存储器504a、504b、504c和504d上创建流水线行为来实现选择过程1000的高性能速率。以75MPPS的访问速度处理每个存储器组504a、504b、504c和504d。因此,总体调度速率为75MPPS。
图11所示为使用不可编程硬件单元906a、906b、906c和906d的流水线来构建分层调度数据库存储器904a、904b、904c和904d的构建过程1100的示意图。
构建过程1100使用:
●目标构建速率120MPPS;以及
●四层分层调度器。
120MPPS为一数值示例,可采用高于或低于该数值的速率。四层也是一个数值示例,可采用高于或低于该数值的层数。
该数据库存储在根据层级数量划分的存储器904a、904b、904c和904d中,换言之,4个层级意味着四个存储器组904a、904b、904c和904d。每个存储器组904a、904b、904c和904d支持120MPPS的访问速度,该速率对应于执行构建过程1100所需的所有访问的累计总数。每个存储器组904a、904b、904c和904d附着有匹配的硬件流水线引擎。
构建过程1100由指示流队列(i)变为非空的流队列状态消息Enq(i)1102调用。构建过程1100如下:
1.构建流程通过从队列管理器到达的Enq(i)消息1102发起。最大消息速率为120MMPS。Enq消息1102调用流水线引擎4(906d)。
2.流水线引擎4(906d)通过访问存储器4(904d)来执行构建。流水线引擎4(906d)使用该构建结果来调用流水线引擎3(906c)。
3.流水线引擎3(906c)通过访问存储器3(904c)来执行构建。流水线引擎3(906c)使用该构建结果来调用流水线引擎2(906b)。
4.流水线引擎2(906b)通过访问存储器2(904b)来执行构建。流水线引擎2(906b)使用该构建结果来调用流水线引擎1(906a)。
5.流水线引擎1(906a)通过访问存储器1(904a)来完成构建。
通过在存储器904a、904b、904c和904d上创建流水线行为来实现高性能速率。以120MPPS的速率处理每个存储器组904a、904b、904c和904d。因此,总体构建速率为120MPPS。
图12所示为根据一种实施形式的通过使用通过SPE 518a、518b和518c的共享集合互连的存储器集群单元506a、506b、506c和506d的可编程流水线来构建图3描述的分层调度数据库存储器104的构建过程1200的示意图。存储器集群单元506a、506b、506c和506d对应于图5描述的存储器集群单元。
构建过程1200使用可编程引擎的存储器负载,该可编程引擎在性能上等同于图11所描述的不可编程硬件单元906a、906b、906c和906d。构建过程1200和图11描述的构建过程1100使用相同的数值,即:
●目标构建速率120MPPS;以及
●四层分层调度器。
120MPPS为一数值示例,可采用高于或低于该数值的速率。四层也是一个数值示例,可采用高于或低于该数值的层数。
该存储器结构等同于上文图11描述的存储器结构。数据库104存储在根据层级数量划分的存储器504a、504b、504c和504d中,换言之,4个层级意味着4个存储器组504a、504b、504c和504d。然而,该存储器结构并不限于四个存储器组,可使用与层级数量对应的任意其它数量的存储器组。
每个存储器组504a、504b、504c和504d支持120MPPS的访问速度,该速率对应于执行构建过程1200所需的所有访问的累计总数。每个存储器组504a、504b、504c和504d附着有匹配的可编程引擎508a、508b、508c和508d。匹配的可编程引擎508a、508b、508c和508d实现为XALU协处理器,它们中的每一个实现一个1维收缩阵列,该1维收缩阵列以75MPPS的访问速度加载各存储器组504a、504b、504c和504d,由于是单个存储器用户的缘故,同时保持一致性和原子性。
使用两个主要的构建过程1200:基础构建过程1200a和高级构建过程1200b。
基础构建过程1200a仅使用XALU引擎508a、508b、508c和508d并在图12中通过XALU引擎508a、508b、508c和508d之间命名为“可选”的箭头线(direct arrow)示出。基础构建过程1200a如下:
1.构建流程通过从与图2描述的流队列管理器202对应的队列管理器到达的Enq(i)消息1202发起。最大消息速率为120MMPS。该Enq消息1202调用XALU4(508d)。
2.XALU4(508d)通过访问存储器4(504d)来执行构建。XALU4(508d)使用该构建结果来调用XALU3(508c)。
3.XALU3(508c)通过访问存储器3(504c)来执行构建。XALU3(508c)使用该构建结果来调用XALU2(508b)。
4.XALU2(508b)通过访问存储器2(504b)来执行构建。XALU2(508b)使用该构建结果来调用XALU1(508a)。
5.XALU1(508a)通过访问存储器1(504a)来完成构建。
在完全灵活构建过程1200b(也称为高级构建过程1200b)中,通过将构建过程1200b流经并行SPE集群518a、518b和518c可实现附加水平的可编程性能力。在一种实施形式中,这些SPE集群518a、518b和518c实施为标准的RISC引擎。创建了可编程的超级流水线,其中XALU(i)508a、508b、508c和508d的每个结果调用SPE 518a、518b和518c做进一步处理。在一种实施形式中,该进一步处理是分层流量调度设备500中的优先级重映射。
构建过程1200b的算法结构使得任务的并行分布独立于SPE 518a、518b和518c。SPE 518a、518b和518c的数量足以支持所需的120MPPS速率。SPE 518a、518b和518c的结果传递给下一XALU 508a、508b、508c和508d。
在高级构建过程1200b中使用了XALU 508a、508b、508c和508d以及SPE引擎518a、518b和518c。高级构建过程1200b如下:
1.构建流程通过从与图2描述的流队列管理器202对应的队列管理器到达的Enq(i)消息1202发起。最大消息速率为120MMPS。该Enq消息1202调用XALU4(508d)。
2.XALU4(508d)通过访问存储器4(504d)来执行构建。XALU4(508d)使用该构建结果来调用自由SPE(518c)。
3.SPE(518c)处理构建。SPE(518c)结果调用XALU3(508c)。
4.XALU3(508c)通过访问存储器3(504c)来执行构建。XALU3(508c)使用该构建结果来调用自由SPE(518b)。
5.SPE(518b)处理构建。SPE(518b)结果调用XALU2(508b)。
6.XALU2(508b)通过访问存储器2(504b)来执行构建。XALU2(508b)使用该构建结果来调用空闲的SPE(518a)。
7.SPE(518a)处理构建。SPE(518a)结果调用XALU1(508a)。
8.XALU1(508a)通过访问存储器1(504a)来完成构建。
在一种实施形式中,基础构建过程1200a到高级构建过程1200b的其它置换(permutation)由软件创建。在一种实施形式中,一些层级仅由XALU处理,对应于基础构建过程,而其它层级则由XALU和SPE处理,对应于高级或者也称为组合构建过程1200b。
该存储器行为与构建过程1100的存储器行为相同,构建过程1100应用在图11描述的不可编程硬件单元906a、906b、906c和906d的流水线上。通过在存储器504a、504b、504c和504d上创建流水线行为来实现构建过程1200的高性能速率。以120MPPS的访问速度处理每个存储器组504a、504b、504c和504d。因此,总体构建速率为120MPPS。
流量调度设备500的软件架构以调度任务的并发(并行)执行为基础。该软件架构为事件驱动系统。输入事件是独立的。
输入事件的示例性列表包括:
●构建类型事件
○流队列管理器状态消息,每个消息(事件)被独立处理;
○选择后更新;
○用于赤字计数器和整形器的内部状态变量阈交(Internal State variablethreshold cross),每个事件被独立处理;
●选择类型事件
○自时钟根触发器(Self Clock root trigger),每个事件被独立处理。
并发执行以两种维度实现:
●事件被独立处理
●通常,一个事件需要处理数据库的多个层级(节点)。并发的第二维度为每个数据库层的并发处理。
结果是在独立处理器/协处理器上处理的大量独立任务的深度并发(平行)。
图13所示为根据一种实施形式的存储器集群单元1306的方框图,具体为MCU类型A。
展示了三个协处理器引擎1310、1308和1312。通过划分三个功能组(functionalbank)1304a、1304b和1304c来实现分层存储器1304,三个功能组1304a、1304b和1304c中的每个紧耦合到其关联的协处理器1310、1308和1312。节点存储器1304a紧耦合至节点协处理器1310,XALU存储器1304b紧耦合至X-ALU协处理器1308,计费存储器1304c紧耦合至计费协处理器1312。
图14所示为根据一种实施形式的存储器集群单元1406的方框图,具体为MCU类型B。
展示了三个协处理器引擎1410、1408和1412。通过划分三个功能组1404a、1404b和1404c来实现分层存储器1404,三个功能组1404a、1404b和1404c中的每个紧耦合至与其关联的协处理器1410、1408和1412。节点存储器1404a紧耦合至节点协处理器1410,XALU存储器1404b紧耦合至X-ALU协处理器1408,计费存储器1404c紧耦合至计费协处理器1412。
每个MCU1406使用分布式SPE集合1318和分布式监督器(称为管理程序1320),而不使用图5描述的全局SPE集群518。
图15所示为根据一种实施形式的流量调度设备1500的方框图。修改的完整芯片架构基于图5描述的架构,但使用了不同的存储器集群单元506a、506b和506c,即图14描述的MCU类型B(1406)。
流量调度设备1500包括例如两个(可以是任意其它数量)存储器集群单元1506a和1506b,每个存储器集群单元包括节点协处理器1510a和1510b、X-ALU 1508a和1508b、计费协处理器1512a和1512b、存储器1504a和1504b、分布式SPE集合1518a和1518b以及分布式监督器(管理程序)1520a和1520b。流量调度设备1500进一步包括:
互连结构(interconnect fabric)1516,用于互连存储器集群单元1506a和1506b;
队列管理器接口1514,形成到图2所述的流队列管理器202的接口;以及
可选管理处理器1522,用于配置和维护由存储器1504a和1504b形成的分层调度数据库。
因此,流量调度设备1500的子单元为:
1.可选管理处理器1522,其构建和维护分层数据库并从上层主机实体接收成员创建/添加/删除/修改命令(setup/add/teardown/modify)。
2.MCU,存储器集群单元1506a和1506b。每个MCU 1506a和1506b与分层数据库层级关联。存储器库(memory repository)1504a和1504b可以是多个物理存储器一起紧耦合到存储器协处理器单元1508a、1510a、1512a、1508b、1510b和1512b、分布式SPE集群1518a和1518b以及分布式管理程序1520a和1520b。
3.互连结构1516,连接MCU1506a和1506b。
4.队列管理器接口1514。
在另一种实施形式中,管理处理器1522替换为外部处理器来执行内部管理处理器任务。这点适用于在上述图5、上述图15和下述图16中出现的所有的三种架构。具有或不具有管理处理器1522的流量调度设备1500可在单个芯片上实施。
图16所示为根据一种实施形式的流量调度设备1600的方框图。修改的完整芯片架构基于图5描述的架构,其中存储器集群单元506a、506b和506c由图13描述的MCU类型A,1306实现,且不需要共享消息收发系统524、SPE集合518以及监督器(管理程序)520。
流量调度设备1600包括例如三个(可以是任意其它数量的)存储器集群单元1606a、1606b和1606c。每个存储器集群单元包括节点协处理器1610a、1610b和1610c,X-ALU1608a、1608b和1608c,计费协处理器1612a、1612b和1612c,以及存储器1604a、1604b和1604c。流量调度设备1600进一步包括:
互连结构1616,用于互连存储器集群单元1606a、1606b和1606c;
队列管理器接口1614,形成到图2所述的流队列管理器202的接口;以及
可选管理处理器1622,用于配置和维护由存储器1604a、1604b和1604b形成的分层调度数据库。
因此,流量调度设备1600的子单元为:
1.可选管理处理器1622,其构建和维护分层数据库并从上层主机实体接收成员创建/添加/删除/修改(setup/add/teardown/modify)命令。
2.MCU,存储器集群单元1606a、1606b和1606c。每个MCU 1606a、1606b和1606c与分层数据库层级关联。存储器库(memory repository)1604a、1604b和1604c可以是多个物理存储器一起关联的紧耦合至存储器协处理器单元1608a、1610a、1612a、1608b、1610b、1612b、1608c、1610c和1612c。
3.互连结构1616,连接MCU1606a和1606b。
4.队列管理器接口1614。
在另一种实施形式中,管理处理器1622替换为外部处理器来执行内部管理处理器任务。这点适用于在上述图5、上述图15和此处描述的图16中出现的所有的三种架构。具有或不具有管理处理器1622的流量调度设备1600可在单个芯片上实施。
通过上述内容,所属领域的技术人员将清楚地了解本发明提供了各种设备、方法、系统以及记录媒质上的计算机程序等等。
本发明还支持包含计算机可执行代码或计算机可执行指令的计算机程序产品,这些计算机可执行代码或计算机可执行指令在执行时使得至少一台计算机执行本文所述的执行及计算步骤。
本发明还支持用于执行本文所述的执行及计算步骤的系统。
通过以上启示,对于本领域技术人员来说,许多替代产品、修改及变体是显而易见的。当然,所属领域的技术人员容易意识到除本文所述的应用之外,还存在本发明的众多其他应用。虽然已参考一个或多个特定实施例描述了本发明,但所属领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求及其等同的范围内,可以用不同于本文具体描述的方式来实践本发明。

Claims (15)

1.流量调度设备(100),其特征在于,用于调度存储在多个流量流队列(102)中的数据包的传输顺序,每个用于调度的流量流队列(102)的资格状态在描述所述多个流量流队列(102)之间关系的分层调度数据库(104)中维护,所述流量调度设备(100)包括:
多个互连的存储器集群单元(106a、106b、106c和106d),每个所述存储器集群单元与所述分层调度数据库(104)的一个或多个层(L1、L2、L3、L4、L5和L6)关联且耦合至至少一个协处理器(108、110和112),所述至少一个协处理器(108、110和112)中至少一个被针对调度算法进行软件编程以实施所述调度算法;以及
到所述多个流量流队列(102)的接口(114),所述接口(114)用于识别与根据所述调度算法选取的用于传输的特定流量流队列(102)关联的一个或多个包,且所述接口(114)用于发送所述多个流量流队列(102)中的每个流量流队列(102)的资格状态。
2.根据权利要求1所述的流量调度设备(100),其特征在于,进一步包括:
管理处理器(522),用于基于上层实体的配置命令来构建和维护所述分层调度数据库(104)。
3.根据权利要求1或2所述的流量调度设备(100),其特征在于,所述协处理器(108、110和112)用于实施事件驱动软件架构。
4.根据权利要求1-4中任一所述的流量调度设备(100),其特征在于,所述分层调度数据库(104)是从表示最高层级的每个物理接口的物理端口(310)的根接口(312)到表示最低层级的所述多个流量流队列(302)的树形结构,所述分层调度数据库(104)包括分层中的至少一个如下中间层级:
每个物理端口(310)的子端口(308)层,
每个子端口(308)的用户组(306)层,
每个用户组(306)的用户(304)层,以及
每个用户(304)的流量流队列(302)层。
5.根据权利要求4所述的流量调度设备(100),其特征在于,所述调度算法包括选择过程,所述选择过程从所述根接口(312)向所述多个流队列(302)对所述分层调度数据库(104)进行遍历,并在所述分层调度数据库(104)的每个层基于成员的调度资格状态选取所述分层调度数据库(104)的成员(312、310、308、306、304和302)。
6.根据权利要求5所述的流量调度设备(100),其特征在于,所述调度算法包括如下项之一:
加权公平队列调度WFQ算法,
加权轮询队列调度WRR算法,
修改赤字轮询队列调度MDR)算法,
严格优先级算法,以及
先到先得算法。
7.根据权利要求5或6所述的流量调度设备(100),其特征在于,所述调度算法包括构建过程,所述构建过程遍历所述分层调度数据库(104),具体是从所述多个流量流队列(302)到所述根接口(312)进行遍历,并在所述分层调度数据库(104)的每个层更新所述分层调度数据库(104)的所述成员(312、310、308、306、304和302)的调度资格状态。
8.根据权利要求1-7中任一所述的流量调度设备(100),其特征在于,所述多个存储器集群单元(506a、506b和506c)或者一组存储器集群单元(506a、506b和506c)中的每一个耦合至关联的节点协处理器(510a、510b和510c),所述节点协处理器用于处理所述分层调度数据库(104)的拓扑映射信息以及处理所述分层调度数据库(104)的节点(312、310、308、306、304和302)的数据字段映射信息。
9.根据权利要求1-8中任一所述的流量调度设备(100),其特征在于,所述多个存储器集群单元(506a、506b和506c)或一组存储器集群单元(506a、506b和506c)中的每一个耦合至关联的计费协处理器(512a、512b和512c),所述计费协处理器用于处理整形器、策略器和计数器,所述整形器、策略器和计数器与所述调度算法相关。
10.根据权利要求1-9中任一所述的流量调度设备(100),其特征在于,所述多个存储器集群单元(506a、506b和506c)或一组存储器集群单元(506a、506b和506c)中的每一个耦合至关联的增强算法逻辑协处理器单元(508a、508b和508c),所述增强算法逻辑协处理器单元用于执行所述分层调度数据库(104)上的计算操作。
11.根据权利要求10所述的流量调度设备(100),其特征在于,每个所述增强算法逻辑协处理器单元(508a、508b和508c)包括VLIW处理器(602a、602b、602c和602d)的线性收缩阵列(600)。
12.根据权利要求10或11所述的流量调度设备(100),其特征在于,所述增强算法逻辑协处理器单元(508a、508b和508c)动态或静态地直接与彼此互连。
13.根据权利要求10或11所述的流量调度设备(100),其特征在于,所述增强算法逻辑协处理器单元(508a、508b和508c)通过调度处理器元件(518)的共享全局集合来动态或静态地与彼此互连,所述调度处理器元件(518)包括RISC/CISC处理器。
14.根据权利要求10或权利要求11所述的流量调度设备(100),其特征在于,所述增强算法逻辑协处理器单元(508a、508b和508c)通过分配给所述多个存储器集群单元(506a、506b和506c)中的一个或多个存储器集群单元的调度处理器元件(518)的分布式集合来动态或静态地与彼此互连,所述调度处理器元件(518)包括RISC/CISC处理器。
15.根据权利要求13或14所述的流量调度设备,其特征在于,所述调度处理器元件(518)的每一个所述集合由监督单元(520)监督。
CN201280051497.9A 2012-02-02 2012-02-02 流量调度设备 Active CN103931148B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2012/051784 WO2013113396A1 (en) 2012-02-02 2012-02-02 Traffic scheduling device

Publications (2)

Publication Number Publication Date
CN103931148A CN103931148A (zh) 2014-07-16
CN103931148B true CN103931148B (zh) 2017-06-09

Family

ID=48902793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280051497.9A Active CN103931148B (zh) 2012-02-02 2012-02-02 流量调度设备

Country Status (4)

Country Link
US (2) US9356881B2 (zh)
EP (1) EP2695325B1 (zh)
CN (1) CN103931148B (zh)
WO (1) WO2013113396A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5716544B2 (ja) * 2011-05-25 2015-05-13 富士通株式会社 帯域保証装置および帯域保証方法
US10229139B2 (en) 2011-08-02 2019-03-12 Cavium, Llc Incremental update heuristics
US10083200B2 (en) 2013-03-14 2018-09-25 Cavium, Inc. Batch incremental update
US9595003B1 (en) 2013-03-15 2017-03-14 Cavium, Inc. Compiler with mask nodes
US9195939B1 (en) 2013-03-15 2015-11-24 Cavium, Inc. Scope in decision trees
US10229144B2 (en) * 2013-03-15 2019-03-12 Cavium, Llc NSP manager
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
JP5614482B1 (ja) * 2013-09-02 2014-10-29 沖電気工業株式会社 局側終端装置及び経路切替方法
US10044612B2 (en) * 2013-11-06 2018-08-07 Citrix Systems, Inc. Systems and methods for port allocation
US9843518B2 (en) 2014-03-14 2017-12-12 International Business Machines Corporation Remotely controlled message queue
US9542243B2 (en) 2014-03-14 2017-01-10 International Business Machines Corporation Coalescing stages in a multiple stage completion sequence
US10680957B2 (en) 2014-05-28 2020-06-09 Cavium International Method and apparatus for analytics in a network switch
US9871733B2 (en) * 2014-11-13 2018-01-16 Cavium, Inc. Policer architecture
JP6582731B2 (ja) * 2015-08-21 2019-10-02 沖電気工業株式会社 局側終端装置、加入者側終端装置、光通信システム、経路切替方法、経路切替プログラム、及び波長切替方法
CN105357068B (zh) * 2015-11-03 2018-06-12 华中科技大学 一种面向应用QoS保障的OpenFlow网络流量控制方法
CN107196873B (zh) * 2016-03-15 2020-07-31 阿里巴巴集团控股有限公司 一种分布式集群的业务请求发送方法及装置
CN107306232B (zh) * 2016-04-22 2021-02-26 华为技术有限公司 网络设备、控制器、队列管理方法及流量管理芯片
JP6768625B2 (ja) * 2017-11-17 2020-10-14 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
EP3570226A1 (en) * 2018-05-16 2019-11-20 Ernst & Young GmbH Wirtschaftsprüfungsgesellschaft Method and system of obtaining audit evidence
CN112804162B (zh) * 2019-11-13 2024-04-09 深圳市中兴微电子技术有限公司 一种调度方法、装置、终端设备和存储介质
EP3836496B1 (en) * 2019-12-12 2022-10-26 Deutsche Telekom AG Method for an improved traffic shaping and/or management of ip traffic in a packet processing system, telecommunications network, system, program and computer program product
US11743134B2 (en) * 2020-10-07 2023-08-29 Xilinx, Inc. Programmable traffic management engine

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7321940B1 (en) * 2003-06-30 2008-01-22 Cisco Technology, Inc. Iterative architecture for hierarchical scheduling
CN101667974A (zh) * 2009-10-12 2010-03-10 中兴通讯股份有限公司 一种实现分层服务质量的方法及网络处理器
CN101952801A (zh) * 2008-01-16 2011-01-19 诺基亚公司 用于流数据处理的协处理器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974407A (en) * 1997-09-29 1999-10-26 Sacks; Jerome E. Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus
US6094686A (en) * 1997-10-24 2000-07-25 Compaq Computer Corporation Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
US6738346B1 (en) * 1999-03-16 2004-05-18 Northrop Grumman Corporation Hierarchical downlink scheduler for a processed satellite payload
CA2267021A1 (en) * 1999-03-26 2000-09-26 Newbridge Networks Corporation Timestamping arbitration in digital communication devices
US7023843B2 (en) * 2002-06-26 2006-04-04 Nokia Corporation Programmable scheduling for IP routers
US7283532B2 (en) * 2002-10-25 2007-10-16 Alcatel Lucent Hierarchical scheduler architecture for use with an access node
US7277448B1 (en) * 2003-06-27 2007-10-02 Cisco Technology, Inc. Hierarchical scheduler inter-layer eligibility deferral
US7457241B2 (en) * 2004-02-05 2008-11-25 International Business Machines Corporation Structure for scheduler pipeline design for hierarchical link sharing
US7860838B2 (en) * 2004-06-04 2010-12-28 Hewlett-Packard Development Company, L.P. Dynamic hierarchical data structure tree building and state propagation using common information model
US7680053B1 (en) * 2004-10-29 2010-03-16 Marvell International Ltd. Inter-device flow control
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US8194690B1 (en) * 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
US7986706B2 (en) * 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
US8693489B2 (en) * 2011-04-28 2014-04-08 Alcatel Lucent Hierarchical profiled scheduling and shaping
US9996559B2 (en) * 2014-10-14 2018-06-12 Sap Se Maintenance actions and user-specific settings of the attribute value derivation instruction set user interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7321940B1 (en) * 2003-06-30 2008-01-22 Cisco Technology, Inc. Iterative architecture for hierarchical scheduling
CN101952801A (zh) * 2008-01-16 2011-01-19 诺基亚公司 用于流数据处理的协处理器
CN101667974A (zh) * 2009-10-12 2010-03-10 中兴通讯股份有限公司 一种实现分层服务质量的方法及网络处理器

Also Published As

Publication number Publication date
US9356881B2 (en) 2016-05-31
US20160241481A1 (en) 2016-08-18
US9584430B2 (en) 2017-02-28
WO2013113396A1 (en) 2013-08-08
EP2695325A1 (en) 2014-02-12
US20130201831A1 (en) 2013-08-08
CN103931148A (zh) 2014-07-16
EP2695325B1 (en) 2017-12-20

Similar Documents

Publication Publication Date Title
CN103931148B (zh) 流量调度设备
CN107710237A (zh) 服务器上深度神经网络划分
CN104734954B (zh) 一种用于软件定义网络的路由确定方法和装置
CN107636637A (zh) 用于使用软处理器执行软件线程的系统和方法
CN107533538A (zh) 在使用加速部件的系统中处理租户要求
CN109582448A (zh) 一种面向关键度和时效性的边缘计算任务调度方法
CN109840154A (zh) 一种移动云环境下基于任务依赖的计算迁移方法
CN105634974B (zh) 软件定义网络中的路由确定方法和装置
Pirozmand et al. An improved particle swarm optimization algorithm for task scheduling in cloud computing
Li et al. Research on QoS service composition based on coevolutionary genetic algorithm
CN108259387A (zh) 一种通过交换机构建的交换系统及其路由算法
Wang et al. Solving coupling security problem for sustainable sensor-cloud systems based on fog computing
Yang et al. Flexible resource scheduling for software-defined cloud manufacturing with edge computing
Navaridas et al. Reducing complexity in tree-like computer interconnection networks
Yang et al. Trust-based scheduling strategy for cloud workflow applications
Sepúlveda et al. A multi-objective adaptive immune algorithm for multi-application NoC mapping
Goodarzi et al. Using axiomatic design for developing a framework of manufacturing cloud service composition in the equilibrium state
CN106933882A (zh) 一种大数据增量计算方法和装置
Fiuk et al. A queueing model and performance analysis of UPnP/HTTP client server interactions in networked control systems
Bekhit et al. Multi-objective VNF Placement Optimization with NSGA-III
Katta et al. Latency improvement by using fill VC allocation for network on chip
Halbwidl et al. Deep reinforcement learning as an optimization method for the configuration of adaptable, cell-oriented assembly systems
CN102594670A (zh) 多端口多流的调度方法、装置及设备
CN107483361A (zh) 一种调度模型构建方法和装置
Wang et al. Multi objective resource optimization of wireless network based on cross domain virtual network embedding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant