Mellanox驱动加载与RoCE & soft-RoCE(RDMA)

背景

处理器(cpu) 内存 I/o设备(外设)三者之间的关系
(1)没有DMA参与的访问方式:
在这里插入图片描述
假设I/O设备为一个普通网卡,为了从内存拿到需要发送的数据,然后组装数据包发送到物理链路上,网卡需要通过总线告知CPU自己的数据请求。然后CPU将会把内存缓冲区中的数据复制到自己内部的寄存器中,再复制到I/O设备的存储空间中。如果数据量比较大,那么很长一段时间内CPU都会忙于搬移数据,而无法投入到其他工作中去。
CPU的最主要工作是计算,而不是进行数据复制,这种工作属于白白浪费了它的计算能力。为了给CPU“减负”,让它投入到更有意义的工作中去,后来人们设计了DMA机制。
(2)有DMA参与的访问方式
在这里插入图片描述
可以看到总线上又挂了一个DMA控制器,它是专门用来读写内存的设备。有了它以后,当我们的网卡想要从内存中拷贝数据时,除了一些必要的控制命令外,整个数据复制过程都是由DMA控制器完成的。过程跟CPU复制是一样的,只不过这次是把内存中的数据通过总线复制到DMA控制器内部的寄存器中,再复制到I/O设备的存储空间中。CPU除了关注一下这个过程的开始和结束以外,其他时间可以去做其他事情。
DMA控制器一般是和I/O设备在一起的,也就是说一块网卡中既有负责数据收发的模块,也有DMA模块。

RDMA概念

RDMA( Remote Direct Memory Access )意为远程直接地址访问,通过RDMA,本端节点可以“直接”访问远端节点的内存。所谓直接,指的是可以像访问本地内存一样,绕过传统以太网复杂的TCP/IP网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的。

RoCE的协议层次

RoCE,它是三大RDMA协议之一。RoCE全称是RDMA over Converged Ethernet,即基于融合以太网的RDMA。用通俗的话讲,就是基于传统以太网的部分下层协议,在其基础上实现Infiniband的部分上层协议。
在这里插入图片描述将RoCE v2的一个报文展开:
在这里插入图片描述
首先是二层的以太网链路帧,然后是IP报文头和UDP报文头,最后是各层级协议的校验。而Infiniband传输层报文实际上是UDP层的负载,也就是深蓝色背景的部分。UDP报文头中有一个字段Destination Port Number(目的端口号),对于RoCE v2来说固定是4791,当对端网卡收到报文后,会根据该字段识别是普通的以太网数据包,还是RoCE数据包,或者是其他协议的数据包,然后再进行解析。深蓝色背景的IB传输层部分又分成了IB报头,实际的用户数据(Payload)以及校验部分。IB传输层实际上有很多种报头以及对应的格式,我们以后再介绍。

RoCE的优势

为什么我们有了Infiniband协议之后,还要设计RoCE协议呢?最主要的原因还是成本问题:由于Infiniband协议本身定义了一套全新的层次架构,从链路层到传输层,都无法与现有的以太网设备兼容。也就是说,如果某个数据中心因为性能瓶颈,想要把数据交换方式从以太网切换到Infiniband技术,那么需要购买全套的Infiniband设备,包括网卡、线缆、交换机和路由器等等。商用级设备由于对可靠性有比较高的要求,所以这一套下来是非常昂贵的。而RoCE协议的出现解决了这一问题,如果用户想要从以太网切换到RoCE,那么只需要购买支持RoCE的网卡就可以了,线缆、交换机和路由器(RoCE v1不支持以太网路由器)等网络设备都是兼容的——因为我们只是在以太网传输层基础上又定义了一套协议而已。所以RoCE相比于Infiniband,主要还是省钱,当然性能上相比Infiniband还是有一些损失,毕竟人家是全套重新设计的。至于iWARP,相比于RoCE协议栈更复杂,并且由于TCP的限制,只能支持可靠传输,即无法支持UD等传输类型。所以目前iWARP的发展并不如RoCE和Infiniband,一般指RoCEv2。

Soft-RoCE

虽然RoCE相比Infiniband具有兼容性优势,价格也便宜,但是实际应用的时候依然需要专用的网卡支持。有的读者可能会问,TCP/IP协议栈不是由软件实现的吗,只是在UDP层基础上加了层内容,为什么会对硬件有依赖?RoCE本身确实可以由软件实现,也就是本节即将介绍的Soft-RoCE,但是商用的时候,几乎不会有人用软件实现的RoCE。RDMA技术本身的一大特点就是“硬件卸载”,即把本来软件(CPU)做的事情放到硬件中实现以达到加速的目的。CPU主要是用来计算的,让它去处理协议封包和解析以及搬运数据,这是对计算资源的浪费。所以RoCE网卡会把TCP/IP协议栈放到硬件中实现以解放CPU,让它去做更重要的事。我们说回Soft-RoCE,它由IBM和Mellanox牵头的IBTA RoCE工作组实现。本身的设计初衷有几点:
(1)降低RoCE部署成本
Soft-RoCE可以使不具备RoCE能力的硬件和支持RoCE的硬件间进行基于IB语义的交流,这样可以免于替换网络中的一些非关键节点的旧型号网卡。
(2)相比TCP提升性能
虽然软件实现IB传输层带来了一定的开销,但是相比基于Socket-TCP/IP的传统通信方式,Soft-RoCE因为减少了系统调用(只在软件通知硬件下发了新SQ WQE时才会使用系统调用),发送端的零拷贝以及接收端的只需要单次拷贝等原因,仍然带来了性能上的提升。
(3)便于开发和测试RDMA程序
有了Soft-RoCE,我们基于Verbs API编写的程序,就可以不依赖于硬件执行起来,也可以很方便的跑在虚拟机里。

实现原理

Soft-RoCE就是把本来应该卸载到硬件的封包和解析工作,又拿到软件来做。其本身是基于Linux内核的TCP/IP协议栈实现的,网卡本身并不感知收发的数据包是RoCE报文,其驱动程序按照IB规范中的报文格式将用户数据封装成IB传输层报文,然后把报文整体当做数据填入Socket Buffer当中,由网卡进行下一步收发包处理。
下面这张图取自IBTA对于Soft-RoCE的介绍文章[1],左边是需要硬件的普通RoCE,右边是Soft-RoCE。可以看出普通RoCE是把协议栈卸载到RoCE NIC网卡实现的,而Soft-RoCE则是在软件协议栈中实现的。
在这里插入图片描述
针对虚拟机操作:
ubuntu-20.04操作系统:

sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop

确认当前内核是否支持RXE

cat /boot/config-$(uname -r) | grep RXE

当CONFIG_RDMA_RXE=m或者=y,则表示当前操作系统可以使用RXE
如果该选项值为n或者搜索不到RXE,那么很遗憾你可能需要重新编译内核。编译内核时需要使能以下几个选项:

CONFIG_INET
CONFIG_PCI
CONFIG_INFINIBAND
CONFIG_INFINIBAND_VIRT_DMA

安装用户态动态链接库
我们在“RDMA概述”一文中提到过,用户态库指的就是rdma-core。但是在Ubuntu等操作系统中它可能不是一个而是多个软件包组成的。我使用的Ubuntu 20.04 LTS版本使用默认的安装参数的情况下,已经装有这几个软件包。
如果版本跟我不一致的话,那么可以尝试安装一下以下几个软件包:

sudo apt-get install libibverbs1 ibverbs-utils librdmacm1 libibumad3 ibverbs-providers rdma-core

这几个软件包的作用如下:
在这里插入图片描述
如果读者想看一下软件包里都包括哪些内容,那么可以使用dpkg命令查看包内容,比如:

dpkg -L libibverbs1

安装完上述软件之后,可以执行ibv_devices看看有没有报错,这是个基于verbs接口编写的小程序,用来获取并打印出当前系统中的RDMA设备列表:

ibv_devices

iproute2
iproute2是用来替代net-tools软件包的,是一组开源的网络工具集合,比如用更强大ip命令替换了以前常用的ifconfig。我们需要其中的rdma工具来对RXE进行配置。一般的操作系统都已经包含了,安装也很简单:

sudo apt-get install iproute2

perftest
perftest是一个基于Verbs接口开发的开源RDMA性能测试工具,可以对支持RDMA技术的节点进行带宽和时延测试。相比于rdma-core自带的示例程序 ,功能更加强大,当然也更复杂。使用如下命令安装:

sudo apt-get install perftest
配置RXE网卡步骤:

(1)首先我们需要加载内核驱动,modprobe会自动加载依赖的其他驱动。

modprobe rdma_rxe

(2)然后进行用户态配置:

sudo rdma link add rxe_0 type rxe netdev ens33

其中rxe_0是你希望的RDMA的设备名,可任意取名。ens33为Soft-RoCE设备所绑定的网络设备名,也就是我们刚才ifconfig看到的网卡名,每个虚拟机可能都不一样。
接着我们用rdma工具查看是否添加成功:

rdma link

查看这个虚拟RDMA设备的信息:

ibv_devinfo -d rxe_0

注意:网上一些写的比较早的教程说用rxe_cfg配置Soft-RoCE,该工具已经在2020年1月末被rdma工具取代。

执行perftest测试
一端执行:

ib_send_bw -d rxe_0

另一端执行:

ib_send_bw -d rxe_0 <server_ip>

使用wireshark 可以看到RoCE报文了。

注意

Mellanox网卡可以当作RDMA网卡使用也可以当作使用,依据所加载的驱动不同而不同。
(1) 加载MLNX_OFED_LINUX-5.7-1.0.2.0-ubuntu20.04-x86_64.tgz驱动时,当作RDMA使用。
下载网站:驱动下载:https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
在这里插入图片描述
安装与卸载命令:

./mlnxofedinstall --force #--force可以加也可以不加,安装驱动命令
./uninstall.sh #卸载驱动

(2)加载mlnx-en-5.7-1.0.2.0-ubuntu20.04-x86_64.tgz驱动时,当作以太网卡使用。
下载网卡:驱动下载:https://network.nvidia.com/products/ethernet-drivers/linux/mlnx_en/
在这里插入图片描述
安装与卸载命令:

./install --force #force可加可不加,加载程序
./uninstall.sh  #卸载程序

以上的驱动模块会被加载到/lib/modules/5.15.0-43-generic/updates/dkms目录,卸载也是从这个目录删除的。

/lib/modules/5.15.0-43-generic/updates/dkms #查看目录驱动文件
/lib/modules/5.15.0-43-generic/build/Module.symvers #查看模块路径

参考文章网站: 【RDMA】15. RDMA之RoCE & Soft-RoCE

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mellanox迈络思MS2700-CS2F Ethernet交换机是一个高性能的交换机,使用时需要进行配置。 首先,需要设置管理接口的IP地址。通过串行控制台或SSH连接到交换机,输入命令行界面,指定一个IP地址和掩码。这个地址应该在您的管理网络范围内,以便您可以使用管理接口进行远程管理。 接下来,您需要配置物理接口。您需要向每个接口分配IP地址。这些接口可以用于访问交换机所连接的其他设备。您还可以配置基于端口的VLAN,这可以将特定数据流隔离到特定的VLAN中,从而加强网络安全性。 然后,您需要配置交换机的L2和L3转发行为。默认情况下,这些设置应该可以满足大多数情况。您还可以配置LACP组,以便在需要时对接口进行自动聚合。 最后,您需要设置交换机的QoS。这将有助于确保流量的优先级。您可以分配服务质量级别(QoS)标记,对数据流进行分类,并确保重要的数据流具有更高优先级。 通过以上的配置,您可以让Mellanox迈络思MS2700-CS2F Ethernet交换机符合您所需的网络需求,并应用到您的网络环境中。 ### 回答2: 迈络思(Mellanox)msn2700-cs2f以太网交换机是一款高性能、低延迟、可扩展的网路交换机,主要用于数据中心、云计算和企业内部网路等方面。以下是该交换机的简要配置。 该交换机支持多种协议和传输标准,包括以太网、InfiniBand、Fibre Channel over Ethernet(FCoE)等。在配置以太网方面,可以通过命令行界面或者Web界面进行配置。通过命令行界面,用户可以进行如下配置: 1. 设置IP地址和子网掩码,为交换机分配一个唯一的IP地址。 2. 配置端口,设置端口的速度、双工模式和VLAN,其中VLAN可以用于将交换机的端口划分成不同的虚拟网络。 3. 配置OSPF、BGP等路由协议,使交换机能够自动发现和路由数据包。 4. 配置基于MAC地址、IP地址、端口号等的访问控制列表,实现对网络访问的精细化控制。 5. 配置QoS(Quality of Service),实现对数据包的优先级和带宽的控制。 除了上述命令行界面的配置,该交换机还提供了通用的Web界面。通过Web界面,用户可以通过简单的鼠标操作进行交换机的配置和管理。Web界面还提供了用户友好的图形界面,从而使得对交换机的管理更加直观和易用。 综上所述,迈络思(Mellanox)msn2700-cs2f以太网交换机是一款功能强大的网路交换机,它提供了多种配置方式和管理界面,为用户提供了方便快捷的网络管理和扩展。 ### 回答3: 迈络思 MNS2700-CS2F 是一款高性能以太网交换机。配置该交换机需要了解以下几个方面: 1. 硬件配置:此交换机支持32个 QSFP28 端口,每个端口速率可达 100 Gb/s,具有较高的带宽和密度。此外,该交换机还配备了内置的 Intel 非统一内存架构(UMA)处理器,可实现低延迟和高吞吐量。 2. 软件配置:此交换机使用 Mellanox OS 操作系统,可以通过命令行界面(CLI)或网页界面进行配置。用户可以通过 CLI 配置 VLAN、QoS、ACL 和路由等功能。同时,该系统还提供了自动化配置和监控工具,例如 REST API、Python SDK 和 SNMPv3。 3. 网络拓扑:用户需要了解其网络拓扑,包括交换机的位置、其它设备之间的连接方式以及 VLAN 的配置。用户可将该交换机用于核心交换机层,用于数据中心各层之间的通信,也可以用于聚合层,在该层中连接其他交换机。 4. 安全性:在进行配置时,需要注意设置访问控制和身份验证。用户可创建用户和角色,并根据需要对用户进行访问控制。交换机还支持 SSH、SNMPv3 和 TACACS+ 等协议,可以加强网络的安全性。 总之,配置 Mellanox 迈络思 MNS2700-CS2F 以太网交换机需要用户了解硬件和软件方面的特点和功能,并对网络拓扑和安全性进行充分考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值