BMC双网络管理口:如何配置 eth2 Dedicated 与 eth3 Aggregation?

希望 BMC 模组支持两个管理口:

  • eth2:BMC 直出管理口;
  • eth3:通过 SGMII 连接外部交换芯片的管理口。

目标是两个口都能被 BMC 网络服务识别,默认使用 eth3。

V2 实际结果

ipmcget -d ethport
Dedicated   | eth2 | na | Link_Down
Aggregation | eth3 | na | Link_Up
ipmcget -d ipinfo
EthGroup ID : 1
Net Type    : Aggregation

V2 中 eth3 的关键属性:

Type=4
GroupID=0
Num=3
EthEnable=1
AdaptiveFlag=0
SpeedDuplexEnable=0

同一网口组的关键属性:

ActivePort=3
MacSourcePort=3
Channel=1

V3 已尝试的配置

  1. 将 eth2、eth3 都配置到 EthGroup0
  2. eth2 保留为 DedicatedPort
  3. 删除 eth3 的 DedicatedPort
  4. 新增 EthGroup_EthGroup0,设置:
ActiveEthId=3
AssociatedPortType=4
Channel=1
  1. 将 eth3 配置为网口组的 MAC 来源。

V3 实际结果

SR 对象可以加载,但实际网络服务仍只看到 eth2:

ipmcget -d ethport
Dedicated    | eth2 | 1 | Link_Down
ipmcget -d ip
Net Type    : Dedicated
Active Port : eth2

查询新增对象:

EthGroup_EthGroup0_00
ActiveEthId=3
ActivePortId=255
AssociatedPortType=4
Status=false

即 SR 中的 EthGroup 对象加载成功,但 V3 的 bmc_network 没有生成 eth3 对应的 Aggregation MgmtPort,ActivePortId=255 也说明不存在可切换的有效端口。

请教:

  1. V3 中 eth3 的 Aggregation MgmtPort 应通过哪个 SR 对象或字段创建?
  2. Type=Aggregation 是 bmc_network 按 eth3 固定注册,还是需要平台侧额外配置?
  3. 默认活动口应如何设置,才能让 ipmcget -d ip 显示 Net Type: AggregationActive Port: eth3
  4. 是否有 Hi1711 双管理口的 V3 配置示例可参考?

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

基于知识库的配置分析

根据您描述的 V3 配置问题以及提供的知识库上下文,以下分点回答您的四个问题。

1. V3 中 eth3 的 Aggregation MgmtPort 应通过哪个 SR 对象或字段创建?

答案:Aggregation MgmtPort 应通过 EthGroup 对象 在 platform 配置文件(如 platform.sr)中创建,并为其设置相关字段以定义端口角色及活动状态。

  • 知识库中明确指出,要配置 eth3 作为特定用途(内网或聚合),“需要配置对应的 EthGroup 对象,表征当前网口的基本信息和类型”(见文档块 1 回复贴 9 的内容)。
  • 有效的示例配置已在文档块 1 的回复贴 3 中给出(EthGroup_InnerEthGroup2),其核心字段包括:
    • ActiveEthId:指定当前活动端口号(取值 3 表示 eth3)。
    • Channel:指定硬件通道(示例中为 18)。
    • Status:必须设置为 true 才能使对象生效。
    • OutType:用于区分组类型(如内部网络或外部网络),可能影响端口在 ipmcget 中的显示类型(如 Aggregation)。
  • 同时,bmc.kepler.Managers.EthernetInterfaces 接口提供了 AddMgmtPort 方法(参见关系知识:AddMgmtPortBmc Kepler Managers EthernetInterfaces),可用于动态添加管理端口。该方法可能接受端口 ID、类型等参数。
  • 您 V3 配置中出现的 ActivePortId=255Status=false,表明 EthGroup 对象虽然已创建但未完全生效。需要补充 Channel 字段(根据文档块 8 的配置示范中使用了 Channel: 18),并将 Status 设为 true,同时确认 ActiveEthId 已正确指定为 3

小结:关键对象是 bmc.kepler.Managers.EthernetInterfaces.EthGroup(或 platform 中的 EthGroup_xxx 实例),关键字段包括 ActiveEthIdChannelStatusOutType。若需要动态添加也可使用 AddMgmtPort 方法。具体字段的完整定义建议查阅 mdb 模型(文档块 1 提到:“EthGroup 类的说明可以参考 mdb 模型”)。


2. Type=Aggregation 是 bmc_network 按 eth3 固定注册,还是需要平台侧额外配置?

答案:需要平台侧通过配置来决定,而非固定注册。

  • 知识库中并未将“Aggregation”作为一种固定的端口类型直接赋予某个物理网口。相反,网口的角色由对应的 EthGroup 对象配置决定
  • 在文档块 1 的回复贴 9 中明确指出:“BMC 的一个网口在一款产品上一般只用来做一种用途(如 eth3 作为内网或者聚合网口……需要配置对应的 EthGroup 对象”。
  • 知识图谱中定义了 OutType(用于“分类组类型,如内部或外部网络”)和 ethernet mode(由 bmc_network 控制,决定网络行为)等属性,但未出现固定的“Aggregation”类型标识。因此,Type=Aggregation 是 bmc_network 根据 EthGroup 的配置(如 ActiveEthIdOutTypeChannel 以及端口硬件属性(如是否通过 SGMII 连接外部交换芯片) 综合判断后呈现的,不是 eth3 硬件自带的固定标签。
  • 文档块 9(BMC出厂配置定制)中可配置网口模式(mgnt/auto/pcie)和共享网口绑定(NCSI端口号),这些也会影响网络服务对端口类型的识别。如果需要将 eth3 作为聚合口(Aggregation),通常需要将网口模式设置为 autopcie,并确保 EthGroup 配置与之匹配。

小结Type=Aggregationbmc_network 根据 EthGroup 配置及平台定制参数动态决定 的,需要平台侧通过 platform.sr 中的 EthGroup 对象和可能的定制化接口(如 BMCSet_NET_Mode)进行额外配置。


3. 默认活动口应如何设置,才能让 ipmcget -d ip 显示 Net Type: AggregationActive Port: eth3

答案:需要确保 EthGroup 对象配置正确且生效,具体步骤包括:

  1. 在 platform 文件中定义正确的 EthGroup 对象,参考文档块 1 的示例格式:

    “EthGroup_EthGroup0”: {
        “Name”: “EthGroup0”,
        “GroupId”: 1,                // 请根据实际规划
        “OutType”: 2,                // 推测 Aggregation 可能需要特定 OutType 值(如 2 表示聚合网络)
        “ActiveEthId”: 3,            // 指定活动端口为 eth3
        “Channel”: 1,                // 硬件通道,需与硬件设计匹配(用户 V3 中已设置 Channel=1)
        “VLANEnabled”: false,        // 根据需求
        “VLANId”: 0,
        “IpAddr”: “”,                // 可留空或设置静态 IP
        “SubnetMask”: “”,
        “IpPolicy”: 0,
        “Status”: true               // 必须设为 true 才能使对象激活
    }
    

    对比:您 V3 配置中 Status=falseActivePortId=255,因此 Status 必须改为 true。同时需要确保 Channel 值与硬件通道一致(常见值为 1 或 18)。

  2. 为 eth3 添加 MAC 来源配置:知识库文档块 8 中展示了 EthMac_Eth3 对象的用法,可以指定 eth3 的 MAC 地址并关联到 EthGroup。特别是 MacSourcePort=3 的配置(在您的 V2 结果中 同一网口组MacSourcePort=3),在 V3 中可能需要通过 EthMac 对象或 AddMgmtPort 指定。

  3. 确保 DedicatedPort 对象不冲突:知识图谱中描述 “BMC Eth2 lacks a dedicated DedicatedPort Object configuration”,说明 eth2 本身可能具有默认的 Dedicated 属性。您已经删除了 eth3 的 DedicatedPort,但仍需确认 eth2 的 Dedicated 状态是否影响了 Aggregation 端口的生成。可能需要将 eth2 的 DedicatedPort 对象也移除或禁用。

  4. 使用 AddMgmtPort 方法注册端口:关系知识显示 AddMgmtPort 方法用于“添加一个新的管理端口并指定属性”。可以尝试通过该方法显式添加 eth3 作为 Aggregation 管理端口,端口 ID 为 3,并设置端口类型等参数。

  5. 验证与调试

    • 检查 ipmcget -d ethport 的输出,确认 eth3 是否出现且状态为 Link_Up
    • 检查 ipmcget -d ip 的输出,若仍显示 Dedicated,说明 EthGroup 对象未生效或缺少 Aggregation 类型的关联对象。
    • 参考知识库问题定界方法(文档块 2 的 6.1 节),可开启调试日志进一步定位。

小结:关键是 ActiveEthId=3 + Status=true + Channel 匹配 + MAC 来源关联 + 可能的 AddMgmtPort 调用。同时需要检查 EthGroup 的 OutType 是否设置为表示聚合的类型(知识库未明确定义值,需根据 mdb 模型确认)。


4. 是否有 Hi1711 双管理口的 V3 配置示例可参考?

答案:知识库中提供了类似场景的配置示例,但未明确标注“Hi1711 V3”或“Aggregation”专有示例。以下两个示例可直接参考并结合调整:

示例 1:将 eth3 配置为内网口(来自文档块 1 回复贴 3)

“EthGroup_InnerEthGroup2”: {
    “Name”: “InnerEthGroup2”,
    “GroupId”: 8,
    “OutType”: 1,
    “ActiveEthId”: 3,
    “InnerNetWork”: “192.168.202.0”,
    “VLANId”: 4091,
    “VLANEnabled”: true,
    “EthAlias”: 255,
    “IpAddr”: “192.168.202.128”,
    “BaseIpAddr”: “192.168.202.128”,
    “SubnetMask”: “255.255.255.0”,
    “DefaultGateway”: “”,
    “IpPolicy”: 1,
    “Status”: true,
    “Channel”: 18
}

此示例展示了核心结构:ActiveEthId=3Channel=18Status=true。对于 Aggregation,可尝试修改 OutType 值(例如 2 或按模型定义),并移除 InnerNetWork 等内网专用字段。

示例 2:eth3 MAC 地址配置与 EthGroup 联动(来自文档块 8)

“EthMac_Eth3”: {
    “EthId”: 3,
    “EthName”: “eth3”,
    “GroupId”: “EthGroup_InnerEthGroup2”,
    “Mac”: “20:22:01:75:BC:61”,
    “MacUseEnabled”: true,
    “SpeedDuplexEnable”: true,
    “SpeedSetting”: 0,
    “DuplexSetting”: 0
},
“EthGroup_InnerEthGroup2”: { … }

该示例表明 MAC 配置需要关联到对应的 EthGroup,且可能有 MacSourcePort=3 的隐含逻辑(需在 EthGroup 中设置,V2 中可见 MacSourcePort=3 字段,但 V3 的 EthGroup 定义中未直接列出该字段,可能需要通过其他方式指定 MAC 来源)。

其他参考

  • bmc.kepler.Managers.EthernetInterfaces 接口:提供了 AddMgmtPortSetNetworkConfigGetAllPort 等方法。可尝试通过 busctl 调用这些方法来动态配置端口。
  • 定制化接口:文档块 9 中提供了修改网口模式 (BMCSet_NET_Mode) 和绑定 NCSI 网口 (Custom_NCSI_Port_Num) 的方法。将网口模式设为 autopcie 可能更有利于 Aggregation 模式生效。

若需要完整的 Hi1711 V3 双管理口配置,目前知识库中未收录。建议结合以上示例和 mdb 模型(文档块 1 提及“>> 跳转到 EthGroup 模型定义”的链接)进行测试,并通过 ipmcset -d reset 重启 BMC 以观察配置生效情况。


附加说明

  • 由于知识库中未定义 AssociatedPortTypeAdaptiveFlag 等您 V2/V3 配置中出现的字段,无法确认其确切含义。建议查阅对应平台的 mdb 模型文档。
  • ActivePortId=255 通常表示无效端口索引,表明 EthGroup 对象尚未正确关联到物理 port ID。可能需要通过 AddMgmtPort 显式注册端口 ID,或检查 EthMac 对象的 GroupId 链接是否正确。
  • 对于所有配置修改,请确保 Statustrue,否则对象不会被 bmc_network 采纳。

以上回答均基于提供的知识库内容,对于信息缺失的部分已明确说明。实际调试时建议结合 mdb 模型文档和日志分析方法(文档块 2 的调试方法章节)。

Status=falseActivePortId=255 看,EthGroup 只是被加载,没有完成端口注册。先确认 eth3 的 MgmtPort/EthernetInterface 是否存在,且 PortId、Channel、Type 能对应 ActiveEthId=3、AssociatedPortType=4;只配 EthGroup 一般不会创建 eth3。对象生效后再设置默认活动口,否则 ipmcget -d ip 仍会回落到 eth2。

MgmtPort对应的是platform.sr中的DedicatedPort吗, 是的话设备上没有eth3的MgmtPort,
EthernetInterfaces是需要新增定义的吗,当前没有在platform.sr中找到过EthernetInterfaces对象,资源树看的话也只有和eth2关联的EthernetInterfaces_0和mgmtport。

~ ~ # mdbctl lsobj MgmtPort
MgmtPort_1

~ ~ # mdbctl lsprop MgmtPort_1
bmc.kepler.Managers.EthernetInterfaces.MgmtPort
  AdaptiveFlag=true
  CurrentGroupId=0
  DeviceId=1
  DevicePortId=1
  EthId=2
  Id=1
  LinkStatus="Disconnected"
  Mac="20:22:01:84:20:28"
  MaxVLANId=4094
  MinVLANId=1
  NegotiatedSpeedMbps=1
  OriginalGroupId=0
  Silkscreen="Mgmt"
  Type="Dedicated"
  VLANEnabled=false
  VLANId=0
bmc.kepler.Object.Properties
  ClassName="MgmtPort"
  ObjectIdentifier=[0,"","",""]
  ObjectName="MgmtPort_1"
  TraceSamplingRate=0
Private
  AdaptivePriority=16
  Priority=1

~ ~ #
~ ~ # mdbctl lsobj EthernetInterfaces
EthernetInterfaces_0

~ ~ # mdbctl lsprop EthernetInterfaces_0
bmc.kepler.Managers.Chassis.NetConfig
  MasterSmmLinkNetId=1
bmc.kepler.Managers.EthernetInterfaces
  BackupIpActivated=false
  Channel=1
  DefaultFactoryIpAddr=""
  DefaultFactoryIpMode=""
  DefaultFactoryIpVersion="IPv4AndIPv6"
  DefaultFactoryIpv6Addr=""
  DefaultFactoryIpv6Mode="DHCPv6"
  EthName="eth2"
  IpVersion="IPv4AndIPv6"
  Ipv6DynamicRouteRAPreferred=false
  LinkLocalAddress="fe80::2222:1ff:fe8b:1eb8/64"
  MTUSize=1500
  Mac="20:22:01:6D:9D:90"
  MaxVLANId=4094
  MinVLANId=1
  NcsiEnable=false
  NetMode="Fixed"
  PortId=1
  SLAACAddressList=[]
  Status=true
  VLANEnable=false
  VLANId=0
bmc.kepler.Managers.MgmtPortCapability
  AggregationSupported=false
  DedicatedSupported=true
  DedicatedVlanSupported=true
  NcsiEthNum=0
  NcsiPowerDomain=0
bmc.kepler.Object.Properties
  ClassName="EthernetInterfaces"
  ObjectIdentifier=[0,"","",""]
  ObjectName="EthernetInterfaces_0"
  TraceSamplingRate=0
Private
  DHCPv4VendorClassIdentifier=""
  DHCPv6VendorClassOption=""
  DedicatedNCSIEnable=true
  Id=""
  SLAACEnable=true

~ ~ #

从日志看eth2是比eth3多一些初始化记录的,和EthernetInterfaces有关吗?
eth2的部分日志

~ ~ # cat /var/log/app.log | grep eth2
1970-01-01 23:56:19.631571 bmc_network NOTICE: network_dump.lua(54): dump_phy_info buf is eth2:  PHY_ID:    4f51e91a  Phy Speed:    1000M/s
1970-01-02 01:39:20.077096 bmc_network NOTICE: network_resource_tree.lua(420): generate eth [eth2] resource tree completed true
1970-01-02 01:39:20.077917 bmc_network NOTICE: network_resource_tree.lua(421): generate eth [eth2] init status: true channel:1
1970-01-02 01:39:36.143858 bmc_network NOTICE: network_eth_mac.lua(55): init eth mac, GroupId:EthGroup0 EthName:eth2 EthId:2 Mac:20:22:01:75:BC:60 MacUseEnabled:true
1970-01-02 01:39:36.790871 bmc_network NOTICE: manufacture_dft.lua(41): init_dft_eth: Id:74 Slot:1 DeviceNum:0 RefEth:eth2 TestType:0
1970-01-02 01:39:38.650541 bmc_network NOTICE: network_eth_mac.lua(104): init_eth_info_list: EthName:(eth2) GroupId:(EthGroup0) Mac:(20:22:01:6D:9D:90)
1970-01-02 01:39:38.727209 bmc_network NOTICE: network_init.lua(160): set eth state up:eth2, mac:20:22:01:6D:9D:90
1970-01-02 01:39:40.841689 bmc_network NOTICE: net.lua(184): eth2 set mac address to 20:22:01:6D:9D:90 successfully
1970-01-02 01:39:45.205238 bmc_network NOTICE: base.lua(230): EthName(eth2) vlan_up VLANEnabled:(false) VLANId:(0)
1970-01-02 01:39:46.280852 bmc_network NOTICE: net.lua(184): eth2 set mac address to 20:22:01:6D:9D:90 successfully
1970-01-02 01:39:46.292126 bmc_network NOTICE: net.lua(562): set MTUSize to 1500 for interface eth2 successfully
1970-01-02 01:39:46.298382 bmc_network NOTICE: base.lua(324): group(id:0)init ipv4 info, ipsrd:Static eth_name:eth2
1970-01-02 01:39:46.299603 bmc_network NOTICE: base.lua(301): groupid:0 eth_name:eth2 ip static init task
1970-01-02 01:39:46.581340 bmc_network NOTICE: arp.lua(87): start send ipv4 arp!, ethname: eth2, mac: 20:22:01:6D:9D:90
1970-01-02 01:39:46.897590 bmc_network NOTICE: iptables_cfg.lua(42): add_iptables_rule add cmd is : /usr/sbin/iptables -t filter -I INPUT 1 -i eth2 -d 239.255.255.250 -j ACCEPT -w 1>/dev/null 2>&1
1970-01-02 01:39:47.199113 bmc_network NOTICE: iptables_cfg.lua(97): add_ip6tables_rule add cmd is : /usr/sbin/ip6tables -t filter -I INPUT 1 -i eth2 -d FF05::C -j ACCEPT -w 1>/dev/null 2>&1
1970-01-02 01:39:47.338446 bmc_network NOTICE: base.lua(420): update eth2 ipv6 info
1970-01-02 01:40:11.022118 bmc_network NOTICE: net.lua(468): Set eth2 localnet value(1) successfully
1970-01-02 01:40:15.533271 bmc_network NOTICE: iptables_cfg.lua(246): eth2 update_iptables_inputchain shell success
1970-01-02 01:40:15.862229 bmc_network NOTICE: dhcp_process.lua(406): not start eth2 dhcp get ipv4 info.
1970-01-02 01:40:15.866060 bmc_network NOTICE: dhcp_process.lua(446): not start eth2 dhcpv6 get ipv6 info.
1970-01-02 01:40:17.925000 bmc_network NOTICE: iptables_cfg.lua(345): eth2 update_ip6tables_inputchain shell success

eth3的部分日志

~ ~ # cat /var/log/app.log | grep eth3
1970-01-02 01:39:36.161273 bmc_network NOTICE: network_eth_mac.lua(55): init eth mac, GroupId:EthGroup0 EthName:eth3 EthId:3 Mac:20:24:07:30:09:0a MacUseEnabled:true
1970-01-02 01:39:38.651744 bmc_network NOTICE: network_eth_mac.lua(104): init_eth_info_list: EthName:(eth3) GroupId:(EthGroup0) Mac:(20:24:07:30:09:0a)
1970-01-02 01:39:40.844952 bmc_network NOTICE: network_init.lua(160): set eth state up:eth3, mac:20:24:07:30:09:0a
1970-01-02 01:39:42.910982 bmc_network NOTICE: net.lua(184): eth3 set mac address to 20:24:07:30:09:0a successfully

从日志看,eth3 已完成 MAC 初始化和 up,但没有 generate eth [eth3] resource tree completed,也没有后续 IP/ARP/iptables 初始化,所以问题不在 EthGroup 是否加载,而是 eth3 没有被注册成管理口

MgmtPort 和 EthernetInterfaces 应该是 bmc_network 根据平台配置生成的运行时对象,不建议直接在 platform.sr 里手工补 EthernetInterfaces。

建议找一个支持 Aggregation 的机型,对比它的 DedicatedPort、EthMac 和管理口能力配置;再查下 bmc_network 里 eth3 为什么没进资源树。