Routing
Рекурсивные маршруты¶
Алгоритм следующий
- Роутер ищет подходящий маршрут по dst с самой длинной маской
- Если gateway это не интерфейс, то смотрит на target-scope
- Ищет подходящий маршрут среди тех, у которых scope<=target-scope
- Повторить с пункта 2
Значения scope по-умолчанию:
- connected - scope=10, target-scope не имеет значения, т.к. некст хоп интерфейс
- static - scope=30, target-scope=10 (то есть, после статического сращу ищем в connected)
- OSPF, RIP, MME - scope=20, target-scope=10
- eBGP - scope=40, target-scope=10
- iBGP - scope=40, target-scope=30
Смысл заключается в том, чтобы каким-либо образом менять target-scope или scope - routing фильтрами, либо назначать вручную, чтобы маршрутизатор мог рекурсивно разрешить маршрут. При этом в таблице маршрутизации такой маршрут будт отображаться как gateway-status=x.x.x.x recursive via y.y.y.y.
Известные проблемы¶
На данный момент (версия 6) BGP не делает перерасчет best path маршрутов. Возможно исправят в 7-ой.
Пример:
Допустим, мы имеем маршрут 0/0, полученный по eBGP от двух аплинков, а так же имеем статический 0/0 с AD 252. Если погасить сессию с любым из аплинков, то активным становится статический маршрут, несмотря на то, что в local rib все еще имеется 0/0 с AD=20 (от второго eBGP аплинка).
Workaround: выкл/вкл статического маршрута, а также добавление атрибута local-preference на BGP маршруты.
Если в таблице есть еще маршрут 0/0, полученный по iBGP, то активным становится он и удаление/добавление статики не сработает.
Workaround: добавление local-preference BGP маршрутам.
Известные фичи¶
- Можно настроить пересекающиеся сети на разных интерфейсах