ipmi是一个适用于bmc的标准协议,开发者可以通过ipmi oem cmd和bmc交互。
oem cmd的实现与组成(均为unsigned char类型):NetFunction、Cmd、Request_data、Response_data(Response_data的组成:Res[0] + Res_data)
发送oem cmd的一般格式为:NetFunction + Cmd + Request_data
oem cmd旨在为开发人员设计和调试,供测试人员测试,客户一般不会发送oem cmd,除非bmc开发人员提供bmc管理手册,不然使用oem cmd对于客户来说将是一场噩梦。
并且oem cmd为一对一管理bmc,不同厂家的bmc对于oem cmd的Response_data也可能不太一样,因此redfish诞生。
redfish可以使用post main或者linux环境发送url,返回的数据根据redfish规范,呈现为jason格式的字符串,上层管理人员可以通过脚本批量监控&控制整个机房的bmc。
优化:AMI传统的redfish在redies数据库获取内容,bmc需要定时同步数据到redies,大大增加bmc的负荷(体现在Web,sel,sdr中)。
反观web端:也是通过发送url,解析返回的response中的jason信息。因此,放弃同步redies模块,使用类似web的构架发送url,返回的数据信息遵循redfiah规范,大大降低bmc的负荷,实测web,sel ,sdr等信息访问速度大大提高,并且同样可以使用post main和Linux发送url,最终效果和传统redfish一样,并且大大降低了开发人员开发的难度(传统redfish用Lua开发,优化方案使用c开发)。