由于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.Ipv4bmc.kepler.Managers.EthernetInterfaces.Ipv6bmc.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
如需进一步优化,请结合用户实际操作路径、典型问题和配置案例,对接口文档逐步完善与补充。
