CN118210637A - 消息传输的方法、装置、设备和存储介质 - Google Patents
消息传输的方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN118210637A CN118210637A CN202211626313.9A CN202211626313A CN118210637A CN 118210637 A CN118210637 A CN 118210637A CN 202211626313 A CN202211626313 A CN 202211626313A CN 118210637 A CN118210637 A CN 118210637A
- Authority
- CN
- China
- Prior art keywords
- message
- sending
- control plane
- node
- network card
- 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 220
- 230000005540 biological transmission Effects 0.000 title claims abstract description 95
- 230000008569 process Effects 0.000 claims abstract description 163
- 238000004891 communication Methods 0.000 claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 7
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 7
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种消息传输的方法、装置、设备和存储介质,属于RDMA技术领域。该方法应用于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,方法包括:将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中,其中,所述第一队列对是所述第一任务进程对所述第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对;当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述发送请求发送所述第一消息。采用本申请,能够减少网卡存储资源的占用。
Description
技术领域
本申请涉及RDMA技术领域,特别涉及一种消息传输的方法、装置、设备和存储介质。
背景技术
远程直接内存访问(Remote direct memory access,RDMA)技术,可以绕过操作***由网卡直接访问内存中数据,可以有效节省处理器(central processing unit,CPU)资源,提高内存访问效率。
目前,在不同节点间采用RDMA技术进行通信时,如果不同节点中的两个任务进程间需要进行通信,那么,在通信前,这两个任务进程需要各自在节点的内存中创建队列对(Queue Pair,QP),并生成队列对的上下文(QP Context,QPC)存储在节点的网卡中,其中,QPC用于记录队列对的队列参数、进程间的通信参数、后续发送的消息的传输参数等。
在上述方案中,假设一个通信组内有N个节点,每个节点有P个任务进程参与任务,且不同节点中的任意两任务进程均有通信需求,那么,每个节点需要建立(N-1)*P*P个QP,相应的,要在节点的网卡存储(N-1)*P*P个QPC,而网卡的存储空间通常较小,大量的QPC会占用网卡中过多的存储空间。
发明内容
本申请提供了一种消息传输的方法、装置、设备和存储介质,能够减小网卡的存储空间占用,技术方案如下:
第一方面,提供了一种消息传输的方法,方法应用于通信组对应的多个节点中的第一节点,通信组是由执行同一分布式任务的多个任务进程组成,每个节点分别运行有至少一个任务进程,方法包括:
将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中。其中,第一队列对是第一任务进程对第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对。当消息发送请求在第一队列对中满足处理条件时,基于发送请求发送所述第一消息。此处,处理条件可以为按照队列对中的消息发送请求的排序,依次处理,当排到第一消息的消息发送请求时,则确定第一消息的消息发送请求满足处理条件。
在本申请提供的技术方案中,对于节点里的任一任务进程来说,只需一个队列对便可以和通信组中其他节点的所有进程进行通信。而在现有技术的方案中,对于节点里的任一任务进程来说,该任务进程需要和通信组内其他节点的所有进程分别建立对应的队。可见,在具有相同数量的任务进程的情况下,本申请提供的技术方案需要建立的队列对数量相比于现有技术中需要建立的队列对数量更少,相应的,需要在网卡中维护的相关参数也就更少,从而,有效减少了网卡的存储空间的占用。
在一种可能的实现方式中,本申请提供的方案中,将现有技术中的QPC拆分成了两部分,一部分为指导消息传输的参数,此处可以称为控制面参数,另一部分为消息传输参数,也可以称为数据面参数。控制面参数是在创建队列对时,获取并存储到网卡中的。
控制面参数包括队列对的队列参数和通信组的通信参数。队列参数包括队列对的在内存中的起始地址以及队列深度,通信组的通信参数包括最大传输单元(MaximumTransmission Unit,MTU)、重传次数上限和超时时限等,MTU表示传输的报文的最大长度,重传次数上限表示任一数据报文允许重传的次数上限,超时时限表示针对发送的任一数据报文,如果在超时时限内接收端仍未接收成功,则对该报文进行重传。
在本申请提供的技术方案中,通信组的通信参数是任一任务进程和通信组内其他节点上运行的所有任务进程进行协商确定的,也即是,对于任一任务进程来说,其获取到的通信参数对于通信组内其他节点上运行的所有任务进程是共用的,而并非是针对每个任务进程独有的,这样,可以有效节省网卡的存储资源。
在一种可能的实现方式中,任一任务进程在创建控制面参数时,还可以确定控制面参数的标识,该标识可以是任务进程分配的,也可以是网卡分配的,并且,控制面参数在节点内是唯一的,因此,在一次分布式任务中,任务进程确定的控制面参数的标识也是可以用来标识该任务进程的。此外,任务进程还可以和通信组内其他节点中的所有任务进程交换各自的控制面参数的标识。
在一种可能的实现方式中,消息发送请求中携带目的节点的地址和目的节点中的目的任务进程对应的控制面参数的标识。这样,可以使网卡获知消息是发送给哪个节点中的哪个任务进程的。
在一种可能的实现方式中,第一消息的数据报文中携带第一控制面参数的标识、第一消息的标识和数据报文的顺序指示信息,其中,顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。本申请提供的技术方案中,通过控制面参数的标识、消息的标识和数据报文的顺序指示信息,可以唯一标识一个数据报文。
在一种可能的实现方式中,数据报文中的组扩展报文头(group extensionTransport Header)GETH中携带第一控制面参数的标识。
在一种可能的实现方式中,数据报文中的GETH中携带第一消息的标识。
在一种可能的实现方式中,顺序指示信息携带在数据报文中的基本传输头(BaseTransport Header,BTH)的包序列号(Packet Sequence Number,PSN)字段。
在一种可能的实现方式中,网卡在队列对中获取到第一消息的消息发送请求后,生成第一消息的消息传输参数,并将消息传输参数存储到网卡中。
在本申请提供的技术方案中,消息传输参数可以包括消息的标识、源节点的地址、目的节点的地址、消息发送请求的存储位置、下一个的数据报文的顺序指示信息、上一个接收到的确认(Acknowledge character,ACK)报文对应的数据报文的顺序指示信息、重传计时、超时重传次数、消息中是否有报文丢失等。
在一种可能的实现方式中,为了进一步节省网卡的存储资源,在接收到第一消息的第一接收完成消息后,将网卡中存储的第一消息的消息传输参数删除。
在一种可能的实现方式中,网卡对接收到消息也可以维护相应的消息传输参数,具体处理如下:
接收第三节点发送的第二消息的第一个数据报文,生成第二消息的消息传输参数,并将所述第二消息的消息传输参数存储至网卡。在接收到第二消息的最后一个数据报文后,向第三节点发送第二消息的第二接收完成消息。
在一种可能的实现方式中,为了进一步节省网卡的存储资源,接收第三节点发送的第二接收完成消息的应答消息,将所网卡中存储的第二消息的消息传输参数删除。
在一种可能的实现方式中,本申请提供的技术方案消息间可以按照优先级进行传输,无需按照消息发送请求的顺序进行传输,具体的,处理可以如下:
将第三消息的消息发送请求添加到所述队列对,其中,第三消息的优先级大于第一消息的优先级。如果第一消息未发送完成,则停止发送所述第一消息,并基于第三消息的消息发送请求,发送所述第三消息。在将第三消息发送完成后,继续发送第一消息。
在一种可能的实现方式中,第一控制面参数中还包括所述队列对已经发送的消息的消息数量。
在一种可能的实现方式中,消息的标识为消息序列号(Message SequenceNumber,MSN),在第一消息的发送过程中,第一控制面参数中的消息数量为所述第一消息的MSN,在第一消息发送完成后,将第一控制面参数中的消息数量加一,其中,加一后的消息数量为队列对发送的下一个消息的MSN。
第二方面,提供了一种消息传输的装置,所述装置配置于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述装置包括:
添加模块,用于将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中,其中,所述第一队列对是所述第一任务进程对所述第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对;
发送模块,用于当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述发送请求发送所述第一消息。
在一种可能的实现方式中,所述装置还包括,存储模块,用于:
获取第一控制面参数,并将所述第一控制面参数存储到网卡中,其中,所述第一控制面参数包括所述队列对的队列参数和所述通信组的通信参数。
在一种可能的实现方式中,所述装置还包括确定模块,用于:
确定所述第一控制面参数的标识;
所述发送模块,还用于向所述其他节点中的所有任务进程发送所述第一控制面参数对应的标识;
还包括接收模块,用于接收所述其他节点中的所有任务进程分别发送的各自对应的控制面参数的标识。
在一种可能的实现方式中,所述消息发送请求中携带第二节点的地址和所述第二节点中的目的进程对应的控制面参数的标识。
在一种可能的实现方式中,所述第一消息的数据报文中携带所述第一标识、所述第一消息的标识和所述数据报文的顺序指示信息,其中,所述顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。
在一种可能的实现方式中,所述数据报文中的GETH中携带所述第一标识。
在一种可能的实现方式中,所述数据报文中的GETH中携带所述第一消息的标识。
在一种可能的实现方式中,所述顺序指示信息携带在所述数据报文中的BTH的PSN字段。
在一种可能的实现方式中,所述存储模块,还用于:
生成所述第一消息的消息传输参数;
将所述消息传输参数存储到所述网卡中。
在一种可能的实现方式中,所述存储模块,还用于:
在接收到所述第一消息的第一接收完成消息后,将所述网卡中存储的所述第一消息的消息传输参数删除。
在一种可能的实现方式中,所述装置还包括:
接收模块,用于接收第三节点发送的第二消息的第一个数据报文;
存储模块,用于生成所述第二消息的消息传输参数,并将所述第二消息的消息传输参数存储至网卡;
所述发送模块,用于在接收到所述第二消息的最后一个数据报文后,向所述目标网卡发送所述第二消息的第二接收完成消息。
在一种可能的实现方式中,所述装置还包括接收模块,用于:
接收所述第三节点发送的所述第二接收完成消息的应答消息;
存储模块,用于将所述网卡中存储的所述第二消息的消息传输参数删除。
在一种可能的实现方式中,所述添加模块,还用于:
将第三消息的消息发送请求添加到所述队列对,其中,所述第三消息的优先级大于所述第一消息的优先级;
所述发送模块,还用于如果所述第一消息未发送完成,则停止发送所述第一消息,并基于所述第三消息的消息发送请求,发送所述第三消息;
在将所述第三消息发送完成后,继续发送所述第一消息。
在一种可能的实现方式中,所述第一控制面参数中还包括所述队列对已经发送的消息的消息数量。
在一种可能的实现方式中,所述第一消息的标识为MSN,在所述第一消息的发送过程中,所述第一控制面参数中的消息数量为所述第一消息的MSN;
所述存储模块,还用于:
在所述第一消息发送完成后,将所述第一控制面参数中的消息数量加一,其中,加一后的消息数量为所述队列对发送的下一个消息的MSN。
第三方面,提供了一种计算机设备,所述计算设备包括处理器、存储器和网卡,所述处理器和网卡用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备执行如上述第一方面或第一方面的任一可能的实现方式中所述的消息传输的方法。
第四方面,提供了一种计算机设备集群,所述计算机设备集群包括至少一个如上述第三方面所述的计算机设备。
第五方面,提供了一种包含指令的计算机程序产品,当所述指令被计算机设备或计算机设备集群执行时,使得所述计算机设备或计算机设备集群执行如上述第一方面或第一方面的任一可能的实现方式中所述的消息传输的方法。
第六方面,提供一种计算机可读存储介质,包括计算机程序指令,当所述计算机程序指令由计算设备或计算机设备集群执行时,所述计算设备或计算机设备集群执行如上述第一方面所述消息传输的方法。
附图说明
图1是本申请提供的一种实施场景的示意图;
图2是本申请提供的一种***架构图;
图3是本申请提供的一种***架构图;
图4是本申请提供的一种计算机设备的结构示意图;
图5是本申请提供的一种消息传输的方法流程图;
图6是本申请提供的一种数据报文的报文头示意图;
图7是本申请提供的一种消息传输的方法流程图;
图8是本申请提供的一种消息传输的装置结构示意图。
具体实施方式
本申请提供了一种消息传输的方法,该方法可以应用于基于RDMA技术的消息传输场景下。参见图1,示出了本申请的一种可能的实施场景,该实施场景可以为数据中心,该实施场景中包括多个节点和交换网络,例如,如图1所示,实施场景中包括有节点1、节点2、节点3、…节点N等N个节点。多个节点可以同时执行一项分布式任务,每个节点中可以运行有至少一个任务进程,来执行该分布式任务,这些任务进程组成了一个通信组。不同节点中运行的任务进程在进行消息传输时,便可以采用本申请提供的消息传输的方法。
在本申请提供的消息传输的方法中,对于节点里的任一任务进程来说,只需一个队列对便可以和通信组中其他节点的所有进程进行通信。而在现有技术的方案中,对于节点里的任一任务进程来说,该任务进程需要和通信组内其他节点的所有进程分别建立对应的队。可见,在具有相同数量的任务进程的情况下,本申请提供的技术方案需要建立的队列对数量相比于现有技术中需要建立的队列对数量更少,相应的,需要在网卡中维护的相关参数也就更少,从而,有效减少了网卡的存储空间的占用。
参见图2,通信组内总共有N个节点,每个节点有p个任务进程,且不同节点中运行的任务进程之间均有通信需求。在此情况下,如果采用现有技术的话,以节点1中的任务进程12为例,任务进程12需要创建(N-1)*p个队列对,分别用来和其他节点的(N-1)*p个任务进程(节点2中的任务进程21、任务进程22、…任务进程2p,…节点N中的任务进程N1、任务进程N2、…任务进程Np等)进行通信。那么,采用现有技术的话,一个节点需要建立(N-1)*p*p个队列对。再参见图3,在与图2相同的通信组内,采用本申请提供的消息传输的方法,同样以节点1中的任务进程2为例,任务进程2只需建立一个队列对,用来和其他节点的(N-1)*p个任务进程进行通信.那么,一个节点只需建立(N-1)*p个队列对即可。相比之下,图3要比图2建立的队列对少,从而需要维护的队列对的相关参数也更少,可以节省网卡的存储资源。
参见图4,示出了一种计算机设备的结构示意图,图4中计算机设备400可选地由一般性的总线体系结构来实现,计算机设备400可以为上述图1中的任一节点。计算机设备400包括至少一个处理器401、通信总线402、存储器403以及至少一个网卡404。
处理器401例如是通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processing units,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器401包括专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。PLD例如是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器401可以运行上述图2或图3中的任务进程,并和网卡404进行交互。
通信总线402用于在上述组件之间传送信息。通信总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器403例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器403例如是独立存在,并通过通信总线402与处理器401相连接。存储器403也可以和处理器401集成在一起。
可选地,存储器403用于保存后文中提到的待发送数据。处理器401、网卡404均可以访问存储器403,获得存储器403中存储的待发送数据。
网卡404可以为一种RDMA网卡(RDMANetwork Interface Card,RNIC),用于实现RDMA相关功能。
在具体实现中,作为一种示例,处理器401可以包括一个或多个CPU。
在具体实现中,作为一种示例,计算机设备400可以包括多个处理器。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种示例,计算机设备400还可以包括输出设备和输入设备。输出设备和处理器401通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器401通信,以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
下面结合附图,对本申请提供的消息传输的方法进行说明。参见图5,该方法可以包括如下步骤:
步骤501、第一任务进程创建一个队列对。
对于一个分布式任务来说,可以由多个节点执行,而每个节点中又有至少一个任务进程参与该分布式任务,参与该分布式任务的所有任务进程组成了一个通信组。此处的第一任务进程为通信组中任一节点运行的任一任务进程。
在实施中,在分布式任务开始后,第一任务进程在首次和通信组中其他节点运行的任务进程进行通信之前,先建立一个队列对,其中,队列对包括发送队列和接收队列。建立队列对的处理可以如下:
第一任务进程在节点的内存中注册第一内存区域,作为发送队列,用于存储消息发送请求。第一任务进程在节点的内存中注册第二内存区域,作为接收队列,用于存储消息接收请求。
第一任务进程建立的一个队列对是第一任务进程和通信组中其他节点运行的所有任务进程进行通信进行消息传输时所使用的,分布式任务从开始到结束期间,第一任务进程仅需建立一次队列对即可。
步骤502、第一任务进程获取第一控制面参数,并将第一控制面参数存储到网卡中。
其中,控制面参数也可以称为控制面状态等。考虑到控制面参数是针对一个通信组的,而并非仅仅针对某一任务进程,此处,还可以将控制面参数称为组上下文(groupcontext,gC)。
在实施中,在步骤501创建队列对之后,第一任务进程在网卡注册第三内存区域并获取第一控制面参数。其中,第三内存区域是网卡中的一部分内存区域,用于存储第一控制面参数,其中,第一控制面参数包括队列对的队列参数和通信组的通信参数。下面分别对队列参数和通信参数进行说明。
队列参数包括发送队列的起始内存地址和队列深度、以及接收队列的起始内存地址和队列深度。发送队列的起始内存地址即为上述第一内存区域的起始地址,发送队列的队列深度即为上述第一内存区域的内存大小。接收队列的起始内存地址即为上述第二内存区域的起始地址,接收队列的队列深度即为上述第二内存区域的内存大小。
第一任务进程在创建队列对时,获取队列参数,在注册完第三内存区域后,将队列参数存储至第三内存区域中。
通信参数可以包括最大传输单元(Maximum Transmission Unit,MTU)、重传次数上限和超时时限等,MTU表示传输的报文的最大长度,重传次数上限表示任一数据报文允许重传的次数上限,超时时限表示针对发送的任一数据报文,如果在超时时限内接收端仍未接收成功,则对该报文进行重传。
第一任务进程和通信组中其他节点运行的所有任务进程共同协商通信组的通信参数,并将协商后的通信组的通信参数存储至第三内存区域中。此处,协商通信参数时,可以通过带外通信方式进行,如基于传输控制协议(Transmission Control Protocol,TCP)进行通信。协商通信参数的方法可以有多种,下面列举其中一种进行说明:
第一任务进程将本地原本存储的通信参数发送给通信组中其他节点运行的所有任务进程,相应的,通信组中其他节点运行的所有任务进程也将分别将各自本地原本存储的通信参数发送给第一任务进程。如果第一任务进程接收到的通信参数和本地原本存储的通信参数相同,则将本地原本存储的通信参数作为通信组的通信参数。如果第一任务进程接收到的通信参数和本地原本存储的通信参数不相同,则选择其中的最小值,作为通信组的通信参数。
另外,第一任务进程在网卡注册第三内存区域时,还可以确定第一控制面参数的标识。在一个节点中,控制面参数的标识是唯一的,控制面参数的标识可以由任务进程分配,也可以由网卡分配。此处,控制面参数的标识可以称为组上下文识别码(group contextnumber,gCN)。
在由任务进程分配gCN的情况下,第一任务进程在网卡注册第三内存区域时,可以同时对第一控制面参数分配第一gCN,并将分配的第一gCN下发到网卡。网卡在接收到第一gCN之后,可以查询该第一gCN是否已经被占用,如果查询到第一gCN没有被占用,则将第一gCN作为第一控制面参数的标识进行记录。如果查询到第一gCN已经被占用,网卡则向第一任务进程返回注册失败响应,第一任务进程收到注册失败响应后,重新对第一控制面参数分配gCN,并下发网卡,重复上述流程,直到网卡确定接收到的第一控制面参数的gCN唯一,停止重复上述流程。
在由网卡分配gCN的情况下,第一任务进程在网卡注册第三内存区域后,网卡可以对第一控制面参数分配一个未被占用的gCN。在一种可能的实现中,gCN可以为递增的整数,每次分配gCN时,网卡可以查询当前已经分配的最大gCN,然后,在该最大gCN的基础上加预设数值,作为第一控制面参数的gCN。预设数值可以自行设置,如预设数值为1。在此情况下,网卡在对第一控制面参数分配gCN之后,将分配给第一控制面参数的gCN上报给第一任务进程。
第一任务进程在获取到第一控制面参数的gCN之后,和其他节点中参与分布式任务的各任务进程交换gCN。即,第一任务进程向通信组中其他节点运行的各任务进程发送第一控制面参数的gCN,并接收通信组中其他节点运行的各任务进程发送的各自的控制面参数的gCN。
第一任务进程在接收到其他节点中参与分布式任务的各任务进程发送的gCN后,将gCN和相应任务进程进行关联。例如,第一任务进程接收到第二任务进程发送的第二gCN,则第一任务进程将第二gCN和第二任务进程进行关联。
在一种可能的实现中,第一控制面参数还包括第一队列对已经发送的消息的消息数量。
针对同一队列对发送的消息来说,每个消息有一个标识,该标识可以按照消息的发送顺序递增,该标识可以称为消息序列号(Message Sequence Number,MSN)。下面对MSN的一种可能情况进行说明,例如,队列对发送的第一个消息的MSN为0,发送的第二个消息的MSN为1,发送的第X个消息的MSN为X-1。在此情况下,在第一消息的发送过程中,第一控制面参数中的消息数量为第一消息的MSN,在第一消息发送完成后,将第一控制面参数中的消息数量加一,加一后的消息数量为队列对发送的下一个消息的MSN。此处所述的消息发送完成是指消息的最后一个数据报文被网卡发送出去。
步骤503、第一任务进程向队列对发送第一消息的消息发送请求。
在实施中,第一任务进程在需要向其他节点中参与分布式任务的第二任务进程发送第一消息时,先向队列对中的发送队列发送第一消息的消息发送请求,也即是,将消息发送请求写入上述第一内存区域。其中,第一消息的消息发送请求中携带目的节点的地址、第二任务进程的gCN以及第一消息中待发送数据的存储位置。目的节点的地址可以为目的节点的互联网协议(Internet Protocol,IP)地址,待发送数据的存储位置可以为待发送数据在节点的内存中的存储地址。
步骤504、网卡在队列对中获取第一消息的发送请求,生成第一消息的第一消息传输参数,并将第一消息传输参数存储到网卡中。
其中,消息传输参数也可以称为消息上下文(msgCtx)。
在实施中,第一任务进程在向发送队列中发送第一消息的消息发送请求后,向网卡发送任务通知。网卡在接收到任务通知后,在队列对中获取第一消息的发送请求,然后,网卡生成第一消息的第一消息传输参数,并将第一消息传输参数存储至网卡的内存中。如下表1所示,第一消息传输参数可以包括如下表1所示字段。
表1
下面对表1中的几个字段进行说明:
msgID:第一消息的标识msgID可以为第一控制面参数中的MSN。因为每发送一个消息,第一控制面参数中的MSN加1,所以同一队列对发送的每个消息的msgID均不同。
send_offset:每个消息由至少一个数据报文组成,在一个消息内,每个报文对应有一个顺序指示信息,该顺序指示信息也可以称为偏移值(offset),同一消息内的不同数据报文的offset不同。offset可以表示对于的数据报文相对于消息内的第一个数据报文偏移的数据报文数。例如,消息内的第一数据报文的offset为0,第二个数据报文的offset为1,第三个数据报文的offset为2,以此类推。而上述表1中的send_offset表示下一个数据报文的偏移值,例如,在发送第一个数据报文之前,send_offset为0,第一个数据报文发送完成后,将send_offset加1,即每发送完一个数据报文将send_offset加1。
ack_offset:网卡每次接收到第一消息中数据报文对应的ACK报文,则更新ack_offset。此处,ACK报文中携带目的节点接收到的数据报文的offset,相应的,网卡收到ACK报文后,将ack_offset更新为ACK报文中携带的offset。
TO_tx:网卡每次收到ACK报文或者重传完成或者达到超时时限,则将TO_tx置零。如果To_tx达到控制面参数中的超时时限,则从对应offset为ack_offset+1的数据报文开始重新发送对应的数据报文。
步骤505、网卡根据第一消息的消息发送请求,发送第一消息。
在实施中,网卡根据消息发送请求中携带的待发送数据的存储位置,获取待发送数据,并根据第一控制面参数中的MTU,生成第一消息的至少一个数据报文,依次对数据报文进行发送。其中,每个数据报文中携带数据报文的offset、目的任务进程的控制面参数的标识、第一控制面参数的标识和第一消息的标识。
如图6所示的数据报文头,网卡在将待发送数据封装为数据报文时,可以将第一控制面参数的标识封装在报文头的扩展报文头(Group Extended Transport Header,GETH)中,即图6中的源gCN(Source gCN,sgCN),第一消息的标识也可以封装在GETH字段中,即图6中的MSN。offset可以复用标准RDMA协议中定义的BTH中的PSN字段。
下面对图6所示报文头中的其余字段说明,以下字段均在标准RDMA协议中有相关定义:
OpCode:操作码,用于标识传输模式及操作类型,以及消息的第一个数据报文、中间数据报文以及最后一个数据报文。当然,除此之外,还可以在OpCode字段添加其他操作码,本申请对此不做限定。上述操作类型可以包括写(read)、读(write)、发送(send)、确认(ACK)等。
SE:用于标识接收方应该对该消息生成完成信息(Completion Queue Element,CQE)。
M:用于标识路径迁移状态。
Pad:用于标识报文载荷尾部补0的字节数(报文载荷需4字节对齐)。
TVer:用于标识协议版本号,固定为0。
Partition Key:标识目的队列对的分区号。
Destination gCN:标识目的任务进程的控制面参数的标识。
F:数据报文可为1,标识路径上发生了拥塞。
B:ACK报文可为1,标识该ACK报文对应的数据报文的F字段为1。
Reserve:预留字段。
另外,图6中的报文头格式仅为一种示例,本申请对于数据报文的offset、目的任务进程的控制面参数的标识、第一控制面参数的标识和第一消息的标识具体携带哪些字段不做限定,只需在数据报文中携带有这些信息即可。
在一种可能的实现中,本申请提供的消息传输的方法,可以实现消息间独立传输,消息内顺序传输,即不同的消息独立传输,没有顺序限制,这样,可以根据优先级调度方法,对消息进行发送,可以有效解决标准RDMA的RC模式下的头阻问题。
具体的调度方法有很多种,可以根据实际需求进行配置,例如,可以采用优先级队列,下面对优先级队列的调度方法进行说明:
在采用优先级队列的情况下,队列对中的发送队列可以包括多个不同优先级的发送队列,第一任务进程在向发送队列下发消息发送请求时,可以根据消息的优先级,将消息下发到相应优先级的发送队列中。具体的,第一任务进程判断消息优先级的方式可以有多种,本申请对此不做限定,下面仅示例性的例举一种进行说明:
例如,第一任务进程可以根据消息的待发送数据量,预估消息的预计发送用时,进而,根据预计发送用时,来确定消息的优先级,消息的预估发送用时越短优先级越高。
假设,总共有三个不同优先级的发送队列:第一优先级的发送队列、第二优先级的发送队列和第三优先级的发送队列,其中,第一优先级高于第二优先级,第二优先级高于第三优先级。那么,可以将预计发送用时划分为三段,每段对应一个优先级。如下表2所示。
表2
第一任务进程如果确定消息的预计发送用时小于或等于a,则将消息发送请求下发到第一优先级的发送队列,如果确定预计用时大于a且小于b,则将消息发送请求下发到第二优先级的发送队列,如果确定预计用时大于或等于b,则将消息发送请求下发到第三优先级的发送队列。
网卡优先发送第一优先级的发送队列中的消息,在第一优先级队列中没有消息发送请求的情况下,再发送第二优先级的发送队列中的消息,在第二优先级的发送队列中没有消息发送请求的情况下,再发送第三优先级的发送队列中的消息。如果在发送较低优先级的发送队列中的消息的过程中,较高优先级的发送队列中收到了消息发送请求,则可以优先发送该较高优先级的发送队列中的消息,在该较高优先级的发送队列中的消息发送完成后,再继续发送上述较低优先级的发送队列中的消息。
下面结合图7对目的节点接收第一消息的处理进行说明,为了便于描述下面将目的节点的网卡称为目的网卡,将源节点的网卡称为源网卡,其中,执行上述图5所示流程的节点可以为源节点。
步骤701、目的网卡接收到第一消息的第一个数据报文时,生成第一消息的第二消息传输参数,并存储在目的网卡中。
在实施中,目的网卡根据接收到的数据报文中携带的MSN和offset,判断当前接收的数据报文是否为第一消息中的第一个数据报文。
例如,假设第一消息的MSN为10,第一消息的第一个数据报文的offset为0,那么,目的网卡在接收到数据报文时,获取数据报文中携带的MSN和offset,如果确定offset为0,则确定该数据报文是MSN为10的消息中的第一个数据报文。
目的网卡在判断当前接收到的数据报文为第一消息中的第一个数据报文时,生成第一消息的第二消息传输参数,并将第二消息传输参数存储至目的网卡。
与源网卡生成的第一消息传输参数不同的是,第二消息传输参数中的ptr_wqe为目的任务进程发送的消息接收请求的存储位置,第二消息传输参数中的ack_offset表示目的网卡发送的上一个ACK报文(即最新发送的ACK报文)对应的数据报文的顺序指示信息,目的网卡针对第一消息的数据报文每发送一个ACK报文,则将ack_offset更新为ACK报文确认的数据报文的offset。
步骤702、目的网卡如果确定接收到的数据报文满足确认消息发送条件,则向源网卡返回ACK报文。
在实施中,确认消息发送条件可以为数据报文中携带的offset为N的整数倍,其中,N为预设正整数,如N=10,具体的,目的网卡在接收到数据报文后,如果判断数据报文中携带的offset为N的整数倍,则向源网卡返回ACK报文,在ACK报文中携带该数据报文的offset。或者,确认消息发送条件还可以为ACK报文的发送时间间隔T达到预设时间间隔,如1秒,具体的,如果目的网卡在向源网卡发送上一个ACK报文后的时间T内按序收到了新的数据报文,则在向源网卡发送上一个ACK报文后经过时间T发送下一个ACK报文,ACK报文中携带最新接收到的第一消息的数据报文的offset。
此外,如果当前接收到的数据报文是第一消息的最后一个数据报文,则必须返回该数据报文对应的目标ACK报文。
步骤703、目的网卡如果确定第一消息中存在数据报文丢失,则向源网卡返回该丢失数据报文的非确认(Negative ACK,NACK)报文。
其中,NACK报文中携带丢失的数据报文的offset和第一消息的MSN。NACK报文和ACK报文、A-ACK报文的报文格式相同。三者通过扩展报文头中的opcode字段中的不同值来进行区分。例如,ACK报文为000,NACK为001、011两种,A-ACK为100。
目的网卡可以根据数据报文中携带的offset,判断消息内是否有数据报文丢失。具体的,接收端网卡在接收到数据报文时,将当前接收到的数据报文中携带的第一offset和接收到的上一个数据报文中携带的第二offset进行比较,如果第一offset减第二offset的差值,大于1,则说明在这两个数据报文不连续,即两个数据报文中间存在数据报文丢失,而丢失的数据报文的offset为第一offset和第二offset中间间隔的正整数。
此外,在确定第一消息存在数据报文丢失时,源网卡将第一消息传输参数中的“is_pkt_loss”字段的值更新为用于指示消息中存在数据报文丢失的值。例如,消息中没有数据报文丢失的情况下,“is_pkt_loss”字段的值为0,当消息中出现数据报文丢失时,将“is_pkt_loss”字段的值更新为1。
步骤704、源端网卡在接收到NACK报文后,重传NACK报文对应的数据报文。
此外,源网卡在每重传一个数据报文,将第一消息传输参数中记录的超时重传次数加1。
步骤705、源网卡在接收到第一消息的最后一个数据报文对应的目标ACK报文后,删除源网卡中存储的第一消息的第一消息传输参数。
步骤706、源网卡向接收端网卡返回确认应答报文(A-ACK)报文。
其中,A-ACK报文中携带第一消息的MSN,A-ACK报文的格式和ACK报文、NACK报文的格式相同,通过报文头中的opCode域的不同值,来对三者进行区分。
步骤707、源网卡在接收待A-ACK报文后,删除第一消息的第二消息传输参数。
此外,对于源网卡来说,如果在发出目标ACK报文的预设时长后,仍未接收到A-ACK报文,则删除第一消息的第二消息传输参数。此处,预设时长可以设置为不小于第一控制面参数中的超时重传时限的3倍的值。
通过本申请提供的消息传输的方法,可以实现多节点、多任务进程共用控制面参数,并动态建删消息的消息传输参数,在相同的分布式任务场景下,采用本申请提供的消息传输的方法对网卡内存的占用要少于标准RDMA中的RC模式。此外,通过本申请提供的消息传输的方法,可以实现消息间独立传输,不仅避免了标准RDMA中的RC模式下的头阻问题,还可以使同一条数据流的不同消息无需走同一路径,交换设备可以根据对不同消息单独计算最优路径,实现流量在网络中的均匀分布,有效避免多条流走同一条路径造成的拥塞问题。
图8是本申请实施例提供的一种消息传输的装置,该装置可以是通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述装置包括:
添加模块810,用于将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中,其中,所述第一队列对是所述第一任务进程对所述第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对;
发送模块820,用于当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述发送请求发送所述第一消息。
在一种可能的实现方式中,所述装置还包括,存储模块,用于:
获取第一控制面参数,并将所述第一控制面参数存储到网卡中,其中,所述第一控制面参数包括所述队列对的队列参数和所述通信组的通信参数。
在一种可能的实现方式中,所述装置还包括确定模块,用于:
确定所述第一控制面参数的标识;
所述发送模块820,还用于向所述其他节点中的所有任务进程发送所述第一控制面参数对应的标识;
还包括接收模块,用于接收所述其他节点中的所有任务进程分别发送的各自对应的控制面参数的标识。
在一种可能的实现方式中,所述消息发送请求中携带第二节点的地址和所述第二节点中的目的进程对应的控制面参数的标识。
在一种可能的实现方式中,所述第一消息的数据报文中携带所述第一标识、所述第一消息的标识和所述数据报文的顺序指示信息,其中,所述顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。
在一种可能的实现方式中,所述数据报文中的GETH组扩展报文头中携带所述第一标识。
在一种可能的实现方式中,所述数据报文中的GETH组扩展报文头中携带所述第一消息的标识。
在一种可能的实现方式中,所述顺序指示信息携带在所述数据报文中的BTH扩展报文头的PSN包序列号字段。
在一种可能的实现方式中,所述存储模块,还用于:
生成所述第一消息的消息传输参数;
将所述消息传输参数存储到所述网卡中。
在一种可能的实现方式中,所述存储模块,还用于:
在接收到所述第一消息的第一接收完成消息后,将所述网卡中存储的所述第一消息的消息传输参数删除。
在一种可能的实现方式中,所述装置还包括:
接收模块,用于接收第三节点发送的第二消息的第一个数据报文;
存储模块,用于生成所述第二消息的消息传输参数,并将所述第二消息的消息传输参数存储至网卡;
所述发送模块820,用于在接收到所述第二消息的最后一个数据报文后,向所述目标网卡发送所述第二消息的第二接收完成消息。
在一种可能的实现方式中,所述装置还包括接收模块,用于:
接收所述第三节点发送的所述第二接收完成消息的应答消息;
存储模块,用于将所述网卡中存储的所述第二消息的消息传输参数删除。
在一种可能的实现方式中,所述添加模块810,还用于:
将第三消息的消息发送请求添加到所述队列对,其中,所述第三消息的优先级大于所述第一消息的优先级;
所述发送模块820,还用于如果所述第一消息未发送完成,则停止发送所述第一消息,并基于所述第三消息的消息发送请求,发送所述第三消息;
在将所述第三消息发送完成后,继续发送所述第一消息。
在一种可能的实现方式中,所述第一控制面参数中还包括所述队列对已经发送的消息的消息数量。
在一种可能的实现方式中,所述第一消息的标识为消息序列号MSN,在所述第一消息的发送过程中,所述第一控制面参数中的消息数量为所述第一消息的MSN;
所述存储模块,还用于:
在所述第一消息发送完成后,将所述第一控制面参数中的消息数量加一,其中,加一后的消息数量为所述队列对发送的下一个消息的MSN。
需要说明的是:上述实施例提供的消息传输的装置在进行消息传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的消息传输的装置与消息传输的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机执行上述车道选择方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,DVD)等),或者半导体介质(如固态硬盘等)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一任务进程可以被称为第二任务进程,第一节点也可以被称为第二节点。本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (19)
1.一种消息传输的方法,其特征在于,所述方法应用于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述方法包括:
将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中,其中,所述第一队列对是所述第一任务进程对所述第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对;
当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述发送请求发送所述第一消息。
2.根据权利要求1所述的方法,其特征在于,所述将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中之前,所述方法还包括:
创建所述第一队列对;
获取第一控制面参数,并将所述第一控制面参数存储到网卡中,其中,所述第一控制面参数包括所述第一队列对的队列参数和所述通信组的通信参数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述第一控制面参数的标识;
向所述其他节点中的所有任务进程发送所述第一控制面参数的标识;
接收所述其他节点中的所有任务进程分别发送的各自对应的控制面参数的标识。
4.根据权利要求3所述的方法,其特征在于,所述消息发送请求中携带第二节点的地址和所述第二节点中的目的任务进程对应的控制面参数的标识。
5.根据权利要求3或4所述的方法,其特征在于,所述第一消息的数据报文中携带所述第一控制面参数的标识、所述第一消息的标识和所述数据报文的顺序指示信息,其中,所述顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。
6.根据权利要求5所述的方法,其特征在于,所述数据报文中的组扩展报文头GETH中携带所述第一控制面参数对应的标识。
7.根据权利要求5或6所述的方法,其特征在于,所述数据报文中的GETH中携带所述第一消息的标识。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述顺序指示信息携带在所述数据报文中的基本传输头BTH的包序列号PSN字段。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述消息发送请求发送所述第一消息之前,所述方法还包括:
生成所述第一消息的消息传输参数;
将所述消息传输参数存储到所述网卡中。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在接收到所述第一消息的第一接收完成消息后,将所述网卡中存储的所述第一消息的消息传输参数删除。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述方法还包括:
接收第三节点发送的第二消息的第一个数据报文;
生成所述第二消息的消息传输参数,并将所述第二消息的消息传输参数存储至网卡;
在接收到所述第二消息的最后一个数据报文后,向所述第三节点发送所述第二消息的第二接收完成消息。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
接收所述第三节点发送的所述第二接收完成消息的应答消息;
将所述网卡中存储的所述第二消息的消息传输参数删除。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述还包括:
将第三消息的消息发送请求添加到所述第一队列对,其中,所述第三消息的优先级大于所述第一消息的优先级;
如果所述第一消息未发送完成,则停止发送所述第一消息,并基于所述第三消息的消息发送请求,发送所述第三消息;
在将所述第三消息发送完成后,继续发送所述第一消息。
14.根据权利要求1-13中任一项所述的方法,其特征在于,所述第一控制面参数中还包括所述第一队列对已经发送的消息的消息数量。
15.根据权利要求14所述的方法,其特征在于,所述第一消息的标识为消息序列号MSN,在所述第一消息的发送过程中,所述第一控制面参数中的消息数量为所述第一消息的MSN;
所述方法还包括:
在所述第一消息发送完成后,将所述第一控制面参数中的消息数量加一,其中,加一后的消息数量为所述第一队列对发送的下一个消息的MSN。
16.一种消息传输的装置,其特征在于,所述装置配置于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述装置包括:
添加模块,用于将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中,其中,所述第一队列对是所述第一任务进程对所述第一节点之外的其他节点中的所有任务进程传输消息所使用的队列对;
发送模块,用于当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述发送请求发送所述第一消息。
17.一种计算机设备,其特征在于,所述计算设备包括处理器、存储器和网卡;
所述处理器和网卡用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备执行如权利要求1-15中任一项所述的消息传输的方法。
18.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算机设备执行时,使得所述计算机设备执行如权利要求的1-15中任一项所述的消息传输的方法。
19.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1-15中任一项所述消息传输的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211626313.9A CN118210637A (zh) | 2022-12-15 | 2022-12-15 | 消息传输的方法、装置、设备和存储介质 |
PCT/CN2023/134259 WO2024125280A1 (zh) | 2022-12-15 | 2023-11-27 | 消息传输的方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211626313.9A CN118210637A (zh) | 2022-12-15 | 2022-12-15 | 消息传输的方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118210637A true CN118210637A (zh) | 2024-06-18 |
Family
ID=91447684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211626313.9A Pending CN118210637A (zh) | 2022-12-15 | 2022-12-15 | 消息传输的方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118210637A (zh) |
WO (1) | WO2024125280A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165110B2 (en) * | 2001-07-12 | 2007-01-16 | International Business Machines Corporation | System and method for simultaneously establishing multiple connections |
CN103248467B (zh) * | 2013-05-14 | 2015-10-28 | 中国人民解放军国防科学技术大学 | 基于片内连接管理的rdma通信方法 |
CN113703954A (zh) * | 2020-05-21 | 2021-11-26 | 中移(苏州)软件技术有限公司 | 一种消息备份方法、装置、电子设备及计算机存储介质 |
CN111752728B (zh) * | 2020-06-30 | 2022-09-06 | 中国科学技术大学 | 消息传输方法及装置 |
-
2022
- 2022-12-15 CN CN202211626313.9A patent/CN118210637A/zh active Pending
-
2023
- 2023-11-27 WO PCT/CN2023/134259 patent/WO2024125280A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024125280A1 (zh) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11470000B2 (en) | Medical device communication method | |
US7346707B1 (en) | Arrangement in an infiniband channel adapter for sharing memory space for work queue entries using multiply-linked lists | |
EP1399849B1 (en) | Arrangement for creating multiple virtual queue pairs from a compressed queue pair based on shared attributes | |
JP3606541B2 (ja) | 複数ノードの非同期データ通信システム内で早期到達メッセージを処理する方法 | |
CN105812287B (zh) | 分组交换网络中的有效电路 | |
WO2020238292A1 (zh) | 确定业务传输需求的方法、设备及*** | |
WO2021204091A1 (zh) | 一种清空缓存的方法及装置 | |
CN105141603A (zh) | 通信数据传输方法及*** | |
CN112134915B (zh) | 一种应用层协议解耦合的通用网络处理*** | |
CN111669835A (zh) | 通信的方法、装置及*** | |
US7548972B2 (en) | Method and apparatus for providing likely updates to views of group members in unstable group communication systems | |
CN112838992B (zh) | 报文调度方法及网络设备 | |
CN118210637A (zh) | 消息传输的方法、装置、设备和存储介质 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
US7085869B1 (en) | Arrangement for managing transmitted packets requiring acknowledgement in a host channel adapter | |
CN115278548A (zh) | 一种数据传输方法及装置 | |
WO2022147762A1 (zh) | 一种数据包排序方法及装置 | |
CN115174501A (zh) | 一种用于网内聚合传输的服务***和服务方法 | |
WO2023202241A1 (zh) | 一种通信方法及相关产品 | |
CN108809858B (zh) | 网络拥塞控制方法、设备及*** | |
CN115344192A (zh) | 一种数据处理方法、装置及电子设备 | |
CN116962171A (zh) | 算力资源信息的处理方法及装置、节点设备、存储介质 | |
CN115242727A (zh) | 用户请求处理方法、装置、设备和介质 | |
JP5832305B2 (ja) | 送信計算機、受信計算機、送信方法、送信プログラム、受信方法、受信プログラム、通信システムおよび通信方法 | |
CN117785762A (zh) | 一种信息存储方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |