IPMI技术概述


为了远程管理服务器平台的状态,系统管理员和工程师使用IPMI技术,大大简化了它们的使用寿命。 现在,您不必每次都跑到服务器上按“重置”按钮-您可以坐在舒适的椅子上在家中时及时响应关键问题。 本文将介绍IPMI的基本组件以及该技术如何工作的详细信息。

什么是IPMI?


缩写IPMI代表智能平台管理接口。 通过IPMI,您可以远程连接到服务器并管理其操作:

  • 监视设备的物理状况,例如,检查系统各个组件的温度,电压水平,风扇速度
  • 以自动或手动模式还原服务器(远程系统重新启动,打开/关闭电源,加载ISO映像和更新软件)
  • 管理外围设备
  • 保留事件日志
  • 存储有关所用设备的信息

假设工程师在服务器上重新配置了网络,出现配置错误,并且无法通过SSH访问。 现在如何“到达”服务器? 您可以通过IPMI连接并更改设置。

IPMI很好,因为无论托管平台的处理器,BIOS或操作系统(OS)如何,上述功能均可用。 例如,如果操作系统死机,则可以远程重新引导服务器,或者在系统事件日志中查找CPU故障的原因。 您甚至可以管理关闭的服务器-将服务器连接到电网就足够了。

安装服务器并将其连接到网络后,Selectel工程师将配置BIOS和IPMI。 然后,您可以退出嘈杂的服务器机房并继续远程配置设备。 初始设置完成后,Selectel客户端即可通过IPMI管理专用任意配置服务器

历史背景


IPMI v1.0规范的第一个版本由英特尔,戴尔,NEC和惠普在1998年联合开发。 在实践中,发现了在后续版本的IPMI v1.5和v2.0中修复的漏洞和弱点。

IPMI规范标准化了通信接口,而不是硬件中的特定实现,因此IPMI不需要使用特殊的专利设备和某些微控制器。 制造商遵循规范,开发了自己的嵌入在服务器平台中的IPMI设备:
制造商基于IPMI的技术
思科公司思科IMC(集成管理控制器)
了戴尔iDRAC(集成的Dell远程访问卡)
惠普iLO(集成无灯)
伊本IMM(集成管理模块)
联想IMM(集成管理模块)
超微SIM(超微智能管理)
公司为提供的技术定价。 如果IPMI实施成本增加,则服务器租金价格将上涨,因为它直接取决于耗材成本。

制造商的解决方案彼此之间有所不同:

  • 设备状态信息的可见性
  • 一套独特的应用程序,用于在任何组件出现故障时恢复服务器运行状况
  • 能够收集服务器所有组件的统计信息,包括通过扩展卡PCI,NVM等连接的统计信息。
  • 不仅在服务器硬件中使用技术,而且通过PCI-Express扩展卡在普通计算机中使用技术

实际上,为了使远程控制台舒适地工作并及时通知问题,基本的IPMI功能就足够了。

尽管制造商提供了经过修改和修订的IPMI,但其体系结构的实现仍然相似。 让我们看看基于英特尔官方规范的技术。

任何IPMI的基本组件


控制器


该体系结构的中心是IPMI的“大脑”,即BMC(基板管理控制器)微控制器。 通过它,可以进行远程服务器控制。 实际上,BMC是一台具有软件和网络接口的独立计算机,可以焊接到母板或通过PCI管理总线作为扩展卡连接。


BMC由主板的备用电压供电,也就是说,无论服务器状态如何,BMC始终可以工作。

您可以将其他管理控制器(MC)连接到BMC,以扩展基本管理的功能。 例如,当主系统由BMC功能控制时,MC连接起来以监视各种子系统:冗余电源,RAID驱动器,外围设备。

MC带有独立于中央BMC的独立板,这就是为什么它们也被称为卫星控制器的原因。 可能有几个其他控制器,但中央BMC是一个。

控制器通过IPMB(智能平台管理总线-智能平台管理总线)接口连接到BMC。 IPMB是基于I2C(内部集成电路)的总线,BMC通过该总线将控制命令重定向到体系结构的各个部分:

  • 与其他控制器(MC)通信
  • 读取传感器数据(传感器)
  • 访问非易失性存储

实施IPMI体系结构,以便远程管理员无法直接访问系统组件。 例如,要从传感器接收数据,远程管理员将命令发送到BMC,然后BMC引用传感器。

除了向BMC发送命令外,您还可以使用以下机制配置控制器自动执行动作:
PEF(平台事件过滤)BMC存储事件表,其中包含有关要响应的事件以及要采取的操作的信息。 当BMC收到事件消息时,它将数据与表进行比较,并选择如何响应事件。
反应包括关闭,重新启动系统,生成警报等操作
看门狗定时器计时器配置为在指定时间段后执行操作。 操作包括关闭,重新启动服务器,中断进程。 如果将超时值设置为0,则将立即执行操作。
根据实现的不同,看门狗可以在给定的时间间隔内向系统询问一次有关状态的信息。 如果系统没有响应(例如,当挂起时),则触发操作
固件防火墙在独立服务器中实施的某些BMC操作可能会破坏模块化平台(例如刀片服务器)的运行。 为了防止可能的问题,防火墙允许BMC通过系统界面阻止设置,IPMI命令和写入操作。
防火墙还包含一组命令,通过这些命令,您可以找出特定平台可以使用哪些命令和管理功能。

非易失性存储


即使服务器CPU发生故障(例如通过本地网络),非易失性存储仍然可用。 包括三个方面:

  • 系统事件日志(SEL)-系统事件日志
  • 传感器数据记录(SDR)存储库-存储传感器数据的存储库
  • 现场可更换部件(FRU)信息-有关系统模块的清单信息

系统模块生成(事件生成器)或接收(事件接收器)事件。 MC充当事件生成器,而体系结构中的BMC可以同时扮演这两个角色。 BMC通过系统接口和IPMB接收事件消息,然后将它们记录到系统事件日志(SEL)中。

实施SEL有强制性要求:

  • SEL在内存中存储至少16个事件
  • 不管BMC访问和被管理平台的状态如何,都可以访问存储在SEL中的信息

IPMI命令读取和删除SEL。 由于SEL内存有限,因此需要定期检查和清除日志,以便记录新事件。 在BMC设置中,您可以配置SEL自动清洁。 在不同平台上进行自动清理的方式有所不同-擦除旧记录以填充新记录,或清除整个故事。

事件消息包含来自SDR存储库和FRU信息区域的信息。

SDR记录是有关传感器类型和数量,它们生成事件的能力以及读数类型的数据。 SDR还包含连接到IPMB的设备的数量和类型的记录。 SDR记录存储在称为SDR存储库(传感器数据记录存储库)的存储区域中。

FRU记录包含有关各种系统模块(处理器,存储卡,I / O卡,控制器)的序列号和零件型号的信息。

可以通过MC(IPMI命令)或通过访问通过专用管理总线连接的非易失性存储芯片SEEPROM(串行电可擦可编程只读存储器)来提供FRU信息。 控制器通过低级I2C命令通过此总线与不支持IPMI命令的设备进行通信。

实际应用


假设客户端抱怨服务器死机,但是操作系统日志中的所有内容都是正常的。 我们看一下SEL-我们在RAM插槽之一上看到错误,表明有关它所在的插槽的信息。 更改-服务器开始像时钟一样工作。


上面,我们检查了IPMI体系结构的基本模块。 现在,让我们看一下所传输命令的结构,并查看用于远程连接的接口。

IPMI命令结构


IPMI发送请求-响应消息。 请求是命令。 命令启动动作并设置值。 请求-响应格式使得同一总线上的多个控制器可以同时通信。

IPMI消息包含所有命令共有的基本字段集:

  • 网络功能(NetFn)为命令分配该命令所属的群集的值(机箱命令,事件,存储等)
  • 需要“ 请求/响应标识符”字段来区分请求和响应
  • 请求者的ID-有关消息来源的信息。 例如,对于IPMB,此信息包含设备的LUN(逻辑单元号)
  • 响应者的ID将请求发送给所需的响应者
  • 命令 -网络功能团队中唯一的
  • 数据 -其他参数(例如,响应中返回的数据)

此外,响应始终传递完成代码,该代码报告命令的结果。 如果在执行请求期间发生错误,则将发送与事件对应的非零代码。

通过相应的接口,可以将传输消息的通道分为三类:

  • BMC-MC,传感器,存储(IPMB)
  • BMC-托管平台(系统界面)
  • BMC-远程管理员(LAN,串行接口)

在此模型中,可以将BMC视为互连系统接口的交换机(在规范术语中为“桥接”):

  • 串行↔IPMB
  • 串行↔系统接口
  • 局域网↔IPMB
  • LAN↔系统接口
  • 串行↔PCI管理总线
  • 局域网↔PCI管理总线
  • 其他组合,包括串行↔LAN

通过各种体系结构接口交付时,基本字段集将由通道号和帧来补充。 例如,IPMB协议添加地址字段和字段以验证所传输数据的完整性,并且LAN将IPMI命令封装在UDP / IP数据包中。

远程访问接口


在IPMI的初始版本中,远程控制台通过串行接口(串行接口)连接到BMC模块。 IPMI v2.0规范基于网络接口(LAN接口)的使用。

通过专用的BMC网络端口及其IP地址提供LAN接口。 通过LAN传输IPMI消息时,封装分为以下几个阶段:

  • IPMI消息是在IPMI会话数据包中生成的(在本文的后面,我们将仔细研究IPMI会话的形成)
  • IPMI会话数据包使用RMCP(远程管理控制协议)封装
  • RMCP数据包以UDP数据报形式形成
  • 以太网帧已添加


不再使用用于将远程控制台连接到BMC的串行接口,但是需要使用串行接口来实现两个功能:

  • 串口共享
  • 局域网串行(SoL)

串行端口共享是在串行BMC和受管系统之间使用公共串行连接器的能力。 通常,串行端口共享用于实现BIOS控制台重定向,即将BIOS控制台重定向到BMC模块。

LAN上串行需要与只能理解串行通信接口的系统组件进行交互。 您还可以将命令从服务器控制台直接发送到服务器设备(芯片,卡,磁盘等)。 SoL实现为与“串行端口共享”功能结合使用。

会话和认证


对于LAN和串行接口,在开始IPMI消息传输之前先建立一个会话,在此期间将生成IPMI会话数据包。

会话建立是对特定用户的身份验证。 根据以下算法,在发送IPMI消息之前必须激活会话:


  1. 远程控制台从BMC请求身份验证数据
  2. BMC发送有关支持的身份验证类型(无,密码,MD2和MD5算法等)的响应。
  3. 远程控制台发送有关所选身份验证类型的命令,并发送用户登录名
  4. 如果用户具有通道访问特权,则BMC发送包含会话ID的响应。 由于分配了ID,多个会话可以在一个通道上同时工作(根据规范的要求-至少有四个同时会话)
  5. 远程控制台发送会话激活请求。 该请求包含会话ID和身份验证信息(用户名,密码,密钥-取决于所选的身份验证类型)
  6. BMC验证用户信息,批准会话ID并发送激活响应

如果在指定的时间间隔内未执行任何操作或断开了连接,则会话将自动终止。

可以通过同时发送多个会话激活请求来阻止对BMC的访问,然后将使用所有资源来跟踪需要激活的会话。 为了防止可能的攻击,建议在BMC实现中使用LRU(最近使用过)算法。 该算法为最早的会话激活请求声明一个会话ID。 例如,在noVNC会话中通过浏览器启动远程控制台。 如果您打开多个带有正在运行的会话的选项卡,则最早的打开选项卡中将提供文本输入。

当IPMI不可用时


如果崩溃,IPMI可以帮助恢复服务器的运行状况。 但是,可能会发生远程控制系统不可用的情况。 IPMI故障可以分为四类:

  • 在网络级别。 端口损坏,非工作设备,电缆故障,双绞线压接不良
  • 在软件级别。 系统错误,BMC模块挂起,需要更新模块固件
  • 在硬件级别。 过热,关键组件(内存,处理器)故障,系统体系结构中的缺陷
  • 在营养方面。 BMC电源中断或服务器电源问题

这些因素都会影响IPMI的运行以及服务器本身。 BMC模块是与服务器无关的芯片,该微控制器的故障表示在90%的情况下服务器都发生了故障。

IPMI实践


您可以通过Web浏览器,制造商提供的实用程序和开源实用程序通过IPMI管理服务器。

每个IPMI实现都有一个Web界面,但是访问原理保持不变:

  1. 在地址栏中输入BMC端口的IP地址
  2. 输入用户名和密码。 有时,此信息直接显示在设备上。

在Selectel,我们使用Intel,Asus和Supermicro的IPMI模块。 例如,查看Supermicro Web界面:


Web界面功能也在Supermicro IPMIView图形实用程序中实现:


要通过Linux控制台管理设备,需要安装相应的实用程序(例如,用于本地和远程管理的Ipmitool或用于本地的IPMICFG )。 然后,使用控制台命令,添加IPMI设备并配置BMC。


Selectel客户端的IPMI可用于专用自定义服务器配置 。 IPMI被实现为KVM控制台,可通过控制面板在noVNC会话中运行。 为此,请在包含有关服务器信息的卡中,单击右上角的控制台图标:


控制台在浏览器中打开,并调整为屏幕大小。 如果需要,甚至可以通过电话或平板电脑使用控制台。

如果退出面板,会话将中断。


结论


IPMI是服务器平台的完全自主组件,它不依赖于操作系统,BIOS或服务器CPU。

借助IPMI,降低了服务器系统的维护成本,并使系统管理员的工作变得更加简单。 无需在设备附近永久存在-通过网络远程控制其工作。

在本文中,我们介绍了IPMI的基本组件。 但是,该技术的细节非常广泛。 依靠该规范的有才华的开发人员可以创建自己的IPMI设备和开源工具,同时消除当前规范的缺点并为远程控制开辟新的可能性。

本文中使用的材料:

IPMI v2.0规范
超微白皮书

Source: https://habr.com/ru/post/zh-CN439834/


All Articles