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

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

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

IMPORTS

MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATIONTYPE – импорт макросов описания

FROM SNMPv2-SMI

DisplayString – импорт типа данных DisplayString

FROM RFC1213-MIB

enterprises – импорт узла enterprises дерева регистрации

FROM RFC1155-SMI;

Модули SNMPv2-SMI, RFC1213-MIB, RFC1155-SMI

должны быть доступны для компилятора.

Два знака минус подряд « -- » используются для обозначения комментариев.

Описываемые нами интерфейсы мультиплексора будут определяться в следующей ветке дерева регистрации ISO (рис. 2).

Рис. 2. Начало дерева регистрации для разрабатываемого модуля

С этой целью в разделе IMPORTS был указан узел enterprises. Далее, в узле enterprises нужно создать узлы pstu (узел организации, в которой выполняется разработка модуля MIB), nm (описывает узел сетевого управления), hardware (узел для аппаратного обеспечения).

11

pstu OBJECT

IDENTIFIER ::= { enterprises 4451 }

nm OBJECT

IDENTIFIER ::= { pstu 1 }

hardware

OBJECT IDENTIFIER ::= { nm 2 }

Макросы

Ниже будут рассмотрены используемые макросы и выполнено описание объектов и уведомлений.

Рассмотрим различные форматы макросов, используемых в SMI при написании MIB.

МакросMODULE-IDENTITY имеет следующуюструктуру: MODULE-IDENTITY (обеспечивает контактную информацию разработчиков и историю создания модуля)

LAST-UPDATED (датапоследнегообновлениямодуляMIB) ORGANIZATION (информация об организации-разра-

ботчике)

CONTACT-INFO (контактная информация)

DESCRIPTION (общее описание модуля)

список REVISION и их DESCRIPTION в обратном хронологическом порядке ::= { узел дерева и номер }

В нашем случае дата создания модуля контактная информация разработчиков и история создания модуля TK-MUX будут выглядеть следующим образом:

tk_mux MODULE-IDENTITY LAST-UPDATED "1503221030Z"

ORGANIZATION "PNRPU, Russia, Perm" CONTACT-INFO

"Postal:

Perm National Research Polytechnic University,

11, prof. Pozdeev Perm, Russia 614000

E-mail: support@at.pstu.ru" DESCRIPTION

12

"The MIB module to describe TK MUX hardware objects."

::= { hardware 1 } – модуль регистрируется в узле hardware под №1

Далее должны быть описаны объекты управления. Для описания синтаксиса и семантики объектов мы будем пользоваться макросом OBJECT-TYPE. Макрос OBJECT-TYPE имеет следующую структуру:

OBJECT-TYPE (определениесинтаксисаисемантикиобъекта) SYNTAX (указание типа данных, используемых для описания объекта)

MAX-ACCESS (уровеньдоступа), возможныезначения: not-accessible (не доступен) accessible-for-notify (объектдоступен толькодляпередачивсоставеуведомления) read-only (только для чтения) read-write (для чтения и записи) read-create (чтение, запись и создание)

STATUS:

current (объект используется) deprecated (объект устарел, но пока поддерживается)

obsolete (объект устарел и больше не поддерживается)

DESCRIPTION (текстовоесмысловоеописаниеобъекта) INDEX { список через запятую имен объектов } (определяет индексную переменную, по которой выполнятся индексация строк таблицы – неотрицательное целое, нумерация начинается с 1, используется для описания таблиц)

DEFVAL { значение по умолчанию } (используется при создании объекта, когда значение еще не определено, параметр опциональный)

13

Используя макрос OBJECT-TYPE, опишем объекты, которые были определены ранее при разработке функциональной модели:

syncSource OBJECT-TYPE -- Объект имеет название syncSource и оп-

ределяет тип источника синхронизации

SYNTAX INTEGER { -- Опция INTEGER означа-

ет, что объект может принимать целочисленные значения. В нашем случае: 1, 2 и 3, соответствующие синхронизации:

internal(1),

-- Внутренней

external(2),

-- Внешней

fromPort(3)

-- По порту

}

 

MAX-ACCESS read-write -- Объект доступен

на чтение и запись

-- Объект используется.

STATUS current

DESCRIPTION

-- Смысловое описание

объекта.

"This variable contains code of

syncport."

::= { tk_mux 1 } -- объект syncSource ре-

гистрируется под номером 1 в узле дерева tk_mux (т.е. роди-

тельским объектом является объект tk_mux)

14

Аналогичным образом опишем порт синхронизации, используя объект syncPort.

syncPort OBJECT-TYPE

SYNTAX INTEGER (0..255) -- Принимаемые значения будут соответствовать номеру порта и лежать в диапазоне от 0 до 255.

MAX-ACCESS read-write STATUS current DESCRIPTION

"This variable contains number of synchronization port."

::= { tk_mux 2 }

Далее необходимо создать таблицу, описывающую состояние портов мультиплексора.

ТаблицынаязыкеASN.1 описываютсясиспользованиемдвух типов данных SEQUENCE и SEQUENCE OF. Тип SEQUENCE

используется для описания последовательности переменных, составляющих строку, а тип SEQUENCE OF используется для описания последовательности строк, что в результате дает таблицу (рис. 3).

Столбец 1

Столбец 2

 

Строка

Переменная 1.1

Переменная

2.1

(SEQUENCE)

 

 

 

Последовательность

строк

(SEQUENCE OF)

Рис. 3. Описание таблицы

Таблица портов мультиплексора рассматриваемого примера должна содержать четыре переменных-столбца, как это показано в табл. 1.

15

 

 

 

 

Т а б л и ц а 1

 

Таблица портов мультиплексора

 

 

 

 

 

 

portIndex

lineCoding

lineType

 

loopbackStatus

0-255

1,2,3

0-2

 

1,2

Создание таблицы происходит в три приема:

1. Необходимо создать объект portTable – он будет описывать собственно таблицу. В поле SYNTAX указывается SEQUENCE OF PortEntry. Данная запись означает, что объект будет использовать тип данных SEQUENCE OF, построенный на основе типа данных PortEntry, который будет описан ниже. Поскольку сразу обратиться ко всей таблице нельзя, то режим доступа к объекту portTable будет установлен как «не доступен» (not-accessible). Доступ к данным в таблице выполняется путем обращения к конкретным ячейкам-переменным, поэтому режим доступа будет указан позже, при описании каждого объекта-переменной таблицы.

Необходимо учесть, что при создании таблицы имя объекта должно оканчиваться на «Table».

portTable OBJECT-TYPE

SYNTAX SEQUENCE OF PortEntry MAX-ACCESS not-accessible STATUS current

DESCRIPTION

"The TK MUX port table." ::= { tk_mux 3 }

2. Следующим объектом, который необходимо создать, является объект portEntry – этот объект определяет строки таблицы. Объект portEntry будет использовать тип данных PortEnty, который будет описан ниже. Обратите внимание, что имя объекта начинается со строчной буквы, а название типа данных – с прописной. Следовательно, название типа данных для строки таблицы и название объекта, описывающего строку таблицы, должны совпадать, но отличаться написанием первой буквы.

16

Название объекта строки таблицы должно заканчиваться на Entry. Аналогично предыдущему объекту целиком к строке таблицы обратиться нельзя, поэтому режим доступа к объекту portEntry также будет установлен как «не доступен» (not-accessible).

portEntry OBJECT-TYPE SYNTAX PortEntry

MAX-ACCESS not-accessible STATUS current DESCRIPTION

"An entry TK MUX port table."

INDEX { portIndex }

-- определяет пере-

 

менную, которая будет

 

использоваться в ка-

 

честве индексной. Имя

 

индексной переменной

 

должно заканчиваться

 

на Index.

::= { portTable 1 }

-- родительским объ-

 

ектом для объекта

 

portEntry является

 

объект portTable.

3. На заключительном этапе следует описать тип данных, который используется в таблице. И объект таблица (portTable), и объект строка (portEntry) используют тип данных PortEntry. Тип данных PortEntry должен использовать в качестве базового типа тип SEQUENCE, в котором перечисляются названия всех переменных, составляющих столбцы таблицы.

PortEntry ::= SEQUENCE {

portIndex INTEGER, lineCoding INTEGER, lineType INTEGER, loopbackStatus INTEGER

}

17

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

Первым объектом в таблице должны быть объект, по которому будут индексироваться строки таблицы. Имя этого объекта должно совпадать с именем таблицы, а окончание должно содержать слово Index (portIndex).

portIndex OBJECT-TYPE -- Объект portIndex оп-

ределяет номер порта, а также является базовой строкой таблицы

SYNTAX INTEGER (0..255) MAX-ACCESS read-only STATUS current DESCRIPTION

"This variable contains module index

number."

::= { portEntry 1 } -- родительским объ-

ектом для записей таблицы является объект port Entry.

lineCoding OBJECT-TYPE -- Объект lineCoding оп-

ределяет тип кодирования в порту и принимает одно из значений: 1 (соответ-

18

ствует коду HDB3,

2 (CMI) или 3 (AMI).

SYNTAX INTEGER { hdb3(1), cmi(2), ami(3)

}

MAX-ACCESS read-write STATUS current DESCRIPTION

"This variable contains code of port." ::= { portEntry 2 }

lineType OBJECT-TYPE -- Объект lineType опре-

деляет тип линии порта

SYNTAX INTEGER (0..2) MAX-ACCESS read-only STATUS current DESCRIPTION

"This variable contains line type of port. 0 - optical

1 - coaxial

2 – symmetrical pair" ::= { portEntry 3 }

Следует обратить внимание, что для объекта lineType возможные значения указаны просто как цифры. С точки зрения синтаксиса описание выполнено правильно, однако с точки зрения удобства использования такого объекта описание выполнено не очень хорошо, так как оператору сети, контролирующему этот параметр, придется запоминать соответствие цифры и типа линии. Поэтому лучше выполнять описание перечисленных значений так, как это было выполнено для объекта lineCoding.

loopbackStatus OBJECT-TYPE -- Объект определя-

ет состояние шлейфа для порта Е1 и мо-

19

жет принимать значения 1 (без шлейфа) или 2 (шлейф для удаленной стороны). По умолчанию задается значение

NoLoopback.

SYNTAX INTEGER { noLoopback(1), farEndPayloadLoopback(2)

}

MAX-ACCESS read-write STATUS current DESCRIPTION

"This variable represents the current state of the loopback on the E1 interface. It contains information about loopbacks established by a manager and remotely from the far end.

The various bit positions are:

1NoLoopback

2FarEndPayloadLoopback

The received signal at this interface is looped through the device. Typically the received signal is looped back for retransmission after it has passed through the device's framing function."

DEFVAL { NoLoopback } ::= { portEntry 4 }

Описание объектов завершено.

В последнем разделе модуля MIB необходимо описать возможные сообщения, которые будут передаваться от агента к менеджеру. Для этих целей используется макрос NOTIFICATIONTYPE, определенный для второй версии протокола SNMP. Макрос уведомления имеет следующую структуру:

20

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