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

Как объединить два 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"?

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


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

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

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

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

lacp + source-dest ip balancing

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


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

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

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

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


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

Оспф.

 

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

 

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

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

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

lacp + source-dest ip balancing

 

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

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


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

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

 

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

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


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

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

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


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

Вообще самое не кастыльное и правельное решение это 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 красивее в данном случае :)

Изменено пользователем Artur-t

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


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

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

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

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

 

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

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


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

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

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

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

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


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

rdntw

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

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

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

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


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

Join the conversation

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

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

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

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

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

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

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