С Новым годом! Форум программистов, компьютерный форум, киберфорум
Mikrotik
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/47: Рейтинг темы: голосов - 47, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
1

Балансировка (ECMP)

23.01.2017, 10:47. Показов 8981. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Пытаюсь настроить микротик с балансировкой канала по ECMP.

Есть 2 провайдера: ISP1 и ISP2
Локалка: 192.168.1.0/24

Помечаю каждое соединение пришедшее снаружи:
Код
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 new-connection-mark=ISP1-con
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=ISP2-con
Ставлю роутинг-марки на каждое соединение:
Код
/ip firewall mangle add action=mark-routing chain=output connection-mark=ISP1-con new-routing-mark=ISP1-rt passthrough=no
/ip firewall mangle add action=mark-routing chain=output connection-mark=ISP2-con new-routing-mark=ISP2-rt passthrough=no
Добавляю два маршрута:
Код
/ip route add distance=1 gateway=ISP1 routing-mark=ISP1-rt check-gateway=ping
/ip route add distance=1 gateway=ISP2 routing-mark=ISP2-rt check-gateway=ping
Маркирую весь трафик из локальной сети:
Код
/ip firewall mangle add src-address=192.168.1.0/24 action=mark-routing chain=prerouting new-routing-mark=mixed
Использую ECMP для балансировки трафика из локальной сети:
Код
/ip route add dst-address=0.0.0.0/0 gateway=ISP1,ISP1,ISP1,ISP2 routing-mark=mixed
Здесь указываю шлюз первого провайдера три раза и шлюз второго провайдера один раз для того, что бы примерно равно поделить каналы (первый провайдер 30 мбит/с, второй провайдер 10 мбит/с)

При такой балансировке работают оба провайдера, но кажется пакеты уходят не туда откуда они пришли (пользователи жалуются что страницы загружаются с ошибками), т.е. есть подозрение что где то не правильно настроена маркировка или маршруты.
Подскажите, где тут допущена ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2017, 10:47
Ответы с готовыми решениями:

балансировка трафика tp link 4299
как правильно настроить баланс трафика , чтобы 2 входящих канала работали как один в tp link 4299.

Балансировка дерева
Как сделать балансировку бинарного дерева поиска? template <class T, class I> class node {...

Балансировка игроков
Здравствуйте. Начинал изучение этого языка программирования и решил сделать для себя задачку, но я...

Балансировка DNS
Добрый день, форумчане. Такой вопрос. Имеется 2 ПК, на обоих установлен "защищенный" Suse, на одном...

23
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
23.01.2017, 11:25 2
трафик в цепочке input предназначен самому микротику, и никак не влияет на транзитный трафик (forward)

нужно заменить в первых 2-х правилах input на forward

и мне кажется последние 2 правила не совсем верные, или еще есть локальные сети отличные от 192.168.1.0/24?
если нет, то нет необходимости маркировать трафик 192.168.1.0/24 и указывать routing-mark в последнем правиле.
0
vita et mortuus
Эксперт по компьютерным сетям
1804 / 704 / 153
Регистрация: 10.06.2009
Сообщений: 2,785
23.01.2017, 11:53 3
Цитата Сообщение от IceTony Посмотреть сообщение
Маркирую весь трафик из локальной сети:
Код
/ip firewall mangle add src-address=192.168.1.0/24 action=mark-routing chain=prerouting new-routing-mark=mixed
Это лучше заменить на:
Код
/ip route rule add src-address=192.168.1.0/24 table=mixed
Так-же добавить правила для форварда для каждого ISP.

Добавлено через 18 минут
Цитата Сообщение от .None Посмотреть сообщение
нужно заменить в первых 2-х правилах input на forward
Нужно не заменить, а лучше добавить:
Код
/ip firewall mangle add action=mark-connection chain=forward in-interface=ISP1 new-connection-mark=ISP1-con
/ip firewall mangle add action=mark-connection chain=forward in-interface=ISP2 new-connection-mark=ISP2-con
До применения к ним маршрутов.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
23.01.2017, 12:53  [ТС] 4
Вот что в итоге получилось (см. скриншот)
Все ли верно?
(ISP2 пока отключен)
Миниатюры
Балансировка (ECMP)  
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
23.01.2017, 13:37 5
ну вроде верно
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
23.01.2017, 14:09  [ТС] 6
Цитата Сообщение от .None Посмотреть сообщение
ну вроде верно
Короче говоря, при таком конфиге у всех пользователей примерно раз в 10 мин отваливается инет...
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
23.01.2017, 14:37 7
при работе 2-х провайдеров или одного?

в чем выражается отваливание?
как долго нет инета после отвала?

поставьте ping -t куданить в инет, в момент отвала пинг прерывается?
в логах микротика есть что?
0
vita et mortuus
Эксперт по компьютерным сетям
1804 / 704 / 153
Регистрация: 10.06.2009
Сообщений: 2,785
24.01.2017, 18:03 8
А зыбл есть ещё хороший вариант тут.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
26.01.2017, 11:44  [ТС] 9
Цитата Сообщение от NoNaMe Посмотреть сообщение
А зыбл есть ещё хороший вариант тут.
Спасибо, решил данный вариант испробовать, все по мануалу настроил, почему то некоторые маршруты и правила mangle не работают, вот мой скриншот
Миниатюры
Балансировка (ECMP)  
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
26.01.2017, 12:44 10
у вас какие-то сервисы пробрасываются в LAN (rdp и т.д.) или на самом микротике (например ВПН серверы) для доступа извне?

Добавлено через 54 секунды
покажите ip firewall nat
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
26.01.2017, 14:11  [ТС] 11
Цитата Сообщение от .None Посмотреть сообщение
у вас какие-то сервисы пробрасываются в LAN (rdp и т.д.) или на самом микротике (например ВПН серверы) для доступа извне?

Добавлено через 54 секунды
покажите ip firewall nat
Да, есть кое что
Миниатюры
Балансировка (ECMP)  
0
vita et mortuus
Эксперт по компьютерным сетям
1804 / 704 / 153
Регистрация: 10.06.2009
Сообщений: 2,785
26.01.2017, 22:42 12
Цитата Сообщение от IceTony Посмотреть сообщение
некоторые маршруты и правила mangle не работают
Это связанно с bridge-local. Если использовать, вместо bridge-local, маршрутизацию по каждому порту или маршрутизацию на Мастер портах, то выше указанное правило работает на ура. Ещё раз рекомендую почитать Руководства: Packet Flow
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
27.01.2017, 08:20  [ТС] 13
Мне кажется, что лучше всего подойдет балансировка по способу ECMP, но там у меня беда с маршрутами, пакеты приходят с одного ip-адреса а обратно уходят с другого...

Код
/ip route add dst-address=0.0.0.0/0 gateway=ISP1 routing-mark=ISP1-rt
/ip route add dst-address=0.0.0.0/0 gateway=ISP2 routing-mark=ISP2-rt
/ip route add dst-address=0.0.0.0/0 gateway=ISP1,ISP1,ISP1,ISP2
Первые два маршрута нужны для того, что бы пакеты уходили туда, от куда они пришли.
Третий маршрут для самой балансировки.
Но у них у всех distance=1, как они могут работать в раз?
Работают обычно только 1-2 из них...

И еще такой вопрос: при создании статических маршрутов нужно указывать шлюз как pppoe-соединение (например ISP1) или прописывать его ip-адрес вручную? (дело в том, что шлюз от провайдера может меняться динамически)
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
27.01.2017, 09:29 14
Тут нужно четко понимать что происходит и как это работает

Вся та куча правил в Mangle, в большей степени, нужна для dst-nat подключений, что бы пакет вошедший через ISP2 не ушел назад через шлюз по умолчанию, который как правило ISP1, и это относится только к транзитным пакетам dst nat (mangle forward), или пакетам предназначенным самому микротику (mangle input).

На соединения, которые устанавливаются из локальной сети (src nat, маскарад) все эти правила не действуют (или действовать не должны)

Не зря спросил про сервисы в сети, если бы их не было, в mangle вообще не нужно было ничего делать.

Так что давайте все сначала по ECMP, настраивайте, показывайте настройки, дальше будем в процессе разбираться что работает не так и править.
Цитата Сообщение от IceTony Посмотреть сообщение
Но у них у всех distance=1, как они могут работать в раз?
у них разный routing-mark, выбор маршрута будет осуществятся по метке.
Цитата Сообщение от IceTony Посмотреть сообщение
И еще такой вопрос: при создании статических маршрутов нужно указывать шлюз как pppoe-соединение (например ISP1) или прописывать его ip-адрес вручную? (дело в том, что шлюз от провайдера может меняться динамически)
если адрес динамический, указывайте не адрес шлюза а интерфейс
хотя на практике я такого не видел, что меняется адрес шлюза у провайдера.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
27.01.2017, 10:56  [ТС] 15
Итак, все заново (имеем 2 PPPoE-соединения, хотим настроить ECMP-балансировку):
Код
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 new-connection-mark=ISP1-con
/ip firewall mangle add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=ISP2-con

/ip firewall mangle add action=mark-routing chain=output connection-mark=ISP1-con new-routing-mark=ISP1-rt
/ip firewall mangle add action=mark-routing chain=output connection-mark=ISP2-con new-routing-mark=ISP2-rt

/ip firewall mangle add action=mark-connection chain=forward in-interface=ISP1 new-connection-mark=ISP1-con
/ip firewall mangle add action=mark-connection chain=forward in-interface=ISP2 new-connection-mark=ISP2-con
Код
/ip route add dst-address=0.0.0.0/0 distance=1 gateway=ISP1 routing-mark=ISP1-rt
/ip route add dst-address=0.0.0.0/0 distance=1 gateway=ISP2 routing-mark=ISP2-rt
/ip route add dst-address=0.0.0.0/0 distance=1 gateway=ISP1,ISP1,ISP1,ISP2 check-gateway=ping
Дефолтным маршрутам (которые добавляются от PPPoE соединений) ставлю distance=3

При данном конфиге пользователи жалуются на медленный интернет, а так же меня смущает последний маршрут, ведь в нем отсутствует routing-mark, и поэтому, например, соединения пришедшие через 1 провайдера, обратно могут отправиться через 2 провайдера и наоборот...
Думаю дело именно в этом
Миниатюры
Балансировка (ECMP)  
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
27.01.2017, 11:30 16
вроде все верно
что за prerouting в mangle?

Цитата Сообщение от IceTony Посмотреть сообщение
а так же меня смущает последний маршрут, ведь в нем отсутствует routing-mark, и поэтому, например, соединения пришедшие через 1 провайдера, обратно могут отправиться через 2 провайдера и наоборот...
нет, все будет работать как нужно
например, из инета обращаются через ISP1 на порт 8083, это соединение маркируется меткой ISP1-con
/ip firewall mangle add action=mark-connection chain=forward in-interface=ISP1 new-connection-mark=ISP1-con

далее dst-nat, пакет уходит в локалку, сервис шлет обратный пакет, вот здесь
/ip firewall mangle add action=mark-routing chain=output connection-mark=ISP1-con new-routing-mark=ISP1-rt
маркируем пакет по connection-mark и указываем таблицу ISP1-rt
и дальше пакет в соответствии с маршрутом
/ip route add dst-address=0.0.0.0/0 distance=1 gateway=ISP1 routing-mark=ISP1-rt
уходит через ISP1

что касается соединение инициированных из LAN, то тут срабатывает
/ip route add dst-address=0.0.0.0/0 distance=1 gateway=ISP1,ISP1,ISP1,ISP2 check-gateway=ping
и по алгоритму round-robin с учетом "весов", пакету назначается маршрут через ISP1 или ISP2, обратно из инета пакет доставляется хосту в локальной сети без учета каких либо правил.

как-то так...
0
vita et mortuus
Эксперт по компьютерным сетям
1804 / 704 / 153
Регистрация: 10.06.2009
Сообщений: 2,785
27.01.2017, 12:11 17
Цитата Сообщение от IceTony Посмотреть сообщение
Дефолтным маршрутам (которые добавляются от PPPoE соединений) ставлю distance=3
Я отключаю дефолтные маршруты.
Цитата Сообщение от IceTony Посмотреть сообщение
некоторые маршруты и правила mangle не работают
Код
ip address print
#И все пространство принадлежащие локальной сети необходимо добавить.
ip firewall address-list add list=LAN address=
p.s.
Сообщение выше ошибочно, Я немного поспешил.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
27.01.2017, 13:54  [ТС] 18
prerouting это я пытался настроить что бы один адрес лист ходил только через первого провайдера, не знаю верно ли получилось:
Код
/ip firewall mangle add action=mark-routing chain=prerouting src-address-list=LIST new-routing-mark=ISP1-rt
0
Эксперт по компьютерным сетям
4313 / 1646 / 330
Регистрация: 23.06.2009
Сообщений: 5,854
27.01.2017, 14:13 19
mangle не нужен, используйте ip route rules
action lookup, table ISP1-rt
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
27.01.2017, 15:05  [ТС] 20
Цитата Сообщение от .None Посмотреть сообщение
mangle не нужен, используйте ip route rules
action lookup, table ISP1-rt
Но там не один адрес, а список адресов, на каждый адрес новое правило?
0
27.01.2017, 15:05
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2017, 15:05
Помогаю со студенческими работами здесь

Балансировка бинарного дерева
Попалась одна на вид простая задача. Код написал, но не проходит 10 тестов из 40. Лидеру команды...

Балансировка двоичного дерева
В файле дана последовательность целых чисел. Построить из них двоичное дерево поиска . Разработать...

Балансировка АВЛ-дерева
Доброй ночи, пытаюсь написать балансировку дерева, нашел статью с примерами, но дерево не...

Балансировка и масштабирование матриц
В общем тема не моя, а знакомая поиском и форумом не умеет пользоваться. Как я ее понял тема из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru