2.1 Обзор и настройка Load Balancing

2. Load Balancing и Filter-Based Forwarding

2.1 Обзор и настройка Load Balancing

В статье рассматриваются темы:

  • Методы Load Balancing
  • Load Balancing в IGP OSPF и EGP BGP
  • Настройка Load Balancing

Equal-Cost Multipath Load Sharing — распределение нагрузки по нескольким путям, имеющим одинаковую стоимость. Equal-cost multipath load sharing (или load balancing) позволяет распределять трафик, отправляемый к единому префиксу назначения, через пути (маршруты) с одинаковой стоимостью (cost). При пересылке трафика такой подход позволяет использовать избыточные пути с одинаковой стоимостью (cost) одновременно, нежели использовать только один из этих нескольких путей. Методы балансировки бывают per-packet и per-flow.

2-1-1


Методы балансировки.

Per-Packet Load Balancing

Когда маршрутизатор выполняет балансировку нагрузки методом per-packet, он отправляет пакеты по алгоритму round-robin через исходящие интерфейсы с одинаковой стоимостью к сети назначения. Плюсом данного метода является равномерное распределение трафика между путями с одинаковой стоимостью, а минусом может являться ухудшение производительности сети:

2-1-2

т.к. пакеты могут прибывать к месту назначения не в том порядке, в котором их отправляет передающий узел, то принимающей стороне потребуется пересобрать эти пакеты в правильную последовательность, либо перезапрашивать пакеты у отправляющего узла (недопустимо для голоса, видео).

Современные устройства Juniper не осуществляют балансировку нагрузки методом per-packet.

Per-Flow Load Balancing

В отличие от метода балансировки per-packet, метод балансировки per-flow поддерживает балансировку между отдельными потоками от станции оправления к станции назначения. Т.о. пакеты каждого индивидуального потока прибывают на принимающий узел в том порядке, в котором они были отправлены отправляющим узлом. Плюс к этому индивидуальные потоки трафика идут по одному и тому же пути, поэтому значительно проще применить QoS в сети.

2-1-3

Трафик, принадлежащий к отдельному потоку, пересылается через один и тот же исходящий интерфейс.

Понятие «отдельный поток трафика» подразумевает, что относящийся к этому потоку трафик:

  • приходит на маршрутизатор через один и тот же интерфейс
  • имеет одинаковый source адрес
  • имеет одинаковый destination адрес
  • использует единый протокол

Дополнительно можно задать условие, чтобы ещё и Layer 4 source и  destination порты был одинаковыми.


Load Balancing в IGP OSPF и EGP BGP

По-умолчанию для IGP балансировка нагрузки при наличии нескольких путей с одинаковой стоимостью в сеть назначения не выполняется. Просто выбирается один из путей к сети назначения и по этому пути пересылается весь трафик. Делается это для контроля прохождения трафика. Поэтому, если существует несколько путей с одинаковой стоимостью в сеть назначения в таблице маршрутизации, то JunOS выберет один из next-hop’ов и поместит его в Forwarding Table. Т.о. в таблице маршрутизации будут содержаться несколько путей к сети назначения, а в Forwarding Table только один:

2-1-4

Если произойдёт изменение в наборе hext-hop’ов, то JunOS просто перевыберет next-hop.

По-умолчанию для BGP балансировка нагрузки несколько отличается от метода балансировки для IGP. Для BGP балансировка происходит per-prefix при выборе пути до next-hop’а. Т.е. при получении 100 маршрутов на R1 от R2 (R2 будет next-hop’ом для этих 100 маршрутов), и наличии между R1 и R2 2-ух путей с одинаковой стоимостью, эти 100 маршрутов произвольно распределятся между 2-мя путями от R1 до R2.

Перечисленные поведения по-умолчанию для IGP и BGP можно изменить с помощью политик маршрутизации (routing policy).


Настройка Load Balancing

Начнём с изменения дефолтного поведения балансировки нагрузки в IGP. Определим цель задачи: для трафика, отправляемого в сеть 172.24.0.0/24 и 172.24.1.0/24, использовать метод балансировки per-flow между R1 и R2, подразумевая что между ними 2 пути с одинаковой стоимостью:

2-1-5

Создаём routing policy в «секции» [edit policy-options] с именем «load-balance-all» для всех сетей назначения в таблице маршрутизации:

2-1-6

или так, если необходимо обеспечит балансировку трафика только в сЕти назначения 172.24.0.0/24 и 172.24.1.0/24:

2-1-7

«load-balance per-packet» на современных устройствах Juniper определяет метод балансировки per-flow.

Применяем созданную routing policy к Forwarding Table в «секции» [edit routing-options]:

2-1-8

Если нужно при расчёте потоков учитывать ещё и Layer 4 source и destination порты, то настроить это можно следующим образом:

2-1-10

Теперь, при распределении потоков трафика по путям с одинаковой стоимостью к сетям назначения, помимо Layer 3 параметров, описанных выше, ещё будут учитываться Layer 4 порты.

Важно отметить, что при добавлении Layer 4 параметров в расчёт потоков, необходимо включать в расчёт ещё и Layer 3 параметры, иначе работать не будет.

Ну и полный конфиг:

2-1-11

Проверка:

2-1-12

Команда «> show route forwarding-table» на R1 выводит содержимое Forwarding Table. Из вывода видно, что для каждой из двух сетей имеются по 2 next-hop’а, следовательно на R1 будет задействована балансировка трафика к эти сетям.

Важные замечания:

  • настройка балансировки трафика является локальной для маршрутизатора; для балансировки трафика по всей сети необходимо настроить балансировку на каждом маршрутизаторе сети
  • описание политики балансировки и применение её на маршрутизаторе затрагивает изменения только в Forwarding Table, Routing Table остаётся без изменений
  • на платформах с Internet Processor I для балансировки можно настроить до 8-ми различный путей с одинаковой стоимостью до сети назначения
  • на платформах с Internet Processor II для балансировки можно настроить до 64-ёх путей с одинаковой стоимостью до сети назначения, причём метод балансировки будет per-flow.

К оглавлению

Добавить комментарий