Кратко

  • RFC 1283 экспериментально отобразил SNMP на транспорт OSI без соединения CLTS и с соединением COTS. В COTS соединение устанавливалось, переносило одно или несколько сообщений и освобождалось.
  • Инициатор не должен был требовать ответ по тому же соединению или приписывать ему надёжность операции SNMP. Timeout, повтор и отказ оставались у приложения.
  • RFC 1418 позднее убрал COTS и оставил CLTS для среды без UDP. Замена спецификации не доказывает одновременное исчезновение всех реализаций.

Пересмотр сохранил опыт, а не итог развертывания

RFC 1161 в июне 1990 года предложил экспериментальный способ запуска SNMP поверх транспортов OSI. Он не был Internet standard и лишь допускал будущую редакцию после эксперимента и достаточного consensus.

В декабре 1991 года RFC 1283 сделал предшественника obsolete, оставаясь Experimental. Редактор указал на изменения по итогам operational experience. Это свидетельство развития документа, а не успеха конкретной сети.

SNMP уже широко применялся в TCP/IP, а площадки с возможностями OSI хотели сохранить инвестиции в управление. Поэтому SNMP сопоставили напрямую с транспортными службами OSI.

CLTS сохранял модель пакета

Процедура CLTS была похожа на UDP: пакет содержал полную адресную информацию. Транспортный адрес соединял сетевой адрес и selector. Вместо well-known ports OSI использовал непрозрачные octets с локальным значением. RFC 1283 координировал snmp и snmp-trap поверх CLNP.

Selector выбирал местную службу. Он не аутентифицировал manager, не разрешал Set и не подтверждал значение variable. Доставка не была полномочием.

COTS добавлял association, но не завершение

SNMP не требовал заранее существующего соединения. Mapping COTS задавал последовательность: установить transport connection, отправить одно или несколько сообщений SNMP, освободить соединение.

Оно могло не открыться, открыться без полного запроса или принять bytes и закрыться до ответа приложения. Established доказывал только состояние транспорта, не decode, access decision, чтение, Set или результат.

Ответ не обязан был возвращаться по соединению запроса. Если responder посылал SNMP по нему, сообщения должны были отвечать на принятые там запросы. Это условная корреляция, не исключительный путь. Молчание не доказывало отсутствие ответа в другом месте.

Инициатор в идеале закрывал соединение, но responder мог сделать это из-за ресурсов. Срок был implementation-specific и зависел от dynamic algorithm. Close мог означать policy, давление, простой или ошибку, а не итог SNMP.

Transport ACK не доходил до контракта приложения

RFC 1283 прямо запрещал связывать надёжность с соединением. Retransmission сообщений оставалась у SNMP application.

RFC 1270 объяснял: transport ACK не обязательно означает доставку destination application process. SNMP всё ещё нуждался в собственном timeout и retry, чтобы судить о получении программой SNMP.

Транспорт мог надёжно выполнять свой контракт bytes. Завершение управления требовало коррелированного response. Даже response был сообщением agent, а не автоматическим доказательством физического состояния сети.

Три стратегии соединений создавали три вида издержек

RFC 1270 сравнивал постоянное соединение с каждым объектом, новое соединение на operation и ограниченный pool с заменой. Первое требовало множество records и могло создавать keepalive. Второе повторяло establishment, close и TIME-WAIT. Третье требовало usage state и алгоритма, приближаясь ко второму при числе agents выше pool.

Кто закрывает, на каком основании и что делать с поздним ответом, стало новой control surface. Stateful transport не убрал журнал состояния, а добавил его.

Редакция 1993 года оставила только CLTS

RFC 1418 сделал RFC 1161 и RFC 1283 obsolete в марте 1993 года. Он сохранил mapping без соединения для среды, где UDP недоступен, и не требовал нескольких mappings от каждого agent.

CLTS мог реализовываться поверх сетевой службы без соединения или с соединением, с разными selectors. Соединение на нижнем уровне не меняло connectionless transport contract, видимый SNMP.

Источники и пределы

Источники — RFC 1161, RFC 1270, RFC 1283 и RFC 1418. Они подтверждают правила и историю документов, но не нынешнюю реализацию, личность, полномочие, наблюдаемое соединение, запрос, ответ, retry, сбой или результат. Вопросы безопасности не обсуждаются.