Page tree
Skip to end of metadata
Go to start of metadata

Важно!

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

В данной статье принцип работы функционала будет рассмотрен на модели SNR-S2995G-24FX, на остальных моделях и сериях все работает идентично.

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

Про функционал IP SLA есть большое кол-во статей в сети Интернет (например, можно почитать о нем здесь или здесь). Но для общего понимания дадим краткое пояснение.

Изначально 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>

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

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

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

Для настройки порта обязательно сперва включить сервер
SNR-S2989G-48TX(config)#nqa server ?
  tcp-port  NQA TCP server port
  udp-port  NQA UDP server port
  <cr>

SNR-S2989G-48TX(config)#nqa server tcp-port ?
  <1-65535>  port num <1-65535>

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

Можно настроить 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 client так же отключен, и, чтобы все работало, нужно сперва глобально включить NQA agent (клиент) на коммутаторе:

Включаем NQA client
SNR-S2995G-24FX(config)#nqa agent ?
  <cr>
  
SNR-S2995G-24FX(config)#nqa agent 
SNR-S2995G-24FX(config)#

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

Всего может быть до 64 записей на коммутаторе
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 записи:

Тип 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, хотя вообще на коммутаторе доступны и другие варианты, мы для теста выберем самый простой:

Выбрали самый простой и распространенный метод проверки
SNR-S2995G-24FX(config)#nqa entry 1 type icmp-echo ?
  dest-ip  destination ip address

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

Указываем IP-адрес назначения для отправки пакетов
SNR-S2995G-24FX(config)#nqa entry 1 type icmp-echo dest-ip ?   
  A.B.C.D  IP Address

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 записи. Рассмотрим какие еще есть возможности для настройки.

Опции для настройки NQA записи
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 entry X datasize

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

Настройка datasize
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 записи:

Настройка description
SNR-S2995G-24FX(config)#nqa entry 1 description ?
  LINE  specific description

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:

Настройка probe-count
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.

Также можно настроить интервал (частоту) между каждой итерацией (каждым циклом) с помощью команды nqa entry X frequency. Значение по умолчанию - 3 секунды. Изменим на 5 секунд:

Настройка frequency
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 - nqa entry X probe-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 и просмотр статистики

После настройки обычно стоит вопрос: как посмотреть теперь какую-то информацию или статистику по работе функционала? Есть команды:

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

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

Учитывая, что у нас пока только одна запись, нам все равно, как именно смотреть, поэтому посмотрим статистику конкретно по этой записи:

show nqa entry X results
SNR-S2995G-24FX#show nqa entry ? 
  <1-64>  id

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

SNR-S2995G-24FX#show nqa entry 1 results ?
  |  Output modifiers
  <cr>

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>

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

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

show nqa entry X results
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:

nqa entry X start 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' для конкретной записи:

nqa entry X clear records
SNR-S2995G-24FX(config)#nqa entry 1 clear ?
  records  NQA probe records

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

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

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 в режиме глобальной конфигурации.

Опции для настройки NQA записи
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 entry X tos

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

nqa entry X tos
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:

nqa entry X ttl
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%:

nqa entry X fail-percent
SNR-S2995G-24FX(config)#nqa entry 1 fail-percent ?
  <1-100>  INTEGER<1-100> Failure packet percent maximum number. the default is
           100

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

nqa entry X probe-threshold

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

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

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

nqa entry X probe-threshold error
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

При превышении значения трешхолда, если включено логирование 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 alarm ?       
  enable  enable or start function
SNR-S2995G-24FX(config)#nqa alarm enable ?
  <cr>

SNR-S2995G-24FX(config)#nqa traps ?      
  enable  enable or start function
SNR-S2995G-24FX(config)#nqa traps enable ?
  <cr>

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

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

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

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

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

Например, syslog:

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

Подчеркнем еще раз, что несмотря на то, что мы рассмотрели только один тип теста (icmp-echo) и создавали только одну запись NQA, можно использовать сразу несколько записей, и они могут быть как одного типа, так и разных. Все результаты можно увидеть в выводе команды 'show nqa results'.

NQA track

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

track X nqa X
SNR-S2995G-24FX(config)#track 1 ?
  list  List
  nqa   NQA

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

SNR-S2995G-24FX(config)#track 1 nqa 1 ?
  <cr>

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

track X list
SNR-S2995G-24FX(config)#track 1 ?
  list  List
  nqa   NQA

SNR-S2995G-24FX(config)#track 1 list ?
  boolean  Bool configuration

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 ?
  WORD  applet name <1-31> characters

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 ?
  <cr>
SNR-S2995G-24FX(config-applet-test)#event track 1 state down 
SNR-S2995G-24FX(config-applet-test)#

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

Пример конфигурации applet
SNR-S2995G-24FX(config-applet-test)#?
 commands:
  show    Show running system information
  action  Action
  end     End current mode and change to EXEC mode
  event   Event
  exit    End current mode and down to previous mode
  help    Description of the interactive help system
  no      Negate a command or set its defaults

SNR-S2995G-24FX(config-applet-test)#action ?
  WORD  WORD action num, include <0-9>,'.'

SNR-S2995G-24FX(config-applet-test)#action 0 ?
  cli  Cli

SNR-S2995G-24FX(config-applet-test)#action 0 cli ?
  command  Command

SNR-S2995G-24FX(config-applet-test)#action 0 cli command ?
  WORD  Command string

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).

Допустим, у нас есть такая конфигурация:

Конфигурация для track X list
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 в выводе данной команды:

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).

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

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

Для этого сперва соберем такую схему:


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

Пример тестовой конфигурации
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.

  • No labels