Как понять SNMP MIB?

Вопрос или проблема

Насколько я понимаю, базы данных SNMP Management Information Base используются Станциями управления сетью для перевода данных от агентов SNMP в понятную форму. Например, в случае sysUpTimeInstance:

$ snmpwalk -v 2c -c public 10.10.10.1 sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (28267576) 3 дня, 6:31:15.76
$ 

..Я предполагаю, что именно благодаря MIB 28267576 преобразуется в 3 дня, 6 часов, 31 минуту, 15.76 секунды? Теперь я ищу правильный файл MIB, чтобы увидеть эту трансляцию:

$ grep -ir sysUpTimeInstance /usr/local/share/smi/mibs/
/usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB:sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }
/usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB:    DEFVAL { sysUpTimeInstance }
/usr/local/share/smi/mibs/ietf/DISMAN-EXPRESSION-MIB:sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }
/usr/local/share/smi/mibs/ietf/DISMAN-EXPRESSION-MIB:    DEFVAL      { sysUpTimeInstance }
$ 

..и похоже, что оно определено в файле /usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB. Как мне понять это sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }?

Это может быть очень утомительным, если выполнять все вручную. Существуют инструменты, такие как snmptranslate, которые выполняют такую работу за вас. Попробуйте snmptranslate -M /path/to/mibs -m ALL -Pu -Tso|grep -B1 sysUpTimeInstance. Чтобы увидеть все детали sysUpTime, используйте snmptranslate -Td -OS .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime. Это покажет вам, что он измеряется в TimeTicks.

Но чтобы ответить на ваш вопрос, файлы MIB пишутся на ASN.1, где каждый объект может основываться на всех предыдущих объектах. Помимо прочего, например, описаний и типов объектов и т.д., создаются OID, также известные как Object IDentifiers, которые сопоставляют OID с именами, такими как .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance

Для этой записи sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } грубо переводится как “OID для sysUpTimeInstance равен OID sysUpTime плюс ‘.0’, а MIB равен MIB sysUpTime плюс ‘.sysUpTimeInstance’

Чтобы увидеть, что такое OID и остальная часть MIB для sysUpTime, вы должны посмотреть раньше в файле. Имейте в виду, что он мог быть импортирован из другого файла. В этом случае он был импортирован, так что если вы посмотрите секцию IMPORTS, вы увидите, что sysUpTime был импортирован из SNMPv2-MIB. Если вы затем проверите этот файл, то увидите определение sysUpTime, и в этом определении вы найдете ::= { system 3 }.

До сих пор у нас есть .3.0 и system.sysUpTime.sysUpTimeInstance, что является просто последней частью OID и полным именем MIB. Затем мы можем проследить system обратно к его определению и т.д., и т.д. Следуя этой цепочке через файлы, вы в итоге получите полный OID и полный MIB.

Конечно, вы можете просто использовать snmptranslate, как показано в первом абзаце, чтобы сделать все это за вас. Это покажет вам MIB и OID. Для большинства из нас, это обычно самый дальний предел, к которому нам нужно идти.

Для получения дополнительной информации см.:

  • Demystifying the SNMP MIB (рекламный буклет, но также содержит хороший обзор MIB)
  • ASN.1 – Википедия

Ответ или решение

Теория

Simple Network Management Protocol (SNMP) и его связанные компоненты, такие как Управляющие Базы Информации (MIB), являются стандартами управления сетью, которые позволяют мониторинг, упращение и контроль за различными элементами сетевого оборудования. MIB в контексте SNMP выступает как база данных, где хранятся описания всех ресурсов, которыми можно управлять через SNMP. Каждый объект в этой базе данных имеет свой уникальный идентификатор, который называется Object Identifier (OID).

OID организуются в иерархическую структуру, похожую на дерево, где каждое "ветвление" представляет собой последовательность чисел, разделённых точками. ASN.1 (Abstract Syntax Notation One) — это язык описания данных, используемый для формальной спецификации объектов в MIB, включая OID.

Пример

Вы указываете на sysUpTimeInstance как на пример использования MIB. Рассмотрим детально, как это выглядит:

Когда вы запускаете команду snmpwalk -v 2c -c public 10.10.10.1 sysUpTimeInstance, она извлекает информацию о времени работы системы (sysUpTime) с устройства за последние 3 дня, 6:31:15.76. В выводе команда преобразует "28267576" в эти человечески понятные значения, благодаря MIB.

Теперь, чтобы понять, что означает запись sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }, необходимо понимать, как объекты связаны в MIB. Эта запись означает, что sysUpTimeInstance — это подкомпонент sysUpTime, к которому добавлено .0. Это полезно в контексте, когда вы хотите идентифицировать конкретные инстансы или варианты более общего объекта.

Применение

Как понять и работать с MIB?

  1. Инструменты для понимания MIB:

    • Используйте snmptranslate — это мощный инструмент, который автоматически переводит OID в более читаемые имена их иерархий, и обратно. Например, команда snmptranslate -M /path/to/mibs -m ALL -Pu -Tso|grep -B1 sysUpTimeInstance поможет проследить связи и зависимости для sysUpTimeInstance через все MIB.
  2. Чтение исходных файлов MIB:

    • В файле MIB следуйте цепочке определений для каждого идентификатора (IMPORTS секция), чтобы понять происхождение объектов и их места в иерархии. Это позволяет вручную строить понимание MIB и OID.
  3. Практическое использование:

    • Если вы работаете над мониторингом или настройкой оборудования, убедитесь, что у вас корректная версия MIB, которая соответствует вашему устройству и прошивке.
    • MIB-файлы используются параметрами управления и наборов данных, которые могут быть настроены и извлечены для анализа и диагностики.

Пример прикладного использования:

Импорт MIB из одного файла в другой, как в вашем примере с SNMPv2-MIB, позволяет разделить и переиспользовать компоненты MIB в различных конфигурациях и контекстах. Это позволяет эффективно управлять большим количеством разнообразных устройств, интегрируя их мониторинг в единую систему.

Помните, что для комплексного мониторинга корпоративной сети необходимо не только использование стандартных MIB-файлов, но и создание кастомизированных объектов, специфичных для вашего сетевого окружения.

Заключение

Работа с SNMP и MIB-файлами может показаться сложной на первый взгляд, но с помощью правильных инструментов и методик (таких как использование snmptranslate и изучение иерархии объектов в MIB) вы сможете эффективно управлять и контролировать любые сетевые устройства. Это возможно благодаря тому, что MIB предоставляет формализованный способ обращения ко всем элементам сетевого устройства. Выбор верных инструментов и понимание принципов работы с ASN.1 облегчит эту задачу.

Оцените материал
Добавить комментарий

Капча загружается...