Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Балансировка нагрузки на каждый пакет, поддерживаемая провайдером (ISP)

    Балансировка нагрузки на каждый пакет, поддерживаемая провайдером (ISP)

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Балансировка нагрузки на каждый пакет, поддерживаемая провайдером (ISP), RouterOS
     
    Kreye
    Guest
    #1
    0
    17.06.2011 11:16:00
    Привет! Мне предложили от моего провайдера подключить вторую DSL-линию. Провайдер поддерживает bonding, то есть у них на стороне стоит роутер Cisco, на котором можно включить «Load Balancing per Packet» для входящих пакетов: http://www.cisco.com/en/US/docs/ios/12_0s/feature/guide/pplb.html. Провайдер посоветовал купить Cisco и мне, но он для меня слишком дорогой. На http://wiki.mikrotik.com/wiki/Manual:IP/Route (серая рамка справа) я увидел подсказку: «Посмотрите на bonding интерфейсов, если хотите достичь балансировки нагрузки по пакетам». Кто-нибудь уже запускал такое? Было бы здорово узнать, насколько это стабильно, прежде чем я закажу роутер и дополнительную DSL-линию. Большое спасибо!
     
     
     
    Kreye
    Guest
    #2
    0
    21.07.2011 20:24:00
    Привет! После того как заказали вторую DSL-линию и роутер Mikrotik, наконец-то запустили балансировку нагрузки. Осталась только одна маленькая проблема, но сначала немного поясню.  

    Правила mangle для файрвола:  
    chain=prerouting action=mark-packet new-packet-mark=odd passthrough=yes src-address=195.78.85.200/29 nth=2,1  
    chain=prerouting action=mark-routing new-routing-mark=gw1 passthrough=yes src-address=195.78.85.200/29 packet-mark=odd  
    chain=prerouting action=mark-packet new-packet-mark=even passthrough=yes src-address=195.78.85.200/29 nth=2,2  
    chain=prerouting action=mark-routing new-routing-mark=gw2 passthrough=yes src-address=195.78.85.200/29 packet-mark=even  

    Как видите, манглинг делается в два шага: сначала пакетам присваивается метка (нечётная или чётная), затем в соответствии с этим ставится метка маршрутизации (gw1 или gw2). И ещё: формат nth изменился — теперь в новых версиях RouterOS в нём только два параметра, а не три.  

    Таблица маршрутизации:  
    0 A S  0.0.0.0/0                          pppoe-out1         gw1       1  
    1 1   S  0.0.0.0/0                          pppoe-out2         gw1      2  
    2 2 A S  0.0.0.0/0                          pppoe-out2         gw2      1  
    3   S  0.0.0.0/0                          pppoe-out1         gw2       2  
    4 ADC  195.78.85.200/29   195.78.85.206   bridge1                   0  
    5 ADC  195.232.191.2/32   195.99.21.3   pppoe-out2                0  
    pppoe-out1  

    Последние два маршрута добавляются автоматически. Концепция работает и даёт отличную производительность! Потерь почти нет, обе линии вместе дают двойную пропускную способность одной — в обе стороны. Всё шло отлично, но есть маленькая загвоздка: Cisco-роутер на другой стороне иногда роутит весь трафик только через одну из двух DSL-линий. Похоже, он «думает», что вторая линия упала.  

    Проблема появляется сразу после подключения второй линии (неважно, pppoe-out1 или pppoe-out2), тогда все входящие пакеты идут только через одну линию. Решается это отключением и повторным подключением «работающей» линии, но шанс 50/50, что ситуация повторится. Если обе линии начинают нормально принимать трафик — всё отлично, пока одна из линий снова не переподключится.  

    Провайдер говорит, что проблема в том, что два pppoe-интерфейса нашего роутера (195.99.21.3 и 195.99.20.83) с внешней сети не пингуются. И это действительно так — метки маршрутизации ставятся только на маршрутизируемые пакеты, а не на исходящие пакеты. Поэтому роутер не имеет дефолтного шлюза для собственных пакетов.  

    Это немного раздражает, так как каждые 24 часа происходит автоматическое отключение — после чего есть 50% шанс, что только одна линия будет принимать входящие пакеты.  

    Есть идеи? Спасибо!
     
     
     
    fewi
    Guest
    #3
    0
    21.07.2011 21:07:00
    Если вы не используете маркировку пакетов для чего-то другого, можно вообще пропустить их использование и просто применять маркировку маршрутов:  
    chain=prerouting action=mark-packet new-packet-mark=odd passthrough=yes src-address=195.78.85.200/29 nth=2,1  
    chain=prerouting action=mark-routing new-routing-mark=gw1 passthrough=yes src-address=195.78.85.200/29 packet-mark=odd  
    chain=prerouting action=mark-packet new-packet-mark=even passthrough=yes src-address=195.78.85.200/29 nth=2,2  
    chain=prerouting action=mark-routing new-routing-mark=gw2 passthrough=yes src-address=195.78.85.200/29 packet-mark=even  
    становится  
    chain=prerouting action=mark-routing new-routing-mark=gw1 passthrough=yes src-address=195.78.85.200/29 nth=2,1  
    chain=prerouting action=mark-routing new-routing-mark=gw2 passthrough=yes src-address=195.78.85.200/29 nth=2,2  

    Что касается пинга PPPoE-интерфейсов: кто и что именно пингует? И могли бы вы приложить вывод команд "/ip address print detail" и "/ip route print detail", обернув их в теги?
     
     
     
    Kreye
    Guest
    #4
    0
    22.07.2011 08:27:00
    Ок, подтверждаю. Моя ошибка, думал, что для балансировки нагрузки по пакетам нужен “mark-packet”. На самом деле работает и с “mark-routing” и напрямую с nth. Спасибо. Видимо, именно роутер Cisco (195.232.191.2) выполняет проверку линии. Вот вывод команд:

    [admin@MikroTik] > /ip address print detail
    Флаги: X - отключен, I - недействителен, D - динамический  
    0 address=195.78.85.206/29 network=195.78.85.200 interface=bridge1  
      actual-interface=bridge1  

    1 D address=195.99.20.83/32 network=195.232.191.2 interface=pppoe-out2  
      actual-interface=pppoe-out2  

    2 D address=195.99.21.3/32 network=195.232.191.2 interface=pppoe-out1  
      actual-interface=pppoe-out1  

    [admin@MikroTik] > /ip route print detail
    Флаги: X - отключен, A - активен, D - динамический,  
    C - подключен, S - статический, r - rip, b - bgp, o - ospf, m - mme,  
    B - blackhole, U - недоступен, P - запрещён  

    0 A S  dst-address=0.0.0.0/0 gateway=pppoe-out1 gateway-status=pppoe-out1 reachable  
       distance=1 scope=30 target-scope=10 routing-mark=gw1  

    1   S  dst-address=0.0.0.0/0 gateway=pppoe-out2 gateway-status=pppoe-out2 reachable  
       distance=2 scope=30 target-scope=10 routing-mark=gw1  

    2 A S  dst-address=0.0.0.0/0 gateway=pppoe-out2 gateway-status=pppoe-out2 reachable  
       distance=1 scope=30 target-scope=10 routing-mark=gw2  

    3   S  dst-address=0.0.0.0/0 gateway=pppoe-out1 gateway-status=pppoe-out1 reachable  
       distance=2 scope=30 target-scope=10 routing-mark=gw2  

    4 ADC  dst-address=195.78.85.200/29 pref-src=195.78.85.206 gateway=bridge1  
       gateway-status=bridge1 reachable distance=0 scope=10  

    5 ADC  dst-address=195.232.191.2/32 pref-src=195.99.20.83 gateway=pppoe-out2,pppoe-out1  
       gateway-status=pppoe-out2 reachable,pppoe-out1 reachable distance=0 scope=10  

    (все адреса слегка изменены)  

    Пункт маршрута №5 может быть проблемой — он устанавливает исходящий IP на IP одного из pppoe интерфейсов (в данном примере pppoe-out2). Если я пингану Cisco со своей стороны, получаю:

    [admin@MikroTik] > ping 195.232.191.2 interface=pppoe-out1
    HOST                SIZE TTL TIME  STATUS  
    195.232.191.2             timeout  
    195.232.191.2             timeout  
    отправлено=2 получено=0 потеря пакетов=100%  

    [admin@MikroTik] > ping 195.232.191.2 interface=pppoe-out2
    HOST                SIZE TTL TIME  STATUS  
    195.232.191.2         56  255 13ms  
    195.232.191.2         56  255 13ms  
    195.232.191.2         56  255 13ms  
    отправлено=3 получено=3 потеря пакетов=0% min-rtt=13ms avg-rtt=13ms max-rtt=13ms  

    Так что, похоже, в этом и есть причина. Большое спасибо!
     
     
     
    Kreye
    Guest
    #5
    0
    25.07.2011 10:34:00
    Есть идеи, как сделать так, чтобы оба PPPoE-интерфейса были доступны для пинга снаружи? Спасибо.
     
     
     
    fewi
    Guest
    #6
    0
    25.07.2011 14:23:00
    Попробуйте исключить IP-адреса из подсетей WAN-ссылок из любой политики маршрутизации:  
    /ip firewall address-list  
    add list=wan-links address=195.99.21.0/30  
    add list=wan-links address=195.99.20.80/30  
    /ip firewall mangle  
    add chain=prerouting src-address=wan-links action=accept  
    add chain=prerouting dst-address=wan-links action=accept  

    Это при условии, что вы не натите трафик на IP-адресах ваших WAN-ссылок, что, как мне кажется, не так, учитывая, что у вас через них маршрутизируется публичное IP-пространство.
     
     
     
    Kreye
    Guest
    #7
    0
    25.07.2011 15:27:00
    Вообще без NAT. Зачем ты тут используешь /30? Откуда нам знать, что сеть WAN-ссылки состоит из 4 IP-адресов? Я пробовал и 195.99.21.0/30, и 195.99.21.1, и кажется, что использование самого IP вместо сети немного улучшает ситуацию. Похоже, что настроить обе связи правильно стало немного проще. По крайней мере, я не сталкиваюсь с таким количеством повторных попыток — такое моё ощущение. Значит, мы на правильном пути, но проблема явно ещё есть. Я всё ещё думаю о автоматически сгенерированном маршруте №5: 5 ADC dst-address=195.232.191.2/32 pref-src=195.99.20.83 gateway=pppoe-out2,pppoe-out1 gateway-status=pppoe-out2 reachable,pppoe-out1 reachable distance=0 scope=10. «pref-src=195.99.20.83» должна быть проблемой, когда пакет приходит с другого интерфейса pppoe, верно? Можно как-то убрать выбранный исходящий IP? Спасибо большое!
     
     
     
    fewi
    Guest
    #8
    0
    25.07.2011 15:35:00
    Извини, я одновременно делал слишком много дел, когда писал тот пост. Конечно, у тебя используется PPPoE, значит нет /30-ссылок, и в этом нет особого смысла. В общем, тебе нужно попытаться выяснить, с какого IP-адреса Cisco-маршрутизатор на другой стороне будет пинговать твои концы каналов, провайдер, надеюсь, тоже может помочь с этим. Потом добавь этот (или эти) исходные IP в список адресов вместе с IP твоей стороны и используй правила обхода роутинга, которые я выкладывал, в сочетании с этим обновлённым списком. По сути, ты пытаешься сказать: «весь трафик между двумя маршрутизаторами не должен подвергаться nth». Самый простой способ — сделать mangle-правила выше правил nth обхода роутинга, которые просто принимают трафик, который ты не хочешь, чтобы подвергался nth. Удалить preferred source нельзя, потому что запись динамическая. Проблема, скорее всего, в том, что Cisco-маршрутизатор на другой стороне даёт тебе одинаковый /32 со своей стороны на обоих PPPoE-ссылках, хотя твои концы получают разные IP. Может, провайдер может выдать тебе другой /32, который использовать в качестве шлюза по умолчанию на второй линии, и тогда просто используешь ECMP с двумя маршрутами по умолчанию? Как правило, с этим бывают проблемы, если делать NAT против IP-адресов линий, но у тебя этого нет, так что ECMP должен работать без проблем.
     
     
     
    Kreye
    Guest
    #9
    0
    28.07.2011 13:27:00
    Теперь оба WAN-адреса доступны по ping с 0.0.0.0. Мне удалось добиться этого, добавив новый, отдельный маршрут по умолчанию для неотмеченных пакетов:

    4 A S  dst-address=0.0.0.0/0 gateway=pppoe-out1,pppoe-out2
           gateway-status=pppoe-out1 reachable,pppoe-out2 reachable distance=1 scope=30
           target-scope=10

    И, конечно, были необходимы ваши настройки файрвола, исключающие WAN-адреса из тегирования. К сожалению, этот маршрут как-то становится неактивным, если один из интерфейсов уходит вниз. В WinBox это не отображается (маршрут всё ещё показан чёрным цветом), но WAN-адреса просто перестают откликаться на ping. Поэтому приходится перезапускать маршрут вручную. Есть ли способ сделать это автоматически?

    К сожалению, проблема всё ещё существует. Раньше я не давал подробностей, вот они:

    Линия 1 и Линия 2 получают данные  
    Перезапуск Линии 1 даёт 50% шанс, что линия 1 после этого не будет принимать данные. В остальных 50% обе линии принимают данные нормально.  
    Перезапуск Линии 2 даёт 50% шанс, что линия 2 после этого не будет принимать данные. В остальных 50% обе линии принимают данные нормально.

    Только Линия 1 принимает, Линия 2 нет  
    Перезапуск Линии 2 даёт 95% шанс, что линия 2 всё равно не будет принимать данные. В остальных 5% — обе линии работают нормально.  
    Перезапуск Линии 1 заставляет переключиться на Линию 2 и даёт 50% шанс, что линия 1 после этого не будет принимать данные. В остальных 50% обе линии работают нормально.

    Только Линия 2 принимает, Линия 1 нет  
    Перезапуск Линии 1 даёт 95% шанс, что линия 1 всё равно не будет принимать данные. В остальных 5% — обе линии работают нормально.  
    Перезапуск Линии 2 заставляет переключиться на Линию 1 и даёт 50% шанс, что линия 2 после этого не будет принимать данные. В остальных 50% обе линии работают нормально.

    Так что лучший способ снова заставить обе линии принимать данные — перезапустить рабочую линию, вероятно, заставив роутер провайдера переключиться на другую линию. Но я сначала поговорю с провайдером, возможно, они смогут дать ещё какие-то подсказки, что может быть не так или чего не хватает.

    Спасибо!
     
     
     
    Kreye
    Guest
    #10
    0
    29.07.2011 08:45:00
    К сожалению, этот маршрут как-то становится неактивным, если один из интерфейсов отключается. В WinBox это не отображается (маршрут по-прежнему показан чёрным), но WAN-адреса просто перестают пинговаться. Приходится перезапускать маршрут вручную. Есть ли способ сделать это автоматически? Сначала казалось, что это мелкая проблема, но, возможно, она и есть основная: новый маршрут по умолчанию №4 сразу же становится неработоспособным после того, как один из интерфейсов отключился и включился, и в результате оба интерфейса оказываются недоступны по пингу. Именно в этот момент роутер провайдера пытается их пинговать. Маршрут при этом вроде бы не отключен. Я провёл анализ трафика и выяснил, что в такой ситуации, если ICMP-пакет приходит на pppoe-out1, он выходит через pppoe-out2, и наоборот, то есть маршрут почему-то перепутывается. Может, это баг в RouterOS? Перезапуск маршрута решает проблему — ICMP-пакеты, приходящие на pppoe-out1, снова уходят через pppoe-out1 и наоборот. Теперь мой вопрос: как обновить статический маршрут после повторного поднятия PPPoE-интерфейса? Или может, я могу написать скрипт, который будет обновлять маршрут после поднятия PPPoE-интерфейса? (на Linux для этого можно использовать скрипт в ip-up.d). Вот ещё раз таблица маршрутизации:

    [admin@MikroTik] > ip route print detail
    Flags: X - отключён, A - активен, D - динамический,  
    C - подключён, S - статический, r - rip, b - bgp, o - ospf, m - mme,  
    B - blackhole, U - недоступен, P - запрещён  

    0 A S  dst-address=0.0.0.0/0 gateway=pppoe-out1 gateway-status=pppoe-out1  
          distance=1 scope=30 target-scope=10 routing-mark=gw1  

    1   S  dst-address=0.0.0.0/0 gateway=pppoe-out2 gateway-status=pppoe-out2  
          distance=2 scope=30 target-scope=10 routing-mark=gw1  

    2 A S  dst-address=0.0.0.0/0 gateway=pppoe-out2 gateway-status=pppoe-out2  
          distance=1 scope=30 target-scope=10 routing-mark=gw2  

    3   S  dst-address=0.0.0.0/0 gateway=pppoe-out1 gateway-status=pppoe-out1  
          distance=2 scope=30 target-scope=10 routing-mark=gw2  

    4 A S  dst-address=0.0.0.0/0 gateway=pppoe-out1,pppoe-out2  
          gateway-status=pppoe-out1 reachable,pppoe-out2 reachable distance=  
          target-scope=10  

    5 ADC  dst-address=195.78.85.200/29 pref-src=195.78.85.206 gateway=bridge  
          gateway-status=bridge1 reachable distance=0 scope=10  

    6 ADC  dst-address=195.232.191.2/32 pref-src=195.99.20.93 gateway=pppoe-  
          gateway-status=pppoe-out2 reachable,pppoe-out1 reachable distance=  

    Маршрут №4 перестаёт работать после перезапуска одного из интерфейсов. Спасибо.
     
     
     
    Kreye
    Guest
    #11
    0
    29.07.2011 12:34:00
    Хорошо, я сам с этим разобрался:  
    4 chain=output action=mark-routing new-routing-mark=gw1 passthrough=yes src-address=195.99.21.3  
    5 chain=output action=mark-routing new-routing-mark=gw2 passthrough=yes src-address=195.99.20.83  

    Добавив эти два правила mangle, исходящие пакеты с WAN-интерфейсов тоже получают метки, согласно исходному адресу. Так они всегда идут через правильный интерфейс. К сожалению, это не решает основную проблему (как я раньше надеялся). Свяжусь снова с моим провайдером. Спасибо!
     
     
     
    Kreye
    Guest
    #12
    0
    02.08.2011 09:49:00
    Окей, поговорил с моим провайдером. Они говорят, что проблема может быть в том, что наш Mikrotik роутер пытается использовать MLPPP. И, может, это правда — я где-то читал, что RouterOS пытается включить MLPPP, если есть два и более PPPoE интерфейса. Дело в том, что у них есть три Cisco роутера на концах, а не один, как на моей схеме. И никто не может предсказать, какой роутер возьмёт первую линию, а какой вторую. Cisco в целом поддерживает MLPPP, но в таком сценарии это не сработает и может спутать маршруты, если обе линии будут идти к разным Cisco. Так как же заставить RouterOS не пытаться включать MLPPP, даже если он видит два PPPoE интерфейса? Есть такой способ? Спасибо!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры