文献:基于RDMA的分布式存储系统研究综述
作者:陈游旻
RDMA是远程直接内存访问,是为了解决网络传输中服务器端数据处理的延迟而产生的。在对方主机cpu不参与的情况下远程读写异地内存,无内核干预和内存拷贝发生。起初,只应用在高性能计算领域,最近,由于在大规模分布式系统和数据中心中网络瓶颈越来越突出,逐渐走进越来越多人的视野。
硬件要求:
1. cpu和网卡都需要有独立的缓存系统
2. 网卡要有良好的并行性,需要多核处理器
RDMA过程:(以远程写操作为例)
1. 本地cpu向网卡发出远程写命令,传递相关参数(待写入数据块基地址、远端内存地址、数据块大小、远端注册内存秘钥等)
2. 网卡根据基地址将数据块读到网卡缓存,发送到远端NIC(网卡)
3. 远端网卡接收到数据块后,确认秘钥,直接将数据块写入到内存相应地址
RDMA绕过cpu,减少了cpu开销,无需穿越多层网络协议栈,实现了跨节点数据传输的数据零拷贝。
三类RDMA网络:分别是Infiniband、RoCE、iWARP
Infiniband,支持RDMA的新一代网络协议。 由于这是一种新的网络技术,因此需要支持该技术的NIC和交换机。
RoCE,一个允许在以太网上执行RDMA的网络协议。 其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是InfiniBand标头。 这支持在标准以太网基础设施(交换机)上使用RDMA。 只有网卡应该是特殊的,支持RoCE。
iWARP,一个允许在TCP上执行RDMA的网络协议。 IB和RoCE中存在的功能在iWARP中不受支持。 这支持在标准以太网基础设施(交换机)上使用RDMA。 只有网卡应该是特殊的,并且支持iWARP(如果使用CPU卸载),否则所有iWARP堆栈都可以在SW中实现,并且丧失了大部分RDMA性能优势。
三种RDMA的网络协议都可以使用相同的API(verbs),使用标准库libverbs
应用:
清华大学分布式持久性内存文件系统Octopus
俄亥俄州NVFS系统
上海交通大学分布式事务系统Drtm
Microsoft FaRM系统等
优化