CN117321978A - 使用针对每个输出队列独立确定的虚拟输出队列排序来实现的分组交换设备的准输出队列行为 - Google Patents

使用针对每个输出队列独立确定的虚拟输出队列排序来实现的分组交换设备的准输出队列行为 Download PDF

Info

Publication number
CN117321978A
CN117321978A CN202280036102.1A CN202280036102A CN117321978A CN 117321978 A CN117321978 A CN 117321978A CN 202280036102 A CN202280036102 A CN 202280036102A CN 117321978 A CN117321978 A CN 117321978A
Authority
CN
China
Prior art keywords
voq
packet
output queue
queue
output
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.)
Pending
Application number
CN202280036102.1A
Other languages
English (en)
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN117321978A publication Critical patent/CN117321978A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric

Abstract

在一个实施例中,使用针对每个特定输出队列(OQ)独立确定的虚拟输出队列(VOQ)排序实现了分组交换设备的准输出队列行为,包括使用特定OQ的VOQ的所维持的时延信息。在一个实施例中,来自具有相同端口优先级目的地的所有VOQ的所有分组在特定时间窗口内经历类似的时延,这类似于由输出队列交换架构提供的分组服务。在一个实施例中,向相同输出端口优先级发送流量的所有输入端口接收带宽,该带宽与其带宽需求除以总带宽成比例。仿真OQ交换机架构的性能的现有方法需要复杂并且耗时的调度确定,并且不会伸缩。独立地确定从与每个特定OQ相关联的VOQ发送分组的顺序向可伸缩和可实现的系统提供了准输出队列行为。

Description

使用针对每个输出队列独立确定的虚拟输出队列排序来实现 的分组交换设备的准输出队列行为
技术领域
本公开总体涉及在分组交换设备内使用入口平台处的虚拟输出队列来传送分组,其中虚拟输出调度器独立地针对出口平台处的一个或多个输出队列中的每个输出队列独立地确定虚拟输出队列的请求顺序。
背景技术
已经使用不同的架构实现了分组交换设备。输出队列(OQ)交换架构提供了可预测和被充分理解的分组调度顺序。实质上,每个分组在从输入端口到达时被提交到其目的地输出队列,并且基于其优先级从输出队列向输出端口调度。然而,OQ架构是不可伸缩的,因为它要求每个输出队列能够以可能非常高的速率从其所有源输入端口吸收分组。在解决可伸缩性问题时,引入了虚拟输出队列(VOQ)分组交换架构。VOQ架构将分组提交到位于交换矩阵的入口侧的VOQ中,并且将分组传输到位于出口侧(即,靠近输出端口)的输出队列。然而,用于确定VOQ和OQ之间的分组传输的各种调度算法提供了不同的结果,并且仿真OQ交换机架构的性能的调度算法需要复杂并且耗时的调度计算和操作,并且尤其不会随着分组传输和接收速率增加而伸缩。
附图说明
所附权利要求具体阐述了一个或多个实施例的特征。通过下面结合附图的详细描述,可以理解(一个或多个)实施例及其优点,在附图中:
图1A示出了根据一个实施例的分组交换设备;
图1B示出了根据一个实施例的分组交换设备;
图1C示出了根据一个实施例的分组交换设备;
图2A示出了根据一个实施例的分组交换设备;
图2B示出了根据一个实施例的装置;
图3A示出了根据一个实施例的过程;
图3B示出了根据一个实施例的过程;
图3C示出了根据一个实施例的过程;
图3D示出了根据一个实施例的过程;
图3E示出了根据一个实施例的过程;
图4A示出了根据一个实施例的过程;
图4B示出了根据一个实施例的过程;
图5A示出了根据一个实施例的过程;以及
图5B示出了根据一个实施例的过程。
具体实施方式
1.概述
本发明的各方面在独立权利要求中阐述,优选特征在从属权利要求中阐述。一个方面的特征可以单独地或与其他方面结合地应用于每个方面。
公开了方法、装置、计算机存储介质、机制和模块,该方法、装置、计算机存储介质、机制和模块与使用虚拟输出队列排序实现分组交换设备的准输出队列行为相关联,虚拟输出队列排序是针对每个输出队列独立确定的。
一个实施例的装置(例如,分组交换设备)包括:出口接口组,包括多个输出队列、一个或多个虚拟输出队列(VOQ)调度器以及被存储在存储器中的一个或多个VOQ时延数据结构;多个入口接口组,其中多个入口接口组中的每个特定入口接口组针对多个输出队列中的每个特定输出队列包括特定虚拟输出队列(VOQ),特定VOQ存储由特定入口接口组接收到的分组的分组实体以用于所述特定输出队列,其中所述接收到的分组是基于来自多个输出队列的相应出列顺序从装置发送的;以及一个或多个通信机构,在入口接口组中的每个入口接口组和出口接口组之间提供数据路径通信,包括将从所述VOQ出列的所述分组实体传送到出口接口组,所述VOQ由所述VOQ调度器确定的下一个VOQ标识符识别。在一个实施例中,针对多个输出队列中的每个特定输出队列,所述VOQ调度器针对所述特定输出队列重复地确定特定的下一个VOQ标识符,并且在所述VOQ时延数据结构中维持所述特定输出队列的所述VOQ的时延信息,而与所述输出队列中的其他输出队列的VOQ的所维持的时延信息无关。在一个实施例中,所述VOQ中的每个VOQ和所述输出队列中的每一者是先进先出(FIFO)队列。
在一个实施例中,所述被传送的分组实体中的多个特定分组实体包括关联的时间值;并且其中,所述VOQ时延数据结构是基于所述被传送的关联时间值来更新的。在一个实施例中,所述被传送的分组实体中的每个特定分组实体包括特定分组描述符或所述接收到的分组中的特定分组,该特定分组描述符或该特定分组在所述输出队列中的相应输出队列中入列。在一个实施例中,所述被传送的关联时间值识别相应分组实体在所述VOQ中入列的时间或识别装置接收相应分组的时间。
在一个实施例中,所述VOQ调度器针对多个输出队列中的每个输出队列维持先进先出(FIFO)队列,其中针对可识别输出队列的所述FIFO队列的条目包括针对与可识别输出队列相关联的每个非空VOQ的VOQ标识符,其中针对所述可识别输出队列确定的所述下一个VOQ标识符中的每个下一个VOQ标识符是可识别输出队列头部的第一VOQ标识符,其中第一VOQ标识符响应于自适应决策、基于所述可识别输出队列的所述VOQ的所述所维持的时延信息而位于特定输出队列的头部或特定输出队列的尾部。在一个实施例中,自适应决策包括:基于所述所维持的时延信息确定第一VOQ标识符是否识别出特定VOQ具有与所述可标识输出队列相关联的所述VOQ的最长时延。在一个实施例中,自适应决策包括:限制第一VOQ标识符在被移动到特定输出队列的尾部之前保留在所述可识别输出队列的头部的次数。在一个实施例中,自适应决策是基于随机值和与可识别的特定输出队列相关联的所述VOQ的所述所维持的时延信息的。
在一个实施例中,所述下一个VOQ标识符中的每个特定下一个VOQ标识符是基于随机值从多个输出队列中的相应输出队列的非空所述VOQ确定的。在一个实施例中,多个所述特定下一个VOQ标识符中的每个特定下一个VOQ标识符具有所述非空VOQ的最长时延,并且是基于加权值和随机值来选择的,其中加权值是基于最长时延和最短时延被确定的,最长时延和最短时延是在相应输出队列的所述非空VOQ的所述所维持的时延信息中被识别的。在一个实施例中,多个所述特定下一个VOQ标识符中的每个特定下一个VOQ标识符没有所述非空VOQ的最长时延,并且是基于加权值和随机值来选择的,其中加权值是基于最长时延和最短时延来确定的,最长时延和最短时延是在相应输出队列的所述非空VOQ的所述所维持的时延信息中被识别的。
一个实施例包括一种方法,包括:针对多个入口路径中的每个不同的入口路径维持虚拟输出队列(VOQ),其中所述VOQ中的每个VOQ与输出队列相关联;针对在所述入口路径中的特定入口路径上接收到的多个分组中的每个特定分组,使封装实体在所述特定分组的特定入口路径的所述VOQ中的特定VOQ中入列,其中封装实体包括所述特定分组的特定分组实体和时间戳;针对多个内部通信周期中的每个内部通信周期,并且响应于由VOQ调度器生成的识别特定VOQ的VOQ请求,使特定封装实体从具有特定封装实体的特定VOQ出列,其中特定封装实体包括特定分组实体和特定时间戳,并且在通过一个或多个通信机构传送特定封装分组实体之后,特定分组实体在输出队列中入列,并且VOQ时延数据结构是基于特定时间戳所维持的;基于从输出队列出列的分组实体的顺序,通过出口路径从输出队列转发分组。在一个实施例中,VOQ调度器在VOQ时延数据结构中维持所述VOQ的时延信息,而与其他输出队列的其他VOQ的所维持的时延信息无关。
在一个实施例中,在特定入口路径上接收到的多个分组中的每个分组被存储在共享存储器系统中;其中,所述特定分组实体中的每个特定分组实体包括分组描述符;其中,所述方法包括:基于分组描述符,从共享存储器系统中取回所述接收到的分组中的相应分组。在一个实施例中,所述从共享存储器系统取回所述接收到的分组中的相应分组是响应于特定分组实体从输出队列出列而被执行的,其中特定分组实体包括分组描述符。
在一个实施例中,VOQ调度器维持先进先出(FIFO)队列,其中FIFO队列具有包括与输出队列相关联的每个非空VOQ的VOQ标识符的条目。在一个实施例中,在VOQ调度器从当前位于FIFO队列的头部的第一VOQ标识符确定特定VOQ之后,第一VOQ标识符响应于VOQ调度器的自适应决策、基于与输出队列的VOQ相关联的当前时延信息而位于FIFO队列的头部或尾部。
在一个实施例中,VOQ调度器基于所述VOQ的当前时延信息和随机值来确定特定VOQ,其中响应于排序决策的第一结果、基于加权值和随机值,具有最长时延的所述VOQ中的一个VOQ被选择为特定VOQ,并且响应于排序决策的第二结果,随机地选择所述VOQ中的一个VOQ。在一个实施例中,加权值是基于在VOQ时延数据结构中所识别的最长时延和最短时延来确定的。
一个实施例的装置(例如,分组交换设备)包括:多个出口接口组,其中多个出口接口组中的每个特定出口接口组包括多个输出队列、虚拟输出队列(VOQ)调度器以及被存储在存储器中的一个或多个VOQ时延数据结构;多个入口接口组,其中多个入口接口组中的每个特定入口接口组针对所述多个出口接口组的所述多个输出队列中的每个特定输出队列包括存储相应分组实体的特定VOQ,其中所述分组实体中的每个分组实体包括由所述特定入口接口组接收到的相应分组的时间戳和分组描述符;通信机构,将所述入口接口组中的每个入口接口组与所述出口接口组中的每个出口接口组通信地耦合,包括选择性地将分组实体从所述入口接口组传送到所述出口接口组;其中,响应于接收到的分组实体,所述出口接口组中的每个出口接口组基于接收到的分组实体的时间戳在相应的所述VOQ时延数据结构中维持时延信息,并且使接收到的分组实体的分组描述符在所述输出队列的相应输出队列中入列;以共享分组存储系统,通信地耦合到所述入口接口组中的每个入口接口组和所述出口接口组中的每个出口接口组,其中所述入口接口组中的每个入口接口组在共享分组存储系统中存储分组,并且其中所述出口接口组中的每个出口接口组基于相应的分组描述符从共享存储系统取回所述分组。在一个实施例中,VOQ调度器针对所述出口接口组的同一出口接口组上的所述输出队列中的每个输出队列确定VOQ的下一个VOQ标识符,而与同一出口接口组上的其他输出队列无关,其中所述被选择性地传送的分组实体的顺序是从所述确定的下一个VOQ标识符识别的。
在一个实施例中,所述多个出口接口组中的每个特定出口接口组的所述特定VOQ调度器针对所述特定出口接口组上的所述输出队列中的每个特定输出队列维持先进先出(FIFO)队列,FIFO队列具有包括与所述特定输出队列相关联的每个非空VOQ的VOQ标识符的条目,其中所述特定VOQ调度器从位于相应FIFO队列头部的第一VOQ标识符确定所述下一个VOQ标识符,并且基于与所述特定输出队列的所述VOQ相关联的当前时延信息,自适应地将第一VOQ标识符留在头部或移动到相应FIFO队列的尾部。
在一个实施例中,多个出口接口组中的每个特定出口接口组的所述特定VOQ调度器基于与所述特定输出队列相关联的非空VOQ的当前时延信息和随机值来确定所述特定出口接口组上的所述输出队列中的每个特定输出队列的每个特定下一个VOQ标识符;响应于排序决策的第一结果,基于加权值和随机值,所述特定下一个VOQ标识符是具有与所述特定输出队列相关联的所述非空VOQ的最长时延的非空VOQ;并且响应于排序决策的第二结果,随机地选择与所述特定输出队列相关联的非空VOQ中的一个非空VOQ。
2.描述
公开了方法、装置、计算机存储介质、机制和模块,该方法、装置、计算机存储介质、机制和模块与使用虚拟输出队列排序实现分组交换设备的准输出队列行为相关联,虚拟输出队列排序是针对每个输出队列独立确定的。
如本文所使用的,“转发信息”包括但不限于描述如何处理(例如,转发、发送、操纵、修改、改变、丢弃、拷贝、复制、接收)相应分组的信息。在一个实施例中,经由入口查找操作和出口查找操作来执行确定转发信息。此外,术语“处理”在涉及分组进程的处理时是指响应于分组而执行的广泛范围的操作,例如但不限于功能转发/发送、丢弃、操纵/修改/改变、接收、复制、创建一个或多个服务或应用、将一个或多个服务或应用应用于分组或分组交换设备(例如,更新信息)等。此外,如本文所使用的,术语“并行”处理在一般意义上用于两个或更多个操作的至少一部分在时间上重叠执行。本文广泛使用的术语“接口”包括由网络节点在执行与分组相关的处理时使用的接口基础结构(例如,缓冲器、存储器位置、转发和/或其他数据结构、处理指令)。此外,如本文所使用的,与“物理接口”相反,“虚拟接口”是不直接连接到外部电缆或其他通信机构的接口。
如本文所述,实施例包括各种元件和限制,没有一个元件或限制被认为是关键元件或限制。权利要求中的每个权利要求单独地叙述了实施例的整体方面。此外,所描述的一些实施例可以包括但不限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质等。一个或多个系统、设备、组件等可以包括一个或多个实施例,其可以包括由相同或不同的系统、设备、组件等执行的权利要求的一些元件或限制。处理元件可以是通用处理器、任务专用处理器、一个或多个处理器的核心、或用于执行相应处理的其他同位的资源共享实施方式。下文描述的实施例体现了各个方面和配置,附图示出了示例性和非限制性配置。公开了用于执行方法和处理框操作的计算机可读介质和模块(例如,被配置为执行这样的操作的处理器和存储器或其他装置),并且该计算机可读介质和模块与实施例的可扩展范围保持一致。术语“装置”在本文中其对器具或设备的一般定义保持一致。
附图(包括但不限于任何框图和流程图以及消息序列图)中示出的步骤、连接以及信号和信息的处理通常可以以相同或不同的串行或并行顺序和/或通过不同的组件和/或过程、线程等和/或通过不同的连接来执行,并且在其他实施例中与其他功能组合,除非这使实施例禁用或明确地或隐含地需要顺序(例如,针对读取值、处理读取值的顺序,必须在对其进行处理之前获得该值,但是相关联的处理中的一些处理可以在读取操作之前、与读取操作同时和/或读取操作之后执行)。此外,除非明确说明,否则本文件中描述或引用的任何内容均不被承认为本申请的现有技术。
本文使用术语“一个实施例”来引用特定实施例,其中,对“一个实施例”的每个引用可以指代不同的实施例,并且本文在描述相关联特征、元件和/或限制时反复使用术语并不建立每个实施例必须包括的关联的特征、元件和/或限制的累积集合,但是实施例通常可以包括所有这些特征、元件和/或限制。此外,术语“第一”、“第二”等以及“特定的”、“具体的”和“可识别的”在本文中通常用于表示不同的单元(例如,第一小部件或操作、第二小部件或操作、特定小部件或操作,具体小部件或操作)。本文使用这些术语不一定表示顺序(例如,一个单元、操作或事件在另一单元、操作或事件或另一特征之前发生或到来),而是提供区分元件单元的机制。此外,短语“基于x”和“响应于x”用于表示从中推导出或引起某事的项目“x”的最小集合,其中“x”是可扩展的,并且不一定描述在其上执行操作的项目的完整列表等。“多个小部件”的所引入的元件随后可以由“所述小部件”来指代。类似地,“一个或多个小部件”的所引入的元件随后可以被称为“所述小部件”(指单个小部件或多个小部件)。另外,短语“被耦合到”用于表示两个元件或设备之间的某种程度的直接或间接连接,被耦合的设备修改或不修改被耦合的信号或被传送的信息。此外,术语“或”在本文中用于标识对联合项目中的一个或多个(包括所有)联合项目的选择。另外,与“包含”、“含有”或“特征在于”同义的过渡术语“包括”是包含性的或开放式的,并且不排除附加的、未提到的元件或方法步骤。最后,当在用于执行步骤的方法权利要求中引用时,术语“特定机器”指35USC§101机器法定类型内的特定机器。
图1A示出了根据一个实施例的分组交换设备100。如图所示,分组交换设备100包括多个入口接口组110-111,多个入口接口组110-111经由一个或多个通信机构(例如,交换矩阵、结构)104被可通信地耦合到出口接口组120。
如本文所使用的,入口接口组是指包括至少一个接口(其用于接收分组)和至少一个虚拟输出队列(其用于存储与所接收的分组对应的分组实体)的设备(例如,线卡、板卡、交换平台);而输出接口组是指包括至少一个输出队列(其用于存储从入口接口组接收到的分组实体)和一个或多个接口(其用于从出口接口组发送相应分组)的设备(例如,线卡、板卡、交换平台)。
如本文所使用的,“分组实体”是指包括用于识别分组的数据的离散单元,分组例如但不限于分组本身、分组描述符(例如,包括用于从存储装置获取分组的信息以及通常从分组的报头提取的一些数据,用于通过分组交换设备转发分组实体)、以及可能的其他信息/数据(例如,内部分组交换数据,包括但不限于时间戳、转发数据、操作数据、监视数据和/或其他数据或信息)。
在一个实施例中,分组(其通常具有一些内部分组交换数据(例如,时间戳、转发信息))形式的分组实体在虚拟输出队列中入列,然后通过分组交换机制(例如,结构、交叉开关)被传输到适当的输出队列,其中,至少分组被入列。在一个实施例中,分组描述符(其通常具有一些内部分组交换数据(例如,时间戳、转发信息))形式的分组实体在虚拟输出队列中入列,然后通过分组交换机制(例如,结构、交叉开关)传输到适当的输出队列,其中至少分组描述符被入列。在一个实施例中,分组被存储在共享存储器中并且基于分组描述符由出口接口组取回;因此,在传输整个分组时不消耗(一个或多个)通信机构(例如,不包括共享存储器)的资源。
在一个实施例中,出口接口组包括对VOQ的至少一部分(例如,所有VOQ、存储较高优先级流量的VOQ)使用虚拟输入队列(VIQ)的优化,使得在具有切换竞争的通信机构上的分组传输周期将被用于将分组实体从VOQ传输到其相应的VIQ,切换竞争将不被用于基于所请求的VOQ的顺序来发送分组。在一个实施例中,VOQ请求顺序调度器在确定相应的请求顺序时不区分VOQ与VIQ中的分组实体。
如图1A所示,分组实体在VOQ 118、VOQ 119中入列,用于由相应的入口接口组110、入口接口组111接收的分组(101)。在一个实施例中,这些分组实体中的每个分组实体包括时间戳(例如,反映分组的接收或入队的系统时间),出口接口组120随后使用该时间戳维持在一个或多个数据结构中的相应VOQ 118和VOQ 119的一个或多个时延特性。在一个实施例中,维持这些一个或多个时延特性包括从当前系统时间中减去所接收的时间戳,并且更新时延数据结构中的一个或多个字段。
基于VOQ 118和VOQ 119的时延特性(例如,不考虑与其他输出队列相关联的虚拟输出队列的长度、时延或其他特性),出口接口组120上的完全本地调度器125以相应的顺序生成分组交换设备100使用的VOQ标识请求的有序序列,使分组实体从VOQ 118、VOQ 119出列,并且通过(一个或多个)通信机构104将这些出列的分组实体(105)传输到出口接口组120。在一个实施例中,出口接口组120包括虚拟输入队列(VIQ)121,用于VOQ 118、VOQ 119中的每个VOQ。
在一个实施例中,响应于接收到的被请求的分组实体(105),调度器125基于分组实体(105)的时间戳来维持(一个或多个)时延数据结构(“D.S.”)(因此维持VOQ 118、VOQ119的当前时延信息),出口接口组120使分组实体(105)的分组或分组描述符在OQ 122中入列,响应于相应的分组或分组描述符从OQ 122出列,从出口接口组120发送相应的分组(109)。
图1B示出了根据一个实施例的分组交换设备130,该实施例包括与多个VOQ 136(例如,一个实施例中的每个入口接口组上一个VOQ 136)相关联的单个OQ 140(例如,在一个实施例中的出口接口组上)。分组131被接收并且被存储在共享分组存储器132中。基于针对这些分组中的每个分组(其被识别为通过OQ 40被有效的转发)转发决策,相应的分组实体133(例如,具有分组描述符和时间戳)在相应的先进先出(FIFO)VOQ 136中入列。在一个实施例中,VOQ 136位于其上相应分组131被接收的入口接口组上。
VOQ请求顺序调度器148基于其针对VOQ 136中的每个VOQ 136所维持的时延数据结构来识别VOQ请求的有序序列,该VOQ请求经由(一个或多个)通信机构138(例如,控制平面通信或搭载式数据平面通信)来传送(141)。作为响应,加时间戳的分组描述符(133)以相应的顺序从VOQ 136出列,并且作为通过(一个或多个)通信机构138(例如,数据平面通信)传送的分组实体(143)来传送。在一个实施例中,接收到的分组实体(143)中的分组描述符在FIFO OQ 140中入列,调度器148基于接收到的分组实体(143)中的时间戳来维持VOQ时延数据结构(例如,直接识别(一个或多个)时延特性或用于确定相应VOQ(136)的(一个或多个)时延特性)。
在一个实施例中,响应于分组描述符从OQ 140出列,将相应的分组(131)从共享分组存储器132中取回(145),并且从出口接口146中发送。
响应于接收其分组实体(143)或其分组描述符入列,一个实施例从共享分组存储器132中取回(145)相应的分组(131),所取回的分组131被存储在与出口接口146相关联的缓冲器中。该分组131然后从该缓冲存储器中被读取,并且响应于其分组描述符从OQ 140中出列而从出口接口146中被发送。在一个实施例中,缓冲其存储器比共享存储器132更快。在一个实施例中,多个出口接口为从分组存储器132中读取分组而竞争,因此先验地读取和缓冲分组的效率高于延迟读取操作直到使其分组描述符出列。
在一个实施例中,响应于其分组描述符在分组实体(143)中被接收,从共享分组存储器132中取回(145)相应的分组(131),所取回的分组131在FIFO OQ 140中入列(例如,按照对与OQ 140相关联的分组的读取请求的顺序)。响应于从OQ 140中出列,分组131随后从出口接口146中被发送。
图1C示出了根据一个实施例的分组交换设备150。如图所示,分组交换设备150包括两个入口接口组(160和180)以及两个出口接口组(170和190)。一个实施例包括的输入链路、输出链路、入口接口组和/或出口接口组比图1C中示出的更多。在一个实施例中,入口接口组1(160)和出口接口组1(170)位于同一线卡或其他板卡上。在一个实施例中,入口接口组2(180)和出口接口组2(190)位于同一线卡或其他板卡上。
入口接口组160和入口接口组180中的每个入口接口组经由数据平面通信(197)被通信地耦合到出口接口组170和出口接口组190中的每个出口接口组。在一个实施例中,数据平面通信(197)包括具有连接的交换矩阵,该连接针对每个分组通信周期,使得M个分组实体能够从入口接口组160和入口接口组180中的每个入口接口组被发送,并且使得两个分组实体能够由出口接口组170和出口接口组190中的每个出口接口组接收,其中,M至少是1。在一个实施方案中,M是2。在一个实施方案中,M是大于2的整数。
入口接口组160和入口接口组180以及出口接口组170和出口接口组190中的每个接口组被通信地耦合到共享分组存储器子系统(199)。在一个实施例中,针对使用共享分组存储器子系统(199)的每个存储器周期,入口接口组160和入口接口组180中的每个入口接口组可以存储K个分组,并且出口接口组170和出口接口组190中的每个出口接口组可以取回K个分组,其中,K至少是1。在一个实施例中,K是2。在一个实施例中,K大于2。
入口接口组160和入口接口组180中的每个入口接口组经由控制平面通信(198)被通信地耦合到出口接口组170和出口接口组190中的每个出口接口组。在一个实施例中,控制平面通信(198)在每个分组通信周期期间在出口接口组170和出口接口组190中的每个出口接口组和入口接口组160和入口接口组180中的每个入口接口组之间提供对VOQ请求的通信。
在一个实施例中,分组交换设备根据N个不同的优先级来交换分组,其中,N是至少为1的整数。在一个实施例中,N是2。在一个实施例中,N大于2。
如图1C所示,出口接口组1(170)包括N个输出队列(171)和N个输出队列(172)的集合,N个输出队列(171)与发送分组离开出口链路1(155)相关联,N个输出队列(172)与发送分组离开出口链路2(156)相关联。另外,出口接口组2(190)包括N个输出队列(193)和N个输出队列(194)的集合,N个输出队列(193)与发送分组离开出口链路3(157)相关联,N个输出队列(194)与发送分组离开出口链路4(158)相关联。
还如图1C所示,入口接口组1(160)包括4组N个VOQ(161至164),VOQ 161与出口接口组1(170)的OQ 171相关联,VOQ 162与出口接口组1(170)的OQ 172相关联,VOQ 163与出口接口组2(190)的OQ 193相关联,VOQ 164与出口接口组2(190)的OQ 194相关联。类似地,入口接口组2(180)包括四组N个VOQ(181至184),VOQ 181与出口接口组1(170)的OQ 171相关联,VOQ 182与出口接口组1(170)的OQ 172相关联,VOQ 183与出口接口组2(190)的OQ193相关联,VOQ 184与出口接口组2(190)的OQ 194相关联。
在一个实施例中,对在入口链路151至入口链路154上接收到的每个特定分组进行分类,以确定该特定分组要从哪个输出链路(155至158)发送以及相应的优先级(例如,范围从1到N)。特定分组被存储在共享分组存储器子系统(199)中,相应的分组实体在特定时间在相应的特定VOQ(161至164、181-184)中入列。在一个实施例中,每个分组实体包括特定分组的分组描述符和时间戳(例如,特定时间),由相应的出口接口组(175、195)用于维持特定VOQ(161至164、181至184)的一个或多个当前时延特性。
基于被存储在其(一个或多个)VOQ时延数据结构中的VOQ时延信息,出口接口组1调度器175单独地和独立地确定下一个VOQ(161、162、181、182),针对N个OQ 171和N个OQ172中的每个OQ使分组实体从下一个VOQ(161、162、181、182)中出列。类似地,基于被存储在其(一个或多个)VOQ时延数据结构中的VOQ时延信息,出口接口组2调度器195单独地和独立地确定下一个VOQ(163、164、183、184),针对N个OQ 193和N个OQ 194中的每个OQ使分组实体从下一个VOQ(163、164、183、184)中出列。
图2A至图2B及其本文中的讨论提供了根据一个实施例的各种网络节点的描述。
图2A示出了根据一个实施例的分组交换设备210(例如,路由器、节点、应用设备、网关)的一个实施例。如图所示,分组交换设备210包括多个线卡(211和215),每个线卡具有一个或多个网络接口,用于通过通信链路(例如,可能是链路聚合组的一部分)发送和接收分组,以及具有在一个实施例中使用的一个或多个处理元件,该实施例与使用虚拟输出队列排序来实现分组交换设备的准输出队列行为相关联,虚拟输出队列排序是针对每个输出队列独立确定的。分组交换设备210还具有控制平面,控制平面具有一个或多个处理元件(例如,(一个或多个)路由处理器212),用于管理控制平面和控制平面处理分组,这与使用虚拟输出队列排序实现分组交换设备的准输出队列行为相关联,虚拟输出队列排序是针对每个输出队列独立确定的。分组交换设备210还包括其他卡214(例如,服务卡、刀片),其包括在一个实施例中用于处理(例如,转发/发送、丢弃、操纵、改变、修改、接收、创建、复制,可能结合共享存储器和/或与一个或多个服务功能操作,根据一个或多个服务功能来应用服务)处理元件,这与使用虚拟输出队列排序实现分组交换设备的准输出队列行为相关联(虚拟输出队列排序是针对每个输出队列独立确定的),以及一些基于硬件的通信机构213(例如,总线、交换结构和/或矩阵等),用于允许其不同实体211、212、214和215进行通信。线卡211和线卡215通常执行既成为入口线卡又成为出口线卡(例如,包括VOQ、OQ和VOQ调度器)的动作,该动作涉及由分组交换设备210接收或从分组交换设备210发送的多个其他特定分组和/或分组流。
图2B是在一个实施例中使用的装置220(例如,主机、路由器、节点、目的地或其部分)的框图,该实施例与使用虚拟输出队列排序来实现分组交换设备的准输出队列行为相关联,虚拟输出队列排序是针对每个输出队列独立确定的。
在一个实施例中,装置220执行一个或多个过程或其部分,一个或多个过程或其部分对应于本文示出的或以其他方式在本文中描述的流程图中的一个流程图和/或在另一图中示出的或以其他方式在本文中描述的流程图中的一个流程图。
在一个实施例中,装置220包括一个或多个处理器221(通常具有片上存储器)、存储器222(可能是共享存储器、VOQ、OQ)、(一个或多个)存储设备223(可能是共享存储器、VOQ、OQ)、(一个或多个)专用组件225(例如,用于执行查找、分组处理的优化硬件;关联存储器;二进制和/或三进制内容可寻址存储器;(一个或多个)专用集成电路;密码散列硬件等)、以及用于传送信息(例如,发送和接收分组、用户界面、显示信息等)的(一个或多个)接口227,这些通常经由一个或多个通信机构229(例如,总线、链路、交换结构、矩阵)与通信路径通信地耦合,该通信路径通常被定制以满足特定应用的需求。
装置220的各种实施例可以包括更多或更少的元件。装置220的操作通常由(一个或多个)处理器221使用存储器222和(一个或多个)存储设备223(例如,包括VOQ、OQ)来控制,以执行一个或多个任务或过程。存储器222是一种计算机可读/计算机存储介质,并且通常包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件。存储器222通常存储计算机可执行指令和/或数据,计算机可执行指令由(一个或多个)处理器221执行,数据由(一个或多个)处理器221操纵以实现根据实施例的功能。(一个或多个)存储设备223是另一种的计算机可读介质,并且通常包括固态存储介质、磁盘驱动器、磁盘、联网服务、磁带驱动器和其他存储设备。(一个或多个)存储设备223通常存储计算机可执行指令和/或数据,计算机可执行指令由(一个或多个)处理器221执行,数据由(一个或多个)处理器221操纵以实现根据实施例的功能。
图3A示出了根据一个实施例的过程。对该数据平面过程的处理从处理框300开始。在处理框302中,在被通信地耦合到入口链路的入口接口上接收分组。在处理框304中,接收到的分组被存储在共享分组存储器中,相应的分组实体(例如,加时间戳的分组描述符)在VOQ中入列,该VOQ是基于分组和相关联的转发信息(例如,与相应的OQ和优先级相关联的VOQ)确定的。处理返回到处理框302以接收和处理更多的分组。
图3B示出了根据一个实施例的过程。该数据平面过程的处理从处理框320开始。如在处理框321中所确定的,如果到了针对特定出口接口从分组交换设备发送分组的时间,则处理进行到处理框322;否则,处理保持在处理框321处。在处理框322中继续处理,(例如,基于优先级之间的带宽分配或其他调度算法)识别与特定出口接口相关联的N个输出队列(对应N个优先级中的每个优先级)中的非空特定输出队列。在处理框324中,特定分组描述符从所识别的特定FIFO输出队列的头部出列(dequeue)。在处理块326中,基于特定分组描述符从共享分组存储器子系统中取回相应的分组。在处理块328中,从特定出口接口发送特定分组。处理返回到处理框321。
图3C示出了根据一个实施例的过程。对该控制平面过程的处理从处理框330开始。如在处理框333中所确定的,如果到了更新一个或多个出口接口组上的VOQ调度器的时间,则处理进行到处理框334;否则,处理保持在处理框333处。在处理框334中继续处理,用相应的当前VOQ长度来更新出口接口组中的VOQ调度器中的数据结构,包括识别新的活动的VOQ(例如,从空转变为非空)。在一个实施例中,该信息通过控制平面通信在入口接口组和出口接口组之间传送。处理返回到处理框333。
图3D示出了根据一个实施例的过程。处理开始于处理框340。如在处理框343中所确定的,如果分组实体已经由该出口接口组接收,则处理进行到处理框344;否则,处理保持在处理框343处。在处理框344中继续处理,接收到的分组实体中的分组描述符在相应的输出队列中入列(enqueue)。在一个实施例的处理框346中,基于从接收到的分组实体提取的时间戳来更新时延信息,该时延信息与从其中发送分组实体的VOQ相关联。在一个实施例中,基于从分组实体取回的时间戳来更新一个或多个特征(例如,与相应输出队列相关联的VOQ或非空VOQ的最长、最短、平均时延)。处理返回到处理框343。
图3E示出了根据一个实施例的针对每个特定出口接口组执行的过程。处理开始于处理框360。如在处理框363中所确定的,用于通过受限数据路径(例如,矩阵)在入口接口组和出口接口组之间传送分组的下一分组周期开始时,处理进行到处理框364;否则,处理保持在处理框363处。
在处理框364中继续处理,基于出口接口的链路速率和流控制(例如,在一个实施例中按比例分配出口接口带宽)来确定特定出口接口组的下一接口。在处理框366中,基于与特定出口接口组的OQ相关联的链路速率和流控制(例如,在一个实施例中按比例分配带宽)来识别与所确定的下一接口相关联的特定OQ。
在处理框368中,出口VOQ调度器确定与特定OQ相关联的特定VOQ,该确定以与其他OQ的VOQ独立(例如,不考虑)的方式进行。在一个实施例中,该确定是基于与特定输出队列的VOQ相关联的所维持的时延信息(例如,最长、最短、平均时延)、(一个或多个)随机数、具有特定时延特性的一个或多个VOQ的加权、在循环中选择下一个VOQ标识符来进行的。在处理框370中,对应于所确定的特定VOQ的下一个VOQ标识符(例如,通过控制路径)被传送到相应的入口接口组。在处理框372中,分组实体(包括分组描述符和与时延相关联的时间戳)从特定VOQ出列,并且通过受限数据路径发送到出口接口组。处理返回到处理框363。
因此,在一个实施例中,来自具有相同端口优先级目的地的所有VOQ的所有分组在特定时间窗口内经历类似的时延,这类似于由OQ交换机架构提供的分组服务,因为具有相同端口优先级目的地的所有分组将被提交到相同的OQ中;因此,在特定时间窗口内将经历类似的时延。另外,在一个实施例中,向相同输出端口优先级发送流量的所有输入端口接收带宽,该带宽与其带宽需求除以总带宽成比例。
针对输出队列中的每个输出队列独立地确定下一个VOQ为分组交换设备提供了实际的、更快的和更有效的调度确定(例如,在一个实施例中,不对其他OQ的VOQ进行分类和/或不考虑其他OQ的VOQ),并且将这些确定基于当前VOQ时延提供了近似于分组交换设备的输出队列行为的期望行为。
以这种方式,当与理想输出队列的相应排序相比时,一个实施例的行为在使用有界不同VOQ排序的可伸缩实施方式中提供了每个输出队列的虚拟输出队列之间的时延公平性。
尝试仿真输出队列行为的现有分组交换系统通常需要复杂并且耗时的计算(例如,对所有OQ的所有VOQ的时间值进行排序)以及专用硬件(例如,非FIFO队列),使得它们在最高性能交换机和路由器中的使用不切实际。虽然VOQ架构是高度可伸缩的,但是每个VOQ到OQ调度器基于其算法提供了不同的调度结果。例如,分组级别的VOQ循环调度可以使得传输大分组的输入端口比向同一输出端口发送小分组的输入端口消耗更多的带宽,即使两个输入端口都向输出端口发送相同带宽的分组。在第二示例中,VOQ循环调度可以导致对输出端口要求低分组带宽的输入端口和对同一输出端口要求高分组带宽的输入端口,以接收相同带宽。
图4A和图4B示出了在一个实施例中执行的用于识别下一个VOQ的过程。在一个实施例中,并行地执行图4A和图4B的过程,基于分组实体中的时间值来更新所维持的时延信息(例如,在图4A中),该分组实体是基于识别特定VOQ的VOQ-ID请求而接收的(例如,在图4B的处理框442中被确定)。
在一个实施例中,时间值直接识别相应VOQ的时延。在一个实施例中,时间值间接地识别相应VOQ的时延,例如,通过但不限于从当前系统时间中减去它。
虽然关于图4A和图4B描述的一个实施例使用最长时延信息,但是一个实施例维持一个或多个时延字符(例如,最长、最短、平均和/或其他值),并且在确定下一个VOQ-ID时(例如,所选择的VOQ-ID是保持在队列/列表的头部/第一位置还是被放置在队列/列表的尾部/最后位置),使用这些时延特性中的一个或多个时延特性。
图4A示出了在一个实施例中执行的对每个VOQ的时延信息的维持(例如,在图3D的处理框346中),每个VOQ包括最长时延信息。
处理开始于处理框400。在处理框402中,通过从当前系统时间中减去接收到的时间戳来确定VOQ时延。如在处理框405中所确定的,如果分组实体(包括时间戳)识别出的VOQ具有最长时延,则在处理框406中将所维持的最长时延值更新为所确定的时延值,并且处理直接进行到处理框419。
否则,继续处理框409,如其中所确定的,如果所确定的时延大于先前的最长时延,则处理进行到处理框410;否则,处理直接进行到处理框419。
继续处理框410,更新具有最长时延的所维持的VOQ的标识符。在处理框412中,更新与OQ相关联的VOQ的所维持的最长时延。在处理框414中,自适应连续最大值被初始化,以限制相同VOQ针对OQ可以被重复发送的次数(例如,当至少两个VOQ活动时使用)。继续处理框419,完成对图4A的流程图的处理。
图4B示出了在一个实施例中执行的过程,该过程用于独立地确定从其请求分组实体的所识别的OQ的下一个VOQ(例如,在图3E的一个实施例中的处理框368中执行)。一个实施例维持每个OQ的活动VOQ的有序列表(也被称为FIFO队列)。该列表在识别下一个VOQ时被排序,同时基于最长时延确定可能保持在列表中的同一位置,同时不超过自适应连续最大值。
因此,一个实施例在所维持的时延信息将特定VOQ识别为具有与相应OQ相关联的VOQ的最长时延时(例如,如在处理框447中所确定的),向特定VOQ分配更多带宽(例如,基于当前自适应连续最大值),同时通过限制针对同一特定VOQ发送VOQ-ID请求的连续次数(例如,如在自适应决策处理框453中所确定的)来防止不正常行为。以这种方式,一个实施例补偿了接收的分组比其他VOQ(其与同一OQ相关联)接收的分组更少的VOQ。此外,通过响应于调用该限制而增加自适应连续最大值(例如,在处理框458中),针对被识别为具有最长时延的下一个VOQ(例如,如在处理框447中所确定的),更多带宽自适应地变为可用(例如,更多连续迭代)。
处理开始于处理框440。在处理框442中,特定VOQ-ID从活动VOQ-IDS列表的头部出列,(使得分组描述符请求被请求并且从相应的VOQ传输,例如根据图3E的处理框370至处理框372),相应的VOQ中的分组数量(例如,在出口接口组中所维持的每个变量)减少1。如处理框445中所确定的,如果相应的VOQ现在被识别为空,则处理直接进行到处理框459;否则,处理进行到处理框447。
继续处理框447,如其中所确定的,如果特定VOQ-ID是在所维持的时延信息中被识别为OQ的具有最长时延的VOQ的那个VOQ(例如,由VOQ调度器在变量中所维持),则处理进行到处理框450;否则,处理进行到处理框448。
继续处理框448,将特定VOQ-ID放置在OQ的活动VOQ列表/队列的末尾/尾部。处理直接进行到处理框459。
继续处理框450,自适应连续计数器递增1(在处理框458中的先前迭代中已经被初始地设置为0)。如在处理框453中所确定的,如果自适应连续计数器等于自适应连续最大值,则处理进行到处理框456;否则,处理进行到处理框454。
继续处理框454,将特定VOQ-ID放置在OQ的活动VOQ列表的前面(因此图4B示出的循环的下一次迭代中,在处理框442中将使用相同的VOQ-ID)。处理直接进行到处理框459。
继续处理框456,将特定VOQ-ID放置在OQ的活动VOQ列表的末尾。在处理框458中,增加自适应连续最大值,以为特定VOQ提供将来增加的迭代(例如,以补偿经由特定VOQ发送的较小分组,并且将其自适应连续计数器重置为零)。处理直接进行到处理框459。
继续处理框459,完成对图4B的流程图的处理。
图5A和图5B示出了在一个实施例中执行的用于识别下一个VOQ的过程。在一个实施例中,并行地执行图5A和图5B的过程,基于分组实体中的时间值来更新所维持的时延信息(例如,在图5A中),该分组实体是基于识别特定VOQ的VOQ-ID请求而接收的(例如,在图5B的处理框548中所确定)。
在一个实施例中,时间值直接识别相应VOQ的时延。在一个实施例中,时间值间接地识别相应VOQ的时延,例如,通过但不限于从当前系统时间中减去它。
虽然关于图5A和图5B描述的一个实施例使用最长时延信息和最短时延信息,但是一个实施例维持一个或多个时延字符(例如,最长、最短、平均和/或其他值),并且在确定下一个VOQ-ID时使用这些时延特性中的一个或多个时延特性(例如,加权这些特性中的一个或多个特性,并且将该值与在选择下一个VOQ-ID时生成的随机数比较)。
图5A示出了在一个实施例中执行的对每个VOQ的时延信息的维持(例如,在图3D的处理框346中),每个VOQ包括最长时延信息和最短时延信息。
处理开始于处理框500。在处理框502中,通过从当前系统时间中减去接收到的时间戳来确定VOQ时延。如在处理框505中所确定的,如果分组实体(包括时间戳)从其识别VOQ的VOQ具有最长时延,则在处理框506中将所维持的最长时延值更新为所确定的时延值,并且处理直接进行到处理框513。
否则,继续处理框509,如其中所确定的,如果所确定的时延大于先前的最长时延,则处理进行到处理框510;否则,处理直接进行到处理框513。
继续处理框510,更新具有最长时延的VOQ的所维持的标识符,并且更新与OQ相关联的VOQ的所维持的最长时延。在处理框513中继续处理。
继续处理框513,如其中所确定的,如果分组实体(包括时间戳)从其识别VOQ的VOQ具有最短时延,则在处理框514中将所维持的最短时延值更新为所确定的时延值,并且处理直接前进到处理框519。
否则,继续处理框517,如其中所确定的,如果所确定的时延小于先前最短时延,则处理进行到处理框518;否则,处理直接前进到处理框519。
继续处理框518,更新具有最短时延的VOQ的所维持的标识符,并且更新与OQ相关联的VOQ的所维持的最短时延。处理继续到处理框519。
继续处理框519,完成对图5A的流程图的处理。
图5B示出了在一个实施例中执行的过程,该过程用于独立地确定从其中请求分组实体的所识别的OQ的下一VOQ(例如,VOQ-ID)的过程(例如,在图3E的一个实施例中的处理框368中执行)。一个实施例维持与每个OQ的活动VOQ对应的VOQ-ID集合。基于每个OQ的VOQ的所维持的最长时延信息和最短时延信息(例如,根据图5A),使用(一个或多个)加权值从OQ的VOQ-ID集合中选择下一个VOQ-ID。在一个实施例中,加权也是VOQ-ID集合中活动VOQ-ID数量的函数。
处理开始于处理框540。在处理框542中,确定选择特定VOQ-ID的自适应概率,特定VOQ-ID在所维持的时延信息中被识别为具有最长时延。因为所维持的时延是基于分组实体中的时间戳更新的,该分组实体是基于其相应的VOQ-ID请求接收的,所以一个实施例将该自适应概率限制为小于1,以允许OQ的活动VOQ-ID中的任何活动VOQ-ID被选择。因此,通过允许更新所有活动VOQ的所维持的时延信息来防止不正常行为。
在一个实施例中,鉴于OQ的VOQ-IDS集合中的VOQ-ID的数量(例如,活动VOQ的数量),基于OQ的VOQ的所维持的最长时延和最短时延之间的差值的加权来确定该自适应概率。在一个实施例中,当该差值为零时,所有VOQ-ID被给予相同的被选择的概率。在一个实施例中,对于较大的差值,选择特定VOQ-ID的自适应概率相对较高,而对于较小的差值,选择特定VOQ-ID的自适应概率相对较小。在一个实施例中,当VOQ-ID集合中的VOQ-ID的数量相对高时,基于较低值来调整自适应概率,而当VOQ-ID集合中的VOQ-ID的数量相对低时,基于较高值来调整自适应概率。
如在处理框545中所确定的,如果基于所确定的自适应概率和所生成的随机数之间的比较操作来调度被识别为具有最长时延的特定VOQ-ID,则处理进行到处理框546;否则,处理进行到处理框548。
在处理块546中继续,特定VOQ-ID被设置为具有最长时延的当前所维持的VOQ-ID。处理直接进行到处理框550。
在处理框548中继续,可能使用基于OQ的VOQ的所维持的时延信息的加权随机选择,OQ的活动VOQ-ID中的一个活动VOQ-ID被随机选择为特定VOQ-ID。处理进行到处理框550。
在处理框550中继续,例如根据图3E的处理框370至处理框372,对应于特定VOQ-ID的分组实体被请求并且从相应的VOQ发送。如在处理框555中所确定的,如果对应于特定VOQ-ID的VOQ是空的(例如,作为处理框550的结果),则处理进行到处理框556;否则,处理直接前进到处理框559。
继续处理框556,特定的VOQ-ID从OQ的活动VOQ-ID的列表中去除,并且可能更新一些时延信息(例如,被识别为与OQ的最长和/或最短VOQ的对应的VOQ-ID)。
继续处理框559,完成对图5B的流程图的处理。
总之,在一个实施例中,使用针对每个特定输出队列(OQ)独立确定的虚拟输出队列(VOQ)排序实现了分组交换设备的准输出队列行为,包括使用特定OQ的VOQ的所维持的时延信息。在一个实施例中,来自具有相同端口优先级目的地的所有VOQ的所有分组在特定时间窗口内经历类似的时延,这类似于由输出队列交换架构提供的分组服务。在一个实施例中,向相同输出端口优先级发送流量的所有输入端口接收带宽,该带宽与其带宽需求除以总带宽成比例。仿真OQ交换机架构的性能的现有方法需要复杂并且耗时的调度确定,并且不会伸缩。独立地确定从与每个特定OQ相关联的VOQ发送分组的顺序向可伸缩和可实现的系统提供了准输出队列行为。
鉴于可以应用本公开的原理的许多可能的实施例,应当理解,本文关于附图描述的实施例及其各方面仅是说明性的,而不应被视为限制本公开的范围。例如,对本领域技术人员显而易见的是,处理框操作中的许多处理框操作可以被重新排序,以在其他操作之前、之后或与其他操作基本上同时执行。而且,在各种实施例中可以使用许多不同形式的数据结构。本文所描述的公开考虑了可以在以下权利要求及其等同物的范围内的所有这样的实施例。

Claims (21)

1.一种装置,包括:
出口接口组,包括:多个输出队列、一个或多个虚拟输出队列(VOQ)调度器以及被存储在存储器中的一个或多个VOQ时延数据结构;
多个入口接口组,其中所述多个入口接口组中的每个特定入口接口组针对所述多个输出队列中的每个特定输出队列包括特定虚拟输出队列(VOQ),所述特定VOQ存储由特定入口接口组接收到的分组的分组实体以用于所述特定输出队列,其中所述接收到的分组是基于来自所述多个输出队列的相应出列顺序从所述装置发送的;以及
一个或多个通信机构,在入口接口组中的每个入口接口组和所述出口接口组之间提供数据路径通信,包括将从所述VOQ出列的所述分组实体传送到所述出口接口组,所述VOQ由所述VOQ调度器确定的下一个VOQ标识符识别;
其中,针对所述多个输出队列中的每个特定输出队列,所述VOQ调度器针对所述特定输出队列重复地确定特定的下一个VOQ标识符,并且在所述VOQ时延数据结构中维持所述特定输出队列的所述VOQ的时延信息,而与所述输出队列中的其他输出队列的VOQ的所维持的时延信息无关。
2.根据权利要求1所述的装置,其中,所述VOQ和所述输出队列中的每一者是先进先出(FIFO)队列。
3.根据权利要求1或2所述的装置,其中,所述被传送的分组实体中的多个特定分组实体包括关联的时间值;并且其中,所述VOQ时延数据结构是基于所述被传送的关联时间值来更新的。
4.根据权利要求3所述的装置,其中,所述被传送的分组实体中的每个特定分组实体包括特定分组描述符或所述接收到的分组中的特定分组,所述特定分组描述符或所述特定分组在所述输出队列中的相应输出队列中入列。
5.根据权利要求4所述的装置,其中,所述被传送的关联时间值识别相应分组实体在所述VOQ中入列的时间或识别由所述装置接收相应分组的时间。
6.根据权利要求1至5中任一项所述的装置,其中,所述VOQ调度器针对所述多个输出队列中的每个输出队列维持先进先出(FIFO)队列,其中针对可识别输出队列的所述FIFO队列的条目包括针对与所述可识别输出队列相关联的每个非空VOQ的VOQ标识符,其中针对所述可识别输出队列确定的所述下一个VOQ标识符中的每个下一个VOQ标识符是所述可识别输出队列头部的第一VOQ标识符,其中所述第一VOQ标识符响应于自适应决策、基于所述可识别输出队列的所述VOQ的所述所维持的时延信息而位于所述特定输出队列的头部或所述特定输出队列的尾部。
7.根据权利要求6所述的装置,其中,所述自适应决策包括:基于所述所维持的时延信息确定所述第一VOQ标识符是否识别出特定VOQ具有与所述可识别输出队列相关联的所述VOQ的最长时延。
8.根据权利要求6或7所述的装置,其中,所述自适应决策包括:限制所述第一VOQ标识符在被移动到所述特定输出队列的尾部之前保留在所述可识别输出队列的头部的次数。
9.根据权利要求6至8中任一项所述的装置,其中,所述自适应决策是基于随机值和与所述可识别的特定输出队列相关联的所述VOQ的所述所维持的时延信息的。
10.根据权利要求1至9中任一项所述的装置,其中,所述下一个VOQ标识符中的每个特定下一个VOQ标识符是基于随机值从所述多个输出队列中的相应输出队列的非空所述VOQ确定的。
11.根据权利要求10所述的装置,其中,多个所述特定下一个VOQ标识符中的每个特定下一个VOQ标识符具有所述非空VOQ的最长时延,并且是基于加权值和所述随机值来选择的,其中所述加权值是基于所述最长时延和最短时延来确定的,所述最长时延和所述最短时延是在所述相应输出队列的所述非空VOQ的所述所维持的时延信息中被识别的。
12.根据权利要求10或11所述的装置,其中,多个所述特定下一个VOQ标识符中的每个特定下一个VOQ标识符没有所述非空VOQ的最长时延,并且是基于加权值和所述随机值来选择的,其中所述加权值是基于所述最长时延和最短时延来确定的,所述最长时延和所述最短时延是在所述相应输出队列的所述非空VOQ的所述所维持的时延信息中被识别的。
13.一种方法,包括:
针对多个入口路径中的每个不同的入口路径维持虚拟输出队列(VOQ),其中所述VOQ中的每个VOQ与输出队列相关联;
针对在所述入口路径中的特定入口路径上接收到的多个分组中的每个特定分组,使封装实体在所述特定分组的特定入口路径的所述VOQ中的特定VOQ中入列,其中所述封装实体包括所述特定分组的特定分组实体和时间戳;
针对多个内部通信周期中的每个内部通信周期,并且响应于由VOQ调度器生成的识别特定VOQ的VOQ请求,使特定封装实体从具有所述特定封装实体的所述特定VOQ出列,其中所述特定封装实体包括特定分组实体和特定时间戳,并且在通过一个或多个通信机构传送所述特定封装分组实体之后,所述特定分组实体在所述输出队列中入列,并且所述VOQ时延数据结构是基于所述特定时间戳所维持的;以及
基于从所述输出队列出列的分组实体的顺序,通过出口路径从所述输出队列转发分组;
其中,所述VOQ调度器在所述VOQ时延数据结构中维持所述VOQ的时延信息,而与其他输出队列的其他VOQ的所维持的时延信息无关。
14.根据权利要求13所述的方法,其中,在特定入口路径上接收到的所述多个分组中的每个分组被存储在共享存储器系统中;其中,所述特定分组实体中的每个特定分组实体包括分组描述符;并且其中,所述方法包括:基于所述分组描述符,从所述共享存储器系统取回所述接收到的分组中的相应分组。
15.根据权利要求14所述的方法,其中,所述从所述共享存储器系统取回所述接收到的分组中的相应分组是响应于特定分组实体从所述输出队列出列而被执行的,其中所述特定分组实体包括所述分组描述符。
16.根据权利要求13至15中任一项所述的方法,其中,所述VOQ调度器维持先进先出(FIFO)队列,其中所述FIFO队列具有包括与所述输出队列相关联的每个非空VOQ的VOQ标识符的条目;并且
其中,在所述VOQ调度器从当前位于所述FIFO队列的头部的第一VOQ标识符确定所述特定VOQ之后,所述第一VOQ标识符响应于所述VOQ调度器的自适应决策、基于与所述输出队列的所述VOQ相关联的当前时延信息而位于所述FIFO队列的头部或尾部。
17.根据权利要求13至16中任一项所述的方法,其中,所述VOQ调度器基于所述VOQ的当前时延信息和随机值来确定所述特定VOQ,其中响应于排序决策的第一结果、基于加权值和随机值,具有最长时延的所述VOQ中的一个VOQ被选择为所述特定VOQ,并且响应于所述排序决策的第二结果,随机地选择所述VOQ中的一个VOQ;并且
其中,所述加权值是基于在所述VOQ时延数据结构中所识别的最长时延和最短时延来确定的。
18.一种装置,包括:
多个出口接口组,其中所述多个出口接口组中的每个特定出口接口组包括:多个输出队列、虚拟输出队列(VOQ)调度器以及被存储在存储器中的一个或多个VOQ时延数据结构;
多个入口接口组,其中所述多个入口接口组中的每个特定入口接口组针对所述多个出口接口组的所述多个输出队列中的每个特定输出队列包括存储相应分组实体的特定VOQ,其中所述分组实体中的每个分组实体包括由所述特定入口接口组接收到的相应分组的时间戳和分组描述符;
通信机构,将所述入口接口组中的每个入口接口组与所述出口接口组中的每个出口接口组通信地耦合,包括选择性地将分组实体从所述入口接口组传送到所述出口接口组;其中,响应于接收到的分组实体,所述出口接口组中的每个出口接口组基于所述接收到的分组实体的时间戳在相应的所述VOQ时延数据结构中维持时延信息,并且使所述接收到的分组实体的分组描述符在所述输出队列的相应输出队列中入列;以及
共享分组存储系统,通信地耦合到所述入口接口组中的每个入口接口组和所述出口接口组中的每个出口接口组,其中所述入口接口组中的每个入口接口组在所述共享分组存储系统中存储分组,并且其中所述出口接口组中的每个出口接口组基于相应的分组描述符从所述共享存储系统取回所述分组;
其中,所述VOQ调度器针对所述出口接口组的同一出口接口组上的所述输出队列中的每个输出队列确定VOQ的下一个VOQ标识符,而与所述同一出口接口组上的其他输出队列无关,其中所述被选择性地传送的分组实体的顺序是从所述确定的下一个VOQ标识符识别的。
19.根据权利要求18所述的装置,其中,所述多个出口接口组中的每个特定出口接口组的所述特定VOQ调度器针对所述特定出口接口组上的所述输出队列中的每个特定输出队列维持先进先出(FIFO)队列,所述FIFO队列具有包括与所述特定输出队列相关联的每个非空VOQ的VOQ标识符的条目,其中所述特定VOQ调度器从位于所述相应FIFO队列头部的第一VOQ标识符确定所述下一个VOQ标识符,并且基于与所述特定输出队列的所述VOQ相关联的当前时延信息,自适应地将所述第一VOQ标识符留在头部或移动到所述相应FIFO队列的尾部。
20.根据权利要求18或19所述的装置,其中,所述多个出口接口组中的每个特定出口接口组的所述特定VOQ调度器基于随机值和与所述特定输出队列相关联的非空VOQ的当前时延信息来确定所述特定出口接口组上的所述输出队列中的每个特定输出队列的每个特定下一个VOQ标识符;并且其中响应于排序决策的第一结果、基于加权值和随机值,所述特定下一个VOQ标识符是具有与所述特定输出队列相关联的所述非空VOQ的最长时延的非空VOQ;并且响应于所述排序决策的第二结果,随机地选择与所述特定输出队列相关联的所述非空VOQ中的一个非空VOQ。
21.一种计算机程序、计算机程序产品或计算机可读介质,包括指令,所述指令在由计算机执行时,使所述计算机执行根据权利要求13至17中任一项所述的方法的步骤。
CN202280036102.1A 2021-05-20 2022-05-19 使用针对每个输出队列独立确定的虚拟输出队列排序来实现的分组交换设备的准输出队列行为 Pending CN117321978A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/303,136 2021-05-20
US17/303,136 US11683276B2 (en) 2021-05-20 2021-05-20 Quasi-output queue behavior of a packet switching device achieved using virtual output queue ordering independently determined for each output queue
PCT/US2022/030087 WO2022246098A1 (en) 2021-05-20 2022-05-19 Quasi-output queue behavior of a packet switching device achieved using virtual output queue ordering independently determined for each output queue

Publications (1)

Publication Number Publication Date
CN117321978A true CN117321978A (zh) 2023-12-29

Family

ID=82019393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280036102.1A Pending CN117321978A (zh) 2021-05-20 2022-05-19 使用针对每个输出队列独立确定的虚拟输出队列排序来实现的分组交换设备的准输出队列行为

Country Status (4)

Country Link
US (2) US11683276B2 (zh)
EP (1) EP4342153A1 (zh)
CN (1) CN117321978A (zh)
WO (1) WO2022246098A1 (zh)

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351466B1 (en) 1998-05-01 2002-02-26 Hewlett-Packard Company Switching systems and methods of operation of switching systems
US6674721B1 (en) 2000-03-07 2004-01-06 Cisco Technology, Inc. Method and apparatus for scheduling packets being sent from a component of a packet switching system
US6907041B1 (en) 2000-03-07 2005-06-14 Cisco Technology, Inc. Communications interconnection network with distributed resequencing
US6697382B1 (en) 2000-03-07 2004-02-24 Cisco Technology Inc. Distributing and synchronizing a representation of time between components of a packet switching system
US6788689B1 (en) 2000-03-07 2004-09-07 Cisco Technology, Inc. Route scheduling of packet streams to achieve bounded delay in a packet switching system
US6654342B1 (en) 2000-03-07 2003-11-25 Cisco Technology, Inc. Accumulating and distributing flow control information via update messages and piggybacked flow control information in other messages in a packet switching system
US6816492B1 (en) 2000-07-31 2004-11-09 Cisco Technology, Inc. Resequencing packets at output ports without errors using packet timestamps and timestamp floors
US7184443B2 (en) 2002-03-30 2007-02-27 Cisco Technology, Inc. Packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
US7583678B1 (en) 2002-09-27 2009-09-01 Cisco Technology, Inc Methods and apparatus for scheduling entities using a primary scheduling mechanism such as calendar scheduling filled in with entities from a secondary scheduling mechanism
US7391786B1 (en) 2002-11-27 2008-06-24 Cisco Technology, Inc. Centralized memory based packet switching system and method
US8199764B2 (en) 2003-08-25 2012-06-12 Cisco Technology, Inc. Scalable approach to large scale queuing through dynamic resource allocation
US7876763B2 (en) 2004-08-05 2011-01-25 Cisco Technology, Inc. Pipeline scheduler including a hierarchy of schedulers and multiple scheduling lanes
US7061927B2 (en) 2004-04-12 2006-06-13 Cisco Technology, Inc. Weighted random scheduling particularly applicable to packet switching systems
US7602720B2 (en) 2004-10-22 2009-10-13 Cisco Technology, Inc. Active queue management methods and devices
US7599381B2 (en) 2004-12-23 2009-10-06 Cisco Technology, Inc. Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group
US7809009B2 (en) 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US8467294B2 (en) 2011-02-11 2013-06-18 Cisco Technology, Inc. Dynamic load balancing for port groups
US8817807B2 (en) 2012-06-11 2014-08-26 Cisco Technology, Inc. System and method for distributed resource control of switches in a network environment
US10122645B2 (en) 2012-12-07 2018-11-06 Cisco Technology, Inc. Output queue latency behavior for input queue based device
US9100313B1 (en) 2012-12-10 2015-08-04 Cisco Technology, Inc. Shared egress buffer in a multi-stage switch
US9503396B2 (en) 2015-03-18 2016-11-22 Cisco Technology, Inc. Cell forwarding order selection for sending packets
US10735339B1 (en) * 2017-01-16 2020-08-04 Innovium, Inc. Intelligent packet queues with efficient delay tracking
US10645033B2 (en) * 2017-03-27 2020-05-05 Mellanox Technologies Tlv Ltd. Buffer optimization in modular switches
US10721187B1 (en) * 2017-05-18 2020-07-21 Juniper Networks, Inc. Emulating output queued behavior in a virtual output queue switch
US10715455B2 (en) 2017-07-28 2020-07-14 Cisco Technology, Inc. Packet switching device modifying paths of flows of packets taken within while outputting packets in received intra-flow order but not necessarily inter-flow order

Also Published As

Publication number Publication date
US20220377026A1 (en) 2022-11-24
US11683276B2 (en) 2023-06-20
WO2022246098A1 (en) 2022-11-24
US20230283577A1 (en) 2023-09-07
EP4342153A1 (en) 2024-03-27

Similar Documents

Publication Publication Date Title
US9143459B2 (en) Queue speed-up by using multiple linked lists
US7080168B2 (en) Maintaining aggregate data counts for flow controllable queues
US7649882B2 (en) Multicast scheduling and replication in switches
EP1810466B1 (en) Directional and priority based flow control between nodes
EP1728366B1 (en) A method for congestion management of a network, a signalling protocol, a switch, an end station and a network
US7050440B2 (en) Method and structure for variable-length frame support in a shared memory switch
US20040151197A1 (en) Priority queue architecture for supporting per flow queuing and multiple ports
US11637786B1 (en) Multi-destination traffic handling optimizations in a network device
US10645033B2 (en) Buffer optimization in modular switches
EP3562110A1 (en) Traffic management for high-bandwidth switching
US8363668B2 (en) Avoiding unfair advantage in weighted round robin (WRR) scheduling
US7164687B2 (en) Queue control method and relay apparatus using the method
US7342936B2 (en) Method of performing deficit round-robin scheduling and structure for implementing same
US8199764B2 (en) Scalable approach to large scale queuing through dynamic resource allocation
EP1488600B1 (en) Scheduling using quantum and deficit values
US20050190779A1 (en) Scalable approach to large scale queuing through dynamic resource allocation
US20040252711A1 (en) Protocol data unit queues
CN111756586B (zh) 一种数据中心网络中基于优先级队列的公平带宽分配方法、交换机及可读存储介质
US11683276B2 (en) Quasi-output queue behavior of a packet switching device achieved using virtual output queue ordering independently determined for each output queue
US10581759B1 (en) Sharing packet processing resources
Benet et al. Providing in-network support to coflow scheduling
US10205805B2 (en) Dropping or admitting packets to an output queue using policy-based scheduling and virtual destination queue occupancy values
US20190036832A1 (en) Packet Switching Device Modifying Paths of Flows of Packets Taken Within While Outputting Packets in Received Intra-Flow Order but Not Necessarily Inter-Flow Order
US11805066B1 (en) Efficient scheduling using adaptive packing mechanism for network apparatuses
CA2531813C (en) A scalable approach to large scale queuing through dynamic resource allocation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination