CN117581518A - 拥塞控制 - Google Patents
拥塞控制 Download PDFInfo
- Publication number
- CN117581518A CN117581518A CN202280046335.XA CN202280046335A CN117581518A CN 117581518 A CN117581518 A CN 117581518A CN 202280046335 A CN202280046335 A CN 202280046335A CN 117581518 A CN117581518 A CN 117581518A
- Authority
- CN
- China
- Prior art keywords
- congestion
- network interface
- adjusting
- flows
- packets
- 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
- 230000005540 biological transmission Effects 0.000 claims abstract description 49
- 239000000654 additive Substances 0.000 claims abstract description 17
- 230000000996 additive effect Effects 0.000 claims abstract description 16
- 230000007423 decrease Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 40
- 230000015654 memory Effects 0.000 description 70
- 238000000034 method Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 19
- 239000004744 fabric Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000002347 injection Methods 0.000 description 8
- 239000007924 injection Substances 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000005259 measurement Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000006735 deficit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000012782 phase change material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 229920006926 PFC Polymers 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003750 conditioning 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
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002135 phase contrast microscopy Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000002207 retinal effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised 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/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/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/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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文所描述的示例涉及一种网络接口装置,该装置将基于造成拥塞的流的数量和/或基于时延是增加还是减少来调整分组的传输速率。在一些示例中,基于造成拥塞的流的数量来调整分组的传输速率包括基于造成拥塞的流的数量调整加性增加(AI)参数。在一些示例中,时延基于测量的往返时间和基线往返时间。
Description
优先权主张
根据35U.S.C.§365(c),本申请主张于2021年12月8日提交的题为“CONGESTIONCONTROL”的美国申请号17/545,962的优先权,该美国申请的内容完整地并入到本文。
背景技术
数据中心网络(DCN)是用于执行诸如分布式软件架构、深度学习和更大的高性能计算(HPC)之类的异构类型的工作负载的通用平台。DCN计算、存储和移动大量数据。运营DCN的云服务提供商(CSP)将提供高吞吐量的数据计算和低时延的数据传输。但是,DCN可遇到由于网络分组业务所引起的拥塞。拥塞控制(CC)协议用于控制网络分组业务。CC可以利用网络拥塞信息来调整发送方节点的分组注入速率。
附图说明
图1描绘了一示例系统。
图2描绘了一示例伪代码。
图3描绘了基于测量的网络延迟调整CWND的示例。
图4描绘了一示例过程。
图5描绘了潜在拥塞场景的示例。
图6描绘了一示例系统。
图7描绘了示例RoCEv2 CNP分组格式。
图8A描绘了一示例过程。
图8B描绘了一示例过程。
图9A描绘了一示例网络接口装置。
图9B描绘了一示例交换机。
图10描绘了一示例计算系统。
具体实施方式
基于网络拥塞等级调整分组传输
拥塞窗口可以是所传送的分组的数量或已经传送的分组的总字节数或大小。加性增加(AI或Ai)参数可以对于每个往返时间(RTT)增加或减小拥塞窗口大小。AI可以用于在拥塞事件后调整流的分组的传输速率。例如,使用AI,当没有检测到拥塞时,拥塞窗口大小可以线性地增加,但是拥塞窗口大小可以基于检测到拥塞而呈指数级地减小。
例如,在基本拥塞窗口为100的网络中,如果窗口已经减小到60,对于为1的AI,则需要40个RTT才能斜升到100,但是AI值越高,则需要的RTT越少。在有20个流按线速率(linerate)向同一目的地发送业务的情况下,发送方的拥塞窗口为5。如果对于每个RTT,流的窗口增加AI,并且如果AI为1,则窗口将从5增加到6。因此,网络中可有20个额外的分组,直到触发乘性减小。但是,如果AI为10,则窗口将从5增长到15,并且聚合窗口对于每个RTT增加200个分组。为了正确地配置Swift,使用网络中可发生的最坏的可能in-cast场景来计算适当的AI。
一些示例考虑经过确认的分组(例如,已经接收到接收确认(ACK)的传送的分组)的先前的延迟测量,以确定拥塞窗口大小的变化(如果有的话)。示例可以通过基于RTT相对于基线RTT的确定的差增加或减少拥塞窗口来调整拥塞。
CWND调整的速率可以基于当前的RTT值。一些示例可以尝试将RTT稳定到目标值,在拥塞得到缓解或不存在时导致CWND的快速斜升,或者在拥塞过高时导致CWND的快速斜降。取代依赖于恒定的参数来调整CWND,CWND的调整可以基于如由RTT值所测量的拥塞的等级。
图1描绘了一示例系统。除了本文所描述的其它组件(例如,加速器装置、互连和其它电路模块)以外,服务器102还可以包括或访问一个或多个处理器104、存储器106和装置接口108。处理器104可以执行请求传送分组的一个或多个应用(例如,微服务、虚拟机(VM)、容器或其它分布式或虚拟化的执行环境)。在一些示例中,一个或多个处理器104可以将网络接口装置150配置成基于测量的RTT值和基线RTT值之间的差来调整拥塞窗口大小,或者基于潜在造成拥塞的流的数量来调整加性增加参数,如本文所描述。
分组的出发时间可以由软件(例如,应用、管理程序、装置驱动和/或操作系统(OS)110)和/或在网络接口装置150上执行的软件(例如,数据平面软件和/或控制平面软件)确定。应用可以命令装置驱动发送一定量的数据,并且装置驱动可以作为较小的数据区块步测出数据的传输。应用可以在服务器102上或在网络接口装置150上运行。
参考网络接口装置150,传输管线152可以基于传输时间戳选择用于传输的分组,并基于分配的带宽从多个队列之中选择来自一个或多个分组队列158的分组,所述多个队列包括以下一个或多个:轮询(RR)、亏损轮询(DRR)、亏损加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)、严格优先级或其它。
在一些示例中,传输管线152可以指配来自存储在存储器156中的队列158的分组或存储器106中的分组缓冲区的分组来进行传输。存储器156可以实现为易失性存储器装置,包括高速缓存(例如,1级(L1)、2级(L2)、3级(L3)和/或最后一级高速缓存(LLC))。注意,虽然将存储器156示为是网络接口装置150的一部分,但是存储器156可以是服务器102或另一装置的一部分。
传输管线152可以基于一个或多个RTT值来调整流的分组的传输速率。传输管线152可以基于时延是上升趋势还是下降趋势来调整流的分组的传输速率。传输管线152可以通过调整拥塞窗口(CWND)大小154来调整流的分组的传输速率。在一些示例中,网络接口装置150可以确定基线RTT值。RTT值可以基于分组的传输和相关联的ACK的接收时间之间的时间来确定。基线RTT可以表示最低的RTT值,比如当网络不传输分组时。CWND的调整(如果有的话)可以基于测量的RTT和基线RTT之间的差。关于图2和图3描述调整CWND的示例方式。
如稍后描述的,在一些示例中,拥塞窗口大小电路模块154可以配置成基于通过潜在造成拥塞的流的数量调整的加性增加(AI)参数来调整拥塞窗口大小。
队列158可以包括一个或多个链表,所述一个或多个链表存储基于其传输时间戳排序的出口分组或不与出口时间戳相关联的分组的标识符或元数据。在一些示例中,队列158中的一个或多个可以与基于优先级的选择或非基于时间戳的方案相关联。
流可以是在两个端点之间传输的分组的序列,它一般表示使用已知协议的单个会话。因此,流可以通过一组定义的元组来标识,并且出于路由的目的,通过标识端点(例如,源地址和目的地地址)的两个元组来标识流。对于基于内容的服务(例如,负载平衡器、防火墙、入侵检测系统等),可以使用N-元组(例如,源地址、目的地地址、IP协议、传输层源端口和目的地端口)在更细的粒度上区分流。预期流中的分组将在分组报头中具有相同的一组元组。要控制的分组流可以通过元组(例如,以太网类型字段、源和/或目的地IP地址、源和/或目的地用户数据报协议(UDP)端口、源/目的地TCP端口或任何其它报头字段)与唯一源和目的地队列对(QP)编号或标识符的组合来标识。
分组在本文中可用于指可跨越网络发送的位的各种格式化的合集,诸如以太网帧、IP分组、TCP段、UDP数据报等。并且,如在本文档中所使用,提到L2、L3、L4和L7层(第2层、第3层、第4层和第7层)分别是指OSI(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层。
网络接口装置150可以实现为以下一个或多个:网络接口控制器(NIC)、启用远程直接存储器访问(RDMA)的NIC、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附连装置(例如,存储设备、存储器、加速器、处理器、安全)等。
图2描绘了一示例伪代码。传输调度器可以计算通过拥塞链路的流的拥塞窗口。伪代码可以以字节为单位计算CWND。在伪代码中,参数的示例描述如下。
第5-6行表示用于确定乘性减小的示例方式。将CWND乘以测量延迟相对于基本RTT的比例。第8-9行描述了低容限阈值行为,其中将CWND增加低容限乘以带宽延迟积(BDP)。
第12-18行显示了从CWND相对于初始CWND的位置缩放调整参数(第29-37行)的示例操作。换句话说,CWND越小,CWND就可以调整越多。第20-26行示出了如何计算加性增加的示例。
图3描绘了基于测量的网络延迟调整CWND的示例。例如,如果测量的RTT和基线RTT302之间的差小于或等于第一阈值304,则可以增加CWND,但是不超过第一阈值304。第一阈值304可以高于基线RTT 302(例如,5-20%)。第一阈值304可以表示无拥塞或可接受的拥塞的等级。在一些示例中,N次或更多次连续延迟测量低于第一阈值304可以触发超加性增加以增加CWND。超加性增加可以是20%或更多,但是CWND不超过最大CWND。可以使用其它增加示例。
例如,如果测量的RTT和基线RTT 302之间的差大于第一阈值304但是小于或等于第二阈值306,则可以将CWND调整为目标CWND值310。
例如,如果测量的RTT和基线RTT 302之间的差大于第二阈值306,则可以减小CWND。CWND的减小可以通过乘性减小(MD)来实现。第二阈值306可以表示过高的路径拥塞的等级。在一些示例中,单个延迟测量高于第二阈值306可触发,由此可以与测量的RTT成比例地减小CWND。换句话说,测量的RTT的值越高,CWND的减小越高。
图4描绘了一示例过程。该过程可以由网络接口装置执行。在402,可以监测流的路径的拥塞。例如,监测拥塞可以通过基于分组的传输时间和与分组相关联的ACK的接收时间之间的差确定RTT来进行。在404,可以确定路径或网络中的拥塞的差异或变化。例如,可以基于RTT相对于基线RTT之间的变化来确定拥塞的差异或变化。一般来说,基线RTT可以表示与流的路径或网络中的低拥塞或无拥塞相关联的RTT值。
在406,可以基于确定的拥塞差异或变化来调整拥塞窗口。例如,基于确定的差异小于第一阈值,可以将拥塞窗口增加最高等级。基于确定的差异在一定范围内,可以将拥塞窗口调整为目标拥塞窗口值。基于确定的差异大于第二阈值,可以将拥塞窗口减小一定等级。在一些示例中,对于小于第一阈值或大于第二阈值的连续确定的差异,可以放大拥塞窗口大小的增加或减小的等级。在一些示例中,可以基于时延趋势下降(减小)来增加流的分组的传输速率,或者可以基于时延趋势上升(增加)来降低流的分组的传输速率。
基于贡献者的分组注入调整
可以利用拥塞通知分组(CNP)、显式拥塞通知(ECN)和优先级-流-控制(PFC)来降低分组注入到网络中的速率并潜在地减少网络拥塞。CNP可以通知发送方降低分组注入速率。在拥塞得到缓解后,采用恢复或增加注入速率的方案。为了执行注入速率增加,诸如数据中心量化拥塞通知(DCQCN)或高精度拥塞控制(HPCC)之类的方案多次将注入速率增加一定量,直到它们达到网络上的拥塞等级。注入增加的量可以是加性增加,并且用于增加速率的量通常是加性增加参数(AI或Ai)。
加性增加参数可以是静态值。加性增加的值的选择可以取决于业务模式。如果选择的值对于特定的业务模式太小,则流的速率恢复阶段可能会太慢,从而导致可用带宽的低效使用和对公平性的缓慢收敛。相反,如果选择的值对于特定的业务模式太大,则速率恢复可能会过于激进,而导致组构(fabric)中不必要的缓冲,从而导致增加的时延(并且在DCQCN的情况下增加PFC)。在这两种情况下,偏离理想速率可能会减慢或甚至阻止收敛到公平的带宽使用。
当考虑网络中的其它流在同一拥塞点处发生冲突时,正确配置加性增加参数的困难恶化。在N个流发生冲突的点,拥塞点将经历的总聚合速率增加将为N×Ai。在拥塞点发生冲突的流的数量并不是事先知道的事物,而是基于网络业务在一段时间内发生变化的事物。
一些示例包括接收方网络接口装置,它利用拥塞的队列来检测活动流的数量并将活动流的数量作为参数发送到发送方网络接口装置。除其它示例外,活动流可以是以常规步调将分组发送到拥塞队列的流。一个或多个发送方网络接口装置可以基于正在向拥塞队列提供分组的活动流的数量动态地调整加性增加参数Ai。因此,一些示例提供了通过发送方网络接口装置控制总传输速率增加,这取决于造成拥塞的流的数量,并且可以减少分组传输时延。
图5描绘了潜在拥塞场景的示例。在502,拥塞发生在发送方节点504(圈出的节点)处。发送方节点502将多个流的分组引导到不同的目的地节点,这些目的地节点争用相同的输出端口或队列,从而导致端口或队列处的拥塞。
在510,拥塞发生在端点接收方之前的最后接收方交换机节点512(圈出的节点)处。接收方交换机节点512连接到端点接收方节点514。在该示例中,去往端点接收方节点514的多个流的分组竞争使用相同的输出端口或队列,从而导致端口或队列处的拥塞。如本文所描述,接收方交换机节点512可以标识分组流的两个来源。接收方交换机节点512可以计算Ai值,并指示分组流的两个来源造成拥塞。
在520,拥塞发生在交换机522处,交换机522在网络中位于最后交换机之前。在该示例中,去往多个端点接收方节点的多个流的分组竞争使用相同的输出端口或队列,从而导致端口或队列处的拥塞。如本文所描述,接收方交换机节点522可以标识分组流的两个来源。接收方交换机节点522可以计算Ai值,并向端点发送方524和526指示分组流的两个来源造成拥塞。
图6描绘了一示例系统。发送方节点602-0至602-N可以使用相应的传送器604-0至604-N传送与一个或多个流相关联的分组,其中N≥1。除其它地方以外,本文将至少关于图1、图9A和图9B描述发送方节点602-0至602-N的示例实现。
传送器604-0至604-N可以通过网络610和网络接口装置620将与一个或多个流相关联的分组发送到接收方630-0至630-P中的一个或多个,其中P≥1。以本文所描述的方式,Ai和造成或导致端口或队列处的拥塞的活动流的数量的确定可以通过以下中的一个或多个执行:相应的发送方602-0至602-N的拥塞管理器606-0至606-N、网络接口装置620的拥塞管理器622和/或相应的接收方630-0至630-P的拥塞管理器632-0至632-P。
例如,拥塞管理器可以通过以或超过与拥塞相关联的字节或分组的等级的队列填充来标识拥塞。在一些示例中,一个或多个拥塞管理器可以确定活动流的数量,并致使将确定的活动流的数量发送到发送方节点602-0到602-N中的一个或多个。稍后描述用于确定活动流的数量的示例方式。发送方节点602-0至602-N中的一个或多个的拥塞管理器可以基于活动流的数量计算调整后的AI值。AI值可以是拥塞窗口大小。至少在Swift出版物中描述了Ai值的示例确定。例如,拥塞管理器606-0至606-N中的一个或多个可以按Ai值/M来确定流的Ai值,其中M表示拥塞装置中的活动流的数量。传送器604-0至604-N可以基于调整后的Ai值来调整流的分组的传输速率。拥塞管理器606-0至606-N中的一个或多个可以存储从相应的发送方节点602-0至602-N传送的每个活动或非活动流的Ai信息。拥塞管理器606-0至606-N中的一个或多个可以为通过经历拥塞的装置所标识的变化的活动流数量重新计算Ai。拥塞管理器606-0至606-N中的一个或多个可以基于其重新计算的Ai值来调整拥塞窗口大小。
使用相对于活动流的数量调整的Ai值提供了支持不同拥塞等级的自适应性,而无需在工作负载行为发生改变时重置参数,并且可以改善网络稳定性并减少尾部时延。可以对于每个发送方节点而不是对于每个流应用公平性,因为测量是在发送方中执行的。例如,两个发送方(A和B)向端点C发送分组,其中发送方A向端点C发送两个活动流的分组,而发送方B向端点C发送一个流的分组。在那种情况下,在恢复阶段,对活动流进行计数,并且发送方A可以将每个流增加Ai/2(A有2个流),并且发送方B可以将它的流增加Ai(B有一个流)。因此,发送方A和发送方B单独将它们的总速率增加Ai。当拥塞点消失并且检测到较少的活动流时,增加Ai的值可导致注入速率的更快速的恢复或增加。
接着描述确定活动流的数量的各种示例。可以在多个装置处测量活动流的数量,并且可以使用更高的活动流数量作为变量M,所述多个装置是诸如以下中的一个或多个:发送方节点602-0至602-N、网络接口装置620和/或接收方630-0至630-P。在发送方节点602-0至602-N处,流的分组争用网络接口装置中的相同的输出端口或队列。在这种情况下,网络接口装置可以利用关于多少传输队列或远程直接存储器访问(RDMA)队列对(QP)是活动的计数器。
在接收方630-0至630-P中,活动流的数量的计数可以利用关于多少接收队列或远程直接存储器访问(RDMA)队列对(QP)是活动的计数器。在计算了该数量后,可以通过通知分组(例如,基于收敛以太网的RDMA(RoCE)拥塞通知分组(CNP))来发送活动流的数量(M),因此,发送方节点可以使用该信息来将给定流的速率按比例增加Ai/M。
在网络接口装置620中,拥塞管理器622(例如,可编程的分组处理管线)可以计算活动流的数量(M),并将该信息包含在发送到一个或多个发送方节点602-0至602-N的分组中。在一些示例中,接收方节点可以将M与其计算的活动流的数量进行比较(例如,使用活动传输/接收队列或活动QP的计数器),并且可以通过通知分组(例如,CNP)发送更高的数量的M。
活动流可以是在从当前时间开始的时间窗口内具有一定活动(发送或接收的分组)的流。例如,硬件资源可以执行活动流/队列的计数,并使用计时器来确定流在时间段内是否没有发送/接收数据并被视为不活动。在一些示例中,在执行活动流的计数时,可以使用上限或下限。Ai的值可以具有带下限的粒度,因为存在某个点,其中测量更多的流将不会将Ai值降低到低于该下限。因此,不需要对超过该数量的流进行计数,而是可以对流计数应用上限。在一些示例中,可以使用Bloom过滤器来估计活动流的数量。例如,可以使用Bloom过滤器来计算在一段时间(T)内的活动流的数量,其中流可以是元素,并且计数器基于过滤器标识新元素而增加。计数器和过滤器可以在时间T之后重置。
活动流数量的确定可以在由网络接口装置、网络接口装置的可编程或固定功能管线和/或操作系统(OS)内核所执行的固件中执行。
再次参考图1,在一些示例中,拥塞窗口大小电路模块154可以配置成基于拥塞和潜在造成拥塞的流的数量的指示来调整拥塞窗口大小。
图7描绘了示例RoCEv2 CNP分组格式。在一些示例中,可以使用分组序列号(PSN)字段(例如,24个位)或预留的16个字节来发送表示拥塞装置中的活动流的数量和/或Ai的值。在其它示例中,可以使用关于带内网络遥测(INT)(例如,参见“带内网络遥测(INT)数据平面规范”版本2.1(2020)以及早期版本、后期版本或其修订版)所描述的技术来发送表示拥塞装置中的活动流的数量和/或Ai的值。
图8A描绘了一示例过程。该过程可以由发送方网络接口装置、中间交换机和/或接收方网络接口装置执行。在802,网络接口装置可以配置成确定是否正在发生拥塞以及潜在造成拥塞的活动流的数量。例如,可标识拥塞发生在某个端口或队列处。驱动和/或编排可以将网络接口装置配置成确定是否正在发生拥塞以及潜在造成拥塞的活动流的数量。可以基于队列的填充等级在分组的大小(例如,以字节为单位)或分组的数量方面满足或超过拥塞阈值等级而标识发生了拥塞。
在804,基于标识了拥塞,网络接口装置可以确定潜在造成拥塞的活动流的数量。例如,可以基于关于多少传输或接收队列或远程直接存储器访问(RDMA)队列对(QP)是活动的计数来确定潜在造成拥塞的活动流的数量。在一些示例中,可以确定具有在从当前时间开始的少于时间阈值量的时间内接收的在网络接口装置处接收的相关联的分组的流的计数或估计。
在806,网络接口装置可以将确定的潜在造成拥塞的活动流的数量发送到一个或多个发送方网络接口装置。
图8B描绘了一示例过程。在850,网络接口装置可以为传送的分组确定拥塞窗口大小。在852,基于接收到拥塞的指示和确定的潜在造成拥塞的活动流的数量,网络接口装置可以将拥塞窗口大小调整RTT量内的加性增量(AI)除以确定的潜在造成拥塞的活动流的数量。
图9A描绘了一示例网络接口装置。网络接口中的各种处理器资源可以基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。在一些示例中,网络接口900可以实现为网络接口控制器、网络接口卡、主机组构接口(HFI)或主机总线适配器(HBA),并且此类示例可以是可互换的。网络接口900可以使用总线、PCIe、CXL或DDR耦合到一个或多个服务器。网络接口900可实施为包括一个或多个处理器的片上系统(SoC)的一部分,或者可包含在也包含一个或多个处理器的多芯片封装上。
网络装置900的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分,或者供IPU或DPU使用。xPU至少可以指IPU、DPU、GPU、GPGPU或其它处理单元(例如,加速器装置)。IPU或DPU可以包括网络接口,其具有一个或多个可编程管线或固定功能处理器,所述一个或多个可编程管线或固定功能处理器用于执行可能已经由CPU执行的操作的卸载。IPU或DPU可以包括一个或多个存储器装置。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、加密、虚拟化),并管理在其它IPU、DPU、服务器或装置上执行的操作。
网络接口900可以包括收发器902、处理器904、传输队列906、接收队列908、存储器910、以及总线接口912和DMA引擎932。收发器902可以能够按照诸如如在IEEE 802.3中所描述的以太网之类的适用协议来接收和传送分组,尽管可使用其它协议。收发器902可以经由网络介质(未描绘)从网络接收分组以及向网络传送分组。收发器902可以包括PHY电路模块914和媒体访问控制(MAC)电路模块916。PHY电路模块914可以包括用于根据适用的物理层规范或标准对数据分组进行编码和解码的编码和解码电路模块(未示出)。MAC电路模块916可以配置成对接收的分组执行MAC地址过滤,通过验证数据完整性来处理接收的分组的MAC报头,移除前导和填充,并提供分组内容以供更高层处理。MAC电路模块916可以配置成将要传送的数据组装到分组中,其包括目的地地址和源地址以及网络控制信息和错误检测散列值。
处理器904可以是以下的任何组合:处理器、核、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或允许对网络接口900进行编程的其它可编程硬件装置。例如,“智能网络接口”或SmartNIC可以使用处理器904在网络接口中提供分组处理能力。
处理器904可以包括可编程处理管线,它可通过编程协议无关的分组处理器(P4)、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制文件或其它可执行二进制文件进行编程。如本文所描述,可编程处理管线可以包括一个或多个匹配动作单元(MAU),所述一个或多个MAU可以使用一个或多个粒度列表来调度分组以进行传输。处理器、FPGA、其它专门的处理器、控制器、装置和/或电路可以用于进行分组处理或分组修改。三元内容可寻址存储器(TCAM)可以用于并行匹配动作或对分组报头内容的查找操作。处理器904可以确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。
传输业务管理器907可以从队列之中选择要分配给传输时隙的分组。传输业务管理器907可以基于本文所描述的示例设置和利用拥塞窗口大小。传输业务管理器907可以作为处理器904和/或FPGA 930的一部分来实现。
分组分配器924可以使用接收侧缩放(RSS)来提供所接收的分组的分发以通过多个CPU或核进行处理。当分组分配器924使用RSS时,分组分配器924可以计算散列或基于所接收的分组的内容做出另一确定以确定哪个CPU或核将处理分组。
中断合并922可以执行中断调节,由此,在生成中断以便主机系统处理(一个或多个)接收的分组之前,网络接口中断合并922等待多个分组到达或等待超时过期。接收段合并(RSC)可以通过网络接口900执行,由此将传入分组的部分组合到分组的段中。网络接口900将该合并的分组提供给应用。
直接存储器访问(DMA)引擎932可以将分组报头、分组有效负载和/或描述符直接从主机存储器复制到网络接口,或反之,而不是将分组复制到主机处的中间缓冲区,并然后使用从中间缓冲区到目的地缓冲区的另一复制操作。
存储器910可以是任何类型的易失性或非易失性存储器装置,并且可以存储用于对网络接口900进行编程的任何队列或指令。传输队列906可以包括通过网络接口传输的数据或对所述数据的引用。接收队列908可以包括网络接口从网络接收了的数据或对所述数据的引用。描述符队列920可以包括引用传输队列906或接收队列908中的数据或分组的描述符。总线接口912可以提供与主机装置(未描绘)的接口。例如,总线接口912可以与PCI、PCI Express、PCI-x、串行ATA和/或USB(尽管可使用其它互连标准)或其专有变型兼容或至少部分地基于它们。
图9B描绘了一示例交换机。可以在交换机中或者可以与交换机一起使用各种实施例来确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。交换机954可以将任何格式或符合任何规范的分组或帧从任何端口952-0至952-X路由到端口956-0至956-Y中的任何端口(或反之)。端口952-0至952-X中的任何端口可以连接到一个或多个互连装置的网络。类似地,端口956-0至956-Y中的任何端口可以连接到一个或多个互连装置的网络。
在一些示例中,交换机组构960可以提供来自一个或多个入口端口的分组的路由,以便在从交换机954出口之前进行处理。交换机组构960可以实现为一个或多个多跳拓扑,其中除其它实现以外,示例拓扑包括环面、蝴蝶、缓冲的多阶等或共享存储器交换机组构(SMSF)。SMSF可以是连接到交换机中的入口端口和所有出口端口的任何交换机组构,其中入口子系统将分组段写入(存储)到组构的存储器中,而出口子系统从组构的存储器中读取(提取)分组段。
存储器958可以配置成在从一个或多个端口出口之前存储在端口处所接收的分组。分组处理管线962可以使用将分组特性与相关联的输出端口相映射的表来确定要将分组或帧传输到哪个端口。在一些实施例中,分组处理管线962可以配置成对接收的分组执行匹配动作,以使用存储在三元内容可寻址存储器(TCAM)表或精确匹配表中的信息来标识分组处理规则和接下来的跳点。例如,可以使用匹配动作表或电路模块,由此使用分组的一部分的散列作为查找条目的索引。分组处理管线962可以实现访问控制列表(ACL)、或由于队列溢出而导致的分组丢弃。分组处理管线962可以配置成确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。
包括其数据平面在内的分组处理管线962的操作的配置可以使用本文所描述的示例编程语言和方式进行编程。处理器966和FPGA 968可以用于分组处理或修改。
图10描绘了一示例计算系统。系统1000的组件(例如,处理器1010、网络接口1050等)用于确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。系统1000包括处理器1010,处理器1010为系统1000提供指令的处理、操作管理和执行。处理器1010可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核或用于为系统1000提供处理的其它处理硬件、或处理器的组合。处理器1010控制系统1000的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)等、或此类装置的组合。
在一个示例中,系统1000包括耦合到处理器1010的接口1012,接口1012可以表示用于需要更高带宽连接的系统组件(诸如存储器子系统1020或图形接口组件1040、或加速器1042)的更高速度接口或高吞吐量接口。接口1012代表接口电路,它可以是独立的组件或集成到处理器管芯上。在存在的情况下,图形接口1040通过接口连接到图形组件以用于向系统1000的用户提供可视显示。在一个示例中,图形接口1040可以驱动向用户提供输出的高清(HD)显示器。高清可以指具有大约100PPI(每英寸像素数)或更大的像素密度的显示器,并且可以包括诸如全HD(例如,1080p)、视网膜显示器、4K(超高清或UHD)或其它之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1040基于存储在存储器1030中的数据或基于处理器1010所执行的操作或基于两者生成显示。在一个示例中,图形接口1040基于存储在存储器1030中的数据或基于处理器1010所执行的操作或基于两者生成显示。
加速器1042可以是可供处理器1010访问或使用的固定功能或可编程的卸载引擎。例如,加速器1042之中的某个加速器可以提供压缩(DC)能力、加密服务(诸如公共密钥加密(PKE))、密码、散列/认证能力、解密或其它能力或服务。在一些实施例中,另外或备选地,加速器1042之中的某个加速器提供如本文所描述的现场选择控制器能力。在一些情况下,加速器1042可以集成到CPU插口(例如,到包含CPU并为CPU提供电气接口的主板或电路板的连接器)中。例如,加速器1042可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑和可编程处理元件(诸如现场可编程门阵列(FPGA)或可编程逻辑装置(PLD))。加速器1042可以提供多个神经网络、CPU、处理器核、通用图形处理单元,或者可以使图形处理单元可用于供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下中的一个或多个:强化学习方案,Q-学习方案,深度-Q学习,或异步优势动作评价(A3C),组合神经网络,循环组合神经网络,或其它AI或ML模型。可以使多个神经网络、处理器核或图形处理单元可用于供AI或ML模型使用。
存储器子系统1020表示系统1000的主存储器,并为即将由处理器1010执行的代码或即将用于执行例程的数据值提供存储。存储器子系统1020可以包括一个或多个存储器装置1030,诸如只读存储器(ROM)、闪存、一种或多种随机存取存储器(RAM)(诸如DRAM)、或其它存储器装置、或此类装置的组合。存储器1030除其它以外还存储和托管操作系统(OS)1032,以提供用于在系统1000中执行指令的软件平台。另外,应用1034可以在来自存储器1030的OS1032的软件平台上执行。应用1034表示具有它们自己的操作逻辑以执行一个或多个功能的执行的程序。进程1036表示为OS1032或一个或多个应用1034或其组合提供辅助功能的代理或例程。OS1032、应用1034和进程1036提供软件逻辑,以便为系统1000提供功能。在一个示例中,存储器子系统1020包括存储器控制器1022,它是用于生成命令并将命令发出到存储器1030的存储器控制器。将理解,存储器控制器1022可以是处理器1010的物理部分或接口1012的物理部分。例如,存储器控制器1022可以是集成到具有处理器1010的电路上的集成存储器控制器。
在一些示例中,OS1032可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu或任何其它操作系统。OS和驱动可以在由Texas/>等销售或设计的CPU上执行。在一些示例中,驱动可以将网络接口1050配置成确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。在一些示例中,驱动可以启用或禁用到网络接口1050的卸载,网络接口1050确定造成拥塞队列或端口的活动流的数量以用于确定拥塞装置中的活动流的数量,并基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。驱动可以向OS1032和/或一个或多个应用广告网络接口1050执行网络接口1050的一个或多个方面的能力以确定造成拥塞队列或端口的活动流的数量从而用于确定拥塞装置中的活动流的数量以及基于测量的网络拥塞和/或造成拥塞的流的数量来调整拥塞窗口大小,如本文所描述。
虽然没有具体示出,但是将理解,系统1000可以包含在装置之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其它总线。总线或其它信号线可以通信地或电气地将组件耦合在一起,或者既通信地又电气地耦合组件。总线可以包括物理通信线、点对点连接、桥接器、适配器、控制器或其它电路模块或组合。总线可以包括例如以下中的一个或多个:系统总线、外围组件互连(PCI)总线、超级传输或工业标准体系结构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(Firewire)。
在一个示例中,系统1000包括接口1014,它可以耦合到接口1012。在一个示例中,接口1014表示接口电路,它可以包括独立的组件和集成电路模块。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口1014。网络接口1050为系统1000提供通过一个或多个网络与远程装置(例如,服务器或其它计算装置)通信的能力。网络接口1050可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或其它基于有线或无线标准的或专有接口。网络接口1050可以将数据传送到位于同一数据中心或机架的装置或远程装置,这可以包括发送存储在存储器中的数据。
网络接口1050的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分或供IPU或DPU使用。xPU至少可以指IPU、DPU、GPU、GPGPU或其它处理单元(例如,加速器装置)。IPU或DPU可以包括与一个或多个可编程管线或固定功能处理器的网络接口以执行可已经由CPU执行的操作的卸载。IPU或DPU可以包括一个或多个存储器装置。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、加密、虚拟化),并管理在其它IPU、DPU、服务器或装置上执行的操作。
在一个示例中,系统1000包括一个或多个输入/输出(I/O)接口1060。I/O接口1060可以包括用户通过其与系统1000交互的一个或多个接口组件(例如,音频、字母数字、触觉/触摸或其它接口连接)。外围接口1070可以包括上面没有特别提到的任何硬件接口。外围设备一般是指从属连接到系统1000的装置。从属连接是其中系统1000提供执行操作的软件平台或硬件平台或两者并与用户进行交互的连接。
在一个示例中,系统1000包括以非易失性的方式存储数据的存储子系统1080。在一个示例中,在某些系统实现中,存储设备1084的至少某些组件可以与存储器子系统1020的组件重叠。存储子系统1080包括(一个或多个)存储装置1084,其可以是或包括用于以非易失性的方式存储大量数据的任何常规介质,诸如一个或多个磁、固态或基于光学的盘、或其组合。存储设备1084以持久的状态保持代码或指令和数据1086(例如,尽管对系统1000中断了电源,仍保留其值)。存储设备1084可以广义地视为是“存储器”,尽管存储器1030通常是向处理器1010提供指令的执行或操作存储器。存储器1030可以包括易失性存储器(例如,如果对系统1000中断电源,则数据的值或状态是不确定的),而存储设备1084是非易失性的。在一个示例中,存储子系统1080包括与存储设备1084通过接口连接的控制器1082。在一个示例中,控制器1082是接口1014或处理器1010的物理部分,或者可以包括处理器1010和接口1014两者中的电路或逻辑。
易失性存储器是其状态(并且因此,存储在其中的数据)在如果对装置中断电源情况下是不确定的存储器。动态易失性存储器利用刷新存储在装置中的数据来维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或某个变型,诸如同步DRAM(SDRAM)。易失性存储器的示例包括高速缓存。如本文所描述的存储器子系统可与多种存储器技术兼容。
非易失性存储器(NVM)装置是即使对装置中断了电源其状态也是确定的存储器。在一个实施例中,NVM装置可以包括块可寻址的存储器装置,诸如NAND技术,或者更具体地,可以是多阈值等级NAND闪存(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某个其它NAND)。NVM装置还可以包括字节可寻址的就地写入三维交叉点存储器装置或其它字节可寻址的就地写入NVM装置(又称为持久存储器),诸如单级或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、OptaneTM存储器、或使用硫族相变材料(例如,硫族玻璃)的NVM装置。
电源(未描绘)向系统1000的组件提供电力。更具体地,电源通常通过接口连接到系统1000中的一个或多个电力源,以便为系统1000的组件提供电力。在一个示例中,电力源包括用于插入到墙上插座中的AC到DC(交流电到直流电)适配器。此类AC电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电力源包括用于经由靠近充电场进行充电的无线充电硬件。在一个示例中,电源可以包括内部电池、交流电源、基于运动的电源、太阳能电源或燃料电池电源。
在一示例中,系统1000可以使用处理器、存储器、存储设备、网络接口和其它组件的互连计算雪橇来实现。可以使用高速互连,诸如:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、基于融合以太网的RDMA(RoCE)、外围组件互连快速(PCIe)、英特尔快速路径互连(QPI)、英特尔超路径互连(UPI)、英特尔片上系统组构(IOSF)、Omni-Path、计算快速链接(CXL)、HyperTransport、高速组构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限组构(IF)、用于加速器的高速缓存相干互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变型。可以将数据复制或存储到虚拟化的存储节点,或者可以使用诸如基于组构的NVMe(NVMe-oF)或NVMe之类的协议访问数据。
本文的实施例可在各种类型的计算、智能电话、平板、个人计算机和联网设备(诸如交换机、路由器、机架和刀片服务器,诸如在数据中心和/或服务器场环境中所采用的那些)中实现。在数据中心和服务器场中所使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络供应通信地互连,诸如将服务器的集合分区为局域网(LAN),在LAN之间具有适当的交换和路由设施,以形成私有内联网。例如,云托管设施通常可采用具有大量服务器的大型数据中心。刀片包括配置成执行服务器类型的功能的单独的计算平台,即,“卡上服务器”。因此,每个刀片包括常规服务器常用的组件,包括提供内部接线(例如,总线)以用于耦合安装到板上的适当的集成电路(IC)和其它组件的主印刷电路板(主板)。
在一些示例中,本文所描述的网络接口和其它实施例可以与以下一起使用:基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容的接入点)、纳米站(例如,用于点对多点(PtMP)应用)、场内数据中心、场外数据中心、边缘网络元件、雾网元件和/或混合数据中心(例如,使用虚拟化、云和软件定义的联网来跨越物理数据中心和分布式多云环境交付应用工作负载的数据中心)。
各种示例可使用硬件元件、软件元件或两者的组合来实现。在一些示例中,硬件元件可包括装置、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻、电容、电感等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片组、片上系统(SoC)等。在一些示例中,软件元件可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。根据给定实现的需要,确定示例是否使用硬件元件和/或软件元件来实现可根据任何数量的因素而变化,这些因素可以是诸如所需的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可使用或作为制品或至少一个计算机可读介质来实现。计算机可读介质可包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,一种计算机可读介质可包括用于存储或维持指令的非暂时性存储介质,指令在由机器、计算装置或系统执行时使机器、计算装置或系统执行根据所描述的示例的方法和/或操作。指令可包括任何合适类型的代码,诸如源代码、编译代码、解译代码、可执行代码、静态代码、动态代码等。指令可根据预定义的计算机语言、方式或语法实现,以用于命令机器、计算装置或系统执行某个功能。指令可使用任何合适的高级、低级、面向对象、可视化、编译和/或解译编程语言来实现。
至少一个示例的一个或多个方面可通过存储在表示处理器内的各种逻辑的至少一个机器可读介质上的代表性指令来实现,指令在由机器、计算装置或系统读取时使机器、计算装置或系统制造逻辑以执行本文所描述的技术。此类表示称为“IP核”,它们可存储在有形的机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
短语“一个示例”或“一示例”的出现不一定都指相同的示例或实施例。本文所描述的任何方面可以与本文所描述的任何其它方面或类似方面组合,而不管所述方面是否是关于相同的图形或元件进行描述的。附图中所描绘的块功能的划分、省略或包含并不暗指,一定要在实施例中划分、省略或包含用于实现这些功能的硬件组件、电路、软件和/或元件。
一些示例可使用表述“耦合”和“连接”及其衍生词来进行描述。这些术语不一定打算彼此同义。例如,使用术语“连接”和/或“耦合”的描述可指示两个或更多个元件彼此直接物理或电气接触。然而,术语“耦合”也可意思是,两个或更多个元件彼此不直接接触,但是仍然彼此协作或交互。
术语“第一”、“第二”等在本文中不表示任何顺序、数量或重要性,而是用于区分一个元素与另一个元素。术语“一”和“某一”在本文中不表示数量的限制,而是表示所提到的项目中的至少一个项目的存在。本文中参考信号所使用的术语“断言”表示信号的状态,其中信号是活动的,并且它可以通过对该信号应用任何逻辑电平(逻辑0或逻辑1)来实现。术语“跟在...之后”或“在...之后”可以指紧跟或跟在某个或某些其它事件之后。也可根据备选实施例执行其它操作序列。此外,取决于特定应用,可添加或移除额外的操作。可以使用变化的任何组合,并且得益于本公开的本领域普通技术人员将理解其许多变化、修改和备选实施例。
除非另外特别指出,否则诸如短语“X、Y或Z中的至少一个”的析取语言在本上下文中将理解为一般用于表示某个项目、项等,可以是X、Y或Z、或其任何组合(例如,X、Y和/或Z)。因此,此类析取语言一般不打算并且不应该暗示某些实施例需要至少一个X、至少一个Y、或至少一个Z各自均存在。另外,除非另外特别指出,否则诸如短语“X、Y和Z中的至少一个”之类的连接语言也应该理解为意思是X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下面提供本文所公开的装置、系统和方法的说明性示例。装置、系统和方法的实施例可包括下面所描述的示例中的任何一个或多个示例及其任何组合。
一示例包括一种网络接口装置,所述装置包括用于基于忽略暂停命令的出发时间选择分组以进行传输的电路模块。在一些示例中,暂停命令是暂停分组。在一些示例中,暂停命令是优先级流控制(PFC)分组。
示例1包括一个或多个示例,并且包括一种设备,该设备包括:包含电路模块的网络接口装置,所述电路模块用于基于造成拥塞的流的数量调整分组的传输速率。
示例2包括一个或多个示例,其中,在分组报头字段中从检测到拥塞的网络接口装置接收造成拥塞的流的数量。
示例3包括一个或多个示例,其中,基于造成拥塞的流的数量调整传输速率包括基于造成拥塞的流的数量调整加性增加(AI)参数。
示例4包括一个或多个示例,其中,基于造成拥塞的流的数量调整传输速率包括基于AI参数除以造成拥塞的流的数量来调整拥塞窗口大小。
示例5包括一个或多个示例,其中,电路模块将基于往返时间(RTT)和基线RTT之间的差来调整拥塞窗口大小。
示例6包括一个或多个示例,其中,RTT基于分组传输时间和接收确认(ACK)的时间之间的差。
示例7包括一个或多个示例,其中,调整拥塞窗口大小包括基于第一阈值增加拥塞窗口大小。
示例8包括一个或多个示例,其中,调整拥塞窗口大小包括基于差大于第一阈值且小于第二阈值而将拥塞窗口设置为拥塞窗口值。
示例9包括一个或多个示例,其中,调整拥塞窗口大小包括基于第二阈值减小拥塞窗口大小。
示例10包括一个或多个示例,其中,电路模块包括可编程分组处理管线。
示例11包括一个或多个示例,包括包含至少一个处理器的服务器,所述至少一个处理器执行驱动以将电路模块配置成基于造成拥塞的流的数量来调整分组传输速率。
示例12包括一个或多个示例,包括包含该服务器和第二服务器的数据中心,其中,第二服务器将从网络接口装置接收所传送的分组。
示例13包括一个或多个示例,并且包括一种设备,该设备包括:包含电路模块的网络接口装置,所述电路模块用于基于时延是增加还是减少来调整流的分组的传输速率。
示例14包括一个或多个示例,其中,时延基于测量的往返时间和基线往返时间。
示例15包括一个或多个示例,其中,基线往返时间包括非拥塞网络的往返时间。
示例16包括一个或多个示例,并且包括包含存储在其上的指令的计算机可读介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器:将网络接口装置配置成基于造成拥塞的流的数量和/或基于时延是增加还是减少来调整分组的传输速率。
示例17包括一个或多个示例,其中,基于造成拥塞的流的数量调整分组的传输速率包括基于造成拥塞的流的数量调整加性增加(AI)参数。
示例18包括一个或多个示例,其中,基于造成拥塞的流的数量调整传输速率包括基于AI参数除以造成拥塞的流的数量来调整拥塞窗口大小。
示例19包括一个或多个示例,包括存储在其上的指令,所述指令在由一个或多个处理器执行时使所述一个或多个处理器:将网络接口装置配置成基于往返时间(RTT)相对于基线RTT的确定的差来调整拥塞窗口大小。
示例20包括一个或多个示例,其中,时延基于测量的往返时间和基线往返时间。
Claims (23)
1.一种设备,包括:
包含电路模块的网络接口装置,所述电路模块用于基于造成拥塞的流的数量调整分组的传输速率。
2.如权利要求1所述的设备,其中,在分组报头字段中从检测到所述拥塞的网络接口装置接收造成拥塞的所述流的数量。
3.如权利要求1所述的设备,其中,基于造成拥塞的所述流的数量调整所述传输速率包括基于造成拥塞的所述流的数量调整加性增加(AI)参数。
4.如权利要求3所述的设备,其中,基于造成拥塞的所述流的数量调整所述传输速率包括基于所述AI参数除以造成拥塞的所述流的数量来调整拥塞窗口大小。
5.如权利要求1-4中任一权利要求所述的设备,其中,所述电路模块将基于往返时间(RTT)和基线RTT之间的差来调整拥塞窗口大小。
6.如权利要求5所述的设备,其中,所述RTT基于分组传输时间和接收确认(ACK)的时间之间的差。
7.如权利要求5所述的设备,其中,调整所述拥塞窗口大小包括基于第一阈值增加所述拥塞窗口大小。
8.如权利要求5所述的设备,其中,调整所述拥塞窗口大小包括基于所述差大于第一阈值且小于第二阈值而将所述拥塞窗口设置为拥塞窗口值。
9.如权利要求5所述的设备,其中,调整所述拥塞窗口大小包括基于第二阈值减小所述拥塞窗口大小。
10.如权利要求1-9中任一权利要求所述的设备,其中,所述电路模块包括可编程分组处理管线。
11.如权利要求1-10中任一权利要求所述的设备,包括包含至少一个处理器的服务器,所述至少一个处理器执行驱动以将所述电路模块配置成基于造成拥塞的流的数量来调整分组传输速率。
12.如权利要求11所述的设备,包括包含所述服务器和第二服务器的数据中心,其中,所述第二服务器将从所述网络接口装置接收所传送的分组。
13.一种设备,包括:
包含电路模块的网络接口装置,所述电路模块用于基于时延是增加还是减少来调整流的分组的传输速率。
14.如权利要求13所述的设备,其中,所述时延基于测量的往返时间和基线往返时间。
15.如权利要求14所述的设备,其中,所述基线往返时间包括非拥塞网络的往返时间。
16.如权利要求13-15中任一权利要求所述的设备,其中,所述电路模块包括可编程分组处理管线。
17.一种包含存储在其上的指令的计算机可读介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器:
将网络接口装置配置成基于造成拥塞的流的数量和/或基于时延是增加还是减少来调整分组的传输速率。
18.如权利要求17所述的计算机可读介质,其中,基于造成拥塞的流的数量来调整分组的所述传输速率包括基于造成拥塞的所述流的数量来调整加性增加(AI)参数。
19.如权利要求18所述的计算机可读介质,其中,基于造成拥塞的所述流的数量来调整所述传输速率包括基于所述AI参数除以造成拥塞的所述流的数量来调整拥塞窗口大小。
20.如权利要求17-19中任一权利要求所述的计算机可读介质,包括存储在其上的指令,所述指令在由一个或多个处理器执行时使所述一个或多个处理器:
将所述网络接口装置配置成基于往返时间(RTT)相对于基线RTT的确定的差来调整拥塞窗口大小。
21.如权利要求20所述的计算机可读介质,其中,所述RTT基于分组传输时间和接收确认(ACK)的时间之间的差。
22.如权利要求17-21中任一权利要求所述的计算机可读介质,其中,所述时延基于测量的往返时间和基线往返时间。
23.如权利要求17-22中任一权利要求所述的计算机可读介质,其中,在分组报头字段中从检测到所述拥塞的网络接口装置接收造成拥塞的所述流的数量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/545962 | 2021-12-08 | ||
US17/545,962 US20220103484A1 (en) | 2021-12-08 | 2021-12-08 | Congestion control |
PCT/US2022/048237 WO2023107208A1 (en) | 2021-12-08 | 2022-10-28 | Congestion control |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117581518A true CN117581518A (zh) | 2024-02-20 |
Family
ID=80821819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280046335.XA Pending CN117581518A (zh) | 2021-12-08 | 2022-10-28 | 拥塞控制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220103484A1 (zh) |
CN (1) | CN117581518A (zh) |
WO (1) | WO2023107208A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
US20220103484A1 (en) * | 2021-12-08 | 2022-03-31 | Intel Corporation | Congestion control |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1779347A4 (en) * | 2004-08-17 | 2009-06-17 | California Inst Of Techn | METHOD AND DEVICE FOR NETWORK EXTENSION CONTROL USING A QUEEN CONTROL AND DISTANCE DELAY MEASUREMENTS |
JP5146725B2 (ja) * | 2007-09-19 | 2013-02-20 | 日本電気株式会社 | 通信装置および通信方法 |
KR102363534B1 (ko) * | 2015-06-08 | 2022-02-17 | 삼성전자주식회사 | 통신 시스템에서 tcp 기반의 전송 제어 방법 및 장치 |
US20220103484A1 (en) * | 2021-12-08 | 2022-03-31 | Intel Corporation | Congestion control |
-
2021
- 2021-12-08 US US17/545,962 patent/US20220103484A1/en active Pending
-
2022
- 2022-10-28 WO PCT/US2022/048237 patent/WO2023107208A1/en active Application Filing
- 2022-10-28 CN CN202280046335.XA patent/CN117581518A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023107208A1 (en) | 2023-06-15 |
US20220103484A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210119930A1 (en) | Reliable transport architecture | |
US11575609B2 (en) | Techniques for congestion management in a network | |
US10944660B2 (en) | Managing congestion in a network | |
US20210328930A1 (en) | Predictive queue depth | |
US20240195740A1 (en) | Receiver-based precision congestion control | |
US20210320866A1 (en) | Flow control technologies | |
CN117581518A (zh) | 拥塞控制 | |
US20220014478A1 (en) | Resource consumption control | |
US20210288910A1 (en) | Network interface device with support for hierarchical quality of service (qos) | |
US20220210075A1 (en) | Selective congestion notification by a network interface device | |
US20220166698A1 (en) | Network resource monitoring | |
US20220311711A1 (en) | Congestion control based on network telemetry | |
US20220078119A1 (en) | Network interface device with flow control capability | |
WO2023003603A1 (en) | Cache allocation system | |
CN117157957A (zh) | 交换机引发的拥塞消息 | |
US20220210084A1 (en) | Timestamp synchronization between host and network interface device | |
US20220103479A1 (en) | Transmit rate based on detected available bandwidth | |
US20220321478A1 (en) | Management of port congestion | |
CN115118668A (zh) | 流控制技术 | |
EP4187869A1 (en) | Egress packet scheduling | |
US20220006750A1 (en) | Packet transmission scheduling fairness | |
CN117716677A (zh) | 基于网络接口设备的计算 | |
US20230082780A1 (en) | Packet processing load balancer | |
WO2023027854A1 (en) | System for storage of received messages | |
US20230123387A1 (en) | Window-based congestion control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |