高性能网络通信架构 RDMA 的设计与实现
RDMA 技术是一种远程直接内存访问技术,旨在解决传统以太网方案中的三个关键问题:系统调用时间消耗、数据复制增加传输延时以及CPU负担。通过在数据传输过程中避免系统调用,RDMA实现零拷贝,使得数据在用户空间和内核空间之间传输更为高效。此外,将数据包封装和解析工作移交给网卡硬件,显著减轻了CPU的负载,从而优化了整体性能。
RDMA技术主要包含三种协议:Infiniband(IB)、RDMA over Converged Ethernet(RoCE)和Internet Wide Area RDMA Protocol(iWARP)。这三种协议均遵循RDMA标准,具有相同的用户接口(Verbs),但各自在不同层次上有所差异。
RDMA的软件架构分为两部分:rdma-core运行在Linux系统的用户态,内核RDMA子系统运行在内核态。这种架构适用于所有类型的RDMA网卡,不论它们执行哪种RDMA协议。
在RDMA技术中,WQE(Work Queue Element)和WQ(Work Queue)的概念类似于以太网方案中的收发队列描述符,用于管理软件与硬件之间的任务。QP(Query Pair)则由发送队列(SQ)和接收队列(RQ)组成,用于组织发送和接收任务。CQ(Completion Queue)提供了硬件任务完成的反馈,与WQ相反,它是硬件完成任务后返回给软件的“完成报告”。
在RDMA操作中,WR(Work Request)和WQ(Work Queue)分别用于发送和接收操作,而CQ(Completion Queue)用于记录操作完成状态。RDMA WRITE操作是一种单端操作,应用程序通过虚拟地址直接对远端内存进行读写,而实际的地址转换由RDMA网卡完成。
RDMA方案设计的核心思路包括:将初始化和配置等低频操作带入内核态执行,数据传输等高频操作旁路内核,以及使用独立的QP和CQ资源支持多线程并发,以实现高效的数据传输。
作为实例,浪潮iRDMA方案是基于Linux内核IB驱动架构和rdma-core开源协议栈开发的RDMA网络加速平台。通过与Mellanox ConnectX-4 Lx 10G网卡的性能对比测试,可以直观地看到两者在带宽方面的表现差异。
总之,RDMA技术通过优化数据传输过程中的关键环节,显著提升了网络通信的性能和效率,是高性能网络架构中的重要组成部分。
多重随机标签