RDMA(远程直接内存访问)原理架构图文详解+与传统通信模式对比
发布网友
发布时间:2024-10-19 04:32
我来回答
共1个回答
热心网友
时间:2024-11-02 13:25
传统通信模式使用TCP/IP协议的程序通常通过UNIX BSD套接字实现网络进程间的通信。此模式导致每次传输数据时,需要经过操作系统和协议栈管理,导致CPU占用过高,无论是同步还是异步通信。传统通信过程中,数据需要重复拷贝和上下文切换,CPU处理次数多。
RDMA(远程直接内存访问)是一种新直接内存访问技术,它允许计算机直接访问其他计算机的内存,无需处理器干预。RDMA将数据快速传输到远程系统内存中,不对操作系统产生影响。其基本原理包括远程(Remote)、直接(Direct)、内存(Memory)和访问(Access)。RDMA与传统TCP/IP通信相比,发送和接收、读写操作中,RDMA网卡直接与已注册内存区域进行数据传输,速度快且无需CPU参与,节省资源。
使用RDMA的优势包括低延迟、高吞吐量和降低CPU负载。目前支持RDMA的网络协议主要有InfiniBand、iWARP(RDMA over TCP/IP)和RoCE(RDMA over Converged Ethernet)。RDMA通过OpenFabric Alliance提供的Verbs API和OFED协议栈支持多种传输层协议。RDMA应用与RNIC之间的传输接口层称为Verbs或RDMA API。在实际应用中,SEND/RECEIVE多用于连接控制类报文,而数据报文通过READ/WRITE完成。
RDMA的关键概念包括内存注册(Memory Registration)、队列(Queues)和Send/Recv操作。内存注册创建指向操作内存区域的本地和远程键。RDMA支持三种队列:发送队列、接收队列和完成队列,成对创建为Queue Pairs。RDMA操作异步进行,SEND/RECEIVE为双边操作,READ/WRITE为单边操作。RDMA的双边操作类似于传统网络中的底层buffer pool,实现零拷贝和内核旁路,适用于传输短控制消息。READ和WRITE操作则为单边操作,无需远程应用感知,适用于批量数据传输。
使用RDMA首先建立至应用程序内存的数据路径,通过RDMA专用的verbs接口建立路径,建立后即可直接访问用户空间缓冲。RDMA工作过程包括双边操作和单边操作流程,双边操作适用于传输短控制消息,单边操作适用于批量数据传输。RDMA技术提供低延迟、高吞吐量和CPU负载降低的优势,适用于高性能计算和大数据处理场景。