基于RDMA的发送端、接收端、数据传输系统及方法与流程

文档序号:34878982发布日期:2023-07-25 11:55阅读:49来源:国知局
基于RDMA的发送端、接收端、数据传输系统及方法与流程

本发明涉及数据传输,尤其涉及一种基于rdma的发送端、接收端、数据传输系统及方法。


背景技术:

1、数据传输系统或信息处理系统是嵌入式多节点系统,节点执行预定义任务,节点之间存在高带宽、低时延的数据传输需求。

2、传统的tcp/ip技术在数据包处理过程中,要经过操作系统软件协议栈处理及多次数据搬移,在高带宽网络技术(100gbps)应用中发现,传统的tcp/ip技术具有较高的通信延迟,处理器资源和内存总线带宽被大规模数据传输任务所占用,资源利用率低,并且网络延迟效应严重,无法满足实时性要求。

3、对于传统rdma技术,发送send/接收receive是双边操作,由于必须要远端的应用感知参与才能完成收发,所以消息收发双方的参与过程较为复杂,该消息传输模式多用于传输控制消息,传输效率低。


技术实现思路

1、本发明的目的是为了提供一种基于rdma的发送端、接收端、数据传输系统及方法,数据传输延迟低、节点资源利用率高、效率高。

2、为解决以上技术问题,本发明的技术方案为:

3、第一方面,提供一种基于rdma的发送端,所述发送端中设有发送端rdma设备,包括:第一信息处理模块和第一rdma传输运算模块;

4、第一信息处理模块,用于根据信息处理需求生成工作请求,加入工作队列;工作请求中携带命令字;

5、第一rdma传输运算模块,用于从工作队列中获取工作请求,基于工作请求处理第一待处理数据,产生第一信息数据后进行远程内存访问,远程内存访问包括:基于第一信息数据生成消息请求,将消息请求发送至目的远端。

6、进一步地,第一rdma传输运算模块集成于嵌入式系统中,第一rdma传输运算模块包括:第一信息运算单元和第一rdma传输单元;

7、第一信息运算单元,用于从内存获取第一待处理数据,用于依据工作请求携带的命令字处理第一待处理数据从而产生第一信息数据,基于第一信息数据生成消息请求;

8、第一rdma传输单元,用于从工作队列中获取工作请求,用于将消息请求发送至目的远端。

9、进一步地, 第一rdma传输单元,用于队列管理逻辑、描述符和消息完成处理操作;

10、第一rdma传输单元包括dma处理模块、队列管理模块、传输调度模块和mac+phy模块;

11、其中,dma处理模块包括dma+接口控制,dma响应读请求,以将所述发送端的内存中数据传输至rdma设备,接口控制用于多队列与接口相关联,每个接口对应单独的传输调度控制逻辑,基于接口控制数据包的传输;

12、其中,队列管理模块用于维护所有多队列的队列状态,包括发送、发送完成、接收、接收完成和事件队列;

13、队列管理模块用于管理描述符队列和消息完成队列;其中,描述符队列,用于形成与处理器的数据传输通道,承载数据包在处理器系统内存中存储位置的信息;其中,完成队列,用于形成与处理器的控制通道,包括已完成的操作和元数据的信息;

14、队列管理用于实现处理器的环形缓冲区,环形缓冲区为dma可访问;

15、队列管理用于维护队列状态信息,包括指向环形缓冲区dma地址的指针,环形缓冲区的大小,生产者和使用者指针以及对关联的完成队列的引用;

16、队列管理实现管理至少数千个队列的状态,实现多队列并行读取操作,以及多队列并行出队/入队请求操作;

17、其中,传输调度模块,用于指定队列来传输,为发送引擎生成命令,启动对应发送队列的发送操作,传输调度包含所有队列的队列状态;调度相关数据路径上的操作;用于实现消息流在端口之间负载平衡;传输调度模块包括发送引擎、接收引擎和缓存ram;

18、缓存ram用于在dma操作期间临时存储消息包;

19、发送引擎用于调度数据包的发送操作,发送指定队列的消息请求,数据包通过以太网媒体访问控制器mac和物理接口层phy被传输到网络之后,发送引擎开始建立完成记录,并将其传递给完成发送完成队列;

20、接收引擎用于调度数据包的接收操作,网络中传入的数据包通过物理接口层phy和以太网媒体访问控制器mac之后,通过哈希算法处理之后,传输到接收引擎,接收引擎发出写操作请求,写操作完成后,即数据包数据被写到处理器内存,将生成一个完成记录;

21、其中,mac+phy模块,包括以太网媒体访问控制器mac和物理接口层phy,用于接收方向时,传入的数据包通过哈希算法确定目标接收队列,并为接收引擎生成命令,调度相关接收数据路径的操作。

22、第二方面,提供一种基于rdma的接收端,所述接收端中设有接收端rdma设备,包括:第二信息处理模块和第二rdma传输运算模块;

23、第二信息处理模块,用于创建工作队列和注册内存;

24、第二rdma传输运算模块,用于接收信息源端发送的消息请求,基于消息请求携带的命令字处理第二待处理数据,产生第二信息数据后进行远程内存访问,远程内存访问包括生成接收消息请求,将数据请求发至本地节点的缓存区。

25、进一步地,第二rdma传输运算模块集成于嵌入式系统中,第二rdma传输运算模块包括:第二信息运算单元和第二rdma传输单元;

26、第二信息运算单元,用于从内存获取第二待处理数据,用于依据消息请求携带的命令字处理第二待处理数据从而产生第二信息数据,基于第二信息数据生成接收消息请求;

27、第二rdma传输单元,用于获取接收信息源端发送的消息请求,用于将接收消息请求发送至本地节点缓存区。

28、第三方面,提供一种基于rdma的数据传输系统,包括:发送端和至少一个接收端;其中,

29、发送端为上述的基于rdma的发送端;

30、接收端为上述的基于rdma的接收端。

31、进一步的,发送端和接收端之间通过以太网交换模块网络连接,以太网交换模块支持数据中心桥接dcb以及优先流控制pfc。

32、第四方面,提供一种基于rdma的数据传输方法,采用上述的基于rdma的数据传输系统,步骤包括:

33、步骤s100:发送端的第一信息处理模块分配环形发送多队列,创建对应的完成多队列,向第一rdma传输运算模块注册内存区域分配缓冲区,内存缓冲区中的数据将被传送至接收端即目的远端内存;

34、接收端的第二信息处理模块分配环形接收多队列,创建对应的完成多队列,向第二rdma传输运算模块注册区域分配缓冲区,用于存放来自发送端即信息源端发送的数据;

35、步骤s200:发送端的第一信息处理模块获取信息处理需求,根据信息处理需求形成工作队列元素wqe,生成工作请求,将工作请求加入工作队列;工作队列元素wqe中的指针指向一段内存缓冲区,该缓冲区的数据将要被传送至目的远端的内存;

36、发送端的第一rdma传输运算模块,从工作队列中获取工作请求,消费掉工作请求中工作队列元素wqe,将工作队列元素wqe指针指向的内存缓冲区中第一待处理数据转换为第一信息数据,基于第一信息数据生成消息请求,将消息请求通过网络数据传输通道发送至接收端的第二rdma传输运算模块;

37、步骤s300:接收端的第二rdma传输运算模块,接收发送端发送的消息请求,将数据写入对应的内存缓冲区;

38、步骤s400:当一个第一待处理数据传输完成时,第一rdma传输运算模块创建一个完成队列元素cqe,完成队列元素cqe被放置到完成队列cq中,表明数据传输已经完成。

39、进一步地,步骤s400中,第一rdma传输运算模块每消费掉一个工作队列元素wqe,生成一个完成队列元素cqe;

40、并行的,第一rdma传输运算模块消费掉所有工作队列元素wqe,生成所有对应的完成队列元素cqe,即所有工作队列元素wqe的发送操作已经完成,则消息发送请求完成。

41、进一步地,步骤s400中,如果发生错误,第一rdma传输运算模块创建一个完成队列元素cqe,其中,当前完成队列元素cqe包含了一个用于记录错误传输状态的字段。

42、本发明具有如下有益效果:

43、一、rdma(remote direct memory access,远程直接内存访问)是一种绕过远程主机的操作系统访问其内存中数据的技术。由于不经过操作系统,节省了大量cpu资源,降低了数据传输延迟,解决了现有技术中传输延迟高,以及解决节点资源利用率低的问题;

44、二、本发明提供的基于rdma的低延迟数据传输方法,简化发送send/接收receive操作的消息交互过程,让消息多队列的传输机制更加符合基于数据流操作的特点,使本地节点的处理效率获得显著的提升;节点之间通过无损以太网连接,通过集成到系统中的以太网交换模块支持数据中心桥接(dcb)以及优先流控制(pfc)流控技术,在物理层保证可靠传输,解决网络拥塞,提高rdma的传输性能;

45、三、本发明将远程访问在硬件执行,提升信息处理节点的利用率,减少数据传输延迟,提升信息处理节点的利用率,提高系统的整体信息处理能力,提高实时性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1