RDMA技术一

1.什么是RDMA

RDMA( Remote Direct Memory Access )即Remote + DMA,意为远程直接地址访问。所谓“Remote”,本端节点可以访问“远端”节点的内存。所谓“Direct”,指的是可以像访问本地内存一样,绕过传统以太网复杂的TCP/IP网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的,即不需要内核参与。

RDMA (Remote Direct Memroy Access ):利用 Kernel Bypass(内核旁路) 和 Zero Copy(零拷贝)技术提供了低延迟的特性,同时减少了CPU占用,减少了内存带宽瓶颈,提供了很高的带宽利用率。RDMA提供了基于 IO 的一种通道,这种通道允许一个用户空间的应用程序通过RDMA设备对远程的虚拟内存进行直接的读写。消除了传统网络通信带给计算任务的瓶颈,实现了更快和更轻量级的网络通信。

1.1 DMA

传统内存访问需要通过CPU进行数据copy来移动数据,通过CPU将内存中的Buffer1移动到Buffer2中。

DMA(直接内存访问)是一种能力,允许在计算机主板上的设备通过DMA直接把数据发送到目标内存中去,数据搬运不需要CPU的参与。 

DMA模式:可以同DMA Engine之间通过硬件将数据从Buffer1移动到Buffer2,而不需要操作系统CPU的参与,大大降低了CPU Copy的开销。

1.2 RDMA

两端(本端和远端)的CPU几乎不用参与数据传输过程(只参与控制面)。本端的网卡直接从内存的用户空间DMA拷贝数据到内部存储空间,然后硬件RNIC(即支持RDMA技术的网卡)进行数据组装(主要时添加tcp、ip等报文头和校验码)后,通过物理链路发送到对端硬件RNIC即支持RDMA技术的网卡),对端的RDMA网卡收到数据后,剥离各层报文头和校验码,通过DMA Engine将数据直接拷贝到用户空间内存中。

2.RDMA的特点

2.1 特点一:zero-copy 零拷贝

能够读写远程内存,能够直接访问远程缓冲区,无需在不同软件层之间复制数据

2.2 特点二:kernel bypass 内核旁路

跳过内核,可在相同的代码上下文(即用户空间或内核)中收/发数据,节省了上下文切换时间

2.3 特点三:cpu-loadoff cpu卸载

无 CPU 参与,可使用专用硬件RNIC收/发数据前对数据进行组装或者解压,而不需要 CPU 干预。可降低远程端的 CPU 使用率,因为不需要它执行任何主动操作

2.4 特点四:message based transactions 基于消息的事务

可在不同的连接上同时执行多个事务,而无需等待任何事务完成

2.5 特点五:scatter/gather entries support 分散/聚集条目

可在单个操作中传输多个缓冲区,而无需将它们合并到单个缓冲区中

3.实现
3.1 要求

NIC 供应商将 RDMA 实现为软件、固件和硬件的组合 ,必须通过分配给支持 NDK 的微型端口适配器的 IPv4 和 IPv6 地址支持网络直接连接。

固件和硬件需求:提供 NDK/RDMA 功能的网络适配器,这种类型的适配器也称为已启用 RDMA 的 NIC (RNIC) ,即支持RDMA的网卡,如intel、navida等都提供特定的网卡。

软件需求:支持 NDK 的微型端口驱动程序,可实现 NDKPI 接口。不同的操作系统需要不同的软件需求,如RDMA 的 Windows 实现称为网络直通 (network direct,简称ND) ,内核部分称为网络直接内核 (NDK) ;RDMA在linux上【RDMA】intel 英特尔RDMA 驱动和ibverslib 库安装|流控PFC_rdma驱动-优快云博客
    

3.2 实现方法

目前RDMA有三种不同的硬件实现,它们都可以使用同一套API来使用,但它们有着不同的物理层和链路层:

InfiniBand(IB): 基于 InfiniBand 架构的 RDMA 技术,需要专用的 IB 网卡和 IB 交换机。从性能上,很明显Infiniband网络最好,但网卡和交换机是价格也很高。

RoCE:即RDMA over Ethernet(RoCE), 基于以太网的 RDMA 技术,也是由 IBTA 提出。RoCE支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,只不过网卡必须是支持RoCE的特殊的NIC。

iWARP:Internet Wide Area RDMA Protocal,基于 TCP/IP 协议的 RDMA 技术(在现有TCP/IP协议栈基础上实现RDMA技术,在TCP协议上增加一层DDP),由 IETF 标 准定义。iWARP 支持在标准以太网基础设施上使用 RDMA 技术,而不需要交换机支持无损以太网传输,但服务器需要使用支持iWARP 的网卡。与此同时,受 TCP 影响,性能稍差。

4 说明

RDMA 、InfiniBand、IBoE、RoCE、iWARP、IB卡、IB驱动的关系

4.1 说明一

RDMA 是一种技术(远程直接内存访问技术),有三种协议可以实现这种技术。

4.2 说明二

实现这种技术你可以选择用 Infiniband 协议、也可以使用其他协议:roce、iwarp

支持Infiniband 协议 或 roce、iwarp 等RDMA协议的网卡,就叫RDMA网卡,当你在服务器上安装RDMA网卡之后,你还得安装RDMA驱动,才能使用RDMA网卡 。

在Infiniband/RoCE规范中,将RDMA网卡称为HCA,全称为Host Channel Adapter,即主机通道适配器;而在iWARP协议族中,将RDMA网卡称为RNIC,全称为RDMA enabled Network Interface Controller,即支持RDMA的网络接口控制器。

支持Infiniband 协议的网卡又称IB网卡,当你在服务器上安装了IB卡之后,你还得安装 IB驱动,才能使用 infiniband 。

4.3 说明三

如果你使用 Infiniband 协议,这个协议作为一个新一代网络协议。它必须依靠专门的硬件才能实现。(专用INC(网卡)—— IB卡+专用交换机===>专用网络)。

如果你使用roce、iwarp,需要专用网卡,但不需要专用网络(RDMA会转成以太网协议,继续用以太网传输)

### RDMA技术原理 RDMA(Remote Direct Memory Access)是种能够在网络中直接访问远程计算机内存的技术,而无需操作系统或远程处理器的介入。这种技术显著降低了延迟和提高了吞吐量,因为它避免了传统的数据复制过程[^1]。 在虚拟机环境中,SoftRoCE 是种软件实现的 RoCE 协议,允许用户在没有实际硬件 RDMA 设备的情况下测试和体验 RDMA 功能。通过将普通网卡配置为 SoftRoCE 设备,可以模拟 RDMA 的行为[^1]。 ### RDMA技术的三种主要实现 目前,RDMA 技术有三种主要的硬件实现方式:InfiniBand、iWARP 和 RoCE。每种实现都有其独特的特点和适用场景: - **InfiniBand**:基于 InfiniBand 架构的 RDMA 技术,由 IBTA 提出。它需要专用的网卡和交换机,性能最佳但成本较高。 - **iWARP**:基于 TCP/IP 协议的 RDMA 技术,由 IETF 标准定义。支持在标准以太网基础设施上使用 RDMA 技术,但服务器需要使用支持 iWARP 的网卡,且性能受 TCP 影响稍差。 - **RoCE**:基于以太网的 RDMA 技术,同样由 IBTA 提出。支持在标准以太网基础设施上使用 RDMA 技术,但需要交换机支持无损以太网传输,并且需要使用 RoCE 网卡,性能与 InfiniBand 相当[^2]。 ### 配置示例 以下是个简单的配置示例,展示如何在 Linux 环境下启用和测试 RDMA 功能: ```bash # 安装必要的工具和库 sudo apt-get update sudo apt-get install -y rdma-core # 查看当前系统中的 RDMA 设备 ibdev2netdev # 测试 RDMA 连接性 # 在服务器端运行以下命令 iperf -s -i 1 -f m --rdma # 在客户端运行以下命令 iperf -c <服务器IP> -i 1 -t 10 -f m --rdma ``` ### 使用方法 要使用 RDMA 技术,首先需要确保硬件支持 RDMA 功能。对于 InfiniBand,需要专用的网卡和交换机;对于 iWARP 和 RoCE,则需要支持这些协议的网卡。此外,还需要安装相应的驱动程序和软件栈,例如 `libibverbs` 和 `rdma-core`,以便应用程序能够调用 RDMA API。 在应用层面,可以通过 MPI(Message Passing Interface)等库来利用 RDMA 提供的高性能通信能力。例如,在 HPC(High-Performance Computing)领域,许多集群计算框架都支持 RDMA 作为底层通信机制。 ### 注意事项 尽管 RDMA 技术提供了高效的网络通信能力,但在实际部署时需要注意网络环境的要求。例如,RoCE 需要无损以太网的支持,这意味着交换机必须能够处理流量控制和拥塞管理。此外,选择合适的 RDMA 实现方式取决于具体的使用场景和预算限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值