Jump to content
Калькуляторы

Динамическая маршрутизация внутри AS

Добрый день!

 

Коллеги, подскажите советом. На ESXi HA строим небольшой проект. Настроены пока два маршрутизатора на VM (FreeBSD). Есть автономка с PA /24. Каждый маршрутизатор подключен по bgp к своим аплинкам: маршрутизатор A - ISP1, маршрутизатор Б - ISP2. Получают full view в обоих случаях. Между маршрутизаторами ibgp. Все это крутится на bird. В проекте предполагаются как внешние сервисы, так и внутренние. Для внутренних будет настроен на тех же машинах CARP с pfsync, поднят NAT. Как быть с маршрутизацией внешних сервисов из анонсируемой PA /24? Так как хочется обеспечить отказоустойчивость маршрутизации, хотелось бы чтобы при выключении одного из роутеров connectivity не нарушалась. Правильно ли я понимаю, что в этом случае на каждый внешний сервис (сервер) вешают bird и строят ibgp к своим ASBR? Есть примеры/схемы сетей как это делают?

Share this post


Link to post
Share on other sites

Поднимать на каждом сервере с сервисом ibgp, это слишком. Вариант с CARP(VRRP) для внешних сервисов не рассматривали, получается тоже что и для внутренних сервисов, только без NAT. Нужны будут скрипты что бы если отвалилось ebgp одного из провайдеров, CARP(VRRP) переключил master на живого ISP. Еще один нюанс трафик из LAN -> WAN будет идти через master с активным виртуальным ip, обратно же трафик WAN -> LAN будет идти от обоих роутеров, так как Вы анонсируете сеть двум операторам, т.е. часть пакетов будет приходить в LAN не только с master роутера но и с slave, по идее синхронизация таблицы соединений поможет (pfsync) решает такую проблему.
 

Второй вариант поднять на каждом роутере EBGP к ISP1 и ISP2 и анонсировать сеть PA /24 только с CARP master роутера, при переключении убирать анонс сети и начинать анонсировать сеть на новом master роутере. Таким образом трафик в обе стороны будет ходить симметрично, через один роутер.

 

Третий вариант попробовать vSRX от Juniper, это будет стоить денег. Соберете кластер из двух vSRX.

Share this post


Link to post
Share on other sites

ne-vlezay80 Я так и сделал.

 

16 часов назад, Prototype-X сказал:

Поднимать на каждом сервере с сервисом ibgp, это слишком. Вариант с CARP(VRRP) для внешних сервисов не рассматривали, получается тоже что и для внутренних сервисов, только без NAT. Нужны будут скрипты что бы если отвалилось ebgp одного из провайдеров, CARP(VRRP) переключил master на живого ISP. Еще один нюанс трафик из LAN -> WAN будет идти через master с активным виртуальным ip, обратно же трафик WAN -> LAN будет идти от обоих роутеров, так как Вы анонсируете сеть двум операторам, т.е. часть пакетов будет приходить в LAN не только с master роутера но и с slave, по идее синхронизация таблицы соединений поможет (pfsync) решает такую проблему.

Спасибо! Наверное, так и сделаю. Единственная проблема в том, что вроде бы Bird не умеет запускать скрипт при падении ebgp. Проверять по крону - минимальная задержка 60с, это плохо, с учетом того что на апстриме есть BFD. Разве что смотреть в сторону другого решения. В инете советуют ExaBGP. Но я не уверен, что он умеет BFD :)

Edited by PRNG

Share this post


Link to post
Share on other sites
22 часа назад, Prototype-X сказал:

Второй вариант поднять на каждом роутере EBGP к ISP1 и ISP2 и анонсировать сеть PA /24 только с CARP master роутера, при переключении убирать анонс сети и начинать анонсировать сеть на новом master роутере. Таким образом трафик в обе стороны будет ходить симметрично, через один роутер.

анонсировать с обеих, но резервный с более низким приоритетом в CARP - анонсить с препендами.

 

ну или если 1 роутер = 1 аплинк - завязать их в RR, связать жирным линком между собой, и пускай себе трафик бегает между ними на нужный аплинк...

Share this post


Link to post
Share on other sites
11 часов назад, PRNG сказал:

ne-vlezay80 Я так и сделал.

 

Спасибо! Наверное, так и сделаю. Единственная проблема в том, что вроде бы Bird не умеет запускать скрипт при падении ebgp. Проверять по крону - минимальная задержка 60с, это плохо, с учетом того что на апстриме есть BFD. Разве что смотреть в сторону другого решения. В инете советуют ExaBGP. Но я не уверен, что он умеет BFD :)

ExaBGP не умеет BFD. Можно посмотреть еще в сторону PFsense и VyOS, но там тоже нет BFD.

BFD есть у Mikrotik CHR, но он платный и там нет синхронизация таблицы соединений, так что придется рассматривать варианты где трафик будет идти симметрично.

 

Вместо BFD можно поиграться с интервалами BGP keepalive и hold, например keepalive = 1с, hold = 3с
Скорее всего можно мониторить логи Bird на событие что bgp пир отвалился и дергать CARP. В общем писать свои велосипеды и костыли.

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

анонсировать с обеих, но резервный с более низким приоритетом в CARP - анонсить с препендами.

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

Share this post


Link to post
Share on other sites
13 часов назад, Prototype-X сказал:

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

открою бОльший секрет - вообще не никаких гарантий, что трафик будет на 100% симметричным. и ничего вы тут не сделаете.

 

ну придет 2-3% трафика на роутер, отредиректится на основной - в чем проблема?

Share this post


Link to post
Share on other sites
14 часов назад, Prototype-X сказал:

ExaBGP не умеет BFD. Можно посмотреть еще в сторону PFsense и VyOS, но там тоже нет BFD.

BFD есть у Mikrotik CHR, но он платный и там нет синхронизация таблицы соединений, так что придется рассматривать варианты где трафик будет идти симметрично.

 

Вместо BFD можно поиграться с интервалами BGP keepalive и hold, например keepalive = 1с, hold = 3с
Скорее всего можно мониторить логи Bird на событие что bgp пир отвалился и дергать CARP. В общем писать свои велосипеды и костыли.

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

Ещё есть gobgp

Share this post


Link to post
Share on other sites
В 30.08.2017 в 09:21, PRNG сказал:

ne-vlezay80  Проверять по крону - минимальная задержка 60с, это плохо, с учетом того что на апстриме есть BFD. Разве что смотреть в сторону другого решения. В инете советуют ExaBGP. Но я не уверен, что он умеет BFD :)

Если нужно реагирование сразу - можно например писать логи в пайп, который будет слушать ваш скрипт. Или будет например тупо парсить tail -F /var/log/bla-bla.log

И по некоему патерну из логов будет что-нибудь запускать через fork/exec.

Share this post


Link to post
Share on other sites

Если речь идет о резервировании, то поднимайте с каждым ISP две сессии, от А и от Б.

Внутри на мой взгляд лучше OSPF.

Если очень хочется попробовать BFD, то поглядите в сторону OpenBGPd. Я не уверен что в нем уже запилили поддержку BFD, но планы такие были https://www.mail-archive.com/tech@openbsd.org/msg36989.html

 

Если хочется мониторить состояние интерфейсов, есть еще ifstated. (для CARP самое то)

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now