среда, 15 октября 2014 г.

Создание VLAN по SNMP

В прошлой публикации мы рассмотрели как получать информацию о VLAN по протоколу SNMP. Теперь пришло время научиться создавать VLAN'ы, используя этот протокол.

Предположим, мы хотим создать VLAN с VID=500 и именем newvlan, где 25-28 порты  настроены как tagged, а 1-24 - как untagged.

По уже известному алгоритму преобразуем двоичные последовательности используемых портов в их шестнадцатеричное представление. При этом мы помним, что нам нужна последовательности member ports и untagged ports. Из условия задачи очевидно, что в диапазон member ports будут входить все порты (1-28).

0b11111111 11111111 11111111 11110000  - 0xFFFFFFF0 (members)
0b11111111 11111111 11111111 00000000  - 0xFFFFFF00 (untagged)

Также нам понадобится задать статус записи. Используем в данном случае createAndGo (4).
Теперь укажем в нашем запросе необходимые параметры dot1qVlanStaticName (1), dot1qVlanStaticEgressPorts (2), dot1qVlanStaticUntaggedPorts (4) и dot1qVlanStaticRowStatus (5):

snmpset -v2c -c private 10.90.90.90 .1.3.6.1.2.1.17.7.1.4.3.1.1.500 s newvlan .1.3.6.1.2.1.17.7.1.4.3.1.2.500 x fffffff000000000 .1.3.6.1.2.1.17.7.1.4.3.1.4.500 x ffffff0000000000 .1.3.6.1.2.1.17.7.1.4.3.1.5.500 i 4


Error in packet.
Reason: commitFailed
Failed object: SNMPv2-SMI::mib-2.17.7.1.4.3.1.4.500

Oops! Что-то пошло не так! Поскольку нам говорят об ошибке в dot1qVlanStaticUntaggedPorts (4) то сразу заподозрим что-то неладное в настройках untagged портов. Проверим уже существующие VLAN на коммутаторе при помощи команды show vlan:
VID             : 1           VLAN Name       : default
...
Current Untagged Ports : 1-28

Оказывается порты уже настроены как untagged в другом VLAN, а наш коммутатор (DES-3028) не позволяет настраивать сразу несколько портов как untagged. Что ж, удалим лишние порты, оставив только 1-й порт, через который подключен коммутатор. Для этого выполним config vlan default delete 2-28. Теперь требуется пересчитать hex-значение для member и untagged ports:

0b01111111 11111111 11111111 11110000  - 0x7FFFFFF0 (members)
0b01111111 11111111 11111111 00000000  - 0x7FFFFF00 (untagged)


snmpset -v2c -c private 10.90.90.90 .1.3.6.1.2.1.17.7.1.4.3.1.1.500 s newvlan .1.3.6.1.2.1.17.7.1.4.3.1.2.500 x 7ffffff000000000 .1.3.6.1.2.1.17.7.1.4.3.1.4.500 x 7fffff0000000000 .1.3.6.1.2.1.17.7.1.4.3.1.5.500 i 4


SNMPv2-SMI::mib-2.17.7.1.4.3.1.1.500 = STRING: "newvlan"
SNMPv2-SMI::mib-2.17.7.1.4.3.1.2.500 = Hex-STRING: 7F FF FF F0 00 00 00 00
SNMPv2-SMI::mib-2.17.7.1.4.3.1.4.500 = Hex-STRING: 7F FF FF 00 00 00 00 00
SNMPv2-SMI::mib-2.17.7.1.4.3.1.5.500 = INTEGER: 4

Посмотрим на коммутаторе что получилось:
VID             : 500         VLAN Name       : newvlan
VLAN Type       : Static      Advertisement   : Disabled
Member Ports    : 2-28
Static Ports    : 2-28
Current Tagged Ports   : 25-28
Current Untagged Ports : 2-24
Static Tagged Ports    : 25-28
Static Untagged Ports  : 2-24
Forbidden Ports        :


Вывод: В ходе выполнения задачи мы обнаружили, что ее нельзя выполнить дословно, т.к. порт 1 уже используется для другого VLAN. Поэтому мы переделали запрос так, чтобы исключить порт №1 из запроса и создали VLAN, который не включает в себя этот порт. Результат достигнут.

Note: Обратите внимание, что все параметры необходимо указывать в одном запросе. Последовательное выполнение четырех команд snmpset не приведет к такому же результату. Это особенность реализации функционала.

Комментариев нет:

Отправить комментарий