bmc_network对外接口、业务流程及CSR配置指导

由于bmc_network是闭源组件,用户在面临新的组网场景和网络配置需求时,往往不清楚如何配置CSR以符合自己的实际应用。本文档梳理了bmc_network组件的核心对外接口、业务流程及CSR配置方法,旨在为大家提供配置参考与指导。

网口类型及典型应用场景

bmc_network组件依据实际业务需求,将网口分为多种类型:对外网口、对内网口、近端运维网口、veth网口等。以下逐一介绍每种类型的主要特性与适用场景。

对外网口

顾名思义,对外网口主要用于BMC对外通信。当外部用户需要访问BMC服务时,通常需通过对外网口IP接入。为满足多样化的网络需求,BMC现已支持多对外网口(多IP),可通过扩展CSR配置实现。下文分别介绍单对外网口和多对外网口各自的特性与配置方式。

单对外网口

单对外网口指BMC对外只提供一个IP地址(并非物理网口数量仅为1)。在常见设备中,通常eth2和eth0为对外口,其中eth0多作为共享NCSI口。单对外网口模式支持切换生效网口,当前生效网口可以在网口间切换,切换到哪个网口,ip就会设置到哪个网口上,单对外网口的管理主要依赖如下接口:

  • bmc.kepler.Managers.EthernetInterfaces.Ipv4
  • bmc.kepler.Managers.EthernetInterfaces.Ipv6
  • bmc.kepler.Managers.EthernetInterfaces

以下分别介绍上述接口的属性和方法,以便更好地理解及配置:

bmc.kepler.Managers.EthernetInterfaces 接口简介

属性说明
属性名 类型 只读 描述 示例值/备注
EthName String 网口名称 eth2
NetMode String 网络模式(Fixed, Automatic) Fixed
Mac String 网口Mac地址 22:22:22:22:22:22
IpVersion String IP协议类型(IPv4, IPv6, IPv4AndIPv6) IPv4AndIPv6
NcsiEnable Boolean NCSI使能状态 false
PortId U8 当前激活端口 1
Status Boolean 该IP是否在工作状态中 true
Channel U8 网口对应LAN通道号 9
VLANEnable Boolean NCSI VLAN使能状态 false
VLANId U16 Vlan Id 0
MinVLANId U16 VLAN取值下限 1
MaxVLANId U16 VLAN取值上限 4094
SLAACAddressList String SLAAC地址
LinkLocalAddress String IPv6本地链路地址 0:0:0:0:0:0:0:0/64
BackupIpActivated Boolean 备份IP激活状态 false
DefaultFactoryIpMode String 出厂默认IPv4模式(DHCP, Static) Static
DefaultFactoryIpAddr String 出厂默认IPv4地址
DefaultFactoryIpv6Mode String 出厂默认IPv6模式(DHCPv6, Static) Static
DefaultFactoryIpv6Addr String 出厂默认IPv6地址 0:0:0:0:0:0:0:0
DefaultFactoryIpVersion String 出厂默认网络模式(IPv4, IPv6, IPv4AndIPv6) IPv4AndIPv6
Ipv6DynamicRouteRAPreferred Boolean 是否用RA报文替代IPv6动态路由 false(默认)
MTUSize U16 以太网MTU数值(范围:576-9000) 1500(默认)
方法说明
方法名 功能说明 请求参数 返回参数/说明
GetAllPort 获取所有port列表 Port(Array)
SetNetworkConfig 设置网络配置信息 NetMode(String)、PortId(U8)、VLANEnable(Boolean)、VLANId(U16)
AddMgmtPort 添加管理网口 DeviceId(U8)、DevicePortId(U8)、Silkscreen(String)、EthId(U8)、Type(String)、PortId(U8) PortId(U8)
DeleteMgmtPort 删除管理网口 PortId(U8)
AddIptablesRule 添加Iptables映射规则 InterfaceName(String)、IpAddr(String) Result(Boolean)
AddIp6tablesRule 添加IPv6 tables映射规则 InterfaceName(String)、Ipv6Addr(String) Result(Boolean)
SetVLANConfig 设置端口vlan VLANEnabled(Boolean)、VLANId(U16)、PortType(U8) Result(Boolean)
SetEthState 启用/禁用BMC网口 EthName(String)、EthEnabled(Boolean) Result(Boolean)
NetworkFailover 双平面切换外部网络 From(String)、To(String) Result(Boolean)
SetChassisLanSubNet 设置内网网段 ChassisLanSubNet(String)
端口结构体Port说明
属性名 类型 描述
Id U8 Id,从1起,新增port注册传入0
EthId U8 Eth的Id
DeviceId U8 设备ID
DevicePortId U8 设备端口Id
Silkscreen String 用于Web显示的端口丝印信息
Type String 网卡类型:ExternalPCIe/Dedicated
AdaptiveFlag Boolean 是否参与自适应
LinkStatus String Link状态(Connected/Disconnected)
Mac String Mac地址
信号/事件通知
信号名 描述
ActivePortChangedSignal OldPortId/PortId:切换前后端口Id
NCSIInfoChangedSignal ChangedInfo(Array):如ActivePort、VLANId、Mac等变化
EthMacChangedSignal 网口名和修改后的Mac值
变化信息结构体(ChangedInfoItem)
字段 类型 说明
Field String 变化字段名称
Value String 变化后的值

bmc.kepler.Managers.EthernetInterfaces.Ipv4 接口说明

主要用于管理指定以太网口的IPv4配置,支持DHCP/静态IP,主/备地址切换,以及变化通知。

属性说明

属性名 类型 只读 取值 描述
IpMode String DHCP/Static IPv4模式
IpAddr String 当前主IPv4地址
BackupIpAddr String 备份IPv4地址
SubnetMask String 主IPv4子网掩码
BackupSubnetMask String 备份IPv4掩码
DefaultGateway String IPv4默认网关

方法

方法名 功能 参数 返回
SetIpMaskGateway 同步设置IPv4地址、掩码、网关 IpAddr, SubnetMask, DefaultGateway IpAddr
SetIpAddr 设置IPv4地址与掩码 IpAddr, SubnetMask Result(Boolean)
SetDefaultGateway 单独设置网关 DefaultGateway Result(Boolean)
SetDedicatedMaintIpMask 设置专用运维IP/掩码 IpAddr, SubnetMask Result(Boolean)

信号通知

信号名 内容
ChangedSignal ChangedInfo(Array):如IpAddr, SubnetMask, DefaultGateway变更
变化详情结构体(ChangedInfoItem)
字段 类型 说明
Field String 字段名称
OldValue String 原值
NewValue String 新值

bmc.kepler.Managers.EthernetInterfaces.Ipv6 接口说明

用于IPv6地址管理,支持自动/静态模式、前缀配置、网关设置和通知机制。

属性

属性名 类型 只读 取值 描述
IpMode String DHCPv6/Static IPv6模式
IpAddr String 当前IPv6地址
PrefixLength S32 IPv6前缀长度
Scope String Link/Global 地址范围
DefaultGateway String 默认IPv6网关

方法

方法名 功能 参数 返回
SetIpv6PrefixGateway 一步设置IPv6地址/前缀和网关 IpAddr, PrefixLength, DefaultGateway IpAddr
SetIpAddr 设置IPv6地址和前缀 IpAddr, PrefixLength Result(Boolean)
SetDefaultGateway 单独设置网关 DefaultGateway Result(Boolean)

信号通知

信号名 内容
ChangedSignal ChangedInfo(Array):如IpAddr、PrefixLength、DefaultGateway变化
变化详情结构体(ChangedInfoItem)
字段 类型 说明
Field String 字段名称
OldValue String 原值
NewValue String 新值

多对外网口

单对外网口指BMC对外只提供一个IP地址(并非物理网口数量仅为1)。在常见设备中,通常eth2和eth0为对外口,其中eth0多作为共享NCSI口。单对外网口模式支持切换生效网口,当前生效网口可以在网口间切换,切换到哪个网口,ip就会设置到哪个网口上,单对外网口的管理主要依赖如下接口:


flowchart TB

%% 外层 BMC 方框

subgraph BMC[ BMC ]

direction LR

A[方框 A]

B[方框 B]

A --> B

end


对外接口一览

  • bmc.kepler.Managers.EthernetInterfaces.Ipv4

  • bmc.kepler.Managers.EthernetInterfaces.Ipv6

  • bmc.kepler.Managers.EthernetInterfaces

  • bmc.kepler.Managers.EthernetInterfaces.MgmtPort

  • bmc.kepler.Managers.LldpConfig

  • bmc.kepler.Managers.LLDPInfo

  • bmc.kepler.Managers.LLDPReceive

  • bmc.kepler.Assembly

  • bmc.kepler.Managers.EthernetInterfaces.EthConfig

  • bmc.kepler.Manufacture

  • bmc.kepler.Managers.SwitchConnections

  • bmc.kepler.Managers.HeartBeat

  • bmc.kepler.Managers.EthernetInterfaces.EthGroup

  • bmc.kepler.Managers.EthernetInterfaces.InnerNetwork

  • bmc.kepler.Managers.NodeLocation

  • bmc.kepler.Managers.NatConfig


如需进一步优化,请结合用户实际操作路径、典型问题和配置案例,对接口文档逐步完善与补充。

典型组网场景及配置

你好,请问下这个多对外网口的情况下,有啥sr文件的配置参考吗?UBMC 2509中

202509还未支持该功能,需要使用至少2025年12月之后的版本

好的。李工,感谢。另外想请教下,如果是eth0作为NCSI共享网口,eth2也是对外网口。对外共用一个IP的情况下(2个物理网口,一个对外IP),2509是支持的吧?

支持

你好,关于NSCI网口初始化这块,我看代码里主要有两个相关的数据库表,ncsi_nc_info和ncsi_nc_port_info. 请问下这两个表是固定的吗? 那对于CPU直出的PCIe网卡来说,如果我配置了这个PCIe网卡设备,它会对这两个表 有啥影响吗? 或者说我怎么配置PCIe网卡,才能使得这两个表的信息和我配置的PCIe网卡是对应的上的呢?

这是当前加的一些打印信息,我看它这里就是直接从数据库里面读的配置来走的初始化流程