3

Я пытаюсь выяснить, что подразумевается под индексами SNMP. Я прочитал следующее утверждение в вики:

Назначения индексов для экземпляра устройства SNMP могут меняться от опроса к опросу в основном в результате изменений, инициированных системным администратором.

Насколько я понимаю, системный администратор использует для опроса устройств SNMP, и его программа отображает устройства SNMP с некоторыми серийными номерами (которые мы называем индексами). Поэтому каждый раз, когда он опрашивает устройства SNMP, программа показывает эти устройства с разными индексами.

Правильно ли мое понимание? Что именно мы подразумеваем под индексами SNMP и что это означает в этом контексте?

2 ответа2

1
So each time he polls the SNMP devices the program shows those devices with different indices.

На самом деле это не так, индексы используются для получения информации о новых устройствах по мере их установки (например, горячее подключение RAID/RAM/CPU/Virtual Interfaces ...), таким образом, вы можете отслеживать устройство сразу после следующего опроса после него. был вставлен. Они НЕ ДОЛЖНЫ (как в RFC) меняться, но я не знаю, что это действительно стандартизировано.

1

Я нашел следующую информацию здесь.

Модуль 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. Я гуглил это около часа и не придумал ничего очень полезного, кроме уже упомянутой веб-страницы и вики-страницы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .