— Знакомьтесь! Алиса, это пудинг! Пудинг, это Алиса! Унесите!…
Ну вот, вас только познакомили, а ты уже на него с ножом!
(с) Льюис Кэрролл. Алиса в стране чудес
Прошел уже год, с тех пор как компания HP обновила линейку маршрутизаторов корпоративного класса HP MSR. Новые маршрутизаторы так и назвали – маршрутизаторы нового поколения или MSR NG. Это абсолютно новые устройства с аппаратной точки зрения, использующие многоядерные процессоры с встроенным ускорителем шифрования, шину PCIE 2.0 и заметно больший объем как оперативной, так и флэш памяти. Прежде всего новая аппаратная платформа позволила получить многократный прирост производительности, который помог компании HP обогнать многих именитых “коллег по цеху”. Конечно же, для реализации этой производительности потребовалось серьезным образом переработать и операционную систему, называется она по прежнему HP Comware, а вот версия уже 7. С появлением этой ОС помимо повышения надежности и производителньости появилось масса новых функций, таких как: улучшенная технология создания динамических VPN – HP ADVPN, поддержка отказоустойчивого IRF стекирования маршрутизаторов, встроенная система автоматизации EAA, межсетевой экран с зонами и еще много других полезных в сетевом хозяйстве функций.
Этой статьей мы начинаем знакомить читателей нашего блога с маршрутизаторами HP MSR NG и новым функционалом операционной системы HP Comware 7. Первая статья из этого цикла, она посвящена примеру решения распростаненной задачи мониторинга каналов связи с помощью маршрутизатора HP MSR NG.
Итак, решаем задачу мониторинга доступности канала связи с помощью ICMP эхо-запросов, или, говоря простым языком, с помощью “пингов”. При недоступности сервиса сообщаем администратору об изменении состояния всеми доступными средствами – отправляем SNMP trap на систему управления, syslog сообщение с произвольным содержанием на syslog сервер и пишем электронное письмо через ESMTP сервер. Остальные действия, такие как переключение на резервный канал и изменение конфигурации можно добавить как соль и сахар – по вкусу. Конфигурацию можно обкатывать на HP Network Simulator, мы же, для разнообразия, воспользуемся виртуальным маршрутизатором HP VSR1000, скачать который могут все желающие. Маршрутизатор поддерживает платформы виртуализации VMware ESXi и Linux KVM, но, для наших целей, его можно запустить и на VMware Workstation 10 версии и, даже, на VMware Player. Требования к виртуальной машине:
- Processor One vCPU (main frequency≥ 2.0 GHz);
- Memory 1 GB;
- Hard disk One vHD, 8 GB;
- Network interface card Two virtual NICs at least. Up to 16 virtual NICs are supported;
- Virtual NIC types: E1000 (VMware ESXi and Linux KVM), VMXNET3 (VMware ESXi), VirtIO (Linux KVM), InteI 82599 VF (VMware ESXi and Linux KVM).
Требования, как мы видим, по современным меркам далеко не заоблачные, что позволит нам запустить пару маршрутизаторов для отработки конфигурации прямо на рабочем ноутбуке. В составе скаченного дистрибутива мы найдем три файла с расширениями:
- “.ipe” – ПО Comware 7 для апгрейда уже функционирующего маршрутизатора;
- “.iso” – образ для инсталляции ПО на виртуальную машину самостоятельно;
- “.ova” – готовый образ виртуальной машины с уже установленным HP VSR 1000.
Мы воспользуемся готовым образом OVA и создадим в виртуальной среде следующию схему сети:
Процесс инсталляции маршрутизатора HP VSR1000 на VMware Player крайне прост и интуитивно понятен.
После инсталляции маршрутизаторов и настройки сетевого окружения VMware согласно нашей схемы запускаем виртуальные машины и выполняем первоначальные настройки, которые позволят получить привычный доступ из терминальной программы по протоколу SSH. Как установить HP VSR, создать стенд используя ПО VMware Player и выполнить предварительные настройки показано в ролике.
Теперь, получив привычный доступ по SSH, переходим к решению нашей задачи. Нам понадобится настроить две функции – Network quality analyzer (или коротко NQA) и Embedded Automation Architecture (EAA).
Network quality analyzer (NQA) – функционал, который позволяет измерять параметры сети передачи данных для различных типов приложений. Поддерживается мониториг функционирования следующих приложений:
- ICMP echo;
- DHCP;
- DNS;
- FTP;
- HTTP;
- UDP jitter;
- SNMP;
- TCP;
- UDP echo;
- Voice;
- Path jitter;
- DLSw.
Работает этот функционал следующим образом: маршрутизатор-зонд, или NQA Client в терминах HP, формирует пакет-запрос и отправляет его на удаленное устройство (NQA destination device), которое отвечает на запросы зонда. Для функций мониторинга пакетами TCP, UDP echo, UDP jitter и голосовыми пакетами в роли NQA ответчика обязательно должен выступать маршрутизатор HP (NQA Server), на остальные типы запросов могут отвечать и другие сетевые устройства.
В нашем примере рассмотрим работу NQA в режиме тестирования канала с помощью ICMP эхо-запросов. Маршрутизатор VSR1000-1, выполняющий мониторинг канала, “пингует” заданный IP адрес (в нашем случае HP VSR1000-2) и на основе полученных ответов делает заключение о рабоспособности канала.
Маршрутизатор позволяет завадать следующие параметры:
Настройка NQA зонда, который будет каждые 30 секунд отправлять 5 ICMP echo запосов на IP адрес 192.168.1.2 с выставленным в значение “А0” полем IP ToS (DSCP 40), размером 1024 байта каждый и ожидать ответа в течении 0,5 секунд на маршрутизаторе выглядит следующим образом:
[VSR1000-1]nqa entry icmp 1
[VSR1000-1-nqa-icmp-1]type icmp-echo
[VSR1000-1-nqa-icmp-1-icmp-echo]
[VSR1000-1-nqa-icmp-1-icmp-echo]description === Test1 ===
[VSR1000-1-nqa-icmp-1-icmp-echo]destination ip 192.168.1.2
[VSR1000-1-nqa-icmp-1-icmp-echo]frequency 30000
[VSR1000-1-nqa-icmp-1-icmp-echo]data-size 1024
[VSR1000-1-nqa-icmp-1-icmp-echo]tos 160
[VSR1000-1-nqa-icmp-1-icmp-echo]probe count 5
[VSR1000-1-nqa-icmp-1-icmp-echo]probe timeout 500
Далее нам необходимо задать реакцию маршрутизатора на результаты тестирования канала связи. В нашем примере будем считать отказом канала связи последовательное неполучение трех ответов на отправленные “пинги”. Здесь же мы решим первую из поставленных задач, а именно заставим маршрутизатор сгенерировать SNPM trap как при превышении порога в 3 последовательно потерянных ответа, так и при снижении числа потерь ниже заданного значения:
[VSR1000-1-nqa-icmp-1-icmp-echo]reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trap-only
У нас получилась следующая конфигурация NQA:
[VSR1000-1]display current-configuration configuration nqa
#
nqa entry icmp 1
type icmp-echo
data-size 1024
description === Test1 ===
destination ip 192.168.1.2
frequency 30000
probe count 5
probe timeout 500
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trap-only
source ip 192.168.1.1
tos 160
#
Для того, чтобы маршрутизатор мог отправить SNMP trap необходимо указать версию протокола SNMP, IP адрес станции управления и securityname:
[VSR1000-1]snmp-agent sys-info version v2c
[VSR1000-1]snmp-agent target-host trap address udp-domain 172.16.1.100 params securityname public v2c
Настроим SNMP community на чтение, это потребуется нам для последующих действий, связанных с поиском объекта SNMP, отвечающего за данную запись NQA:
[VSR1000-1]snmp-agent community read simple public
Можно запускать наш зонд:
[VSR1000-1]nqa schedule icmp 1 start-time now lifetime forever
Теперь, при обнаружении изменений в состоянии канала связи маршрутизатор будет отправлять SNPM сообщение на IP адрес 172.16.1.100.
Посмотреть в живую процесс настройки можно пройдя по ссылке.
Переходим к решению второй части поставленной задачи – заставим наш прибор генерировать syslog сообщение, дублирующее SNMP trap. Для этого мы будем использовать встроенную систему автоматизации – HP EAA (Embedded Automation Architecture). Общая архитектура EAA показана на рисунке:
Этот функционал позволяет устройству регистрировать различные события, такие как ввод команды, появление заданного syslog сообщения, установку нового модуля в маршрутизатор и множество других. На основе зарегистрированного события маршрутизатор позволяет выполнить различные действия:
- выполнить набор команд;
- отправить syslog сообщение;
- выполнить переключение между основным и резервным управляющим модулями;
- выполнить перезагрузку маршрутизатора с/без сохранением конфигурации.
Для выполнения этих действий может использоваться как СLI скрипт, так и скрипт написанный на TCL версии 8.5.
Для генерации syslog сообщений мы будем использовать два TCL скрипта. Первый будет регистрировать изменение SNMP OID соответсвующего NQA зонду из состояния “overThreshold(2)” в состояние “belowThreshold(3)”, что соответствует переходу канала связи из нерабочего в рабочее состояние и отправлять syslog сообщение о том, что наш канал доступен. Второй будет регистрировать обратную эволюцию NQA зонда, а именно переход из состояния “belowThreshold(3)” в состояние “overThreshold(2)” что соответствует переходу канала связи из рабочего состояния в нерабочее и отправлять syslog сообщение о том, что наш канал вышел из строя.
Первой проблемой, с которой сталкивается пытливый администратор на пути к реализации задуманного является, собственно, поиск SNMP OID, отвечающего за состояние настроенного NQA. Для решения этой задачи нам потребуется библиотека MIB, доступная для скачивания по адресу MIBs_V7, и любой MIB browser (я воспользовался бесплатной версией Ireasoning MIB Browser Personal Edition). Из состава этой библиотеки загружаем в MIB browser MIB с названием “hh3c-nqa.mib”. В MIB браузере находим в объект “hh3cNqaReactCurrentStatus” и выполняем команду “Get Subtree” предварительно указав IP адрес нашего маршрутизатора (172.16.1.1) и community (“public”). В ответ мы получем искомый объект, в моем случае это SNMP OID .1.3.6.1.4.1.25506.8.3.1.13.1.11.4.105.99.109.112.1.49.1.
Теперь в текствовом редакторе пишем первый скрипт и называем его, например, up.tcl. Этот скрипт будет раз в 10 секунд опрашивать состояние нашего SNMP OID, регистрировать изменение значения OID с “3” на “2” (что соответствует восстановлению канала связи) и генерировать syslog с сообщением вида “VSR1000-2 Dest IP 192.168.1.2 is available”. На работу отведем скрипту 30 секунд:
::comware::rtm::event_register snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.4.105.99.109.112.1.49.1 monitor-obj get start-op eq start-val 3 restart-op eq restart-val 2 interval 10 running-time 30 user-role network-admin
::comware::rtm::action syslog priority 5 facility local4 msg «VSR1000-2 Dest IP 192.168.1.2 is available»
Аналогичным образом пишем второй скрипт, который будет отслеживать “падение” канала и выдавать syslog вида “VSR1000-2 Dest IP 192.168.1.2 is unavailable”:
::comware::rtm::event_register snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.4.105.99.109.112.1.49.1 monitor-obj get start-op eq start-val 2 restart-op eq restart-val 3 interval 10 running-time 30 user-role network-admin
::comware::rtm::action syslog priority 5 facility local4 msg «VSR1000-2 Dest IP 192.168.1.2 is unavailable»
Затем загружаем полученные файлы “up.tcl” и “down.tcl” на флэш память машрутизатора и регистрируем их:
[VSR1000-1]rtm tcl-policy up flash:/up.tcl
[VSR1000-1]rtm tcl-policy down flash:/down.tcl
Остается только задать в конфигурации маршрутизатора IP адрес syslog сервера:
[VSR1000-1]info-center loghost 172.16.1.100
Ролик, демонстрирующий эту часть конфига.
Мы научили наш маршрутизатор в дополнение к SNMP trap’у отправлять syslog сообщение.
Преходим к заключительной части нашей задачи – отправке email сообщения через ESMTP сервер.
Для решения этой задачи воспользуемся готовым скриптом, который можно скачать по адресу http://wiki.tcl.tk/417. Сохраняем его в файл sendmail.tcl и записываем в корневой каталог флэш памяти маршрутизатора. Скрипт описывает процедуру, и требует определения следующих переменных:
- smtphost – IP адрес ESMTP сервера;
- toList — адреса получателей e-mail;
- from — адрес отправителя e-mail;
- subject – тема письма;
- body – содержимое письма;
- {trace 0} – включение/выключение информации для отладки.
Часть переменных, а именно, адрес почтового сервера и получателя сообщений мы зададим в конфигарации маршрутизатора:
[VSR1000-1]rtm environment smtphost 172.16.1.100
[VSR1000-1]rtm environment toList ADMIN@company.org
Остальные переменные определяем в теле наших скриптов:
variable from VSR1000-1@test.org
variable subject “VSR1000-2 availability”
variable body “VSR1000-2 Dest IP 192.168.1.2 is available”
Так же, в тело скриптов up.tcl и down.tcl добавляем строку, которая регистрирует библиотеку, отвечающую за отправку почты:
source sendmail.tcl
И строчку, которая вызывает данную процедуру:
sendmail $smtphost $toList $from $subject $body
Кому интересно, смотрим видео этого процесса.
Вот собственно и все, что требовалось настроить.
Полученные в результате конфигурации и скрипты можно сказать здесь:
Конфигурация маршрутизатора HP VSR1000-1
Конфигурация маршрутизатора HP VSR1000-2
Скрипт up.tcl
Скрипт down.tcl
Скрипт sendmail.tcl
Данная статья не претендует истину в последней инстанции, не призывает рашать ваши задачи именно так и скорее является демонстрацией инструментария, доступного для владельцев маршрутизаторов HP MSR NG. Надеюсь, эти сведения помогут разработать нашим читателям собственные конфигурации, решающие их уникальные производственные задачи.
В процессе решения задачи использовались материалы:
HP VSR1000 Virtual Services Router Installation and Getting Started Guide
HP VSR1000 Virtual Services Router Network Management and Monitoring Configuration Guide
R0202-HP VSR1000 Virtual Services Router Network Management and Monitoring Command Reference
Автор: Mishko