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

Как объединить два IP канала на уровне именно IP? Чтобы суммарная пропускная и отказоустойчивость, и IP ходил по каждому

Есть два каналы между двумя точками. Частично через кабели/оптику/коммутаторы, частично по воздуху (Ubiquiti). Оборудование Ubiquiti разных серий причём.

Приходят в итоге на два интерфейса линуксового шлюза с одной стороны и два интерфейса микротика с другой.

Вопрос: как грамотно их объединить, чтобы для "прикладного" трафика у них был общий IP адрес с каждой стороны?

Требования:

1. Отказоустойчивость: выход из строя любого канала из двух не должен приводить к потере связи.

2. Объединение полосы пропускания каналов в нормальном режиме.

3. Сохранение хождения IP по каждому из "субканалов" (ВАЖНО!!!) - необходимо для мониторинга и управления активным оборудованием по каждой ветке.

 

Что было испробовано:

 

1. Первое приходящее в голову - Bonding (Link Aggregation).

Испытано в разных режимах (active-backup, balanmce-tlb, balance-alb, 802.3 ad). Работает, но только в режиме ARP мониторинга -раз, и при этом в каждом отдельном канале хождение IP прекращается - два. К тому же в половине режимов какие-то необъяснимые потери до 60% (??!!)

 

2. Статическая маршрутизация с равными весами.

Испытано, работать работает, но отказоустойчивость никакая, поскольку удалить маршрут из таблицы при потере связи не получается - линк ведь на интерфейсе роутера/шлюза не теряется!

Не подходит.

 

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

После курения мануалов по микротику и quagga выяснилось, что единственный реально подходящий под задачу протокол динамической маршрутизации - цисковский EIGRP, которого ни на том ни на другом устройстве нет. У остальных с распределением нагрузки большие заморочки.

 

4. PPP(oE) Multilink

Не пробовалось. Напрягает неизбежное уменьшение MTU, хотя в итоге возможно так и придётся сделать.

 

5. Самописанный скрипт а-ля Cisco SLA, тестирующий доступность второго конца каждого канала и корректирующий маршруты.

Возможно и это попробую.

 

Что подскажет "всезнающий All"? Есть готовые рецепты? ну кроме "купить циску на каждую сторону и запустить EIGRP"?

Share this post


Link to post
Share on other sites
3. Динамическая маршрутизация.

ospf и равные веса на линках

1. Первое приходящее в голову - Bonding (Link Aggregation).

lacp + source-dest ip balancing

Share this post


Link to post
Share on other sites

Очень плохо курили мануалы.

Ospf решает задачу элементарно.

Share this post


Link to post
Share on other sites

Оспф.

 

А он справится, если ширина каналов разная? 24 мегабита и 40 мегабит.

 

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

ospf и равные веса на линках

1. Первое приходящее в голову - Bonding (Link Aggregation).

lacp + source-dest ip balancing

 

Второй вариант с LACP, как уже упоминал, отключает хождение IP по индивидуальным каналам. А оно нужно.

Share this post


Link to post
Share on other sites

А он справится, если ширина каналов разная? 24 мегабита и 40 мегабит.

 

Справится, настраиваете BFD на 0.1 секунду, в случае перегруза одного канала маршрут через него автоматически отключится и все побежит по второму, как только нагрузка спадет, канал восстановится, так и будут они работать в режимах постоянного дисконнекта.

Share this post


Link to post
Share on other sites

SergKz, для каналов разной ширины есть такой трюк: в вашем случае кидаем 3 вилана на 24х мегабитном линке и 5 в сорокамегабитном. Делаем в каждом вилане ospf, bgp или что-то еще с одинаковыми весами/локалпрефами и т.д., не забывая multipath. Это конечно костыль, но наименее дурацкий из всех имхо )

Share this post


Link to post
Share on other sites

Вообще самое не кастыльное и правельное решение это TE.

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

http://mum.mikrotik.com/presentations/US11/us11-megis-lb.pdf (стр. 30)

 

Если делать только через OSPF в голову приходит только 1 идея.

Делаете 2 ospf инстанса и анонсируете 2 лупбэка (в каждом инстансе 1 линк + свой лупбэк).

А дальше самое веселое :)

Выставляем scope на 2 лупбэка.

routing filter add action=accept set-scope=41 chain=ospf-i1-in pref=x.x.x.x/32

routing filter add action=accept set-scope=41 chain=ospf-i2-in pref=y.y.y.y/32

Дальше просто прописывает нужные подсети в эти лупбэки.

что-то вроде:

10.0.0.0/24 via x.x.x.x

10.0.0.0/24 via x.x.x.x

10.0.0.0/24 via y.y.y.y

 

Если 1 линк дохнет то рекурсивный маршрут просто пропадет из-за привил роут фильтра.

 

Но TE красивее в данном случае :)

Edited by Artur-t

Share this post


Link to post
Share on other sites

Вообще самое не кастыльное и правельное решение это TE.

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

http://mum.mikrotik.com/presentations/US11/us11-megis-lb.pdf (стр. 30)

 

У меня микротик только с одной стороны, с другой Linux.

Share this post


Link to post
Share on other sites

Вообще самое не кастыльное и правельное решение это TE.

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

TE на микротике???

Share this post


Link to post
Share on other sites

rdntw

Ну я не слово не писал про стабильность :) я написал что это самое красивое решение в данной ситуации.

Я лично не тестил как TE работает на микротике.

А так для данной схемы от ТЕ нужен самый базовый функционал, так что существует вероятность, что MT без проблем вытянет.

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
Sign in to follow this