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

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

23.01.2017, 10:47. Показов 8956. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2017, 10:47
Ответы с готовыми решениями:

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

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

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

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

23
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
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
Эксперт по компьютерным сетям
1801 / 701 / 152
Регистрация: 10.06.2009
Сообщений: 2,741
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
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
23.01.2017, 13:37 5
ну вроде верно
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
23.01.2017, 14:09  [ТС] 6
Цитата Сообщение от .None Посмотреть сообщение
ну вроде верно
Короче говоря, при таком конфиге у всех пользователей примерно раз в 10 мин отваливается инет...
0
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
23.01.2017, 14:37 7
при работе 2-х провайдеров или одного?

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

поставьте ping -t куданить в инет, в момент отвала пинг прерывается?
в логах микротика есть что?
0
vita et mortuus
Эксперт по компьютерным сетям
1801 / 701 / 152
Регистрация: 10.06.2009
Сообщений: 2,741
24.01.2017, 18:03 8
А зыбл есть ещё хороший вариант тут.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
26.01.2017, 11:44  [ТС] 9
Цитата Сообщение от NoNaMe Посмотреть сообщение
А зыбл есть ещё хороший вариант тут.
Спасибо, решил данный вариант испробовать, все по мануалу настроил, почему то некоторые маршруты и правила mangle не работают, вот мой скриншот
Миниатюры
Балансировка (ECMP)  
0
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
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
Эксперт по компьютерным сетям
1801 / 701 / 152
Регистрация: 10.06.2009
Сообщений: 2,741
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
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
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
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
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
Эксперт по компьютерным сетям
1801 / 701 / 152
Регистрация: 10.06.2009
Сообщений: 2,741
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
Эксперт по компьютерным сетям
4296 / 1633 / 325
Регистрация: 23.06.2009
Сообщений: 5,815
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2017, 15:05
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru