CN111669336A - 用于无损以太网的低成本拥塞隔离 - Google Patents
用于无损以太网的低成本拥塞隔离 Download PDFInfo
- Publication number
- CN111669336A CN111669336A CN202010137130.5A CN202010137130A CN111669336A CN 111669336 A CN111669336 A CN 111669336A CN 202010137130 A CN202010137130 A CN 202010137130A CN 111669336 A CN111669336 A CN 111669336A
- Authority
- CN
- China
- Prior art keywords
- congestion
- hashes
- data packet
- isolation
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000002955 isolation Methods 0.000 title claims abstract description 117
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims description 89
- 230000007246 mechanism Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 17
- 238000012937 correction Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 230000001960 triggered effect Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 38
- 239000000872 buffer Substances 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 11
- 230000000903 blocking effect Effects 0.000 description 10
- 230000006854 communication Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000000116 mitigating effect Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- KNHUKKLJHYUCFP-UHFFFAOYSA-N clofibrate Chemical compound CCOC(=O)C(C)(C)OC1=CC=C(Cl)C=C1 KNHUKKLJHYUCFP-UHFFFAOYSA-N 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 229920006926 PFC Polymers 0.000 description 1
- 241000283080 Proboscidea <mammal> Species 0.000 description 1
- 241000700159 Rattus Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 229920000747 poly(lactic acid) Polymers 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000005204 segregation Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 210000003813 thumb Anatomy 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/11—Identifying 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- 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/122—Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
-
- 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/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- 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/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的实施例涉及用于无损以太网的低成本拥塞隔离。提供了利用随机选择的用于无损以太网的低成本拥塞隔离。在检测到在其出口端口中的一个出口端口处的拥塞后,下游设备在入口端口处的拥塞优先级队列中随机地选择在其入口端口中的一个或多个处接收到的数据分组用于隔离。下游设备将包括隔离哈希的列表的拥塞隔离消息发送到上游设备,以标识被选择用于隔离的数据分组。在接收后,上游设备标识被选择用于隔离的数据分组并且开始将这样的分组排队在上游设备的拥塞优先级队列中。当基于优先级的流控制被触发时,上游设备仅仅停止对拥塞优先级队列中的分组的传输,同时允许对未隔离的数据分组的继续传输。
Description
技术领域
本公开的实施例涉及网络传输,并且更具体地涉及网络低成本拥塞隔离。
背景技术
网络过载或通常称为网络拥塞由于在超过网络缓冲区的容量的流之间的冲突而发生。诸如传输控制协议(TCP)的运输协议通常用于通过基于来自丢失的或标记的分组的反馈调节提供给网络的负载来控制网络拥塞。
无损以太网(例如,数据中心桥接)是指对用于在数据中心内使用的以太网协议的增强以允许以太网被用于存储和高性能计算(例如,聚类)。这些增强试图消除由于队列溢出的分组损失并且允许在网络中的不同链路上的带宽分配。诸如以太网光纤通道(FCoE)和通过以太网的远程直接存储器访问(RDMA)的当前数据中心结构对帧丢失敏感。无损以太网使用编码在数据分组内的显式拥塞通知位而不是使用分组丢弃来维持对TCP和RDMA的反馈。在一些示例中,拥塞是这样的大规模低时延无损以太网数据中心中的丢失和延迟的主要原因。通过将拥塞通知(例如,显式拥塞通知(ECN)、量化拥塞通知(QCN)、等等)与基于优先级的流控制耦合,无损以太网防止分组丢失。
附图说明
根据一个或多个各种实施例,参考以下附图详细描述本公开。附图仅出于图示的目的被提供并且仅仅描绘示例实施例。
图1是根据本文公开的技术的实施例的示例环境。
图2A图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第一部分。
图2B图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第二部分。
图2C图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第三部分。
图2D图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第四部分。
图2E图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第五部分。
图2F图示了根据本文公开的技术的实施例的示例拥塞隔离过程的第六部分。
图3图示了根据本文公开的技术的实施例的另一示例拥塞隔离过程。
图4是根据本文公开的技术的实施例的示例随机拥塞隔离过程。
图5A是根据本文公开的技术的实施例的示例隔离过程的第一部分。
图5B是根据本文公开的技术的实施例的示例隔离过程的第二部分。
图6是根据本文公开的技术的实施例的示例转发设备。
图7是本公开中描述的实施例可以被实现的示例计算系统。
附图不是穷举的并且不将本公开限制于所公开的精确形式。
具体实施方式
网络路径可以由源与目的地之间的多跳组成。当上游设备传输分组比那些分组能够被转发内的下游设备接受更快时发生拥塞。上游设备是正将数据业务从上游设备的输出(即,出口端口)中的一个发送到另一设备的任何网络交换机或其他设备,而下游设备是在下游设备的输入(即,入口端口)中的一个处从另一设备(即,上游设备)接收数据业务的任何网络交换机或其他设备。网络内的数据业务的起源可以被认为是第一上游设备,而数据业务的最终目的地可以被认为是最后一个下游设备。取决于业务的方向,网络内的每个设备可以用作上游设备或下游设备两者。
当下游设备用完其缓冲区中的空间时,其可能开始默默地丢掉附加的传入分组,从而导致丢失的分组。对于要求无损转发的应用,实现包括从下游设备到上游设备的关于缓冲区容量的反馈的流控制是重要的。无损转发可能对不能容忍重传所要求的时延、当试图恢复丢失的分组时遭受重大性能影响或者简单地由于网络分组丢失而失败以及其他原因的应用是必要的。
尽管TCP允许基于来自丢失的或标记的分组的反馈来调节提供给网络的负载,但是TCP需要多个往返延迟时间来调节拥塞事件。为了使TCP和其他端到端运输协议有效,网络必须具有充足的缓冲区来承受短期过载直到运输协议压制住源,并且流它们本身必须相对于网络往返时间长久。然而,这些要求中的两者都经常在数据中心和存储网络中被违反。
基于优先级的流控制是异步方法,其中不同于基于信用的TCP方法,每个交换机继续发送消息直到其接收到停止传输的消息。基于优先级的流控制作用于优先级类。当在下游设备的入口端口处的队列达到其容量的特定阈值时,下游设备将优先级流控制消息发送到上游设备以通知上游设备停止发送具有特定优先级的分组。此时,上游设备将标识其何时已经使该类的数据分组就绪通过其出口端口中的一个或多个被发送,并且将暂停在一个或多个出口端口处对数据分组的传输直到由下游设备发送了恢复消息(即,拥塞场景已经减轻的指示)。
尽管基于优先级的流控制帮助防止分组丢失,但是其具有负面后果。网络交换机或路由器的每个端口可以具有与每个优先级类相关联的不同队列。基于优先级的流控制阻塞经过端口的所有业务,包括拥塞流和行为良好的流(即,违规流和未拥塞的流)两者。当上游设备从下游设备接收到消息时,指示停止转发特定优先级类的数据分组,上游设备停止对该优先级类的所有队列的传输,但不停止对来自其他优先级类的队列的数据分组的传输。由基于优先级的流控制造成的这种类型的阻塞被称为队头阻塞(HOL阻塞)。HOL阻塞通过停止行为良好的流的前进而造成恶化的网络性能。
存在解决由基于优先级的流控制造成的HOL阻塞问题的各种解决方案。一些解决方案采用分组丢弃算法,其中一旦缓冲区满就简单地丢掉分组。其他解决方案利用每流队列,其是一种分离地处置每个数据流的技术。然而,这样的方法要求针对由交换机处理的每个数据流的分离队列。对于每流队列,对于每个队列也要求内容寻址存储器(CAM)以确保恰当的路由。这些解决方案可能由于可能由这些解决方案造成的分组丢弃而在数据中心内是不合适的。此外,每流队列极其成本高,要求CAM并且维持与流相关的各种统计。每流队列还增加了控制层的复杂性,从而由于软件缩放的困难而更不适用于数据中心。
本文公开的技术的实施例涉及用于低成本拥塞隔离的方法和系统。本公开的技术解决了基于优先级的流控制的缺点而不改变基于优先级的流控制如何操作,并且无需分组丢弃或高成本的每流队列。在一些示例中,在每个交换机的入口端口和出口端口处的一个或多个缓冲区被指定为拥塞优先级队列。当下游设备检测到在出口端口处的拥塞时,下游设备随机地选择一个或多个流以隔离并且开始将那些流的数据分组排队到拥塞队列中。由下游设备针对每个接收到的数据分组计算哈希桶(bucket),其用于在从上游设备在入口端口处接收后标识数据分组以隔离。下游设备还将一个或多个拥塞隔离消息(CIM)发送到上游设备。每个CIM包含隔离标识符,其可以包括计算机哈希桶。上游设备使用隔离标识符来标识随机地被选择为被隔离的(多个)流,并且开始通过将那些分组排队到上游设备的拥塞队列中来隔离那些数据分组。实现本公开的实施例支持拥塞隔离的低成本方法,而无需通过阻塞在出口端口处的所有业务而影响行为良好的流。具体地,本公开的实施例解决了由基于优先级的流控制造成的HOL阻塞的问题。通过随机地隔离数据流,HOL阻塞问题被最小化,从而增加了行为良好的数据流将仍然被转发的几率。
图1图示了本文公开的技术的实施例可以被实现于其中的示例环境100。示例环境100旨在仅仅用于图示并且不应当被解释为将本文公开的主题的范围限制于任何具体实施例。此外,尽管图示了一个网络拓扑,但是本领域普通技术人员将理解本文公开的技术适用于任何网络拓扑。
参考图1,示例环境100包括六个网络交换机A-F。每个交换机A-F包含一个或多个入口端口102和一个或多个出口端口104。在各种实施例中,交换机A-F可以是一个或多个网络部件,诸如(但不限于)网桥、网络交换机、多层交换机、路由器、中继器集线器、或实现在网络内的任何其他分组转发设备。尽管未图示在图1中,但是本领域普通技术人员将了解网络交换机的标准部件,包括一个或多个处理器、一个或多个存储器部件、一个或多个网络接口、只读存储器(ROM)部件、或者参考图7讨论的任何其他部件。
如图示的,每个交换机A-F被通信地耦合到其他交换机,如由实线所图示的。在各种实施例中,实线可以表示一对一架构,其中一个交换机的每个出口端口104被通信地耦合到另一交换机的对应的入口端口102。在其他实施例中,实线可以表示多对一架构或一对多架构。本领域普通技术人员将理解所采用的架构的类型不影响本文公开的技术的适用性。
在操作期间,各种数据流被路由通过环境100的交换机A-F,诸如数据流X、Y和Z。数据流可以被路由通过环境100,取决于由网络做出的路由决策,可以采取各种不同的路径。在各种实施例中,路由决策被设计为以从源到端点可能的最短跳数遍历网络。在其他实施例中,可以基于网络的要求(例如,高可用性、等等)来实现不同的路由方法。此外,尽管相对于通过应用基于优先级的流控制造成的HOL阻塞进行讨论,但是这样的描述旨在仅仅用于解释目的,以描述本文公开的技术。本领域普通技术人员将理解,本文公开的技术可以独立于在网络内所采用的拥塞减轻策略(例如,基于优先级的流控制)进行操作。
图1图示了根据本文公开的技术的各种实施例的用于数据流X、Y和Z的示例路由。为了便于讨论,交换机A-F的入口端口和出口端口中的每个被图示为单一元件。本领域普通技术人员将理解,根据本公开的设备的入口端口和出口端口可以包含用于缓冲在转发之前接收到的数据分组的一个或多个缓冲区。例如,本领域普通技术人员将理解,各种交换机A-F的入口端口和出口端口可以包含基于在网络内实现的优先级方案的多个缓冲区。图1仅仅旨在用于图示数据流一般如何流过网络交换机的目的,并且不应当被解释为将本文讨论的主题的范围限制于具有单一端口的具体网络设备。
如图1中所图示的,数据流X通过入口端口102a2进入交换机A(例如,针对数据流X的上游设备1)并且从出口端口104a1被路由出去到交换机B的入口端口102b1(例如,针对数据流X的下游设备1)。数据流X从出口端口104b1(例如,针对数据流X的上游设备2)被路由到交换机C的入口端口102c1(例如,针对数据流X的下游设备2)。数据流X通过出口端口104c1退出交换机C。数据流Y通过入口端口102d1进入交换机D(例如,针对数据流Y的上游设备1)并且通过出口端口104d1退出并且被路由到交换机B的入口端口102b1(例如,针对数据流Y的下游设备1)。如以上参考数据流X所讨论的,数据流Y沿着从交换机B(例如,针对数据流Y的上游设备2)到交换机C(例如,针对数据流Y的下游设备2)的类似路径行进,但是被路由通过交换机C以在交换机C的出口端口104c2处退出。数据流Z分别通过入口端口102d2和出口端口104d2进入和退出交换机D(例如,针对数据流Z的上游设备1)。数据流Z然后被路由通过交换机E(例如,针对数据流Z的下游设备1)的入口端口102e2并且从交换机E(例如,针对数据流Z的上游设备2)的出口端口104e1被路由出去,并且前进到交换机C(例如,针对数据流Z的下游设备2)的入口端口102c2。与数据流X类似,网络将数据流Z路由通过交换机C的出口端口104c1。
关于基于优先级的流控制(PFC),当一个流变得拥塞时HOL阻塞问题出现。使用图1作为示例,假设数据流X在交换机C处变得拥塞。当这种情况发生时,在出口端口104c1处的缓冲区将比分组能够在其路由上被路由到下一设备更快地填充。这转而将使数据流X的分组备份在入口端口102c1处。当在入口端口102c1处的缓冲区达到特定容量阈值时,交换机C将会把数据流X标识为拥塞流。交换机C将发送标识到在入口端口102c1处的数据缓冲区拥塞的消息(例如,PFCstart消息),并且交换机B应当停止将分组传输到交换机C中在入口端口102c1处的数据缓冲区。在接收到PFCstart消息后,交换机B将在出口端口104b1处的传输之前停止转发数据流X的数据分组以及数据流X经过的数据缓冲区中的所有数据分组。因此,在出口端口104b1处的缓冲区将停止传输数据分组。因为通过出口端口104b1的业务被停止,所以这意味着数据流Y的分组也被停止,尽管数据流Y如期望地表现(即,下游未拥塞)。由PFC造成的该HOL阻塞通过压制住行为良好的流(即,数据流Y)的性能来降低网络的效率。
如所图示的,取决于是从交换机A和D还是交换机C的视角来看系统,交换机B和E两者都用作上游设备和下游设备。如以上所讨论的,取决于业务流的方向和参考点,交换机A-F中的每个可以具有该双重性质。为便于讨论,将参考单个上游设备(图1的交换机B)和单个下游设备(图1的交换机C)进一步解释本公开的技术。对这两个交换机的使用仅仅用于图示目的,并且不应当被解释为将本文公开的主题的范围限制于设备的任何特定组合。
为了最小化由PFC造成的HOL阻塞的影响,本文公开的技术的实施例以低成本方式支持拥塞隔离。图2A-图2F图示了根据本公开的实施例的示例随机化拥塞隔离。作为非限制性示例,将相对于关于图1讨论的示例HOL阻塞场景讨论在图2A-图2F中图示的随机化拥塞隔离。尽管参考图1中讨论的场景进行解释,但是与图2A-图2F相关联的讨论不应当被解释为限制本公开的主题。在附图之间使用相同的附图标记的情况下,关于那些附图标记的任何讨论应当被解释为适用于其他附图中的所有相同的附图标记。此外,为便于参考在图2A-图2F中提供了标识不同数据流的数据分组的密钥并且帮助理解本文讨论的技术。在图2A-图2F中提供了密钥200以帮助标识在本公开中引用的元件。为便于解释,密钥200应当用于参考数据流X和数据流Y解释图2A-图2F。用于触发PFC的PFC水平的指定也被包括于图2A-图2F中,标识PFC何时将在设备中被触发。
出于说明性目的,图2A-图2F分别示出了交换机B和交换机C的仅仅一个入口端口102和一个出口端口104。在各种实施例中,交换机B和交换机C的入口端口102和出口端口104均包括两个数据缓冲区,正常优先级队列102norm、104norm以及拥塞优先级队列102congest、104congest。在优先级类队列被实现在网络中的情况下,交换机B和C的正常优先级队列102norm,、104norm可以包括多个优先级类队列,每个与一个或多个优先级类相关联。作为非限制性示例,正常优先级队列102b_norm可以包括三个不同的队列:正常低优先级队列;正常中优先级队列;以及正常高优先级队列。在正常操作期间在入口端口102b处接收到数据分组后,交换机B可以标识相关联的类并将数据分组放置在恰当的基于类的队列中。在一些实施例中,每个类优先级队列(即,正常低优先级、正常中优先级、正常高优先级)可以具有专门的拥塞优先级队列(例如,正常低优先级队列/拥塞低优先级队列,正常中优先级队列/拥塞中优先级队列,等等)。为便于讨论,正常优先级队列102norm、104norm应当分别被视为用于未隔离的业务的单个队列(即,未被选择用于隔离在交换机B和C的拥塞优先级队列102congest、104congest中的任何业务分别被放置在交换机B和C的正常优先级队列102norm、104norm中,不管未拥塞的优先级类如何)。
交换机B和C的正常优先级队列102norm、104norm和拥塞优先级队列102congest、104congest可以是与每个交换机的入口端口102和出口端口104相关联的缓冲区队列的集合中的一个或多个缓冲区队列。在一些实施例中,正常优先级队列102norm、104norm和拥塞队列102congest、104congest可以被一起关联为缓冲区对,并且入口端口102和出口端口104可以包括一个或多个缓冲区对。在网络中实现了优先级类队列的情况下,交换机B和C的正常优先级队列102norm、104norm还可以包括多个优先级类队列,每个与一个或多个优先级类相关联。在各种实施例中,交换机B和C的拥塞优先级队列102congest、104congest还可以包括多个优先级类队列,每个与一个或多个优先级类相关联。在一些实施例中,正常优先级队列102norm、104norm的每个优先级类队列可以具有拥塞队列102congest、104congest的相关联的优先级类队列。
正常优先级队列102norm、104norm被配置为在没有检测到拥塞(即,正常操作)时使用的数据缓冲区。在各种实施例中,正常优先级队列102norm、104norm可以包括一个或多个数据缓冲区,并且一个或多个数据缓冲区可以被共同定位在相同的存储器部件上或者每个数据缓冲区可以包括分离的存储器部件。拥塞优先级队列102congest、104congest是被指定为隔离一个或多个流以缓和拥塞的缓冲区存储器的部分。在一些实施例中,拥塞优先级队列102congest、104congest可以是交换机的分离的数据缓冲区部件、与入口端口102相关联的数据缓冲区的专用部分、可用于给定交换机的所有端口并且被配置为用作数据缓冲区的共享存储器池、或其组合。拥塞优先级队列102congest、104congest和正常优先级队列102norm、104norm可以与彼此被共同定位在相同的存储器部件上。
为便于讨论,图2A-图2F将分别(如以上所讨论的)通过将正常优先级队列102norm和正常优先级队列104norm当做单个队列来讨论。这仅仅出于图示目的并且不应当被解释为限制本文公开的技术的范围。在关于包括正常优先级队列102norm、104norm内的多个队列的实施例出现差别的情况下,这样的差别的影响应当被解决。
在正常操作期间,一般不使用拥塞队列102congest、104congest。通过交换机B的入口端口102接收到的分组被提交到正常优先级队列102b_norm。在使用了优先级类的情况下,交换机B可以利用检测到的相关联的优先级类。在各种实施例中,交换机B读取分组报头信息以确定数据流和目的地端点以便应用一个或多个路由表。如图2A中所示出的,交换机B标识在(由不同的阴影框表示的)入口端口102处接收到的两个不同的数据流的分组要被路由通过交换机B的出口端口104,并且因此被排队到与出口端口104相关联的正常优先级队列104b_norm中。每个数据流的分组然后被转发到交换机C的入口端口102,其在接收后决定如何对接收到的数据分组进行排队。该确定过程可以与以上关于交换机B讨论的确定过程相同或相似。如图2A中所图示的,交换机C确定数据分组要被排队在与交换机C的入口端口102相关联的正常优先级队列102c_norm中(即,还没有检测到拥塞情形并且在正常状况下操作继续)。此外,交换机C确定数据流X和数据流Y(由交换机C)进一步被确定为通过交换机C的出口端口104从交换机C被路由到更下游的设备。在一些实施例中,交换机C可以确定将针对特定流的数据分组路由通过不同的出口端口,如下面关于图3解释的。
尽管正常地操作,但是数据分组继续被排队在交换机的每个入口端口和出口端口(诸如关于图1讨论的交换机A-F的一个或多个端口)的正常优先级队列中。然而,当拥塞情形被标识时,可以触发随机化拥塞流控制。各种参数可以用于确定拥塞。所使用的参数的非限制性示例包括:入口端口队列(例如,正常优先级队列102norm、104norm)内的数据的深度或数据分组;随时间的平均入口端口队列深度;入口端口队列被填充的速率;交换机内的总缓冲区利用率;等等。在各种实施例中,多于一个参数被用于确定拥塞是否存在。尽管拥塞被讨论为在出口端口104处发生,但是一般基于“备份”到入口端口102的一个或多个队列中的数据分组来确定检测拥塞。这是出口端口104不在与一个或多个入口端口102正在以与从上游设备接收数据分组的相同速度转发数据分组的指示。
如图2A中所图示的,在交换机C处存在拥塞情形。由于网络中的更下游的一些问题,交换机C的正常优先级队列104c_norm正在开始变得饱和(即,变得完全使用)。由于该拥塞,数据分组正在开始备份在交换机C的正常优先级队列102c_norm处。在各种实施例中,尽管未图示在图2A中,但是也可以影响在交换机C的不同入口端口102处的多于一个正常优先级队列。在这样的实例中,所讨论的随机拥塞隔离被应用到所有受影响的入口端口102。
当(如以上所讨论的,基于备份在入口端口102处的数据分组)检测到在出口端口104处的拥塞时,交换机C随机地确定是否要在入口端口102处隔离新到达的数据分组,以便缓和拥塞。在图4中图示了示例随机拥塞隔离过程400。在操作402处从上游设备接收到新数据分组之后,交换机C可以在操作404处对如在入口端口102处接收到的数据分组应用哈希函数以生成哈希。尽管关于应用哈希函数进行讨论,但是可以在操作404和406处应用其他标识方法。作为非限制性示例,交换机C可以计算校验和、校验数位、或有助用于标识固定大小操作404的数据的任何其他功能。在各种实施例中,交换机C可以独立于是否检测到拥塞而计算针对其接收的每个数据分组的哈希。
在决策406处,交换机C可以针对隔离哈希的列表检查对于所接收到的数据分组的所计算的哈希。隔离哈希的列表是针对交换机C已经选择用于隔离的数据分组的一个或多个哈希的汇集。在各种实施例中,过程400第一次运行时,隔离哈希的列表可以为空或在隔离哈希的列表中没有存储值的某个其他指示。在其他实施例中,如果交换机C下游的交换机也根据本公开的实施例实现拥塞隔离过程,那么隔离哈希的列表可以包含以与下面关于操作422和图2B讨论的方式类似的方式从下游设备(未绘图在图4中)传输到交换机C的隔离哈希。如果找到匹配(即,哈希与隔离哈希的列表中的哈希匹配),那么交换机C可以在操作408处将数据分组排队在拥塞优先级队列102c_congest中。通过将数据分组排队在拥塞优先级队列102c_congest中,交换机C允许未由交换机C选择用于隔离的其他数据流的数据分组通过正常优先级队列102c_norm进行工作,最终通过正常优先级队列104c_norm从出口端口104c被路由出去。在各种实施例中,针对数据分组的所计算的哈希帮助标识隔离哈希的列表内的桶。隔离哈希的列表可以包括许多桶,每个桶与一个或多个计算的哈希相关联。交换机C可以使用所计算的哈希来确定隔离哈希的列表内的桶以确定是否存在匹配。这样的情形可以在许多小数据流(即,要求少量带宽或提供短脉冲的数据的数据流(“老鼠”))是拥塞的主要原因的情况下发生,与由一个或多个大数据流(即,在较长的时间段内利用带宽的大部分的数据流(“大象”))造成的拥塞相反。
用于隔离哈希的列表的实现的非限制性示例可以是布尔数组。布尔数组将编码隔离哈希的列表,对于每个可能的哈希值具有一个元素。在各种实施例中,在该示例中哈希通过将由哈希索引的布尔设置为真而被添加到隔离哈希的列表。其他非限制性实施例可以使用其他数据结构来实现隔离哈希的列表。其他实现方式可以将隔离哈希的列表存储在某个数据结构而非布尔数组中。不管实现如何,隔离哈希的列表提供确定特定哈希是否是隔离哈希的成员的方式。在一些实施例中,交换机C可以对数据分组进行重新分类,将分组标记为处于拥塞优先级类中。
在将数据分组排队在拥塞优先级队列102c_congest中之后,交换机C可以可选地在操作422处将拥塞隔离消息(CIM)发送到交换机B,如由图4的附图标记A所指示的。CIM用于向交换机B通知由于(如在入口端口102c处检测到的)在出口端口104c处形成拥塞,交换机C已经开始隔离一个或多个数据流,并且指示哪些数据流已经被选择用于隔离。在各种实施例中,CIM可以包括由交换机C确定的隔离哈希的列表以帮助交换机B标识正被隔离的流。在一些实施例中,CIM可以包括附加的信息来标识被选择用于隔离的数据流的分组。作为非限制性示例,CIM可以包括数据分组的头N位或字节。除了在操作422处将CIM发送到交换机B(即,由附图标记A所指示的),交换机C返回到选项402并且在新数据分组上重新启动过程400。在操作408处,发送CIM是可选的,因为在各种实施例中,交换机B可能已经意识到与在操作404处计算的哈希匹配的数据分组正在被隔离(即,其已经接收了包含对应的隔离哈希的列表的CIM)。在这样的实施例中,交换机C可以返回到操作402而不前进到操作422。
如果没有检测到隔离哈希的列表内的匹配(即,哈希不同于隔离哈希的列表中的哈希中的任何一个或者隔离哈希的列表为空的/空),那么交换机C在决策410处检查以查看在正常优先级队列104c_norm上的拥塞情形是否存在。如以上所讨论的,当按照与以上关于图1讨论的方式(即,基于在入口端口102c处检测到备份在正常优先级队列102c_norm处的数据分组)类似的方式检测到拥塞时,隔离被提供。尽管图2A-图2F关于正常优先级队列102c_norm处拥塞进行图示和描述,但是将数据分组发送到出口端口104c的交换机C的任何入口端口102c的任何正常优先级队列可以指示拥塞。下面在图3中图示(并且关于该图讨论)这样的情形的示例。
参考回图4,如果在出口端口104c处不存在拥塞(如在正常优先级队列104c_norm处检测到的),那么交换机C可以在操作412处将数据分组排队在正常优先级队列102c_norm中。即,交换机C可以按照正常方式路由和转发数据分组。在各种实施例中,交换机C可以可选地在将数据分组添加到正常优先级队列102c_norm之后在操作422处将CIM发送到交换机B。在一些实施例中,当数据分组被添加到正常优先级队列102c_norm时,交换机C可以不通知交换机B,而是返回操作404并检查下一个接收到的数据分组。在其他实施例中,当在决策410处没有检测到拥塞时,交换机C可以定期地发送CIM。这样的定期CIM可以帮助维持交换机B和交换机C的隔离动作的新鲜度。
如果在决策410处检测到拥塞(例如,针对数据分组的所计算的哈希与哈希的列表中的任何哈希不匹配,但是数据分组已经备份在正常优先级队列102c_norm处),那么交换机C可以在操作414处在入口端口102c处应用随机选择机制以确定数据分组是否将要被选择用于隔离。作为非限制性示例,交换机C可以通过在每个新数据分组被排队在正常优先级队列102c_norm处之前计算针对每个新数据分组的随机生成数和选择概率来执行选择。一旦检测到交换机C中的拥塞情形,对于要排队在入口端口102c处的每个新数据分组,计算随机数,例如在0与1之间的数。另外,对于要排队在入口端口102c处的每个新数据分组,计算概率,其确定新数据分组在那时将被选择用于隔离的几率。在各种实施例中,由0与1之间的数表示概率函数,其中0表示没有几率,并且1表示100%的几率。然后将针对每个新到达的数据分组计算的概率和随机数进行比较。如果随机数小于或等于概率,那么新接收到的数据分组被选择并被排队在拥塞优先级队列102c_congest处。如果随机数大于概率,那么新到达的数据分组不被选择用于隔离而是代替地被排队在正常优先级队列102c_norm中。在其他实施例中,交换机C可以利用随机选择算法和出于其他目的存在于系统内的机制,诸如主动队列管理机制,包括但不限于用于TCP信令的随机早期丢弃(RED)机制或加权的RED(WRED)等等。
在各种实施例中,交换机C可以改变由随机选择机制使用的参数。作为非限制性示例,随机选择开始的最小队列深度阈值(即,隔离选择开始的正常优先级队列102c_norm的最小队列深度)可以被增大或减小,随机选择算法结束的最大队列深度阈值(即,在其处对隔离的需求达到其最大值的最大队列深度)可以被增大或减小,或者两者的组合。其他非限制性示例包括:改变被随机地选择的数据分组的最大概率(例如,关于以上示例算法,将最大概率设置在除了1之外的数);将概率的形状改变为指数地增大而不是线性地增大;或者在确定采样概率时说明缓冲区外部的参数(例如,交换机上的总负载);等等。不同于旨在标识特定拥塞流以用于隔离的当前方法,本文公开的技术的实施例依赖于随机选择,而不管流的性能如何。本公开的技术不依赖于数据流的类型(即,大象、老鼠、等等),也不依赖于需要附加硬件部件和处理能力(诸如成本高的内容寻址存储器(CAM))的任何特定统计。所实现的具体随机选择机制不影响本文中公开的技术的操作。本公开中描述的实施例可利用任何随机选择机制应用。
如果在操作416处数据分组未被随机地选择,那么按照与关于在决策410之后存储的数据分组描述的方式相同或类似的方式,交换机C可以在操作412处将数据分组排队在正常优先级队列102c_norm中。此外,交换机C还可以返回到操作402并且在新接收到的数据分组上再次开始过程400。然而,如果在操作416处数据分组被随机地选择,那么交换机C可以在操作418处将数据分组的哈希添加到隔离哈希的列表。通过将数据分组的哈希添加到隔离哈希的列表,交换机C可以能够当过程400被应用到在交换机C的入口端口102c处从上游设备(如交换机B)接收到的下一个数据分组时标识具有在决策406处的匹配哈希的分组。在各种实施例中,将哈希添加到隔离哈希的列表可以包括将与哈希相关联的布尔数组的位翻转。作为非限制性示例,将哈希添加到布尔数组可以包括翻转由哈希标识的位(即,由哈希标识的桶),信号通知分组与要被隔离的该哈希匹配。在一些实施例中,将哈希添加到隔离哈希的列表可以包括将哈希添加到列出了被选择用于隔离的各种哈希的表。
在操作418处将哈希添加到隔离哈希的列表之后,交换机C还可以在操作420处将数据分组排队在拥塞优先级队列102c_congest中,并且按照与关于操作408讨论的方式类似的方式,交换机C可以将CIM发送到上游设备(例如,交换机B)并且用新接收到的数据分组在操作402处再次开始过程400。
图2B图示了过程400A的可能结果之一。如图2B中图示的,交换机C具有随机地选择的数据流X以隔离以便缓和拥塞。交换机C将与数据流X相关联的数据分组排队在拥塞优先级队列102c_congest中。另外,交换机C将CIM发送到交换机B,向交换机B通知交换机C已经开始隔离与隔离哈希的列表中的哈希和/或指示特定数据流(这里是数据流X)的标识符匹配的数据分组。另外,交换机C可以在其队列中包括一个或多个拥塞隔离(CI)标记。CI标记的包括可以发生于过程400的操作408和412处。CI标记可以用于确保隔离的数据分组不从其相关联的拥塞队列被发送。作为非限制性示例,如图2B中所示出的,交换机C可以将CI标记放置在正常优先级队列102c_norm中的数据流X的第一隔离分组将已经着陆的位置处。匹配的CI标记可以被放置于拥塞优先级队列102c_congest中,在该队列中的第一个隔离分组前面。在各种实施例中,当拥塞优先级队列102c_congest中的CI标记在拥塞队列102c_congest的头部时,来自拥塞优先级队列102c_congest的分组被安装直到正常优先级队列102c_norm中的匹配的CI标记从正常优先级队列102c_congest外出,从而确保数据流X的所有数据分组已经在数据流X的任何隔离数据分组从拥塞优先级队列102c_congest被转发之前从正常优先级队列102c_norm被转发。在各种实施例中,分离的CI标记对(未绘图)可以被放置于正常优先级队列104c_norm和拥塞优先级队列104c_congest中,以确保隔离的数据分组在正常优先级队列104c_norm中的数据分组外出之前未被转发到下游。在其他实施例中,没有CI标记被利用,而是拥塞优先级队列102c_congest、104c_congest可以被配置为直到相关联的正常优先级队列102c_norm、104c_norm已经清空了存储于其中的所有数据分组才转发排队于其中的任何数据分组。在其他实施例中,入口端口102c的队列可以被配置为直到出口端口104c的队列被清空才转发数据分组。
如图2B中所图示的,在用于触发基于优先级的流控制的阈值(PFC水平)被超过之前触发拥塞隔离。在基于优先级的流控制(或其他拥塞减轻方法)之前触发拥塞隔离有助于在需要实现基于优先级的流控制之前使拥塞情形本身解决的可能。在一些情况下,传输某些数据流的短延迟可以导致拥塞问题本身解决,从而消除触发整个拥塞减轻过程的需要。
在接收到CIM之后,交换机B可以开始将匹配的数据分组隔离在拥塞队列104b_congest中。使用隔离哈希的列表和/或标识包含于CIM内的信息(例如,以上关于图4的操作422讨论的数据分组的头N位或字节),交换机B可以标识与由交换机C选择用于隔离的数据分组匹配的数据分组。在图5A和图5B中图示了根据本文中公开的技术的实施例的示例隔离过程500。如图5A中所图示的,过程500在操作502处接收到由下游设备发送的CIM后开始,如关于图4所讨论的。在接收之后,交换机B在操作504处标识包含于CIM中的隔离哈希的列表。在各种实施例中,标识隔离哈希的列表还可以包括标识包含于CIM中的任何其他标识信息。在操作506处,交换机B将来自CIM的所标识的隔离哈希的列表标记为其隔离哈希的列表。以这种方式,交换机B可以开始隔离数据分组。
如图5B中所示出的,在激活交换机B的隔离哈希的列表之后,交换机B可以对以上关于图4讨论的隔离过程400执行变型。操作508-514可以按照与以上关于图4的操作402-408讨论的方式相同或类似的方式进行操作。如果在决策512处没有检测到匹配,那么交换机B可以将数据分组排队在正常优先级队列104b_norm中并且返回到操作508以检查下一个分组。然而,不同于在过程400中,如图5B中所示出的,在各种实施例中,交换机B可以不发送任何CIM。在各种实施例中,交换机B可以仅仅在交换机B在它自己的出口端口104b处检测到拥塞的情况下发送CIM。在一些情形中,在一个交换机处发送分组的短延迟可以足以缓和问题。通过不将CIM发送到交换机B上游的任何设备,能够减少网络内的开销,从而影响解决该情形所需要的网络内的最少数目的交换机的操作。在其他实施例中,交换机B可以在操作506和/或操作514-518之后发送CIM以将隔离传播到上游。在一些实施例中,交换机B可以按照与关于图4讨论的交换机C对过程400的应用(即,交换机B可以在入口端口102b处应用操作508-514以确定是将新接收到的数据分组排队在正常优先级队列102b_norm中还是拥塞优先级队列102b_congest中)类似的方式在入口端口102b处应用操作508-514。
在各种实施例中,当在出口端口104b处(即,交换机C的上游)或者独立地在交换机B的另一出口端口处检测到拥塞时,交换机B可以应用与过程400类似或相同的过程。类似地,在各种实施例中,当交换机C从下游设备接收到CIM时,交换机C可以执行与关于图5A-图5B讨论的过程500相同或类似的过程。
过程400和500仅仅被呈现为说明性示例并且不应当被解释为将本文中公开的技术的范围限制于仅仅那些过程。如本领域普通技术人员将理解的,技术适用于用于标识并标记数据分组用于隔离的其他过程。
在图2C中图示了过程500的一个可能结果。在各种实施例中,交换机B可以使用从CIM中提取的隔离哈希的列表来将与隔离哈希的列表中的哈希中的一个(这里是与数据流X相关联的哈希)匹配的数据分组排队在交换机B的出口104的拥塞队列104b_congest中。当交换机B接收到数据流X的分组时(即,操作508),那些分组能够被排队在拥塞优先级队列104b_congest中,或者,在其他实施例中,排队在拥塞优先级队列102b_congest中。与隔离哈希的列表中的哈希值不匹配的数据分组(即,数据流Y的数据分组)被排队在正常优先级队列102b_norm中;在图示的示例中,仅仅数据流X的分组被隔离在拥塞优先级队列104b_congest中。因此,在基于优先级的流控制(或另一拥塞减轻方法)被触发的事件中,拥塞队列104b_congest能够在不影响正常优先级队列104b_norm的情况下被暂停。然而,在任何拥塞减轻被触发之前,如图2C中所示出的,交换机B可以继续将正常优先级队列104b_norm和拥塞队列104b_congest两者中的数据分组转发到交换机C的入口端口102c。在接收后,交换机C可以执行过程400。在一些实施例中,在交换机B将来自其本机优先级类的数据分组重新分类为拥塞优先级类的情况下,在接收后,交换机C可以标识重新分类并将接收到的数据分组排队在拥塞优先级队列102c_congest中。在其他实施例中,在确定被分配给接收到的数据分组的优先级类之后,在来自交换机B(或任何其他上游设备)的接收到的数据分组被接收到同时标识隔离哈希的当前列表的CIM在运送中的事件中,交换机C可以仍然执行过程400的操作。以这种方式,交换机C可以增大应当被隔离的数据分组被隔离的概率。
如以上所讨论的,在数据流X隔离的情况下,降低了在图2A-图2F的示例中应用的基于优先级的流控制(或其他拥塞减轻方法)的影响。如图2D中所图示的,当PFC水平被超过(正常优先级队列102c_norm和拥塞优先级队列102c_congest中的任一个中)时,基于优先级的流控制机制可以被触发,从而将PFCstart消息发送到交换机B。PFCstart消息可以是当基于优先级的流控制被实现时发送的标准PFC消息,仅仅标识拥塞队列104b_congest而非正常优先级队列104b_norm。因此,因为所选择的流(这里是数据流X)的数据分组不被排队在正常优先级队列102b_norm、104b_norm内,通过该队列的业务可以继续被传输。因此,HOL阻塞问题得到减轻。即,交换机B将暂停将拥塞优先级队列104b_congest中的数据分组传输到交换机C。
当已经解决了拥塞场景时,交换机C可以通知交换机B停止隔离与隔离哈希的列表中的哈希匹配的数据流。如图2E中所图示的,交换机C可以将拥塞矫正消息(CRM)发送到交换机B。在一些实施例中,CRM可以包括隔离哈希的空列表,在其他实施例中,可以包括告知交换机B停止隔离的消息,而在其他实施例中,CRM可以包括交换机B应当停止隔离数据分组的任何其他指示。在一些实施例中,根据基于优先级的流控制方案,CRM可以在PFCresume消息从交换机C被发送到交换机B之前、与其同时或者在其之后被发送。在这样的实施例中,可以与正被实现的拥塞减轻方法分开地控制拥塞隔离。在一些实施例中,CRM可以直到拥塞优先级队列102c_congest为空、拥塞优先级队列104c_congest被清空或两个队列都被清空才被发送。在接收到CRM之后,交换机B可以停止将数据分组排队在拥塞队列104b_congest中,代替将接收到的数据分组排队到正常优先级队列104b_norm中。交换机C可以在CRM被发送到交换机B之前或之后停止隔离。因此,在交换机B停止隔离之后,两个交换机将正常地操作,如图2F中所图示的。
如以上所讨论的,仅出于图示目的,图2A-图2F分别示出了交换机B和交换机C的仅仅一个入口端口102和一个出口端口104。示出每个交换机的仅仅一个入口端口和出口端口纯粹为了便于讨论,并且不应当被解释为限制本公开的主题。关于图2A-图2F的讨论适用于网络设备(诸如关于图1讨论的网络设备)的所有端口。此外,尽管关于仅仅两个数据流进行讨论,但是根据图2A-图2F中图示的示例的实施例不限于仅仅两个流。在各种实施例中,交换机C(即,下游设备)可以在多于两个数据流遍历通过下游设备的给定出口端口的情况下随机地选择两个或更多个数据流以重新分类到拥塞优先级类中。在这样的情况下,CIM可以包括两个或更多个哈希或其他特性,对于随机地选择的数据流中的每个一个哈希。
如以上所讨论的,在各种实施例中,随机地选择的数据流可以通过两个不同的入口端口到达下游设备。图3图示了示例场景,其中根据本文中公开的技术的各种实施例,在两个不同的出口端口102c1和102c2处接收到两个随机选择的数据流。为便于参考,密钥300标识数据流Y、数据流X、数据流Z、以及数据流R。图3示出了用于解释根据本文的实施例需要的元件,并且假设存在未图示在图3中的图2A-图2F的元件。
如图3中所示出的,类似图2A-图2F中的交换机C,交换机C通过入口端口102c1接收数据流Y和数据流X。交换机C还通过入口端口102c2接收数据流R和数据流Z。基于所采用的路由协议,交换机C标识到数据流Y、数据流X、以及数据流Z通过出口端口104c1被转发,并且数据流R通过交换机C的出口端口104c2被转发。如图3中所图示的,与以上图2A-图2F、图4、图5A和图5B的讨论类似,交换机C标识到在正常优先级队列104c1_norm处的拥塞问题,选择数据流X和数据流Z用于隔离并将CIM发送到交换机B,包括标识针对数据流X和数据流Z的数据分组的哈希的隔离哈希的列表。交换机B分别将数据流X和数据流Z排队在拥塞队列104b1_congest和拥塞队列104b2_congest中。交换机C还将数据流X和数据流Z的新到达的数据分组排队在拥塞队列104c1_congest中。当PFC被触发时,交换机B可以停止转发拥塞队列104b1_congest、104b2_congest,同时继续转发数据正常优先级队列104b1_norm、104b2_norm。
在各种实施例中,CIX标记可以被放置在数据流X的第一隔离分组将已经着陆于正常优先级队列102c1_norm中的位置处,另一CIZ标记可以被放置在数据流Z的第一隔离分组将已经着陆于正常优先级队列104c1_norm中的位置处,并且匹配的CIX标记和CIZ标记可以分别被放置于拥塞队列102c1_congest和拥塞队列102c2_congest中、在数据流X和数据流Z的第一隔离分组前面。在一些实施例中,(数据流X和数据流Z的)拥塞优先级数据分组可以被暂停,直到匹配的CIX标记和CIZ标记两者都按照与以上关于图2A-图2F讨论的方式类似的方式外出,使得数据流Y的所有数据分组在拥塞队列104c1_congest中的任何隔离数据分组被转发之前从正常优先级队列104c1_norm被转发。在各种实施例中,数据流X和数据流Z可以以交错的方式从隔离中被释放。例如,如果针对数据流Z的CIz标记两者都外出但是针对数据流X的CIx标记仍然在队列中工作,那么交换机C可以移除隔离哈希的列表中的、标识数据流Z的数据分组的哈希或其他标识符,并将更新的CIM发送到包含仅标识数据流X的隔离哈希的列表的交换机B。在接收到CIM消息后,交换机B可以停止隔离数据流Z数据分组(将那些排队在正常优先级队列102b2_norm中)同时继续将数据流X隔离在拥塞队列104b1_congest中。
如以上所讨论的,在各种实施例中,许多不同的优先级队列可以被包含于交换机的正常优先级队列中,每个优先级队列与一个或多个不同的优先级类相关联。在一些实施例中,可以通过包括针对交换机的正常优先级队列的每个优先级队列的分离的拥塞队列来提供更多的灵活性。作为非限制性示例,除了拥塞优先级类,网络还可以包括高优先级类、中优先级类、以及低优先级类。下游设备可以标识与随机地选择的数据分组相关联的优先级类。在各种实施例中,下游设备可以维持针对正常优先级队列的每个优先级队列的隔离哈希的分离的列表,并且另一决策可以被添加在过程400中的决策406与操作408之间以确定隔离哈希的列表与哪个优先级队列相关联。类似的决策可以被添加在过程500中的决策512与操作514之间。当在这样的实施例中触发了基于优先级的流控制时,PFCstart消息可以指示一个或多个优先级相关的拥塞队列,从而使得一个或多个优先级相关的拥塞队列能够被安装。
在各种实施例中,以上关于图1、图2A-图2F、图3、图4、图5A和图5B讨论的示例随机化拥塞隔离可以由上游设备和/或下游设备的拥塞隔离引擎实现。拥塞隔离引擎可以用硬件、软件、固件、或其组合来实现。作为非限制性示例,拥塞隔离引擎可以将以上讨论的操作中的一个或多个实现在一个或多个电路中。如本文中所使用的,电路可以利用任何形式的硬件、软件或其组合来实现。例如,一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑部件、软件例程或其他机制可以被实现以构成电路。在各种实施例中,本文中描述的各种电路可以被实现为分立电路,或者所描述的功能和特征可以部分地或总体地共享在一个或多个电路之中。即使各种特征或功能性元件可以被单独地描述或声明为分离的电路,但是这些特征和功能性可以被共享于一个或多个常见电路之中,并且这样的描述不应当要求或暗示需要分离的电路来实现这样的特征或功能性。在整体地或部分地使用软件来实现电路的情况下,这样的软件可以被实现以利用能够执行关于其描述的功能性的计算或处理系统(诸如下面关于图7讨论的计算机系统700)来操作。在各种实施例中,在整体地或部分地使用软件来实现电路的情况下,这样的软件指令可以被存储于非瞬态机器可读存储介质中并且可由一个或多个处理部件(诸如以上讨论的处理器类型)执行。
图6是根据本公开的实施例的示例转发设备600。在转发设备600的操作和功能性类似于关于图2A-图2F、图3、图4和/或图5A-图5B讨论的那些的情况下,本描述应当被解释为适用。在各种实施例中,转发设备600可以是网络交换机或实现关于图2A-图2F、图3、图4和图5A-图5B讨论的拥塞隔离过程的其他数据转发设备。给定拥塞场景和网络拓扑,转发设备600可以用作网络内的下游设备、上游设备、或两者。转发设备600包括硬件处理器602。在各种实施例中,硬件处理器602可以类似于关于图7讨论的处理器。在各种实施例中,硬件处理器602可以包括一个或多个处理器。
硬件处理器602被配置为运行存储在机器可读介质604上的指令。机器可读介质604可以是一种或多种类型的非瞬态计算机存储介质。非限制性示例包括:闪速存储器、固态存储设备(SSD);存储区域网络(SAN);可移除存储器(例如,记忆棒、CD、SD卡等);或者内部计算机RAM或ROM;以及其他类型的计算机存储介质。存储在机器可读介质604上的指令可以包括用于执行由所标识的功能体现的功能的各种子指令。例如,类似于关于图2A-图2F讨论的那些和当前方法,指令“标识拥塞”606可以包括用于标识网络通信路径上的拥塞的各种子指令。
以与关于图2A-图2F、图3、图4和图5B讨论的方式类似的方式,指令“在接收到的数据分组上的计算机哈希”608可以包括当在转发设备600的入口端口处接收到每个数据分组时计算针对每个数据分组的哈希的子指令。
指令“生成隔离哈希的列表”610可以包括用于创建如关于图2A-图2F、图3、图4和图5A-图5B讨论的、要使用的隔离哈希的列表的子指令。在一些实施例中,与关于图4和图5A-图5B讨论的方式类似,指令610可以包括用于标识包含于来自下游设备的拥塞隔离消息内的隔离哈希的列表并将所标识的隔离哈希的列表设置为用于转发设备600的隔离哈希的列表的子指令。在各种实施例中,如关于图4和图5A-图5B讨论的,指令610可以包括用于将针对数据分组的计算的哈希添加到隔离哈希的建立列表、添加到隔离哈希的空列表(即,在没有标识到隔离哈希的先前列表的情况下)或其组合的子指令。
与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的方式类似,指令“将计算的哈希与隔离哈希的列表进行比较”612可以包括确定所计算的哈希与隔离哈希中的哈希是否匹配的指令。
与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的类似,指令“将数据分组排队在拥塞队列中”614可以包括用于将接收到的数据分组发送到拥塞队列的子指令。与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的方式类似,指令614的一些实施例可以包括标识拥塞的出口端口并确定是将数据分组排队到受影响的出口端口的拥塞队列中还是接收到数据分组的入口端口的拥塞队列中的子指令。在各种实施例中,与以上讨论的优先级相关的拥塞队列实施例类似,指令614可以包括用于确定在与不同优先级队列相关联的多个拥塞队列中的哪个拥塞队列中对数据分组排队的子指令。
与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的类似,指令“将数据分组排队在正常优先级队列中”616可以包括用于将接收到的数据分组发送到正常优先级队列的子指令。在各种实施例中,与以上讨论的优先级相关的拥塞队列实施例类似,指令616可以包括用于确定在与不同优先级类相关联的多个正常优先级队列中的哪个正常优先级队列中对数据分组排队的子指令。
指令“随机地选择用于隔离的数据分组”618可以包括用于执行关于图2A-图2F、图3、图4和图5A-图5B讨论的随机选择过程的子指令。
按照与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的方式类似的方式,指令“将拥塞隔离消息发送到上游设备”620可以包括用于生成拥塞隔离消息的子指令。在各种实施例中,按照与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的方式类似的方式,指令620可以包括在接收到的数据分组上的每次决策之后、在新数据分组被排队在拥塞队列和/或正常优先级队列中之后、或者当新哈希被添加到隔离哈希的列表时发送拥塞隔离消息的子指令。
按照与以上关于图2A-图2F、图3、图4和图5A-图5B讨论的方式类似的方式,指令“将拥塞矫正消息发送到上游设备”622可以包括生成并发送拥塞矫正消息的子指令。
通过本公开的实施例,可以按照低成本方式来实现拥塞隔离。通过避免跟踪统计或标识特定数据流的需要,没有专用的CAM或其他额外的存储器和/或处理资源来隔离数据流以解决拥塞。
如以上所讨论的,本公开的实施例与基于优先级的流控制方法兼容,从而增强基于优先级的流控制的有效性而不修改实现的基于优先级的流控制方案。本领域普通技术人员将理解基于优先级的流控制和本文讨论的技术是互补功能,而不是分离的。因此,尽管关于启用了PFC的设备进行讨论,但是其不应当被解释为将技术的范围限制于仅仅启用了PFC的网络环境。例如,本文公开的技术可以被使用在采用基于信用的排队技术(例如,无限带)、停止并等待协议(例如,以太网光纤通道(FCoE))或以太网暂停等的网络中。本领域普通技术人员将理解本公开的适用性以避免与拥塞减轻方法相关的问题。此外,本领域普通技术人员将理解,在一些实施例中,本文公开的技术可以代替其他拥塞减轻方法(例如,基于优先级的流控制、基于信用的排队等)被使用。这样的实施例的有效性依赖于普通技术实践人员的实现设计决策。
图7描绘了本文描述的实施例中的各种实施例可以被实现于其中的示例计算机系统700的框图。计算机系统700包括总线702或用于传送信息的其他通信机制、用于处理信息的与总线702耦合的一个或多个硬件处理器704。(多个)硬件处理器704可以例如为一个或多个通用微处理器。在各种实施例中,一个或多个硬件处理器704可以执行非瞬态机器可读指令以执行关于图1、图2A-图2F、图3、图4和图5A-图5B讨论的实施例的各种功能。
计算机系统700还包括主存储器706,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备,其被耦合到总线702以用于存储信息和要由处理器704运行的指令。主存储器706还可以用于在要由处理器704运行的指令的执行期间存储临时变量或其他中间信息。这样的指令在被存储在对处理器704可访问的存储介质中时将计算机系统700提供到被定制为执行指令中指定的操作的专用机器中。
计算机系统700还包括耦合到总线702的只读存储器(ROM)708或其他静态存储设备以用于存储针对处理器704的静态信息和指令。诸如磁盘、光盘、或USB拇指驱动器(闪速驱动器)等的存储设备710被提供并被耦合到总线802以用于存储信息和指令。
计算机系统700还可以包括耦合到总线702的显示器712、输入设备714、和/或光标控件716以用于显示、传送和录入信息和/或命令。在一些实施例中,与光标控件相同的方向信息和命令选择可以在没有光标的情况下经由在触摸屏上接收触摸来实现。计算系统700可以包括实现GUI的用户接口模块,其可以作为由(多个)计算设备执行的可执行软件代码被存储在大容量存储设备中。该模块和其他模块可以例如包括诸如软件部件、面向对象的软件部件、类部件和任务部件的部件、进程、函数、属性、过程、子例程、程序代码的段、驱动程序、固件、微代码、电路装置、数据、数据库、数据结构、表、数组、以及变量。
一般,如本文中所使用的词语“部件”、“引擎”、“系统”、“数据库”、“数据存储库”等等可以是指体现于硬件或固件中的逻辑,或者以诸如Java、C或C++的编程语言编写的、可能具有入口点和出口点的软件指令的汇集。软件部件可以被编译并链接到可执行程序,安装于动态链接库中,或者可以以诸如BASIC、Perl或Python的解释型编程语言来编写。将认识到,软件部件可以可从其他部件或从它们本身调用,和/或可以响应于检测到的事件或中断而被调用。被配置用于在计算设备上执行的软件部件可以被提供在计算机可读介质(诸如压缩盘、数字视频盘、闪速驱动器、磁盘、或任何其他有形介质)上,或者被提供为数字下载(并且可以最初以要求在执行之前安装、解压缩或解密的压缩或可安装格式存储)。这样的软件代码可以部分地或完全地被存储在执行的计算设备的存储器设备上以供计算设备执行。软件指令可以被嵌入固件(诸如EPROM)中。将进一步认识到,硬件部件可以由诸如门和触发器的连接的逻辑单元组成和/或可以由诸如可编程门阵列或处理器的可编程单元组成。
计算机系统700可以使用定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(其结合计算机系统使计算机系统700变成或将该计算机系统编程为专用机器)来实现本文描述的技术。根据一个实施例,本文的技术由计算机系统700响应于(多个)处理器704执行包含于主存储器706中的一个或多个指令的一个或多个序列而执行。在各种实施例中,这样的指令可以类似于关于图6讨论的指令。在备选实施例中,硬接线电路装置可以代替或结合软件指令使用。
如本文中所使用的术语“非瞬态介质”和类似的术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这样的非瞬态介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备710。易失性介质包括动态存储器,诸如主存储器706。非易失性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔的样式的任何物理介质、RAM、PROM、以及EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或卡盒、以及其网络化版本。
非瞬态介质与传输介质不同但是可以结合传输介质使用。传输介质参与在非瞬态介质之间转移信息。例如,传输介质包括同轴线缆、铜线和光纤,包括含有总线702的电线。传输机制还可以采取声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
计算机系统700还包括耦合到总线702的通信接口718以用于通过一个或多个网络链路实现与一个或多个网络的双向通信。例如,通信接口718可以是集成服务数字网络(ISDN)卡、线缆调制解调器、卫星调制解调器、向对应类型的电话线路、局域网(LAN)、广域网、或一种或多种类型的无线通信链路提供数据通信连接的调制解调器。
计算机系统700可以通过(多个)网络、网络链路和通信接口718发送消息和接收数据,包括程序代码。在互联网示例中,服务器可以通过互联网、ISP、本地网络和通信接口718发送针对应用程序的请求代码。
接收到的代码可以在接收到其时由处理器704执行,和/或存储于存储设备710或其他非易失性存储装置中以供稍后执行。
前面部分中描述的过程、方法和算法中的每个可以体现于由包括计算机硬件的一个或多个计算机系统或计算机处理器执行的代码部件中并且由其完全地或部分地自动化。一个或多个计算机系统或计算机处理器还可以操作以支持相关操作在“云计算”环境中或作为“软件即服务”(SaaS)的执行。过程和算法可以部分地或整体地被实现于专用电路装置中。以上描述的各种特征和过程可以独立于彼此被使用,或者可以按照各种方式来组合。不同的组合和子组合旨在落入本公开的范围内,并且某些方法或过程框可以在一些实现中被省略。本文中描述的方法和过程也不限于任何特定序列,并且与其相关的框或状态可以按照合适的其他序列来执行,或者可以被并行执行,或者以某种其他方式来执行。框或状态可以被添加到所公开的示例实施例或从所公开的示例实施例中移除。操作或过程中的某些的操作可以分布于计算机系统或计算机处理器之中,不是仅驻存于单个机器内,而是被部署在多个机器上。
在常见的用法中,除非排他性意义被具体地指示或逻辑上需要,否则术语“或”应当总是在包含性意义上来理解。“或”的排他性意义当例如术语“或”与术语“任一个”配对时(如“A或B中的任一个”中)被具体地指示。作为另一示例,排他性意义也可以通过将“排他性”或“但非两者”附加在项的列表之后(如“A或B,排他性地”和“A和B,但非两者”中)来具体地指示。此外,以单数方式对资源、操作或结构的描述不应当被阅读为不包括多数。诸如“能够(can)”、“可以(could)”、“可能(might)”或“可以(may)”等的条件语一般旨在传达某些实施例包括某些特征、元件和/或步骤,而其他实施例不包括。
除非另行明确陈述,否则本文中使用的术语和短语及其变型应当被理解为与限制性相反的开放式。诸如“常规的”、“传统的”、“正常的”、“标准的”、“已知的”以及类似含义的术语的形容词不应当被理解为将所描述的项限制于给定时间段或在给定时间可用的项,而是相反应当被阅读为涵盖可以现在或在未来的任何时间可用或已知的常规的、传统的、正常的或标准的技术。诸如“一个或多个”、“至少”、“但不限于”或其他类似短语的宽泛词语和短语在一些实例中的存在不应当被阅读为意味着在可能缺少这样的宽泛短语的实例中意图或要求更窄的情况。
Claims (20)
1.一种方法,包括:
由下游设备标识在所述下游设备的出口端口处的拥塞;
由所述下游设备计算针对在所述下游设备的入口端口处所接收到的第一数据分组的哈希;
由所述下游设备将所计算的所述哈希与隔离哈希的列表进行比较,所述隔离哈希的列表包括与被选择为被隔离的数据分组相关联的一个或多个先前哈希;
响应于标识到所计算的所述哈希与所述隔离哈希的列表中的先前哈希之间的匹配,由所述下游设备将所述第一数据分组排队在所述下游设备的所述入口端口的拥塞队列中;
响应于确定在所计算的所述哈希与所述隔离哈希的列表中的所述一个或多个先前哈希中的任何先前哈希之间没有匹配,由所述下游设备对所述第一数据分组应用随机选择机制;以及
响应于根据所述随机选择机制所述第一数据分组被选择用于隔离:
由所述下游设备将所述第一数据分组排队在所述入口端口的所述拥塞队列中;
由所述下游设备将针对所述第一数据分组的所计算的所述哈希添加到所述隔离哈希的列表以创建隔离哈希的更新列表;以及
由所述下游设备将拥塞隔离消息发送到上游设备,所述拥塞隔离消息包括所述隔离哈希的更新列表。
2.根据权利要求1所述的方法,其中标识出口端口处的拥塞包括:由所述下游设备在所述入口端口的正常优先级队列中检测数据分组的备份。
3.根据权利要求1所述的方法,包括:响应于根据所述随机选择机制所述第一数据分组未被选择用于隔离,由所述下游设备将所述第一数据分组排队在所述下游设备的所述入口端口的正常优先级队列中。
4.根据权利要求1所述的方法,包括:响应于根据所述随机选择机制所述第一数据分组未被选择用于隔离,由所述下游设备将拥塞隔离消息发送到上游设备,所述拥塞隔离消息包括所述隔离哈希的列表。
5.根据权利要求1所述的方法,其中所述正常优先级队列包括与所述入口端口相关联的多个正常优先级队列,并且将所述第一数据分组排队在所述正常优先级队列中包括确定所述多个正常优先级队列中的、与所述第一数据分组的数据流相关联的一个正常优先级队列。
6.根据权利要求1所述的方法,其中所述拥塞队列包括与所述入口端口相关联的多个拥塞队列,并且将所述第一数据分组排队在所述拥塞队列中包括确定与所述入口端口相关联的所述多个拥塞队列中的、与所述第一数据分组的数据流相关联的拥塞队列。
7.根据权利要求1所述的方法,包括由所述下游设备生成所述隔离哈希的列表。
8.根据权利要求7所述的方法,其中生成所述隔离哈希的列表包括:
由所述下游设备接收下游拥塞隔离消息,所述下游拥塞隔离消息指示在所述下游设备的转发设备下游的拥塞;
由所述下游设备从所接收的所述下游拥塞隔离消息中标识所接收的隔离哈希的列表;以及
由所述下游设备将所述所接收的隔离哈希的列表设置为所述隔离哈希的列表。
9.根据权利要求1所述的方法,其中所述隔离哈希的列表被编码为布尔数组。
10.根据权利要求1所述的方法,包括由所述下游设备响应于确定在所述出口端口处不再存在拥塞而发送拥塞矫正消息。
11.根据权利要求1所述的方法,其中将所述第一数据分组排队在所述下游设备的所述入口端口的拥塞队列中包括:
由所述下游设备将第一拥塞隔离标记设置在所述入口端口的正常优先级队列中的位置处,在所述位置处所述第一数据分组将已经被放置在所述入口端口的所述正常优先级队列中;以及
由所述下游设备将第二拥塞隔离标记设置在所述入口端口的拥塞队列中的、所述第一数据分组被排队的位置的正前面的位置处。
12.根据权利要求1所述的方法,还包括:
由所述下游设备接收在所述下游设备的第二入口端口处的第二数据分组;
由所述下游设备计算针对在所述下游设备的所述第二入口端口处接收到的所述第二数据分组的哈希;
由所述下游设备将针对所述第二数据分组的所计算的所述哈希与所述隔离哈希的列表进行比较;
响应于确定在针对所述第二数据分组的所计算的所述哈希与所述隔离哈希的列表中的所述一个或多个先前哈希中的任何先前哈希之间没有匹配,由所述下游设备对所述第二数据分组应用随机选择机制;以及
响应于根据所述随机选择机制所述第二数据分组未被选择用于隔离,由所述下游设备将所述第二数据分组排队在所述下游设备的所述第二入口端口的正常优先级队列中。
13.一种网络交换机,包括:
多个入口端口,每个入口端口包括正常优先级队列和拥塞优先级队列;
多个出口端口,每个出口端口包括正常优先级队列和拥塞优先级队列;以及
拥塞隔离引擎,其被配置为:
标识在所述多个出口端口中的第一出口端口处的拥塞;
计算针对在所述多个出口端口中的第一入口端口处所接收到的第一数据分组的哈希;
将所计算的所述哈希与隔离哈希的列表进行比较,所述隔离哈希的列表包括与隔离的数据分组相关联的一个或多个先前哈希;
响应于标识到所计算的所述哈希与所述隔离哈希的列表中的先前哈希之间的匹配,将所述第一数据分组排队在所述第一入口端口的拥塞队列中;
响应于确定在所计算的所述哈希与所述隔离哈希的列表中的所述先前哈希中的任何先前哈希之间没有匹配,对所述第一数据分组应用随机选择机制;以及
响应于根据所述随机选择机制所述第一数据分组被选择用于隔离:
将所述第一数据分组排队在所述第一入口端口的所述拥塞队列中;
将针对所述第一数据分组的所计算的所述哈希添加到所述隔离哈希的列表以创建隔离哈希的更新列表;以及
将拥塞隔离消息发送到上游设备,所述拥塞隔离消息包括所述隔离哈希的更新列表。
14.根据权利要求13所述的网络交换机,其中所述拥塞隔离引擎包括由所述网络交换机的一个或多个处理器可执行的非瞬态机器可读指令。
15.根据权利要求13所述的网络交换机,其中所述第一入口端口的所述正常优先级队列包括与所述第一入口端口相关联的多个正常优先级队列,并且将所述第一数据分组排队在所述第一入口端口的所述正常优先级队列中还包括确定所述多个正常优先级队列中的、与所述第一数据分组的数据流相关联的正常优先级队列。
16.根据权利要求13所述的网络交换机,其中所述拥塞隔离引擎被配置为生成所述隔离哈希的列表。
17.根据权利要求13所述的网络交换机,所述拥塞隔离引擎被配置为:
由所述下游设备接收下游拥塞隔离消息,所述下游拥塞隔离消息指示在所述下游设备的转发设备下游的拥塞;
由所述下游设备从所接收的所述下游拥塞隔离消息中标识所接收的隔离哈希的列表;以及
由所述下游设备将所述所接收的隔离哈希的列表设置为所述隔离哈希的列表。
18.根据权利要求13所述的网络交换机,其中所述第一数据分组是第一拥塞后标识分组,并且其中所述拥塞隔离引擎被配置为生成隔离哈希的空列表。
19.一种系统,包括:
第一转发交换机,其包括:
多个入口端口,每个入口端口包括正常优先级队列和拥塞优先级队列;
多个出口端口,每个出口端口包括正常优先级队列和拥塞优先级队列;以及
第一拥塞隔离引擎,其被配置为:
标识在所述多个出口端口中的第一出口端口处的拥塞;
计算针对在所述多个出口端口中的第一入口端口处所接收到的第一数据分组的哈希;
将所计算的所述哈希与隔离哈希的列表进行比较,所述隔离哈希的列表包括与隔离的数据分组相关联的一个或多个先前哈希;
响应于标识到所计算的所述哈希与所述隔离哈希的列表中的先前哈希之间的匹配,将所述第一数据分组排队在所述第一入口端口的拥塞队列中;
响应于确定在所计算的所述哈希与所述隔离哈希的列表中的所述先前哈希中的任何先前哈希之间没有匹配,对所述第一数据分组应用随机选择机制;以及
响应于根据所述随机选择机制所述第一数据分组被选择用于隔离:
将所述第一数据分组排队在所述第一入口端口的所述拥塞队列中;
将针对所述第一数据分组的所计算的哈希添加到所述隔离哈希的列表以创建隔离哈希的更新列表;以及
发送拥塞隔离消息,所述拥塞隔离消息包括所述隔离哈希的更新列表。
20.根据权利要求19所述的系统,包括第二转发交换机,所述第二转发交换机包括:
多个入口端口,每个入口端口包括正常优先级队列和拥塞优先级队列;
多个出口端口,每个出口端口包括正常优先级队列和拥塞优先级队列;
第二拥塞隔离引擎,其被配置为:
接收由所述第一转发交换机发送的所述拥塞隔离消息;
在所述拥塞隔离消息中标识所述隔离哈希的列表;
将来自所述第一转发交换机的所接收到的所述隔离哈希的列表设置为针对所述第二转发交换机的隔离哈希的列表;
计算针对由所述第二转发交换机的第一入口端口接收到的第一数据分组的哈希;
将针对由所述第二转发交换机的所述第一入口端口接收到的所述第一数据分组的所计算的所述哈希与针对所述第二转发交换机的所述隔离哈希的列表进行比较;
响应于基于所接收的所述隔离哈希的列表而标识到针对由所述第二转发交换机的所述第一入口端口接收到的所述第一数据分组的所计算的所述哈希与所述第二转发交换机的所述隔离哈希的列表中的哈希之间的匹配,将由所述第二转发交换机的所述第一入口端口接收到的所述第一数据分组排队在入口端口的拥塞队列中,所述入口端口被配置为将所述第一数据分组转发到所述第一转发交换机;以及
响应于确定在所计算的所述哈希与针对所述第二转发交换机的所述隔离哈希的列表中的哈希中的任何哈希之间没有匹配,将由所述第二转发交换机的所述第一入口端口接收到的所述第一数据分组排队在所述第一入口端口的正常优先级队列中,
其中在从所述第一转发交换机接收到指示所述出口端口的拥塞队列的基于优先级的流控制消息后,所述出口端口的所述拥塞队列被配置为将所述第一数据分组转发到所述第一转发交换机,所述第二转发设备被配置为停止转发来自所述出口端口的所述拥塞队列的数据分组,所述出口端口的所述拥塞队列被配置为转发所述第一数据分组,同时继续转发来自所述出口端口的一个或多个正常优先级队列的数据分组,所述出口端口的所述一个或多个正常优先级队列被配置为将数据分组转发到所述第一转发设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/297,447 US11349761B2 (en) | 2019-03-08 | 2019-03-08 | Cost effective congestion isolation for lossless ethernet |
US16/297,447 | 2019-03-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111669336A true CN111669336A (zh) | 2020-09-15 |
Family
ID=72146828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010137130.5A Pending CN111669336A (zh) | 2019-03-08 | 2020-03-02 | 用于无损以太网的低成本拥塞隔离 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11349761B2 (zh) |
CN (1) | CN111669336A (zh) |
DE (1) | DE102020105776A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113872872A (zh) * | 2021-09-29 | 2021-12-31 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置及框式网络设备 |
CN114584515A (zh) * | 2020-12-01 | 2022-06-03 | 国际商业机器公司 | 存储区域网络拥塞的端点通知 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11206568B2 (en) * | 2019-09-19 | 2021-12-21 | Realtek Semiconductor Corporation | Router and routing method |
CN113114578B (zh) * | 2021-03-29 | 2022-11-25 | 紫光华山科技有限公司 | 一种流量拥塞隔离方法、装置和系统 |
CN115378955A (zh) * | 2021-05-21 | 2022-11-22 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
US11784935B2 (en) * | 2021-09-14 | 2023-10-10 | Avago Technologies International Sales Pte. Limited | Centralized aggregated elephant flow detection and management |
US11895029B2 (en) * | 2021-12-10 | 2024-02-06 | Nokia Solutions And Networks Oy | Network processor with external memory protection |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100061390A1 (en) * | 2008-09-11 | 2010-03-11 | Avanindra Godbole | Methods and apparatus for defining a flow control signal related to a transmit queue |
CN103516622A (zh) * | 2012-05-24 | 2014-01-15 | 马维尔国际贸易有限公司 | 网络交换机中的灵活队列 |
US20170048144A1 (en) * | 2015-08-13 | 2017-02-16 | Futurewei Technologies, Inc. | Congestion Avoidance Traffic Steering (CATS) in Datacenter Networks |
US20180068059A1 (en) * | 2016-09-08 | 2018-03-08 | Sap Se | Malicious sequence detection for gene synthesizers |
CN108540395A (zh) * | 2018-04-18 | 2018-09-14 | 清华大学 | 无丢失网络中的拥塞判断方法 |
CN109347761A (zh) * | 2018-11-29 | 2019-02-15 | 新华三技术有限公司 | 一种流量转发控制方法及装置 |
CN109412964A (zh) * | 2017-08-18 | 2019-03-01 | 华为技术有限公司 | 报文控制方法及网络装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7907518B2 (en) | 2005-11-08 | 2011-03-15 | Alcatel Lucent | Communication traffic isolation and control |
US8989009B2 (en) | 2011-04-29 | 2015-03-24 | Futurewei Technologies, Inc. | Port and priority based flow control mechanism for lossless ethernet |
US9549342B2 (en) * | 2012-10-29 | 2017-01-17 | Alcatel-Lucent Usa Inc. | Methods and apparatuses for congestion management in wireless networks with mobile HTPP adaptive streaming |
US9160678B2 (en) | 2013-04-15 | 2015-10-13 | International Business Machines Corporation | Flow control credits for priority in lossless ethernet |
-
2019
- 2019-03-08 US US16/297,447 patent/US11349761B2/en active Active
-
2020
- 2020-03-02 CN CN202010137130.5A patent/CN111669336A/zh active Pending
- 2020-03-04 DE DE102020105776.8A patent/DE102020105776A1/de active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100061390A1 (en) * | 2008-09-11 | 2010-03-11 | Avanindra Godbole | Methods and apparatus for defining a flow control signal related to a transmit queue |
CN103516622A (zh) * | 2012-05-24 | 2014-01-15 | 马维尔国际贸易有限公司 | 网络交换机中的灵活队列 |
US20170048144A1 (en) * | 2015-08-13 | 2017-02-16 | Futurewei Technologies, Inc. | Congestion Avoidance Traffic Steering (CATS) in Datacenter Networks |
US20180068059A1 (en) * | 2016-09-08 | 2018-03-08 | Sap Se | Malicious sequence detection for gene synthesizers |
CN109412964A (zh) * | 2017-08-18 | 2019-03-01 | 华为技术有限公司 | 报文控制方法及网络装置 |
CN108540395A (zh) * | 2018-04-18 | 2018-09-14 | 清华大学 | 无丢失网络中的拥塞判断方法 |
CN109347761A (zh) * | 2018-11-29 | 2019-02-15 | 新华三技术有限公司 | 一种流量转发控制方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584515A (zh) * | 2020-12-01 | 2022-06-03 | 国际商业机器公司 | 存储区域网络拥塞的端点通知 |
CN113872872A (zh) * | 2021-09-29 | 2021-12-31 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置及框式网络设备 |
CN113872872B (zh) * | 2021-09-29 | 2023-11-24 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置及框式网络设备 |
Also Published As
Publication number | Publication date |
---|---|
DE102020105776A1 (de) | 2020-09-10 |
US11349761B2 (en) | 2022-05-31 |
US20200287833A1 (en) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111669336A (zh) | 用于无损以太网的低成本拥塞隔离 | |
US11985060B2 (en) | Dragonfly routing with incomplete group connectivity | |
CN107204931B (zh) | 通信装置和用于通信的方法 | |
EP3373519B1 (en) | Active/static path redundancy | |
CN111788803B (zh) | 网络中的流管理 | |
US20150195204A1 (en) | Adaptive routing using inter-switch notifications | |
CN111800351B (zh) | 由交换机进行的拥塞通知分组生成 | |
US20210297350A1 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
US20210297351A1 (en) | Fabric control protocol with congestion control for data center networks | |
US10728156B2 (en) | Scalable, low latency, deep buffered switch architecture | |
US10536379B2 (en) | System and method for control traffic reduction between SDN controller and switch | |
US20210297343A1 (en) | Reliable fabric control protocol extensions for data center networks with failure resilience | |
US12021738B2 (en) | Deadlock-free multicast routing on a dragonfly network | |
US20240056385A1 (en) | Switch device for facilitating switching in data-driven intelligent network | |
CN117014376A (zh) | 拥塞流识别方法、装置、设备及计算机可读存储介质 | |
KR101171463B1 (ko) | 신호 전달 제어 장치 및 그의 제어 방법 | |
NAGESH et al. | Controlling the Packet Loss using Tokens Based Approach for Network Edge |
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 |