【已评审】支持双网口场景北向接口评审

issue

暂无

背景

需求

某两款产品分别有两种双网口诉求

  • 场景1:eth0作为NCSI口,eth2作为专用口,两个网口支持组bond,对外提供一个IP,也支持两个网口分别使能或同时使能,同时使能场景下需要各自配置一个IP,两个网口均需要有全功能配置能力;
  • 场景2:eth2、eth3均作为专用口,两个口支持组bond,对外提供一个IP,也支持两个网口分别使能或者同时使能,同时使能场景各自配置一个IP,两个网口均需要有全功能配置能力,eth0作为NCSI口;

诉求:支持配置单、多网口能力,多网口场景支持全部网络配置能力;同时网络配置以网口组的形式管理,多个网口可以加入同一个网口组,对外共享IP、MAC等网络配置;

差距

当前北向接口均不支持配置多网口的网络配置能力,需要增加扩展北向接口能力;资源协作接口不支持网口归属网口组的管理,需要新增资源协作接口;

基于以上背景,需要对以下接口能力做扩展评审:

评审点

评审点一:UIRest接口新增多网口支持标识等属性

URI/UI/Rest/BMCSettings/NetworkSettings
变化类型:新增属性
操作类型: GET/PATCH
应用场景:通过web界面修改网口模式为自适应模式、固定单网口、固定多网口;多网口场景通过web界面进行网络配置;查询/配置对应网口组的网络配置信息
详细描述:URI响应中参数增加以下属性

属性名称 取值类型 说明 取值范围 默认值 操作权限 约束
MultiEthernetInterfaceSupported Boolean 是否支持多网口 true/false false ReadOnly 只读
ManagementNetworkPorts Array 归属于当前网口组的网口对象数组 单个对象定义见下表1 NA 读:ReadOnly
写:BasicSetting
读写
EthernetInterfaceGroups Array 多网口场景下承载网络配置 数组中每个元素为网络配置对象,具体见下表2 - 读:ReadOnly
写:BasicSetting
读写

表1: ManagementNetworkPorts 属性

属性名称 取值类型 说明 取值范围
Type String 网口类型 “LOM”, “Dedicated”, “ExternalPCIe”, “Aggregation”, “OCP”, “OCP2”, “FlexIO”
PortNumber Number 网口号 Number (0-255)
PortName String 网口名称 “Eth0”, “Eth1”, “Eth2”, “Eth3”

样例展示:
URI: /UI/Rest/BMCSettings/UpdateService/UpdateProgress
操作类型:GET/PATCH
修改后样式(可以承载多个网口):

"ManagementNetworkPorts": [
    {
        "Type": "object",
        "Properties": {
            "Type": {
                "Type": "string"
            },
            "PortNumber": {
                "Type": "integer"
            }
        }
    },
    {
        "Type": "object",
        "Properties": {
            "Type": {
                "Type": "string"
            },
            "PortNumber": {
                "Type": "integer"
            }
        }
    }
]

表2: EthernetInterfaceGroups 属性元素详细

一级参数 二级参数 三级参数 参数说明 类型 可选/必选
PermanentMACAddress 网口组MAC String 必选
NetworkPort(可选) Mode 固定模式,自动选择 String (“Fixed”, “Automatic”) 可选
ManagementNetworkPorts(可选) Array 可选
Type String (“LOM”, “Dedicated”, “ExternalPCIe”, “Aggregation”, “OCP”, “OCP2”, “FlexIO”) 可选
PortNumber Number (0-255) 可选
Members(可选) Array 可选
PortNumber Number (0-255) 可选
AdaptiveFlag Boolean 可选
LinkStatus String (“Connected”, “Disconnected”) 可选
NetworkProtocols(可选) ProtocolMode String (IPv4, IPv6"IPv4AndIPv6) 可选
IPv4Config(可选) IPAddressMode 自动获取,手动配置 String (DHCP, Static) 可选
IPAddress ipv4校验 String 可选
SubnetMask String (0, 15) 可选
Gateway ipv4校验 String 可选
IPv6Config(可选) IPAddressMode 自动获取,手动配置 String (DHCPv6, Static) 可选
IPAddress ipv6校验 String 可选
PrefixLength Number (0-128) 可选
Gateway ipv6校验 String 可选
VLAN(可选) VLANId 开启:取值范围:1-4094 Number 可选
Enabled 关闭:取值:0 Boolean 可选

评审点二:新增默认网口组的通道和状态资源协作接口属性

资源path(已有): /bmc/kepler/Managers/${ManagerId}/EthernetInterfaces

资源interface(已有): bmc.kepler.Managers.EthernetInterfaces

变化类型: 新增资源协作接口属性

应用场景:

为兼容历史功能,EthernetInterfaces作为默认网口组,既网口组0;单网口场景下,网口组0一定是使能的,在多网口的场景下,网口可能切到其他网口组,网口组0不使能,此时需要一个Status属性(属性名通EthGroup名称)承载其状态;同时需要新增Channel属性承载其channel number;

详细描述:

属性名称 变化类型 签名 访问权限 持久化 变化通知 说明 约束
Channel 新增属性 y 读:ReadOnly
写:BasicSetting
掉电 false 网口对应LAN通道的通道号 取值范围 [1, 11]
Status 新增属性 b 读:ReadOnly写:不支持 掉电 true 网口组的状态,取值说明如下:
true:使能
false:禁用

评审点三:新增网口组的网口模式和Mac资源协作接口属性

资源path(已有)/bmc/kepler/Managers/${ManagerId}/EthernetInterfaces/EthGroup/${Id}

资源interface(已有)bmc.kepler.Managers.EthernetInterfaces.EthGroup

变化类型:新增资源协作接口属性和方法

应用场景

网口组可以管理多个网口,管理多个网口的场景下,可以配置为固定模式或者自适应模式,需要有属性承载其网络模式;同时网口组需要通过北向接口展示相关网络配置信息,需要新增Mac属性承载该网口组的MAC地址;ActivePortId属性用于承载网口组中当前激活的网口ID

详细描述

属性名称 变化类型 签名 访问权限 持久化 变化通知 属性值来源 说明 约束
NetMode 新增属性 s 读:ReadOnly写:不支持 掉电 false PSR 当前网口组的网口模式 取值:
“Fixed”
“Automatic”
Mac 新增属性 s 读:ReadOnly写:不支持 掉电 false 内部赋值 当前网口组的MAC MAC格式
ActivePortId 新增属性 y 读:ReadOnly写:不支持 掉电 false 内部赋值 当前激活的网口ID -
方法名称 变化类型 请求签名 请求参数说明 响应签名 响应参数说明 访问权限 说明 约束
SetNetworkConfig 新增方法 sybq NetMode:网口模式,取值有:自动选择模式和固定模式
PortId:网口的端口号
VLANEnable:是否使能VLAN
VLANId:VLAN ID,有效值为 [1, 4095]
NA BasicSetting 设置网口组模式,端口,VLAN信息 PortId归属于当前网口组才可以设置

评审点四:新增网口归属网口组关系的资源协作接口属性

资源path(已有)/bmc/kepler/Managers/:Id/EthernetInterfaces/:PortId

资源interface(已有)bmc.kepler.Managers.EthernetInterfaces.MgmtPort

变化类型:新增资源协作接口属性

应用场景

  • 网口可以独立网口组,也可以归属于任意一个网口组,需要有属性承载当前归属于哪个网口组,同时网口如果单独作为网口组的话,也需要与具体网口组对象有一个绑定关系;

详细描述

属性名称 变化类型 签名 访问权限 持久化 变化通知 说明 约束
OriginalGroupId 新增属性 y 读:ReadOnly
写:不支持
不持久化 false 网口初始归属的网口组ID -
CurrentGroupId 新增属性 y 读:ReadOnly
写:BasicSetting
掉电 false 网口当前归属的网口组ID,默认值与OriginalGroupId一致 -

评审结论

通过,详细结论如下:
一、同意在webrest接口 /UI/Rest/BMCSettings/NetworkSettings 接口中响应中增加可选参数 MultiEthernetInterfaceSupported ,类型为 Boolean ,标识是否支持多网口;增加可选参数ManagementNetworkPorts,类型为 Array,用于标识归属于当前网口组的网口对象数组;增加可选参数EthernetInterfaceGroups,类型为 Array,用于承载多网口场景下网口组的网络配置;

二、同意资源协作接口 bmc.kepler.Managers.EthernetInterfaces 下新增属性 ChannelStatus。属性具体信息如下:

  • Channel,签名为 y,读写属性,读权限为 ReadOnly,写权限为 BasicSetting,需要掉电持久化,不发送变更通知事件,表示当前网口对应LAN通道的通道编号, 取值范围限定为 [1, 11]
  • Status,签名为 b,只读属性,读权限为 ReadOnly,需要掉电持久化,发送变更通知事件,表示当前网口组的状态

三、同意资源协作接口 bmc.kepler.Managers.EthernetInterfaces.EthGroup 下新增属性 NetMode,Mac,ActivePortId,新增方法SetNetworkConfig
属性具体信息如下:

  • NetMode,签名为 s,只读属性,读权限为 ReadOnly,需要掉电持久化,不发送变更通知事件,表示当前网口组的网口模式,取值为FixedAutomatic
  • Mac,签名为 s,只读属性,读权限为 ReadOnly,需要掉电持久化,不发送变更通知事件,表示当前网口组的MAC;
  • ActivePortId,签名为 y,只读属性,读权限为 ReadOnly,需要掉电持久化,不发送变更通知事件,表示当前网口组激活的网口ID;
    方法具体信息如下:
  • SetNetworkConfig ,用于设置网口组模式,端口,VLAN信息,权限为 BasicSetting ,请求签名为 sybq ,分别表示:s:NetMode(网口组模式)、y:PortId(网口ID)、b:VLANEnable(VLAN使能)q:VLANId(VLAN ID),无响应参数。

四、同意资源协作接口 bmc.kepler.Managers.EthernetInterfaces.MgmtPort 下新增属性 OriginalGroupId,CurrentGroupId
属性具体信息如下:

  • OriginalGroupId,签名为 y,只读属性,读权限为 ReadOnly,不需要持久化,不发送变更通知事件,表示网口初始归属的网口组ID;
  • CurrentGroupId,签名为 y,读写属性,读权限为 ReadOnly,写权限为 BasicSetting,需要掉电持久化,不发送变更通知事件,表示网口当前归属的网口组ID;

遗留问题

  1. SetNetworkConfig.PortId 需要明确详细的使用
    结论:
    PortId为BMC对网口统一分配的标识,不会重复,可以唯一标识一个网口对象;可以通过 bmc.kepler.Managers.EthernetInterfaces.MgmtPort 接口进行遍历查询匹配的网口
  2. 新增 ManagementNetworkPorts,老的 ManagementNetworkPort 废弃
    结论:可以删除,WEBUI和UIRest接口同属于 openUBMC,不存在兼容性问题,统一在 openUBMC 25.09 版本进行适配修改和功能发布
  3. Type 上为什么会有 OCP/OCP2,修改之后是否有影响
    结论:OCP/OCP2是可以两张不同功能的网卡,并且在历史版本中已经进行功能适配,当前如果去掉会产生很大的兼容性影响,对现网影响很大,需要逐步根据演进进行收编,不能直接修改。