【以太网RDMA网卡功能分析和网卡架构】

2 以太网RDMA网卡功能分析和网卡架构

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

标准以太网卡只具备物理层串并转换、数据链路层以太网帧头封装和解析、DMA等功能,无法支持RDMA的通信原语和传输方式等,因此需要专用的以太网RDMA网卡在兼容标准以太网卡功能的基础上增加对RDMA功能的支持;
对于RDMA通信原语,如应用程序下发的WRITE请求,网卡需要DMA从用户空间中取出要写入远端的数据并在硬件中完成报文封装,以实现零拷贝、内核旁路和CPU卸载的通信特性. 由于用户态应用程序使用虚拟地址,网卡使用物理地址,因此需要网卡进行虚实地址转换(根据由内核态提前配置好的内存转换表(memory translation table,MTT)等信息)以实现直接访问主机内存. 此外,对于RC传输方式,需要由网卡通过确认应答和重传等机制保证传输的可靠性。

在工业界或者学术界会对往网卡会描述其具体支持功能;具体的Vendor来具体决定实现微体系结构级别的实现细节,不同的网卡架构会由于面向的场景、支持的功能和针对性优化等而具有差异,但由于IBTA标准已经对RDMA分层架构、处理流程等进行了详细的定义,因此RDMA网卡的基本架构是相似的;

2.1 处理RDMA包

以处理rdam_write request包为例:
对于本端发送WRITE请求报文,网卡通过Doorbell机制(即驱动程序通过网卡WQE已经送入SQ,通常是通过更新SQ的写入指针到网卡寄存器来实现)获取RDMA的WQE,通过解析WQE获取有效载荷描述符信息并发起DMA操作获取有效payload,之后进行RETH,BTH,UDP,IP报文封装以及ICRC填充,并通过MAC部件和PHY部件发送至网络。之后若网卡收到远端ACK,则构造CQE上送CQ告知应用程序传输完成,否则进行报文重传。
对于接收的远端对于WRITE请求报文,则依次进行ICRC检验,各层报文头解析,并根据可靠传输机制回答ACK或NAK;若WRITE请求报文按序接收并且校验无误,则根据解析报文头获取的DMA长度等信息发起DMA操作并上传有效载荷;
在这里插入图片描述

虚实地址转换:在正式通信之前注册MR时会在内核态将虚实地址映射关系记录在MTT中,当网卡进行内存访问时,由地址转换部件根据MTT表将应用程序下发的虚拟地址转换为物理地址后通过DMA部件获取主存数据。

DMA:在网卡上通常不会只有1个模块需要通过虚实地址转换和DMA部件与主机内存交互:如获取传输请求模块需从主存获取相应的SQ WQE,获取和上送有效载荷模块需存取主存数据。如发送和接收WRITE请求时等;,通过将所有DMA操作请求集中汇聚到DMA部件中,由DMA调度仲裁模块对DMA请求进行有效检查、调度仲裁和缓冲后由DMA引擎执行DMA操作。

可靠传输:以太网RDMA网卡在RC模式下需要支持可靠传输,即需要保证数据的完整性、按序接收2方面;以太网RDMA网卡提供硬件卸载的可靠传输机制,即图3中ICRC校验和填充模块(数据完整性保证)、应答和重传模块(数据按序接收保证). ICRC校验通常在发送报文时进行ICRC计算和封装;在接收报文时重新计算和比对ICRC值,以检测报文在传输过程中是否发生了错误或被篡改.

应答模块(保证可靠传输):响应端应答模块会根据BTH报文头中的PSN号和与网卡缓存中的ePSN是否匹配判断报文是否按序接收,并对RETH报文头中的虚拟地址VA、DMA lengh和Key进行校验。若报文按序接收且校验无误,则回送ACK,否则丢弃数据包并回送NAK(或静默丢弃);响应端应对收到的每个请求包进行ACK或NAK确认.

重传模块:响应端通常会进行确认合并,为避免其无限期合并确认,请求端可以使用BTH报头中的AckReq位强制要求响应端回送确认(如对于每个请求WQE的唯一或最后1个数据包应设置该位). 相应的,请求端在收到NAK或超时未收到响应时触发重传,重传机制包括go-back-0,go-back-N以及选择重传.重传机制可以单独划分模块或嵌入在报文收发处理过程中实现.

ICRC校验和应答重传保证最基本的可靠传输,更进一步先进网卡普遍实现拥塞控制和流量控制以尽可能避免丢包重传;

网卡SRAM缓存:网卡内部会大量使用SRAM,有时候为了减少latency,会再使用Cache;网卡缓存SRAM信息主要包括数据和元数据信息.数据缓存主要是因为传输带宽和网卡处理速率之间的性能差距;元数据是支持RDMA传输所需的数据结构信息,通常会包括直接访问主机内存所需的MTT,MPT,QPC,WQE等;MTT用于虚实地址转换,MPT用于检查
地址访问权限. QPC则为每个QP维护DMA状态和连接状态等连接上下文信息,DMA状态信息包括DMA地址、SQ和RQ读写指针等,连接状态信息包括ePSN,MSN(message sequence number)、重传定时器时间间隔、拥塞控制窗口或速率等. WQE包括从SQ预取的发送WQE和从RQ预取的接收WQE;

[ref]
1.以太网RDMA网卡技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值