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 下新增属性 Channel和Status。属性具体信息如下:
Channel,签名为y,读写属性,读权限为 ReadOnly,写权限为 BasicSetting,需要掉电持久化,不发送变更通知事件,表示当前网口对应LAN通道的通道编号, 取值范围限定为 [1, 11]Status,签名为b,只读属性,读权限为 ReadOnly,需要掉电持久化,发送变更通知事件,表示当前网口组的状态
三、同意资源协作接口 bmc.kepler.Managers.EthernetInterfaces.EthGroup 下新增属性 NetMode,Mac,ActivePortId,新增方法SetNetworkConfig。
属性具体信息如下:
NetMode,签名为s,只读属性,读权限为 ReadOnly,需要掉电持久化,不发送变更通知事件,表示当前网口组的网口模式,取值为Fixed,Automatic;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;
遗留问题
- SetNetworkConfig.PortId 需要明确详细的使用
结论:
PortId为BMC对网口统一分配的标识,不会重复,可以唯一标识一个网口对象;可以通过bmc.kepler.Managers.EthernetInterfaces.MgmtPort接口进行遍历查询匹配的网口 - 新增 ManagementNetworkPorts,老的 ManagementNetworkPort 废弃
结论:可以删除,WEBUI和UIRest接口同属于 openUBMC,不存在兼容性问题,统一在 openUBMC 25.09 版本进行适配修改和功能发布 - Type 上为什么会有 OCP/OCP2,修改之后是否有影响
结论:OCP/OCP2是可以两张不同功能的网卡,并且在历史版本中已经进行功能适配,当前如果去掉会产生很大的兼容性影响,对现网影响很大,需要逐步根据演进进行收编,不能直接修改。