RDMA 简介

来源:互联网 发布:软件模块化设计 编辑:程序博客网 时间:2024/06/05 17:42

RDMA 就是remote DMA, 可以不需要cpu的参与直接把数据复制到远程机器的内存指定地址的操作。

这种技术的发展起来,应该是为了解决网卡带宽10Gb 时出现的cpu 性能限制问题的吧(自己算一下当网络传输速度达到10G时,cpu每秒需要复制多大的数据的? 文档说达到cpu的极限了,超过摩尔定律。)因为网络包的传输,cpu还要做很多校验计算等的,如果不是zero-copy   cpu的工作量实在是太大了。这里是一篇IBM人写的论文上摘下来的图。说的是传输中cpu负载的分布图:

 

而RDMA技术的引入,就是可以把cpu从这种数据复制操作中解放出来,网络的传输不需要cpu的干预,cpu不再需要复制数据了,可以大幅度的提高性能。从文档摘下来的图形,很好的解释了RDMA的工作模式:

 

 

 





 

 

其中比较常见的是RDMA  Write操作。不知道大家注意到没有,进行RDMA wirte操作是事先要知道远程机器上 内存地址的。比如下图,是Intel 和微软等公司联合推出的Virtual Interface Architecture 标准中的RDMA 操作,

 

其中作RDMA传输的时候,就去要你预先注册相应的本地和远程内存区域,并提供Remote buffer virtual address  这个远程地址。关于这个地址如何获取得到,我看到有华人在美国大学发表的一篇论文作什么MPI框架的,采用的办法是两边机器都采用同一个RDMA地址,就是说你这从这边机器的某个地址复制过去的话,rdma后数据也在远程机器的同一个地址上。应该是两边都保留了同样的一个地址了的。不过这种办法也有很大的局限性的吧。  如果不采用这总办法的话,只能老老实实通过一个不是RDMA的网络通讯,先把远程地址 给传过来了。 可以想的出,这种专门传地址的网络操作是会造成网络延时等问题的,所以网络也有看到针对这个的优化论文。也有事先在client端保存一个服务器端远程地址的队列,这样client端要发RDMA write到server去的时候,就可以直接从队列里面取得一个远程机器的地址,然后发送过去,发送的时候把这个地址也一起传过去,这样发送之前就不需要通过网络要求server来提供远程地址了,server端收到之后也知道数据写到那里去了,等server端用完之后,再把这个已经释放的远程地址通过刚才那个client的ack包的形式回应client端,client端就知道这个远程地址又可以用了,就可以继续的把它加到空闲队列里面以便下次使用。 严格来说这个办法也也是需要通过网络来传送接收端的“远程地址”的,不过是把他嵌入了正常的网络通讯协议里面去了,看上去“额外”的网络通讯都被避免了,只要合理的管理好这个远程地址的空闲队列就可以了。网上也有RDAM传输协议的标准化的草案也可以参考一下,看别人怎么解决这个问题的。

         因为这种传地址的非rdma操作的存在,可以知道,这种RDMA还是比较适合于大量数据的网络传输的,比如scsi磁盘读写操作等。

 

文档说RDMA也有一些缺点:

比如,api比较复杂,内存在网络可见的安全性问题等。不过应该都不是大问题可以解决的吧。

 

RDMA的标准化

好像这个做的不怎么好啊,没有被收录进主流的网络协议里面去??  虽然出现很长时间了,好像在网络找资料的时候也不是很多。这东西可能各个硬件产商的具体实现也不大一样吧。 我把文档列的都摘录出来吧。好像前面两个比较常见:

 

Existing RDMA Transport Standards
Virtual Interface Architecture
-  
http://www.intel.com/design/servers/vi/developer/ia_imp_guide.htm
• PRO: first standard RDMA architecture
• CONS: no protocol, no APIs
• FC-VI and VI/TCP protocols have been developed for it
InfiniBand - http://www.infinibandta.org
• PRO: fully defined protocols on all levels, suitable for cluster
interconnect, storage interconnect – single network for data
center
• CONS: no APIs, verbs only

 

Emerging RDMA Transport Standards
RDMA Consortium- http://www.rdmaconsortium.org
• PRO: open protocol specs over existing IP infrastructure:
− MPA (TCP framing), Direct Data Placement, RDMAP
− upper layer protocols
− verbs
• feeding to IETF
• CONS: early specifications, work in progress
IETF RDDP WG - http://www.ietf.org/html.charters/rddp-
charter.html
• Work just starting on iWARP

 

 

RDMA API Standards
VIDF
 - http://www.vidf.org/
• Based on Intel API example (VIPL-1.0)
• On September 13, 2001 the VIDF ratified VIDF Extensions
to VIPL 1.0 Revision A.
• User level APIs only
DAT Collaborative– http://www.datcollaborative.org/
• Direct Access Transport
• uDAPL
• kDAPL
ICSC- http://www.opengroup.org/icsc/
Interconnect Software Consortium (under The Open Group)
ITWG (user level)
User level sockets
Fabric management APIs


 
参考  文档

The Case for RDMA
Jim Pinkerton
RDMA Consortium
5/29/2002

Virtual Interface Architecture
(VIA)
Hassan Shojania

 Virtual Interface Architecture  Specification

Progress in Standardization of
RDMA technology
Arkady Kanevsky, Ph.D
Chair of DAT Collaborative
October 2002


An RDMA Protocol Specification (Version 1.0)



【本文转载自:http://hi.baidu.com/widebright/item/54a035f658312848932af2af 】

原创粉丝点击