Jump to content

Recommended Posts

Posted

Добрый день!

 

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

Posted

Поднимать на каждом сервере с сервисом 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.

Posted (edited)

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
Posted
22 часа назад, Prototype-X сказал:

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

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

 

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

Posted
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 - анонсить с препендами.

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

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

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

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

 

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

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

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

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

 

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

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

Ещё есть gobgp

Posted
В 30.08.2017 в 09:21, PRNG сказал:

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

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

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

  • 3 weeks later...
Posted

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

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

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

 

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

 

 

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.