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

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

Добрый день!

 

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

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


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

Я официально заявляю: bird это говно! Используйте FRRouting.

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


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

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

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


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

Можно сделать на одной из виртуальных машин route server.

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


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

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 :)

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

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


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

22 часа назад, Prototype-X сказал:

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

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

 

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

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


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

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

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

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


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

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

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

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

 

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

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


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

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

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

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

 

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

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

Ещё есть gobgp

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


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

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

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

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

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

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


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

Если речь идет о резервировании, то поднимайте с каждым 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.

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

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

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

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

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

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