RDMA 原理浅析:一台机器怎么直接读写另一台机器的内存

举报
黄生 发表于 2026/09/23 20:30:45 2026/09/23
【摘要】 Remote Direct Memory Access (R-DMA)咋一看,感觉好神奇呀,其实把它讲清楚,你会看到这里面没有魔法,只有几个"老朋友"被重新组合了。 1. 传统网络里CPU做什么?"传统网络"里 CPU 做的是很啰嗦的事:系统调用、内核态/用户态切换、校验和、分段、重组、把数据从用户缓冲拷到内核缓冲再拷到网卡……同时,“设备自己读写内存”(DMA)是个 1960 年代就有的老...

Remote Direct Memory Access (R-DMA)咋一看,感觉好神奇呀,其实把它讲清楚,你会看到这里面没有魔法,只有几个"老朋友"被重新组合了。

1. 传统网络里CPU做什么?

"传统网络"里 CPU 做的是很啰嗦的事:系统调用、内核态/用户态切换、校验和、分段、重组、把数据从用户缓冲拷到内核缓冲再拷到网卡……同时,“设备自己读写内存”(DMA)是个 1960 年代就有的老技术:

你点打印,CPU 只是告诉打印机控制器"数据在内存地址 X,去取",然后 CPU 就去干别的了,打印机自己用 DMA 把数据搬过去。读磁盘也一样。

所以"设备直接读写内存"一点都不新鲜。 RDMA 新鲜的是后面两件事。


2. 新鲜点之一:把"网络协议栈"装进了网卡

传统 TCP/IP 协议栈是内核软件。RDMA 网卡(叫 RNIC 或 HCA)里有一个专门的处理单元,把分包、排序、重传、流控都做在网卡硬件/固件里。其实,这个也是现代网卡的发展趋势吧,之前由CPU处理的某些功能可以卸载到网卡上来处理。整个数据路径上,操作系统内核一次都不出现。这就是"Kernel Bypass"的字面意思。


3. 新鲜点之二:把"谁能碰你内存"的检查,从操作系统挪进了网卡硬件

传统的安全是操作系统管:别人要读你的内存,得经过内核权限检查。RDMA 换了一种方式,你可以想象成锁和钥匙:

  • 你必须先把一块内存"注册"(登记)给网卡,网卡把这部分内存钉住(不许操作系统换页),算好物理地址;
  • 注册时你会得到一把"钥匙"——R_key
  • 你把这块内存的地址和 R_key 通过带外通道(普通 TCP 或 MPI)告诉对端;
  • 对端想写你,必须拿出地址 + 钥匙,你的网卡硬件校验钥匙,对不上就拒绝。

所以不是"谁都能写你的内存"——只有你发过钥匙的人能写,而且只能写你登记过的那一块区域,其他内存碰都碰不到。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。