Кратко

  • Изначальный 32-битный счётчик SNMP после максимума штатно возвращался к нулю. Меньшее следующее значение само по себе не доказывало ни сбой, ни перезапуск, ни обратное движение трафика.
  • Рост скорости сократил время полного оборота. 64-битные high-capacity счётчики расширили окно наблюдения, сохранив младшие 32 бита для старых менеджеров.
  • Ширина не устраняет сброс. sysUpTime и ifCounterDiscontinuityTime задают эпоху измерения; если между двумя опросами она изменилась, вычисленную разность необходимо отбросить.

Канал не остановился, но число вернулось назад

Один опрос интерфейса выдаёт почти 4,3 миллиарда октетов, следующий — несколько миллионов. Link оставался активным, пересылка пакетов не прекращалась, однако обычное вычитание даёт отрицательный результат.

Если считать любое уменьшение сбросом, исчезает реальный объём, прошедший через верхнюю границу. Если всегда добавлять полный оборот, перезапуск оборудования создаст миллиарды несуществующих октетов. Для скорости нужны не только два значения: требуются ширина счётчика, интервал и свидетельство того, что оба измерения принадлежат одной истории накопления.

График легко рисует непрерывную линию. Протокольная модель строже: постоянный идентификатор строки интерфейса не обещает постоянства его числовой эпохи.

Оборот был свойством первого Counter

RFC 1155 в 1990 году определил Counter как неотрицательное целое, монотонно растущее до 2^32-1, после чего рост продолжается от нуля. Оборот — нормальный переход в конечном пространстве, а не отмена событий и не сообщение о состоянии оборудования.

RFC 1213 закрепил это правило в MIB-II. Строки интерфейсов содержали ifInOctets, ifOutOctets и пакетные счётчики, рядом находились sysUpTime и ifLastChange. Временной контекст существовал, но сам счётчик не сообщал абсолютное начало или количество уже пройденных кругов.

RFC 2578 сформулировал границу SMIv2 прямо: у Counter32 и Counter64 нет определённого начального значения, поэтому одна выборка обычно не несёт информации. Оба типа оборачиваются; больший лишь дольше не повторяет число.

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

Скорость превратила разрядность в срок опроса

Чем быстрее становилась среда, тем меньше оставалось времени. RFC 1573 подсчитал, что при указанной полной нагрузке 32-битный октетный счётчик оборачивается чуть более чем за 57 минут на Ethernet 10 Мбит/с, за 5,7 минуты на FDDI и примерно за 34 секунды на 1 Гбит/с. RFC 2863 сохранил это предупреждение.

Бесконечно учащать polling нельзя: растут обработка и служебный трафик, а один пропуск всё равно скрывает круг. Рассматривалось укрупнение единицы, например один отсчёт на 1 024 октета. Его отвергли: при низкой нагрузке значение долго не двигалось бы, а затем прыгало, превращая ровный поток в мнимые всплески.

Выбрали расширенный тип. RFC 1573 ввёл 64-битные high-capacity группы. RFC 2863 требует 32-битные октетные и пакетные счётчики до 20 Мбит/с; выше — 64-битные октетные; при 650 Мбит/с и более — также 64-битные пакетные.

Пороги согласовывали стоимость agent, тогдашнюю поддержку и риск оборота. Они не делали ширину сертификатом точности.

Новое окно сохранило старое

Прежние объекты не исчезли. Если есть high-capacity счётчик, 32-битный вариант остаётся доступным и показывает младшие 32 бита соответствующего 64-битного значения. Старый manager продолжает читать интерфейс, новый получает более длинный однозначный период.

Два представления согласуются по модулю 2^32, но после долгого провала подтверждают разную историю. Тихое переключение collector с ifInOctets на ifHCInOctets меняет доказательный диапазон ряда даже при неизменном имени порта.

Counter64 тоже не бесконечен. RFC 2578 задаёт оборот после 2^64-1. Большая ширина снижает частоту обычного круга, но не устраняет реинициализацию, пересоздание объекта, потерю выборок или изменение смысла.

Тот же интерфейс мог начать новую историю измерений

Другой разрыв битами не лечится. Линейную карту можно вынуть и вернуть; аппаратный блок счётчиков может сброситься при работающем SNMP agent. Для эксплуатации это тот же логический интерфейс и тот же ifIndex полезен, но соединять старые и новые накопления нельзя.

Раньше требовалось либо сохранить все значения во время отсутствия, либо назначить новый index. RFC 2233 добавил ifCounterDiscontinuityTime: идентичность строки остаётся, а новая эпоха счётчика становится явной.

RFC 2863 определяет объект как значение sysUpTime в момент последнего разрыва одного из связанных Counter32 или Counter64. Если после реинициализации подсистемы управления разрывов не было, там находится ноль.

Таким образом, ifIndex продолжает именовать интерфейс в соответствующем контексте. Он не обещает, что сегодняшнее накопление начинается там, где завершилось вчерашнее.

Метка сообщала момент, но не причину

Правило manager однозначно: если ifCounterDiscontinuityTime различается в двух опросах, вычисленную разность следует отбросить. Отдельно проверяется sysUpTime, поскольку перезапуск agent способен изменить более широкий контекст времени, индексов и значений.

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

Метка также не является кодом причины. Она не различает замену карты, обновление, пересоздание объекта и ошибку реализации. RFC 3635 переносит ту же границу в Ethernet MIB, не превращая timestamp в аутентифицированную диагностику.

Поэтому неизменная метка позволяет сравнение в заданной модели, но не доказывает соответствие продукта, доставку пакетов, правильность счёта или эффект услуги.

Источники и пределы доказательств

Замкнутый исторический набор составляют RFC 1155, RFC 1213, RFC 1573, RFC 2233, RFC 2578, RFC 2863 и RFC 3635. Они подтверждают типы, развитие и обязанности manager. Они не измеряют нынешнее распространение, не сертифицируют продукт, не объясняют конкретный разрыв и не доказывают доставку или начисление.