CN114070794A - 可编程拥塞控制通信方案 - Google Patents
可编程拥塞控制通信方案 Download PDFInfo
- Publication number
- CN114070794A CN114070794A CN202110896730.4A CN202110896730A CN114070794A CN 114070794 A CN114070794 A CN 114070794A CN 202110896730 A CN202110896730 A CN 202110896730A CN 114070794 A CN114070794 A CN 114070794A
- Authority
- CN
- China
- Prior art keywords
- congestion
- network adapter
- packets
- events
- pipe
- 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
- 238000004891 communication Methods 0.000 title claims description 11
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 12
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 8
- 230000000116 mitigating effect Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 10
- 102100036409 Activated CDC42 kinase 1 Human genes 0.000 description 8
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 8
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 4
- 208000023463 mandibuloacral dysplasia Diseases 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000120 microwave digestion Methods 0.000 description 2
- 241001439211 Almeida Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 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/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
-
- 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/33—Flow control; Congestion control using forward notification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
网络适配器包括接收(Rx)管道、发送(Tx)管道和拥塞管理电路。Rx管道被配置为接收对等网络适配器通过网络发送的分组,并处理接收到的分组。Tx管道被配置为通过网络将分组发送到对等网络适配器。拥塞管理电路被配置为从Tx管道和从Rx管道接收从与对等网络适配器交换的分组中的至少一些导出的拥塞控制(CC)事件,以与对等网络适配器交换用户可编程的拥塞控制分组,并响应于CC事件和用户可编程的拥塞控制分组减轻影响一个或多个分组的拥塞。
Description
相关申请的交叉引用
本申请要求于2019年11月14日提交的美国专利申请16/683,302的部分继续申请,其公开内容通过引用并入本文。
技术领域
本发明一般地涉及分组通信网络,并且具体地涉及用于此类网络中的拥塞控制的方法和系统。
背景技术
通信系统中分组流量的拥塞管理很重要,因为不佳的拥塞控制可能会显着影响系统性能。
行业中使用了一些拥塞控制技术,例如Almeida和Belo在1999年11月21日至24日举行的第10届IEEE局域网和城域网研讨会的“Explicit rate congestion control withbinary notifications(使用二进制通知的显式速率拥塞控制)”描述了一种用于分组交换网络的基于速率的源自适应算法,其中向源发送二进制通知,反映源速率和估计公平速率之间的正或负差异,并且基于这些通知,源增加或减少发送速率。
互联网工程任务组(IETF)RFC 3168,名称为“The Addition of ExplicitCongestion Notification(ECN)to IP(将显式拥塞通知(ECN)添加到IP)”,2001年9月,指定将显式拥塞通知(ECN)并入TCP和IP,包括ECN在IP报头中使用两位。
发明内容
在此描述的本发明的实施方式提供了一种网络适配器,包括接收(Rx)管道、发送(Tx)管道和拥塞管理电路。Rx管道被配置为接收对等网络适配器通过网络发送的分组,并处理接收到的分组。Tx管道被配置为通过网络将分组发送到对等网络适配器。拥塞管理电路被配置为从Tx管道和从Rx管道接收源自与所述对等网络适配器交换的至少一些分组的拥塞控制(CC)事件,与所述对等网络适配器交换用户可编程的拥塞控制分组,并响应于所述CC事件和所述用户可编程的拥塞控制分组减轻影响一个或多个分组的拥塞。
在一些实施方式中,所述拥塞影响发送到所述对等网络适配器的分组,并且其中所述拥塞管理电路被配置为根据所述CC事件和所述用户可编程的拥塞控制分组来节流所述Tx管道发送的分组的传输速率。在其他实施方式中,所述拥塞影响从所述对等网络适配器接收的分组,并且其中所述拥塞管理电路被配置为基于所述CC事件和所述用户可编程的拥塞控制分组生成拥塞通知,并将所述拥塞通知发送到所述对等网络适配器。
在一个实施方式中,所述拥塞管理电路支持应用编程接口(API),用于接收用户定义的拥塞控制(CC)软件代码,并通过运行所述CC软件代码来减轻所述拥塞。在另一个实施方式中,所述可编程拥塞控制分组具有管理数据报(MAD)分组的格式。
在一些实施方式中,所述拥塞管理电路包括被配置为预处理所述CC事件的硬件拥塞控制电路,以及被配置为响应于所述预处理的CC事件来减轻所述拥塞的用户可编程拥塞控制处理器。所述硬件拥塞控制电路被配置为合并两个或更多个CC事件,并将所合并的CC事件提供给所述拥塞控制处理器。
根据本发明的一个实施方式,还提供了一种通信方法。该方法包括使用网络适配器的接收(Rx)管道,接收对端网络适配器通过网络发送的分组,并对接收到的分组进行处理。使用所述网络适配器的发送(Tx)管道,通过所述网络向所述对等网络适配器发送分组。使用网络适配器中的拥塞管理电路,从Tx管道和Rx管道接收源自与对等网络适配器交换的至少一些分组的拥塞控制(CC)事件。用户可编程的拥塞控制分组与对等网络适配器交换。响应于CC事件和用户可编程的拥塞控制分组,缓解影响一个或多个分组的拥塞。
根据本发明的实施方式,还提供了一种网络适配器,包括接收(Rx)管道、发送(Tx)管道和管理电路。Rx管道被配置为接收对等网络适配器通过网络发送的分组,并处理接收到的分组。Tx管道被配置为通过所述网络向所述对等网络适配器发送分组。管理电路被配置为从所述Tx管道和所述Rx管道接收源自与所述对等网络适配器交换的至少一些分组的事件,与所述对等网络适配器交换用户可编程的控制分组,并响应于所述事件和所述用户可编程的控制分组执行控制操作。
根据本发明的一个实施方式,还提供了一种通信方法,包括使用网络适配器的接收(Rx)管道,接收对等网络适配器通过网络发送的分组,并对接收到的分组进行处理。使用所述网络适配器的发送(Tx)管道,通过所述网络向所述对等网络适配器发送分组。使用网络适配器中的管理电路,从Tx管道和Rx管道接收源自与对等网络适配器交换的至少一些分组的事件。用户可编程的控制分组与对等网络适配器交换。响应于事件和用户可编程的控制分组执行控制操作。
本发明将通过以下对其实施方式的详细描述并结合附图而得到更全面的理解,其中:
附图说明
图1是示意性地示出了根据本发明的实施方式的使用具有拥塞缓解的融合以太网(RoCE)上的远程直接存储器访问(RDMA)的系统的框图;
图2是示意性地示出了根据本发明实施方式的网络适配器的结构的框图;
图3是示意性地示出了根据本发明实施方式的拥塞控制管理数据报(CC-MAD)的结构的表格;
图4A是示意性地示出了根据本发明实施方式的被配置为反应点(RP)的网络适配器中的拥塞控制流程的流程图;以及
图4B是示意性地示出了根据本发明实施方式的被配置为通知点(NP)的网络适配器中的拥塞控制流程的流程图。
具体实施方式
概述
传输控制协议(TCP)于1974年推出,但其拥塞控制(CC)算法不断发展。CC算法响应于源接收的拥塞通知,更改来自发送分组的源(例如,源节点中的网络适配器)的分组发送速率。拥塞通知通常添加到分组流中(作为单独的分组,或作为现有分组中的附加信息)。当分组到达它们的目的地(例如,目的地节点中的网络适配器)时,目的地将拥塞通知发送回源,这可能会降低响应通知的发送速率(如果没有接收到拥塞通知,则增加速率)。
已经(并且仍然)建议了许多CC算法,这些算法与响应于拥塞通知的发送速率设置有关(例如,参见美国专利7,000,025)。CC算法可以是例如面向流的,并且响应于关于相同流的分组的拥塞通知,可以独立地控制每个分组流的速率。
拥塞控制(CC)算法可由运行在主机处理器上的软件或专用硬件执行。在主机上实现软件有一些主要缺点。首先,主机软件实现通常表现出由处理拥塞通知所需的上下文切换引起的长延迟;其次,主机软件实现消耗大量CPU资源;最后,由主机软件执行的算法需要网络适配器和主机之间通过总线进行通信。另一方面,软件实现通常很灵活,允许轻松适应新的CC算法和改变网络配置,而硬件实现往往是僵化的,难以修改。
高效的拥塞控制算法可能需要测量网络的往返延迟,其从发送网络适配器到接收网络适配器,然后返回。这种测量通常使用往返时间(RTT)测量分组完成,该测量分组由发送网络适配器发起并由接收网络适配器路由回,其中每个网络适配器添加与网络适配器接收和/或发送RTT分组的时间有关的时间戳。
一些拥塞控制算法可能需要使用额外的控制/通知分组在发送和接收网络适配器之间传输额外的数据。
在此公开的根据本发明的实施方式提供具有可编程拥塞管理的灵活且快速的网络适配器。拥塞管理可用于发送和接收网络适配器,它们使用拥塞通知、专有可编程拥塞控制分组和RTT测量分组进行通信。
下面的描述是指网络适配器。在一些实施方式中,网络适配器可以包括以太网网络接口控制器(NIC);在其他实施方式中,网络适配器可以包括无线宽带主机通道适配器(HCA),在其他实施方式中,可以使用任何其他合适的网络适配器。
下面我们将接收数据(并接收拥塞通知)的网络适配器称为通知点(NP),将发送数据(并可能需要对拥塞通知做出反应)的网络适配器称为反应点(RP)。可以理解,NP和RP都可以发送和接收分组,并且术语NP和RP仅指特定的拥塞控制的分组流。
在NP和RP中的每一个中,网络适配器通常包括一个或多个入口端口,它们从网络接收分组并将分组发送到进一步的输入处理(例如,解析、排队和转向);和一个或多个出口端口,它们接收经过处理(例如,转向和排队)的分组并将分组发送到网络。在下面的描述中,我们将入口端口的聚合和进一步的输入处理称为接收管道,将出口分组处理和出口端口的聚合称为发送管道。
在一些实施方式中,网络适配器还包括拥塞管理电路,接收和发送管道向其发送拥塞相关事件。拥塞相关事件可以包括发送分组的每个预定义突发的Tx事件,以及以下接收分组的Rx事件:肯定和否定确认(ACK和NACK)分组;拥塞通知分组(对等网络适配器响应发送的分组而发回的分组)、RTT测量分组和用户定义的可编程拥塞控制分组。
在实施方式中,拥塞管理电路执行拥塞控制算法并且可以向对等网络适配器发出响应。在RP中,拥塞管理电路进一步被配置为对网络适配器的发送速率进行节流,降低速率以减轻拥塞,并且当拥塞较轻(或不存在)时,增加发送速率以提高性能。
一些拥塞控制算法可能需要在NP和RP之间传输信息。一个例子是RTT分组;但是,为了允许各种拥塞控制算法,可能会出现其他需求(例如,在基于信用的拥塞控制算法中发送信用)。本发明的实施方式允许在NP和RP之间发送和接收通用用户可编程拥塞控制消息。在实施方式中,用户可编程的拥塞控制分组具有如无限宽带所定义的消息数据报(MAD)格式(拥塞控制MAD被称为CC-MAD)。在其他实施方式中,代替MAD或者除了MAD之外,可以使用不同格式的拥塞控制分组。
在实施方式中,拥塞管理电路包括拥塞控制电路(CCC)和拥塞控制精简指令集计算机(CC-RISC),其中CC-RISC被配置为运行可编程拥塞控制算法,并且CCC被配置为接收拥塞控制输入,包括拥塞事件和CC分组,预处理(例如,排队和合并)拥塞控制输入,并将输入发送到CC-RISC。在实施方式中,接收和发送管道可以将一些或全部拥塞控制输入直接发送到CC-RISC。在另一个实施方式中,一些拥塞控制算法可以由除CC-RISC之外的电路来实现,例如CCC或接收/发送管道。
在一些实施方式中,CC-RISC可以包括市售的RISC内核,例如RISC-V、ARM或任何其他合适的处理器。在其他实施方式中,可以使用多个相同或不同类型的处理器。
在下面的一些示例实施方式中,我们将参考融合以太网(RoCE)上的远程直接存储器访问(RDMA);然而,本文公开的技术不限于RoCE,并且可以在任何合适的网络配置中使用,例如非易失性结构上存储器(NVM-F)。
上文引用的于2019年11月14日提交的美国专利申请16/683,302中解决了可编程拥塞控制的其他方面。
系统描述
图1是示意性地描述了根据本发明的实施方式的具有拥塞减轻的RoCE通信系统100的框图。发送网络适配器102通过网络104向接收网络适配器106发送分组。发送网络适配器和接收网络适配器都被配置为发送和接收分组;上文中的术语“发送”和“接收”是指缓解拥塞的方向。根据图1所示的示例实施方式,发送网络适配器102和接收网络适配器106可以是相同的(尽管配置不同)。
发送网络适配器102和接收网络适配器106中的每一个包括发送(TX)管道110,其对网络适配器发送的分组进行排队和仲裁;接收(RX)管道112,其接收来自网络的传入分组,以及拥塞管理单元114。
发送网络适配器102的发送管道110对出口分组进行排队和仲裁,并通过网络104发送分组。出口分组可以源自,例如,耦合到网络适配器的CPU(未示出),或来自拥塞管理114。
根据图1所示的示例实施方式,网络包括交换机116,当拥塞时,该交换机可以用显式拥塞指示(ECN)标记发送网络适配器发送的分组。
接收网络适配器106将返回分组发送回发送网络适配器,包括用于拥塞控制的分组,例如CNP分组、ACK/NACK分组、RTT测量分组和可编程CC分组(将在下面描述)。当接收网络适配器接收到带有ECN指示的分组时,接收网络适配器将CNP分组发送回发送网络适配器。
根据图1所示的示例实施方式,网络适配器可以生成可编程CC分组,以促进各种可编程拥塞控制算法(例如,基于信用)。在图1所示的示例实施方式中,这种可编程CC分组是无限宽带管理数据报(MAD),并且在下文中将被称为CC-MAD。在其他实施方式中,替代CC-MAD分组或者除了CC-MAD分组之外,可以使用其他CC分组。
拥塞管理114被配置为执行拥塞控制算法,发起拥塞控制分组的发送并减轻RoCE发送路径中的拥塞。
当发送管道110发送分组突发时拥塞管理114接收Tx事件,并且当接收管道112接收拥塞通知分组时接收Rx事件。接收到的拥塞通知分组可以包括例如响应于发送的分组而接收到的ACK和NACK、接收网络适配器响应于接收到ECN标记的分组而生成的CNP分组、RTT测量分组和拥塞控制分组。
拥塞管理114被配置为:
i)接收与出口分组(或出口分组的突发)传输有关的事件;
ii)接收与接收拥塞控制分组有关的事件;
iii)控制发送管道发送RTT分组;
iv)从接收管道接收返回的RTT分组;
v)构建、发送(通过发送管道)和接收(通过接收管道)拥塞控制分组;
vi)运行拥塞控制算法;和,
vii)在接收网络适配器中-按照拥塞控制算法的指示调整发送速率(在一些实施方式中,拥塞管理为每个分组流单独运行拥塞控制算法,并且为每个流单独确定发送速率)。
因此,根据图1所示的示例实施方式,拥塞控制电路处理拥塞事件并运行拥塞控制算法。为了减轻RoCE网络协议(或其他合适的协议)中的拥塞,网络适配器102包括CC管理电路,其监视出口流量、发起和接收拥塞控制分组和通知、发送和接收拥塞控制分组并运行合适的拥塞控制算法;如果网络适配器是发送端点,则拥塞控制管理也会节流发送速率。
如将理解的,RoCE架构100的配置是纯粹为了概念清楚而描绘的示例配置。在本发明的替代实施方式中可以使用其他合适的配置。例如,代替(或除了)RoCE之外,架构可以是TCP和/或融合非易失性存储器(NVM)存储(例如,超融合NVM-f)。
图2是示意性地示出了根据本发明实施方式的网络适配器102(图1)的结构的框图。网络适配器102可以是发送网络适配器或接收网络适配器。在RoCE的上下文中,发送网络适配器是反应点(RP),而接收网络适配器是通知点(NP)。
网络适配器102包括发送管道110、接收管道112和拥塞管理114(以上参考图1简要描述了所有这些)。发送管道110包括发送WQE(SXW)电路202,其被配置为与耦合到网络适配器的CPU(未示出)交换工作队列元素(WQE)和完成队列元素(CQE);并生成出口分组。发送管道还包括发送分组(SXP)电路204,其被配置为通过网络对分组进行排队、仲裁和发送。
接收管道112包括解析和引导(PSA)电路206,其被配置为解析和引导入口分组;以及,接收电路(RXT)208,其被配置为处理入口分组并将入口分组转发到耦合到网络适配器的CPU(通常但不一定,相同的CPU耦合到发送管道和接收管道)。
拥塞管理114包括拥塞控制电路210和拥塞控制精简指令集计算机(CC-RISC)212,其包括一个或多个CPU(例如RISC-V或ARM),并且被配置为使用专用低开销软件(以下称为固件或FW)来执行拥塞控制算法。。
请注意,当NP网络适配器将RTT消息路由回(添加时间戳后)时,NP会绕过拥塞管理114,并将RTT分组直接从接收管道路由到发送管道;每个管道向分组添加时间戳。
在一些实施方式中,CCC 210被配置为从接收和发送管道接收拥塞控制事件和分组,以合并、排队这些事件并将这些事件发送到CC-RISC,接收来自CC-RISC的响应并发送CC-RISC消息到发送管道。
上面描述的硬件和固件拥塞控制任务之间的划分是作为例子引用的。在替代实施方式中,可以使用硬件(例如,CCC 210)和固件(例如,在CC-RISC 212上运行的代码)之间的拥塞控制任务的任何合适的划分。在实施方式中,一些拥塞控制任务可以由外部CPU执行。
SXW 202向CCC 210发送Tx事件通知。这样的事件可以包括发送分组突发的指示。在一些实施方式中,SXW发送与相同流的分组突发的传输相对应的通知;在其他实施方式中,仅发送与预定义子集(例如,与通过预定义端口离开的分组)有关的通知。地址向量(AV)可以附加到Tx事件通知,以识别分组流。在替代实施方式中,SXW 202可以将一些或所有Tx事件直接发送到CC-RISC 212。
RXT 208向CCC 210发送CC Rx事件通知和入口CC分组。在一些实施方式中,RXT例如,根据接收通知的入口端口仅发送一些通知。CC Rx事件包括接收到的ACK分组、NACK分组、RTT测量分组和(如果网络适配器是接收网络适配器)ECN通知。在一些实施方式中,RXT发送ACK和NACK指示而不是完整的ACK/NACK分组;在其他实施方式中,RXT例如,根据接收通知的入口端口仅向CCC发送一些通知。在其他实施方式中,RXT 208直接向CC-RISC 212发送Rx事件和/或CC分组。
CCC 210被配置为从发送管道接收Tx事件和相应的AV指示;以及,来自接收管道的Rx事件和CC分组。CCC可以合并一些或所有事件并将合并的事件组和任何CC分组发送到CC-RISC。
CC-RISC 212从CCC 210或直接从SXW 202和RXT 208接收CC事件和CC分组。CC-RISC被配置为运行拥塞控制算法,并且响应于算法运行,通过CCC 210输出指示到SXP 204(在一些实施方式中,CC-RISC可以直接向SXP 204发送一些或所有输出指示)。
在一些实施方式中,当网络适配器被配置为RP时,CC-RISC 212输出到管道的指示包括:i)CC-RISC通过CCC发送的指示:发送RTT指示(以测量往返延迟)和CC分组;并且,ii)CC-RISC直接发送到SXW 204的指示:Tx速率,对于每个分组流(在一些实施方式中,CC-RISC发送递增速率或递减速率指示;在其他实施方式中,CC-RISC总是发送所有流的更新速率)。
在实施方式中,当网络适配器被配置为NP时,CC-RISC 212输出的指示包括CC分组,网络适配器可以响应于一些入口分组发回CC分组。
CC-RISC 212和CCC 210之间的接口可以包括CCC发送给CC-RISC的合并CC事件,以及CC-RISC发送给CCC的事件响应(包括ACK、NACK、RTT)。通常,CCC向CC_RISC发送事件描述符而不是事件,这些描述符是相应事件的浓缩表示。CCC和CC-RISC之间的接口还包括CC分组—CCC转发给CCC从RXT接收到的CC-RISC的CC分组;并且,CC-RISC可以生成CC分组,并将CC分组通过CCC发送给SXP。
在各种实施方式中,可以使用上述CCC-CC-RISC接口的变体。例如,在一些实施方式中,CCC可以向CCC发送Tx速率递增和递减指示;CCC可以存储所有流的当前Tx速率,响应于CC-RISC的指示增加或减少速率值,并将所有流的更新速率发送到SXW。
为了实现可靠的往返时间测量,网络适配器112在配置为NP时,应该以最小延迟将RTT分组从输入路由到输出。在图2所示的示例实施方式中,PSA 106将入口RTT分组直接路由到SXP 204,SXP 204将RTT分组发送回已经发送入口RTT的网络适配器。PSA 206和SXP204通常分别向NP网络适配器发送的RTT分组添加入口和出口时间戳。
在本发明的一些实施方式中,为了避免拥塞控制事件处理中的拥塞,拥塞管理被配置为丢弃(丢掉)一些不太重要的CC事件。
可以理解,图2中所示的网络适配器102的结构是作为示例引用的。根据所公开技术的网络适配器不限于上文的描述。在替代实施方式中,例如,一些拥塞控制算法可以由硬件(例如,由CCC 210)执行;在实施方式中,CCC 210被配置为使用硬件来执行所有拥塞控制算法,并且可能不需要CC-RISC 212。在其他实施方式中,可以使用硬件(例如,CCC 210)和固件(例如,CC-RISC 212)之间的拥塞控制任务的任何合适的划分,包括例如基于RISC-V净荷的动态划分。
在一些实施方式中,可以监视更多事件,例如在每个接收到的分组上的Rx事件。在实施方式中,CCC或其部分可以嵌入在发送管道内和/或接收管道内。
CC分组和CC-MAD分组
在根据本发明的实施方式中,对等NP和RP网络适配器可以交换用户可编程拥塞控制(CC)消息。这样的CC消息可以包括CC管理数据报(CC-MAD)和由程序员定义的其他类型的分组(后面的消息将被称为非MAD CC分组)。
CC-MAD是管理数据报(MAD),由无限宽带规范第1卷第1.4版第13.4章定义。根据本发明的实施方式,CC-MAD被封装在CC-MAD分组中(并且因此被限制为256字节),并且由队列对1(QP 1)处理,该队列对1(QP 1)可以在Tx管道中被分配高优先级。在一些实施方式中,拥塞管理将CC-MAD直接发送到SXP 204(图2),绕过队列对机制。在NP中,PSA 206(图2)检测到的MAD可能比其他分组获得更高的优先级;在一些实施方式中,这样的分组被直接路由到CC管理。
根据实施方式,网络适配器的用户可以定义若干CC-MAD类型并在CC-MAD净荷中插入特殊操作码,以在对等网络适配器之间发信号通知拥塞控制事件。
图3是示意性地示出了根据本发明实施方式的CC-MAD 300的结构的表格。CC-MAD包含256个字节。图3中的每一行描绘了四个字节(32位)的内容。
CC-MAD的前六个条目(图3中的前六行;字节23:0)包括由无限宽带定义的MAD字段。基本版本(字节3)值为0x01。类(字节2)、类版本(字节1)和属性ID(字节18、19)是固件可配置的(FW CR)。
CC-MAD的下两个条目(字节31:24)定义了固件可配置的64位密钥。密钥根据预设算法(例如,通过推进反馈移位寄存器(FSR))每隔预设时间段(例如,一秒)更改一次。密钥的目的是防止黑客试图通过发送大量的CC-MAD来压垮网络适配器—网络适配器将拒绝与当前密钥不匹配的任何MAD分组。密钥检查通常由Rx管道中的硬件完成,对性能影响很小或没有影响。
下一个条目(字节35:32)是8位固件可配置的能力掩码(未使用的位为0),其可用于设置分组的能力参数(CC MAD分组中能力字段的使用超出本发明的范围)。接下来,字节39定义了拥塞控制消息类型,其可以根据CC-MAD的类型来设置和定义,字节38:36定义了双字的消息大小(因为消息大小限制为256字节(64个双字),这个24位字段的最多6位将是非零的)。
字节[255:44]为CC-MAD的净荷,FW可以根据选择的拥塞控制算法的需要进行设置。由于分组的长度可能不同,最后未使用的字节通常(但不一定)为0。
可以理解,以示例的方式引用了如图2所示的CC-MAD 300的结构。根据所公开技术的CC-MAD不限于上文的描述。在替代实施方式中,CC-MAD可以包括多于256个字节;各个字段的内容和顺序可能不同。可以使用除识别密钥之外的安全手段,包括例如公钥认证。
在一些实施方式中,替代CC-MAD或除了CC-MAD之外,其他类型的控制分组可以用于执行其他类型的控制操作。然而,Tx和Rx管道将为此类控制分组分配较低的优先级(QP-1,分配给CC-MAD,通常将获得高优先级),并且此类分组的安全性将不会由硬件检查。
API
在一些实施方式中,CCC到CC-RISC接口包括应用程序编程接口(API)。在示例实施方式中,API包括以下参数:
流程图
图4A和图4B示出了针对RP和NP配置的拥塞管理流程。流程图是为了概念清晰而呈现的,并且不一定代表事件的顺序;此外,虽然根据图4A、图4B及其描述,拥塞管理114执行流程图,但在实施方式中,流程图的各个步骤可以由网络适配器的其他组件执行,包括接收管道112、发送管道110和耦合到网络适配器的CPU(未图示)。
图4A是示意性地图示了根据本发明的实施方式的被配置为反应点(RP)的网络适配器中的拥塞控制流400的流程图。该流程图由拥塞管理114(图2)使用硬件(例如,CCC210)和/或使用固件(例如,CC-RISC 212)来执行。
该流程开始于获取Tx事件步骤402,其中拥塞管理从输出管道接收任何未决Tx事件,例如已经发送了分组的突发(对应于同一流)的通知。可以随每个Tx事件接收地址向量,其指示分组突发的目的地。
接下来,在获取Rx事件步骤404,拥塞管理从Rx管道接收任何未决的Rx事件,包括ACK和NACK分组。在获取Rx-RTT事件406中,拥塞管理从接收管道接收任何返回的RTT分组(RP网络适配器已发送到NP网络适配器),其包括时间戳并促进往返时间的计算。
接下来,在获取CC-MAD步骤408中,拥塞管理从接收管道接收接收管道可能已经从网络接收的任何CC-MAD(通常由NP网络适配器发起)。
在步骤408之后,拥塞管理已经接收到所有当前CC输入,并且现在进入允许CC算法步骤410(在一些实施方式中,响应于该事件,拥塞管理在所有事件之后运行CC算法)。CC算法可能不同,并且包括各种现有的和尚未开发的算法;算法可能会响应于不断变化的网络条件和各种分组流而动态变化。
在接下来的三个步骤中,CC管理可以发送在步骤410中计算的输出。在输出速率步骤412中,CC管理可以为每个当前分组流输出新的Tx速率。在一些实施方式中,CC管理仅输出速率已经改变的流的Tx速率。
而在CC算法步骤410中,CC管理可以决定测量RP和NP之间的往返时间和/或向NP发送CC-MAD分组。在发送RTT步骤414中,CC管理可以向NP发送RTT分组;并且,在发送CC-MAD步骤416中,CC管理可以发送CC-MAD。在步骤416之后,拥塞管理重新进入步骤402。
图4B是示意性地图示了根据本发明的实施方式的被配置为通知点(NP)的网络适配器中的拥塞控制流450的流程图。类似于流程图400,流程图450由拥塞管理114(图2)使用硬件和/或固件来执行。
该流程开始于获取Rx事件步骤452,其中拥塞管理从接收管道接收Rx事件,例如从RP接收分组。一些分组可能具有设置的显式拥塞通知(ECN)(该位可能已经由网络中的交换机设置,例如交换机116,图1)。附加地(或替代地),在步骤452中,如果入口分组在RXT处变得拥塞(即,处理入口分组的速率比接收分组的速率慢),则拥塞管理可以从RXT 208获取拥塞通知。
接下来,在获取CC-MAD步骤454,CC管理获取RP可能已经发送的任何CC-MAD分组。在步骤454之后,CC管理进入运行CC算法步骤456以处理获取Rx事件。在步骤45中,CC管理可以准备响应,并且可能准备CC-MAD分组。
在通知拥塞步骤458,CC管理可以向RP发送显式拥塞通知分组(CNP),或者通过其他方式通知拥塞;在发送CC-MAD步骤462中,CC管理可以向RP发送CC-MAD(在步骤456中准备的)。在步骤462之后,CC管理重新进入步骤452。
根据图4B所示的示例实施方式,CC管理在NP配置中运行并行RTT处理流程。RTT处理流程开始于检查RTT步骤464,其中拥塞管理检查是否从RP接收到新的RTT。如果没有接收到新的RTT,拥塞管理将循环步骤464,直到接收到RTT。当接收到RTT时,拥塞管理将进入处理RTT步骤466,其中拥塞管理将时间戳添加到RTT并将修改后的RTT分组发送回RP。在步骤466之后,拥塞管理重新进入步骤464。
应当理解,图4A和图4B中所示的以及上文所述的流程图是作为示例引用的。在替代实施方式中,可以使用其他合适的流程图。流程图的步骤可以以不同的顺序执行;一些或所有步骤可以同时执行。根据图4A、图4B中所示的示例实施方式,事件在Rx管道和Tx管道中排队,它们在诸如402、404、452的步骤将事件转发到CC管理。在替代实施方式中,当接收到此类事件时,Rx管道和/或Tx管道将事件传递给CC管理;并且CC管理可以将事件排队,直到需要为止。在其他实施方式中,Rx管道和/或Tx管道可以组合事件组并将合并的事件发送到CC管理。在实施方式中,步骤466可以由CC管理的专用电路来完成。
图1、图2和图3中所示的网络适配器的配置,包括其组件和子组件,是纯粹为了概念清楚起见而描绘的示例配置。在替代实施方式中可以使用任何其他合适的配置。不同的网络适配器元件可以使用合适的硬件来实现,例如在一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)中,使用硬件、使用软件或使用硬件和软件元件的组合。
CC-RISC 212通常包括一个或多个可编程处理器,这些处理器以软件编程以执行这里描述的功能。该软件可以通过例如网络以电子形式下载到处理器,或者它可以替代地或附加地被提供和/或存储在非暂时性有形介质上,例如磁、光或电子存储器。
尽管这里描述的实施方式主要解决通信网络中的拥塞控制,但是这里描述的方法和系统也可以用在其他应用中,例如在自适应路由中。一般而言,网络适配器中的管理电路可以被配置为从Tx管道和从Rx管道接收源自与对等网络适配器交换的至少一些分组中的事件,与对等网络适配器交换合适的用户可编程的控制分组,并响应于事件和用户可编程的控制分组执行控制操作。可以以这种方式执行任何合适的控制操作。
因此应理解,上述实施方式是作为示例引用的,并且本发明不限于上文具体示出和描述的内容。相反,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后会想到的并且未在现有技术中公开的变化和修改。以引用方式并入本专利申请中的文件应被视为本申请的组成部分,除非在这些并入文件中以与本说明书中明确或隐含的定义相冲突的方式定义的任何术语,仅应考虑本说明书中的定义。
Claims (16)
1.一种网络适配器,包括:
接收(Rx)管道,所述接收(Rx)管道被配置为接收对等网络适配器通过网络发送的分组,并对接收到的分组进行处理;
发送(Tx)管道,所述发送(Tx)管道被配置为通过所述网络向所述对等网络适配器发送分组;以及
拥塞管理电路,所述拥塞管理电路被配置为从所述Tx管道和所述Rx管道接收源自与所述对等网络适配器交换的至少一些所述分组的拥塞控制(CC)事件,与所述对等网络适配器交换用户可编程的拥塞控制分组,并响应于所述CC事件和所述用户可编程的拥塞控制分组减轻影响一个或多个所述分组的拥塞。
2.根据权利要求1所述的网络适配器,其中所述拥塞影响发送到所述对等网络适配器的所述分组,并且其中所述拥塞管理电路被配置为根据所述CC事件和所述用户可编程的拥塞控制分组来节流所述Tx管道发送的所述分组的传输速率。
3.根据权利要求1所述的网络适配器,其中所述拥塞影响从所述对等网络适配器接收的所述分组,并且其中所述拥塞管理电路被配置为基于所述CC事件和所述用户可编程的拥塞控制分组生成拥塞通知,并将所述拥塞通知发送到所述对等网络适配器。
4.根据权利要求1所述的网络适配器,其中所述拥塞管理电路支持应用编程接口(API),用于接收用户定义的拥塞控制(CC)软件代码,并通过运行所述CC软件代码来减轻所述拥塞。
5.根据权利要求1所述的网络适配器,其中所述可编程拥塞控制分组具有管理数据报(MAD)分组的格式。
6.根据权利要求1所述的网络适配器,其中所述拥塞管理电路包括被配置为预处理所述CC事件的硬件拥塞控制电路,以及被配置为响应于所述预处理的CC事件来减轻所述拥塞的用户可编程拥塞控制处理器。
7.根据权利要求6所述的网络适配器,其中所述硬件拥塞控制电路被配置为合并两个或更多个所述CC事件,并将所合并的CC事件提供给所述拥塞控制处理器。
8.一种通信方法,包括:
使用网络适配器的接收(Rx)管道,接收对端网络适配器通过网络发送的分组,并对接收到的分组进行处理;
使用所述网络适配器的发送(Tx)管道,通过所述网络向所述对等网络适配器发送分组;和
使用所述网络适配器中的拥塞管理电路,从所述Tx管道和所述Rx管道接收源自与所述对等网络适配器交换的至少一些所述分组的拥塞控制(CC)事件,与所述对等网络适配器交换用户可编程的拥塞控制分组,并响应于所述CC事件和所述用户可编程的拥塞控制分组减轻影响一个或多个所述分组的拥塞。
9.根据权利要求8所述的方法,其中所述拥塞影响发送到所述对等网络适配器的所述分组,并且其中缓解所述拥塞包括根据所述CC事件和所述用户可编程的拥塞控制分组来节流所述Tx管道发送的所述分组的传输速率。
10.根据权利要求8所述的方法,其中所述拥塞影响从所述对等网络适配器接收的所述分组,并且其中减轻所述拥塞包括基于所述CC事件和所述用户可编程的拥塞控制分组生成拥塞通知,并且将所述拥塞通知发送到所述对等网络适配器。
11.根据权利要求8所述的方法,并且包括使用应用编程接口(API)在所述拥塞管理电路中接收用户定义的拥塞控制(CC)软件代码,其中减轻所述拥塞包括运行所述CC软件代码。
12.根据权利要求8所述的方法,其中所述可编程拥塞控制分组具有管理数据报(MAD)分组的格式。
13.根据权利要求8所述的方法,其中减轻所述拥塞包括使用硬件拥塞控制电路来预处理所述CC事件,并且通过用户可编程拥塞控制处理器响应于所述预处理的CC事件来减轻所述拥塞。
14.根据权利要求13所述的方法,其中预处理所述CC事件包括合并两个或更多个所述CC事件,并将所合并的CC事件提供给所述拥塞控制处理器。
15.一种网络适配器,包括:
接收(Rx)管道,所述接收(Rx)管道被配置为接收对等网络适配器通过网络发送的分组,并对接收到的分组进行处理;
传输(Tx)管道,所述传输(Tx)管道被配置为通过所述网络向所述对等网络适配器发送分组;和
管理电路,所述管理电路被配置为从所述Tx管道和所述Rx管道接收源自与所述对等网络适配器交换的至少一些所述分组的事件,与所述对等网络适配器交换用户可编程的控制分组,并响应于所述事件和所述用户可编程的控制分组执行控制操作。
16.一种通信方法,包括:
使用网络适配器的接收(Rx)管道,接收对等网络适配器通过网络发送的分组,并对接收到的分组进行处理;
使用所述网络适配器的发送(Tx)管道,通过所述网络向所述对等网络适配器发送分组;以及
使用所述网络适配器中的管理电路,从所述Tx管道和所述Rx管道接收源自与所述对等网络适配器交换的至少一些所述分组的事件,与所述对等网络适配器交换用户可编程的控制分组,并响应于所述事件和所述用户可编程的控制分组执行控制操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/986,428 | 2020-08-06 | ||
US16/986,428 US11296988B2 (en) | 2019-11-14 | 2020-08-06 | Programmable congestion control communication scheme |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114070794A true CN114070794A (zh) | 2022-02-18 |
Family
ID=77518904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110896730.4A Pending CN114070794A (zh) | 2020-08-06 | 2021-08-05 | 可编程拥塞控制通信方案 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3952254A1 (zh) |
CN (1) | CN114070794A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11765237B1 (en) | 2022-04-20 | 2023-09-19 | Mellanox Technologies, Ltd. | Session-based remote direct memory access |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070070901A1 (en) * | 2005-09-29 | 2007-03-29 | Eliezer Aloni | Method and system for quality of service and congestion management for converged network interface devices |
US20090282291A1 (en) * | 2008-05-08 | 2009-11-12 | Nortel Networks Limited | Internal maintenance association end point (mep) for sharing state information |
CN102792648A (zh) * | 2010-01-11 | 2012-11-21 | 捷讯研究有限公司 | 在通信系统中以显式拥塞通知进行拥塞等级指示 |
US20150304226A1 (en) * | 2012-11-05 | 2015-10-22 | Nec Corporation | Communication device, transmission data output control method, and program for same |
US20160380896A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | In-line network accelerator |
US20170093699A1 (en) * | 2015-09-29 | 2017-03-30 | Mellanox Technologies Ltd. | Hardware-based congestion control for TCP traffic |
US20170149666A1 (en) * | 2015-11-23 | 2017-05-25 | Titan Photonics, Inc. | Data traffic optimization system |
CN107204931A (zh) * | 2016-03-20 | 2017-09-26 | 迈络思科技Tlv有限公司 | 拥塞控制措施的灵活应用 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7000025B1 (en) | 2001-05-07 | 2006-02-14 | Adaptec, Inc. | Methods for congestion mitigation in infiniband |
-
2021
- 2021-08-05 EP EP21189944.8A patent/EP3952254A1/en active Pending
- 2021-08-05 CN CN202110896730.4A patent/CN114070794A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070070901A1 (en) * | 2005-09-29 | 2007-03-29 | Eliezer Aloni | Method and system for quality of service and congestion management for converged network interface devices |
US20090282291A1 (en) * | 2008-05-08 | 2009-11-12 | Nortel Networks Limited | Internal maintenance association end point (mep) for sharing state information |
CN102792648A (zh) * | 2010-01-11 | 2012-11-21 | 捷讯研究有限公司 | 在通信系统中以显式拥塞通知进行拥塞等级指示 |
US20150304226A1 (en) * | 2012-11-05 | 2015-10-22 | Nec Corporation | Communication device, transmission data output control method, and program for same |
US20160380896A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | In-line network accelerator |
US20170093699A1 (en) * | 2015-09-29 | 2017-03-30 | Mellanox Technologies Ltd. | Hardware-based congestion control for TCP traffic |
US20170149666A1 (en) * | 2015-11-23 | 2017-05-25 | Titan Photonics, Inc. | Data traffic optimization system |
CN107204931A (zh) * | 2016-03-20 | 2017-09-26 | 迈络思科技Tlv有限公司 | 拥塞控制措施的灵活应用 |
Also Published As
Publication number | Publication date |
---|---|
EP3952254A1 (en) | 2022-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3707882B1 (en) | Multi-path rdma transmission | |
US10680964B1 (en) | Rate limiting in a multi-chassis environment by exchanging information between peer network elements | |
WO2018210117A1 (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
US10084716B2 (en) | Flexible application of congestion control measures | |
US11296988B2 (en) | Programmable congestion control communication scheme | |
US11005770B2 (en) | Listing congestion notification packet generation by switch | |
EP3763094B1 (en) | Flow management in networks | |
US8213427B1 (en) | Method for traffic scheduling in intelligent network interface circuitry | |
US9419900B2 (en) | Multi-bit indicator set according to feedback based on an equilibrium length of a queue | |
US20060203730A1 (en) | Method and system for reducing end station latency in response to network congestion | |
US20210297350A1 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
Taheri et al. | RoCC: robust congestion control for RDMA | |
CN111464452B (zh) | 基于dctcp的快速拥塞反馈方法 | |
US20210297351A1 (en) | Fabric control protocol with congestion control for data center networks | |
CN104052684A (zh) | 动态适配计算机网络中的最大传输单元大小的方法和系统 | |
US20070291782A1 (en) | Acknowledgement filtering | |
US20230059755A1 (en) | System and method for congestion control using a flow level transmit mechanism | |
WO2021238799A1 (zh) | 一种数据报文传输方法及装置 | |
CN101682627A (zh) | 用于网络装置的缓冲控制的方法 | |
CN111224888A (zh) | 发送报文的方法及报文转发设备 | |
CN114070794A (zh) | 可编程拥塞控制通信方案 | |
Wang et al. | Poseidon: Efficient, Robust, and Practical Datacenter {CC} via Deployable {INT} | |
JP2008118281A (ja) | 通信装置 | |
US10778568B2 (en) | Switch-enhanced short loop congestion notification for TCP | |
US8228919B2 (en) | Communication device, and communication method and program thereof |
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 |