CN116915707A - 子往返时间中的网络拥塞控制 - Google Patents
子往返时间中的网络拥塞控制 Download PDFInfo
- Publication number
- CN116915707A CN116915707A CN202310419073.3A CN202310419073A CN116915707A CN 116915707 A CN116915707 A CN 116915707A CN 202310419073 A CN202310419073 A CN 202310419073A CN 116915707 A CN116915707 A CN 116915707A
- Authority
- CN
- China
- Prior art keywords
- switch
- congestion
- data
- links
- packet
- 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
- 238000000034 method Methods 0.000 claims description 61
- 230000004044 response Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 11
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 239000000523 sample Substances 0.000 claims 1
- 239000000758 substrate Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 13
- 230000007246 mechanism Effects 0.000 abstract description 13
- 238000004422 calculation algorithm Methods 0.000 abstract description 11
- 238000013459 approach Methods 0.000 abstract description 10
- 230000015654 memory Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 102100039124 Methyl-CpG-binding protein 2 Human genes 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 102100029143 RNA 3'-terminal phosphate cyclase Human genes 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/265—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets sent by intermediate network 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/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/215—Flow control; Congestion control using token-bucket
-
- 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/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- 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/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- 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/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的各方面提供了拥塞控制机制,以减少数据传输队列,并且通过精确的拥塞信号和减少控制环路延迟来提高链路利用率。拥塞控制系统(CC)系统可以利用返回发送器(BTS)分组优于利用往返时间(RTT)控制环路延迟来更快地对拥塞做出反应。CC系统可以应用主动提速(PRU)来标识流完成,以便及时占用被释放的带宽,例如,当带宽可用时。CC系统可以通过网络演算概念执行供应匹配(SM),以提高链路利用率。与其他办法相比,CC系统可以应用BTS分组、PRU和/或SM的使用中的一些或全部来减少网络时延并改善数据流完成时间。
Description
相关申请的交叉引用
本申请要求申请日为2022年4月19日申请号为63/332,536的美国临时申请的优先权,该申请的公开内容在此通过引用被并入本文。
背景技术
数据中心的工作负载正在向并行、轻量级应用发展,这些应用依赖于可以以高带宽提供低时延的电信网络。相应地,应用级服务水平目标(service level objective,SLO)不断增加,对网络性能的依赖也越来越大。
拥塞控制(Congestion control,CC)指由网络中用于监视网络流量、标识诸如网络瓶颈的拥塞事件以及使向经历拥塞事件的网络位置发送数据的发送器设备响应于拥塞执行一些动作的设备实现的机制。例如,发送器设备可以减慢或停止发送数据,直到拥塞事件解决。
网络内的线路速率正在增加,100Gbps(千兆位每秒)链路变得富余,并且200和400Gbps链路获得越来越多的采用。更高的线路速率增加了流量突发性,因为更多的流被适配在带宽延迟积(Bandwidth-Delay-Product,BDP)内。带宽延迟积是一个或多个链路的容量与其往返延迟时间的积。这种增加亦对网络的拥塞控制机制施加了更大的压力,以维持高链路利用和零个或接近零的分组队列。例如,当一个或多个链路速率从100Gbps增加到400Gbps时,被适配在单个BDP内的远程规程调用的分数可以在一些数据中心中增加18%或更多。这些数据中心的拥塞控制机制预期收敛为以往返时间(round trip time,RTT)时间进行的稳定分配。
然而,当响应被延迟整个RTT时,这些机制无法管理小于BDP的消息。在这些情况下,发送器设备可以一次发送整个子BDP大小的消息,并冒险网络是否能够以零排队时间来递送消息,以满足理想的流完成时间(flow-completion-time,FCT),例如,完成通过网络的流所要求的时间。同时,吞吐量是长的流的FCT的主要贡献因素,因此拥塞控制机制应该尝试充分利用可用链路。因此,即使由拥塞控制系统做出的单个不正确CC决策也可以产生几十微秒或更多的排队和/或引起在多个RTT过程中链路容量的利用不足。
发明内容
本公开的各方面提供了拥塞控制机制,以减少数据传输队列,并且通过精确的拥塞信号和减少控制环路延迟来提高链路利用率。拥塞控制(CC)系统可以利用返回发送器(Back To Sender,BTS)分组而不是往返时间(RTT)控制环路延迟来更快地对拥塞做出反应。CC系统可以应用主动提速(Proactive Ramp-up,PRU)来标识流完成,以便及时占用被释放的带宽,例如,当带宽可用时。CC系统可以执行供应匹配(supply matching,SM),以通过标识网络交换机处带宽“供应”与“需求”之间的不匹配来提高链路利用率。与其他办法相比,CC系统可以应用基于BTS的分组、PRU和/或SM的使用中的一些或全部来减少网络时延并改善数据流完成时间。
本公开的各方面提供了一种用于在网络上进行的拥塞控制的方法,该方法包括:由包括一个或多个处理器的发送器节点沿着一个或多个链路向接收器节点发送一个或多个数据分组;由发送器节点沿着一个或多个链路接收由交换机生成的拥塞通知;计算发送一个或多个数据分组与从交换机接收拥塞通知之间的时间;以及由发送器节点并且在计算出的时间内调整发送器节点与接收器节点之间的用于发送一个或多个数据分组的连接的拥塞窗口。
本公开的各方面提供了一种在网络上进行的拥塞控制的方法,该方法包括:由包括一个或多个处理器的交换机维持与包括交换机的一个或多个链路的可用带宽相对应的零个或多个令牌的计数;由一个或多个处理器接收包括具有设定标志的报头的数据分组,从发送器节点接收的数据分组将沿着一个或多个链路被传输到接收器节点;由一个或多个处理器确定令牌的计数是否为正,响应于确定令牌的计数为正,减小令牌的计数,并且响应于确定令牌的计数不为正,清除标志并增大发送器节点与交换机之间的连接的拥塞窗口;以及在一个或多个链路中向下游节点发送数据分组。
本公开的各方面提供了一种用于在网络上进行的拥塞控制的方法,该方法包括:由包括一个或多个处理器的交换机计算与交换机能在单位时间内序列化的字节数与在单位时间期间到达交换机的字节数之间的差相对应的值;由交换机并且基于与差相对应的计算值来维持供应令牌计数,其中,负供应令牌计数对应于在交换机处排队的分组,并且正供应令牌计数对应于一个或多个链路在交换机处的利用不足;确定字节数之间的差小于一个或多个链路的一个最大传送单元(MTU),并且作为响应,清除被发送到发送器节点的指示在发送器节点正在与之通信的接收器节点处的拥塞事件的拥塞通知的标志,被清除的标志使发送器节点在设置时增大连接的拥塞窗口。
本公开的其他方面包括一种系统,该系统包括:被配置为执行根据本公开的各方面的方法的交换机和/或发送器节点的一个或多个处理器,以及被编码有指令的一个或多个非暂时性计算机可读介质,该指令在由一个或多个处理器执行时使一个或多个处理器执行包括本文所述的用于拥塞控制的方法的操作。
上述和本公开的其他方面可以包括一个或多个特征,诸如以下特征的任何组合。在一些示例中,本公开的各方面以组合的方式一起提供了以下特征中的全部。
计算出的时间小于用于在发送器节点与接收器节点之间发送数据和接收确认的往返时间。
该方法还包括:每计算出的时间间隔调整连接的拥塞窗口仅一次。
一个或多个数据流是沿着一个或多个链路传输的,包括:包括由发送器节点发送到接收器节点的一个或多个数据分组的第一流,并且其中,该方法还包括:计算测量第一流贡献的对一个或多个链路的拥塞占一个或多个链路上的拥塞总量的比例的因子;接收在交换机处维持的数据队列的当前队列占用率;以及至少基于该因子、当前队列占用率及计算出的时间来调整拥塞窗口。
该方法还包括:生成多个数据分组中的数据分组的报头,该报头包括指示该数据分组是多个数据分组中所传输的初始数据分组的第一标志,并且还包括规定要在多个数据分组中传送的数据量的数据;以及向交换机传输多个数据分组。
多个数据分组中的数据分组是第一数据分组,并且其中,该方法还包括:生成多个数据分组中的第二数据分组的报头,该报头包括指示第二数据分组是多个数据分组中的最后一个数据分组的第二标志;以及传输第二数据分组。
该方法还包括:由包括一个或多个处理器的交换机维持与包括交换机的一个或多个链路的可用带宽相对应的零个或多个令牌的计数;由交换机接收包括具有设定标志的报头的数据分组;由交换机确定令牌的计数是否为正,响应于确定令牌的计数是非零的,减小令牌的计数,以及响应于确定令牌的计数为零,清除标志并增大发送器节点与一个或多个处理器之间的连接的拥塞窗口;以及在一个或多个链路中向下游节点发送数据分组。
该方法还包括:由交换机维持对应于通过连接的数据的第一流接收的分组的计数;由交换机接收指示要在第一流中传输的数据的总量的数据传送量;由交换机并且至少基于所接收的数据传送量来计算完成第一流的估计时间;以及在完成第一流的估计时间之时或之后,由交换机增大沿着一个或多个链路的不同于第一流的一个或多个其他流的连接的相应拥塞窗口。
所接收的数据分组形成从发送器节点的远程规程调用(RPC)的一部分,并且其中,该方法还包括:由交换机接收所接收的数据分组中的第一分组的报头中指示第一分组是否是作为RPC的一部分传输的初始分组的标志,其中,RPC的所接收的数据分组在大小上共同小于一个或多个链路的带宽延迟积(BDP);以及由交换机仅当指示第一分组是初始分组的标志被清除时增大令牌的计数。
该方法还包括:由交换机接收所接收的数据分组中的第二分组的报头中指示第二分组是RPC的所传输的最后一个分组的标志;以及当第二分组的报头中的标志被设定时增大令牌的计数,否则减小令牌的计数。
该方法还包括:由交换机计算与交换机能在单位时间内序列化的字节数与在单位时间期间到达交换机的字节数之间的差相对应的值;由交换机并且基于与差相对应的计算值来维持供应令牌计数,其中,负供应令牌计数对应于在交换机处排队的分组,并且正供应令牌计数对应于一个或多个链路在交换机处的利用不足;由交换机确定字节数之间的差小于一个或多个链路的一个最大传送单元(MTU),并且作为响应,清除被发送到发送器节点的拥塞通知的标志,被清除的标志使发送器节点在设置时增大连接的拥塞窗口。
该方法还包括:从供应令牌值中减去一个或多个链路的MTU。
附图说明
图1是根据本公开的各方面的实现CC系统的示例网络的框图。
图2A示出了当不维持常设队列时一个或多个链路的反应性提速。
图2B示出了根据本公开的各方面的当不维持常设队列时一个或多个链路的主动提速。
图3是根据本公开的各方面的网络的节点上的CC系统和网络的交换机的示例实现方式的框图。
图4是对比基于确认的反馈与基于BTS的反馈的框图。
图5是根据本公开的各方面的基于BTS的反馈拥塞控制的示例过程的流程图。
图6是根据本公开的各方面的用于拥塞控制的基于BTS的反馈的另一示例过程的流程图。
图7是根据本公开的各方面的用于执行用于拥塞控制的PRU的示例过程的流程图。
图8是根据本公开的各方面的用于拥塞控制的供应匹配的示例过程的流程图。
图9是用于实现CC系统的示例环境的框图。
具体实施方式
概述
本公开的各方面提供了拥塞控制机制,以减少数据传输队列,并且通过精确的拥塞信号和减少控制环路延迟来提高链路利用率。在一些实现方式中,拥塞控制系统(CC)系统可以利用返回发送器(BTS)分组优于利用往返时间(RTT)控制环路延迟来更快地对拥塞做出反应。往返时间指发送器设备在网络上向接收器设备发送消息并接收确认的时间。CC系统可以应用主动提速(PRU)来标识流完成,以便及时占用被释放的带宽,例如,当带宽可用时。本说明书中的数据流(“流”)可以指在网络的节点之间或在不同网络内的节点之间的数据传输。在其他示例中,CC系统可以执行供应匹配(SM)以提高链路利用率。与其他办法相比,CC系统可以应用BTS分组、PRU和/或SM的使用中的一些或全部来减少网络时延并改善数据流完成时间。
如本文所述的CC系统可以提供关于网络上拥塞的位置和严重性的细粒度反馈,以避免对拥塞的过度反应或反应不足。CC系统可以正确地接收沿着受监视网络的瓶颈的确切状态,以便正确地在拥塞期间降速并在利用不足期间提速。瓶颈的这种拥塞状态可以使用诸如网络中一节点处的当前队列占用率和/或链路利用率的测量的遥测数据来测量。因此,网络上充当终端主机的节点可以计算在不产生拥塞的情况下可以注入网络的分组的确切数量。
CC系统可以在网络交换机设备(“交换机”)上实现。如本文更详细描述的,CC系统可以访问由通过可编程数据平面表征网络的交换机接收的数据。数据平面可以指被配置用于发送和接收网络数据的网络的设备。例如,CC系统可以利用作为其数据平面的一部分的可编程交换机来提供具有子RTT延迟的高线路速率的拥塞控制。
附加地或替代地,如本文所述的CC系统可以减少控制环路延迟优于其他办法。控制环路指拥塞事件的标识,例如,网络上的瓶颈和来自网络上的到达事件的网络位置的发送器设备的反应。控制环路延迟指拥塞事件或拥塞事件的标识与由到达事件的网络位置的发送器设备做出的反应或行动之间的延迟。本公开的各方面提供用于将控制环路延迟减少至子RTT水平。
在由拥塞控制机制实现的具有RTT或更长的延迟的控制环路中,发送器设备发送分组的窗口,观察由接收器在分组的另一窗口上提供的反馈,例如,拥塞通知、利用不足反馈等,以及调整拥塞窗口。
拥塞窗口指设备或节点将在某个时间通过网络发送两个节点之间的连接的数据的最大量。沿着任一方向的每个连接均与相应的拥塞窗口相关联。也就是说,节点可以创建多个连接,并且每个连接都具有其自己的拥塞窗口。连接是在一对节点之间的。同一对节点亦可以具有多个连接。连接的每个方向都具有其自己的拥塞窗口,例如,每个连接都具有两个拥塞窗口,每个方向一个。如本文所述,CC系统100可以调整在每个连接和每个方向的基础上调整拥塞窗口。
相比之下,CC系统可以使用具有子RTT延迟的反馈,并且主动地对流提速或降速以占用可用带宽。每分组的决策或反应可以有助于限制拥塞信号中的噪声的影响。通过使用网络上的交换机而不是终端主机,终端主机不会对拥塞的严重性和确切位置或竞争流的数量做出隐式估计。从做出估计中的释放将终端主机从手动调谐的硬编码参数和嘈杂的反应中解放出来。
本公开的各方面可以提供至少以下技术优势。诸如NVMe和分布式机器学习的数据中心应用可以通过本文描述的通过拥塞控制技术减少时延来改善。如本文所述的拥塞控制系统可以将控制环路延迟减少至网络上的往返时间(RTT)以下。通过如本文所述减少控制环路延迟,CC系统可以更好地监测并解决当前和未来网络上的拥塞,这些网络具有不断增加的链路速率以及随之而来的更大的BDP。已经观察到,对于具有不断增加的链路速度的网络来说,即使是拥塞机制的单个RTT的延迟也可能太长而无法容忍。
CC系统可以在发送器节点与接收器节点之间以子RTT实现控制环路。与基于RTT的控制环路相比,拥塞可以更快且以恒定速率得到管理,其中两个设备之间的RTT可以随着网络上的拥塞而增加。拥塞信号可以以更大的粒度得到管理,例如,精确的队列占用率,以用于每分组确定拥塞控制反应。控制环路延迟还通过在被拥塞的交换机处生成反馈并直接将它们发回发送节点来减少。此外,控制环路延迟通过为诸如流的完成的可预见事件主动地做出决策来减少。
如本文所述的CC系统,并且在事件发生之前主动地计入网络上的瓶颈或其他拥塞事件。CC系统随后可以在队列占用率达到连接所经过的一个或多个链路的BDP之前,开始减小两个设备之间的连接的拥塞窗口。相比于根据较长RTT管理控制环路的办法,减少的控制环路时间亦减轻拥塞控制机制对过期信息的依赖性。CC系统对于各种各样不同的流大小来说都是稳健的,例如,对于可能要求将通过网络传输并且潜在地引起拥塞的不同大小的流。CC系统还可以在具有非可编程与可编程交换机的组合的网络中实现,并且在一些示例中与拥塞控制的其他端到端办法一起实现,以计入交换机硬件功能性的差异。
示例系统
图1是根据本公开的各方面的实现CC系统100的示例网络105的框图。CC系统100可以至少不完全地在网络的一个或多个节点及一个或多个交换机上实现。例如,CC系统100可以被实现为主机节点(例如,支持网络的计算设备)的网络接口控制器或传输层的一部分。网络可以具有各种各样拓扑结构中的任何一种,例如,哑铃形拓扑结构、星形拓扑结构等。网络105的组件以虚线框示出。组件包括由链路115连接到交换机120的节点110。节点125表示网络105外与节点110通信的节点。在各种示例中,网络105的组件可以在一个或多个设备上及在一个或多个物理位置实现。
一个或多个链路可以携带节点之间的一个或多个连接。一个或多个链路可以是有线的或无线的,并且可以由一个或多个链路实现的示例通信技术如本文参考图9所述。换句话说,每个节点可以共享与另一个节点的多个连接。节点可以是任何形式的计算设备,例如,个人用户计算设备、处理器、可穿戴设备、服务器等。节点亦可以是另一节点与设备的网络之间的中间设备。例如,节点可以是去到通过该节点与网络通信的不同网络的网关。位于网络105边缘的节点可以被称为终端主机。数据可以根据各种各样不同的通信协议中的一个或多个(诸如传输控制协议(TCP))、沿着一个或多个链路进行通信。可以使用的其他示例协议包括以太网远程直接存储器访问(RoCE)、QUIC及TCP的变型或其他协议等。
网络交换机设备120(“交换机”)可以是网络上被配置用于路由网络内部或外部的网络流量的一个或多个设备中的一个。交换机120可以至少不完全地与CC系统100进行编程。在一些示例中,交换机120被硬编码以实现本文描述的CC系统100的各方面,例如,通过硬件、固件和/或软件的组合。CC系统100可以在不同类型的交换机的可编程数据平面上实现,包括被配置为在其入口管线中提供出口端口的队列占用率的交换机。
交换机120可以跨各种各样不同的尺度收集和/或测量各种各样不同类型的数据。例如,交换机120可以输出自定义控制信号以以不同的尺度报告遥测数据,例如,以纳秒尺度。由交换机120接收的数据可以通过一个或多个数据平面进行访问,例如,根据预先确定的接口,以便以编程方式访问由交换机120接收的数据。CC系统100可以管理网络105中的拥塞的流,而不依赖于端到端测量来检测有瓶颈的链路处的拥塞。反而,CC系统100可以至少不完全地在交换机120上实现,以用于接收精确的遥测数据和可通过交换机120的一个或多个数据平面访问的其他数据。用于对交换机120进行编程的示例编程语言是P4。
交换机120可以实现分别用于接收和发送数据的入口管线和出口管线。除了根据本公开的各方面对管线的修改之外,交换机120还可以在用于对数据进行调度、优先级排序及排序以用于从并且向网络105的各个节点接收、处理及发送的任一管线中实现各种各样特征中的任何一个。管线可以通过软件、硬件、固件或前述的某一组合来配置。两个管线都可以通过交换机120上的对应入口和出口端口传递数据。
控制回路可以被分解为两个元素,反馈延迟和观察时段。对于由发送器发送的分组,反馈延迟是接收任何反馈的时间。观察时段是在调整拥塞窗口之前收集反馈的时间间隔。如目前所描述的,CC系统100可以减少反馈延迟和观察时段两者,例如,减少至子RTT,并且在一些示例中,减少至直到网络105上可达到的绝对最小值。
反馈延迟
CC系统100可以收集用于在调整网络上的拥塞窗口中使用的至少两个类型的反馈。一个类型的反馈是拥塞通知,并且第二类型的反馈是利用不足反馈。
拥塞通知指当CC系统100接收指示或者观察到拥塞事件已经发生时。拥塞事件的定义可以变化。例如,拥塞事件可以被定义为交换机中的一些队列以超过预先确定的速率的速度增长到预先确定的阈值以上。在一些示例中,如果预先确定的数量的分组在节点处放弃,则可能发生拥塞事件。接收器节点向发送器节点发送拥塞通知的确认的时间是一个RTT。CC系统100可以在其已经接收拥塞通知之后,开始对拥塞事件做出反应,例如通过排出被拥塞的节点的队列。当通知本身被困在从被拥塞的节点发送的消息的拥塞队列中时,拥塞通知可以被进一步延迟。拥塞通知中的较小延迟可以减轻拥塞,至少因为CC系统100可以更快地对拥塞事件做出反应。拥塞链路或节点与发送器节点之间的绝对最小距离是两者之间的直接路径,例如,不经过接收器节点。
延迟亦可以基于网络内拥塞事件的位置来变化。例如,在基于RTT的控制环路中,当拥塞通知被接收器设备背负(“接收器延迟”)时,例如当网络交换机从交换机的出口管线向发送器设备直接发送通知(“出口延迟”)时,延迟可能更高。作为又一示例,出口延迟和接收器延迟两者都可以大于通知在交换机的入口管线处生成时的延迟(“入口延迟”),其中通知是在分组到达交换机时立即生成的。
CC系统100通过直接从拥塞事件(例如,网络中的瓶颈)路由拥塞通知来解决拥塞通知延迟,而不将通知本身排队在拥塞队列中。换句话说,对于将由网络中经历拥塞事件的一个或多个链路或节点发送的数据的拥塞队列,CC系统100可以使交换机将被拥塞的组件与发送器节点连接,并且在任何其他数据传输之前自动给发送器节点通知拥塞事件。
利用不足反馈
CC系统100可以用于调整拥塞窗口的另一个类型的反馈是网络的可用链路的利用不足反馈。流完成和流到达事件指当流完成并到达网络中的一个或多个链路时。当流完成时,在充分利用的链路上,例如,以其可用带宽或接近其可用带宽使用的一个或多个链路,如果一个或多个链路亦经历零排队,例如,如果一个或多个链路没有维持数据的常设队列来传输和填补利用不足的链路,则该一个或多个链路可能变得利用不足。随着网络上的流量变得更加动态,例如,随着更频繁和不规则的流完成和到达事件,总的网络利用率因在一个或多个链路上的过去的流的完成与新的流的到达之间的这些瞬时链路利用不足而减少。
图2A和图2B比较了在一个或多个链路上的过去的流完成后新的流到达的反应性提速和主动提速。
图2A示出了当不维持常设队列时一个或多个链路的反应性提速。即使当维持常设队列时,如果沿着一个或多个链路的流的数量的改变随时间而变化,则如果排队的数据传输元素的数量不与流的数量的改变成比例,利用不足仍然可能发生。此外,一个或多个链路上的数据传输增加的速率亦可能贡献更长的利用不足时间,同时一个或多个链路被重新填充有来自常设队列的数据。管理常设队列大小还要求平衡传输之前被存储在常设队列中的数据的排队时间。这种平衡可能导致排队与利用不足之间的振荡。用于使用手动调谐的参数来限制拥塞窗口的减少的其他办法还花费更长的时间以在流量完成和开始时稳定一个或多个链路的理想充分利用。
在点A1处,发送器一的最后一个分组被传输。在点A2处,生成了交换机的第一利用不足反馈。在点A3处,发送器2检测利用不足,并且然后在点A4处,开始提速。如图2A所指示的,存在利用不足的时段。
图2B示出了根据本公开的各方面的当不维持常设队列时的一个或多个链路的主动提速。本公开的各方面提供了一种CC系统,该CC系统被配置为足够早地检测流完成,以主动地提速向一个或多个链路的新的流的添加,以减少或消除利用不足延迟。
在点B1处,根据本公开的各方面,交换机被发送器1通知其接近完成。在点B2处,交换机通知发送器2关于接近完成。在点B3处,发送器2检测未来利用不足,并且在点B4处,开始提速。
发送器节点可以在事件发生之前信号通知流完成事件,以隐藏提速的时延并避免利用不足。以这种方式,CC系统100可以在触发拥塞事件(诸如拥塞队列发生并被标识之前)开始解决拥塞或利用不足。CC系统100可以在每分组基础上为接收到的反馈做出拥塞窗口调整决策。
观察时段
除了反馈延迟之外,对于基于窗口的数据中心拥塞控制方案,总的控制环路延迟亦可以受到影响,例如,受到RTT或更多的影响。在基于窗口的方案中,一旦发送器节点调整其拥塞窗口(cwnd),对拥塞窗口的下一次调整仅发生在RTT或更多之后,以防止对同一拥塞事件作出反应多次。调整之间的这种附加延迟被称为观察时段。
将观察时段设定为至少一个RTT所产生的一个问题是,它去除关于一个或多个链路的瞬时负载在观察时段内的动态程度的信息。对信息的这种去除影响CC机制在调整去到被拥塞的节点或链路的流中的准确性。准确性受到影响的一个原因是因为发送器节点可以接收在观察时段期间关于拥塞事件的严重性来更新它的反馈。因为观察时段是在最大的一个RTT上,所以发送器节点被迫在观察时段结束之后才对拥塞事件做出反应,从而引起不必要的延迟。
为了解决本文相对于由基于RTT的控制环路引起的利用不足和baked-in延迟描述的问题,本公开的各方面提供了一种CC系统,该CC系统被配置用于基于返回发送器(BTS)的反馈、主动提速(PRU)和/或供应匹配(SM)。使用基于BTS的反馈,CC系统100将拥塞通知延迟减少至其绝对最小值。使用PRU,CC系统可以为预见的利用不足事件虚拟地设定零反馈延迟。使用SM,CC系统可以从不可避免的利用不足事件中恢复。在不同的示例中,如本文所述的CC系统可以以不同的组合实现基于BTS的反馈、PRU和/或SM中的一些或全部。
为了实现基于BTS的反馈、PRU和/或SM,CC系统100可以实现本文相对于表1提供的示例报头结构。报头可以伴随通过由CC系统100监测和管理的网络传输的数据的分组。
表1
表1示出了具有十一个字段的示例报头,尽管字段的数量和它们的数据类型可以因实现方式到实现方式不同,例如,更多或更少的字段要求更多或更少的数据位或字节来存储。至少不完全地实现CC系统100的网络的交换机可以生成具有如表1中的报头的分组,例如,以信号通知拥塞。
图3是根据本公开的各方面的网络的节点305、310上的CC系统100和网络的交换机315的示例实现方式的框图。组件305、310及315中的每一个可以至少不完全地实现CC系统100。节点305和310可以分别实现网络接口控制器320和325,具有用于沿着一个或多个链路维持一个或多个连接的一个或多个端口。如本文所述,发送器节点305可以生成和发送具有数据有效载荷和包括各种各样不同信息的报头(例如,如所描述的具有表1中定义的示例报头的字段)的分组,例如,分组330。
节点305、310可以既接收又发送常规确认335。节点305、310还可以接收本文更详细地描述的由交换机315生成的基于BTS的分组340。
节点305、310可以生成和存储流数据345,该流数据345可以包括被附加到作为给定流的一部分发送的分组的元数据。元数据可以包括被存储在每个数据分组的报头中的数据,例如,标志,诸如第一个和最后一个窗口标志、增大(INC)标志,时间戳等。
交换机315可以维持缓冲区350以及用于管理本文描述的信息的不同片段的数组352、354、356、358,以用于实现基于BTS的反馈、PRU和/或SM中的一个或多个。例如,数组352存储与传输不同流的连接相对应的各种队列的队列大小。数组354存储被用作如本文所述的用于拥塞控制的PRU的一部分的PRU令牌。数组356存储作为如本文所述的用于拥塞控制的SM的一部分的供应令牌。数组358存储接收到的分组的到达时间。队列360是由交换机315针对相应的不同连接维持的,入队或离队的分组作为流的一部分沿着该连接行进。
表2示出了根据本公开的各方面的由交换机实现的示例算法。
表2
基于返回发送器(BTS)的反馈
图4是对比基于确认的反馈与基于BTS的反馈的框图。ACK环路405从发送器节点410发送分组开始,该分组在交换机414处的队列412中排队。接收器节点415将确认发回发送器节点410。相比之下,使用基于BTS的反馈,BTS环路420是发送器节点410和接收器节点415之间的交换机414与发送器节点410之间的最短可能路径。基于BTS的分组亦被优先级排序先于队列410中的其他分组,以进一步减少反馈延迟。
CC系统100可以为在交换机处的队列占用率大于或等于预先确定的阈值时到达的每个数据分组生成基于BTS的分组,例如,相对于表1示出的算法中的CCTHRESH。预先确定的阈值可以是给定链路的最大传送单元(MTU)。为了防止沿着一个或多个链路的多个交换机生成基于BTS的分组,当交换机第一次为接收到的数据分组生成基于BTS的分组时,交换机可以设置标志,例如,如表1所示的DEC标志。当设置了该标志时,沿着一个或多个链路的后续交换机将不为该同一分组生成另一个基于BTS的分组,例如,如表1所示的算法中的例如第5行和第10行所示。通过消除重复的基于BTS的分组,CC系统100一次最多管理其数量等于网络中数据分组的数量的基于BTS的分组。基于BTS的分组的引入对网络性能的影响是可忽略不计的,至少因为分组的大小和分组的量不超过网络上的传输中的数据分组的数量,例如,因为没有一个以上的基于BTS的分组被生成用于数据分组。
为了生成基于BTS的分组,交换机可以将数据分组镜像到其输入端口或连接,同时将原始分组沿着一个或多个链路转发。镜像配置可以使用查找表来确定,该查找表与分组的入口端口相匹配,并且选择相关联的镜像会话。如在交换机上实现的CC系统100可以被配置为修剪镜像的分组,以去除有效载荷。源/目的地址、端口及流标识符可以互换。CC系统100可以在自定义报头中设置标志,例如,如表1所示定义的,以指示分组是基于BTS的分组。
基于BTS的分组的效果对于所有交换机来说可以是相同的,例如,从而引起交换机的拥塞窗口减小一个或多个分组大小。如果存在多个被拥塞的交换机,则发送器设备接收由第一流引起的拥塞的基于BTS的分组,但是减小与每个流相对应的连接的拥塞窗口有助于减轻所有流上的拥塞。
如本文所述的生成基于BTS的分组的交换机可以将附加元数据添加到报头,该报头被戳盖有交换机的当前队列占用率,以及一个或多个链路的容量作为拥塞的严重程度的度量。当原始数据分组从其被发送的发送器设备接收对应的基于BTS的分组时,该发送器设备可以运行用于调整对应连接的拥塞窗口的决策逻辑,如参考表2的算法中的示例描述的。
在一些示例中,CC系统100除了以子RTT延迟执行拥塞窗口调整之外,还可以继续提供每RTT一次的拥塞窗口调整。
表3示出了至少不完全地实现CC系统100的发送器设备如何可以被配置为处置拥塞窗口调整的示例算法。
表3
首先,如第2行所示计算rttbts。rttbts是传输对应的数据分组与接收对应的基于BTS的分组之间的时间。这是由CC系统100计算的拥塞通知延迟,它比发送器与接收器设备之间的RTT短。接下来,计算reaction_factor,它是测量从其接收分组的给定流对当前拥塞负责多少时间的因子。根据本公开的各方面配置的交换机可以在存在拥塞时在不考虑流的情况下生成基于BTS的分组。该因子的示例计算示出在第3行。将该因子(reaction_factor)乘以计算出的RTT(rttbts)得出针对给定流要被排出的目标排队量。目标队列(targetq)是发送器节点可以增大或减小的发送器节点的目标队列大小。由于所有流目标在于仅排出它们所负责的,例如,贡献于一个或多个链路处的拥塞的,因此也保持了公平性。
计算以找到由发送器设备进行的两个连续决策之间的最小时间间隔。确定该时间间隔防止了由于交换机发送拥塞通知而造成的过度反应,直到发送器节点的拥塞窗口改变的影响传播到下游交换机。因此,例如,如果目标队列是1个分组,则发送器节点应该在它在最后一个rttbts中还未这样做时才仅减小其拥塞窗口。然而,如果队列较长,发送器节点可以执行更频繁的增大或减小,例如,保证在一个rttbts中总减小等于目标队列大小。
图5是根据本公开的各方面的基于BTS的反馈拥塞控制的示例过程500的流程图。执行过程500的交换机可以向被适当地配置有CC系统的发送器节点提供基于BTS的反馈拥塞,例如,如本文参考表3中的算法2以及本文中的图6的过程600所描述的。
根据方框510,至少不完全地实现CC系统的交换机标识网络上的拥塞事件,其中,将被传输的数据分组被置于由交换机维持的队列中。如本文参考基于BTS的反馈所述,CC系统可以基于网络流量相对于不同阈值(例如,阈值响应时间、阈值排队时间等)的比较来标识拥塞事件,诸如瓶颈。
根据方框520,交换机在发送器节点与拥塞节点之间发送拥塞通知,而不将拥塞通知排队。交换机可以向发送器节点发送拥塞通知。如图4所示,BTS环路420比ACK环路405短,从而允许更快地向发送器节点410通知拥塞。此外,通过不将拥塞通知排队在由交换机维持的队列上,例如图4中的交换机410,拥塞通知本身就不因被报告的拥塞而延迟。
在一些示例中,交换机接收数据分组,并且确定该分组的接收器节点正在经历拥塞事件,例如,拥塞节点。作为响应,交换机生成交换机处的拥塞通知,并且从交换机向发送器节点发送通知,例如图4的BTS环路420。
在一些示例中,网络中发送器节点与拥塞节点之间的一个或多个链路包括多个交换机。可以仅发送来自多个交换机中的一个交换机的一个拥塞通知,而不是针对同一拥塞事件的多个通知。如参考基于BTS的反馈所述,多个交换机可以检查分组上的专用标志的状态,以确定该分组的对应拥塞通知是否已经由上游节点发送。
在一些示例中,沿着一个或多个链路的交换机中的每一个与一个或多个相应的拥塞窗口相关联。这些拥塞窗口可以各自与在一个或多个链路内维持的交换机与发送器节点之间的相应连接相关联。沿着一个或多个链路的交换机可以响应于拥塞事件将每个拥塞窗口减小一个或多个分组大小。
图6是根据本公开的各方面的用于拥塞控制的基于BTS的反馈的另一示例过程600的流程图。
根据方框610,发送器节点沿着一个或多个链路向接收器节点发送一个或多个数据分组。
根据方框620,发送器节点沿着一个或多个链路接收由交换机生成的拥塞通知。如本文参考图4至图5所述,拥塞通知可以由交换机沿着一个或多个链路生成,例如,根据基于BTS的反馈环路。
根据方框630,发送器节点计算发送一个或多个数据分组与从交换机接收拥塞通知之间的时间。如本文参考表3所述,发送器节点可以计算rttbts。计算出的时间可以小于用于在发送器节点与接收器节点之间发送数据和接收确认的往返时间,例如,如图4所示的ACK环路与BTS环路之间的差。
根据方框640,发送器节点在计算出的时间的间隔内调整用于在发送器节点与接收器节点之间发送一个或多个数据分组的连接的拥塞窗口。如本文参考表3所述,拥塞窗口可以根据计算出的目标队列大小来增大或减小。
在一些示例中,一个或多个数据流是沿着一个或多个链路传输的,包括具有由发送器节点发送到接收器节点的分组的第一流。发送器节点还可以计算第一流贡献的对一个或多个链路的占一个或多个链路上的拥塞总量的比例的因子。例如,发送器节点可以如参考表3所述计算reaction_factor。发送器节点可以接收在交换机处维持的数据队列的当前队列占用率。至少基于该因子、当前占用率及计算出的时间,发送器节点可以调整拥塞窗口,例如,用表3所示的函数HandleAck。
主动提速(PRU)
除了通知发送器节点关于拥塞之外,利用不足事件亦值得通知,因为占用了可用带宽。本公开的各方面提供了一种贪婪办法以在数据分组被发送之前检测潜在瓶颈处的可用带宽。参考图1所示的示例报头结构,发送器节点在分组上设置INC标志。沿着一个或多个链路到接收器节点的交换机可以接收有标志的数据分组。每个交换机可以维持与可用带宽相对应的令牌数量。当交换机接收数据分组并且具有表示可用带宽的令牌时,交换机维持分组上的标志并消耗令牌。否则,交换机清除数据分组上的标志,从而防止未来交换机为分组消耗令牌。
如果没有交换机沿着到接收器节点的一个或多个链路清除标志,则这是一个或多个链路具有足够带宽来容纳额外的分组的指示。另一方面,如果该贪婪办法导致在先前的交换机上的令牌的浪费,例如,由于下游交换机上的拥塞,则CC系统100可以替代地对拥塞窗口应用加法增大。
流完成时间可以提前已知。例如,当从发送器节点发起远程规程调用(RPC)时,向发送器节点的网络栈声明将被传送的数据的量。RPC可以包括用于传送的多个数据分组。发送器节点可以将该时间信息作为字段嵌入到传输的发送器节点的报头中,例如,如表1中定义的报头。这种附加信息告知接收交换机关于预期流完成事件的时间,以使一个或多个链路上持有发送器节点与接收器节点之间的连接的交换机可以提前计划,以将完成流的带宽分配给一个或多个链路上的剩余流。
如本文所述的CC系统100通过主动地对剩余流进行提速来减轻或防止利用不足。流上的交换机保持跟踪它到目前为止已经看到多少属于完成流的分组,为了便于描述,这些分组可以被称为PRU令牌。交换机对来自非完成流的对应数量的分组进行标记,从而在完成流结束时允许剩余流在其相应发送器节点处增大其拥塞窗口。例如,参考图2B,发送器2通过其非竞争流的分组被通知来自发送器1的流的即将完成,从而允许它在不等待来自交换机的利用不足通知的情况下提速。
在一个或多个链路上短于1BDP的RPC可能不被计入PRU目的。当新RPC开始时,其对应连接的拥塞窗口不被网络所预期,从而产生额外的负载。因此,一旦分组离开网络,接收交换机不应该预期那些分组将被其他流的分组取代。CC系统100可以通过在处于RPC的第一拥塞窗口中的分组上设置特定标志来防止或减轻这个问题,例如,如表1所示的报头定义中定义的FIRST标志。因此,下游交换机在增大PRU令牌值之前检查分组上的FIRST标志,例如,如表3所示的算法的第12行所示。
当较长的流,例如,长于一个BDP的流,开始发送其最后一个拥塞窗口价值的数据时,接收交换机在分组上设置另一个标志,例如,如表1中定义的LAST标志。假设交换机尚未被拥塞,接收具有该设定标志的分组的交换机增大与分组的出口端口相关联的PRU令牌值。当不具有所设置的LAST标志的分组到达时,假设它仍然未被拥塞,接收交换机减小PRU令牌值并且保持分组上的INC标志,例如,如表3所示的算法的第13-15行所示。根据各种示例,PRU可以在具有或不具有基于BTS的反馈的情况下实现。
图7是根据本公开的各方面的用于执行用于拥塞控制的PRU的示例过程700的流程图。
根据方框710,交换机维持与包括交换机的一个或多个链路的可用带宽相对应的零个或多个令牌的计数,例如,PRU令牌。
根据方框720,交换机接收包括具有设定标志的报头的数据分组,从发送器节点接收的数据分组将沿着一个或多个链路被传输到接收器节点。该设定标志可以指本文描述的用于确定数据分组是否是完成流的一部分的标志。
根据决策方框730,交换机确定令牌的计数是否为正。如果不是(“NO”),则根据方框740,交换机清除设定标志并增大发送器节点与接收器节点之间的连接的拥塞窗口。否则(“YES”),根据方框750,交换机减小当前令牌计数。根据方框760,交换机向一个或多个链路中的下游节点或交换机发送分组。
供应匹配
流完成不是引起一个或多个链路的利用不足的唯一原因。像链路和设备故障以及路由改变的事件亦可以导致空闲或利用不足的链路。这些事件是高度动态的,而且往往是不可预测的,并且如上所述,以基于RTT的控制环路为基础的拥塞控制反应很慢。此外,基于RTT的控制环路可能花费甚至更长的时间来响应,因为RTT随着拥塞而增大。
本公开的各方面提供用于利用可编程交换机中的有状态操作来测量一个或多个链路的瞬时利用率。与相对于PRU的流完成不同,诸如链路故障或路由改变的事件没有提前提示,因此可以使用供应匹配来代替捕捉可用带宽。
当供应匹配在CC系统100上被启用时,至少不完全地实现该系统的每个交换机可以保持跟踪由交换机维持(例如,沿着交换机的端口)的每个连接的一个或多个链路容量的供应与需求之间的不匹配。交换机能在单位时间内序列化的字节数是一个或多个链路的“供应”量。在同一时间间隔内到达的字节数是一个或多个链路的“需求”量。如果需求大于供应,就会发生拥塞。否则,一个或多个链路是利用不足的。
当分组到达交换机时,交换机可以计算与交换机的出口端口相关联的新的供应令牌值。该令牌值测量以字节的供应与需求之间的不匹配。令牌的负值指示排队,而正值意味着利用不足。如果最终令牌高于1个MTU,则交换机保持分组上的INC标志以让发送器向网络注入额外的分组,如表2的算法的第16-17行所示。MTU在此时从供应令牌值中被减去,以计入未来需求。否则,到达交换机的后续分组亦可能观察到高令牌值,并且最终共同获得过量的INC标志。将这种计算卸载到网络的交换机上,以捕捉利用数据,诸如在每分组基础上的供应与需求之间的不匹配。
表4示出了用于计算至少不完全地实现CC系统100的交换机上的每个端口的入口管线上的供应令牌的算法。
表4
图8是根据本公开的各方面的用于拥塞控制的供应匹配的示例过程800的流程图。
根据方框810,交换机计算与交换机能在单位时间内序列化的字节数与在单位时间期间到达交换机的字节数之间的差相对应的值。
根据方框820,交换机基于与该差相对应的计算值来维持供应令牌计数,其中,负供应令牌计数对应于在交换机处排队的分组,并且正供应令牌计数对应于一个或多个链路在交换机处的利用不足。
根据方框830,交换机确定字节数之间的差小于一个或多个链路的一个最大传送单元(MTU),并且作为响应,清除被发送到发送器节点的指示在发送器节点正在与之通信的接收器节点处的拥塞事件的拥塞通知的标志,被清除的标志使发送器节点在设定时增大连接的拥塞窗口。
示例计算环境
图9是用于实现CC系统100的示例环境900的框图。系统400可以在一个或多个位置中具有一个或多个处理器的一个或多个设备上实现,诸如在服务器计算设备915中。用户计算设备912和服务器计算设备915可以通过网络960通信耦合到一个或多个存储设备930。(一个或多个)存储设备930可以是易失性和非易失性存储器的组合,并且可以在与计算设备912、915相同或不同的物理位置。例如,(一个或多个)存储设备930可以包括能够存储信息的任何类型的非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光存储、存储器卡、ROM、RAM、DVD、CD-ROM、可写和只读存储器。本文描述的示例设备可以至少不完全地形成本文参考图1描述的节点。
服务器计算设备915可以包括一个或多个处理器913和存储器914。存储器914可以存储可由(一个或多个)处理器913访问的信息,包括可以由(一个或多个)处理器913执行的指令921。存储器914还可以包括可以由(一个或多个)处理器913检索、操纵或存储的数据923。存储器914可以是能够存储可由(一个或多个)处理器913访问的信息的非暂时性计算机可读介质的类型,诸如易失性和非易失性存储器。(一个或多个)处理器913可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC),诸如张量处理单元(TPU)。
指令921可以包括一个或多个指令,该一个或多个指令在由(一个或多个)处理器913执行时使一个或多个处理器执行由指令定义的动作。指令921可以以用于由(一个或多个)处理器913直接处理的目标代码格式被存储,或者以包括可解释脚本或根据需要解释或提前编译的独立源代码模块的集合的其他格式被存储。指令921可以包括用于实现与本公开的各方面相一致的系统100的指令。系统100可以使用(一个或多个)处理器913和/或使用从服务器计算设备915远程定位的其他处理器来执行。
数据923可以由(一个或多个)处理器913根据指令921来检索、存储或修改。数据923可以被存储在计算机寄存器中,被存储在关系或非关系数据库中作为具有多个不同字段和记录的表格或者作为JSON、YAML、proto或XML文档。数据923亦可以以计算机可读格式被格式化,诸如,但不限于二进制值、ASCII或Unicode。此外,数据923可以包括足以标识相关信息的信息,诸如数字、描述性文本、专有代码、指针、对被存储在其他存储器(包括其他网络位置)中的数据的引用或被函数用来计算相关数据的信息。
与服务器计算设备915类似,用户计算设备912亦可以被配置有一个或多个处理器916、存储器917、指令918及数据915。用户计算设备912还可以包括用户输出926和用户输入924。用户输入924可以包括用于从用户接收输入的任何适当的机制或技术,诸如键盘、鼠标、机械致动器、软致动器、触摸屏、麦克风及传感器。
服务器计算设备915可以被配置为向用户计算设备912传输数据,并且用户计算设备912可以被配置为在被实现为用户输出926的一部分的显示器上显示接收到的数据的至少部分。用户输出926还可以用于显示用户计算设备912与服务器计算设备915之间的界面。用户输出926可以替代地或附加地包括一个或多个扬声器、换能器或其他音频输出、触觉接口或其他触觉反馈,它们向用户计算设备912的平台用户提供非视觉和非听觉信息。
尽管图9将处理器913、916及存储器914、917图示为在计算设备915、912内,但本说明书中描述的组件,包括处理器913、916及存储器914、917可以包括多个处理器和存储器,该多个处理器和存储器可以在不同的物理位置操作,并且不在同一计算设备内。例如,指令921、918及数据923、915中的一些可以被存储在可移动SD卡上,并且另一些在只读的计算机芯片内。指令和数据中的一些或全部可以被存储在物理上远离处理器913、916但仍可由处理器913、916访问的位置。类似地,处理器913、916可以包括可以执行并发和/或顺序操作的处理器的集合。计算设备915、912可以各自包括提供时间信息的一个或多个内部时钟,这些时钟可以用于由计算设备915、912运行的操作和程序的时间测量。
服务器计算设备915可以被配置为从用户计算设备912接收处理数据的请求。例如,环境900可以是被配置为通过各种用户界面和/或暴露平台服务的API向用户提供各种各样服务的计算平台的一部分。一个或多个服务可以是机器学习框架或用于根据规定任务和训练数据生成神经网络或其他机器学习模型的一组工具。用户计算设备912可以接收和传输规定目标计算资源将被分配用于执行被训练成执行特定神经网络任务的神经网络的数据。
设备912、915可能能够通过网络960进行直接和间接通信。设备915、912可以建立可以接受用于发送和接收信息的启动连接的监听套接字。网络960本身可以包括各种配置和协议,包括因特网、万维网、内联网、虚拟专用网络、广域网、本地网络以及使用一个或多个公司专有的通信协议的私有网络。网络960可以支持各种各样短距离和长距离连接。短距离和长距离连接可以在不同的带宽上形成,诸如2.402GHz到2.480GHz(通常与标准相关联)、2.4GHz和5GHz(通常与/>通信协议相关联);或者利用各种各样通信标准形成,诸如用于无线宽带通信的/>标准。附加地或替代地,网络960还可以支持设备912、915之间的有线连接,包括通过各种类型的以太网连接。
尽管在图9中示出了单个服务器计算设备915和用户计算设备912,但可以理解的是,本公开的各方面可以根据各种各样不同的配置和计算设备量来实现,包括在用于顺序或并行处理的范式中,或通过多个设备的分布式网络。在一些实现方式中,本公开的各方面可以在单个设备及其任何组合上执行。
本公开的各方面可以在数字电路、计算机可读存储介质中被实现为一个或多个计算机程序或上述中的一个或多个的组合。计算机可读存储介质可以是非暂时性的,例如,作为可由云计算平台执行并被存储在有形存储设备上的一个或多个指令。
在本说明书中,短语“被配置为”被用在与计算机系统、硬件或计算机程序、引擎或模块的一部分有关的不同上下文中。当系统被说成是被配置为执行一个或多个操作时,这意味着该系统具有安装在该系统上的适当的软件、固件和/或硬件,该软件、固件和/或硬件在操作时使该系统执行该一个或多个操作。当一些硬件被说成是被配置为执行一个或多个操作时,这意味着该硬件包括一个或多个电路,该一个或多个电路在操作时接收输入并根据输入并对应于一个或多个操作生成输出。当计算机程序、引擎或模块被说成是被配置为执行一个或多个操作时,这意味着该计算机程序包括一个或多个程序指令,该一个或多个程序指令在由一个或多个计算机执行时使该一个或多个计算机执行该一个或多个操作。
虽然附图中示出和权利要求中叙述的操作是以特定顺序示出的,但可以理解的是,这些操作可以以不同于所示出的顺序执行,并且一些操作可以被省略、被执行一次以上和/或与其他操作并行执行。此外,被配置用于执行不同操作的不同系统组件的分离不应被理解为要求这些组件分离。所描述的组件、模块、程序及引擎可以被一起集成作为单个系统或多个系统的一部分。
除非另有说明,上述替代示例并非相互排斥的,而是可以以各种组合被实现以实现独特优势。由于可以在不脱离由权利要求定义的主题的情况下利用上文讨论的特征的这些和其他变形和组合,上述对示例的描述应以说明的方式而不是以对由权利要求定义的主题的限制的方式进行。此外,本文描述的示例以及措辞为“诸如”、“包括”等的条款不应被解释为将权利要求的主题限于具体示例;而是,这些示例旨在说明许多可能实现方式中的仅一个。此外,不同图中的相同附图标记可以标识相同或相似的元素。
关于本文中基本上任何复数和/或单数术语的使用,例如(术语“元素”是任何系统、组件、数据等的替用)“一个/该元素”、“一个或多个元素”、“多个元素”、“复数个元素”“至少一个元素”等,本领域技术人员可以以对所描述的上下文和/或应用适当的方式从复数翻译成单数和/或从单数翻译成复数。为清晰起见,可以在本文中明确阐述各种单数/复数的排列组合,并且除非明确指出,否则不受限制。
Claims (14)
1.一种在网络上进行的拥塞控制的方法,其特征在于,所述方法包括:
由包括一个或多个处理器的发送器节点沿着一个或多个链路向接收器节点发送一个或多个数据分组;
由所述发送器节点沿着所述一个或多个链路接收由交换机生成的拥塞通知;
计算发送所述一个或多个数据分组与从所述交换机接收所述拥塞通知之间的时间;以及
由所述发送器节点并且在计算出的所述时间内调整所述发送器节点与所述接收器节点之间的用于发送所述一个或多个数据分组的连接的拥塞窗口。
2.根据权利要求1所述的方法,其特征在于,计算出的所述时间小于用于在所述发送器节点与所述接收器节点之间发送数据和接收确认的往返时间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:每计算出的时间间隔调整所述连接的拥塞窗口仅一次。
4.根据权利要求1所述的方法,其特征在于,
其中,一个或多个数据流是沿着所述一个或多个链路传输的,包括:包括由所述发送器节点发送到所述接收器节点的所述一个或多个数据分组的第一流,并且
其中,所述方法还包括:
计算测量所述第一流贡献的对所述一个或多个链路的所述拥塞占所述一个或多个链路上的拥塞总量的比例的因子;
接收在所述交换机处维持的数据队列的当前队列占用率;以及
至少基于所述因子、所述当前队列占用率及计算出的所述时间来调整所述拥塞窗口。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
生成多个数据分组中的数据分组的报头,所述报头包括指示所述数据分组是所述多个数据分组中所传输的初始数据分组的第一标志,并且还包括规定要在所述多个数据分组中传送的数据量的数据;以及
向所述交换机传输所述多个数据分组。
6.根据权利要求13所述的方法,其特征在于,
其中,所述多个数据分组中的所述数据分组是第一数据分组,并且
其中,所述方法还包括:
生成所述多个数据分组中的第二数据分组的报头,所述报头包括指示所述第二数据分组是所述多个数据分组中的最后一个数据分组的第二标志;以及
传输所述第二数据分组。
7.根据权利要求1所述的方法,其特征在于,还包括:
由包括所述一个或多个处理器的交换机维持与包括所述交换机的一个或多个链路的可用带宽相对应的零个或多个令牌的计数;
由所述交换机接收包括具有设定标志的报头的数据分组;
由所述交换机确定所述令牌的计数是否为正,
响应于确定所述令牌的计数是非零的,减小所述令牌的计数,以及
响应于确定所述令牌的计数为零,清除所述标志并增大所述发送器节点与所述一个或多个处理器之间的连接的拥塞窗口;以及
向所述一个或多个链路中的下游节点发送所述数据分组。
8.根据权利要求7所述的方法,其特征在于,还包括:
由所述交换机维持对应于通过所述连接的数据的第一流接收的分组的计数;
由所述交换机接收指示要在所述第一流中传输的数据的总量的数据传送量;
由所述交换机至少基于接收的所述数据传送量来计算完成所述第一流的估计时间;以及
在完成所述第一流的所述估计时间之时或之后,由所述交换机增大沿着所述一个或多个链路的不同于所述第一流的一个或多个其他流的连接的相应拥塞窗口。
9.根据权利要求8所述的方法,其特征在于,
其中,所接收的数据分组形成从所述发送器节点的远程规程调用(RPC)的一部分,并且
其中,所述方法还包括:
由所述交换机接收所述所接收的数据分组中的第一分组的报头中指示所述第一分组是否是作为所述RPC的一部分传输的初始分组的标志,其中,所述RPC的所述所接收的数据分组在大小上共同小于所述一个或多个链路的带宽延迟积(BDP);以及
由所述交换机仅当指示所述第一分组是初始分组的所述标志被清除时增大所述令牌的计数。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
由所述交换机接收所述所接收的数据分组中的第二分组的报头中指示所述第二分组是所述RPC的所传输的最后一个分组的标志;以及
当所述第二分组的所述报头中的所述标志被设置时增大所述令牌的计数,否则减小所述令牌的计数。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
由所述交换机计算与所述交换机能在单位时间内序列化的字节数与在所述单位时间期间到达所述交换机的字节数之间的差相对应的值;
由所述交换机基于与所述差相对应的计算值来维持供应令牌计数,其中,负供应令牌计数对应于在所述交换机处排队的分组,并且正供应令牌计数对应于所述一个或多个链路在所述交换机处的利用不足;
由所述交换机确定所述字节数之间的所述差小于所述一个或多个链路的一个最大传送单元(MTU),并且作为响应,清除被发送到所述发送器节点的所述拥塞通知的标志,被清除的所述标志使所述发送器节点在设置时增大所述连接的拥塞窗口。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:从所述供应令牌值中减去所述一个或多个链路的所述MTU。
13.一种在网络上进行的拥塞控制的方法,其特征在于,所述方法包括:
由包括一个或多个处理器的交换机维持与包括所述交换机的一个或多个链路的可用带宽相对应的零个或多个令牌的计数;
由所述一个或多个处理器接收包括具有设定标志的报头的数据分组,从发送器节点接收的所述数据分组将沿着所述一个或多个链路被传输到接收器节点;
由所述一个或多个处理器确定所述令牌的计数是否为正,
响应于确定所述令牌的计数为正,减小所述令牌的计数,以及
响应于确定所述令牌的计数不为正,清除所述标志并增大所述发送器节点与所述交换机之间的连接的拥塞窗口;以及
向所述一个或多个链路中的下游节点发送所述数据分组。
14.一种用于在网络上进行的拥塞控制的方法,其特征在于,所述方法包括:
由包括一个或多个处理器的交换机计算与所述交换机能在单位时间内序列化的字节数与在所述单位时间期间到达所述交换机的字节数之间的差相对应的值;
由所述交换机基于与所述差相对应的计算值来维持供应令牌计数,其中,负供应令牌计数对应于在所述交换机处排队的分组,并且正供应令牌计数对应于所述一个或多个链路在所述交换机处的利用不足;
确定所述字节数之间的所述差小于所述一个或多个链路的一个最大传送单元(MTU),并且作为响应,清除被发送到发送器节点的指示在所述发送器节点正在与之通信的接收器节点处的拥塞事件的所述拥塞通知的标志,被清除的所述标志使所述发送器节点在设置时增大所述连接的拥塞窗口。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263332536P | 2022-04-19 | 2022-04-19 | |
US63/332,536 | 2022-04-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116915707A true CN116915707A (zh) | 2023-10-20 |
Family
ID=86095667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310419073.3A Pending CN116915707A (zh) | 2022-04-19 | 2023-04-19 | 子往返时间中的网络拥塞控制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230336490A1 (zh) |
EP (1) | EP4266644A1 (zh) |
CN (1) | CN116915707A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU3038100A (en) * | 1999-12-13 | 2001-06-25 | Nokia Corporation | Congestion control method for a packet-switched network |
US7701853B2 (en) * | 2005-09-30 | 2010-04-20 | Alcatel-Lucent Usa Inc. | Method for policing-based adjustments to transmission window size |
US8379515B1 (en) * | 2007-02-01 | 2013-02-19 | F5 Networks, Inc. | TCP throughput control by imposing temporal delay |
-
2023
- 2023-04-19 US US18/136,551 patent/US20230336490A1/en active Pending
- 2023-04-19 EP EP23168706.2A patent/EP4266644A1/en active Pending
- 2023-04-19 CN CN202310419073.3A patent/CN116915707A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4266644A1 (en) | 2023-10-25 |
US20230336490A1 (en) | 2023-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3714579B1 (en) | Layer 3 fair rate congestion control notification | |
KR102385762B1 (ko) | 속도 최적화된 정체 관리 | |
US10594617B2 (en) | Probabilistic normalized congestion indication based on packet size | |
US9985899B2 (en) | Re-marking of packets for queue control | |
CN107204931B (zh) | 通信装置和用于通信的方法 | |
US20210297350A1 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
EP3323229B1 (en) | Method and apparatus for managing network congestion | |
JP2008511205A (ja) | キュー制御と1方向遅延測定を用いた、ネットワークの輻輳を制御する方法および装置 | |
EP2760182A1 (en) | Data communication apparatus, data transmission method, and computer system | |
US20150236955A1 (en) | Congestion Notification in a Network | |
US20050144309A1 (en) | Systems and methods for controlling congestion using a time-stamp | |
US9614777B2 (en) | Flow control in a network | |
EP2784997A1 (en) | Re-marking of packets for congestion control | |
US10536385B2 (en) | Output rates for virtual output queses | |
Marian et al. | Empirical characterization of uncongested optical lambda networks and 10gbe commodity endpoints | |
US20210211368A1 (en) | System and method for congestion control using time difference congestion notification | |
US10063489B2 (en) | Buffer bloat control | |
US20230336490A1 (en) | Network Congestion Control In Sub-Round Trip Time | |
US11190454B2 (en) | Receiver-directed computer network congestion control system | |
US10986026B2 (en) | Proportional integral based shaper for lossless output buffer | |
US20240129220A1 (en) | Methods, systems, and computer readable media for testing a system under test using congestion control monitoring | |
Fares et al. | A new algorithm for controlling a buffer with time-varying arrival rate | |
Kabbani | Algorithms for congestion control and bandwidth-partitioning in data centers | |
Katiyar et al. | A survey on Red and Some It's Varients Incongestioncontrol Mechanism |
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 |