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

用于交换网络流量的设备和方法

文献发布时间:2023-06-19 11:21:00


用于交换网络流量的设备和方法

技术领域

本公开总体上涉及计算装置,尤其是网络装置中的排队。

背景技术

计算机网络是可以交换数据和共享资源的互联网络装置的集合。示例网络装置包括在开放系统互连(OSI)参考模型的第二层(即数据链路层)内操作的路由器、交换机和其他第二层(L2)网络装置以及在OSI参考模型的第三层(即网络层)内操作的第三层(L3)网络装置。计算机网络内的网络装置通常包括为网络装置提供控制平面功能的控制单元和用于路由或交换数据单元的转发组件。

计算机网络的路由器可以使用一个或多个队列来促进发送方和接收方之间的带宽匹配。网络交换机可以从发送方接收分组,并将接收到的分组的一部分从发送方发送到接收方,将接收到的分组的剩余部分存储在队列中。在发送接收到的分组的一部分之后,网络交换机将存储在队列中的分组的剩余部分发送给接收方。

一般来说,通常希望对资源进行划分和分配,以便针对不同类型的分组流实现不同的服务质量(QoS)。例如,响应于从源装置接收到分组,网络装置可以将分组分类为源自源装置,并且识别在路由器中为源装置提供的特定优先级。然后,网络装置通常将网络分组作为一个或多个离散数据单元存储在与所确定的优先级相关联的多个队列中的一个中。路由器以满足每个定义的优先级的方式为队列提供服务。例如,在操作期间,网络装置根据所提供的优先级执行出队操作,以从队列中选择网络分组来调度网络分组的递送。在某些情况下,网络装置以重叠的方式执行多个出列操作,以同时选择多个队列并为其提供服务。作为一个示例,网络装置可以以流水线方式实施出列和网络分组调度操作,使得出列并调度多个网络分组,用于在任何给定时间点进行处理。通过同时执行这些出列操作,网络装置可以提高了在给定时间内可以服务的网络分组的数量。

发明内容

一般来说,本公开描述了用于改进网络装置中排队系统的技术。诸如路由器或交换机之类的网络装置可以在分组转发引擎之间进行内部交换之前,或者在通过网络传输分组之前,将网络分组排入一个或多个队列中。一种用于网络装置的排队系统可以被配置为组合虚拟输出队列(VOQ)和组合输入输出队列(CIOQ)的元素。如本文所使用的,VOQ可以指入口侧的缓冲器,其中,每个输入端口为每个输出端口维护单独的虚拟队列。然而,为每个输出端口维护一个单独的虚拟队列,并不能很好地扩展。相反,CIOQ可以被配置为在出口侧缓冲。然而,由于线路头(HOL)阻塞,CIOQ可能限制网络装置的吞吐量。例如,当输入队列聚集打算到达出口分组转发引擎的多个流时,或者当多个入口分组转发引擎试图到达相同的出口分组转发引擎并且超过出口分组转发引擎的带宽时,由于交换结构上的HOL阻塞,CIOQ可能限制网络装置的吞吐量。

根据本公开的技术,网络装置可以被配置为提供允许输出队列缩放(scaling)的“CIOQ行为”。例如,网络装置可以被配置为使用出口处的虚拟输出队列,作为本地输出队列。例如,网络装置可以被配置为在VOQ为分组转发引擎将网络分组排队,并且分组转发引擎将调度网络分组,以在分组转发引擎的特定端口排队。在这种情况下,网络装置可以“回送”信息,该信息指示虚拟输出队列中的网络分组并且该网络分组将排入特定端口的输出队列。这样,随着更多的分组转发引擎添加到系统中,网络装置可以允许队列缩放增加,同时有助于最小化交换结构上的线路头阻塞。

在一个示例中,一种用于交换网络流量的设备包括:入口分组转发引擎,其在电路中实施,并且被配置为:响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎;并且将网络分组排入虚拟输出队列,以输出到出口分组转发引擎;所述出口分组转发引擎在处理电路中实施,并且被配置为响应于第一调度事件,向入口分组转发引擎输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在出口分组转发引擎的输出端口的输出队列中排队;其中,所述入口分组转发引擎还被配置为响应于接收到所述信息:将网络分组从虚拟输出队列中出列;并且将网络分组排入输出队列;并且其中,所述出口分组转发引擎还被配置为响应于在所述第一调度事件之后的第二调度事件:将网络分组从输出队列中出列;并且在输出端口输出网络分组。

在另一示例中,一种方法包括:响应于接收到网络分组并由处理电路中实施的入口分组转发引擎确定用于输出网络分组的出口分组转发引擎;由入口分组转发引擎将网络分组排入虚拟输出队列中,以输出到出口分组转发引擎;响应于第一调度事件并且由在处理电路中实施的出口分组转发引擎向入口分组转发引擎输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在出口分组转发引擎的输出端口的输出队列中排队;响应于接收到信息并由入口分组转发引擎将网络分组从虚拟输出队列中出列,并且由入口分组转发引擎将网络分组排入输出队列;并且响应于在第一调度事件之后的第二调度事件并且由出口分组转发引擎将网络分组从输出队列中出列,并且由出口分组转发引擎在输出端口输出网络分组。

在另一示例中,一种用于交换网络流量的设备包括:多个接口卡;入口分组转发引擎,其在电路中实施,并且被配置为:响应于接收到具有多个接口卡的网络分组,确定用于输出网络分组的出口分组转发引擎;并且将网络分组排入虚拟输出队列,以输出到出口分组转发引擎;所述出口分组转发引擎在处理电路中实施,并且被配置为响应于第一调度事件,向入口分组转发引擎输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在出口分组转发引擎的输出端口的输出队列中排队;其中,所述入口分组转发引擎还被配置为响应于接收到所述信息:将网络分组从虚拟输出队列中出列;并且将网络分组排入输出队列;并且其中,所述出口分组转发引擎还被配置为响应于在所述第一调度事件之后的第二调度事件:将网络分组从输出队列中出列;并且用多个接口卡在输出端口输出网络分组。

在一个示例中,一种设备包括:装置,用于响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎;装置,用于将网络分组排入虚拟输出队列,以输出到出口分组转发引擎;装置,用于响应于第一调度事件,输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在出口分组转发引擎的输出端口的输出队列中排队;装置,用于响应于接收到所述信息,将网络分组从虚拟输出队列中出列,以及装置,用于将网络分组排入输出队列;以及装置,用于响应于在所述第一调度事件之后的第二调度事件,将网络分组从输出队列中出列,以及装置,用于在输出端口输出网络分组。

在附图和以下描述中阐述本公开的技术的一个或多个示例的细节。这些技术的其他特征、目的和优点将从说明书和附图以及权利要求中变得显而易见。

附图说明

图1是示出根据本公开的技术的示例网络的框图;

图2是示出根据本公开的技术的图1的网络内的示例路由器的框图;

图3是示出根据本公开的技术的图2的路由器内的示例整形器信用更新引擎的框图;

图4是示出根据本公开的技术的使用网络分组回送来交换本地网络流量的示例路由器的框图;

图5是示出根据本公开的技术的使用网络分组回送来将结构网络流量交换到出口的示例路由器的框图;

图6是示出根据本公开的技术的使用网络分组回送来交换来自入口的结构网络流量的示例路由器的框图;

图7是示出根据本公开的技术的使用元数据回送来交换本地网络流量的示例路由器的框图;

图8是示出根据本公开的技术的使用元数据回送来交换来自入口的结构网络流量的示例路由器的框图;

图9是示出根据本公开的技术的用于交换网络流量的示例过程的框图。

在所有的附图和描述中,相同的附图标记表示相同的元件。

具体实施方式

有些系统将输入输出队列(CIOQ)组合用于较大的队列缩放。在CIOQ系统中,分组缓冲器(例如,延迟带宽缓冲器(DBB)和输出队列(OQ))与拥塞管理(CM)和分级调度一起保持在出口处。在一些示例中,CIOQ系统可以包括在入口处细粒度排队。因此,在CIOQ中,可以在入口使用小型结构输入队列(IQ)(例如,每个目的地分组转发引擎一个)。通过CIOQ,随着越来越多的分组转发引擎添加到系统中,队列缩放也随之增加,因为网络分组在每个队列的出口处展开。

然而,CIOQ系统可能会遭受结构拥塞,例如,可以使用结构超速(例如,2X)来满足服务质量(QoS)目标,以解决该结构拥塞。当不同分组转发引擎上的多个输入端口试图到达同一个出口OQ时,可能会发生结构拥塞。在该示例中,CIOQ系统可能会在入口结构接口丢弃网络分组。入口结构队列可以通过较小的队列(例如,存储在片上存储器(OCM))聚集流量,只有少数优先级限制,并且没有每个队列的QoS保证。

为了避免与CIOQ系统相关的上述困难,一些网络装置可能使用虚拟输出队列。在虚拟输出队列中,每个入口分组转发引擎包括唯一标识出口OQ的虚拟输出队列(VOQ)。VOQ(例如,每个分组转发引擎上一个VOQ)可以与OQ组合,以形成队列。入口上的VOQ可以提供在出口处只有小OQ的延迟带宽缓冲器(例如,在出口处只有队列头部可用于调度到端口)。因为DBB在虚拟输出队列中保持在入口,所以这样的系统可以省略用于减轻交换结构上的线路头阻塞的技术。这种线路头阻塞可能是由于VOQ的出口调度,这与公平的结构调度一起可能使用很少的超速或没有超速。

然而,虚拟输出队列可能缺少OQ缩放。因为每个入口分组转发引擎可以对每个出口OQ使用VOQ,所以入口分组转发引擎上的VOQ数量决定了最大OQ缩放。因此,在CIOQ系统的情况下,考虑到用于排队的入口存储器是有限的并且不容易升级,以增加额外的存储容量,VOQ系统可以具有由入口分组转发引擎上的VOQ的数量决定的最大OQ数(例如,48,000个OQ),而不是随着更多分组转发引擎的增加而增加队列缩放。因为OQ的总数不会随着分组转发引擎的增加而增加,所以随着更多的分组转发引擎添加到系统中,每个分组转发引擎的OQ的平均数量变得更小。对于分层服务质量解决方案,使用虚拟输出队列的系统可以将系统中支持的分组转发引擎的数量限制为少数(例如,4或8个分组转发引擎)。

在本文描述的技术描述了一种被配置为提供“CIOQ行为”的系统,该CIOQ行为能够在独立的(例如,组合缓冲器(CBUF)本地交换)和基于结构的系统中实施OQ缩放。在一些示例中,系统可以在出口处使用虚拟输出队列作为OQ。例如,系统可以在VOQ为分组转发引擎将网络分组排队,并且分组转发引擎将调度网络分组,以在分组转发引擎的特定端口排队。在这种情况下,系统可以“回送”信息(例如,具有分组有效载荷的分组报头、仅元数据等),指示虚拟输出队列中的网络分组,并且该网络分组将在特定端口的输出队列中排队。所描述的技术可以包括可以使用元数据在本地回送信息的系统。在一些示例中,系统可以通过用网络分组的报头和分组有效载荷回送网络分组来回送信息。通过这种方式,随着更多的分组转发引擎添加到系统中,系统可以允许队列缩放增加,同时有助于最小化交换结构上的线路头阻塞。例如,如果多个流聚集通过入口分组转发引擎上的单个入口队列,但是随后在出口分组转发引擎处分离成单独的输出队列,则系统可能具有某种线路头阻塞。

图1是示出示例性系统102的框图,其中,网络104包括路由器106A-106B(统称为路由器106)。装置110A-110N(统称为装置110)经由路由器106连接到网络104,以便访问网络104提供的资源。每个装置110可以是终端用户计算装置,例如,个人计算机、膝上型计算机、移动电话、网络电话、电视机顶盒、视频游戏系统、销售点装置、个人数字助理、中间网络装置、网络装置、超级计算机、大型计算机、工业机器人或能够与网络104接合并通过网络104通信的另一种装置。

网络104可以包括便于装置110访问内容的多个网络装置。多个网络装置中的每一个可以包括路由器(例如,路由器106)、交换机、服务器、数据库服务器、集线器、防火墙、入侵检测/防御(IDP)装置和/或任何其他类型的便于向装置110传输数据和从装置110传输数据的网络设备或装置中的一个。网络104包括路由器106,路由器106使用各种协议(例如,边界网关协议和互联网控制消息协议)进行通信,以便交换路由、网络配置信息和其他信息。该网络可以是局域网(“LAN”),例如,令牌环网或以太网、虚拟局域网(“VLAN”)或另一种网络。网络可以包括一个或多个有线或无线链路。例如,网络104可以是包括一条或多条以太网电缆的以太网。在另一示例中,网络可以是使用无线电传输来传递信息的无线保真(“Wi-Fi”)网络。在另一示例中,网络104可以是移动网络。尽管在图1中被示为单个网络104,但是网络104可以包括任意数量的互连网络(公共的或私有的),其中,各种网络互连,以形成一个或多个虚拟网络。

网络104提供可由装置110访问的各种资源。在图1的示例中,网络104包括存储或以其他方式寻求内容的内容服务器112,如本文使用的术语,内容服务器112是指通常在网络内传输和/或存储的任何数据,例如,基于网络的应用、图像、文档、网页、视频数据、音频数据(例如,语音)、基于网络的游戏、脚本或任何其他类型的基于网络的内容。网络104可以支持多播技术,以提高与网络一起传输的数据的传送效率。通常,网络104还将连接到各种其他类型的装置(例如,文件服务器、打印机、电话、电子邮件和其他应用服务器)。网络104还被示为经由路由器106B耦合到公共网络114(例如,互联网)。公共网络114可以包括例如一个或多个客户端计算装置。公共网络114可以提供对网络服务器、应用服务器、公共数据库、媒体服务器、终端用户装置以及许多其他类型的网络资源装置和内容的访问。

网络104可以使用一个或多个基于分组的协议(例如,互联网协议(IP)/传输控制协议(TCP))通过路由器106A向装置110传输内容。在这方面,网络104可以支持经由离散数据单元的数据传输,所述离散数据单元通常称为“网络分组”,或者简称为“分组”。结果,网络104可以称为“基于分组的”或“分组交换的”网络。虽然在本公开中被描述为传输、传送或以其他方式支持分组,但是网络104可以根据由任何其他协议定义的任何其他离散数据单元来传输数据,例如,由异步传输模式(ATM)协议定义的信元或者由用户数据报协议(UDP)定义的数据报。

由网络104传送的网络流量可以根据许多类别进行分类。例如,内容服务器112可以通过路由器106A将实况视频流传送到一个装置110。传输这种视频的分组可以被分类为流式多媒体分组。内容服务器112也可以使用HTTP分组向一个装置110发送网页。作为另一示例,由路由器106交换的信息可以被分类为网络管理流量。除了按应用分类之外,网络流量还可以按源或目的地、用户、协议和端口(对于TCP和UDP)以及其他特征分类。

各种类型的网络流量可能需要一定水平的网络性能。例如,流式多媒体可能需要有保证的带宽来提供可接受的用户体验。作为另一示例,为了保持网络的效率,网络管理流量应该经历低延迟。此外,互联网服务提供商(ISP)可能会根据服务提供商协议,将某些用户的流量优先于其他用户。为了满足这些要求,网络104包括根据多个预定义的QoS水平来支持服务质量(QoS)保证的机制。

路由器106接收、分析和分类分组,以将分组分配到合适的优先级。除了对分组进行分类,路由器106还根据其优先级来处理接收到的和分类的分组。通过这种方式,路由器106实施由网络104提供的QoS保证的方面。此外,基于从系统102中的其他装置接收的信息,路由器106为每个接收到的分组确定通过系统的适当路由,并相应地转发该分组。

路由器106可以调节分组传输的速度,以防止网络上的泛洪。例如,路由器106可以包括令牌桶整形器,该令牌桶整形器使用“令牌”来使相应数量的字节从队列中出列,并通过网络传输,并且如果令牌桶整形器使用不足够的令牌,则可以不传输分组。换言之,每个令牌可以对应于允许令牌桶整形器从队列中出列并通过网络传输的字节数。通过这种方式,令牌桶整形器用于调节从队列中移除分组并在网络上传输分组的速度。

一些路由器可能使用CIOQ技术,该技术使用延迟带宽缓冲器并且输出在出口处保存分组的队列,同时进行拥塞管理和分层调度。在该示例中,CIOQ系统可以在入口使用结构输入队列(例如,每个目的地分组转发引擎一个)。由于网络分组在每个队列的出口处展开,因此,随着更多的分组转发引擎被添加到CIOQ系统中,队列缩放也会增加。然而,CIOQ系统可能遭受结构拥塞,例如,可以使用结构超速(例如,2X)来满足服务质量(QoS)目标,以解决该结构拥塞。当不同分组转发引擎上的多个输入端口试图到达同一个出口OQ时,可能会发生结构拥塞。在该示例中,CIOQ系统可能会在入口结构接口丢弃网络分组。入口结构队列可以通过较小的队列(例如,存储在片上存储器(OCM))聚集流量,只有少数优先级限制,并且没有每个队列的QoS保证。

一些网络装置可能使用虚拟输出队列。在虚拟输出队列中,路由器可以使用唯一标识出口OQ的虚拟输出队列(VOQ)。VOQ(例如,每个分组转发引擎上一个VOQ)可以与OQ组合,以形成队列。入口上的VOQ可以提供在出口处只有小OQ的延迟带宽缓冲器(例如,在出口处只有队列头部可用于调度到端口)。由于延迟带宽缓冲器在虚拟输出队列中保持在入口,所以使用VOQ技术的系统可以省略用于减轻交换结构上的线路头阻塞的技术。然而,被配置为使用虚拟输出队列的路由器可能缺少OQ缩放。因为每个入口分组转发引擎可以对每个出口OQ使用VOQ,所以入口分组转发引擎上的VOQ数量决定了最大OQ缩放。

根据本公开的技术,路由器106可以被配置为提供“CIOQ行为”,该CIOQ行为能够在独立的(例如,组合缓冲器(CBUF)本地交换)和基于结构的系统中实施OQ缩放。例如,路由器106A可以被配置为在出口处使用虚拟输出队列作为OQ。例如,路由器106A可以被配置为在VOQ为分组转发引擎将网络分组排队,并且分组转发引擎将调度网络分组,以在分组转发引擎的特定端口排队。在这种情况下,路由器106A可以向入口分组转发引擎“回送”信息,指示虚拟输出队列中的网络分组,并且该网络分组将在特定端口的输出队列中排队。所描述的技术可以包括可以使用元数据在本地回送信息的系统。在一些示例中,路由器106A可以通过用网络分组的报头和分组有效载荷回送网络分组来回送信息。通过这种方式,随着更多的分组转发引擎添加到系统中,路由器106A可以允许队列缩放增加,同时有助于最小化交换结构上的线路头阻塞。

在操作中,路由器106A可以响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎。例如,路由器106A可以确定路由器106A的出口分组转发引擎。在一些示例中,路由器106A可以确定对应于下一跳的出口分组转发引擎。例如,路由器106A可以响应于确定网络分组的分组标签指定了IP地址,确定网络分组的下一跳。在这种情况下,路由器106A可以确定分配给对应于网络分组的下一跳的端口的出口分组转发引擎。

路由器106A可以将网络分组排入虚拟输出队列,以输出到出口分组转发引擎。例如,路由器106A在虚拟输出队列中存储网络分组(例如,分组有效载荷、分组报头等)。响应于第一调度事件,路由器106A可以向入口分组转发引擎输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在出口分组转发引擎的输出端口的输出队列中排队。例如,路由器106A可以使用不同类型的分组流的服务质量和/或出列率来确定调度网络分组,以供出口分组转发引擎排队,以供出口分组转发引擎处理。为了输出该信息,路由器106A可以经由出口路由器的端口向入口路由器的端口输出网络分组、网络分组的分组有效载荷和包括该信息的网络分组的报头。在一些示例中,为了输出信息,路由器106A可以使用本地交换(例如,使用组合缓冲器)输出元数据,而不输出分组有效载荷。

响应于接收到信息,路由器106A的入口分组转发引擎可以将网络分组从虚拟输出队列中出列。例如,路由器106A可以从虚拟输出队列中移除网络分组(例如,分组有效载荷和分组报头)和/或表示网络分组的指针。路由器106A可以将网络分组排入输出队列。例如,路由器106A可以将网络分组和/或表示网络分组的指针添加到输出队列。

响应于在第一调度事件之后的第二调度事件,路由器106A可以使网络分组从输出队列出列,并在输出端口输出网络分组。例如,路由器106A可以使用不同类型的分组流的服务质量和/或出列率来确定调度网络分组,以供出口分组转发引擎在输出端口的输出队列处排队。响应于第二调度事件,路由器106A可以在输出端口输出网络分组(例如,分组有效载荷和分组报头),并且从输出端口的输出队列中移除网络分组(例如,分组有效载荷和分组报头)和/或表示网络分组的指针。

通过这种方式,与使用VOQ的路由器相比,路由器106A可以具有更高的可扩展性。例如,使用本文描述的技术,路由器106A可以增加输出队列缩放,这可以有助于支持更多的客户,从而改善路由器的操作。例如,假设四个分组转发引擎中的每个分组转发引擎支持48,000个队列,使用VOQ技术的四个分组转发引擎的组合可以仅支持48,000个队列。然而,根据本公开的技术,使用组合缓冲技术的四个分组转发引擎的组合可以支持192,000个队列(即,4x48,000),这可以允许路由器支持额外的客户,因此可以提高路由器106A的性能。在一些示例中,与被配置为使用CIOQ的路由器相比,路由器106A可以具有更低的产品成本。此外,本文描述的技术可以与VOQ技术和/或CIOQ一起使用。例如,路由器106A可以将VOQ用于面向互联网的流量,并且本文描述的技术将组合缓冲器用于来自互联网的入站流量(例如,用于客户排队)。

路由器106可以使用本文描述的技术来使用虚拟输出队列作为输出队列。然而,在一些示例中,一些路由器106可以使用其他技术,例如,虚拟输出排队、CIOQ或其他排队技术。尽管参考路由器106讨论本文描述的原理,但是其他网络装置(例如但不限于异步传输模式(ATM)交换机、局域网(LAN)交换机、接口卡、网关、防火墙或系统102的另一装置)可以确定预测的寿命。

图2是示出根据本公开的技术的图1的网络104内的示例路由器206的框图。通常,路由器206可以基本上类似于图1的路由器106来操作。在这个示例中,路由器206包括接口卡230A-230N(“IFC 230”),其经由输入链路232A-232N(“输入链路232”)接收网络分组,并经由输出链路234A-234N(“输出链路234”)发送网络分组。IFC 230可以经由多个接口端口耦合到链路232、234。路由器206可以包括与控制单元222通信的控制单元222,该控制单元222确定接收到的分组的路由,并相应地经由IFC230转发分组。

控制单元222包括路由引擎224和分组转发引擎226。路由引擎224作为路由器206的控制平面操作,并且包括操作系统(未示出),该操作系统提供多任务操作环境,用于执行多个并发进程。例如,路由引擎224执行软件指令,以实施一个或多个控制平面网络协议246。例如,协议246可以包括一个或多个路由协议,例如,BGP 252,用于与其他路由装置交换路由信息并且用于更新路由信息库(RIB)242。协议246还可以包括传输协议(例如,多协议标签交换(MPLS)协议250)以及多播管理协议,例如,互联网组管理协议(IGMP)256。在其他示例中,协议246可以包括其他路由、传输、管理或通信协议。

在一些示例中,路由引擎224包括命令行接口(CLI)240,以允许管理员配置和/或管理路由器206。例如,管理员可以经由CLI 240访问队列管理器264来配置分组转发引擎226的一个或多个参数。在另一示例中,路由引擎224包括图形用户接口(GUI),而不是CLI。在又一示例中,路由引擎执行简单网络管理协议(SMNP)254,以允许管理员从远程终端配置和/或控制路由器206。

路由协议守护程序(RPD)244可以执行BGP 252或其他路由协议来更新RIB 242。RIB 242描述了路由器206所在的计算机网络的拓扑,并且还包括通过计算机网络的路由。RIB 242描述了计算机网络内的各种路由以及每条路由的适当的下一跳,即沿着每条路由的相邻路由装置。RPD244分析存储在RIB 242中的信息,并为分组转发引擎226生成转发信息,分组转发引擎226将转发信息存储在转发信息库(FIB)260中。换言之,RPD 244可以解析RIB 242存储的路由信息,以获得识别网络内每个目的地的下一跳的转发信息,将转发信息存储到FIB 260。

组合缓冲器(“CBUF”)265可以充当路由器206的分组转发引擎226的队列存储。CBUF 265可以包括本地存储器(例如,片上存储器(OCM))和/或外部存储器(例如,高带宽存储器(HBM))。根据本公开的技术,CBUF 265可以存储路由器206的队列。在一些示例中,CBUF265包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存,包括用于使一个或多个处理器执行归属于其的动作的可执行指令。

CBUF 265可以包括一个或多个队列,这些队列是用于组织和临时存储数据的先进先出(FIFO)数据结构。在图2的示例中,CBUF 265的队列可以为路由器206存储一个或多个网络分组。例如,路由器206可以在分组转发引擎226之间进行内部交换之前,将一个或多个分组存储在CBUF 265的一个或多个队列中。在另一示例中,路由器206可以在通过网络传输网络分组之前,将一个或多个分组存储在CBUF 265的一个或多个队列中。

例如,CBUF 265可以包括虚拟输出队列227A-227N(本文统称为“VOQ 227”)和/或输出队列219A-219N(本文统称为“OQ 219”)。在一些示例中,VOQ 227中的每个VOQ可以分配给分组转发引擎226的相应分组转发引擎。例如,VOQ 227A可以分配给分组转发引擎226的第一分组转发引擎,VOQ 227B可以分配给分组转发引擎226的第二分组转发引擎,诸如此类。OQ 219中的每个OQ可以分配给分组转发引擎226的分组转发引擎的相应端口。例如,OQ219A可以分配给分组转发引擎226的第一分组转发引擎的第一端口,OQ 219B可以分配给第一分组转发引擎的第二端口,诸如此类。

分组转发引擎226作为路由器206的数据平面操作,并且包括FIB260、整形器信用更新引擎262和队列管理器264。例如,分组转发引擎226处理路由器206经由IFC 230转发和接收的分组。例如,分组转发引擎226可以对输出分组应用过滤器和路由策略,并将分组转发到网络中的下一跳。在一些示例中,控制单元222包括多个分组转发引擎,每个分组转发引擎被配置为类似于分组转发引擎226来操作,以便为不同的网络流量流提供分组转发功能。如本文所使用的,入口分组转发引擎和出口分组转发引擎仅仅是用于提供与特定网络分组相关的上下文的术语。即,当接收分组时,所有分组转发引擎226可以充当入口分组转发引擎,当发送网络分组时,充当出口分组转发引擎。在一些示例中,单个分组转发引擎可以充当单个分组的入口分组转发引擎和出口分组转发引擎。

例如,FIB 260可以将网络流量的网络目的地与特定的下一跳和对应的IFC 230以及输出链路234的物理输出端口相关联。FIB 260可以是被编程到专用转发芯片中的基数树、一系列表、复杂数据库、链表、基数树、数据库、平面文件或各种其他数据结构。在一些示例中,FIB 260包括查找结构。考虑到一个键,例如,一个地址,查找结构可以提供一个或多个值。在一些示例中,一个或多个值可以是一个或多个下一跳。下一跳可以被实施为微码,当执行该微码时,该微码执行一个或多个操作。一个或多个下一跳可以“链接”,使得一组链接的下一跳在执行时为相应的不同下一跳执行一组操作。这种操作的示例可以包括将一个或多个服务应用于网络分组、丢弃网络分组、和/或使用由一个或多个下一跳标识的一个和/或多个接口转发网络分组。如图所示,FIB 260可以包括入口分组处理器(IPP)261和出口分组处理器(EPP 263)。IPP 261可以确定充当网络分组的出口分组转发引擎的分组转发引擎226中的分组转发引擎。EPP 263可以确定出口处的输出队列转发统计。

分组转发引擎226的队列管理器264可以与整形器信用更新引擎262一起工作,以执行VOQ 227和OQ 219的管理功能。例如,整形器信用更新引擎262可以实施令牌桶整形器数据结构来确定VOQ 227的出列率。在该示例中,队列管理器264可以使用整形器信用更新引擎262指定的出列率来调节到VOQ 227的网络分组流。类似地,整形器信用更新引擎262可以实施令牌桶整形器数据结构来确定OQ 219的出列率。在该示例中,队列管理器264使用由整形器信用更新引擎262指定的出列率来调节来自OQ 219的网络分组流。参考图3进一步描述整形器信用更新引擎262。

根据本文所述的技术,分组转发引擎226可以被配置为将VOQ 227(例如,入口VOQ)重新用作出口VOQ。例如,分组转发引擎226的第一分组转发引擎可以充当使用VOQ 227A作为入口VOQ的入口分组转发引擎。在这个示例中,VOQ 227可以被分组转发引擎226的第二分组转发引擎“重新用作”出口OQ。在这种情况下,出口分组转发引擎可以向入口分组转发引擎“回送”信息,该指示VOQ 227中的网络分组并且该网络分组将在特定端口的OQ 219A排队。在一些示例中,分组转发引擎226的一个或多个分组转发引擎可以在入口使用VOQ 227作为VOQ。因为OQ的总数随着分组转发引擎的增加而增加,所以随着更多的分组转发引擎添加到系统中,每个分组转发引擎的OQ的平均数量变得更大。通过这种方式,当多个分组转发引擎添加到系统中时(例如,每个分组转发引擎40,000个),可以发生OQ缩放。

OQ 219的每个OQ可以被调度到出口端口,这可以在出口端口进行排队。分组转发引擎226的入口分组转发引擎可以支持具有OQ的每个目的地分组转发引擎的少量结构输入队列(例如,一个VOQ 227)。例如,队列管理器264可以使用具有优先级的每个目的地分组转发引擎回送信道(例如,每个目的地分组转发引擎高达8个优先级)的一个VOQ。在一些示例中,IPP 261可以执行查找,以确定每个出口输出端口的分组转发引擎226和OQ(例如,VOQ)的出口分组转发引擎。例如,IPP 261可以在准备从入口发送到出口的网络分组中插入VOQ数量,用于出口处的OQ。

整形器信用更新引擎262可以包括授权调度器(GS)272,其在本文也称为出口处的“调度器272”,该调度器可以被配置为调度从VOQ到结构以及从OQ到端口的网络分组。例如,调度器272可以将结构分组/页面从入口分组转发引擎调度到出口分组转发引擎。调度器272可以被配置为调度从OQ到出口分组转发引擎上的端口的网络分组。

调度器272可以将带有OQ的出口分组转发引擎直接调度到端口。例如,调度器272可以包括8K队列,并且有五个8K队列(例如,对于每个分组转发引擎,5x8K是40K OQ)。在这种情况下,调度器272可以不使用结构来针对确定性行为调度到端口。

路由器206可以被配置为支持将VOQ和OQ混合在同一系统中。例如,路由器206可以被配置为使得当支持每个端口的小队列时,一些结构目的地可以是“典型的”VOQ/OQ组合,而当需要每个端口的较大队列时,其他目的地可以是OQ。在一些示例中,路由器206可以使用出口分组转发引擎上的现有分组回送路径来以最小的改变的设计将分组排入OQ以支持OQ,但是可能降低带宽(例如,参见图4、5、6)。在一些示例中,路由器206可以被配置为使得从结构到达的网络分组在出口分组转发引擎上回送,以执行丢弃检查并排入(NQ)OQ,而不需要任何新的数据路径。在这个示例中,调度器272可以将OQ直接调度到端口。

路由器206可以在出口处使用专用数据路径来实施完全性能(例如,参见图6、7、8)。例如,路由器206可以被配置为使得首先使用丢弃检查来检查从结构到达的网络分组是否允许进入OQ,并且如果允许的话,将其排入OQ。在这个示例中,调度器272可以从OQ直接调度到港口。通过这种方式,本文描述的技术可以在出口分组转发引擎处使用“本地交换”,这可以允许在入口处接收网络分组,并且直接移动到出口,而不通过结构。

在操作中,分组转发引擎226的入口分组转发引擎可以响应于接收到网络分组而确定用于输出网络分组的分组转发引擎226的出口分组转发引擎。例如,入口分组转发引擎可以确定用于输出网络分组的入口分组转发引擎226中的出口分组转发引擎。FIB 260可以确定对应于下一跳的出口分组转发引擎。例如,FIB 260可以响应于确定网络分组的分组标签指定IP地址,确定网络分组的下一跳。在这种情况下,FIB 260可以确定分配给对应于网络分组的下一跳的端口的出口分组转发引擎。

入口分组转发引擎可以将网络分组在VOQ 227A中排队,以便输出到出口分组转发引擎。例如,入口分组转发引擎在VOQ 227A处存储网络分组(例如,分组有效载荷、分组报头等)。响应于第一调度事件,入口分组转发引擎226的出口分组转发引擎可以向入口分组转发引擎输出信息,该信息指示VOQ 227A中的网络分组并且该网络分组将在OQ 219A排队,用于出口分组转发引擎的输出端口。例如,调度器272可以使用不同类型的分组流的服务质量和/或出列率来确定调度网络分组,以供出口分组转发引擎排队,以供出口分组转发引擎处理。为了输出该信息,出口分组转发引擎可以经由出口路由器的端口向入口路由器的端口输出网络分组、网络分组的分组有效载荷和包括该信息的网络分组的报头。在一些示例中,为了输出信息,出口分组转发引擎可以使用本地交换(例如,使用CBUF 265)输出元数据,而不输出分组有效载荷。

响应于接收到信息,入口分组转发引擎可以使网络分组从VOQ 227A中出列。例如,入口分组转发引擎可以从VOQ 227A移除网络分组(例如,分组有效载荷和分组报头)和/或表示网络分组的指针。入口分组转发引擎可以将网络分组排入OQ 219A。例如,入口分组转发引擎可以将网络分组和/或表示网络分组的指针添加到OQ 219A。

响应于在第一调度事件之后的第二调度事件,出口分组转发引擎可以使网络分组从OQ 219A中出列,并在输出端口(例如,与IFC230A的链路232A)输出网络分组。例如,调度器272可以使用不同类型的分组流的服务质量和/或出列率来确定用于输出端口的调度网络分组,以供出口分组转发引擎在OQ 219A处出队。响应于第二调度事件,出口分组转发引擎可以在输出端口输出网络分组(例如,分组有效载荷和分组报头),并且从OQ 219A移除用于输出端口的网络分组(例如,分组有效载荷和分组报头)和/或表示网络分组的指针。

通过这种方式,与使用VOQ的路由器相比,路由器206可以具有更高的可扩展性。例如,使用本文描述的技术,路由器206可以增加输出队列缩放,这可以有助于支持更多的客户,从而改善路由器的操作。例如,假设四个分组转发引擎中的每个分组转发引擎支持48,000个队列,使用VOQ技术的四个分组转发引擎的组合可以仅支持48,000个队列。然而,根据本公开的技术,使用组合缓冲技术的四个分组转发引擎的组合可以支持192,000个队列(即,4x48,000),这可以允许路由器206支持额外的客户。在一些示例中,与被配置为使用CIOQ的路由器相比,路由器206可以具有更低的产品成本。此外,本文描述的技术可以与VOQ技术和/或CIOQ一起使用。例如,路由器206可以将VOQ用于面向互联网的流量,并且本文描述的技术将组合缓冲器用于来自互联网的入站流量(例如,用于客户排队)。

图3是示出根据本公开的技术的图2的示例整形器信用更新引擎262的框图。在一个示例实施中,整形器信用更新引擎262包括速率轮370和调度器272。网络装置可以包括整形器信用更新引擎262,以调节传输分组的速度,从而防止网络上的泛洪(flooding)。

速率轮370向调度器272提供信用更新。调度器272可以使用信用来确定何时允许队列/节点数据结构388传输由队列/节点数据结构388排队的一个或多个字节。在图3的示例中,速率轮370包括速率指令374和更新速率376。速率指令374向调度器272的信用加法器382提供“保证”(G)和“最大”(M)信用字段378的速率更新。G个信用(credits)可用于向队列/节点数据结构388分配保证量的带宽,除非超额预订网络的G速率。M个信用可用作速率限制,以防止队列/节点数据结构388超过指定的平均传输速率。

此外,更新速率376表示由速率轮370更新信用的速率。更新速率376向队列/节点数据结构388提供标准化的出队列速率。在图3的示例中,更新速率376是速率轮370的速率更新周期的倒数。在一些示例中,调度器272应用低通滤波器来平滑出列速率的瞬时变化。

调度器272包括信用加法器382、信用更新器392、速率更新器386和队列/节点数据结构388。调度器272的信用加法器382基于来自剪辑380的输入,使用MUX 384向速率更新器392提供额外的信用,而速率更新器392又向队列/节点数据结构388提供这种额外的G/M信用390。根据当前信用和剪辑380的值,速率更新器392可以向队列/节点数据结构388的G/M信用390添加一些信用、添加全部信用或不添加信用。调度器272使用G/M信用390来确定允许传输队列/节点数据结构388的时间。在一些示例中,当队列/节点数据结构388的G/M信用390为非负时,调度器272可以从队列/节点数据结构388出列或传输分组。在从队列/节点数据结构388中出列和传输分组时,信用更新器386从队列/节点数据结构388的G/M信用390中移除相应数量的信用。一旦队列/节点数据结构388的G/M信用390为负,队列/节点数据结构388就变得没有资格出列或传输后续分组。在累积非负值的G/M信用390时,再次允许队列/节点数据结构388出列或传输分组。

图4是示出根据本公开的技术的使用回送来交换本地网络流量的示例第一路由器206的框图。图4示出了端口407A-407B、409A-409B、417A-417B、419A-419B,每个端口可以表示单个端口、端口组(PG)或其他端口。另外,图4示出了拥塞管理器405,其可以被配置为执行网络分组丢弃检查。

拥塞管理器405可以通过首先学习相应网络分组的网络分组大小、相应网络分组的优先级和相应网络分组的丢弃优先级来检查到达队列的每个网络分组(例如,VOQ 227A、OQ 219A等)是否进入。例如,拥塞管理器405可以通过查看当前队列长度来检查每个网络分组,以查看该网络分组是否会超过丢弃阈值,例如,不合适。在该示例中,如果拥塞管理器405确定网络分组将超过丢弃阈值,则拥塞管理器405可以丢弃网络分组(例如,不写入队列)。如果拥塞管理器405确定网络分组不会超过丢弃阈值(例如,没有丢弃网络分组),则拥塞管理器405可以允许网络分组进入队列。除了尾部丢弃阈值之外,拥塞管理器405可以将网络分组与加权随机早期检测(WRED)阈值进行比较,这些阈值基于优先级和丢弃优先级来确定丢弃的随机概率。

如图所示,路由器206包括被配置为从结构(例如,网络104、互联网等)接收网络分组的结构输入441和被配置为向结构输出网络分组的结构输出443。为了避免需要额外丢弃检查和排队带宽,图4示出了路由器206,其使用分组转发引擎226上的回送被配置用于出口OQ。在图4的示例中,分组转发引擎226A可以作为入口分组转发引擎操作,并且分组转发引擎226B操作出口分组转发引擎。分组转发引擎226上的回送路径471可以帮助保留现有的数据路径。在该示例中,网络分组可以到达分组转发引擎226A输入端口,并且路由器206可以使用“本地交换”(例如,不使用结构输入441、结构输出443等)将网络分组移动到出口,而不需要结构。因为一半的PG可以用于回送,以模拟OQ缩放分组转发引擎,所以只有一半的总吞吐量可以用于网络分组转发。网络分组可能通过CBUF265以及入口分组转发引擎226A和出口分组转发引擎226B行进两次,这可能降低分组转发引擎226的吞吐量。

图4示出了使用CBUF 265的本地交换示例。在图4的示例中,当通过PG(例如,端口409B)从出口回送到入口时,分组保留在报头信息中。在该示例中,在入口进入输入端口(例如,端口407A)的网络分组通过CBUF 265交换到具有目的地输出端口的分组转发引擎226B,回送到入口分组转发引擎226A并存储在VOQ 227A中。出口处的调度器272调度从VOQ 227A到端口419A的读取,这是经由元数据完成的,因为实际的分组数据保留在CBUF 265中,直到在发送到EPP 263之前在出口处被读出。

根据本公开的技术,入口分组转发引擎226A可以响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎。入口分组转发引擎226A可以将网络分组排入虚拟输出队列227A,以输出到出口分组转发引擎。例如,入口分组转发引擎226A可以将网络分组排入入口分组转发引擎226A的虚拟输出队列227A中,以输出到出口分组转发引擎226B。

出口分组转发引擎226B可以响应于第一调度事件(例如,由调度器272确定)以及入口分组转发引擎226A输出具有包括信息的报头的网络分组,该信息指示VOQ 227A中的网络分组并且该网络分组将在OQ 219A中排队,用于出口分组转发引擎226B的输出端口。例如,调度器272可以基于VOQ 227A的出列率来确定第一调度事件。

调度器272可以维护每个队列的整形和优先级信息。当排队(例如,VOQ 227A、OQ219A等)变为非空时,调度器272可以以配置的队列优先级在调度器分层中安装队列(例如,“入队”)。当不满足速率整形要求时,例如,队列还没有传输足够的数据,并且队列处于当前可服务优先级,调度器272可以选择以供调度器272服务的队列(例如,“出列”)。一旦队列已经满足整形要求,例如,满足整形速率,调度器272可以从服务中移除队列,直到队列接收到额外的或新的整形信用并且可以再次恢复传输时。调度器272可以确定队列在一段时间内接收的整形信用量,以确定队列的速率。

出口分组转发引擎226B可以将具有报头的网络分组从出口分组转发引擎226B的第一端口(例如,端口417B)输出到入口分组转发引擎226A的第二端口(例如,409B)。入口分组转发引擎226B可以响应于接收到具有报头的网络分组,对网络分组执行丢弃检查。

响应于接收到具有报头的网络分组,入口分组转发引擎226A可以将网络分组从虚拟输出队列227A出列,并将网络分组排入输出队列219A。响应于第一调度事件之后的第二调度事件,出口分组转发引擎226B可以将网络分组从输出队列227A出列,并且在输出端口(例如,输出端口419A)输出网络分组。例如,调度器272可以基于OQ 219A的出列率来确定第二调度事件。虽然调度器272可以使用来自多个分组转发引擎(例如,分组转发引擎226A、分组转发引擎226B等)的队列的信息来确定第一调度事件,但是调度器272可以仅使用分组转发引擎226B上的队列信息来确定第二调度事件。这样,第一调度事件可以被认为是“粗略”调度,而第二调度事件可以被认为是“精细”调度。

图5是示出根据本公开的技术的使用网络分组回送将结构网络流量交换到出口的示例路由器的框图。图5示出了沿着路径473的网络交换,其中,网络分组到达端口407A,并且在入口存储在CBUF 265中,特别是VOQ 227A中。稍后(例如,在调度事件期间),分组转发引擎226A从CBUF 265中读出网络分组,并将网络分组输出到结构输出443,以通过结构将网络分组发送到目的地分组转发引擎。

图6是示出根据本公开的技术的使用网络分组回送来交换来自入口的结构网络流量的示例路由器的框图。图6示出了沿着路径475的网络交换,其中,网络分组通过调度器272从整个结构到达(例如,由结构输入441读取)并到达出口分组转发引擎226B。出口分组转发引擎226B将网络分组存储在CBUF 265中的OQ 219A中。调度器272读出网络分组,并通过出口PG(例如,端口417B)将网络分组回送到入口分组转发引擎226A,进入入口PG(例如,端口407B)。

例如,出口分组转发引擎226B可以响应于第一调度事件(例如,由调度器272确定)以及入口分组转发引擎226A输出具有包括信息的报头的网络分组,该信息指示VOQ 227A中的网络分组并且该网络分组将在OQ 219A中排队,用于出口分组转发引擎226B的输出端口。例如,出口分组转发引擎226B可以将具有报头的网络分组从出口分组转发引擎226B的第一端口(例如,端口417B)输出到入口分组转发引擎226A的第二端口(例如,409B)。入口分组转发引擎226B可以响应于接收到具有报头的网络分组,对网络分组执行丢弃检查。

响应于接收到具有报头的网络分组,入口分组转发引擎226A可以将网络分组从虚拟输出队列227A出列,并将网络分组排入输出队列219A。例如,入口分组转发引擎226A的IPP 261将网络分组存储在入口VOQ(例如,VOQ 227)。调度器272可以稍后通过出口GS(例如,端口417A)将网络分组调度到该端口。例如,出口分组转发引擎226B可以响应于第一调度事件之后的第二调度事件,将网络分组从输出队列227A中出列,并在输出端口(例如,输出端口419A)处输出网络分组。

图7是示出根据本公开的技术的使用元数据回送来交换本地网络流量的示例路由器206的框图。图7示出了示例路由器206,其通过仅将来自出口分组转发引擎226B的分组报头和元数据再循环到入口分组转发引擎226A,在分组存储在CBUF中时使用回送。图7示出了路由器206被配置用于出口OQ。到达入口输入端口(例如,端口407A、407B、409A、409B等)的网络分组可以使用“本地交换”来移动到出口,而不需要结构(例如,结构输入441、结构输出443等)。

根据本公开的技术,入口分组转发引擎226A可以响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎。入口分组转发引擎226A可以将网络分组排入虚拟输出队列227A,以输出到出口分组转发引擎。例如,入口分组转发引擎226A可以将网络分组排入虚拟输出队列227A,以输出到出口分组转发引擎226B。

出口分组转发引擎226B可以向入口分组转发引擎226A输出包括信息的元数据,该信息指示VOQ 227A中的网络分组并且该网络分组将在OQ 219A为中排队,用于出口分组转发引擎226B到入口分组转发引擎226A的输出端口(例如,端口419A),并且禁止向入口分组转发引擎226A输出网络分组(例如,分组有效载荷)。例如,出口分组转发引擎226B可以使用本地交换(例如,使用CBUF 265)将报头数据和/或元数据输出到入口分组转发引擎。

响应于接收到元数据,入口分组转发引擎226A可以将网络分组从虚拟输出队列227A出列,并将网络分组排入输出队列219A。响应于第一调度事件之后的第二调度事件,出口分组转发引擎226B可以将网络分组从输出队列227A出列,并且在输出端口(例如,输出端口419A)输出网络分组。

图8是示出根据本公开的技术的使用元数据回送来交换来自入口的结构网络流量的示例路由器的框图。结构输入441从结构接收网络分组,拥塞管理器405执行丢弃检查。如果拥塞管理器405确定允许网络分组,则入口分组转发引擎226A将网络分组排入OQ 219A,以便调度到端口(例如,端口417A)。图8示出了通过路由器206的路径479,以支持组合的输入队列和OQ模型。然而,除了来自入口分组转发引擎226A上的本地交换端口的那些分组之外,这可以使用额外的丢弃检查和排队带宽,以便将来自结构的网络分组存储在CBUF 265中。

出口分组转发引擎226B可以响应于第一调度事件和入口分组转发引擎226A,输出包括信息的元数据,该信息指示VOQ 227A中的网络分组并且网络分组将在OQ 219A中排队,用于出口分组转发引擎226B到入口分组转发引擎226A的输出端口(例如,端口419A),并且禁止向入口分组转发引擎226A输出网络分组(例如,分组有效载荷)。例如,出口分组转发引擎226B可以使用本地交换(例如,使用CBUF 265)将报头数据和/或元数据输出到入口分组转发引擎。

响应于接收到元数据,入口分组转发引擎226A可以将网络分组从虚拟输出队列227A出列,并将网络分组排入输出队列219A。响应于第一调度事件之后的第二调度事件,出口分组转发引擎226B可以将网络分组从输出队列227A出列,并且在输出端口(例如,输出端口419A)输出网络分组。

图9是示出根据本公开的技术的用于交换网络流量的示例性第一过程的框图。入口分组转发引擎226A可以响应于接收到网络分组,确定用于输出网络分组的出口分组转发引擎(902)。例如,入口分组转发引擎226A可以确定出口分组转发引擎(例如,出口分组转发引擎226B)。

入口分组转发引擎226A可以将网络分组排入虚拟输出队列227A,以输出到出口分组转发引擎(904)。例如,入口分组转发引擎226A可以将网络分组排入虚拟输出队列227A,以输出到出口分组转发引擎226B。在一些示例中,VOQ 227A是用于入口分组转发引擎226A和出口分组转发引擎组的组合缓冲器(例如,CBUF 265)。例如,入口分组转发引擎226A可以将网络分组排入CBUF 265的第一部分,该第一部分分配给入口分组转发引擎226A的虚拟输出队列227A,用于输出到出口分组转发引擎226B。

出口分组转发引擎226B可以响应于第一调度事件和入口分组转发引擎226A,输出信息,该信息指示虚拟输出队列中的网络分组并且网络分组将在输出队列中排队,用于出口分组转发引擎226B的输出端口(906)。例如,出口分组转发引擎226B可以向入口分组转发引擎226A输出具有包括该信息的报头的网络分组。在一些示例中,出口分组转发引擎226B可以向入口分组转发引擎226A输出具有包括该信息的报头的网络分组。例如,出口分组转发引擎226B可以将具有报头的网络分组从出口分组转发引擎的第一端口输出到入口分组转发引擎226A的第二端口。入口分组转发引擎226B可以响应于接收到具有报头的网络分组,对网络分组执行丢弃检查。

在一些示例中,出口分组转发引擎226B可以向入口分组转发引擎226A输出包括该信息的元数据,并且禁止向入口分组转发引擎226A输出网络分组。例如,出口分组转发引擎226B可以使用本地交换将元数据输出到入口分组转发引擎。

在一些示例中,调度器272可以从出口分组转发引擎226B处的多个输出端口中选择输出端口。在该示例中,调度器272或出口分组转发引擎226B的另一组件可以基于调度器272对输出端口的选择来生成信息,以指定网络分组将在输出队列中排队。在一些示例中,调度器272可以确定第一调度事件来调节从路由器206交换数据的速度。例如,调度器272可以基于OQ 219A的出列率来确定第一调度事件。

入口分组转发引擎226A可以响应于接收到该信息,将网络分组从虚拟输出队列227A中出队(908),并将该网络分组排入输出队列219A(910)。例如,入口分组转发引擎226A可以使网络分组从分配给虚拟输出队列227A的CBUF 265的第一部分中出列。在一些示例中,入口分组转发引擎226A可以将网络分组排入分配给输出队列219A的CBUF 265的第二部分。

出口分组转发引擎226B可以响应于第一调度事件之后的第二调度事件,将网络分组从输出队列227A中出列(912),并在输出端口输出网络分组(914)。例如,出口分组转发引擎226B可以使网络分组从CBUF 265的第二部分中出列。在一些示例中,调度器272可以确定第二调度事件来调节从路由器206交换数据的速度。例如,调度器272可以基于OQ 219A的出列率来确定第二调度事件。

本公开中描述的技术可以至少部分地以硬件、软件、固件或其任意组合来实施。例如,所描述的技术的各个方面可以在一个或多个处理器内实施,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或任何其他等效的集成或离散逻辑电路以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指任何前述逻辑电路(单独或与其他逻辑电路组合)或任何其他等效电路。包括硬件的控制单元也可以执行本公开的一种或多种技术。

这种硬件、软件和固件可以在同一装置内或在单独的装置内实施,以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块或组件可以一起或分开实施为离散但可互操作的逻辑装置。将不同的特征描述为模块或单元,旨在强调不同的功能方面,并不一定意味着这些模块或单元必须由单独的硬件或软件组件来实施。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件来执行,或者集成在公共或单独的硬件或软件组件中。

本公开中描述的技术也可以在包含指令的计算机可读介质中体现或编码,例如,计算机可读存储介质。在计算机可读存储介质中嵌入或编码的指令可以使可编程处理器或其他处理器执行该方法,例如,当执行指令时。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、EPROM、EEPROM、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁介质、光学介质或其他计算机可读介质。

相关技术
  • 用于交换网络流量的设备和方法
  • 一种多协议标签交换网络流量管理系统、方法及设备
技术分类

06120112895760