tag 标签: RDMA

相关博文
  • 2025-6-24 23:26
    54 次阅读|
    0 个评论
    RoCE v2协议的队列在创建时就已确定连接类型,共有两种工作模式:主要分为两种工作模式:有连接模式和无连接模式。在有连接模式下,支持可靠连接(RC)和不可靠连接(UC)两种传输类型;而无连接模式则仅支持不可靠数据包(UD)传输类型。两种工作模式的传输方式对比如图1所示。 图1 有连接模式与无连接模式传输方式对比 在有连接传输中,本地主机中的每个队列对分别与一个远程主机中的一个队列对相绑定,只有绑定的 队列对之间可以进行通信 ,队列对无法与任何一个非绑定的队列对进行通信。而在无连接传输中,队列对之间没有绑定关系,每个队列对可以与任意数量的队列对之间进行通信。 有连接传输中的可靠传输(RC)是通过建立连接 来实现的,在该过程中,本地主机与远程主机之间交换双方缓冲区信息、最大传输单元、重传计数、超时时间等信息。RoCE v2协议有两种建立连接的方式,分别为基于CM API的QP间建链和基于Socket API的QP间建链。其中CM API是一种通信管理协议,其建立于InfiniBand/RoCE协议基础之上,在基于CM API的QP间建链过程中,本地主机与远程主机之间通过不可靠报文(UD)进行QP信息交换;Socket是基于TCP/IP协议的一个中间层,其建链过程需要两个网络节点先建立TCP/IP连接,然后通过这条连接来进行QP信息交换。 相关视频感兴趣者,请搜B站用户名: 专注与守望 或链接: https://space.bilibili.com/585132944/upload/video
  • 热度 5
    2025-6-18 11:49
    2439 次阅读|
    0 个评论
    在RoCE v2协议中,RoCE v2队列是数据传输的最底层控制机制,其由工作队列(WQ)和完成队列(CQ)共同组成。其中工作队列采用双向通道设计,包含用于存储即将发送数据的发送队列(SQ)和用于存储已接收到的数据的接收队列(RQ),二者共同组成了端到端的数据传输管道(Pipeline)每一个SQ与RQ绑定起来称为队列对(QP),每个队列对中包含有若干个工作队列元素(WQE)和一些其他元素如本地接收队列指针、本地发送队列指针、远程接收队列指针、远程发送队列指针等。同样的,每一个CQ中也存在着若干完成队列元素(CQE)。这两种元素共同作用,管理数据传输过程并确保数据传输的顺利进行。 前面提到的五种操作中,只有RECEIVE操作会被添加到接收队列。SEND/RECEIVE操作的完整流程,如图1所示,首先由应用程序创建一个工作请求(WR),并将其提交到相应的工作队列。接着,工作队列会随机生成一个工作队列元素(WQE),该元素包括数据发送缓冲区的起始地址、数据长度、操作类型等相关信息,用于后续的传输操作。在该WQE被网卡操作结束后,网卡将生成一个CQE并放入与工作队列(SQ)对应的完成队列中。对于接收端:接收端网卡同样生成一个WR,其中包含数据接收相关参数,在完整接收数据包之后,将数据放入指定内存位置,并生成一个CQE放入与工作队列(RQ)对应的完成队列中。 图1 SEND/RECEIVE操作流程图 而对于READ、WRITE、ATOMIC这三种单边操作,接收端并不感知这一数据传输过程,故而只消耗发送端QP中的WR,并不消耗接收端即远程主机QP中的WR(有立即数的RDMA Write(RDMA Write with immediate)操作不在此范围内)。 RoCE v2作为RoCE v2协议通信的重要机制,通常有五种队列工作状态,分别为:重置(RESET)状态、初始化(INIT)状态、接受就绪(Ready to Receive,RTR)状态、发送就绪(Ready to Send,RTS)状态及错误(ERROR)状态,其不同状态间的切换由RoCE v2队列状态机控制,RoCE v2队列状态机的状态转移图如图2所示 图2 RoCE v2队列状态转移图 RESET状态:当队列处于RESET状态时,表示该QP已经创建但尚未完成初始化,在此状态下,QP既不能接收也不能发送任何数据请求,待初始化完成后会转至INIT状态。 INIT状态:队列处于INIT状态时,表示该QP已完成初始化,能够接收和发送请求。然而,在此状态下,队列只能接收Connect请求或发送Accept请求。 RTR状态:队列对处于RTR状态标识该队列对已经准备好接收Send请求(即进行Receive操作)和Read请求。 RTS状态:队列对处于RTS状态标识该队列对已准备好接收及发送任何RDMA请求,包括READ、WRITE、SEND、RECEIVE等。 ERROR状态:队列对处于ERROE状态标识该队列对已经发生错误,不再被使用,也不再接收或发送任何请求。该状态的产生原因可能为发送队列用尽、接收队列用尽、缓冲区不可读写等。 相关视频感兴趣者,请搜B站用户名: 专注与守望 或链接: https://space.bilibili.com/585132944/upload/video
  • 2025-6-18 00:00
    1 次阅读|
    0 个评论
    超越梦想:RDMA高性能IP # RDMA IP开发的目的 本IP开发的目的是研究一款适合于FPGA端的通用性强,性能优越的RDMA IP开发。它支持FPGA之间,FPGA与PC之间高速通信,只需一根光纤(当然,PC端需要转接卡,将光纤转入PC端,例如100G的CX455A-ECAT 100Gbe 网卡 就可以)。 ## RDMA架构 下面给出VCU118上验证通过得架构,该架构如下: 图1 RDMA架构图 对IP的简单控制由Microblaze完成,DDR负责读写等数据缓存。该结构也是便于后续NVMe oF 开发。 ## 性能测试 在xilinx开发平台测试,网卡支持100G,选用的是CX455A-ECAT 100Gbe。支持RDMA RoCE v2协议。 实测数据: SEND 71 Gbps READ 91 Gbps (PC端给FPGA发包,受PC性能限制多一点,需要较好一点的PC机或服务器) WRITE 96 Gbps R/W 延迟: 小于5 us (128字节) 感兴趣的请看视频: https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click 或者B站搜 用户名: 专注与守望, 或搜内容 RDMA IP。 目前也已在ZU47DR上验证通过,W/R同样超过90Gbps! 注意DDR位宽,需要保证它不是传输瓶颈。 一开始觉得 RDMA较难开发,资料比NVMe厚多了;可供参考的资料太少。但毕竟开发过NVMe host IP,积累一些经验,同时也是感受到相关的需求,就决定开发,幸不辱使命。后续会分享相关文档。
  • 热度 2
    2025-6-17 08:23
    705 次阅读|
    0 个评论
    RoCE v2原语 在RoCE v2协议中,应用程序并不直接与网卡接口相关联,开发者使用RDMA原语进行应用程序的开发。RDMA原语分为单边(one-side)语义和双边(two-side)语义,其中,WRITE、READ、ATOMIC为单边语义,SEND、RECEIVE为双边语义,且双边语义往往成对出现。 单边语义指:当本地主机调用单边语义进行操作时,远程主机的CPU完全不会感知这一过程,只有本机的CPU参与数据处理和数据传输流程 。READ、WRITE、ATOMIC操作为单边语义。我们常说的RDMA都是指RDMA单边操作,它提供了最高的吞吐量和最低的数据延迟,同时显著降低CPU负载。在进行READ和WRITE操作之前,需要进行队列创建、队列连接、信息交换等步骤,这些步骤将在之后一一说明。 (1)RDMA READ操作将远端主机内存中的数据读取到本地。具体流程为:本地主机将需要请求数据的地址、长度及对应的远程访问密钥发送给远程主机,远程主机比对密钥通过后,则将数据返回给本地主机。 (2)RDMA WRITE操作将本机内存中的数据写入远程主机。具体流程为:本机将携带写入地址、数据长度、远程访问密钥信息和数据的网络包发送至远程主机,远程主机确认后将数据写入远程主机内存中。 (3)ATOMIC操作即原子操作。简单地讲,该操作以64bit为单位,完全以原子方式读取、修改或写入该地址,同时保证在读取/写入之间,同一通道的其他队列对不会对该地址进行操作。该操作通常在同一子网内的不同节点间进行,用来实现分布式应用中各节点工作的同步。 双边语义指:数据在传输的过程中本地主机及远程主机的CPU都参与工作。SEND、RECEIVE操作为双边语义。其中发送方使用SEND操作,而接收方使用RECEIVE操作。在SEND/RECEIVE操作中,使用SEND操作的一方仅需要发送缓冲区(SEND BUFFER)信息和长度信息即可发送数据包,而不指定接收方具体的接收内存地址;而接收方提供接收缓冲区(RECEIVE BUFFER)及缓冲区长度信息。SEND操作与RECEIVE操作往往成对存在,由于需要双方CPU参与,数据吞吐量较低,但是可以保证数据在传输过程中不会丢失,故双边语义通常用来进行信息交换或错误处理等操作。 相关视频感兴趣者,请搜B站用户名: 专注与守望 或链接: https://space.bilibili.com/585132944/upload/video
  • 热度 2
    2025-6-17 08:21
    503 次阅读|
    0 个评论
    RDMA协议共有四种子协议,分别为InfiniBand、iWARP、RoCE v1和RoCE v2协议。这四种协议使用统一的RDMA API,但在具体的网络层级实现上有所不同,如图1所示,接下来将分别介绍这四种子协议。 图1 RDMA四种子协议网络层级关系图 InfiniBand:InfiniBand是一种专为RDMA设计的网络,其传输层、网络层及链路层均遵循IB协议规范,没有类似以太网的复杂协议交互计算,从硬件级别保证传输可靠,但成本较为高昂,需要使用专用的IB交换机和IB网卡才可以正常路由。 RoCE v1与RoCE v2:RoCE协议即RDMA over Ethernet,其在以太网上承载IB协议,与IB协议具有相同的传输层,仅在网络层和链路层与IB协议存在差异。RoCE协议有v1和v2版本,其中RoCE v1只能部署于二层网络,其报文结构是在原有IB协议报文基础上增加二层以太网报文头,通过ETH Type标识RoCE报文。而RoCE v2基于UDP/IP协议承载RDMA,可部署在三层网络环境下,在原有IB协议报文基础上增加UDP头、IP头和ETH头,通过UDP端口号4791标识RoCE v2报文。使用普通以太网交换机搭配IB网卡即可实现网络路由。 iWARP:iWARP协议是基于TCP/IP协议的RDMA网络,能够工作在任何TCP/IP协议的网络上层,同时将TCP/IP处理流程从CPU卸载到RDMA网卡处理。仅需要使用普通以太网交换机和iWARP网卡即可实现路由。但在大规模部署时,由于TCP/IP协议点对点连接的特性,将会占用大量的内存资源,对系统规格的要求更高 在对比这四种子协议时,将RoCE v1与RoCE v2协议放在一起讨论,RDMA的子协议的比较如表1所示。 表1 RDMA四种子协议的比较 在当今数据中心应用中,综合考虑到成本、性能、硬件需求等因素的前提下,RoCE v2协议正逐渐成为主流RDMA协议。 相关视频感兴趣者,请搜B站用户名: 专注与守望 或链接: https://space.bilibili.com/585132944/upload/video