mik73
Зарегистрирован: 13 апр 2018, 12:35 Сообщения: 5
|
На маршрутизаторе Cisco есть два статических маршрута с балансировкой трафика, по каждому с помощью IPS SLA отслеживается деградация канала (при потере пакетов больше заданного привязанный к маршруту Track переводится в DOWN, меньше заданного - в Up).
ip cef ip route 0.0.0.0 0.0.0.0 10.0.10.1 track 10 ip route 0.0.0.0 0.0.0.0 10.0.20.1 track 20
всё бы хорошо, но когда потери пакетов есть по обоим каналам, ложатся оба. Хочется сделать следующее:
Если возникают потери по первому каналу, то проверяем в каком состоянии track 20 (не положили ли уже второй маршрут), и если в Up, то переводим track 10 в Down - т.е. кладем маршрут, пусть весь трафик ходит по второму, где потерь нет. А вот если track 20 в Down (второй маршрут уже лежит), то оставляем track 10 в Up - пусть с хоть с потерями, но трафик продолжает ходить через первый маршрут. Ну и аналогично для track 2. Если же канал восстановился (ip sla дает приемлемое кол-во потерь), то соответствующий track должен сразу переходить в Up, независимо от состояния соседа.
Потратил некоторое время, пока нашел только возможность отслеживать (через EEM) событие "изменение в состоянии track" (переходы Up - Down). Но мне нужно не изменение, а текущее состояние трека (Up или Down). В апплетах EEM есть действие (action) track read, но где взять и куда можно применить результат этого действия - непонятно. Через логические комбинации в Track list задача тоже не решается (простых "и" и "или" не хватает, нужно еще "не")
|
mik73
Зарегистрирован: 13 апр 2018, 12:35 Сообщения: 5
|
Отвечаю себе:
в ЕЕМ есть действие проверки состояния track action track read N (где N-номер трека) результат записывается в переменную _track_state дальше его можно проверить, например так:
action if $_track_state eq up action <do something> action end
|