共享系统地址空间的非紧耦合系统间的rdma通信方法

文档序号:7812822阅读:230来源:国知局
共享系统地址空间的非紧耦合系统间的rdma通信方法
【专利摘要】提出一种基于共享地址空间的非紧耦合系统间的RDMA通信方法,源节点通过直接内存存取指令远程访问目的节点,在源节点和目的节点之间建立远程直接内存存取RDMA连接;在建立所述RDMA连接后,在源节点与目的节点之间执行数据传递;数据传递完毕后释放所述RDMA连接;其中,远程目的节点的共享内存资源与I/O资源被映射在源节点本地的内存映射I/O(MMIO)地址空间当中。所述方法能够实现非紧耦合节点之间的快速、稳定的数据传输。
【专利说明】共享系统地址空间的非紧耦合系统间的RDMA通信方法

【技术领域】
[0001]本发明涉及分布式计算【技术领域】,具体涉及一种基于共享系统地址空间的非紧耦合系统间的RDMA通信方法。

【背景技术】
[0002]传统的TCP/IP技术在数据包处理过程中,要经过整个系统协议栈,占用大量的服务器资源。所传输的数据要在应用缓存、系统缓存以及网络控制器缓存之间来回复制移动。一次普通的网络传输过程如下:首先,网卡驱动程序要把数据包缓存在系统缓冲区,数据经过处理以后与一个TCP连接相关联;然后,接收系统将TCP数据与相应的应用程序关联,并将数据从系统缓冲区拷贝到目标应用存储地址。如此,在网络通信频繁的系统中,大量的CPU时间被浪费在网络通信中的数据移动。
[0003]RDMA(远程直接内存存取)技术是通过网络把资料直接传入远程计算机的内存,将数据从一个系统快速移动到远程系统主存中,而不对系统造成任何影响,这样就不会浪费CPU的计算能力。它消除了外部存储器复制与文本交换操作,因而能腾出总线空间与CPU周期用于改进应用系统性能。
[0004]面对爆炸式的数据增长,数据中心的可扩展性面临了极大的挑战。Scale-up (纵向扩容)与Scale-out (横向扩展)是目前数据中心扩容的两种主要形式。其中,Scale-out则是通过分布式算法将一个个独立的低成本服务器节点组成一个大而强的系统。
[0005]然而采用Scale-out体系结构的数据中心,服务器节点之间采用松耦合的组织形式,相互之间独立,不能共享计算资源、存储资源与I/o资源。因此,现有技术还无法实现在非紧耦合系统间实现基于RDMA技术的通信。


【发明内容】

[0006]本发明的目的在于提出一种基于共享系统地址空间的非紧耦合系统间的远程直接内存存取RDMA通信方法,在非紧耦合系统间实现基于RDMA技术的通信。所述方法包括:
[0007]S1.源节点通过直接内存存取指令远程访问目的节点,在源节点和目的节点之间建立远程直接内存存取RDMA连接;
[0008]S2.在建立所述RDMA连接后,在源节点与目的节点之间执行数据传递;
[0009]S3.数据传递完毕后释放所述RDMA连接;
[0010]其中,远程目的节点的共享内存资源与I/O资源被映射在源节点本地的内存映射I/O(MM1)地址空间当中。
[0011]特别地,所述步骤SI具体为:
[0012]Sll.源节点初始化本地RDMA传输的发送上下文数据结构,包括目的节点的内存映射I/O(MM1)地址、状态、发送字节总数以及当前已发送字节数;
[0013]S12.源节点构造向远程目的节点申请RDMA连接的请求消息,消息内容包括目的节点的MM1地址、源节点的MM1地址,然后基于全局共享系统地址空间的映射关系通过非紧耦合系统中的节点间控制器发送到远程节点;
[0014]S13.所述目的节点接收到源节点发送的所述申请RDMA连接的请求消息后,构造接收上下文数据结构,包括源节点的丽1地址、状态、接收字节总数以及当前已接收字节数;
[0015]S14.目的节点回复确认消息,源节点收所述确认消息,完成RDMA连接的建立过程。
[0016]特别地,所述步骤S12中,非紧耦合系统中的节点间控制器的处理过程为:根据所述请求消息中的目的节点的丽1地址与全局共享系统地址空间映射关系,将目的节点的MM1地址翻译成目的节点号与逻辑地址,并基于所述目的节点号和逻辑地址将所述请求消息发送到目的节点。
[0017]特别地,所述步骤S2具体为:
[0018]S21.源节点以DMA方式从源节点内主机内存中读取数据,并封装成RDMA消息,所述RDMA消息中包括目的节点的丽1地址;
[0019]S22.非紧耦合系统中的节点间控制器,根据所述RDMA消息中的目标地址与全局共享系统地址空间映射关系,将目标节点的MM1地址翻译成目标节点号和逻辑地址,并基于所述目标节点号和逻辑地址将所述RDMA消息发送到目的节点;
[0020]S23.目的节点收到RDMA消息以后,根据节点内地址映射关系,将逻辑地址翻译成节点内的内存物理地址,拷贝数据到相应的内存地址当中;
[0021]S24.目的节点构造传输完成消息,通知源节点。
[0022]特别地,所述RDMA消息中还包括一个序列号,用来标识当前缓冲区传送的消息号,以便检测消息丢失的情况。
[0023]特别地,所述步骤S23中,在目的节点收到RDMA消息之后,将逻辑地址翻译成节点内的内存物理地址之前,还包括基于硬件执行CRC校验。
[0024]本发明的有益效果是:公开的一种基于共享地址空间的非紧耦合系统间的RDMA通信方法,能够实现非紧耦合节点之间的快速、稳定的数据传输。

【专利附图】

【附图说明】
[0025]图1为基于共享系统地址空间的非紧耦合系统的结构示意图。
[0026]图2为本发明提出的基于共享系统地址空间的非紧耦合系统的RDMA通信方法流程图。
[0027]图3为本发明提出的非紧耦合系统间RDMA连接建立流程图。
[0028]图4为本发明提出的非紧耦合系统间RDMA的数据传输流程图。

【具体实施方式】
[0029]为了使本发明的目的、技术方案更加清楚明白,下面给出本发明的【具体实施方式】,结合附图及实施例对本发明进行详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明。
[0030]图1给出了非紧耦合的分布式计算系统结构图。在图中,节点内部通过节点内控制器INC(Intra Node Controller)相连,每个INC可以连接至少一个CPU,节点之间通过节点间控制器ENC(External Node Controller)相连。每个节点是一个独立的整体,拥有独立的计算资源、内存资源与I/O资源,可以运行独立的操作系统。节点之间采用非紧耦合形式组织,相互之间独立,不支持内存资源与I/O资源的共享。
[0031]参见图2,为了实现本发明的目的,提出的一种基于共享系统地址空间的非紧耦合系统间的RDMA通信方法,包括如下步骤:
[0032]1.源节点通过直接内存存取指令远程访问目的节点,在源节点和目的节点之间建立远程直接内存存取RDMA连接。
[0033]2.在建立所述RDMA连接后,在源节点与目的节点之间执行数据传递。
[0034]3.数据传递完毕后释放所述RDMA连接。
[0035]其中,在上述操作步中,源节点与目的节点之间的数据通信,是基于全局共享系统地址空间的映射关系。在该通信方式中,远程目的节点的共享内存资源与I/o资源被映射在源节点本地的内存映射Ι/0(ΜΜΙ0)地址空间当中,通过处理器的Load/Store指令就可以直接访问远程目的节点的共享内存资源和1/0资源。
[0036]图3给示出了前述步骤I中所述通过直接内存存取建立所述RDMA连接的详细过程:
[0037]1.1.源节点初始化本地RDMA传输的发送上下文数据结构,包括目的节点的内存映射1/0(MM1)地址、状态、发送字节总数以及当前已发送字节数等。
[0038]1.2.源节点构造向远程目的节点申请RDMA连接的请求消息,消息内容包括目的节点的MM1地址、源节点的MM1地址,然后基于全局共享系统地址空间的映射关系通过非紧耦合系统中的节点间控制器发送到远程节点。
[0039]上述步骤中,非紧耦合系统中的节点间控制器的处理过程为:根据所述请求消息中的目的节点的丽10地址与全局共享系统地址空间映射关系,将目的节点的丽10地址翻译成目的节点号与逻辑地址,并基于所述目的节点号和逻辑地址将所述请求消息发送到目的节点。
[0040]1.3.所述目的节点接收到源节点的申请RDMA连接的请求消息,构造接收上下文数据结构,包括源节点的丽10地址、状态、接收字节总数以及当前已接收字节数等。
[0041]1.4.目的节点根据请求消息回复确认消息,源节点收到所述确认消息,完成RDMA连接的建立过程。
[0042]图4给出了在建立连接后,基于全局共享系统地址空间的映射关系,在源节点与目标节点之间执行数据传递的详细过程:
[0043]2.1源节点以DMA方式从源节点内主机内存中读取数据,并封装成RDMA消息,所述RDMA消息中包括目的节点的丽10地址和一个序列号,用来标识当前缓冲区传送的消息号,以便检测消息丢失的情况。
[0044]远程节点的地址被映射在了本地的丽10地址空间当中,本地系统为了将本地的消息发送到远程节点,系统固件(System Firmware)需要在桥设备的寄存器中,将系统中用于共享的MM1地址空间注册成节点间控制器的地址空间,如此,本地系统会将访问这部分丽10地址的请求,经过桥设备,转发到节点间控制器。
[0045]2.2非紧耦合系统中的节点间控制器,根据RDMA消息中的目标地址与全局共享系统地址空间映射关系,将目标节点的MM1地址翻译成目标节点号与逻辑地址,并基于目标节点号和逻辑地址将所述RDMA消息发送到目的节点。
[0046]2.3目的节点收到RDMA消息以后,基于硬件执行CRC校验。然后根据节点内地址映射关系,将逻辑地址翻译成节点内的内存物理地址,拷贝数据到相应的内存地址当中。
[0047]在上述步骤2.1和2.3中,源节点的RDMA控制器根据全局地址空间映射关系,将RDMA消息中的目的节点的丽1地址翻译成一个逻辑地址,包括:目的节点号与目的节点逻辑地址。当目的节点收到RDMA消息以后,目的节点的RDMA控制器根据节点内地址映射关系,将逻辑地址翻译成节点内的内存物理地址,然后执行数据移动。
[0048]2.4目的节点构造传输完成消息,通知源节点。
[0049]当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
【权利要求】
1.一种基于共享系统地址空间的非紧耦合系统间的RDMA通信方法,其特征在于,包括如下步骤: 51.源节点通过直接内存存取指令远程访问目的节点,在源节点和目的节点之间建立远程直接内存存取RDMA连接; 52.在建立所述RDMA连接后,在源节点与目的节点之间执行数据传递; 53.数据传递完毕后释放所述RDMA连接; 其中,远程目的节点的共享内存资源与I/O资源被映射在源节点本地的内存映射I/O(MM1)地址空间当中。
2.如权利要求1所述的方法,其特征在于: 所述步骤SI具体为: 511.源节点初始化本地RDMA传输的发送上下文数据结构,包括目的节点的内存映射I/O (MM1)地址、状态、发送字节总数以及当前已发送字节数; 512.源节点构造向远程目的节点申请RDMA连接的请求消息,消息内容包括目的节点的MM1地址、源节点的MM1地址,然后基于全局共享系统地址空间的映射关系通过非紧耦合系统中的节点间控制器发送到远程节点; 513.所述目的节点接收到源节点发送的所述申请RDMA连接的请求消息后,构造接收上下文数据结构,包括源节点的MM1地址、状态、接收字节总数以及当前已接收字节数; 514.目的节点回复确认消息,源节点收所述确认消息,完成RDMA连接的建立过程。
3.如权利要求2所述的方法,其特征在于: 所述步骤S12中,非紧耦合系统中的节点间控制器的处理过程为:根据所述请求消息中的目的节点的丽1地址与全局共享系统地址空间映射关系,将目的节点的MM1地址翻译成目的节点号与逻辑地址,并基于所述目的节点号和逻辑地址将所述请求消息发送到目的节点。
4.如权利要求1或2所述的方法,其特征在于,所述步骤S2具体为: 521.源节点以DMA方式从源节点内主机内存中读取数据,并封装成RDMA消息,所述RDMA消息中包括目的节点的丽1地址; 522.非紧耦合系统中的节点间控制器,根据所述RDMA消息中的目标地址与全局共享系统地址空间映射关系,将目标节点的MM1地址翻译成目标节点号和逻辑地址,并基于所述目标节点号和逻辑地址将所述RDMA消息发送到目的节点; 523.目的节点收到RDMA消息以后,根据节点内地址映射关系,将逻辑地址翻译成节点内的内存物理地址,拷贝数据到相应的内存地址当中; 524.目的节点构造传输完成消息,通知源节点。
5.如权利要求4所述的方法,其特征在于: 所述RDMA消息中还包括一个序列号,用来标识当前缓冲区传送的消息号,以便检测消息丢失的情况。
6.如权利要去4所述的方法,其特征在于: 所述步骤S23中,在目的节点收到RDMA消息之后,将逻辑地址翻译成节点内的内存物理地址之前,还包括基于硬件执行CRC校验。
【文档编号】H04L29/08GK104202391SQ201410432369
【公开日】2014年12月10日 申请日期:2014年8月28日 优先权日:2014年8月28日
【发明者】王恩东, 胡雷钧, 唐士斌, 陈继承 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1