Кратко

  • RFC 3434 требовал читать модуль вместе с HcValueStatus: ноль при valueNotAvailable(1) означал неудачу получения, а не измеренное нулевое значение.
  • Строка тревоги сохранялась, неудачные попытки считались, а дельта без предыдущей выборки становилась недоступной; переход порога, событие, доставка и реакция оставались разными доказательствами.

Число на месте отсутствия

В RFC 3434 высокоемкое значение состояло из нескольких объектов. hcAlarmAbsValue хранил абсолютную величину, а hcAlarmValueStatus сообщал её знак и действительность. Если агент не мог прочитать выбранную переменную, величина становилась нулём, но статус — недоступным.

Этот ноль поддерживал форму записи и не описывал наблюдаемую величину. Статус также различал положительные и отрицательные результаты, поскольку разность двух неотрицательных счётчиков может быть отрицательной. Потеря статуса превращала отрицательную дельту в положительную, а пробел — в обычный ноль.

Текст RFC, запись RFC Editor, страница IETF, история и ссылки подтверждают содержание и процесс. Они не подтверждают конкретную реализацию, внедрение или аварию.

Почему старой таблицы стало мало

RFC 2819 уже определял периодическую выборку, верхние и нижние пороги и связь с таблицей событий RMON. Но его таблица тревог была рассчитана на 32-битные объекты. RFC 2863 показывал, как рост скорости сокращает время оборота счётчика: в приведённом примере 32-битный счётчик октетов мог обернуться примерно за 34 секунды при 1 Гбит/с.

RFC 3434 ввёл независимую таблицу для Counter64 и CounterBasedGauge64 из RFC 2856. Общей оставалась таблица событий, но смысл старой таблицы не менялся задним числом.

Порог также складывался из нижнего 32-битного слова, верхнего слова и статуса знака. Модуль равнялся нижней части плюс верхняя часть, умноженная на два в тридцать второй степени. Если сохранить не всё, получится допустимое число, но другой порог.

Конфигурация осталась, наблюдение исчезло

Неудача одного опроса не уничтожала строку тревоги. Настройка продолжала существовать. hcAlarmValueFailedAttempts считал, сколько запросов для активной строки не дали значения.

Каждый факт имел предел. Наличие строки доказывало сохранение настройки. Рост счётчика доказывал неудачные попытки. Недоступный статус доказывал отсутствие пригодной выборки. Ни один факт не называл причину: доступ, исчезнувший объект, нагрузка, время или внутренняя ошибка требовали отдельной проверки.

В абсолютном режиме текущее значение сравнивалось с порогами. В режиме дельты из него вычиталась предыдущая выборка. Если предыдущей выборки не было, честной разности не существовало. Успешный текущий опрос не создавал прошлое задним числом, поэтому дельта оставалась недоступной.

Один пробел затрагивал два интервала: сам он не являлся нулевым измерением, а следующая дельта лишалась основания. Временная непрерывность была частью значения.

Переход ещё не был результатом

Верхнее событие возникало при переходе от значения ниже верхнего порога к значению не меньше него. Повторное верхнее событие блокировалось, пока величина не достигала нижнего порога. Для нижнего события действовало зеркало. Такой гистерезис не давал колебаниям возле одной границы создавать событие на каждом опросе.

Политика запуска могла создать одно событие по первой действительной выборке вне диапазона. Однако нулевой индекс события означал отсутствие связи. Ненулевой индекс без соответствующей строки таблицы тоже не создавал событие. Даже правильная связь не доказывала отправку, получение, прочтение или исправление.

Получить, проверить, вычислить, сравнить, обнаружить переход, разрешить строку события, выполнить действие, передать, принять и отреагировать — отдельные этапы. RFC 3434 описывал ранние записи, а не общий успех.

Указатель расширял область чтения

hcAlarmVariable мог указывать на разные целочисленные MIB-объекты. RFC 3434 отмечал, что представления SNMP ограничивают доступ к объектам, но не умеют надёжно ограничить значение указателя объектами одного представления. Поэтому право записи следовало давать только представлениям, способным читать все объекты зонда.

RFC 3410 описывает архитектуру управления, RFC 3414 — USM, а RFC 3415 — VACM. Ссылка на них не доказывает безопасную настройку. RFC 2578, RFC 2579, RFC 2580 и RFC 2119 задают язык описания, но не состояние устройства.

Реестр SMI IANA сохраняет контекст номера, а поиск опечаток ограничивает известные исправления на момент проверки. Это не данные о распространённости.

Неизвестность как часть записи

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

Текст Heng Lu о слоях реальности помогает понять власть видимого нуля над ограничивающим его статусом. Его акцент на работающем коде напоминает: различие стандарта полезно лишь тогда, когда реализация и экспорт его сохраняют.

RFC 3434 не гарантировал доставку тревоги. Он позволял честно зафиксировать более ранний факт: правило осталось, наблюдение не пришло, ноль не был измерен.

Источники