SergKz Posted June 2, 2015 Posted June 2, 2015 Есть два каналы между двумя точками. Частично через кабели/оптику/коммутаторы, частично по воздуху (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"? Вставить ник Quote
GrandPr1de Posted June 2, 2015 Posted June 2, 2015 3. Динамическая маршрутизация. ospf и равные веса на линках 1. Первое приходящее в голову - Bonding (Link Aggregation). lacp + source-dest ip balancing Вставить ник Quote
Artur-t Posted June 2, 2015 Posted June 2, 2015 Очень плохо курили мануалы. Ospf решает задачу элементарно. Вставить ник Quote
SergKz Posted June 2, 2015 Author Posted June 2, 2015 Оспф. А он справится, если ширина каналов разная? 24 мегабита и 40 мегабит. 3. Динамическая маршрутизация. ospf и равные веса на линках 1. Первое приходящее в голову - Bonding (Link Aggregation). lacp + source-dest ip balancing Второй вариант с LACP, как уже упоминал, отключает хождение IP по индивидуальным каналам. А оно нужно. Вставить ник Quote
Saab95 Posted June 2, 2015 Posted June 2, 2015 А он справится, если ширина каналов разная? 24 мегабита и 40 мегабит. Справится, настраиваете BFD на 0.1 секунду, в случае перегруза одного канала маршрут через него автоматически отключится и все побежит по второму, как только нагрузка спадет, канал восстановится, так и будут они работать в режимах постоянного дисконнекта. Вставить ник Quote
zhenya` Posted June 2, 2015 Posted June 2, 2015 Варварский метод в случае появления берстов. Вставить ник Quote
furai Posted June 2, 2015 Posted June 2, 2015 SergKz, для каналов разной ширины есть такой трюк: в вашем случае кидаем 3 вилана на 24х мегабитном линке и 5 в сорокамегабитном. Делаем в каждом вилане ospf, bgp или что-то еще с одинаковыми весами/локалпрефами и т.д., не забывая multipath. Это конечно костыль, но наименее дурацкий из всех имхо ) Вставить ник Quote
Artur-t Posted June 3, 2015 Posted June 3, 2015 (edited) Вообще самое не кастыльное и правельное решение это 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 June 3, 2015 by Artur-t Вставить ник Quote
SergKz Posted June 3, 2015 Author Posted June 3, 2015 Вообще самое не кастыльное и правельное решение это TE. Делаете 2 тунеля по разным путям а дальше статикой балансите как душе угодно. http://mum.mikrotik.com/presentations/US11/us11-megis-lb.pdf (стр. 30) У меня микротик только с одной стороны, с другой Linux. Вставить ник Quote
rdntw Posted June 3, 2015 Posted June 3, 2015 Вообще самое не кастыльное и правельное решение это TE. Делаете 2 тунеля по разным путям а дальше статикой балансите как душе угодно. TE на микротике??? Вставить ник Quote
Artur-t Posted June 3, 2015 Posted June 3, 2015 rdntw Ну я не слово не писал про стабильность :) я написал что это самое красивое решение в данной ситуации. Я лично не тестил как TE работает на микротике. А так для данной схемы от ТЕ нужен самый базовый функционал, так что существует вероятность, что MT без проблем вытянет. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.