host_agent
更新时间: 2026/02/27
在Gitcode上查看源码host_agent 常用接口
IPMI接口
- BMA向BMC注册
- 心跳计数
- 注册SmsId
- 获取通信使用的Http协议类型
- 获取Sms名称
- 设置Sms名称
- 配置BMC的转发跳转命令
资源协助接口
| 接口 | 方法 | 请求参数 | 响应 | 说明 |
|---|---|---|---|---|
| bmc.kepler.Systems.Sms | SetForwardWhiteList | WhiteList | HTTP响应体 | 设置百名(该接口提供给BMA使用) |
| bmc.kepler.Systems.Sms | ForwardRequest | redfish请求体 | HTTP响应体 | 请求转发(使用postman请求BMA信息默认使用盖接口) |
| bmc.kepler.Systems.Sms | ForwardEvent | BMA上报事件消息 | HTTP响应体 | 事件变更上报(该接口提供给BMA使用) |
| bmc.kepler.Systems.Sms | UpdateSpecificResource | 资源类型 | HTTP响应体 | 刷新资源信息 |
host_agent特性介绍
0 BMC与BMA简练相关功能介绍
- 安装BMA
- BMA首次启动后配置iBMA.ini文件中iBMA_support_https属性,查看iBMA.ini文件配置信息:ibmacli conf show --name iBMA.ini
- 安装后相关IPMI命令处理流程
- BMA发送命令获取SMS ID
- BMA发送注册命令
- 注册成功BMA发送心跳命令
- 首次从BMA获取带内全部资源
- 拉起定时任务获取带内部分资源
- OS侧资源变更,BMA上报事件,BMC接收到变更事件重新请求资源
1 代理与资源管理
代理与通道管理承接模块的第一部分职责,主要与代理软件进行交互并获取带内的相关资源信息,主要功能含:
- 与BMA建立连接,断开连接
- 心跳监控
- 对BMA资源进行遍历获取
- 对于实时变化的资源创建任务进行高频轮询获取
- 向BMA订阅事件,当资源发生变化,BMA主动向BMC上报变更
1.1 注册与解注册
BMA通过发送IPMI命令实现与BMC的连接与断开
- 发送参数详解
| data | baseType | len | value |
|---|---|---|---|
| netfn | U8 | 1B | 0x06 |
| cmd | U8 | 1B | 0x58 |
| ParaSelector | U8 | 1B | 0xc4 |
| MaskRedfish | U8 | 1B | 0:不支持事件订阅 1:支持事件订阅 |
| SourceType | U8 | 1B | 0:BMA 1:SP 2:eSight |
| MaskReserved | U16 | 2B | 0 |
| RegisterFlag | U8 | 1B | 0:注销 1:注册 |
| ProtocolType | U8 | 1B | 0:IPV4 1:IPV6 |
| HttpType | U8 | 1B | 0:HTTP 1:HTTPS |
| BobChannelType | U8 | 3B | 0:veth 1:cdev 2:usb |
| Reserved | U8 | 3B | 0 |
| IpAddr | U8 | 16B | IPV4时前4个字节为有效值,其余填充0 |
| Port | U8 | 2B |
- 接收参数详解
| data | baseType | len | value |
|---|---|---|---|
| CompletionCode | U8 | 1B | |
| SoftwareId | U8 | 1B | |
| ProtocolType | U8 | 1B | 0:IPV4 1:IPV6 |
| IpAddr | U8 | 16B | IPV4时前4个字节为有效值 |
| Port | U8 | 2B |
当使用bma脚本发送IPMI命令时,通过edma传输,当使用ipmitool工具发送IPMI命令时,通过BT通道
- 为什么使用edma通道作为注册和心跳监控IPMI命令的收发?
- IPMI命令对于BMA与BMC的建立连接尤为重要,但并非所有环境都能保证安装ipmitool工具,为了避免耦合,提高可靠性,使用edma
- edma通道的传输效率更高(直接对字符设备精选操作,避免频繁的开启子进程调用ipmitool命令)
- edma通道传输更安全,BMA对某个字符设备时单独占用使用的,这样可以避免其他应用程序BMA IPMI 命令的收发的干扰
- BMC侧可以通过通道进行限制,保证某些仅BMA需要使用的IPMNI命令必须要通过edma通道的方式精选发送,减少命令暴露面
- 消息格式 BT通道:
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
|---|---|---|---|---|
| Length | NetFn/LUN, 转换成edma通道需要左移2位 | Seq | Cmd | Data |
edma/字符设备通道:
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 |
|---|---|---|---|---|---|
| MsgType | Length | NetFn/LUN, 转换成edma通道需要左移2位 | Seq | Cmd | Data |
1.2 心跳监控
双方建立连接后,BMA会定期向BMC发送一条IPMI命令,host_agent维护一个心跳计数器,每次接收到该IPMI命令就对计数器自增,一分钟计数器无变化则认为心跳丢失
1.3 转发与透传
针对BMA的相关请求,redfish进行预处理后封装相关的请求信息,调用host_agent RPC方法转发到BMA处
- 白名单:BMA与BMC建链成功后,会向BMC发送一条redfish请求,设置过滤白名单,在该白名单的redfish请求会被透传转发到BMA侧,不在其中的请求会被拦截在redfish模块
- 查询设置白名单:busctl --user get-property bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms bmc.kepler.Systems.Sms WhiteList
- 设置BMA侧默认白名单配置文件:登录OS后进入路径修改文件WhiteURLList.ini: cd /opt/huawei/ibma/lib/comnon/config/ 编辑文件添加内容:"^/redfish/v1/_SmsID/.*$"
1.4 资源管理
根据数据更新频率把资源分为两大类:更新频率高的资源、更新频率低的资源。对于这两大类资源,交互的策略有区别:
- 频率高:轮询策略(CPU使用率、内存使用率等)
- 频率低:订阅策略(网卡数量,硬盘数量等)
2 net_nat特性
网路地址转换,也叫做网络遮蔽后者ip遮蔽,是一种在IP数据包通过路由器或者防火墙重修来源IP地址或者目的IP地址的计数。这种计数被普遍使用在有多台主机但只通过一个共有IP地址方位英特网的私有网络中。他是一个方便且得到广泛应用的计数。但是NAT也让主机之间的通信变得复杂,导致通信效率变低。