Перейти к содержимому
Калькуляторы

Заезженный вопрос про iBGP

Имеются BGP маршрутизаторы R1 , R2 , R3  , связаны между собой выделенными каналами L1,  L2 , L3  каждый с каждым.

Все три маршрутизатора относятся к одной AS.

 

Маршрутизатор R1 имеет включение во внешние сети и взаимодействует по EBGP с другими AS.

Маршрутизаторы R2 и R3 имеют взаимодействие только с R1 и друг с другом, по iBGP.

 

К маршрутизатору R2 и R3 подключены клиенты , которым нужно обеспечить резервирование связи через канал  L3 в случае обрыва основных каналов L1 и L2.

 

Поднимать на каналах что-то типа OSPF не хочется, хочется обойтись iBGP.

 

Проблема классическая, заключается в том, что R2 не хочет анонсировать для R1 маршруты, разученные по iBGP от R3.  И аналогично, R3 не хочет выдавать R1 маршруты, разученные по iBGP от R2.

 

Играть всеми комбинациями instance client-to-client-reflection , peer route-reflect , peer nexthop-choice я попробовал, и к успеху не пришел.

А именно - если включить route-reflect то маршруты начинают анонсироватся, но с nexthop из недоступной напрямую подсети ( отделенной маршрутизатором ) , и в итоге всё равно не работают.

nexthop-choice = force-self в ситации никак не помогает.

 

Можете ткнуть в ссылку как такое правильно настроить?

 

5aef54c2621dd_2.thumb.jpg.9db6ca44768ccebae5795a0b0947de12.jpg

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

М.б. исползовать Sub-AS для связи между роутерами для обеспечения квази-фуллмеш при отказе любого из L1,L2?

 

Изменено пользователем rz3dwy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 часов назад, rz3dwy сказал:

М.б. исползовать Sub-AS

Ну это как-то совсем кривенько.

так как на самом деле структура сети сложнее, упростил для примера.

в качестве присоединяемых на узлах r2 и r3 могут быть железки типа  cisco me3400 , которым надо по BGP отдать default + доступные местные подсети.  И скорее всего каталист в отличии от микротика не сумеет несколько bgp instance.

А в качестве R1 в некоторых случаях может быть например 1U сервер c frr или quaga или что-то ещё экзотическое по случаю.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так это особенность iBGP - неанонсирование маршрутов другим соседям. Либо RR либо confederation нужно использовать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, rz3dwy сказал:

Либо RR либо confederation нужно использовать. 

Так я включаю RR , но он у меня не взлетает годным способом.

Mikrotik не меняет nexthop на IP своего интерфейса, доступного пиру, а оставляет таким каким он был получен.

В итоге peer получает nexthop в недоступном ему влане

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да и что делать с sub-as, если роутеров в цепочке станет не  3шт , а например 4шт ?

 

или какая-то более сложная топология

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отвечаю сам себе,  всё оказалось элементарно.

 

1) включаем /routing bgp instance set client-to-client-reflection=yes

2) у каждого peerN ставим /routing bgp peer set peerN set route-reflect=yes

3) для исправления кривого nexthop добавляем фильтр  /routing filter add chain=peerN-out set-out-nexthop=<ip-адрес этого роутера в влане стыка с peerN

4) вешаем этот фильтр на пир  /routing bgp peer set rJ2 out-filter=peerN-out

 

получаем то желали - все IGP маршруты,  полученные от соседа в цепочке роутеров, улетают другому соседу а nexthop выставляется на роутер между ними.

Недоумеваю , почему такое просто решение не мог никто подсказать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дополнительно.

Второй непростой задачей оказался выбор оптимального маршрута.

Так как на каждый mikrotik в кольце хоть и приходит 2 варианта пути , но ему абсолютно неведомо какой из них оптимальный.

 

Для решения этой задачи указанный выше export filter   для соседа в кольце был переделан следующим образом

 

1) на каждом роутере при экспорте префикса увеличиваем ему значение аттрибута med на единицу.  Целевой роутер выбирает маршрут с минимальным med ( то есть с минимальным числом хопов )

 

Пример для mikrotik R2   ,  с IP-адресом в сторону R1 - 172.16.1.2  , в сторону R3 - 172.16.3.1


 

Цитата

 

add bgp-med=2 chain=out-r1 set-bgp-med=3 set-out-nexthop=172.16.1.2
add bgp-med=1 chain=out-r1 set-bgp-med=2 set-out-nexthop=172.16.1.2
add bgp-med=0 chain=out-r1 set-bgp-med=1 set-out-nexthop=172.16.1.2

 

add bgp-med=2 chain=out-r3 set-bgp-med=3 set-out-nexthop=172.16.3.1
add bgp-med=1 chain=out-r3 set-bgp-med=2 set-out-nexthop=172.16.3.1
add bgp-med=0 chain=out-r3 set-bgp-med=1 set-out-nexthop=172.16.3.1


 

 

Таким образом , при просмотре таблицы маршрутов на R2 мы будем видеть,

что для подсети 185.246.50.128/25 ( анонсируемой с R3 ) будет  nexthop 172.16.1.1 с med = 2 и 172.16.3.2  с med=1.

До тех пор пока кратчайшее соединение доступно, трафик будет бегать в обе стороны по кратчайшему пути.

 

В моем случае R1 это не микротик , а linux box с демоном маршрутизации bird.

Для него годные фильтры оказались следующие
 

Цитата


filter out_R2 {
if source ~ [ RTS_BGP ] then bgp_med = bgp_med + 1;
else bgp_med=1;
accept;
}

filter out_R3 {
if source ~ [ RTS_BGP ] then bgp_med = bgp_med + 1;
else bgp_med=1;
accept;
}

 

 

Надеюсь, кому-то мой опыт окажется полезным.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я правильно понимаю, в схеме "треугольника" все роутеры имеют идентичную конфигурацию. Но на лабораторном стенде не могу получить требуемый результат, next-hop не анносируется :(. Можете выложить экспорт ветки routing, чтобы посмотреть ваши настройки bgp и filters.

Изменено пользователем Dmytro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И снова, для тех кто придет страдать , как сделать set-out-nexthop  в ROS7.

 

делается так

/routing rules add chain=peer1-out disabled=no rule="set gw 172.16.3.1;accept;"

без accept в конце не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.