Перейти к основному содержимому

NQA (IP SLA)

к сведению

На данный момент функционал NQA поддерживается на следующих сериях коммутаторов SNR: S2989G, S2990X, S2995G, S3850G, S3950G, S300G, S300X, S4350X, S4650X, S7550, S7650.

Что такое IP SLA или NQA​

Изначально Cisco IP SLA (Internet Protocol Service Level Agreement) являлась функцией программного обеспечения Cisco IOS, которая предоставляла пользователям возможность анализировать уровень обслуживания IP для приложений и сервисов путем постоянной генерации трафика каким-либо надежным способом.

Но это не просто мониторинг сети, на основе данного анализа устройство с IP SLA способно напрямую влиять на процесс маршрутизации путем отслеживания характеристик, и в зависимости от результатов могут быть внесены изменения в конфигурацию: например, переключение на резервный линк при наличии потерь на основном, отправка сообщений на syslog-сервер / SNMP-трапов при каких-то критических событиях и т.д.

Затем данный функционал появился и у других производителей. Где-то он даже называется по-другому, например, на многих вендорах этот функционал существует под именем NQA (Network Quality Analysis), в том числе и на коммутаторах SNR.

Конфигурация NQA на коммутаторах SNR​

В качестве примера мы рассмотрим работу функционала на модели SNR-S2995G-24FX. Существуют самые разные сценарии тестирования, мы разберем на примере самого простого - icmp-echo. Но, в любом случае, рассмотрим все команды, которые относятся к функционалу NQA.

Команды для функционала NQA в режиме глобальной конфигурации
SNR-S2995G-24FX(config)#nqa ?
agent Network Quality Analyzer client
alarm Alarm funciton
entry entry
server service
traps Traps funciton

Устройство (коммутатор в нашем случае) может функционировать как NQA client или NQA server, или может даже иметь обе роли одновременно. Поэтому существуют настройки для NQA client и для NQA server соответственно.

NQA server​

NQA server - это дополнительный функционал для работы UDP/TCP (для тестов с помощью данных протоколов). Обычно для работы tcp-probe, udp-probe или других способов тестирования не требуется включать роль сервера на целевом устройстве, потому что оно и так должно по умолчанию слушать запросы и отвечать на них. Однако в определенных сценариях все-таки может потребоваться включить сервер, который будет слушать наши запросы и отправлять ответы (пример рассмотрим чуть ниже). Именно для таких случаев необходимо включать NQA server:

Здесь же можно указать транспортные порты, которые коммутатор должен слушать на предмет ответа
SNR-S2995G-24FX(config)#nqa server ?
tcp-port NQA TCP server port
udp-port NQA UDP server port
<cr>

По умолчанию NQA server отключен. Для каждого типа (TCP/UDP) может быть назначен только один порт (т.е. один для TCP и один для UDP), если настроим, к примеру, еще один порт для UDP, то существующее значение будет просто перезаписано.

Чтобы настроить транспортный порт для NQA-сервера, обязательно вначале включить сам сервер, в противном случае коммутатор выдаст ошибку:

Для настройки порта необходимо включить сервер

SNR-S2989G-48TX(config)#nqa server tcp-port 4000
Error: the nqa server is disable, please enable first!
SNR-S2989G-48TX(config)#nqa server
SNR-S2989G-48TX(config)#nqa server tcp-port 4000

Можно настроить NQA server даже для определенного VRF:

Пример настройки NQA server в VRF
SNR-S2995G-24FX(config)#nqa server tcp-port 4000 ?
vrf nqa vrf name
<cr>

Рассмотрим пример. Допустим, у нас есть коммутатор-клиент (о настройках клиента поговорим чуть позже), мы выполняем NQA-тест с помощью инструментов TCP или UDP, то есть отправляем пакеты tcp-probe или udp-probe на определенный адрес и порт назначения. Если мы используем какой-то стандартный (общеизвестный) транспортный порт, который целевое устройство и так прослушивает, то мы получим ответ на свой запрос (например, TCP-порты 22, 23, 80, которые коммутатор и так слушает).

Но если мы укажем какой-то нестандартный порт (как в примере выше - порт 4000, или даже стандартный порт 23, но типа UDP, а не TCP), то при настройках по умолчанию (то есть с отключенным сервером) мы не получим на него ответ, если не включим NQA server на другом устройстве и не укажем порт, который необходимо прослушивать. Так мы не получим ответ на свои запросы, и тест будет провален.

В остальных случаях функционал сервера использовать необязательно.

На этом настройки для сервера заканчиваются, все остальные настройки далее актуальны для NQA клиента.

NQA client​

Включаем глобально NQA agent (отключён по умол.) на коммутаторе:

SNR-S2995G-24FX(config)#nqa agent

Далее необходимо создать NQA запись:

SNR-S2995G-24FX(config)#nqa entry ?
<1-64> id

SNR-S2995G-24FX(config)#nqa entry 1 ?
alarm Alarm funciton
clear Reset functions
datasize datasize of packet
description nqa description<1-64>
fail-percent fail-percent in one cycle
frequency cycle of probes
probe-count probe times in one cycle
probe-threshold threshold of probe
probe-timeout timeout of probe
records-result nqa records num
start enable or start function
tos tos of packet
traps Traps funciton
ttl ttl of packet
type type of nqa example tcp,udp

Для начала выберем тип NQA записи:

SNR-S2995G-24FX(config)#nqa entry 1 type ?
dhcp dhcp probe
icmp-echo icmp-echo probe
icmp-jitter icmp-jitter probe
tcp tcp probe
udp-echo udp probe
udp-jitter udp-jitter probe

Для одной записи может быть выбран только один тип NQA-проверки. То есть, например, для nqa entry 1 только icmp-echo, для nqa entry 2 только icmp-jitter, для nqa entry 3 тоже только icmp-jitter, для nqa entry 4 только udp-echo и т.д.

Для теста выберем тип icmp-echo и укажем IP-адрес назначения, на который будут отправляться пакеты для проверки:

SNR-S2995G-24FX(config)#nqa entry 1 type icmp-echo dest-ip 192.168.1.2

В принципе этого уже достаточно, просто нужно иметь в виду, что можно еще указать различные опции, например, nexthop-адрес или даже выполнять проверку в определенном VRF:

Различные опции для dst.ip
SNR-S2995G-24FX(config)#nqa entry 1 type icmp-echo dest-ip 192.168.1.2 ?
nexthop-ip nexthop
src-ip source ip address
vrf nqa vrf name
<cr>

NQA entry X​

nqa entry X datasize​

Данная команда позволяет менять размер пакета, который коммутатор отправляет для теста. Значение по умолчанию - 56 байт. Если сконфигурированное значение datasize будет меньше, чем значение MTU на коммутаторе, то будет использовано значение MTU с добавлением ведущих нулей (padding). Если сконфигурированное значение будет больше, чем значение MTU на коммутаторе, то пакет будет фрагментирован.

SNR-S2995G-24FX(config)#nqa entry 1 datasize ?
<1-8100> INTEGER<1-8100> specific datasize (bytes) in an NQA test packet. The
default is 56. If the configured datasize is less than the default
datasize, the dafault datasize is used

SNR-S2995G-24FX(config)#nqa entry 1 datasize 56 ?
<cr>

nqa entry X description​

Данной командой мы можем добавить описание для конкретной NQA записи:

SNR-S2995G-24FX(config)#nqa entry 1 description nqatest

nqa entry X frequency / nqa entry X probe-count / nqa entry X probe-timeout / nqa entry X records-result​

Во время работы NQA функционала периодически отправляются специальные пакеты (как говорили выше, тип этих пакетов/тестов мы можем выбирать сами). Можно сделать, чтобы эти пакеты отправлялись на постоянной основе. Одна отправка такого пакета (или пакетов) называется probe (с англ. "проба" или "исследовать"). Предположим, что тест у нас происходит непрерывно, значит probe пакеты отправляются через какой-то интервал времени.

Можно настроить кол-во отправляемых пакетов в одной итерации (один probe), для этого используется команда nqa entry X probe-count. Значение по умолчанию - 1 (один пакет за итерацию). Изменим это значение на 2:

SNR-S2995G-24FX(config)#nqa entry 1 probe-count ?
<1-5> INTEGER<1-5> specific times value. The normal default is 1, The jitter
default is 20.

Также можно настроить интервал (частоту) между каждой итерацией (каждым циклом) с помощью команды:

SNR-S2995G-24FX(config)#nqa entry 1 frequency ?
<3-60> INTEGER<3-60> specific seconds value. The normal default is 3, The
jitter default is 40.
предупреждение

Должно соблюдаться следующее условие: frequency > count * timeout, где count - ранее упомянутый probe-count, а timeout - probe-timeout или время, по истечении которого, если не пришел ответ, тест считается провальным, и начинается следующий тест.

Если условие выше не будет соблюдаться, то коммутатор выдаст следующую ошибку:

SNR-S2995G-24FX(config)#nqa entry 1 probe-timeout 3
please set freq > count * timeout
SNR-S2995G-24FX(config)#nqa entry 1 probe-timeout 2

nqa entry X start и просмотр статистики​

Для просмотра информации и статистики есть команды:

SNR-S2995G-24FX#show nqa ?
entry entry
results nqa results record

entry - посмотреть по какой-то конкретной записи, а results - по всем сразу.

На данном этапе у нас только одна "entry" и пустой вывод:

SNR-S2995G-24FX#show nqa entry 1 results
--------------------------------------------------------------

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

предупреждение

После того как проверка будет запущена, изменить параметры записи нельзя. Коммутатор выдаст следующее сообщение об ошибке:

"The nqa 1 test is in progress, parameters can't be changed."

В данном случае поможет только либо удаление nqa записи, либо остановка теста: 'no nqa entry 1 start'.

Итак, для отправки пакетов нужно сперва активировать NQA запись:

nqa entry X start
SNR-S2995G-24FX(config)#nqa entry 1 start ?
forever Start test forever
time-range time-range
<cr>

Допустим, мы не выбираем никакие опции и просто запускаем тест.

Получим такой результат:

SNR-S2995G-24FX#sh nqa entry 1 results
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
1, Test 1 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 19/47/33/66
RTT Square Sum: 2570
Start probe Time: 2024-07-23 00:04:29
Lost packet ratio: 0%
--------------------------------------------------------------

Здесь мы можем увидеть для нашей записи какой тип теста выполнялся (test probe-type, icmp-echo), сколько раз выполнялся тест, сколько раз был получен ответ, время отклика (RTT), время начала теста и его успешность (процент потерь пакетов). И также видим, что тест завершен (The test is finished).

Дело в том, что если мы не будем выбирать никакие опции при запуске теста для нашей NQA-записи, то тест будет выполнен всего один раз. Если требуется проводить тестирование на постоянной основе, то необходимо выбрать параметр "forever". Если требуется выполнять тестирование только в какие-то конкретные моменты времени, то можно использовать time-range. Здесь нужно будет указать заранее сконфигурированный на коммутаторе time-range:

SNR-S2995G-24FX(config)#nqa entry 1 start time-range ?
WORD time-range name, name length<1-64>

Time-range - независимый функционал, который не привязан к какой-то конкретной технологии, может также, например, использоваться для PoE функционала и т.д.

Сейчас нас сейчас интересует постоянная отправка пакетов, поэтому мы выберем опцию forever, но сперва очистим уже собранную статистику. Сделать это можно командой nqa entry X clear для конкретной записи:

SNR-S2995G-24FX(config)#nqa entry 1 clear records

nqa entry X records-result​

Запустим снова тест, но перед этим изменим параметр record-result:

nqa entry X records-result
SNR-S2995G-24FX(config)#nqa entry 1 records-result ?
<1-10> INTEGER<1-10> Set maximum result records. the default is 5

SNR-S2995G-24FX(config)#nqa entry 1 records-result 3 ?
<cr>

Как уже говорилось ранее, когда коммутатор выполняет тест, то это событие называется probe. В одном тесте может быть несколько probe, это параметр probe-count за один цикл теста. Выше мы настроили кол-во таких probe 2 за один цикл. А сейчас мы настроили кол-во отображаемых тестов (циклов) в нашем терминале - 3 (до этого по умолчанию было 5). Посмотрим, что конкретно имеется в виду:

show nqa entry X results (1)
SNR-S2995G-24FX#sh nqa entry 1 results
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
1, Test 1 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 19/32/25/51
RTT Square Sum: 1385
Start probe Time: 2024-07-23 00:33:21
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
2, Test 2 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 4/15/9/19
RTT Square Sum: 241
Start probe Time: 2024-07-23 00:33:27
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
3, Test 3 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 4/25/14/29
RTT Square Sum: 641
Start probe Time: 2024-07-23 00:33:32

На экране терминала отображается три последних теста. Однако тест у нас все еще выполняется, потому что мы выбрали выполнение тестирования на постоянной основе. Поэтому если мы обновим результаты, то здесь будет опять три последние записи, но как мы видим, это уже 22, 23 и 24 попытки соответственно:

show nqa entry X results (2)
SNR-S2995G-24FX#sh nqa entry 1 results
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
1, Test 22 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 3/25/14/28
RTT Square Sum: 634
Start probe Time: 2024-07-23 00:35:13
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
2, Test 23 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 4/25/14/29
RTT Square Sum: 641
Start probe Time: 2024-07-23 00:35:19
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
3, Test 24 result The test is finished.
Send operation times: 2 Receive response times: 2
Min/Max/Avg/Sum RTT: 3/25/14/28
RTT Square Sum: 634
Start probe Time: 2024-07-23 00:35:24
Lost packet ratio: 0%
--------------------------------------------------------------

И за один цикл отправляется два пакета (две пробы), как мы и настраивали (Send operation times: 2).

Для теста снова остановим отправку пакетов, очистим результат и сделаем вывод только двух последних тестов в терминал, кол-во отправляемых probe сделаем 5, а интервал между ними - 20.

То есть будут такие настройки:

nqa entry 1 frequency 20
nqa entry 1 probe-count 5
nqa entry 1 probe-timeout 3
nqa entry 1 records-result 2

Посмотрим результат:

show nqa entry X results (3)
SNR-S2995G-24FX#sh nqa entry 1 results
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
1, Test 1 result The test is finished.
Send operation times: 5 Receive response times: 5
Min/Max/Avg/Sum RTT: 19/44/24/120
RTT Square Sum: 3380
Start probe Time: 2024-07-23 00:44:29
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
2, Test 2 result The test is finished.
Send operation times: 5 Receive response times: 5
Min/Max/Avg/Sum RTT: 3/29/17/86
RTT Square Sum: 1828
Start probe Time: 2024-07-23 00:44:49
Lost packet ratio: 0%
--------------------------------------------------------------

Теперь отображается два последних теста, попыток (probe) в каждой итерации сделано 5, интервал между итерациями был 20 секунд. Таким образом, можно очень гибко настроить сам процесс тестирования и вывод результатов.

к сведению

Для типа NQA "dhcp-probe" не поддерживается изменение record-result.

nqa entry X tos​

Данная команда позволяет настроить определенный tos (type of service) для отправляемых probe-пакетов. Значение по умолчанию 0:

SNR-S2995G-24FX(config)#nqa entry 1 tos ?
<0-255> INTEGER<1-255> specific tos value. The default is 0

nqa entry X ttl​

Данная команда позволяет настроить определенный ttl (time to live) для отправляемых probe-пакетов. Значение по умолчанию 30:

SNR-S2995G-24FX(config)#nqa entry 1 ttl ?
<1-255> INTEGER<1-255> specific ttl value. The default is 30

nqa entry X fail-percent​

Команда используется для определения порога потерь при тестировании. Иными словами, указывается максимальный допустимый процент потерь, и если процент потерь при тестировании будет равен этому значению или превысит его, тест считается неудачным. Значение по умолчанию - 100%:

SNR-S2995G-24FX(config)#nqa entry 1 fail-percent 95 ?
<cr>

nqa entry X probe-threshold​

Данная команда используется для указания максимального порога задержки при тестировании, то есть максимальное время ожидания ответа на probe запрос.

SNR-S2995G-24FX(config)#nqa entry 1 probe-threshold ?
<50-5000> specific milliseconds of threshold

Причем необходимо обратить внимание, что нельзя указать значение больше, чем значение probe-timeout:

SNR-S2995G-24FX(config)#nqa entry 1 probe-threshold 3100
Error: threshold can't cfg greater than timeout
SNR-S2995G-24FX(config)#nqa entry 1 probe-threshold 3000
SNR-S2995G-24FX(config)#nqa entry 1 probe-threshold 50

При превышении значения threshold, если включено логирование NQA, в логах увидим запись следующего вида:

threshold violation
Nqa entry 1 icmp-echo probe completion time (59)ms is overthreshold !

И если у нас включена отправка логов и SNMP-трапов, то на сервер будет отправлен соответствующий лог и трап.

nqa entry X alarm / nqa entry X traps​

По умолчанию отправка логов о каких-либо событиях в работе NQA отключена. Аналогично и с отправкой SNMP-трапов.

Можно включить отправку как глобально для NQA функционала, так и для какой-то конкретной записи:

nqa entry X alarm / nqa entry X traps

SNR-S2995G-24FX(config)#nqa traps enable
SNR-S2995G-24FX(config)#nqa entry 1 traps enable

После активации nqa alarm на коммутаторе начнут появляться логи касаемо работы NQA, например, такие:

214 SNR-S2995G-24FX %Jul 23 20:00:05:141 2024 MODULE_NQA/2/:Nqa entry 1 icmp-echo probe failure !
208 SNR-S2995G-24FX %Jul 23 19:59:55:121 2024 MODULE_NQA/2/:Nqa entry 1 icmp-echo probe failure !
207 SNR-S2995G-24FX %Jul 23 19:59:53:671 2024 MODULE_NQA/2/:Nqa entry 1 icmp-echo probe failure !
206 SNR-S2995G-24FX %Jul 23 19:59:52:611 2024 MODULE_NQA/2/:Nqa entry 1 icmp-echo probe result change (succeed->fail) !
205 SNR-S2995G-24FX %Jul 23 19:59:52:611 2024 MODULE_NQA/2/:Nqa entry 1 icmp-echo probe failure !

По умолчанию без включенного nqa alarm, в логе подобных сообщений мы не увидим.

И если на коммутаторе есть настройки для syslog и SNMP-сервера, то будут отправлены соответствующие записи на сервер.

Например, syslog:

syslog

Или SNMP-сервер:

snmp

NQA track​

Команда track позволяет сопоставлять определенные (существующие) NQA-записи. Обычно одному track соответствует одна NQA-запись (нумерация не обязана быть одинаковой, но для удобства вполне можно делать номера для NQA-записи и track одинаковыми):

track X nqa X
SNR-S2995G-24FX(config)#track 1 nqa 1

Однако возможен и такой вариант, чтобы одному track соответствовало несколько разных NQA-записей. Реализовано это может быть через выполнение логических (побитовых) операций AND/OR (И/ИЛИ):

track X list
SNR-S2995G-24FX(config)#track 1 list boolean ?
and And
or Or
SNR-S2995G-24FX(config)#track 1 list boolean and

После выполнения данной команды мы можем сопоставлять с данным track больше одной NQA записи. В противном случае при попытке привязать к track больше одной NQA-записи каждая текущая запись менялась бы на новую.

Как именно реализован режим list (маппинг с одним track больше одной NQA-записи), мы рассмотрим чуть позже, когда изучим, что такое applet.

В режиме list с одним track нельзя сопоставлять более трех NQA-записей. Также в track нельзя использовать типы записей "jitter" (например, icmp-jitter или udp-jitter), поскольку они просто указывают значение джиттера, но не конкретный результат: success или fail.

Event manager applet​

Мы рассмотрели процесс привязки NQA-записей к определенному track, но зачем вообще это необходимо и для чего нужен этот track?

Функционал NQA - очень гибкий инструмент, который на основе мониторинга может выполнять определенные сценарии работы. И для этого нам требуется event manager applet (дословно с английского: "приложение для менеджера событий"). И именно для event manager applet нам нужен функционал track. "track" - отслеживать, таким образом, track матчит определенные NQA записи, и затем этот track ассоциируется с applet.

Допустим, у нас уже есть некий track, которому соответствует некий NQA-probe. Рассмотрим принцип конфигурации.

Applet создается довольно просто, необходимо указать ему имя:

event manager applet
SNR-S2995G-24FX(config)#event manager applet test
SNR-S2995G-24FX(config-applet-test)#

Затем нужно его ассоциировать с определенным track (пусть это будет наш track 1):

event track X
SNR-S2995G-24FX(config-applet-test)#event ?
track bind track entry

SNR-S2995G-24FX(config-applet-test)#event track ?
<1-32> Track entry id

SNR-S2995G-24FX(config-applet-test)#event track 1 ?
state Track state

SNR-S2995G-24FX(config-applet-test)#event track 1 state ?
down Down
up Up

Что означают состояния down и up в applet, рассмотрим чуть ниже.

Для примера выберем сценарий, когда track переходит в состояние down:

event track X state
SNR-S2995G-24FX(config-applet-test)#event track 1 state ?
down Down
up Up
SNR-S2995G-24FX(config-applet-test)#event track 1 state down

Теперь необходимо настроить выполнение какого-либо действия (action).

Пример конфигурации applet
SNR-S2995G-24FX(config-applet-test)#action 0 cli command "int e1/0/1"
SNR-S2995G-24FX(config-applet-test)#action 1 cli command "shutdown"
SNR-S2995G-24FX(config-applet-test)#action 2 cli command "exit"
SNR-S2995G-24FX(config-applet-test)#action 3 cli command "int e1/0/2"
SNR-S2995G-24FX(config-applet-test)#action 4 cli command "no shut"
SNR-S2995G-24FX(config-applet-test)#action 5 cli command "exit"
SNR-S2995G-24FX(config-applet-test)#exit

Объясним конфигурацию выше. При сработке какого-либо track (переход из одного состояния в другое) можно настроить выполнение какого-либо действия. Мы можем настроить определенную последовательность команд, которые должен будет выполнить коммутатор поочередно (нумерацию действия можно указывать даже через точку, например: action 1.1, 1.2 и т.д.).

Здесь, как самый простой пример, мы указали, чтобы в случае сработки коммутатор отключил первый порт и включил второй.

Но необходимо помнить, что мы указываем именно четкую последовательность команд, то есть точно так же, как бы мы делали все самостоятельно в режиме конфигурации коммутатора. Мы не просто говорим коммутатору, что необходимо отключить один порт и включить другой - мы говорим, чтобы сначала коммутатор зашел в конфигурацию одного порта, отключил его, вышел из режима конфигурации порта, затем зашел в режим конфигурации другого порта и т.д.

Таких действий (команд) может быть максимально до 32 на один applet. Команды должны быть указаны в двойных кавычках. С одним applet может быть ассоциирован только один track. Но в то же время на коммутаторе возможно наличие нескольких applet.

к сведению

Во избежание непредвиденных ситуаций, таких как захват режима конфигурации коммутатором, рекомендуется дополнительно включать 'multi config access', чтобы не потерять доступ к конфигурации коммутатора.

Теперь вернемся к принципу работы track с несколькими NQA-записями, который мы обещали объяснить после разбора applet.

Сначала рассмотрим принцип работы логического ИЛИ (list boolean OR).

Допустим, у нас есть такая конфигурация: Пример конфигурации applet track 1 list boolean or track 1 nqa 1 track 1 nqa 2 ! event manager applet up event track 1 state up action 1.1 cli command "vlan 100" ! event manager applet down event track 1 state down action 1.1 cli command "vlan 200"


В данном случае команда "vlan 100" в applet под названием "up" будет выполнена на коммутаторе только тогда, когда track1 перейдет в состояние up. Команда "vlan 200" в applet под названием "down" будет выполнена только тогда, когда track1 перейдет в состояние down. OR boolean означает, что track1 перейдет в состояние UP только тогда, когда NQA1 ИЛИ/И NQA2 записи будут иметь статус success (то есть хотя бы один успех); track 1 перейдет в состояние DOWN, только тогда, когда обе NQA записи будут иметь статус fail. Под статусом имеется в виду status в выводе данной команды:
```text title="show track all status (1)"
SNR-S2995G-24FX#sh track all status
Track ID: 1
Notification delay: Positive 0, Negative 0 (in milliseconds)
Logical mode: OR
Remote-ip: * probe-status: negative
protocal: NQA 1 status: success
protocal: NQA 2 status: fail

В данном случае у нас будет создан VLAN 100. Если и NQA1 перейдет в статус fail, тогда track1 перейдет в статус down и будет создан VLAN 200.

Теперь рассмотрим принцип работы логического И (list boolean AND).

Конфигурация остается идентичной за исключением самой операции:

track 1 list boolean and
track 1 nqa 1
track 1 nqa 2

Как и в предыдущем случае, команда "vlan 100" в applet под названием "up" будет выполнена на коммутаторе только тогда, когда track1 перейдет в состояние up. Команда "vlan 200" в applet под названием "down" будет выполнена только тогда, когда track1 перейдет в состояние down. AND boolean означает, что track1 перейдет в состояние UP только тогда, когда записи NQA1 И NQA2 будет иметь статус success (то есть обе одновременно должны иметь успех); track1 перейдет в состояние DOWN только тогда, когда хотя бы одна NQA-запись будет иметь статус fail.

show track all status (2)
SNR-S2995G-24FX#sh track all status
Track ID: 1
Notification delay: Positive 0, Negative 0 (in milliseconds)
Logical mode: AND
Remote-ip: * probe-status: positive
protocal: NQA 1 status: success
protocal: NQA 2 status: success

Например, в данном случае у нас будет создан VLAN 100, потому что обе NQA-записи имеют статус success, значит track будет в состоянии up и выполнится соответствующий applet. Если хотя бы одна NQA-запись перейдет в состояние fail, то track1 сразу же перейдет в состояние down и будет создан VLAN 200.

Эта логика эквивалентна логике побитовых операций логическое И (AND) и логическое ИЛИ (OR).

Пример настройки и работы​

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

scheme

Возьмем самые простые настройки:

Пример тестовой конфигурации
vlan 1
!
Interface Ethernet1/0/1
description 1st_uplink
!
Interface Ethernet1/0/2
description 2nd_uplink
shutdown
!
interface Vlan1
ip address 192.168.1.1 255.255.255.0
!

Настроим NQA:

Тестовая конфигурация NQA
nqa agent
nqa alarm enable
nqa entry 1 type icmp-echo dest-ip 192.168.1.2
nqa entry 1 frequency 5
nqa entry 1 probe-count 3
nqa entry 1 probe-threshold 150
nqa entry 1 probe-timeout 1
nqa entry 1 records-result 2
!
track 1 nqa 1
!
event manager applet test
event track 1 state down
action 0 cli command "int e1/0/1"
action 1 cli command "shut"
action 2 cli command "exit"
action 3 cli command "int e1/0/2"
action 4 cli command "no shut"
action 5 cli command "exit"
!

Пока тест идет успешно:

Промежуточный результат теста
SNR-S2995G-24FX#sh nqa results
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
1, Test 238 result The test is finished.
Send operation times: 3 Receive response times: 3
Min/Max/Avg/Sum RTT: 4/20/13/39
RTT Square Sum: 641
Start probe Time: 2024-07-24 01:28:18
Lost packet ratio: 0%
--------------------------------------------------------------
NQA entry(1)(test probe-type, icmp-echo)
2, Test 239 result The test is finished.
Send operation times: 3 Receive response times: 3
Min/Max/Avg/Sum RTT: 4/19/12/38
RTT Square Sum: 602
Start probe Time: 2024-07-24 01:28:23
Lost packet ratio: 0%
--------------------------------------------------------------

Сымитируем падение линка sw1-sw2.

Проверяем, что конфигурация изменилась:

Конфигурация после выполнения applet
Interface Ethernet1/0/1
description 1st_uplink
shutdown
!
Interface Ethernet1/0/2
description 2nd_uplink
!

Это лишь самый простой пример работы NQA. Функционал этот достаточно гибкий и может быть использован в самых разных сценариях, например: можно применять и другие настройки при срабатывании applet: добавление маршрута, изменение VLAN'ов на порту, включение/отключение какого-то другого функционала на коммутаторе и т.д. Также можно использовать и другие виды тестов помимо icmp-echo, что тоже является неоспоримым плюсом.

Если у вас остались какие-либо вопросы, вы всегда можете обратиться к нам на nag.support.