Доброго времени суток имею RB760IGS, а так же 2 провайдера подключенного к нему по 100 мбит каждый (один с белым ip второй без). Попробовал PCC, ECMP и Nth варианты распределения нагрузки и больше всего нравится по чистой производительности Nth, но что-то у нас не сложилось с ним. Есть проблемы на некоторых сайтах, на youtube очень долго думает пока не прогрузит все превью, а так же банальный google.com запрос на поиск иногда задумывается по 30 секунд. С ECMP такого близко нет, все работает исправно. В p2p же все наоборот, ECMP порой задумывается скорость скачет, порой неравномерно распределяется трафик (PCC еще грустнее там огромные скачки), Nth очень быстро набирает около максимальную ширину канала и держит стабильно. На сайтах типа speedtest ECMP использует на upload только одного провайдера (который с белым ip), PCC выдает отличную download и хорошую upload, Nth выдает примерно так же как PCC. А вот на Fast.com (спидтест от нетфликс) все наоборот, Nth выдает низкую задержку 70-72 мс в обе стороны, но очень кривую скорость в оба направления (30-35 мбит) задействуя оба канала, PCC тоже выдает так себе и имеет 100+- мс, зато ECMP выдает 150-160 и на отдачу порядка 120-130, задержка порядка 90. Теперь главный вопрос, что я делаю не так или это особенности работы реализаций распределения нагрузки? Очень нравится Nth если честно и еще вопрос можно ли заменить некоторые правила в mangle на route rule?
Листинг ECMP и Nth
================================ECMP======================================
/ip firewall mangle
add action=mark-connection chain=forward connection-mark=no-mark new-connection-mark=con-WAN1 out-interface=WAN1 passthrough=yes
add action=mark-connection chain=forward connection-mark=no-mark new-connection-mark=con-WAN2 out-interface=WAN2 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=con-WAN1 in-interface-list=!WAN new-routing-mark=WAN1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=con-WAN2 in-interface-list=!WAN new-routing-mark=WAN2 passthrough=yes
/ip route
add distance=1 gateway=XXXX routing-mark=WAN1
add distance=1 gateway=YYYY routing-mark=WAN2
add distance=1 gateway=XXXX,YYYY
add check-gateway=ping distance=100 gateway=YYYY
add check-gateway=ping distance=100 gateway=XXXX
================================NTH=======================================
/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=line1 nth=2,1 passthrough=yes src-address=192.168.35.0/24
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=line2 nth=2,2 passthrough=yes src-address=192.168.35.0/24
add action=mark-routing chain=prerouting connection-mark=line1 new-routing-mark=line1 passthrough=yes src-address=192.168.35.0/24
add action=mark-routing chain=prerouting connection-mark=line2 new-routing-mark=line2 passthrough=yes src-address=192.168.35.0/24
/ip route
add check-gateway=ping distance=1 gateway=XXXX routing-mark=line1
add check-gateway=ping distance=1 gateway=YYYY routing-mark=line2
add check-gateway=ping distance=1 gateway=XXXX
add check-gateway=ping distance=2 gateway=YYYY
Если есть варианты решения на PCC буду только рад услышать.
Большое спасибо за любую помощь, я еще очень слаб в ROS.
ECMP и Nth, Проблемы и Решения
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Nth будет ломать приложения, где используются несколько параллельных соединений, и не предусмотрена работа с двух разных адресов.
Самый нормальный в этом плане вариант PCC с классификатором both-addresses.
Понятно, что при этом он не так ровно будет распределять, как Nth.
ECMP хорошо, когда NAT не используется: тогда его проще всего настроить, меньше нагрузка на CPU, fasttrack не обязательно отключать, но в случае с NAT'ом все равно без mangle не обойтись, так что никаких плюсов.
Самый нормальный в этом плане вариант PCC с классификатором both-addresses.
Понятно, что при этом он не так ровно будет распределять, как Nth.
ECMP хорошо, когда NAT не используется: тогда его проще всего настроить, меньше нагрузка на CPU, fasttrack не обязательно отключать, но в случае с NAT'ом все равно без mangle не обойтись, так что никаких плюсов.
Telegram: @thexvo
-
- Сообщения: 4
- Зарегистрирован: 28 сен 2020, 14:54
А что по поводу Route Rules? Говорят ими можно заменить правила mangle некоторые, разве fasttrack можно включать? Он же перебивает маркировку main?xvo писал(а): ↑28 сен 2020, 15:13 Nth будет ломать приложения, где используются несколько параллельных соединений, и не предусмотрена работа с двух разных адресов.
Самый нормальный в этом плане вариант PCC с классификатором both-addresses.
Понятно, что при этом он не так ровно будет распределять, как Nth.
ECMP хорошо, когда NAT не используется: тогда его проще всего настроить, меньше нагрузка на CPU, fasttrack не обязательно отключать, но в случае с NAT'ом все равно без mangle не обойтись, так что никаких плюсов.
Как можно дополнительно улучшить мой вариант ECMP или хороший пример PCC с нормальной балансировкой?
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
В некоторых случаях можно, будет работать быстрее, чем если через mangle.Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 А что по поводу Route Rules? Говорят ими можно заменить правила mangle некоторые
Но там очень ограниченные возможности по выбору условий: самое главное, что не поддерживаются списки адресов или интерфейсов.
Так что они хороши, как дополнение.
Если не используется mangle, то почему нет?Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 разве fasttrack можно включать? Он же перебивает маркировку main?
Не очень понимаю, что вы там хотите улучшить.Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 Как можно дополнительно улучшить мой вариант ECMP или хороший пример PCC с нормальной балансировкой?
И про PCC тоже не очень понятно, о каких ещё вариантах идет речь, и что значит "с нормальной балансировкой"? Я уже написал, что самый нормальный вариант - это both-addresses.
Telegram: @thexvo
-
- Сообщения: 4
- Зарегистрирован: 28 сен 2020, 14:54
Вот как раз хотелось бы заменить правила мангл на route rule, такие как lookup-only-in-table, я не совсем понимаю как их можно внести в мой скрипт. С PCC both addresses совсем грустные показатели скорости, на отдачу задействован только провайдер с белым ip, both addresses and ports веселее, но сайты с авторизацией глючат.xvo писал(а): ↑28 сен 2020, 18:27В некоторых случаях можно, будет работать быстрее, чем если через mangle.Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 А что по поводу Route Rules? Говорят ими можно заменить правила mangle некоторые
Но там очень ограниченные возможности по выбору условий: самое главное, что не поддерживаются списки адресов или интерфейсов.
Так что они хороши, как дополнение.
Если не используется mangle, то почему нет?Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 разве fasttrack можно включать? Он же перебивает маркировку main?
Не очень понимаю, что вы там хотите улучшить.Ilya.Terskov писал(а): ↑28 сен 2020, 15:29 Как можно дополнительно улучшить мой вариант ECMP или хороший пример PCC с нормальной балансировкой?
И про PCC тоже не очень понятно, о каких ещё вариантах идет речь, и что значит "с нормальной балансировкой"? Я уже написал, что самый нормальный вариант - это both-addresses.
Поэтому решил копать в сторону ecmp и максимально упростить код чтобы меньше задержки и нагрузка на процессоре была.
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Если сможете реализовать всю логику на route rule - почему бы нет.Ilya.Terskov писал(а): ↑29 сен 2020, 03:24 Вот как раз хотелось бы заменить правила мангл на route rule, такие как lookup-only-in-table, я не совсем понимаю как их можно внести в мой скрипт.
Только учтите, что использовать lookup-only-in-table нужно осторожно, например для того, чтобы продолжал работать failover надо держать в именованных таблицах и резервные маршруты тоже.
Если PCC не делит канал при нескольких активных соединениях, то где-то ошибка в конфиге.Ilya.Terskov писал(а): ↑29 сен 2020, 03:24 С PCC both addresses совсем грустные показатели скорости, на отдачу задействован только провайдер с белым ip, both addresses and ports веселее, но сайты с авторизацией глючат.
Поэтому решил копать в сторону ecmp и максимально упростить код чтобы меньше задержки и нагрузка на процессоре была.
При PCC both-addresses даже обычный ookla'вский спидтест на загрузку использует оба канала на полную. На отдачу - да, только один.
Ну а так, в принципе у ECMP в некоторых сценариях стохастичность будет лучше даже чем PCC both-addresses-and-ports, но и проблемы те же - банковские сайты/приложения могут не работать.
Telegram: @thexvo
-
- Сообщения: 4
- Зарегистрирован: 28 сен 2020, 14:54
Вот хотелось бы пример без мангл правил аналогичный тому что с мангл у меня или хотя бы с сокращением этих правил.xvo писал(а): ↑29 сен 2020, 11:00Если сможете реализовать всю логику на route rule - почему бы нет.Ilya.Terskov писал(а): ↑29 сен 2020, 03:24 Вот как раз хотелось бы заменить правила мангл на route rule, такие как lookup-only-in-table, я не совсем понимаю как их можно внести в мой скрипт.
Только учтите, что использовать lookup-only-in-table нужно осторожно, например для того, чтобы продолжал работать failover надо держать в именованных таблицах и резервные маршруты тоже.
Если PCC не делит канал при нескольких активных соединениях, то где-то ошибка в конфиге.Ilya.Terskov писал(а): ↑29 сен 2020, 03:24 С PCC both addresses совсем грустные показатели скорости, на отдачу задействован только провайдер с белым ip, both addresses and ports веселее, но сайты с авторизацией глючат.
Поэтому решил копать в сторону ecmp и максимально упростить код чтобы меньше задержки и нагрузка на процессоре была.
При PCC both-addresses даже обычный ookla'вский спидтест на загрузку использует оба канала на полную. На отдачу - да, только один.
Ну а так, в принципе у ECMP в некоторых сценариях стохастичность будет лучше даже чем PCC both-addresses-and-ports, но и проблемы те же - банковские сайты/приложения могут не работать.
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Конкретно в случае с ECMP вам особо и нечего заменять на route rules - там и так mangle правил по-минимуму.Ilya.Terskov писал(а): ↑29 сен 2020, 12:33 Вот хотелось бы пример без мангл правил аналогичный тому что с мангл у меня или хотя бы с сокращением этих правил.
Их можно использовать для PBR, исключения какие-нибудь прописать или прибить туннели к определенному провайдеру.
А тут они вам не помогут.
Telegram: @thexvo