Перейти к содержанию

Routing

Рекурсивные маршруты

Алгоритм следующий

  1. Роутер ищет подходящий маршрут по dst с самой длинной маской
  2. Если gateway это не интерфейс, то смотрит на target-scope
  3. Ищет подходящий маршрут среди тех, у которых scope<=target-scope
  4. Повторить с пункта 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 маршрутам.

Известные фичи

  • Можно настроить пересекающиеся сети на разных интерфейсах