CN103248467A - 基于片内连接管理的rdma通信方法 - Google Patents
基于片内连接管理的rdma通信方法 Download PDFInfo
- Publication number
- CN103248467A CN103248467A CN2013101770305A CN201310177030A CN103248467A CN 103248467 A CN103248467 A CN 103248467A CN 2013101770305 A CN2013101770305 A CN 2013101770305A CN 201310177030 A CN201310177030 A CN 201310177030A CN 103248467 A CN103248467 A CN 103248467A
- Authority
- CN
- China
- Prior art keywords
- message
- context
- transmission
- network interface
- interface 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.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于片内连接管理的RDMA通信方法,实施步骤如下:1)在网络接口卡中建立发送上下文数据结构、接收上下文数据结构;在主机内存中建立的描述符队列、短消息接收队列、完成事件队列;2)源节点主机向主机内存中的描述符队列提交RDMA写描述符,源节点网卡获取待处理描述符。3)源节点网卡检查当前已获取的描述符为RDMA写描述符,在源节点和目的节点网卡芯片之间建立连接;4)在已建立连接的基础上,源节点以DMA方式从本机内存中获取数据并发往目的节点网卡。本发明具有可扩展性好、支持多路径传输、数据传输可靠、多核处理效率高、单报文消息传输延迟低的优点。
Description
技术领域
本发明涉及并行计算机系统高速互连网络领域,具体涉及一种基于片内连接管理的RDMA通信方法。
背景技术
就高性能计算发展的趋势而言,提高并行计算机系统计算性能主要有两种途径,一是增加处理器数目,二是提高处理器核数。然而随着并行计算机系统规模的不断扩大,系统的平均无故障时间(Mean Time To Failure,MTTF)不断缩小,所以系统的可靠性问题将面临更大的挑战。高速互连网络是并行计算机系统的重要组成部分,承担着处理节点间的通信任务,因此互连网络通信的可靠性是影响整个并行计算机系统可靠性的重要因素。
在现有技术中,为了提高并行计算机系统高速互连网络通信可靠性,主要采取两种技术思路:一是基于链路层错误数据重传的可靠性数据传输;二是基于端到端错误数据重传的可靠性数据传输。前者主要依靠循环冗余编码和校验(Cyclic Redundancy Code or Check,CRC)和滑动窗口重传等技术保障链路级数据传输的可靠性,硬件并不支持端到端的数据可靠传输。这种互连网络被认为是无报文丢弃的网络(Lossless Network),该网络上端到端消息传输的可靠性依赖于上层协议,如MPICH2和OpenMPI等。采用这种可靠性数据传输技术的典型是Cray的SeaStar和Gemini互连芯片。后者主要是在传输数据前建立连接,利用序列号检测、CRC检测和端到端错误数据重传等技术实现端到端数据传输的可靠性,其链路层通常只检测数据错误,而不负责数据的重传。接收端定位报文发生错误的位置,发送端负责从错误处重传数据。这种互连网络是基于不可靠链路层实现端到端数据传输的可靠性。采用这种可靠性数据传输技术的典型是采用InfiniBand协议的互连网络。
在上述两种技术思路中,第一种技术思路实现较为简单,而且在中小规模的并行计算机系统中能够正常运行并保持较高的数据传输效率。但是,在较大和超大规模的并行计算机系统中,高速互连网络系统的MTTF值将较小,这种可靠性数据传输方案将面临严重的挑战。第二种技术思路有多种实现方式,例如IBM提出了HPS网络构架实现了端到端可靠数据传输的RDMA(Remote Direct Memory Access远程直接内存访问)解决方案,数据传输前需要建立连接。然而,该实现将管理连接的可靠性数据结构存放在片外SRAM中,协议较为复杂,且需要将RDMA写转换为RDMA读实现,因此延迟性能较差。第二种技术思路的另一种实现是InfiniBand的解决方案,即MPI实现(例如MVAPICH、Open MPI和HP MPI等)通过在主机内存中进行连接管理,从而在链路层数据传输不可靠的网络之上通过主机内存连接管理机制建立可靠数据传输。然而,假设系统有N个节点,每个节点运行M个进程,如果所有进程进行AllToAll通信,则在最初的可靠连接RC(Reliable Connection)实现方案中,每个节点需建立连接的总数为O(M 2·N)个。在改进后的可扩展的可靠连接XRC(eXtended Reliable Connection)实现方案中,源节点的各个进程只需要与每个目标节点建立一个连接,就可以与目标节点的各个进程实现通信,则每个几点需要建立连接的总数为O(M·N)个。对于构建艾级并行计算机系统,假设系统包含1M个节点,每个节点包含一个CPU,每个CPU上运行64个进程,每个连接数据结构占用4KB存储空间,那么如果全系统所有进程进行AllToAll通信,则基于InfiniBand的XRC连接实现方案中每个节点需要为分配256GB(64×1M×4K)的主机内存空间以供连接数据结构使用,这几乎是难以实现的。可见,InfiniBand使用主存资源建立连接严重影响了系统的可扩展性。此外,InfiniBand网络在传输消息时,通过报文中携带序列号的机制定位数据错误报文和被网络丢弃的报文,而且只有消息的第一个报文携带了目的地址,后续报文的目的地址通过前一个报文的地址及其长度进行推算。这就要求所有报文必须顺序发送和接收,而且报文在网络中也必须沿着确定的路径进行传输,以达到报文间保序目的。可见,InfiniBand基于连接的传输实现方法不支持多路径传输,因此难以利用互连网络路径的多样性提高网络在拥塞情况下的传输性能和故障情况下的容错能力。
发明内容
本发明要解决的技术问题是提供一种可扩展性好、支持多路径传输、数据传输可靠、多核处理效率高、单报文消息传输延迟低的基于片内连接管理的RDMA通信方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于片内连接管理的RDMA通信方法,其实施步骤如下:
1)在源节点、目的节点的网卡中分别建立用于存储发送上下文的发送上下文数据结构以及用于存储接收上下文的接收上下文数据结构,在源节点、目的节点的内存中分别建立用于提交通信请求描述符的描述符队列、用于记录描述符完成情况的完成事件队列;
2)源节点主机在需要发送RDMA消息时向描述符队列提交描述符并置门铃标志,源节点网卡根据门铃标识从描述符队列中获取描述符;
3)源节点网卡申请发送上下文,计算RDMA消息包含的报文总数,获取RDMA消息事务号,构造连接申请请求报文并发往目的节点;目的节点网卡接收连接申请请求报文后,在目的节点网卡中分配接收上下文,将连接申请请求报文中的信息填入接收上下文并启动接收计时器,向源节点网卡发送连接申请确认报文,源节点网卡接收到连接申请确认报文后,将连接申请确认报文中的信息保存在发送上下文中并启动发送计时器;
4)源节点以DMA方式从本机主存中取数据,并封装成RDMA报文根据路由策略发往目的节点;目的节点网卡接收RDMA报文并检测RDMA报文的正确性,将RDMA报文的数据载荷写入主存,对接收到的RDMA报文进行计数;当计数值等于RDMA消息的报文总数时目的节点网卡向主存中的完成事件队列写入完成事件,并向源节点网卡发送传输完成响应报文,释放接收上下文;源节点网卡接收到传输完成响应报文后,向主存中的完成事件队列写入完成事件,并释放发送上下文。
作为本发明上述技术方案的进一步改进:
所述发送上下文数据结构中可容纳发送上下文的数量为W·RTT/L,其中W为网络链路带宽,RTT为最大RDMA消息往返时间,L为最小RDMA消息长度。
所述步骤3)的详细步骤如下:
3.1)源节点网卡首先根据描述符申请发送上下文,所述发送上下文数据结构中的字段包括目的节点号、目的接收上下文号、消息标识信息高位、消息标识信息低位、超时计数器、退火计数器、状态、连接申请优先级、接收字节总数、当前已接收字节数、错误次数;然后获取发送上下文及其消息标识信息高位,计算RDMA消息包含的报文总数,获取RDMA消息事务号,初始化设置发送上下文的超时计数器的值为预设的连接申请超时值、退火计数器的值为预设的连接申请重试退火超时基值、发送状态为“连接申请”、连接申请优先级为0、错误次数为0、消息标识信息低位为0,构造连接申请请求报文,根据预设路由策略发送连接申请报文给目的节点;
3.2)目的节点网卡接收到连接申请请求报文并进行CRC校验;
3.3)目的节点网卡对报文CRC校验结果进行判断,如果连接申请报文正确到达目的节点后CRC校验,则跳转执行步骤3.4),否则如果CRC校验出错,则丢弃连接申请请求报文并报错退出;
3.4)目的节点网卡在接收上下文数据结构中检查是否有与连接申请请求报文匹配的接收上下文,如果有与连接申请请求报文匹配的接收上下文,则跳转执行步骤3.5),否则跳转执行步骤3.6);
3.5)目的节点网卡检查连接申请请求报文的消息标识信息的高位是否与匹配的接收上下文的消息标识信息的高位相同,如果连接申请请求报文的消息标识信息的高位与匹配的接收上下文的消息标识信息的高位相同且匹配的接收上下文的接收状态为“接收数据”,则依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);否则,丢弃连接申请请求报文并报错退出;
3.6)目的节点网卡检查CnctReqNackEn值是否为1,所述CnctReqNackEn值具体是指当接收上下文数据结构中的接收上下文资源耗光时是否对连接申请请求返回Nack报文响应,CnctReqNackEn值为1表示返回Nack报文响应让源节点重试;当CnctReqNackEn的值为0表示不返回Nack报文响应,阻塞连接请求通道;如果CnctReqNackEn等于1,则跳转执行步骤3.7);如果CnctReqNackEn等于0,则跳转执行步骤3.8);
3.7)目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级,如果目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于零且连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级,或目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于1,则首先在接收上下文数据结构中分配接收上下文,所述接收上下文数据结构中的字段包括源节点号、源节点、目的发送上下文号、消息标识信息高位、消息标识信息低位、当前可用接收上下文个数、当前接收上下文优先级、超时计数器、状态、接收字节总数、当前已接收字节数、错误次数,其中当前可用接收上下文个数、当前接收上下文优先级为所有接收上下文共享;然后将接收上下文数据结构中可用接收上下文个数递减,如果连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级,则将接收上下文的优先级赋值为0,设置超时计数器的值为接收数据超时值,设置接收上下文的接收状态为“接收数据”,接收字节总数为连接申请请求报文的数据长度,当前已接收字节数为0,消息标识信息高位为连接申请请求报文的消息标识信息高位,消息标识信息低位为0,错误次数为0,目的节点构造连接申请确认报文并依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);否则目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级后,如果连接申请请求报文的连接申请优先级大于接收上下文的优先级,则将接收上下文的优先级赋值为连接申请请求报文的连接申请优先级;目的节点构造连接申请报错报文,并依据预设路由策略发送连接申请报错报文给源节点,跳转执行步骤3.11);
3.8)目的节点网卡判断接收上下文数据结构中的当前可用接收上下文个数,如果当前可用接收上下文个数为0,则阻塞连接申请报文的处理;如果当前可用接收上下文个数大于0,则在接收上下文数据结构中分配接收上下文,接收上下文数据结构中可用接收上下文个数递减;设置超时计数器的值为接收数据超时值,设置接收上下文的接收状态为“接收数据”、接收字节总数为连接申请请求报文的数据长度、当前已接收字节数为0、消息标识信息高位为连接申请请求报文的消息标识信息高位,消息标识信息低位为0、错误次数为0,目的节点构造连接申请确认报文,依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);
3.9)源节点网卡收到连接申请确认报文,首先对连接申请确认报文进行CRC校验,如果连接申请报文到达目的节点CRC检查出错,则丢弃该报文,并报错;如果连接申请确认报文正确到达源节点且CRC校验,则跳转执行步骤3.10);
3.10)源节点网卡如果能找到匹配的发送上下文且该发送上下文的发送状态为“连接申请”或“延迟等待”,则设置发送上下文的超时计数器值为发送数据超时值、发送状态为“发送数据”,消息标识信息低位为连接申请确认报文的消息标识信息低位,依据预设路由策略开始发送数据报文;否则,丢弃连接申请确认报文,并报错退出;
3.11)源节点网卡收到连接申请报错报文,首先对连接申请报错报文进行CRC校验,如果连接申请报错报文正确到达源节点并通过CRC检查,则跳转执行步骤3.12),否则丢弃申请报错报文并报错退出;
3.12)源节点网卡判断CnctReqNackEn值是否为1,如果CnctReqNackEn值为0(CnctReqNackEn=0),则丢弃报文并报错退出;否则如果CnctReqNackEn值为1,则跳转执行步骤3.13);
3.13)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,否则如果未能找到匹配的发送上下文,则丢弃报文并报错退出;如果能找到匹配的发送上下文且发送上下文的发送状态为“连接申请”,则检查预先设置的MaxNackEn值和匹配的发送上下文中的连接申请优先级,如果MaxNackEn值为1且匹配的发送上下文中的连接申请优先级已经为预设的最大值,报错并回收匹配的发送上下文;否则如果不能同时满足MaxNackEn值为1且匹配的发送上下文中的连接申请优先级已经为预设的最大值,则设置发送上下文中超时计数器的值为退火计数器的值、退火计数器的值为原值乘以2的连接申请重试退火系数次幂、发送状态为“延迟等待”,跳转执行步骤3.2);其中MaxNackEn值用于表示当重试优先级到达最大值时是否继续重试,MaxNackEn值为1表示不继续重试,MaxNackEn值为0表示继续以最大优先级进行重试;同时,源节点网卡对超时计数器进行递减计数,当超时计数器超时则跳转执行步骤3.14);
3.14)源节点网卡检查匹配的发送上下文的错误次数,如果错误次数小于发送方允许的最大错误次数,则重置超时计数器的值为预设的连接申请超时值,递增错误次数,注意退火计数器的值和连接申请优先级保持不变,源节点依据预设路由策略重发连接申请报文,跳转执行步骤3.2);否则报错并回收匹配的发送上下文。
所述步骤4)的详细步骤如下:
S4.1)源节点网卡以DMA方式从本机主存中取数据,并封装成RDMA报文根据预设路由策略发往目的节点,跳转执行步骤S4.2);同时,源节点网卡检查发送上下文的超时计数器,如果超时计数器超时,则同时跳转执行步骤S4.11);
S4.2)目的节点网卡接收RDMA报文,对RDMA报文进行CRC校验,如果CRC校验通过则说明数据报文正确到达目的节点,则跳转执行步骤S4.3),否则跳转执行步骤S4.6);
S4.3)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果不存在匹配的接收上下文或者匹配的接收上下文的状态并非“接收数据”,则丢弃该RDMA报文并报错退出;如果存在匹配的接收上下文且匹配的接收上下文的状态为“接收数据”,则接收该RDMA数据报文,将接收上下文中已经接收的字节数加上RDMA报文携带的数据字节数;同时目的节点网卡判断已经接收的字节数是否等于RDMA消息包含的报文总数,如果等于RDMA消息包含的报文总数,则依据预设路由策略发送数据传输完成响应报文,执行中断或事件通知操作,回收匹配的接收上下文资源,跳转执行步骤S4.4);否则继续接收RDMA报文;
S4.4)源节点网卡收到传输完成响应报文并进行CRC校验,如果数据传输完成响应报文正确到达源节点并CRC校验通过,则跳转执行步骤S4.5);否则如果数据传输完成响应报文到达源节点CRC检查出错,则丢弃报文并报错退出;
S4.5)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文且匹配的发送上下文状态为“发送数据”或“发送探测报文”,则执行中断或事件通知操作,回收匹配的发送上下文资源并退出,报文传输完成退出;否则,丢弃探测成功响应报文并报错退出;
S4.6)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果预设的ExplicitRetryEn=1、存在匹配的接收上下文且匹配的接收上下文状态为“接收数据”,则跳转执行步骤S4.7),否则丢弃报文并报错退出;其中,ExplicitRetryEn值用于判断当源节点或目的节点检测到数据报文CRC错或目的节点RCxt超时时是否发送显式重传报文,ExplicitRetryEn值为1表示发送显式重传报文,ExplicitRetryEn值为0表示不发送显式重传报文;
S4.7)目的节点网卡检查接收上下文中的接收错误次数,如果接收错误次数小于预设的接收方允许的最大错误次数,则置匹配的接收上下文当前已接收字节数为0、递增消息标识信息低位和接收错误次数、超时计数器为预设接收数据超时值,依据预设路由策略发送显式重传报文给源节点,跳转执行步骤S4.8);否则目的节点网卡报错,回收匹配的接收上下文并退出;
S4.8)源节点网卡收到显式重传报文,首先对显式重传报文进行CRC校验,如果CRC校验不通过,则丢弃该显式重传报文并报错退出;如果CRC校验通过,如果显式重传报文正确到达源节点并CRC校验通过,则跳转执行步骤S4.9);
S4.9)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,如果找到匹配的发送上下文且匹配的发送上下文状态为“发送数据”或“发送探测报文”,则跳转执行步骤S4.10),否则,丢弃该报文并报错退出;
S4.10)源节点网卡检查匹配的发送上下文的发送错误次数,如果发送错误次数小于预设的发送方允许的最大错误次数,则检查匹配的发送上下文中的消息标识信息低位,如果发送上下文中的消息标识信息低位小于显式重传报文中的消息标识信息低位,则置匹配的发送上下文中的消息标识信息低位为显式重传报文中的消息标识信息低位、超时计数器为发送数据和回收响应超时值、状态为“发送数据”、递增发送错误次数,依据预设路由策略重新发送数据报文,跳转执行步骤S4.2);如果发送上下文中的消息标识信息低位小于显式重传报文中的消息标识信息低位不成立,丢弃该报文并报错退出;如果发送错误次数小于预设的发送方允许的最大错误次数不成立,则丢弃该报文,报错并回收匹配的发送上下文资源后退出;
S4.11)源节点网卡根据超时计数器检查发送上下文数据结构中的发送上下文状态,当超时计数器超时且对应的发送上下文的状态为“发送数据”时,检查对应的发送上下文中的错误次数,如果错误次数小于发送方允许的最大错误次数,则将发送上下文状态修改为“发送探测报文”、发送上下文中的超时计数器修改为探测请求超时值、递增错误次数,依据预设路由策略发送探测报文,跳转执行步骤S4.13);否则报严重错,回收发送上下文并退出;当超时计数器超时且对应的发送上下文的状态为“发送探测报文”时跳转执行步骤S4.12);
S4.12)源节点网卡检查对应的发送上下文中的错误次数,如果错误次数小于发送方允许的最大错误次数,则将对应的发送上下文中的超时计数器修改为探测请求超时值、递增错误次数,依据预设路由策略发送探测报文,如果目的节点网卡收到探测报文并跳转执行步骤S4.13);否则如果错误次数小于发送方允许的最大错误次数不成立,则源节点网卡报严重错,回收对应的发送上下文并退出;
S4.13)目的节点网卡收到探测报文并进行CRC校验,如果CRC校验出错则丢弃探测报文并报错退出;如果探测报文CRC校验通过,则跳转执行步骤S4.14);
S4.14)目的节点网卡检查接收上下文数据结构在是否存在匹配的接收上下文,如果存在匹配的接收上下文且匹配的接收上下文的状态为“接收数据”,则跳转执行步骤S4.15);如果不存在匹配的接收上下文则向源节点返回探测失败响应报文,则目的节点网卡向源节点返回探测失败响应报文,跳转执行步骤S4.17);
S4.15)目的节点网卡检查匹配的接收上下文的消息标识信息低位,当探测报文的消息标识信息低位等于匹配的接收上下文的消息标识信息低位时,则置匹配的接收上下文的当前已接收字节数为0、递增消息标识信息低位和错误次数,超时计数器为预设接收数据超时值、目的节点网卡向源节点返回探测成功响应报文,跳转执行步骤S4.17);否则当探测报文的消息标识信息低位不等于匹配的接收上下文的消息标识信息低位时,跳转执行步骤S4.16);
S4.16)目的节点网卡判断匹配的接收上下文的错误次数是否小于预设的接收方允许的最大错误次数;如果匹配的接收上下文的错误次数小于预设的接收方允许的最大错误次数,则置接收上下文的当前已接收字节数为0,递增消息标识信息低位和错误次数,超时计数器为预设接收数据超时值,目的节点网卡向源节点返回探测成功响应报文,跳转执行步骤S4.17);如果匹配的接收上下文的错误次数小于预设的接收方允许的最大错误次数不成立,则丢弃探测报文并报错退出;
S4.17)源节点网卡收到探测成功响应报文或者探测失败响应报文并进行CRC校验,如果探测成功响应报文或者探测失败响应报文CRC校验通过,则跳转执行步骤S4.18),否则丢弃报文并报错退出;
S4.18)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文且匹配的发送上下文的状态为“发送探测报文”,则跳转执行步骤S4.19),否则丢弃该报文并报错退出;
S4.19)检测收到的探测成功响应报文或者探测失败响应报文携带的探测结果类型,如果探测结果类型为“探测成功”且匹配的发送上下文的消息标识信息低位不等于收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位,置匹配的发送上下文的消息标识信息低位为收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位、超时计数器的值为发送数据和回收响应超时值、状态为 “发送数据”,依据预设路由策略向目的节点重新发送数据报文,跳转执行步骤4.1);如果探测结果类型为“探测失败”且匹配的发送上下文的消息标识信息低位等于探测成功响应报文的消息标识信息低位则执行中断或事件通知操作,回收匹配的发送上下文资源并退出。
本发明基于片内连接管理的RDMA通信方法具有下述优点:
1、本发明在网卡内部建立发送上下文数据结构和接收上下文数据结构,从而通过网卡实现了源节点和目的节点之间的连接管理,克服了现有InfiniBand技术方案在主机内存中为可靠性数据传输分配相关数据结构并进行连接管理存在的规模可扩展性问题,对于未来构建艾级并行计算机系统具有重要的意义,能增强系统的规模可扩展性,具有可扩展性好的优点。
2、本发明基于消息的报文计数确定消息的完整性,从而支持源和目的节点间多路径传输,因此该设计能够对网络的自适应路由提供完美的支持,这对于通过自适应路由提高网络拥塞情况下的传输性能具有重要的作用;而且本发明的错误数据重传机制能够提供原路由重传功能和变路由重传功能,能够提高RDMA消息传输的可靠性,而且能够绕过网络故障区域保证消息的可靠传输,这对于降低网络故障对用户数据通信的影响具有重要作用,具有支持多路径传输、数据传输可靠的优点。
3、本发明的DMA读取方式和报文发送逻辑处理方式,能够实现后续RDMA事务的握手过程可与先前RDMA事务的报文发送过程重叠,从而能够隐藏后续RDMA事务连接建立时间,这种设计非常适合于在某个时间段内有多个描述符等待处理的情况,因此对于多核CPU运行环境非常有利,多核处理效率高,支持连接建立过程的延迟隐藏。
4、本发明源节点申请发送上下文(TCxt)后不需要与目的节点建立连接就直接发送报文,目的节点检测报文的正确性并返回确认和错误报文(Ack/Nack),但无需建立接收上下文(RCxt),因此对于等于或小于单个报文长度的RDMA传输,该设计并不会因握手过程产生额外时延,这种设计使用非连接方式发送单报文消息,即消息数据可以全部封装在一个报文中,能够降低单报文消息的传输延迟,能较好地支持高消息率编程模型(例如分段全局地址空间PGAS编程模型等)。
附图说明
图1为本发明实施例的基本流程示意图。
图2为本发明实施例中发送上下文数据结构示意图。
图3为本发明实施例中接收上下文数据结构示意图。
图4为本发明实施例中节点的结构示意图。
图5为本发明实施例中步骤3)的数据处理流程示意图。
图6为本发明实施例中步骤4)的数据处理流程示意图。
具体实施方式
如图1所示,本实施例基于片内连接管理的RDMA通信方法的实施步骤如下:
1)在源节点、目的节点的网卡中分别建立用于存储发送上下文的发送上下文数据结构以及用于存储接收上下文的接收上下文数据结构,在源节点、目的节点的内存中分别建立用于提交通信请求描述符的描述符队列、用于记录描述符完成情况的完成事件队列;
2)源节点主机在需要发送RDMA消息时向描述符队列提交描述符并置门铃标志,源节点网卡根据门铃标识从描述符队列中获取描述符;
3)源节点网卡申请发送上下文,计算RDMA消息包含的报文总数,获取RDMA消息事务号,构造连接申请请求报文并发往目的节点;目的节点网卡接收连接申请请求报文后,在目的节点网卡中分配接收上下文,将连接申请请求报文中的信息填入接收上下文并启动接收计时器,向源节点网卡发送连接申请确认报文,源节点网卡接收到连接申请确认报文后,将连接申请确认报文中的信息保存在发送上下文中并启动发送计时器;
4)源节点以DMA方式从本机主存中取数据,并封装成RDMA报文根据路由策略发往目的节点;目的节点网卡接收RDMA报文并检测RDMA报文的正确性,将RDMA报文的数据载荷写入主存,对接收到的RDMA报文进行计数;当计数值等于RDMA消息的报文总数时目的节点网卡向主存中的完成事件队列写入完成事件,并向源节点网卡发送传输完成响应报文,释放接收上下文;源节点网卡接收到传输完成响应报文后,向主存中的完成事件队列写入完成事件,并释放发送上下文。
本实施例中,发送上下文数据结构中可容纳发送上下文的数量为W·RTT/L,其中W为网络链路带宽,RTT为最大RDMA消息往返时间, L为最小RDMA消息长度,通过上述数量设置,使得本实施例中TCxt个数设置能够保证多个RDMA事务的重叠传输,即一个RDMA事务报文发送完毕后产生的气泡能用其它RDMA事务报文的发送填满,从而能够提高RDMA事务的传输效率。
如图2所示,本实施例中发送上下文(TCxt)数据结构中各个域的含义分别为:DestID:目的节点号;RCxtID:目的接收上下文(RCxt)号;TMsgIDHigh:消息标识(MsgID)信息高位;TMsgIDLow:消息标识(MsgID)信息低位;TTimer:超时计数器;TimerTH:退火计数器;TStatus:状态(发送数据状态,包括连接申请、延迟等待、发送数据、发送探测报文等);CnctPRI:连接申请优先级;TPcnt:接收字节总数;TRcnt:当前已接收字节数;TERRcnt:错误次数。
如图3所示,本实施例中接收上下文(RCxt)数据结构中各个域的含义分别为:SrcID:源节点号;TCxtID:目的发送上下文TCxt号;RMsgIDHigh:消息标识(MsgID)信息高位;RMsgIDLow:消息标识(MsgID)信息低位;RCxtFreeNum:当前可用RCxt个数,为所有的RCxt共享;RCxtPRI:当前RCxt优先级,为所有的RCxt共享;RTimer:超时计数器;RStatus:状态(接收数据状态);RPcnt:接收字节总数;RRcnt:当前已接收字节数;RErrCnt:错误次数。
本实施例中相关配置参数说明如下:
(A)CnctReqNackEn:当RCxt资源耗光时,是否对连接申请请求返回Nack报文响应。值为1表示返回Nack响应,让源节点重试;值为0表示不返回Nack报文响应,阻塞连接请求通道。
(B)ExplicitRetryEn:当源节点或目的节点检测到数据报文CRC错或目的节点RCxt超时时,是否发送显式重传报文。值为1表示发送显式重传报文;值为0表示不发送显式重传报文。
(C)MaxNackEn:当重试优先级到达最大值时,是否继续重试。值为1表示不继续重试;值为0表示继续以最大优先级进行重试。
(D)TimerCnct:连接申请超时值。
(E)TimerDetect:探测请求超时值。
(F)TimerRcvData:RCxt接收数据超时值。
(G)TimerSendData:TCxt发送数据和回收响应超时值。
(H)TimerTHBase:连接申请重试退火超时基值。
(I)THCo:连接申请重试退火系数。
(J)MaxTxERRcnt:发送方允许的最大错误次数,本实施例中MaxTxERRcnt取值为2^width(MsgIDLow)-1,MaxTxERRcnt比TERRcnt多1位,用于实现无限重传。
(K)MaxRxERRcnt:接收方允许的最大错误次数,本实施例中MaxRxERRcnt取值为2^width(MsgIDLow)-1,MaxRxERRcnt比RERRcnt多1位,用于实现无限重传。
(L)RtPolicyTable[TERRcnt]:路由策略选择表,一维数组,以错误次数作为索引号,内容为路由策略编码。在确定性路由中,路由策略编码指定不同的网络路由路径,网络中每个路由交换单元依据报文头携带的路由策略编码信息确定该报文的输出端口。
如图5所示,结合本实施例的上述配置参数,本实施例步骤3)的数据处理流程如下:
3.1)源节点网卡首先根据描述符申请发送上下文,所述发送上下文数据结构包括目的节点号、目的接收上下文号、消息标识信息高位、消息标识信息低位、超时计数器、退火计数器、状态、连接申请优先级、接收字节总数、当前已接收字节数、错误次数;然后获取发送上下文TCxt及其消息标识信息高位TMsgIDHigh,计算RDMA消息包含的报文总数,获取RDMA消息事务号,初始化设置发送上下文的超时计数器的值为预设的连接申请超时值、退火计数器的值为预设的连接申请重试退火超时基值、发送状态为“连接申请”、连接申请优先级为0、错误次数为0、消息标识信息低位为0(设置TTimer=TimerCnct,TimerTH=TimerTHBase,TStatus=“连接申请”,CnctPRI=0,TERRcnt=0,TMsgIDLow=0),构造连接申请请求报文,根据预设路由策略RtPolicyTable[TERRcnt]发送连接申请报文(Apply报文,包含SrcID、DestID、TCxt、TMsgIDHigh、TMsgIDLow、CncPRI域)给目的节点。
3.2)目的节点网卡接收到连接申请请求报文并进行检查(CRC校验)。
3.3)目的节点网卡对报文CRC校验结果进行判断,如果连接申请报文(Apply报文)正确到达目的节点后CRC校验,则跳转执行步骤3.4),否则如果CRC校验出错,则丢弃连接申请请求报文并报错退出。
3.4)目的节点网卡在接收上下文数据结构中检查是否有与连接申请请求报文匹配的接收上下文,即检查是否有报文中的SrcID、TCxt与RCxt匹配,如果有报文中的SrcID、TCxt与RCxt匹配,则跳转执行步骤3.5),否则跳转执行步骤3.6)。
3.5)目的节点网卡检查报文中的MsgIDHigh与RCxt中的RMsgIDHigh是否相同,如果报文中的MsgIDHigh与RCxt中的RMsgIDHigh相同(连接申请请求报文的消息标识信息的高位与匹配的接收上下文的消息标识信息的高位相同),且匹配的接收上下文的状态为“接收数据”(RStatus=“接收数据”),则依据预设路由策略RtPolicyTable[RERRcnt]发送连接申请确认报文(Ack报文,包含SrcID、DestID、TCxt、RCxt、RMsgIDHigh、RMsgIDLow域)给源节点,跳转执行步骤3.9);否则,如果报文中的MsgIDHigh与RCxt中的RMsgIDHigh不相同,则丢弃连接申请请求报文并报错退出。
3.6)目的节点网卡检查CnctReqNackEn值是否为1,CnctReqNackEn值具体是指当接收上下文数据结构中的接收上下文RCxt资源耗光时是否对连接申请请求返回Nack报文响应,CnctReqNackEn值为1表示返回Nack报文响应让源节点重试;当CnctReqNackEn的值为0表示不返回Nack报文响应,阻塞连接请求通道。如果CnctReqNackEn等于1,则跳转执行步骤3.7);如果CnctReqNackEn等于0,则跳转执行步骤3.8)。
3.7)目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级,如果目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于零(RCxtFreeNum>0)且连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级(CnctPRI>=RCxtPRI),或目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于1(RCxtFreeNum>1),则在接收上下文数据结构中分配接收上下文RCxt,将接收上下文数据结构中可用接收上下文个数RCxtFreeNum递减,如果连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级(CnctPRI>=RCxtPRI),则将接收上下文的优先级赋值为0(RCxtPRI=0),设置超时计数器的值为接收数据超时值(RTimer=TimerRcvData),设置接收上下文的状态为“接收数据”(RStatus=“接收数据”),接收字节总数为连接申请请求报文的数据长度(RPcnt=报文中的数据长度),当前已接收字节数为0(RRcnt=0),消息标识信息高位为连接申请请求报文的消息标识信息高位(RMsgIDHigh=TMsgIDHigh),消息标识信息低位为0(RMsgIDLow=0),错误次数为0(RERRcnt=0),目的节点构造连接申请确认报文并依据预设路由策略RtPolicyTable[RERRcnt]发送连接申请确认报文给源节点,跳转执行步骤3.9)。否则目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级后,如果连接申请请求报文的连接申请优先级大于接收上下文的优先级(CnctPRI>RCxtPRI),则将接收上下文的优先级赋值为连接申请请求报文的连接申请优先级(RCxtPRI=CnctPRI)。目的节点构造连接申请报错报文,并依据预设路由策略RtPolicyTable[RERRcnt]发送连接申请报错报文(Nack报文,包含SrcID、DestID、TCxt、TMsgIDHigh、TMsgIDLow域)给源节点,跳转执行步骤3.11)。
3.8)目的节点网卡判断接收上下文数据结构中的当前可用接收上下文个数RCxtFreeNum,如果当前可用接收上下文个数为0(RCxtFreeNum=0),则阻塞连接申请报文(Apply报文)的处理;如果当前可用接收上下文个数大于0(RCxtFreeNum>0),则在接收上下文数据结构中分配接收上下文RCxt,接收上下文数据结构中可用接收上下文个数RCxtFreeNum递减。设置超时计数器的值为接收数据超时值(RTimer=TimerRcvData),设置接收上下文的状态为“接收数据”(RStatus=“接收数据”),接收字节总数为连接申请请求报文的数据长度(RPcnt=报文中的数据长度)、当前已接收字节数为0(RRcnt=0)、消息标识信息高位为连接申请请求报文的消息标识信息高位(RMsgIDHigh=TMsgIDHigh)、消息标识信息低位为0(RMsgIDLow=0)、错误次数为0(RERRcnt=0),目的节点构造连接申请确认报文,依据预设路由策略RtPolicyTable[RERRcnt]发送连接申请确认报文(Ack报文)给源节点,跳转执行步骤3.9)。
3.9)源节点网卡收到连接申请确认报文,首先对连接申请确认报文进行CRC校验,如果连接申请报文(Apply报文)到达目的节点CRC检查出错,则丢弃该报文,并报错。如果连接申请确认报文(Ack报文)正确到达源节点且CRC校验,则跳转执行步骤3.10)。
3.10)源节点网卡如果能找到匹配的发送上下文(SrcID、TCxt、MsgIDHigh匹配)且该发送上下文的状态TStatus为“连接申请”或“延迟等待”,则设置发送上下文的超时计数器值为发送数据超时值(TTimer=TimerSendData)、状态为“发送数据”(TStatus=“发送数据”),消息标识信息低位为连接申请确认报文的消息标识信息低位(TMsgIDLow=报文中的MsgIDLow),依据预设路由策略RtPolicyTable[TERRcnt]开始发送数据报文(包含SrcID、DestID、TCxt、RCxt、TMsgIDHigh、TMsgIDLow域);否则,丢弃连接申请确认报文,并报错退出。
3.11)源节点网卡收到连接申请报错报文,首先对连接申请报错报文进行CRC校验,如果连接申请报错报文(Nack报文)正确到达源节点并通过CRC检查,则跳转执行步骤3.12),否则丢弃申请报错报文并报错退出。
3.12)源节点网卡判断CnctReqNackEn值是否为1,如果CnctReqNackEn值为0(CnctReqNackEn=0),则丢弃报文并报错退出。否则如果CnctReqNackEn值为1,则跳转执行步骤3.13)。
3.13)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,否则如果未能找到匹配的发送上下文,则丢弃报文并报错退出;如果能找到匹配的发送上下文(SrcID、TCxt、MsgIDHigh+MsgIDLow匹配)且发送上下文状态为“连接申请”(TStatus=“连接申请”),则检查预先设置的MaxNackEn值和匹配的发送上下文中的连接申请优先级,如果MaxNackEn值为1(MaxNackEn=1)且匹配的发送上下文中的连接申请优先级已经为预设的最大值(CnctPRI=Max),报错并回收匹配的发送上下文;否则如果不能同时满足MaxNackEn值为1且匹配的发送上下文中的连接申请优先级已经为预设的最大值,则设置发送上下文中超时计数器的值为退火计数器的值(TTimer=TimerTH),退火计数器的值为原值乘以2的连接申请重试退火系数次幂(TimerTH=TimerTH<<THCo),状态为“延迟等待”(TStatus=“延迟等待”),跳转执行步骤3.2)。其中MaxNackEn值用于表示当重试优先级到达最大值时是否继续重试,MaxNackEn值为1表示不继续重试,MaxNackEn值为0表示继续以最大优先级进行重试。同时,源节点网卡对超时计数器进行递减计数,当超时计数器超时则跳转执行步骤3.14)。
3.14)源节点网卡检查匹配的发送上下文的错误次数TERRcnt,如果错误次数TERRcnt小于发送方允许的最大错误次数MaxTxERRcnt(TERRcnt<MaxTxERRcnt),则重置超时计数器的值为预设的连接申请超时值(TTimer=TimerCnct),递增TERRcnt,注意退火计数器的值TimerTH和连接申请优先级CnctPRI保持不变,源节点依据预设路由策略RtPolicyTable[TERRcnt]重发连接申请报文(Apply报文),跳转执行步骤3.2);否则报错并回收匹配的发送上下文TCxt。
如图6所示,RDMA写时的数据(RDMA报文)传输是在数据连接已经建立的前提下启动的,结合本实施例的配置参数,本实施例步骤4)的数据处理流程如下:
S4.1)源节点网卡以DMA方式从本机主存中取数据,并封装成RDMA报文根据预设路由策略发往目的节点,跳转执行步骤S4.2);同时,源节点网卡检查发送上下文的超时计数器TTimer,如果超时计数器超时(TTimer=0),则同时跳转执行步骤S4.11)。
S4.2)目的节点网卡接收RDMA报文,对RDMA报文进行CRC校验,如果CRC校验通过则说明数据报文正确到达目的节点,则跳转执行步骤S4.3),否则跳转执行步骤S4.6)。
S4.3)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果不存在匹配的接收上下文或者匹配的接收上下文的状态并非“接收数据”,则丢弃该RDMA报文并报错退出;如果存在匹配的接收上下文(报文中的SrcID、TCxt、RCxt、MsgIDHigh+MsgIDLow与RCxt匹配)且RStatus为“接收数据”,则接收该RDMA数据报文,将接收上下文中已经接收的字节数加上RDMA报文携带的数据字节数(置RRcnt=RRcnt+报文携带的数据字节数);同时目的节点网卡判断已经接收的字节数RRcnt是否等于RDMA消息包含的报文总数RPcnt,如果等于RDMA消息包含的报文总数(RRcnt=RPcnt)成立,则依据预设路由策略RtPolicyTable[RERRcnt]发送数据传输完成响应报文(包括SrcID、DestID、TCxt、RCxt,TMsgIDHigh、TMsgIDLow域),执行中断或事件通知操作,回收匹配的接收上下文RCxt资源,跳转执行步骤S4.4);否则继续接收RDMA报文。
S4.4)源节点网卡收到传输完成响应报文并进行CRC校验,如果数据传输完成响应报文(CmpAck报文)正确到达源节点并CRC校验通过,则跳转执行步骤S4.5);否则如果数据传输完成响应报文(CmpAck报文)到达源节点CRC检查出错,则丢弃报文并报错退出。
S4.5)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文(报文中的SrcID、TCxt、RCxt、MsgIDHigh与TCxt匹配)且匹配的发送上下文状态为“发送数据”或“发送探测报文”,则执行中断或事件通知操作,回收匹配的发送上下文TCxt资源并退出,报文传输完成退出;否则,丢弃探测成功响应报文并报错退出。
S4.6)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果预设的ExplicitRetryEn=1、存在匹配的接收上下文(报文中的SrcID、TCxt、RCxt、MsgIDHigh+MsgIDLow与RCxt匹配)且匹配的接收上下文状态为“接收数据”,则跳转执行步骤S4.7),否则丢弃报文并报错退出;其中,ExplicitRetryEn值用于判断当源节点或目的节点检测到数据报文CRC错或目的节点RCxt超时时是否发送显式重传报文,ExplicitRetryEn值为1表示发送显式重传报文,ExplicitRetryEn值为0表示不发送显式重传报文。
S4.7)目的节点网卡检查接收上下文中的接收错误次数,如果接收错误次数RERRcnt小于预设的接收方允许的最大错误次数MaxRxERRcnt(RERRcnt<MaxRxERRcnt),则置匹配的接收上下文当前已接收字节数RRcnt为0、递增消息标识信息低位RMsgIDLow和接收错误次数RERRcnt、设置超时计数器为预设接收数据超时值(RTimer=TimerRcvData),依据预设路由策略RtPolicyTable[RERRcnt]发送显式重传报文(Retry报文,包括SrcID、DestID、TCxt、RCxt,RMsgIDHigh、RMsgIDLow域)给源节点,跳转执行步骤S4.8);否则目的节点网卡报错,回收匹配的接收上下文RCxt并退出。
S4.8)源节点网卡收到显式重传报文,首先对显式重传报文进行CRC校验,如果CRC校验不通过,则丢弃该显式重传报文并报错退出;如果CRC校验通过,如果显式重传报文(Retry报文)正确到达源节点并CRC校验通过,则跳转执行步骤S4.9)。
S4.9)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,如果找到匹配的发送上下文(报文中的SrcID、DestID、TCxt、RCxt、MsgIDHigh与TCxt匹配)且匹配的发送上下文状态为 “发送数据”或“发送探测报文”,则跳转执行步骤S4.10),否则,丢弃该报文并报错退出。
S4.10)源节点网卡检查匹配的发送上下文的发送错误次数,如果发送错误次数TERRcnt小于预设的发送方允许的最大错误次数MaxTxERRcnt(TERRcnt<MaxTxERRcnt),则检查匹配的发送上下文中的消息标识信息低位,如果发送上下文中的消息标识信息低位TMsgIDLow小于显式重传报文中的消息标识信息低位(TMsgIDLow<报文中的MsgIDLow),则置匹配的发送上下文中的消息标识信息低位为显式重传报文中的消息标识信息低位(TMsgIDLow=报文中的MsgIDLow)、超时计数器为发送数据和回收响应超时值(TTimer=TimerSendData)、状态为“发送数据”(TStatus=“发送数据”)、递增发送错误次数TERRcnt,依据预设路由策略RtPolicyTable[TERRcnt]重新发送数据报文,跳转执行步骤S4.2);如果发送上下文中的消息标识信息低位TMsgIDLow小于显式重传报文中的消息标识信息低位不成立,丢弃该报文并报错退出;如果发送错误次数TERRcnt小于预设的发送方允许的最大错误次数MaxTxERRcnt不成立,则丢弃该报文,报错并回收匹配的发送上下文TCxt资源后退出。
S4.11)源节点网卡根据超时计数器(TTimer=0)检查发送上下文数据结构中的发送上下文状态,当超时计数器超时且对应的发送上下文的状态为“发送数据”(TTimer=0且TStatus=“发送数据”)时,检查匹配的发送上下文中的错误次数,如果错误次数TERRcnt小于发送方允许的最大错误次数MaxTxERRcnt(TERRcnt<MaxTxERRcnt),则将发送上下文状态修改为“发送探测报文”(TStatus=“发送探测报文”)、发送上下文中的超时计数器修改为探测请求超时值(TTimer=TimerDetect)、递增错误次数TERRcnt,依据预设路由策略RtPolicyTable[TERRcnt]发送探测报文(Detect报文,包括SrcID、DestID、TCxt、RCxt,TMsgIDHigh、TMsgIDLow域),跳转执行步骤S4.13);否则报严重错,回收对应的发送上下文TCxt并退出;当TTimer=0且TStatus=“发送探测报文”时跳转执行步骤S4.12)。
S4.12)源节点网卡检查匹配的发送上下文中的错误次数,如果错误次数TERRcnt小于发送方允许的最大错误次数MaxTxERRcnt(TERRcnt<MaxTxERRcnt),则将发送上下文中的超时计数器修改为探测请求超时值(TTimer=TimerDetect),递增错误次数TERRcnt,依据预设路由策略RtPolicyTable[TERRcnt]发送探测报文(Detect报文),如果目的节点网卡收到探测报文并跳转执行步骤S4.13);否则如果错误次数TERRcnt小于发送方允许的最大错误次数MaxTxERRcnt不成立,则源节点网卡报严重错,回收对应的发送上下文TCxt并退出。
S4.13)目的节点网卡收到探测报文并进行CRC校验,如果CRC校验出错则丢弃探测报文并报错退出;如果探测报文(Detect报文)CRC校验通过,则跳转执行步骤S4.14)。
S4.14)目的节点网卡检查接收上下文数据结构在是否存在匹配的接收上下文,如果存在匹配的接收上下文(报文中的SrcID、TCxt、RCxt、MsgIDHigh与RCxt匹配)且匹配的接收上下文状态RStatus为“接收数据”,则跳转执行步骤S4.15);如果不存在匹配的接收上下文则向源节点返回探测失败响应报文,则目的节点网卡向源节点返回探测失败响应报文(DetectNack报文,包括SrcID、DestID、TCxt、RCxtID、TMsgIDHigh、TMsgIDLow、DR=“探测失败”域),跳转执行步骤S4.17)。
S4.15)目的节点网卡检查匹配的接收上下文的消息标识信息低位,当探测报文的消息标识信息低位等于匹配的接收上下文的消息标识信息低位(MsgIDLow=RMsgIDLow)时,则置匹配的接收上下文的当前已接收字节数为0(RRcnt=0),递增消息标识信息低位RMsgIDLow和错误次数RERRcnt,超时计数器为预设接收数据超时值(RTimer=TimerRcvData),目的节点网卡向源节点返回探测成功响应报文(DetectAck报文,包括SrcID、DestID、TCxt、RCxt、RMsgIDHigh、RMsgIDLow、DR=“探测成功”域),跳转执行步骤S4.17);否则当探测报文的消息标识信息低位不等于匹配的接收上下文的消息标识信息低位(MsgIDLow!=RMsgIDLow)时,跳转执行步骤S4.16)。
S4.16)目的节点网卡判断匹配的接收上下文的错误次数RERRcnt是否小于预设的接收方允许的最大错误次数MaxRxERRcnt;如果匹配的接收上下文的错误次数RERRcnt小于预设的接收方允许的最大错误次数MaxRxERRcnt(RERRcnt<MaxRxERRcnt),则置接收上下文的当前已接收字节数为0(RRcnt=0),递增消息标识信息低位RMsgIDLow和错误次数RERRcnt,超时计数器为预设接收数据超时值(RTimer=TimerRcvData),目的节点网卡向源节点返回探测成功响应报文(DetectAck报文,包括SrcID、DestID、TCxt、RCxt、RMsgIDHigh、RMsgIDLow、DR=“探测成功”域),跳转执行步骤S4.17);如果匹配的接收上下文的错误次数RERRcnt小于预设的接收方允许的最大错误次数MaxRxERRcnt(RERRcnt<MaxRxERRcnt)不成立,则丢弃探测报文并报错退出。
S4.17)源节点网卡收到探测成功响应报文或者探测失败响应报文并进行CRC校验,如果探测成功响应报文或者探测失败响应报文(DetectAck报文或DetectNack报文)CRC校验通过,则跳转执行步骤S4.18),否则丢弃报文并报错退出。
S4.18)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文(报文中的SrcID、DestID、TCxt、RCxt、MsgIDHigh与TCxt匹配)且匹配的发送上下文的状态TStatus为“发送探测报文”,则跳转执行步骤S4.19),否则丢弃该报文并报错退出。
S4.19)检测收到的探测成功响应报文或者探测失败响应报文携带的探测结果类型(DR值),如果DR=“探测成功”且匹配的发送上下文的消息标识信息低位不等于收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位(TMsgIDLow!=报文中的MsgIDLow),置匹配的发送上下文的消息标识信息低位为收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位(TMsgIDLow=报文中的MsgIDLow)、超时计数器的值为发送数据和回收响应超时值(TTimer=TimerSendData)、状态为 “发送数据”(TStatus=“发送数据”),依据预设路由策略RtPolicyTable[TERRcnt]向目的节点重新发送数据报文,跳转执行步骤4.1);如果DR=“探测失败”且匹配的发送上下文的消息标识信息低位等于探测成功响应报文的消息标识信息低位(TMsgIDLow=报文中的MsgIDLow)则执行中断或事件通知操作,回收匹配的发送上下文TCxt资源并退出。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种基于片内连接管理的RDMA通信方法,其特征在于实施步骤如下:
1)在源节点、目的节点的网卡中分别建立用于存储发送上下文的发送上下文数据结构以及用于存储接收上下文的接收上下文数据结构,在源节点、目的节点的内存中分别建立用于提交通信请求描述符的描述符队列、用于记录描述符完成情况的完成事件队列;
2)源节点主机在需要发送RDMA消息时向描述符队列提交描述符并置门铃标志,源节点网卡根据门铃标识从描述符队列中获取描述符;
3)源节点网卡申请发送上下文,计算RDMA消息包含的报文总数,获取RDMA消息事务号,构造连接申请请求报文并发往目的节点;目的节点网卡接收连接申请请求报文后,在目的节点网卡中分配接收上下文,将连接申请请求报文中的信息填入接收上下文并启动接收计时器,向源节点网卡发送连接申请确认报文,源节点网卡接收到连接申请确认报文后,将连接申请确认报文中的信息保存在发送上下文中并启动发送计时器;
4)源节点以DMA方式从本机主存中取数据,并封装成RDMA报文根据路由策略发往目的节点;目的节点网卡接收RDMA报文并检测RDMA报文的正确性,将RDMA报文的数据载荷写入主存,对接收到的RDMA报文进行计数;当计数值等于RDMA消息的报文总数时目的节点网卡向主存中的完成事件队列写入完成事件,并向源节点网卡发送传输完成响应报文,释放接收上下文;源节点网卡接收到传输完成响应报文后,向主存中的完成事件队列写入完成事件,并释放发送上下文。
2.根据权利要求1所述的基于片内连接管理的RDMA通信方法,其特征在于:所述发送上下文数据结构中可容纳发送上下文的数量为W·RTT/L,其中W为网络链路带宽,RTT为最大RDMA消息往返时间, L为最小RDMA消息长度。
3.根据权利要求1或2所述的基于片内连接管理的RDMA通信方法,其特征在于,所述步骤3)的详细步骤如下:
3.1)源节点网卡首先根据描述符申请发送上下文,所述发送上下文数据结构中的字段包括目的节点号、目的接收上下文号、消息标识信息高位、消息标识信息低位、超时计数器、退火计数器、状态、连接申请优先级、接收字节总数、当前已接收字节数、错误次数;然后获取发送上下文及其消息标识信息高位,计算RDMA消息包含的报文总数,获取RDMA消息事务号,初始化设置发送上下文的超时计数器的值为预设的连接申请超时值、退火计数器的值为预设的连接申请重试退火超时基值、发送状态为“连接申请”、连接申请优先级为0、错误次数为0、消息标识信息低位为0,构造连接申请请求报文,根据预设路由策略发送连接申请报文给目的节点;
3.2)目的节点网卡接收到连接申请请求报文并进行CRC校验;
3.3)目的节点网卡对报文CRC校验结果进行判断,如果连接申请报文正确到达目的节点后CRC校验,则跳转执行步骤3.4),否则如果CRC校验出错,则丢弃连接申请请求报文并报错退出;
3.4)目的节点网卡在接收上下文数据结构中检查是否有与连接申请请求报文匹配的接收上下文,如果有与连接申请请求报文匹配的接收上下文,则跳转执行步骤3.5),否则跳转执行步骤3.6);
3.5)目的节点网卡检查连接申请请求报文的消息标识信息的高位是否与匹配的接收上下文的消息标识信息的高位相同,如果连接申请请求报文的消息标识信息的高位与匹配的接收上下文的消息标识信息的高位相同且匹配的接收上下文的接收状态为“接收数据”,则依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);否则,丢弃连接申请请求报文并报错退出;
3.6)目的节点网卡检查CnctReqNackEn值是否为1,所述CnctReqNackEn值具体是指当接收上下文数据结构中的接收上下文资源耗光时是否对连接申请请求返回Nack报文响应,CnctReqNackEn值为1表示返回Nack报文响应让源节点重试;当CnctReqNackEn的值为0表示不返回Nack报文响应,阻塞连接请求通道;如果CnctReqNackEn等于1,则跳转执行步骤3.7);如果CnctReqNackEn等于0,则跳转执行步骤3.8);
3.7)目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级,如果目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于零且连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级,或目的节点网卡的接收上下文数据结构中的当前可用接收上下文个数大于1,则首先在接收上下文数据结构中分配接收上下文,所述接收上下文数据结构中的字段包括源节点号、源节点、目的发送上下文号、消息标识信息高位、消息标识信息低位、当前可用接收上下文个数、当前接收上下文优先级、超时计数器、状态、接收字节总数、当前已接收字节数、错误次数,其中当前可用接收上下文个数、当前接收上下文优先级为所有接收上下文共享;然后将接收上下文数据结构中可用接收上下文个数递减,如果连接申请请求报文的连接申请优先级大于或等于接收上下文的优先级,则将接收上下文的优先级赋值为0,设置超时计数器的值为接收数据超时值,设置接收上下文的接收状态为“接收数据”,接收字节总数为连接申请请求报文的数据长度,当前已接收字节数为0,消息标识信息高位为连接申请请求报文的消息标识信息高位,消息标识信息低位为0,错误次数为0,目的节点构造连接申请确认报文并依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);否则目的节点网卡比较连接申请请求报文的连接申请优先级和接收上下文的优先级后,如果连接申请请求报文的连接申请优先级大于接收上下文的优先级,则将接收上下文的优先级赋值为连接申请请求报文的连接申请优先级;目的节点构造连接申请报错报文,并依据预设路由策略发送连接申请报错报文给源节点,跳转执行步骤3.11);
3.8)目的节点网卡判断接收上下文数据结构中的当前可用接收上下文个数,如果当前可用接收上下文个数为0,则阻塞连接申请报文的处理;如果当前可用接收上下文个数大于0,则在接收上下文数据结构中分配接收上下文,接收上下文数据结构中可用接收上下文个数递减;设置超时计数器的值为接收数据超时值,设置接收上下文的接收状态为“接收数据”、接收字节总数为连接申请请求报文的数据长度、当前已接收字节数为0、消息标识信息高位为连接申请请求报文的消息标识信息高位,消息标识信息低位为0、错误次数为0,目的节点构造连接申请确认报文,依据预设路由策略发送连接申请确认报文给源节点,跳转执行步骤3.9);
3.9)源节点网卡收到连接申请确认报文,首先对连接申请确认报文进行CRC校验,如果连接申请报文到达目的节点CRC检查出错,则丢弃该报文,并报错;如果连接申请确认报文正确到达源节点且CRC校验,则跳转执行步骤3.10);
3.10)源节点网卡如果能找到匹配的发送上下文且该发送上下文的发送状态为“连接申请”或“延迟等待”,则设置发送上下文的超时计数器值为发送数据超时值、发送状态为“发送数据”,消息标识信息低位为连接申请确认报文的消息标识信息低位,依据预设路由策略开始发送数据报文;否则,丢弃连接申请确认报文,并报错退出;
3.11)源节点网卡收到连接申请报错报文,首先对连接申请报错报文进行CRC校验,如果连接申请报错报文正确到达源节点并通过CRC检查,则跳转执行步骤3.12),否则丢弃申请报错报文并报错退出;
3.12)源节点网卡判断CnctReqNackEn值是否为1,如果CnctReqNackEn值为0(CnctReqNackEn=0),则丢弃报文并报错退出;否则如果CnctReqNackEn值为1,则跳转执行步骤3.13);
3.13)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,否则如果未能找到匹配的发送上下文,则丢弃报文并报错退出;如果能找到匹配的发送上下文且发送上下文的发送状态为“连接申请”,则检查预先设置的MaxNackEn值和匹配的发送上下文中的连接申请优先级,如果MaxNackEn值为1且匹配的发送上下文中的连接申请优先级已经为预设的最大值,报错并回收匹配的发送上下文;否则如果不能同时满足MaxNackEn值为1且匹配的发送上下文中的连接申请优先级已经为预设的最大值,则设置发送上下文中超时计数器的值为退火计数器的值、退火计数器的值为原值乘以2的连接申请重试退火系数次幂、发送状态为“延迟等待”,跳转执行步骤3.2);其中MaxNackEn值用于表示当重试优先级到达最大值时是否继续重试,MaxNackEn值为1表示不继续重试,MaxNackEn值为0表示继续以最大优先级进行重试;同时,源节点网卡对超时计数器进行递减计数,当超时计数器超时则跳转执行步骤3.14);
3.14)源节点网卡检查匹配的发送上下文的错误次数,如果错误次数小于发送方允许的最大错误次数,则重置超时计数器的值为预设的连接申请超时值,递增错误次数,注意退火计数器的值和连接申请优先级保持不变,源节点依据预设路由策略重发连接申请报文,跳转执行步骤3.2);否则报错并回收匹配的发送上下文。
4.根据权利要求3所述的基于片内连接管理的RDMA通信方法,其特征在于,所述步骤4)的详细步骤如下:
S4.1)源节点网卡以DMA方式从本机主存中取数据,并封装成RDMA报文根据预设路由策略发往目的节点,跳转执行步骤S4.2);同时,源节点网卡检查发送上下文的超时计数器,如果超时计数器超时,则同时跳转执行步骤S4.11);
S4.2)目的节点网卡接收RDMA报文,对RDMA报文进行CRC校验,如果CRC校验通过则说明数据报文正确到达目的节点,则跳转执行步骤S4.3),否则跳转执行步骤S4.6);
S4.3)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果不存在匹配的接收上下文或者匹配的接收上下文的状态并非“接收数据”,则丢弃该RDMA报文并报错退出;如果存在匹配的接收上下文且匹配的接收上下文的状态为“接收数据”,则接收该RDMA数据报文,将接收上下文中已经接收的字节数加上RDMA报文携带的数据字节数;同时目的节点网卡判断已经接收的字节数是否等于RDMA消息包含的报文总数,如果等于RDMA消息包含的报文总数,则依据预设路由策略发送数据传输完成响应报文,执行中断或事件通知操作,回收匹配的接收上下文资源,跳转执行步骤S4.4);否则继续接收RDMA报文;
S4.4)源节点网卡收到传输完成响应报文并进行CRC校验,如果数据传输完成响应报文正确到达源节点并CRC校验通过,则跳转执行步骤S4.5);否则如果数据传输完成响应报文到达源节点CRC检查出错,则丢弃报文并报错退出;
S4.5)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文且匹配的发送上下文状态为“发送数据”或“发送探测报文”,则执行中断或事件通知操作,回收匹配的发送上下文资源并退出,报文传输完成退出;否则,丢弃探测成功响应报文并报错退出;
S4.6)目的节点网卡检查接收上下文数据结构中是否存在匹配的接收上下文,如果预设的ExplicitRetryEn=1、存在匹配的接收上下文且匹配的接收上下文状态为“接收数据”,则跳转执行步骤S4.7),否则丢弃报文并报错退出;其中,ExplicitRetryEn值用于判断当源节点或目的节点检测到数据报文CRC错或目的节点RCxt超时时是否发送显式重传报文,ExplicitRetryEn值为1表示发送显式重传报文,ExplicitRetryEn值为0表示不发送显式重传报文;
S4.7)目的节点网卡检查接收上下文中的接收错误次数,如果接收错误次数小于预设的接收方允许的最大错误次数,则置匹配的接收上下文当前已接收字节数为0、递增消息标识信息低位和接收错误次数、超时计数器为预设接收数据超时值,依据预设路由策略发送显式重传报文给源节点,跳转执行步骤S4.8);否则目的节点网卡报错,回收匹配的接收上下文并退出;
S4.8)源节点网卡收到显式重传报文,首先对显式重传报文进行CRC校验,如果CRC校验不通过,则丢弃该显式重传报文并报错退出;如果CRC校验通过,如果显式重传报文正确到达源节点并CRC校验通过,则跳转执行步骤S4.9);
S4.9)源节点网卡在发送上下文数据结构中查找匹配的发送上下文,如果找到匹配的发送上下文且匹配的发送上下文状态为“发送数据”或“发送探测报文”,则跳转执行步骤S4.10),否则,丢弃该报文并报错退出;
S4.10)源节点网卡检查匹配的发送上下文的发送错误次数,如果发送错误次数小于预设的发送方允许的最大错误次数,则检查匹配的发送上下文中的消息标识信息低位,如果发送上下文中的消息标识信息低位小于显式重传报文中的消息标识信息低位,则置匹配的发送上下文中的消息标识信息低位为显式重传报文中的消息标识信息低位、超时计数器为发送数据和回收响应超时值、状态为“发送数据”、递增发送错误次数,依据预设路由策略重新发送数据报文,跳转执行步骤S4.2);如果发送上下文中的消息标识信息低位小于显式重传报文中的消息标识信息低位不成立,丢弃该报文并报错退出;如果发送错误次数小于预设的发送方允许的最大错误次数不成立,则丢弃该报文,报错并回收匹配的发送上下文资源后退出;
S4.11)源节点网卡根据超时计数器检查发送上下文数据结构中的发送上下文状态,当超时计数器超时且对应的发送上下文的状态为“发送数据”时,检查对应的发送上下文中的错误次数,如果错误次数小于发送方允许的最大错误次数,则将发送上下文状态修改为“发送探测报文”、发送上下文中的超时计数器修改为探测请求超时值、递增错误次数,依据预设路由策略发送探测报文,跳转执行步骤S4.13);否则报严重错,回收发送上下文并退出;当超时计数器超时且对应的发送上下文的状态为“发送探测报文”时跳转执行步骤S4.12);
S4.12)源节点网卡检查对应的发送上下文中的错误次数,如果错误次数小于发送方允许的最大错误次数,则将对应的发送上下文中的超时计数器修改为探测请求超时值、递增错误次数,依据预设路由策略发送探测报文,如果目的节点网卡收到探测报文并跳转执行步骤S4.13);否则如果错误次数小于发送方允许的最大错误次数不成立,则源节点网卡报严重错,回收对应的发送上下文并退出;
S4.13)目的节点网卡收到探测报文并进行CRC校验,如果CRC校验出错则丢弃探测报文并报错退出;如果探测报文CRC校验通过,则跳转执行步骤S4.14);
S4.14)目的节点网卡检查接收上下文数据结构在是否存在匹配的接收上下文,如果存在匹配的接收上下文且匹配的接收上下文的状态为“接收数据”,则跳转执行步骤S4.15);如果不存在匹配的接收上下文则向源节点返回探测失败响应报文,则目的节点网卡向源节点返回探测失败响应报文,跳转执行步骤S4.17);
S4.15)目的节点网卡检查匹配的接收上下文的消息标识信息低位,当探测报文的消息标识信息低位等于匹配的接收上下文的消息标识信息低位时,则置匹配的接收上下文的当前已接收字节数为0、递增消息标识信息低位和错误次数,超时计数器为预设接收数据超时值、目的节点网卡向源节点返回探测成功响应报文,跳转执行步骤S4.17);否则当探测报文的消息标识信息低位不等于匹配的接收上下文的消息标识信息低位时,跳转执行步骤S4.16);
S4.16)目的节点网卡判断匹配的接收上下文的错误次数是否小于预设的接收方允许的最大错误次数;如果匹配的接收上下文的错误次数小于预设的接收方允许的最大错误次数,则置接收上下文的当前已接收字节数为0,递增消息标识信息低位和错误次数,超时计数器为预设接收数据超时值,目的节点网卡向源节点返回探测成功响应报文,跳转执行步骤S4.17);如果匹配的接收上下文的错误次数小于预设的接收方允许的最大错误次数不成立,则丢弃探测报文并报错退出;
S4.17)源节点网卡收到探测成功响应报文或者探测失败响应报文并进行CRC校验,如果探测成功响应报文或者探测失败响应报文CRC校验通过,则跳转执行步骤S4.18),否则丢弃报文并报错退出;
S4.18)源节点网卡检查发送上下文数据结构在是否存在匹配的发送上下文,如果存在匹配的发送上下文且匹配的发送上下文的状态为“发送探测报文”,则跳转执行步骤S4.19),否则丢弃该报文并报错退出;
S4.19)检测收到的探测成功响应报文或者探测失败响应报文携带的探测结果类型,如果探测结果类型为“探测成功”且匹配的发送上下文的消息标识信息低位不等于收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位,置匹配的发送上下文的消息标识信息低位为收到的探测成功响应报文或者探测失败响应报文的消息标识信息低位、超时计数器的值为发送数据和回收响应超时值、状态为 “发送数据”,依据预设路由策略向目的节点重新发送数据报文,跳转执行步骤4.1);如果探测结果类型为“探测失败”且匹配的发送上下文的消息标识信息低位等于探测成功响应报文的消息标识信息低位则执行中断或事件通知操作,回收匹配的发送上下文资源并退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310177030.5A CN103248467B (zh) | 2013-05-14 | 2013-05-14 | 基于片内连接管理的rdma通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310177030.5A CN103248467B (zh) | 2013-05-14 | 2013-05-14 | 基于片内连接管理的rdma通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103248467A true CN103248467A (zh) | 2013-08-14 |
CN103248467B CN103248467B (zh) | 2015-10-28 |
Family
ID=48927706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310177030.5A Active CN103248467B (zh) | 2013-05-14 | 2013-05-14 | 基于片内连接管理的rdma通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103248467B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645994A (zh) * | 2013-11-05 | 2014-03-19 | 华为技术有限公司 | 一种数据处理方法及设备 |
CN104484295A (zh) * | 2014-12-16 | 2015-04-01 | 中国人民解放军国防科学技术大学 | 并行计算机系统中基于接收方滑动窗口的数据传输方法 |
CN104753816A (zh) * | 2015-03-27 | 2015-07-01 | 华为技术有限公司 | 一种rdma连接的报文处理方法及相关装置 |
CN105589661A (zh) * | 2014-11-12 | 2016-05-18 | 三星电子株式会社 | 数据存储装置、数据处理系统和操作方法 |
CN105808477A (zh) * | 2014-12-29 | 2016-07-27 | 杭州华为数字技术有限公司 | 一种数据访问方法以及相关装置 |
CN105933325A (zh) * | 2016-06-07 | 2016-09-07 | 华中科技大学 | 一种基于NFSoRDMA的内核态RPC通信加速方法 |
CN106487896A (zh) * | 2016-10-14 | 2017-03-08 | 北京百度网讯科技有限公司 | 用于处理远程直接内存访问请求的方法和装置 |
CN106921751A (zh) * | 2017-04-07 | 2017-07-04 | 广东浪潮大数据研究有限公司 | 一种可靠连接的通信方法及装置 |
CN107257272A (zh) * | 2017-07-06 | 2017-10-17 | 湖南中云飞华信息技术有限公司 | 数据发送方法、发送终端及接收终端 |
CN109669788A (zh) * | 2018-12-10 | 2019-04-23 | 西安微电子技术研究所 | 面向直接内存访问互连通信的多核芯片的mpi实现方法 |
CN109861967A (zh) * | 2018-12-10 | 2019-06-07 | 中国人民银行清算总中心 | 基于Spark Shuffle的远程直接内存访问系统 |
CN111416872A (zh) * | 2020-03-30 | 2020-07-14 | 中国人民解放军国防科技大学 | 基于mp和rdma的高速缓存文件系统通信方法及系统 |
WO2020155417A1 (en) * | 2019-01-30 | 2020-08-06 | Huawei Technologies Co., Ltd. | Input/output processing in a distributed storage node with rdma |
WO2021208092A1 (zh) * | 2020-04-17 | 2021-10-21 | 华为技术有限公司 | 一种有状态业务的处理方法及装置 |
CN114285676A (zh) * | 2021-11-24 | 2022-04-05 | 中科驭数(北京)科技有限公司 | 智能网卡、智能网卡的网络存储方法和介质 |
CN114301644A (zh) * | 2021-12-17 | 2022-04-08 | 中国科学院深圳先进技术研究院 | 网络异常检测系统及方法 |
CN114297106A (zh) * | 2021-03-02 | 2022-04-08 | 井芯微电子技术(天津)有限公司 | 一种集总式rdma链接管理的方法 |
WO2022151820A1 (zh) * | 2021-01-14 | 2022-07-21 | 华为技术有限公司 | 数据传输系统、数据传输方法以及网络设备 |
WO2022179417A1 (zh) * | 2021-02-24 | 2022-09-01 | 华为技术有限公司 | 网络接口卡、消息收发方法和存储装置 |
CN115941616A (zh) * | 2017-12-15 | 2023-04-07 | 微软技术许可有限责任公司 | 多路径rdma传输 |
CN115934623A (zh) * | 2023-02-09 | 2023-04-07 | 珠海星云智联科技有限公司 | 一种基于远程直接内存访问的数据处理方法、设备及介质 |
CN117956054A (zh) * | 2024-03-26 | 2024-04-30 | 上海云豹创芯智能科技有限公司 | 在rdma中实现定时器处理的方法、系统、芯片及存储介质 |
WO2024125280A1 (zh) * | 2022-12-15 | 2024-06-20 | 华为技术有限公司 | 消息传输的方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890657A (zh) * | 2003-12-02 | 2007-01-03 | 国际商业机器公司 | Rdma完成和重传系统以及方法 |
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及系统 |
CN103002046A (zh) * | 2012-12-18 | 2013-03-27 | 无锡众志和达存储技术股份有限公司 | 多系统数据拷贝的rdma架构 |
-
2013
- 2013-05-14 CN CN201310177030.5A patent/CN103248467B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890657A (zh) * | 2003-12-02 | 2007-01-03 | 国际商业机器公司 | Rdma完成和重传系统以及方法 |
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及系统 |
CN103002046A (zh) * | 2012-12-18 | 2013-03-27 | 无锡众志和达存储技术股份有限公司 | 多系统数据拷贝的rdma架构 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645994A (zh) * | 2013-11-05 | 2014-03-19 | 华为技术有限公司 | 一种数据处理方法及设备 |
CN105589661A (zh) * | 2014-11-12 | 2016-05-18 | 三星电子株式会社 | 数据存储装置、数据处理系统和操作方法 |
CN105589661B (zh) * | 2014-11-12 | 2020-09-22 | 三星电子株式会社 | 数据存储装置、数据处理系统和操作方法 |
US10496281B2 (en) | 2014-11-12 | 2019-12-03 | Samsung Electronics Co., Ltd. | Data storage device, data processing system and method of operation |
CN104484295A (zh) * | 2014-12-16 | 2015-04-01 | 中国人民解放军国防科学技术大学 | 并行计算机系统中基于接收方滑动窗口的数据传输方法 |
CN104484295B (zh) * | 2014-12-16 | 2017-03-22 | 中国人民解放军国防科学技术大学 | 并行计算机系统中基于接收方滑动窗口的数据传输方法 |
CN105808477A (zh) * | 2014-12-29 | 2016-07-27 | 杭州华为数字技术有限公司 | 一种数据访问方法以及相关装置 |
CN104753816A (zh) * | 2015-03-27 | 2015-07-01 | 华为技术有限公司 | 一种rdma连接的报文处理方法及相关装置 |
CN105933325A (zh) * | 2016-06-07 | 2016-09-07 | 华中科技大学 | 一种基于NFSoRDMA的内核态RPC通信加速方法 |
CN105933325B (zh) * | 2016-06-07 | 2019-04-12 | 华中科技大学 | 一种基于NFSoRDMA的内核态RPC通信加速方法 |
CN106487896B (zh) * | 2016-10-14 | 2019-10-08 | 北京百度网讯科技有限公司 | 用于处理远程直接内存访问请求的方法和装置 |
CN106487896A (zh) * | 2016-10-14 | 2017-03-08 | 北京百度网讯科技有限公司 | 用于处理远程直接内存访问请求的方法和装置 |
CN106921751A (zh) * | 2017-04-07 | 2017-07-04 | 广东浪潮大数据研究有限公司 | 一种可靠连接的通信方法及装置 |
CN107257272A (zh) * | 2017-07-06 | 2017-10-17 | 湖南中云飞华信息技术有限公司 | 数据发送方法、发送终端及接收终端 |
CN107257272B (zh) * | 2017-07-06 | 2020-12-04 | 湖南中易利华信息技术有限公司 | 数据发送方法、发送终端及接收终端 |
CN115941616A (zh) * | 2017-12-15 | 2023-04-07 | 微软技术许可有限责任公司 | 多路径rdma传输 |
CN109861967A (zh) * | 2018-12-10 | 2019-06-07 | 中国人民银行清算总中心 | 基于Spark Shuffle的远程直接内存访问系统 |
CN109669788A (zh) * | 2018-12-10 | 2019-04-23 | 西安微电子技术研究所 | 面向直接内存访问互连通信的多核芯片的mpi实现方法 |
WO2020155417A1 (en) * | 2019-01-30 | 2020-08-06 | Huawei Technologies Co., Ltd. | Input/output processing in a distributed storage node with rdma |
US11681441B2 (en) | 2019-01-30 | 2023-06-20 | Huawei Technologies Co., Ltd. | Input/output processing in a distributed storage node with RDMA |
CN111416872A (zh) * | 2020-03-30 | 2020-07-14 | 中国人民解放军国防科技大学 | 基于mp和rdma的高速缓存文件系统通信方法及系统 |
WO2021208092A1 (zh) * | 2020-04-17 | 2021-10-21 | 华为技术有限公司 | 一种有状态业务的处理方法及装置 |
WO2022151820A1 (zh) * | 2021-01-14 | 2022-07-21 | 华为技术有限公司 | 数据传输系统、数据传输方法以及网络设备 |
WO2022179417A1 (zh) * | 2021-02-24 | 2022-09-01 | 华为技术有限公司 | 网络接口卡、消息收发方法和存储装置 |
CN114297106A (zh) * | 2021-03-02 | 2022-04-08 | 井芯微电子技术(天津)有限公司 | 一种集总式rdma链接管理的方法 |
CN114297106B (zh) * | 2021-03-02 | 2024-06-21 | 井芯微电子技术(天津)有限公司 | 一种集总式rdma链接管理的方法 |
CN114285676A (zh) * | 2021-11-24 | 2022-04-05 | 中科驭数(北京)科技有限公司 | 智能网卡、智能网卡的网络存储方法和介质 |
CN114285676B (zh) * | 2021-11-24 | 2023-10-20 | 中科驭数(北京)科技有限公司 | 智能网卡、智能网卡的网络存储方法和介质 |
CN114301644A (zh) * | 2021-12-17 | 2022-04-08 | 中国科学院深圳先进技术研究院 | 网络异常检测系统及方法 |
CN114301644B (zh) * | 2021-12-17 | 2024-03-19 | 中国科学院深圳先进技术研究院 | 网络异常检测系统及方法 |
WO2024125280A1 (zh) * | 2022-12-15 | 2024-06-20 | 华为技术有限公司 | 消息传输的方法、装置、设备和存储介质 |
CN115934623A (zh) * | 2023-02-09 | 2023-04-07 | 珠海星云智联科技有限公司 | 一种基于远程直接内存访问的数据处理方法、设备及介质 |
CN117956054A (zh) * | 2024-03-26 | 2024-04-30 | 上海云豹创芯智能科技有限公司 | 在rdma中实现定时器处理的方法、系统、芯片及存储介质 |
CN117956054B (zh) * | 2024-03-26 | 2024-06-11 | 上海云豹创芯智能科技有限公司 | 在rdma中实现定时器处理的方法、系统、芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103248467B (zh) | 2015-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103248467B (zh) | 基于片内连接管理的rdma通信方法 | |
US6343067B1 (en) | Method and apparatus for failure and recovery in a computer network | |
US6545981B1 (en) | System and method for implementing error detection and recovery in a system area network | |
US6181704B1 (en) | Method and apparatus for input/output link retry, failure and recovery in a computer network | |
US6615383B1 (en) | System and method for message transmission between network nodes connected by parallel links | |
CN100448224C (zh) | 探索路径最大传输单元的方法和设备 | |
US6724762B2 (en) | System and method for implementing multi-pathing data transfers in a system area network | |
US7734720B2 (en) | Apparatus and system for distributing block data on a private network without using TCP/IP | |
US6744765B1 (en) | Mechanism for completing messages in memory | |
KR100431228B1 (ko) | 계층형arq구조의연결된에러검출코딩및패킷넘버링 | |
US20100183024A1 (en) | Simplified rdma over ethernet and fibre channel | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN102868604B (zh) | 一种应用于片上网络的二维Mesh双缓冲容错路由单元 | |
CN103188059A (zh) | 快速通道互联系统中数据包重传方法、装置和系统 | |
US6735620B1 (en) | Efficient protocol for retransmit logic in reliable zero copy message transport | |
US20160255008A1 (en) | Separable transport layer in cache coherent multiple component microelectronic systems | |
CN101567769A (zh) | 数据重传方法、系统及对等节点 | |
CN113765976A (zh) | 一种通信方法和系统 | |
JP5029685B2 (ja) | バックアップ装置 | |
CN115777184A (zh) | 一种数据重传方法和装置 | |
CN103890750A (zh) | 具有持久状态流控制的高性能虚拟融合增强型以太网 | |
US20020057687A1 (en) | High speed interconnection for embedded systems within a computer network | |
CN115550079A (zh) | 网络接口卡、消息收发方法、存储装置和主机客户端 | |
CN107273318A (zh) | 并行处理设备和通信控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |