route-map prepend_uplink2 permit 10 match ip address prefix-list plup2 ! route-map prepend_uplink2 permit 20 match ip address prefix-list plup2p set as-path prepend 12345 12345 ! route-map prepend_uplink3 permit 10 match ip address prefix-list plup3 ! route-map prepend_uplink3 permit 20 match ip address prefix-list plup3p set as-path prepend 12345 12345 12345 12345 !
Теперь коснемся маршрута по умолчанию. Даже если вы получаете от аплинков full view, лучше иметь указывающий куда-то default.
Заходим в zebra через vtysh и указываем в качестве маршрута по умолчанию поочередно все наши три аплинка, только с разными дистанциями:
ip route 0.0.0.0/0 111.111.111.111 15 ip route 0.0.0.0/0 222.222.222.222 25 ip route 0.0.0.0/0 333.333.333.333 35
Т.е. мы указали в качестве default все три наших аплинка. В таблицу маршрутизации попадет тот маршрут, чья дистанция меньше остальных. Если какой-то маршрут отвалился, трафик пойдет по одному из оставшихся, чья дистанция теперь меньше – и т.д.
Что мы получили в итоге…
Что получилось. Поскольку UPLINK_3 имеет самый маленький приоритет, то через него мы не ходим (хотя и получаем от него на всякий случай все маршруты). Так как с UPLINK_2 мы получаем только часть маршрутов (сети с маской <= 19), но приоритет у него самый высокий, - то как раз на эти сети с маской меньшей или равной 19 мы идем именно через этот аплинк.