CN111385217A - 交换结构数据包流重排序 - Google Patents
交换结构数据包流重排序 Download PDFInfo
- Publication number
- CN111385217A CN111385217A CN201910562488.XA CN201910562488A CN111385217A CN 111385217 A CN111385217 A CN 111385217A CN 201910562488 A CN201910562488 A CN 201910562488A CN 111385217 A CN111385217 A CN 111385217A
- Authority
- CN
- China
- Prior art keywords
- packet
- packets
- fabric
- data
- flow
- 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.)
- Granted
Links
- 239000004744 fabric Substances 0.000 title claims abstract description 446
- 238000000034 method Methods 0.000 claims abstract description 88
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 103
- 238000012545 processing Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 21
- 241001522296 Erithacus rubecula Species 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- AZUYLZMQTIKGSC-UHFFFAOYSA-N 1-[6-[4-(5-chloro-6-methyl-1H-indazol-4-yl)-5-methyl-3-(1-methylindazol-5-yl)pyrazol-1-yl]-2-azaspiro[3.3]heptan-2-yl]prop-2-en-1-one Chemical compound ClC=1C(=C2C=NNC2=CC=1C)C=1C(=NN(C=1C)C1CC2(CN(C2)C(C=C)=O)C1)C=1C=C2C=NN(C2=CC=1)C AZUYLZMQTIKGSC-UHFFFAOYSA-N 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- 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/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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/12—Avoiding congestion; Recovering from congestion
- H04L47/129—Avoiding congestion; Recovering from congestion at the destination endpoint, e.g. reservation of terminal resources or buffer space
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/501—Overload detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及交换结构数据包流重排序。一种耦接到网络装置内的交换结构的入口结构端点基于拥塞状态重排序数据包流。在一个示例中,入口结构端点接收用于跨交换结构交换的数据包流。入口结构端点将每个数据包流的每个数据包分配给快路径或慢路径以进行数据包交换。为了生成用于跨交换结构交换的单元流,入口结构端点处理来自快路径和慢路径的数据包以维持每个数据包流内的数据包的先进先出排序。尽管在第二数据包流的数据包之前接收到第一数据包流的数据包,但入口结构端点在交换第二数据包流的数据包之后交换第一数据包流的数据包。
Description
技术领域
本公开涉及计算机网络,并且更具体地,涉及在计算机网络内传送数据包。
背景技术
计算机网络为可以交换数据和共享资源的互连计算装置的集合。在诸如以太网的基于数据包的网络中,计算装置通过将数据划分为称为数据包的可变长度块来传送数据,所述可变长度块被分别通过网络从源装置路由到目的地装置。目的地装置从数据包中提取数据并将数据组合成其原始形式。
某些装置(称为路由器)维持代表网络拓扑的路由信息。路由器交换路由信息,以便保持通过网络的可用路由的准确表示。“路由”通常可以定义为网络上两个位置之间的路径。在接收到输入数据包时,路由器检查数据包内的信息(通常称为“密钥”),以根据路由信息选择数据包所转发至的适当下一跳。
因特网内存在各种类型的路由器。例如,网络服务提供商(NSP)维持“边缘路由器”以向客户提供因特网接入和其他服务。NSP可以提供的服务的示例包括IP语音(VoIP),异步传输模式(ATM)的接入或帧中继通信,因特网协议(IP)数据服务以及诸如视频流传输的多媒体服务。NSP的边缘路由器经常将网络流量传送到高速“核心路由器”,核心路由器通常被视为构成因特网的主干。这些核心路由器通常包括比边缘路由器多得多的处理资源,并且被设计为处理大量网络流量。
在一些示例中,核心路由器或另一路由器或交换装置可以采用分布式多级交换结构体系结构,在该结构中,网络包遍历位于路由器的分布式转发组件中的交换结构的多个级以从交换结构的入口点行进到交换结构的出口点。作为一个示例,交换结构可以实现为单个多级Clos交换结构,其在交换结构的各级之间中继数据包。典型的多级Clos交换结构具有多个互连的交换机以形成多个级。在典型的布置中,交换结构包括入口(或“第一”)级、一个或多个中间级和出口(或“最终”)级,每个级具有一个或多个交换机(例如,交叉交换机-通常更简单地称为“交叉交换机”)。此外,交换结构可以被实现为使得交换机被布置为多个并行结构平面,每个并行结构平面通过多个级提供从入口端口到出口端口的独立转发,其中一个或多个并行结构平面可以被视为备用结构平面。换句话说,每个并行结构平面可以被视为多级Clos交换结构的独立部分,其中每个平面提供交换冗余。
交换结构在多个结构端点之间交换数据包。通常,每个结构端点都能够使用交换结构以到达连接到交换结构的任何其他结构端点并将数据包发送到该结构端点。在一些示例中,结构端点交换称为“单元”的数据单元,每个单元具有定义单元序列中单元的位置的序列号。从入口结构端点到出口结构端点的单元序列称为单元流。
发明内容
通常,描述了用于基于每个数据包流的拥塞状态对来自数据包流的数据包进行重排序以产生单元流以允许单元流中的非拥塞数据包流的数据包绕过拥塞数据包流的数据包的技术。入口结构端点接收多个数据包流并处理该数据包流以生成称为“单元”的离散数据单元流,以用于跨交换结构交换到出口结构端点。入口结构端点用序列号标记每个单元,该序列号定义在形成至特定出口结构端点的单元流的单元序列中的单元的位置。特定数据包流内的数据包应由入口结构端点处理,并根据数据包的先进先出(FIFO)排序交换到出口结构端点,以确保数据包流的完整性。本文描述的技术允许对来自不同数据包流的数据包进行非FIFO排序。
例如,耦接到网络装置内的交换结构的入口结构端点可以使用数据包流的拥塞状态来将数据包流的数据包分配给用于数据包交换的快路径或用于数据包交换的慢路径以允许非拥塞数据包流的数据包绕过拥塞数据包流的数据包。入口结构端点接收用于跨交换结构交换到出口结构端点的数据包流。入口结构端点至少基于数据包流的拥塞状态,将所接收的数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者。在一些示例中,快路径使用网络装置的内部存储器来缓冲用于内部交换的数据包,而慢路径使用网络装置的外部存储器来进行内部交换。
入口结构端点处理来自快路径和慢路径的数据包,以生成用于跨交换结构交换到出口结构端点的单元流,同时在每个数据包流中保持数据包的FIFO排序,但不保持不同数据包流的数据包的FIFO排序。通过这种方式,入口结构端点在每个数据包流内保留了正确的数据包排序,但允许分配给快路径的非拥塞数据包流的数据包绕过分配给慢路径的拥塞数据包流的数据包,以防止拥塞数据包流影响非拥塞数据包流的吞吐量。
本文描述的包重排序技术可以为计算机相关的网络流量转发领域提供一个或多个特定的技术改进。例如,因为结构端点可以相对于其他数据包流的数据包对数据包流的数据包进行重排序,所以该技术可以通过允许非拥塞数据包流的数据包绕过拥塞数据包流的数据包(否则,这在严格的FIFO排序下将阻塞非拥塞数据包流的数据包)来提高网络装置的吞吐量。此外,本公开的技术可以允许结构端点有效地使用低延迟、内部存储器和可扩展的更高延迟的外部存储器,以便通过增加结构端点可以同时处理的数据包流的数量来提高结构端点的可扩展性,而结构端点不会受到因使用外部存储器产生的更高延迟造成的瓶颈的影响。因此,本公开的技术可以产生改进的数据包流吞吐量、更有效地使用网络装置的存储器以及整体上更好的资源利用。
在一些示例中,描述了一种方法,包括:由耦接到网络装置内的交换结构以交换单元的多个结构端点的入口结构端点接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;通过入口结构端点将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;并且由生成用于跨交换结构交换到出口结构端点的单元流的入口结构端点处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管第一数据包流的数据包在第二数据包流的数据包之前被入口结构端点接收,入口结构端点在交换数据包流的第二数据包流的数据包之后交换数据包流的第一数据包流的数据包。
在一些示例中,描述了一种网络装置,包括:耦接到网络装置内的交换结构以交换单元的多个结构端点,多个结构端点的入口结构端点被配置为:接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;并且为了产生跨交换结构交换到出口结构端点的单元流,处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管第一数据包流的数据包在第二数据包流的数据包之前被入口结构端点接收,但在交换数据包流的第二数据包流的数据包之后,交换数据包流的第一数据包流的数据包。
在一些示例中,描述了一种非暂时性计算机可读介质,其包括指令,所述指令在被执行时被配置为使得网络装置的一个或多个处理器执行耦接到网络装置内的交换结构以交换单元的多个结构端点的入口结构端点,所述入口结构端点被配置为:接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;并且为了产生跨交换结构交换到出口结构端点的单元流,处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管第一数据包流的包在第二数据包流的包之前被入口结构端点接收,但在交换数据包流的第二数据包流的数据包之后,交换数据包流的第一数据包流的数据包。
在附图和以下描述中阐述了一个或多个示例的细节。
附图说明
图1为示出示例网络环境的框图,在该示例网络环境中,服务提供商网络包括被配置为根据本公开中描述的技术执行包重排序的网络装置。
图2为示出根据本文描述的技术的交换系统的示例的框图。
图3为示出三级交换网络的逻辑表示的框图。
图4为示出根据本文描述的技术的由入口结构端点接收的非拥塞数据包流和拥塞数据包流的不同存储器延迟的概念图。
图5为详细示出根据本公开的技术的图2的序列模块中的一者的示例的框图。
图6为示出根据本公开的技术的用于合并拥塞和非拥塞业务流的示例概念图的框图。
图7为示出根据本公开的技术的用于合并序列模块的快路径和慢路径的图5的合并级的示例的框图。
图8为示出根据本公开的技术的示例操作的流程图。
在整个附图和文本中,相同的附图标号表示相同的元件。
具体实施方式
图1为示出示例网络环境的框图,在该示例网络环境中,服务提供商网络包括被配置为根据本公开中描述的技术执行结构重排序的网络装置。出于示例的目的,相对于图1的简化网络环境2描述了本发明的原理,其中网络装置4与边缘路由器5A和5B(“边缘路由器5”)通信以向客户网络8A-8C(“客户网络8”)提供对服务提供商网络6的接入。网络装置4可以表示与边缘路由器5交换路由信息以维持网络环境2的拓扑的准确表示的路由器。网络装置4可以包括作为服务提供商网络6内的单个节点操作的多个协作路由组件。网络装置4可以替代地表示L2和/或L3交换机,或者包括用于在装置的结构端点之间内部交换数据包的内部交换结构的任何其他装置。
尽管未示出,服务提供商网络6可以耦接到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。因此,客户网络8可以被视为因特网的边缘网络。服务提供商网络6可以向客户网络8内的计算装置提供对因特网的接入,并且可以允许客户网络8内的计算装置彼此通信。在另一个示例中,服务提供商网络6可以在因特网的核心内提供网络服务。在任一种情况下,服务提供商网络6可以包括除网络装置4和边缘路由器5之外的各种网络装置(未示出),诸如附加路由器、交换机、服务器或其他装置。
在所示的示例中,边缘路由器5A经由接入链路9A耦接到客户网络8A,并且边缘路由器5B分别经由接入链路9B和9C耦接到客户网络8B和8C。客户网络8可以为用于企业的地理上分离的站点的网络。客户网络8可以包括一个或多个计算装置(未示出),诸如个人计算机、膝上型计算机、手持式计算机、工作站、服务器、交换机、打印机、客户数据中心或其他装置。图1中示出的网络环境2的配置仅为示例。服务提供商网络6可以耦接到任何数量的客户网络8。尽管如此,为了便于描述,图1中仅示出了客户网络8A-8C。除服务提供商网络之外的许多不同类型的网络可以使用网络装置4的实例,包括客户/企业网络、传输网络、聚合或接入网络等。
网络装置4可以包括物理耦接并配置为作为单个路由器操作的多个机架(图1中未示出)。在这样的示例中以及对于网络环境2的边缘路由器5,网络装置4表现为单个路由装置。例如,尽管网络装置4可以包括多个机架,但是从对等路由器5的角度来看,网络装置4具有一个或多个统一的主机网络地址,并且为每个路由协议维持单个对等路由会话,从而维持与每个边缘路由器5的对等路由会话。关于具有多级交换结构的多机架路由器的示例的附加细节可在Pradeep S.Sindhu的题为“具有多路复用光学互连的多机架路由器(Multi-chassis router with multiplexed optical interconnects)”并于2008年2月21日公布的美国专利公开号2008/0044181A1中找到。
如下面进一步详细描述的,网络装置4使用互连网络装置内的结构端点(结构端点本身连接到网络装置的网络接口卡(例如,端口接口卡))的内部多级交换结构12在网络装置4的数据平面上转发数据包,即网络流量。换句话说,与网络接口通信的结构端点经由交换结构12将数据包交换到彼此。在图1的示例中,多级交换结构12将数据单元从与网络接口卡的入口端口通信的入口结构端点交换到与网络接口卡的出口端口通信的出口结构端点,以执行网络装置4的转发单元之间的高速数据包转发。多级交换结构12可以表示3级Clos网络、5级Clos网络或n级Clos网络(n为任何值)。结构端点可以为给定数据包的入口结构端点,也可以为另一个给定数据包的出口结构端点。
通常,结构端点将在入口端口处接收到的数据包划分为一个或多个固定长度的单元以进行交换。然而,在一些情况下,数据包可以被划分为可变长度数据单元,以用于作为相应数据单元进行交换或完整交换。“数据单元”或“单元”指的是通过多级交换结构12的最小数据块。该单元包括报头部分和数据部分。“单元数据”是指包含在单元的数据部分内的数据。报头部分至少包括指示该单元的入口结构端点的源标识符和序列号。除非另有明确说明,否则如本说明书中所使用的,“单元”可以指由多级交换结构交换的任何数据单元。
多级交换结构12在每个入口结构端点和出口结构端点之间提供多个可能的交换路径,以促进非阻塞交换。由于各个单元可能在从入口结构端点到出口结构端点可用的多个路径上经历不同的延迟,因此在出口结构端点处接收到的单元可能相对于单元被入口结构端点分配的顺序而无序到达。因此,出口结构端点在处理之前重排序单元,以便以正确的排序处理单元。如上所述并且为了便于重排序,每个单元包括序列号字段。结构端点可以从网络装置的每个结构端点(至少在一些情况下包括从结构端点本身)接收不同的单元的流(“单元流”)。
根据本文描述的技术,为了产生单元流,网络装置4基于每个数据包流的拥塞状态重排序来自数据包流的数据包以允许单元流中的非拥塞数据包流的数据包绕过拥塞数据包流的数据包。如下面进一步详细说明的,网络装置4的入口结构端点(图1中未示出)接收多个数据包流并处理该数据包流以生成称为“单元”的离散数据单元流,以用于跨交换结构交换到网络装置4的出口结构端点(图1中未示出)。入口结构端点用序列号标记每个单元,该序列号定义在形成至特定出口结构端点的单元流的单元序列中的单元的位置。特定数据包流内的数据包应由入口结构端点处理,并根据数据包的FIFO排序交换到出口结构端点,以确保数据包流的完整性。本文描述的技术允许对来自不同数据包流的数据包进行非FIFO排序。
例如,耦接到网络装置4内的交换结构的入口结构端点可以使用数据包流的拥塞状态来将数据包流的数据包分配给用于数据包交换的快路径或用于数据包交换的慢路径以允许非拥塞数据包流的数据包绕过拥塞数据包流的数据包。入口结构端点接收跨交换结构交换到网络装置4的出口结构端点的数据包流。入口结构端点至少基于数据包流的拥塞状态,将所接收的数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者。在一些示例中,快路径使用网络装置4的内部存储器来缓冲用于内部交换的数据包,而慢路径使用网络装置4的外部存储器来进行内部交换。
入口结构端点处理来自快路径和慢路径的数据包,以生成用于跨交换结构交换到出口结构端点的单元流,同时在每个数据包流中保持数据包的FIFO排序,但不保持不同数据包流的数据包的FIFO排序。通过这种方式,入口结构端点在每个数据包流内保留了正确的数据包排序,但允许分配给快路径的非拥塞数据包流的数据包绕过分配给慢路径的拥塞数据包流的数据包,以防止拥塞数据包流影响非拥塞数据包流的吞吐量。
本文描述的包重排序技术可以为计算机相关的网络流量转发领域提供一个或多个特定的技术改进。例如,因为结构端点可以相对于其他数据包流的数据包对数据包流的数据包进行重排序,所以该技术可以通过允许非拥塞数据包流的数据包绕过拥塞数据包流的包数据(否则,这在严格的FIFO排序下将阻塞非拥塞数据包流的数据包)来提高网络装置4的吞吐量。此外,本公开的技术可以允许结构端点有效地使用低延迟、内部存储器和可扩展的更高延迟的外部存储器,以便通过增加结构端点可以同时处理的数据包流的数量来提高结构端点的可扩展性,而结构端点不会受到因使用外部存储器产生的更高延迟造成的瓶颈的影响。因此,本公开的技术可以产生更快的业务流吞吐量、更有效地使用网络装置的存储器,以及整体上更好的资源利用。
图2为示出根据本文描述的技术的交换系统的示例的框图。交换系统16的多级交换结构18(“结构18”)可以表示图1的网络装置4的多级交换结构12的示例实例。交换系统16的分别耦接到多级交换结构18的每个结构平面22A-22K的结构端点20A、20B(统称为“结构端点20”)作为由结构18交换的数据单元(例如,单元)的源和/或目的地操作。在所示示例中,入口结构端点20A发送、进入、发起(或其他方式)数据包26,以用于经由多级交换结构18交换到接收、流出、消耗(或其他方式)数据包26的出口结构端点20B。尽管图2仅示出了两个结构端点,但是交换系统16可以包括数百个结构端点或更多。在一些示例中,交换系统16包括与多级交换结构18通信的96个结构端点。在这样的示例中,任何给定的结构端点20可以接收源自96个不同的结构端点20的单元流的单元。
虽然每个结构端点20通常作为单元的入口和出口操作,但是在各种情况下,任何结构端点20可以为单元的入口或出口。在一些示例中,结构端点20可以各自表示数据包转发引擎或其他转发单元,使得结构端点20共同实现数据包交换装置(例如,网络装置4)的分布式转发平面。在一些示例中,结构端点20可以表示用于经由结构18为分布式应用交换数据包的服务器或其他主机(例如,虚拟机)的结构接口。结构端点20可以包括相应的交换结构接口或“交换接口”(SI-未示出),以便为经由结构18交换的单元提供排队,以及其他操作。
在该示例中,多级交换结构18包括多个操作独立的并行交换结构平面22A-22K(图示为“结构平面22A-22K”,并且在本文中统称为“结构平面22”)。结构平面22的数量可以为任何数量,取决于结构平面22的相应容量和所需的结构带宽。例如,结构平面22可包括4、5或18个平面。在一些示例中,结构平面22K操作为剩余结构平面22的后备或备用结构平面。每个结构平面22包括用于实现独立Clos或其他多级交换网络(例如,Benes网络)的类似组件,以向结构端点20提供独立的交换带宽,所述组件和功能在下文中主要针对结构平面22A进行描述。结构平面22在操作上是独立的,因为结构平面22中的一者的故障不会影响剩余的可操作结构平面的交换能力。每个结构平面22可以提供非阻塞连接。关于具有多个交换机平面的多级交换结构的示例的附加细节可在Pradeep S.Sindhu的题为“交换装置(Switching Device)”并在1999年11月24日提交的美国专利号7,102,999中找到。
每个结构平面22包括耦接到结构端点20A的输入端口和耦接到结构端点20B的输出端口。尽管为简单起见仅示出了一个入口结构端点20A和一个出口结构端点20B,但是每个结构平面22通常包括耦接到相应结构端点的多个输入端口和输出端口。当结构端点20A获得数据包时,结构端点20A执行查找操作以确定结构端点20B(在该示例中)为该数据包的出口。例如,获得数据包可以指从网络或主机接收数据包,或者发起数据包。结构端点20A可选地将数据包分成单元,并跨多级结构18将数据包/单元转发到结构端点20B。结构端点20A选择交换单元的不同的结构平面22以跨结构平面22分配带宽负载。
结构端点20A、20B可以采用请求/许可协议来跨结构18发送数据单元。在这种情况下,入口结构端点20A跨结构18向出口结构端点20B发送请求。结构端点20A以轮询或其他平衡顺序跨结构平面22的不同结构平面发送每个这样的请求,以公平地分配传输负载。响应于接收到该请求,结构端点20B跨结构端点20B接收相应请求的同一结构平面22向结构端点20A发送许可。响应于接收到许可,结构端点20A跨结构端点20A发出相应请求的同一结构平面22上将数据单元发送到结构端点20B。
如上所述,每个结构平面22可以包括类似的组件以执行类似的多级交换机功能。作为示例,结构平面22A包括通过结构芯片到芯片链路(CCL-未示出)耦接的多个结构芯片24,以实现用于结构平面22A的多级交换结构。结构芯片24A可以分布在交换系统16的各种交换装置、机架等之间。每个结构芯片24A可以包括专用集成电路(ASIC),并且可以称为“结构ASIC”。每个结构芯片可以执行一个或多个级交换机的交换功能,并且可以表示例如交叉交换机(crossbar switch)。
在一些示例中,结构端点20A-20B包括相应的结构重排序模块,以重排序从其他结构端点20接收到的单元。例如,操作为出口结构端点的结构端点20B根据单元的序列号并且根据入口结构端点20A发送的单元的次数(这随着单元流的单元被发送至特定的出口接口端点(这里,结构端点20B)将逐渐增大序列号)从入口结构端点20A接收无序序列的单元。结构端点20B可以对单元流的不同子序列执行单元重排序,以检测丢失或跳过的单元,并检测并促进从其他错误条件的稳健恢复。关于单元重排序的附加信息可以在Yadav等人在2015年2月16日提交并在2018年1月9日发布的题为“多级交换结构故障监测和处理(MULTI-STAGE SWITCH FABRIC FAULT DETECTION AND HANDLING)”的美国专利号9,866,427中找到。
根据本公开的技术,结构端点20A-20B包括相应的序列模块30A-30B(统称为“序列模块30”),其使用数据包流的拥塞状态来将数据包流的数据包分配给用于数据包交换的快路径或用于数据包交换的慢路径以允许非拥塞数据包流的数据包绕过拥塞数据包流的数据包。入口结构端点20A接收跨交换结构18交换到出口结构端点20B的数据包流。入口结构端点20A的序列模块30A至少基于数据包流的拥塞状态,将所接收的数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者。在一些示例中,快路径使用网络装置4的内部存储器来缓冲用于内部交换的数据包,而慢路径使用网络装置4的外部存储器来进行内部交换。
序列模块30A处理来自快路径和慢路径的数据包以生成用于跨交换结构18交换到出口结构端点20B的单元流,同时保持每个数据包流内的数据包的FIFO排序,但不保持不同数据包流的数据包的FIFO排序。通过这种方式,入口结构端点20A在每个数据包流内保留了正确的数据包排序,但允许分配给快路径的非拥塞数据包流的数据包绕过分配给慢路径的拥塞数据包流的数据包,以防止拥塞数据包流影响非拥塞数据包流的吞吐量。
本文描述的包重排序技术可以为计算机相关的网络流量转发领域提供一个或多个特定的技术改进。例如,因为结构端点可以相对于其他数据包流的数据包对数据包流的数据包进行重排序,所以该技术可以通过允许非拥塞数据包流的数据包绕过拥塞数据包流的数据包(否则,这在严格的FIFO排序下将阻塞非拥塞数据包流的数据包)来提高网络装置的吞吐量。此外,本公开的技术可以允许结构端点有效地使用低延迟、内部存储器和可扩展的更高延迟的外部存储器,以便通过增加结构端点可以同时处理额数据包流的数量来提高结构端点的可扩展性,而结构端点不会受到因使用外部存储器产生的更高延迟造成的瓶颈的影响。此外,入口结构端点20A可以使用高速内部存储器来缓冲非拥塞数据包流,以便确保尽可能快地处理非拥塞数据包流并将其转发到交换结构18。相对照地,入口结构端点20A可以使用较慢速度的外部存储器来缓冲尚非准备好处理和转发到交换结构18的拥塞数据包流。
图3为示出根据本文描述的技术操作的三级交换网络150(或“交换结构150”)的逻辑表示的框图。三级网络150可逻辑地表示图1的交换结构12、图2的交换结构18或组件或装置互连以提供多级交换结构的另一交换结构。图3的示例网络150的三个级包括:由交叉交换机156A-156R(统称为“交换机156”)组成的级1 151,由交叉交换机158A-158M(统称为“交换机158”)组成的级2 152,以及由交叉交换机160A-160R(统称为“交换机160”)组成的级3。交换机156经由输入154A-154N(统称为“输入154”)接收数据包;在该示例中总共有NxR个输入154。交换机160经由输出端口162A-162N(统称为“输出162”)发送包;在该示例中总共有NxR个输出162。
如图3所示,级1 151和级3 153均包括R个交叉交换机,而级2 152包括M个交叉交换机。三级网络耦接到N个输入和N个输出,从而完成Clos网络的表征。M和N的整数值定义了三级交换网络150的阻塞特性。例如,级2 152可以包括比级1 151和级3 153(即,M>R)更多的交叉交换机,以减少或消除输入154中的打开的一者可以从输出162中的打开的一者被阻塞的可能性。
交换机156、158、160中的每者可以由结构芯片实现。在一些情况下,相应的级1交换机156和级3交换机160(例如,交换机156A和交换机160A)可以由相同的结构芯片实现。如相对于图3的多机架路由器150所描述的,级1 151和级3 153可以位于多个LCC中,而级2152位于SCC中。
为了建立通过网络150从输入154中的一者到预期输出162的路径,与接收输入154相关联的交换机156中的一者确定可用的级2 152交换机158,其允许至包括预期输出162的级3 153交换机160的连接路径。例如,假设由交换机156A接收的数据包将被中继到交换机160A上的输出162A中的一者。交换机156A选择与交换机156A和交换机160A都是开路连接(open connection)的任何交换机158。假设交换机156A选择交换机158B。一旦交换机158B接收到数据包,交换机158B就确定至交换机160A的可用路径并将数据包转发到交换机160A。例如,交换机158B可以具有不止一个至交换机160A的开路路径(open path)。入口结构端点可以使用从输入154中的一者到预期输出162的不同开路路径来交换连续的单元(通过序列号),每个开路路径具有不同的延迟。结果,来自入口结构端点的单元序列的结构单元可能在出口结构端点处无序到达。
虽然通常被描述为诸如网络150的三级交换网络,但是在其他示例中,本文描述的结构平面可以包含不同的另一种类型的交换机架构。例如,三级网络中的第二级可以用另一个三级网络代替,从而形成五级网络。
图4为示出根据本文描述的技术的由入口结构端点接收的非拥塞数据包流和拥塞数据包流的不同存储器延迟的流程图概念图。可以接收数据包流作为一组数据指针,以及出口/目的地ID(结构端点号)和VOQ ID(目标结构端点中的虚拟输出队列/流)。入口结构端点20A可以将数据包流作为单元流跨交换结构18发送到多个出口结构端点20。如本文所述,这里的数据包流可以表示发往例如出口结构端点20B的虚拟输出队列(VOQ)的网络流量。
对应于待从入口结构端点20A发送到出口结构端点20B的数据包流的数据包数据可以从内部存储器(例如,片上SRAM)或从外部存储器(例如,DRAM)读取并且被转换为用于跨交换结构18交换的单元流。内部或外部存储器可以充当用于数据包信息的入口结构端点20A的缓冲器,使得入口结构端点20A在从用于跨交换结构18交换到出口结构端点20B的数据包数据生成单元流之前从内部或外部存储器获取数据包数据。入口结构端点20A可以使用内部存储器来存储用于非拥塞流的数据包数据,而入口结构端点20A可以使用外部存储器来存储用于拥塞流的数据包数据。如本文所述,“拥塞数据包流”是指具有一个或多个延迟数据包的数据包流。通常,当沿着用于数据包流的网络路径的某处的队列处于满容量时(这导致来自网络装置的数据包流的数据包的交换延迟,或者更具体地,从入口结构端点20A到用于数据包流的出口结构端点20的交换延迟),数据包流变得拥塞。
入口结构端点20A可以跟踪每个数据包流的拥塞状态。在一些示例中,入口结构端点20A通过维持每个接收的数据包流的数据包的队列长度来跟踪每个数据包流的拥塞状态。入口结构端点20A将数据包流的队列长度与阈值进行比较,以确定数据包流是拥塞还是非拥塞。例如,在确定数据包流的队列长度小于阈值时,入口结构端点20A确定该流是非拥塞的。作为另一示例,在确定数据包流的队列长度大于阈值时,入口结构端点20A确定流是拥塞的。在一些示例中,阈值可由用户配置。通常,入口结构端点20A将所有数据包流的数据存储在内部存储器中。在确定数据包流已变得拥塞时,入口结构端点20A将用于数据包流的数据交换到外部存储器,而用于非拥塞的其他数据包流的数据继续存储在内部存储器中。
由入口结构端点20A交换到出口结构端点20B的数据包数据应该遵循特定的排序要求。具体地,入口结构端点20A应该维持数据包流内的页面顺序。然而,入口结构端点20A可以重排序不同数据包流之间的页面顺序。为了帮助重排序或缓冲流数据以便传输到出口结构端点20B,序列模块30A将数据包流的数据包处理成单元流,并在跨交换结构18将单元流交换到出口结构端点20B之前将序列号分配给单元流的每个单元。出口结构端点20B使用序列号来重排序所接收的单元,以确保单元流的顺序并因此在单元流中表示的每个数据包流内的数据包的顺序保持不变。VOQ的数量可能很大,因此在硬件中实现维持每VOQ(每个流)的序列号可能过于昂贵。因此,如本文所述,序列模块30A为每个结构端点20分配序列号(例如,一组VOQ)并维持每个结构端点20的顺序。
在一些示例中,入口结构端点20A将单个数据包流(使用用于出口结构端点20的VOQ管理)的数据存储在内部或外部存储器中。通常,外部存储器404的读取延迟比内部存储器402的读取延迟高得多,可能是几微秒。因此,为了以有效的方式处理业务流(trafficflow),入口结构端点20A可以将用于非拥塞的业务流的数据存储在内部存储器中,而将用于拥塞的业务流的数据存储在外部存储器中。在一些示例中,入口结构端点20A在内部和外部存储器的组合中存储数据包序列(例如,用于单个数据包流或用于多个数据包流)。例如,入口结构端点20A将用于单个数据包流的数据包序列存储在内部和外部存储器中,因为数据包流已经从拥塞状态转换为非拥塞状态。因此,数据包流的不同页面(page)可以具有从入口结构端点20A的存储器读取数据的不同延迟,因为数据包流的一些页面被缓冲在内部存储器中,而数据包流的其他页面被缓冲在外部存储器中。如本文所使用的,“页面”指的是存储数据包的存储器页面,并且在本文中用于指代存储的数据包,并且反之亦然。如图4的示例中所描绘的,入口结构端点接收数据包P0的指针,该指针属于拥塞或已经拥塞的第一数据包流。入口结构端点使用P0指针从入口结构端点的外部存储器读取数据包P0。此后不久,第一数据包流变得不拥塞,第一数据包流的数据包被存储到内部存储器。入口结构端点接收数据包P1的指针,该指针也属于第一数据包流。由于第一业务流的非拥塞状态,入口结构端点使用P1指针从入口结构端点的内部存储器读取数据包P1。如果第一数据包流中的所有数据共享单个排序序列,则因为第一数据包流的序列包括一些数量的外部缓冲的拥塞页(例如,数据包P0)和一些数量的内部缓冲的非拥塞页(例如,数据包P1),数据包P1可以在数据包P0之前。换句话说,如果没有本文中描述的技术,则由于传统入口结构端点的内部和外部存储器之间的延迟差,传统的入口结构端点将对较早时间数据包P0执行序列号标记406之前对数据包P1执行序列号标记406,使得入口结构端点将违反第一数据包流的排序要求。
为了遵循排序序列要求,出口结构端点的传统重排序引擎缓冲并延迟数据包流的非拥塞页面的流数据(其可能由于传统入口结构端点的内部和外部存储器之间的大的读取延迟差异造成在接收到数据包流的拥塞页面之前数微秒达到)。这可能降低整体性能并贯穿传统网络装置,因为传统网络装置必须延迟第一非拥塞数据包流(因为存在可能与第一数据包流无关的第二拥塞数据包流)。
可选地,传统的入口结构端点可以延迟非拥塞数据包流,使得所有数据包流按顺序首先被转换成单元流。例如,传统的入口结构端点可以向非拥塞数据包流添加额外的缓冲成本以保存单元流顺序。然而,这种额外的缓冲成本会在非拥塞流中引起不希望的抖动。此外,为了保持性能,可能需要传统的入口结构端点对存储在内部存储器上的数据包流数据施加延迟,该延迟与外部存储器的延迟一样长,这会大大降低入口传统结构端点处理和转发非拥塞数据包流的速度。
图5为详细示出根据本公开的技术的图2的序列模块30中的一者的示例的框图。图5的示例序列模块30可以为图2的入口结构端点20A的序列模块30A或入口结构端点20B的序列模块30B的示例。
本公开的技术认识到,如果按顺序从外部存储器507读取第一流的第一页并且按顺序从内部存储器读取第一流的第二页,则即使较后到达第二页,内部存储器中的第二页将首先可用。这是由于内部和外部存储器之间的读取时间相当大的延迟差异而发生的。然而,为了确保第一流中的页面维持顺序,序列模块30应该在从外部存储器读取第一页面之后才从内部存储器读取第二页面。此外,序列模块30可以继续为同一结构端点20的其他非拥塞流转发页面,以防止阻塞不需要相对于第一流维持顺序的其他数据包流。例如,如果这些其他数据包流存储在内部存储器中,则其他数据包流可以在具有在外部存储器中排队的页的第一流的前面(并且无关地)前进。
根据本公开的技术,序列模块30将在外部存储器具有至少一页的数据包流与仅在内部存储器中具有页面的流分离。例如,序列模块30实现用于处理数据包流的两个数据路径,本文称为“快路径”和“慢路径”。如下面更详细描述的,序列模块30将非拥塞数据包流的数据包分配给快路径,并且将拥塞数据包流的数据包分配给慢路径,以便允许非拥塞数据包流的数据包在分配给慢路径的拥塞数据包流之前跨交换结构18进行处理和交换。
如本文所述,仅在内部存储器中具有页面的数据包流被称为“快速流”。通常,非拥塞数据包流仅存储在内部存储器中,因此通常为快速流。具有存储在外部存储器中的页面的数据包流被称为“慢速外部流”。通常,拥塞流仅存储在外部存储器中,因此通常为慢速流。此外,在外部存储器中具有尚未处理的页面但具有存储在内部存储器中的后续页面的数据包流被称为“慢速内部流”。这种情况出现在最初拥塞的数据包流中,因此序列模块30最初将拥塞数据包流的数据包分配至外部存储器中的慢路径。然而,随后数据包流变得不拥塞,从而序列模块30将数据包流的后续数据包分配给内部存储器中的快路径。在没有本公开的技术的情况下,如上面相对于图4所描述的,存储在内部存储器中的慢速内部流的非拥塞页面可以在存储在外部存储器中的慢速内部流的拥塞页面之前,这破坏了流的序列顺序。
根据本公开的技术,在从外部存储器读取拥塞数据包流的页面时,序列模块30包括合并点520(也称为“多路复用器520”或MUX 520),合并点520用于合并在序列号分配524之前的遍历快路径和慢路径的流。合并点520在从内部存储器获取数据之前发生,以允许多个处理线程从内部存储器获取数据,从而进一步改善序列模块30的性能。因为序列号已经被标记,所以可以防止使用多个线程造成的错误排序。因此,序列模块30可以随后通过延迟拥塞数据包流的数据包的序列号标记,直到序列模块30从外部存储器读取拥塞包的页面后为止来重排序不同数据包流之间的数据包序列。
此外,使用本文描述的技术,序列模块30可以避免在合并点520之前对单个数据包流(具有分配给快路径和慢路径的数据包序列)内的数据包进行错误排序。例如,序列模块30从数据包源502接收多个数据包流的多个数据包。对于多个数据包流的每个数据包流的每个数据包,序列模块30在传输处理开始时确定是将数据包分配给用于数据包交换的快路径还是用于数据包交换的慢路径。例如,如果数据包被指示为外部缓冲的,则序列模块30将数据包分配给慢路径并且递增数据包流的计数器509。当分配给慢路径的数据包的数据包数据可用时,从外部存储器507读取(506)缓冲在外部存储器中的数据包。在合并点520处合并之前,序列模块30分别使用快推就绪FIFO 512和慢推就绪FIFO 514维持快路径和慢路径中的每者内的数据包的严格FIFO顺序504。也就是说,序列模块30将快路径分配和慢路径分配的数据包推送到相应的快路径队列(FIFO 512)和慢路径队列(FIFO 514)。
在大多数情况下,序列模块30在内部存储器中缓冲分配给快路径的数据包,而序列模块30在外部存储器中缓冲分配给慢路径的数据包。然而,如果数据包流转换为非拥塞并且数据包流的内部缓冲的数据包紧接在相同数据包流的外部缓冲数据包之后,则内部缓冲的数据包可能提前到达合并点520,从而违反了排序要求。因此,在一些示例中,序列模块30将内部缓冲的数据包分配给慢路径以维持正确的顺序。为了防止分配给快路径的第一流的随后接收到的数据包在已分配给慢路径的相同第一流的先前接收到的数据包之前,序列模块30实现上下文判定逻辑508以维持分配给慢路径的多个未完成数据包的每流计数器(per-flow counter)509。每流计数器509允许序列模块30保持跟踪分配给数据包流的慢路径并保持在其中的数据包或页面的数量。例如,序列模块30在将数据包流的数据包分配给慢路径时递增数据包流的计数器509,并且在将数据包流的数据包从慢路径输出到合并点520时递减计数器509。此外,在接收到计数器509为非零的数据包流的内部页面时,序列模块30可以将内部页面分配给慢路径以维持流的顺序。序列模块30可以为每个数据包流维持单独的计数器509。在一些情况下,计数器可以是慢路径的慢路径队列中的数据包数量的计数。
如果数据包被指示为内部缓冲并且计数器509为零,则序列模块30经由选择器操作510将数据包分配给快路径。实际上,序列模块30可以发送数据包以便以快进路径的FIFO顺序转发到合并点520。序列模块30执行序列号分配524以用相应的单元流的下一个序列号标记该数据包。在一些示例中,序列模块30参考序列号表526以为数据包分配下一个序列号。此外,序列模块30读取数据包,并生成数据包的单元数据并将其交换到出口结构端点20B。
如果数据包被内部缓冲但是计数器509是非零的,则序列模块30将数据包分配给内部慢路径516,以防止所述数据包在来自慢路径的、尚未处理的相同流的先前已排序的数据包之前。这迫使所述数据包在内部被延迟,直到已经从外部存储器(518)读取该数据包流的所有先前的外部获取数据,以便确保该数据包流的所有数据包以正确的顺序输出到合并点520。
如下面将更详细描述的,序列模块30可以包括合并级528,其包括快推就绪FIFO512、慢推就绪FIFO 514、合并点520和轮询调度程序522。分配给用于数据包交换的快路径的数据包可以根据用于输出到合并点520的先进先出方案在FIFO 512中排队。类似地,分配给用于数据包交换的慢路径的数据包可以根据用于输出到合并点520的先进先出方案在FIFO514中排队。合并点520合并来自快推FIFO 512和慢推FIFO 514的数据包,以用于序列号分配514和跨交换结构518的交换。在一些示例中,合并点520使用轮询调度程序,诸如缺陷加权轮询(DWRR)调度程序,以确保来自快路径和慢路径的数据包被均匀地处理并从入口结构端点20A输出。
以下示例可以示出序列模块30的操作。在该示例中,序列模块30接收2个流。流A为非拥塞的,并且具有仅在内部存储器中的数据包,而流B最初为非拥塞的,因此在内部存储器中具有数据包,在某个时间点变得拥塞并且因此后续数据包被转移到外部存储器,并且最终变得不拥塞并且因此后续数据包被转移回内部存储器。数据包P0首先到达数据包P4最后到达的数据包序列如下:
1.数据包P0(流A)
2.数据包P1(流B,外部)
3.数据包P2(流A)
4.数据包P3(流B,内部)
5.数据包P4(流A)
数据包P0处理:序列模块30检查数据包P0的每流计数器509。因为数据包P0属于流A,其具有仅在内部存储器中的数据包,所以流A的每流计数器为0。因此,序列模块30将数据包P0推送到快速数据路径。
数据包P1处理:数据包P1属于流B并且为外部数据包。因此,序列模块30递增流B的每流计数器509并将数据包P1推送到慢速数据路径。
数据包P2处理:数据包P2属于流A,其具有仅在内部存储器中的数据包。在检查数据包P2的每流计数器509之后,序列模块30将数据包P2推送到快速数据路径。
数据包P3处理:数据包P3属于流B。序列模块30检查数据包P3的每流计数器509。因为流B已经具有在慢速数据路径中的外部包,所以每流计数器509不为零。因此,序列模块30将数据包P3推送到慢速数据路径以维持流B内的数据包的每流顺序。
数据包P4处理:数据包P4属于流A。在检查数据包P4的每流计数器509之后,序列模块30将数据包P4推送到快速数据路径。因此,可以认识到,可以在拥塞的流B的数据包之后接收非拥塞的流A的数据包,但是流A的数据包可以在处理和交换流B的数据包之前被序列模块30输出以用于处理和交换。此外,仅具有在内部存储器中的数据包的流A不受具有在外部存储器中的数据包的流B的影响(例如,阻塞或延迟)。
图6为示出根据本公开的技术的用于合并拥塞和非拥塞业务流的示例概念图的框图。在一些示例中,拥塞和非拥塞业务流的合并由图5的序列模块30的合并点520执行。在图5的示例中,序列模块30接收3个流:流0、流1和流2。流1和2为非拥塞的,而流0为拥塞的。序列模块30基于每个流的拥塞状态,将流0的数据包分配给慢路径,将流1和2的数据包分配给快路径。序列模块30可以将流0的数据包缓冲在外部存储器中,直到流0的数据包的数据变得可用。合并点520可以根据每个数据包的可用性来合并流0、1和2的数据包。例如,因为流1和2的数据包被分配给快路径,所以流1和2的数据包可用于立即处理。合并点根据轮询调度程序合并流1和2中的每者的数据包(例如,从流2输出数据包,然后输出流1的数据包,等等)。一旦序列模块30输出非拥塞流1和2的数据包进行处理,序列模块30就可以在数据包的数据变得可用时输出拥塞流2的数据包。因此,通过基于每个流的拥塞状态将流0、1和2分配给快路径和慢路径中的一者,序列模块30使得非拥塞流1和2的数据包能够绕过拥塞流0的数据包,使得流0的拥塞性质不会影响非拥塞流1和2。
图7为示出根据本公开的技术的用于合并序列模块30A的快路径和慢路径的图5的示例合并级528的框图。快推FIFO 512、慢推就绪FIFO 514、轮询调度程序522和合并点520可以以与图5的类似组件基本类似的方式操作。
快推就绪FIFO 512对内部数据包(例如,快速内部数据包)进行排队。慢推就绪FIFO 514对内部数据包和外部数据包(例如,外部和慢速内部数据包)进行排队。一旦慢路径上的页面准备好输出,则在快路径FIFO 512中排队的快路径的数据包和在慢路径FIFO514中排队的慢路径的数据包可以使用轮询调度程序522以及合并点720的多路复用器706和多路复用器720合并成单个流。在一些示例中,轮询调度程序522实现缺陷轮询(DRR)。为了保持公正,调度程序522维持快速内部页面桶、慢速内部页面桶、内部页面桶和外部页面桶的信用。
在一个示例中,调度程序522包括2个DRR-DRR 702和DRR 704。DRR模块702应用缺陷轮询以将遍历快速内部路径的数据包与遍历慢速内部路径的数据包合并。DRR 704将内部路径上的数据包(例如,用于合并的快速内部和慢速内部路径的数据包)与外部路径上的数据包合并。
例如,如果慢推就绪FIFO 514在报头具有外部数据包,则合并级528在内部数据包和外部数据包之间运行DRR 704。如果合并级528选择用于出队的外部数据包,则DRR 704向外部页面桶收取信用。如果合并级528选择用于出队的内部数据包,则DRR 704向内部页面桶和快速内部页面桶收取信用。如果慢推就绪FIFO 514在报头具有内部数据包,则合并级528在慢速内部数据包和快速内部数据包之间运行DRR 702。如果合并级528选择用于出队的慢速内部数据包,则DRR 702向慢速内部页面桶和内部页面桶收取信用。如果合并级528选择用于出队的快速内部数据包,则DRR 702向快速内部页面桶和内部页面桶收取信用。一旦调度程序522选择页面,调度程序522就从所选择的FIFO 512、514中弹出页面,并发送和输出用于序列号标记的数据包。
图8为示出根据本公开的技术的示例操作的流程图。为方便起见,参考图2讨论图8。
入口结构端点20A接收用于跨交换结构18交换到出口结构端点20B的多个数据包流(802)。多个数据包流包括拥塞数据包流和非拥塞数据包流。“拥塞数据包流”为具有一个或多个延迟数据包的数据包流。通常,当沿着用于数据包流的网络路径的某处的队列处于满容量(这引起来自入口结构端点20A的数据包流的数据包跨交换结构18交换的延迟)时,数据包流变得拥塞。在图8的示例中,入口结构端点20A接收拥塞的第一数据包流的第一数据包。在接收到第一数据包流的第一数据包之后,入口结构端点20A接收先前拥塞但已变得不拥塞的第二数据包流的第二数据包。在接收到第二数据包流的第二数据包之后,入口结构端点20A接收非拥塞的第三数据包流的第三数据包。
入口结构端点20A的序列模块30A将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径或用于数据包交换的慢路径。为了将每个数据包流的每个数据包分配给快路径或慢路径,序列模块30A确定数据包流是否拥塞(804)。例如,响应于确定第一数据包流是拥塞的(框804的“是”),序列模块30A将第一数据包流的第一数据包分配给慢路径(806)。对于分配给慢路径的第一数据包流的每个数据包,序列模块30A递增第一数据包流的流计数器(808)。第一数据包流的流计数器指示当前分配给慢路径的第一数据包流的数据包的数量。
作为另一示例,响应于确定第二数据包流为非拥塞的(框804的“否”),序列模块30A确定第二数据包流的流计数器指示第二数据包流的非零数量的数据包是否当前被分配给慢路径(810)。响应于确定第二数据包流的流计数器指示第二数据包流的非零数量的数据包当前被分配给慢路径(框810的“是”),序列模块30A向慢路径分配第二数据包流的第二数据包(806)并递增第二数据包流的流计数器(808)。
作为另一示例,响应于确定第三数据包流为非拥塞的(框804的“否”)并且响应于确定第三数据包流的流计数器指示第三数据包流的数据包当前没有分配给慢路径(框810的“否”),序列模块30A将第三数据包流的第三数据包分配给快路径(812)。
序列模块30A处理来自快路径和慢路径的数据包以生成用于跨交换结构18交换到出口结构端点20B的单元流。例如,序列模块30A合并来自快路径和慢路径的数据包(814)。对于每个数据包,序列模块30A确定数据包是否被分配给慢路径(816)。响应于确定数据包(例如,第一流的第一数据包)被分配给慢路径(框816的“是”),序列模块30A递减第一数据包流的流计数器(818)。在递减计数器之后,或另选地,响应于确定数据包未被分配给慢路径(框816的“否”),序列模块30A从合并的数据包生成用于跨交换结构18交换到出口结构端点20A的单元流(820)。因此,序列模块30A维持多个数据包流的每个数据包流内的数据包的FIFO排序。此外,序列模块30A可以在交换另一个数据包流的数据包(例如,诸如第三数据包流的非拥塞数据包流)之后交换第一数据包流的数据包(例如,拥塞数据包流),而不管在第三数据包流的数据包之前由入口结构端点20A是否接收到第一数据包流的数据包。
本公开中所描述的技术可至少部分地以硬件、软件、固件或其任何组合来实施。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,所述处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效的集成或离散逻辑电路,以及这些部件的任何组合。术语“处理器”或“处理电路”通常可以指任何前述逻辑电路,单独或与其他逻辑电路或任何其他等效电路组合。包括硬件的控制单元还可以执行本公开的一种或多种技术。
这样的硬件、软件和固件可以在同一器件内或在单独的器件内实现,以支持本公开中描述的各种操作和功能。另外,任何所描述的单元、模块或组件可以一起实现为或单独实现为离散但可互操作的逻辑装置。将不同特征描绘为模块或单元旨在突出不同的功能方面,并且不一定暗示这些模块或单元必须由单独的硬件或软件组件实现。而是,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者集成在公共或单独的硬件或软件组件中。
本公开中所描述的技术还可在包含指令的计算机可读介质(诸如,计算机可读存储介质)中实施或编码。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他处理器执行该方法(例如,当执行指令时)。计算机可读介质可以包括非暂时性计算机可读存储介质和瞬态通信介质。计算机可读存储介质为有形和非瞬态的,其可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。应当理解,术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他瞬态介质。
除上述之外或作为其替代,描述了以下示例。以下任何示例中描述的特征可以与本文描述的任何其他示例一起使用。
示例1一种方法,包括:由耦接到网络装置内的交换结构以交换单元的多个结构端点的入口结构端点接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;由入口结构端点,将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;以及由生成用于跨交换结构交换到出口结构端点的单元流的入口结构端点处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管第一数据包流的数据包在第二数据包流的数据包之前被入口结构端点接收,入口结构端点在交换数据包流的第二数据包流的数据包之后,交换数据包流的第一数据包流的数据包。
示例2根据示例1所述的方法,其中,将多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括:至少基于第一数据包流被拥塞的拥塞状态,将第一数据包流的数据包分配给用于数据包交换的慢路径;至少基于第二数据包流未被拥塞的拥塞状态,将第二数据包流的数据包分配给用于数据包交换的快路径。
示例3根据示例2所述的方法,其中,接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流包括:在接收第二数据包流之前接收第一数据包流,并且其中,处理来自快路径和慢路径的数据包包括在处理慢路径的第一数据包流的数据包之前处理快路径的第二数据包流的数据包。
示例4根据示例1至3中任意组合所述的方法,其中,将多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括将第一数据包流的数据包分配给用于数据包交换的慢路径,其中该方法进一步包括:对于被分配给用于数据包交换的慢路径的第一数据包流的每个数据包,递增第一数据包流的流计数器;对于从用于数据包交换的慢路径处理的第一数据包流的每个数据包,递减第一数据包流的流计数器。
示例5根据示例1至5中任意组合所述的方法,其中,第一数据包流的数据包为第一数据包,其中第一数据包流的流计数器指示当前分配给慢路径的第一数据包流的数据包的数量,该方法进一步包括:响应于确定第一数据包流的流计数器指示第一数据包流的非零数量的数据包当前被分配给慢路径,将第一数据包流的第二数据包分配给用于数据包交换的慢路径;以及响应于确定第一数据包流的流计数器指示第一数据包流的数据包当前没有分配给慢路径,将第一数据包流的第三数据包分配给用于数据包交换的快路径。
示例6根据示例1至5的任意组合所述的方法,其中,处理来自快路径和慢路径的数据包包括将来自快路径的数据包流的数据包与慢路径的数据包流合并,并且从合并的数据包生成用于跨交换结构交换到出口结构端点的单元流。
示例7根据示例1至6中任意组合所述的方法,其中,将数据包分配给快路径包括将数据包推送到快路径队列,并且其中将数据包分配给慢路径包括一旦从外部存储器读取数据包就将数据包推送到慢路径队列,并且其中处理来自快路径和慢路径的数据包包括通过选择性地使来自慢路径队列和快路径队列的数据包出队来合并数据包流的数据包。
示例8根据示例7所述的方法,其中,轮询调度程序选择性地使来自慢路径队列和快路径队列的数据包出队。
示例9根据示例1至8的任意组合所述的方法,其中,将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括:响应于确定第一数据包流的数据包当前被存储到外部存储器,将第一数据包流的数据包分配给慢路径以供入口结构端点的后续处理。
示例10根据示例1至10的任意组合所述的方法,其中,用于数据包交换的快路径包括网络装置的内部存储器路径,并且其中用于数据包交换的慢路径包括网络装置的外部存储器路径。
示例11一种网络装置,包括耦接到网络装置内的交换结构以交换单元的多个结构端点,多个结构端点的入口结构端点被配置为:接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;并且为了产生跨交换结构交换到出口结构端点的单元流,处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且,尽管第一数据包流的数据包在第二数据包流的数据包之前被入口结构端点接收,当在交换数据包流的第二数据包流的数据包之后交换数据包流的第一数据包流的数据包。
示例12根据示例11所述的网络装置,其中,为了将多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,入口结构端点进一步被配置为:至少基于第一数据包流被拥塞的拥塞状态,将第一数据包流的数据包分配给用于数据包交换的慢路径;至少基于第二数据包流未被拥塞的拥塞状态,将第二数据包流的数据包分配给用于数据包交换的快路径。
示例13根据示例12所述的网络装置,其中,为了接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流,入口结构端点进一步被配置为在接收第二数据包流之前接收第一数据包流,并且其中,为了处理来自快路径和慢路径的数据包,入口结构端点进一步被配置为在处理慢路径的第一数据包的数据包之前处理快路径的第二数据包流的数据包。
示例14根据示例11至13中任意组合所述的网络装置,其中,为了将多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,入口结构端点进一步被配置为将第一数据包流的数据包分配给用于数据包交换的慢路径,并且其中,入口结构端点进一步被配置为:对于被分配给用于数据包交换的慢路径的第一数据包流的每个数据包,递增第一数据包流的流计数器;并且对于从用于数据包交换的慢路径处理的第一数据包流的每个数据包,递减第一数据包流的流计数器。
示例15根据示例11至14中任意组合所述的网络装置,其中,第一数据包流的数据包为第一数据包,其中第一数据包流的入口结构端点的流计数器指示当前分配给慢路径的第一数据包流的数据包的数量,并且其中,所述入口结构端点进一步被配置为:响应于确定第一数据包流的流计数器指示第一数据包流的非零数量的数据包当前被分配给慢路径,将第一数据包流的第二数据包分配给用于数据包交换的慢路径;并且响应于确定第一数据包流的流计数器指示第一数据包流的数据包当前没有分配给慢路径,将第一数据包流的第三数据包分配给用于数据包交换的快路径。
示例16根据示例11至15的任意组合所述的网络装置,其中,为了处理来自快路径和慢路径的数据包,入口结构端点进一步被配置为将来自快路径的数据包流的数据包与慢路径的数据包流合并,并且从合并的数据包生成用于跨交换结构交换到出口结构端点的单元流。
示例17根据示例11至16的任意组合所述的网络装置,其中,为了将数据包分配给快路径,入口结构端点进一步被配置为将数据包推送到快路径队列,并且其中,为了将数据包分配给慢路径,入口结构端点进一步被配置为一旦从外部存储器读取数据包就将数据包推送到慢路径队列,并且其中,为了处理来自快路径和慢路径的数据包,所述入口结构端点进一步被配置为通过选择性地使来自慢路径队列和快路径队列的数据包出对来合并数据包流的数据包。
示例18根据示例17所述的网络装置,其中,入口结构端点进一步包括轮询调度程序,其被配置为选择性地使来自慢路径队列和快路径队列的数据包出队。
示例19根据示例11至18的任意组合所述的网络装置,其中,为了将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,入口结构端点进一步配置为:响应于确定第一数据包流的数据包当前存储到外部存储器,将第一数据包流的包分配给慢路径以供入口结构端点的后续处理。
示例20一种非暂时性计算机可读介质,其包括指令,所述指令在被执行时被配置为使得网络装置的一个或多个处理器执行耦接到网络装置内的交换结构以交换单元的多个结构端点的入口结构端点,所述入口结构端点被配置为:接收跨交换结构交换到用于数据包流的多个结构端点的出口结构端点的多个数据包流;将多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;并且为了产生跨交换结构交换到出口结构端点的单元流,处理来自快路径和慢路径的数据包以维持多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管第一数据包流的数据包在第二数据包流的数据包之前被入口结构端点接收,但在交换数据包流的第二数据包流的数据包之后,交换数据包流的第一数据包流的数据包。
此外,可以将上述任何示例中阐述的任何特定特征组合成所描述技术的有益示例。也就是说,任何特定特征通常适用于本发明的所有示例。已经描述了本发明的各种示例。
Claims (20)
1.一种方法,包括:
由耦接到网络装置内的交换结构以交换单元的多个结构端点的入口结构端点接收跨所述交换结构交换到用于数据包流的所述多个结构端点的出口结构端点的多个数据包流;
由所述入口结构端点将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;以及
由生成用于跨所述交换结构交换到所述出口结构端点的单元流的所述入口结构端点处理来自所述快路径和所述慢路径的数据包以维持所述多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管所述第一数据包流的数据包在所述第二数据包流的数据包之前被所述入口结构端点接收,所述入口结构端点在交换所述数据包流的第二数据包流的数据包之后交换所述数据包流的第一数据包流的数据包。
2.根据权利要求1所述的方法,
其中,将所述多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括:
至少基于所述第一数据包流被拥塞的拥塞状态,将所述第一数据包流的数据包分配给用于数据包交换的所述慢路径;以及
至少基于所述第二数据包流未被拥塞的拥塞状态,将所述第二数据包流的数据包分配给用于数据包交换的所述快路径。
3.根据权利要求2所述的方法,
其中,接收跨所述交换结构交换到用于数据包流的所述多个结构端点的出口结构端点的多个数据包流包括在接收所述第二数据包流之前接收所述第一数据包流,以及
其中,处理来自所述快路径和所述慢路径的数据包包括在处理所述慢路径的所述第一数据包流的数据包之前处理所述快路径的所述第二数据包流的数据包。
4.根据权利要求1所述的方法,
其中,将所述多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括将所述第一数据包流的数据包分配给用于数据包交换的所述慢路径,
其中,所述方法进一步包括:
对于分配给用于数据包交换的所述慢路径的所述第一数据包流的每个数据包,递增所述第一数据包流的流计数器;以及
对于从用于数据包交换的所述慢路径处理的所述第一数据包流的每个数据包,递减所述第一数据包流的流计数器。
5.根据权利要求1所述的方法,
其中,所述第一数据包流的数据包为第一数据包,
其中,所述第一数据包流的流计数器指示当前分配给所述慢路径的所述第一数据包流的数据包的数量,所述方法进一步包括:
响应于确定所述第一数据包流的流计数器指示所述第一数据包流的非零数量的数据包当前被分配给所述慢路径,将所述第一数据包流的第二数据包分配给用于数据包交换的所述慢路径;以及
响应于确定所述第一数据包流的流计数器指示所述第一数据包流的数据包当前没有分配给所述慢路径,将所述第一数据包流的第三数据包分配给用于数据包交换的所述快路径。
6.根据权利要求1所述的方法,其中,处理来自所述快路径和所述慢路径的数据包包括将来自所述快路径的数据包流的数据包与所述慢路径的数据包流合并,并且从合并的数据包生成用于跨交换结构交换到所述出口结构端点的单元流。
7.根据权利要求1所述的方法,
其中,将数据包分配给所述快路径包括将所述数据包推送到快路径队列,以及
其中,将数据包分配给所述慢路径包括:一旦从外部存储器读取所述数据包,就将所述数据包推送到慢路径队列,以及
其中,处理来自所述快路径和所述慢路径的数据包包括通过选择性地使来自所述慢路径队列和所述快路径队列的数据包出队来合并数据包流的数据包。
8.根据权利要求7所述的方法,其中,轮询调度程序选择性地使来自所述慢路径队列和所述快路径队列的数据包出队。
9.根据权利要求1所述的方法,其中,将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者包括:
响应于确定所述第一数据包流的数据包当前存储到外部存储器,将所述第一数据包流的数据包分配给所述慢路径以供所述入口结构端点的后续处理。
10.根据权利要求1至9的任意组合所述的方法,
其中,用于数据包交换的所述快路径包括所述网络装置的内部存储器路径,以及
其中,用于数据包交换的所述慢路径包括所述网络装置的外部存储器路径。
11.一种网络装置,包括耦接到所述网络装置内的交换结构以交换单元的多个结构端点,所述多个结构端点的入口结构端点被配置为:
接收跨所述交换结构交换到用于数据包流的所述多个结构端点的出口结构端点的多个数据包流;
将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;以及
为了产生跨所述交换结构交换到所述出口结构端点的单元流,处理来自所述快路径和所述慢路径的数据包以维持所述多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管所述第一数据包流的数据包在所述第二数据包流的数据包之前被所述入口结构端点接收,但在交换所述数据包流的第二数据包流的数据包之后交换所述数据包流的第一数据包流的数据包。
12.根据权利要求11所述的网络装置,
其中,为了将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,所述入口结构端点进一步配置为:
至少基于所述第一数据包流被拥塞的拥塞状态,将所述第一数据包流的数据包分配给用于数据包交换的所述慢路径;以及
至少基于所述第二数据包流未被拥塞的拥塞状态,将所述第二数据包流的数据包分配给用于所述数据包交换的快路径。
13.根据权利要求12所述的网络装置,
其中,为了接收跨所述交换结构交换到用于数据包流的所述多个结构端点的出口结构端点的所述多个数据包流,所述入口结构端点进一步被配置为在接收所述第二数据包流之前接收所述第一数据包流,以及
其中,为了处理来自所述快路径和所述慢路径的数据包,所述入口结构端点进一步被配置为在处理所述慢路径的第一数据包流的数据包之前处理所述快路径的第二数据包流的数据包。
14.根据权利要求11所述的网络装置,
其中,为了将所述多个数据包流的每个数据包流的数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,所述入口结构端点进一步被配置为将所述第一数据包流的数据包分配给用于数据包交换的所述慢路径,以及
其中,所述入口结构端点进一步被配置为:
对于分配给用于数据包交换的所述慢路径的所述第一数据包流的每个数据包,递增所述第一数据包流的流计数器;以及
对于从用于数据包交换的所述慢路径处理的所述第一数据包流的每个数据包,递减所述第一数据包流的流计数器。
15.根据权利要求11所述的网络装置,
其中,所述第一数据包流的数据包为第一数据包,
其中,所述第一数据包流的入口结构端点的流计数器指示当前分配给所述慢路径的所述第一数据包流的数据包的数量,以及
其中,所述入口结构端点进一步被配置为:
响应于确定所述第一数据包流的流计数器指示所述第一数据包流的非零数量的数据包当前被分配给所述慢路径,将所述第一数据包流的第二数据包分配给用于数据包交换的所述慢路径;以及
响应于确定所述第一数据包流的流计数器指示所述第一数据包流的数据包当前没有分配给所述慢路径,将所述第一数据包流的第三数据包分配给用于数据包交换的所述快路径。
16.根据权利要求11所述的网络装置,其中,为了处理来自所述快路径和所述慢路径的数据包,所述入口结构端点进一步被配置为将来自所述快路径的数据包流的数据包与所述慢路径的数据包流合并,并且从合并的数据包生成用于跨所述交换结构交换到所述出口结构端点的单元流。
17.根据权利要求11所述的网络装置,
其中,为了将数据包分配给所述快路径,所述入口结构端点进一步被配置为将所述数据包推送到所述快路径队列,以及
其中,为了将数据包分配给所述慢路径,所述入口结构端点进一步被配置为一旦从外部存储器读取所述数据包就将所述数据包推送到慢路径队列,以及
其中,为了处理来自所述快路径和所述慢路径的数据包,所述入口结构端点进一步被配置为通过选择性地使来自所述慢路径队列和所述快路径队列的包出队来合并数据包流的数据包。
18.根据权利要求17所述的网络装置,其中,所述入口结构端点进一步包括轮询调度程序,所述轮询调度程序被配置为选择性地使来自所述慢路径队列和所述快路径队列的数据包出队。
19.根据权利要求11至18中任意组合所述的网络装置,其中,为了将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者,所述入口结构端点进一步被配置为:
响应于确定所述第一数据包流的数据包当前存储到外部存储器,将所述第一数据包流的数据包分配给所述慢路径以供所述入口结构端点的后续处理。
20.一种非暂时性计算机可读介质,包括指令,所述指令在被执行时被配置为使网络装置的一个或多个处理器执行耦接到所述网络装置内的交换结构以交换单元的多个结构端点的入口结构端点,所述入口结构端点配置为:
接收跨所述交换结构交换到用于数据包流的所述多个结构端点的出口结构端点的多个数据包流;
将所述多个数据包流的每个数据包流的每个数据包分配给用于数据包交换的快路径和用于数据包交换的慢路径中的一者;以及
为了产生跨所述交换结构交换到所述出口结构端点的单元流,处理来自所述快路径和所述慢路径的数据包以维持所述多个数据包流的每个数据包流内的数据包的先进先出排序,并且尽管所述第一数据包流的数据包在所述第二数据包流的数据包之前被所述入口结构端点接收,但在交换所述数据包流的第二数据包流的数据包之后交换所述数据包流的第一数据包流的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311118757.6A CN117081999A (zh) | 2018-12-28 | 2019-06-26 | 网络装置、计算机联网方法及计算机可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/235,874 | 2018-12-28 | ||
US16/235,874 US10951527B2 (en) | 2018-12-28 | 2018-12-28 | Switch fabric packet flow reordering |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311118757.6A Division CN117081999A (zh) | 2018-12-28 | 2019-06-26 | 网络装置、计算机联网方法及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385217A true CN111385217A (zh) | 2020-07-07 |
CN111385217B CN111385217B (zh) | 2023-09-19 |
Family
ID=71122181
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910562488.XA Active CN111385217B (zh) | 2018-12-28 | 2019-06-26 | 交换结构数据包流重排序 |
CN202311118757.6A Pending CN117081999A (zh) | 2018-12-28 | 2019-06-26 | 网络装置、计算机联网方法及计算机可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311118757.6A Pending CN117081999A (zh) | 2018-12-28 | 2019-06-26 | 网络装置、计算机联网方法及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10951527B2 (zh) |
CN (2) | CN111385217B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10951527B2 (en) | 2018-12-28 | 2021-03-16 | Juniper Networks, Inc. | Switch fabric packet flow reordering |
US11316796B2 (en) * | 2019-12-30 | 2022-04-26 | Juniper Networks, Inc. | Spraying for unequal link connections in an internal switch fabric |
CN112787951B (zh) * | 2020-08-07 | 2024-02-27 | 中兴通讯股份有限公司 | 拥塞控制方法、装置、设备和计算机可读存储介质 |
US11509590B2 (en) * | 2021-02-17 | 2022-11-22 | Juniper Networks, Inc. | Determining network device statistics associated with fast counters and slow counters |
US20220124035A1 (en) * | 2021-05-05 | 2022-04-21 | Intel Corporation | Switch-originated congestion messages |
US20240048489A1 (en) * | 2022-08-05 | 2024-02-08 | Mellanox Technologies, Ltd. | Dynamic fabric reaction for optimized collective communication |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030035372A1 (en) * | 2001-08-15 | 2003-02-20 | Marc Schaub | Method and system for managing packets in a shared memory buffer that serves multiple output links |
US20030043810A1 (en) * | 2001-08-30 | 2003-03-06 | Boduch Mark E. | System and method for communicating data using a common switch fabric |
US20030067879A1 (en) * | 2001-10-10 | 2003-04-10 | Shinya Masunaga | Communication control method and network system |
CN1679017A (zh) * | 2002-09-03 | 2005-10-05 | 汤姆森特许公司 | 使用优先级与保留带宽协议提供网络服务质量的机制 |
CN102084627A (zh) * | 2008-06-27 | 2011-06-01 | 格诺多有限公司 | 通过网络传输数据的方法 |
CN102857494A (zh) * | 2011-06-30 | 2013-01-02 | 美国博通公司 | 通用网络接口控制器 |
CN107171980A (zh) * | 2016-03-08 | 2017-09-15 | 迈络思科技Tlv有限公司 | 网络交换机中的灵活的缓冲区分配 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2041673A5 (zh) | 1969-05-22 | 1971-01-29 | Cit Alcatel | |
CA2048717A1 (en) * | 1990-08-17 | 1992-02-18 | Tsutomu Tanaka | Growable interconnect fabric cell switch module |
US5321813A (en) | 1991-05-01 | 1994-06-14 | Teradata Corporation | Reconfigurable, fault tolerant, multistage interconnect network and protocol |
DE69523677T2 (de) | 1994-02-04 | 2002-08-01 | Koninklijke Philips Electronics N.V., Eindhoven | Sortierung von sequentiellen daten vor der selektiven zugriffverteilung über parallelen prozessoren |
JPH11122261A (ja) | 1997-10-17 | 1999-04-30 | Fujitsu Ltd | Atm交換機の装置内導通試験装置 |
US6661773B1 (en) | 1999-06-07 | 2003-12-09 | Intel Corporation | Method for detection of stale cells following route changes in a data communication |
US7102999B1 (en) | 1999-11-24 | 2006-09-05 | Juniper Networks, Inc. | Switching device |
US6990063B1 (en) | 2000-03-07 | 2006-01-24 | Cisco Technology, Inc. | Distributing fault indications and maintaining and using a data structure indicating faults to route traffic in a packet switching system |
ATE295642T1 (de) * | 2000-03-10 | 2005-05-15 | Tellabs Operations Inc | Auslese-ablaufsteuerung für nicht aufeinander- folgende daten |
US6654373B1 (en) * | 2000-06-12 | 2003-11-25 | Netrake Corporation | Content aware network apparatus |
US7200107B2 (en) | 2001-01-06 | 2007-04-03 | Mindspeed Technologies, Inc. | Method and apparatus for lossless switchover in a redundant switch fabric |
US7099330B2 (en) * | 2001-01-10 | 2006-08-29 | Lucent Technologies Inc. | Method and apparatus for integrating guaranteed-bandwidth and best-effort traffic in a packet network |
US6658494B2 (en) | 2001-04-20 | 2003-12-02 | Nvision, Inc. | Router topology having N on 1 redundancy |
US20030063839A1 (en) | 2001-05-11 | 2003-04-03 | Scott Kaminski | Fault isolation of individual switch modules using robust switch architecture |
US7161902B2 (en) * | 2001-08-08 | 2007-01-09 | Nortel Networks Limited | Reducing network traffic congestion |
US7464180B1 (en) * | 2001-10-16 | 2008-12-09 | Cisco Technology, Inc. | Prioritization and preemption of data frames over a switching fabric |
US8305882B2 (en) | 2001-12-18 | 2012-11-06 | Horizon Technology Funding Company V Llc | Methods, systems, and computer program products for detecting and/or correcting faults in a multiprotocol label switching network by using redundant paths between nodes |
JP3750612B2 (ja) | 2002-02-13 | 2006-03-01 | 日本電気株式会社 | リング網におけるパケットプロテクション方法及び伝送装置並びにプログラム |
JP4020753B2 (ja) | 2002-10-25 | 2007-12-12 | 富士通株式会社 | リング切替方法 |
JP4107083B2 (ja) | 2002-12-27 | 2008-06-25 | 株式会社日立製作所 | 高可用ディスク制御装置とその障害処理方法及び高可用ディスクサブシステム |
US7970009B1 (en) | 2003-08-21 | 2011-06-28 | Brixham Solutions Ltd. | Method for performing protocol translation in a network switch |
US7606236B2 (en) * | 2004-05-21 | 2009-10-20 | Intel Corporation | Forwarding information base lookup method |
US7801125B2 (en) * | 2004-10-22 | 2010-09-21 | Cisco Technology, Inc. | Forwarding table reduction and multipath network forwarding |
EP1729458A1 (en) | 2005-06-01 | 2006-12-06 | Thomson Licensing | Method for determining connection topology of home network |
US7505410B2 (en) * | 2005-06-30 | 2009-03-17 | Intel Corporation | Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices |
US20070053283A1 (en) | 2005-09-06 | 2007-03-08 | International Business Machines Corporation | Correlation and consolidation of link events to facilitate updating of status of source-destination routes in a multi-path network |
US7809009B2 (en) * | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US8050559B2 (en) * | 2006-08-21 | 2011-11-01 | Juniper Networks, Inc. | Multi-chassis router with multiplexed optical interconnects |
US8867338B2 (en) | 2006-09-19 | 2014-10-21 | Futurewei Technologies, Inc. | Faults Propagation and protection for connection oriented data paths in packet networks |
JP2008172517A (ja) * | 2007-01-11 | 2008-07-24 | Nec Corp | 輻輳制御システム、輻輳制御方法、輻輳制御プログラム、及び、プログラム記録媒体 |
US8144575B2 (en) | 2009-06-30 | 2012-03-27 | Juniper Networks, Inc. | Redundant pseudowires for border gateway patrol-based virtual private local area network service multi-homing environments |
US8122127B2 (en) | 2009-12-31 | 2012-02-21 | Juniper Networks, Inc. | Automatic aggregation of inter-device ports/links in a virtual device |
US8325726B2 (en) | 2010-02-09 | 2012-12-04 | Juniper Networks, Inc. | Data structure-less distributed fabric multicast |
EP2369782B1 (en) | 2010-03-23 | 2015-09-30 | Juniper Networks, Inc. | Multicasting within a distributed control plane of a switch |
US9769016B2 (en) | 2010-06-07 | 2017-09-19 | Brocade Communications Systems, Inc. | Advanced link tracking for virtual cluster switching |
US8798456B2 (en) | 2010-09-01 | 2014-08-05 | Brocade Communications Systems, Inc. | Diagnostic port for inter-switch link testing in electrical, optical and remote loopback modes |
US9660940B2 (en) | 2010-12-01 | 2017-05-23 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with a switch fabric |
EP2745208B1 (en) * | 2011-08-17 | 2018-11-28 | Nicira, Inc. | Distributed logical l3 routing |
KR101516135B1 (ko) | 2011-10-19 | 2015-04-29 | 니폰 덴신 덴와 가부시끼가이샤 | 광 네트워크 시스템 |
US8953605B1 (en) | 2012-01-03 | 2015-02-10 | Juniper Networks, Inc. | Methods and apparatus for a handshake protocol in a LAG-based multipath switch fabric for multipath OAM |
US8948001B2 (en) | 2012-06-26 | 2015-02-03 | Juniper Networks, Inc. | Service plane triggered fast reroute protection |
US8902780B1 (en) | 2012-09-26 | 2014-12-02 | Juniper Networks, Inc. | Forwarding detection for point-to-multipoint label switched paths |
KR102195366B1 (ko) | 2014-10-15 | 2020-12-24 | 한국전자통신연구원 | 패킷 기반 보호 절체 기능을 구비한 패킷 또는 수동광 네트워크 시스템 |
US9742489B2 (en) | 2015-01-08 | 2017-08-22 | Nec Corporation | Survivable hybrid optical/electrical data center networks using loss of light detection |
US9866427B2 (en) | 2015-02-16 | 2018-01-09 | Juniper Networks, Inc. | Multi-stage switch fabric fault detection and handling |
US9654849B2 (en) | 2015-05-15 | 2017-05-16 | Huawei Technologies Co., Ltd. | System and method for photonic switching |
US10164906B1 (en) | 2015-09-30 | 2018-12-25 | Juniper Networks, Inc. | Scalable switch fabric cell reordering |
US10951527B2 (en) | 2018-12-28 | 2021-03-16 | Juniper Networks, Inc. | Switch fabric packet flow reordering |
-
2018
- 2018-12-28 US US16/235,874 patent/US10951527B2/en active Active
-
2019
- 2019-06-26 CN CN201910562488.XA patent/CN111385217B/zh active Active
- 2019-06-26 CN CN202311118757.6A patent/CN117081999A/zh active Pending
-
2021
- 2021-03-10 US US17/249,723 patent/US11496398B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030035372A1 (en) * | 2001-08-15 | 2003-02-20 | Marc Schaub | Method and system for managing packets in a shared memory buffer that serves multiple output links |
US20030043810A1 (en) * | 2001-08-30 | 2003-03-06 | Boduch Mark E. | System and method for communicating data using a common switch fabric |
US20030067879A1 (en) * | 2001-10-10 | 2003-04-10 | Shinya Masunaga | Communication control method and network system |
CN1679017A (zh) * | 2002-09-03 | 2005-10-05 | 汤姆森特许公司 | 使用优先级与保留带宽协议提供网络服务质量的机制 |
CN102084627A (zh) * | 2008-06-27 | 2011-06-01 | 格诺多有限公司 | 通过网络传输数据的方法 |
CN102857494A (zh) * | 2011-06-30 | 2013-01-02 | 美国博通公司 | 通用网络接口控制器 |
CN107171980A (zh) * | 2016-03-08 | 2017-09-15 | 迈络思科技Tlv有限公司 | 网络交换机中的灵活的缓冲区分配 |
Also Published As
Publication number | Publication date |
---|---|
CN117081999A (zh) | 2023-11-17 |
US20210194809A1 (en) | 2021-06-24 |
US20200213232A1 (en) | 2020-07-02 |
US11496398B2 (en) | 2022-11-08 |
US10951527B2 (en) | 2021-03-16 |
CN111385217B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111385217B (zh) | 交换结构数据包流重排序 | |
US7151744B2 (en) | Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover | |
US7221652B1 (en) | System and method for tolerating data link faults in communications with a switch fabric | |
EP2557739B1 (en) | Universal network interface controller | |
US7352694B1 (en) | System and method for tolerating data link faults in a packet communications switch fabric | |
US6944170B2 (en) | Switching arrangement and method | |
US20050002334A1 (en) | Packet sequence maintenance with load balancing, and head-of-line blocking avoidance in a switch | |
US20060050690A1 (en) | Pipelined packet switching and queuing architecture | |
US9172645B1 (en) | Methods and apparatus for destination based hybrid load balancing within a switch fabric | |
US10645033B2 (en) | Buffer optimization in modular switches | |
US7474664B2 (en) | ATM switch for ensuring cell sequence | |
US10491543B1 (en) | Shared memory switch fabric system and method | |
JP5034491B2 (ja) | スイッチにおける優先度帯域制御方法 | |
US10880236B2 (en) | Switch with controlled queuing for multi-host endpoints | |
US6643294B1 (en) | Distributed control merged buffer ATM switch | |
US10164906B1 (en) | Scalable switch fabric cell reordering | |
US8213421B2 (en) | Methods and systems for efficient multicast across a mesh backplane | |
US11070474B1 (en) | Selective load balancing for spraying over fabric paths | |
US11711318B1 (en) | Packet switches | |
US11316796B2 (en) | Spraying for unequal link connections in an internal switch fabric | |
Tomonaga | IP router for next-generation network | |
Yun | A terabit multi-service switch with Quality of Service support | |
Hu et al. | VOIQ: A practical high-performance architecture for the implementation of single-buffered routers | |
KR100430674B1 (ko) | 레이블 통합 기능이 탑재된 서비스 품질 보장형 레이블스위치 라우터 및 이의 레이블 교환 방법 | |
Martínez et al. | Towards a cost-effective interconnection network architecture with QoS and congestion management support |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
GR01 | Patent grant | ||
GR01 | Patent grant |