CN115776434A - Rdma数据传输***、rdma数据传输方法及网络设备 - Google Patents
Rdma数据传输***、rdma数据传输方法及网络设备 Download PDFInfo
- Publication number
- CN115776434A CN115776434A CN202111045146.4A CN202111045146A CN115776434A CN 115776434 A CN115776434 A CN 115776434A CN 202111045146 A CN202111045146 A CN 202111045146A CN 115776434 A CN115776434 A CN 115776434A
- Authority
- CN
- China
- Prior art keywords
- message
- network device
- identifier
- completion
- rdma data
- 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 title claims abstract description 387
- 230000005540 biological transmission Effects 0.000 title claims abstract description 178
- 230000008569 process Effects 0.000 claims abstract description 338
- 238000012546 transfer Methods 0.000 claims abstract description 103
- 230000009286 beneficial effect Effects 0.000 abstract description 18
- 238000012545 processing Methods 0.000 abstract description 11
- 238000006243 chemical reaction Methods 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 10
- 238000004220 aggregation Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000002349 favourable effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种RDMA数据传输***、RDMA数据传输方法及网络设备,例如可以用于智能网卡(Smart NIC)或数据处理单元(DPU)等网络设备,例如可以应用于应用于RoCEv1、RoCEv2以及其他新RDMA场景。该RDMA数据传输***可以包括第一主机中的第一网络设备和第二主机中的第二网络设备。第一网络设备可以创建供第一主机运行的多个进程使用的SSQ,从SSQ获取第一进程的RDMA数据传输消息,并且在封装RDMA数据传输消息的第一报文中同时封装第一进程对应的第一标识。第二网络设备在封装反馈消息的第二报文中同时封装第一标识,这样,第一网络设备在接收到第二报文后,可以根据第二报文中的第一标识高效的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种RDMA数据传输***、RDMA数据传输方法及网络设备。
背景技术
远程直接内存访问(remote direct memory access,RDMA)是一种绕过远程主机CPU的核心访问CPU的内存中数据的技术,由于不经过CPU核心,不仅节省了大量CPU核心资源,同样也提高了***吞吐量、降低了***的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。
本端主机中的应用进程执行RDMA数据传输消息时,本端主机的网卡从主机或网卡的内存中的发送队列中将该RDMA数据传输消息读取到网卡的缓冲区中,之后通过网络将该RDMA数据传输消息发送到对端主机的网卡。之后,对端主机的网卡发送反馈信息给本端主机的网卡,本端主机的网卡根据反馈信息通知应用进程该RDMA数据传输消息已被处理完。
但是,当本端主机的网卡的发送队列被多个应用进程共享的时候,反馈信息无法快速将该RDMA数据传输消息的完成情况通知对应的应用进程。
发明内容
本申请实施例提供一种数据传输***、数据传输方法及网络设备,用于快速将该RDMA数据传输消息的完成情况通知对应的应用进程。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一网络设备可以创建供第一主机运行的多个进程使用的共享发送队列,第一网络设备可以从共享发送队列获取第一进程的RDMA数据传输消息,并且在封装RDMA数据传输消息的报文(称作第一报文)中同时封装第一进程对应的第一标识,通过RDMA方式向第二网络设备发送第一报文。第二网络设备接收到第一报文后,可以在封装反馈消息的报文(称作第二报文)中同时封装第一标识,之后通过RDMA方式向第一网络设备发送第二报文。这样,第一网络设备在接收到第二报文后,无需根据共享发送队列的上下文来确定第二报文中的反馈消息对应于第一进程,而是可以根据第二报文中的第一标识确定该反馈消息对应于第一进程,有利于高效的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
可选的,第一报文为第一网络设备根据RDMA协议封装得到的,第二报文为第二网络设备根据RDMA协议封装得到的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version 2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
可选的,第一网络设备可以通过该共享发送队列所绑定的传输通道向第二网络设备发送第一报文。该传输通道用于实现第一网络设备和第二网络设备之间的网络连接,该传输通道可以例如为输入输出通道(channel-IO)。
可选的,第二网络设备通过该传输通道接收第一报文后,还可以通过该传输通道向第二网络设备发送第二报文。
可选的,第一网络设备可以通过该传输通道接收来自第二网络设备的第二报文。
可选的,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;所述第一网络设备具体用于根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。通过在第一报文和第二报文中携带第二标识,有利于第一网络设备高效、准确的通知第一进程RDMA数据传输消息的完成情况。
可选的,所述共享发送队列具体用于保存来自所述多个进程的工作请求,所述第一网络设备具体用于从所述共享发送队列获取来自所述第一进程的第一工作请求,根据所述第一工作请求获取所述RDMA数据传输消息,所述第一工作请求描述所述RDMA数据传输消息。
可选的,共享发送队列可以设置在第一网络设备的内存中。或者,可选的,共享发送队列可以设置在第一主机的内存中。
和根据共享发送队列的上下文来从共享发送队列读取第一工作请求来确定第一标识相比,本申请实施例通过第二报文获取第一标识,有利于尽量避免从共享发送队列中读取工作请求,有利于节约第一网络设备的缓存资源,减少工作请求的完成过程中的延时。
可选的,所述第一网络设备具体用于根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列,根据所述反馈消息在所述第一完成队列中写入工作完成元素,所述工作完成元素描述所述RDMA数据传输消息的完成情况。
第一标识可以用于确定第一完成队列,本申请实施例可以通过第一报文和第二报文携带的第一标识来高效准确的确定第一完成队列,有利于高效准确的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
第二方面,本申请实施例提供一种RDMA数据传输方法,包括:第一网络设备从共享发送队列获取第一进程的RDMA数据传输消息,所述第一网络设备设置在第一主机上,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;所述第一网络设备向第二网络设备发送第一报文,所述第二网络设备设置在第二主机上,所述第一报文包括所述RDMA数据传输消息和所述第一进程对应的第一标识;所述第一网络设备接收来自所述第二网络设备的第二报文,所述第二报文包括所述第一标识和反馈消息,所述反馈消息指示所述RDMA数据传输消息的完成情况;所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况。
可选的,第一报文为第一网络设备根据RDMA协议封装得到的,第二报文为第二网络设备根据RDMA协议封装得到的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version 2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
可选的,第一网络设备可以通过该共享发送队列所绑定的传输通道向第二网络设备发送第一报文。该传输通道用于实现第一网络设备和第二网络设备之间的网络连接,该传输通道可以例如为输入输出通道(channel-IO)。
可选的,第一网络设备可以通过该传输通道接收来自第二网络设备的第二报文。
第一网络设备通过在第一报文中携带第一标识,有利于指示第二网络设备在第二报文中携带第一标识,这样,第一网络设备在接收到第二报文后,无需根据共享发送队列的上下文来确定第二报文中的反馈消息对应于第一进程,而是可以根据第二报文中的第一标识确定该反馈消息对应于第一进程,有利于高效的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
可选的,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况包括:所述第一网络设备具体用于根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。
第一网络设备通过在第一报文中携带第二标识,有利于指示第二网络设备在第二报文中携带第二标识,进而有利于第一网络设备根据第二报文中的第二标识,高效、准确的通知第一进程RDMA数据传输消息的完成情况。
可选的,所述共享发送队列具体用于保存来自所述多个进程的工作请求;所述第一网络设备从共享发送队列获取第一进程的RDMA数据传输消息包括:所述第一网络设备从所述共享发送队列获取来自所述第一进程的第一工作请求,所述第一工作请求描述所述RDMA数据传输消息;所述第一网络设备根据所述第一工作请求获取所述RDMA数据传输消息。
可选的,共享发送队列可以设置在第一网络设备的内存中。或者,可选的,共享发送队列可以设置在第一主机的内存中。
和根据共享发送队列的上下文来从共享发送队列读取第一工作请求来确定第一标识相比,本申请实施例中,第一网络设备通过在第一报文中携带第一标识,有利于指示第二网络设备在第二报文中携带第一标识,这样,第一网络设备在接收到第二报文后,通过第二报文获取第一标识,有利于尽量避免从共享发送队列中读取工作请求,有利于节约第一网络设备的缓存资源,减少工作请求的完成过程中的延时。
可选的,所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况,包括:所述第一网络设备根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列;所述第一网络设备根据所述反馈消息在所述第一完成队列中写入工作完成元素,所述工作完成元素用于通知所述第一进程所述RDMA数据传输消息的完成情况。
第一标识可以用于确定第一完成队列,本申请实施例中,第一网络设备通过在第一报文中携带第一标识,有利于指示第二网络设备在第二报文中携带第一标识,这样,第一网络设备在接收到第二报文后,可以通过第二报文携带的第一标识来高效准确的确定第一完成队列,有利于高效准确的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
第三方面,本申请实施例提供一种RDMA数据传输方法,包括:第二网络设备接收来自第一网络设备的第一报文,所述第一网络设备设置于第一主机上,所述第二网络设备设置于第二主机上,所述第一报文包括第一进程的RDMA数据传输消息和所述第一进程对应的第一标识,所述RDMA数据传输消息为所述第一网络设备从共享发送队列获取的,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;所述第二网络设备根据所述第一报文向所述第一网络设备发送第二报文,所述第二报文包括所述第一标识和反馈消息,所述第一标识和所述反馈消息指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
第二网络设备解析到第一报文中的第一标识后,可以在第二报文中携带第一标识,这样,第一网络设备在接收到第二报文后,无需根据共享发送队列的上下文来确定第二报文中的反馈消息对应于第一进程,而是可以根据第二报文中的第一标识确定该反馈消息对应于第一进程,有利于高效的通知第一进程已处理该RDMA数据传输消息,进而有利于提高第一进程的运行效率。
可选的,第一报文为第一网络设备根据RDMA协议封装得到的,第二报文为第二网络设备根据RDMA协议封装得到的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version 2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
可选的,第一报文为第一网络设备通过该共享发送队列所绑定的传输通道向第二网络设备发送的。该传输通道用于实现第一网络设备和第二网络设备之间的网络连接,该传输通道可以例如为输入输出通道(channel-IO)。
可选的,第二网络设备通过该传输通道接收第一报文后,还可以通过该传输通道向第二网络设备发送第二报文。
可选的,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息,所述第一标识、所述反馈消息和所述第二标识指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
第二网络设备解析到第一报文中的第二标识后,可以在第二报文中携带第二标识,这样,第一网络设备在接收到第二报文后,通过在第二报文中携带第二标识,有利于第一网络设备高效、准确的通知第一进程RDMA数据传输消息的完成情况。
第四方面,本申请实施例提供一种网络设备,包括:获取单元,用于从共享发送队列获取第一进程的RDMA数据传输消息,所述网络设备设置在第一主机上,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;发送单元,用于向第二网络设备发送第一报文,所述第二网络设备设置在第二主机上,所述第一报文包括所述RDMA数据传输消息和所述第一进程对应的第一标识;接收单元,用于接收来自所述第二网络设备的第二报文,所述第二报文包括所述第一标识和反馈消息,所述反馈消息指示所述RDMA数据传输消息的完成情况;完成单元,用于根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况。
可选的,第一报文为第一网络设备根据RDMA协议封装得到的,第二报文为第二网络设备根据RDMA协议封装得到的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version 2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
可选的,发送单元可以通过该共享发送队列所绑定的传输通道向第二网络设备发送第一报文。该传输通道用于实现第一网络设备和第二网络设备之间的网络连接,该传输通道可以例如为输入输出通道(channel-IO)。
可选的,接收单元可以通过该传输通道接收第二报文。
可选的,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;所述完成单元具体用于根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。
可选的,所述共享发送队列具体用于保存来自所述多个进程的工作请求;所述获取单元具体用于:从所述共享发送队列获取来自所述第一进程的第一工作请求,所述第一工作请求描述所述RDMA数据传输消息;根据所述第一工作请求获取所述RDMA数据传输消息。
可选的,所述完成单元具体用于:根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列;根据所述反馈消息在所述第一完成队列中写入工作完成元素,所述工作完成元素用于通知所述第一进程所述RDMA数据传输消息的完成情况。
第五方面,本申请实施例提供一种网络设备,包括:接收单元,用于接收来自第一网络设备的第一报文,所述第一网络设备设置于第一主机上,所述网络设备设置于第二主机上,所述第一报文包括第一进程的RDMA数据传输消息和所述第一进程对应的第一标识,所述RDMA数据传输消息为所述第一网络设备从共享发送队列获取的,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;发送单元,用于根据所述第一报文向所述第一网络设备发送第二报文,所述第二报文包括所述第一标识和反馈消息,所述第一标识和所述反馈消息指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
可选的,第一报文为第一网络设备根据RDMA协议封装得到的,第二报文为第二网络设备根据RDMA协议封装得到的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version 2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
可选的,第一报文可以是第一网络设备通过该共享发送队列所绑定的传输通道向第二网络设备发送的。该传输通道用于实现第一网络设备和第二网络设备之间的网络连接,该传输通道可以例如为输入输出通道(channel-IO)。
可选的,接收单元可以通过该传输通道接收第一报文。
可选的,发送单元可以通过该传输通道向第二网络设备发送第二报文。
可选的,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息,所述第一标识、所述反馈消息和所述第二标识指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
第六方面,本申请提供一种计算设备,该计算设备包括处理器和存储器,该处理器和该存储器耦合,该存储器用于存储程序代码,该处理器执行该存储器中存储的程序代码时,能够执行第二方面或第二方面的任意一种可能的实现方式或第三方面或第三方面的任意一种可能的实现方式所描述的方法。
在一种可能的实现方式中,该计算设备还可以包括通信接口,该处理器通过该通信接口例如能够接收或发送报文等。
本申请第七方面提供了一种芯片***,该芯片***包括处理器和接口电路,该处理器通过该接口电路与存储器耦合,该处理器用于执行该存储器中的程序代码,以执行第二方面或第二方面的任意一种可能的实现方式或第三方面或第三方面的任意一种可能的实现方式所描述的方法。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
本申请第八方面提供一种计算机可读存储介质,该计算机可读存储介质中存储了程序代码,这些程序代码在计算机设备上运行时,使得计算机设备执行如本申请能够执行第二方面或第二方面的任意一种可能的实现方式或第三方面或第三方面的任意一种可能的实现方式所描述的方法。
本申请第九方面提供一种计算机程序产品,该计算机程序产品包含的程序代码被计算机设备执行时,以执行第二方面或第二方面的任意一种可能的实现方式或第三方面或第三方面的任意一种可能的实现方式所描述的方法。
由于本申请提供的各装置可用于执行前述对应的方法,因此本申请各装置所能获得到的技术效果可参考前述对应的方法所获得的技术效果,此处不再赘述。
附图说明
图1A、图1B和图1C分别示出了本申请实施例一种可能的应用场景;
图2A和图2B分别示出了计算机***一种可能的结构;
图3示出了本申请实施例计算机***另一种可能的结构;
图4示出了第一工作请求一种可能的结构;
图5A和图5B分别示出了第一网络设备对RDMA数据传输消息的处理过程;
图6A示出了发送操作对应的第一报文和第二报文的传输过程;
图6B示出了写操作对应的第一报文和第二报文的传输过程;
图6C示出了原子操作对应的第一报文和第二报文的传输过程;
图6D示出了读操作对应的第一报文和第二报文的传输过程;
图7示出了本申请实施例RDMA数据传输方法一种可能的流程;
图8示出了本申请实施例网络设备一种可能的结构;
图9示出了本申请实施例网络设备一种可能的结构。
具体实施方式
下面,首先对本申请实施例的应用场景进行举例介绍。
图1A示出了本申请实施例一种可能的应用场景。图1A所示的计算机***至少包括节点#1和节点#2。节点#1或节点#2可以为连接到通信网络的一个或多个链路并且形成通信网络内数据传输消息(简称消息)的起源和/或目的地的任意设备。节点#1或节点#2中可以运行一个或多个应用进程(简称进程)。图1A以节点#1运行进程#1和进程#2为例,以节点#2运行进程#3为例。可以理解的是,节点#1或节点#2可以运行更多或更少的进程。以节点#1为例,节点#1发出的消息可以来自进程#1或进程#2,节点#1接收的消息可以去往进程#1或进程#2。
节点#1和节点#2可以通过数据传输***进行通信连接。图1A所示的数据传输***可以至少包括节点#1中的网络设备#1和节点#2中的网络设备#2。可选的,网络设备#1或网络设备#2可以为网络适配器(network interface card,NIC)或称网卡。可选的,图1A所示的数据传输***可以为远程直接内存访问(remote direct memory access,RDMA)***,该数据传输***中传输的消息可以为RDMA数据传输消息。
图1A所示的计算机***中,数据传输***可以基于节点运行的进程来创建数据传输通道(channel)。假设进程#1和进程#2需要分别向进程#3发送消息,网络设备#1和网络设备#2需要分别为进程#1和进程#2创建数据传输通道,分别为如图1A所示的通道p1-p3和通道p2-p3。进程#1的消息通过通道p1-p3发送给进程#3,进程#2的消息通过通道p2-p3发送给进程#3。
随着计算机***中节点数目的增加以及节点中进程数目的增加,图1A所示的数据传输***需要为大量进程传输消息,相应的需要创建大量数据传输通道。假设图1A所示的计算机***包括n个节点,每个节点运行m个进程,那么对于任意一个节点,数据传输***需要创建m*n个数据传输通道。由于每个数据传输通道需要在相应节点中创建至少一个队列对(queue pair,QP),而大量QP将占用节点过多的存储资源,因此,数据传输***基于节点运行的进程来创建数据传输通道将影响数据传输***的可伸缩性。
图1B示出了本申请实施例另一种可能的应用场景。图1B所示的计算机***可以参考图1A所示的计算机***进行理解,但是和图1A不同的是,在图1B所示的计算机***中,数据传输***是基于计算机***中的节点来创建数据传输通道。仍然假设进程#1和进程#2需要分别向进程#3发送消息,在图1B所示的数据传输***中,网络设备#1和网络设备#2为节点#1和节点#2创建一个数据传输通道,例如为图1B所示的通道n1-n2。进程#1的消息和进程#2的消息均通过通道n1-n2发送给进程#3。
假设图1B所示的计算机***包括n个节点,每个节点运行m个进程,那么对于任意一个节点,数据传输***最多需要创建n-1个数据传输通道。和图1A所示的数据传输***相比,通过减少数据传输通道的数目,有利于减少QP占用的存储资源,可见,数据传输***基于节点来创建数据传输通道将减少对数据传输***的可伸缩性的影响。
以n为4为例,图1C示出了本申请实施例另一种可能的应用场景。和图1B相比,图1C所示的计算机***除了包括节点#1和节点#2,还包括节点#3和节点#4。图1C所示的数据传输***基于节点创建数据传输通道,分别例如为图1C所示的通道n1-n2、通道n1-n3、通道n1-n4、通道n2-n3、通道n2-n4和通道n3-n4。对于图1C所示4个节点中的任意一个节点,数据传输***为其创建3条数据传输通道。
下面,以节点#1和节点#2为例,进一步介绍图1B或图1C所示的计算机***。
参考图2A,计算机***可以至少包括节点#1和节点#2,节点#1包括主机11、支持RMDA的网络适配器(network interface card that supports RDMA,RNIC)12和内存13,节点#2包括主机21和RNIC 22。RNIC 22可以与主机21通信相连,RNIC 12分别与主机11和内存13通信相连。
图2A中的RNIC 12可以视为图1B或图1C中的网络设备#1,或者,图2A中的RNIC 12和内存13可以视为图1B或图1C中的网络设备#1。图2A中的RNIC 22可以视为图1B或图1C中的网络设备#2。图2A以图1B或图1C所示的网络设备#1包括RNIC 12、网络设备包括RNIC 22为例,本申请实施例不限定图1B或图1C所示的网络设备#1或网络设备#2的具体类型。
其中,主机11或主机21可以包括:处理器、通信接口以及存储器,处理器、通信接口以及存储器通过内部总线相互连接。其中,处理器可以由一个或者多个通用处理器构成,例如中央处理器(central processing unit,CPU),或者CPU和硬件芯片的组合。主机11或主机21的存储器可以存储***应用和/或应用进程的代码,处理器执行这些代码可以实现CPU核心113和/或进程的功能的功能。
其中,RNIC 12可以包括处理器122和缓存121,RNIC 22可以包括处理器222和缓存221。其中,处理器122或处理器222可以由一个或者多个通用处理器构成,例如CPU,或者CPU和硬件芯片的组合。处理器122和缓存121之间可以通过总线相连(图2A未示出),也可以通过其他方式相连。处理器222和缓存221之间可以通过总线相连(图2A未示出),也可以通过其他方式相连。
上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
其中,存储器或内存13可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器或内存13也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM)、快闪存储器(flashmemory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)或为双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,DDR SDRAM);存储器或内存13还可以包括上述种类的组合。其中,DDR SDRAM可以简称为DDR。缓存121或缓存221可以为一级或多级缓存,例如,可以采用寄存器和/或静态随机存取存储器(static random access memory,SRAM)实现。
在一种可能的实现方式中,RNIC 12和内存13可以集成在同一芯片上,或者说,该内存13可以为RNIC 12对应的网络设备#1中的内存。以内存13为DDR为例,可选的,该DDR可以支持多通道技术,RNIC 12可以通过多个通道访存内存13。
或者,在一种可能的实现方式中,该内存13可以为主机11中的内存。RNIC 12与主机11之间可以通过输入输出(input output,IO)接口相连,该IO接口可以包括但不限于周边装置互连高速(peripheral component interconnect express,PCIe)等IO结构(fabric)接口。若内存13为主机11中的内存,那么RNIC 12可以通过与主机11之间的IO接口访存内存13。
RNIC 12和RNIC 22之间创建有数据传输通道,该数据传输通道可以理解为图1B或图1C或图2A所示的通道n1-n2,RNIC 12和RNIC 22通过通道n1-n2传输节点1和节点2之间的消息。RNIC 12可以在内存13中创建绑定通道n1-n2的至少一个共享发送队列(Shard SendQueue,SSQ),SSQ可以用于处理来自节点#1中多个进程的、待传输至节点#2的消息。图2A示例性示出了该至少一个SSQ中的SSQ#1。可选的,若该至少一个SSQ还包括除SSQ#1以外的其他SSQ(例如SSQ#2),SSQ#1和SSQ#2可以对应于不同的优先级,RNIC 12可以根据待传输至节点2的消息的优先级使用相应的SSQ。
主机11和/或主机21可以运行一个或多个进程。图2A示意性示出主机11运行的两个进程(进程#1和进程#2)和主机21运行的两个进程(进程#3和进程#4)。RNIC 12待传输至节点2的消息可以来自进程#1和/或进程#2。
假设进程#1和进程#2需要向主机21发送消息,进程#1和进程#2可以分别向RNIC12提交相应的工作请求(work request,WR)。为了便于区分,本申请实施例将进程#1待发送的一个消息称作M1,将进程#2待发送的一个消息称作M2,将M1对应的WR称作WR1,将M2对应的WR称作WR2。作为举例,进程#1和进程#2可以分别调用主机11中的程序接口和RNIC 12的驱动程序向RNIC 12提交WR1和WR2。在一种可能的实现方式中,M1和M2可以为RDMA消息。
由于M1和M2均用于发送至节点2,因此,RNIC 12接收到WR1和WR2后,可以分别将WR1和WR2写入SSQ#1中。本申请实施例将写入SSQ#1中的WR1和WR2分别称作工作队列元素(work queue element,WQE)1和WQE2。WQE1和WQE2分别描述了M1和M2,例如,WQE1包括M1在内存111中的存储地址1,WQE2包括M2在内存13中的存储地址2。
在一种可能的实现方式中,内存13中还包括SSQ#1的上下文(简称上下文S1),上下文S1记录了SSQ#1的使用信息。示例性的,上下文S1可以包括SSQ#1的写入索引(简称SSQ#1的PI)和读取索引(简称SSQ#1的CI)。RNIC 12可以根据SSQ#1的PI的取值确定WQE在SSQ#1中的写入位置,根据SSQ#1的CI的取值确定WQE在SSQ#1中的读取位置。
图2A示例性示出了SSQ#1中的三个放置WQE的存储位置,SSQ#1还可以包括更多或更少的WQE,并且,为了便于理解,图2A将SSQ#1中的用于保存WQE的三个存储位置绘制为从上至下依次排列的三个矩形。本申请实施例将图2A所示的SSQ#1中用于保存WQE的三个存储位置从上至下分别称作存储位置T、存储位置M和存储位置B。本申请实施例不限定SSQ#1中各WQE的存储方式,例如,SSQ#1可以对应于内存13中的一块连续存储空间,或者,可以对应于内存13中离散的存储空间。
作为举例,RNIC 12接收到WR1后,可以根据上下文S1中SSQ#1的PI指向SSQ#1的存储位置T,之后可以将WQE1写入存储位置T,并更新SSQ#1的PI的取值,使其指向SSQ#1的存储位置M。RNIC 12接收到WR2后,可以根据上下文S1中SSQ#1的PI的取值将WQE2写入存储位置M,并更新SSQ#1的PI的取值,使其指向SSQ#1的存储位置B。
图2A示出了RNIC 12在SSQ#1中写入WQE1和WQE2后CI和PI在内存13中指向的存储位置。在一种可能的实现方式中,SSQ#1用于顺序处理写入SSQ#1中的WQE。假设WQE1先于WQE2写入SSQ#1,那么SSQ#1的CI的取值可以先指向WQE1,待RNIC 12处理WQE1后,将SSQ#1的CI的取值更新为指向WQE2(参考图2B),以使得RNIC 12继续处理WQE2。
下面结合图2A中代表数据传输过程的虚线及其序号,介绍本申请实施例提供的M1发送至主机21的过程。
步骤1.RNIC 12将SSQ#1中的WQE1读取到缓存121中;
示例性的,RNIC 12可以根据上下文S1确定SSQ#1的CI的取值,根据CI的取值确定CI指向SSQ#1中的存储位置T,进而从存储位置T取出WQE(即WQE1)。
步骤2.RNIC 12访问内存111中WQE1所指示的存储位置1;
WQE1可以包括M1在内存111中的存储地址1,RNIC 12将WQE1读取到缓存121后,可以从WQE1中解析到存储地址1,之后可以访问内存111中的存储位置1。
步骤3.RNIC 12将存储位置1中的M1读取到缓存121;
RNIC 12可以将存储位置1中的数据(即M1)读取到缓存121。
步骤4.RNIC 12将M1封装为报文1,并将报文1通过通道n1-n2发送到RNIC 22;
可选的,RNIC 12可以根据RDMA协议将M1封装为报文1,并将报文1通过SSQ#1所绑定的通道n1-n2发送到RNIC 22。示例性的,该RDMA协议可以例如为无线带宽(infiniband)协议、或采用聚合以太网络版本1的RDMA(RDMA over Converged Ethernet version 1,RoCE1)协议、或采用聚合以太网络版本2的RDMA(RDMA over Converged Ethernet version2,RoCE2)协议、或互联网广域RDMA协议(internet wide area RDMA protocol,iWARP)等。
RNIC 22接收到报文1后,可以对报文1进行解封装,得到M1。
步骤5.RNIC 22将M1存储在主机21中;
假设M1为待存储在主机21中的数据,那么RNIC 22可以将M1存储在主机21中。进一步的,假设M1用于写入进程#3的内存211,作为举例,RNIC 22对报文1进行解封装后还可以得到M1在内存211中的写入位置,RNIC 22可以根据该写入位置将M1写入内存211中。
后文将结合RDMA的发送(send)模型、写(write)模型、读(read)模型和原子(atomic)模型具体介绍步骤4和步骤5,此处暂不展开介绍。
图2B所示的计算机***通过代表数据传输过程的虚线及其序号,描述了本申请实施例提供的数据传输***向进程#1通知M1的完成情况的过程。图2B中的结构可以解释为图2A所示的计算机***中的相应结构,此处不再赘述。
参考图2B,RNIC 12可以在内存13中分别为进程#1和进程#2创建完成队列(complete queue,CQ)。本申请实施例将进程#1对应的CQ称作CQ#1,将进程#2对应的CQ称作CQ#2。CQ#1用于向进程#1反馈进程#1向RNIC 12提交的消息(例如M1)的完成情况,CQ#2用于向进程#2反馈进程#2向RNIC 12提交的消息(例如M2)的完成情况。
下面结合图2B介绍本申请实施例提供的RNIC 12和RNIC 22向进程#1通知M1的完成情况的过程。
步骤6.RNIC 22通过通道n1-n2向RNIC 12发送携带R1的报文2;
RNIC 22接收到报文1后,可以通过通道n1-n2向RNIC 12发送报文2,报文2携带反馈消息(简称R1),R1描述消息的完成情况。例如,消息的完成情况可以为RNIC 22成功接收消息,或RNIC 22成功将消息写入主机21,或RNIC 22未接收到消息,或消息写入失败等。RNIC 12接收到报文2后,可以对报文2进行解封装,得到R1。RNIC 12可以确定R1所描述的消息的完成情况。
可选的,R1为报文2中的某个字段(称作字段R),字段R的不同取值对应于消息的不同完成情况。例如,字段R的取值为0时,RNIC 12可以确定消息的完成情况为成功,具体例如为RNIC 22成功接收消息,字段R的取值为1时,RNIC 12可以确定消息的完成情况为失败,具体例如为RNIC 22未接收到消息。
步骤7.RNIC 12将SSQ#1中的WQE1读取到缓存121中,以获得CQ#1的标识;
RNIC 12从通道n1-n2获取报文2后,虽然可以确定报文2中的R1对应于SSQ#1中的WQE,但是由于SSQ#1对应于主机11运行的多个进程,因此RNIC 12无法确定R1对应的完成情况对应于哪个进程,进而无法确认该R1应该交由哪个CQ来处理。为此,RNIC 12在确认绑定通道n1-n2的SSQ为SSQ#1之后,可以根据SSQ#1的上下文S1确定R1对应于SSQ#1中的WQE1。本申请实施例中,可以在WQE1中携带CQ#1的标识。相应的,RNIC 12将WQE1从SSQ#1中读取到缓存121中后,可以解析WQE1以获取WQE1CQ#1的标识,从而确定需要将R1对应的完成情况交由CQ#1来处理。
步骤8.RNIC 12根据CQ#1的标识和R1向CQ#1中写入CQE1;
步骤9.RNIC 12处理CQ#1中的CQE,当处理到CQE1时,向进程#1通知M1的完成情况。
下面对步骤8和步骤9进行介绍。
RNIC 12获取CQ#1的标识后,可以根据R1向CQ#1中写入完成队列元素(CQelement,CQE)1,CQE1用于确定M1的完成情况。RNIC 12在处理CQ#1中的CQE的过程中,当处理到CQE1时,可以向进程#1通知M1的完成情况。
可选的,RNIC 12向进程#1通知M1的完成情况可以指,进程#1调用程序接口和RNIC12的驱动程序对CQ#1中的CQE进行检索,当检索到CQE1时,进程#1能够获取M1的完成情况。
可选的,CQE通过携带的部分字段(例如称作错误码)来指示相应消息的完成情况。例如,进程#1解析CQE1,确定CQE1中错误码的取值为0时,进程#1可以确定M1的完成情况为成功,具体例如为M1对应的数据传输任务已完成。例如,进程#1解析CQE1,确定CQE1中错误码的取值为1时,进程#1可以确定M1的完成情况为失败,具体例如为M1对应的数据传输任务未完成。
可选的,RNIC 12可以根据R1确定CQE1中错误码的取值。可选的,CQE1中错误码的取值所描述的完成情况与R1所描述的完成情况一致。例如,若R1描述消息的完成情况为成功,那么CQE1中错误码的取值可以为0,若R1描述消息的完成情况为失败,那么CQE1中错误码的取值可以为1。或者,可选的,CQE1中错误码的取值所描述的完成情况与R1描述的完成情况不一致。例如,若R1描述消息的完成情况为成功,但是RNIC 12因故障可能未正确的封装报文1(M1错误或目的地址错误等),那么CQE1中错误码的取值可以为1。
下面举例介绍RNIC 12在CQ#1中写入CQE和读取CQE的过程。
在一种可能的实现方式中,内存13中还包括CQ#1的上下文(简称上下文C1),上下文C1记录了CQ#1的使用信息,示例性的,上下文C1可以包括CQ#1的写入索引(简称CQ#1的PI)和读取索引(简称CQ#1的CI)。RNIC 12可以根据PI的取值确定CQE在CQ#1中的写入位置,根据CI的取值确定CQE在CQ#1中的读取位置。
图2B仅示例性示出了CQ#1中的三个放置CQE的存储位置,CQ#1还可以包括更多或更少的CQE,并且,为了便于理解,图2B将CQ#1中的用于保存CQE的三个存储位置绘制为从上至下依次排列的三个矩形。本申请实施例将图2B所示的CQ#1中用于保存CQE的三个存储位置从上至下分别称作存储位置T、存储位置M和存储位置B。本申请实施例不限定CQ#1中各CQE的存储方式,例如,CQ#1可以对应于内存13中的一块连续存储空间,或者,可以对应于内存13中离散的存储空间。
参考图2B,作为举例,RNIC 12生成CQE4后,可以根据上下文C1确定CQ#1的PI指向CQ#1的存储位置T,之后在存储位置T写入CQE4,并更新CQ#1的PI的取值,以使其指向CQ#1的存储位置M。之后,RNIC 12生成CQE3后,可以根据上下文C1中CQ#1的PI的取值在存储位置M写入CQE3,并更新CQ#1的PI的取值,使其指向存储位置B。
图2B示出了RNIC 12在CQ#1中写入CQE4和CQE2后CI和PI在内存13中指向的存储位置。在一种可能的实现方式中,CQ#1用于顺序处理写入CQ#1中的CQE。假设CQE4先于CQE3写入CQ#1,那么CQ#1的CI的取值可以先指向CQE4,RNIC 12处理CQE4,向进程#1通知CQE4对应的消息(称作M4)的完成情况,之后,将CQ#1的CI的取值更新为指向CQE3,以使得RNIC 12继续处理CQE3,向进程#1通知CQE3对应的消息(称作M3)的完成情况。
参考图2B,假设RNIC 12生成CQE1后,根据CQ#1的标识从上下文C1的取值向CQ#1的存储位置B写入CQE1。待RNIC 12依次处理CQE4和CQE3后,将CQ#1的CI的取值更新为指向CQ#1的存储位置B,以使得RNIC 12继续处理CQ#1的存储位置B中的CQE3,向进程#1通知M1的完成情况。
以上结合图2A和图2B介绍了步骤1至步骤9对应的数据传输流程。在上述步骤6后,由于通道n1-n2所绑定的SSQ保存主机11中多个进程的WQE,因此,RNIC 12无法确定通道n1-n2返回的报文2对应于主机11中的哪个进程,也无法确定需要通过内存13中的哪个CQ来处理报文2中的R1。为此,RNIC 12需要通过步骤7来获取相应CQ的标识(即CQ#1的标识),具体的,先确认绑定通道n1-n2的SSQ为SSQ#1,之后根据SSQ#1的上下文S1确定R1对应于SSQ#1中的WQE1,将WQE1从SSQ#1中读取到缓存121中,解析WQE1以获取CQ#1的标识。由于步骤7包括RNIC 12从内存13中读取WQE1的过程,因此步骤7增加了RNIC 12对内存13的读时延,降低了RNIC 12向进程#1通知M1的完成情况的效率。并且,由于缓存121的空间有限,将WQE1从内存13中读取到缓存121中,可能导致预取到缓存121中的待发送的WQE被老化删除,导致发送业务的延时。
在分析发现了上述延时以及导致延时的原因后,本申请实施例对步骤1至步骤9中的部分内容进行优化。下面具体介绍优化方案。
1、对步骤4进行优化。对步骤4优化前,报文1包括M1,对步骤4优化后,参考图2A步骤4的括号中的内容,在M1的基础上,在报文1中增加标识信息。可选的,该标识信息可以为CQ#1的标识和/或进程#1的标识。
2、对步骤6进行优化。对步骤6优化前,报文2包括R1,对步骤6优化后,参考图2B中步骤6的括号中的内容,在报文2中增加报文1所携带的全部或部分标识信息。
3、不执行步骤7。由于报文2携带CQ#1的标识,因此,参考2B中步骤7对应的虚线上的“×”,RNIC 12可以无需执行步骤7来获取CQ#1的标识。
基于上述步骤1至步骤9以及优化内容的构思,图3示出了本申请计算机***另一种可能的实施例。
参考3,计算机***3可以包括数据传输***31、第一主机32和第二主机33。数据传输***31包括第一网络设备311和第二网络设备312,第一网络设备311设置于第一主机32上,第二网络设备312设置于第二主机上。该数据传输***31可以为RDMA数据传输***,第一网络设备311和第二网络设备312之间可以传输RDMA数据传输消息。
可选的,计算机***3可以解释为图1B或图1C或图2A或图2B所示的计算机***。可选的,数据传输***31可以解释为图1B或图1C或图2A或图2B所示的数据传输***。可选的,第一主机32可以解释为包括图2A或图2B所示的主机11。可选的,第二主机33可以解释为包括图2A或图2B所示的主机21。可选的,第一网络设备311可以解释为包括图1B或图1C所示的网络设备#1,或者解释为包括图2A或图2B所示的RNIC 12,或者解释为包括图2A或图2B所示的RNIC 12和内存13。可选的,第二网络设备312可以解释为包括图1B或图1C所示的网络设备#2,或者解释为包括图2A或图2B所示的RNIC22。
其中,第一主机32可以运行一个或多个进程,第一网络设备311可以创建供这一个或多个进程中的多个进程使用的SSQ。参考图2A或图2B所示的计算机***,可选的,第一主机32运行的一个或多个进程可以例如包括进程#1和进程#2,第一网络设备311创建的SSQ可以例如为内存13中的SSQ#1。
可选的,SSQ可以设置在第一网络设备的内存中,或者可以设置在第一主机的内存中。示例性的,SSQ可以设置在图2A或图2B所示的内存13中。
为了便于描述,本申请实施例将使用该SSQ的多个进程中的一个进程称作第一进程,例如,第一进程可以解释为图2A或图2B对应的实施例中的进程#1。下面以数据传输***31处理第一进程的数据传输消息的过程为例,介绍数据传输***31中第一网络设备311和第二网络设备312的功能。
第一网络设备311可以用于从SSQ获取第一进程的数据传输消息。可选的,该数据传输消息可以解释为图2A或图2B对应的实施例中的M1。可选的,该SSQ具体用于保存来自多个进程的工作请求,第一网络设备311从SSQ获取数据传输消息具体可以指,第一网络设备311用于从SSQ获取来自第一进程的第一工作请求,之后根据第一工作请求获取数据传输消息。其中,第一工作请求描述数据传输消息。
可选的,SSQ所保存的来自多个进程的工作请求可以例如分别参考图2A或图2B所示的WQE1和WQE2进行理解,第一工作请求可以参考图2A或图2B所示的WQE1进行理解。
图4示出了第一工作请求一种可能的结构。参考图4,第一工作请求可以包括控制字段、任务字段和内存描述字段。
其中,任务字段可以用于描述第一工作请求的格式信息。其中,任务字段可以包括第一网络设备311处理数据传输消息的指示信息,例如,任务字段可以包括标识信息,可选的,该标识信息可以包括第一进程对应的第一标识。可选的,该标识信息中的第一标识可以解释为图2A或图2B对应的实施例中的CQ#1的标识和/或进程#1的标识。该标识信息还可以包括其他信息,后文将介绍该其他信息的可能内容,此处暂不展开介绍。
可选的,第一工作请求还可以包括内存描述字段。内存描述字段可以用于描述第一网络设备311和/或第二网络设备312注册的内存空间。第一网络设备311可以根据内存描述字段从第一主机32中获取数据传输消息。可选的,内存描述字段可以包括地址字段,地址字段可以用于确定该内存空间的起始位置。可选的,内存描述字段还可以包括长度(length)字段,用于确定该内存空间的长度。可选的,内存描述字段还可以包括钥匙(key)字段,用于唯一标识该内存空间。
第一网络设备311还可以根据该数据传输消息和标识信息封装第一报文,之后向第二网络设备发送第一报文。可选的,第一网络设备311可以根据RDMA协议封装第一报文。
可选的,该第一报文可以解释为图2A或图2B对应的优化后的实施例中的报文1,即第一报文可以包括数据传输消息和标识信息。
第二网络设备312可以用于接收第一报文,对第一报文进行解封装,以获得数据传输消息和标识信息。之后,第二网络设备312可以根据数据传输消息生成反馈消息,用以指示数据传输消息的完成情况。可选的,第二网络设备312在获得数据传输消息后生成反馈消息,用以通知第一网络设备311已经成功接收数据传输消息。或者,第二网络设备312可以根据数据传输消息是否成功写入第二主机33来生成相应的反馈消息。例如,若数据传输消息成功写入第二主机33,该反馈消息指示的完成情况可以为成功,若数据传输消息写入第二主机33失败,该反馈消息指示的完成情况可以为失败。可选的,该反馈消息可以解释为图2B对应的实施例中的R1。
第二网络设备312还可以用于根据反馈消息和标识信息封装第二报文,向第一网络设备311发送第二报文。可选的,第二报文可以解释为图2B对应的优化后的实施例中的报文2,即第二报文可以包括第一标识和反馈消息。
第一网络设备311还可以用于接收第二报文,对第二报文进行解封装,以获得反馈消息和标识信息。之后,第一网络设备311可以根据第二报文中的标识信息和反馈消息通知第一进程数据传输消息的完成情况。
可选的,第一网络设备311可以为第一主机32运行的多个进程创建多个CQ,每个进程对应多个CQ中的部分CQ(例如一个CQ),每个CQ用于向相应进程通知消息的完成情况。本申请实施例将该多个CQ中对应于第一进程的CQ称作第一CQ。
可选的,第一网络设备311所创建的CQ可以解释为图2B对应的实施例中的CQ#1或CQ#2。示例性的,参考图2A或图2B对应的实施例,第一网络设备311可以为进程#1创建CQ#1,为进程#2创建CQ#2。其中,CQ#1用于向进程#1通知进程#1提交的消息的完成情况,CQ#2用于向进程#2通知进程#2提交的消息的完成情况。
第一网络设备311根据第二报文中的第一标识和反馈消息通知第一进程数据传输消息的完成情况可以指,第一网络设备311从多个CQ中确定第一标识对应的CQ(称作第一CQ),根据反馈消息在第一CQ中写入CQE(称作第一CQE),第一CQE描述数据传输消息的完成情况。可选的,第一CQE可以解释为图2B对应的实施例中的CQE1。
可选的,第一CQE通过携带的部分字段(例如称作错误码)来指示数据传输消息的完成情况。例如,第一进程解析第一CQE,若第一CQE中错误码的取值为0,第一进程可以确定数据传输消息的完成情况为成功,具体例如为数据传输消息已完成传输等。例如,第一进程解析第一CQE,若第一CQE1中错误码的取值为1,第一进程可以确定该数据传输消息的完成情况为失败,具体例如为数据传输消息未完成传输等。
可选的,第一网络设备311通知的数据传输消息的完成情况可以与反馈消息所描述的完成情况一致。例如,若反馈消息描述数据传输消息的完成情况为成功,那么第一网络设备311可以通知第一进程数据传输消息已完成或传输成功。若反馈消息描述数据传输消息的完成情况为失败,那么第一网络设备311可以通知第一进程数据传输消息未完成或传输失败。
或者,可选的,第一网络设备311通知的数据传输消息的完成情况可以与反馈消息所描述的完成情况不一致。例如,若反馈消息描述数据传输消息的完成情况为成功,但是第一网络设备311因故障可能未正确的封装第一报文(例如封装的数据传输消息错误或目的地址错误等),那么第一网络设备311可以通知第一进程数据传输消息未完成或传输失败。
图3对应的实施例中,第一网络设备311可以创建供第一主机32运行的多个进程使用的SSQ,第一网络设备311从SSQ获取第一进程的数据传输消息后,可以在封装数据传输消息的报文(即第一报文)中同时封装第一进程对应的第一标识。第二网络设备312接收到第一报文后,可以在封装反馈消息的报文(即第二报文)中同时封装第一标识,这样,第一网络设备312在接收到第二报文后,无需根据SSQ的上下文来确定第二报文中的反馈消息对应于第一进程,而是可以根据第二报文中的第一标识确定该反馈消息对应于第一进程,有利于高效的通知第一进程已处理该数据传输消息,进而有利于提高第一进程的运行效率。
下面对图3对应的实施例进行补充介绍。
一、上述图3对应的实施例提到,第一标识可以解释为图2A或图2B对应的实施例中的CQ#1的标识和/或进程#1。可选的,本申请实施例不限定第一标识的具体含义,只要第一标识能够用于确定第一CQ即可。
以第一标识为第一进程的标识为例,介绍第一网络设备311根据第一进程的标识确定第一CQ的方法。第一网络设备311可以保存映射表,该映射表记录进程与CQ之间的对应关系。第一网络设备311解封装第二报文得到第一进程的标识后,可以在映射表中查找第一进程与第一CQ对应关系,进而确定第一CQ的标识。继续参考图2B对应的实施例,RNIC 12在获取报文2携带的进程#1的标识后,可以从映射表中获取CQ#1的标识,进而将CQE1写入CQ#1。
可选的,第一标识可以包括第一进程的标识和第一CQ的标识,第一CQE可以包括第一进程的标识。可选的,第一进程和其他进程可以共享同一CQ,第一进程通过第一CQE携带的第一进程的标识可以确定第一CQE为自己的CQE。这样,虽然第一网络设备311创建的CQ仍然不被所有进程共享,但是通过让部分进程共享一个CQ,有利于减少创建的CQ的数目,从而有利于节约内存空间。
二、图5A通过带有箭头的实线线段示例性示出了第一网络设备311获取进程的数据传输消息的过程,通过带有箭头的虚线线段示例性示出了第一网络设备311通知进程数据传输消息的完成情况的过程。结合图2A或图2B对应的实施例,下面介绍图5A所描述的过程。
参考图1C对应的实施例,假设图2A或图2B所示的计算机***还包括节点#3,RNIC12创建的SSQ#2可以绑定节点#1和节点#3之间的通道n1-n3,SSQ#2用于获取发往节点#3的消息。假设进程#1待传输的消息依次包括M4、M3和M1,其中,M4和M3用于发往节点#3。假设进程#2带传输的消息依次包括M5和M2,其中,M5用于发往节点#3。
RNIC 12可以根据SSQ#2的PI的取值依次将M5对应的WQE5、M4对应的WQE4和M3对应的WQE3写入SSQ#2中,并且根据SSQ#1的PI的取值依次将M1对应的WQE1和M2对应的WQE2写入SSQ#1。之后,RNIC 12可以根据SSQ#2的CI的取值依次处理SSQ#2中的WQE,发送相应的消息,之后RNIC 12可以根据SSQ#1的CI的取值依次处理SSQ#1中的WQE,发送相应的消息。假设RNIC 12从先至后依次发送M5、M4、M3、M1和M2。
RNIC 12在接收到携带反馈消息的报文后,可以根据报文携带的第一标识确定相应的CQ。假设RNIC 12从先至后依次接收M5对应的报文a、M4对应的报文b、M3对应的报文c、M1对应的报文d和M2对应的报文e。RNIC 12根据报文a携带的CQ#2的标识在CQ#2中新增CQE-a,根据报文b携带的CQ#1的标识在CQ#1中新增CQE-b,类似的在CQ#1中新增WQE-c和CQE-d,在CQ#2中新增CQE-e。
进程#1根据CQ#1中各CQE的写入顺序,可以分别确定CQE-b对应于M4、CQE-c对应于M3、CQE-d对应于M1。类似的,进程#2根据CQ#2中各CQE的写入顺序,可以分别确定CQE-a对应于M5、CQE-e对应于M2。
为了更加高效准确的通知进程消息的完成情况,可选的,第一报文和第二报文中的标识信息还可以包括第二标识,第二标识用于从第一进程的多个数据传输消息中确定数据传输消息。相应的,第一网络设备具体用于根据第一标识、反馈消息和第二标识通知第一进程数据传输消息的完成情况。可选的,第一CQE可以包括第二标识。
继续参考图5A,可选的,M4、M3和M1对应的第二标识可以分别为相应消息的序号。例如,M4、M3和M1的第二标识可以分别为1、2和3。CQE-b、CQE-c和CQE-d携带的第二标识分别为1、2和3。进程#1可以根据CQ#1中各CQE的第二标识确定CQE-b对应于M4、CQE-c对应于M3、CQE-d对应于M1。
参考图5B,假设进程#1通过调用程序接口和RNIC 12的驱动程序依次向RNIC 12提交描述M4的WR4、描述M3的WR3和描述M1的WR1,进程#2通过调用程序接口和RNIC 12的驱动程序依次向RNIC 12提交描述M5的WR5和描述M2的WR2。RNIC 12依次根据WR5、WR4、WR3、WR1和WR2在SSQ#2和SSQ#1中新增相应的WQE。那么,可选的,消息的第二标识可以为相应WR的标识(例如WR的序号)。RNIC 12在CQ#1和CQ#2中分别新增相应消息的CQE后,进程#1可以根据CQ#1中各CQE的第二标识确定CQE对应的消息,例如,通过确定CQE-b对应于WR4,进而确定CQE-b对应于M4。
三、下面对图3对应的实施例所涉及的数据传输消息、第一报文和第二报文进行补充介绍。
1)可选的,第一进程的数据传输消息可以包括待写入第二主机33中的第一数据。第二网络312设备用于在获得第一数据后,在第二主机上存储第一数据。
可选的,第一网络设备311可以将第一数据分为多个数据片(segment),并且可以将多个片段依次封装至多个报文(称作第一报文序列)中。相应的,图3对应的实施例中涉及的第一报文可以指第一报文序列。
可选的,第一网络设备311可以在第一报文序列中的每个报文中均封装标识信息,或者,仅在第一报文序列中的最后一个报文中封装标识信息。可选的,标识信息可以封装在报文的扩展头中,第一数据或数据片可以作为报文的净荷数据。下面,以第一网络设备311在第一报文序列中的每个报文中均封装标识信息为例,介绍第一报文和第二报文的发送过程。
示例性的,图3对应的实施例中,数据传输***31可以采用发送(send)操作或写(write)操作或原子(atomic)操作来执行数据传输消息对应的工作请求。
图6A示出了发送操作对应的第一报文和第二报文的传输过程。参考图6A,第一报文序列包括报文#1、报文#2、……、报文#k,报文#1、报文#2、……、报文#k中分别携带第一数据中的数据片#1、数据片#2、……、数据片#k,k为任意一个正整数。并且,第一报文序列中的每个报文均携带标识信息。可选的,该标识信息可以包括前文介绍的第一标识,还可以包括第二标识。此外,该标识信息还可以第三标识。该第三标识可以包括第二进程的标识和/或第二进程对应的RQ的标识。图6A示例性示出了标识信息中的第一标识和RQ的标识。
以第三标识包括第二进程对应的RQ为例,第二网络设备312接收到第一网络设备311发送的第一报文序列后,可以从第三标识对应的RQ中读取WQE,该WQE描述第二进程对应的存储空间。之后第二网络设备312可以将第一数据保存在WQE描述的存储空间。第二网络设备312接收第一报文序列后,可以向第一网络设备311发送确认报文,该确认报文携带确认字符(acknowledge character,ACK),因此,本申请实施例将该确认报文称作ACK报文。该ACK报文可以携带前文介绍的反馈消息(例如为确认字符),还可以携带第一报文序列中标识信息中的全部或部分内容。例如,ACK报文还可以携带第一标识。
图6B示出了写操作对应的第一报文和第二报文的传输过程。参考图6B,第一报文序列包括报文#1、报文#2、……、报文#k,报文#1、报文#2、……、报文#k中分别携带第一数据中的数据片#1、数据片#2、……、数据片#k,k为大于或等于3的正整数。并且,第一报文序列中的每个报文均携带标识信息。可选的,该标识信息可以包括前文介绍的第一标识,可选的,还可以包括第二标识。图6B示例性示出了标识信息中的第一标识。
此外,报文#1中还可以封装有第一数据在第二主机33中的写入位置。第二网络设备312接收到第一报文序列后,可以根据该写入位置将第一数据存储在第二主机33。第二网络设备312接收第一报文序列后,可以向第一网络设备311发送ACK报文。该ACK报文可以携带前文介绍的反馈消息(例如为确认字符),还可以携带第一报文序列中标识信息中的全部或部分内容。例如,ACK报文还可以携带第一标识。
图6C示出了原子操作对应的第一报文和第二报文的传输过程。参考图6C,第一报文包括第一数据和标识信息。可选的,该标识信息可以包括前文介绍的第一标识,可选的,还可以包括第二标识。图6C示例性示出了标识信息中的第一标识。第二网络设备312接收到第一报文后,可以将第一数据存储在第二主机33。第二网络设备312接收第一报文后,可以向第一网络设备311发送第二报文,该第二报文可以例如为原子反馈(atomic response)报文或原子确认(atomic acknowledge)报文。第二报文可以携带前文介绍的反馈消息(例如为确认字符),还可以携带第一报文序列中标识信息中的全部或部分内容。例如,第二报文还可以携带第一标识。
2)可选的,数据传输消息可以包括第一数据的源地址和目的地址,并且,第一数据的源地址指向第二主机33,第一数据的目的地址指向第一主机32,因此,数据传输消息可以不携带第一数据。
第二网络设备312可以用于在获得第一报文中封装的源地址、目的地址和标识信息后,根据源地址在第二主机33上读取第一数据,根据第一数据、标识信息、反馈消息和目的地址封装第二报文,并向第一主机32发送第二报文。图6B示例性示出了标识信息中的第一标识。
可选的,标识信息可以封装在报文的扩展头中。第一网络设备311用于在获得第二报文中的第一数据和目的地址后,根据目的地址在第一主机上存储第一数据。第一网络设备311还用于根据第二报文中的第一标识和反馈消息通知第一进程数据传输消息的完成情况。
可选的,第二网络设备312可以将第一数据分为多个片段,并且可以将多个片段依次封装至多个报文(称作第二报文序列)中。相应的,图3对应的实施例中涉及的第二报文可以指第二报文序列。
可选的,第二网络设备312可以在第二报文序列中的每个报文中均封装标识信息中的部分或全部内容,或者,仅在第二报文序列中的最后一个报文中封装标识信息中的部分或全部内容。可选的,标识信息可以封装在报文的扩展头中,第一数据或数据片可以作为报文的净荷数据。下面,以第一网络设备311在第一报文序列中的每个报文中均封装第一标识为例,介绍第一报文和第二报文的发送过程。
图6D示出了读(read)操作对应的第一报文和第二报文的传输过程。参考图6D,第一报文包括源地址、目的地址和第一标识,第二网络设备312接收到第一报文后,可以根据源地址从第二主机33中读取第一数据,之后对第一数据进行分片,依次得到数据片#1、数据片#2、……、数据片#k,k为大于或等于3的正整数。之后第二网络设备312可以封装并发送第二报文序列,第二报文序列包括报文#1、报文#2、……、报文#k,报文#1、报文#2、……、报文#k中分别携带数据片#1、数据片#2、……、数据片#k。此外,第二报文序列中的每个报文还可以包括目的地址、第一标识和反馈消息。第一网络设备311接收到第二报文后,可以根据目的地址将第一数据存储在第一主机32中,根据第一标识和反馈消息通知第一进程该数据传输消息的完成情况。
以上介绍了本申请实施例提供的计算机***和数据传输***,基于同一发明构思,本申请实施例还提供一种数据传输方法,该方法可以为RDMA数据传输方法。参考图7,该数据传输方法可以包括步骤S701至步骤S704。
S701、第一网络设备从SSQ获取第一进程的RDMA数据传输消息;
第一网络设备可以设置在第一主机上,第一进程是第一主机运行的使用共享发送队列的多个进程中的任意一个进程,该数据传输消息可以为RDMA数据传输消息。
S702、第一网络设备向第二网络设备发送第一报文;
第二网络设备设置在第二主机上,第一报文包括数据传输消息和第一进程对应的第一标识。
第二网络设备接收来自第一网络设备的第一报文,第一网络设备设置于第一主机上,第二网络设备设置于第二主机上,第一报文包括第一进程的数据传输消息和第一进程对应的第一标识,数据传输消息为第一网络设备从共享发送队列获取的,第一进程是第一主机运行的使用共享发送队列的多个进程中的任意一个进程。
S703、第二网络设备根据第一报文向第一网络设备发送第二报文,第二报文包括第一标识和反馈消息;
S704、第一网络设备根据第二报文中的第一标识和反馈消息通知第一进程数据传输消息的完成情况。
第一网络设备接收来自第二网络设备的第二报文,第二报文包括第一标识和反馈消息,反馈消息指示数据传输消息的完成情况。第一网络设备根据第二报文中的第一标识和反馈消息通知第一进程数据传输消息的完成情况。
需要说明的是,步骤S701、步骤S702和步骤S704对应的方法为第一网络设备所执行的方法,该方法可以视为图3对应实施例中第一网络设备所执行的方法。图7所示的第一网络设备所执行的步骤S701、步骤S702和步骤S704中未详尽描述的实现方式和技术效果可以参见图3所示的实施例中第一网络设备的相关描述。对于步骤S701、步骤S702和步骤S704对应的方法,本申请实施例不限定步骤S703中第二网络设备具体执行的方法,只要第一网络设备向第二网络设备发送第一报文后,第二网络设备可以向第一网络设备发送包括第一标识的第二报文即可。
需要说明的是,步骤S703对应的方法为第二网络设备所执行的方法,该方法可以视为图3对应实施例中第二网络设备所执行的方法。图7所示的第二网络设备所执行的步骤S703中未详尽描述的实现方式和技术效果可以参见图3所示的实施例中第二网络设备的相关描述。对于步骤S702对应的方法,本申请实施例不限定第一网络设备所执行的步骤,只要第一网络设备能够向第二网络设备发送包括第一标识的第一报文即可。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图8,图8是本申请实施例提供的一种网络设备的结构示意图,该网络设备可以是上述图3或图7对应的实施例中的第一网络设备,可以执行相应实施例中第一网络设备所执行的方法和步骤。
如图8所示,该网络设备800可以包括获取单元801,用于从共享发送队列获取第一进程的RDMA数据传输消息,网络设备设置在第一主机上,第一进程是第一主机运行的使用共享发送队列的多个进程中的任意一个进程。网络设备800还可以包括发送单元802,用于向第二网络设备发送第一报文,第二网络设备设置在第二主机上,第一报文包括RDMA数据传输消息和第一进程对应的第一标识。还可以包括接收单元803,用于接收来自第二网络设备的第二报文,第二报文包括第一标识和反馈消息,反馈消息指示RDMA数据传输消息的完成情况。还可以包括完成单元804,用于根据第二报文中的第一标识和反馈消息通知第一进程RDMA数据传输消息的完成情况。
在一种可能的实现方式中,第一报文和第二报文还包括第二标识,第二标识用于从第一进程的多个RDMA数据传输消息中确定RDMA数据传输消息。完成单元804具体用于根据第一标识、反馈消息和第二标识通知第一进程RDMA数据传输消息的完成情况。
在一种可能的实现方式中,共享发送队列具体用于保存来自多个进程的工作请求。获取单元801具体用于从共享发送队列获取来自第一进程的第一工作请求,第一工作请求描述RDMA数据传输消息,根据第一工作请求获取RDMA数据传输消息。
在一种可能的实现方式中,完成单元804具体用于,根据第一标识从多个完成队列中确定第一进程对应的第一完成队列,根据反馈消息在第一完成队列中写入工作完成元素,工作完成元素用于通知第一进程RDMA数据传输消息的完成情况。
应理解,网络设备800包括的各单元可以软件模块、也可以为硬件模块、或部分为软件模块部分为硬件模块。
关于网络设备800的可能实现方式及有益效果可以参考图3或图7对应的实施例的相关内容,此处不再赘述。
需要说明的是,上述网络设备800的结构仅仅作为一种示例,不应构成具体限定,可以根据需要对网络设备中的各个单元进行增加、减少或合并。此外,该网络设备800中的各个单元的操作和/或功能是为了实现上述图3或图7所描述的第一网络设备的功能或方法,为了简洁,在此不再赘述。
参见图9,图9是本申请实施例提供的另一种网络设备的结构示意图,该网络设备可以是上述图3或图7对应的实施例中的第二网络设备,可以执行相应实施例中第二网络设备所执行的方法和步骤。
如图9所示,该网络设备900可以包括接收单元901,用于接收来自第一网络设备的第一报文,第一网络设备设置于第一主机上,网络设备设置于第二主机上,第一报文包括第一进程的RDMA数据传输消息和第一进程对应的第一标识,RDMA数据传输消息为第一网络设备从共享发送队列获取的,第一进程是第一主机运行的使用共享发送队列的多个进程中的任意一个进程。还可以包括发送单元902,用于根据第一报文向第一网络设备发送第二报文,第二报文包括第一标识和反馈消息,第一标识和反馈消息指示第一网络设备通知第一进程RDMA数据传输消息的完成情况。
在一种可能的实现方式中,第一报文和第二报文还包括第二标识,第二标识用于从第一进程的多个RDMA数据传输消息中确定RDMA数据传输消息,第一标识、反馈消息和第二标识指示第一网络设备通知第一进程RDMA数据传输消息的完成情况。
应理解,网络设备900包括的各单元可以软件模块、也可以为硬件模块、或部分为软件模块部分为硬件模块。
关于网络设备900的可能实现方式及有益效果可以参考图3或图7对应的实施例的相关内容,此处不再赘述。
需要说明的是,上述网络设备900的结构仅仅作为一种示例,不应构成具体限定,可以根据需要对网络设备中的各个单元进行增加、减少或合并。此外,该网络设备900中的各个单元的操作和/或功能是为了实现上述图3或图7所描述第二网络设备的功能或方法,为了简洁,在此不再赘述。
本申请还提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例中,多个是指两个或两个以上,本申请不做限制。在本申请实施例中,“/”可以表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;“和/或”可以用于描述关联对象存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。为了便于描述本申请实施例的技术方案,在本申请实施例中,可以采用“第一”、“第二”等字样对功能相同或相似的技术特征进行区分。该“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。在本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明,被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本申请的这些修改和变型属于本发明权利要求的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (18)
1.一种远程直接内存访问RDMA数据传输***,其特征在于,所述RDMA数据传输***包括第一网络设备和第二网络设备,所述第一网络设备设置于第一主机上,所述第二网络设备设置于第二主机上;
所述第一网络设备,用于从共享发送队列获取第一进程的RDMA数据传输消息,向所述第二网络设备发送第一报文,其中,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程,所述第一报文包括所述RDMA数据传输消息和所述第一进程对应的第一标识;
所述第二网络设备,用于接收所述第一报文,根据所述第一报文向所述第一网络设备发送第二报文,其中,所述第二报文包括所述第一标识和反馈消息,所述反馈消息指示所述RDMA数据传输消息的完成情况;
所述第一网络设备,还用于接收所述第二报文,根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况。
2.根据权利要求1所述的***,其特征在于,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;
所述第一网络设备具体用于根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。
3.根据权利要求1或2所述的***,其特征在于,所述共享发送队列具体用于保存来自所述多个进程的工作请求;
所述第一网络设备具体用于从所述共享发送队列获取来自所述第一进程的第一工作请求,根据所述第一工作请求获取所述RDMA数据传输消息,其中,所述第一工作请求描述所述RDMA数据传输消息。
4.根据权利要求1至3中任一项所述的***,其特征在于,所述第一网络设备具体用于根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列,根据所述反馈消息在所述第一完成队列中写入工作完成元素,其中,所述工作完成元素描述所述RDMA数据传输消息的完成情况。
5.一种远程直接内存访问RDMA数据传输方法,其特征在于,包括:
第一网络设备从共享发送队列获取第一进程的RDMA数据传输消息,所述第一网络设备设置在第一主机上,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;
所述第一网络设备向第二网络设备发送第一报文,所述第二网络设备设置在第二主机上,所述第一报文包括所述RDMA数据传输消息和所述第一进程对应的第一标识;
所述第一网络设备接收来自所述第二网络设备的第二报文,所述第二报文包括所述第一标识和反馈消息,所述反馈消息指示所述RDMA数据传输消息的完成情况;
所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况。
6.根据权利要求5所述的方法,其特征在于,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;
所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况包括:
所述第一网络设备根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。
7.根据权利要求5或6所述的方法,其特征在于,所述共享发送队列具体用于保存来自所述多个进程的工作请求;
所述第一网络设备从共享发送队列获取第一进程的RDMA数据传输消息包括:
所述第一网络设备从所述共享发送队列获取来自所述第一进程的第一工作请求,所述第一工作请求描述所述RDMA数据传输消息;
所述第一网络设备根据所述第一工作请求获取所述RDMA数据传输消息。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述第一网络设备根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况,包括:
所述第一网络设备根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列;
所述第一网络设备根据所述反馈消息在所述第一完成队列中写入工作完成元素,所述工作完成元素用于通知所述第一进程所述RDMA数据传输消息的完成情况。
9.一种远程直接内存访问RDMA数据传输方法,其特征在于,包括:
第二网络设备接收来自第一网络设备的第一报文,所述第一网络设备设置于第一主机上,所述第二网络设备设置于第二主机上,所述第一报文包括第一进程的RDMA数据传输消息和所述第一进程对应的第一标识,所述RDMA数据传输消息为所述第一网络设备从共享发送队列获取的,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;
所述第二网络设备根据所述第一报文向所述第一网络设备发送第二报文,所述第二报文包括所述第一标识和反馈消息,所述第一标识和所述反馈消息指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
10.根据权利要求9所述的方法,其特征在于,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息,所述第一标识、所述反馈消息和所述第二标识指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
11.一种网络设备,其特征在于,包括:
获取单元,用于从共享发送队列获取第一进程的RDMA数据传输消息,所述网络设备设置在第一主机上,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;
发送单元,用于向第二网络设备发送第一报文,所述第二网络设备设置在第二主机上,所述第一报文包括所述RDMA数据传输消息和所述第一进程对应的第一标识;
接收单元,用于接收来自所述第二网络设备的第二报文,所述第二报文包括所述第一标识和反馈消息,所述反馈消息指示所述RDMA数据传输消息的完成情况;
完成单元,用于根据所述第二报文中的所述第一标识和所述反馈消息通知所述第一进程所述RDMA数据传输消息的完成情况。
12.根据权利要求11所述的网络设备,其特征在于,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息;
所述完成单元具体用于根据所述第一标识、所述反馈消息和所述第二标识通知所述第一进程所述RDMA数据传输消息的完成情况。
13.根据权利要求11或12所述的网络设备,其特征在于,所述共享发送队列具体用于保存来自所述多个进程的工作请求;
所述获取单元具体用于:
从所述共享发送队列获取来自所述第一进程的第一工作请求,所述第一工作请求描述所述RDMA数据传输消息;
根据所述第一工作请求获取所述RDMA数据传输消息。
14.根据权利要求11至13中任一项所述的网络设备,其特征在于,所述完成单元具体用于:
根据所述第一标识从多个完成队列中确定所述第一进程对应的第一完成队列;
根据所述反馈消息在所述第一完成队列中写入工作完成元素,所述工作完成元素用于通知所述第一进程所述RDMA数据传输消息的完成情况。
15.一种网络设备,其特征在于,包括:
接收单元,用于接收来自第一网络设备的第一报文,所述第一网络设备设置于第一主机上,所述网络设备设置于第二主机上,所述第一报文包括第一进程的RDMA数据传输消息和所述第一进程对应的第一标识,所述RDMA数据传输消息为所述第一网络设备从共享发送队列获取的,所述第一进程是所述第一主机运行的使用所述共享发送队列的多个进程中的任意一个进程;
发送单元,用于根据所述第一报文向所述第一网络设备发送第二报文,所述第二报文包括所述第一标识和反馈消息,所述第一标识和所述反馈消息指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
16.根据权利要求15所述的网络设备,其特征在于,所述第一报文和所述第二报文还包括第二标识,所述第二标识用于从所述第一进程的多个RDMA数据传输消息中确定所述RDMA数据传输消息,所述第一标识、所述反馈消息和所述第二标识指示所述第一网络设备通知所述第一进程所述RDMA数据传输消息的完成情况。
17.一种网络设备,其特征在于,包括:处理器以及存储器,
所述处理器用于执行所述存储器中存储的指令,使得所述网络设备执行权利要求5至8中任一项所述的方法。
18.一种网络设备,其特征在于,包括:处理器以及存储器,
所述处理器用于执行所述存储器中存储的指令,使得所述网络设备执行权利要求9或10所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111045146.4A CN115776434A (zh) | 2021-09-07 | 2021-09-07 | Rdma数据传输***、rdma数据传输方法及网络设备 |
PCT/CN2022/099788 WO2023035722A1 (zh) | 2021-09-07 | 2022-06-20 | Rdma数据传输***、rdma数据传输方法及网络设备 |
EP22866197.1A EP4387201A1 (en) | 2021-09-07 | 2022-06-20 | Rdma data transmission system, rdma data transmission method, and network device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111045146.4A CN115776434A (zh) | 2021-09-07 | 2021-09-07 | Rdma数据传输***、rdma数据传输方法及网络设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115776434A true CN115776434A (zh) | 2023-03-10 |
Family
ID=85387701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111045146.4A Pending CN115776434A (zh) | 2021-09-07 | 2021-09-07 | Rdma数据传输***、rdma数据传输方法及网络设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4387201A1 (zh) |
CN (1) | CN115776434A (zh) |
WO (1) | WO2023035722A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信***及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10051038B2 (en) * | 2011-12-23 | 2018-08-14 | Intel Corporation | Shared send queue |
US9742855B2 (en) * | 2014-09-04 | 2017-08-22 | Mellanox Technologies, Ltd. | Hybrid tag matching |
CN108009032A (zh) * | 2017-12-14 | 2018-05-08 | 郑州云海信息技术有限公司 | 一种Infiniband网络通信方法、节点、设备及存储介质 |
CN111782417B (zh) * | 2020-06-22 | 2023-10-31 | 北京计算机技术及应用研究所 | 一种基于消息的多进程共享串口资源的实现方法 |
-
2021
- 2021-09-07 CN CN202111045146.4A patent/CN115776434A/zh active Pending
-
2022
- 2022-06-20 EP EP22866197.1A patent/EP4387201A1/en active Pending
- 2022-06-20 WO PCT/CN2022/099788 patent/WO2023035722A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信***及方法 |
CN116361037B (zh) * | 2023-05-18 | 2023-08-18 | 之江实验室 | 一种分布式通信***及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023035722A1 (zh) | 2023-03-16 |
EP4387201A1 (en) | 2024-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6857030B2 (en) | Methods, system and article of manufacture for pre-fetching descriptors | |
US20190266193A1 (en) | Data processing method for bloom filter, and bloom filter | |
US20200201578A1 (en) | Method and Apparatus for Transmitting Data Processing Request | |
US20090083392A1 (en) | Simple, efficient rdma mechanism | |
US11068412B2 (en) | RDMA transport with hardware integration | |
US11025564B2 (en) | RDMA transport with hardware integration and out of order placement | |
EP3771169A1 (en) | Message processing method and related device | |
WO2004019165A2 (en) | Method and system for tcp/ip using generic buffers for non-posting tcp applications | |
CN111641566B (zh) | 数据处理的方法、网卡和服务器 | |
WO2022017475A1 (zh) | 一种数据访问方法及相关设备 | |
US7552232B2 (en) | Speculative method and system for rapid data communications | |
CN113468090B (zh) | 一种PCIe通信方法、装置、电子设备及可读存储介质 | |
WO2023035722A1 (zh) | Rdma数据传输***、rdma数据传输方法及网络设备 | |
EP4175231A1 (en) | Message processing method, network device and related device | |
CN104486442A (zh) | 分布式存储***的数据传输方法、装置 | |
CN113691466B (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
JP2021532636A (ja) | 確認パケット伝送方法および通信デバイス | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储***及存储介质 | |
CN116032498A (zh) | 一种内存区域注册方法、装置及设备 | |
US11405324B1 (en) | Packet serial number validation | |
CN116136790A (zh) | 任务处理方法和装置 | |
CN111200594B (zh) | 接收数据的方法、装置、数据接收设备和存储介质 | |
CN113422792B (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
CN116225742A (zh) | 一种消息分发方法、设备以及存储介质 | |
WO2022225576A1 (en) | Rdma append verb |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |