RDMA-00-名词解释
概述
- Mellanox: 迈洛思是基于InfiniBand和以太网技术的计算机网络产品供应商,已经被Nvidia收购
- RDMA: Remote Direct Memory Access也叫远程直接内存访问,是一种绕过远程主机操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用
- InfiniBand: 一种高性能、低延迟的互连技术,它专门用于连接计算机和存储设备,以提高计算机集群和数据中心之间的通信性能。它使用专用的物理介质和协议,支持点对点和多点连接,同时支持RDMA(远程直接内存访问)和消息传递等通信方式
- RoCE: RDMA over Converged Ethernet,是一种网络协议,允许通过以太网网络进行远程直接内存访问(RDMA),可以在不需要特殊硬件支持的情况下,实现低延迟、高吞吐量的数据传输
- iWARP: 互联网广域RDMA协议,是一种计算机网络协议,实施远程直接内存访问(RDMA),以通过Internet协议(IP)网络进行高效数据传输
- HCA: The IB Host Channel Adapter,一般是指RDMA网卡
- SRIOV: Single Root Input/Output Virtualization允许单个物理网络接口控制器(NIC)出现为多个独立的虚拟NIC,每个虚拟NIC都具有自己的虚拟资源集,例如虚拟MAC地址、虚拟VLAN标签和虚拟队列
- Multus CNI: 为pod提供了多网络的支持
传输速率对比
RDMA 设备的传输速率主要有以下几种类型:
- FDR(Fourteen Data Rate): 传输速率为56Gbps,支持InfiniBand和Omni-Path等协议
- EDR(Enhanced Data Rate): 传输速率为100Gbps,支持InfiniBand 和 Omni-Path 等协议
- HDR(High Data Rate): 传输速率为200Gbps,支持InfiniBand和Omni-Path等协议
- NDR(Next Data Rate): 传输速率为400Gbps,支持InfiniBand和Omni-Path等协议
以太网卡的传输速率主要有以下几种类型:
- 10Mbps: 传输速率为10兆位每秒,属于最初的以太网标准。现在已经很少使用
- 100Mbps: 传输速率为100兆位每秒,也称为快速以太网,已经成为了标准的以太网速度
- 1Gbps: 传输速率为1千兆位每秒,也称为千兆以太网,是目前最常用的以太网速度
- 10Gbps: 传输速率为10千兆位每秒,也称为10千兆以太网,适用于高速数据传输的场景,如大规模数据中心
- 25Gbps/40Gbps/50Gbps/100Gbps: 这些都是高速以太网标准,适用于超高速数据传输的场景,如大型互联网企业、云计算、高性能计算等
需要注意的是,RDMA 设备的传输速率不仅取决于硬件设备本身,还受到操作系统、驱动程序、网络拓扑结构等多方面因素的影响。因此,在实际使用中,需要根据具体情况综合考虑并进行优化配置,以达到最佳性能。
Mellanox RDMA设备
NVIDIA Mellanox ConnectX-5 Adapters
NVIDIA Mellanox SB7780/7880 InfiniBand Router Switch Series
Intel RDMA设备
Intel x722-da2 Ethernet Network Adapter
Intel True Scale Fabric Edge 12200-18 40G 1U 18-Port Switch Network Infiniband
RDMA
RDMA(Remote Direct Memory Access)和 Socket 都是网络传输技术,但它们有几个重要的区别:
- 数据传输方式不同: Socket是一种通过传统网络协议栈传输数据的方法,而RDMA是一种通过直接访问内存中的数据来传输数据的方法
- 传输效率不同: 由于RDMA可以直接访问内存中的数据,从而避免了多次数据拷贝和数据转换,因此在传输效率方面要优于Socket
- CPU开销不同: 由于RDMA可以避免多次数据拷贝和数据转换,因此可以减轻CPU的负载,从而提高系统的可扩展性和吞吐量
- 应用场景不同: RDMA适用于需要高性能、低延迟和高吞吐量的应用场景,例如高性能计算、大数据和云计算等领域;而Socket更适用于一般的网络应用,例如Web服务器、邮件服务器等
Zero Copy/Kernel Bypass/No CPU
RDMA Server/Client
RoCE
一个典型的疑问,如何服务端是 RDMA 网卡,但是客户端只有以太网卡,还能使用到 RDMA 的好处吗。
- 数据包格式: RoCEv2使用了与InfiniBand相同的数据包格式,即包含了一个数据头(包括了发送方和接收方的地址信息、数据长度、服务类型等信息)和一个数据体
- 数据传输方式: RoCEv2将RDMA操作的传输方式映射到了以太网协议栈上。具体来说,RoCEv2采用了RDMA连接的三元组模型(即QP,Queue Pair),将QP映射到了Ethernet上的VLAN和UDP端口上
- 数据包传输: RoCEv2采用了UDP/IP协议栈作为底层传输层,使用标准的以太网协议进行数据包传输。在传输过程中,RoCEv2将RDMA数据包封装在UDP数据包中,然后再将UDP数据包封装在IP数据包中,最终通过以太网进行传输
- 数据处理: 在接收方,RoCEv2使用与InfiniBand相同的数据处理方式,即将接收到的数据包直接传输到用户内存中,而不需要经过内核的复制和处理
需要注意的是,RoCEv2 需要使用数据中心网路(DCB)和 PFC(Priority Flow Control)等协议来保证传输的 QoS(Quality of Service)和可靠性。在实际使用中,为了实现最佳的性能和效果,还需要针对具体的应用场景和网络环境进行调整和优化。
iWARP
iWARP 和 RoCEv2 都是用于以太网上运行 RDMA 的协议,它们之间的主要区别如下:
- 底层网络技术: iWARP使用TCP/IP协议栈来进行RDMA操作,而RoCEv2使用UDP/IP协议栈。iWARP需要使用特殊的网卡来处理RDMA操作,而RoCEv2可以在标准的以太网卡上运行
- 延迟和吞吐量: iWARP的延迟通常比RoCEv2更高,但在高负载情况下,iWARP的吞吐量可能更高。RoCEv2具有更低的延迟,但在高负载情况下可能会出现吞吐量瓶颈
- 协议开销: iWARP协议比RoCEv2更为复杂,因此在处理RDMA操作时需要更多的CPU和内存资源。RoCEv2协议更加简单,因此在处理RDMA操作时需要的CPU和内存资源更少
- 络兼容性: 由于iWARP使用TCP/IP协议栈,因此它可以很好地与现有的网络基础设施集成。RoCEv2使用UDP/IP协议栈,需要对网络进行一些修改以支持RDMA操作。
其他
价格
Intel X540 AT2双口万兆
Intel X710BM2-F2双口万兆
IB交换机
技术文档
Mellanox 因为已经被 Nvidia 收购了,所以很多文档都从原来的站点迁移到 Nvidia 的官网,但是 Mellanox 原来的站点还有效,因此有些技术文章,或者部分的问答社区中的内容会同时存在在 Mellanox 和 Nvidia 的官网,如果查看的产品比较新的话,那么一般在 Nvidia 的官网上是能找到的,如果比较旧的话就不一定了。
另外就是从 Nvidia 检索到的 Mellanox 相关的文章内的一些其他链接不一定会正常跳转到,如果无法跳转,可以直接到 Mellanox 的社区里直接搜索。
常用工具
|
|
工具实测
在公司的 RDMA 测试机器上进行一些命令的操作,可以发现是异构网卡的情况,同时有 Intel 和 Mellanox 的 IB 设备。
|
|
qperf测试RDMA网络
|
|
公有云
阿里云/腾讯云有提供 eRDMA 的机型。
|
|
参考资料
- InfiniBand和RDMA网络
- 【RDMA】InfiniBand IB常用命令|历史命令记录
- 启用通过RDMA(NFSoRDMA)的NFS
- 压测工具-qpefr测试带宽和延时
- 阿里云eRDMA简要解读,用云计算推动RDMA通用化和平民化
- 性能透明提升50%,详解SMC+ERDMA云上超大规模高性能网络协议栈
- 系列解读SMC-R: 透明无感提升云上TCP应用网络性能(一)
- rdma镜像
- 性能对比
- Docker使用OpenvSwitch网桥
- 使用OpenvSwitch实现跨主机连接Docker容器
- Docker+ovs,原来如此简单
- 技术干货|FreeFlow:基于软件的虚拟RDMA容器云网络
- K8s使用RDMA进行高速通信
- 在Kubernetes上使用RDMA
- Kubernetes与HPC: (1)RDMA网络
- 从零开始入门 K8s: GPU 管理和 Device Plugin 工作机制
- Kubernetes学习(k8s基于InfiniBand实现HPC高性能容器网络组网方案实践二)
- Kubernetes学习(k8s基于InfiniBand实现HPC高性能容器网络组网方案实践一)
- NVIDIA Mellanox 网卡安装使用手册(中文简易版)
- 配置InfiniBand和RDMA网络
- How-to: Deploy RDMA accelerated Docker container over InfiniBand fabric.
- Passing through RDMA network devices to docker containers
- Single Root IO Virtualization - SR-IOV
- NVIDIA Firmware Tools (MFT)
- RDMA over Converged Ethernet (RoCE)
- RDMA Bonding
- CentOS系统Bonding+VLAN+Bridge配置
- NVMe over RDMA的安装配置
- 宿主机监控
- K8S-SRIOV及multus CNI安装测试
- Docker RoCE MACVLAN Networking with ConnectX4/ConnectX5
- linux 查看网卡型号(grep -A 1 用法)
- Mellanox (NVIDIA) 网卡型号速查表
- 如何使用 KVM(以太网)为 CONNECTX-4/CONNECTX-5/CONNECTX-6 配置 SR-IOV
- ConnectX®-4 Lx EN Card
- SR-IOV配置方法
- ConnectX-4 Lx
- 什么是 InfiniBand?InfiniBand 交换机与其他交换机有啥区别?
- Mellanox网卡驱动安装指南 Mellanox OFED
- Infiniband(Mellanox)+CentOS7的安装
- CentOS配置双网卡(Mellanox和传统以太网卡)
- Installing the NVIDIA Mellanox InfiniBand Drivers
- Mellanox Repo - 4.7 Ethernet Drivers for CentOS 7
- linux下82599网卡 iov,CentOS7开启网卡直通模式(SR-IOV)
- CentOS7使用SR-IOV创建KVM虚拟机方法
- NIC使用sr-iov
- 创建vf报错,问题求助
- SR-IOV网卡虚拟化使用教程
- 大规模RDMA技术实践
- 如何使用tcpdump工具(ConnectX-4)dump RDMA流量