远程直接内存访问读取的拥塞控制方法、系统及存储介质与流程

未命名 08-13 阅读:121 评论:0


1.本发明涉及数据中心领域,具体涉及一种远程直接内存访问读取的拥塞控制方法、系统及存储介质。


背景技术:

2.数据中心网络中计算机可以通过远程直接内存访问 (remote direct memory access,简称:rdma)进行数据交换,从而使计算机的网络接口卡(network interface card,简称nic)通过网络从另外一个计算机的内存读取或者向另外一个计算机的内存写入数据,而不需要计算机的操作系统介入。rdma在以太网上运行称为rdma穿越汇聚以太网(rdma over converged ethernet,roce)技术。
3.rdma的操作类型主要有rdma send(告知)、write(写入)和read(读取)三种,在现有的rdma read操作拥塞控制时,通过接收read resp(响应)报文的速率来调整其自身发送read req(request)的频率实现对响应端网卡回复read resp发送速率的控制,但是此方案仅调节read req的频率,当read wqe(work queue element)稍大(例如1mb)时,请求端网卡每放出一个read req请求意味着响应端网卡可短时间连续回复较大(1mb)的read resp响应,因此现有技术无法实现对rdma read操作的细粒度控制,进而产生incast现象。


技术实现要素:

4.本发明实施例提供了一种远程直接内存访问读取的拥塞控制方法、系统及存储介质,可以实现rdma read操作的细粒度控制,避免出现incast现象,避免网络拥塞,提高网络流畅度。
5.第一方面,本发明实施例提供一种远程直接内存访问读取的拥塞控制方法,所述方法包括如下步骤:按初始窗口向响应侧发送rdma read请求,接收响应侧返回的read resp响应报文;依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给响应侧,接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。
6.第二方面,提供一种远程直接内存访问读取的拥塞控制方法,所述方法包括如下步骤:接收请求侧按初始窗口发送的rdma read请求,向接收侧发送read resp响应报文;接收请求侧发送的多个子报文,逐一向请求侧回复所述多个子报文对应的多个响
应子报文。
7.第三方面,提供一种请求侧设备,所述请求侧设备包括:通信单元,用于向响应侧发送rdma read请求,接收响应侧返回的read resp响应报文;处理单元,用于依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,通信单元,用于将该多个子报文发送给响应侧,接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。
8.第四方面,提供一种远程直接内存访问读取的拥塞控制系统,所述系统包括请求侧设备和响应侧设备:请求侧设备,用于按初始窗口向响应侧发送rdma read请求;响应侧设备,用于接收请求侧按初始窗口发送的rdma read请求,向接收侧发送read resp响应报文;请求侧设备,用于接收响应侧返回的read resp响应报文;依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给响应侧;响应侧设备,用于接收请求侧发送的多个子报文,逐一向请求侧回复所述多个子报文对应的多个响应子报文;请求侧设备,用于接收响应侧逐一回复所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。
9.第五方面,提供一种计算机可读存储介质,其存储用于电子数据交换的程序,其中,所述程序使得终端执行第一方面或第二方面提供的方法。
10.实施本发明实施例,具有如下有益效果:本技术在请求端网卡通过拆分rdma read wqe的方式,控制请求端发送read请求大小(即期望响应端回复的read resp报文长度和个数)及read请求频率的方式来细粒度调整响应端网卡回复read resp报文速率。此方案具有三个优点:1)实现在请求端控制read resp响应报文速率,避免read resp的incast现象;2)对read wqe大小进行拆分,实现read resp响应报文速率的细粒度控制;3)利用业务报文自身完成cc,无需增加新种类的报文。
附图说明
11.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
12.图1是一种dma的请求示意图;图2是一种远程直接内存访问读取的拥塞控制方法的流程示意图;图3是本技术提供的硬件拆包实现的总体框图;图4是一种请求侧设备的结构示意图;图5是本技术提供的一种远程直接内存访问读取的拥塞控制系统的结构示意图。
具体实施方式
13.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
14.本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
15.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
16.下面介绍下本技术涉及的概念。
17.dma:direct memory access直接存储器访问;wqe:work queue element;工作队列元素;cqe:completion queue entry;完成队列条目;dma len:dma length;远程dma操作的字节长度;incast现象是指,多打一的通信模式中,例如请求侧网卡向多个响应侧网卡发送rdma read请求,多个响应侧网卡同时回复单张请求侧网卡的rdma read请求时会出现的现象称为incast现象。
18.参阅图1,图1为一种dma的请求示意图,其中主机a的网卡a为请求侧,主机b的网卡b为响应侧,如图1所示,网卡a发送send/write请求,网卡b发送ack响应,网卡a发送read请求,网卡b发送read resp响应。请求侧网卡a发送的send/write请求报文,引发网卡a至网卡b路径的流量增加,可能造成网卡a至网卡b路径拥塞;请求侧网卡a发送的read请求报文,引发网卡b至网卡a路径的流量增加,可能造成网卡b至网卡a路径拥塞。
19.参阅图2,图2提供了一种远程直接内存访问读取的拥塞控制方法的流程示意图,如图2所示,该方法在网卡a和网卡b之间完成,其中网卡a为请求侧,网卡b为响应侧,该方法如图2所示,包括如下步骤:步骤s201、网卡a按初始窗口发送rdma read请求;步骤s202、网卡b向网卡a回复 read resp响应报文;步骤s203、网卡a根据接收read resp响应包时间或速率得到第一窗口值,即可接
收的read resp响应报文窗口值(即第一窗口值);步骤s204、网卡a将该read resp响应报文窗口值(第一窗口值)转换为可发送的read请求报文指代的需回复的read resp响应包报文窗口值(即第二窗口值);步骤s205、网卡a按该第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给网卡b;示例的,上述网卡a按该第二窗口值对read wqe拆分成多个子报文的方式本技术可以不限定,只需要网卡a按该第二窗口值对read wqe拆分多个子报文即可,例如可以平均拆分,比如第二窗口值为500kb,则可以平均拆分成5个100kb,即5个子报文,每个子报文对应100kb,当然也可以不均匀拆分,例如拆分成3个报文,前2个子报文每个200kb,最后一个100kb,本技术并不限制上述拆分的具体方式。
20.示例的,上述网卡a按该第二窗口值对read wqe拆分成多个子报文还可以包括:网卡a拥塞控制算法单元计算出当前期望响应侧回复的read resp报文长度,对read请求wqe拆分成多个子报文,每个子报文的长度为该当前期望响应侧回复的read resp报文长度。
21.示例的,上述将该多个子报文发送给网卡b具体可以包括:网卡a将该多个子报文逐一发送给网卡b,每发送一个子报文,记录一个子报文的请求包信息,该请求包信息用于验证响应侧返回的响应子报文是否正确。
22.示例的,上述将该多个子报文发送给网卡b具体可以包括:网卡a将该多个子报文逐一发送给网卡b,在网卡a发送最后一个子报文时,将最后一个子报文设置特殊标记(例如标记置1),该特殊标记用于确定是否完成一个完整的read请求wqe。
23.步骤s206、网卡b逐一回复该多个子报文对应的多个响应子报文read resp;步骤s207、网卡a接收并聚合多个响应子报文read resp并确定接收到一个完整的read请求wqe后,上报cqe。
24.本技术在请求端网卡通过拆分rdma read wqe的方式,控制请求端发送read请求大小(即期望响应端回复的read resp报文长度和个数)及read请求频率的方式来细粒度调整响应端网卡回复read resp报文速率。此方案具有三个优点:1)实现在请求端控制read resp响应报文速率,即在请求侧网卡依据其接收的read resp,释放rdma read请求的窗口,进而避免read resp的incast现象;2)对read wqe大小进行拆分,实现read resp响应报文速率的细粒度控制;3)利用业务报文自身完成cc,无需增加新种类的报文。
25.示例的,上述方法还可以包括:网卡a通过请求包信息确定该请求包信息对应的第i子报文发送错误时,网卡a将该第i子报文以及第i子报文之后的子报文全部重传给网卡b。
26.此技术方案在单一子报文发生错误时,对后续的子报文均进行重传,这样能够提高报文的准确性。
27.参阅图3,图3给出了硬件拆包实现的总体框图(类似的,也可以采用软件拆包的方式),read请求wqe的拆分和聚合在硬件完成。需注意,发送重传时,硬件不再继续对read请求进行拆分。如图3所述,软件包括:work queue,completion queue;硬件包括:coe上报单元、read resp聚合单元、rx接收单元、拥塞控制算法单元、tx发送单元、read请求拆分单元
resp响应报文速率的细粒度控制;3)利用业务报文自身完成cc,无需增加新种类的报文。
35.参阅图5,图5提供一种远程直接内存访问读取的拥塞控制系统,所述系统包括请求侧设备501和响应侧设备502:请求侧设备,用于按初始窗口向响应侧发送rdma read请求;响应侧设备,用于接收请求侧按初始窗口发送的rdma read请求,向接收侧发送read resp响应报文;请求侧设备,用于接收响应侧返回的read resp响应报文;依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给响应侧;响应侧设备,用于接收请求侧发送的多个子报文,逐一向请求侧回复所述多个子报文对应的多个响应子报文;请求侧设备,用于接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。
36.上述请求侧设备还可以用于执行请求侧的方法步骤,上述响应侧设备可以用于执行响应侧的方法步骤,具体的实现步骤可以参见如图2所示方法实施例中的描述,这里不再赘述。
37.本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种远程直接内存访问读取的拥塞控制方法的部分或全部步骤。
38.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种远程直接内存访问读取的拥塞控制方法的部分或全部步骤。
39.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以接收其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
40.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
41.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
42.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器
可以包括:闪存盘、只读存储器(英文:read-only memory ,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
43.以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:
1.一种远程直接内存访问读取的拥塞控制方法,其特征在于,所述方法包括如下步骤:按初始窗口向响应侧发送rdma read请求,接收响应侧返回的read resp响应报文;依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给响应侧,接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报完成队列条目cqe。2.根据权利要求1所述的方法,其特征在于,所述将该多个子报文发送给响应侧具体包括:将该多个子报文逐一发送给响应侧,每发送一个子报文,记录一个子报文的请求包信息,该请求包信息用于验证响应侧返回的响应子报文是否正确。3.根据权利要求1所述的方法,其特征在于,所述确定接收到一个完整的read请求wqe具体包括:将该多个子报文逐一发送给响应侧,在发送最后一个子报文时,将最后一个子报告设置特殊标记,该特殊标记用于确定是否完成一个完整的read请求wqe,若接收到该特殊标记对应的响应子报文,确定接收到一个完整的read请求wqe。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:通过请求包信息确定该请求包信息对应的第i子报文发送错误时,将该第i子报文以及第i子报文之后的子报文全部重传给响应侧。5.一种远程直接内存访问读取的拥塞控制方法,其特征在于,所述方法包括如下步骤:接收请求侧按初始窗口发送的rdma read请求,向接收侧发送read resp响应报文;接收请求侧发送的多个子报文,逐一向请求侧回复所述多个子报文对应的多个响应子报文。6.一种请求侧设备,其特征在于,所述请求侧设备包括:通信单元,用于向响应侧发送rdma read请求,接收响应侧返回的read resp响应报文;处理单元,用于依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,通信单元,用于将该多个子报文发送给响应侧,接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。7.根据权利要求6所述的请求侧设备,其特征在于,所述通信单元,具体用于将该多个子报文逐一发送给响应侧,每发送一个子报文,记录一个子报文的请求包信息,该请求包信息用于验证响应侧返回的响应子报文是否正确。8.根据权利要求7所述的请求侧设备,其特征在于,通信单元,具体用于通过请求包信息确定该请求包信息对应的第i子报文发送错误时,
将该第i子报文以及第i子报文之后的子报文全部重传给响应侧。9.一种远程直接内存访问读取的拥塞控制系统,其特征在于,所述系统包括请求侧设备和响应侧设备:请求侧设备,用于按初始窗口向响应侧发送rdma read请求;响应侧设备,用于接收请求侧按初始窗口发送的rdma read请求,向接收侧发送read resp响应报文;请求侧设备,用于接收响应侧返回的read resp响应报文;依据所述read resp响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,所述第一窗口值为接收的read resp响应报文窗口值;所述第二窗口值为发送的read请求报文指代的需回复的read resp响应报文窗口值;按所述第二窗口值对read wqe拆分成多个子报文,将该多个子报文发送给响应侧;响应侧设备,用于接收请求侧发送的多个子报文,逐一向请求侧回复所述多个子报文对应的多个响应子报文;请求侧设备,用于接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的read请求wqe后,上报cqe。10.一种计算机可读存储介质,其存储用于电子数据交换的程序,其中,所述程序使得终端执行如权利要求1-4任意一项所述的方法或如权利要求5所述的方法。

技术总结
本申请提供一种远程直接内存访问读取的拥塞控制方法、系统及存储介质,方法包括:按初始窗口向响应侧发送RDMA READ请求,接收响应侧返回的READ RESP响应报文;依据所述READ RESP响应报文的时间或速率得到第一窗口值,将所述第一窗口值转换为第二窗口值,按所述第二窗口值对READ WQE拆分成多个子报文,将该多个子报文发送给响应侧,接收响应侧逐一回复的所述多个子报文对应的多个响应子报文;接收并聚合多个响应子报文并确定接收到一个完整的READ请求WQE后,上报CQE。本申请具有提高网络性能的优点。性能的优点。性能的优点。


技术研发人员:修强 邬旭永 黎立印
受保护的技术使用者:珠海星云智联科技有限公司
技术研发日:2023.07.04
技术公布日:2023/8/9
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐