Выбрать главу

20.9.1 Формат сообщений gets, sets и responses в версии 1

Главное информационное содержимое во всех этих сообщениях одинаково. Оно состоит из списка (пары этого списка обычно называют "связыванием переменной"):

Имя переменной Значение
Имя переменной Значение

Идентификатор объекта используются как имя переменной. В сообщениях get и get-next поля значений пустые. В них агент разместит необходимые значения.

Элемент данных протокола (Protocol Data Unit) для сообщений get-request, get-next-request, set-request или response включает:

Идентификатор запроса Служит для согласования запроса и ответа на него.
Поле статуса ошибки 0 в запросах. Ненулевые значения в ответах означают различные ошибки.
Поле индекса ошибки 0 в запросах. В ответах указывает переменную, создавшую ошибку.
Список идентификаторов объектов и значений В get или get-next — пустые, но заполнены в set или response.

20.9.2 Запрос get и ответ на него

На рис. 20.10 показаны запрос get-request и ответ на него (response), полученные в анализаторе Sniffer компании Network General. Запрос содержит список из пяти переменных, значения которых нужно получить. После каждого идентификатора переменной стоит заполнитель NULL. Чтобы создать ответ, агент должен только заполнять пробелы и заменять пустые поля фактическими значениями.

SNMP: Version = 0

SNMP: Community = public

SNMP: Command = Get request

SNMP: Request ID = 112

SNMP: Error status = 0 (No error)

SNMP: Error index = 0

SNMP:

SNMP: Object = {1.3.6.1.2.1.1.3.0} (sysUpTime.0)

SNMP: Value = NULL

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)

SNMP: Value = NULL

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)

SNMP: Value = NULL

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.3.0} (icmpInDestUnreachs.0)

SMMP: Value = NULL

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.4.0} (icmpInTimeExcds.0)

SNMP: Value = NULL

SNMP: Version = 0

SNMP: Community = public

SNMP: Command = Get response

SNMP: Request ID = 112

SNMP: Error status = 0 (No error)

SNMP: Error index = 0

SNMP:

SNMP: Object = {1.3.6.1.2.1.1.3.0} (sysUpTime.0)

SNMP: Value = 1037388 hundredths of a second SNMP:

SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)

SNMP: Value = 1 messages

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)

SNMP: Value = 0 messages

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.3.0} (icmpInDestUnreachs.0)

SNMP: Value = 0 messages

SNMP:

SNMP: Object = {1.3.6.1.2.1.5.4.0} (icmpInTimeExcds.0)

SNMP: Value = 0 message

Рис. 20. 1. Пример get-request и response

20.9.3 Запрос get-next и ответ на него

Сообщение get-next работает по-другому. Когда отсылается идентификатор объекта, возвращается значение следующего объекта. Например, если послать запрос:

SNMP: Object = {1.3.6.1.2.1.5.1.0} (icmpInMsgs.0)

SNMP: Value = NULL

ответ будет содержать имя и значение для следующей переменной:

SNMP: Object = {1.3.6.1.2.1.5.2.0} (icmpInErrors.0)

SNMP: Value = 0 messages

Такой запрос позволяет просматривать значения MIB или перемещаться на следующую строку таблицы.

20.9.4 Запрос set

Запрос set позволяет записывать информацию в базу данных агента. Формат сообщения очень прост, он выглядит как get-request, но приводит к изменению указанных в запросе переменных. На рис. 20.11 показано отслеживание запроса set.

SNMP: Version = 0

SNMP: Community = xyz

SNMP: Command = Set request

SNMP: Request ID = 0

SNMP: Error status = 0 (No error)

SNMP: Error index = 0

SNMP:

SNMP: Object = {1.3.6.1.2.1.4.1.0} {ipForwarding.0}

SNMP: Value = 2

SNMP: Object = {1.3.6.1.2.1.4.2.0} (ipDefaultTTL.0)

SNMP: Value = 70

Рис. 20.11. Изменение значений MIB запросом set

Успешными должны быть все изменения запроса, иначе будет отклонен весь запрос. Поскольку часто нужно изменять одновременно несколько переменных, либо ни одну из них. Это бескомпромиссное правило для set сохраняется и в версии 2.

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

20.9.5 Сообщения trap

Агент использует сообщения trap для указания диспетчеру на серьезные проблемы.

В стандарте SNMP определено очень немного таких сообщений. Описание trap оставлено в ведении комитетов по технологическим стандартам и разработчиков — с предупреждением о снижении количества таких сообщений. Когда сеть перегружена, нежелательно получать десятки сообщений от каждого из сетевых устройств с указаниями на их проблемы.

Сообщения trap в версии 1 были более сложными, чем следовало бы. Такое положение было исправлено в версии 2. Рассмотрим сначала сообщения trap версии 1. В них имеется общее поле (generic trap), значение которого определяет тип прерывания в соответствии со следующим списком:

соldStart(0) Отправитель проводит переинициализацию, и его конфигурационные параметры могут измениться.
warmStart(1) Отправитель проводит переинициализацию, и его конфигурационные параметры не будут изменяться.
linkDown(2) Смежная связь нарушена.
linkUp(3) Смежная связь восстановлена.
autentication Failure(4) Кто-то послал агенту запрос, который не был аутентифицирован (например, в сообщении было использовано неправильное имя сообщества).
egpNeighbor Loss(5) Сосед по протоколу Exterior Gateway Protocol выключен.
enterprise Specific(6) Другие запросы, определенные комитетом стандартов, разработчиком или иным заинтересованным лицом.