【以太网RDMA网卡(DPU)技术--背景】

以太网RDMA网卡(DPU)技术--背景

  • 1 背景
    • 1.1 RDMA通信原语
    • 1.2 RDMA_write demo

【博客首发于微信公众号《漫谈芯片与编程》,欢迎专注一下,多谢大家】

RDMA(Remote Direct Memory Access)技术主要采用zero copy、bypass kernel && cpu offload思想,来高带宽、低延迟地读写远程主机内存数据;
现在以太网的传输速率已经突破400Gbps,甚至向着800Gbps和1.6Tbps发展;但CPU的处理能力未和网络速度提升一样快;同时使用传统TCP/IP软件协议栈和搬运数据会消耗CPU算力;另一方面,现在数据中心数据密集型和内存密集型应用程序对高带宽和低延迟的高要求;
RDMA技术的三种主流实现方式:IB,RoCE和iWARP;

  • IB:IB虽然可以提供最佳性能,但自定义了从链路层到传输层的整套规范,需要专用网卡和交换机支持,不兼容以太网且价格昂贵;
  • RoCE: 对IB进行了兼容以太网的扩展,其中第1个版本RoCEv1将IB的链路层替换为以太网协议;RoCEv2(routable RoCE)在RoCEv1的基础上进一步将网络层替换为UDP/IP
    协议,允许使用标准以太网交换机进行跨网路由,RoCEv2的部署只需端系统专用网卡支持.
  • iWARP:同样兼容以太网,但需将整个TCP/IP(transmission control protocol/Internet protocol)协议栈卸载到硬件,存在成本、实现复杂度、性能方面限制.

综上: RoCEv2由于兼容以太网、相对较低的复杂度以及极具竞争力的价格,已经是数据中心网络中部署最广泛的RDMA技术;
工业界:Intel、NVIDIA Mellanox,Marvell,Broadcom,Chelsio国际巨头已经有成熟以太网RDMA网卡;国内华为Hisilicon,字节跳动、阿里巴巴等也有成熟RDMA网卡产品;

1 背景

RDMA允许本端用户态应用程序快速读写远端内存,避免了用户态和内核态切换、数据拷贝、软件网络协议栈处理的开销;
正式通信之前:RDMA本端应用程序需要首先申请注册内存区域(memory region,MR)用于存放收发数据,并与通信远端进行建链协商,提前获取远端主机信息和内存访
问权限等,该过程需要双端CPU参与.RoCEv2同时支持基于CM接口和Socket接口2种建链方式,即CPU参与通信;

1.1 RDMA通信原语

RDMA通过Verbs编程接口,为上层应用提供2类通信原语:分别为双边和单边通信原语;
双边通信原语:SEND/RECV配合使用,需要远端CPU在本端SEND发送消息前,提前下发RECV指定接收地址;
单边通信原语:READ/WRITE/ATOMIC则不涉及远端CPU直接读/写/原子性读-修改-写远端内存。
此外,SEND/WRITE还可以携带额外的4B立即数据(使用SEND/WRITE_with_imm),读数据不直接写入内存,而是作为状态信息返回给上层应用(需要远端CPU).相比双边原语,单边原
语可实现更低延迟和更高带宽,因此双边原语常用于控制、状态信息传递及需要显示通信的场景,单边原语READ/WRITE常用于大数据块远程搬移。ATMOIC操作则可用于并发控制和同步,以及帮助实现分布式锁等分布式事务处理所需机制;
在建链协商完成后,应用程序通过RDMA通信原语以工作请求(WR)形式下发post远端访问请求。

1.2 RDMA_write demo

对于应用程序下发的WR,由用户态驱动将其转化为工作队列元素(work queue element,WQE)并放入队列对(queue pair,QP)中(图2①). QP是RDMA双端通信
的基本单位,由发送队列(send queue,SQ)和接收队列(receive queue,RQ)组成,由SQ接收应用程序下发的SEND,READ,WRITE等请求,由RQ接收应用程序下发的RECV(对应SEND请求)。
【以太网RDMA网卡(DPU)技术--背景】_第1张图片

对于RDMA_WRITE操作,由网卡在获取RDMA传输请求(图2②)后取出本端内存数据(图2③)并执行远端内存写入。
RDMA传输方式:QP可以被配置为可靠连接RC,不可靠连接UC、不可靠数据报UD等传输方式。其中RC和UC传输方式需要在通信双方之间建立1对1的QP连接,且RC传输方式还需要网卡负责报文的可靠传输,UD传输方式不保证可靠性但可支持1对1或 1对多UD QP之间的通信等。不同传输方式下支持的通信原语和消息大小等。
【以太网RDMA网卡(DPU)技术--背景】_第2张图片

通信原语:1.send(send_with_imm)/RECV;2.READ; 3.WRITE(WRITE_with_imm); 4.ATOMIC;
在数据传输完成后,网卡生成完成队列元素(completion queue element,CQE)并放入与QP关联的完成队列(completion queue,CQ)中 ;最终应用程序由网卡上送(poll)的工作完成(work completion,WC)获知RDMA传输完成。

【ref】
1.以太网RDMA网卡综述

你可能感兴趣的:(IC每日一题,IC,RDMA,DPU)