IP SLA
Функционал IP SLA (Соглашение об уровне обслуживания IP) позволяет анализировать параметры качества обслуживания различных IP сервисов и приложений, помогает обнаруживать неисправности и предотвращать аварийные ситуации в сети. Механизм его работы основан на технологии активного мониторинга трафика. Идеология “активного мониторинга” или “активного съёмника трафика” подразумевает, что на первом шаге будет происходить отправка специальных тестовых сообщений на объект исследования (investigation object), а уже на втором шаге будет произведён какой-либо анализ. Один из самых простых примеров подобного мониторинга является проверка доступности ресурса с помощью утилиты ping (отправки ICMP-запроса и ожидания ICMP-ответа).
Для настройки IP SLA в режиме конфигурации маршрутизатора введите команду:
ip sla-profile <NAME>
, где NAME имя профиля.
IP SLA профиль создаёт необходимое окружение для тестов, активного мониторинга и существует с момента его создания и до его удаления (lifetime: forever) с помощью команды no ip sla-profile <NAME>
.
Минимально необходимый набор параметров для запуска мониторинга включает в себя настройку объекта исследования, характеристик мониторинга и глобальное включение профиля. Объект и тип исследования задаётся в режиме конфигурации профиля командой:
icmp A.B.C.D [source E.F.G.H] [size <42-1500>] [vrf NAME] [df-bit] [dscp <0–63>] [num-packets <1-100>]
, где A.B.C.D это IP адрес объекта исследования, все остальные аргументы опциональные. E.F.G.H это IP адрес маршрутизатора с которого будут отправлены ICMP запросы, size это размер данных в теле ICMP (payload), NAME — это имя vrf через который будут отправляться ICMP запросы, df-bit это флаг для установки DF (Don’t Fragment) бита в IP заголовке, dscp позволяет установить отличное от нуля значение в поле Type of Service в IP заголовке для приоритизации трафика, а num-packets задаёт число посылаемых пакетов за одну транзакцию, при этом логика работы команды monitor
, для одного или нескольких пакетов, различна. По умолчанию всё работает для одного пакета. Пример для нескольких пакетов будет рассмотрен ниже.
Характеристиками для мониторинга, как вместе, так и по отдельности, могут служить:
- количество потерянных пакетов (Packet Loss).
- время приёма/передачи от начальной точки к месту назначения, и обратно к изначальной точке (Round Trip Timer).
Их настройка осуществляется командой:monitor [packet-loss <1-255>] [rtt-max <100-10000>]
, где packet-loss соответствует количеству потерянных пакетов (по умолчанию равен 1) после которого профиль перейдёт в состояние DOWN, параметр rtt-max соответствует максимально возможному RTT и задаётся в миллисекундах (по умолчанию равен 1000 мс).
В профиле есть возможность указать параметр packet-frequency <1-300>
, который задаёт интервал отправки тестовых сообщений в секундах (по умолчанию равен 5 секундам)
Параметр rtt-threshold присутствует в SLA профиле по умолчанию и равен 1000 мс. В системе должен присутствовать параметр, который задаёт максимальное время ожидания выполнения транзакций (например ожидание ICMP reply сообщения в ответ на ICMP request). Значение этого параметра может быть изменено. Если параметр rtt-max в команде monitor необходим для принятия решения о успешности или неуспешности транзакции по уровню задержки, то параметр rtt-threshold служит в качестве индикатора потерянного (loss) пакета.
После задания вышеуказанных настроек и включения мониторинга IP SLA профиль сможет отслеживать два статуса:
- Статус последней транзакции (Latest transaction status) :
- Success/Failure
- Операционный статус профиля (Operational profile status):
- SHUTDOWN/DOWN/UP
Статус последней транзакции указывает на успех или неудачу последней выполненной операции. Например при отсутствии ответа на последний отправленный маршрутизатором ICMP запрос статус будет Failure. Операционный статус показывает глобальное состояние всего IP SLA профиля и он зависит от количества успешных или неуспешных выполненных транзакций/операций. Профиль можно административно включить с помощью команд enable или no shutdown (по умолчанию профиль выключен).
Изменение операционного статуса профиля можно отследить в журнале событий или посредством SNMP trap сообщения от агента-маршрутизатора на SNMP менеджере.
Одним из основных преимущества IP SLA функционала, является возможность операционного статуса профиля влиять на политики маршрутизации трафика. У других вендоров сетевого оборудования этот функционал называют трекированием (tracking object). В качестве иллюстрации распространённого случая с динамическим переключением трафика на резервный канал рассмотрим следующую топологию:
Рисунок
Здесь в качестве основного канала приёма/передачи данных между хостами А и D используется канал, заданный с помощью статического маршрута через маршрутизатор B. В случае обрыва физического линка между коммутатором и маршрутизатором B запросы ICMP через основной канал от маршрутизатора ECO в сторону конечного хоста D будут неуспешными. Запущенный IP SLA мониторинг способен отследить такую ситуацию и исключить статический маршрут через основной канал из таблицы маршрутизации ECO. Динамически переключившись на резервный статический маршрут через маршрутизатор С, хост D снова будет виден для хоста А.
Для того чтобы привязать IP SLA профиль к статическому маршруту в качестве последнего аргумента классической команды ip route укажите sla и имя необходимого профиля. Пример:
ip route 1.1.1.1/32 10.0.0.1 sla TEST
, где TEST имя заранее сконфигурированного IP SLA профиля
Приведём пример конфигурации IP SLA на маршрутизаторе ECO для вышеуказанного примера:
!
ip sla-profile TEST
icmp 172.16.0.2 sdf-bit
monitor packet-loss 3 rtt-max 350
packet-frequency 10
enable
!
ip route 8.8.8.0/24 172.16.0.2 sla TEST
ip route 8.8.8.0/24 172.16.0.3 100
!
В качестве объекта исследования в примере выступает узел с IP адресом 8.8.8.1. Тестовая среда предполагает отправку ICMP сообщения раз в 10 секунд с выставленным DF (Don’t Fragment) битом. Операционный статус IP SLA профиля перейдёт в состояние DOWN в случае отсутствия факта получения трёх последовательных ICMP ответов или 3 пакетов с RTT > 350мс. Задан статический маршрут через основной канал с привязкой к IP SLA профилю TEST. Указан резервный статический маршрут с административной дистанцией 100.
Важно заметить, что на политики маршрутизации операционный статус профиля в SHUTDOWN не влияет. Маршруты с привязанными IP SLA профилями в статусе SHUTDOWN, без исключений, добавляются в таблицу маршрутизации.
У администраторов есть возможность внести задержку на переключение состояний IP SLA профиля. Как и на любой другой процесс в операционной системе маршрутизатора на частые переключения в IP SLA расходуются ресурсы центрального процессора. Чтобы нивелировать влияние множественных переключений и сгладить реакцию системы на периодическую недоступность объектов мониторинга настройте задержку для переходов состояния UP→DOWN и DOWN→UP в секундах командой:
delay down <1-300> up <1-300>
.
Таким образом, если за время задержки IP SLA профиль поменял своё операционное состояние на первоначальное, переключения не произойдёт.
Для просмотра краткой информации по всем сконфигурированным профилям воспользуйтесь командой: show ip sla-profile summary
.
ecorouter#sh ip sla-profile summary
Profile Operation Destination Operational
Name Type Object Status
-----------------------------------------------------
test1 ICMP 10.1.0.10 UP
test2 ICMP 172.16.2.20 UP
test3 ICMP 192.168.3.30 UP
А для детального вывода информации по определенному IP SLA профилю воспользуйтесь командой show ip sla-profile <NAME>
, где NAME это имя профиля.
ecorouter#sh ip sla-profile test1
Type: ICMP
Operational profile status: UP
IP VRF: default
Object of investigation: 10.1.0.10
Monitor characteristics:
IP packet loss: 3
Maximum RTT: 500 msec
Latest transaction status: Success
Latest transaction RTT: 33 ms
Failure transactions count: 0
Success transactions count: 783
Success transactions percentage: 100.00%
Profile lifetime: forever
Операционный статус SLA профиля может влиять и на другие настройки в системе, помимо наличия или отсутствия маршрута в таблице маршрутизации, он может изменить значение приоритета в протоколе VRRP, а также изменить статус интерфейса и перевести его в состояние UP/DOWN. Приведём пример соответствующих настроек.
Для интерфейса:
router(config)#interface test
router(config-if)#monitor sla IP_SLA_PROFILE_NAME
Изменение операционного статуса профиля переводит статус интерфейса в соответствующее состояние.
Для VRRP:
ecorouter(config)#router vrrp 1 iface
ecorouter(config-router)#monitor sla IP_SLA_PROFILE_NAME decrement <1-255>
Перевод операционного статуса профиля в DOWN уменьшает приоритет VRRP маршрутизатора на значение, указанное после ключевого слова decrement.
Несколько SLA профилей можно объединять в логические группы, тем самым создавая более сложную логику для перестроения маршрутов. В ситуация когда помимо работоспособности основного канала, требуется отслеживать характеристики резервного канала, и переключаться на резервный маршрут только при отсутствии какой-либо деградации сервисов на нем, объединение SLA профилей в логические группы может стать удобным инструментом.
Создание логических групп:
router(config)#ip sla-profile A
router(config-sla)#sla ?
match-all Boolean and
match-any Boolean or
Ключевым словам match-all и match-any соответствуют логические операции «И» и «ИЛИ». Нижеследующая конфигурация будет подразумевать, что SLA профиль C будет в операционном статусе UP, только если и SLA профиль A и SLA профиль B в операционном статусе UP:
ip sla-profile A
icmp 10.0.0.1
monitor packet-loss 3
packet-frequency 5
enable
!
ip sla-profile B
icmp 10.0.0.2
monitor packet-loss 3
packet-frequency 5
enable
!
ip sla-profile C
sla match-all A B
enable
Для использования логики «НЕ» в конфигурации профиля добавьте ключевое слово inverse при включении SLA профиля.
ip sla-profile B
icmp 10.0.0.2
monitor packet-loss 3
packet-frequency 5
enable inverse
Приведем пример создание SLA профилей с объединением логики «ИЛИ — НЕ»
ip sla-profile A
icmp 10.0.0.1
monitor packet-loss 3
packet-frequency 5
enable
!
ip sla-profile B
icmp 10.0.0.2
monitor packet-loss 3
packet-frequency 5
enable
!
ip sla-profile C
icmp 10.0.0.3
monitor _rtt-max 500_
packet-frequency 5
enable inverse
!
ip sla-profile D
sla match-all A B
enable
!
ip sla-profile E
sla match-any D C
enable
Подобные SLA профили можно абсолютно также связывать с маршрутами, VRRP группами, L3 интерфейсами.
С помощью Булевой логики в SLA профилях на EcoRouter можно реализовать следующий сценарии в сети:
«Не переключаться на резервный маршрут, если и на резервном направлении фиксируется ухудшение качества канала».
Во всех вышеуказанных примерах при организации мониторинга использовался одиночный ICMP пакет. В EcoRouterOS есть возможность отправить целую совокупность пакетов за одну транзакцию и на основании потерь и задержек пакетов в этой совокупности сделать вывод о качестве каналов. Как показывает практика, этот вариант мониторинга более наглядно и достоверно определяет проблемы в каналах. Для его настройки воспользуйтесь параметром num-packets в команде icmp. При таком варианте работы есть особенности в определении операционного статуса SLA профиля, обсудим их ниже:
Параметр rtt-threshold задаёт пороговое значение таймера, который определяет время ожидания пакета, по истечению которого одиночный пакет или пакет из совокупности считается утерянным (loss). Поэтому rtt-threshold должен быть больше rtt-max, который задаёт порог для средне арифметического значения задержки для всех пакетов в совокупности (pool), превысив который, транзакция считается неуспешной Failure и операционный статус SLA профиля моментально переходит в состояние DOWN.
Решение об операционном статусе SLA профиля принимается на основании одной транзакции. Одна транзакцией это одна отправка целой пачки ICMP request пакетов.
Пример вывода статуса транзакции из команды группы show:
Maximum RTT: 350 msec (for any pool of transactions)
Latest pool of transactions status: Failure
Latest pool of transactions RTT: 570 ms
Cтатусы транзакций и профиля зависят от количества потерянных пакетов (packet-loss), которые теперь подсчитываются не по статусу последней транзакции, а по утерянным пакетам внутри одной совокупности (pool), таким образом получается, что packet-loss не должен превышать количество пакетов в совокупности (num-packets).
Параметр packet-frequency теперь задаёт интервал отправки пачки тестовых сообщений (по умолчанию равен также 5 секундам).