CN110417670B - 网络交换机 - Google Patents
网络交换机 Download PDFInfo
- Publication number
- CN110417670B CN110417670B CN201910264306.0A CN201910264306A CN110417670B CN 110417670 B CN110417670 B CN 110417670B CN 201910264306 A CN201910264306 A CN 201910264306A CN 110417670 B CN110417670 B CN 110417670B
- Authority
- CN
- China
- Prior art keywords
- ingress
- buffer
- read
- saf
- network switch
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/627—Queue scheduling characterised by scheduling criteria for service slots or service orders policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请案涉及用于高带宽交换的流量管理。在本系统中,网络交换机可经由一组输入端口接收一或多个数据包。所述网络交换机可将所述一或多个数据包写入由所述组输入端口共享的流入分块的流入缓冲器。所述网络交换机可根据通过调度器的调度从所述流入缓冲器读取所述一或多个数据包。所述网络交换机可将所述读取的一或多个数据包转发到多个输出端口。
Description
技术领域
本描述大体上涉及一种能够在网络交换机中执行交换功能的混合共享流量管理系统。
背景技术
网络交换机可用于连接装置,使得装置可彼此通信。网络交换机包含流量管理系统以处置由网络交换机接收的数据的传入流量及由网络交换机传输的传出流量。网络交换机可进一步包含由流量管理系统使用用于管理数据流量的缓冲器。网络交换机的输入端口及输出端口可针对不同目的而不同地布置。举例来说,可缩放操作时钟频率以更快地运行。此外,可实施例如直通特征的各种特征以增强网络交换机性能。
发明内容
本发明的一个方面涉及一种网络交换机,其包括:至少一个流入控制器,其经配置以:经由一组输入端口接收一或多个数据包;将所述一或多个数据包写入由所述组输入端口共享的流入分块的流入缓冲器;根据通过调度器的调度从所述流入缓冲器读取所述一或多个数据包;以及将所述读取的一或多个数据包转发到多个输出端口。
本发明的另一方面涉及一种网络交换机,其包括:多个输入端口;多个流入分块,其分别包含多个流入缓冲器,所述多个流入分块中的每一流入分块由所述多个输入端口中的一组相应输入端口共享;调度器,其连接到所述多个流入分块以调度通过所述多个流入分块的数据通信;多个流出缓冲器,其耦合到所述多个流入分块以从所述多个流入分块接收数据;及多个输出端口,其分别耦合到所述多个流出缓冲器,其中所述多个输出端口中的每一输出端口耦合到所述多个流出缓冲器中的相应流出缓冲器。
本发明的又一方面涉及一种网络交换机,其包括:至少流入控制器,其经配置以:经由一组输入端口接收一或多个数据包;将所述一或多个数据包写入由所述组输入端口共享的流入分块的流入缓冲器;确定由所述调度器发出的多个读取请求是用于在同一循环中从所述流入缓冲器的同一存储器库读取所述一或多个数据包中的至少一者的单元;当所述多个读取请求的数目大于N时,保持所述多个读取请求中的一或多者直到一或多个后续循环;以及在所述一或多个后续循环期间向所述流入分块发出所述多个读取请求中的所述一或多者。
附图说明
在所附权利要求书中阐述本技术的某些特征。然而,出于解释的目的,在下文附图中阐述本技术的若干实施例。
图1说明根据一或多个实施方案的在其中可实施网络交换机内的流量流动管理的实例网络环境。
图2是说明用于每循环处理单个数据包的网络交换机的共享缓冲器架构的实例图。
图3是说明用于每循环处理两个数据包的网络交换机的按比例放大的共享缓冲器架构的实例图。
图4是说明用于网络交换机的输入-输出-缓冲的流量管理器的实施方案的实例图,所述网络交换机经配置以每循环处理八个数据包。
图5是说明根据一或多个实施方案的用于网络交换机的混合共享交换机架构的实例图。
图6是说明根据一或多个实施方案的混合共享交换机架构中的每ITM缓冲器的库及到网络交换机内的流出缓冲器的数据路径的实例图。
图7是说明根据一或多个实施方案的正交队列组块的实例图。
图8是说明根据一或多个实施方案的被划分为支持正交队列组的排队块的实例图。
图9是说明根据一或多个实施方案的队列结构的实例图。
图10是说明根据一或多个实施方案的针对网络交换机的速率受保护的出列控制/数据路径限制的实例图。
图11是说明根据一或多个实施方案的队列出列的实例图。
图12是说明根据一或多个实施方案的流出缓冲器架构的实例图。
图13是说明用于网络交换机的存储器管理单元中的直通数据路径的实例图。
图14是说明根据一或多个实施方案的用于网络交换机的直通状态机的实例图。
图15是说明根据一或多个实施方案的流量管理器中的存储并转发路径的实例图。
图16说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程的流程图。
图17说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程的流程图。
图18说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程的流程图。
图19说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程的流程图,从图18的实例过程继续。
图20说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程的流程图,从图19的实例过程继续。
图21说明根据一或多个实施方案的利用其可实施本技术的方面的实例电子系统。
具体实施方式
下文阐述的详细描述希望作为本技术的各种配置的描述,并且不希望表示可实践本技术的唯一配置。附图并入本文并构成详细描述的一部分。详细描述包含用于提供对本技术的透彻理解的目的的特定细节。然而,本技术不限于本文阐述的特定细节,并且可使用一或多个实施方案来实践。在一或多个实施方案中,以框图形式展示结构及组件,以便避免模糊本技术的概念。
图1说明根据一或多个实施方案的在其中可实施网络交换机内的流量流动管理的实例网络环境100。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
网络环境100包含经由网络交换机104连接的一或多个电子装置102A到C。电子装置102A到C可连接到网络交换机104,使得电子装置102A到C可能够经由网络交换机104彼此通信。电子装置102A到C可经由电线(例如,以太网电缆)或无线地连接到网络交换机104。网络交换机104可为及/或可包含下文参考图5论述的网络交换机及/或下文参考图21论述的电子系统的全部或部分。电子装置102A到C被呈现为实例,并且在其它实施方案中,其它装置可代替电子装置102A到C中的一或多者。
举例来说,电子装置102A到C可为计算装置,例如膝上型计算机、桌上型计算机、服务器、外围装置(例如,打印机、数码相机)、移动装置(例如,移动电话、平板计算机)、固定装置(例如机顶盒)或能够通过网络进行通信的其它适当装置。在图1中,通过实例的方式,电子装置102A到C被描绘为网络服务器。电子装置102A到C也可为网络装置,例如其它网络交换机及类似物。
网络交换机104可在网络交换机内实施本流量流动管理。下文参考图5进一步论述实施本系统的实例网络交换机104,且下文参考图21进一步论述实施本系统的网络交换机104的实例过程。
网络交换机104可实施混合共享流量管理器架构,其中流量管理器包含主数据包有效载荷缓冲存储器。流量管理器执行中心主交换功能,其涉及将从输入端口接收的数据包数据移动到正确输出端口。流量管理器的主功能可包含接纳控制、排队及调度。接纳控制涉及基于缓冲器充满度及端口与队列之间的公平共享来确定是否可允许数据包进入数据包缓冲器或丢弃数据包。在排队中,被允许进入数据包缓冲器的数据包连结在一起成为输出队列。举例来说,每一输出端口可具有多个单独的逻辑队列(例如,8个单独的逻辑队列)。数据包在到达流量管理器中后列队,并在经调度离开其输出端口后出列。在调度中,在多个队列中具有积压数据包数据的端口可一次选择一个队列以使数据包出列,使得可将积压数据包数据传输到输出端口。这可基于一组可编程的服务质量(QoS)参数来完成。
网络交换机104可包含交换芯片,其通常可经配置以当网络交换机104包含更多端口及/或更快的接口时缩放操作时钟频率以更快地运行。可在针对流量管理器使用共享缓冲器架构的同时进行此类配置,其中输入端口及输出端口具有对整个有效载荷存储器的均等访问权,并且流量管理器的控制结构在每一时钟循环中对一或两个数据包(或数据包的部分)进行操作。
然而,最近的交换芯片不能够缩放操作时钟频率以实现晶体管超越其进行操作的速度,因此芯片的时钟频率可能不允许更快的操作。例如总装置功率的其它约束也可能限制最大时钟操作频率。因此,如果新交换芯片未经配置以增加芯片的时钟频率,那么芯片可能需要支持更多及/或更快端口,这使得难以将现有共享缓冲器架构用于更新一代及更大的交换机芯片。
替代交换机架构可用于支持更多及/或更快的端口,而无需将操作时钟频率缩放到非常高的带宽。举例来说,替代交换机架构可为输入-输出缓冲架构,其中有效载荷存储器被分为若干较小的区段,所述区段中的每一者可处置总交换机带宽的一小部分。然后,每一部分可以比交换整个带宽所需的时钟频率更低的时钟频率操作。此架构可能能够将交换机带宽缩放到比共享缓冲器架构高得多的带宽。然而,每一输入端口或输出端口都可访问总有效载荷存储器的一小部分。对于有限总有效载荷存储器的要求,存储器区段可能过小而不允许存储器空间的有效共享。
在共享缓冲器架构中,可一次处理有限数目的数据包(例如,一或两个数据包)。
图2是说明用于每循环处理单个数据包的网络交换机(例如,网络交换机104)的共享缓冲器架构的实例图200。流量管理器可每循环处理单个数据包或单个数据包区段,并且共享缓冲器架构可包含共享数据缓冲器、接纳控制组件、排队组件及调度组件。通过在总缓冲器内利用多个物理库,可使用单端口存储器实施数据包有效载荷缓冲器(例如,共享数据缓冲器)。当数据包经调度以被传输时,数据包可位于缓冲器中的任何位置、任何库中。当从一个库读取此数据包时,可将新接收的数据包写入缓冲器的不同库。
图3是说明用于每循环处理两个数据包的网络交换机(例如,网络交换机104)的按比例放大的共享缓冲器架构的实例图300。因为经调度而进行传输的两个数据包可同时驻留在同一库中,所以在图3的共享缓冲器架构中实施的缓冲存储器的每一物理库能够支持单个库内的两个随机访问读取。可始终引导在同一循环中接收的数据包被写入除正被读取的存储器库之外的存储器库中,同时避免与其它写入的冲突。此类型的存储器更昂贵(例如,就每存储器位的面积来说),但可能很容易实施。然而,缩放存储器设计以支持一次两个以上随机访问读取可能变得非常昂贵并且可能不是成本有效的方法。
检查每一数据包并确定将数据包交换到其的输出端口的交换机芯片中的数据包处理可被并行化,使得可并行执行多个数据包处理过程。举例来说,芯片可支持总共64个100Gbps接口(端口)。为跟上许多接口(例如,各自具有32×100Gbps接口的4根管线)的数据包处理要求,芯片可实施八个单独数据包处理元件,其中,举例来说,数据包处理元件中的每一者可通过每时钟循环处理1个数据包来支持多达8个100Gbps。芯片的时钟频率及端口数可决定并行数据包处理所需的数据包处理器的数目。因而,芯片中的流量管理器可能需要能够同时处置八个传入数据包或八个单元,其中每一单元是数据包的一部分。举例来说,数据包(例如,每数据包2000个字节)可被分为单元(例如,每单元128个字节)。流量管理器还可能需要在每一循环中选择八个传出数据包或单元,其中流出数据包具有独立流。
单个共享缓冲器交换机可能需要能够每一个循环写入八个单独单元并且读取八个单独的单元。处置多库共享存储器中的写入操作比处置多个读取操作更容易。可通过将个别写入指向共享存储器内的单独库来处置将单元写入缓冲器。然而,每一循环的八个缓冲器读取可能会在公共库上发生冲突,这是因为八个缓冲器读取是独立调度的,从而产生可能无法在共享缓冲器架构中轻松解决的库冲突。
另一种流量管理器架构是输入-输出-缓冲流量管理器架构。输入-输出-缓冲架构实施单独流入缓冲器元件及流出缓冲器元件,每一元件都支持总交换机带宽的一小部分。举例来说,每一缓冲器元件可能能够支持单个输入及输出单元。此外,可实施网状互连以提供流入缓冲器与流出缓冲器之间的连接。通常,流入缓冲器及流出缓冲器中的每一者都具有其自身的排队及调度控制结构。因此,总数据包有效载荷存储器跨越流入缓冲器及流出缓冲器被分为若干较小的部分,且因此每一输入端口可访问总缓冲器的一小部分。每一元件的独立控制及有限带宽也意味着可发生输入阻塞。
图4是说明用于网络交换机(例如,网络交换机104)的输入-输出-缓冲流量管理器的实施方案的实例图400,所述网络交换机经配置以每循环处理八个数据包。图4的输入-输出-缓冲流量管理器包含8个流入流量管理器(ITM)及8个流出流量管理器(ETM)。每一流入流量管理器包含流入缓冲器、接纳控制元件、排队元件及调度元件。每一流出流量管理器包含流出数据缓冲器、排队组件及调度组件。每一流入缓冲器经配置以支持单个输入单元及单个输出单元。每一流出缓冲器经配置以支持单个输入单元及单个输出单元。交叉连接组件提供8个流入缓冲器与8个流出缓冲器之间的网状互连。
输入-输出-缓冲架构可能具有若干缺点。举例来说,每一输入端口或每一输出端口可仅访问总有效载荷存储器的一小部分,这是因为缓冲器被分为若干较小的部分,其中每一部分每循环处置单个数据包。因而,缓冲带宽延迟乘积(例如,可用于任何一个输出端口的缓冲量)可能受到严格限制。将缓冲器分为更小部分也意味着应在每一流入及流出缓冲器处复制执行接纳控制及排队的控制逻辑,这可能会对单芯片ASIC设计及/或多芯片ASIC设计中的此架构的大小及成本产生重大影响。阈值化可能受到损害或变得更加复杂,这是因为难以控制分配给具有若干物理队列(VoQ)的逻辑队列的缓冲器空间,每一物理队列用尽空间。与共享缓冲器架构相比,调度功能的复杂性增加,这是因为调度器必须从每一逻辑队列内的多个源(VoQ)中进行选择并为其提供公平性。
输入-输出-缓冲的架构还可能由于源拥塞而遭受输入阻塞,当与不同流出缓冲器相关联的若干输出端口都需要传输来自单个流入缓冲器的数据包时,可能发生所述源拥塞。单个流入缓冲器可能不能够提供足够的带宽来同时支持所有输出端口,这可能导致由于所有受影响的输出端口的减少带宽而引起的性能损失。虽然可通过在流入缓冲器与流出缓冲器之间引入内部加速来减轻输入阻塞问题,但是此内部加速可能对流入级、互连及输出级的大小及复杂性产生重大影响,并且可能影响芯片的时钟频率(功率)及面积,其可能会质疑芯片设计的可行性。
本技术包含称为混合共享交换机架构的交换机流量管理器架构。混合共享交换机架构组合共享缓冲器交换机架构及输入-输出-缓冲交换机架构两者的元件,以能够将交换机中的总交换机带宽缩放到非常高的水平,同时保留共享缓冲器交换机的优势,其中所有输入及输出都可访问高百分比的交换机的有效载荷缓冲器。
混合共享交换机架构可利用少量的大流入数据缓冲器来实现输入端口的群组当中非常高水平的缓冲器共享。每一流入数据缓冲器元件(例如,称为流入分块或ITM)可服务多个输入端口。举例来说,如果混合共享交换机架构具有两个ITM,那么每一ITM可经配置以服务总交换机端口的一半。在一些方面,混合共享交换机架构可包含单个中央调度器,其经配置以跨越所有流入缓冲器调度流量以同时最大化每一输入分块的带宽并保持所有输出端口满足。由调度器调度的数据包可被转发到多个流出缓冲器(EB)。EB可与一组输出端口相关联。数据包一旦由调度器调度,那么即使存在若干小EB,也不需要再次调度所述数据包。可基于到达时间(例如,基于先来先服务)通过EB转发所调度的数据包。在一或多个实施方案中,交换机可包含分布式调度器,其中基于目的地的调度器同时从ITM拉出。
图5是说明根据一或多个实施方案的用于网络交换机的混合共享交换机架构的实例图500。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如图5中所展示,网络交换机104可包含混合共享流量管理器510、输入端口(流入端口(IP))520A到520H及输出端口(流出端口(EP))580A到580H。输入端口520A到520H可耦合到相应流入管线,并且输出端口580A到580H可耦合到相应流出管线。在一些方面,输入端口520A到520H与输出端口580A到580H之间的区别可为逻辑区别,并且相同物理端口可用于输入端口520A到520H中的一或多者以及输出端口580A到580H中的一或多者。如上文论述,经由输入端口520A到520H接收的数据包可经由数据包处理被分为单元,使得可在混合共享流量管理器510处存储单元并对其进行排队。
实例混合共享流量管理器510连接到输入端口520A到520H及输出端口580A到580H,并且包含两个ITM(也称为流入分块)530A到B,其包含第一ITM 530A及第二ITM 530B,其中ITM 530A到B中的每一者连接到四个输入端口。ITM 530A到B中的每一者包含流入缓冲器、排队组件及接纳控制组件。因此,第一ITM 530A包含流入缓冲器532A及排队组件534A,且第二ITM 530B包含流入缓冲器532B及排队组件534B。第一ITM 530A的流入缓冲器532A及排队组件534A连接到读取启动器550A。第二ITM 530B的流入缓冲器532B及排队组件534B连接到读取启动器550B。尽管图5中的读取启动器550A到B经说明为与ITM 530A到B分离的组件,但是读取启动器550A到B可分别驻留在ITM 530A到B中。第一ITM 530A的排队组件534A及第二ITM 530B的排队组件534B连接到集中式主调度器540。
ITM 530A及530B中的每一者可由其自身的控制器及/或处理器控制。举例来说,第一ITM 530A可由第一流入控制器538A控制,且第二ITM 530B可由第二流入控制器538B控制。ITM 530A及530B中的每一者可在硬件中实施(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑装置(PLD)、控制器、状态机、门控逻辑、离散硬件组件或任何其它合适装置)。
来自第一ITM 530A的流入缓冲器532A及第二ITM 530B的流入缓冲器532B的数据包被转发到交叉连接组件560,交叉连接组件560提供两个ITM 530A及530B的流入缓冲器532A及532B与具有相应流出缓冲器的流出缓冲器(EB)组件570A到570H之间的连接性。EB组件570A到570H分别连接到输出端口580A到580H。
EB组件570A到570H中的每一者可由其自身的控制器及/或处理器控制。举例来说,EB组件570A到570H可由相应流出控制器572A到572H控制。在一或多个实施方案中,EB组件570A到570H可为先进先出缓冲器,其存储从ITM 530A到B接收的数据(例如,单元、数据包等)。在一或多个实施方案中,一或多个EB组件570A到570H可连接到两个或更多个数据包处理器。然后可读出数据以供一或多个流出数据包处理器传输。EB组件570A到570H中的每一者可在硬件(例如,ASIC、FPGA、PLD、控制器、状态机、门控逻辑、离散硬件组件或任何其它合适装置)、软件及/或两者的组合中实施。
流入缓冲器532A到B中的每一者可被划分为多个存储器库。举例来说,在一些方面,ITM 530A到B中的每一者中的存储器库的带宽可用于支持比由单个存储器提供的总读取及写入带宽更高的总读取及写入带宽。写入操作可以避免读取操作及/或其它写入操作的方式转发到存储器库。
混合共享流量管理器510中的单个集中式主调度器540可基于跨越流入缓冲器532A到B的服务质量(QoS)要求及/或带宽可用性来调度数据包。因此,主调度器540可基于跨越ITM 530A到B的流入缓冲器532A到B的QoS要求及/或带宽可用性来发出读取请求以从ITM 530A到B的流入缓冲器532A到B读取单元。举例来说,如果八个单元经设置以每时钟循环转移到流入管线,那么可每一个循环从流入缓冲器调度及读取平均八个单元以维持到输出端口的带宽。主调度器540可由其自身的调度控制器542控制。主调度器540可在软件(例如,子例程及代码)、硬件(例如,ASIC、FPGA、PLD、控制器、状态机、门控逻辑、离散硬件组件或任何其它合适装置)、软件及/或两者的组合中实施。
如果主调度器540调度从同一存储器位置同时读取多个单元,那么可能导致对流入缓冲器的读取请求冲突。当两个或更多个读取请求在同一循环中从流入缓冲器(例如,流入缓冲器532A或532B)的同一存储器库读取单元时,可能发生冲突。举例来说,可能发生冲突,这是因为调度是基于QoS参数,并且可能需要在任何时间将任何排队的数据包发送到适当的输出端口。这导致对缓冲器的读取地址库(存储器读取请求)的不受控制的选择。因此,可能无法保证主调度器540将调度非冲突读取。应避免此类冲突,以防止停止输出调度及出列操作。
在一些方面,为补偿这些调度冲突,架构可允许延迟存储器读取请求并因此无序地发生。在一或多个实施方案中,来自主调度器540的单元读取请求可被转发到对应读取启动器(例如,读取启动器550A或550B),其可为逻辑块及/或专用硬件组件。读取启动器550A或550B解决存储器库冲突并且可每时钟循环向每一ITM的数据缓冲器发出最大数目的非冲突读取。彼此冲突的读取请求的一或多个读取请求由对应读取启动器(例如,读取启动器550A或550B)保持,直到后续循环,此时可在没有冲突的情况下发出一或多个读取请求。在一个实例中,如果第一及第二读取请求彼此冲突,那么可在下一循环期间发出第一读取请求,并且可在下一循环之后的后续循环期间发出第二读取请求。在另一实例中,如果第一及第二读取请求彼此冲突,那么可在当前循环期间发出第一读取请求,并且可在下一循环期间发出第二读取请求。在一或多个实施方案中,具有冲突的读取请求可保持在临时请求FIFO中(例如,与读取启动器550A或550B相关联),从而允许具有冲突的读取请求在读取启动器中被延迟而不阻塞对非冲突库的读取请求。这允许主调度器540根据需要继续调度单元以跟上输出端口带宽需求而不会停止。因此,使用读取启动器550A或550B,可重新排序单元读取请求以避免冲突。举例来说,在重新排序时,较旧读取请求可优先于较新读取请求。
读取启动器550A或550B允许在较旧延迟读取请求之前发出一些较新读取请求,从而创建从缓冲器的可能“无序”数据读取。在从流入缓冲器读取之后,然后将数据包及单元按顺序放回,然后由流出缓冲器发送出到最终目的地。此外,架构可提供读取加速。举例来说,每循环具有4次写入的ITM可支持每循环4+开销读取。写入带宽上方的读取加速允许系统在可能发生的任何冲突之后赶上。无序读取及读取加速的组合可允许架构维持到交换机芯片的所有输出端口的全带宽。
在一或多个实施方案中,每一流出数据包处理器及其服务的输出端口可由单个EB组件支持及/或EB组件可支持多个流出数据包处理器。举例来说,EB组件570A支持输出端口580A及服务输出端口580A的数据包处理器。在图5中说明的混合共享交换机架构500中存在八个EB组件570A到570H。EB组件可含有相对较小的缓冲器,所述缓冲器对来自流入缓冲器的数据进行重新排序并且馈送给每一流出数据包处理器。因为EB组件仅支持单个流出数据包处理器,所以EB组件可在一或多个实施方案中实施为简单缓冲器结构。
ITM的共享缓冲器可能能够每循环支持X个传入单元及X+个超速输出单元,其中ITM可包含共享缓冲器流量管理器的标准接纳控制及排队。混合共享交换机架构中的集中式主调度器可具有对所有ITM的可见性,并且可基于QoS参数及ITM可用性(例如,流入缓冲器可用性)来调度队列。实施读取启动器以解决多个调度单元的缓冲器库冲突(例如,读取冲突)并允许无序缓冲器读取防止使主调度器停止。混合共享架构中的每一EB组件可能能够在转发到流出数据包处理器(及到输出端口)之前重新排序数据(例如,排序成到达的顺序)。
混合共享交换机架构能够在不限制共享缓冲器及输入-输出缓冲架构的情况下将带宽缩放到更宽。混合共享架构在针对每一端口的缓冲容量方面具有与共享存储器架构几乎相同的性能,但可缩放到更大的总带宽。此外,与共享缓冲器架构相比,混合共享架构在其ITM的流入缓冲器上具有更小带宽要求。这使得流入缓冲器更易于使用简单单端口存储器来实施。混合共享交换机可通过添加在每一元件上具有相同带宽要求的更多流入分块来更多地按比例放大容量。
与输入-输出-缓冲架构相比,混合共享交换机架构还具有以下优点。举例来说,在输出端口的临时超载的情况下,所有端口都可使用更大缓冲器空间来存储数据。由于存在较少的流入缓冲器,因此每一流入缓冲器具有显著较大百分比的总有效载荷缓冲器。此外,控制结构排队可能需要更少的开销。输入-输出-缓冲架构在每一流入缓冲器块处需要一组完整的虚拟输出队列。虽然混合共享交换机架构还需要在每一流入缓冲器处的一组完整的虚拟输出队列,但混合共享具有较少的缓冲器,因此冗余VoQ的数目大大减少。在混合共享交换机架构中,单元请求的临时冲突是非阻塞的。对单元的读取请求的重新排序及内部加速使得混合共享架构无阻塞,而输入-输出-缓冲架构可能在各种流量模式下遭受来自源拥塞的输入阻塞。单个集中式主调度器可知晓所有VoQ,并因此允许跨越两个输入分块缓冲器的最优调度。主调度器可考虑源分块可用性以及QoS要求。
在ITM 530A到B中的每一者中,一组输出端口队列(例如,虚拟输出队列(VoQ))可为列队的。主调度器540可经配置以在混合共享流量管理器510中选择ITM 530A到B的ITM并选择所选ITM中的VoQ。ITM 530A到B中的每一者可能能够处置每循环的最大数目的出列,且因此主调度器540可在每ITM每循环调度高达此最大值。在一或多个实施方案中,与输入分块写入带宽相比,输入分块读取带宽可提供超速。举例来说,ITM 530A到B中的每一者可能够每时钟写入X个单元,同时能够每时钟读取X+个超速单元。EB组件570A到H中的每一者可实施浅目的地缓冲器用于突发吸收加流控制隔离。
流入数据缓冲器532A到B的每一流入缓冲器的有效载荷存储器可被划分为称为存储器库的区段,其中总读取及写入带宽高于每一存储器库的带宽。可与其它存储器库并行访问每一存储器库,且因此可在每一存储器库处执行读取操作及/或写入操作。在一些情况下,有效载荷存储器可包含大量存储器库,但是仅可使用一小部分可用带宽。
另外,控制路径可经配置用于多单元列队及多单元出列。传统上,流量管理器控制结构可能能够每循环使1或2个数据包或单元列队及出列。举例来说,传统上,所接收的每一数据包可触发产生列队,并且所传输的每一数据包可触发出列,其可将列队/出列率设置为大于或等于针对交换机的每秒最大数据包。然而,传统方法可能限制ITM容量,举例来说,4个输入/输出ITM可能需要16个端口存储器(4个列队及4个出列,其各自需要读取及写入)用于VoQ状态。
在混合共享交换机架构500中,为提供高容量ITM同时提供从每一输入管线接收每时钟1个数据包或单元及每时钟向每一流出管线传输1个数据包或单元的能力,在每一ITM(例如,ITM 530A或530B)中的控制路径可经配置以处置多数据包列队及多数据包出列。通过创建具有多数据包列队及出列的多数据包事件,由控制路径处置的事件的频率减小,这可允许混合共享流量管理器510在较低频率下操作及/或使用更有效的较低端口计数存储器。举例来说,每一ITM可支持6根输入管线,且因此每循环平均可列队6个数据包。针对较大的数据包,可一次将大数据包的多个单元列队。较小数据包可积累在一起以允许多数据包列队及多数据包出列。举例来说,单个调度事件可自然地使6个或更多个单元出列(例如,来自单个大数据包或多个小数据包)。还可积累多个小数据包以使单个多数据包列队事件输出队列。
每一ITM还可包含可为高带宽缓冲器的共享缓冲器,其中缓冲器按照每ITM进行划分。举例来说,每一ITM可支持每循环8次写入及8+次超速读取。对每一流入缓冲器(例如,流入缓冲器532A或532B)内的共享没有限制。
在一些实例中,可使用有效存储器来实施共享缓冲器。举例来说,总有效载荷缓冲器大小可为64MB,每一ITM具有32MB的共享缓冲器(例如,流入缓冲器532A或532B),实施为每库(32MB/N)MB的N个库。存储器库可每时钟循环执行1次读取或1次写入。写入带宽可为确定性的(例如,利用灵活寻址)。读取带宽可为非确定性的(例如,利用固定寻址),其中读取不能够被写入阻塞,且读取不能够被其它读取阻塞。
图6是说明根据一或多个实施方案的混合共享交换机架构中的每分块的缓冲器的库及到网络交换机内的流出缓冲器的数据路径的实例图600。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如图6中所展示,网络交换机104可包含流入缓冲器532A,其经配置以经由IP 520A到520D及EB组件570A到570D接收数据。在用于混合共享交换机架构的ITM 530A的实例数据路径中,流入缓冲器532A可被分为N个有效载荷存储器库。可对流入缓冲器532A执行每循环4次写入,并且可从流入缓冲器532A执行每循环5次读取。来自ITM缓冲存储器的5次读取可与来自来自另一ITM(例如,ITM 530B)的另一流入缓冲器(例如,流入缓冲器532B)的5次读取配合,然后可将结果发送到4个EB组件570A到570D,以通过4个EP 580A到580D输出。每循环不超过最大数目的单元可从流入缓冲器532A发送到EB组件570A到570D的单个EB组件。在一或多个实施方案中,可每EP实施小的EB分级缓冲器以对读取数据重新排序并且吸收每EP的短突发。
在一或多个实施方案中,混合共享交换机架构的控制平面可能不需要缩放到最高每秒包(pps)速率。可减少VoQ列队/出列事件,并且列队率及出列率可小于最小数据包pps率。多数据包列队/出列事件可能需要VoQ列队及出列单元或数据包积累,及/或可能需要多数据包列队/出列控制结构。访问的受控分布跨越物理存储器分布可减少个别存储器带宽要求。
在本技术中,每控制平面可使用增加数目的输入端口接口,因此可能需要较少控制平面。较少控制平面可能需要较少VoQ结构,这可减少VoQ结构所占用的区域及/或可减少输出队列保证/公平性的划分。此外,每控制平面的输入端口接口数目的增加改进分块内的源当中的资源共享,并且还可减少源拥塞。举例来说,单个管线可在高于管线带宽下(在输入分块限制内)突发到出口。除在输入分块内共享之外,输入分块可提供超速,如上文论述(例如,针对4个输入管线的5个单元读取)。由于低速率多数据包列队及出列事件,可使用低端口计数存储器来实施控制平面。
针对较大数据包,可通过使每输入端口的重组FIFO积累数据包来创建多单元列队,然后所述数据包可作为单个事件列队到其目标VoQ。针对各自针对不同VoQ的小数据包,重组数据包状态是不充足的。因此,根据本发明的方面,总VoQ数据库可被分段为N个VoQ库,其中每一VoQ库具有(总VoQ/N)VoQ条目并且不存在VoQ状态的复制。输出积累FIFO在VoQ列队阶段之前实施,其中每一FIFO内的单元不能在任何VoQ库中寻址多于M个VoQ,其中M是VoQ库在每时钟循环可接收的最大VoQ列队数目。然后可从FIFO读取多个单元,寻址多达N个VoQ,知道由事件访问任何存储器库中不超过M个VoQ。在实例实施方案中,N=8并且M=1。
下文描述解释关于ITM 530A的流量管理器控制平面,作为实例。另一ITM(例如,ITM 530B)可包含到ITM 530A的流量管理器控制平面的类似流量管理器控制平面。ITM530A的流量管理器控制平面可包含正交队列组(OQS)块1414,作为排队块830A的部分。流量管理器控制平面可驻留在ITM 530A中。在一或多个实施方案中,流量管理器控制平面可驻留在ITM 530A的排队组件534A中。在一或多个实施方案中,排队组件534A可利用流入缓冲器532A来存储数据及/或队列。排队块830A连接到流量管理器的主调度器540,其中主调度器540能够与读取启动器(RL)550A通信。RL 550A与流入缓冲器532A通信以读取待经由EB块转发到EP的数据包。流入缓冲器532A还可与ITM 530B的流入缓冲器532B通信。下文提供关于OQS块1414及其父排队块830A及RL 550A的额外细节。
在OQS块1414处,OQS块1414的输出积累FIFO可积累用于相同VoQ的单元/数据包以创建多单元及/或多数据包列队。这允许控制路径列队率小于每秒最大数据包速率。OQS块1414可将多个列队压缩为OQS队列。在OQS块1414处,从输入管线接收的每一数据包可交换到OQS块1414中的输出积累FIFO。举例来说,OQS块1414可从输入管线每循环接收多达4个单元。
此外,在OQS块1414处,输出积累FIFO还可针对一组VoQ在每一输出积累FIFO内积累单元/数据包。输出积累FIFO内的所述组VoQ集合可称为OQS,其中相同OQS内的每一VoQ被放入排队块中的单独VoQ库中。因此,在OQS块1414中排出输出积累FIFO可产生在排队块830A中跨越VoQ库分布的一或多个VoQ队列(例如,多达排队块830A中的VoQ库的数目),每一VoQ列队到不同VoQ库。每一VoQ列队可为多单元及/或多数据包列队,即每时钟循环从1加到最大单元数目到VoQ。这可使用排队块830A中的VoQ库实现每时钟循环多个VoQ列队,其中每一VoQ库支持每时钟1个VoQ列队。在一或多个实施方案中,VoQ块可含有每时钟循环多个列队,在此情况下,输出积累FIFO内的OQS队列组可在每一VoQ库中含有多个VoQ。
来自输入管线的多达X个单元可在每时钟循环写入到1与X个之间的输出积累FIFO。举例来说,所有数据包/单元可写入到一个输出积累FIFO,或者可写入到一或多个不同输出积累FIFO。在一些方面,输出积累FIFO吞吐量可足够大以确保没有连续积累积聚并且避免FIFO缓冲器管理/丢弃。因此,举例来说,输出积累FIFO吞吐量可大于或等于总输入管线带宽加上ITM内的任何所需的多播列队带宽。这也允许FIFO较浅并且大小固定,这最小化管理每一FIFO所需的控制状态。虽然输出积累FIFO具有高列队率加出列率,但输出积累FIFO比VoQ更少,并且每输出积累FIFO的控制状态远小于VoQ列队状态,所述架构允许所述状态在区域及功率有效存储器中实施,从而支持低至每时钟1个列队。
输出积累FIFO状态具有高访问计数,例如,针对每一FIFO列队及出列事件的读取加写入。在一个实施方案中,每输出端口可能存在一个输出积累FIFO,并且VoQ库的数目可能等于端口内的队列的数目。在另一实施方案中,每一对输出端口可能存在一个输出积累FIFO,并且VoQ库的数目可为端口内队列数目的两倍。
根据本发明的架构可确保来自输出积累FIFO的出列不会使VoQ库列队率过载。可从输出积累FIFO读取多个单元,所述输出积累FIFO可含有一或多个数据包。举例来说,可从输出积累FIFO读取一个大数据包并且将其列队到单个VoQ,或者可将多个小数据包读取到相同或不同VoQ。VoQ库实施方案(及底层VoQ结构)经配置以支持在单个列队更新中将多个单元/数据包添加到VoQ。
图7是说明根据一或多个实施方案的OQS块的实例图700。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
输出积累FIFO提供(输出)列队积累。在一或多个实施方案中,针对OQS块1414的输出端口积累FIFO可为流入缓冲器532A的部分,或者可驻留在排队组件534A中。OQS块1414从输入管线接收数据包的串行流。可写入每时钟从输入管线接收的数目的单元,并且可将每时钟循环待写入的单元分配给输出积累FIFO中的一或多者。举例来说,时钟循环中的8个单元可分配给8个输出积累FIFO中的一或多者。在实例图中,在一个时钟循环中,OQS块1414接收8个单元(A0到A7)。在一个时钟循环的8个单元中,一个单元(A2)被写入一个输出积累FIFO,三个单元(A7、A1及A0)被写入另一输出积累FIFO,且四个单元(A3、A4、A5、A6)被写入另一输出积累FIFO。OQS块1414可用作从源到目的地的控制交换点。
输出积累FIFO可经定大小以通常避免在将大数据包写入输出积累FIFO时产生回压。OQS仲裁器720可每时钟循环从输出积累FIFO使比在时钟循环中写入的单元更多的单元出列。这防止输出积累FIFO达到其最大填充水平,并提供额外出列带宽以读取具有浅填充水平的输出积累FIFO。在一或多个实施方案中,每一输出端口或每一组输出端口可映射到输出积累FIFO。
OQS仲裁器720每时钟循环可进行多达N个FIFO选择,以尝试每时钟读取Y个单元,其中与ITM在一个时钟循环内从其流入管线接收的单元数目相比,Y可含有超速。不同的实施方案可具有不同的N及Y值以满足交换机要求。在实例中,N可为1并且Y可为6,在另一实例中,N可为2并且Y可为8。OQS仲裁器720可产生数据包的串行流。举例来说,OQS仲裁器720可在交换到不同输出积累FIFO之前将一个输出积累FIFO完全排出到数据包的结尾。具有最深填充水平(量化)的输出积累FIFO可具有最高优先级,随后是处于非空状态最长时间的FIFO。
OQS仲裁器720可使用FIFO老化器方案。FIFO老化器方案用于将具有浅填充水平的老化FIFO的优先级提高到高于也具有浅填充水平的其它非老化FIFO。具有高填充水平的FIFO(老化或未老化)具有最高优先级,这是因为这些具有有效出列,其在被选择时提供超速并且释放出列带宽以用于较低效率的浅出列。OQS仲裁器720的输出FIFO老化器方案可进一步能够基于输出端口速度及队列高/低优先级配置来设置老化器定时器。因此,举例来说,输出FIFO老化器方案可用于为需要低延迟的数据包最小化通过输出级的延迟。
图8是说明根据一或多个实施方案的排队块830A的实例图800。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
排队块830A实施含有用于多单元出列事件的VoQ积累的VoQ库级(单个出列可为多个单元)。来自相同输出积累FIFO 820A的单元不能使任何一个VoQ库过载。例如输出接纳控制的其它控制结构可具有与排队块830A中的VoQ库存相同的库结构。执行跨越物理存储器库的多个单元列队的受控分布。在一或多个实施方案中,排队块830A的VoQ库可为流入缓冲器532A的一部分,或者可驻留在排队组件534A中。
此结构在每一时钟循环对OQS块内的一或多个VoQ执行多单元列队,同时用每时钟循环仅支持低至一个列队的数据库实施VoQ库。每一VoQ列队可向VoQ添加多个单元/数据包。
如先前论述,来自输出积累FIFO的每一读取可产生对于不使任何一个VoQ库过载的VoQ的列队请求。输出积累FIFO级可在每一时钟循环中从N个输出积累FIFO提供多达Y个单元。这可产生每时钟循环N个VoQ列队,其中每一OQS被指派每VoQ库一个VoQ或每时钟循环多个N个VoQ列队,其中每一OQS被指派每VoQ库多个VoQ。实施方案可支持每时钟从N个输出积累FIFO读取,使得产生到VoQ库的VoQ列队的最大数目超过VoQ库在时钟循环中可支持的数目。如果发生此情况,那么实施方案应抑制最后的数据包,所述数据包使VoQ库过载以在下一时钟循环中首先列队。VoQ列队抑制直到下一循环可与在下一循环中接收的新列队请求组合。
图9是说明根据一或多个实施方案的混合共享队列结构的实例图900。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进改变。可提供额外组件、不同组件或更少组件。
VoQ内的每一单元(或数据包)在队列块中被指派时隙条目以保持单元/数据包的控制状态。图9中针对VoQ的VoQ结构由队列块的链接列表构成,其中队列块链接数据库用于创建链接。此VoQ结构的益处在于允许在一个访问中读取单个队列块内的多个单元或数据包,同时仍支持将队列深度灵活且动态地指派给活动VoQ。因此,积压队列由动态分配的队列块构成。举例来说,图9中的此VoQ结构包含每队列块含有8个单元或数据包的队列块实施方案。单元控制保持单元有效载荷存储器地址。每时钟循环可将多达8个单元写入VoQ队列块。
在一或多个实施方案中,队列块内的单元控制时隙的数目可取决于装置的多单元列队及出列的大小(单元的数目)及频率而改变。
可提供{EP号、MMU端口号、MMU队列号}到VoQ库的可配置映射。映射可避免所有端口的相同MMU队列号映射到相同VoQ库。针对在可能使VoQ库的最大列队率过载的时钟循环中读取N个OQS FIFO的实施方案,映射可尝试跨越VoQ库分配列队负载以减少任何一个库过载的概率。
根据一或多个实施方案,本发明具有每ITM的有效载荷存储器。举例来说,ITM有效载荷存储器支持每时钟循环的NUMIPITM单元写入加上(NUMIPITM+X)单元读取,其中NUMIPITM是连接到ITM的IP接口的数目,且X是所需的读取开销,以最小化输入阻塞及流出缓冲以到维持端口吞吐量。本发明的数据路径允许使用有效单端口存储器来实施支持每时钟的多次写入及读取的有效载荷存储器。为实现此类特征,将总ITM有效载荷深度分段为数个较浅有效载荷存储器库。因此,ITM有效载荷存储器可被分段为多个有效载荷存储器库。每一有效载荷存储器库可被划分为若干有效载荷存储器例子。实例有效载荷存储器可支持每一有效载荷存储器库每时钟支持一次写入或一次读取,这可使用一或多个单端口存储器例子来实施。
关于本发明的出列特征,出列架构利用多单元VoQ出列来支持低于每秒所需的数据包速率的出列率。在一或多个实施方案中,可设置每时钟出列数目及每出列最大单元数目,使得最大总出列单元速率高于所需输出端口带宽的总和,以允许浅VoQ出列。在最大VoQ列队负载下,浅出列可能导致其它VoQ备份,然后可以(高达)最大速率将其排出以实现总体所需吞吐量。每出列单元数目及每时钟循环出列数目可为装置特定的。
RL 550A到B中的每一者可缓冲的读取请求的突发。举例来说,RL 550A到B可各自产生到每时钟有效载荷存储器的最大8个单元读取请求。目标可能是发出8个最旧非冲突有效载荷读取。RL 550A到B可各自重新排序读取请求以避免有效载荷存储器库冲突。如果所产生的读取请求速率不能跟上出列速率,那么RL 550A到B中的每一者可对主调度器540进行回压。RL 550A到B可交换状态以最小化针对EB的单元读取突发长度。
EB缓冲可几乎表现为单个端口FIFO。EB组件570A到H可不干扰主调度器540的优先级/公平性决定。在一或多个实施方案中,EB组件570A到H中的每一者可含有多个队列以允许对基于优先级的流控制的快速响应。
在一或多个实施方案中,主调度器540可经配置以选择将从其出列若干个单元的VoQ。选择可尝试保持输出端口带宽,同时在端口内选择VoQ以遵守端口的QoS配置。
在此架构中,每一出列选择可从VoQ读取多个单元。为简单起见,在一或多个实施方案中,期望(尽管不是必需的)每一出列将使用图9中所展示的VoQ结构读取队列块内的最大数目(例如,8)的单元时隙。主调度器540可基于端口速度以及每一出列内的单元的数目来调整背到背端口选择间隔。ITM可能不能够为所有输出端口提供充足的出列带宽。主调度器540可考虑两个ITM中的VoQ的加载及可用性,并且在可能的情况下通过向每一ITM发出出列来优化吞吐量而不损害端口的QoS要求。
主调度器(例如,主调度器540)将来自ITM有效载荷缓冲器(例如,流入缓冲器532A到B)的数据包传输到每EP接口或一组EP接口的EB组件的流出缓冲器。由于主调度器可超速传输到每一端口,因此EB组件可含有每端口若干数据包。除主调度器之外,每一EB组件可能或可能不含有其自身的调度器以从EB组件传输到其EP接口。此EB调度器使主调度器的严格优先级策略(最小化通过EB组件的严格优先级数据包延时)与端口带宽分配相匹配。
由于主调度器可每出列调度多个单元,因此在调度完全出列时其可产生显著的超速。出列控制及数据路径可能限制主调度器应观察的总单元数目、每EB组件单元数目及每端口单元数目。这可使用信用/流动控制及调度器调步来实施(知晓总数、EB及端口的最大及平均突发单元率)。跨越EB组件的EB率是恒定的,与EB组件内活动的端口带宽无关。因此,主调度器不会尝试控制EB公平性。端口速率因由装置支持的不同端口速度而异,并且可能具有配置值。
可基于每一出列内的单元数目来强制执行最小端口到端口间隔。一或多个实施方案还可考虑待从每一单元传输的字节数目。具有更高数目的单元或字节的出列可观察更长的端口到端口间隔以允许其它端口获得更多出列带宽,即使具有更高的间隔,端口仍然被分配与EP所需的速率相比的超速。
图10是说明根据一或多个实施方案的针对网络交换机(例如,网络交换机104)的信用保护的出列控制/数据路径限制的实例图1000。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如图10中所说明,主调度器540可观察EB组件570A内的输出端口信用,并且可基于所观察的输出端口信用来确定是否选择输出端口。通过主调度器540的调度器挑选被传递到ITM的排队块,所述排队块在向RL发出单元读取请求之前检索包含有效载荷读取地址的单元控制。
每一出列访问排队块内的不同的VoQ状态。如列队流程内所描述,排队块含有VoQ库,且OQS FIFO控制寻址每一库的列队数目。在某些应用中,调度决定可确保到任何VoQ库的出列率不超过库的保证出列带宽。针对支持每VoQ库2个出列的图11中的实例实施方案,主调度器540可能不知晓VoQ库,在此情况下两个出列都可访问相同的VoQ库。在其它应用中,每库出列数目可多于或少于每时钟2个出列。调度器可主动选择VoQ以避免在不影响端口的QoS要求的情况下使VoQ库的出列速率过载。在其它应用中,调度器VoQ选择可使VoQ库的出列率过载,在此情况下,稍后的VoQ选择可被抑制到后续时钟。
图11是根据一或多个实施方案的说明一个时钟循环中的一组出列的实例图1100。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
队列数据库(例如,在排队块830A中)可支持每时钟循环高达Z个出列。每一出列都是独立的。出列可用于排队结构内的相同或不同的VoQ库。在图11中,其中Z=2,每一库支持2个同时出列操作。每一出列导致排队块830A之中的1-Y个单元地址(例如,2个出列多达ZY个单元地址)。
由EB组件执行的一个任务可为将每ITM单元重新排序为原始调度器顺序。读取启动器550A可重新排序发出到ITM的单元读取请求,以优化有效载荷存储器带宽,同时避免有效载荷库读取冲突。EB组件含有重新排序FIFO,其将单元读取数据重新排序为原始调度器顺序。一旦重新排序,就将单元转发到EB队列。
由EB组件执行的另一任务是观察流控制。可支持对每一端口的暂停或PFC流控制。如果接收暂停xoff,那么EB将停止将端口传输到EP,并且可将状态映射回主调度器以使其停止调度到此端口。实施方案可能允许EB端口FIFO填充,这将引起主调度器用完EB端口信用并停止调度到所述端口。在一或多个实施方案中,不允许由于暂停引起的数据包丢失。
针对PFC流控制,每一端口可接收例如多达8个PFC类xon/xoff流控制状态。此状态可映射回到主调度器内的MMU队列,使得主调度器将停止从映射到xoff状态的PFC类的VoQ传输。此外,EB实施方案可支持每端口的多个PFC类队列,其也可由PFC类进行流控制,以实现更快的PFC响应时间。映射到EB PFC类队列的PFC类也可映射到映射到所述EB PFC类队列的MMU队列。EB PFC类队列将停止从EB组件排出,且主调度器应停止传输到EB PFC类队列。
在一或多个实施方案中,由于PFC流控制,在出列流动内不应存在数据包丢失。在这方面,EB调度器可不将来自xoff状态的EB PFC类队列的数据包传输到EP,同时允许数据包传输到端口,只要其被映射到处于xon状态中的EB PFC类队列即可。EB PFC类队列可能需要EB缓冲来吸收接收xoff时正处于飞行中的数据包。
由EB组件执行的另一任务可为EB调度到EP接口。每一EB组件可含有EB调度器,以为EB组件内的每一端口分配带宽。应为每一端口分配EP带宽的公平部分,其与由主调度器分配的部分一致。
EB组件可含有每端口一组PFC类队列。为最小化严格优先级数据包的延时,EB PFC类队列可经配置以针对同一端口内的其它EB PFC类队列进行严格的优先级选择。除观察PFC流控制之外,这允许严格优先级数据包绕过已存储在EB组件内的较低优先级数据包。EB组件570A含有维持全线速率所需的最小缓冲。
图12是说明根据一或多个实施方案的流出缓冲器组件架构的实例图1200。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
在实例图1200中,每EP存在一个EB组件。EB组件570A含有维持全线速率所需的最小缓冲。由于通过RL及流入缓冲器的非确定性延迟,EB组件570A实施第二SAF点。如图12中所展示,EB组件570A每循环从主分块缓冲器接收2个单元,并且每循环将2个单元写入EB组件570A(例如,单元0及单元1)。EB组件570A每循环读取1个单元以发送到输出端口580A。
网络交换机通常支持两种将数据包从输入端口传递到输出端口的方法,所述方法是存储并转发(SAF)及直通(CT)。因此,混合共享流量管理器架构还可支持SAF交换及CT交换。在调度并将整个数据包传输到输出端口之前,SAF交换将其积累在ITM的数据缓冲器中。当输出端口拥塞时,利用SAF交换。当两个或更多个输入端口尝试将数据发送到同一输出端口时,输出端口变得拥塞,且因此进入SAF状态。在SAF状态中,在允许数据包的第一个字节退出交换机输出端口之前,应完全接收所有数据包,这可能导致比CT状态更长的延时。
在CT交换中,一旦部分数据包数据到达ITM,就可将部分数据包数据转发到输出端口(例如,而不是等待整个数据包积累)。举例来说,CT操作允许一接收单元就将每一单元逐个单元地发送到其输出端口,甚至在接收数据包的所有单元之前。当针对输出端口不存在存储流量时,到达任何输入端口的下一数据包可“直通”到具有低延时的非拥塞输出端口。此输出端口被认为处于CT状态。与SAF路径相比较,CT交换提供通过网络交换机的低延时路径。
针对数据包中的数据包起始(SOP)单元,流量管理器决定是采用SAF路径还是CT路径。一旦对数据包的SOP单元做出决定,数据包的所有后续单元就可遵循相同路径。输出端口可取决于流量条件在CT状态与SAF状态之间来回改变。若干条件确定输出端口是处于SAF状态还是CT状态。当输出端口的队列为空,或者输出端口没有积压时,或者默认情况下,输出端口可设置为CT状态。当输出端口处于CT状态时,可允许新到达流量管理器的数据包数据直通。当输出端口积压了数据流量时,输出端口可从CT状态改变为SAF状态,并且新到达的数据包数据可遵循SAF路径。当输出端口已处于SAF状态时,新到达的数据包遵循SAF路径。当输出端口变得不拥塞(例如,没有积压及/或空输出端口队列)时,输出端口可改变为CT状态。
当数据包数据行进通过CT路径上的MMU(例如,流量管理器)时,此类数据包数据可优先于SAF路径上的数据包数据,以便维持低延时及CT控制的简单性。举例来说,当从主ITM数据缓冲器读取数据单元,可将优先权给予CT路径上的数据包数据,从而将单元数据从ITM流入缓冲器传递到EB缓冲器及/或将单元数据写入到EB数据缓冲器及从EB数据缓冲器读出单元数据。
当输出端口切换到SAF状态时,输出端口可能难以返回到CT状态。即使除一个输入端口之外的所有端口都停止传输到给定输出端口,输出端口也可保持在SAF状态中。因为在SAF模式下开始传输之前应完全接收数据包,所以输出端口处的SAF队列可能不会变为完全空,除非在对应于接收至少一个完整数据包的时间周期内没有接收数据。此外,在某些情况下,即使传入数据包的数据速率下降,输出端口中的SAF队列也可能始终处于积累待传输的下一SAF数据包的中间数据包状态。因此,SAF队列可能很少变为完全空,并且输出端口即使在不拥塞时也可能看起来拥塞。因此,期望一种容易从SAF状态转变到CT状态的方法。此外,输出端口可保持在CT状态的时间越长,交换机的性能越好,这是因为更多的数据包经历通过交换机的更低延时。因此,可能需要从一开始就维持较长的CT状态,借此使CT状态更具弹性。
一般来说,如果输出端口处于SAF状态,那么在允许输出端口改变到CT状态之前,流量管理器等待直到输出端口的队列完全为空。根据本发明的方面,处于SAF状态的输出端口可在进入CT状态之前进入转变CT(TCT)状态。如果到CT状态的转变成功,那么输出端口从TCT状态转变到CT状态。在移动到TCT状态之后,输出端口可能无法完全转变到CT状态。举例来说,如果在输出端口处于TCT状态时输出端口有新的流量突发到来,那么转变到CT状态可能会失败。如果从TCT状态到CT状态的转变失败,那么输出端口可从TCT状态返回到SAF状态。
此外,为维持CT状态,可实施用于弹性CT状态的额外特征。举例来说,弹性CT状态可吸收更高程度的拥塞,及/或可在更长的时间周期内吸收瞬态拥塞。弹性CT状态可允许高速输入端口直通到低速输出端口。此外,可实施突发控制机制以在多个端口处于CT状态时最小化突发缓冲。举例来说,可吸收小突发(例如,尤其是从快速输入端口到慢速输出端口)而不会脱离CT状态。
虽然低延时是CT交换的益处,但是可对允许直通的数据包类型施加若干限制。任何数据包的CT资格也可基于MMU内的条件。这些限制反映在CT特征中如下。CT交换通过MMU提供从输入到输出的低延时。经由TCT从SAF状态到CT状态的预测转变是可用的。在相同速度的任何一对前面板端口之间允许CT交换。在某些限制下,也可允许从较快的端口到较慢的端口进行CT交换。针对一或多个或所有CT数据包(例如,CT路径上的数据包)更新一或多个或所有主调度器最小及最大速率整形器。CT模式中的一或多者或所有端口以与SAF数据包相同或更好的响应时间响应于PFC。CT状态是弹性的,因为小的突发(特别是从快速到慢速端口)被吸收而不会脱离CT状态,并且在被迫进入SAF状态之后,很容易回到CT状态(使用TCT状态)。
在一或多个实施方案中可能不支持的CT特征可如下。针对多播数据包可能不允许CT交换(仅针对单播允许CT)。针对“镜像”数据包副本可能不允许CT交换。然而,仍然允许单播及镜像数据包的单播交换副本进行CT交换,而镜像副本应采用SAF路径。针对从较慢端口到较快端口的数据包,可能不允许CT交换(由于欠载及复杂性考虑)。针对每一输出端口一次仅允许一个输入端口进行CT交换。如果在从另一源端口直通数据包的中途第二个数据包到达输出端口,那么所述第二个数据包应采用SAF路径,这会强制输出端口进入SAF状态。此时,输出端口被超载,并且CT控制逻辑可能不必处置针对相同输出端口的来自不同源端口的单元的交错到达。可能没有高优先级CT,因为CT路径是到每一个输出端口的单个优先级路径。当其它较低优先级数据包已被接受或正在到同一输出端口的过程中时,可能不允许高优先级数据包采用CT路径,无论所述较低优先级数据包当前采取CT路径还是SAF路径。可能不与暂停流控制(例如802.1X端口暂停流控制)一起支持CT交换。
为允许CT交换,CT交换不能干扰到其它输出端口的SAF流量。如果MMU设计中的带宽瓶颈开始限制SAF带宽,因为CT交换具有更高的优先级,那么CT流量被缩减以允许公平访问所有端口的可用内部带宽。在任何时候,单个EP/EB内的某些端口可能处于SAF状态,而其它端口处于CT状态。允许存在SAF的CT数据包的限制可能包含总缓冲器读取带宽(流入缓冲器的分块带宽),避免EB保护溢出(例如,保持在EBP及EB的每循环限制的单元内),以及EB每管带宽(管带宽)(例如,主要是由于单个管内的超载条件)。应注意,当一或多个端口丢失带宽时,可禁止管线(例如,EB)中的所有端口进行CT操作(例如,由于EDB起始计数值上的暗示)。
当输出端口处于CT状态并且以100%线速率接收数据包时,如果EP数据包处理添加封装或以其它方式导致输出数据包大小大于传入数据包大小,那么输出端口可变为“超载”。当发生此类情况时,MMU内的数据包备份是不可避免的。在一或多个实施方案中,当由于通过EP的数据包大小扩展而在MMU内备份CT数据包时,MMU将从CT状态改变为SAF状态。
每一EB组件具有针对CT及SAF数据包的带宽分配限制。CT分配是基于输入端口的速度,其可比输入端口传输到其的输出端口更快。由于支持的端口速度不同,可在允许所有端口进入CT状态之前达到总带宽限制。在此情况下,基于先到先得授予CT状态。在一或多个实施方案中,“端口对串流”测试可同时在所有端口上传输CT数据包,例如在输入端口速度与输出端口速度匹配时。
CT数据路径与SAF数据路径相同,而CT控制路径不同于SAF控制路径。图13是说明用于网络交换机(例如,网络交换机104)的MMU中的直通数据路径的实例图1300。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如下文解释,在数据路径上通过MMU传递数据包单元有五个主要步骤。在步骤1,将来自输入端口的到达单元写入ITM 530A的流入缓冲器532A。此步骤针对CT及SAF数据包是相同的。数据单元与直通决定处理并行地写入流入缓冲器532A。
在步骤2,从流入缓冲器532A读取CT单元。此时,单元/数据包被标记为CT或SAF。在写入CT单元数据之后,以固定数目的循环从流入缓冲器532A读取CT单元数据。这与SAF数据包不同,SAF数据包可在从流入缓冲器532A读取之前排队及调度,因此在从流入缓冲器532A读取之前具有可变延迟。具有从写入到读取CT单元数据的固定延迟可简化CT处理并且可确保在需要时可从流入缓冲器532A读取CT单元,因为流入缓冲器写入库地址被灵活地指派并且保证不会发生冲突。在将CT单元写入相同流入缓冲器地址之后,在固定数目的循环中读取相同流入缓冲器地址也可确保此类流入缓冲器地址在读取时不会经历冲突。
通过RL(例如,RL 550A或550B)授予流入缓冲器读取地址/请求,其中RL可含有SAF读取地址请求的FIFO,并且可每ITM每循环选择多达六个非库冲突地址。在一或多个实施方案中,CT读取可始终具有比RL中的任何SAF读取更高的优先级。因此,当为CT指定数据包时,较高优先级允许在CT单元被写入之后在固定数目的循环中从流入缓冲器读取CT单元。因此,举例来说,可在SAF读取之前执行CT读取。这还意味着每循环可从每一流入缓冲器读取每循环多达四个CT单元。流入缓冲器支持每循环读取多达6个单元,这是应在CT单元与SAF单元之间划分的带宽。因此,一些带宽可用于SAF读取。
RL可将从流入缓冲器读取的SAF单元的数目限制为每循环两个,其去往EB组件570A到570H中的任一者。利用针对两个相应ITM 530A到B的两个RL(例如,RL 550A到B),举例来说,在任何一个循环中,可由组合RL选择去往单个EB组件的多达四个单元。两个RL彼此通信,使得可在几个循环内获得两个RL之间的每循环的两个单元的平均值。这使EB保护(EBP)缓冲的大小保持最小。然而,由于每一流入端口的CT决定是独立的,因此从单个EB组件的两个流入缓冲器读取的CT单元的总数目实际上可每循环多达8个。针对若干循环的单个目的地EB,可发生每循环八个单元的突发。突发的大小受到单个管线内端口数目及EB直通管理器(EB-CTM)CT授予的限制。此外,读突发大小受到来自IP的单元的调步的限制。CT突发性质可为设计EBP的确定因素,可能不允许其溢出。
允许CT单元通过流入缓冲器532A进行分级需要以严格的优先级(针对每一ITM)执行用于读取及写入的流入缓冲器库地址选择。在一或多个实施方案中,多达四个CT读取可始终是最高优先级并且首先得到保证。应注意,流入缓冲器库不会发生冲突,因为写入CT数据也同时写入流入缓冲器库。然后选择对非冲突库的SAF读取,以跨越CT读取及SAF读取两者(通过RL)每循环进行最多六个组合读取。在已知六个读取库之后,为来自流入管线的四个传入单元选择四个非冲突库(例如,通过CFAP)。
在步骤3,通过EB保护块1370对CT单元进行分级。CT操作对EB保护块1370施加比单独的SAF操作更大的缓冲要求。EB保护块1370应能够从流入缓冲器每循环吸收8个CT单元的突发,同时每循环将2个单元传递到对应EB组件(例如,EB组件570A)。由CT单元通过EB保护块1370可引发少量可变延迟。通过EB保护块1370同等地处理CT及SAF单元,因为这是非常小的缓冲器。
在步骤4,将CT单元写入EB组件570A的EB数据缓冲器(Ebuf)。CT单元进入EB组件570A并在与SAF单元相同的数据路径上直接写入EBuf。一旦CT单元被写入EBuf,CT单元就可被EB调度器用于出列,这与SAF单元不同,SAF单元应被重新排序,然后在符合出列条件之前重新组装成完整的数据包。由于SAF及CT单元可同时存在于EB组件570A中用于单个输出端口,因此CT流量应在EB组件570A中与SAF流量分开排队,使得其可按正确顺序被排序到对应EP。
管线超载及DPR时钟速率的差异及/或EP比MMU运行得更慢可导致CT单元在EB组件570A中被延迟并且备份并开始填充CT EB队列。这可能是在CT数据路径中可能发生延迟的主要原因。CT EB队列中的延迟过多且备份过多可导致流出端口从CT状态切换到SAF状态,使得CT EB队列(及EB自身)不会溢出。
在步骤5,从EB组件570A的EB数据缓冲器读取CT单元。尽管针对每一端口,CT单元与EB组件570A中的SAF单元分开排队,但是EB调度器不对CT EB队列给予严格的优先级。EB调度器不知晓CT/SAF,并且在具有准备好传输到EP的数据的端口当中进行调度。如果针对给定输出端口的SAF及CT EB队列两者中都存在单元,那么EBQ调度器应基于当前端口CT状态(如由CTM维护)在CT队列与SAF队列之间进行选择,以在端口在CT状态、TCT状态及SAF状态之间移动时保持数据包排序正确。
CT数据包绕过正常的SAF排队及调度,从而消除通过这些块的延时。由于SAF路径上的多单元列队及出列架构,在本发明中由CT数据包采用CT路径所节省的时间可能比先前的芯片更显著。CT单元绕过MMU中的块(及对应延时),例如源上下文块/FIFO、THDI/THDR块、OQS块、ToQ块(CQE排队)、THDO块、调度器及读取启动器(与RL-EBQ相关的排队延迟)。
当数据包从输入端口到达时,其被保持在单元接收块(CRB)中,并且对EB组件的输出端口的直通管理器(CTM)做出请求(例如,Ct请求)用于CT决定。CTM还跟踪流入缓冲器中标记为SAF的单元数目以及CT计数,使得其知道EB组件期望的每一类型的单元的数目。在SAF状态与CT状态之间改变时,这可能很重要。CTM保持每一个端口的CT状态,并在单个管线内保持跨越端口的信息。针对相应EB组件的CTM可独立操作,并且实际上在每一EB组件中单独实施。
CRB可针对每一数据包的每一单元向CTM发出CT请求。然而,对数据包的SOP单元做出的决定是整个数据包的最终决定,并且CTM应对所述数据包的每一个单元作出相同的决定。无论决定是针对CT还是针对SAF,都可在不知道CT决定的情况下将每一个单元写入流入缓冲器。利用CT数据单元传递到EB组件所需的控制信息可与每一数据单元一起行进(或者可在具有流入缓冲器地址的CT控制路径上发送)。由于通过流入缓冲器的CT单元的写入到读取延迟是固定数目的循环,因此任何控制信息仅需要延迟相同数目的循环并且可不存储在流入缓冲器中。
每一EB-CTM含有用于每一个输出端口的CT状态机。图14是说明根据一或多个实施方案的用于网络交换机(例如,网络交换机104)的CT状态机的实例图1400。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如图14中所展示,在CT状态下,到输出端口的数据包在CT路径上,且因此从CRB直接转发到ITM 530A的RL 550A,绕过阈值化组件(THDI/THDR)、源上下文块1412、OQS块1414及排队块830A。另一方面,在SAF状态中,到输出端口的数据包在SAF路径上,且因此行进通过阈值化组件(THDI/THDR)、源上下文块1412、OQS块1414及排队块830A以达到RL 550A。在确定是否从SAF状态转变到CT状态时可涉及到EB组件570A的CTM 1460。尽管未在图14中展示,但用于ITM 530A的额外EB组件(例如,EB组件570B到570H)可存在于网络交换机104内,并且可具有与CTM 1460具有类似特征的相应CTM。如上文论述,当数据包通过输入端口到达时,其保存在CRB 1410A中,并且CRB 1410A向EB组件570A的CTM 1460发送CT请求,以请求将输出端口置于CT状态且因此采用CT路径。如果CTM确定将输出端口置于CT状态,那么CTM1460可返回具有此类指示的CT决定,并且保持在CRB 1410A中的数据包将采用CT路径。否则,输出端口将处于SAF状态,并且保持在CRB 1410A中的数据包可采用SAF路径。
在CT状态中,到输出端口的所有数据包都在CT路径上,并且只要满足所有CT条件,任何新到达的数据包可在CT路径上。虽然在CT状态中,但如果新到达的数据包不能被授予CT访问(例如,因此不能在CT路径上),那么流量管理器可从CT状态转变到CT拒绝状态。CT拒绝状态是临时状态,其中先前到达的所有CT数据包从流入缓冲器及EB组件中排出。当所有CT数据包都已排出时,输出端口转变到SAF状态。
在SAF状态中,到输出端口的所有数据包都在SAF路径上,并且只要输出端口积压,任何新到达的数据包就可在SAF路径上。当输出端口变为完全空时,输出端口可在下一数据包到达时从SAF状态直接转变到CT状态。当输出端口几乎变为空但不完全为空时,输出端口可针对下一数据包转变到TCT状态。
在TCT状态中,新到达的数据包采用CT路径到EB组件。此外,在TCT状态中,在允许来自CT路径的任何数据包从EB组件中排出之前,仍在MMU中的SAF数据包被发送到EP。当所有SAF数据包从EB中排出时,端口可移动到CT状态。相反,如果条件改变并且应将新到达的数据包发送到SAF路径,那么到CT的转变失败,并且端口移动到TCT失败状态。
在TCT失败状态中,新到达的数据包采用SAF路径。此外,在TCT失败状态中,MMU可含有来自三个不同周期的数据包:来自SAF状态的前TCT SAF数据包,TCT状态中的TCT CT数据包以及从TCT状态转变出之后的后TCT SAF数据包。来自每一周期的数据包可在下一周期的数据包之前完全发送到EP/端口(例如,基于每端口或基于每EB群组)。当所有前TCT SAF数据包及所有TCT CT数据包都已从EB中排出时,接着允许端口移动回到SAF状态,且从所述点开始,MMU中的所有后TCT SAF数据包都被认为是SAF数据包,且常规TOQ队列将使其保持有序。
为使CTM授予CT请求,用于输出端口的状态机应处于CT或TCT状态,并通过多次检查以保持在CT状态中。基本检查是针对输出端口的CT-FIFO大小(CT EB队列中的单元总数)保持低于编程阈值。如果EB组件中的CT单元数目对于端口来说变得过大,那么所述端口应移动到SAF状态以防止EB溢出。
用于授予CT请求的条件如下,其中的一或多者可在任何给定实施方案中实施。目的地端口(输出端口)及源端口(输入端口)是CT启用的。针对输出端口的EB队列中的CT单元数目低于接受阈值。数据包(SOP单元)从输入端口标记为符合CT条件。数据包类型是单播。源及目的地端口条件满足,没有慢速源端口到快速目的地端口,且没有到CPU、环回或维护端口的CT及/或来自CPU、环回或维护端口的CT。一次使用单个源端口。没有将来自不同源端口的CT单元“交错”到单个输出端口。PFC检查满足(例如,其中任何断言的PFC将导致所有数据包通过SAF路径)。与输出端口相关联的所有整形器都是轮廓中。如果任何整形器在轮廓外,那么经由SAF路径延迟新数据包。EB列队带宽可能不会超载(EB级别检查)。不允许每循环超过两个单元进入EB组件。当与EB组件相关联的其它端口正在主动发送SAF数据包时,CTM应通过限制CT接受来允许SAF流量带宽。ITM(例如,流入缓冲器)带宽可不被超载(例如,从RL指示)。
直通单元被授予RL中的最高优先级。举例来说,RL填充额外SAF流入缓冲器读取多达每循环最多六个读取。针对任何一个EB组件,RL还维持每循环两个单元读取的最大速率。举例来说,CT单元不能由RL延迟,因此,针对跨越两个ITM的两个RL的单个EB组件,实际上在任何一个循环中可存在多达8个CT单元读取。此速率可能无法持续,但EB保护可能能够支持以此全速率的突发。但是,突发长度受到EB-CTM验收检查的限制。
RL还监测ITM拥塞并且当RL确定ITM(例如,流入缓冲器)被超载或者SAF数据包没有获得其流入缓冲器读取带宽的公平份额时,告知CTM拒绝所有CT。为确定流入缓冲器何时被超载,RL进行两次测量以推断这些条件:每一个别RL-EBQ的深度及在给定时间周期内实际执行的平均读取次数。
每ITM总读取速率应为每循环(每ITM)4个,以维持到每一EB组件的每循环单元。RL及流入缓冲器支持多达每循环六个单元读取,因此如果单元读取速率在相当长的一段时间内超过4个,那么RL将此解释为意味着流入缓冲器超载并通过信号到CTM,将阻止所有新的CT请求。
RL基于每EB维持RL-EBQ。每一RL-EBQ是用于去往一个EB/EPipe的SAF单元的流入缓冲器读取请求的FIFO。如果RL-EBQ备份一段时间,那么RL将此用作构成这些请求的SAF流量被抑制而无法满足其相对于活动CT流量的入口缓冲带宽的公平份额的指示。因此,如果任何RL-EBQ的深度在给定时间周期内大于可编程阈值,那么RL可防止经由CTM接受到所有端口的任何新CT数据包。
EBP吸收数据单元的突发。特定来说,EBP可吸收去往单个EB组件的数据单元突发(多达每循环8个),所述单个EB组件可在其输入处仅处置每循环两个单元。如上文提及,虽然RL在非常短的窗口内将SAF读取请求降低到每一循环两个,但是CT单元可以多达每循环8个单元的速率突发到EBP中(来自每一IP管线的一者)。此突发的持续时间受到单个输出EP管线中的端口数目的限制,这是因为每一输出端口在任一时间可能仅具有单个输入端口被授予CT,并且在来自单个输入端口的单元之间需要一些积累时间。EB-CTM通过对所有CT及SAF流量执行最大带宽容限来进一步限制这些突发的大小。由于在IPip的头部存在OBM缓冲器,突发的大小可能变得复杂,当积压时,OBM缓冲器可以快于实际线路速率的最小单元间隔向IP及MMU供应单元。为缓和此影响并限制EBP单元存储所需的大小,来自OBM的符合CT的单元可基于端口的速度向MOP及EOP单元添加额外单元间间隔。由于MMU(特别是EB-CTM)在带宽限制被超过时能够拒绝用于CT的SOP单元,因此IDB端口调度器始终可以最小端口单元间隔调度SOP单元。当OBM变得积压并且希望尽可能快地针对所有类型的单元使用最小单元间距排空OBM时,OBM外的数据包可能不再符合CT条件,且应标记为“不直通”到MMU。
去往给定输出端口的CT单元应被放入与SAF数据包分离的EB队列中。这些队列先前称为“CT-FIFO”。针对正常操作,每输出端口单个CT EB队列(或CT-FIFO)将足够。然而,需要多个CT EB队列以允许PFC流控制停止特定优先级的数据包流动,同时允许其它优先级继续。出于此原因,EB组件可针对每一个“PFC优化”服务类维护CT EB队列,就像其针对每一个SAF服务类一样所做的一样。每一EB-群组可含有SAF EB队列及CT EB队列。
通过使用EB组件中的单独EB队列将CT数据包与SAF数据包分离可能是维持从输入端口到输出端口的数据包顺序所必需的。当从CT状态改变到SAF状态时,第一SAF数据包可能在先前被授予CT路径的长CT数据包的最后一个单元之前达到EB组件。在允许SAF数据包行进到EP之前,EB组件应保持这些SAF数据包直到所有CT数据包完整。同样地,当状态从SAF状态变为CT状态时,在从流入缓冲器甚至读取所有先前列队的SAF数据包之前,第一CT单元可到达EB组件。
EB-调度器可基于端口的CT及PFC状态确定是否应允许每一EB群组的CT或SAF EB队列被传输到EP。如果我们只考虑CT及SAF这两个状态,当端口从CT状态改变到SAF状态时,应在允许来自同一EB群组的EB队列的SAF数据包被完全排空之前排空CT EB队列,并且反之亦然。EB组件的EB-CTM及EB调度器应一起工作以从EB队列的正确集合(SAF或CT)调度。
EB组件的EB CTM是本发明中的主CT控制块。每一个EB组件内可能存在一个CTM,并且其彼此独立工作。EB CTM的功能可包含针对其端口的全部下文:针对每一个数据包/单元的CT/SAF决定,跟踪MMU中每一路径上的SAF及CT单元的数目,跟踪分配的总CT带宽以防止在任何一个EPipe内授予过多CT带宽,维护每端口CT状态机,与ToQ及针对转变-CT的主调度器介接,跟踪CT EB队列长度及转变缓冲器占用,并跟踪针对所有优先级的PFC状态(PFC抑制CT)。
转变到TCT状态是从SAF状态到CT状态的推测转变尝试。此方法允许新到达的数据包在所有SAF数据包已被传输之前遵循CT路径。可调谐用于确定是否进入TCT状态的参数以优化从SAF状态到CT状态的成功转变的概率。因此,推测程度可为可配置的。
为确定是否从SAF状态转变到CT状态,MMU跟踪针对每一输出端口的SAF路径中存在的单元及数据包的数目。针对数据包数目及单元数目的可编程阈值可用作输出端口可能很快变空的指示。如果所有数据包都是小的单个-单元数据包,那么可仅跟踪单元的数目,并且等于列队-出列-延迟的阈值可足以确定何时尝试转变到CT。然而,针对大数据包,大数据包的积累时间可能大于列队-出列延迟,且因此考虑更大数目的单元。在大数据包的情况下,等待直到输出队列中仅存在一个数据包可能就足够,但是不仅需要查找存在的少量数据包(1或2),还要计数单元数目以将部分数据包大小判断为截止。在允许端口尝试将状态更改为TCT之前,EB CT管理器可检查ITM及EB组件的SAF路径中存在的数据包数目及单元数目。
由于MMU中存在的小型及大型数据包之间的单元及数据包的数目的差异,尤其是在较慢的端口速度下,应使用被编程为考虑大数据包及小数据包两者的阈值检查。优选阈值检查是:
OKfortransition=(#cells<cellthreshold1)或((#cells<cellthreshold2)及(#pkts<pktthreshold)) (1)
Cellthreshold1是基于小单元的数目(例如,64B数据包),其纯粹由于列队-出列延迟而可以稳态存在。Pktthreshold及Cellthreshold2是基于由于数据包重组而存在于稳定状态的数据包及单元的数目加上针对大数据包(例如,5kB到9kB数据包)的列队-出列延迟。Pktthreshold应非常小(在2到5的范围内)。Cellthreshold2应被编程为巨型数据包(例如,9kB)中的单元数目的大约1.1到1.5倍。
以上等式1可简化为以下等式。
OKfortransition=(#pkts<pktthreshold)及(#cells<cellthreshold2) (2)
数据包阈值是基于针对小数据包(例如,大小为64B)的单元(也是数据包)的数目。此pktthreshold将等于第一个等式的cellthreshold1。Cellthreshold2是基于针对1+个9kB(最大大小)数据包存在的单元,其应与pktthreshold相同或比pktthreshold更大。
在输出端口中实现从SAF状态到CT状态的更平滑、更容易的转变的一种方式是EB组件中的额外缓冲。在SAF路径为空之前将转变数据包转发到CT控制路径意味着第一CT数据包可在SAF路径完全排出之前到达EB组件并且可保持在EB组件中直到先前到达的所有SAF数据包在允许第一CT数据包行进到EP之前从MMU排空。额外缓冲可被称为“转变缓冲器空间”。如果可预期通过SAF路径的延迟更长,那么此转变缓冲器也被设置为相应地更大。
在物理上,转变缓冲器可为EB组件中包含的EB缓冲器的一部分,并且在EB组件中存在若干专用单元。为减轻此成本,可允许每管线一次只有单个端口进入转变状态(例如,TCT状态)并且可使用转变缓冲器空间。一旦输出端口进入转变状态,只要端口未恢复到SAF状态,针对所述输出端口的所有新到达的数据包都将遵循CT路径。发送到CT路径的所有数据包按顺序存储在转变缓冲器中,并在EB的CT队列中排队。允许一个端口一次从SAF转变到CT应足以获得良好的CT性能及弹性。
一旦在TCT状态中,输出端口将经历两个阶段以便进入CT状态。阶段1正在等待待从端口排出所有SAF数据包。阶段2正在从转变缓冲器排出任何积压数据包。在阶段1期间,转变缓冲器将积累CT数据包并增大大小,因为这是针对CT数据包的主缓冲点。一旦所有SAF数据包已完全从ITM及EB中排出,端口就进入阶段2,然后EB组件从针对所述端口的CT队列传输数据包。
一旦转变缓冲器排出并且EB组件中存在的CT单元的数目低于CT最大阈值减去一些迟滞偏移(可编程值),那么允许输出端口移动到CT状态,且接着转变缓冲器可用于使其管线内的另一端口以也尝试CT转变。
预期数据包可在输出端口排出转变缓冲器时继续到达输出端口。在一或多个实施方案中,在最坏的情况下,到达速率可处于或高于排出速率(输出端口速度),并且转变缓冲器从不完全排出。如果发生此种情况,端口可能会中止到CT的转变。
下文是在确定转变到CT状态之后恢复到SAF状态的额外细节。输入端口或输出端口上的流量条件可能随时发生改变,并且在端口处于转变状态的时间期间可能会变得更糟。如果发生此种情况,那么端口应能够温和中止到CT状态的转变并恢复到SAF状态。
当处于TCT状态时,不允许转变缓冲器过满。因此,举例来说,如果缓冲器填充水平增长超过可编程阈值,那么端口接着恢复到SAF状态。另外,为公平对待同一管线内的其它端口,不允许处于TCT状态的端口独占转变缓冲器,其中此垄断可能会阻止其它端口从SAF状态转变到CT状态。如果输入速率突然改变以匹配排出速率并且转变缓冲器大小保持相同大小,那么这很容易实现。因此,需要进行第二次检查以监测转变缓冲器的可用空间是否随时间减小。如果CT队列的总大小不随时间减小,那么端口可恢复到SAF状态。离开TCT状态并且移动到TCT失败状态可迫使所有新到达的数据包进入SAF路径,且因此可允许转变缓冲器排出,使得转变缓冲器可变得可供其它端口使用。
当端口进入TCT状态且然后恢复到SAF状态时,MMU中可能存在来自所述输出端口的三个单独时间周期的同时存在的数据包,其包含前-TCT状态SAF数据包(来自前-TCT周期),TCT状态CT数据包(来自TCT周期),以及后-TCT状态SAF数据包(来自后-TCT周期)。在允许来自下一时间周期的数据包按顺序保持数据包之前,完全发送针对每一时间周期的数据包,这可基于每端口或基于每EB-群组的更细-粒度来实施。特定来说,EB组件可针对每一端口具有两组队列,例如SAF队列及CT队列,并且可将TCT周期的TCT状态CT数据包与前-TCT周期或后-TCT周期的SAF数据包区分。为帮助EB组件将SAF数据包与前-TCT周期及后-TCT周期分离,不允许EB组件在单个SAF EB队列中同时具有前-TCT状态SAF数据包及后-TCT状态SAF数据包。TOQ块在每管线的基础上维持一组额外的端口队列,使得当端口进入TCT时,任何后-TCT状态SAF数据包都可与前-TCT状态SAF数据包分离地排队。EB-CTM维持针对所有三个循环的MMU中存在的数据包数目的计数,且因此可确定EB组件何时可从SAF队列切换到CT队列且接着再切换回到SAF队列。这是可能的,因为TOQ及主调度器不允许在最后前-TCT状态SAF数据包被发送到EP之前调度任何后-TCT状态SAF数据包。
可能需要满足下文条件中的一或多者来从CT状态转变到TCT状态。EB组件中的TCT缓冲器空间应足以每转变一次用于一个端口(每EB)。应满足TCT-缓冲器上影响CTM状态转变及CT接受决定的阈值。应满足MMU中存在的用于尝试TCT的SAF单元及数据包的数目的阈值。CTM应为前-TCT状态SAF数据包、TCT状态CT数据包及后-TCT SAF数据包维持单独的数据包计数。举例来说,计数器应基于每端口实施。举例来说,计数器应为基于实施的(每端口、每EB群组)。
在一或多个实施方案中,与SAF路径的协调可为必要的。在进入SAF列队路径之前,可由CTM将每一个SAF单元标记为“前-TCT”或“后-TCT”。TOQ应能够在一组单独的队列中保持后-TCT状态SAF数据包,直到在所有前-TCT状态SAF数据包已到达EB组件之后允许由CTM将其激活。主调度器不需要知道TCT状态或前-TCT状态SAF与后-TCT状态SAF数据包之间的差异,但需要延迟调度后-TCT状态SAF数据包,直到由EB-CTM启用。EB CT管理器与SAF路径之间的协调是通过EB CTM与主调度器及TOQ块之间的信号实现的。
因为EB缓冲器每循环仅可接收多达两个单元,所以在ITM或EB-保护块中将吸收到任何一个EB组件的单元突发。可在ITM缓冲器中保持SAF数据包的大突发。然而,CT单元的突发流动通过ITM,并且在被发送到EB组件之前可能在EB-保护缓冲中被延迟。这会产生更大的EBP大小要求,以同时处置来自所有八个输入管线的CT流动。为防止EBP溢出,来自输入端口的单元速率由OBM适度控制以获得符合CT条件的数据包。输入端口调度器为所有MOP及EOP单元插入数个循环,以接近实际从线路到达的单元的速率。当OBM变满时,输入端口调度器将此单元间延迟减少到输入端口及MMU允许的最小单元到单元间隔(2个循环),但也可将数据包标记为在MMU中“不直通”。针对每一数据包及所述数据包的每一个单元,设置非直通信号以使其到达CCBI控制总线上的MMU。
从MMU到EP(CCBE)的控制总线的部分包含数据包长度。然而,针对CT数据包,直到EOP单元才知道所有数据包的完整数据包长度。EP在处理EOP单元而不是SOP单元时更新仪表及其它计数器。在一或多个实施方案中,EP,特别是管线末端的EDatabuf,可能需要在开始将任何数据包传输到端口宏(PM)之前保持一或多个单元。这是为补偿数据包在单元内从MMU到EP之间的抖动,并防止端口接口上的任何欠载情况。确切的单元数目取决于MMU及EB组件的设计实施方案以及特定的端口速度。单独发布计算以基于端口速度对EP开始计数进行编程。
先前,在与针对输出端口的CT相同的时间不支持端口暂停。根据本发明的一些方面,虽然可能没有到MMU的端口暂停指示的直接接口,但是端口暂停指示可表现为EB组件中的端口由于EB组件用完EP(EDataBuf)单元信用而不能够排出任何数据包。在此类方面,CTEB队列可自然地填充并达到迫使端口进入CT-FAIL并最终进入SAF状态的阈值。这作为EB-CTM中CT决定的常规部分自动处置。
根据本发明内容的一些方面,CT EB队列可停止在数据包边界上调度数据包(例如,以与SAF EB队列类似的方式进行),而不会溢出EBuf。这使得优化PFC响应时间保持一致,无论端口是否处于SAF状态或PFC-XOFF被断言时的CT状态。允许EB组件在CT状态下响应于PFC-XOFF要求EB设计为每一EB-群组实施CT EB队列(例如,SAF数据包所需的相同数目(9))。这允许具有处于PFC-XON状态的优先级级别的数据包不被具有PFC-XOFF优先级的数据包阻塞。应注意,断言任何级别的PFC都将迫使端口移动到SAF状态。CT/SAF状态是基于每端口而不是每优先级。当PFC-XOFF被断言时,其意味着至少针对一个优先级级别,端口应处于SAF状态以缓冲数据包,然后允许在稍后重新断言PFC-XON时将其发送。
可在输入端口与输出端口对之间的每一个数据包流上维持数据包顺序。当在CT状态与SAF状态之间转变时,应维持数据包顺序。当某些数据包采用CT路径到输出端口而其它数据包可能采用SAF路径到同一输出端口时,通过输入端口的数据包的顺序应维持在输出端口中,使得数据包以与数据包流入相同的顺序流出。举例来说,在先前的数据包采用SAF路径之前,不允许稍后到达的数据包采用到输出端口的CT路径。稍后到达的TCT数据包可在所有先前排队的SAF数据包可到达输出端口之前到达输出端口。然后,TCT数据包在输出端口被缓冲及延迟,直到所有SAF数据包经由输出端口从流量管理器传输出去。因此,可在每一输出端口处实施小缓冲器以保持TCT数据包。当所有SAF数据包都已排出时,接着允许CT路径变为活动,且接着端口可转变为CT状态。
下文实例展示在从CT状态到SAF状态的转变期间维持数据包顺序。当输出端口变得拥塞时,新到达的数据包遵循SAF路径,且输出端口从CT状态变为SAF状态。在允许传输第一SAF数据包之前,可将先前到达并且遵循CT路径的所有数据包传输到输出端口。下文实例展示在从SAF状态到CT状态的转变期间维持数据包顺序。在允许从SAF状态转变到CT状态(例如,经由TCT状态)之前,针对端口的输出队列可能不需要完全为空。当SAF队列为空或几乎为空时,允许新到达的数据包开始采用CT路径。然而,在任何输入/输出端口对之间以到达顺序传输数据包,并且应在允许CT数据包被传输到EP之前传输所有先前到达的SAF数据包。
通过流量管理器的SAF路径如下。当数据包从流入数据包处理到达ITM时,数据包数据(在单元中)立即存储在主数据包缓冲器(例如,ITM有效载荷缓冲器)中。数据包控制信息保持在单元接收块(CRB)中,而流出直通管理器(EB-CTM)确定数据包数据是采用针对数据包数据的CT路径还是SAF路径。
如果确定数据包数据采用SAF路径,那么将指向数据包数据的指针传递到SAF路径。在一或多个实施方案中,SAF路径将包含THDI、源上下文块、OQS块、TOQ/THDO块及主调度器。数据包应被允许进入缓冲器(THDI及THDO),然后应排队到针对输出端口的输出队列中。随后,应由主调度器调度数据包以便传输到输出端口。
如果确定数据包数据采用CT路径,那么将指向数据包数据的指针传递到RL。RL立即将数据单元指针传递到主有效载荷缓冲器以被读取并转发到EB组件。CT路径上的数据包数据绕过SAF路径上的数据包经历的接纳控制、排队及调度。当CT路径上的数据包数据到达EB时,数据包数据与EB组件中的SAF数据包分开排队。SAF及CT路径再次汇聚在EB组件中。EB调度器负责维持SAF路径及CT路径上的数据包之间的正确数据包排序。CT组件尽可能快地由EB组件发送到TM外,同时维持正确的数据包排序。
TCT数据包还采用通过流量管理器的CT路径。TCT数据包可在EB组件中保持比常规CT数据包更长的时间以允许从SAF的转变发生。
图15是说明根据一或多个实施方案的流量管理器中的SAF路径及CT路径的实例图1500。然而,并非所有描绘的组件都可在所有实施方案中使用,并且一或多个实施方案可包含额外组件或与图中所展示的组件不同的组件。在不脱离本文阐述的权利要求书的精神或范围的情况下,可对组件的布置及类型进行改变。可提供额外组件、不同组件或更少组件。
如图中所说明,ITM中的EB-CTM可确定来自输入端口的数据包数据是否将采用针对数据包的CT路径或SAF路径。如果确定数据包数据采用SAF路径,那么到数据包数据的指针被传递到SAF路径(SAF路径包含THDI/THDR、源上下文块、OQS块、TOQ/THDO块及主调度器),之后到达RL。另一方面,如果确定数据包数据采用CT路径,那么将指向数据包数据的指针传递给RL。
对于常规单播CT,CT数据包流可在处于CT状态时遵循以下简单CT数据包流动路径。在步骤1,SOP单元从IP到达CRB。在步骤2,CRB将CT请求发送到与数据包的输出端口相关联的EB组件的EB CTM,并将单元保持在CT检查延迟FIFO中。独立地,CFAP产生流入缓冲器单元地址(未展示)。在步骤3,EB-CTM以CT决定回到CRB进行响应。在步骤4,CRB将针对此CT单元(CT-CA)的流入缓冲器单元地址直接发送到RL。在步骤5,在一或多个实施方案中,RL可始终选择具有比SAF-CA更高优先级的CT-CA并且将CT-CA发送到MB。在步骤6,流入缓冲器读取单元数据并将其发送到EBP。在步骤7,EBP将CT数据单元放入其自身的FIFO,然后沿CT单元发送到EB组件。在步骤8,当将单元数据写入EBuf时,EB-CA被列队到CT EB队列中。在步骤9,将CT EB队列激活到EB调度器中。在步骤10,EB-调度器调度CT单元。在步骤11,EB-TOQ将EB-CA发送到EBuf以读取单元数据。在步骤12,将单元数据及单元控制信息分别发送到CBE及CCBE上的EP。
当新到达的数据包通过CT接受检查时,其继续遵循上文描述的简单CT数据包流动路径。然而,当不满足CT条件时,EB-CTM不授予对请求数据包的CT访问,并且端口将从CT状态转变到CT-失败状态,然后最后转变为SAF状态。当从CT状态到CT-拒绝状态且接着到SAF状态的转变发生时,可针对单播数据包遵循以下步骤。
在步骤1,SOP单元从IP到达CRB。在步骤2,CRB将“CT请求”发送到数据包输出端口的EB CTM,并将单元保持在“CT检查延迟”中。在步骤3,EB-CTM直通检查失败并以“SAF”的CT决定响应于CRB。EB-CTM还向主调度器断言“停用端口调度”,而CT单元仍在去往EB组件的路上。主调度器可能不会将SAF单元发送到EB组件,直到在接收到所有CT单元之后在主调度器中更新EB单元信用,使得EBuf中的端口预留不会溢出。端口状态从CT状态改变为CT-失败状态。任何先前授予的CT单元(甚至是最终先前不完整CT数据包的新到达的单元)在到EB组件的CT路径上继续。
在步骤4,CRB将新的SAF数据包发送到SAF列队路径(THDI->SCB->OQS->TOQ/THDO)。在步骤5,TOQ将其SAF队列激活到主调度器中。在步骤6,当最后一个CT单元被接收到EB组件中时(基于EB-CTM单元计数器),EB-CTM将EB单元信用更新到主调度器并移除“停用端口调度”信号。现在允许将SAF数据包从ITM调度到EB组件。在步骤7,CT及SAF数据包两者都可存在于EB组件中。EB组件继续调度CT EB队列,直到传输所有CT数据包。在步骤8,端口移动到SAF状态,并且EB-QS将来自SAF EB队列的数据包调度到EP。
当新数据包在端口处于SAF状态时到达但是条件有利于转变到CT时,端口可从SAF状态移动到TCT状态,并且可用正CT响应来响应于CT请求。在此情况下,可使用上文描述的简单CT数据包流动的步骤1到9,并且可在步骤9与10之间插入额外步骤。当CT单元存储在EBuf中并在CT EB队列中排队时,在ITM流入缓冲器或EBuf/EBQ或两者中可存在先前SAF数据包。在简单CT数据包流动的步骤9与10之间,EB-调度器继续调度SAF EB队列(忽略CT EB队列),而SAF数据存在于流入缓冲器或EBuf中,并且在最后一个“前-TCT SAF“数据包由EB-调度器调度(基于CTM计数器)之后,CTM通知EB-调度器从CT EB队列选择。EB-CTM的状态从TCT状态向CT状态前进。
在转变到SAF状态之后,CT转变可能是不成功的。因此,转变可为从SAF状态到TCT状态,然后返回到STF状态。可使用上文描述的简单CT数据包流动的步骤1到9,并且可在CT数据包流动的步骤9之后插入不同的步骤,如下文描述。
在步骤10,EB-调度器继续调度SAF EB队列(忽略CT EB队列),同时SAF数据存在于流入缓冲器或EBuf中。在步骤11,数据包到达并且条件指示新数据包可采用SAF路径。CTM状态移动到TCT-失败。新CT请求失败(CT决定为“SAF”),并且翻转控制旗标,使得所有新到达的SAF数据包被标记为“后-TCT SAF”。
在步骤12,后-TCT SAF数据包在TOQ中在“额外”端口队列组中排队,并且不被激活到主调度器中。在步骤13,主调度器继续调度来自“前-TCT SAF”队列的数据包。EB-调度器继续从SAF EB队列调度。TCT数据包在EBuf及CT EB队列中等待。从主调度器遮蔽任何新断言的PFC-XOFF,使得所有前-TCT SAF数据包都能够排空到EB组件。
在步骤14,当最后的前-TCT SAF单元数据到达EB时,EB CTM向主调度器发信号以“停用端口调度”并发信号通知TOQ以激活后-TCT SAF队列到主要调度中。(PFC-XOFF不再遮蔽到主调度器)。主调度器应停用调度后-TCT SAF,直到在EB组件中接收到所有CT单元,使得在调度任何后-TCT SAF单元之前可在主调度器中调整EB单元信用。EB-调度器继续从SAFEB队列调度,直到所有前-TCT SAF数据包都已被传输。
在步骤15,EB-调度器现在调度来自CT EB队列的数据包(排出转变缓冲器空间)。当最后一个CT单元被接收到EB中时,EB-CTM从主调度器中移除“停用端口调度”信号,并且现在允许将后-TCT SAF数据包从ITM调度到EB组件。当排出足够的CT数据包时,转变缓冲器将被释放以供可能需要使用其的任何其它端口使用。
在步骤16,当从针对此端口的CT路径中排出所有数据包时,CTM转变到SAF状态。在步骤17,EB-调度器现在调度来自SAF EB队列的数据包。
当单播+镜像/CTC数据包从IP到达时,数据包的单播副本可在CPU镜像或副本采用SAF路径(包括RQE)的同时采用CT路径。从CRB的初始“CT请求”仅用于单播副本。来自RQE的每一副本也向CTM发出“虚拟CT请求”,这可能始终被拒绝。
单播CT副本可采用常规CT控制路径(例如,可采用简单CT路径或可利用TCT控制机制),而额外副本应通过整个SAF路径。SAF路径可涉及行进通过阈值化组件(THDI/THDR)、源上下文块、OQS块、ToQ块、主调度器,回到ToQ块,且接着到RL,使得数据包可被转发到EB保护块及待输出到EP的EB组件。副本计数可用于跟踪使用单播CT副本作为其中一个副本的副本总数目。CCP及CFAP应允许以任何顺序将CT及SAF副本发送出MMU,并且仅在已将所有副本传输到EP之后将流入缓冲单元释放到空闲列表。
图16到20说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程1600到2000的流程图。出于解释目的,这里主要参考图1到2的网络交换机104来描述过程1600到2000。然而,过程1600到2000不限于网络交换机104,并且过程1600到2000的一或多个块(或操作)可由网络交换机104的一或多个其它组件来执行。进一步出于解释目的,过程1600到2000的块在本文被描述为串行或线性发生。然而,过程1600到2000的多个块可并行发生。另外,过程1600到2000的块不需要以所展示顺序被执行及/或过程1600到2000的块中的一或多者不需要被执行及/或可由其它操作替换。
图16说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程1600的流程图。过程1600中的每一块可由流入分块(例如,ITM 530A)的流入控制器538A、第二流入分块(例如,第二ITM 530B)的第二流入控制器538B或网络交换机104的主调度器540的调度控制器中的一或多者来执行。在过程1600中,流入控制器538A经由一组输入端口520A到D接收一或多个数据包且/或第二流入控制器538B经由第二组输入端口520E-H接收一或多个第二数据包(1602)。
流入控制器538A将一或多个数据包写入由输入端口组520A到D共享的ITM 530A的流入缓冲器532A(1604)。在一些方面中,在一或多个数据包被分为单元的情况下,流入控制器538A可通过经由输入端口组520A到D接收一或多个数据包的单元,将一或多个数据包写入流入缓冲器532A。在一些方面,流入控制器538A可通过将单元控制写入ITM 530A的OQS块1414的一或多个输出积累FIFO来将一或多个数据包写入流入缓冲器532A。在一些方面,流入控制器538A可进一步通过以下方式将一或多个数据包写入流入缓冲器532A:从一或多个输出积累FIFO读取单元,基于来自一或多个输出积累FIFO的单元产生一或多个VoQ,并将一或多个VoQ分配给ITM 530A的排队块830A的一或多个VoQ库。第二流入控制器538B将一或多个第二数据包写入由第二组输入端口520E到H共享的第二ITM 530B的第二流入缓冲器532B(1606)。
主调度器540的调度控制器542可选择ITM 530A及来自ITM 530A的与一或多个数据包相关联的一或多个VoQ以读取一或多个数据包并将所述一或多个数据包转移到输出端口580A到H(1608)。流入控制器538A根据通过主调度器540的调度从流入缓冲器532A读取一或多个数据包(1610)。流入控制器538A可通过以下方式从流入缓冲器532A读取一或多个数据包:从主调度器540接收对排队块830A的一或多个出列的请求,基于针对一或多个出列的请求来从一或多个VoQ读取单元,以及将单元发送到读取启动器550A。第二流入控制器538B根据通过主调度器540的调度从第二流入缓冲器532B读取一或多个第二数据包(1612)。流入控制器538A将读取的一或多个数据包及/或一或多个第二数据包转发到输出端口580A到H(1614)。
图17说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程1700的流程图。在此实例中,每一有效载荷存储器库可每一时钟循环执行一次读取。在其它实施方案中,有效载荷存储器库可支持每时钟更高的读取。过程1700中的每一块可由ITM530A的流入控制器538A或EB组件570A的流出控制器572A或网络交换机104的主调度器540执行。
在过程1700中,流入控制器538A经由一组输入端口520A到D接收一或多个数据包(1702)。流入控制器538A将一或多个数据包写入由所述组输入端口520A到D共享的ITM530A的流入缓冲器(1704)。流入控制器538A确定由主调度器540发出的两个或更多个读取请求用于在同一循环中从流入缓冲器的同一存储器库读取一或多个数据包中的至少一者的单元(1706)。流入控制器538A保持两个或更多个读取请求中的一或多者,直到一或多个后续循环(1708)。流入控制器538A在一或多个后续循环期间向ITM 530A发出两个或更多个读取请求中的一或多者(1710)。在发出彼此冲突的两个或更多个读取请求中保持的一或多个读取请求之前,流入控制器538A向ITM 530A发出比所保持的两个或更多个读取请求更新的至少一个新读取请求(1712)。在发出至少一个新读取请求及两个或更多个读取请求之后,流出控制器572A将一或多个数据包的单元重新排序为一或多个数据包的单元由主调度器540出列的顺序(1714)。
图18说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程1800的流程图。过程1800中的每一块可由ITM 530A的流入控制器538A或与网络交换机104的输出端口580A相关联的EB组件570A的流出控制器572A来执行。在过程1800中,流出控制器572A基于至少一个因素确定从SAF状态到CT状态的网络交换机104的输出端口580A的转变(1802)。流出控制器572A基于输出端口的条件确定在将输出端口转变到CT状态时是将输出端口转变到TCT状态还是直接转变到CT状态(1804)。当将输出端口转变到TCT状态时,流出控制器572A基于输出端口的条件确定是将输出端口转变到CT状态还是将输出端口转变回SAF状态(1806)。
流出控制器572A从流入分块接收CT请求,CT请求请求到CT状态的转变(1808)。流出控制器572A经由流出缓冲器组件向流入分块发出CT决定,CT决定指示是否将输出端口转变到CT状态(1810)。在一些方面,可不处理到达流入分块的数据包,直到返回CT决定。
当输出端口580A处于CT状态时,流入控制器538A将一或多个数据包转发到网络交换机104内的CT路径,以将一或多个数据包直接发送到网络交换机的读取启动器(1812)。当输出端口580A处于SAF状态时,流入控制器538A将一或多个数据包转发到网络交换机104内的SAF路径,以使一或多个数据包通过一或多个处理器并传递到读取启动器(1814)。在1816,可执行额外特征,如下文描述。
图19说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程1900的流程图,其从图18的实例过程1800继续。过程1900中的每一块可由网络交换机104的EB组件570A的流出控制器572A执行。在过程1900中,网络交换机104可从图18的1814继续。流出控制器572A可确定新数据包未被授予CT访问,新数据包在输出端口580A的CT状态期间新到达(1902)。流出控制器572A可将输出端口580A从CT状态转变到CT拒绝状态,在此期间,在流出缓冲器中剩余的一或多个CT数据包被排出,CT数据包在输出端口的CT状态期间经由网络交换机内的CT路径在流出缓冲器处已被接收(1904)。当流出缓冲器中的一或多个剩余CT数据包被排出时,流出控制器572A可将输出端口580A从CT拒绝状态转变到SAF状态(1906)。
流出控制器572A可在SAF状态期间确定输出端口580A为空(1908)。当输出端口580A为空时,流出控制器572A可将输出端口580A直接从SAF状态转变到CT状态(1910)。在1912,可执行额外特征,如下文描述。
图20说明根据一或多个实施方案的网络交换机内的流量流动管理的实例过程2000的流程图,其从图20的实例过程2000继续。过程2000中的每一块可由网络交换机104的EB组件570A的流出控制器572A执行。在过程2000中,网络交换机104可从图19的1912继续。在SAF状态期间,流出控制器572A可确定输出端口580A的填充水平低于阈值(2002)。流出控制器572A可响应于确定填充水平低于阈值而将输出端口从SAF状态转变到TCT状态(2004)。
流出控制器572A可确定流出缓冲器中剩余的一或多个SAF数据包是否从流出缓冲器排出,SAF数据包已经在输出端口580A的SAF状态期间经由网络交换机内的SAF路径由流出缓冲器接收(2006)。当从流出缓冲器排出一或多个剩余SAF数据包时,流出控制器572A可将输出端口580A从TCT状态转变到CT状态(2008)。在一或多个实施方案中,当在TCT状态期间已经接收待发送到网络交换机104内的SAF路径的一或多个数据包时,流出控制器572A可确定将输出端口580A转变回到SAF状态(2010)。在一或多个实施方案中,流出控制器572A可在确定将输出端口580A转变回到SAF状态时将输出端口580A从TCT状态转变到TCT失效状态以排出在TCT状态期间接收的数据包(2012)。当从转变到TCT失效状态之前保留在流出缓冲器中的剩余数据包已经从流出缓冲器中排出时,流出控制器572A可将输出端口580A从TCT失效状态转变到SAF状态(2014)。
图21说明电子系统2100,利用电子系统2100可实施本技术的一或多个实施方案。电子系统2100可为图1中所展示的网络交换机104及/或可为图1中所展示的网络交换机104的一部分。电子系统2100可包含用于各种其它类型的计算机可读媒体的各种类型的计算机可读媒体及接口。电子系统2100包含总线2108、一或多个处理单元2112、系统存储器2104(及/或缓冲器)、ROM 2110、永久存储装置2102、输入装置接口2114、输出装置接口2106以及一或多个网络接口2116或其子集及变体。
总线2108共同表示通信地连接电子系统2100的众多内部装置的所有系统、外围装置及芯片集总线。在一或多个实施方案中,总线2108可通信地将一或多个处理单元2112与ROM 2110、系统存储器2104及永久存储装置2102连接。从这些各种存储器单元,一或多个处理单元2112检索待执行的指令及待处理的数据,以便执行本发明的过程。一或多个处理单元2112可为不同实施方案中的单个处理器或多核处理器。
ROM 2110存储一或多个处理单元2112及电子系统2100的其它模块所需的静态数据及指令。另一方面,永久存储装置2102可为读取及写入存储器装置。永久存储装置2102可为即使在电子系统2100关闭时也存储指令及数据的非易失性存储器单元。在一或多个实施方案中,大容量存储装置(例如磁盘或光盘及其对应磁盘驱动器)可用作永久存储装置2102。
在一或多个实施方案中,可卸除存储装置(例如软盘、快闪驱动器及其对应磁盘驱动器)可用作永久存储装置2102。类似于永久存储装置2102,系统存储器2104可为读取及写入存储器装置。然而,与永久存储装置2102不同,系统存储器2104可为易失性读取及写入存储器装置,例如随机存取存储器。系统存储器2104可存储一或多个处理单元2112在运行时可能需要的指令及数据中的任何者。在一或多个实施方案中,本发明的过程存储在系统存储器2104、永久存储装置2102及/或ROM 2110中。从这些各种存储器单元,一或多个处理单元2112检索待执行的指令及待处理的数据以便执行一或多个实施方案的过程。
总线2108还连接到输入及输出装置接口2114及2106。输入装置接口2114使用户能够向电子系统2100传达信息及选择命令。可与输入装置接口2114一起使用的输入装置可包含例如字母数字键盘及指示装置(也称为“光标控制装置”)。输出装置接口2106可启用例如由电子系统2100产生的图像的显示。可与输出装置接口2106一起使用的输出装置可包含例如打印机及显示装置,例如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其它装置。一或多个实施方案可包含用作输入及输出装置的装置,例如触摸屏。在这些实施方案中,提供给用户的反馈可为任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包含声学、语音或触觉输入。
最后,如图21中所展示,总线2108还通过一或多个网络接口2116将电子系统2100耦合到一或多个网络及/或一或多个网络节点。以此方式,电子系统2100可为计算机网络(例如LAN、广域网(“WAN”)或内联网,或者是例如因特网的网络的网络的一部分。可结合本发明使用电子系统2100的任何或所有组件。
可使用编码一或多个指令的有形计算机可读存储媒体(或一或多种类型的多个有形计算机可读存储媒体)来部分或完全实现本发明范围内的实施方案。有形计算机可读媒体存储媒体本质上也可为非暂时性的。
计算机可读存储媒体可为可由通用或专用计算装置(包含能够执行指令的任何处理电子装置及/或处理电路)读取、写入或以其它方式访问的任何存储媒体。举例来说(但不限于),计算机可读媒体可包含任何易失性半导体存储器,例如RAM、DRAM、SRAM、T-RAM、Z-RAM及TTRAM。计算机可读媒体还可包含任何非易失性半导体存储器,例如ROM、PROM、EPROM、EEPROM、NVRAM、快闪存储器、nvSRAM、FeRAM、FeTRAM、MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、赛道存储器、FJG及千足虫(Millipede)存储器。
此外,计算机可读存储媒体可包含任何非半导体存储器,例如光盘存储器装置、磁盘存储器装置、磁带、其它磁性存储装置或能够存储一或多个指令的任何其它媒体。在一或多个实施方案中,有形计算机可读存储媒体可直接耦合到计算装置,而在其它实施方案中,有形计算机可读存储媒体可间接耦合到计算装置,例如经由一或多个有线连接、一或多个无线连接或其任何组合。
指令可直接执行或可用于开发可执行指令。举例来说,指令可实现为可执行或不可执行的机器代码或者可经编译以产生可执行或不可执行的机器代码的高级语言中的指令。此外,指令也可实现为数据或可包含数据。计算机可执行指令也可以任何格式组织,其包含例程、子例程、程序、数据结构、对象、模块、应用程序、小应用程序、功能等。如所属领域的技术人员所认识到,细节包含(但不限于)在不改变底层逻辑、功能、处理及输出的情况下,指令的数目、结构、顺序及组织可发生显著变化。
虽然以上论述主要涉及执行软件的微处理器或多核处理器,但是一或多个实施方案由一或多个集成电路(例如ASIC或FPGA)执行。在一或多个实施方案中,此类集成电路执行存储在电路自身上的指令。
所属领域的技术人员了解,本文中所描述的各种说明性块、模块、元件、组件、方法及算法可实施为电子硬件、计算机软件或两者的组合。为说明硬件与软件的此可互换性,上文已经在其功能性方面对各种说明性块、模块、元件、组件、方法及算法进行大体上描述。将此功能性实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。技术人员可针对每一特定应用以不同方式实施所描述的功能性。在不脱离本技术的范围的情况下,可不同地布置(例如,以不同的顺序布置,或以不同的方式划分)各种组件及块。
应理解,所揭示的过程中的框的任何特定顺序或层级是实例方法的说明。基于设计偏好,应理解,可重新布置过程中的框的特定顺序或层级,或者可执行所有所说明的框。可同时执行所述框中的任何者。在一或多个实施方案中,多任务及并行处理可能是有利的。此外,上文描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要此分离,并且应理解,所描述的程序组件及系统通常可在单个软件产品中集成在一起或封装到多个软件产品中。
如在本申请案的本说明书及任何权利要求书中所使用,术语“基站”、“接收器”、“计算机”、“服务器”,“处理器”及“存储器”都是指电子或其它技术装置。这些术语排除人或人群。出于本说明书的目的,术语“显示”意指在电子装置上显示。
如本文所使用,在一系列项目之前的短语“中的至少一者”,其中术语“及”或“或”用于分离任何项目,将列表作为整体进行修改,而不是列表的每一成员(即每一项目)。短语“中的至少一者”不需要选择列出的每一项目中的至少一者;相反,所述短语允许含义包含项目中的任一者中的至少一者,及/或项目的任何组合中的至少一者,及/或项目中的每一者中的至少一者。通过实例的方式,短语“A、B及C中的至少一者”或“A、B或C中的至少一者”各自仅指A、仅指B或仅指C;A、B及C的任何组合;及/或A、B及C中的每一者中的至少一者。
谓语词“经配置以”、“可操作以”及“经编程以”并不暗示对象的任何特定有形或无形修改,而是希望可互换地使用。在一或多个实施方案中,经配置以监测及控制操作或组件的处理器还可意味着处理器经编程以监测及控制操作,或者处理器可操作以监测及控制操作。同样地,经配置以执行代码的处理器可被解释为经编程以执行代码或可操作以执行代码的处理器。
例如一方面、所述方面、另一方面、一些方面、一或多个方面、一实施方案、所述实施方案、另一实施方案、一些实施方案、一或多个实施方案、一实施例、所述实施例、另一实施例、一些实施例、一或多个实施例、一配置、所述配置、另一配置、一些配置、一或多个配置、本技术、揭示、本发明、其它其变型及类似者的短语是出于方便而不暗示与此类短语有关的揭示对于本技术是必要的,或者此类揭示适用于本技术的所有配置。与此类短语有关的揭示可适用于所有配置或一或多个配置。与此类短语有关的揭示可提供一或多个实例。例如方面或一些方面的短语可指一或多个方面,反之亦然,并且此类似地适用于其它前述短语。
本文使用词语“示范性”来意指“用作实例、列子或说明”。本文中描述为“示范性”或“实例”的任何实施例不必被解释为比其它实施例优选或有利。此外,在描述或权利要求书中使用术语“包含”、“具有”或类似者的范围内,此类术语希望以类似于术语“包括”的方式为包含性的,这是因为“包括”是在作为权利要求书中的过渡词时被解释。
所属领域的一般技术人员已知或以后将知道的贯穿本发明所描述的各种方面的元件的所有结构及功能等效物通过引用的方式明确地并入本文,并且希望由权利要求书涵盖。此外,无论在权利要求书中是否明确地叙述此揭示内容,本文所揭示的内容都不希望捐献给公众。任何权利要求书要素均不得依据35U.S.C.§112第六段的规定进行解释,除非使用短语“用于……的构件”明确叙述要素,或者在方法权利要求书的情况下,使用短语“用于……的步骤”来叙述要素。
提供先前描述是为使所属领域的技术人员能够实践本文中所描述的各种方面。对于所属领域的技术人员来说,对这些方面的各种修改将是显而易见的,并且本文定义的一般原理可应用于其它方面。因此,权利要求不希望限于本文所展示的方面,而是与符合语言权利要求书的全部范围一致,其中对单数元件的参考并非希望意指“一个且仅一个”,除非具体如此陈述,而是“一或多个”。除非另外特别陈述,否则术语“一些”是指一或多个。男性代词(例如,他的)包含女性及中性(例如,她的及它的),反之亦然。标题及副标题(如果存在)仅为便利起见而使用,且并不限制本发明。
Claims (20)
1.一种网络交换机,其包括:
至少一个流入控制器,其经配置以:
经由一组输入端口接收一或多个数据包;
将所述一或多个数据包写入由所述一组输入端口共享的流入分块的流入缓冲器,所述流入缓冲器包括存储器库;
基于通过调度器发出的读取请求的调度从所述流入缓冲器读取所述一或多个数据包,所述调度器在所述流入分块的外部;以及
将所述读取的一或多个数据包转发到多个输出端口;以及
读取启动器,其连接到所述至少一个流入控制器且与所述调度器分离,所述读取启动器经配置以:
确定由所述调度器发出的所述读取请求中的多个读取请求是用于在同一时钟循环中从所述流入缓冲器的同一存储器库读取所述一或多个数据包中的至少一者;以及
保持来自所述至少一个流入控制器的所述多个读取请求中的一或多者直到一或多个后续时钟循环。
2.根据权利要求1所述的网络交换机,其包括:
至少一个第二流入控制器,其经配置以:
经由第二组输入端口接收一或多个第二数据包;
将所述一或多个第二数据包写入由所述第二组输入端口共享的第二流入分块的第二流入缓冲器;
根据通过所述调度器的所述调度从所述第二流入缓冲器读取所述一或多个第二数据包;以及
将所述读取的一或多个第二数据包转发到所述多个输出端口。
3.根据权利要求2所述的网络交换机,其中跨越所述流入缓冲器及所述第二流入缓冲器基于服务质量QoS要求或带宽可用性中的至少一者来设置所述调度。
4.根据权利要求1所述的网络交换机,其进一步包括:
所述调度器的至少一个调度控制器,所述至少一个调度控制器经配置以:
选择所述流入分块并从所述流入分块选择与所述一或多个数据包相关联的一或多个虚拟输出队列VoQ以读取所述一或多个数据包并将所述一或多个数据包转移到所述多个输出端口。
5.根据权利要求1所述的网络交换机,其中所述一或多个数据包被分为多个单元,且其中所述至少一个流入控制器进一步经配置以:
将所述一或多个数据包的所述多个单元接收到一或多个输出积累FIFO中。
6.根据权利要求5所述的网络交换机,其中所述一或多个输出积累FIFO是所述流入分块的正交队列集OQS块。
7.根据权利要求6所述的网络交换机,其中所述至少一个流入控制器进一步经配置以:
从所述一或多个输出积累FIFO读取所述多个单元;
基于来自所述一或多个输出积累FIFO的所述多个单元,产生一或多个多数据包及/或多单元队列到虚拟输出队列VoQ;以及
将所述一或多个VoQ列队分配给所述流入分块的排队块的一或多个VoQ库。
8.根据权利要求7所述的网络交换机,其中所述至少一个流入控制器进一步经配置以:
从所述调度器接收针对所述排队块的一或多个出列的请求;
基于针对所述一或多个出列的所述请求,从所述一或多个VoQ读取所述多个单元作为多数据包及/或多单元出列;以及
将所述多个单元发送到读取启动器。
9.根据权利要求1所述的网络交换机,其中所述至少一个读取启动器进一步经配置以:
在所述一或多个后续时钟循环期间向所述流入分块发出所述多个读取请求中的所述一或多者。
10.根据权利要求9所述的网络交换机,其中所述至少一个读取启动器进一步经配置以:
在发出所述多个读取请求中的所述经保持一或多者之前,向所述流入分块发出比所述多个读取请求中的所述经保持一或多者更新的至少一个新读取请求。
11.根据权利要求10所述的网络交换机,其中所述一或多个数据包被分为多个单元,且所述网络交换机进一步包括:
至少一个流出缓冲器,其经配置以:
在发出所述至少一个新读取请求及所述多个读取请求之后,将所述一或多个数据包的所述多个单元重新排序到所述一或多个数据包的所述多个单元由所述调度器出列的顺序。
12.一种网络交换机,其包括:
多个输入端口;
多个流入分块,其分别包含多个流入缓冲器,所述多个流入分块中的每一流入分块由所述多个输入端口中的一组相应输入端口共享,所述多个流入缓冲器的每一者包括多个存储器库;
调度器,其连接到所述多个流入分块以调度通过所述多个流入分块的数据通信,所述数据位于所述多个缓冲器的任何一者的所述多个存储器库的任何一者中;
读取启动器,其连接到所述多个流入分块中的一者,所述读取启动器与所述调度器分离,且所述读取启动器经配置以:
确定由所述调度器发出的针对所述多个流入分块中的所述一者的多个读取请求是用于在同一时钟循环中从所述多个流入分块中的所述一者的所述多个存储器库中的同一存储器库读取数据;
保持所述多个读取请求中的一或多个直到一或多个后续时钟循环;以及
在所述一或多个后续时钟循环期间,向所述多个流入分块中的所述一者发出所述多个读取请求中的所述一或多个;
多个流出缓冲器,其耦合到所述多个流入分块以从所述多个流入分块接收数据;及
多个输出端口,其分别耦合到所述多个流出缓冲器,其中所述多个输出端口中的每一输出端口耦合到所述多个流出缓冲器中的相应流出缓冲器。
13.根据权利要求12所述的网络交换机,其进一步包括:
网状互连件,其将所述多个流入分块耦合到所述多个流出缓冲器。
14.根据权利要求12所述的网络交换机,其中所述调度器经配置以跨越所述多个流入分块中的所述流入分块基于服务质量QoS要求或带宽可用性中的至少一者来调度数据通信。
15.根据权利要求12所述的网络交换机,其中所述多个流出缓冲器中的每一者经配置以将数据包被划分成的多个单元重新排序到所述数据包的所述多个单元由所述调度器出列的顺序。
16.根据权利要求12所述的网络交换机,其中所述多个流入缓冲器中的各个流入缓冲器的所述多个存储器库经配置以相互并行地操作。
17.一种网络交换机,其包括:
至少一个流入控制器,其经配置以:
经由一组输入端口接收一或多个数据包;
将所述一或多个数据包写入由所述一组输入端口共享的流入分块的流入缓冲器,所述流入缓冲器包括多个存储器库;以及
基于通过调度器发出的读取请求的调度从所述流入缓冲器读取所述一或多个数据包,所述调度器在所述流入分块的外部;以及
读取启动器,其连接到所述至少一个流入控制器且与所述调度器分离,所述读取启动器经配置以:
确定由所述调度器发出的多个读取请求是用于在同一时钟循环中从所述流入缓冲器的所述多个存储器库中的同一存储器库读取所述一或多个数据包中的至少一者;
当所述多个读取请求的数目大于N时,保持来自所述至少一个流入控制器的所述多个读取请求中的一或多者直到一或多个后续时钟循环;以及
在所述一或多个后续时钟循环期间向所述至少一个流入控制器发出所述多个读取请求中的所述一或多者。
18.根据权利要求17所述的网络交换机,其中所述至少一个读取启动器进一步经配置以:
在发出所述多个读取请求中的所述经保持一或多者之前,向所述流入分块发出比所述多个读取请求中的所述经保持一或多者更新的至少一个新读取请求。
19.根据权利要求18所述的网络交换机,其中所述一或多个数据包被分为多个单元,且所述网络交换机进一步包括:
至少一个流出缓冲器,其经配置以:
在发出所述至少一个新读取请求及所述多个读取请求之后,将所述一或多个数据包的所述多个单元重新排序到所述一或多个数据包的所述多个单元由所述调度器出列的顺序。
20.根据权利要求17所述的网络交换机,其中所述流入缓冲器的所述多个存储器库经配置以相互并行地操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/965,828 US10686714B2 (en) | 2018-04-27 | 2018-04-27 | Traffic management for high-bandwidth switching |
US15/965,828 | 2018-04-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110417670A CN110417670A (zh) | 2019-11-05 |
CN110417670B true CN110417670B (zh) | 2021-12-03 |
Family
ID=66448335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910264306.0A Active CN110417670B (zh) | 2018-04-27 | 2019-04-03 | 网络交换机 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10686714B2 (zh) |
EP (1) | EP3562110B1 (zh) |
CN (1) | CN110417670B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10868769B1 (en) | 2018-08-07 | 2020-12-15 | Innovium, Inc. | Read instruction queues in a network device |
US10742558B1 (en) | 2018-08-07 | 2020-08-11 | Innovium, Inc. | Traffic manager resource sharing |
US10846225B1 (en) * | 2018-08-07 | 2020-11-24 | Innovium, Inc. | Buffer read optimizations in a network device |
US20220286399A1 (en) * | 2019-09-11 | 2022-09-08 | Intel Corporation | Hardware queue scheduling for multi-core computing environments |
US11240151B2 (en) * | 2019-12-10 | 2022-02-01 | Juniper Networks, Inc. | Combined input and output queue for packet forwarding in network devices |
US11516151B2 (en) * | 2019-12-31 | 2022-11-29 | Infinera Oy | Dynamically switching queueing systems for network switches |
CN113285891B (zh) * | 2020-02-20 | 2022-10-28 | 瑞昱半导体股份有限公司 | 用于过载式网络交换的带宽分配装置与相关网络交换装置 |
CN111431812B (zh) * | 2020-03-25 | 2022-04-01 | 新华三信息安全技术有限公司 | 一种报文转发控制方法及装置 |
WO2022226762A1 (zh) * | 2021-04-27 | 2022-11-03 | 华为技术有限公司 | 数据转发和调度方法和装置 |
CN117321977A (zh) * | 2021-06-15 | 2023-12-29 | 华为技术有限公司 | 数据交换方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101465806A (zh) * | 2008-10-22 | 2009-06-24 | 华为技术有限公司 | 一种调度交换网数据包的方法、装置和系统 |
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
CN104348750A (zh) * | 2013-07-31 | 2015-02-11 | 中兴通讯股份有限公司 | OpenFlow网络中QoS的实现方法及装置 |
CN104378309A (zh) * | 2013-08-16 | 2015-02-25 | 中兴通讯股份有限公司 | OpenFlow网络中实现QoS的方法、系统和相关设备 |
CN105959241A (zh) * | 2016-04-27 | 2016-09-21 | 西安空间无线电技术研究所 | 一种星载光电混合交换统一调度方法 |
CN106878203A (zh) * | 2015-12-11 | 2017-06-20 | 中国航空工业集团公司西安航空计算技术研究所 | 用于fc交换机芯片的快速转发电路及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7039046B1 (en) * | 2000-05-20 | 2006-05-02 | Ciena Corporation | Network device including central and distributed switch fabric subsystems |
US7292594B2 (en) * | 2002-06-10 | 2007-11-06 | Lsi Corporation | Weighted fair share scheduler for large input-buffered high-speed cross-point packet/cell switches |
EP2317446A1 (en) | 2005-06-30 | 2011-05-04 | Imec | A memory arrangement for multi-processor systems |
US7761636B2 (en) * | 2006-11-22 | 2010-07-20 | Samsung Electronics Co., Ltd. | Method and system for providing access arbitration for an integrated circuit in a wireless device |
US8843682B2 (en) * | 2010-05-18 | 2014-09-23 | Lsi Corporation | Hybrid address mutex mechanism for memory accesses in a network processor |
CN103069757B (zh) * | 2011-08-17 | 2015-07-22 | 华为技术有限公司 | 一种报文重组重排序方法、装置和系统 |
US9083655B2 (en) | 2012-10-05 | 2015-07-14 | Broadcom Corporation | Internal cut-through for distributed switches |
US10257117B2 (en) * | 2014-11-05 | 2019-04-09 | Avago Technologies International Sales Pte. Limited | Distributed switch architecture |
US9894013B2 (en) | 2015-02-03 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Early queueing network device |
US9825809B2 (en) | 2015-05-29 | 2017-11-21 | Netspeed Systems | Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip |
-
2018
- 2018-04-27 US US15/965,828 patent/US10686714B2/en active Active
-
2019
- 2019-04-03 CN CN201910264306.0A patent/CN110417670B/zh active Active
- 2019-04-26 EP EP19171403.9A patent/EP3562110B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101465806A (zh) * | 2008-10-22 | 2009-06-24 | 华为技术有限公司 | 一种调度交换网数据包的方法、装置和系统 |
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
CN104348750A (zh) * | 2013-07-31 | 2015-02-11 | 中兴通讯股份有限公司 | OpenFlow网络中QoS的实现方法及装置 |
CN104378309A (zh) * | 2013-08-16 | 2015-02-25 | 中兴通讯股份有限公司 | OpenFlow网络中实现QoS的方法、系统和相关设备 |
CN106878203A (zh) * | 2015-12-11 | 2017-06-20 | 中国航空工业集团公司西安航空计算技术研究所 | 用于fc交换机芯片的快速转发电路及方法 |
CN105959241A (zh) * | 2016-04-27 | 2016-09-21 | 西安空间无线电技术研究所 | 一种星载光电混合交换统一调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110417670A (zh) | 2019-11-05 |
US20190334828A1 (en) | 2019-10-31 |
US10686714B2 (en) | 2020-06-16 |
EP3562110A1 (en) | 2019-10-30 |
EP3562110B1 (en) | 2021-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110417670B (zh) | 网络交换机 | |
US10567307B2 (en) | Traffic management for high-bandwidth switching | |
US10764208B2 (en) | Distributed switch architecture | |
US8218546B2 (en) | Interleaved processing of dropped packets in a network device | |
US7953002B2 (en) | Buffer management and flow control mechanism including packet-based dynamic thresholding | |
US9325637B2 (en) | System for performing distributed data cut-through | |
EP1720295B1 (en) | Dynamic sharing of a transaction queue | |
US10069701B2 (en) | Flexible allocation of packet buffers | |
US20080165793A1 (en) | Memory sharing mechanism based on priority elevation | |
US6728790B2 (en) | Tagging and arbitration mechanism in an input/output node of a computer system | |
US6681274B2 (en) | Virtual channel buffer bypass for an I/O node of a computer system | |
US8879578B2 (en) | Reducing store and forward delay in distributed systems | |
US20020184381A1 (en) | Method and apparatus for dynamically controlling data flow on a bi-directional data bus | |
JP4408376B2 (ja) | 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理 | |
US6807599B2 (en) | Computer system I/O node for connection serially in a chain to a host | |
US20070140260A1 (en) | System and method of single switch string hardware | |
US7623456B1 (en) | Apparatus and method for implementing comprehensive QoS independent of the fabric system | |
JP4852138B2 (ja) | 高速交換環境でマルチキャスティングするシステム、方法及び論理 | |
US6820151B2 (en) | Starvation avoidance mechanism for an I/O node of a computer system | |
US6839784B1 (en) | Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel | |
EP3376719B1 (en) | Arbitrating data packets | |
Chrysos | Design issues of variable-packet-size, multiple-priority buffered crossbars |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |