【RDMA】学习笔记(一)

一.RDMA是什么

RDMA(Remote Direct Memory Access)远程直接内存访问

remote:数据通过网加粗样式络与原创机器间进行数据传输
Direct:没有内核的参与,有关发送传输的所有内容都卸载到网卡上
Memory:在用户空间虚拟内存与RNIC网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制
Access:send、receive、read、write、atomic操作

该技术使得用户程序能够绕过操作系统内核及CPU,直接与网络接口卡(NIC)交互,实现网络通信。这种方式不仅大幅提升了通信带宽,还显著降低了网络延迟,优化了整体性能。

二.知识补充和技术背景

1.带宽与时延 

网络性能的四大指标:带宽、时延、抖动、丢包 

1.1 带宽

在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位bps,表示每秒多少比特,常省略,如带宽100Mbps,常省略为100M

理解:带宽的大小决定能否通过更多频率的信号。带宽相当于表示道路的宽敞程度,任务是路上的车辆,越宽,能过的车越多,越不容易卡

1.2 时延

指报文从网络的一端到另一端所需要的的时间。网络时延包括处理时延、排队时延、发送时延、传播时延这四大部分。

1.3 抖动

最大延迟与最小延迟的时间差。抖动越小,网络越稳定。关于网络抖动产生的原因:如果网络发生拥塞后,排队时延会影响端到端的延迟,可能造成从路由器A到路由器B的延迟忽大忽小,造成网络的抖动。

1.4 丢包

 

指一个或多个数据包的数据无法通过网络到达目的地,接收端如果发现数据丢失,会根据队列序号向发送端发出请求,进行丢包重传。

2.传统网络通信

传统的 TCP/IP 网络通信,数据需要通过用户空间发送到远程机器的用户空间,在这个过程中需要经历若干次内存拷贝:

两台服务器上应用间传输数据的过程

  • 数据发送方需要将数据从用户空间 Buffer 复制到内核空间的 Socket Buffer
  • 数据发送方要在内核空间中添加数据包头,进行数据封装
  • 数据从内核空间的 Socket Buffer 复制到 NIC Buffer 进行网络传输
  • 数据接受方接收到从远程机器发送的数据包后,要将数据包从 NIC Buffer 中复制到内核空间的 Socket Buffer
  • 经过一系列的多层网络协议进行数据包的解析工作,解析后的数据从内核空间的 Socket Buffer 被复制到用户空间 Buffer
  • 这个时候再进行系统上下文切换,用户应用程序才被调用

Socket作为运输层软件抽象接口,供上层应用调用,屏蔽了复杂的TCP/IP协议族,对于上层应用来说协议的实现的细节无需再关注

以socekt建立TCP链接为例,从应用程序调用Socekt接口,将数据传入后,进程转换为内核态,数据层次拷贝,最后到达网卡设备发送出去。数据发送流向;应用程序->操作系统内核->网卡->网络->目的设备。接受数据过程逆向。

可以看到,整个过程有多次内存拷贝,需要CPU多次介入,处理时延大。

为了提高数据传输带宽,出现了许多种解决方案:如TOERDMA

这篇就先学到这里吧我累了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值