论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
【以太网RDMA网卡功能分析和网卡架构】
【以太网RDMA网卡功能分析和网卡架构】
缠丝猫
金牌会员
|
2025-2-14 12:18:50
|
显示全部楼层
|
阅读模式
楼主
主题
886
|
帖子
886
|
积分
2658
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网卡技术
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
缠丝猫
金牌会员
这个人很懒什么都没写!
楼主热帖
【设置ssh免密不起作用?彻底搞懂密钥 ...
MySQL 8.0 新特性梳理汇总
【云原生】Docker 进阶 -- 构建自定义 ...
kubernetes之镜像拉取策略ImagePullSec ...
关于身体对内对外感受机制的整理 ...
java如何编写增强for循环呢? ...
基于C#+unity的2D跑酷闯关对战冒险游戏 ...
关于Servlet的补充知识
用100万的“小报告”扭转老闆的决定— ...
SAP各模块优缺点和发展简析
标签云
挺好的
服务器
快速回复
返回顶部
返回列表