【DPU系列之】BlueField DPU的3种工作模式,相互特点以及如何开启和关闭?(ECPF、Zero Trust、NIC;mlxprivhost r p q;mlxconfig;冷重启)

本文详细介绍了BlueFieldDPU的三种工作模式:DPU模式(由ARM管理NIC)、零信任模式(增强安全性,仅允许ARM和BMC管理)和NIC模式(ARM不直接管理网卡)。文中提供了模式切换、查看和管理的方法,以及相关命令和注意事项。
摘要由CSDN通过智能技术生成

1. 要点

  • BlueField DPU 有3种工作模式:DPU 模式、零信任模式、NIC模式(网卡模式)。
  • DPU模式是指嵌入式 Arm 系统控制 NIC 资源和数据路径。整个DPU作为网卡+ARM系统整体对外服务。
  • 零信任模式是DPU模式的一个加强版,主要是基于安全考虑,提高安全等级,不允许从主机侧访问和管理DPU,只允许从DPU上的ARM系统以及BMC来管理。
  • NIC模式,就是ARM系统不直接管理DPU上的CX系列网卡,CX系列网卡作为一个独立的卡提供给HOST主机。

关键命令:
以下命令在DPU上执行:

mst start
mlxconfig -d /dev/mst/mt41686_pciconf0 -e q |grep -E "INTERNAL_CPU_MODEL|EXP_ROM_UEFI_ARM_ENABLE" #查询是否在dpu模式。
## DPU模式的配置信息:INTERNAL_CPU_MODEL= EMBBEDDED_CPU(1) and EXP_ROM_UEFI_ARM_ENABLE = True (1)

# zero truct模式
## 开启 (restrict)
sudo mlxprivhost -d /dev/mst/<device> r --disable_rshim --disable_tracer --disable_counter_rd --disable_port_owner
## 打开 (privilege)
sudo mlxprivhost -d /dev/mst/<device> p
## 查询
mlxprivhost -d /dev/mst/mt41686_pciconf0 q

# nic模式
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=1 # BF3启动DPU模式,BF2更加复杂参考官网

2. 三种模式

2.1 DPU模式(ECPF模式)

ECPF更多信息参考兄弟篇:【DPU系列之】DPU中的ECPF概念是什么?全称是什么?

  • 为什么既然有DPU模式称呼还需要定义一个ECPF概念?主要是为了避免引起歧义。“DPU处于DPU模式”,这种说法相比于DPU处于ECPF模式,后者更加准确。也就是ECPF是特指一种模式。而DPU这个名词却不能特指一种模式。
  • 本质是DPU上的CX系列网卡主要由ARM管理。或者说host上面无法直接挂在DPU上的网卡当做CX网卡使用。

在 DPU 模式下,NIC 资源和功能由嵌入式 Arm 子系统拥有和控制。与主机的所有网络通信都流经 Arm 内核上托管的虚拟交换机控制平面,然后才继续传输到主机。在此模式下工作时,DPU 是由数据中心和主机管理员管理的可信功能 — 加载网络驱动程序、重置接口、启动和关闭接口、更新固件以及更改 DPU 上的操作模式设备。

该种模式下网络功能仍然向主机公开,但其权限有限,主要包括:

  • 只有DPU上的驱动加载并完成网卡配置后,才能加载主机侧的驱动。
  • 所有ICM(接口配置内存)均由ECPF分配并驻留在DPU的内存中。
  • ECPF 控制和配置 NIC 嵌入式交换机,进出主机接口的流量始终落在 Arm 侧。
    效果图:
    在这里插入图片描述
  • 将流量传递到主机接口有两种方法:(这些方式都在DOCA框架中统一提供)
    • 使用representors将流量转发到主机(进出主机的每个数据包也将由嵌入式 Arm 端的网络接口处理)
    • 将规则推送到DPU中的eswtich,它允许并卸载此流量。
      下图是一个关于数据流动的详细图:(通过DOCA框架提供操作函数,然后HOST和DPU转发,使用representors代理。并且在host上的设备叫做doca_dev,在host看到的物理设备,在DPU上对应一个representor,并且在DPU的DOCA App中对应一个doca_dev_rep的结构,最终对应到实际的doca_dev,以上是doca软件抽象框架里面。最后doca_dev对应到实际的DPU物理口)这个图非常清晰的表示了处于DPU模式下,是如何向主机提供网络服务而且必须经过DPU的ARM的。另外一种模式就是纯NIC模式。就是经典的CX系列网卡直接加载驱动。
      在这里插入图片描述
      参考:https://docs.nvidia.com/doca/sdk/doca+sdk+architecture/index.html

2.2 零信任模式

零信任模式是 DPU 模式的特殊化,它实现了额外的安全层,防止主机系统管理员从主机访问 DPU。一旦启用零信任模式,数据中心管理员应该完全通过Arm内核和/或BMC连接而不是通过主机来控制DPU。
比如Rshim、固件访问都受限。是DPU模式的一个加强版,主要是基于安全考虑,提高安全等级,不允许从主机侧访问和管理DPU,只允许从DPU上的ARM系统以及BMC来管理。
通过mlxprivhost -h可以看到零信任模式下的一些限制:

  --disable_rshim       When TRUE, the host does not have an RSHIM function、to access the embedded CPU registers
  --disable_tracer      When TRUE, the host will not be allowed to own the Tracer
  --disable_counter_rd  When TRUE, the host will not be allowed to read Physical port counters
  --disable_port_owner  When TRUE, the host will not be allowed to be Port Owner

2.2.1 启动零信任模式的方式:

以下命令在DPU上执行:

mst start
sudo mlxprivhost -d /dev/mst/<device> r --disable_rshim --disable_tracer --disable_counter_rd --disable_port_owner

说明:

  • r r表示restrict首先
  • --disable_rshim 关闭rshim
  • --disable_tracer 关闭追踪
  • --disable_counter_rd 关闭硬件计数器
  • –disable_port_owner 关闭端口所有权
    注意点1:如果使用任何 --disable_* 标志,则需要正常关闭和电源循环。需要冷重启服务器(如果是机头机尾模式还需要重启网卡)
    注意点2:如果Rshim被金融后重新启动或者任何–disable_* 标志被执行后再次重新启用,都需要冷重启服务器(如果是机头机尾模式还需要重启网卡)

2.2.2 关闭零信任模式的方式:

以下命令在DPU上执行:

mst start
sudo mlxprivhost -d /dev/mst/<device> p

将主机添加特权

mlxprivhost命令简介

可以看到设置为p之后,ARM和HOST都具有特权
在这里插入图片描述

2.3 NIC模式

NIC模式,就是ARM系统不直接管理DPU上的CX系列网卡,CX系列网卡作为一个独立的卡提供给HOST主机,从外部主机的角度来看,DPU 的行为与适配器卡完全相同。
注意:如果 DPU 在零信任模式下运行,需要请先返回 DPU 模式,然后再切换NIC模式

2.3.1 启动NIC模式

以下命令在DPU上执行:

    1. 配置
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 -e q #查询是否在dpu模式。
## DPU模式的配置信息:INTERNAL_CPU_MODEL= EMBBEDDED_CPU(1) and EXP_ROM_UEFI_ARM_ENABLE = True (1)

# 开启NIC模式
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=1
    1. 冷重启
      冷重启设备(注意不要强制断电),如果是机头机尾模式还需要重启网卡

2.3.1 关闭NIC模式

  • 配置
    以下命令在host上执行:因为nic模式下host是网卡拥有者。
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=0
    1. 冷重启
      冷重启设备(注意不要强制断电),如果是机头机尾模式还需要重启网卡

另外还可以通过host的UEFI、ARM的UEFI、redfish详细参考官方教程。
另外BlueField2的设置NIC mode参数要复杂一些,详细参考 官方教程
简要记录:

# BF2上开启NIC mode
$ mst start  
$ mlxconfig -d /dev/mst/<device> s \
INTERNAL_CPU_PAGE_SUPPLIER=1 \
INTERNAL_CPU_ESWITCH_MANAGER=1 \
INTERNAL_CPU_IB_VPORT0=1 \
INTERNAL_CPU_OFFLOAD_ENGINE=1
重启

# BF2上关闭NIC mode
$ mst start
$ mlxconfig -d /dev/mst/<device> s \
INTERNAL_CPU_PAGE_SUPPLIER=0 \
INTERNAL_CPU_ESWITCH_MANAGER=0 \
INTERNAL_CPU_IB_VPORT0=0 \
INTERNAL_CPU_OFFLOAD_ENGINE=0
重启

3. 如何查看处于何种模式?

3.1 方法1:mlxconfig查看config参数

mst start
mlxconfig -d /dev/mst/mt41686_pciconf0 -e q |grep -E "INTERNAL_CPU_MODEL|EXP_ROM_UEFI_ARM_ENABLE"

参数说明:

  • -e:显示默认和当前的配置(如果没有它只会显示next boot的配置)

-e|–enable_verbosity : Show default and current configurations.

  • q:请求支持的配置(会将所有的配置都返回过来)

q[uery] : query supported configurations.

  • INTERNAL_CPU_MODEL:值为EMBEDDED_CPU,表示1。表示启动启用内部CPU模式。
  • EXP_ROM_UEFI_ARM_ENABLE: 导出 ROM_UEFI_ARM使能,表示把UEFI_ARM使能。 值为True表示启用。

实操:下图表示处于DPU模式,因为内部CPU启动,并且ARM的UEFI的ROM启用。
在这里插入图片描述

3.2 方法2:mlxprivhost的query命令

mlxprivhost -d /dev/mst/mt41686_pciconf0 q

q表示:query: Query current host configuration.

4. 综述

本文根据官网教程详细分析了BlueField DPU 有3种工作模式特点,开关、查询方式,以及相关注意事项。通过本文熟悉后可以掌握如何灵活切换DPU的工作模式,以及相关的作用。另外以上相关配置本质都是影响了UEFI的参数,在DPU上,CX系列网卡、ARM、eswitch是独立的硬件单元。这些软件上纷繁复杂的命令配置,最终都是影响启动的时候加载的参数。启动后配置都需要下一次才生效。所以本质是配置这三个硬件的cmdline类似的方式。
另外不用担心修改配置后无法登录等问题,因为只要有BMC的网口能够通,都能通过这个进行操作。

参考链接:
https://docs.nvidia.com/networking/display/bluefielddpuosv460/modes+of+operation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值