Что такое индексы SNMP?
Я пытаюсь выяснить, что подразумевается под индексами SNMP. Я прочитал следующее утверждение в вики:
Назначения индексов для экземпляра устройства SNMP могут меняться от опроса к опросу в основном в результате изменений, инициированных системным администратором.
Насколько я понимаю, системный администратор использует для опроса SNMP-устройств, и его программа отображает SNMP-устройства с некоторыми серийными номерами (которые мы называем индексами). Поэтому каждый раз, когда он опрашивает устройства SNMP, программа показывает эти устройства с разными индексами.
Правильно ли мое понимание? Что именно мы подразумеваем под индексами SNMP и что это означает в этом контексте?
2 ответа
Я нашел следующую информацию здесь.
Модуль snmp_index реализует абстрактный тип данных (ADT) для структуры индекса SNMP для таблиц SNMP. Он реализован в виде таблицы ets типа данных order_set, что означает, что все операции выполняются за O(log n). В таблице ключ является ИДЕНТИФИКАТОРОМ ОБЪЕКТА ASN.1.
Этот индекс используется для отделения реализации порядка SNMP от фактической реализации таблицы. Порядок SNMP, то есть реализация GET NEXT, реализован в этом модуле.
Например, предположим, что есть таблица SNMP, которая лучше всего реализована в Erlang как один процесс на строку таблицы SNMP. Предположим далее, что INDEX в таблице SNMP является строкой октетов. Структура индекса будет создана следующим образом:
snmp_index:new(string)
Для каждого нового процесса, который мы создаем, мы вставляем элемент в структуру snmp_index:
new_process(Name, SnmpIndex) -> Pid = start_process(), NewSnmpIndex = snmp_index:insert(SnmpIndex, Name, Pid), <...>
С помощью этой структуры мы можем теперь отобразить ИДЕНТИФИКАТОР ОБЪЕКТА, например, в запросе GET NEXT, на правильный процесс:
get_next_pid(Oid, SnmpIndex) -> {ok, {_, Pid}} = snmp_index:get_next(SnmpIndex, Oid), Pid.
В заключение, используя информацию, которую я знаю, и информацию, представленную в предыдущей цитате, я считаю, что индексы SNMP не должны изменяться из-за того факта, что это противоречит цели индекса (исправьте меня, если я ошибаюсь).
ОБНОВЛЕНИЕ: На мой взгляд, индекс SNMP похож на индекс базы данных, но он индексирует сетевые устройства для справки. Единственный раз, когда этот индекс должен измениться, это когда оборудование удалено или добавлено. Вы не хотели бы, чтобы ваши индексы базы данных изменились в существующей записи, потому что это может вызвать дублирование или другие проблемы. Может быть, кто-то может пролить свет на этот вопрос с другим ответом или комментарием. Я много знаю о сетевом взаимодействии, но никогда не слышал об изменениях в SNMP. Я гуглил это около часа и не придумал ничего очень полезного, кроме уже упомянутой веб-страницы и вики-страницы.
So each time he polls the SNMP devices the program shows those devices with different indices.
На самом деле это не так, индексы используются для получения информации о новых устройствах по мере их установки (например, горячее подключение RAID/RAM/CPU/Virtual Interfaces...), чтобы вы могли отслеживать устройство сразу после следующего опроса после него. был вставлен. Они НЕ ДОЛЖНЫ (как в RFC) меняться, но я не знаю, что это действительно стандартизировано.