Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Современные принципы и технологии управления инфокоммуникационными

..pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
4.3 Mб
Скачать

Можно установить нужный период обновления информации (Poll every…), после чего изменить информацию в snmp_ agent_simulator (она отобразится в Info Window через выбран-

ный интервал обновления), как показано на рис. 13.

Рис. 13. MIB Browser. Info-window

SNMP-запросы

Для формирования запроса значения переменной необходимо в дереве MIB (вкладка Query) выбрать переменную и, нажав правую клавишу мыши, выбрать команду Get из меню SNMP. Результат ответа на запрос будет выведен в окне Query Results (рис. 14).

Выполните команды Get и GetNext и сравните результаты. На рис. 14 показано окно после команды Get для переменной syncSource. Как видно сейчас, она имеет значение 1 (internal). Изменив значение этой переменной в агенте, можно убедиться в том, что после повторной команды Get, будет ото-

бражено новое значение.

51

Рис. 14. SNMP запросы. Выбор переменных

Функция Walk является применением команды GetNext иперебором всех переменных дерева MIB, относящихся к устройству. Выделите узел дерева MIB tk_mux и вызовите функцию Walk из пункта меню SNMP. Сравните результат запроса с текущими значениями переменных Агента.

Запрос переменных таблицы необходимо выполнять с указанием номера экземпляра переменной в таблице. Команда Get -> Select Instance выведет окно со списком переменных в столбце. Необходимо выбрать интересующую строчку и дважды кликнуть по ней мышкой. В окне результата запроса будет выведен результат.

Выберите последнюю переменную в MIB устройства и дайте команду GetNext. Объясните полученный результат.

52

График изменения значений переменной

Отследить изменения выбранной переменной во времени позволяет инструмент построения графика. Для этого нужно нажать кнопку Graph или выбрать Performance Graph из пункта меню Tools. Далее нужно выбрать переменную для отображения, как показано на рис. 15.

Рис. 15. Выбор переменной для отображения на графике

Теперь выбранную переменную можно менять в оболочке Agent, что будет отражаться на графике (с выбранным временем обновления в поле Poll every), как показано на рис. 16. Количество отображаемых на графике переменных не ограничено.

SNMP-уведомления

Для проверки работы механизма уведомлений во вкладке «SNMP Уведомления» симулятора агента следует выбрать любое уведомление и нажать кнопку «Send», как показано на рис. 17.

После нажатия «Send» в оболочке MIB Browser появится окно с уведомлением. Выводится информация о времени, когда

53

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

Рис. 16. График изменения переменной syncPort

Рис. 17. SNMP уведомления

54

3.Анализ блоков данных протокола SNMP

3.1.Структура пакетов протокола SNMP

Впротоколе SNMP версии1 определеныпятьтиповпакетов:

• команды от менеджера к агенту: get, get-next, set;

• пакеты от агента: с ответом get-response и уведомление

опроизошедшем событии trap.

Для организации взаимодействия менеджера и агента определены два стандартных UDP-порта. Менеджер должен отправлять запросы (get, get-next и set) на UDP-порт 161 агента. Агент отправляетуведомления(trap) наUDP-порт162 менеджера(рис. 18).

 

 

SNMP менеджер

 

 

 

Порт для опроса

Порт 162

 

 

 

 

 

 

 

 

get get-next set

trap

get-response

 

Порт 161

 

Порт для

 

Рис. 18. Сообщения SNMP

Формат пакетов команд

На рис. 19 показан формат пакета четырех команд SNMP (запросы get, get-next, set и ответ get-response). Формат пакета одинаков для этих команд.

Рис. 19. Формат пакетов SNMP-команд

Общий заголовок SNMP

Значение поля версия (version) равно номеру версии SNMPпротокола минус единица.

Поле «сообщество» (community) представляет собой строку символов, в которой содержится определенная фраза, которая

55

должна совпадать на менеджере и агенте. Можно сказать, что это поле используется для передачи пароля в открытом виде. Значение по умолчанию – public.

Поле «тип PDU» содержит тип пакета блока данных протокола SNMP. Возможные значения поля представлены в табл. 3.

 

Т а б л и ц а 3

Типы пакетов SNMP

 

 

 

PDU type

Имя

0

get-request

 

1

get-next-request

 

2

set-request

 

3

get-response

 

4

trap

 

Заголовок пакетов get, set, get-next и get-response

Поле «идентификатор запроса» (request ID) используется для сопоставления запросов и ответов менеджером сети. В этом поле при запросах get, get-next и set указывается уникальная последовательность, которая должна быть возвращена агентом в ответном сообщении get-response.

Поле «статус ошибки» (error status) используется при ответе агента на запрос и содержит код ошибки согласно табл. 4. Значение поля в пакете запроса от менеджера равно 0.

Т а б л и ц а 4

Коды ошибок пакетов командSNMP

Статус

Имя

Описание

ошибки

 

 

0

noError

Нетошибок

1

tooBig

Ответноесообщениеслишкомбольшоеинеможетпо-

 

 

меститьсяводинпакетSNMP

2

noSuchName

Агентнесмогнайтипеременнуюсзапрашиваемым

 

 

идентификатором

3

badValue

Командаset неможетбытьвыполнена, таккакуказано

 

 

недопустимоезначение

4

readOnly

Командаset неможетбытьвыполнена, таккакпере-

 

 

меннаядоступна"толькодлячтения"

5

genErr

Неизвестнаяошибка

56

Поле «индекс ошибки» (error index) содержит число, указывающее на переменную, в которой произошла ошибка. Поле заполняется агентом только для ошибок noSuchName (нет такого имени), badValue (неверноезначение) иreadOnly (толькодлячтения).

Поле переменных

Список пар «имя и значение переменной» используется в запросах и ответах. В запросе указываются имена (объектные идентификаторы) запрашиваемых переменных, в поле «значения переменной» указывается null. В ответе указываются и имена, и значения переменных.

Формат пакета уведомления

Формат уведомления, передаваемого от агента к менеджеру, имеет аналогичный общий заголовок, как показано на рис. 20. В общем заголовке пакета SNMP поле «тип PDU» должно иметь значение 4 – trap.

Рис. 20. Формат уведомления trap

Уведомление посылается агентом менеджеру в случае возникновения какого-либо события, требующего внимания менеджера сети. В заголовке уведомления содержится информация о произошедшем событии. К событиям, требующим особого внимания, относятся перезагрузка устройства, исчезновение связи и некоторые другие. Определены семь стандартных кодов прерываний (поле «тип ловушки»). Код 7 обозначает прерывание, специфическое для данного производителя аппаратуры. В этом случае поле «специальный код» будет являться расширением кода причины прерывания. Типы ловушекподробнопредставленывтабл. 5.

При пересылке уведомления, помимо кода ошибки, передаются адрес агента, пославшего сообщение, время посылки сообщения (поле «временная метка»), код производителя аппа-

57

ратуры (поле Enterprise) и дополнительная информация, уточняющая произошедшее событие (поле «специальный код»). Также в пакете могут быть переданы значения переменных (пары «имя объекта (Name) – значение объекта (Value)»). Таким образом, может быть передана дополнительная информация о событии, например, при аварийном отключении интерфейса маршрутизатора можно передать номер интерфейса, на котором возникла неисправность.

 

 

Т а б л и ц а 5

 

 

Типы ловушек

 

 

 

Код

Имя

Описание

0

ColdStart

Выполненаперезагрузкаагента. Всепеременныебудут

 

 

сброшенылибовзначение0 (например, счетчики), либо

 

 

взначениепо-умолчанию.

1

WarmStart

Агентвыполнилпереинициализацию. Переменныесброше-

 

 

нынебудут.

2

LinkDown

Одинизинтерфейсовустройствавыключился. Впервой

 

 

переменнойсообщенияуказываетсяномеринтерфейса.

3

LinkUp

Одинизинтерфейсовустройствавключился. Впервойпе-

 

 

ременнойсообщенияуказываетсяномеринтерфейса.

4

Authentication-

Агентполучилкоманду отSNMP-менеджераснеправиль-

 

Failure

нымзначениемполяcommunity.

5

EgpNeighbor-

УзелEGP отключился. Впервойпеременнойсообщения

 

Loss

указываетсяIP-адресEGP-узла.

6

Enterprise-

Показывает, чтоуведомлениеопределенопроизводителем

 

Specific

оборудованиявветвиprivate-enterprise дереварегистрации

 

 

ISO. ИдентификаторуведомленияуказанвполеEnterprise.

Нотация ASN.1 широко используется для описания блоков данных протоколов. Описание протокола SNMP также выполнено на языке ASN.1. Ниже приведено описание структуры сообщения протокола SNMP:

Общая структура сообщения

Message ::= SEQUENCE {

version INTEGER {version-1(0)}, -- версия протокола community OCTET STRING, -- строка сообщество data ANY} -- остальная часть пакета

Задание типов пакетов протокола

58

PDUs ::= CHOICE {

get-request GetRequest-PDU, get-next-request GetNextRequest-PDU, get-response GetResponse-PDU, set-request SetRequest-PDU,

trap Trap-PDU}

GetRequest-PDU ::= [0] IMPLICIT PDU

GetNextRequest-PDU ::= [1] IMPLICIT PDU

GetResponse-PDU ::= [2] IMPLICIT PDU

SetRequest-PDU ::= [3] IMPLICIT PDU

Структура информационной части пакета [2] PDU ::= SEQUENCE {

request-id INTEGER, -- идентификатор запроса error-status INTEGER { -- коды ошибки

noError(0),

tooBig(1),

noSuchName(2),

badValue(3),

readOnly(4),

genErr(5)},

error-index INTEGER, -- индекс ошибки variable-bindings VarBindList} -- список пар пере-

менная/значение Описание списка пар переменная/значение

VarBind ::= SEQUENCE {

name ObjectName, value ObjectSyntax}

VarBindList ::= SEQUENCE OF VarBind

Для передачи блоков данных протокола SNMP через нижележащие уровни модели OSI используется представление информации в шестнадцатеричных кодах. Кодирование выполняется в соответствии с базовыми правилами кодирования (Basic Encoding Rules – BER, ISO 8825 или X.209) [3]. BER обеспе-

чивают однозначное представление данных для программ, на-

59

писанных на разных языках и выполняющихся на различных операционных системах.

Всоответствии с BER любое поле в сообщениях SNMP,

атакже само сообщение имеют следующую структуру:

[Идентификатор] [длина содержания] [содержание]

Идентификатор обозначает тип данных, представленных в содержании. Например, идентификатор 02hex используется для INTEGER, 04hex – для OCTET STRING, а 06hex – для

OBJECT IDENTIFIER. Значения идентификаторов BER для других типов данных ASN.1 приведены в приложении 2.

Рассмотрим в качестве примера кодирование переменной, тип INTEGER, значение 11. В результате кодирования для передачи будет сформирована шестнадцатеричная последовательность 02 01 0В, где 02 – код типа INTEGER, 01 – длина передаваемого значенияпеременной(1 байт), 0В– значениепеременной.

Для примера рассмотрим запрос get-request о значении объекта sysDescr (объектный идентификатор 1.3.6.1.2.1.1.1).

30

 

 

 

29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SEQUENCE

 

 

len=41

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02

 

 

 

01

 

 

 

00

 

 

 

 

 

 

 

 

 

 

INTEGER

 

len=1

 

 

 

vers = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

04

 

 

 

06

 

70

 

75

62

 

6C

59

63

 

 

OCTET STRING

len=6

 

p

 

 

u

 

b

 

 

l

i

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A0

 

 

 

 

 

 

 

1C

 

 

 

 

 

 

 

 

 

 

 

GetRequest-PDU

 

 

len=28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02

 

 

04

 

 

05

 

 

 

 

 

AE

 

 

 

66

 

02

 

 

INTEGER

len=4

request-id

request-id

request-id

request-id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02

 

 

 

 

 

01

 

 

 

 

 

 

 

00

 

 

 

 

 

 

INTEGER

 

 

len=1

 

 

 

 

 

status

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02

 

 

 

 

 

01

 

 

 

 

 

 

 

00

 

 

 

 

 

 

INTEGER

 

 

len=1

 

 

 

 

errorIndex

 

 

 

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]