host_agent
更新时间: 2026/02/27
在Gitcode上查看源码

host_agent 常用接口

IPMI接口

  1. BMA向BMC注册
  2. 心跳计数
  3. 注册SmsId
  4. 获取通信使用的Http协议类型
  5. 获取Sms名称
  6. 设置Sms名称
  7. 配置BMC的转发跳转命令

资源协助接口

接口方法请求参数响应说明
bmc.kepler.Systems.SmsSetForwardWhiteListWhiteListHTTP响应体设置百名(该接口提供给BMA使用)
bmc.kepler.Systems.SmsForwardRequestredfish请求体HTTP响应体请求转发(使用postman请求BMA信息默认使用盖接口)
bmc.kepler.Systems.SmsForwardEventBMA上报事件消息HTTP响应体事件变更上报(该接口提供给BMA使用)
bmc.kepler.Systems.SmsUpdateSpecificResource资源类型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的连接与断开

  • 发送参数详解
databaseTypelenvalue
netfnU81B0x06
cmdU81B0x58
ParaSelectorU81B0xc4
MaskRedfishU81B0:不支持事件订阅 1:支持事件订阅
SourceTypeU81B0:BMA 1:SP 2:eSight
MaskReservedU162B0
RegisterFlagU81B0:注销 1:注册
ProtocolTypeU81B0:IPV4 1:IPV6
HttpTypeU81B0:HTTP 1:HTTPS
BobChannelTypeU83B0:veth 1:cdev 2:usb
ReservedU83B0
IpAddrU816BIPV4时前4个字节为有效值,其余填充0
PortU82B
  • 接收参数详解
databaseTypelenvalue
CompletionCodeU81B
SoftwareIdU81B
ProtocolTypeU81B0:IPV4 1:IPV6
IpAddrU816BIPV4时前4个字节为有效值
PortU82B

当使用bma脚本发送IPMI命令时,通过edma传输,当使用ipmitool工具发送IPMI命令时,通过BT通道

  • 为什么使用edma通道作为注册和心跳监控IPMI命令的收发?
    • IPMI命令对于BMA与BMC的建立连接尤为重要,但并非所有环境都能保证安装ipmitool工具,为了避免耦合,提高可靠性,使用edma
    • edma通道的传输效率更高(直接对字符设备精选操作,避免频繁的开启子进程调用ipmitool命令)
    • edma通道传输更安全,BMA对某个字符设备时单独占用使用的,这样可以避免其他应用程序BMA IPMI 命令的收发的干扰
    • BMC侧可以通过通道进行限制,保证某些仅BMA需要使用的IPMNI命令必须要通过edma通道的方式精选发送,减少命令暴露面
  • 消息格式 BT通道:
Byte1Byte2Byte3Byte4Byte5
LengthNetFn/LUN, 转换成edma通道需要左移2位SeqCmdData

edma/字符设备通道:

Byte1Byte2Byte3Byte4Byte5Byte6
MsgTypeLengthNetFn/LUN, 转换成edma通道需要左移2位SeqCmdData

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也让主机之间的通信变得复杂,导致通信效率变低。