BMC的veth网口怎么开启

背景
应客户需求,希望在os下使用urest时,不安装iBMA,但是可以通过veth虚拟网口进行通信。

现状
OS侧的veth的打开方式已经清楚,但是BMC的veth网口不清楚如何开启:

希望可以知道一下如何开启BMC的veth网口。

答案内容由AI生成,仅供参考:

解决方案步骤

针对您遇到的Cannot find device 'veth'问题,请按以下步骤操作:

步骤1:确认平台支持性

确保使用的BMC芯片(如Hi1711)和硬件设计支持veth功能。某些硬件配置可能需要在设备树或CSR配置中显式启用。

步骤2:检查并启用veth驱动

通过Redfish或底层接口确保VethDriverEnabledEnabled属性设置为true

步骤3:重启bmc_network服务

systemctl restart bmc_network

步骤4:重新检查接口

ip link show
点击此处查看详细分析解答

如何在BMC侧开启veth虚拟网口

根据您的需求,在OS侧不安装iBMA的情况下通过veth虚拟网口与BMC通信,需要在BMC侧正确配置和启用veth接口。以下是详细的开启方法:

veth网口的基本概念

veth(Virtual Ethernet)是一种虚拟网络接口,用于在主机操作系统(OS)和基板管理控制器(BMC)之间建立通信通道。它是一种成对出现的虚拟接口,一端在OS侧,另一端在BMC侧,形成一个虚拟的以太网连接。

BMC侧veth网口开启方法

1. 确认BMC系统支持veth功能

BMC系统中的bmc_network组件负责管理网络接口,包括veth接口。在openUBMC系统中,veth接口默认通常是支持的。

# 检查bmc_network服务状态
systemctl status bmc_network

2. 通过Redfish API控制veth驱动状态

自openUBMC版本支持后,可以通过Redfish接口查询和设置veth驱动的使能状态:

# 查询veth驱动当前状态
curl -k -X GET https://<BMC_IP>/redfish/v1/Managers/1/SmsService \
  -H "Authorization: Basic <base64_credentials>"

响应中会包含VethDriverEnabled属性,表示veth驱动是否已启用。

要启用veth驱动:

# 通过PATCH请求启用veth驱动
curl -k -X PATCH https://<BMC_IP>/redfish/v1/Managers/1/SmsService \
  -H "Content-Type: application/json" \
  -H "Authorization: Basic <base64_credentials>" \
  -d '{"VethDriverEnabled": true}'

3. 通过底层资源协作接口设置

也可以通过资源协作接口直接设置:

  • 资源路径/bmc/kepler/Systems/${SystemId}/Sms
  • 接口名称bmc.kepler.Systems.Sms.Veth
  • 属性Enabled

默认值为true(使能),支持掉电持久化。

4. 检查并激活内核模块

确认BMC系统已加载必要的veth相关模块:

# 检查veth相关模块是否已加载
lsmod | grep veth

如果未加载,可能需要手动加载或检查系统配置。

5. 验证veth接口是否存在

执行以下命令查看网络接口列表:

ip link show

如果veth接口仍然显示“Cannot find device ‘veth’”,说明:

  1. veth驱动未正确加载
  2. 系统配置中禁用了veth功能
  3. 硬件平台不支持该特性

解决方案步骤

针对您遇到的Cannot find device 'veth'问题,请按以下步骤操作:

步骤1:确认平台支持性

确保使用的BMC芯片(如Hi1711)和硬件设计支持veth功能。某些硬件配置可能需要在设备树或CSR配置中显式启用。

步骤2:检查并启用veth驱动

通过Redfish或底层接口确保VethDriverEnabledEnabled属性设置为true

步骤3:重启bmc_network服务

systemctl restart bmc_network

步骤4:重新检查接口

ip link show

注意事项

  1. 默认状态:大多数openUBMC系统默认启用veth驱动,但某些安全强化场景可能会关闭。
  2. 权限要求:修改veth状态需要管理员权限,Redfish操作需具备BasicSetting权限。
  3. 持久化:veth使能状态支持掉电持久化,设置后不会因重启丢失。
  4. 防火墙策略:在裸金属云等安全敏感环境中,还可能需要配置veth防火墙规则(WhiteListPorts/BlackListPorts)来控制通信。

替代方案

如果不希望依赖iBMA但又无法启用veth,还可考虑:

  • 使用NCSI边带网络
  • 配置专用的管理网口(如eth2)
  • 使用Serial-over-LAN(SOL)

建议优先尝试通过Redfish接口启用VethDriverEnabled属性来解决问题。

看到是/opt/bmc/apps/hica/subsys/alarm/config.cfg进程在使用/dev/net_cdev设备

/dev/net_cdev设备抢占了eDMA通道导致veth没有正常加载,这种情况符合预期么?是什么配置导致的?

/redfish/v1/Managers/1/SmsService/

修改"ChannelType": “PCIe-Veth”

感谢 :hibiscus: