Я пытаюсь устранить сбой связи между LB1
(машина Linux, работающая под управлением Quagga) и либо PAT1
или PAT2
(Роутеры Juniper MX80). Следующая диаграмма представляет собой каноническую версию моей схемы сети:
Настройка BGP:
PAT1
и PAT2
у каждого есть сеанс eBGP с ISP1
и ISP2
объявлять 199.192.100.0/24
.LB1
объявляет 199.192.100.0/28
через сеансы iBGP на PAT1
и PAT2
PAT1
и PAT2
иметь сеанс iBGP между собой для перераспределения внешних изученных маршрутов (чтобы любой маршрутизатор мог вернуться в Интернет в случае сбоя связи с интернет-провайдером)PAT1
и PAT2
создать маршрут по умолчанию к LB1
вернуться в ИнтернетISP2
Когда я разорву связь между PAT2
и LB1
, трафик прекращается на PAT2
так как PAT1
не объявляет резервный путь к 199.192.100.0/28
. У меня создалось впечатление, что PAT1
будет перераспределять 199.192.100.0/28
маршрут к PAT2
чтобы он мог использовать его в случае отказа. Но похоже, что iBGP работает не так.
Как хорошо обойти ограничение iBGP, когда оно не объявляет изученные маршруты iBGP?
Я думаю, вы слишком задумываетесь над этим дизайном и идете неправильно.
PAT1, PAT2 и LB1 должны все iBGP равноправны друг с другом. LB1 должен быть источником 199.192.100.0/28, PAT1 и PAT2 должны быть источником 199.192.100.0/24. Не устанавливайте никаких фильтров ни на один из сеансов ibgp.
Какой IGP (OSPF?) Вы используете между этими маршрутизаторами? Маршруты по умолчанию PAT1 и PAT2 должны исходить от IGP, а не от iBGP.
Проблема не в том, что PAT1 не объявляет резервный путь к / 28, проблема в том, что PAT2 не верит, что может добраться до LB1 через PAT1. Как выглядит «показать IP-маршрут» на PAT2 для LB1, когда связь между PAT2 и LB1 не работает? Если вы отключите эту ссылку, сеанс iBGP между LB1 и PAT2 все еще должен оставаться включенным, если он отключится, это снова указывает на проблему IGP.