10.02.2020

Технология IPMI и её возможности

Для того чтобы иметь возможность удаленно управлять одним или множеством серверов, существует технология IPMI, которая способна значительно упростить работу системным администраторам и облегчить обслуживание серверной инфраструктуры.

При помощи функционала технологии возможно своевременно реагировать на критические ошибки, а также эффективно осуществлять мониторинг состояния параметров всех ключевых компонентов системы.

Что такое IPMI

Аббревиатура IPMI расшифровывается как Intelligent Platform Management Interface (интеллектуальный интерфейс управления платформой).

Используя IPMI можно произвести удаленное подключение к серверу, осуществлять просмотр состояния оборудования и управлять его работой:

Допустим, администратор перенастраивает сеть на сервере, допускает ошибку в конфигурации и теряет доступ по SSH. Что делать в такой ситуации? Можно подключиться по IPMI и поменять настройки.

Одним из главных достоинств IPMI является независимость от работы процессора, BIOS или ОС (операционной системы) управляемой платформы.

Можно просмотреть журрнал событий для поиска выхода из строя каких либо компонентов системы, или совершить удаленную перезагрузку сервера, если зависла ОС и система "не отвечает". Есть возможность управления даже выключенным сервером - достаточно лишь, чтобы сервер был подключен к электрической сети.

После того как сервер смонтировали и подключили к сети, настраивают BIOS и IPMI. Дальше можно выйти из шумной серверной и продолжить настраивать оборудование удаленно. Как только первоначальная настройка закончена, клиенты Selectel могут управлять работой выделенных серверов и серверов произвольной конфигурации через IPMI.

Историческая справка

Технологию разработали ведущие компании в отрасли Intell, Dell, NEC, и Hewlett-Packard, первая спецификация IPMI v1.0 разработана в 1998 году, на практике были обнаружены уязвимости и недостатки, текущая версия интерфейса IPMI 2.0 обявлена в декабре 2004 года, в ней исправленны предыдущие ошибки и значительно расширен функционал в сравнении с первой версией.

IPMI не требует использования специализированных запатентованных устройств и определенных микроконтроллеров, потому как стандартизирует интерфейс общения, а не конкретную реализацию в аппаратной части оборудования. Каждый производитель разрабатывает собственное оборудование IPMI, придерживаясь спецификаций технологии.

В таблице представленны наименования технологии IPMI, встроенной в серверные платформы различных производителей:

Производитель

Технология на основе IPMI

DELL

iDRAC (Integrated Dell Remote Access Card)

HP

iLO (Integrated Lights-Out)

Supermicro

SIM (Supermicro Intelligent Management)

Lenovo

IMM (Integrated Management Module)

IBM

IMM (Integrated Management Module)

Cisco

Cisco IMC (Integrated Management Controller)

Компании устанавливают свои цены на предоставляемую технологию. Если стоимость реализации IPMI увеличивается, цена аренды сервера растет, так как напрямую зависит от стоимости расходников.

Решения производителей отличаются между собой:

На деле для комфортной работы с удаленной консолью и своевременного оповещения о проблемах достаточно базового функционала IPMI.

Хотя производители предоставляют измененный и доработанный IPMI, реализация его архитектуры остается схожей. Разберемся, из чего состоит технология, опираясь на официальную спецификацию компании Intel.

Базовые компоненты любого IPMI

Контроллеры управления

BMC (Baseboard Management Controller) — является микроконтроллером на базе SoC (системы на кристале), через него как раз и происходит удаленное управление сервером. Контроллер BMC как раз и выполняет удаленное управление сервером, имеет своё программное обеспечение и сетевой интерфейс, который распаивают на материнской плате или подключают в виде платы по шине PCI management bus. 

Базовые компоненты архитектуры IPMI

BMC питается от дежурного напряжения материнской платы, то есть работает всегда, вне зависимости от состояния сервера.

Для расширения возможностей базового управления существует возможность подключения к BMC дополнительных контроллеров управления (Management Controllers, MCs), чтобы расширить возможности базового управления. В то время как BMC управляет основными функциями системы, MCs могут подключатся для мониторинга различных аппаратных подсистем: RAID накопителей, периферийных устройств, резервных источников питания,и т.д.

Зачастую MCs могут поставляться как самостоятельные платы, отдельными от центрального контроллера BMC, потому они также имеют названия Satellite Controllers. Центральный контроллер BMC может быть только один, а вот дополнительных контроллеров может быть установленно несколько.

Интерфейс подключения контроллера BMC называется IPMB (Intelligent Platform Management Bus ― шина интелектуального управления платформой). IPMB — это шина на основе I2C (Inter-Integrated Circuit), по которой BMC перенаправляет команды управления к различным частям архитектуры:

Архитектура IPMI реализована так, что удаленный администратор не имеет прямого доступа к компонентам системы. Например, чтобы получить данные с сенсоров, удаленный администратор посылает команду на BMC, а BMC в свою очередь обращается к сенсорам.

Кроме передачи команд на BMC можно настроить автоматическое выполнение действий контроллером с помощью следующих механизмов: 

PEF (Platform Event Filtering)

BMC хранит таблицу событий с информацией о том, на какие события реагировать и какие действия предпринять. Когда BMC получает сообщение о событии, он сравнивает данные с таблицей и выбирает, как реагировать на событие. Реакция включает такие действия, как выключение, перезагрузка системы, формирование оповещения

Watchdog Timer

Таймер настраивается на выполнение действия по истечении заданного промежутка времени. Действия включают в себя выключение, перезагрузку сервера, прерывание процессов. Если в качестве таймаута задать значение 0, действие будет выполнено сразу же. В зависимости от реализации Watchdog может опрашивать систему о состоянии раз в заданный временной интервал. Если система не отвечает (например, при зависании), инициируется действие

Firmware Firewall

Некоторые действия BMC, реализуемые в отдельно стоящем сервере, могут нарушить работу модульных платформ (например, блейд-сервера). Чтобы предотвратить возможные проблемы, файрвол позволяет BMC блокировать настройки, команды IPMI и операции записи, поступающие через системный интерфейс. Файервол также содержит набор команд, через которые можно узнать, какие команды и функции управления доступны для конкретной платформы

Настройка PEF и Watchdog Timer в BIOS сервера

Энергонезависимое хранилище

Энергонезависимое хранилище остается доступным даже при сбое CPU сервера, например, через локальную сеть; состоит из трех областей:

Модули системы генерируют (Event Generator) или получают (Event receiver) события. MCs выступают в качестве генераторов событий, а BMC в архитектуре может выполнять обе роли. BMC получает сообщения о событиях по системному интерфейсу и IPMB, затем регистрирует их в System Event Log (SEL).

К реализации SEL есть обязательные требования:

Команды IPMI допускают чтение и удаление SEL. Поскольку память SEL ограничена, периодически журнал надо проверять и очищать, чтобы записывались новые события. В настройках BMC можно сконфигурировать автоочистку SEL. Автоочистка на различных платформах происходит по-разному — стирая старые записи, чтобы заполнить новые, или очищая всю историю.

Сообщение о событии несет в себе информацию из областей SDR Repository и FRU Info.

Записи SDR — это данные о типах и количестве сенсоров, их возможности генерировать события, типы показаний. SDR также содержат записи о количестве и типах устройств, подключенных к IPMB. Записи SDR хранятся в области памяти, которая называется SDR Repository (Sensor Data Records Repository).

Записи FRU содержат информацию о серийных номерах и моделях деталей различных модулей системы — процессора, платы памяти, платы ввода-вывода, контроллерах управления.

Информация FRU может предоставляться через MC (командами IPMI) либо через доступ к чипам энергонезависимой памяти SEEPROM (Serial Electrically Erasable Programmable Read Only Memory), подключенным по шине Private Management Bus. По этой шине контроллеры общаются через низкоуровневые I2C-команды с устройствами, которые не поддерживают IPMI-команды.

Практическое применение

Допустим, клиент жалуется на зависания сервера, но в логах операционной системы всё в порядке. Смотрим SEL ― видим ошибки по одной из планок оперативной памяти с указанием информации о слоте, в котором она находится. Меняем ― сервер начинает работать как часы.

Выше мы разобрали основные модули архитектуры IPMI. Теперь обратимся к структуре передаваемых команд и посмотрим, по каким интерфейсам происходит удаленное подключение.

Структура IPMI-команд

IPMI передает сообщения в формате запрос-ответ. Запросы — это команды. Команды инициируют действия и устанавливают значения. Формат запрос-ответ делает возможным одновременное общение нескольких контроллеров по одной шине.

Сообщения IPMI содержат базовый набор полей, единый для всех команд:

Кроме того, в ответе всегда передается Completion Code, который сообщает результат выполнения команды. Если в ходе выполнения запроса произошла ошибка, будет отправлен ненулевой код, соответствующий событию.

Каналы, по которым передаются сообщения, можно разделить на три категории с соответствующими интерфейсами:

В этой модели BMC можно воспринимать как коммутатор, который связывает между собой интерфейсы системы (в терминологии спецификации ― Bridging):

При доставке через разные интерфейсы архитектуры базовый набор полей дополняется номерами каналов и фреймами. Например, протокол IPMB добавляет адресные поля и поля для проверки целостности передаваемых данных, а LAN инкапсулирует команды IPMI в UDP/IP пакеты.

Интерфейсы удаленного доступа

В начальной версии IPMI удаленная консоль подключалась к модулю BMC через последовательный интерфейс (Serial Interface). Спецификация IPMI v2.0 базируется на использовании сетевого интерфейса (LAN Interface).

Интерфейс LAN предоставляется через выделенный сетевой порт BMC со своим IP-адресом. При передаче через LAN сообщения IPMI проходят несколько этапов инкапсуляции:

Инкапсуляция сообщений IPMI при передаче через LAN

Последовательный интерфейс для подключения удаленной консоли к BMC уже не используется, однако он нужен для реализации двух функций:

Serial Port Sharing — это возможность использовать общий последовательный коннектор между последовательными контроллерами BMC и управляемой системы. Обычно Serial Port Sharing используется для реализации BIOS Console Redirection, то есть перенаправления BIOS-консоли на модуль BMC.

Serial-over-LAN нужен для взаимодействия с компонентами системы, которые понимают только последовательный интерфейс общения. Еще можно из консоли сервера посылать команды напрямую к устройствам сервера (чипам, картам, дискам и так далее). SoL реализован так, чтобы работать совместно с функцией Serial Port Sharing.

Сеанс и аутентификация

Для LAN и последовательного интерфейса началу передачи IPMI-сообщений предшествует установление сеанса, в ходе которого формируются пакеты данных IPMI Session.

Установление сеанса — это аутентификация конкретного пользователя. Сеанс должен быть активирован перед началом передачи IPMI-сообщений по следующему алгоритму:

Алгоритм активации сеанса

  1. Удаленная консоль запрашивает данные по аутентификации у BMC
  2. BMC посылает ответ о поддерживаемых типах аутентификации (none, password, алгоритмы MD2 и MD5 и т.д.)
  3. Удаленная консоль посылает команду о выбранном типе аутентификации и отправляет логин пользователя
  4. Если пользователь имеет привилегии доступа к каналу, BMC посылает ответ, содержащий ID сеанса. Благодаря назначению ID, несколько сеансов могут работать одновременно на одном канале (согласно требованиям спецификации ― не менее четырех одновременных сессий)
  5. Удаленная консоль посылает запрос активации сеанса. Запрос содержит ID сеанса и аутентификационную информацию (имя пользователя, пароль, ключи ― зависит от выбранного типа аутентификации)
  6. BMC верифицирует информацию о пользователе, утверждает ID сеанса и посылает ответ об активации

Сеансы автоматически прерываются, если в течение заданного интервала не выполняется никаких действий или если соединение разорвано.

Доступ к BMC можно заблокировать, отправив одновременно множество запросов об активации сеанса, тогда все ресурсы будут использоваться для отслеживания сессий, требующих активации. Чтобы предотвратить возможную атаку, в реализации BMC рекомендуется применять алгоритм LRU (Last Recently Used). Алгоритм утверждает ID сеанса для наиболее раннего запроса активации сеанса. Например, удаленная консоль запускается через браузер в noVNC-сессии. Если открыть несколько вкладок с запущенными сессиями, текстовый ввод будет доступен в наиболее ранней открытой вкладке.

Когда IPMI становится недоступен

IPMI помогает восстановить работоспособность сервера при его сбое. Однако может случиться так, что становится недоступна система удаленного управления. Сбои в работе IPMI можно разделить на четыре категории:

Перечисленные факторы влияют как на работу IPMI, так и на сам сервер. Модуль BMC — это независимый от сервера чип, и отказ данного микроконтроллера говорит об отказе сервера в 90% случаев.

IPMI на практике

Управлять сервером по IPMI можно через веб-браузер, утилиты, предоставляемые производителями, и утилиты с открытым исходным кодом.

Веб-интерфейс у каждой реализации IPMI свой, но принцип доступа остается одинаковым:

  1. Ввести в адресную строку IP-адрес порта BMC
  2. Ввести логин и пароль. Иногда эта информация указана непосредственно на оборудовании

В SERVER-SHOP мы работаем с IPMI-модулями компаний Dell, HPE, Lenovo. В качестве примера посмотрим на веб-интерфейс Dell iDRAC:

Веб-интерфейс панели управления Dell

Интерфейс HPE iLO

Карточка с информацией о сервере

Консоль открывается в браузере и подстраивается под размер экрана. При желании консоль можно использовать даже через телефон или планшет.

Сессия прерывается, если выйти из панели.

Заключение

IPMI — это полностью автономный компонент серверной платформы, который не зависит ни от операционной системы, ни от BIOS, ни от CPU сервера.

Благодаря IPMI, затраты на обслуживание серверных систем сокращаются, а жизнь системных администраторов становится проще. Нет необходимости постоянного присутствия рядом с оборудованием ― его работа контролируется удаленно по сети.

В этой статье мы рассмотрели основные компоненты IPMI. Однако детали технологии обширны. Талантливые разработчики, опираясь на спецификацию, могут создавать свое IPMI-оборудование и open-source инструменты, попутно устраняя недостатки текущей спецификации и открывая новые возможности удаленного управления.